@paro.io/expert-shared-components 1.14.43 → 1.14.46
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/LICENSE +21 -21
- package/README.md +2 -2
- package/lib/README.md +2 -0
- package/lib/components/ClientReferencesSection/DeleteButton.js +11 -11
- package/lib/components/ClientReferencesSection/ParoError.js +10 -10
- package/lib/components/ClientReferencesSection/TagsSection.js +2 -2
- package/lib/components/ClientReferencesSection/styles/BrandedTypography.js +2 -2
- package/lib/components/ClientReferencesSection/styles/Buttons.js +15 -15
- package/lib/components/ClientReferencesSection/styles/Name.js +5 -5
- package/lib/components/ClientReferencesSection/styles/NullContentConditionalColor.js +4 -4
- package/lib/components/ClientReferencesSection/styles/SectionBody.js +11 -11
- package/lib/components/ClientReferencesSection/styles/SectionTitle.js +6 -6
- package/lib/components/ClientReferencesSection/styles/Tags.js +2 -2
- package/lib/components/DiscussionThread/DiscussionThread.d.ts +25 -25
- package/lib/components/DiscussionThread/DiscussionThread.js +137 -137
- package/lib/components/DiscussionThread/chat.d.ts +22 -22
- package/lib/components/DiscussionThread/chat.js +106 -106
- package/lib/components/DiscussionThread/index.d.ts +1 -1
- package/lib/components/DiscussionThread/index.js +5 -5
- package/lib/components/DocumentCenter/DocumentTable.d.ts +15 -15
- package/lib/components/DocumentCenter/DocumentTable.js +350 -350
- package/lib/components/DocumentCenter/DragDropUpload.js +4 -4
- package/lib/components/DocumentCenter/UploadFilesButton.d.ts +6 -6
- package/lib/components/DocumentCenter/UploadFilesButton.js +29 -29
- package/lib/components/EarningsTracker/ActiveProjectCard.d.ts +52 -52
- package/lib/components/EarningsTracker/ActiveProjectCard.js +161 -161
- package/lib/components/EarningsTracker/CenterCardUI.d.ts +13 -13
- package/lib/components/EarningsTracker/CenterCardUI.js +134 -134
- package/lib/components/EarningsTracker/EarningsTracker.d.ts +52 -52
- package/lib/components/EarningsTracker/EarningsTracker.js +508 -508
- package/lib/components/EarningsTracker/EditDateModal.d.ts +22 -22
- package/lib/components/EarningsTracker/EditDateModal.js +149 -149
- package/lib/components/EarningsTracker/EmailModal.d.ts +14 -14
- package/lib/components/EarningsTracker/EmailModal.js +79 -79
- package/lib/components/EarningsTracker/EndProjectModal.d.ts +56 -56
- package/lib/components/EarningsTracker/EndProjectModal.js +221 -221
- package/lib/components/EarningsTracker/LeftCardUI.d.ts +18 -18
- package/lib/components/EarningsTracker/LeftCardUI.js +189 -189
- package/lib/components/EarningsTracker/LogTimeModalAuthenticated.d.ts +52 -52
- package/lib/components/EarningsTracker/LogTimeModalAuthenticated.js +358 -358
- package/lib/components/EarningsTracker/ProgressBar.d.ts +4 -4
- package/lib/components/EarningsTracker/ProgressBar.js +66 -66
- package/lib/components/EarningsTracker/ReviewRequestModal.d.ts +17 -17
- package/lib/components/EarningsTracker/ReviewRequestModal.js +135 -135
- package/lib/components/EarningsTracker/RightCardUI.d.ts +46 -46
- package/lib/components/EarningsTracker/RightCardUI.js +231 -231
- package/lib/components/EarningsTracker/index.d.ts +1 -1
- package/lib/components/EarningsTracker/index.js +5 -5
- package/lib/components/Escalations/CustomTag.d.ts +3 -3
- package/lib/components/Escalations/CustomTag.js +25 -25
- package/lib/components/Escalations/ViewReponseModal.d.ts +8 -8
- package/lib/components/Escalations/ViewReponseModal.js +27 -27
- package/lib/components/ExpertProfileHeader/ActionButtonSection.js +6 -6
- package/lib/components/ExpertProfileHeader/ProfileSection.js +7 -7
- package/lib/components/Invoices/TestDecisionSection.d.ts +1 -1
- package/lib/components/Invoices/TestDecisionSection.js +126 -126
- package/lib/components/OrganizationChart/OrganizationChart.d.ts +15 -15
- package/lib/components/OrganizationChart/OrganizationChart.js +312 -312
- package/lib/components/OrganizationChart/PersonCard.js +5 -5
- package/lib/components/OrganizationChart/utils.js +79 -79
- package/lib/components/ProjectCard/ProgressBar.js +4 -4
- package/lib/components/ProjectCard/ReviewRequestModal.js +5 -5
- package/lib/components/ProjectIntelligence/MissingInformation/index.js +1 -1
- package/lib/components/Reviews/Pagination.js +6 -6
- package/lib/components/ReviewsTab/RatingHeader.js +6 -6
- package/lib/components/ReviewsTab/expert-shared-components.code-workspace +20 -20
- package/lib/components/ReviewsTab/reviewRequestModal.js +5 -5
- package/lib/components/shared/Image.js +13 -13
- package/lib/components/shared/ProfileTextField.d.ts +18 -18
- package/lib/components/shared/ProfileTextField.js +16 -16
- package/lib/components/shared/StyledActionButtons.d.ts +7 -7
- package/lib/components/shared/StyledActionButtons.js +15 -15
- package/lib/components/shared/ToastNotification.d.ts +10 -10
- package/lib/components/shared/ToastNotification.js +63 -63
- package/lib/index.d.ts +13 -0
- package/lib/index.js +27 -1
- package/lib/package.json +68 -0
- package/lib/tax-axis/components/clientReport/ClientReportCover.d.ts +9 -0
- package/lib/tax-axis/components/clientReport/ClientReportCover.js +39 -0
- package/lib/tax-axis/components/clientReport/ClientReportTOC.d.ts +8 -0
- package/lib/tax-axis/components/clientReport/ClientReportTOC.js +24 -0
- package/lib/tax-axis/components/clientReport/ClientReportToolbar.d.ts +2 -0
- package/lib/tax-axis/components/clientReport/ClientReportToolbar.js +6 -0
- package/lib/tax-axis/components/clientReport/ETRChart.d.ts +10 -0
- package/lib/tax-axis/components/clientReport/ETRChart.js +50 -0
- package/lib/tax-axis/components/clientReport/ExecutiveSummary.d.ts +15 -0
- package/lib/tax-axis/components/clientReport/ExecutiveSummary.js +73 -0
- package/lib/tax-axis/components/clientReport/FootnoteBlock.d.ts +11 -0
- package/lib/tax-axis/components/clientReport/FootnoteBlock.js +34 -0
- package/lib/tax-axis/components/clientReport/ImplementationRoadmap.d.ts +26 -0
- package/lib/tax-axis/components/clientReport/ImplementationRoadmap.js +51 -0
- package/lib/tax-axis/components/clientReport/ImplementationTimelineChart.d.ts +10 -0
- package/lib/tax-axis/components/clientReport/ImplementationTimelineChart.js +49 -0
- package/lib/tax-axis/components/clientReport/Methodology.d.ts +10 -0
- package/lib/tax-axis/components/clientReport/Methodology.js +40 -0
- package/lib/tax-axis/components/clientReport/QuarterlyCashChart.d.ts +10 -0
- package/lib/tax-axis/components/clientReport/QuarterlyCashChart.js +56 -0
- package/lib/tax-axis/components/clientReport/RecommendedStrategies.d.ts +13 -0
- package/lib/tax-axis/components/clientReport/RecommendedStrategies.js +51 -0
- package/lib/tax-axis/components/clientReport/SavingsStackChart.d.ts +10 -0
- package/lib/tax-axis/components/clientReport/SavingsStackChart.js +66 -0
- package/lib/tax-axis/components/clientReport/SectionOpener.d.ts +11 -0
- package/lib/tax-axis/components/clientReport/SectionOpener.js +20 -0
- package/lib/tax-axis/components/clientReport/Sidebar.d.ts +8 -0
- package/lib/tax-axis/components/clientReport/Sidebar.js +37 -0
- package/lib/tax-axis/components/clientReport/StrategyCard.d.ts +16 -0
- package/lib/tax-axis/components/clientReport/StrategyCard.js +63 -0
- package/lib/tax-axis/components/clientReport/TaxAxisClientReport.d.ts +9 -0
- package/lib/tax-axis/components/clientReport/TaxAxisClientReport.js +125 -0
- package/lib/tax-axis/components/clientReport/applyFootnotes.d.ts +12 -0
- package/lib/tax-axis/components/clientReport/applyFootnotes.js +43 -0
- package/lib/tax-axis/components/clientReport/palette.d.ts +28 -0
- package/lib/tax-axis/components/clientReport/palette.js +34 -0
- package/lib/tax-axis/components/dashboard/ConfidenceArc.d.ts +7 -0
- package/lib/tax-axis/components/dashboard/ConfidenceArc.js +20 -0
- package/lib/tax-axis/components/dashboard/DashboardActions.d.ts +13 -0
- package/lib/tax-axis/components/dashboard/DashboardActions.js +94 -0
- package/lib/tax-axis/components/dashboard/DashboardSummary.d.ts +11 -0
- package/lib/tax-axis/components/dashboard/DashboardSummary.js +98 -0
- package/lib/tax-axis/components/dashboard/DashboardTopBar.d.ts +10 -0
- package/lib/tax-axis/components/dashboard/DashboardTopBar.js +48 -0
- package/lib/tax-axis/components/dashboard/StrategyDetailPanel.d.ts +10 -0
- package/lib/tax-axis/components/dashboard/StrategyDetailPanel.js +139 -0
- package/lib/tax-axis/components/dashboard/StrategyTile.d.ts +10 -0
- package/lib/tax-axis/components/dashboard/StrategyTile.js +82 -0
- package/lib/tax-axis/components/dashboard/TaxAxisDashboard.d.ts +12 -0
- package/lib/tax-axis/components/dashboard/TaxAxisDashboard.js +285 -0
- package/lib/tax-axis/components/dashboard/useCountUp.d.ts +1 -0
- package/lib/tax-axis/components/dashboard/useCountUp.js +25 -0
- package/lib/tax-axis/components/documents/DocumentCard.d.ts +18 -0
- package/lib/tax-axis/components/documents/DocumentCard.js +61 -0
- package/lib/tax-axis/components/documents/DocumentTier.d.ts +21 -0
- package/lib/tax-axis/components/documents/DocumentTier.js +23 -0
- package/lib/tax-axis/components/documents/TaxAxisDocuments.d.ts +8 -0
- package/lib/tax-axis/components/documents/TaxAxisDocuments.js +157 -0
- package/lib/tax-axis/components/extractionReview/DocumentCard.d.ts +17 -0
- package/lib/tax-axis/components/extractionReview/DocumentCard.js +105 -0
- package/lib/tax-axis/components/extractionReview/FieldRow.d.ts +17 -0
- package/lib/tax-axis/components/extractionReview/FieldRow.js +137 -0
- package/lib/tax-axis/components/extractionReview/PurposeBlock.d.ts +7 -0
- package/lib/tax-axis/components/extractionReview/PurposeBlock.js +18 -0
- package/lib/tax-axis/components/extractionReview/RerunFooter.d.ts +8 -0
- package/lib/tax-axis/components/extractionReview/RerunFooter.js +60 -0
- package/lib/tax-axis/components/extractionReview/TaxAxisExtractionReview.d.ts +11 -0
- package/lib/tax-axis/components/extractionReview/TaxAxisExtractionReview.js +186 -0
- package/lib/tax-axis/components/intake/ClientParametersSection.d.ts +7 -0
- package/lib/tax-axis/components/intake/ClientParametersSection.js +146 -0
- package/lib/tax-axis/components/intake/CpaIntakeQuestionsSection.d.ts +7 -0
- package/lib/tax-axis/components/intake/CpaIntakeQuestionsSection.js +93 -0
- package/lib/tax-axis/components/intake/IntakeCtaCards.d.ts +9 -0
- package/lib/tax-axis/components/intake/IntakeCtaCards.js +30 -0
- package/lib/tax-axis/components/intake/RefineAnalysisSection.d.ts +7 -0
- package/lib/tax-axis/components/intake/RefineAnalysisSection.js +151 -0
- package/lib/tax-axis/components/intake/StateMultiSelect.d.ts +7 -0
- package/lib/tax-axis/components/intake/StateMultiSelect.js +90 -0
- package/lib/tax-axis/components/intake/StrategyRadar.d.ts +7 -0
- package/lib/tax-axis/components/intake/StrategyRadar.js +240 -0
- package/lib/tax-axis/components/intake/TaxAxisIntake.d.ts +8 -0
- package/lib/tax-axis/components/intake/TaxAxisIntake.js +38 -0
- package/lib/tax-axis/components/intake/intakeSchema.d.ts +97 -0
- package/lib/tax-axis/components/intake/intakeSchema.js +91 -0
- package/lib/tax-axis/components/preparerWorkpaper/CalculationTraceAccordion.d.ts +9 -0
- package/lib/tax-axis/components/preparerWorkpaper/CalculationTraceAccordion.js +19 -0
- package/lib/tax-axis/components/preparerWorkpaper/EngagementHeader.d.ts +9 -0
- package/lib/tax-axis/components/preparerWorkpaper/EngagementHeader.js +43 -0
- package/lib/tax-axis/components/preparerWorkpaper/Position6694Accordion.d.ts +9 -0
- package/lib/tax-axis/components/preparerWorkpaper/Position6694Accordion.js +25 -0
- package/lib/tax-axis/components/preparerWorkpaper/PriorityGroup.d.ts +14 -0
- package/lib/tax-axis/components/preparerWorkpaper/PriorityGroup.js +20 -0
- package/lib/tax-axis/components/preparerWorkpaper/Section6694Summary.d.ts +9 -0
- package/lib/tax-axis/components/preparerWorkpaper/Section6694Summary.js +36 -0
- package/lib/tax-axis/components/preparerWorkpaper/SourceDocumentsAccordion.d.ts +9 -0
- package/lib/tax-axis/components/preparerWorkpaper/SourceDocumentsAccordion.js +20 -0
- package/lib/tax-axis/components/preparerWorkpaper/StrategyWorkpaperCard.d.ts +14 -0
- package/lib/tax-axis/components/preparerWorkpaper/StrategyWorkpaperCard.js +53 -0
- package/lib/tax-axis/components/preparerWorkpaper/TaxAxisPreparerWorkpaper.d.ts +9 -0
- package/lib/tax-axis/components/preparerWorkpaper/TaxAxisPreparerWorkpaper.js +175 -0
- package/lib/tax-axis/components/presentationMode/TaxAxisPresentationMode.d.ts +7 -0
- package/lib/tax-axis/components/presentationMode/TaxAxisPresentationMode.js +245 -0
- package/lib/tax-axis/components/processing/ProcessingStages.d.ts +7 -0
- package/lib/tax-axis/components/processing/ProcessingStages.js +17 -0
- package/lib/tax-axis/components/processing/TaxAxisProcessing.d.ts +7 -0
- package/lib/tax-axis/components/processing/TaxAxisProcessing.js +105 -0
- package/lib/tax-axis/components/prospectReport/ProspectCover.d.ts +10 -0
- package/lib/tax-axis/components/prospectReport/ProspectCover.js +47 -0
- package/lib/tax-axis/components/prospectReport/ProspectDocuments.d.ts +9 -0
- package/lib/tax-axis/components/prospectReport/ProspectDocuments.js +31 -0
- package/lib/tax-axis/components/prospectReport/ProspectNextSteps.d.ts +13 -0
- package/lib/tax-axis/components/prospectReport/ProspectNextSteps.js +37 -0
- package/lib/tax-axis/components/prospectReport/ProspectPrintView.d.ts +26 -0
- package/lib/tax-axis/components/prospectReport/ProspectPrintView.js +185 -0
- package/lib/tax-axis/components/prospectReport/ProspectStrategyCard.d.ts +10 -0
- package/lib/tax-axis/components/prospectReport/ProspectStrategyCard.js +52 -0
- package/lib/tax-axis/components/prospectReport/SampleAnalysisPreview.d.ts +7 -0
- package/lib/tax-axis/components/prospectReport/SampleAnalysisPreview.js +120 -0
- package/lib/tax-axis/components/prospectReport/TaxAxisProspectReport.d.ts +9 -0
- package/lib/tax-axis/components/prospectReport/TaxAxisProspectReport.js +173 -0
- package/lib/tax-axis/components/prospectReport/TaxPositionGap.d.ts +15 -0
- package/lib/tax-axis/components/prospectReport/TaxPositionGap.js +45 -0
- package/lib/tax-axis/components/prospectReport/theme.d.ts +26 -0
- package/lib/tax-axis/components/prospectReport/theme.js +33 -0
- package/lib/tax-axis/components/shared/ReportToolbar.d.ts +12 -0
- package/lib/tax-axis/components/shared/ReportToolbar.js +81 -0
- package/lib/tax-axis/components/shared/SectionHeader.d.ts +8 -0
- package/lib/tax-axis/components/shared/SectionHeader.js +15 -0
- package/lib/tax-axis/components/shared/TaxAxisBadge.d.ts +12 -0
- package/lib/tax-axis/components/shared/TaxAxisBadge.js +34 -0
- package/lib/tax-axis/components/shared/TaxAxisButton.d.ts +12 -0
- package/lib/tax-axis/components/shared/TaxAxisButton.js +17 -0
- package/lib/tax-axis/components/shared/TaxAxisCard.d.ts +9 -0
- package/lib/tax-axis/components/shared/TaxAxisCard.js +13 -0
- package/lib/tax-axis/index.d.ts +25 -0
- package/lib/tax-axis/index.js +51 -0
- package/lib/tax-axis/lib/compute/index.d.ts +8 -0
- package/lib/tax-axis/lib/compute/index.js +163 -0
- package/lib/tax-axis/lib/data/documents.d.ts +3 -0
- package/lib/tax-axis/lib/data/documents.js +33 -0
- package/lib/tax-axis/lib/data/extractedData.d.ts +2 -0
- package/lib/tax-axis/lib/data/extractedData.js +47 -0
- package/lib/tax-axis/lib/data/footnoteData.d.ts +2 -0
- package/lib/tax-axis/lib/data/footnoteData.js +48 -0
- package/lib/tax-axis/lib/data/index.d.ts +11 -0
- package/lib/tax-axis/lib/data/index.js +31 -0
- package/lib/tax-axis/lib/data/nextSteps.d.ts +2 -0
- package/lib/tax-axis/lib/data/nextSteps.js +35 -0
- package/lib/tax-axis/lib/data/sidebarLookup.d.ts +2 -0
- package/lib/tax-axis/lib/data/sidebarLookup.js +90 -0
- package/lib/tax-axis/lib/data/sourceDescriptions.d.ts +1 -0
- package/lib/tax-axis/lib/data/sourceDescriptions.js +32 -0
- package/lib/tax-axis/lib/data/states.d.ts +6 -0
- package/lib/tax-axis/lib/data/states.js +25 -0
- package/lib/tax-axis/lib/data/strategies.d.ts +8 -0
- package/lib/tax-axis/lib/data/strategies.js +166 -0
- package/lib/tax-axis/lib/data/strategyNarrative.d.ts +3 -0
- package/lib/tax-axis/lib/data/strategyNarrative.js +170 -0
- package/lib/tax-axis/lib/data/strategyProspect.d.ts +2 -0
- package/lib/tax-axis/lib/data/strategyProspect.js +66 -0
- package/lib/tax-axis/lib/data/workpaperInteractions.d.ts +1 -0
- package/lib/tax-axis/lib/data/workpaperInteractions.js +15 -0
- package/lib/tax-axis/lib/types/index.d.ts +183 -0
- package/lib/tax-axis/lib/types/index.js +7 -0
- package/package.json +68 -67
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
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;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.TaxAxisProspectReport = TaxAxisProspectReport;
|
|
27
|
+
const react_1 = __importStar(require("react"));
|
|
28
|
+
const strategyProspect_1 = require("../../lib/data/strategyProspect");
|
|
29
|
+
const compute_1 = require("../../lib/compute");
|
|
30
|
+
const theme_1 = require("./theme");
|
|
31
|
+
const ProspectCover_1 = require("./ProspectCover");
|
|
32
|
+
const TaxPositionGap_1 = require("./TaxPositionGap");
|
|
33
|
+
const ProspectStrategyCard_1 = require("./ProspectStrategyCard");
|
|
34
|
+
const SampleAnalysisPreview_1 = require("./SampleAnalysisPreview");
|
|
35
|
+
const ProspectDocuments_1 = require("./ProspectDocuments");
|
|
36
|
+
const ProspectNextSteps_1 = require("./ProspectNextSteps");
|
|
37
|
+
const ProspectPrintView_1 = require("./ProspectPrintView");
|
|
38
|
+
function TaxAxisProspectReport({ profile, onUpgrade, onPresent, onReset, }) {
|
|
39
|
+
const bizName = profile.bizName || "Client";
|
|
40
|
+
const [confirmReset, setConfirmReset] = (0, react_1.useState)(false);
|
|
41
|
+
const [printMode, setPrintMode] = (0, react_1.useState)(false);
|
|
42
|
+
// ═══ ELIGIBLE STRATEGIES ═══
|
|
43
|
+
const eligible = (0, react_1.useMemo)(() => (0, compute_1.filterEligibleStrategies)(profile), [profile]);
|
|
44
|
+
const high = eligible.filter(s => s.priority === "HIGH");
|
|
45
|
+
const quick = eligible.filter(s => s.priority === "QUICK WIN");
|
|
46
|
+
// Top 3 by score for the sales narrative
|
|
47
|
+
const top3 = (0, react_1.useMemo)(() => [...eligible].sort((a, b) => b.score - a.score).slice(0, 3), [eligible]);
|
|
48
|
+
const remaining = eligible.length - top3.length;
|
|
49
|
+
const remainingNames = eligible.filter(s => !top3.includes(s)).slice(0, 4).map(s => s.name);
|
|
50
|
+
// ═══ SAVINGS RANGE (dynamic computation) ═══
|
|
51
|
+
const computed = (0, react_1.useMemo)(() => (0, compute_1.computeAllStrategies)(profile), [profile]);
|
|
52
|
+
const displayLo = Math.round(eligible.reduce((a, s) => { var _a, _b; return a + ((_b = (_a = computed.get(s.rank)) === null || _a === void 0 ? void 0 : _a.lo) !== null && _b !== void 0 ? _b : s.lo); }, 0) / 1000);
|
|
53
|
+
const displayHi = Math.round(eligible.reduce((a, s) => { var _a, _b; return a + ((_b = (_a = computed.get(s.rank)) === null || _a === void 0 ? void 0 : _a.hi) !== null && _b !== void 0 ? _b : s.hi); }, 0) / 1000);
|
|
54
|
+
// Savings bar chart data — top 3 strategies with midpoint + percentage
|
|
55
|
+
const totalMid = eligible.reduce((a, s) => { var _a, _b; const c = computed.get(s.rank); return a + (((_a = c === null || c === void 0 ? void 0 : c.lo) !== null && _a !== void 0 ? _a : s.lo) + ((_b = c === null || c === void 0 ? void 0 : c.hi) !== null && _b !== void 0 ? _b : s.hi)) / 2; }, 0);
|
|
56
|
+
const barData = top3.map(s => { var _a, _b; const c = computed.get(s.rank); const mid = Math.round((((_a = c === null || c === void 0 ? void 0 : c.lo) !== null && _a !== void 0 ? _a : s.lo) + ((_b = c === null || c === void 0 ? void 0 : c.hi) !== null && _b !== void 0 ? _b : s.hi)) / 2); return { name: s.name, mid, pct: totalMid > 0 ? Math.round(mid / totalMid * 100) : 0 }; });
|
|
57
|
+
const maxMid = Math.max(...barData.map(b => b.mid), 1);
|
|
58
|
+
// ═══ GAP BLOCK MATH — Current vs Optimized tax position ═══
|
|
59
|
+
const rev = (0, compute_1.parseNum)(profile.revenue);
|
|
60
|
+
const netIncome = (0, compute_1.parseNum)(profile.netIncome) || Math.round(rev * 0.20);
|
|
61
|
+
const fedRatePct = parseFloat((profile.federalRate || "24").replace("%", "")) || 24;
|
|
62
|
+
const stateRatePct = parseFloat(profile.stateRate || "4.95") || 4.95;
|
|
63
|
+
const combinedRate = (fedRatePct + stateRatePct) / 100;
|
|
64
|
+
const currentTax = Math.round(netIncome * combinedRate);
|
|
65
|
+
const theoreticalMidK = (displayLo + displayHi) / 2;
|
|
66
|
+
const realizedSavings = Math.min(Math.round(theoreticalMidK * 1000 * 0.325), Math.round(currentTax * 0.6));
|
|
67
|
+
const optimizedTax = currentTax - realizedSavings;
|
|
68
|
+
const realizedPctOfCurrent = currentTax > 0 ? Math.round((realizedSavings / currentTax) * 100) : 0;
|
|
69
|
+
// Section numbering — shifts when Additional Strategies section is present
|
|
70
|
+
const sectionNums = remaining > 0
|
|
71
|
+
? { recommended: "02", additional: "03", sample: "04", documents: "05", nextSteps: "06" }
|
|
72
|
+
: { recommended: "02", additional: null, sample: "03", documents: "04", nextSteps: "05" };
|
|
73
|
+
// ═══ DOCUMENT GROUPING ═══
|
|
74
|
+
const allDocsNeeded = [...new Set(eligible.flatMap(s => { var _a; return ((_a = strategyProspect_1.STRATEGY_PROSPECT[s.rank]) === null || _a === void 0 ? void 0 : _a.docsNeeded) || []; }))];
|
|
75
|
+
const requiredDocs = ["Profit & Loss Statement (current year)", "Balance Sheet (current year)"];
|
|
76
|
+
const recommendedDocs = ["Federal Tax Return (most recent)", "W-2 / Officer Compensation records"];
|
|
77
|
+
const conditionalDocs = allDocsNeeded.filter(d => !requiredDocs.includes(d) && !recommendedDocs.includes(d)).slice(0, 5);
|
|
78
|
+
// ═══ PRINT HANDLER ═══
|
|
79
|
+
const handlePrint = () => {
|
|
80
|
+
setPrintMode(true);
|
|
81
|
+
requestAnimationFrame(() => {
|
|
82
|
+
requestAnimationFrame(() => {
|
|
83
|
+
const cleanup = () => { setPrintMode(false); window.removeEventListener("afterprint", cleanup); };
|
|
84
|
+
window.addEventListener("afterprint", cleanup);
|
|
85
|
+
window.print();
|
|
86
|
+
});
|
|
87
|
+
});
|
|
88
|
+
};
|
|
89
|
+
// ═══ PRINT MODE — Light theme layout ═══
|
|
90
|
+
if (printMode) {
|
|
91
|
+
return (react_1.default.createElement(ProspectPrintView_1.ProspectPrintView, { profile: profile, bizName: bizName, displayLo: displayLo, displayHi: displayHi, currentTax: currentTax, optimizedTax: optimizedTax, realizedSavings: realizedSavings, realizedPctOfCurrent: realizedPctOfCurrent, fedRatePct: fedRatePct, stateRatePct: stateRatePct, eligible: eligible, high: high, quick: quick, top3: top3, computed: computed, fmtTax: compute_1.fmtTax, fmtSavings: compute_1.fmtSavings, requiredDocs: requiredDocs, recommendedDocs: recommendedDocs, conditionalDocs: conditionalDocs }));
|
|
92
|
+
}
|
|
93
|
+
// ═══ INTERACTIVE MODE — Dark theme layout ═══
|
|
94
|
+
return (react_1.default.createElement("div", null,
|
|
95
|
+
react_1.default.createElement(ProspectCover_1.ProspectCover, { profile: profile, bizName: bizName, displayLo: displayLo, displayHi: displayHi }),
|
|
96
|
+
react_1.default.createElement(TaxPositionGap_1.TaxPositionGap, { bizName: bizName, currentTax: currentTax, optimizedTax: optimizedTax, realizedSavings: realizedSavings, realizedPctOfCurrent: realizedPctOfCurrent, fedRatePct: fedRatePct, stateRatePct: stateRatePct, eligibleCount: eligible.length, fmtTax: compute_1.fmtTax, fmtSavings: compute_1.fmtSavings }),
|
|
97
|
+
react_1.default.createElement("div", { style: { background: theme_1.T.surface, border: `1px solid ${theme_1.T.border}`, borderRadius: 14, padding: "24px 28px", marginBottom: 24, boxShadow: theme_1.T.shadow } },
|
|
98
|
+
react_1.default.createElement("div", { style: { fontSize: 10, fontWeight: 700, textTransform: "uppercase", letterSpacing: "0.15em", color: theme_1.T.text4, marginBottom: 16, fontFamily: theme_1.T.mono } }, "AT A GLANCE"),
|
|
99
|
+
react_1.default.createElement("div", { style: { display: "grid", gridTemplateColumns: "1fr 1fr 1fr 1fr", gap: 16 } }, [
|
|
100
|
+
{ v: `$${displayLo}K\u2013$${displayHi}K`, l: "Est. Savings" },
|
|
101
|
+
{ v: String(eligible.length), l: "Strategies Found" },
|
|
102
|
+
{ v: String(high.length), l: "High Impact" },
|
|
103
|
+
{ v: String(quick.length), l: "Quick Wins" },
|
|
104
|
+
].map(({ v, l }) => (react_1.default.createElement("div", { key: l },
|
|
105
|
+
react_1.default.createElement("div", { style: { fontSize: 20, fontWeight: 800, color: theme_1.T.accentLt, fontFamily: theme_1.T.head, lineHeight: 1.2, marginBottom: 4 } }, v),
|
|
106
|
+
react_1.default.createElement("div", { style: { fontSize: 10, color: theme_1.T.text3, fontFamily: theme_1.T.body } }, l)))))),
|
|
107
|
+
react_1.default.createElement("div", { style: { marginBottom: 24 } },
|
|
108
|
+
react_1.default.createElement("div", { style: { display: "flex", alignItems: "baseline", gap: 10, marginBottom: 6 } },
|
|
109
|
+
react_1.default.createElement("span", { style: { fontSize: 11, fontWeight: 700, color: theme_1.T.accent, fontFamily: theme_1.T.mono } }, "01"),
|
|
110
|
+
react_1.default.createElement("span", { style: { fontSize: 11, fontWeight: 700, textTransform: "uppercase", letterSpacing: "0.12em", color: theme_1.T.text4, fontFamily: theme_1.T.body } }, "EXECUTIVE SUMMARY")),
|
|
111
|
+
react_1.default.createElement("div", { style: { height: 2, background: theme_1.T.accent, width: 48, marginBottom: 16 } }),
|
|
112
|
+
react_1.default.createElement("div", { style: { fontSize: 14, color: theme_1.T.text2, fontFamily: theme_1.T.body, lineHeight: 1.8, marginBottom: 12 } },
|
|
113
|
+
"We evaluated ",
|
|
114
|
+
bizName,
|
|
115
|
+
"'s tax position against 25 federal strategies and identified ",
|
|
116
|
+
react_1.default.createElement("strong", { style: { color: theme_1.T.white } },
|
|
117
|
+
eligible.length,
|
|
118
|
+
" applicable opportunities"),
|
|
119
|
+
" with combined estimated savings of ",
|
|
120
|
+
react_1.default.createElement("strong", { style: { color: theme_1.T.accentLt } },
|
|
121
|
+
"$",
|
|
122
|
+
displayLo,
|
|
123
|
+
"K\u2013$",
|
|
124
|
+
displayHi,
|
|
125
|
+
"K annually"),
|
|
126
|
+
". ",
|
|
127
|
+
high.length,
|
|
128
|
+
" strategies could have significant impact."),
|
|
129
|
+
react_1.default.createElement("div", { style: { fontSize: 14, color: theme_1.T.text2, fontFamily: theme_1.T.body, lineHeight: 1.8 } },
|
|
130
|
+
"The top ",
|
|
131
|
+
top3.length,
|
|
132
|
+
" strategies are detailed below.",
|
|
133
|
+
quick.length > 0 ? ` ${quick.length} can be implemented this week with no structural changes.` : "",
|
|
134
|
+
" These are profile-based estimates \u2014 uploading financial documents will refine savings calculations and unlock all 25 strategies.")),
|
|
135
|
+
react_1.default.createElement("div", { style: { background: theme_1.T.surface, border: `1px solid ${theme_1.T.border}`, borderRadius: 14, padding: "20px 24px", marginBottom: 24, boxShadow: theme_1.T.shadow } },
|
|
136
|
+
react_1.default.createElement("div", { style: { fontSize: 10, fontWeight: 700, color: theme_1.T.text4, textTransform: "uppercase", letterSpacing: "0.12em", marginBottom: 12, fontFamily: theme_1.T.mono } }, "SAVINGS DISTRIBUTION"),
|
|
137
|
+
barData.map((b, i) => (react_1.default.createElement("div", { key: i, style: { display: "flex", alignItems: "center", gap: 10, marginBottom: i < barData.length - 1 ? 8 : 0 } },
|
|
138
|
+
react_1.default.createElement("span", { style: { fontSize: 11, color: theme_1.T.text2, fontFamily: theme_1.T.body, width: 120, flexShrink: 0, overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap" } }, b.name),
|
|
139
|
+
react_1.default.createElement("div", { style: { flex: 1, height: 8, background: theme_1.T.surface2, borderRadius: 4, overflow: "hidden" } },
|
|
140
|
+
react_1.default.createElement("div", { style: { width: `${(b.mid / maxMid) * 100}%`, height: "100%", borderRadius: 4, background: theme_1.T.accent, opacity: 1 - i * 0.2 } })),
|
|
141
|
+
react_1.default.createElement("span", { style: { fontSize: 11, fontWeight: 600, color: theme_1.T.accentLt, fontFamily: theme_1.T.mono, width: 60, textAlign: "right", flexShrink: 0 } },
|
|
142
|
+
"$",
|
|
143
|
+
(b.mid / 1000).toFixed(1),
|
|
144
|
+
"K"),
|
|
145
|
+
react_1.default.createElement("span", { style: { fontSize: 10, color: theme_1.T.text4, fontFamily: theme_1.T.mono, width: 32, textAlign: "right", flexShrink: 0 } },
|
|
146
|
+
"(",
|
|
147
|
+
b.pct,
|
|
148
|
+
"%)"))))),
|
|
149
|
+
react_1.default.createElement("div", { style: { marginBottom: 20 } },
|
|
150
|
+
react_1.default.createElement("div", { style: { display: "flex", alignItems: "baseline", gap: 10, marginBottom: 6 } },
|
|
151
|
+
react_1.default.createElement("span", { style: { fontSize: 11, fontWeight: 700, color: theme_1.T.accent, fontFamily: theme_1.T.mono } }, "02"),
|
|
152
|
+
react_1.default.createElement("span", { style: { fontSize: 11, fontWeight: 700, textTransform: "uppercase", letterSpacing: "0.12em", color: theme_1.T.text4, fontFamily: theme_1.T.body } }, "RECOMMENDED STRATEGIES")),
|
|
153
|
+
react_1.default.createElement("div", { style: { height: 2, background: theme_1.T.accent, width: 48, marginBottom: 16 } }),
|
|
154
|
+
react_1.default.createElement("div", { style: { display: "flex", flexDirection: "column", gap: 14 } }, top3.map((s, i) => (react_1.default.createElement(ProspectStrategyCard_1.ProspectStrategyCard, { key: s.rank, strategy: s, index: i, profile: profile, computed: computed }))))),
|
|
155
|
+
remaining > 0 && (react_1.default.createElement("div", { style: { marginBottom: 24 } },
|
|
156
|
+
react_1.default.createElement("div", { style: { display: "flex", alignItems: "baseline", gap: 10, marginBottom: 6 } },
|
|
157
|
+
react_1.default.createElement("span", { style: { fontSize: 11, fontWeight: 700, color: theme_1.T.accent, fontFamily: theme_1.T.mono } }, "03"),
|
|
158
|
+
react_1.default.createElement("span", { style: { fontSize: 11, fontWeight: 700, textTransform: "uppercase", letterSpacing: "0.12em", color: theme_1.T.text4, fontFamily: theme_1.T.body } }, "ADDITIONAL STRATEGIES")),
|
|
159
|
+
react_1.default.createElement("div", { style: { height: 2, background: theme_1.T.accent, width: 48, marginBottom: 16 } }),
|
|
160
|
+
react_1.default.createElement("div", { style: { background: theme_1.T.surface, border: `1px solid ${theme_1.T.border}`, borderRadius: 14, padding: "24px 28px", boxShadow: theme_1.T.shadow } },
|
|
161
|
+
react_1.default.createElement("div", { style: { fontSize: 16, fontWeight: 700, color: theme_1.T.white, fontFamily: theme_1.T.head, marginBottom: 10 } },
|
|
162
|
+
"+ ",
|
|
163
|
+
remaining,
|
|
164
|
+
" more strategies identified"),
|
|
165
|
+
react_1.default.createElement("div", { style: { fontSize: 13, color: theme_1.T.text2, fontFamily: theme_1.T.body, lineHeight: 1.7, marginBottom: 10 } },
|
|
166
|
+
"Including: ",
|
|
167
|
+
remainingNames.join(", "),
|
|
168
|
+
remaining > 4 ? " and more" : ""),
|
|
169
|
+
react_1.default.createElement("div", { style: { fontSize: 12, color: theme_1.T.text3, fontFamily: theme_1.T.body, lineHeight: 1.6, borderLeft: `3px solid ${theme_1.T.accent}`, paddingLeft: 12 } }, "Full analysis with documents unlocks specific savings estimates for every eligible strategy.")))),
|
|
170
|
+
react_1.default.createElement(SampleAnalysisPreview_1.SampleAnalysisPreview, { sectionNum: sectionNums.sample, eligibleCount: eligible.length }),
|
|
171
|
+
react_1.default.createElement(ProspectDocuments_1.ProspectDocuments, { sectionNum: sectionNums.documents, requiredDocs: requiredDocs, recommendedDocs: recommendedDocs, conditionalDocs: conditionalDocs }),
|
|
172
|
+
react_1.default.createElement(ProspectNextSteps_1.ProspectNextSteps, { sectionNum: sectionNums.nextSteps, bizName: bizName, onUpgrade: onUpgrade, onPresent: onPresent, onPrint: handlePrint, onReset: onReset, confirmReset: confirmReset, onConfirmResetChange: setConfirmReset })));
|
|
173
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
interface TaxPositionGapProps {
|
|
3
|
+
bizName: string;
|
|
4
|
+
currentTax: number;
|
|
5
|
+
optimizedTax: number;
|
|
6
|
+
realizedSavings: number;
|
|
7
|
+
realizedPctOfCurrent: number;
|
|
8
|
+
fedRatePct: number;
|
|
9
|
+
stateRatePct: number;
|
|
10
|
+
eligibleCount: number;
|
|
11
|
+
fmtTax: (n: number) => string;
|
|
12
|
+
fmtSavings: (n: number) => string;
|
|
13
|
+
}
|
|
14
|
+
export declare function TaxPositionGap({ bizName, currentTax, optimizedTax, realizedSavings, realizedPctOfCurrent, fedRatePct, stateRatePct, eligibleCount, fmtTax, fmtSavings, }: TaxPositionGapProps): React.JSX.Element;
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.TaxPositionGap = TaxPositionGap;
|
|
7
|
+
const react_1 = __importDefault(require("react"));
|
|
8
|
+
const theme_1 = require("./theme");
|
|
9
|
+
function TaxPositionGap({ bizName, currentTax, optimizedTax, realizedSavings, realizedPctOfCurrent, fedRatePct, stateRatePct, eligibleCount, fmtTax, fmtSavings, }) {
|
|
10
|
+
return (react_1.default.createElement("div", { style: { background: theme_1.T.surface, border: `1px solid ${theme_1.T.border}`, borderRadius: 14, padding: "28px 32px", marginBottom: 24, boxShadow: theme_1.T.shadow, position: "relative", overflow: "hidden" } },
|
|
11
|
+
react_1.default.createElement("div", { style: { position: "absolute", top: 0, right: 0, bottom: 0, width: "40%", background: "linear-gradient(135deg,transparent 0%,rgba(36,131,132,0.04) 100%)", pointerEvents: "none" } }),
|
|
12
|
+
react_1.default.createElement("div", { style: { position: "relative" } },
|
|
13
|
+
react_1.default.createElement("div", { style: { fontSize: 10, fontWeight: 700, textTransform: "uppercase", letterSpacing: "0.15em", color: theme_1.T.text4, marginBottom: 6, fontFamily: theme_1.T.body } }, "The Opportunity"),
|
|
14
|
+
react_1.default.createElement("div", { style: { fontSize: 18, fontWeight: 600, color: theme_1.T.white, fontFamily: theme_1.T.head, lineHeight: 1.35, marginBottom: 22, maxWidth: 560 } },
|
|
15
|
+
bizName,
|
|
16
|
+
" is paying ",
|
|
17
|
+
fmtTax(currentTax),
|
|
18
|
+
" in federal and state tax this year. Here's what that looks like with TaxAxis."),
|
|
19
|
+
react_1.default.createElement("div", { style: { display: "grid", gridTemplateColumns: "1fr 1fr", gap: 16, marginBottom: 20 } },
|
|
20
|
+
react_1.default.createElement("div", { style: { padding: "18px 20px", background: theme_1.T.surface2, border: `1px solid ${theme_1.T.border}`, borderRadius: 10 } },
|
|
21
|
+
react_1.default.createElement("div", { style: { fontSize: 9, fontWeight: 700, textTransform: "uppercase", letterSpacing: "0.12em", color: theme_1.T.text4, marginBottom: 8, fontFamily: theme_1.T.body } }, "Current Position"),
|
|
22
|
+
react_1.default.createElement("div", { style: { fontSize: 30, fontWeight: 800, color: theme_1.T.text2, fontFamily: theme_1.T.head, letterSpacing: "-1px", lineHeight: 1, marginBottom: 6 } }, fmtTax(currentTax)),
|
|
23
|
+
react_1.default.createElement("div", { style: { fontSize: 11, color: theme_1.T.text3, fontFamily: theme_1.T.body, lineHeight: 1.5 } },
|
|
24
|
+
"Annual federal + state tax at your current profile (",
|
|
25
|
+
fedRatePct,
|
|
26
|
+
"% federal, ",
|
|
27
|
+
stateRatePct,
|
|
28
|
+
"% state)")),
|
|
29
|
+
react_1.default.createElement("div", { style: { padding: "18px 20px", background: `linear-gradient(135deg,${theme_1.T.accentBg} 0%,rgba(36,131,132,0.04) 100%)`, border: `1px solid ${theme_1.T.accent}`, borderRadius: 10 } },
|
|
30
|
+
react_1.default.createElement("div", { style: { fontSize: 9, fontWeight: 700, textTransform: "uppercase", letterSpacing: "0.12em", color: theme_1.T.accentLt, marginBottom: 8, fontFamily: theme_1.T.body } }, "With TaxAxis"),
|
|
31
|
+
react_1.default.createElement("div", { style: { fontSize: 30, fontWeight: 800, color: theme_1.T.accentLt, fontFamily: theme_1.T.head, letterSpacing: "-1px", lineHeight: 1, marginBottom: 6 } }, fmtTax(optimizedTax)),
|
|
32
|
+
react_1.default.createElement("div", { style: { fontSize: 11, color: theme_1.T.text2, fontFamily: theme_1.T.body, lineHeight: 1.5 } },
|
|
33
|
+
"After applying realized savings from ",
|
|
34
|
+
eligibleCount,
|
|
35
|
+
" eligible strategies"))),
|
|
36
|
+
react_1.default.createElement("div", { style: { display: "flex", alignItems: "center", gap: 14, padding: "14px 18px", background: theme_1.T.accentBg, border: `1px solid ${theme_1.T.accent}`, borderRadius: 10 } },
|
|
37
|
+
react_1.default.createElement("div", { style: { flex: 1 } },
|
|
38
|
+
react_1.default.createElement("div", { style: { fontSize: 11, fontWeight: 600, color: theme_1.T.accentLt, textTransform: "uppercase", letterSpacing: "0.12em", fontFamily: theme_1.T.body, marginBottom: 3 } }, "Annual Savings Opportunity"),
|
|
39
|
+
react_1.default.createElement("div", { style: { fontSize: 13, color: theme_1.T.text2, fontFamily: theme_1.T.body, lineHeight: 1.5 } },
|
|
40
|
+
"That's ",
|
|
41
|
+
realizedPctOfCurrent,
|
|
42
|
+
"% of your current tax bill \u2014 and it recurs every year you stay engaged.")),
|
|
43
|
+
react_1.default.createElement("div", { style: { fontSize: 34, fontWeight: 900, color: theme_1.T.accentLt, fontFamily: theme_1.T.head, letterSpacing: "-1.5px", lineHeight: 1, whiteSpace: "nowrap" } }, fmtSavings(realizedSavings))),
|
|
44
|
+
react_1.default.createElement("div", { style: { fontSize: 10, color: theme_1.T.text4, fontFamily: theme_1.T.body, marginTop: 10, fontStyle: "italic" } }, "Realized savings reflect strategy interactions and \u00A76694 reasonableness. Full implementation may span 2\u20133 tax years for profiles with high theoretical opportunity."))));
|
|
45
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export declare const T: {
|
|
2
|
+
readonly bg: "#060821";
|
|
3
|
+
readonly surface: "#0E1133";
|
|
4
|
+
readonly surface2: "#171B44";
|
|
5
|
+
readonly surface3: "#282B52";
|
|
6
|
+
readonly border: "#2E3160";
|
|
7
|
+
readonly accent: "#248384";
|
|
8
|
+
readonly accentLt: "#A1E5E6";
|
|
9
|
+
readonly accentGlow: "rgba(161,229,230,0.10)";
|
|
10
|
+
readonly accentBg: "rgba(36,131,132,0.10)";
|
|
11
|
+
readonly orange: "#FB9A1D";
|
|
12
|
+
readonly orangeBg: "rgba(251,154,29,0.08)";
|
|
13
|
+
readonly orangeBdr: "rgba(251,154,29,0.25)";
|
|
14
|
+
readonly white: "#FFFFFF";
|
|
15
|
+
readonly text: "#FFFFFF";
|
|
16
|
+
readonly text2: "#E6E8F5";
|
|
17
|
+
readonly text3: "#C8CCE5";
|
|
18
|
+
readonly text4: "#9498B8";
|
|
19
|
+
readonly green: "#34D399";
|
|
20
|
+
readonly red: "#C53030";
|
|
21
|
+
readonly head: "'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',Arial,sans-serif";
|
|
22
|
+
readonly body: "'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,sans-serif";
|
|
23
|
+
readonly mono: "'JetBrains Mono','Fira Code',monospace";
|
|
24
|
+
readonly shadow: "0 2px 12px rgba(6,8,33,0.5)";
|
|
25
|
+
readonly shadowLg: "0 8px 40px rgba(6,8,33,0.6)";
|
|
26
|
+
};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ═══════════════════════════════════════════════════════════════════
|
|
3
|
+
// ProspectReport — Dark-theme tokens for interactive mode
|
|
4
|
+
// Verbatim from mock (App.jsx:15-31).
|
|
5
|
+
// ═══════════════════════════════════════════════════════════════════
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.T = void 0;
|
|
8
|
+
exports.T = {
|
|
9
|
+
bg: "#060821",
|
|
10
|
+
surface: "#0E1133",
|
|
11
|
+
surface2: "#171B44",
|
|
12
|
+
surface3: "#282B52",
|
|
13
|
+
border: "#2E3160",
|
|
14
|
+
accent: "#248384",
|
|
15
|
+
accentLt: "#A1E5E6",
|
|
16
|
+
accentGlow: "rgba(161,229,230,0.10)",
|
|
17
|
+
accentBg: "rgba(36,131,132,0.10)",
|
|
18
|
+
orange: "#FB9A1D",
|
|
19
|
+
orangeBg: "rgba(251,154,29,0.08)",
|
|
20
|
+
orangeBdr: "rgba(251,154,29,0.25)",
|
|
21
|
+
white: "#FFFFFF",
|
|
22
|
+
text: "#FFFFFF",
|
|
23
|
+
text2: "#E6E8F5",
|
|
24
|
+
text3: "#C8CCE5",
|
|
25
|
+
text4: "#9498B8",
|
|
26
|
+
green: "#34D399",
|
|
27
|
+
red: "#C53030",
|
|
28
|
+
head: "'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',Arial,sans-serif",
|
|
29
|
+
body: "'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,sans-serif",
|
|
30
|
+
mono: "'JetBrains Mono','Fira Code',monospace",
|
|
31
|
+
shadow: "0 2px 12px rgba(6,8,33,0.5)",
|
|
32
|
+
shadowLg: "0 8px 40px rgba(6,8,33,0.6)",
|
|
33
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import type { Palette } from "../clientReport/palette";
|
|
3
|
+
export type ReportView = "client" | "preparer";
|
|
4
|
+
export interface ReportToolbarProps {
|
|
5
|
+
view: ReportView;
|
|
6
|
+
palette: Palette;
|
|
7
|
+
onBack: () => void;
|
|
8
|
+
onToggle: (v: ReportView) => void;
|
|
9
|
+
onPrintClient: () => void;
|
|
10
|
+
onPrintPreparer: () => void;
|
|
11
|
+
}
|
|
12
|
+
export declare function ReportToolbar({ view, palette, onBack, onToggle, onPrintClient, onPrintPreparer }: ReportToolbarProps): React.JSX.Element;
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.ReportToolbar = ReportToolbar;
|
|
7
|
+
const react_1 = __importDefault(require("react"));
|
|
8
|
+
function ReportToolbar({ view, palette, onBack, onToggle, onPrintClient, onPrintPreparer }) {
|
|
9
|
+
return (react_1.default.createElement("div", { className: "no-print", style: {
|
|
10
|
+
position: "sticky",
|
|
11
|
+
top: 0,
|
|
12
|
+
zIndex: 100,
|
|
13
|
+
background: palette.white,
|
|
14
|
+
borderBottom: "1px solid " + palette.gray200,
|
|
15
|
+
padding: "10px 20px",
|
|
16
|
+
display: "flex",
|
|
17
|
+
alignItems: "center",
|
|
18
|
+
justifyContent: "space-between",
|
|
19
|
+
} },
|
|
20
|
+
react_1.default.createElement("button", { onClick: onBack, style: {
|
|
21
|
+
background: "none",
|
|
22
|
+
border: "1px solid " + palette.gray300,
|
|
23
|
+
borderRadius: 8,
|
|
24
|
+
padding: "8px 16px",
|
|
25
|
+
fontSize: 13,
|
|
26
|
+
color: palette.gray700,
|
|
27
|
+
fontFamily: palette.body,
|
|
28
|
+
cursor: "pointer",
|
|
29
|
+
display: "flex",
|
|
30
|
+
alignItems: "center",
|
|
31
|
+
gap: 6,
|
|
32
|
+
} }, "Back to Dashboard"),
|
|
33
|
+
react_1.default.createElement("div", { style: { display: "flex", background: palette.gray100, borderRadius: 8, padding: 2 } },
|
|
34
|
+
react_1.default.createElement("button", { onClick: () => onToggle("client"), style: {
|
|
35
|
+
padding: "6px 16px",
|
|
36
|
+
borderRadius: 6,
|
|
37
|
+
fontSize: 12,
|
|
38
|
+
fontWeight: 600,
|
|
39
|
+
fontFamily: palette.body,
|
|
40
|
+
border: "none",
|
|
41
|
+
cursor: "pointer",
|
|
42
|
+
background: view === "client" ? palette.white : "transparent",
|
|
43
|
+
color: view === "client" ? palette.teal : palette.gray600,
|
|
44
|
+
boxShadow: view === "client" ? "0 1px 3px rgba(0,0,0,0.1)" : "none",
|
|
45
|
+
} }, "Client Report"),
|
|
46
|
+
react_1.default.createElement("button", { onClick: () => onToggle("preparer"), style: {
|
|
47
|
+
padding: "6px 16px",
|
|
48
|
+
borderRadius: 6,
|
|
49
|
+
fontSize: 12,
|
|
50
|
+
fontWeight: 600,
|
|
51
|
+
fontFamily: palette.body,
|
|
52
|
+
border: "none",
|
|
53
|
+
cursor: "pointer",
|
|
54
|
+
background: view === "preparer" ? palette.white : "transparent",
|
|
55
|
+
color: view === "preparer" ? palette.teal : palette.gray600,
|
|
56
|
+
boxShadow: view === "preparer" ? "0 1px 3px rgba(0,0,0,0.1)" : "none",
|
|
57
|
+
} }, "Preparer Workpaper")),
|
|
58
|
+
react_1.default.createElement("div", { style: { display: "flex", gap: 8 } },
|
|
59
|
+
react_1.default.createElement("button", { onClick: onPrintClient, style: {
|
|
60
|
+
background: "none",
|
|
61
|
+
border: "1px solid " + palette.gray300,
|
|
62
|
+
borderRadius: 8,
|
|
63
|
+
padding: "8px 14px",
|
|
64
|
+
fontSize: 12,
|
|
65
|
+
fontWeight: 600,
|
|
66
|
+
color: palette.gray700,
|
|
67
|
+
fontFamily: palette.body,
|
|
68
|
+
cursor: "pointer",
|
|
69
|
+
} }, "Download Client Report"),
|
|
70
|
+
react_1.default.createElement("button", { onClick: onPrintPreparer, style: {
|
|
71
|
+
background: "linear-gradient(135deg," + palette.teal + ",#1A6B6C)",
|
|
72
|
+
border: "none",
|
|
73
|
+
borderRadius: 8,
|
|
74
|
+
padding: "8px 14px",
|
|
75
|
+
fontSize: 12,
|
|
76
|
+
fontWeight: 600,
|
|
77
|
+
color: palette.white,
|
|
78
|
+
fontFamily: palette.body,
|
|
79
|
+
cursor: "pointer",
|
|
80
|
+
} }, "Download Preparer Workpaper"))));
|
|
81
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.SectionHeader = SectionHeader;
|
|
7
|
+
const react_1 = __importDefault(require("react"));
|
|
8
|
+
function SectionHeader({ number, title, subtitle }) {
|
|
9
|
+
return (react_1.default.createElement("div", { className: "mb-4" },
|
|
10
|
+
react_1.default.createElement("div", { className: "flex items-baseline gap-2.5 mb-1.5" },
|
|
11
|
+
react_1.default.createElement("span", { className: "text-[11px] font-bold text-tax-axis-teal font-tax-axis-body" }, number),
|
|
12
|
+
react_1.default.createElement("span", { className: "text-[11px] font-bold uppercase tracking-wider text-tax-axis-text-4 font-tax-axis-body" }, title)),
|
|
13
|
+
react_1.default.createElement("div", { className: "h-0.5 w-12 bg-tax-axis-teal" }),
|
|
14
|
+
subtitle && react_1.default.createElement("p", { className: "text-sm text-tax-axis-text-2 font-tax-axis-body mt-3" }, subtitle)));
|
|
15
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React, { ReactNode } from "react";
|
|
2
|
+
type BadgeColor = "teal" | "orange" | "green" | "red" | "neutral";
|
|
3
|
+
type BadgeVariant = "solid" | "outline";
|
|
4
|
+
type BadgeSize = "xs" | "sm";
|
|
5
|
+
interface TaxAxisBadgeProps {
|
|
6
|
+
children: ReactNode;
|
|
7
|
+
color?: BadgeColor;
|
|
8
|
+
variant?: BadgeVariant;
|
|
9
|
+
size?: BadgeSize;
|
|
10
|
+
}
|
|
11
|
+
export declare function TaxAxisBadge({ children, color, variant, size, }: TaxAxisBadgeProps): React.JSX.Element;
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.TaxAxisBadge = TaxAxisBadge;
|
|
7
|
+
const react_1 = __importDefault(require("react"));
|
|
8
|
+
function TaxAxisBadge({ children, color = "teal", variant = "outline", size = "sm", }) {
|
|
9
|
+
const colorMap = {
|
|
10
|
+
teal: {
|
|
11
|
+
solid: "bg-tax-axis-teal text-white border-tax-axis-teal",
|
|
12
|
+
outline: "bg-tax-axis-teal-bg text-tax-axis-teal-light border-tax-axis-teal",
|
|
13
|
+
},
|
|
14
|
+
orange: {
|
|
15
|
+
solid: "bg-tax-axis-orange text-white border-tax-axis-orange",
|
|
16
|
+
outline: "bg-tax-axis-orange-bg text-tax-axis-orange border-tax-axis-orange-border",
|
|
17
|
+
},
|
|
18
|
+
green: {
|
|
19
|
+
solid: "bg-tax-axis-green text-white border-tax-axis-green",
|
|
20
|
+
outline: "bg-tax-axis-green-bg text-tax-axis-green border-tax-axis-green",
|
|
21
|
+
},
|
|
22
|
+
red: {
|
|
23
|
+
solid: "bg-tax-axis-red text-white border-tax-axis-red",
|
|
24
|
+
outline: "bg-tax-axis-red/10 text-tax-axis-red border-tax-axis-red",
|
|
25
|
+
},
|
|
26
|
+
neutral: {
|
|
27
|
+
solid: "bg-tax-axis-surface-2 text-tax-axis-text-2 border-tax-axis-border",
|
|
28
|
+
outline: "bg-transparent text-tax-axis-text-3 border-tax-axis-border",
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
const sizeClass = size === "xs" ? "text-[9px] px-2 py-0.5" : "text-[10px] px-2.5 py-1";
|
|
32
|
+
const classes = `${colorMap[color][variant]} ${sizeClass} inline-block rounded border font-bold uppercase tracking-wider font-tax-axis-body`;
|
|
33
|
+
return react_1.default.createElement("span", { className: classes }, children);
|
|
34
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React, { ReactNode, MouseEvent } from "react";
|
|
2
|
+
type ButtonVariant = "primary" | "secondary" | "orange" | "ghost";
|
|
3
|
+
interface TaxAxisButtonProps {
|
|
4
|
+
children: ReactNode;
|
|
5
|
+
onClick?: (e?: MouseEvent<HTMLElement>) => void;
|
|
6
|
+
variant?: ButtonVariant;
|
|
7
|
+
disabled?: boolean;
|
|
8
|
+
className?: string;
|
|
9
|
+
type?: "button" | "submit" | "reset";
|
|
10
|
+
}
|
|
11
|
+
export declare function TaxAxisButton({ children, onClick, variant, disabled, className, type, }: TaxAxisButtonProps): React.JSX.Element;
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.TaxAxisButton = TaxAxisButton;
|
|
7
|
+
const react_1 = __importDefault(require("react"));
|
|
8
|
+
function TaxAxisButton({ children, onClick, variant = "primary", disabled, className = "", type = "button", }) {
|
|
9
|
+
const variantClass = {
|
|
10
|
+
primary: "bg-gradient-to-br from-tax-axis-teal to-[#1A6B6C] text-white border-0 shadow-[0_0_20px_rgba(36,131,132,0.25),0_4px_16px_rgba(6,8,33,0.4)]",
|
|
11
|
+
secondary: "bg-transparent border border-tax-axis-border text-tax-axis-text-2",
|
|
12
|
+
orange: "bg-gradient-to-br from-tax-axis-orange to-[#D07A00] text-white border-0 shadow-[0_0_20px_rgba(251,154,29,0.25),0_4px_16px_rgba(6,8,33,0.4)]",
|
|
13
|
+
ghost: "bg-transparent border-0 text-tax-axis-text-2",
|
|
14
|
+
}[variant];
|
|
15
|
+
const classes = `${variantClass} px-7 py-3.5 rounded-lg text-sm font-semibold font-tax-axis-body tracking-tight transition-all ${disabled ? "opacity-40 cursor-not-allowed" : "cursor-pointer"} ${className}`;
|
|
16
|
+
return (react_1.default.createElement("button", { type: type, onClick: disabled ? undefined : onClick, disabled: disabled, className: classes }, children));
|
|
17
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React, { ReactNode } from "react";
|
|
2
|
+
interface TaxAxisCardProps {
|
|
3
|
+
children: ReactNode;
|
|
4
|
+
className?: string;
|
|
5
|
+
padded?: boolean;
|
|
6
|
+
bordered?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare function TaxAxisCard({ children, className, padded, bordered, }: TaxAxisCardProps): React.JSX.Element;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.TaxAxisCard = TaxAxisCard;
|
|
7
|
+
const react_1 = __importDefault(require("react"));
|
|
8
|
+
function TaxAxisCard({ children, className = "", padded = true, bordered = true, }) {
|
|
9
|
+
const base = "bg-tax-axis-surface rounded-xl shadow-lg";
|
|
10
|
+
const border = bordered ? "border border-tax-axis-border" : "";
|
|
11
|
+
const padding = padded ? "p-6" : "";
|
|
12
|
+
return (react_1.default.createElement("div", { className: `${base} ${border} ${padding} ${className}` }, children));
|
|
13
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export { TaxAxisCard } from "./components/shared/TaxAxisCard";
|
|
2
|
+
export { TaxAxisBadge } from "./components/shared/TaxAxisBadge";
|
|
3
|
+
export { TaxAxisButton } from "./components/shared/TaxAxisButton";
|
|
4
|
+
export { SectionHeader } from "./components/shared/SectionHeader";
|
|
5
|
+
export * from "./lib/types";
|
|
6
|
+
export * from "./lib/data";
|
|
7
|
+
export * from "./lib/compute";
|
|
8
|
+
export { TaxAxisIntake } from "./components/intake/TaxAxisIntake";
|
|
9
|
+
export type { TaxAxisIntakeProps } from "./components/intake/TaxAxisIntake";
|
|
10
|
+
export { TaxAxisDocuments } from "./components/documents/TaxAxisDocuments";
|
|
11
|
+
export type { TaxAxisDocumentsProps } from "./components/documents/TaxAxisDocuments";
|
|
12
|
+
export { TaxAxisProcessing } from "./components/processing/TaxAxisProcessing";
|
|
13
|
+
export type { TaxAxisProcessingProps } from "./components/processing/TaxAxisProcessing";
|
|
14
|
+
export { TaxAxisDashboard } from "./components/dashboard/TaxAxisDashboard";
|
|
15
|
+
export type { TaxAxisDashboardProps } from "./components/dashboard/TaxAxisDashboard";
|
|
16
|
+
export { TaxAxisClientReport } from "./components/clientReport/TaxAxisClientReport";
|
|
17
|
+
export type { TaxAxisClientReportProps } from "./components/clientReport/TaxAxisClientReport";
|
|
18
|
+
export { TaxAxisPreparerWorkpaper } from "./components/preparerWorkpaper/TaxAxisPreparerWorkpaper";
|
|
19
|
+
export type { TaxAxisPreparerWorkpaperProps } from "./components/preparerWorkpaper/TaxAxisPreparerWorkpaper";
|
|
20
|
+
export { TaxAxisExtractionReview } from "./components/extractionReview/TaxAxisExtractionReview";
|
|
21
|
+
export type { TaxAxisExtractionReviewProps } from "./components/extractionReview/TaxAxisExtractionReview";
|
|
22
|
+
export { TaxAxisProspectReport } from "./components/prospectReport/TaxAxisProspectReport";
|
|
23
|
+
export type { TaxAxisProspectReportProps } from "./components/prospectReport/TaxAxisProspectReport";
|
|
24
|
+
export { TaxAxisPresentationMode } from "./components/presentationMode/TaxAxisPresentationMode";
|
|
25
|
+
export type { TaxAxisPresentationModeProps } from "./components/presentationMode/TaxAxisPresentationMode";
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.TaxAxisPresentationMode = exports.TaxAxisProspectReport = exports.TaxAxisExtractionReview = exports.TaxAxisPreparerWorkpaper = exports.TaxAxisClientReport = exports.TaxAxisDashboard = exports.TaxAxisProcessing = exports.TaxAxisDocuments = exports.TaxAxisIntake = exports.SectionHeader = exports.TaxAxisButton = exports.TaxAxisBadge = exports.TaxAxisCard = void 0;
|
|
18
|
+
// Shared primitives
|
|
19
|
+
var TaxAxisCard_1 = require("./components/shared/TaxAxisCard");
|
|
20
|
+
Object.defineProperty(exports, "TaxAxisCard", { enumerable: true, get: function () { return TaxAxisCard_1.TaxAxisCard; } });
|
|
21
|
+
var TaxAxisBadge_1 = require("./components/shared/TaxAxisBadge");
|
|
22
|
+
Object.defineProperty(exports, "TaxAxisBadge", { enumerable: true, get: function () { return TaxAxisBadge_1.TaxAxisBadge; } });
|
|
23
|
+
var TaxAxisButton_1 = require("./components/shared/TaxAxisButton");
|
|
24
|
+
Object.defineProperty(exports, "TaxAxisButton", { enumerable: true, get: function () { return TaxAxisButton_1.TaxAxisButton; } });
|
|
25
|
+
var SectionHeader_1 = require("./components/shared/SectionHeader");
|
|
26
|
+
Object.defineProperty(exports, "SectionHeader", { enumerable: true, get: function () { return SectionHeader_1.SectionHeader; } });
|
|
27
|
+
// Types
|
|
28
|
+
__exportStar(require("./lib/types"), exports);
|
|
29
|
+
// Data
|
|
30
|
+
__exportStar(require("./lib/data"), exports);
|
|
31
|
+
// Compute
|
|
32
|
+
__exportStar(require("./lib/compute"), exports);
|
|
33
|
+
// Screens
|
|
34
|
+
var TaxAxisIntake_1 = require("./components/intake/TaxAxisIntake");
|
|
35
|
+
Object.defineProperty(exports, "TaxAxisIntake", { enumerable: true, get: function () { return TaxAxisIntake_1.TaxAxisIntake; } });
|
|
36
|
+
var TaxAxisDocuments_1 = require("./components/documents/TaxAxisDocuments");
|
|
37
|
+
Object.defineProperty(exports, "TaxAxisDocuments", { enumerable: true, get: function () { return TaxAxisDocuments_1.TaxAxisDocuments; } });
|
|
38
|
+
var TaxAxisProcessing_1 = require("./components/processing/TaxAxisProcessing");
|
|
39
|
+
Object.defineProperty(exports, "TaxAxisProcessing", { enumerable: true, get: function () { return TaxAxisProcessing_1.TaxAxisProcessing; } });
|
|
40
|
+
var TaxAxisDashboard_1 = require("./components/dashboard/TaxAxisDashboard");
|
|
41
|
+
Object.defineProperty(exports, "TaxAxisDashboard", { enumerable: true, get: function () { return TaxAxisDashboard_1.TaxAxisDashboard; } });
|
|
42
|
+
var TaxAxisClientReport_1 = require("./components/clientReport/TaxAxisClientReport");
|
|
43
|
+
Object.defineProperty(exports, "TaxAxisClientReport", { enumerable: true, get: function () { return TaxAxisClientReport_1.TaxAxisClientReport; } });
|
|
44
|
+
var TaxAxisPreparerWorkpaper_1 = require("./components/preparerWorkpaper/TaxAxisPreparerWorkpaper");
|
|
45
|
+
Object.defineProperty(exports, "TaxAxisPreparerWorkpaper", { enumerable: true, get: function () { return TaxAxisPreparerWorkpaper_1.TaxAxisPreparerWorkpaper; } });
|
|
46
|
+
var TaxAxisExtractionReview_1 = require("./components/extractionReview/TaxAxisExtractionReview");
|
|
47
|
+
Object.defineProperty(exports, "TaxAxisExtractionReview", { enumerable: true, get: function () { return TaxAxisExtractionReview_1.TaxAxisExtractionReview; } });
|
|
48
|
+
var TaxAxisProspectReport_1 = require("./components/prospectReport/TaxAxisProspectReport");
|
|
49
|
+
Object.defineProperty(exports, "TaxAxisProspectReport", { enumerable: true, get: function () { return TaxAxisProspectReport_1.TaxAxisProspectReport; } });
|
|
50
|
+
var TaxAxisPresentationMode_1 = require("./components/presentationMode/TaxAxisPresentationMode");
|
|
51
|
+
Object.defineProperty(exports, "TaxAxisPresentationMode", { enumerable: true, get: function () { return TaxAxisPresentationMode_1.TaxAxisPresentationMode; } });
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ClientProfile, Strategy, ComputedMap } from "../types";
|
|
2
|
+
export declare const parseNum: (s: string | undefined) => number;
|
|
3
|
+
export declare const fmtTax: (n: number) => string;
|
|
4
|
+
export declare const fmtSavings: (n: number) => string;
|
|
5
|
+
export declare const fmtK: (n: number) => string;
|
|
6
|
+
export declare const fmtDollar: (n: number) => string;
|
|
7
|
+
export declare function filterEligibleStrategies(profile: ClientProfile): Strategy[];
|
|
8
|
+
export declare function computeAllStrategies(profile: ClientProfile): ComputedMap;
|