@paro.io/expert-shared-components 1.14.66 → 1.14.68

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 (83) hide show
  1. package/lib/components/DocumentCenter/MultiFileUploadSection.js +220 -121
  2. package/lib/components/TaxAxis/TaxAxisApi.d.ts +0 -1
  3. package/lib/components/TaxAxis/TaxAxisShell.js +5 -80
  4. package/lib/components/shared/UploadClient.d.ts +2 -1
  5. package/lib/components/shared/UploadClient.js +6 -2
  6. package/lib/index.d.ts +1 -13
  7. package/lib/index.js +1 -27
  8. package/lib/tax-axis/components/clientReport/ExecutiveSummary.d.ts +4 -1
  9. package/lib/tax-axis/components/clientReport/ExecutiveSummary.js +10 -6
  10. package/lib/tax-axis/components/clientReport/Methodology.js +2 -2
  11. package/lib/tax-axis/components/clientReport/RecommendedStrategies.d.ts +6 -1
  12. package/lib/tax-axis/components/clientReport/RecommendedStrategies.js +26 -24
  13. package/lib/tax-axis/components/clientReport/StrategyCard.d.ts +1 -1
  14. package/lib/tax-axis/components/clientReport/StrategyCard.js +39 -23
  15. package/lib/tax-axis/components/clientReport/TaxAxisClientReport.d.ts +5 -2
  16. package/lib/tax-axis/components/clientReport/TaxAxisClientReport.js +9 -7
  17. package/lib/tax-axis/components/dashboard/DashboardActions.js +6 -5
  18. package/lib/tax-axis/components/dashboard/DashboardSummary.d.ts +6 -1
  19. package/lib/tax-axis/components/dashboard/DashboardSummary.js +19 -10
  20. package/lib/tax-axis/components/dashboard/StrategyDetailPanel.d.ts +1 -1
  21. package/lib/tax-axis/components/dashboard/StrategyDetailPanel.js +122 -95
  22. package/lib/tax-axis/components/dashboard/TaxAxisDashboard.d.ts +58 -4
  23. package/lib/tax-axis/components/dashboard/TaxAxisDashboard.js +375 -56
  24. package/lib/tax-axis/components/documents/DocumentCard.d.ts +6 -3
  25. package/lib/tax-axis/components/documents/DocumentCard.js +72 -15
  26. package/lib/tax-axis/components/documents/DocumentReviewModal.d.ts +3 -2
  27. package/lib/tax-axis/components/documents/DocumentReviewModal.js +109 -295
  28. package/lib/tax-axis/components/documents/DocumentTier.d.ts +5 -4
  29. package/lib/tax-axis/components/documents/DocumentTier.js +2 -2
  30. package/lib/tax-axis/components/documents/TaxAxisDocuments.d.ts +28 -8
  31. package/lib/tax-axis/components/documents/TaxAxisDocuments.js +335 -172
  32. package/lib/tax-axis/components/documents/qbo/QboAvailableReportsModal.d.ts +13 -0
  33. package/lib/tax-axis/components/documents/qbo/QboAvailableReportsModal.js +180 -0
  34. package/lib/tax-axis/components/documents/qbo/QboClientSelectorModal.d.ts +10 -0
  35. package/lib/tax-axis/components/documents/qbo/QboClientSelectorModal.js +155 -0
  36. package/lib/tax-axis/components/documents/qbo/QboConnectBanner.d.ts +9 -0
  37. package/lib/tax-axis/components/documents/qbo/QboConnectBanner.js +55 -0
  38. package/lib/tax-axis/components/documents/qbo/QboDocumentMappingModal.d.ts +10 -0
  39. package/lib/tax-axis/components/documents/qbo/QboDocumentMappingModal.js +202 -0
  40. package/lib/tax-axis/components/documents/qbo/QboImportingModal.d.ts +8 -0
  41. package/lib/tax-axis/components/documents/qbo/QboImportingModal.js +75 -0
  42. package/lib/tax-axis/components/documents/qbo/QboPermissionsModal.d.ts +8 -0
  43. package/lib/tax-axis/components/documents/qbo/QboPermissionsModal.js +126 -0
  44. package/lib/tax-axis/components/documents/qbo/index.d.ts +8 -0
  45. package/lib/tax-axis/components/documents/qbo/index.js +17 -0
  46. package/lib/tax-axis/components/documents/qbo/qboConstants.d.ts +24 -0
  47. package/lib/tax-axis/components/documents/qbo/qboConstants.js +71 -0
  48. package/lib/tax-axis/components/documents/qbo/types.d.ts +43 -0
  49. package/lib/tax-axis/components/documents/qbo/types.js +3 -0
  50. package/lib/tax-axis/components/documents/qbo/useQboFlow.d.ts +19 -0
  51. package/lib/tax-axis/components/documents/qbo/useQboFlow.js +207 -0
  52. package/lib/tax-axis/components/intake/ClientParametersSection.js +11 -30
  53. package/lib/tax-axis/components/intake/CpaIntakeQuestionsSection.js +3 -3
  54. package/lib/tax-axis/components/intake/IntakeCtaCards.d.ts +1 -2
  55. package/lib/tax-axis/components/intake/IntakeCtaCards.js +6 -13
  56. package/lib/tax-axis/components/intake/RefineAnalysisSection.js +7 -7
  57. package/lib/tax-axis/components/intake/StrategyRadar.js +25 -4
  58. package/lib/tax-axis/components/intake/TaxAxisIntake.js +7 -95
  59. package/lib/tax-axis/components/intake/intakeSchema.d.ts +3 -3
  60. package/lib/tax-axis/components/intake/intakeSchema.js +4 -4
  61. package/lib/tax-axis/components/preparerWorkpaper/TaxAxisPreparerWorkpaper.d.ts +23 -4
  62. package/lib/tax-axis/components/preparerWorkpaper/TaxAxisPreparerWorkpaper.js +15 -4
  63. package/lib/tax-axis/components/processing/TaxAxisProcessing.d.ts +2 -1
  64. package/lib/tax-axis/components/processing/TaxAxisProcessing.js +102 -31
  65. package/lib/tax-axis/components/prospectReport/ProspectPrintView.js +0 -2
  66. package/lib/tax-axis/components/prospectReport/ProspectStrategyCard.d.ts +1 -8
  67. package/lib/tax-axis/components/prospectReport/ProspectStrategyCard.js +5 -5
  68. package/lib/tax-axis/components/prospectReport/TaxAxisProspectReport.d.ts +1 -27
  69. package/lib/tax-axis/components/prospectReport/TaxAxisProspectReport.js +25 -43
  70. package/lib/tax-axis/index.d.ts +3 -1
  71. package/lib/tax-axis/index.js +4 -3
  72. package/lib/tax-axis/lib/adapters/useEngineOutput.d.ts +60 -21
  73. package/lib/tax-axis/lib/adapters/useEngineOutput.js +51 -7
  74. package/lib/tax-axis/lib/compute/index.js +6 -0
  75. package/lib/tax-axis/lib/data/documents.d.ts +3 -2
  76. package/lib/tax-axis/lib/data/documents.js +225 -25
  77. package/lib/tax-axis/lib/data/strategies.js +53 -55
  78. package/lib/tax-axis/lib/documentFieldCatalog.d.ts +5 -10
  79. package/lib/tax-axis/lib/documentFieldCatalog.js +193 -8
  80. package/lib/tax-axis/lib/types/index.d.ts +14 -2
  81. package/package.json +1 -1
  82. package/lib/README.md +0 -2
  83. package/lib/package.json +0 -68
