@paro.io/expert-shared-components 1.14.43 → 1.14.45
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 +96 -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 +284 -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 +183 -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,47 @@
|
|
|
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.ProspectCover = ProspectCover;
|
|
7
|
+
const react_1 = __importDefault(require("react"));
|
|
8
|
+
const theme_1 = require("./theme");
|
|
9
|
+
function ProspectCover({ profile, bizName, displayLo, displayHi }) {
|
|
10
|
+
return (react_1.default.createElement("div", { style: { background: theme_1.T.surface, border: `1px solid ${theme_1.T.border}`, borderRadius: 16, padding: 0, marginBottom: 24, boxShadow: theme_1.T.shadowLg, overflow: "hidden" } },
|
|
11
|
+
react_1.default.createElement("div", { style: { height: 4, background: `linear-gradient(90deg,${theme_1.T.accent},${theme_1.T.orange})` } }),
|
|
12
|
+
react_1.default.createElement("div", { style: { padding: "36px 32px 28px", position: "relative" } },
|
|
13
|
+
react_1.default.createElement("div", { style: { position: "absolute", inset: 0, opacity: 0.02, backgroundImage: `linear-gradient(${theme_1.T.text} 1px,transparent 1px),linear-gradient(90deg,${theme_1.T.text} 1px,transparent 1px)`, backgroundSize: "40px 40px" } }),
|
|
14
|
+
react_1.default.createElement("div", { style: { position: "relative" } },
|
|
15
|
+
react_1.default.createElement("div", { style: { display: "flex", alignItems: "center", justifyContent: "space-between", marginBottom: 24 } },
|
|
16
|
+
react_1.default.createElement("div", { style: { display: "flex", alignItems: "center", gap: 10 } },
|
|
17
|
+
react_1.default.createElement("div", { style: { width: 24, height: 24, borderRadius: 6, background: theme_1.T.accent, display: "flex", alignItems: "center", justifyContent: "center" } },
|
|
18
|
+
react_1.default.createElement("span", { style: { fontSize: 11, fontWeight: 700, color: theme_1.T.white } }, "P")),
|
|
19
|
+
react_1.default.createElement("span", { style: { fontSize: 12, color: theme_1.T.text3, fontFamily: theme_1.T.body } }, "Paro TaxAxis")),
|
|
20
|
+
react_1.default.createElement("span", { style: { fontSize: 10, fontWeight: 600, padding: "4px 10px", background: theme_1.T.orangeBg, border: `1px solid ${theme_1.T.orangeBdr}`, borderRadius: 4, color: theme_1.T.orange, fontFamily: theme_1.T.mono, textTransform: "uppercase", letterSpacing: 1 } }, "Profile Only")),
|
|
21
|
+
react_1.default.createElement("div", { style: { fontSize: 11, fontWeight: 700, textTransform: "uppercase", letterSpacing: "0.2em", color: theme_1.T.text4, marginBottom: 12, fontFamily: theme_1.T.mono } }, "TAX STRATEGY ANALYSIS"),
|
|
22
|
+
react_1.default.createElement("div", { style: { fontSize: 32, fontWeight: 900, color: theme_1.T.white, fontFamily: theme_1.T.head, lineHeight: 1.15, marginBottom: 8 } }, bizName),
|
|
23
|
+
react_1.default.createElement("div", { style: { fontSize: 15, color: theme_1.T.text2, fontFamily: theme_1.T.body, marginBottom: 18 } },
|
|
24
|
+
profile.entity,
|
|
25
|
+
" \u00B7 ",
|
|
26
|
+
profile.industry,
|
|
27
|
+
" \u00B7 Tax Year ",
|
|
28
|
+
profile.year),
|
|
29
|
+
profile.cpaName && (react_1.default.createElement("div", { style: { marginBottom: 24 } },
|
|
30
|
+
react_1.default.createElement("div", { style: { fontSize: 9, fontWeight: 700, textTransform: "uppercase", letterSpacing: "0.18em", color: theme_1.T.text4, fontFamily: theme_1.T.body, marginBottom: 5 } }, "Prepared By"),
|
|
31
|
+
react_1.default.createElement("div", { style: { display: "flex", alignItems: "center", gap: 10 } },
|
|
32
|
+
react_1.default.createElement("span", { style: { fontSize: 16, fontWeight: 600, color: theme_1.T.white, fontFamily: theme_1.T.head } }, profile.cpaName),
|
|
33
|
+
react_1.default.createElement("span", { style: { fontSize: 9, fontWeight: 700, padding: "3px 8px", background: theme_1.T.accentBg, border: `1px solid ${theme_1.T.accent}`, borderRadius: 4, color: theme_1.T.accentLt, fontFamily: theme_1.T.body, letterSpacing: 0.8, textTransform: "uppercase" } }, "Paro Verified")))),
|
|
34
|
+
react_1.default.createElement("div", { style: { height: 1, background: theme_1.T.border, marginBottom: 24 } }),
|
|
35
|
+
react_1.default.createElement("div", { style: { marginBottom: 8 } },
|
|
36
|
+
react_1.default.createElement("span", { style: { fontSize: 44, fontWeight: 900, color: theme_1.T.accent, fontFamily: theme_1.T.head, letterSpacing: "-2px", lineHeight: 1 } },
|
|
37
|
+
"$",
|
|
38
|
+
displayLo,
|
|
39
|
+
"K \u2013 $",
|
|
40
|
+
displayHi,
|
|
41
|
+
"K"),
|
|
42
|
+
react_1.default.createElement("span", { style: { fontSize: 15, color: theme_1.T.text2, fontFamily: theme_1.T.body, marginLeft: 10 } }, "in estimated annual savings")),
|
|
43
|
+
react_1.default.createElement("div", { style: { display: "flex", alignItems: "center", gap: 8, marginBottom: 16 } },
|
|
44
|
+
react_1.default.createElement("span", { style: { fontSize: 11, color: theme_1.T.text3, fontFamily: theme_1.T.body } }, "Confidence:"),
|
|
45
|
+
react_1.default.createElement("div", { style: { display: "flex", gap: 3 } }, [1, 2, 3, 4, 5].map(i => (react_1.default.createElement("div", { key: i, style: { width: 8, height: 8, borderRadius: "50%", background: i <= 3 ? theme_1.T.accent : theme_1.T.surface2 } })))),
|
|
46
|
+
react_1.default.createElement("span", { style: { fontSize: 11, color: theme_1.T.text4, fontFamily: theme_1.T.body } }, "Profile Only"))))));
|
|
47
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
interface ProspectDocumentsProps {
|
|
3
|
+
sectionNum: string;
|
|
4
|
+
requiredDocs: string[];
|
|
5
|
+
recommendedDocs: string[];
|
|
6
|
+
conditionalDocs: string[];
|
|
7
|
+
}
|
|
8
|
+
export declare function ProspectDocuments({ sectionNum, requiredDocs, recommendedDocs, conditionalDocs }: ProspectDocumentsProps): React.JSX.Element;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,31 @@
|
|
|
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.ProspectDocuments = ProspectDocuments;
|
|
7
|
+
const react_1 = __importDefault(require("react"));
|
|
8
|
+
const theme_1 = require("./theme");
|
|
9
|
+
function ProspectDocuments({ sectionNum, requiredDocs, recommendedDocs, conditionalDocs }) {
|
|
10
|
+
return (react_1.default.createElement("div", { style: { marginBottom: 24 } },
|
|
11
|
+
react_1.default.createElement("div", { style: { display: "flex", alignItems: "baseline", gap: 10, marginBottom: 6 } },
|
|
12
|
+
react_1.default.createElement("span", { style: { fontSize: 11, fontWeight: 700, color: theme_1.T.accent, fontFamily: theme_1.T.body } }, sectionNum),
|
|
13
|
+
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 } }, "DOCUMENTS NEEDED")),
|
|
14
|
+
react_1.default.createElement("div", { style: { height: 2, background: theme_1.T.accent, width: 48, marginBottom: 16 } }),
|
|
15
|
+
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 } },
|
|
16
|
+
react_1.default.createElement("div", { style: { fontSize: 14, color: theme_1.T.text2, fontFamily: theme_1.T.body, lineHeight: 1.7, marginBottom: 18 } }, "To turn these estimates into a plan, we need the following:"),
|
|
17
|
+
react_1.default.createElement("div", { style: { background: theme_1.T.accentBg, border: "1px solid rgba(36,131,132,0.2)", borderRadius: 8, padding: "10px 14px", marginBottom: 18, display: "flex", alignItems: "center", justifyContent: "space-between", cursor: "pointer" } },
|
|
18
|
+
react_1.default.createElement("div", { style: { display: "flex", alignItems: "center", gap: 8 } },
|
|
19
|
+
react_1.default.createElement("svg", { width: "14", height: "14", viewBox: "0 0 14 14", fill: "none", style: { flexShrink: 0 } },
|
|
20
|
+
react_1.default.createElement("path", { d: "M6 7.5L8.5 10L12 4", stroke: theme_1.T.accentLt, strokeWidth: "1.5", strokeLinecap: "round" }),
|
|
21
|
+
react_1.default.createElement("rect", { x: "1", y: "1", width: "12", height: "12", rx: "3", stroke: theme_1.T.accentLt, strokeWidth: "1.2" })),
|
|
22
|
+
react_1.default.createElement("span", { style: { fontSize: 12, color: theme_1.T.accentLt, fontFamily: theme_1.T.body, fontWeight: 500 } }, "Connect QuickBooks to skip 5 of these")),
|
|
23
|
+
react_1.default.createElement("span", { style: { fontSize: 10, color: theme_1.T.text4, fontFamily: theme_1.T.mono } }, "BETA")),
|
|
24
|
+
[
|
|
25
|
+
{ tier: "Required", docs: requiredDocs, borderColor: theme_1.T.red, labelColor: theme_1.T.red, fontW: 600 },
|
|
26
|
+
{ tier: "Recommended", docs: recommendedDocs, borderColor: theme_1.T.orange, labelColor: theme_1.T.orange, fontW: 500 },
|
|
27
|
+
{ tier: "If Applicable", docs: conditionalDocs, borderColor: theme_1.T.border, labelColor: theme_1.T.text3, fontW: 400 },
|
|
28
|
+
].map(({ tier, docs, borderColor, labelColor, fontW }) => docs.length > 0 && (react_1.default.createElement("div", { key: tier, style: { marginBottom: 16 } },
|
|
29
|
+
react_1.default.createElement("div", { style: { fontSize: 10, fontWeight: 700, color: labelColor, textTransform: "uppercase", letterSpacing: 1, marginBottom: 8, fontFamily: theme_1.T.mono } }, tier),
|
|
30
|
+
react_1.default.createElement("div", { style: { display: "flex", flexDirection: "column", gap: 6 } }, docs.map(d => (react_1.default.createElement("div", { key: d, style: { display: "flex", alignItems: "center", gap: 10, fontSize: 12, color: theme_1.T.text, fontFamily: theme_1.T.body, fontWeight: fontW, borderLeft: `3px solid ${borderColor}`, paddingLeft: 10, paddingTop: 4, paddingBottom: 4 } }, d))))))))));
|
|
31
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
interface ProspectNextStepsProps {
|
|
3
|
+
sectionNum: string;
|
|
4
|
+
bizName: string;
|
|
5
|
+
onUpgrade?: () => void;
|
|
6
|
+
onPresent?: () => void;
|
|
7
|
+
onPrint: () => void;
|
|
8
|
+
onReset?: () => void;
|
|
9
|
+
confirmReset: boolean;
|
|
10
|
+
onConfirmResetChange: (v: boolean) => void;
|
|
11
|
+
}
|
|
12
|
+
export declare function ProspectNextSteps({ sectionNum, bizName, onUpgrade, onPresent, onPrint, onReset, confirmReset, onConfirmResetChange, }: ProspectNextStepsProps): React.JSX.Element;
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,37 @@
|
|
|
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.ProspectNextSteps = ProspectNextSteps;
|
|
7
|
+
const react_1 = __importDefault(require("react"));
|
|
8
|
+
const theme_1 = require("./theme");
|
|
9
|
+
/* ═══ GlowBtn — inline-styled button matching mock ═══ */
|
|
10
|
+
function GlowBtn({ children, onClick, secondary, style }) {
|
|
11
|
+
return (react_1.default.createElement("button", { onClick: onClick, style: Object.assign({ padding: "14px 28px", border: secondary ? `1px solid ${theme_1.T.border}` : "none", borderRadius: 8, fontSize: 14, fontWeight: 600, fontFamily: theme_1.T.body, letterSpacing: ".2px", cursor: "pointer", background: secondary ? "transparent" : `linear-gradient(135deg,${theme_1.T.accent},#1A6B6C)`, color: secondary ? theme_1.T.text2 : theme_1.T.white, boxShadow: secondary ? "none" : `0 0 20px rgba(36,131,132,0.25),0 4px 16px rgba(6,8,33,0.4)` }, style) }, children));
|
|
12
|
+
}
|
|
13
|
+
function ProspectNextSteps({ sectionNum, bizName, onUpgrade, onPresent, onPrint, onReset, confirmReset, onConfirmResetChange, }) {
|
|
14
|
+
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
15
|
+
react_1.default.createElement("div", { style: { marginBottom: 16 } },
|
|
16
|
+
react_1.default.createElement("div", { style: { display: "flex", alignItems: "baseline", gap: 10, marginBottom: 6 } },
|
|
17
|
+
react_1.default.createElement("span", { style: { fontSize: 11, fontWeight: 700, color: theme_1.T.accent, fontFamily: theme_1.T.body } }, sectionNum),
|
|
18
|
+
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 } }, "NEXT STEPS")),
|
|
19
|
+
react_1.default.createElement("div", { style: { height: 2, background: theme_1.T.accent, width: 48, marginBottom: 16 } }),
|
|
20
|
+
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, position: "relative", overflow: "hidden" } },
|
|
21
|
+
react_1.default.createElement("div", { style: { position: "absolute", top: -20, right: -20, width: 120, height: 120, borderRadius: "50%", background: "radial-gradient(circle,rgba(36,131,132,0.06),transparent 70%)", pointerEvents: "none" } }),
|
|
22
|
+
react_1.default.createElement("div", { style: { position: "relative" } },
|
|
23
|
+
react_1.default.createElement("div", { style: { fontSize: 14, color: theme_1.T.text2, fontFamily: theme_1.T.body, lineHeight: 1.8, marginBottom: 20 } },
|
|
24
|
+
"Upload ",
|
|
25
|
+
bizName,
|
|
26
|
+
"'s documents to run the full TaxAxis analysis \u2014 computed savings with calculation traces, IRS citations, and a client-ready report."),
|
|
27
|
+
react_1.default.createElement("div", { style: { display: "flex", gap: 10, flexWrap: "wrap" } },
|
|
28
|
+
react_1.default.createElement(GlowBtn, { onClick: onUpgrade }, "Upload Documents"),
|
|
29
|
+
react_1.default.createElement(GlowBtn, { onClick: onPresent, style: { fontSize: 13 } }, "Present to Client"),
|
|
30
|
+
react_1.default.createElement(GlowBtn, { secondary: true, onClick: onPrint, style: { fontSize: 13 } }, "Download PDF")),
|
|
31
|
+
react_1.default.createElement("div", { style: { fontSize: 11, color: theme_1.T.text4, marginTop: 12, fontFamily: theme_1.T.body } }, "Typical turnaround: same day. No obligation until you review the results.")))),
|
|
32
|
+
confirmReset ? (react_1.default.createElement("div", { style: { marginTop: 10, padding: "14px 18px", background: theme_1.T.surface, border: `1px solid ${theme_1.T.orangeBdr}`, borderRadius: 10, display: "flex", justifyContent: "space-between", alignItems: "center" } },
|
|
33
|
+
react_1.default.createElement("span", { style: { fontSize: 13, color: theme_1.T.orange, fontFamily: theme_1.T.body } }, "Start a new analysis?"),
|
|
34
|
+
react_1.default.createElement("div", { style: { display: "flex", gap: 8 } },
|
|
35
|
+
react_1.default.createElement("button", { onClick: () => onConfirmResetChange(false), style: { padding: "8px 16px", background: "none", border: `1px solid ${theme_1.T.border}`, borderRadius: 8, fontSize: 12, color: theme_1.T.text3, fontFamily: theme_1.T.body, cursor: "pointer" } }, "Cancel"),
|
|
36
|
+
react_1.default.createElement("button", { onClick: onReset, style: { padding: "8px 16px", background: theme_1.T.orange, border: "none", borderRadius: 8, fontSize: 12, fontWeight: 600, color: theme_1.T.white, fontFamily: theme_1.T.body, cursor: "pointer" } }, "Confirm Reset")))) : (react_1.default.createElement(GlowBtn, { secondary: true, onClick: () => onConfirmResetChange(true), style: { width: "100%", marginTop: 10 } }, "New Analysis"))));
|
|
37
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import type { Strategy, ClientProfile, ComputedMap } from "../../lib/types";
|
|
3
|
+
interface ProspectPrintViewProps {
|
|
4
|
+
profile: ClientProfile;
|
|
5
|
+
bizName: string;
|
|
6
|
+
displayLo: number;
|
|
7
|
+
displayHi: number;
|
|
8
|
+
currentTax: number;
|
|
9
|
+
optimizedTax: number;
|
|
10
|
+
realizedSavings: number;
|
|
11
|
+
realizedPctOfCurrent: number;
|
|
12
|
+
fedRatePct: number;
|
|
13
|
+
stateRatePct: number;
|
|
14
|
+
eligible: Strategy[];
|
|
15
|
+
high: Strategy[];
|
|
16
|
+
quick: Strategy[];
|
|
17
|
+
top3: Strategy[];
|
|
18
|
+
computed: ComputedMap;
|
|
19
|
+
fmtTax: (n: number) => string;
|
|
20
|
+
fmtSavings: (n: number) => string;
|
|
21
|
+
requiredDocs: string[];
|
|
22
|
+
recommendedDocs: string[];
|
|
23
|
+
conditionalDocs: string[];
|
|
24
|
+
}
|
|
25
|
+
export declare function ProspectPrintView({ profile, bizName, displayLo, displayHi, currentTax, optimizedTax, realizedSavings, realizedPctOfCurrent, fedRatePct, stateRatePct, eligible, high, quick, top3, computed, fmtTax, fmtSavings, requiredDocs, recommendedDocs, conditionalDocs, }: ProspectPrintViewProps): React.JSX.Element;
|
|
26
|
+
export {};
|
|
@@ -0,0 +1,183 @@
|
|
|
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.ProspectPrintView = ProspectPrintView;
|
|
7
|
+
const react_1 = __importDefault(require("react"));
|
|
8
|
+
const strategyNarrative_1 = require("../../lib/data/strategyNarrative");
|
|
9
|
+
const palette_1 = require("../clientReport/palette");
|
|
10
|
+
function ProspectPrintView({ profile, bizName, displayLo, displayHi, currentTax, optimizedTax, realizedSavings, realizedPctOfCurrent, fedRatePct, stateRatePct, eligible, high, quick, top3, computed, fmtTax, fmtSavings, requiredDocs, recommendedDocs, conditionalDocs, }) {
|
|
11
|
+
return (react_1.default.createElement("div", { className: "prospect-print-root", style: { background: palette_1.P.white, color: palette_1.P.gray900, fontFamily: palette_1.P.body, maxWidth: 680, margin: "0 auto", padding: "40px 32px" } },
|
|
12
|
+
react_1.default.createElement("style", null, `
|
|
13
|
+
@import url('https://fonts.googleapis.com/css2?family=Playfair+Display:wght@400;600;700;800&display=swap');
|
|
14
|
+
@media print {
|
|
15
|
+
body { background: white !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
|
|
16
|
+
body * { visibility: hidden !important; }
|
|
17
|
+
.prospect-print-root, .prospect-print-root * { visibility: visible !important; }
|
|
18
|
+
.prospect-print-root { position: absolute !important; left: 0 !important; top: 0 !important; width: 100% !important; }
|
|
19
|
+
.no-print { display: none !important; }
|
|
20
|
+
}
|
|
21
|
+
`),
|
|
22
|
+
react_1.default.createElement("div", { style: { height: 5, background: `linear-gradient(90deg,${palette_1.P.teal},${palette_1.P.tealLt},${palette_1.P.orange})`, borderRadius: 2, marginBottom: 36 } }),
|
|
23
|
+
react_1.default.createElement("div", { style: { marginBottom: 40 } },
|
|
24
|
+
react_1.default.createElement("div", { style: { fontSize: 10, fontWeight: 600, color: palette_1.P.gray400, textTransform: "uppercase", letterSpacing: 3, marginBottom: 20, fontFamily: palette_1.P.mono } }, "PROSPECT TAX ANALYSIS"),
|
|
25
|
+
react_1.default.createElement("div", { style: { fontSize: 36, fontWeight: 800, color: palette_1.P.gray900, fontFamily: palette_1.P.head, lineHeight: 1.15, marginBottom: 8 } }, bizName),
|
|
26
|
+
react_1.default.createElement("div", { style: { fontSize: 14, color: palette_1.P.gray500, fontFamily: palette_1.P.body, marginBottom: 18 } },
|
|
27
|
+
profile.entity,
|
|
28
|
+
" \u00B7 ",
|
|
29
|
+
profile.industry,
|
|
30
|
+
" \u00B7 Tax Year ",
|
|
31
|
+
profile.year),
|
|
32
|
+
profile.cpaName && (react_1.default.createElement("div", { style: { marginBottom: 24 } },
|
|
33
|
+
react_1.default.createElement("div", { style: { fontSize: 9, fontWeight: 700, textTransform: "uppercase", letterSpacing: "0.18em", color: palette_1.P.gray400, fontFamily: palette_1.P.body, marginBottom: 5 } }, "Prepared By"),
|
|
34
|
+
react_1.default.createElement("div", { style: { display: "flex", alignItems: "center", gap: 10 } },
|
|
35
|
+
react_1.default.createElement("span", { style: { fontSize: 16, fontWeight: 600, color: palette_1.P.gray900, fontFamily: palette_1.P.head } }, profile.cpaName),
|
|
36
|
+
react_1.default.createElement("span", { style: { fontSize: 9, fontWeight: 700, padding: "3px 8px", background: palette_1.P.tealPale, border: `1px solid ${palette_1.P.teal}`, borderRadius: 4, color: palette_1.P.teal, fontFamily: palette_1.P.body, letterSpacing: 0.8, textTransform: "uppercase" } }, "Paro Verified")))),
|
|
37
|
+
react_1.default.createElement("div", { style: { height: 1, background: palette_1.P.gray200, marginBottom: 24 } }),
|
|
38
|
+
react_1.default.createElement("div", { style: { display: "flex", alignItems: "baseline", gap: 8 } },
|
|
39
|
+
react_1.default.createElement("span", { style: { fontSize: 40, fontWeight: 900, color: palette_1.P.teal, fontFamily: palette_1.P.head, letterSpacing: "-1px" } },
|
|
40
|
+
"$",
|
|
41
|
+
displayLo,
|
|
42
|
+
"K \u2013 $",
|
|
43
|
+
displayHi,
|
|
44
|
+
"K"),
|
|
45
|
+
react_1.default.createElement("span", { style: { fontSize: 14, color: palette_1.P.gray500 } }, "in estimated annual savings"))),
|
|
46
|
+
react_1.default.createElement("div", { style: { border: `1px solid ${palette_1.P.gray200}`, borderRadius: 10, padding: "24px 28px", marginBottom: 32 } },
|
|
47
|
+
react_1.default.createElement("div", { style: { fontSize: 9, fontWeight: 700, textTransform: "uppercase", letterSpacing: "0.15em", color: palette_1.P.gray400, marginBottom: 6, fontFamily: palette_1.P.body } }, "The Opportunity"),
|
|
48
|
+
react_1.default.createElement("div", { style: { fontSize: 16, fontWeight: 600, color: palette_1.P.gray900, fontFamily: palette_1.P.head, lineHeight: 1.4, marginBottom: 20, maxWidth: 520 } },
|
|
49
|
+
bizName,
|
|
50
|
+
" is paying ",
|
|
51
|
+
fmtTax(currentTax),
|
|
52
|
+
" in federal and state tax this year. Here's what that looks like with TaxAxis."),
|
|
53
|
+
react_1.default.createElement("div", { style: { display: "grid", gridTemplateColumns: "1fr 1fr", gap: 14, marginBottom: 18 } },
|
|
54
|
+
react_1.default.createElement("div", { style: { padding: "16px 18px", background: palette_1.P.gray50, border: `1px solid ${palette_1.P.gray200}`, borderRadius: 8 } },
|
|
55
|
+
react_1.default.createElement("div", { style: { fontSize: 9, fontWeight: 700, textTransform: "uppercase", letterSpacing: "0.12em", color: palette_1.P.gray500, marginBottom: 6, fontFamily: palette_1.P.body } }, "Current Position"),
|
|
56
|
+
react_1.default.createElement("div", { style: { fontSize: 26, fontWeight: 800, color: palette_1.P.gray700, fontFamily: palette_1.P.head, letterSpacing: "-1px", lineHeight: 1, marginBottom: 5 } }, fmtTax(currentTax)),
|
|
57
|
+
react_1.default.createElement("div", { style: { fontSize: 10, color: palette_1.P.gray500, fontFamily: palette_1.P.body, lineHeight: 1.45 } },
|
|
58
|
+
"Annual federal + state tax at your current profile (",
|
|
59
|
+
fedRatePct,
|
|
60
|
+
"% federal, ",
|
|
61
|
+
stateRatePct,
|
|
62
|
+
"% state)")),
|
|
63
|
+
react_1.default.createElement("div", { style: { padding: "16px 18px", background: palette_1.P.tealPale, border: `1px solid ${palette_1.P.teal}`, borderRadius: 8 } },
|
|
64
|
+
react_1.default.createElement("div", { style: { fontSize: 9, fontWeight: 700, textTransform: "uppercase", letterSpacing: "0.12em", color: palette_1.P.teal, marginBottom: 6, fontFamily: palette_1.P.body } }, "With TaxAxis"),
|
|
65
|
+
react_1.default.createElement("div", { style: { fontSize: 26, fontWeight: 800, color: palette_1.P.teal, fontFamily: palette_1.P.head, letterSpacing: "-1px", lineHeight: 1, marginBottom: 5 } }, fmtTax(optimizedTax)),
|
|
66
|
+
react_1.default.createElement("div", { style: { fontSize: 10, color: palette_1.P.gray700, fontFamily: palette_1.P.body, lineHeight: 1.45 } },
|
|
67
|
+
"After applying realized savings from ",
|
|
68
|
+
eligible.length,
|
|
69
|
+
" eligible strategies"))),
|
|
70
|
+
react_1.default.createElement("div", { style: { display: "flex", alignItems: "center", gap: 14, padding: "14px 18px", background: palette_1.P.tealPale, border: `1px solid ${palette_1.P.teal}`, borderRadius: 8 } },
|
|
71
|
+
react_1.default.createElement("div", { style: { flex: 1 } },
|
|
72
|
+
react_1.default.createElement("div", { style: { fontSize: 10, fontWeight: 600, color: palette_1.P.teal, textTransform: "uppercase", letterSpacing: "0.12em", fontFamily: palette_1.P.body, marginBottom: 3 } }, "Annual Savings Opportunity"),
|
|
73
|
+
react_1.default.createElement("div", { style: { fontSize: 11, color: palette_1.P.gray700, fontFamily: palette_1.P.body, lineHeight: 1.5 } },
|
|
74
|
+
"That's ",
|
|
75
|
+
realizedPctOfCurrent,
|
|
76
|
+
"% of your current tax bill \u2014 and it recurs every year you stay engaged.")),
|
|
77
|
+
react_1.default.createElement("div", { style: { fontSize: 28, fontWeight: 900, color: palette_1.P.teal, fontFamily: palette_1.P.head, letterSpacing: "-1px", lineHeight: 1, whiteSpace: "nowrap" } }, fmtSavings(realizedSavings))),
|
|
78
|
+
react_1.default.createElement("div", { style: { fontSize: 9, color: palette_1.P.gray400, fontFamily: palette_1.P.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.")),
|
|
79
|
+
react_1.default.createElement("div", { style: { border: `1px solid ${palette_1.P.gray200}`, borderRadius: 10, padding: "20px 24px", marginBottom: 32 } },
|
|
80
|
+
react_1.default.createElement("div", { style: { fontSize: 9, fontWeight: 700, textTransform: "uppercase", letterSpacing: "0.15em", color: palette_1.P.gray400, marginBottom: 14, fontFamily: palette_1.P.mono } }, "AT A GLANCE"),
|
|
81
|
+
react_1.default.createElement("div", { style: { display: "grid", gridTemplateColumns: "1fr 1fr 1fr 1fr", gap: 16 } }, [
|
|
82
|
+
{ v: `$${displayLo}K\u2013$${displayHi}K`, l: "Est. Savings" },
|
|
83
|
+
{ v: String(eligible.length), l: "Strategies Found" },
|
|
84
|
+
{ v: String(high.length), l: "High Impact" },
|
|
85
|
+
{ v: String(quick.length), l: "Quick Wins" },
|
|
86
|
+
].map(({ v, l }) => (react_1.default.createElement("div", { key: l },
|
|
87
|
+
react_1.default.createElement("div", { style: { fontSize: 18, fontWeight: 800, color: palette_1.P.teal, fontFamily: palette_1.P.head, lineHeight: 1.2, marginBottom: 3 } }, v),
|
|
88
|
+
react_1.default.createElement("div", { style: { fontSize: 9, color: palette_1.P.gray400, fontFamily: palette_1.P.body } }, l)))))),
|
|
89
|
+
react_1.default.createElement("div", { style: { marginBottom: 28 } },
|
|
90
|
+
react_1.default.createElement("div", { style: { display: "flex", alignItems: "baseline", gap: 8, marginBottom: 4 } },
|
|
91
|
+
react_1.default.createElement("span", { style: { fontSize: 10, fontWeight: 700, color: palette_1.P.teal, fontFamily: palette_1.P.mono } }, "01"),
|
|
92
|
+
react_1.default.createElement("span", { style: { fontSize: 10, fontWeight: 700, textTransform: "uppercase", letterSpacing: "0.12em", color: palette_1.P.gray400, fontFamily: palette_1.P.body } }, "EXECUTIVE SUMMARY")),
|
|
93
|
+
react_1.default.createElement("div", { style: { height: 2, background: palette_1.P.teal, width: 40, marginBottom: 14 } }),
|
|
94
|
+
react_1.default.createElement("div", { style: { fontSize: 13, color: palette_1.P.gray600, fontFamily: palette_1.P.body, lineHeight: 1.8, marginBottom: 10 } },
|
|
95
|
+
"We evaluated ",
|
|
96
|
+
bizName,
|
|
97
|
+
"'s tax position against 25 federal strategies and identified ",
|
|
98
|
+
react_1.default.createElement("strong", { style: { color: palette_1.P.gray900 } },
|
|
99
|
+
eligible.length,
|
|
100
|
+
" applicable opportunities"),
|
|
101
|
+
" with combined estimated savings of ",
|
|
102
|
+
react_1.default.createElement("strong", { style: { color: palette_1.P.teal } },
|
|
103
|
+
"$",
|
|
104
|
+
displayLo,
|
|
105
|
+
"K\u2013$",
|
|
106
|
+
displayHi,
|
|
107
|
+
"K annually"),
|
|
108
|
+
". ",
|
|
109
|
+
high.length,
|
|
110
|
+
" strategies could have significant impact."),
|
|
111
|
+
react_1.default.createElement("div", { style: { fontSize: 13, color: palette_1.P.gray600, fontFamily: palette_1.P.body, lineHeight: 1.8 } },
|
|
112
|
+
"The top ",
|
|
113
|
+
top3.length,
|
|
114
|
+
" strategies are detailed below.",
|
|
115
|
+
quick.length > 0 ? ` ${quick.length} can be implemented this week with no structural changes.` : "",
|
|
116
|
+
" These are profile-based estimates \u2014 uploading financial documents will refine calculations and unlock all 25 strategies.")),
|
|
117
|
+
react_1.default.createElement("div", { style: { marginBottom: 28, pageBreakBefore: "always" } },
|
|
118
|
+
react_1.default.createElement("div", { style: { display: "flex", alignItems: "baseline", gap: 8, marginBottom: 4 } },
|
|
119
|
+
react_1.default.createElement("span", { style: { fontSize: 10, fontWeight: 700, color: palette_1.P.teal, fontFamily: palette_1.P.mono } }, "02"),
|
|
120
|
+
react_1.default.createElement("span", { style: { fontSize: 10, fontWeight: 700, textTransform: "uppercase", letterSpacing: "0.12em", color: palette_1.P.gray400, fontFamily: palette_1.P.body } }, "RECOMMENDED STRATEGIES")),
|
|
121
|
+
react_1.default.createElement("div", { style: { height: 2, background: palette_1.P.teal, width: 40, marginBottom: 16 } }),
|
|
122
|
+
top3.map((s, i) => {
|
|
123
|
+
var _a, _b;
|
|
124
|
+
const narr = strategyNarrative_1.STRATEGY_NARRATIVE[s.rank];
|
|
125
|
+
const c = computed.get(s.rank);
|
|
126
|
+
const sLo = Math.round(((_a = c === null || c === void 0 ? void 0 : c.lo) !== null && _a !== void 0 ? _a : s.lo) / 1000);
|
|
127
|
+
const sHi = Math.round(((_b = c === null || c === void 0 ? void 0 : c.hi) !== null && _b !== void 0 ? _b : s.hi) / 1000);
|
|
128
|
+
const whyText = narr ? narr.whyMatters(profile) : strategyNarrative_1.NARRATIVE_FALLBACK.whyMatters(s);
|
|
129
|
+
const breakdownText = narr ? narr.breakdown(profile, c) : strategyNarrative_1.NARRATIVE_FALLBACK.breakdown(s, c);
|
|
130
|
+
const specialistText = (narr === null || narr === void 0 ? void 0 : narr.whySpecialist) || strategyNarrative_1.NARRATIVE_FALLBACK.whySpecialist(s);
|
|
131
|
+
const nextText = narr ? narr.nextSteps : strategyNarrative_1.NARRATIVE_FALLBACK.nextSteps(s);
|
|
132
|
+
return (react_1.default.createElement("div", { key: s.rank, style: { border: `1px solid ${palette_1.P.gray200}`, borderRadius: 10, padding: "20px 24px", marginBottom: 14, pageBreakInside: "avoid" } },
|
|
133
|
+
react_1.default.createElement("div", { style: { display: "flex", justifyContent: "space-between", alignItems: "flex-start", marginBottom: 12 } },
|
|
134
|
+
react_1.default.createElement("div", { style: { display: "flex", alignItems: "center", gap: 12 } },
|
|
135
|
+
react_1.default.createElement("div", { style: { width: 28, height: 28, borderRadius: "50%", background: palette_1.P.teal, color: palette_1.P.white, display: "flex", alignItems: "center", justifyContent: "center", fontSize: 12, fontWeight: 700, flexShrink: 0 } }, i + 1),
|
|
136
|
+
react_1.default.createElement("div", null,
|
|
137
|
+
react_1.default.createElement("div", { style: { fontSize: 15, fontWeight: 700, color: palette_1.P.gray900, fontFamily: palette_1.P.head } }, s.name),
|
|
138
|
+
react_1.default.createElement("span", { style: { fontSize: 9, fontFamily: palette_1.P.mono, color: palette_1.P.gray400 } },
|
|
139
|
+
s.code,
|
|
140
|
+
" \u00B7 ",
|
|
141
|
+
s.timeline))),
|
|
142
|
+
react_1.default.createElement("div", { style: { textAlign: "right", flexShrink: 0 } },
|
|
143
|
+
react_1.default.createElement("div", { style: { fontSize: 18, fontWeight: 800, color: palette_1.P.teal, fontFamily: palette_1.P.head } },
|
|
144
|
+
"$",
|
|
145
|
+
sLo,
|
|
146
|
+
"K \u2013 $",
|
|
147
|
+
sHi,
|
|
148
|
+
"K"),
|
|
149
|
+
react_1.default.createElement("div", { style: { fontSize: 9, color: palette_1.P.gray400, fontFamily: palette_1.P.mono } }, "est. annual savings"))),
|
|
150
|
+
react_1.default.createElement("div", { style: { marginBottom: 10 } },
|
|
151
|
+
react_1.default.createElement("div", { style: { fontSize: 9, fontWeight: 700, textTransform: "uppercase", letterSpacing: "0.1em", color: palette_1.P.gray400, marginBottom: 4, fontFamily: palette_1.P.mono } }, "WHY THIS MATTERS"),
|
|
152
|
+
react_1.default.createElement("div", { style: { fontSize: 12, color: palette_1.P.gray600, lineHeight: 1.7, fontFamily: palette_1.P.body } }, whyText)),
|
|
153
|
+
react_1.default.createElement("div", { style: { marginBottom: 10 } },
|
|
154
|
+
react_1.default.createElement("div", { style: { fontSize: 9, fontWeight: 700, textTransform: "uppercase", letterSpacing: "0.1em", color: palette_1.P.gray400, marginBottom: 4, fontFamily: palette_1.P.mono } }, "HOW SAVINGS BREAK DOWN"),
|
|
155
|
+
react_1.default.createElement("div", { style: { fontSize: 12, color: palette_1.P.gray600, lineHeight: 1.7, fontFamily: palette_1.P.body } }, breakdownText)),
|
|
156
|
+
react_1.default.createElement("div", { style: { marginBottom: 10, borderLeft: `3px solid ${palette_1.P.orange}`, padding: "2px 0 2px 12px" } },
|
|
157
|
+
react_1.default.createElement("div", { style: { fontSize: 9, fontWeight: 700, textTransform: "uppercase", letterSpacing: "0.1em", color: palette_1.P.orange, marginBottom: 4, fontFamily: palette_1.P.mono } }, "WHY YOU NEED A SPECIALIST"),
|
|
158
|
+
react_1.default.createElement("div", { style: { fontSize: 12, color: palette_1.P.gray600, lineHeight: 1.7, fontFamily: palette_1.P.body } }, specialistText)),
|
|
159
|
+
react_1.default.createElement("div", { style: { background: palette_1.P.tealPale, borderLeft: `3px solid ${palette_1.P.teal}`, padding: "10px 14px", borderRadius: 4 } },
|
|
160
|
+
react_1.default.createElement("div", { style: { fontSize: 9, fontWeight: 700, textTransform: "uppercase", letterSpacing: "0.1em", color: palette_1.P.teal, marginBottom: 3, fontFamily: palette_1.P.mono } }, "WHAT WE'D DO NEXT"),
|
|
161
|
+
react_1.default.createElement("div", { style: { fontSize: 11, color: palette_1.P.gray700, lineHeight: 1.6, fontFamily: palette_1.P.body } }, typeof nextText === "string" ? nextText : "Provide documents so we can calculate exact savings."))));
|
|
162
|
+
})),
|
|
163
|
+
react_1.default.createElement("div", { style: { marginBottom: 28, pageBreakBefore: "always" } },
|
|
164
|
+
react_1.default.createElement("div", { style: { display: "flex", alignItems: "baseline", gap: 8, marginBottom: 4 } },
|
|
165
|
+
react_1.default.createElement("span", { style: { fontSize: 10, fontWeight: 700, color: palette_1.P.teal, fontFamily: palette_1.P.mono } }, "03"),
|
|
166
|
+
react_1.default.createElement("span", { style: { fontSize: 10, fontWeight: 700, textTransform: "uppercase", letterSpacing: "0.12em", color: palette_1.P.gray400, fontFamily: palette_1.P.body } }, "DOCUMENTS NEEDED")),
|
|
167
|
+
react_1.default.createElement("div", { style: { height: 2, background: palette_1.P.teal, width: 40, marginBottom: 16 } }),
|
|
168
|
+
[
|
|
169
|
+
{ tier: "Required", docs: requiredDocs, color: palette_1.P.red },
|
|
170
|
+
{ tier: "Recommended", docs: recommendedDocs, color: palette_1.P.orange },
|
|
171
|
+
{ tier: "If Applicable", docs: conditionalDocs, color: palette_1.P.gray400 },
|
|
172
|
+
].map(({ tier, docs, color }) => docs.length > 0 && (react_1.default.createElement("div", { key: tier, style: { marginBottom: 14 } },
|
|
173
|
+
react_1.default.createElement("div", { style: { fontSize: 9, fontWeight: 700, color, textTransform: "uppercase", letterSpacing: 1, marginBottom: 6, fontFamily: palette_1.P.mono } }, tier),
|
|
174
|
+
docs.map(d => react_1.default.createElement("div", { key: d, style: { fontSize: 12, color: palette_1.P.gray700, padding: "4px 0 4px 12px", borderLeft: `3px solid ${color}`, marginBottom: 4, fontFamily: palette_1.P.body } }, d)))))),
|
|
175
|
+
react_1.default.createElement("div", { style: { borderTop: `1px solid ${palette_1.P.gray200}`, marginTop: 32, paddingTop: 16, display: "flex", justifyContent: "space-between", alignItems: "center", fontSize: 10, color: palette_1.P.gray400 } },
|
|
176
|
+
react_1.default.createElement("div", { style: { display: "flex", alignItems: "center", gap: 6 } },
|
|
177
|
+
react_1.default.createElement("div", { style: { width: 16, height: 16, borderRadius: 4, background: palette_1.P.teal, display: "flex", alignItems: "center", justifyContent: "center" } },
|
|
178
|
+
react_1.default.createElement("span", { style: { fontSize: 8, fontWeight: 700, color: palette_1.P.white } }, "P")),
|
|
179
|
+
react_1.default.createElement("span", { style: { fontFamily: palette_1.P.mono } }, "Paro TaxAxis \u00B7 Confidential")),
|
|
180
|
+
react_1.default.createElement("span", { style: { fontFamily: palette_1.P.mono } },
|
|
181
|
+
profile.cpaName ? `${profile.cpaName} \u00B7 ` : "",
|
|
182
|
+
new Date().toLocaleDateString("en-US", { month: "long", year: "numeric" })))));
|
|
183
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import type { Strategy, ClientProfile, ComputedMap } from "../../lib/types";
|
|
3
|
+
interface ProspectStrategyCardProps {
|
|
4
|
+
strategy: Strategy;
|
|
5
|
+
index: number;
|
|
6
|
+
profile: ClientProfile;
|
|
7
|
+
computed: ComputedMap;
|
|
8
|
+
}
|
|
9
|
+
export declare function ProspectStrategyCard({ strategy: s, index: i, profile, computed }: ProspectStrategyCardProps): React.JSX.Element;
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,52 @@
|
|
|
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.ProspectStrategyCard = ProspectStrategyCard;
|
|
7
|
+
const react_1 = __importDefault(require("react"));
|
|
8
|
+
const strategyNarrative_1 = require("../../lib/data/strategyNarrative");
|
|
9
|
+
const strategyProspect_1 = require("../../lib/data/strategyProspect");
|
|
10
|
+
const theme_1 = require("./theme");
|
|
11
|
+
function ProspectStrategyCard({ strategy: s, index: i, profile, computed }) {
|
|
12
|
+
var _a, _b;
|
|
13
|
+
const p = strategyProspect_1.STRATEGY_PROSPECT[s.rank];
|
|
14
|
+
const narr = strategyNarrative_1.STRATEGY_NARRATIVE[s.rank];
|
|
15
|
+
const c = computed.get(s.rank);
|
|
16
|
+
const whyText = narr ? narr.whyMatters(profile) : strategyNarrative_1.NARRATIVE_FALLBACK.whyMatters(s);
|
|
17
|
+
const breakdownText = narr ? narr.breakdown(profile, c) : strategyNarrative_1.NARRATIVE_FALLBACK.breakdown(s, c);
|
|
18
|
+
const specialistText = (narr === null || narr === void 0 ? void 0 : narr.whySpecialist) || strategyNarrative_1.NARRATIVE_FALLBACK.whySpecialist(s);
|
|
19
|
+
const nextText = narr ? narr.nextSteps : strategyNarrative_1.NARRATIVE_FALLBACK.nextSteps(s);
|
|
20
|
+
const scaledLo = Math.round(((_a = c === null || c === void 0 ? void 0 : c.lo) !== null && _a !== void 0 ? _a : s.lo) / 1000);
|
|
21
|
+
const scaledHi = Math.round(((_b = c === null || c === void 0 ? void 0 : c.hi) !== null && _b !== void 0 ? _b : s.hi) / 1000);
|
|
22
|
+
return (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 } },
|
|
23
|
+
react_1.default.createElement("div", { style: { display: "flex", alignItems: "flex-start", justifyContent: "space-between", marginBottom: 16 } },
|
|
24
|
+
react_1.default.createElement("div", { style: { display: "flex", alignItems: "center", gap: 14 } },
|
|
25
|
+
react_1.default.createElement("div", { style: { width: 34, height: 34, borderRadius: "50%", background: `linear-gradient(135deg,${theme_1.T.accent},#1A6B6C)`, display: "flex", alignItems: "center", justifyContent: "center", fontSize: 14, fontWeight: 700, color: theme_1.T.white, flexShrink: 0 } }, i + 1),
|
|
26
|
+
react_1.default.createElement("div", null,
|
|
27
|
+
react_1.default.createElement("div", { style: { fontSize: 16, fontWeight: 700, color: theme_1.T.white, fontFamily: theme_1.T.head } }, s.name),
|
|
28
|
+
react_1.default.createElement("span", { style: { fontSize: 10, fontFamily: theme_1.T.mono, color: theme_1.T.accentLt, background: theme_1.T.accentBg, padding: "2px 6px", borderRadius: 3 } },
|
|
29
|
+
s.code,
|
|
30
|
+
" \u00B7 ",
|
|
31
|
+
s.timeline))),
|
|
32
|
+
react_1.default.createElement("div", { style: { textAlign: "right", flexShrink: 0 } },
|
|
33
|
+
react_1.default.createElement("div", { style: { fontSize: 20, fontWeight: 800, color: theme_1.T.accent, fontFamily: theme_1.T.head } },
|
|
34
|
+
"$",
|
|
35
|
+
scaledLo,
|
|
36
|
+
"K \u2013 $",
|
|
37
|
+
scaledHi,
|
|
38
|
+
"K"),
|
|
39
|
+
react_1.default.createElement("div", { style: { fontSize: 10, color: theme_1.T.text3, fontFamily: theme_1.T.mono } }, "est. annual savings"))),
|
|
40
|
+
react_1.default.createElement("div", { style: { marginBottom: 14 } },
|
|
41
|
+
react_1.default.createElement("div", { style: { fontSize: 10, fontWeight: 700, textTransform: "uppercase", letterSpacing: "0.1em", color: theme_1.T.text4, marginBottom: 6, fontFamily: theme_1.T.mono } }, "WHY THIS MATTERS"),
|
|
42
|
+
react_1.default.createElement("div", { style: { fontSize: 13, color: theme_1.T.text2, lineHeight: 1.75, fontFamily: theme_1.T.body } }, whyText)),
|
|
43
|
+
react_1.default.createElement("div", { style: { marginBottom: 14 } },
|
|
44
|
+
react_1.default.createElement("div", { style: { fontSize: 10, fontWeight: 700, textTransform: "uppercase", letterSpacing: "0.1em", color: theme_1.T.text4, marginBottom: 6, fontFamily: theme_1.T.mono } }, "HOW SAVINGS BREAK DOWN"),
|
|
45
|
+
react_1.default.createElement("div", { style: { fontSize: 13, color: theme_1.T.text2, lineHeight: 1.75, fontFamily: theme_1.T.body } }, breakdownText)),
|
|
46
|
+
react_1.default.createElement("div", { style: { marginBottom: 14, borderLeft: `3px solid ${theme_1.T.orange}`, padding: "2px 0 2px 14px" } },
|
|
47
|
+
react_1.default.createElement("div", { style: { fontSize: 10, fontWeight: 700, textTransform: "uppercase", letterSpacing: "0.1em", color: theme_1.T.orange, marginBottom: 6, fontFamily: theme_1.T.mono } }, "WHY YOU NEED A SPECIALIST"),
|
|
48
|
+
react_1.default.createElement("div", { style: { fontSize: 13, color: theme_1.T.text2, lineHeight: 1.75, fontFamily: theme_1.T.body } }, specialistText)),
|
|
49
|
+
react_1.default.createElement("div", { style: { background: theme_1.T.accentBg, border: "1px solid rgba(36,131,132,0.2)", borderRadius: 8, padding: "12px 16px" } },
|
|
50
|
+
react_1.default.createElement("div", { style: { fontSize: 10, fontWeight: 700, textTransform: "uppercase", letterSpacing: "0.1em", color: theme_1.T.accentLt, marginBottom: 4, fontFamily: theme_1.T.mono } }, "WHAT WE'D DO NEXT"),
|
|
51
|
+
react_1.default.createElement("div", { style: { fontSize: 12, color: theme_1.T.text, lineHeight: 1.6, fontFamily: theme_1.T.body } }, typeof nextText === "string" ? nextText : `Provide ${((p === null || p === void 0 ? void 0 : p.docsNeeded) || ["your financial documents"])[0]} so we can calculate exact savings.`))));
|
|
52
|
+
}
|
|
@@ -0,0 +1,120 @@
|
|
|
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.SampleAnalysisPreview = SampleAnalysisPreview;
|
|
27
|
+
const react_1 = __importStar(require("react"));
|
|
28
|
+
const theme_1 = require("./theme");
|
|
29
|
+
function SampleAnalysisPreview({ sectionNum, eligibleCount }) {
|
|
30
|
+
return (react_1.default.createElement("div", { style: { marginBottom: 24 } },
|
|
31
|
+
react_1.default.createElement("div", { style: { display: "flex", alignItems: "baseline", gap: 10, marginBottom: 6 } },
|
|
32
|
+
react_1.default.createElement("span", { style: { fontSize: 11, fontWeight: 700, color: theme_1.T.accent, fontFamily: theme_1.T.body } }, sectionNum),
|
|
33
|
+
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 } }, "A Sample of Your Full Analysis")),
|
|
34
|
+
react_1.default.createElement("div", { style: { height: 2, background: theme_1.T.accent, width: 48, marginBottom: 16 } }),
|
|
35
|
+
react_1.default.createElement("div", { style: { fontSize: 14, color: theme_1.T.text2, fontFamily: theme_1.T.body, lineHeight: 1.75, marginBottom: 18, maxWidth: 620 } }, "Once we have your documents, every eligible strategy gets the full TaxAxis treatment: line-by-line calculation traces with IRS citations, \u00A76694 compliance review, and a CPA-signed implementation plan. Here's a preview using SALT / PTE Optimization, one of your highest-impact opportunities."),
|
|
36
|
+
react_1.default.createElement("div", { style: { background: theme_1.T.surface, border: `1.5px solid ${theme_1.T.accent}`, borderRadius: 14, padding: 0, boxShadow: "0 0 30px rgba(36,131,132,0.15)", position: "relative", overflow: "hidden" } },
|
|
37
|
+
react_1.default.createElement("div", { style: { position: "absolute", top: 14, right: 0, padding: "4px 14px 4px 12px", background: theme_1.T.accent, color: theme_1.T.white, fontSize: 9, fontWeight: 700, letterSpacing: "0.12em", textTransform: "uppercase", fontFamily: theme_1.T.body, borderRadius: "4px 0 0 4px" } }, "Sample Output"),
|
|
38
|
+
react_1.default.createElement("div", { style: { padding: "24px 28px 18px", borderBottom: `1px solid ${theme_1.T.border}` } },
|
|
39
|
+
react_1.default.createElement("div", { style: { fontSize: 10, fontWeight: 700, color: theme_1.T.accentLt, fontFamily: theme_1.T.body, letterSpacing: "0.15em", textTransform: "uppercase", marginBottom: 6 } }, "S15 \u00B7 Pass-Through Entity Tax Election"),
|
|
40
|
+
react_1.default.createElement("div", { style: { fontSize: 20, fontWeight: 700, color: theme_1.T.white, fontFamily: theme_1.T.head, marginBottom: 12 } }, "SALT / PTE Optimization"),
|
|
41
|
+
react_1.default.createElement("div", { style: { display: "flex", alignItems: "center", gap: 10, flexWrap: "wrap" } },
|
|
42
|
+
react_1.default.createElement("span", { style: { fontSize: 9, fontWeight: 700, padding: "4px 9px", background: "rgba(15,110,86,0.18)", border: `1px solid ${theme_1.T.green}`, borderRadius: 4, color: theme_1.T.green, fontFamily: theme_1.T.body, letterSpacing: 0.6, textTransform: "uppercase" } }, "Substantial Authority"),
|
|
43
|
+
react_1.default.createElement("span", { style: { fontSize: 9, fontWeight: 700, padding: "4px 9px", background: theme_1.T.accentBg, border: `1px solid ${theme_1.T.accent}`, borderRadius: 4, color: theme_1.T.accentLt, fontFamily: theme_1.T.body, letterSpacing: 0.6, textTransform: "uppercase" } }, "Priority: HIGH"),
|
|
44
|
+
react_1.default.createElement("span", { style: { fontSize: 9, fontWeight: 700, padding: "4px 9px", background: theme_1.T.surface2, border: `1px solid ${theme_1.T.border}`, borderRadius: 4, color: theme_1.T.text2, fontFamily: theme_1.T.body, letterSpacing: 0.6, textTransform: "uppercase" } }, "Score 24 / 25"))),
|
|
45
|
+
react_1.default.createElement("div", { style: { padding: "20px 28px", borderBottom: `1px solid ${theme_1.T.border}`, background: `linear-gradient(135deg,${theme_1.T.accentBg} 0%,transparent 60%)` } },
|
|
46
|
+
react_1.default.createElement("div", { style: { fontSize: 9, fontWeight: 700, color: theme_1.T.text4, textTransform: "uppercase", letterSpacing: "0.12em", fontFamily: theme_1.T.body, marginBottom: 6 } }, "result_gross \u00B7 confidence_interval"),
|
|
47
|
+
react_1.default.createElement("div", { style: { display: "flex", alignItems: "baseline", gap: 14 } },
|
|
48
|
+
react_1.default.createElement("span", { style: { fontSize: 34, fontWeight: 900, color: theme_1.T.accentLt, fontFamily: theme_1.T.head, letterSpacing: "-1.5px", lineHeight: 1 } }, "$48.5K \u2013 $66.7K"),
|
|
49
|
+
react_1.default.createElement("span", { style: { fontSize: 11, color: theme_1.T.text3, fontFamily: theme_1.T.body } }, "basis: 1-YR-DATA \u00B7 \u00B130%"))),
|
|
50
|
+
react_1.default.createElement("div", { style: { padding: "20px 28px", borderBottom: `1px solid ${theme_1.T.border}` } },
|
|
51
|
+
react_1.default.createElement("div", { style: { fontSize: 9, fontWeight: 700, color: theme_1.T.text4, textTransform: "uppercase", letterSpacing: "0.12em", fontFamily: theme_1.T.body, marginBottom: 10 } }, "calculation_trace.formula"),
|
|
52
|
+
react_1.default.createElement("div", { style: { padding: "12px 14px", background: "rgba(0,0,0,0.18)", border: `1px solid ${theme_1.T.border}`, borderRadius: 6, fontSize: 11, color: theme_1.T.text2, fontFamily: theme_1.T.mono, lineHeight: 1.7, marginBottom: 14, letterSpacing: 0.2 } },
|
|
53
|
+
react_1.default.createElement("div", { style: { color: theme_1.T.text3 } }, "// L2 \u2014 SALT/PTE Optimization (per V9 prompt)"),
|
|
54
|
+
react_1.default.createElement("div", null, "INDIVIDUAL_SALT = state_income \u00D7 state_rate"),
|
|
55
|
+
react_1.default.createElement("div", null, "EFFECTIVE_SALT_CAP = salt_cap_2026 \u2212 MFJ_phaseout"),
|
|
56
|
+
react_1.default.createElement("div", null, "SALT_SHORTFALL = MAX(INDIVIDUAL_SALT \u2212 MIN(salt_paid, EFFECTIVE_SALT_CAP), 0)"),
|
|
57
|
+
react_1.default.createElement("div", null, "PTE_FED_SAVINGS = SALT_SHORTFALL \u00D7 federal_marginal_rate"),
|
|
58
|
+
react_1.default.createElement("div", null, "PTE_STATE_COST = pte_tax_paid \u00D7 (1 \u2212 state_credit_rate)"),
|
|
59
|
+
react_1.default.createElement("div", { style: { color: theme_1.T.accentLt, marginTop: 4 } }, "NET_PTE_BENEFIT = PTE_FED_SAVINGS \u2212 PTE_STATE_COST")),
|
|
60
|
+
react_1.default.createElement("div", { style: { fontSize: 9, fontWeight: 700, color: theme_1.T.text4, textTransform: "uppercase", letterSpacing: "0.12em", fontFamily: theme_1.T.body, marginBottom: 8 } },
|
|
61
|
+
"calculation_trace.inputs ",
|
|
62
|
+
react_1.default.createElement("span", { style: { color: theme_1.T.orange, fontWeight: 700 } }, "\u00B7 illustrative")),
|
|
63
|
+
react_1.default.createElement("div", { style: { display: "grid", gridTemplateColumns: "1fr auto", gap: "6px 16px", fontSize: 11, fontFamily: theme_1.T.mono, marginBottom: 6 } }, [
|
|
64
|
+
["state_income_attributable_to_owner", "$1,750,000"],
|
|
65
|
+
["state_rate", "0.0495 (IL)"],
|
|
66
|
+
["filing_status", "mfj"],
|
|
67
|
+
["MAGI_PROXY: net_income", "$1,750,000"],
|
|
68
|
+
["EFFECTIVE_SALT_CAP", "$0 (fully phased out by MFJ income)"],
|
|
69
|
+
["federal_marginal_rate", "0.24"],
|
|
70
|
+
["state_credit_rate", "1.00 (IL full credit)"],
|
|
71
|
+
["pte_tax_paid", "$86,625"],
|
|
72
|
+
].map(([k, v]) => (react_1.default.createElement(react_1.Fragment, { key: k },
|
|
73
|
+
react_1.default.createElement("span", { style: { color: theme_1.T.text3 } }, k),
|
|
74
|
+
react_1.default.createElement("span", { style: { color: theme_1.T.text, textAlign: "right" } }, v))))),
|
|
75
|
+
react_1.default.createElement("div", { style: { fontSize: 10, color: theme_1.T.text4, fontFamily: theme_1.T.body, fontStyle: "italic", marginTop: 8, lineHeight: 1.5 } }, "Inputs above are illustrative. Final calculation will use values parsed from your uploaded documents and the current TaxAxis state PTE conformity lookup table.")),
|
|
76
|
+
react_1.default.createElement("div", { style: { padding: "20px 28px", borderBottom: `1px solid ${theme_1.T.border}` } },
|
|
77
|
+
react_1.default.createElement("div", { style: { fontSize: 9, fontWeight: 700, color: theme_1.T.text4, textTransform: "uppercase", letterSpacing: "0.12em", fontFamily: theme_1.T.body, marginBottom: 10 } }, "source_documents \u00B7 cross-reference targets"),
|
|
78
|
+
react_1.default.createElement("div", { style: { display: "flex", flexDirection: "column", gap: 7 } }, [
|
|
79
|
+
{ doc: "Form 1120-S", line: "Line 12 \u00B7 Taxes and licenses", field: "pte_tax_paid" },
|
|
80
|
+
{ doc: "Schedule K-1", line: "Box 16, Code A \u00B7 State tax credit info", field: "state_credit_pass_through" },
|
|
81
|
+
{ doc: "Form 1040 Sch A", line: "Line 5a \u00B7 State and local income tax", field: "salt_paid" },
|
|
82
|
+
{ doc: "State Return (IL-1120-ST)", line: "PTE election line items", field: "pte_election_status" },
|
|
83
|
+
{ doc: "Parser-injected", line: "state_pte_lookup[IL]", field: "state_credit_rate, pte_deadline" },
|
|
84
|
+
].map((s, idx) => (react_1.default.createElement("div", { key: idx, style: { display: "grid", gridTemplateColumns: "1.1fr 1.4fr 1fr", gap: 12, fontSize: 11, fontFamily: theme_1.T.body, padding: "7px 12px", background: theme_1.T.surface2, border: `1px solid ${theme_1.T.border}`, borderRadius: 6 } },
|
|
85
|
+
react_1.default.createElement("span", { style: { color: theme_1.T.text, fontWeight: 600 } }, s.doc),
|
|
86
|
+
react_1.default.createElement("span", { style: { color: theme_1.T.text2, fontFamily: theme_1.T.mono, fontSize: 10 } }, s.line),
|
|
87
|
+
react_1.default.createElement("span", { style: { color: theme_1.T.accentLt, fontFamily: theme_1.T.mono, fontSize: 10, textAlign: "right" } },
|
|
88
|
+
"\u2192 ",
|
|
89
|
+
s.field)))))),
|
|
90
|
+
react_1.default.createElement("div", { style: { padding: "18px 28px 22px" } },
|
|
91
|
+
react_1.default.createElement("div", { style: { display: "grid", gridTemplateColumns: "1fr 1fr", gap: 18 } },
|
|
92
|
+
react_1.default.createElement("div", null,
|
|
93
|
+
react_1.default.createElement("div", { style: { fontSize: 9, fontWeight: 700, color: theme_1.T.text4, textTransform: "uppercase", letterSpacing: "0.12em", fontFamily: theme_1.T.body, marginBottom: 6 } }, "irs_cite"),
|
|
94
|
+
react_1.default.createElement("div", { style: { fontSize: 11, color: theme_1.T.text2, fontFamily: theme_1.T.mono, lineHeight: 1.6 } },
|
|
95
|
+
"IRC \u00A7164(b)(6)",
|
|
96
|
+
react_1.default.createElement("br", null),
|
|
97
|
+
"IRS Notice 2020-75",
|
|
98
|
+
react_1.default.createElement("br", null),
|
|
99
|
+
"OBBBA \u00A770109")),
|
|
100
|
+
react_1.default.createElement("div", null,
|
|
101
|
+
react_1.default.createElement("div", { style: { fontSize: 9, fontWeight: 700, color: theme_1.T.text4, textTransform: "uppercase", letterSpacing: "0.12em", fontFamily: theme_1.T.body, marginBottom: 6 } }, "forms_required"),
|
|
102
|
+
react_1.default.createElement("div", { style: { fontSize: 11, color: theme_1.T.text2, fontFamily: theme_1.T.mono, lineHeight: 1.6 } },
|
|
103
|
+
"State PTE election form",
|
|
104
|
+
react_1.default.createElement("br", null),
|
|
105
|
+
"(IL: Schedule B, Form IL-1120-ST)",
|
|
106
|
+
react_1.default.createElement("br", null),
|
|
107
|
+
"Updated Schedule K-1 (Box 13)"))),
|
|
108
|
+
react_1.default.createElement("div", { style: { marginTop: 14, paddingTop: 14, borderTop: `1px solid ${theme_1.T.border}`, display: "flex", justifyContent: "space-between", alignItems: "center", gap: 14 } },
|
|
109
|
+
react_1.default.createElement("div", null,
|
|
110
|
+
react_1.default.createElement("div", { style: { fontSize: 9, fontWeight: 700, color: theme_1.T.orange, textTransform: "uppercase", letterSpacing: "0.12em", fontFamily: theme_1.T.body, marginBottom: 3 } }, "deadline_flag"),
|
|
111
|
+
react_1.default.createElement("div", { style: { fontSize: 11, color: theme_1.T.text2, fontFamily: theme_1.T.body } }, "Per state_pte_lookup \u2014 IL: file with original return")),
|
|
112
|
+
react_1.default.createElement("span", { style: { fontSize: 9, fontWeight: 700, padding: "4px 9px", background: theme_1.T.surface2, border: `1px solid ${theme_1.T.border}`, borderRadius: 4, color: theme_1.T.text3, fontFamily: theme_1.T.mono, letterSpacing: 0.6, textTransform: "uppercase" } }, "algorithm_version V9.0")))),
|
|
113
|
+
react_1.default.createElement("div", { style: { marginTop: 14, padding: "14px 18px", 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, display: "flex", alignItems: "center", gap: 14 } },
|
|
114
|
+
react_1.default.createElement("div", { style: { flex: 1, fontSize: 13, color: theme_1.T.text, fontFamily: theme_1.T.body, lineHeight: 1.55 } },
|
|
115
|
+
react_1.default.createElement("strong", { style: { color: theme_1.T.accentLt, fontWeight: 700 } },
|
|
116
|
+
"All ",
|
|
117
|
+
eligibleCount,
|
|
118
|
+
" of your eligible strategies"),
|
|
119
|
+
" will be analyzed at this depth \u2014 with the same calculation trace, source-document cross-references, IRS citations, and \u00A76694 compliance review."))));
|
|
120
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import type { ClientProfile, TaxAxisScreenProps } from "../../lib/types";
|
|
3
|
+
export interface TaxAxisProspectReportProps extends TaxAxisScreenProps {
|
|
4
|
+
profile: ClientProfile;
|
|
5
|
+
onUpgrade?: () => void;
|
|
6
|
+
onPresent?: () => void;
|
|
7
|
+
onReset?: () => void;
|
|
8
|
+
}
|
|
9
|
+
export declare function TaxAxisProspectReport({ profile, onUpgrade, onPresent, onReset, }: TaxAxisProspectReportProps): React.JSX.Element;
|