@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.
Files changed (242) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +2 -2
  3. package/lib/README.md +2 -0
  4. package/lib/components/ClientReferencesSection/DeleteButton.js +11 -11
  5. package/lib/components/ClientReferencesSection/ParoError.js +10 -10
  6. package/lib/components/ClientReferencesSection/TagsSection.js +2 -2
  7. package/lib/components/ClientReferencesSection/styles/BrandedTypography.js +2 -2
  8. package/lib/components/ClientReferencesSection/styles/Buttons.js +15 -15
  9. package/lib/components/ClientReferencesSection/styles/Name.js +5 -5
  10. package/lib/components/ClientReferencesSection/styles/NullContentConditionalColor.js +4 -4
  11. package/lib/components/ClientReferencesSection/styles/SectionBody.js +11 -11
  12. package/lib/components/ClientReferencesSection/styles/SectionTitle.js +6 -6
  13. package/lib/components/ClientReferencesSection/styles/Tags.js +2 -2
  14. package/lib/components/DiscussionThread/DiscussionThread.d.ts +25 -25
  15. package/lib/components/DiscussionThread/DiscussionThread.js +137 -137
  16. package/lib/components/DiscussionThread/chat.d.ts +22 -22
  17. package/lib/components/DiscussionThread/chat.js +106 -106
  18. package/lib/components/DiscussionThread/index.d.ts +1 -1
  19. package/lib/components/DiscussionThread/index.js +5 -5
  20. package/lib/components/DocumentCenter/DocumentTable.d.ts +15 -15
  21. package/lib/components/DocumentCenter/DocumentTable.js +350 -350
  22. package/lib/components/DocumentCenter/DragDropUpload.js +4 -4
  23. package/lib/components/DocumentCenter/UploadFilesButton.d.ts +6 -6
  24. package/lib/components/DocumentCenter/UploadFilesButton.js +29 -29
  25. package/lib/components/EarningsTracker/ActiveProjectCard.d.ts +52 -52
  26. package/lib/components/EarningsTracker/ActiveProjectCard.js +161 -161
  27. package/lib/components/EarningsTracker/CenterCardUI.d.ts +13 -13
  28. package/lib/components/EarningsTracker/CenterCardUI.js +134 -134
  29. package/lib/components/EarningsTracker/EarningsTracker.d.ts +52 -52
  30. package/lib/components/EarningsTracker/EarningsTracker.js +508 -508
  31. package/lib/components/EarningsTracker/EditDateModal.d.ts +22 -22
  32. package/lib/components/EarningsTracker/EditDateModal.js +149 -149
  33. package/lib/components/EarningsTracker/EmailModal.d.ts +14 -14
  34. package/lib/components/EarningsTracker/EmailModal.js +79 -79
  35. package/lib/components/EarningsTracker/EndProjectModal.d.ts +56 -56
  36. package/lib/components/EarningsTracker/EndProjectModal.js +221 -221
  37. package/lib/components/EarningsTracker/LeftCardUI.d.ts +18 -18
  38. package/lib/components/EarningsTracker/LeftCardUI.js +189 -189
  39. package/lib/components/EarningsTracker/LogTimeModalAuthenticated.d.ts +52 -52
  40. package/lib/components/EarningsTracker/LogTimeModalAuthenticated.js +358 -358
  41. package/lib/components/EarningsTracker/ProgressBar.d.ts +4 -4
  42. package/lib/components/EarningsTracker/ProgressBar.js +66 -66
  43. package/lib/components/EarningsTracker/ReviewRequestModal.d.ts +17 -17
  44. package/lib/components/EarningsTracker/ReviewRequestModal.js +135 -135
  45. package/lib/components/EarningsTracker/RightCardUI.d.ts +46 -46
  46. package/lib/components/EarningsTracker/RightCardUI.js +231 -231
  47. package/lib/components/EarningsTracker/index.d.ts +1 -1
  48. package/lib/components/EarningsTracker/index.js +5 -5
  49. package/lib/components/Escalations/CustomTag.d.ts +3 -3
  50. package/lib/components/Escalations/CustomTag.js +25 -25
  51. package/lib/components/Escalations/ViewReponseModal.d.ts +8 -8
  52. package/lib/components/Escalations/ViewReponseModal.js +27 -27
  53. package/lib/components/ExpertProfileHeader/ActionButtonSection.js +6 -6
  54. package/lib/components/ExpertProfileHeader/ProfileSection.js +7 -7
  55. package/lib/components/Invoices/TestDecisionSection.d.ts +1 -1
  56. package/lib/components/Invoices/TestDecisionSection.js +126 -126
  57. package/lib/components/OrganizationChart/OrganizationChart.d.ts +15 -15
  58. package/lib/components/OrganizationChart/OrganizationChart.js +312 -312
  59. package/lib/components/OrganizationChart/PersonCard.js +5 -5
  60. package/lib/components/OrganizationChart/utils.js +79 -79
  61. package/lib/components/ProjectCard/ProgressBar.js +4 -4
  62. package/lib/components/ProjectCard/ReviewRequestModal.js +5 -5
  63. package/lib/components/ProjectIntelligence/MissingInformation/index.js +1 -1
  64. package/lib/components/Reviews/Pagination.js +6 -6
  65. package/lib/components/ReviewsTab/RatingHeader.js +6 -6
  66. package/lib/components/ReviewsTab/expert-shared-components.code-workspace +20 -20
  67. package/lib/components/ReviewsTab/reviewRequestModal.js +5 -5
  68. package/lib/components/shared/Image.js +13 -13
  69. package/lib/components/shared/ProfileTextField.d.ts +18 -18
  70. package/lib/components/shared/ProfileTextField.js +16 -16
  71. package/lib/components/shared/StyledActionButtons.d.ts +7 -7
  72. package/lib/components/shared/StyledActionButtons.js +15 -15
  73. package/lib/components/shared/ToastNotification.d.ts +10 -10
  74. package/lib/components/shared/ToastNotification.js +63 -63
  75. package/lib/index.d.ts +13 -0
  76. package/lib/index.js +27 -1
  77. package/lib/package.json +68 -0
  78. package/lib/tax-axis/components/clientReport/ClientReportCover.d.ts +9 -0
  79. package/lib/tax-axis/components/clientReport/ClientReportCover.js +39 -0
  80. package/lib/tax-axis/components/clientReport/ClientReportTOC.d.ts +8 -0
  81. package/lib/tax-axis/components/clientReport/ClientReportTOC.js +24 -0
  82. package/lib/tax-axis/components/clientReport/ClientReportToolbar.d.ts +2 -0
  83. package/lib/tax-axis/components/clientReport/ClientReportToolbar.js +6 -0
  84. package/lib/tax-axis/components/clientReport/ETRChart.d.ts +10 -0
  85. package/lib/tax-axis/components/clientReport/ETRChart.js +50 -0
  86. package/lib/tax-axis/components/clientReport/ExecutiveSummary.d.ts +15 -0
  87. package/lib/tax-axis/components/clientReport/ExecutiveSummary.js +73 -0
  88. package/lib/tax-axis/components/clientReport/FootnoteBlock.d.ts +11 -0
  89. package/lib/tax-axis/components/clientReport/FootnoteBlock.js +34 -0
  90. package/lib/tax-axis/components/clientReport/ImplementationRoadmap.d.ts +26 -0
  91. package/lib/tax-axis/components/clientReport/ImplementationRoadmap.js +51 -0
  92. package/lib/tax-axis/components/clientReport/ImplementationTimelineChart.d.ts +10 -0
  93. package/lib/tax-axis/components/clientReport/ImplementationTimelineChart.js +49 -0
  94. package/lib/tax-axis/components/clientReport/Methodology.d.ts +10 -0
  95. package/lib/tax-axis/components/clientReport/Methodology.js +40 -0
  96. package/lib/tax-axis/components/clientReport/QuarterlyCashChart.d.ts +10 -0
  97. package/lib/tax-axis/components/clientReport/QuarterlyCashChart.js +56 -0
  98. package/lib/tax-axis/components/clientReport/RecommendedStrategies.d.ts +13 -0
  99. package/lib/tax-axis/components/clientReport/RecommendedStrategies.js +51 -0
  100. package/lib/tax-axis/components/clientReport/SavingsStackChart.d.ts +10 -0
  101. package/lib/tax-axis/components/clientReport/SavingsStackChart.js +66 -0
  102. package/lib/tax-axis/components/clientReport/SectionOpener.d.ts +11 -0
  103. package/lib/tax-axis/components/clientReport/SectionOpener.js +20 -0
  104. package/lib/tax-axis/components/clientReport/Sidebar.d.ts +8 -0
  105. package/lib/tax-axis/components/clientReport/Sidebar.js +37 -0
  106. package/lib/tax-axis/components/clientReport/StrategyCard.d.ts +16 -0
  107. package/lib/tax-axis/components/clientReport/StrategyCard.js +63 -0
  108. package/lib/tax-axis/components/clientReport/TaxAxisClientReport.d.ts +9 -0
  109. package/lib/tax-axis/components/clientReport/TaxAxisClientReport.js +125 -0
  110. package/lib/tax-axis/components/clientReport/applyFootnotes.d.ts +12 -0
  111. package/lib/tax-axis/components/clientReport/applyFootnotes.js +43 -0
  112. package/lib/tax-axis/components/clientReport/palette.d.ts +28 -0
  113. package/lib/tax-axis/components/clientReport/palette.js +34 -0
  114. package/lib/tax-axis/components/dashboard/ConfidenceArc.d.ts +7 -0
  115. package/lib/tax-axis/components/dashboard/ConfidenceArc.js +20 -0
  116. package/lib/tax-axis/components/dashboard/DashboardActions.d.ts +13 -0
  117. package/lib/tax-axis/components/dashboard/DashboardActions.js +94 -0
  118. package/lib/tax-axis/components/dashboard/DashboardSummary.d.ts +11 -0
  119. package/lib/tax-axis/components/dashboard/DashboardSummary.js +98 -0
  120. package/lib/tax-axis/components/dashboard/DashboardTopBar.d.ts +10 -0
  121. package/lib/tax-axis/components/dashboard/DashboardTopBar.js +48 -0
  122. package/lib/tax-axis/components/dashboard/StrategyDetailPanel.d.ts +10 -0
  123. package/lib/tax-axis/components/dashboard/StrategyDetailPanel.js +139 -0
  124. package/lib/tax-axis/components/dashboard/StrategyTile.d.ts +10 -0
  125. package/lib/tax-axis/components/dashboard/StrategyTile.js +82 -0
  126. package/lib/tax-axis/components/dashboard/TaxAxisDashboard.d.ts +12 -0
  127. package/lib/tax-axis/components/dashboard/TaxAxisDashboard.js +285 -0
  128. package/lib/tax-axis/components/dashboard/useCountUp.d.ts +1 -0
  129. package/lib/tax-axis/components/dashboard/useCountUp.js +25 -0
  130. package/lib/tax-axis/components/documents/DocumentCard.d.ts +18 -0
  131. package/lib/tax-axis/components/documents/DocumentCard.js +61 -0
  132. package/lib/tax-axis/components/documents/DocumentTier.d.ts +21 -0
  133. package/lib/tax-axis/components/documents/DocumentTier.js +23 -0
  134. package/lib/tax-axis/components/documents/TaxAxisDocuments.d.ts +8 -0
  135. package/lib/tax-axis/components/documents/TaxAxisDocuments.js +157 -0
  136. package/lib/tax-axis/components/extractionReview/DocumentCard.d.ts +17 -0
  137. package/lib/tax-axis/components/extractionReview/DocumentCard.js +105 -0
  138. package/lib/tax-axis/components/extractionReview/FieldRow.d.ts +17 -0
  139. package/lib/tax-axis/components/extractionReview/FieldRow.js +137 -0
  140. package/lib/tax-axis/components/extractionReview/PurposeBlock.d.ts +7 -0
  141. package/lib/tax-axis/components/extractionReview/PurposeBlock.js +18 -0
  142. package/lib/tax-axis/components/extractionReview/RerunFooter.d.ts +8 -0
  143. package/lib/tax-axis/components/extractionReview/RerunFooter.js +60 -0
  144. package/lib/tax-axis/components/extractionReview/TaxAxisExtractionReview.d.ts +11 -0
  145. package/lib/tax-axis/components/extractionReview/TaxAxisExtractionReview.js +186 -0
  146. package/lib/tax-axis/components/intake/ClientParametersSection.d.ts +7 -0
  147. package/lib/tax-axis/components/intake/ClientParametersSection.js +146 -0
  148. package/lib/tax-axis/components/intake/CpaIntakeQuestionsSection.d.ts +7 -0
  149. package/lib/tax-axis/components/intake/CpaIntakeQuestionsSection.js +93 -0
  150. package/lib/tax-axis/components/intake/IntakeCtaCards.d.ts +9 -0
  151. package/lib/tax-axis/components/intake/IntakeCtaCards.js +30 -0
  152. package/lib/tax-axis/components/intake/RefineAnalysisSection.d.ts +7 -0
  153. package/lib/tax-axis/components/intake/RefineAnalysisSection.js +151 -0
  154. package/lib/tax-axis/components/intake/StateMultiSelect.d.ts +7 -0
  155. package/lib/tax-axis/components/intake/StateMultiSelect.js +90 -0
  156. package/lib/tax-axis/components/intake/StrategyRadar.d.ts +7 -0
  157. package/lib/tax-axis/components/intake/StrategyRadar.js +240 -0
  158. package/lib/tax-axis/components/intake/TaxAxisIntake.d.ts +8 -0
  159. package/lib/tax-axis/components/intake/TaxAxisIntake.js +38 -0
  160. package/lib/tax-axis/components/intake/intakeSchema.d.ts +97 -0
  161. package/lib/tax-axis/components/intake/intakeSchema.js +91 -0
  162. package/lib/tax-axis/components/preparerWorkpaper/CalculationTraceAccordion.d.ts +9 -0
  163. package/lib/tax-axis/components/preparerWorkpaper/CalculationTraceAccordion.js +19 -0
  164. package/lib/tax-axis/components/preparerWorkpaper/EngagementHeader.d.ts +9 -0
  165. package/lib/tax-axis/components/preparerWorkpaper/EngagementHeader.js +43 -0
  166. package/lib/tax-axis/components/preparerWorkpaper/Position6694Accordion.d.ts +9 -0
  167. package/lib/tax-axis/components/preparerWorkpaper/Position6694Accordion.js +25 -0
  168. package/lib/tax-axis/components/preparerWorkpaper/PriorityGroup.d.ts +14 -0
  169. package/lib/tax-axis/components/preparerWorkpaper/PriorityGroup.js +20 -0
  170. package/lib/tax-axis/components/preparerWorkpaper/Section6694Summary.d.ts +9 -0
  171. package/lib/tax-axis/components/preparerWorkpaper/Section6694Summary.js +36 -0
  172. package/lib/tax-axis/components/preparerWorkpaper/SourceDocumentsAccordion.d.ts +9 -0
  173. package/lib/tax-axis/components/preparerWorkpaper/SourceDocumentsAccordion.js +20 -0
  174. package/lib/tax-axis/components/preparerWorkpaper/StrategyWorkpaperCard.d.ts +14 -0
  175. package/lib/tax-axis/components/preparerWorkpaper/StrategyWorkpaperCard.js +53 -0
  176. package/lib/tax-axis/components/preparerWorkpaper/TaxAxisPreparerWorkpaper.d.ts +9 -0
  177. package/lib/tax-axis/components/preparerWorkpaper/TaxAxisPreparerWorkpaper.js +175 -0
  178. package/lib/tax-axis/components/presentationMode/TaxAxisPresentationMode.d.ts +7 -0
  179. package/lib/tax-axis/components/presentationMode/TaxAxisPresentationMode.js +245 -0
  180. package/lib/tax-axis/components/processing/ProcessingStages.d.ts +7 -0
  181. package/lib/tax-axis/components/processing/ProcessingStages.js +17 -0
  182. package/lib/tax-axis/components/processing/TaxAxisProcessing.d.ts +7 -0
  183. package/lib/tax-axis/components/processing/TaxAxisProcessing.js +105 -0
  184. package/lib/tax-axis/components/prospectReport/ProspectCover.d.ts +10 -0
  185. package/lib/tax-axis/components/prospectReport/ProspectCover.js +47 -0
  186. package/lib/tax-axis/components/prospectReport/ProspectDocuments.d.ts +9 -0
  187. package/lib/tax-axis/components/prospectReport/ProspectDocuments.js +31 -0
  188. package/lib/tax-axis/components/prospectReport/ProspectNextSteps.d.ts +13 -0
  189. package/lib/tax-axis/components/prospectReport/ProspectNextSteps.js +37 -0
  190. package/lib/tax-axis/components/prospectReport/ProspectPrintView.d.ts +26 -0
  191. package/lib/tax-axis/components/prospectReport/ProspectPrintView.js +185 -0
  192. package/lib/tax-axis/components/prospectReport/ProspectStrategyCard.d.ts +10 -0
  193. package/lib/tax-axis/components/prospectReport/ProspectStrategyCard.js +52 -0
  194. package/lib/tax-axis/components/prospectReport/SampleAnalysisPreview.d.ts +7 -0
  195. package/lib/tax-axis/components/prospectReport/SampleAnalysisPreview.js +120 -0
  196. package/lib/tax-axis/components/prospectReport/TaxAxisProspectReport.d.ts +9 -0
  197. package/lib/tax-axis/components/prospectReport/TaxAxisProspectReport.js +173 -0
  198. package/lib/tax-axis/components/prospectReport/TaxPositionGap.d.ts +15 -0
  199. package/lib/tax-axis/components/prospectReport/TaxPositionGap.js +45 -0
  200. package/lib/tax-axis/components/prospectReport/theme.d.ts +26 -0
  201. package/lib/tax-axis/components/prospectReport/theme.js +33 -0
  202. package/lib/tax-axis/components/shared/ReportToolbar.d.ts +12 -0
  203. package/lib/tax-axis/components/shared/ReportToolbar.js +81 -0
  204. package/lib/tax-axis/components/shared/SectionHeader.d.ts +8 -0
  205. package/lib/tax-axis/components/shared/SectionHeader.js +15 -0
  206. package/lib/tax-axis/components/shared/TaxAxisBadge.d.ts +12 -0
  207. package/lib/tax-axis/components/shared/TaxAxisBadge.js +34 -0
  208. package/lib/tax-axis/components/shared/TaxAxisButton.d.ts +12 -0
  209. package/lib/tax-axis/components/shared/TaxAxisButton.js +17 -0
  210. package/lib/tax-axis/components/shared/TaxAxisCard.d.ts +9 -0
  211. package/lib/tax-axis/components/shared/TaxAxisCard.js +13 -0
  212. package/lib/tax-axis/index.d.ts +25 -0
  213. package/lib/tax-axis/index.js +51 -0
  214. package/lib/tax-axis/lib/compute/index.d.ts +8 -0
  215. package/lib/tax-axis/lib/compute/index.js +163 -0
  216. package/lib/tax-axis/lib/data/documents.d.ts +3 -0
  217. package/lib/tax-axis/lib/data/documents.js +33 -0
  218. package/lib/tax-axis/lib/data/extractedData.d.ts +2 -0
  219. package/lib/tax-axis/lib/data/extractedData.js +47 -0
  220. package/lib/tax-axis/lib/data/footnoteData.d.ts +2 -0
  221. package/lib/tax-axis/lib/data/footnoteData.js +48 -0
  222. package/lib/tax-axis/lib/data/index.d.ts +11 -0
  223. package/lib/tax-axis/lib/data/index.js +31 -0
  224. package/lib/tax-axis/lib/data/nextSteps.d.ts +2 -0
  225. package/lib/tax-axis/lib/data/nextSteps.js +35 -0
  226. package/lib/tax-axis/lib/data/sidebarLookup.d.ts +2 -0
  227. package/lib/tax-axis/lib/data/sidebarLookup.js +90 -0
  228. package/lib/tax-axis/lib/data/sourceDescriptions.d.ts +1 -0
  229. package/lib/tax-axis/lib/data/sourceDescriptions.js +32 -0
  230. package/lib/tax-axis/lib/data/states.d.ts +6 -0
  231. package/lib/tax-axis/lib/data/states.js +25 -0
  232. package/lib/tax-axis/lib/data/strategies.d.ts +8 -0
  233. package/lib/tax-axis/lib/data/strategies.js +166 -0
  234. package/lib/tax-axis/lib/data/strategyNarrative.d.ts +3 -0
  235. package/lib/tax-axis/lib/data/strategyNarrative.js +170 -0
  236. package/lib/tax-axis/lib/data/strategyProspect.d.ts +2 -0
  237. package/lib/tax-axis/lib/data/strategyProspect.js +66 -0
  238. package/lib/tax-axis/lib/data/workpaperInteractions.d.ts +1 -0
  239. package/lib/tax-axis/lib/data/workpaperInteractions.js +15 -0
  240. package/lib/tax-axis/lib/types/index.d.ts +183 -0
  241. package/lib/tax-axis/lib/types/index.js +7 -0
  242. 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,185 @@
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
+ body, p, span, div, td, th, li { color: #212529 !important; }
20
+ h1, h2, h3, h4, h5, h6, strong, b { color: #060821 !important; }
21
+ .no-print { display: none !important; }
22
+ }
23
+ `),
24
+ 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 } }),
25
+ react_1.default.createElement("div", { style: { marginBottom: 40 } },
26
+ 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"),
27
+ 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),
28
+ react_1.default.createElement("div", { style: { fontSize: 14, color: palette_1.P.gray500, fontFamily: palette_1.P.body, marginBottom: 18 } },
29
+ profile.entity,
30
+ " \u00B7 ",
31
+ profile.industry,
32
+ " \u00B7 Tax Year ",
33
+ profile.year),
34
+ profile.cpaName && (react_1.default.createElement("div", { style: { marginBottom: 24 } },
35
+ 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"),
36
+ react_1.default.createElement("div", { style: { display: "flex", alignItems: "center", gap: 10 } },
37
+ react_1.default.createElement("span", { style: { fontSize: 16, fontWeight: 600, color: palette_1.P.gray900, fontFamily: palette_1.P.head } }, profile.cpaName),
38
+ 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")))),
39
+ react_1.default.createElement("div", { style: { height: 1, background: palette_1.P.gray200, marginBottom: 24 } }),
40
+ react_1.default.createElement("div", { style: { display: "flex", alignItems: "baseline", gap: 8 } },
41
+ react_1.default.createElement("span", { style: { fontSize: 40, fontWeight: 900, color: palette_1.P.teal, fontFamily: palette_1.P.head, letterSpacing: "-1px" } },
42
+ "$",
43
+ displayLo,
44
+ "K \u2013 $",
45
+ displayHi,
46
+ "K"),
47
+ react_1.default.createElement("span", { style: { fontSize: 14, color: palette_1.P.gray500 } }, "in estimated annual savings"))),
48
+ react_1.default.createElement("div", { style: { border: `1px solid ${palette_1.P.gray200}`, borderRadius: 10, padding: "24px 28px", marginBottom: 32 } },
49
+ 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"),
50
+ 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 } },
51
+ bizName,
52
+ " is paying ",
53
+ fmtTax(currentTax),
54
+ " in federal and state tax this year. Here's what that looks like with TaxAxis."),
55
+ react_1.default.createElement("div", { style: { display: "grid", gridTemplateColumns: "1fr 1fr", gap: 14, marginBottom: 18 } },
56
+ react_1.default.createElement("div", { style: { padding: "16px 18px", background: palette_1.P.gray50, border: `1px solid ${palette_1.P.gray200}`, borderRadius: 8 } },
57
+ 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"),
58
+ 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)),
59
+ react_1.default.createElement("div", { style: { fontSize: 10, color: palette_1.P.gray500, fontFamily: palette_1.P.body, lineHeight: 1.45 } },
60
+ "Annual federal + state tax at your current profile (",
61
+ fedRatePct,
62
+ "% federal, ",
63
+ stateRatePct,
64
+ "% state)")),
65
+ react_1.default.createElement("div", { style: { padding: "16px 18px", background: palette_1.P.tealPale, border: `1px solid ${palette_1.P.teal}`, borderRadius: 8 } },
66
+ 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"),
67
+ 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)),
68
+ react_1.default.createElement("div", { style: { fontSize: 10, color: palette_1.P.gray700, fontFamily: palette_1.P.body, lineHeight: 1.45 } },
69
+ "After applying realized savings from ",
70
+ eligible.length,
71
+ " eligible strategies"))),
72
+ 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 } },
73
+ react_1.default.createElement("div", { style: { flex: 1 } },
74
+ 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"),
75
+ react_1.default.createElement("div", { style: { fontSize: 11, color: palette_1.P.gray700, fontFamily: palette_1.P.body, lineHeight: 1.5 } },
76
+ "That's ",
77
+ realizedPctOfCurrent,
78
+ "% of your current tax bill \u2014 and it recurs every year you stay engaged.")),
79
+ 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))),
80
+ 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.")),
81
+ react_1.default.createElement("div", { style: { border: `1px solid ${palette_1.P.gray200}`, borderRadius: 10, padding: "20px 24px", marginBottom: 32 } },
82
+ 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"),
83
+ react_1.default.createElement("div", { style: { display: "grid", gridTemplateColumns: "1fr 1fr 1fr 1fr", gap: 16 } }, [
84
+ { v: `$${displayLo}K\u2013$${displayHi}K`, l: "Est. Savings" },
85
+ { v: String(eligible.length), l: "Strategies Found" },
86
+ { v: String(high.length), l: "High Impact" },
87
+ { v: String(quick.length), l: "Quick Wins" },
88
+ ].map(({ v, l }) => (react_1.default.createElement("div", { key: l },
89
+ 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),
90
+ react_1.default.createElement("div", { style: { fontSize: 9, color: palette_1.P.gray400, fontFamily: palette_1.P.body } }, l)))))),
91
+ react_1.default.createElement("div", { style: { marginBottom: 28 } },
92
+ react_1.default.createElement("div", { style: { display: "flex", alignItems: "baseline", gap: 8, marginBottom: 4 } },
93
+ react_1.default.createElement("span", { style: { fontSize: 10, fontWeight: 700, color: palette_1.P.teal, fontFamily: palette_1.P.mono } }, "01"),
94
+ 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")),
95
+ react_1.default.createElement("div", { style: { height: 2, background: palette_1.P.teal, width: 40, marginBottom: 14 } }),
96
+ react_1.default.createElement("div", { style: { fontSize: 13, color: palette_1.P.gray600, fontFamily: palette_1.P.body, lineHeight: 1.8, marginBottom: 10 } },
97
+ "We evaluated ",
98
+ bizName,
99
+ "'s tax position against 25 federal strategies and identified ",
100
+ react_1.default.createElement("strong", { style: { color: palette_1.P.gray900 } },
101
+ eligible.length,
102
+ " applicable opportunities"),
103
+ " with combined estimated savings of ",
104
+ react_1.default.createElement("strong", { style: { color: palette_1.P.teal } },
105
+ "$",
106
+ displayLo,
107
+ "K\u2013$",
108
+ displayHi,
109
+ "K annually"),
110
+ ". ",
111
+ high.length,
112
+ " strategies could have significant impact."),
113
+ react_1.default.createElement("div", { style: { fontSize: 13, color: palette_1.P.gray600, fontFamily: palette_1.P.body, lineHeight: 1.8 } },
114
+ "The top ",
115
+ top3.length,
116
+ " strategies are detailed below.",
117
+ quick.length > 0 ? ` ${quick.length} can be implemented this week with no structural changes.` : "",
118
+ " These are profile-based estimates \u2014 uploading financial documents will refine calculations and unlock all 25 strategies.")),
119
+ react_1.default.createElement("div", { style: { marginBottom: 28, pageBreakBefore: "always" } },
120
+ react_1.default.createElement("div", { style: { display: "flex", alignItems: "baseline", gap: 8, marginBottom: 4 } },
121
+ react_1.default.createElement("span", { style: { fontSize: 10, fontWeight: 700, color: palette_1.P.teal, fontFamily: palette_1.P.mono } }, "02"),
122
+ 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")),
123
+ react_1.default.createElement("div", { style: { height: 2, background: palette_1.P.teal, width: 40, marginBottom: 16 } }),
124
+ top3.map((s, i) => {
125
+ var _a, _b;
126
+ const narr = strategyNarrative_1.STRATEGY_NARRATIVE[s.rank];
127
+ const c = computed.get(s.rank);
128
+ const sLo = Math.round(((_a = c === null || c === void 0 ? void 0 : c.lo) !== null && _a !== void 0 ? _a : s.lo) / 1000);
129
+ const sHi = Math.round(((_b = c === null || c === void 0 ? void 0 : c.hi) !== null && _b !== void 0 ? _b : s.hi) / 1000);
130
+ const whyText = narr ? narr.whyMatters(profile) : strategyNarrative_1.NARRATIVE_FALLBACK.whyMatters(s);
131
+ const breakdownText = narr ? narr.breakdown(profile, c) : strategyNarrative_1.NARRATIVE_FALLBACK.breakdown(s, c);
132
+ const specialistText = (narr === null || narr === void 0 ? void 0 : narr.whySpecialist) || strategyNarrative_1.NARRATIVE_FALLBACK.whySpecialist(s);
133
+ const nextText = narr ? narr.nextSteps : strategyNarrative_1.NARRATIVE_FALLBACK.nextSteps(s);
134
+ 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" } },
135
+ react_1.default.createElement("div", { style: { display: "flex", justifyContent: "space-between", alignItems: "flex-start", marginBottom: 12 } },
136
+ react_1.default.createElement("div", { style: { display: "flex", alignItems: "center", gap: 12 } },
137
+ 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),
138
+ react_1.default.createElement("div", null,
139
+ react_1.default.createElement("div", { style: { fontSize: 15, fontWeight: 700, color: palette_1.P.gray900, fontFamily: palette_1.P.head } }, s.name),
140
+ react_1.default.createElement("span", { style: { fontSize: 9, fontFamily: palette_1.P.mono, color: palette_1.P.gray400 } },
141
+ s.code,
142
+ " \u00B7 ",
143
+ s.timeline))),
144
+ react_1.default.createElement("div", { style: { textAlign: "right", flexShrink: 0 } },
145
+ react_1.default.createElement("div", { style: { fontSize: 18, fontWeight: 800, color: palette_1.P.teal, fontFamily: palette_1.P.head } },
146
+ "$",
147
+ sLo,
148
+ "K \u2013 $",
149
+ sHi,
150
+ "K"),
151
+ react_1.default.createElement("div", { style: { fontSize: 9, color: palette_1.P.gray400, fontFamily: palette_1.P.mono } }, "est. annual savings"))),
152
+ react_1.default.createElement("div", { style: { marginBottom: 10 } },
153
+ 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"),
154
+ react_1.default.createElement("div", { style: { fontSize: 12, color: palette_1.P.gray600, lineHeight: 1.7, fontFamily: palette_1.P.body } }, whyText)),
155
+ react_1.default.createElement("div", { style: { marginBottom: 10 } },
156
+ 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"),
157
+ react_1.default.createElement("div", { style: { fontSize: 12, color: palette_1.P.gray600, lineHeight: 1.7, fontFamily: palette_1.P.body } }, breakdownText)),
158
+ react_1.default.createElement("div", { style: { marginBottom: 10, borderLeft: `3px solid ${palette_1.P.orange}`, padding: "2px 0 2px 12px" } },
159
+ 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"),
160
+ react_1.default.createElement("div", { style: { fontSize: 12, color: palette_1.P.gray600, lineHeight: 1.7, fontFamily: palette_1.P.body } }, specialistText)),
161
+ react_1.default.createElement("div", { style: { background: palette_1.P.tealPale, borderLeft: `3px solid ${palette_1.P.teal}`, padding: "10px 14px", borderRadius: 4 } },
162
+ 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"),
163
+ 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."))));
164
+ })),
165
+ react_1.default.createElement("div", { style: { marginBottom: 28, pageBreakBefore: "always" } },
166
+ react_1.default.createElement("div", { style: { display: "flex", alignItems: "baseline", gap: 8, marginBottom: 4 } },
167
+ react_1.default.createElement("span", { style: { fontSize: 10, fontWeight: 700, color: palette_1.P.teal, fontFamily: palette_1.P.mono } }, "03"),
168
+ 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")),
169
+ react_1.default.createElement("div", { style: { height: 2, background: palette_1.P.teal, width: 40, marginBottom: 16 } }),
170
+ [
171
+ { tier: "Required", docs: requiredDocs, color: palette_1.P.red },
172
+ { tier: "Recommended", docs: recommendedDocs, color: palette_1.P.orange },
173
+ { tier: "If Applicable", docs: conditionalDocs, color: palette_1.P.gray400 },
174
+ ].map(({ tier, docs, color }) => docs.length > 0 && (react_1.default.createElement("div", { key: tier, style: { marginBottom: 14 } },
175
+ react_1.default.createElement("div", { style: { fontSize: 9, fontWeight: 700, color, textTransform: "uppercase", letterSpacing: 1, marginBottom: 6, fontFamily: palette_1.P.mono } }, tier),
176
+ 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)))))),
177
+ 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 } },
178
+ react_1.default.createElement("div", { style: { display: "flex", alignItems: "center", gap: 6 } },
179
+ react_1.default.createElement("div", { style: { width: 16, height: 16, borderRadius: 4, background: palette_1.P.teal, display: "flex", alignItems: "center", justifyContent: "center" } },
180
+ react_1.default.createElement("span", { style: { fontSize: 8, fontWeight: 700, color: palette_1.P.white } }, "P")),
181
+ react_1.default.createElement("span", { style: { fontFamily: palette_1.P.mono } }, "Paro TaxAxis \u00B7 Confidential")),
182
+ react_1.default.createElement("span", { style: { fontFamily: palette_1.P.mono } },
183
+ profile.cpaName ? `${profile.cpaName} \u00B7 ` : "",
184
+ new Date().toLocaleDateString("en-US", { month: "long", year: "numeric" })))));
185
+ }
@@ -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,7 @@
1
+ import React from "react";
2
+ interface SampleAnalysisPreviewProps {
3
+ sectionNum: string;
4
+ eligibleCount: number;
5
+ }
6
+ export declare function SampleAnalysisPreview({ sectionNum, eligibleCount }: SampleAnalysisPreviewProps): React.JSX.Element;
7
+ export {};
@@ -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;