@@ -6,8 +6,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.DocumentCard = DocumentCard;
7
7
  const react_1 = __importDefault(require("react"));
8
8
  const TaxAxisBadge_1 = require("../shared/TaxAxisBadge");
9
- // Inline style values per status — mock T hex values for SVG strokes and
10
- // rgba borders that don't have direct Tailwind token equivalents.
11
9
  const STATUS_STYLES = {
12
10
  empty: {
13
11
  iconBg: "#171B44",
@@ -19,44 +17,79 @@ const STATUS_STYLES = {
19
17
  iconBorder: "rgba(251,154,29,0.25)",
20
18
  cardBorder: "rgba(251,154,29,0.25)",
21
19
  },
20
+ parsing: {
21
+ iconBg: "rgba(36,131,132,0.08)",
22
+ iconBorder: "rgba(36,131,132,0.25)",
23
+ cardBorder: "rgba(36,131,132,0.25)",
24
+ },
25
+ failed: {
26
+ iconBg: "rgba(197,48,48,0.08)",
27
+ iconBorder: "rgba(197,48,48,0.25)",
28
+ cardBorder: "rgba(197,48,48,0.25)",
29
+ },
22
30
  valid: {
23
31
  iconBg: "rgba(15,110,86,0.08)",
24
32
  iconBorder: "rgba(15,110,86,0.25)",
25
33
  cardBorder: "rgba(15,110,86,0.25)",
26
34
  },
27
35
  };
28
- function DocumentCard({ doc, tierBorderColor, tierBadgeColor, tierBadgeText, helpOverride, fieldCount, onUpload, onClear, onReview, }) {
29
- var _a;
36
+ function DocumentCard({ doc, tierBorderColor, tierBadgeColor, tierBadgeText, helpOverride, fieldCount, onUpload, onClear, onRemove, onReview, }) {
37
+ var _a, _b, _c;
30
38
  const ss = STATUS_STYLES[doc.status];
31
39
  const leftBorder = doc.status === "valid" ? "rgba(15,110,86,0.6)" : tierBorderColor;
40
+ const fileInputId = `tax-axis-upload-${doc.id}`;
41
+ const reuploadInputId = `tax-axis-reupload-${doc.id}`;
32
42
  return (react_1.default.createElement("div", { className: "bg-tax-axis-surface overflow-hidden", style: {
33
43
  border: `1px solid ${ss.cardBorder}`,
34
44
  borderLeft: `3px solid ${leftBorder}`,
35
45
  borderRadius: "0 10px 10px 0",
36
46
  boxShadow: "0 2px 12px rgba(6,8,33,0.5)",
37
47
  } },
38
- react_1.default.createElement("div", { className: "px-4 py-3 flex gap-3 items-center" },
48
+ react_1.default.createElement("div", { className: "px-4 py-3 flex flex-col sm:flex-row gap-3 items-start sm:items-center" },
39
49
  react_1.default.createElement("div", { className: "w-9 h-9 rounded-lg flex items-center justify-center flex-shrink-0", style: {
40
50
  background: ss.iconBg,
41
51
  border: `1px solid ${ss.iconBorder}`,
42
52
  } }, doc.status === "validating" ? (react_1.default.createElement("div", { className: "w-3.5 h-3.5 rounded-full animate-spin", style: {
43
53
  border: "2px solid transparent",
44
54
  borderTopColor: "#FB9A1D",
45
- } })) : doc.status === "valid" ? (react_1.default.createElement("svg", { width: "14", height: "14", viewBox: "0 0 14 14", fill: "none" },
55
+ } })) : doc.status === "parsing" ? (react_1.default.createElement("div", { className: "w-3.5 h-3.5 rounded-full animate-spin", style: {
56
+ border: "2px solid transparent",
57
+ borderTopColor: "#248384",
58
+ } })) : doc.status === "failed" ? (react_1.default.createElement("svg", { width: "14", height: "14", viewBox: "0 0 14 14", fill: "none" },
59
+ react_1.default.createElement("path", { d: "M4 4l6 6M10 4L4 10", stroke: "#C53030", strokeWidth: "2", strokeLinecap: "round" }))) : doc.status === "valid" ? (react_1.default.createElement("svg", { width: "14", height: "14", viewBox: "0 0 14 14", fill: "none" },
46
60
  react_1.default.createElement("path", { d: "M2.5 7l3.5 3.5 5.5-6", stroke: "#0F6E56", strokeWidth: "2", strokeLinecap: "round" }))) : (react_1.default.createElement("svg", { width: "14", height: "14", viewBox: "0 0 14 14", fill: "none" },
47
61
  react_1.default.createElement("circle", { cx: "7", cy: "7", r: "5", stroke: "#9498B8", strokeWidth: "1.5", strokeDasharray: "3 3" })))),
48
62
  react_1.default.createElement("div", { className: "flex-1 min-w-0" },
49
63
  react_1.default.createElement("div", { className: "flex items-center gap-1.5" },
50
64
  react_1.default.createElement("span", { className: "text-[13px] font-medium text-white font-tax-axis-body" }, doc.name),
51
- doc.status === "empty" && (react_1.default.createElement(TaxAxisBadge_1.TaxAxisBadge, { color: tierBadgeColor, size: "xs" }, tierBadgeText))),
65
+ doc.status === "empty" && (react_1.default.createElement(TaxAxisBadge_1.TaxAxisBadge, { color: tierBadgeColor, size: "xs" }, tierBadgeText)),
66
+ doc.status === "failed" && (react_1.default.createElement(TaxAxisBadge_1.TaxAxisBadge, { color: "red", size: "xs" }, "FAILED")),
67
+ doc.status === "valid" && doc.qboSource && (react_1.default.createElement(react_1.default.Fragment, null,
68
+ react_1.default.createElement("span", { style: {
69
+ fontSize: 9,
70
+ fontWeight: 700,
71
+ letterSpacing: "0.05em",
72
+ padding: "1px 6px",
73
+ borderRadius: 3,
74
+ background: "rgba(44,160,28,0.1)",
75
+ border: "1px solid rgba(44,160,28,0.2)",
76
+ color: "#2CA01C",
77
+ } }, "QUICKBOOKS"),
78
+ react_1.default.createElement("span", { style: {
79
+ fontSize: 9,
80
+ fontWeight: 600,
81
+ color: "#2CA01C",
82
+ } }, "Synced")))),
52
83
  react_1.default.createElement("div", { className: "text-[11px] text-tax-axis-text-3 font-tax-axis-body mt-0.5" }, doc.status === "valid" && doc.fileName
53
84
  ? `${doc.fileName}${fieldCount ? ` \u00b7 ${fieldCount} fields extracted` : ""}`
54
- : ((_a = doc.fileName) !== null && _a !== void 0 ? _a : (helpOverride !== null && helpOverride !== void 0 ? helpOverride : doc.help)))),
55
- react_1.default.createElement("div", { className: "flex items-center gap-2 flex-shrink-0" },
85
+ : doc.status === "failed" && doc.parseError
86
+ ? doc.parseError
87
+ : ((_a = doc.fileName) !== null && _a !== void 0 ? _a : (helpOverride !== null && helpOverride !== void 0 ? helpOverride : doc.help)))),
88
+ react_1.default.createElement("div", { className: "flex items-center gap-2 flex-shrink-0 w-full sm:w-auto" },
56
89
  doc.status === "valid" && (react_1.default.createElement(react_1.default.Fragment, null,
57
90
  react_1.default.createElement("svg", { width: "14", height: "14", viewBox: "0 0 14 14", fill: "none" },
58
91
  react_1.default.createElement("path", { d: "M2.5 7l3.5 3.5 5.5-6", stroke: "#0F6E56", strokeWidth: "2", strokeLinecap: "round" })),
59
- react_1.default.createElement("button", { onClick: onReview, className: "rounded-md px-3 py-1 text-[11px] font-semibold font-tax-axis-mono cursor-pointer flex items-center gap-1.5", style: {
92
+ onReview && (react_1.default.createElement("button", { onClick: onReview, className: "rounded-md px-3 py-1 text-[11px] font-semibold font-tax-axis-mono cursor-pointer flex items-center gap-1.5", style: {
60
93
  background: "rgba(99,102,241,0.12)",
61
94
  border: "1px solid rgba(99,102,241,0.30)",
62
95
  color: "#a5b4fc",
@@ -64,10 +97,34 @@ function DocumentCard({ doc, tierBorderColor, tierBadgeColor, tierBadgeText, hel
64
97
  react_1.default.createElement("svg", { width: "12", height: "12", viewBox: "0 0 12 12", fill: "none" },
65
98
  react_1.default.createElement("rect", { x: "2", y: "1.5", width: "8", height: "9", rx: "1.5", stroke: "#a5b4fc", strokeWidth: "1.2" }),
66
99
  react_1.default.createElement("path", { d: "M4 4.5h4M4 6.5h4M4 8.5h2", stroke: "#a5b4fc", strokeWidth: "0.9", strokeLinecap: "round" })),
67
- "Review"),
100
+ "Review")),
68
101
  react_1.default.createElement("button", { onClick: onClear, className: "bg-transparent border-none p-1 text-tax-axis-text-4 text-sm cursor-pointer" }, "\u00D7"))),
69
- doc.status === "empty" && (react_1.default.createElement("button", { onClick: onUpload, className: "rounded-md px-3.5 py-1.5 text-[11px] font-semibold text-tax-axis-teal-light font-tax-axis-mono cursor-pointer", style: {
70
- background: "rgba(36,131,132,0.10)",
71
- border: "1px solid rgba(36,131,132,0.2)",
72
- } }, "Upload"))))));
102
+ (doc.status === "parsing" || doc.status === "validating") && (react_1.default.createElement("span", { className: "text-[10px] font-semibold font-tax-axis-mono", style: { color: doc.status === "parsing" ? "#248384" : "#FB9A1D" } }, doc.status === "parsing" ? "Parsing…" : "Uploading…")),
103
+ doc.status === "failed" && (react_1.default.createElement(react_1.default.Fragment, null,
104
+ react_1.default.createElement("input", { id: reuploadInputId, type: "file", className: "hidden", accept: (_b = doc.accept) === null || _b === void 0 ? void 0 : _b.join(","), onChange: (event) => {
105
+ var _a;
106
+ const file = (_a = event.target.files) === null || _a === void 0 ? void 0 : _a[0];
107
+ if (file) {
108
+ onUpload(file);
109
+ }
110
+ event.currentTarget.value = "";
111
+ } }),
112
+ react_1.default.createElement("label", { htmlFor: reuploadInputId, className: "rounded-md px-2.5 py-1 text-[10px] font-semibold text-tax-axis-teal-light font-tax-axis-mono cursor-pointer", style: {
113
+ background: "rgba(36,131,132,0.10)",
114
+ border: "1px solid rgba(36,131,132,0.2)",
115
+ } }, "Re-upload"),
116
+ react_1.default.createElement("button", { onClick: onRemove || onClear, className: "bg-transparent border-none p-1 text-tax-axis-text-4 text-sm cursor-pointer", title: "Remove document" }, "\u00D7"))),
117
+ doc.status === "empty" && (react_1.default.createElement(react_1.default.Fragment, null,
118
+ react_1.default.createElement("input", { id: fileInputId, type: "file", className: "hidden", accept: (_c = doc.accept) === null || _c === void 0 ? void 0 : _c.join(","), onChange: (event) => {
119
+ var _a;
120
+ const file = (_a = event.target.files) === null || _a === void 0 ? void 0 : _a[0];
121
+ if (file) {
122
+ onUpload(file);
123
+ }
124
+ event.currentTarget.value = "";
125
+ } }),
126
+ react_1.default.createElement("label", { htmlFor: fileInputId, className: "rounded-md px-3.5 py-1.5 text-[11px] font-semibold text-tax-axis-teal-light font-tax-axis-mono cursor-pointer", style: {
127
+ background: "rgba(36,131,132,0.10)",
128
+ border: "1px solid rgba(36,131,132,0.2)",
129
+ } }, "Upload")))))));
73
130
  }
@@ -6,7 +6,8 @@ export interface DocumentReviewModalProps {
6
6
  documentName: string;
7
7
  fileName: string;
8
8
  jobId: string;
9
- onClose: () => void;
10
9
  parsedData?: Record<string, unknown> | null;
10
+ onSaveReviewedData?: (fields: Record<string, string>) => Promise<void>;
11
+ onClose: () => void;
11
12
  }
12
- export declare function DocumentReviewModal({ documentId, documentName, fileName, jobId: _jobId, onClose, parsedData, }: DocumentReviewModalProps): React.JSX.Element;
13
+ export declare function DocumentReviewModal({ documentId, documentName, fileName, jobId: _jobId, parsedData, onSaveReviewedData, onClose, }: DocumentReviewModalProps): React.JSX.Element;