@paro.io/expert-shared-components 1.14.65 → 1.14.67
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/lib/components/DocumentCenter/MultiFileUploadSection.js +220 -121
- package/lib/components/TaxAxis/TaxAxisApi.d.ts +0 -1
- package/lib/components/TaxAxis/TaxAxisShell.js +5 -80
- package/lib/components/shared/UploadClient.d.ts +2 -1
- package/lib/components/shared/UploadClient.js +6 -2
- package/lib/index.d.ts +1 -13
- package/lib/index.js +1 -27
- package/lib/tax-axis/components/clientReport/ExecutiveSummary.d.ts +4 -1
- package/lib/tax-axis/components/clientReport/ExecutiveSummary.js +10 -6
- package/lib/tax-axis/components/clientReport/Methodology.js +2 -2
- package/lib/tax-axis/components/clientReport/RecommendedStrategies.d.ts +6 -1
- package/lib/tax-axis/components/clientReport/RecommendedStrategies.js +26 -24
- package/lib/tax-axis/components/clientReport/StrategyCard.d.ts +1 -1
- package/lib/tax-axis/components/clientReport/StrategyCard.js +39 -23
- package/lib/tax-axis/components/clientReport/TaxAxisClientReport.d.ts +5 -2
- package/lib/tax-axis/components/clientReport/TaxAxisClientReport.js +9 -7
- package/lib/tax-axis/components/dashboard/DashboardActions.js +6 -5
- package/lib/tax-axis/components/dashboard/DashboardSummary.d.ts +6 -1
- package/lib/tax-axis/components/dashboard/DashboardSummary.js +19 -10
- package/lib/tax-axis/components/dashboard/StrategyDetailPanel.d.ts +1 -1
- package/lib/tax-axis/components/dashboard/StrategyDetailPanel.js +122 -95
- package/lib/tax-axis/components/dashboard/TaxAxisDashboard.d.ts +58 -4
- package/lib/tax-axis/components/dashboard/TaxAxisDashboard.js +375 -56
- package/lib/tax-axis/components/documents/DocumentCard.d.ts +6 -3
- package/lib/tax-axis/components/documents/DocumentCard.js +72 -15
- package/lib/tax-axis/components/documents/DocumentReviewModal.d.ts +3 -1
- package/lib/tax-axis/components/documents/DocumentReviewModal.js +113 -263
- package/lib/tax-axis/components/documents/DocumentTier.d.ts +5 -4
- package/lib/tax-axis/components/documents/DocumentTier.js +2 -2
- package/lib/tax-axis/components/documents/TaxAxisDocuments.d.ts +28 -8
- package/lib/tax-axis/components/documents/TaxAxisDocuments.js +340 -156
- package/lib/tax-axis/components/documents/qbo/QboAvailableReportsModal.d.ts +13 -0
- package/lib/tax-axis/components/documents/qbo/QboAvailableReportsModal.js +180 -0
- package/lib/tax-axis/components/documents/qbo/QboClientSelectorModal.d.ts +10 -0
- package/lib/tax-axis/components/documents/qbo/QboClientSelectorModal.js +155 -0
- package/lib/tax-axis/components/documents/qbo/QboConnectBanner.d.ts +9 -0
- package/lib/tax-axis/components/documents/qbo/QboConnectBanner.js +55 -0
- package/lib/tax-axis/components/documents/qbo/QboDocumentMappingModal.d.ts +10 -0
- package/lib/tax-axis/components/documents/qbo/QboDocumentMappingModal.js +202 -0
- package/lib/tax-axis/components/documents/qbo/QboImportingModal.d.ts +8 -0
- package/lib/tax-axis/components/documents/qbo/QboImportingModal.js +75 -0
- package/lib/tax-axis/components/documents/qbo/QboPermissionsModal.d.ts +8 -0
- package/lib/tax-axis/components/documents/qbo/QboPermissionsModal.js +126 -0
- package/lib/tax-axis/components/documents/qbo/index.d.ts +8 -0
- package/lib/tax-axis/components/documents/qbo/index.js +17 -0
- package/lib/tax-axis/components/documents/qbo/qboConstants.d.ts +24 -0
- package/lib/tax-axis/components/documents/qbo/qboConstants.js +71 -0
- package/lib/tax-axis/components/documents/qbo/types.d.ts +43 -0
- package/lib/tax-axis/components/documents/qbo/types.js +3 -0
- package/lib/tax-axis/components/documents/qbo/useQboFlow.d.ts +19 -0
- package/lib/tax-axis/components/documents/qbo/useQboFlow.js +207 -0
- package/lib/tax-axis/components/intake/ClientParametersSection.js +14 -30
- package/lib/tax-axis/components/intake/CpaIntakeQuestionsSection.js +3 -3
- package/lib/tax-axis/components/intake/IntakeCtaCards.d.ts +1 -2
- package/lib/tax-axis/components/intake/IntakeCtaCards.js +6 -13
- package/lib/tax-axis/components/intake/RefineAnalysisSection.js +7 -7
- package/lib/tax-axis/components/intake/TaxAxisIntake.js +7 -95
- package/lib/tax-axis/components/intake/intakeSchema.d.ts +0 -3
- package/lib/tax-axis/components/intake/intakeSchema.js +2 -4
- package/lib/tax-axis/components/preparerWorkpaper/TaxAxisPreparerWorkpaper.d.ts +23 -4
- package/lib/tax-axis/components/preparerWorkpaper/TaxAxisPreparerWorkpaper.js +15 -4
- package/lib/tax-axis/components/processing/TaxAxisProcessing.d.ts +2 -1
- package/lib/tax-axis/components/processing/TaxAxisProcessing.js +102 -31
- package/lib/tax-axis/components/prospectReport/ProspectPrintView.js +0 -2
- package/lib/tax-axis/components/prospectReport/ProspectStrategyCard.d.ts +1 -8
- package/lib/tax-axis/components/prospectReport/ProspectStrategyCard.js +5 -5
- package/lib/tax-axis/components/prospectReport/TaxAxisProspectReport.d.ts +1 -27
- package/lib/tax-axis/components/prospectReport/TaxAxisProspectReport.js +25 -43
- package/lib/tax-axis/index.d.ts +3 -1
- package/lib/tax-axis/index.js +4 -3
- package/lib/tax-axis/lib/adapters/useEngineOutput.d.ts +138 -13
- package/lib/tax-axis/lib/adapters/useEngineOutput.js +156 -7
- package/lib/tax-axis/lib/data/documents.d.ts +3 -2
- package/lib/tax-axis/lib/data/documents.js +225 -25
- package/lib/tax-axis/lib/data/strategies.js +9 -9
- package/lib/tax-axis/lib/documentFieldCatalog.d.ts +7 -12
- package/lib/tax-axis/lib/documentFieldCatalog.js +805 -8
- package/lib/tax-axis/lib/types/index.d.ts +13 -1
- package/package.json +1 -1
- package/lib/README.md +0 -2
- package/lib/package.json +0 -68
|
@@ -49,8 +49,8 @@ const Chevron = () => (react_1.default.createElement("svg", { className: "absolu
|
|
|
49
49
|
react_1.default.createElement("path", { d: "M3 4.5l3 3 3-3", stroke: "#E6E8F5", strokeWidth: "1.5", strokeLinecap: "round" })));
|
|
50
50
|
/* ═══ Option lists (spec-canonical) ═══ */
|
|
51
51
|
const ENTITY_OPTIONS = [
|
|
52
|
-
"S-Corporation",
|
|
53
52
|
"C-Corporation",
|
|
53
|
+
"S-Corporation",
|
|
54
54
|
"LLC",
|
|
55
55
|
"Partnership",
|
|
56
56
|
"Sole Proprietor",
|
|
@@ -67,23 +67,15 @@ const INDUSTRY_OPTIONS = [
|
|
|
67
67
|
"Other",
|
|
68
68
|
];
|
|
69
69
|
const PERIOD_OPTIONS = ["Full Year", "YTD"];
|
|
70
|
-
|
|
71
|
-
const CURRENT_YEAR = new Date().getFullYear();
|
|
72
|
-
function getYearOptions(period) {
|
|
73
|
-
if (period === "YTD") {
|
|
74
|
-
return [String(CURRENT_YEAR)];
|
|
75
|
-
}
|
|
76
|
-
// Full Year — only completed years
|
|
77
|
-
return [
|
|
78
|
-
String(CURRENT_YEAR - 1),
|
|
79
|
-
String(CURRENT_YEAR - 2),
|
|
80
|
-
String(CURRENT_YEAR - 3),
|
|
81
|
-
];
|
|
82
|
-
}
|
|
70
|
+
const YEAR_OPTIONS = ["2024", "2025", "2026"];
|
|
83
71
|
function ClientParametersSection({ userContext = "expert", }) {
|
|
84
|
-
const { control,
|
|
85
|
-
|
|
86
|
-
|
|
72
|
+
const { control, formState: { errors }, } = (0, react_hook_form_1.useFormContext)();
|
|
73
|
+
// TECH DEBT (post-BDO): Analysis Period dropdown is local useState only —
|
|
74
|
+
// value does not persist to form state because ClientProfile has no `period`
|
|
75
|
+
// field. computeAllStrategies does not read this value. Spec defect.
|
|
76
|
+
// Resolve post-BDO by either adding `period` to ClientProfile or removing
|
|
77
|
+
// the field entirely.
|
|
78
|
+
const [analysisPeriod, setAnalysisPeriod] = (0, react_1.useState)("Full Year");
|
|
87
79
|
const [expanded, setExpanded] = (0, react_1.useState)(true);
|
|
88
80
|
return (react_1.default.createElement(TaxAxisCard_1.TaxAxisCard, null,
|
|
89
81
|
react_1.default.createElement("div", { onClick: () => setExpanded((prev) => !prev), className: "flex items-center justify-between cursor-pointer", style: { marginBottom: expanded ? 14 : 0 } },
|
|
@@ -91,7 +83,7 @@ function ClientParametersSection({ userContext = "expert", }) {
|
|
|
91
83
|
react_1.default.createElement("svg", { className: `transition-transform ${expanded ? "rotate-180" : "rotate-0"}`, width: "10", height: "10", viewBox: "0 0 12 12", fill: "none" },
|
|
92
84
|
react_1.default.createElement("path", { d: "M3 4.5l3 3 3-3", stroke: "#9498B8", strokeWidth: "1.5", strokeLinecap: "round" }))),
|
|
93
85
|
expanded && (react_1.default.createElement(react_1.default.Fragment, null,
|
|
94
|
-
react_1.default.createElement("div", { className: "grid grid-cols-2 gap-3" },
|
|
86
|
+
react_1.default.createElement("div", { className: "grid grid-cols-1 sm:grid-cols-2 gap-3" },
|
|
95
87
|
react_1.default.createElement("div", null,
|
|
96
88
|
react_1.default.createElement("label", { className: labelCls }, "Business Name"),
|
|
97
89
|
react_1.default.createElement(react_hook_form_1.Controller, { name: "bizName", control: control, render: ({ field }) => (react_1.default.createElement("input", Object.assign({}, field, { placeholder: "Acme Consulting LLC", className: inputCls }))) }),
|
|
@@ -114,17 +106,9 @@ function ClientParametersSection({ userContext = "expert", }) {
|
|
|
114
106
|
errors.industry && react_1.default.createElement("div", { className: errCls }, errors.industry.message)),
|
|
115
107
|
react_1.default.createElement("div", null,
|
|
116
108
|
react_1.default.createElement("label", { className: labelCls }, "Analysis Period"),
|
|
117
|
-
react_1.default.createElement(
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
// When switching period, auto-fix year to valid option
|
|
121
|
-
const nextOptions = getYearOptions(e.target.value);
|
|
122
|
-
const currentYear = watch("year");
|
|
123
|
-
if (!nextOptions.includes(currentYear || "")) {
|
|
124
|
-
setValue("year", nextOptions[0]);
|
|
125
|
-
}
|
|
126
|
-
}, className: selectCls }), PERIOD_OPTIONS.map(o => (react_1.default.createElement("option", { key: o, value: o, className: "bg-tax-axis-surface-2" }, o)))),
|
|
127
|
-
react_1.default.createElement(Chevron, null))) })),
|
|
109
|
+
react_1.default.createElement("div", { className: "relative" },
|
|
110
|
+
react_1.default.createElement("select", { value: analysisPeriod, onChange: e => setAnalysisPeriod(e.target.value), className: selectCls }, PERIOD_OPTIONS.map(o => (react_1.default.createElement("option", { key: o, value: o, className: "bg-tax-axis-surface-2" }, o)))),
|
|
111
|
+
react_1.default.createElement(Chevron, null))),
|
|
128
112
|
react_1.default.createElement("div", null,
|
|
129
113
|
react_1.default.createElement("label", { className: labelCls }, "Annual Revenue"),
|
|
130
114
|
react_1.default.createElement(react_hook_form_1.Controller, { name: "revenue", control: control, render: ({ field }) => (react_1.default.createElement("div", { className: "relative" },
|
|
@@ -142,7 +126,7 @@ function ClientParametersSection({ userContext = "expert", }) {
|
|
|
142
126
|
react_1.default.createElement("div", null,
|
|
143
127
|
react_1.default.createElement("label", { className: labelCls }, "Tax Year"),
|
|
144
128
|
react_1.default.createElement(react_hook_form_1.Controller, { name: "year", control: control, render: ({ field }) => (react_1.default.createElement("div", { className: "relative" },
|
|
145
|
-
react_1.default.createElement("select", Object.assign({}, field, { className: selectCls
|
|
129
|
+
react_1.default.createElement("select", Object.assign({}, field, { className: selectCls }), YEAR_OPTIONS.map(o => (react_1.default.createElement("option", { key: o, value: o, className: "bg-tax-axis-surface-2" }, o)))),
|
|
146
130
|
react_1.default.createElement(Chevron, null))) }),
|
|
147
131
|
errors.year && react_1.default.createElement("div", { className: errCls }, errors.year.message))),
|
|
148
132
|
react_1.default.createElement("div", { className: "border-t border-tax-axis-border pt-3 mt-3.5" },
|
|
@@ -50,7 +50,7 @@ function CpaIntakeQuestionsSection({ userContext = "expert", }) {
|
|
|
50
50
|
react_1.default.createElement("svg", { className: `transition-transform ${expanded ? "rotate-180" : "rotate-0"}`, width: "10", height: "10", viewBox: "0 0 12 12", fill: "none" },
|
|
51
51
|
react_1.default.createElement("path", { d: "M3 4.5l3 3 3-3", stroke: "#9498B8", strokeWidth: "1.5", strokeLinecap: "round" }))),
|
|
52
52
|
expanded && (react_1.default.createElement("div", null,
|
|
53
|
-
react_1.default.createElement("div", { className: "grid grid-cols-2 gap-3 mb-2.5" },
|
|
53
|
+
react_1.default.createElement("div", { className: "grid grid-cols-1 sm:grid-cols-2 gap-3 mb-2.5" },
|
|
54
54
|
react_1.default.createElement("div", null,
|
|
55
55
|
react_1.default.createElement("label", { className: labelCls }, "Overtime Premium Paid"),
|
|
56
56
|
react_1.default.createElement(react_hook_form_1.Controller, { name: "overtimePremium", control: control, render: ({ field }) => (react_1.default.createElement("div", { className: "relative" },
|
|
@@ -63,7 +63,7 @@ function CpaIntakeQuestionsSection({ userContext = "expert", }) {
|
|
|
63
63
|
react_1.default.createElement("input", Object.assign({}, field, { placeholder: "0", className: `${inputCls} pr-6` })),
|
|
64
64
|
react_1.default.createElement("span", { className: "absolute right-2.5 top-1/2 -translate-y-1/2 text-tax-axis-text-3 text-[13px]" }, "%"))) }),
|
|
65
65
|
industry !== "Restaurant / Hospitality" && (react_1.default.createElement("div", { className: helperCls }, "Typically relevant for Restaurant / Hospitality")))),
|
|
66
|
-
react_1.default.createElement("div", { className: "grid grid-cols-2 gap-3 mb-2.5" },
|
|
66
|
+
react_1.default.createElement("div", { className: "grid grid-cols-1 sm:grid-cols-2 gap-3 mb-2.5" },
|
|
67
67
|
react_1.default.createElement("div", null,
|
|
68
68
|
react_1.default.createElement("label", { className: labelCls }, "Retirement Plan Contributions"),
|
|
69
69
|
react_1.default.createElement(react_hook_form_1.Controller, { name: "retirementContributions", control: control, render: ({ field }) => (react_1.default.createElement("div", { className: "relative" },
|
|
@@ -79,7 +79,7 @@ function CpaIntakeQuestionsSection({ userContext = "expert", }) {
|
|
|
79
79
|
react_1.default.createElement(react_hook_form_1.Controller, { name: "hsaContributions", control: control, render: ({ field }) => (react_1.default.createElement("div", { className: "relative" },
|
|
80
80
|
react_1.default.createElement("span", { className: "absolute left-2.5 top-1/2 -translate-y-1/2 text-tax-axis-text-3 text-[13px]" }, "$"),
|
|
81
81
|
react_1.default.createElement("input", Object.assign({}, field, { placeholder: "0", className: `${inputCls} pl-6` })))) }))))),
|
|
82
|
-
react_1.default.createElement("div", { className: "grid grid-cols-2 gap-3 mb-2.5" },
|
|
82
|
+
react_1.default.createElement("div", { className: "grid grid-cols-1 sm:grid-cols-2 gap-3 mb-2.5" },
|
|
83
83
|
react_1.default.createElement("div", null,
|
|
84
84
|
react_1.default.createElement("label", { className: labelCls }, "WOTC Qualifying Hires"),
|
|
85
85
|
react_1.default.createElement(react_hook_form_1.Controller, { name: "wotcHires", control: control, render: ({ field }) => (react_1.default.createElement("div", { className: "relative" },
|
|
@@ -4,7 +4,6 @@ interface IntakeCtaCardsProps {
|
|
|
4
4
|
onProspect: () => void;
|
|
5
5
|
onFullAnalysis: () => void;
|
|
6
6
|
userContext?: UserContext;
|
|
7
|
-
missingFields?: string[];
|
|
8
7
|
}
|
|
9
|
-
export declare function IntakeCtaCards({ onProspect, onFullAnalysis, userContext,
|
|
8
|
+
export declare function IntakeCtaCards({ onProspect, onFullAnalysis, userContext, }: IntakeCtaCardsProps): React.JSX.Element;
|
|
10
9
|
export {};
|
|
@@ -7,19 +7,15 @@ exports.IntakeCtaCards = IntakeCtaCards;
|
|
|
7
7
|
const react_1 = __importDefault(require("react"));
|
|
8
8
|
const TaxAxisButton_1 = require("../shared/TaxAxisButton");
|
|
9
9
|
const TaxAxisBadge_1 = require("../shared/TaxAxisBadge");
|
|
10
|
-
function IntakeCtaCards({ onProspect, onFullAnalysis, userContext = "expert",
|
|
11
|
-
|
|
12
|
-
return (react_1.default.createElement("div", { className: "grid grid-cols-2 gap-3", style: { position: "sticky", bottom: 0, zIndex: 10, paddingTop: 12, paddingBottom: 4, background: "linear-gradient(to bottom, transparent 0%, #060821 16%)" } },
|
|
10
|
+
function IntakeCtaCards({ onProspect, onFullAnalysis, userContext = "expert", }) {
|
|
11
|
+
return (react_1.default.createElement("div", { className: "grid grid-cols-1 sm:grid-cols-2 gap-3" },
|
|
13
12
|
react_1.default.createElement("div", { className: "bg-tax-axis-surface border border-tax-axis-border rounded-xl p-4 min-h-[140px] flex flex-col transition-all" },
|
|
14
13
|
react_1.default.createElement("div", { className: "text-[11px] font-bold text-tax-axis-orange uppercase tracking-widest mb-2.5 font-tax-axis-body" }, "Prospect Report"),
|
|
15
14
|
react_1.default.createElement("div", { className: "text-xs text-tax-axis-text-3 font-tax-axis-body mb-3" }, "Top 3 strategies \u00B7 Savings ranges \u00B7 ~2 min \u00B7 No docs"),
|
|
16
15
|
react_1.default.createElement("div", { className: "flex-1" }),
|
|
17
|
-
react_1.default.createElement(TaxAxisButton_1.TaxAxisButton, { variant: "orange", onClick: onProspect, className: "w-full text-xs"
|
|
16
|
+
react_1.default.createElement(TaxAxisButton_1.TaxAxisButton, { variant: "orange", onClick: onProspect, className: "w-full text-xs" }, userContext === "cpa-firm-client"
|
|
18
17
|
? "Generate My Savings Report"
|
|
19
|
-
: "Generate Prospect Report"),
|
|
20
|
-
disabled && (react_1.default.createElement("div", { className: "text-[10px] text-tax-axis-text-4 mt-1.5 font-tax-axis-body leading-tight" },
|
|
21
|
-
"Missing: ",
|
|
22
|
-
missingFields.join(", ")))),
|
|
18
|
+
: "Generate Prospect Report")),
|
|
23
19
|
react_1.default.createElement("div", { className: "bg-tax-axis-surface border border-tax-axis-teal rounded-xl p-4 min-h-[140px] flex flex-col transition-all", style: {
|
|
24
20
|
background: "radial-gradient(ellipse at 50% 0%,rgba(36,131,132,0.06) 0%,transparent 70%) #0F1330",
|
|
25
21
|
boxShadow: "0 0 30px rgba(36,131,132,0.15)",
|
|
@@ -28,10 +24,7 @@ function IntakeCtaCards({ onProspect, onFullAnalysis, userContext = "expert", mi
|
|
|
28
24
|
react_1.default.createElement("div", { className: "text-[11px] font-bold text-tax-axis-teal uppercase tracking-widest mt-2 mb-2.5 font-tax-axis-body" }, "Full Analysis"),
|
|
29
25
|
react_1.default.createElement("div", { className: "text-xs text-tax-axis-text-3 font-tax-axis-body mb-3" }, "All 25 strategies \u00B7 Real dollar savings \u00B7 ~15 min"),
|
|
30
26
|
react_1.default.createElement("div", { className: "flex-1" }),
|
|
31
|
-
react_1.default.createElement(TaxAxisButton_1.TaxAxisButton, { variant: "primary", onClick: onFullAnalysis, className: "w-full text-xs"
|
|
27
|
+
react_1.default.createElement(TaxAxisButton_1.TaxAxisButton, { variant: "primary", onClick: onFullAnalysis, className: "w-full text-xs" }, userContext === "cpa-firm-client"
|
|
32
28
|
? "Run Full Analysis on My Business"
|
|
33
|
-
: "Start Full Analysis")
|
|
34
|
-
disabled && (react_1.default.createElement("div", { className: "text-[10px] text-tax-axis-text-4 mt-1.5 font-tax-axis-body leading-tight" },
|
|
35
|
-
"Missing: ",
|
|
36
|
-
missingFields.join(", "))))));
|
|
29
|
+
: "Start Full Analysis"))));
|
|
37
30
|
}
|
|
@@ -70,7 +70,7 @@ function RefineAnalysisSection({ userContext: _userContext, }) {
|
|
|
70
70
|
expanded && (react_1.default.createElement("div", null,
|
|
71
71
|
react_1.default.createElement("div", { className: "text-[11px] text-tax-axis-text-4 italic mb-3" }, "These fields improve accuracy. Many will be auto-populated when documents are uploaded."),
|
|
72
72
|
react_1.default.createElement("div", { className: subHeaderCls, style: { marginTop: 0 } }, "Client Profile"),
|
|
73
|
-
react_1.default.createElement("div", { className: "grid grid-cols-2 gap-3 mb-2.5" },
|
|
73
|
+
react_1.default.createElement("div", { className: "grid grid-cols-1 sm:grid-cols-2 gap-3 mb-2.5" },
|
|
74
74
|
react_1.default.createElement("div", null,
|
|
75
75
|
react_1.default.createElement("label", { className: labelCls }, "Filing Status"),
|
|
76
76
|
react_1.default.createElement(react_hook_form_1.Controller, { name: "filingStatus", control: control, render: ({ field }) => (react_1.default.createElement("div", { className: "relative" },
|
|
@@ -79,7 +79,7 @@ function RefineAnalysisSection({ userContext: _userContext, }) {
|
|
|
79
79
|
react_1.default.createElement("div", null,
|
|
80
80
|
react_1.default.createElement("label", { className: labelCls }, "Age"),
|
|
81
81
|
react_1.default.createElement(react_hook_form_1.Controller, { name: "age", control: control, render: ({ field }) => (react_1.default.createElement("input", Object.assign({}, field, { type: "number", placeholder: "45", className: inputCls }))) }))),
|
|
82
|
-
react_1.default.createElement("div", { className: "grid grid-cols-2 gap-3 mb-2.5" },
|
|
82
|
+
react_1.default.createElement("div", { className: "grid grid-cols-1 sm:grid-cols-2 gap-3 mb-2.5" },
|
|
83
83
|
react_1.default.createElement("div", null,
|
|
84
84
|
react_1.default.createElement("label", { className: labelCls }, "SSTB"),
|
|
85
85
|
react_1.default.createElement(react_hook_form_1.Controller, { name: "sstb", control: control, render: ({ field }) => (react_1.default.createElement("div", { className: "relative" },
|
|
@@ -91,7 +91,7 @@ function RefineAnalysisSection({ userContext: _userContext, }) {
|
|
|
91
91
|
react_1.default.createElement(react_hook_form_1.Controller, { name: "ownsRealEstate", control: control, render: ({ field }) => (react_1.default.createElement("div", { className: "relative" },
|
|
92
92
|
react_1.default.createElement("select", Object.assign({}, field, { className: selectCls }), REAL_ESTATE_OPTIONS.map(o => (react_1.default.createElement("option", { key: o, value: o, className: "bg-tax-axis-surface-2" }, o)))),
|
|
93
93
|
react_1.default.createElement(Chevron, null))) }))),
|
|
94
|
-
react_1.default.createElement("div", { className: "grid grid-cols-2 gap-3 mb-2.5" },
|
|
94
|
+
react_1.default.createElement("div", { className: "grid grid-cols-1 sm:grid-cols-2 gap-3 mb-2.5" },
|
|
95
95
|
react_1.default.createElement("div", null,
|
|
96
96
|
react_1.default.createElement("label", { className: labelCls }, "Itemizes Deductions"),
|
|
97
97
|
react_1.default.createElement(react_hook_form_1.Controller, { name: "itemizesDeductions", control: control, render: ({ field }) => (react_1.default.createElement("div", { className: "relative" },
|
|
@@ -103,7 +103,7 @@ function RefineAnalysisSection({ userContext: _userContext, }) {
|
|
|
103
103
|
react_1.default.createElement("select", Object.assign({}, field, { className: selectCls }), SINGLE_OWNER_OPTIONS.map(o => (react_1.default.createElement("option", { key: o, value: o, className: "bg-tax-axis-surface-2" }, o)))),
|
|
104
104
|
react_1.default.createElement(Chevron, null))) }))),
|
|
105
105
|
react_1.default.createElement("div", { className: subHeaderCls }, "Financial Data"),
|
|
106
|
-
react_1.default.createElement("div", { className: "grid grid-cols-2 gap-3 mb-2.5" },
|
|
106
|
+
react_1.default.createElement("div", { className: "grid grid-cols-1 sm:grid-cols-2 gap-3 mb-2.5" },
|
|
107
107
|
react_1.default.createElement("div", null,
|
|
108
108
|
react_1.default.createElement("label", { className: labelCls }, "Net Income"),
|
|
109
109
|
react_1.default.createElement(react_hook_form_1.Controller, { name: "netIncome", control: control, render: ({ field }) => (react_1.default.createElement("div", { className: "relative" },
|
|
@@ -114,7 +114,7 @@ function RefineAnalysisSection({ userContext: _userContext, }) {
|
|
|
114
114
|
react_1.default.createElement(react_hook_form_1.Controller, { name: "equipmentPurchased", control: control, render: ({ field }) => (react_1.default.createElement("div", { className: "relative" },
|
|
115
115
|
react_1.default.createElement("span", { className: "absolute left-2.5 top-1/2 -translate-y-1/2 text-tax-axis-text-3 text-[13px]" }, "$"),
|
|
116
116
|
react_1.default.createElement("input", Object.assign({}, field, { placeholder: "0", className: `${inputCls} pl-6` })))) }))),
|
|
117
|
-
react_1.default.createElement("div", { className: "grid grid-cols-2 gap-3 mb-2.5" },
|
|
117
|
+
react_1.default.createElement("div", { className: "grid grid-cols-1 sm:grid-cols-2 gap-3 mb-2.5" },
|
|
118
118
|
ownsRealEstate !== "No" ? (react_1.default.createElement("div", { className: "transition-opacity" },
|
|
119
119
|
react_1.default.createElement("label", { className: labelCls }, "Real Estate Value"),
|
|
120
120
|
react_1.default.createElement(react_hook_form_1.Controller, { name: "realEstateValue", control: control, render: ({ field }) => (react_1.default.createElement("div", { className: "relative" },
|
|
@@ -126,7 +126,7 @@ function RefineAnalysisSection({ userContext: _userContext, }) {
|
|
|
126
126
|
react_1.default.createElement("span", { className: "absolute left-2.5 top-1/2 -translate-y-1/2 text-tax-axis-text-3 text-[13px]" }, "$"),
|
|
127
127
|
react_1.default.createElement("input", Object.assign({}, field, { placeholder: "0", className: `${inputCls} pl-6` })))) }))),
|
|
128
128
|
react_1.default.createElement("div", { className: subHeaderCls }, "Tax Profile"),
|
|
129
|
-
react_1.default.createElement("div", { className: "grid grid-cols-2 gap-3 mb-2.5" },
|
|
129
|
+
react_1.default.createElement("div", { className: "grid grid-cols-1 sm:grid-cols-2 gap-3 mb-2.5" },
|
|
130
130
|
react_1.default.createElement("div", null,
|
|
131
131
|
react_1.default.createElement("label", { className: labelCls }, "Federal Marginal Rate"),
|
|
132
132
|
react_1.default.createElement(react_hook_form_1.Controller, { name: "federalRate", control: control, render: ({ field }) => (react_1.default.createElement("div", { className: "relative" },
|
|
@@ -137,7 +137,7 @@ function RefineAnalysisSection({ userContext: _userContext, }) {
|
|
|
137
137
|
react_1.default.createElement(react_hook_form_1.Controller, { name: "stateRate", control: control, render: ({ field }) => (react_1.default.createElement("div", { className: "relative" },
|
|
138
138
|
react_1.default.createElement("input", Object.assign({}, field, { placeholder: "4.95", className: `${inputCls} pr-6` })),
|
|
139
139
|
react_1.default.createElement("span", { className: "absolute right-2.5 top-1/2 -translate-y-1/2 text-tax-axis-text-3 text-[13px]" }, "%"))) }))),
|
|
140
|
-
react_1.default.createElement("div", { className: "grid grid-cols-2 gap-3 mb-2.5" },
|
|
140
|
+
react_1.default.createElement("div", { className: "grid grid-cols-1 sm:grid-cols-2 gap-3 mb-2.5" },
|
|
141
141
|
react_1.default.createElement("div", null,
|
|
142
142
|
react_1.default.createElement("label", { className: labelCls }, "Tax Data Years Available"),
|
|
143
143
|
react_1.default.createElement(react_hook_form_1.Controller, { name: "taxDataYears", control: control, render: ({ field }) => (react_1.default.createElement("div", { className: "relative" },
|
|
@@ -1,85 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var
|
|
3
|
-
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
24
4
|
};
|
|
25
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
6
|
exports.TaxAxisIntake = TaxAxisIntake;
|
|
27
|
-
const react_1 =
|
|
7
|
+
const react_1 = __importDefault(require("react"));
|
|
28
8
|
const react_hook_form_1 = require("react-hook-form");
|
|
29
9
|
const yup_1 = require("@hookform/resolvers/yup");
|
|
30
|
-
const compute_1 = require("../../lib/compute");
|
|
31
10
|
const intakeSchema_1 = require("./intakeSchema");
|
|
32
11
|
const ClientParametersSection_1 = require("./ClientParametersSection");
|
|
33
12
|
const RefineAnalysisSection_1 = require("./RefineAnalysisSection");
|
|
34
13
|
const CpaIntakeQuestionsSection_1 = require("./CpaIntakeQuestionsSection");
|
|
35
14
|
const StrategyRadar_1 = require("./StrategyRadar");
|
|
36
15
|
const IntakeCtaCards_1 = require("./IntakeCtaCards");
|
|
37
|
-
const DEMO_PROFILE = {
|
|
38
|
-
bizName: "Meridian Consulting Group, Inc.",
|
|
39
|
-
cpaName: "Sarah Chen, EA",
|
|
40
|
-
entity: "S-Corporation",
|
|
41
|
-
industry: "Professional Services",
|
|
42
|
-
period: "Full Year",
|
|
43
|
-
revenue: "2850000",
|
|
44
|
-
ownerComp: "185000",
|
|
45
|
-
employees: "14",
|
|
46
|
-
year: "2025",
|
|
47
|
-
states: ["IL"],
|
|
48
|
-
filingStatus: "MFJ",
|
|
49
|
-
age: "45",
|
|
50
|
-
sstb: "No",
|
|
51
|
-
ownsRealEstate: "Yes — Commercial",
|
|
52
|
-
itemizesDeductions: "Yes",
|
|
53
|
-
singleOwner: "Yes",
|
|
54
|
-
netIncome: "142000",
|
|
55
|
-
equipmentPurchased: "75000",
|
|
56
|
-
capitalGains: "50000",
|
|
57
|
-
federalRate: "24%",
|
|
58
|
-
stateRate: "4.95",
|
|
59
|
-
taxDataYears: "1 year",
|
|
60
|
-
riskTolerance: "3",
|
|
61
|
-
overtimePremium: "0",
|
|
62
|
-
tipIncomePct: "0",
|
|
63
|
-
retirementContributions: "22500",
|
|
64
|
-
hdhpEnrolled: "Yes",
|
|
65
|
-
hsaContributions: "0",
|
|
66
|
-
wotcHires: "Yes — Form 8850 submitted",
|
|
67
|
-
familyEmployed: "Yes",
|
|
68
|
-
};
|
|
69
|
-
/** Returns a list of human-readable labels for missing required fields. */
|
|
70
|
-
function getMissingFields(p) {
|
|
71
|
-
const missing = [];
|
|
72
|
-
if (!p.entity)
|
|
73
|
-
missing.push("Entity Type");
|
|
74
|
-
if (!p.states || p.states.length === 0)
|
|
75
|
-
missing.push("State");
|
|
76
|
-
if (!p.revenue || (0, compute_1.parseNum)(p.revenue) <= 0)
|
|
77
|
-
missing.push("Revenue");
|
|
78
|
-
const fedStr = String(p.federalRate || "0").replace("%", "");
|
|
79
|
-
if (!parseFloat(fedStr) || parseFloat(fedStr) <= 0)
|
|
80
|
-
missing.push("Federal Rate");
|
|
81
|
-
return missing;
|
|
82
|
-
}
|
|
83
16
|
function TaxAxisIntake({ userContext = "expert", onProspect, onFullAnalysis, initialProfile, }) {
|
|
84
17
|
const methods = (0, react_hook_form_1.useForm)({
|
|
85
18
|
resolver: (0, yup_1.yupResolver)(intakeSchema_1.intakeSchema), // yupResolver generic incompatibility with RHF v7 — cast is intentional
|
|
@@ -87,18 +20,6 @@ function TaxAxisIntake({ userContext = "expert", onProspect, onFullAnalysis, ini
|
|
|
87
20
|
mode: "onChange",
|
|
88
21
|
});
|
|
89
22
|
const profile = methods.watch();
|
|
90
|
-
const missingFields = (0, react_1.useMemo)(() => getMissingFields(profile), [profile]);
|
|
91
|
-
const handleDemoToggle = () => {
|
|
92
|
-
const current = methods.getValues();
|
|
93
|
-
const isDemoFilled = current.bizName === DEMO_PROFILE.bizName;
|
|
94
|
-
if (isDemoFilled) {
|
|
95
|
-
methods.reset(Object.assign({}, intakeSchema_1.intakeDefaultValues));
|
|
96
|
-
}
|
|
97
|
-
else {
|
|
98
|
-
methods.reset(Object.assign(Object.assign({}, intakeSchema_1.intakeDefaultValues), DEMO_PROFILE));
|
|
99
|
-
}
|
|
100
|
-
setTimeout(() => methods.trigger(), 0);
|
|
101
|
-
};
|
|
102
23
|
const handleProspect = () => {
|
|
103
24
|
methods.handleSubmit((valid) => onProspect(valid), () => { })();
|
|
104
25
|
};
|
|
@@ -106,21 +27,12 @@ function TaxAxisIntake({ userContext = "expert", onProspect, onFullAnalysis, ini
|
|
|
106
27
|
methods.handleSubmit((valid) => onFullAnalysis(valid), () => { })();
|
|
107
28
|
};
|
|
108
29
|
return (react_1.default.createElement(react_hook_form_1.FormProvider, Object.assign({}, methods),
|
|
109
|
-
react_1.default.createElement("div", { className: "grid grid-cols-
|
|
30
|
+
react_1.default.createElement("div", { className: "grid grid-cols-1 sm:grid-cols-2 gap-5" },
|
|
110
31
|
react_1.default.createElement("div", { className: "flex flex-col gap-4" },
|
|
111
|
-
react_1.default.createElement(
|
|
112
|
-
var _a;
|
|
113
|
-
if (e.detail === 3) {
|
|
114
|
-
const tag = (_a = e.target) === null || _a === void 0 ? void 0 : _a.tagName;
|
|
115
|
-
if (tag === 'INPUT' || tag === 'TEXTAREA' || tag === 'SELECT')
|
|
116
|
-
return;
|
|
117
|
-
handleDemoToggle();
|
|
118
|
-
}
|
|
119
|
-
} },
|
|
120
|
-
react_1.default.createElement(ClientParametersSection_1.ClientParametersSection, { userContext: userContext })),
|
|
32
|
+
react_1.default.createElement(ClientParametersSection_1.ClientParametersSection, { userContext: userContext }),
|
|
121
33
|
react_1.default.createElement(RefineAnalysisSection_1.RefineAnalysisSection, { userContext: userContext }),
|
|
122
34
|
react_1.default.createElement(CpaIntakeQuestionsSection_1.CpaIntakeQuestionsSection, { userContext: userContext }),
|
|
123
|
-
react_1.default.createElement(IntakeCtaCards_1.IntakeCtaCards, { onProspect: handleProspect, onFullAnalysis: handleFull, userContext: userContext
|
|
124
|
-
react_1.default.createElement("div", { className: "sticky top-5 self-start"
|
|
35
|
+
react_1.default.createElement(IntakeCtaCards_1.IntakeCtaCards, { onProspect: handleProspect, onFullAnalysis: handleFull, userContext: userContext })),
|
|
36
|
+
react_1.default.createElement("div", { className: "hidden sm:block sm:sticky sm:top-5 sm:self-start" },
|
|
125
37
|
react_1.default.createElement(StrategyRadar_1.StrategyRadar, { profile: profile })))));
|
|
126
38
|
}
|
|
@@ -20,7 +20,6 @@ export declare const intakeSchema: Yup.ObjectSchema<import("yup/lib/object").Ass
|
|
|
20
20
|
equipmentPurchased: Yup.StringSchema<string, import("yup/lib/types").AnyObject, string>;
|
|
21
21
|
realEstateValue: Yup.StringSchema<string, import("yup/lib/types").AnyObject, string>;
|
|
22
22
|
capitalGains: Yup.StringSchema<string, import("yup/lib/types").AnyObject, string>;
|
|
23
|
-
period: Yup.StringSchema<string, import("yup/lib/types").AnyObject, string>;
|
|
24
23
|
federalRate: Yup.StringSchema<string, import("yup/lib/types").AnyObject, string>;
|
|
25
24
|
stateRate: Yup.StringSchema<string, import("yup/lib/types").AnyObject, string>;
|
|
26
25
|
taxDataYears: Yup.StringSchema<string, import("yup/lib/types").AnyObject, string>;
|
|
@@ -52,7 +51,6 @@ export declare const intakeSchema: Yup.ObjectSchema<import("yup/lib/object").Ass
|
|
|
52
51
|
equipmentPurchased: Yup.StringSchema<string, import("yup/lib/types").AnyObject, string>;
|
|
53
52
|
realEstateValue: Yup.StringSchema<string, import("yup/lib/types").AnyObject, string>;
|
|
54
53
|
capitalGains: Yup.StringSchema<string, import("yup/lib/types").AnyObject, string>;
|
|
55
|
-
period: Yup.StringSchema<string, import("yup/lib/types").AnyObject, string>;
|
|
56
54
|
federalRate: Yup.StringSchema<string, import("yup/lib/types").AnyObject, string>;
|
|
57
55
|
stateRate: Yup.StringSchema<string, import("yup/lib/types").AnyObject, string>;
|
|
58
56
|
taxDataYears: Yup.StringSchema<string, import("yup/lib/types").AnyObject, string>;
|
|
@@ -84,7 +82,6 @@ export declare const intakeSchema: Yup.ObjectSchema<import("yup/lib/object").Ass
|
|
|
84
82
|
equipmentPurchased: Yup.StringSchema<string, import("yup/lib/types").AnyObject, string>;
|
|
85
83
|
realEstateValue: Yup.StringSchema<string, import("yup/lib/types").AnyObject, string>;
|
|
86
84
|
capitalGains: Yup.StringSchema<string, import("yup/lib/types").AnyObject, string>;
|
|
87
|
-
period: Yup.StringSchema<string, import("yup/lib/types").AnyObject, string>;
|
|
88
85
|
federalRate: Yup.StringSchema<string, import("yup/lib/types").AnyObject, string>;
|
|
89
86
|
stateRate: Yup.StringSchema<string, import("yup/lib/types").AnyObject, string>;
|
|
90
87
|
taxDataYears: Yup.StringSchema<string, import("yup/lib/types").AnyObject, string>;
|
|
@@ -45,7 +45,6 @@ exports.intakeSchema = Yup.object().shape({
|
|
|
45
45
|
equipmentPurchased: Yup.string().ensure(),
|
|
46
46
|
realEstateValue: Yup.string().ensure(),
|
|
47
47
|
capitalGains: Yup.string().ensure(),
|
|
48
|
-
period: Yup.string().ensure(),
|
|
49
48
|
federalRate: Yup.string().ensure(),
|
|
50
49
|
stateRate: Yup.string().ensure(),
|
|
51
50
|
taxDataYears: Yup.string().ensure(),
|
|
@@ -61,13 +60,13 @@ exports.intakeSchema = Yup.object().shape({
|
|
|
61
60
|
exports.intakeDefaultValues = {
|
|
62
61
|
bizName: "",
|
|
63
62
|
cpaName: "",
|
|
64
|
-
entity: "
|
|
63
|
+
entity: "C-Corporation",
|
|
65
64
|
industry: "Professional Services",
|
|
66
65
|
revenue: "",
|
|
67
66
|
netIncome: "",
|
|
68
67
|
ownerComp: "",
|
|
69
68
|
employees: "",
|
|
70
|
-
year:
|
|
69
|
+
year: "2026",
|
|
71
70
|
states: [],
|
|
72
71
|
filingStatus: "MFJ",
|
|
73
72
|
age: "",
|
|
@@ -78,7 +77,6 @@ exports.intakeDefaultValues = {
|
|
|
78
77
|
equipmentPurchased: "0",
|
|
79
78
|
realEstateValue: "0",
|
|
80
79
|
capitalGains: "0",
|
|
81
|
-
period: "Full Year",
|
|
82
80
|
federalRate: "24%",
|
|
83
81
|
stateRate: "",
|
|
84
82
|
taxDataYears: "1 year",
|
|
@@ -5,10 +5,29 @@ export interface TaxAxisPreparerWorkpaperProps extends TaxAxisScreenProps {
|
|
|
5
5
|
profile: ClientProfile;
|
|
6
6
|
onBack: () => void;
|
|
7
7
|
onToggleToClient?: () => void;
|
|
8
|
+
/** When provided, bypasses local filterEligibleStrategies + computeAllStrategies. */
|
|
8
9
|
liveStrategies?: Strategy[];
|
|
10
|
+
/** When provided, bypasses local computeAllStrategies. Must accompany liveStrategies. */
|
|
9
11
|
liveComputedMap?: ComputedMap;
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
12
|
+
/** Live cpa_workflow from engine output */
|
|
13
|
+
cpaWorkflow?: {
|
|
14
|
+
workpaper_codes?: string[] | null;
|
|
15
|
+
section_6694_notices?: Array<{
|
|
16
|
+
strategy_id: string;
|
|
17
|
+
position_strength: string;
|
|
18
|
+
notice: string;
|
|
19
|
+
}>;
|
|
20
|
+
prior_year_flags?: string[];
|
|
21
|
+
engagement_recommendations?: string[];
|
|
22
|
+
};
|
|
23
|
+
/** Live risk disclosures from engine output */
|
|
24
|
+
riskDisclosures?: string[];
|
|
25
|
+
/** Live business profile from engine output */
|
|
26
|
+
businessProfile?: {
|
|
27
|
+
confidence_tier?: string;
|
|
28
|
+
data_years?: number;
|
|
29
|
+
data_quality_flags?: string[];
|
|
30
|
+
effective_tax_rate?: number;
|
|
31
|
+
};
|
|
13
32
|
}
|
|
14
|
-
export declare function TaxAxisPreparerWorkpaper({ profile, onBack, onToggleToClient }: TaxAxisPreparerWorkpaperProps): React.JSX.Element;
|
|
33
|
+
export declare function TaxAxisPreparerWorkpaper({ profile, onBack, onToggleToClient, liveStrategies, liveComputedMap, cpaWorkflow, riskDisclosures, businessProfile }: TaxAxisPreparerWorkpaperProps): React.JSX.Element;
|
|
@@ -32,12 +32,14 @@ const ReportToolbar_1 = require("../shared/ReportToolbar");
|
|
|
32
32
|
const EngagementHeader_1 = require("./EngagementHeader");
|
|
33
33
|
const Section6694Summary_1 = require("./Section6694Summary");
|
|
34
34
|
const PriorityGroup_1 = require("./PriorityGroup");
|
|
35
|
-
function TaxAxisPreparerWorkpaper({ profile, onBack, onToggleToClient }) {
|
|
35
|
+
function TaxAxisPreparerWorkpaper({ profile, onBack, onToggleToClient, liveStrategies, liveComputedMap, cpaWorkflow, riskDisclosures, businessProfile }) {
|
|
36
36
|
const [expanded, setExpanded] = (0, react_1.useState)({});
|
|
37
37
|
const [printMode, setPrintMode] = (0, react_1.useState)(false);
|
|
38
38
|
const toggle = (rank, section) => setExpanded(prev => (Object.assign(Object.assign({}, prev), { [rank + "-" + section]: !prev[rank + "-" + section] })));
|
|
39
|
-
const
|
|
40
|
-
const
|
|
39
|
+
const staticEligible = (0, react_1.useMemo)(() => (0, compute_1.filterEligibleStrategies)(profile), [profile]);
|
|
40
|
+
const staticComputed = (0, react_1.useMemo)(() => (0, compute_1.computeAllStrategies)(profile), [profile]);
|
|
41
|
+
const eligible = liveStrategies !== null && liveStrategies !== void 0 ? liveStrategies : staticEligible;
|
|
42
|
+
const computed = liveComputedMap !== null && liveComputedMap !== void 0 ? liveComputedMap : staticComputed;
|
|
41
43
|
const states = profile.states || [];
|
|
42
44
|
const bizName = profile.bizName || "Client";
|
|
43
45
|
const rev = parseInt((profile.revenue || "0").replace(/,/g, "")) || 0;
|
|
@@ -111,7 +113,7 @@ function TaxAxisPreparerWorkpaper({ profile, onBack, onToggleToClient }) {
|
|
|
111
113
|
.flex.flex-col.w-full { margin-top: 0 !important; }
|
|
112
114
|
main.w-full { width: 100% !important; margin-left: 0 !important; padding: 0 !important; }
|
|
113
115
|
* { color-adjust: exact; -webkit-print-color-adjust: exact; }
|
|
114
|
-
|
|
116
|
+
p, span, div, td, th, li { color: #212529 !important; }
|
|
115
117
|
h1, h2, h3, h4, h5, h6, strong, b { color: #060821 !important; }
|
|
116
118
|
}
|
|
117
119
|
`),
|
|
@@ -166,6 +168,15 @@ function TaxAxisPreparerWorkpaper({ profile, onBack, onToggleToClient }) {
|
|
|
166
168
|
"$" + interactionAdj.toLocaleString() + " ",
|
|
167
169
|
react_1.default.createElement("span", { style: { fontWeight: 400, fontSize: 10 } }, "(\u221215%)")),
|
|
168
170
|
react_1.default.createElement("td", { colSpan: 2 })))))),
|
|
171
|
+
(cpaWorkflow === null || cpaWorkflow === void 0 ? void 0 : cpaWorkflow.engagement_recommendations) && cpaWorkflow.engagement_recommendations.length > 0 && (react_1.default.createElement("div", { style: Object.assign(Object.assign({}, card), { marginBottom: 24 }) },
|
|
172
|
+
react_1.default.createElement("div", { style: sectionTitle }, "CPA ENGAGEMENT NOTES"),
|
|
173
|
+
cpaWorkflow.engagement_recommendations.map((rec, i) => (react_1.default.createElement("div", { key: i, style: { fontSize: 12, color: palette_1.P.gray700, lineHeight: 1.7, fontFamily: palette_1.P.body, padding: '8px 0', borderTop: i > 0 ? '1px solid ' + palette_1.P.gray100 : 'none' } }, rec))))),
|
|
174
|
+
riskDisclosures && riskDisclosures.length > 0 && (react_1.default.createElement("div", { style: Object.assign(Object.assign({}, card), { marginBottom: 24, borderColor: '#FDBA74' }) },
|
|
175
|
+
react_1.default.createElement("div", { style: Object.assign(Object.assign({}, sectionTitle), { color: palette_1.P.orange }) }, "RISK DISCLOSURES"),
|
|
176
|
+
riskDisclosures.map((r, i) => (react_1.default.createElement("div", { key: i, style: { fontSize: 11, color: palette_1.P.gray600, lineHeight: 1.65, fontFamily: palette_1.P.body, padding: '6px 0', borderTop: i > 0 ? '1px solid ' + palette_1.P.gray100 : 'none' } }, r))))),
|
|
177
|
+
(businessProfile === null || businessProfile === void 0 ? void 0 : businessProfile.data_quality_flags) && businessProfile.data_quality_flags.length > 0 && (react_1.default.createElement("div", { style: Object.assign(Object.assign({}, card), { marginBottom: 24, borderColor: '#FDBA74' }) },
|
|
178
|
+
react_1.default.createElement("div", { style: Object.assign(Object.assign({}, sectionTitle), { color: palette_1.P.orange }) }, "DATA QUALITY FLAGS"),
|
|
179
|
+
businessProfile.data_quality_flags.map((f, i) => (react_1.default.createElement("div", { key: i, style: { fontSize: 11, color: palette_1.P.gray600, padding: '4px 0', fontFamily: palette_1.P.body } }, f))))),
|
|
169
180
|
react_1.default.createElement("div", { style: { display: "flex", justifyContent: "space-between", alignItems: "center", padding: "12px 0", borderTop: "1px solid " + palette_1.P.gray200, fontSize: 11, color: palette_1.P.gray500, fontFamily: palette_1.P.body } },
|
|
170
181
|
react_1.default.createElement("div", { style: { display: "flex", alignItems: "center", gap: 6 } },
|
|
171
182
|
react_1.default.createElement("div", { style: { width: 16, height: 16, borderRadius: 4, background: palette_1.P.navy, display: "flex", alignItems: "center", justifyContent: "center" } },
|
|
@@ -3,6 +3,7 @@ import { ClientProfile, TaxAxisScreenProps } from "../../lib/types";
|
|
|
3
3
|
export interface TaxAxisProcessingProps extends TaxAxisScreenProps {
|
|
4
4
|
onComplete: () => void;
|
|
5
5
|
profile?: ClientProfile;
|
|
6
|
+
/** Set to true by the shell poller when stage===REPORT_READY is detected. */
|
|
6
7
|
reportReady?: boolean;
|
|
7
8
|
}
|
|
8
|
-
export declare function TaxAxisProcessing({ onComplete, profile, userContext: _userContext, }: TaxAxisProcessingProps): React.JSX.Element;
|
|
9
|
+
export declare function TaxAxisProcessing({ onComplete, profile, reportReady, userContext: _userContext, }: TaxAxisProcessingProps): React.JSX.Element;
|