hazo_collab_forms 3.1.7 → 5.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGE_LOG.md +207 -0
- package/README.md +3 -0
- package/dist/components/clarification/clarification_item_body.d.ts +19 -1
- package/dist/components/clarification/clarification_item_body.d.ts.map +1 -1
- package/dist/components/clarification/clarification_item_body.js +114 -6
- package/dist/components/clarification/clarification_item_body.js.map +1 -1
- package/dist/components/clarification/clarification_thread.js +1 -1
- package/dist/components/clarification/clarification_thread.js.map +1 -1
- package/dist/components/clarification/index.d.ts +2 -0
- package/dist/components/clarification/index.d.ts.map +1 -1
- package/dist/components/clarification/index.js +1 -0
- package/dist/components/clarification/index.js.map +1 -1
- package/dist/components/clarification/resolution_status_strip.d.ts +18 -0
- package/dist/components/clarification/resolution_status_strip.d.ts.map +1 -0
- package/dist/components/clarification/resolution_status_strip.js +20 -0
- package/dist/components/clarification/resolution_status_strip.js.map +1 -0
- package/dist/components/hazo_fb_form/context.d.ts +1 -1
- package/dist/components/hazo_fb_form/context.d.ts.map +1 -1
- package/dist/components/hazo_fb_form/hazo_fb_form.d.ts.map +1 -1
- package/dist/components/hazo_fb_form/hazo_fb_form.js +330 -113
- package/dist/components/hazo_fb_form/hazo_fb_form.js.map +1 -1
- package/dist/components/hazo_fb_form/hooks/use_fb_form_state.d.ts +3 -3
- package/dist/components/hazo_fb_form/hooks/use_fb_form_state.d.ts.map +1 -1
- package/dist/components/hazo_fb_form/hooks/use_fb_form_state.js +339 -46
- package/dist/components/hazo_fb_form/hooks/use_fb_form_state.js.map +1 -1
- package/dist/components/hazo_fb_form/hooks/use_llm_run.d.ts +3 -1
- package/dist/components/hazo_fb_form/hooks/use_llm_run.d.ts.map +1 -1
- package/dist/components/hazo_fb_form/hooks/use_llm_run.js +89 -11
- package/dist/components/hazo_fb_form/hooks/use_llm_run.js.map +1 -1
- package/dist/components/hazo_fb_form/shared/agent_stepper.js +1 -1
- package/dist/components/hazo_fb_form/shared/agent_stepper.js.map +1 -1
- package/dist/components/hazo_fb_form/shared/file_status_accordion.d.ts +9 -0
- package/dist/components/hazo_fb_form/shared/file_status_accordion.d.ts.map +1 -0
- package/dist/components/hazo_fb_form/shared/file_status_accordion.js +39 -0
- package/dist/components/hazo_fb_form/shared/file_status_accordion.js.map +1 -0
- package/dist/components/hazo_fb_form/shared/format.d.ts.map +1 -1
- package/dist/components/hazo_fb_form/shared/format.js +8 -3
- package/dist/components/hazo_fb_form/shared/format.js.map +1 -1
- package/dist/components/hazo_fb_form/shared/send_back_item_card.d.ts +7 -1
- package/dist/components/hazo_fb_form/shared/send_back_item_card.d.ts.map +1 -1
- package/dist/components/hazo_fb_form/shared/send_back_item_card.js +6 -3
- package/dist/components/hazo_fb_form/shared/send_back_item_card.js.map +1 -1
- package/dist/components/hazo_fb_form/types.d.ts +3 -1
- package/dist/components/hazo_fb_form/types.d.ts.map +1 -1
- package/dist/components/hazo_fb_form/views/back_office_view.js +1 -1
- package/dist/components/hazo_fb_form/views/back_office_view.js.map +1 -1
- package/dist/components/hazo_fb_form/views/clarifications_view.js +2 -2
- package/dist/components/hazo_fb_form/views/clarifications_view.js.map +1 -1
- package/dist/components/hazo_fb_form/views/front_office_view.d.ts.map +1 -1
- package/dist/components/hazo_fb_form/views/front_office_view.js +62 -41
- package/dist/components/hazo_fb_form/views/front_office_view.js.map +1 -1
- package/dist/components/hazo_fb_form/views/interim_view.js +3 -3
- package/dist/components/hazo_fb_form/views/interim_view.js.map +1 -1
- package/dist/components/hazo_fb_form/views/review_queue_view.d.ts.map +1 -1
- package/dist/components/hazo_fb_form/views/review_queue_view.js +22 -9
- package/dist/components/hazo_fb_form/views/review_queue_view.js.map +1 -1
- package/dist/components/hazo_validation_rule_editor/components/rule_editor.d.ts.map +1 -1
- package/dist/components/hazo_validation_rule_editor/components/rule_editor.js +32 -3
- package/dist/components/hazo_validation_rule_editor/components/rule_editor.js.map +1 -1
- package/dist/components/hazo_validation_rule_editor/components/variable_chain_input.d.ts +20 -0
- package/dist/components/hazo_validation_rule_editor/components/variable_chain_input.d.ts.map +1 -0
- package/dist/components/hazo_validation_rule_editor/components/variable_chain_input.js +34 -0
- package/dist/components/hazo_validation_rule_editor/components/variable_chain_input.js.map +1 -0
- package/dist/components/hazo_validation_rule_editor/context.d.ts +3 -2
- package/dist/components/hazo_validation_rule_editor/context.d.ts.map +1 -1
- package/dist/components/hazo_validation_rule_editor/context.js +15 -3
- package/dist/components/hazo_validation_rule_editor/context.js.map +1 -1
- package/dist/components/hazo_validation_rule_editor/types.d.ts +7 -1
- package/dist/components/hazo_validation_rule_editor/types.d.ts.map +1 -1
- package/dist/components/hazo_validation_rule_editor/validation_rule_editor.d.ts +1 -1
- package/dist/components/hazo_validation_rule_editor/validation_rule_editor.d.ts.map +1 -1
- package/dist/components/hazo_validation_rule_editor/validation_rule_editor.js +2 -2
- package/dist/components/hazo_validation_rule_editor/validation_rule_editor.js.map +1 -1
- package/dist/components/index.d.ts +2 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +2 -0
- package/dist/components/index.js.map +1 -1
- package/dist/components/shared/document_type_editor.d.ts +31 -0
- package/dist/components/shared/document_type_editor.d.ts.map +1 -0
- package/dist/components/shared/document_type_editor.js +60 -0
- package/dist/components/shared/document_type_editor.js.map +1 -0
- package/dist/components/shared/file_bar/file_bar.d.ts +7 -1
- package/dist/components/shared/file_bar/file_bar.d.ts.map +1 -1
- package/dist/components/shared/file_bar/file_bar.js +5 -3
- package/dist/components/shared/file_bar/file_bar.js.map +1 -1
- package/dist/components/shared/file_bar/file_bar_validation_dialog.js +4 -4
- package/dist/components/shared/file_bar/file_bar_validation_dialog.js.map +1 -1
- package/dist/components/shared/file_status_icon.d.ts +23 -0
- package/dist/components/shared/file_status_icon.d.ts.map +1 -0
- package/dist/components/shared/file_status_icon.js +38 -0
- package/dist/components/shared/file_status_icon.js.map +1 -0
- package/dist/components/shared/json_data_panel/json_data_panel.d.ts +1 -1
- package/dist/components/shared/json_data_panel/json_data_panel.d.ts.map +1 -1
- package/dist/components/shared/json_data_panel/json_data_panel.js +27 -2
- package/dist/components/shared/json_data_panel/json_data_panel.js.map +1 -1
- package/dist/components/shared/rule_result_card.d.ts.map +1 -1
- package/dist/components/shared/rule_result_card.js +5 -4
- package/dist/components/shared/rule_result_card.js.map +1 -1
- package/dist/components/thread_form/components/add_question_dialog.d.ts +12 -0
- package/dist/components/thread_form/components/add_question_dialog.d.ts.map +1 -0
- package/dist/components/thread_form/components/add_question_dialog.js +36 -0
- package/dist/components/thread_form/components/add_question_dialog.js.map +1 -0
- package/dist/components/thread_form/components/agent_compose_dialog.d.ts +30 -0
- package/dist/components/thread_form/components/agent_compose_dialog.d.ts.map +1 -0
- package/dist/components/thread_form/components/agent_compose_dialog.js +45 -0
- package/dist/components/thread_form/components/agent_compose_dialog.js.map +1 -0
- package/dist/components/thread_form/components/clarification.d.ts +14 -0
- package/dist/components/thread_form/components/clarification.d.ts.map +1 -0
- package/dist/components/thread_form/components/clarification.js +12 -0
- package/dist/components/thread_form/components/clarification.js.map +1 -0
- package/dist/components/thread_form/components/collected_data_view.d.ts +15 -0
- package/dist/components/thread_form/components/collected_data_view.d.ts.map +1 -0
- package/dist/components/thread_form/components/collected_data_view.js +121 -0
- package/dist/components/thread_form/components/collected_data_view.js.map +1 -0
- package/dist/components/thread_form/components/coverage_card.d.ts +11 -0
- package/dist/components/thread_form/components/coverage_card.d.ts.map +1 -0
- package/dist/components/thread_form/components/coverage_card.js +60 -0
- package/dist/components/thread_form/components/coverage_card.js.map +1 -0
- package/dist/components/thread_form/components/file_bar.d.ts +93 -0
- package/dist/components/thread_form/components/file_bar.d.ts.map +1 -0
- package/dist/components/thread_form/components/file_bar.js +251 -0
- package/dist/components/thread_form/components/file_bar.js.map +1 -0
- package/dist/components/thread_form/components/file_info_dialog.d.ts +15 -0
- package/dist/components/thread_form/components/file_info_dialog.d.ts.map +1 -0
- package/dist/components/thread_form/components/file_info_dialog.js +64 -0
- package/dist/components/thread_form/components/file_info_dialog.js.map +1 -0
- package/dist/components/thread_form/components/issue_group_tree.d.ts +20 -0
- package/dist/components/thread_form/components/issue_group_tree.d.ts.map +1 -0
- package/dist/components/thread_form/components/issue_group_tree.js +164 -0
- package/dist/components/thread_form/components/issue_group_tree.js.map +1 -0
- package/dist/components/thread_form/components/pdf_side_panel.d.ts +20 -0
- package/dist/components/thread_form/components/pdf_side_panel.d.ts.map +1 -0
- package/dist/components/thread_form/components/pdf_side_panel.js +63 -0
- package/dist/components/thread_form/components/pdf_side_panel.js.map +1 -0
- package/dist/components/thread_form/components/rule_decision_row.d.ts +31 -0
- package/dist/components/thread_form/components/rule_decision_row.d.ts.map +1 -0
- package/dist/components/thread_form/components/rule_decision_row.js +20 -0
- package/dist/components/thread_form/components/rule_decision_row.js.map +1 -0
- package/dist/components/thread_form/components/send_back_message.d.ts +32 -0
- package/dist/components/thread_form/components/send_back_message.d.ts.map +1 -0
- package/dist/components/thread_form/components/send_back_message.js +82 -0
- package/dist/components/thread_form/components/send_back_message.js.map +1 -0
- package/dist/components/thread_form/components/shared.d.ts +54 -0
- package/dist/components/thread_form/components/shared.d.ts.map +1 -0
- package/dist/components/thread_form/components/shared.js +136 -0
- package/dist/components/thread_form/components/shared.js.map +1 -0
- package/dist/components/thread_form/components/task_card.d.ts +90 -0
- package/dist/components/thread_form/components/task_card.d.ts.map +1 -0
- package/dist/components/thread_form/components/task_card.js +63 -0
- package/dist/components/thread_form/components/task_card.js.map +1 -0
- package/dist/components/thread_form/components/text_doc_check.d.ts +15 -0
- package/dist/components/thread_form/components/text_doc_check.d.ts.map +1 -0
- package/dist/components/thread_form/components/text_doc_check.js +16 -0
- package/dist/components/thread_form/components/text_doc_check.js.map +1 -0
- package/dist/components/thread_form/components/text_extraction.d.ts +14 -0
- package/dist/components/thread_form/components/text_extraction.d.ts.map +1 -0
- package/dist/components/thread_form/components/text_extraction.js +16 -0
- package/dist/components/thread_form/components/text_extraction.js.map +1 -0
- package/dist/components/thread_form/components/thread_composer.d.ts +15 -0
- package/dist/components/thread_form/components/thread_composer.d.ts.map +1 -0
- package/dist/components/thread_form/components/thread_composer.js +93 -0
- package/dist/components/thread_form/components/thread_composer.js.map +1 -0
- package/dist/components/thread_form/components/thread_timeline.d.ts +65 -0
- package/dist/components/thread_form/components/thread_timeline.d.ts.map +1 -0
- package/dist/components/thread_form/components/thread_timeline.js +225 -0
- package/dist/components/thread_form/components/thread_timeline.js.map +1 -0
- package/dist/components/thread_form/hooks/use_file_pipeline.d.ts +126 -0
- package/dist/components/thread_form/hooks/use_file_pipeline.d.ts.map +1 -0
- package/dist/components/thread_form/hooks/use_file_pipeline.js +760 -0
- package/dist/components/thread_form/hooks/use_file_pipeline.js.map +1 -0
- package/dist/components/thread_form/hooks/use_thread_form.d.ts +36 -0
- package/dist/components/thread_form/hooks/use_thread_form.d.ts.map +1 -0
- package/dist/components/thread_form/hooks/use_thread_form.js +126 -0
- package/dist/components/thread_form/hooks/use_thread_form.js.map +1 -0
- package/dist/components/thread_form/index.d.ts +33 -0
- package/dist/components/thread_form/index.d.ts.map +1 -0
- package/dist/components/thread_form/index.js +30 -0
- package/dist/components/thread_form/index.js.map +1 -0
- package/dist/components/thread_form/sample_data.d.ts +8 -0
- package/dist/components/thread_form/sample_data.d.ts.map +1 -0
- package/dist/components/thread_form/sample_data.js +658 -0
- package/dist/components/thread_form/sample_data.js.map +1 -0
- package/dist/components/thread_form/thread_form.d.ts +7 -0
- package/dist/components/thread_form/thread_form.d.ts.map +1 -0
- package/dist/components/thread_form/thread_form.js +1385 -0
- package/dist/components/thread_form/thread_form.js.map +1 -0
- package/dist/components/thread_form/types.d.ts +402 -0
- package/dist/components/thread_form/types.d.ts.map +1 -0
- package/dist/components/thread_form/types.js +23 -0
- package/dist/components/thread_form/types.js.map +1 -0
- package/dist/components/thread_form/utils/file_decision_state.d.ts +22 -0
- package/dist/components/thread_form/utils/file_decision_state.d.ts.map +1 -0
- package/dist/components/thread_form/utils/file_decision_state.js +37 -0
- package/dist/components/thread_form/utils/file_decision_state.js.map +1 -0
- package/dist/components/thread_form/utils/merge_send_back.d.ts +13 -0
- package/dist/components/thread_form/utils/merge_send_back.d.ts.map +1 -0
- package/dist/components/thread_form/utils/merge_send_back.js +23 -0
- package/dist/components/thread_form/utils/merge_send_back.js.map +1 -0
- package/dist/lib/autofill_handler.d.ts.map +1 -1
- package/dist/lib/autofill_handler.js +5 -44
- package/dist/lib/autofill_handler.js.map +1 -1
- package/dist/lib/classification_handler.d.ts +105 -0
- package/dist/lib/classification_handler.d.ts.map +1 -0
- package/dist/lib/classification_handler.js +342 -0
- package/dist/lib/classification_handler.js.map +1 -0
- package/dist/lib/content_gate_handler.d.ts +37 -0
- package/dist/lib/content_gate_handler.d.ts.map +1 -0
- package/dist/lib/content_gate_handler.js +126 -0
- package/dist/lib/content_gate_handler.js.map +1 -0
- package/dist/lib/index.d.ts +10 -0
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js +5 -0
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/periodic_coverage_runner.d.ts +24 -0
- package/dist/lib/periodic_coverage_runner.d.ts.map +1 -0
- package/dist/lib/periodic_coverage_runner.js +121 -0
- package/dist/lib/periodic_coverage_runner.js.map +1 -0
- package/dist/lib/resolution_handler.d.ts +150 -0
- package/dist/lib/resolution_handler.d.ts.map +1 -0
- package/dist/lib/resolution_handler.js +597 -0
- package/dist/lib/resolution_handler.js.map +1 -0
- package/dist/lib/resolve_variable.d.ts +25 -0
- package/dist/lib/resolve_variable.d.ts.map +1 -0
- package/dist/lib/resolve_variable.js +77 -0
- package/dist/lib/resolve_variable.js.map +1 -0
- package/dist/lib/validation_handler.d.ts +27 -3
- package/dist/lib/validation_handler.d.ts.map +1 -1
- package/dist/lib/validation_handler.js +338 -288
- package/dist/lib/validation_handler.js.map +1 -1
- package/dist/types/clarification.d.ts +54 -0
- package/dist/types/clarification.d.ts.map +1 -1
- package/dist/types/fb_form_data.d.ts +273 -123
- package/dist/types/fb_form_data.d.ts.map +1 -1
- package/dist/types/fb_form_data.js +44 -58
- package/dist/types/fb_form_data.js.map +1 -1
- package/dist/types/fb_form_data_v1.d.ts +250 -0
- package/dist/types/fb_form_data_v1.d.ts.map +1 -0
- package/dist/types/fb_form_data_v1.js +117 -0
- package/dist/types/fb_form_data_v1.js.map +1 -0
- package/dist/types/fb_form_instance.d.ts +1 -1
- package/dist/types/fb_form_instance.d.ts.map +1 -1
- package/dist/types/index.d.ts +5 -3
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +2 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/validation.d.ts +134 -12
- package/dist/types/validation.d.ts.map +1 -1
- package/dist/utils/expectation_extractor.d.ts +31 -0
- package/dist/utils/expectation_extractor.d.ts.map +1 -0
- package/dist/utils/expectation_extractor.js +142 -0
- package/dist/utils/expectation_extractor.js.map +1 -0
- package/dist/utils/fb_data_adapter.d.ts +7 -2
- package/dist/utils/fb_data_adapter.d.ts.map +1 -1
- package/dist/utils/fb_data_adapter.js +58 -7
- package/dist/utils/fb_data_adapter.js.map +1 -1
- package/dist/utils/fb_data_adapter_v2.d.ts +17 -0
- package/dist/utils/fb_data_adapter_v2.d.ts.map +1 -0
- package/dist/utils/fb_data_adapter_v2.js +483 -0
- package/dist/utils/fb_data_adapter_v2.js.map +1 -0
- package/dist/utils/fb_data_helpers.d.ts +1 -1
- package/dist/utils/fb_data_helpers.d.ts.map +1 -1
- package/dist/utils/fb_data_mutations.d.ts +1 -1
- package/dist/utils/fb_data_mutations.d.ts.map +1 -1
- package/dist/utils/fb_data_mutations_v2.d.ts +46 -0
- package/dist/utils/fb_data_mutations_v2.d.ts.map +1 -0
- package/dist/utils/fb_data_mutations_v2.js +341 -0
- package/dist/utils/fb_data_mutations_v2.js.map +1 -0
- package/dist/utils/fb_data_queries.d.ts +81 -0
- package/dist/utils/fb_data_queries.d.ts.map +1 -0
- package/dist/utils/fb_data_queries.js +354 -0
- package/dist/utils/fb_data_queries.js.map +1 -0
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +6 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/issue_bucketing.d.ts +36 -0
- package/dist/utils/issue_bucketing.d.ts.map +1 -0
- package/dist/utils/issue_bucketing.js +107 -0
- package/dist/utils/issue_bucketing.js.map +1 -0
- package/dist/utils/validation_result.d.ts +32 -0
- package/dist/utils/validation_result.d.ts.map +1 -0
- package/dist/utils/validation_result.js +55 -0
- package/dist/utils/validation_result.js.map +1 -0
- package/package.json +16 -4
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared primitives for ThreadForm components.
|
|
3
|
+
* Utility functions, avatar, status badge, icons, and constants.
|
|
4
|
+
*/
|
|
5
|
+
import type { ThreadMessage, AiContentResult, DocCheckData } from '../types.js';
|
|
6
|
+
export declare function cn(...classes: (string | false | undefined | null)[]): string;
|
|
7
|
+
export declare function format_time(iso: string): string;
|
|
8
|
+
export declare function format_date(iso: string): string;
|
|
9
|
+
export declare function format_relative(iso: string): string;
|
|
10
|
+
export declare const MSG_BG: Record<string, string>;
|
|
11
|
+
export declare const STATUS_CONFIG: Record<string, {
|
|
12
|
+
label: string;
|
|
13
|
+
color: string;
|
|
14
|
+
bg: string;
|
|
15
|
+
}>;
|
|
16
|
+
export declare function RoleAvatar({ role, name, size }: {
|
|
17
|
+
role: string;
|
|
18
|
+
name?: string;
|
|
19
|
+
size?: 'sm' | 'md';
|
|
20
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
21
|
+
export declare function StatusBadge({ status }: {
|
|
22
|
+
status: string;
|
|
23
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
24
|
+
export declare function PdfIcon({ className }: {
|
|
25
|
+
className?: string;
|
|
26
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
27
|
+
export declare function WarningIcon({ className }: {
|
|
28
|
+
className?: string;
|
|
29
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
30
|
+
export declare function DocumentIcon({ className }: {
|
|
31
|
+
className?: string;
|
|
32
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
33
|
+
export declare function LightbulbIcon({ className }: {
|
|
34
|
+
className?: string;
|
|
35
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
36
|
+
/** Build lookup: content_id → AiContentResult from all ai_analysis messages */
|
|
37
|
+
export declare function build_ai_lookup(messages: ThreadMessage[]): Map<string, AiContentResult>;
|
|
38
|
+
/**
|
|
39
|
+
* Find the latest doc check for a content_id (file-based). Walks the messages
|
|
40
|
+
* in reverse so a later verdict (e.g. the aggregate sum_match resolver)
|
|
41
|
+
* overrides an earlier per-file "passed" emitted by the upload pipeline.
|
|
42
|
+
*/
|
|
43
|
+
export declare function find_doc_check(messages: ThreadMessage[], content_id: string): DocCheckData | null;
|
|
44
|
+
/** Find text-based doc checks that reference a message_id */
|
|
45
|
+
export declare function find_text_doc_checks(messages: ThreadMessage[], message_id: string): ThreadMessage[];
|
|
46
|
+
/**
|
|
47
|
+
* Group messages for timeline rendering.
|
|
48
|
+
* Each user message (comment, content) is its own group/panel.
|
|
49
|
+
* Consecutive send_back messages that share the same source_content_id are
|
|
50
|
+
* merged into a single group so the file row renders once with N stacked
|
|
51
|
+
* ACTION REQUIRED boxes (one per rule) — avoids N separate panels.
|
|
52
|
+
*/
|
|
53
|
+
export declare function group_messages(messages: ThreadMessage[], role: 'agent' | 'client'): ThreadMessage[][];
|
|
54
|
+
//# sourceMappingURL=shared.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../../src/components/thread_form/components/shared.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAMhF,wBAAgB,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,MAAM,GAAG,KAAK,GAAG,SAAS,GAAG,IAAI,CAAC,EAAE,UAEnE;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,UAItC;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,UAEtC;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,UAS1C;AAMD,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAIzC,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAKtF,CAAC;AAYF,wBAAgB,UAAU,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAW,EAAE,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;CAAE,2CAQ1G;AAED,wBAAgB,WAAW,CAAC,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,2CAGzD;AAED,wBAAgB,OAAO,CAAC,EAAE,SAAS,EAAE,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,2CAM5D;AAED,wBAAgB,WAAW,CAAC,EAAE,SAAS,EAAE,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,2CAMhE;AAED,wBAAgB,YAAY,CAAC,EAAE,SAAS,EAAE,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,2CAMjE;AAED,wBAAgB,aAAa,CAAC,EAAE,SAAS,EAAE,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,2CAMlE;AAMD,+EAA+E;AAC/E,wBAAgB,eAAe,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAUvF;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAQjG;AAED,6DAA6D;AAC7D,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,aAAa,EAAE,CAInG;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,aAAa,EAAE,EAAE,CAkBrG"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared primitives for ThreadForm components.
|
|
3
|
+
* Utility functions, avatar, status badge, icons, and constants.
|
|
4
|
+
*/
|
|
5
|
+
'use client';
|
|
6
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
7
|
+
// ============================================================================
|
|
8
|
+
// Utility
|
|
9
|
+
// ============================================================================
|
|
10
|
+
export function cn(...classes) {
|
|
11
|
+
return classes.filter(Boolean).join(' ');
|
|
12
|
+
}
|
|
13
|
+
export function format_time(iso) {
|
|
14
|
+
const d = new Date(iso);
|
|
15
|
+
return d.toLocaleDateString('en-AU', { month: 'short', day: 'numeric' }) +
|
|
16
|
+
', ' + d.toLocaleTimeString('en-AU', { hour: 'numeric', minute: '2-digit', hour12: true });
|
|
17
|
+
}
|
|
18
|
+
export function format_date(iso) {
|
|
19
|
+
return new Date(iso).toLocaleDateString('en-AU', { month: 'short', day: 'numeric' });
|
|
20
|
+
}
|
|
21
|
+
export function format_relative(iso) {
|
|
22
|
+
const d = new Date(iso);
|
|
23
|
+
const now = new Date();
|
|
24
|
+
const diff = now.getTime() - d.getTime();
|
|
25
|
+
const days = Math.floor(diff / 86400000);
|
|
26
|
+
if (days === 0)
|
|
27
|
+
return 'Today';
|
|
28
|
+
if (days === 1)
|
|
29
|
+
return 'Yesterday';
|
|
30
|
+
if (days < 7)
|
|
31
|
+
return `${days}d ago`;
|
|
32
|
+
return d.toLocaleDateString('en-AU', { month: 'short', day: 'numeric' });
|
|
33
|
+
}
|
|
34
|
+
// ============================================================================
|
|
35
|
+
// Constants
|
|
36
|
+
// ============================================================================
|
|
37
|
+
export const MSG_BG = {
|
|
38
|
+
agent: 'bg-[#F0F4FF] border-[#DDE4F0]',
|
|
39
|
+
client: 'bg-[#F0FAF4] border-[#D5EBE0]',
|
|
40
|
+
system: 'bg-[#F8F8F8] border-[#EBEBEB]',
|
|
41
|
+
};
|
|
42
|
+
export const STATUS_CONFIG = {
|
|
43
|
+
pending: { label: 'Pending', color: 'text-gray-500', bg: 'bg-gray-100' },
|
|
44
|
+
in_progress: { label: 'In Progress', color: 'text-blue-600', bg: 'bg-blue-50' },
|
|
45
|
+
completed: { label: 'Completed', color: 'text-green-600', bg: 'bg-green-50' },
|
|
46
|
+
needs_attention: { label: 'Needs Attention', color: 'text-amber-600', bg: 'bg-amber-50' },
|
|
47
|
+
};
|
|
48
|
+
const ROLE_AVATAR_BG = {
|
|
49
|
+
agent: 'bg-[#1E3A5F]',
|
|
50
|
+
client: 'bg-[#059669]',
|
|
51
|
+
system: 'bg-[#94A3B8]',
|
|
52
|
+
};
|
|
53
|
+
// ============================================================================
|
|
54
|
+
// Components
|
|
55
|
+
// ============================================================================
|
|
56
|
+
export function RoleAvatar({ role, name, size = 'sm' }) {
|
|
57
|
+
const initial = name ? name[0].toUpperCase() : '?';
|
|
58
|
+
const sz = size === 'sm' ? 'w-6 h-6 text-[10px]' : 'w-8 h-8 text-xs';
|
|
59
|
+
return (_jsx("div", { className: cn('rounded-full flex items-center justify-center text-white font-bold flex-shrink-0', sz, ROLE_AVATAR_BG[role] || 'bg-[#94A3B8]'), children: initial }));
|
|
60
|
+
}
|
|
61
|
+
export function StatusBadge({ status }) {
|
|
62
|
+
const cfg = STATUS_CONFIG[status] || STATUS_CONFIG.pending;
|
|
63
|
+
return _jsx("span", { className: cn('text-xs font-medium px-2 py-0.5 rounded-full', cfg.color, cfg.bg), children: cfg.label });
|
|
64
|
+
}
|
|
65
|
+
export function PdfIcon({ className }) {
|
|
66
|
+
return (_jsx("svg", { className: cn('w-4 h-4 text-red-500 flex-shrink-0', className), fill: "currentColor", viewBox: "0 0 20 20", children: _jsx("path", { d: "M4 18h12a2 2 0 002-2V6l-4-4H4a2 2 0 00-2 2v12a2 2 0 002 2zm8-14l4 4h-4V4z" }) }));
|
|
67
|
+
}
|
|
68
|
+
export function WarningIcon({ className }) {
|
|
69
|
+
return (_jsx("svg", { className: cn('w-4 h-4 text-amber-500 flex-shrink-0', className), fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.964-.833-2.732 0L4.082 16.5c-.77.833.192 2.5 1.732 2.5z" }) }));
|
|
70
|
+
}
|
|
71
|
+
export function DocumentIcon({ className }) {
|
|
72
|
+
return (_jsx("svg", { className: cn('w-3.5 h-3.5 text-[#64748B]', className), fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 1.5, d: "M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z" }) }));
|
|
73
|
+
}
|
|
74
|
+
export function LightbulbIcon({ className }) {
|
|
75
|
+
return (_jsx("svg", { className: cn('w-3 h-3 text-[#6366F1]', className), fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M9.663 17h4.673M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z" }) }));
|
|
76
|
+
}
|
|
77
|
+
// ============================================================================
|
|
78
|
+
// Data lookup helpers
|
|
79
|
+
// ============================================================================
|
|
80
|
+
/** Build lookup: content_id → AiContentResult from all ai_analysis messages */
|
|
81
|
+
export function build_ai_lookup(messages) {
|
|
82
|
+
const map = new Map();
|
|
83
|
+
for (const msg of messages) {
|
|
84
|
+
if (msg.type === 'ai_analysis' && msg.ai_analysis) {
|
|
85
|
+
for (const item of msg.ai_analysis.items) {
|
|
86
|
+
map.set(item.content_ref, item);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return map;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Find the latest doc check for a content_id (file-based). Walks the messages
|
|
94
|
+
* in reverse so a later verdict (e.g. the aggregate sum_match resolver)
|
|
95
|
+
* overrides an earlier per-file "passed" emitted by the upload pipeline.
|
|
96
|
+
*/
|
|
97
|
+
export function find_doc_check(messages, content_id) {
|
|
98
|
+
for (let i = messages.length - 1; i >= 0; i--) {
|
|
99
|
+
const m = messages[i];
|
|
100
|
+
if (m.type === 'doc_check' && m.doc_check?.content_ref === content_id) {
|
|
101
|
+
return m.doc_check;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
return null;
|
|
105
|
+
}
|
|
106
|
+
/** Find text-based doc checks that reference a message_id */
|
|
107
|
+
export function find_text_doc_checks(messages, message_id) {
|
|
108
|
+
return messages.filter(m => m.type === 'doc_check' && m.doc_check?.content_ref === message_id && m.doc_check?.source_type === 'text');
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Group messages for timeline rendering.
|
|
112
|
+
* Each user message (comment, content) is its own group/panel.
|
|
113
|
+
* Consecutive send_back messages that share the same source_content_id are
|
|
114
|
+
* merged into a single group so the file row renders once with N stacked
|
|
115
|
+
* ACTION REQUIRED boxes (one per rule) — avoids N separate panels.
|
|
116
|
+
*/
|
|
117
|
+
export function group_messages(messages, role) {
|
|
118
|
+
const visible = messages.filter(m => !(role === 'client' && m.visibility === 'agent_only'));
|
|
119
|
+
const groups = [];
|
|
120
|
+
for (const msg of visible) {
|
|
121
|
+
const last = groups[groups.length - 1];
|
|
122
|
+
const last_msg = last?.[last.length - 1];
|
|
123
|
+
const can_merge = last_msg &&
|
|
124
|
+
last_msg.type === 'send_back' &&
|
|
125
|
+
msg.type === 'send_back' &&
|
|
126
|
+
last_msg.send_back?.source_content_id === msg.send_back?.source_content_id;
|
|
127
|
+
if (can_merge) {
|
|
128
|
+
last.push(msg);
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
groups.push([msg]);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
return groups;
|
|
135
|
+
}
|
|
136
|
+
//# sourceMappingURL=shared.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../../src/components/thread_form/components/shared.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Task card — expandable card with checkbox, title, status, thread timeline.
|
|
3
|
+
*/
|
|
4
|
+
import type { ThreadTask } from '../types.js';
|
|
5
|
+
/**
|
|
6
|
+
* Back-reference from a spawned clarification task to the file+issue it came
|
|
7
|
+
* from. Rendered as an inline chip under the child task title; click scrolls
|
|
8
|
+
* to and expands the parent task.
|
|
9
|
+
*/
|
|
10
|
+
export interface TaskParentRef {
|
|
11
|
+
parent_task_id: string;
|
|
12
|
+
parent_question_number: number;
|
|
13
|
+
file_name?: string;
|
|
14
|
+
/** One rule name per issue; the chip shows the first and counts the rest. */
|
|
15
|
+
rule_names: string[];
|
|
16
|
+
}
|
|
17
|
+
export interface TaskCardProps {
|
|
18
|
+
task: ThreadTask;
|
|
19
|
+
role: 'agent' | 'client';
|
|
20
|
+
expanded: boolean;
|
|
21
|
+
/** 1-based number shown as a Q{n} pill before the title. */
|
|
22
|
+
question_number?: number;
|
|
23
|
+
/** When set, renders a back-reference chip under the title. */
|
|
24
|
+
parent_ref?: TaskParentRef | null;
|
|
25
|
+
/** Called when the parent-ref chip is clicked — consumer expands + scrolls. */
|
|
26
|
+
on_navigate_to_task?: (task_id: string) => void;
|
|
27
|
+
user_name?: string;
|
|
28
|
+
user_id?: string;
|
|
29
|
+
on_toggle: () => void;
|
|
30
|
+
on_toggle_complete?: (task_id: string) => void;
|
|
31
|
+
on_delete_task?: (task_id: string) => void;
|
|
32
|
+
on_approve_task?: (task_id: string) => void;
|
|
33
|
+
on_reopen_task?: (task_id: string) => void;
|
|
34
|
+
/** Agent-only: rename the task title. Omit to hide the edit affordance. */
|
|
35
|
+
on_rename_task?: (task_id: string, title: string) => void;
|
|
36
|
+
on_send?: (task_id: string, text: string, files: File[]) => void;
|
|
37
|
+
on_send_comment?: (task_id: string, text: string) => void;
|
|
38
|
+
on_upload_files?: (task_id: string, files: File[]) => void;
|
|
39
|
+
on_add_question?: (task_id: string) => void;
|
|
40
|
+
on_view_file?: (item: import('../types.js').ContentItem) => void;
|
|
41
|
+
on_remove_file?: (item: import('../types.js').ContentItem) => void;
|
|
42
|
+
on_accept?: (content_ref: string) => void;
|
|
43
|
+
on_dismiss?: (content_ref: string) => void;
|
|
44
|
+
on_send_to_client?: (content_ref: string) => void;
|
|
45
|
+
on_edit_message?: (task_id: string, message_id: string, updated: {
|
|
46
|
+
content_text?: string;
|
|
47
|
+
content_items?: import('../types.js').ContentItem[];
|
|
48
|
+
}) => void;
|
|
49
|
+
on_delete_message?: (task_id: string, message_id: string) => void;
|
|
50
|
+
/** Upload a file via file_manager, returns ContentItem with real file_id */
|
|
51
|
+
upload_file?: (file: File) => Promise<import('../types.js').ContentItem>;
|
|
52
|
+
/** Agent sends back selected issues as a new task */
|
|
53
|
+
on_send_back_issues?: (item: import('../types.js').ContentItem, issues: import('../types.js').SendBackIssue[], accepted_issue_keys: string[]) => void;
|
|
54
|
+
/** Agent submits batch decisions from the Pending Review panel */
|
|
55
|
+
on_submit_decisions?: (item: import('../types.js').ContentItem, decisions: import('../types.js').RuleDecision[]) => void;
|
|
56
|
+
/** Persist updates to a ContentItem */
|
|
57
|
+
on_update_content_item?: (content_id: string, updates: Partial<import('../types.js').ContentItem>) => void;
|
|
58
|
+
/** Pipeline file statuses */
|
|
59
|
+
file_statuses?: Map<string, 'queued' | 'classifying' | 'validating' | 'done' | 'error'>;
|
|
60
|
+
/** Classification results per content_id */
|
|
61
|
+
classification_results?: Map<string, import('../types.js').ClassificationResult>;
|
|
62
|
+
/** Validation results per content_id */
|
|
63
|
+
validation_results?: Map<string, import('../../../types/validation.js').ValidationRuleResult[]>;
|
|
64
|
+
/** File manager callbacks for upload in clarification response dropzone */
|
|
65
|
+
file_manager?: import('../../../types/file_manager.js').FileManagerCallbacks;
|
|
66
|
+
/** Callback when replacement files are submitted from a clarification response */
|
|
67
|
+
on_replacement_files?: (source_content_id: string, files: import('../../../types/file_attachment.js').FormFileAttachment[]) => void;
|
|
68
|
+
/** View action rendering — 'icon' (default) or 'text'. Forwarded to FileBar. */
|
|
69
|
+
view_button_variant?: 'icon' | 'text';
|
|
70
|
+
/** Override info-icon visibility. When omitted, defaults to agent-only. Forwarded to FileBar. */
|
|
71
|
+
show_info_icon?: boolean;
|
|
72
|
+
/**
|
|
73
|
+
* Set of source_content_ids whose spawned send-back task is now resolved.
|
|
74
|
+
* Used by FileBar to suppress the "Sent Back" pill on the parent file once
|
|
75
|
+
* the child question has been completed.
|
|
76
|
+
*/
|
|
77
|
+
sent_back_resolved_ids?: Set<string>;
|
|
78
|
+
/** True while the aggregate resolver is in-flight for this task. */
|
|
79
|
+
resolving?: boolean;
|
|
80
|
+
/** Available document types — forwarded to FileBar's hover-pencil editor. */
|
|
81
|
+
available_document_types?: import('../../shared/document_type_editor.js').DocumentTypeOption[];
|
|
82
|
+
/** Called when the agent edits a file's document type — parent re-runs validation. */
|
|
83
|
+
on_change_document_type?: (item: import('../types.js').ContentItem, new_type_id: string) => Promise<void> | void;
|
|
84
|
+
/** Map of content_id → effective Keep state. Forwarded to ThreadTimeline → FileBar. */
|
|
85
|
+
keep_selections?: Record<string, boolean>;
|
|
86
|
+
/** Toggle handler for the Keep checkbox. */
|
|
87
|
+
on_keep_change?: (selections: Record<string, boolean>) => void;
|
|
88
|
+
}
|
|
89
|
+
export declare function TaskCard({ task, role, expanded, question_number, parent_ref, on_navigate_to_task, user_name, user_id, on_toggle, on_toggle_complete, on_delete_task, on_approve_task, on_reopen_task, on_rename_task, on_send, on_send_comment, on_upload_files, on_add_question, on_view_file, on_remove_file, on_accept, on_dismiss, on_send_to_client, on_edit_message, on_delete_message, upload_file, on_send_back_issues, on_submit_decisions, on_update_content_item, file_statuses, classification_results, validation_results, file_manager, on_replacement_files, view_button_variant, show_info_icon, sent_back_resolved_ids, resolving, available_document_types, on_change_document_type, keep_selections, on_keep_change, }: TaskCardProps): import("react/jsx-runtime").JSX.Element;
|
|
90
|
+
//# sourceMappingURL=task_card.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task_card.d.ts","sourceRoot":"","sources":["../../../../src/components/thread_form/components/task_card.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Task card — expandable card with checkbox, title, status, thread timeline.
|
|
3
|
+
*/
|
|
4
|
+
'use client';
|
|
5
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
6
|
+
import { useState } from 'react';
|
|
7
|
+
import { cn, format_date } from './shared.js';
|
|
8
|
+
import { ThreadTimeline } from './thread_timeline.js';
|
|
9
|
+
import { ThreadComposer } from './thread_composer.js';
|
|
10
|
+
import { CoverageCard } from './coverage_card.js';
|
|
11
|
+
/**
|
|
12
|
+
* Shorten a filename for the back-reference chip so it doesn't dominate the
|
|
13
|
+
* row. Keeps the head and extension, elides the middle.
|
|
14
|
+
*/
|
|
15
|
+
function format_ref_file_name(name, max = 32) {
|
|
16
|
+
if (name.length <= max)
|
|
17
|
+
return name;
|
|
18
|
+
const dot = name.lastIndexOf('.');
|
|
19
|
+
if (dot <= 0 || dot > name.length - 2)
|
|
20
|
+
return name.slice(0, max - 1) + '…';
|
|
21
|
+
const ext = name.slice(dot);
|
|
22
|
+
const head = name.slice(0, Math.max(1, max - ext.length - 1));
|
|
23
|
+
return `${head}…${ext}`;
|
|
24
|
+
}
|
|
25
|
+
export function TaskCard({ task, role, expanded, question_number, parent_ref, on_navigate_to_task, user_name, user_id, on_toggle, on_toggle_complete, on_delete_task, on_approve_task, on_reopen_task, on_rename_task, on_send, on_send_comment, on_upload_files, on_add_question, on_view_file, on_remove_file, on_accept, on_dismiss, on_send_to_client, on_edit_message, on_delete_message, upload_file, on_send_back_issues, on_submit_decisions, on_update_content_item, file_statuses, classification_results, validation_results, file_manager, on_replacement_files, view_button_variant, show_info_icon, sent_back_resolved_ids, resolving, available_document_types, on_change_document_type, keep_selections, on_keep_change, }) {
|
|
26
|
+
const file_count = task.thread.reduce((acc, m) => acc + (m.content_items?.filter(i => i.type === 'file').length || 0), 0);
|
|
27
|
+
const msg_count = task.thread.filter(m => m.type === 'comment' || m.type === 'clarification').length;
|
|
28
|
+
const [editing_title, set_editing_title] = useState(false);
|
|
29
|
+
const [draft_title, set_draft_title] = useState(task.title);
|
|
30
|
+
const can_rename = role === 'agent' && !!on_rename_task && task.status !== 'completed';
|
|
31
|
+
const start_rename = () => {
|
|
32
|
+
set_draft_title(task.title);
|
|
33
|
+
set_editing_title(true);
|
|
34
|
+
};
|
|
35
|
+
const commit_rename = () => {
|
|
36
|
+
const trimmed = draft_title.trim();
|
|
37
|
+
if (trimmed && trimmed !== task.title)
|
|
38
|
+
on_rename_task?.(task.task_id, trimmed);
|
|
39
|
+
set_editing_title(false);
|
|
40
|
+
};
|
|
41
|
+
const cancel_rename = () => {
|
|
42
|
+
set_draft_title(task.title);
|
|
43
|
+
set_editing_title(false);
|
|
44
|
+
};
|
|
45
|
+
return (_jsxs("div", { id: `task-${task.task_id}`, className: cn('transition-all border-b border-[#E2E8F0] group/task rounded'), children: [_jsxs("button", { onClick: on_toggle, className: "w-full flex items-center gap-3 text-left py-3", children: [_jsx("div", { onClick: (e) => { e.stopPropagation(); on_toggle_complete?.(task.task_id); }, className: cn('w-5 h-5 rounded-sm flex items-center justify-center flex-shrink-0 cursor-pointer', task.status === 'completed' ? 'bg-[#059669] text-white' : 'border border-[#CBD5E1]'), children: task.status === 'completed' && _jsx("span", { className: "text-xs", children: "\u2713" }) }), _jsx("div", { className: "flex-1 min-w-0 flex items-center gap-2 group/title", children: editing_title ? (_jsxs(_Fragment, { children: [_jsx("input", { autoFocus: true, value: draft_title, onChange: (e) => set_draft_title(e.target.value), onClick: (e) => e.stopPropagation(), onMouseDown: (e) => e.stopPropagation(), onKeyDown: (e) => {
|
|
46
|
+
e.stopPropagation();
|
|
47
|
+
if (e.key === 'Enter') {
|
|
48
|
+
e.preventDefault();
|
|
49
|
+
commit_rename();
|
|
50
|
+
}
|
|
51
|
+
if (e.key === 'Escape') {
|
|
52
|
+
e.preventDefault();
|
|
53
|
+
cancel_rename();
|
|
54
|
+
}
|
|
55
|
+
}, onBlur: commit_rename, className: "flex-1 min-w-0 text-[13px] font-medium text-gray-900 border border-[#2563EB] rounded px-2 py-0.5 outline-none focus:ring-2 focus:ring-[#2563EB]/20" }), _jsx("div", { role: "button", tabIndex: 0, onClick: (e) => { e.stopPropagation(); commit_rename(); }, onMouseDown: (e) => e.stopPropagation(), className: "p-1 text-[#059669] hover:bg-green-50 rounded cursor-pointer flex-shrink-0", title: "Save", children: _jsx("svg", { className: "w-3.5 h-3.5", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M5 13l4 4L19 7" }) }) }), _jsx("div", { role: "button", tabIndex: 0, onClick: (e) => { e.stopPropagation(); cancel_rename(); }, onMouseDown: (e) => e.stopPropagation(), className: "p-1 text-[#EF4444] hover:bg-red-50 rounded cursor-pointer flex-shrink-0", title: "Cancel", children: _jsx("svg", { className: "w-3.5 h-3.5", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }) }) })] })) : (_jsxs(_Fragment, { children: [_jsxs("div", { className: "flex-1 min-w-0", children: [_jsxs("div", { className: "flex items-center gap-2", children: [typeof question_number === 'number' && (_jsxs("span", { className: "inline-flex items-center text-[10px] font-semibold text-[#64748B] bg-[#F1F5F9] px-1.5 py-0.5 rounded flex-shrink-0", "aria-label": `Question ${question_number}`, children: ["Q", question_number] })), _jsx("span", { className: cn('text-[13px] font-medium truncate', task.status === 'completed' ? 'line-through text-gray-400' : 'text-gray-900'), children: task.title })] }), parent_ref && (_jsxs("span", { role: "button", tabIndex: 0, onClick: (e) => { e.stopPropagation(); on_navigate_to_task?.(parent_ref.parent_task_id); }, onMouseDown: (e) => e.stopPropagation(), onKeyDown: (e) => {
|
|
56
|
+
if (e.key === 'Enter' || e.key === ' ') {
|
|
57
|
+
e.preventDefault();
|
|
58
|
+
e.stopPropagation();
|
|
59
|
+
on_navigate_to_task?.(parent_ref.parent_task_id);
|
|
60
|
+
}
|
|
61
|
+
}, className: "mt-1 inline-flex items-center gap-1.5 max-w-full text-[11px] text-[#64748B] hover:text-[#0369A1] transition-colors cursor-pointer", title: `Go to Q${parent_ref.parent_question_number}`, children: [_jsxs("svg", { className: "w-3 h-3 flex-shrink-0", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2, strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("path", { d: "M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71" }), _jsx("path", { d: "M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71" })] }), _jsxs("span", { className: "truncate", children: ["From ", _jsxs("span", { className: "font-medium text-[#334155]", children: ["Q", parent_ref.parent_question_number] }), parent_ref.file_name && (_jsxs(_Fragment, { children: [" \u00B7 ", _jsx("span", { className: "truncate", children: format_ref_file_name(parent_ref.file_name) })] })), parent_ref.rule_names.length > 0 && (_jsxs(_Fragment, { children: [" \u00B7 ", _jsx("span", { className: "font-medium text-[#334155]", children: parent_ref.rule_names[0] }), parent_ref.rule_names.length > 1 && _jsxs("span", { className: "text-[#94A3B8]", children: [" +", parent_ref.rule_names.length - 1] })] }))] })] })), !expanded && !parent_ref && (_jsxs("p", { className: "text-xs text-gray-400 truncate mt-0.5", children: [msg_count > 0 && _jsxs("span", { className: "mr-2", children: [msg_count, " comment", msg_count !== 1 ? 's' : ''] }), file_count > 0 && _jsxs("span", { className: "mr-2", children: ["\u00B7 ", file_count, " file", file_count !== 1 ? 's' : ''] })] }))] }), can_rename && (_jsx("div", { role: "button", tabIndex: 0, onClick: (e) => { e.stopPropagation(); start_rename(); }, onMouseDown: (e) => e.stopPropagation(), className: "p-1 text-[#94A3B8] hover:text-[#2563EB] hover:bg-blue-50 rounded cursor-pointer flex-shrink-0 opacity-0 group-hover/task:opacity-100 transition-opacity", title: "Rename task", children: _jsx("svg", { className: "w-3.5 h-3.5", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 1.5, d: "M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z" }) }) }))] })) }), task.completed_at && _jsx("span", { className: "text-xs text-gray-400 hidden sm:inline", children: format_date(task.completed_at) }), task.status === 'needs_attention' && (_jsx("span", { className: "text-xs font-medium text-amber-600 bg-amber-50 px-2 py-0.5 rounded-full", children: "Needs attention" })), role === 'agent' && task.status === 'completed' && task.agent_review !== 'approved' && task.agent_review !== 'reopened' && (_jsxs(_Fragment, { children: [_jsx("span", { className: "text-[9px] font-medium text-amber-600 bg-amber-50 px-1.5 py-0.5 rounded", children: "Needs Review" }), _jsx("div", { onClick: (e) => { e.stopPropagation(); on_approve_task?.(task.task_id); }, className: "text-[10px] font-medium text-[#059669] border border-[#059669]/30 bg-green-50 px-2 py-0.5 rounded hover:bg-green-100 cursor-pointer", title: "Approve this task", children: "\u2713 Approve" }), _jsx("div", { onClick: (e) => { e.stopPropagation(); on_reopen_task?.(task.task_id); }, className: "text-[10px] font-medium text-[#EF4444] border border-[#EF4444]/30 bg-red-50 px-2 py-0.5 rounded hover:bg-red-100 cursor-pointer", title: "Reopen this task", children: "Reopen" })] })), role === 'agent' && task.agent_review === 'approved' && (_jsx("span", { className: "text-[9px] font-medium text-[#059669] bg-[#ECFDF5] px-1.5 py-0.5 rounded", children: "\u2713 Approved" })), task.agent_review === 'reopened' && (_jsx("span", { className: "text-[9px] font-medium text-[#EF4444] bg-[#FEF2F2] px-1.5 py-0.5 rounded", children: "Reopened by agent" })), role === 'agent' && on_delete_task && (_jsx("div", { onClick: (e) => { e.stopPropagation(); on_delete_task(task.task_id); }, className: "p-1 text-[#94A3B8] hover:text-[#EF4444] rounded hover:bg-[#FEF2F2] cursor-pointer opacity-0 group-hover/task:opacity-100 transition-opacity", title: "Delete task", children: _jsx("svg", { className: "w-3.5 h-3.5", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 1.5, d: "M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16" }) }) })), _jsx("svg", { className: cn('w-4 h-4 text-gray-300 transition-transform flex-shrink-0', expanded && 'rotate-180'), fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 1.5, d: "M19 9l-7 7-7-7" }) })] }), expanded && (_jsxs("div", { className: "pb-4", children: [task.description && (_jsx("p", { className: "text-[13px] text-gray-500 my-3 leading-relaxed", children: task.description })), task.due_date && _jsxs("p", { className: "text-xs text-amber-600 mb-3", children: ["Due ", format_date(task.due_date)] }), task.coverage_results && task.coverage_results.length > 0 && (_jsx(CoverageCard, { results: task.coverage_results })), task.thread.length > 0 ? (_jsx(ThreadTimeline, { messages: task.thread, role: role, current_user_id: user_id, on_view_file: on_view_file, on_remove_file: on_remove_file, on_accept: on_accept, on_dismiss: on_dismiss, on_send_to_client: on_send_to_client, on_edit_message: (msg_id, updated) => on_edit_message?.(task.task_id, msg_id, updated), on_delete_message: (msg_id) => on_delete_message?.(task.task_id, msg_id), upload_file: upload_file, on_send_back_issues: on_send_back_issues, on_submit_decisions: on_submit_decisions, on_update_content_item: on_update_content_item, task_status: task.status, file_statuses: file_statuses, classification_results: classification_results, validation_results: validation_results, file_manager: file_manager, on_replacement_files: on_replacement_files, view_button_variant: view_button_variant, show_info_icon: show_info_icon, sent_back_resolved_ids: sent_back_resolved_ids, resolving: resolving, available_document_types: available_document_types, on_change_document_type: on_change_document_type, keep_selections: keep_selections, on_keep_change: on_keep_change })) : (_jsx("p", { className: "text-[13px] text-gray-400 py-6 text-center", children: "No activity yet" })), _jsx(ThreadComposer, { role: role, user_name: user_name, on_send: (text, files) => on_send?.(task.task_id, text, files), on_send_comment: (text) => on_send_comment?.(task.task_id, text), on_upload_files: (files) => on_upload_files?.(task.task_id, files), on_add_question: () => on_add_question?.(task.task_id) })] }))] }));
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=task_card.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task_card.js","sourceRoot":"","sources":["../../../../src/components/thread_form/components/task_card.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Text-based doc check — shows quoted snippet + issue + response mechanism.
|
|
3
|
+
* Used when AI finds issues in client's text input.
|
|
4
|
+
*/
|
|
5
|
+
import type { ThreadMessage } from '../types.js';
|
|
6
|
+
export interface TextDocCheckProps {
|
|
7
|
+
doc_check_msg: ThreadMessage;
|
|
8
|
+
role: 'agent' | 'client';
|
|
9
|
+
on_respond?: (issue_index: number, response: {
|
|
10
|
+
comment?: string;
|
|
11
|
+
file?: File;
|
|
12
|
+
}) => void;
|
|
13
|
+
}
|
|
14
|
+
export declare function TextDocCheck({ doc_check_msg, role, on_respond }: TextDocCheckProps): import("react/jsx-runtime").JSX.Element | null;
|
|
15
|
+
//# sourceMappingURL=text_doc_check.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text_doc_check.d.ts","sourceRoot":"","sources":["../../../../src/components/thread_form/components/text_doc_check.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjD,MAAM,WAAW,iBAAiB;IAChC,aAAa,EAAE,aAAa,CAAC;IAC7B,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAC;IACzB,UAAU,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,IAAI,CAAA;KAAE,KAAK,IAAI,CAAC;CACzF;AAED,wBAAgB,YAAY,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,iBAAiB,kDAiElF"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Text-based doc check — shows quoted snippet + issue + response mechanism.
|
|
3
|
+
* Used when AI finds issues in client's text input.
|
|
4
|
+
*/
|
|
5
|
+
'use client';
|
|
6
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
7
|
+
import { useState } from 'react';
|
|
8
|
+
import { cn, WarningIcon } from './shared.js';
|
|
9
|
+
export function TextDocCheck({ doc_check_msg, role, on_respond }) {
|
|
10
|
+
const [responding_to, set_responding_to] = useState(null);
|
|
11
|
+
const check = doc_check_msg.doc_check;
|
|
12
|
+
if (!check || !check.issues || check.issues.length === 0)
|
|
13
|
+
return null;
|
|
14
|
+
return (_jsxs("div", { className: "rounded-md border border-amber-200 overflow-hidden mt-2", children: [_jsxs("div", { className: "px-3 py-2 bg-amber-50/60 flex items-center gap-2 border-b border-amber-200", children: [_jsx(WarningIcon, {}), _jsx("span", { className: "text-[12px] font-medium text-amber-800", children: check.summary })] }), check.issues.map((issue, i) => (_jsxs("div", { className: cn('px-3 py-3', i > 0 && 'border-t border-amber-100'), children: [issue.text_snippet && (_jsxs("div", { className: "flex items-start gap-2 mb-2", children: [_jsx("div", { className: "w-1 self-stretch bg-amber-300 rounded-full flex-shrink-0" }), _jsxs("p", { className: "text-[12px] text-[#64748B] italic leading-relaxed", children: ["\u201C", issue.text_snippet, "\u201D"] })] })), _jsx("p", { className: "text-[12px] text-amber-800 leading-relaxed", children: issue.description }), role === 'client' && responding_to !== i && (_jsxs("div", { className: "flex gap-2 mt-2", children: [_jsx("button", { onClick: () => set_responding_to(i), className: "text-[11px] font-medium text-[#2563EB] border border-[#2563EB] rounded px-2.5 py-1 hover:bg-[#2563EB] hover:text-white transition-colors cursor-pointer", children: "Provide details" }), _jsx("button", { onClick: () => set_responding_to(i), className: "text-[11px] text-[#64748B] border border-[#CBD5E1] rounded px-2.5 py-1 hover:bg-white transition-colors cursor-pointer", children: "Upload receipt" })] })), role === 'client' && responding_to === i && (_jsxs("div", { className: "mt-2 bg-white border border-[#E2E8F0] rounded-md p-2.5", children: [_jsxs("div", { className: "flex items-center gap-2 mb-2", children: [_jsx("button", { className: "text-[11px] font-medium text-[#2563EB] border border-[#2563EB]/30 bg-[#EFF6FF] rounded px-2 py-0.5 cursor-pointer", children: "\uD83D\uDCCE Attach receipt" }), _jsx("span", { className: "text-[11px] text-[#94A3B8]", children: "or drag & drop" })] }), _jsx("textarea", { className: "w-full border border-[#E2E8F0] rounded px-2.5 py-1.5 text-[12px] resize-none focus:outline-none focus:ring-1 focus:ring-[#2563EB] placeholder:text-[#CBD5E1]", rows: 2, placeholder: "Explain or provide corrected details..." }), _jsxs("div", { className: "flex justify-end gap-2 mt-1.5", children: [_jsx("button", { onClick: () => set_responding_to(null), className: "text-[11px] text-[#94A3B8] cursor-pointer", children: "Cancel" }), _jsx("button", { className: "text-[11px] font-medium text-white bg-[#2563EB] px-3 py-1 rounded hover:bg-[#1D4ED8] cursor-pointer", children: "Submit" })] })] }))] }, i)))] }));
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=text_doc_check.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text_doc_check.js","sourceRoot":"","sources":["../../../../src/components/thread_form/components/text_doc_check.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,YAAY,CAAC;;AAEb,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAQ9C,MAAM,UAAU,YAAY,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,UAAU,EAAqB;IACjF,MAAM,CAAC,aAAa,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IACzE,MAAM,KAAK,GAAG,aAAa,CAAC,SAAS,CAAC;IACtC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAEtE,OAAO,CACL,eAAK,SAAS,EAAC,yDAAyD,aAEtE,eAAK,SAAS,EAAC,4EAA4E,aACzF,KAAC,WAAW,KAAG,EACf,eAAM,SAAS,EAAC,wCAAwC,YAAE,KAAK,CAAC,OAAO,GAAQ,IAC3E,EAGL,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAC9B,eAAa,SAAS,EAAE,EAAE,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,IAAI,2BAA2B,CAAC,aAE1E,KAAK,CAAC,YAAY,IAAI,CACrB,eAAK,SAAS,EAAC,6BAA6B,aAC1C,cAAK,SAAS,EAAC,0DAA0D,GAAG,EAC5E,aAAG,SAAS,EAAC,mDAAmD,uBAAS,KAAK,CAAC,YAAY,cAAY,IACnG,CACP,EAGD,YAAG,SAAS,EAAC,4CAA4C,YAAE,KAAK,CAAC,WAAW,GAAK,EAGhF,IAAI,KAAK,QAAQ,IAAI,aAAa,KAAK,CAAC,IAAI,CAC3C,eAAK,SAAS,EAAC,iBAAiB,aAC9B,iBACE,OAAO,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,EACnC,SAAS,EAAC,yJAAyJ,gCAG5J,EACT,iBACE,OAAO,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,EACnC,SAAS,EAAC,wHAAwH,+BAG3H,IACL,CACP,EACA,IAAI,KAAK,QAAQ,IAAI,aAAa,KAAK,CAAC,IAAI,CAC3C,eAAK,SAAS,EAAC,wDAAwD,aACrE,eAAK,SAAS,EAAC,8BAA8B,aAC3C,iBAAQ,SAAS,EAAC,mHAAmH,4CAA2B,EAChK,eAAM,SAAS,EAAC,4BAA4B,+BAAsB,IAC9D,EACN,mBACE,SAAS,EAAC,8JAA8J,EACxK,IAAI,EAAE,CAAC,EACP,WAAW,EAAC,yCAAyC,GACrD,EACF,eAAK,SAAS,EAAC,+BAA+B,aAC5C,iBAAQ,OAAO,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,SAAS,EAAC,2CAA2C,uBAAgB,EACrH,iBAAQ,SAAS,EAAC,qGAAqG,uBAAgB,IACnI,IACF,CACP,KA7CO,CAAC,CA8CL,CACP,CAAC,IACE,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Text extraction table — displays AI-extracted structured data from text input.
|
|
3
|
+
* Agent-only. Read-only with edit toggle. Shows categories, fields, issues.
|
|
4
|
+
*/
|
|
5
|
+
import type { AiContentResult } from '../types.js';
|
|
6
|
+
export interface TextExtractionProps {
|
|
7
|
+
result: AiContentResult;
|
|
8
|
+
on_accept?: (content_ref: string) => void;
|
|
9
|
+
on_send_to_client?: (content_ref: string) => void;
|
|
10
|
+
on_dismiss?: (content_ref: string) => void;
|
|
11
|
+
on_edit?: (content_ref: string, data: AiContentResult['extracted_data']) => void;
|
|
12
|
+
}
|
|
13
|
+
export declare function TextExtraction({ result, on_accept, on_send_to_client, on_dismiss }: TextExtractionProps): import("react/jsx-runtime").JSX.Element | null;
|
|
14
|
+
//# sourceMappingURL=text_extraction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text_extraction.d.ts","sourceRoot":"","sources":["../../../../src/components/thread_form/components/text_extraction.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAGnD,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,eAAe,CAAC;IACxB,SAAS,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,iBAAiB,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IAClD,UAAU,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,OAAO,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;CAClF;AAED,wBAAgB,cAAc,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,iBAAiB,EAAE,UAAU,EAAE,EAAE,mBAAmB,kDAkEvG"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Text extraction table — displays AI-extracted structured data from text input.
|
|
3
|
+
* Agent-only. Read-only with edit toggle. Shows categories, fields, issues.
|
|
4
|
+
*/
|
|
5
|
+
'use client';
|
|
6
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
7
|
+
import { useState } from 'react';
|
|
8
|
+
import { cn, DocumentIcon } from './shared.js';
|
|
9
|
+
export function TextExtraction({ result, on_accept, on_send_to_client, on_dismiss }) {
|
|
10
|
+
const [editing, set_editing] = useState(false);
|
|
11
|
+
if (!result.extracted_data || result.extracted_data.length === 0)
|
|
12
|
+
return null;
|
|
13
|
+
const issue_count = result.extracted_data.reduce((n, g) => n + g.fields.filter(f => f.issue).length, 0);
|
|
14
|
+
return (_jsxs("div", { className: "rounded-md border border-[#E2E8F0] overflow-hidden", children: [_jsxs("div", { className: "px-3 py-2 bg-[#F1F5F9] flex items-center justify-between border-b border-[#E2E8F0]", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(DocumentIcon, {}), _jsx("span", { className: "text-[12px] font-medium text-[#334155]", children: "Extracted Data" }), issue_count > 0 && (_jsxs("span", { className: "text-[10px] text-amber-600 bg-amber-50 px-1.5 py-0.5 rounded-full font-medium", children: [issue_count, " issue", issue_count !== 1 ? 's' : ''] }))] }), _jsx("button", { onClick: () => set_editing(!editing), className: "text-[11px] text-[#2563EB] font-medium hover:underline cursor-pointer", children: editing ? 'Done' : 'Edit' })] }), result.extracted_data.map(group => (_jsxs("div", { children: [_jsx("div", { className: "px-3 py-1.5 bg-[#FAFBFC] text-[10px] text-[#64748B] uppercase tracking-wider font-medium border-b border-[#F1F5F9]", children: group.category }), group.fields.map(field => (_jsxs("div", { className: cn('flex items-center gap-3 px-3 py-2 text-[13px] border-b border-[#F1F5F9] last:border-b-0', field.issue && 'bg-amber-50/30'), children: [_jsx("span", { className: "text-[#64748B] w-28 flex-shrink-0 text-[12px]", children: field.label }), editing ? (_jsx("input", { className: "flex-1 text-[13px] font-medium text-[#0F172A] border-b border-[#E2E8F0] bg-transparent focus:outline-none focus:border-[#2563EB] py-0.5", defaultValue: field.value })) : (_jsx("span", { className: "text-[#0F172A] font-medium flex-1", children: field.value })), field.issue ? (_jsxs("span", { className: "text-amber-600 text-[11px] flex items-center gap-1 flex-shrink-0 max-w-48 truncate", title: field.issue, children: [_jsx("span", { className: "w-1.5 h-1.5 rounded-full bg-amber-400 flex-shrink-0" }), field.issue] })) : (_jsx("span", { className: "w-1.5 h-1.5 rounded-full bg-[#059669] flex-shrink-0" }))] }, field.key)))] }, group.category))), result.review_status === 'pending' && (_jsxs("div", { className: "px-3 py-2 bg-[#F8FAFC] flex gap-2 border-t border-[#E2E8F0]", children: [_jsx("button", { onClick: () => on_accept?.(result.content_ref), className: "text-[11px] font-medium text-[#2563EB] hover:underline cursor-pointer", children: "Accept" }), _jsx("button", { onClick: () => on_send_to_client?.(result.content_ref), className: "text-[11px] font-medium text-[#2563EB] hover:underline cursor-pointer", children: "Send issues to Client" }), _jsx("button", { onClick: () => on_dismiss?.(result.content_ref), className: "text-[11px] text-[#94A3B8] hover:underline cursor-pointer", children: "Dismiss" })] }))] }));
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=text_extraction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text_extraction.js","sourceRoot":"","sources":["../../../../src/components/thread_form/components/text_extraction.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Thread composer — combined text + file dropzone.
|
|
3
|
+
* Always-visible textarea that also accepts file drops.
|
|
4
|
+
* Attached files shown as chips below the text area.
|
|
5
|
+
*/
|
|
6
|
+
export interface ThreadComposerProps {
|
|
7
|
+
role: 'agent' | 'client';
|
|
8
|
+
user_name?: string;
|
|
9
|
+
on_send?: (text: string, files: File[]) => void;
|
|
10
|
+
on_send_comment?: (text: string) => void;
|
|
11
|
+
on_upload_files?: (files: File[]) => void;
|
|
12
|
+
on_add_question?: () => void;
|
|
13
|
+
}
|
|
14
|
+
export declare function ThreadComposer({ role, user_name, on_send, on_send_comment, on_upload_files, on_add_question }: ThreadComposerProps): import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
//# sourceMappingURL=thread_composer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"thread_composer.d.ts","sourceRoot":"","sources":["../../../../src/components/thread_form/components/thread_composer.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC;IAChD,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC;IAC1C,eAAe,CAAC,EAAE,MAAM,IAAI,CAAC;CAC9B;AAED,wBAAgB,cAAc,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,EAAE,mBAAmB,2CAkMlI"}
|