@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.
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 +96 -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 +284 -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 +183 -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
@@ -1,63 +1,63 @@
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
- const react_1 = __importStar(require("react"));
27
- const core_1 = require("@material-ui/core");
28
- const base_ui_1 = require("@paro.io/base-ui");
29
- const ToastModal = ({ color, icon, message, duration = 6000, // Default duration is 6 seconds
30
- position = 'bottom-right', }) => {
31
- const [open, setOpen] = (0, react_1.useState)(false);
32
- // Automatically open the modal on mount
33
- (0, react_1.useEffect)(() => {
34
- setOpen(true);
35
- // Automatically close the modal after the specified duration
36
- const timer = setTimeout(() => {
37
- setOpen(false);
38
- }, duration);
39
- // Cleanup the timeout if the component unmounts or if the duration changes
40
- return () => clearTimeout(timer);
41
- }, [duration]);
42
- console.log("triggered");
43
- return (react_1.default.createElement(core_1.Dialog, { open: open, onClose: () => setOpen(false), "aria-labelledby": "toast-modal-title", maxWidth: "xs", fullWidth: true, PaperProps: {
44
- style: {
45
- backgroundColor: '#323232', // Dark background to resemble toast style
46
- color: '#fff', // White text
47
- borderRadius: '8px',
48
- display: 'flex',
49
- justifyContent: 'center',
50
- alignItems: 'center',
51
- zIndex: 9999, // Ensure it’s on top of the MUI Dialog
52
- position: 'absolute', // Absolute positioning to control location
53
- top: position.includes('top') ? '10%' : 'auto',
54
- bottom: position.includes('bottom') ? '10%' : 'auto',
55
- right: position.includes('right') ? '10%' : 'auto',
56
- left: position.includes('left') ? '10%' : 'auto',
57
- },
58
- } },
59
- react_1.default.createElement(core_1.DialogContent, { style: { textAlign: 'center' } },
60
- react_1.default.createElement(base_ui_1.Alert, { color: color, icon: icon, label: message, className: color === 'warning' ? 'bg-warning' : 'bg-success' }),
61
- ",")));
62
- };
63
- exports.default = ToastModal;
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
+ const react_1 = __importStar(require("react"));
27
+ const core_1 = require("@material-ui/core");
28
+ const base_ui_1 = require("@paro.io/base-ui");
29
+ const ToastModal = ({ color, icon, message, duration = 6000, // Default duration is 6 seconds
30
+ position = 'bottom-right', }) => {
31
+ const [open, setOpen] = (0, react_1.useState)(false);
32
+ // Automatically open the modal on mount
33
+ (0, react_1.useEffect)(() => {
34
+ setOpen(true);
35
+ // Automatically close the modal after the specified duration
36
+ const timer = setTimeout(() => {
37
+ setOpen(false);
38
+ }, duration);
39
+ // Cleanup the timeout if the component unmounts or if the duration changes
40
+ return () => clearTimeout(timer);
41
+ }, [duration]);
42
+ console.log("triggered");
43
+ return (react_1.default.createElement(core_1.Dialog, { open: open, onClose: () => setOpen(false), "aria-labelledby": "toast-modal-title", maxWidth: "xs", fullWidth: true, PaperProps: {
44
+ style: {
45
+ backgroundColor: '#323232', // Dark background to resemble toast style
46
+ color: '#fff', // White text
47
+ borderRadius: '8px',
48
+ display: 'flex',
49
+ justifyContent: 'center',
50
+ alignItems: 'center',
51
+ zIndex: 9999, // Ensure it’s on top of the MUI Dialog
52
+ position: 'absolute', // Absolute positioning to control location
53
+ top: position.includes('top') ? '10%' : 'auto',
54
+ bottom: position.includes('bottom') ? '10%' : 'auto',
55
+ right: position.includes('right') ? '10%' : 'auto',
56
+ left: position.includes('left') ? '10%' : 'auto',
57
+ },
58
+ } },
59
+ react_1.default.createElement(core_1.DialogContent, { style: { textAlign: 'center' } },
60
+ react_1.default.createElement(base_ui_1.Alert, { color: color, icon: icon, label: message, className: color === 'warning' ? 'bg-warning' : 'bg-success' }),
61
+ ",")));
62
+ };
63
+ exports.default = ToastModal;
package/lib/index.d.ts CHANGED
@@ -16,3 +16,16 @@ export { DiscussionSection } from './components/Invoices/DiscussionSection';
16
16
  export { fileDownloader } from './components/FileDownloader';
17
17
  export { Escalations } from './components/Escalations';
18
18
  export { ProjectIntelligence } from "./components/ProjectIntelligence";
19
+ export { SectionHeader } from './tax-axis';
20
+ export { TaxAxisBadge } from './tax-axis';
21
+ export { TaxAxisButton } from './tax-axis';
22
+ export { TaxAxisCard } from './tax-axis';
23
+ export { TaxAxisIntake } from './tax-axis';
24
+ export { TaxAxisDocuments } from './tax-axis';
25
+ export { TaxAxisProcessing } from './tax-axis';
26
+ export { TaxAxisDashboard } from './tax-axis';
27
+ export { TaxAxisClientReport } from './tax-axis';
28
+ export { TaxAxisPreparerWorkpaper } from './tax-axis';
29
+ export { TaxAxisExtractionReview } from './tax-axis';
30
+ export { TaxAxisProspectReport } from './tax-axis';
31
+ export { TaxAxisPresentationMode } from './tax-axis';
package/lib/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ProjectIntelligence = exports.Escalations = exports.fileDownloader = exports.DiscussionSection = exports.fileUploader = exports.InvoiceCard = exports.ActiveProjectCard = exports.sharedUtils = exports.ServiceLinesTemplate = exports.HeaderNavBar = exports.DocumentCenter = exports.ProfileCompletedPercentage = exports.ExpertProfileHeader = exports.OrganizationChart = exports.FirmEmployeeSection = exports.ClientReferenceSection = exports.Reviews = exports.ReviewsTab = void 0;
3
+ exports.TaxAxisPresentationMode = exports.TaxAxisProspectReport = exports.TaxAxisExtractionReview = exports.TaxAxisPreparerWorkpaper = exports.TaxAxisClientReport = exports.TaxAxisDashboard = exports.TaxAxisProcessing = exports.TaxAxisDocuments = exports.TaxAxisIntake = exports.TaxAxisCard = exports.TaxAxisButton = exports.TaxAxisBadge = exports.SectionHeader = exports.ProjectIntelligence = exports.Escalations = exports.fileDownloader = exports.DiscussionSection = exports.fileUploader = exports.InvoiceCard = exports.ActiveProjectCard = exports.sharedUtils = exports.ServiceLinesTemplate = exports.HeaderNavBar = exports.DocumentCenter = exports.ProfileCompletedPercentage = exports.ExpertProfileHeader = exports.OrganizationChart = exports.FirmEmployeeSection = exports.ClientReferenceSection = exports.Reviews = exports.ReviewsTab = void 0;
4
4
  var ReviewsTab_1 = require("./components/ReviewsTab");
5
5
  Object.defineProperty(exports, "ReviewsTab", { enumerable: true, get: function () { return ReviewsTab_1.ReviewsTab; } });
6
6
  var Reviews_1 = require("./components/Reviews");
@@ -37,3 +37,29 @@ var Escalations_1 = require("./components/Escalations");
37
37
  Object.defineProperty(exports, "Escalations", { enumerable: true, get: function () { return Escalations_1.Escalations; } });
38
38
  var ProjectIntelligence_1 = require("./components/ProjectIntelligence");
39
39
  Object.defineProperty(exports, "ProjectIntelligence", { enumerable: true, get: function () { return ProjectIntelligence_1.ProjectIntelligence; } });
40
+ var tax_axis_1 = require("./tax-axis");
41
+ Object.defineProperty(exports, "SectionHeader", { enumerable: true, get: function () { return tax_axis_1.SectionHeader; } });
42
+ var tax_axis_2 = require("./tax-axis");
43
+ Object.defineProperty(exports, "TaxAxisBadge", { enumerable: true, get: function () { return tax_axis_2.TaxAxisBadge; } });
44
+ var tax_axis_3 = require("./tax-axis");
45
+ Object.defineProperty(exports, "TaxAxisButton", { enumerable: true, get: function () { return tax_axis_3.TaxAxisButton; } });
46
+ var tax_axis_4 = require("./tax-axis");
47
+ Object.defineProperty(exports, "TaxAxisCard", { enumerable: true, get: function () { return tax_axis_4.TaxAxisCard; } });
48
+ var tax_axis_5 = require("./tax-axis");
49
+ Object.defineProperty(exports, "TaxAxisIntake", { enumerable: true, get: function () { return tax_axis_5.TaxAxisIntake; } });
50
+ var tax_axis_6 = require("./tax-axis");
51
+ Object.defineProperty(exports, "TaxAxisDocuments", { enumerable: true, get: function () { return tax_axis_6.TaxAxisDocuments; } });
52
+ var tax_axis_7 = require("./tax-axis");
53
+ Object.defineProperty(exports, "TaxAxisProcessing", { enumerable: true, get: function () { return tax_axis_7.TaxAxisProcessing; } });
54
+ var tax_axis_8 = require("./tax-axis");
55
+ Object.defineProperty(exports, "TaxAxisDashboard", { enumerable: true, get: function () { return tax_axis_8.TaxAxisDashboard; } });
56
+ var tax_axis_9 = require("./tax-axis");
57
+ Object.defineProperty(exports, "TaxAxisClientReport", { enumerable: true, get: function () { return tax_axis_9.TaxAxisClientReport; } });
58
+ var tax_axis_10 = require("./tax-axis");
59
+ Object.defineProperty(exports, "TaxAxisPreparerWorkpaper", { enumerable: true, get: function () { return tax_axis_10.TaxAxisPreparerWorkpaper; } });
60
+ var tax_axis_11 = require("./tax-axis");
61
+ Object.defineProperty(exports, "TaxAxisExtractionReview", { enumerable: true, get: function () { return tax_axis_11.TaxAxisExtractionReview; } });
62
+ var tax_axis_12 = require("./tax-axis");
63
+ Object.defineProperty(exports, "TaxAxisProspectReport", { enumerable: true, get: function () { return tax_axis_12.TaxAxisProspectReport; } });
64
+ var tax_axis_13 = require("./tax-axis");
65
+ Object.defineProperty(exports, "TaxAxisPresentationMode", { enumerable: true, get: function () { return tax_axis_13.TaxAxisPresentationMode; } });
@@ -0,0 +1,68 @@
1
+ {
2
+ "name": "@paro.io/expert-shared-components",
3
+ "version": "1.14.45",
4
+ "description": "",
5
+ "main": "lib/index.js",
6
+ "scripts": {
7
+ "build": "tsc",
8
+ "build:watch": "tsc --watch",
9
+ "prepare": "yarn build",
10
+ "test": "yarn test:build",
11
+ "test:build": "yarn build",
12
+ "clean": "yarn -rf lib",
13
+ "predeploy": "tsc && cp package.json README.md ./lib",
14
+ "link-local": "yarn link && cd node_modules/react && yarn link && cd ../react-dom && yarn link",
15
+ "unlink-local": "yarn unlink && cd node_modules/react && yarn unlink && cd ../react-dom && yarn unlink"
16
+ },
17
+ "repository": "https://github.com/paroadmin/expert-shared-components.git",
18
+ "keywords": [
19
+ "react",
20
+ "components",
21
+ "shared"
22
+ ],
23
+ "author": "apande@paro.io",
24
+ "license": "MIT",
25
+ "dependencies": {
26
+ "@date-io/dayjs": "1.x",
27
+ "@fortawesome/fontawesome-svg-core": "^6.6.0",
28
+ "@fortawesome/free-solid-svg-icons": "^6.6.0",
29
+ "@fortawesome/react-fontawesome": "^0.2.2",
30
+ "@hookform/resolvers": "3.3.4",
31
+ "@material-ui/core": "^4.11.0",
32
+ "@material-ui/icons": "^4.11.3",
33
+ "@material-ui/lab": "^4.0.0-alpha.61",
34
+ "@material-ui/pickers": "^3.3.11",
35
+ "@paro.io/base-icons": "^1.0.4",
36
+ "@paro.io/base-ui": "^1.8.3",
37
+ "@types/react-input-mask": "^3.0.5",
38
+ "dayjs": "^1.10.7",
39
+ "lodash": "^4.17.21",
40
+ "react": "^18.2.0",
41
+ "react-copy-to-clipboard": "^5.0.4",
42
+ "react-datepicker": "^4.6.0",
43
+ "react-dom": "^17.0.2",
44
+ "react-hook-form": "7.51.1",
45
+ "react-hot-toast": "^2.4.1",
46
+ "react-input-mask": "^3.0.0-alpha.2",
47
+ "styled-components": "^5.3.3",
48
+ "uuid": "8.3.2",
49
+ "yup": "^0.32.11"
50
+ },
51
+ "devDependencies": {
52
+ "@types/lodash": "^4.14.170",
53
+ "@types/react": "18.3.12",
54
+ "@types/react-copy-to-clipboard": "^5.0.2",
55
+ "@types/react-datepicker": "^4.19.6",
56
+ "@types/react-dom": "^18.2.22",
57
+ "@types/styled-components": "^5.1.22",
58
+ "@types/uuid": "^10.0.0",
59
+ "@types/yup": "^0.29.13",
60
+ "typescript": "^5.3.3"
61
+ },
62
+ "files": [
63
+ "lib/**/*"
64
+ ],
65
+ "directories": {
66
+ "lib": "lib"
67
+ }
68
+ }
@@ -0,0 +1,9 @@
1
+ import React from "react";
2
+ import type { ClientProfile } from "../../lib/types";
3
+ import type { Palette } from "./palette";
4
+ interface ClientReportCoverProps {
5
+ profile: ClientProfile;
6
+ palette: Palette;
7
+ }
8
+ export declare function ClientReportCover({ profile, palette }: ClientReportCoverProps): React.JSX.Element;
9
+ export {};
@@ -0,0 +1,39 @@
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.ClientReportCover = ClientReportCover;
7
+ const react_1 = __importDefault(require("react"));
8
+ function ClientReportCover({ profile, palette }) {
9
+ const bizName = profile.bizName || "Client";
10
+ const cpaName = profile.cpaName || "Your Tax Preparer";
11
+ const states = profile.states || [];
12
+ const stateCount = states.length || 1;
13
+ const card = {
14
+ background: palette.white,
15
+ border: "1px solid " + palette.gray200,
16
+ borderRadius: 12,
17
+ padding: "24px 28px",
18
+ marginBottom: 16,
19
+ boxShadow: "0 1px 3px rgba(0,0,0,0.04)",
20
+ };
21
+ return (react_1.default.createElement("div", { style: Object.assign(Object.assign({}, card), { padding: 0, overflow: "hidden", marginBottom: 28 }) },
22
+ react_1.default.createElement("div", { style: { height: 5, background: "linear-gradient(90deg," + palette.teal + " 0%," + palette.tealLt + " 50%," + palette.orange + " 100%)" } }),
23
+ react_1.default.createElement("div", { style: { padding: "44px 36px 36px" } },
24
+ react_1.default.createElement("div", { style: { display: "flex", alignItems: "center", gap: 8, marginBottom: 36 } },
25
+ react_1.default.createElement("div", { style: { width: 28, height: 28, borderRadius: 7, background: palette.teal, display: "flex", alignItems: "center", justifyContent: "center" } },
26
+ react_1.default.createElement("span", { style: { fontSize: 13, fontWeight: 700, color: palette.white } }, "P")),
27
+ react_1.default.createElement("span", { style: { fontSize: 14, fontWeight: 600, color: palette.gray700, fontFamily: palette.head } }, "Paro \u00B7 TaxAxis")),
28
+ react_1.default.createElement("div", { style: { fontSize: 11, fontWeight: 700, textTransform: "uppercase", letterSpacing: "0.2em", color: palette.gray400, marginBottom: 16, fontFamily: palette.mono } }, "TAX STRATEGY ANALYSIS"),
29
+ react_1.default.createElement("div", { style: { fontSize: 42, fontWeight: 800, color: palette.gray900, fontFamily: palette.head, lineHeight: 1.1, marginBottom: 8 } }, bizName),
30
+ react_1.default.createElement("div", { style: { fontSize: 18, color: palette.gray600, fontFamily: palette.head, fontWeight: 400, marginBottom: 32 } }, "Tax Year " + profile.year + " \u00B7 " + profile.entity + " \u00B7 " + stateCount + " State" + (stateCount > 1 ? "s" : "")),
31
+ react_1.default.createElement("div", { style: { height: 1, background: palette.gray200, marginBottom: 24 } }),
32
+ react_1.default.createElement("div", { style: { display: "flex", justifyContent: "space-between", alignItems: "flex-end" } },
33
+ react_1.default.createElement("div", null,
34
+ react_1.default.createElement("div", { style: { fontSize: 12, color: palette.gray500, fontFamily: palette.body, marginBottom: 4 } }, "Prepared by"),
35
+ react_1.default.createElement("div", { style: { fontSize: 14, fontWeight: 600, color: palette.gray800, fontFamily: palette.body } }, cpaName)),
36
+ react_1.default.createElement("div", { style: { textAlign: "right" } },
37
+ react_1.default.createElement("div", { style: { fontSize: 12, color: palette.gray500, fontFamily: palette.body, marginBottom: 4 } }, "Date"),
38
+ react_1.default.createElement("div", { style: { fontSize: 14, fontWeight: 600, color: palette.gray800, fontFamily: palette.body } }, "April 2026"))))));
39
+ }
@@ -0,0 +1,8 @@
1
+ import React from "react";
2
+ import type { Palette } from "./palette";
3
+ interface ClientReportTOCProps {
4
+ bizName: string;
5
+ palette: Palette;
6
+ }
7
+ export declare function ClientReportTOC({ bizName, palette }: ClientReportTOCProps): React.JSX.Element;
8
+ export {};
@@ -0,0 +1,24 @@
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.ClientReportTOC = ClientReportTOC;
7
+ const react_1 = __importDefault(require("react"));
8
+ function ClientReportTOC({ bizName, palette }) {
9
+ const sections = [
10
+ { number: "01", eyebrow: "Executive Summary", headline: "Where " + bizName + "'s tax dollars are going \u2014 and where they don't have to." },
11
+ { number: "02", eyebrow: "Recommended Strategies", headline: "Three priorities to discuss first." },
12
+ { number: "03", eyebrow: "Implementation Roadmap", headline: "Most savings can be locked in within the current quarter." },
13
+ { number: "04", eyebrow: "Methodology", headline: "How TaxAxis arrives at these numbers." },
14
+ ];
15
+ return (react_1.default.createElement("div", { className: "toc-page", style: { pageBreakBefore: "always", breakBefore: "page", pageBreakAfter: "always", breakAfter: "page", padding: "44px 0 36px" } },
16
+ react_1.default.createElement("div", { style: { fontSize: 11, fontWeight: 700, textTransform: "uppercase", letterSpacing: "0.2em", color: palette.gray400, marginBottom: 32, fontFamily: palette.mono } }, "CONTENTS"),
17
+ sections.map(s => (react_1.default.createElement("div", { key: s.number, style: { marginBottom: 24 } },
18
+ react_1.default.createElement("div", { style: { display: "flex", alignItems: "baseline" } },
19
+ react_1.default.createElement("span", { style: { fontSize: 13, fontWeight: 700, color: palette.teal, fontFamily: palette.mono, letterSpacing: "0.05em", marginRight: 12 } }, s.number),
20
+ react_1.default.createElement("span", { style: { fontSize: 16, fontWeight: 600, color: palette.gray900, fontFamily: palette.head } }, s.eyebrow),
21
+ react_1.default.createElement("span", { style: { flex: 1, borderBottom: "1px dotted " + palette.gray300, margin: "0 8px", minWidth: 20, alignSelf: "baseline", position: "relative", top: -3 } }),
22
+ react_1.default.createElement("span", { style: { fontSize: 13, color: palette.gray400, fontFamily: palette.mono } }, "\u2014")),
23
+ react_1.default.createElement("div", { style: { fontSize: 12, color: palette.gray600, fontFamily: palette.body, lineHeight: 1.5, marginTop: 4, paddingLeft: 25 } }, s.headline))))));
24
+ }
@@ -0,0 +1,2 @@
1
+ export { ReportToolbar as ClientReportToolbar } from "../shared/ReportToolbar";
2
+ export type { ReportToolbarProps as ClientReportToolbarProps, ReportView } from "../shared/ReportToolbar";
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ClientReportToolbar = void 0;
4
+ // Re-export from shared location. Hoisted to shared/ReportToolbar per spec S6.
5
+ var ReportToolbar_1 = require("../shared/ReportToolbar");
6
+ Object.defineProperty(exports, "ClientReportToolbar", { enumerable: true, get: function () { return ReportToolbar_1.ReportToolbar; } });
@@ -0,0 +1,10 @@
1
+ import React from "react";
2
+ import type { Palette } from "./palette";
3
+ interface ETRChartProps {
4
+ currentRate: number;
5
+ optimizedRate: number;
6
+ palette: Palette;
7
+ note?: string;
8
+ }
9
+ export declare function ETRChart({ currentRate, optimizedRate, palette, note }: ETRChartProps): React.JSX.Element;
10
+ export {};
@@ -0,0 +1,50 @@
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.ETRChart = ETRChart;
7
+ const react_1 = __importDefault(require("react"));
8
+ function ETRChart({ currentRate, optimizedRate, palette, note }) {
9
+ const W = 440, H = 220;
10
+ const padL = 56, padR = 24, padT = 32, padB = 44;
11
+ const plotW = W - padL - padR, plotH = H - padT - padB;
12
+ const maxRate = Math.max(currentRate, optimizedRate, 35);
13
+ const yScale = (v) => padT + plotH - (v / maxRate) * plotH;
14
+ const barW = 64;
15
+ const barGap = 80;
16
+ const bar1X = padL + plotW / 2 - barW - barGap / 2;
17
+ const bar2X = padL + plotW / 2 + barGap / 2;
18
+ const delta = currentRate - optimizedRate;
19
+ const yTicks = [0, 10, 20, 30];
20
+ return (react_1.default.createElement("div", { className: "chart-block", style: { background: palette.white, border: "1px solid " + palette.gray200, borderRadius: 10, padding: "24px 28px", marginBottom: 8 } },
21
+ react_1.default.createElement("div", { style: { display: "flex", justifyContent: "space-between", alignItems: "baseline", marginBottom: 18 } },
22
+ react_1.default.createElement("div", { style: { fontSize: 10, fontWeight: 700, textTransform: "uppercase", letterSpacing: "0.15em", color: palette.gray400, fontFamily: palette.mono } }, "ESTIMATED EFFECTIVE TAX RATE"),
23
+ react_1.default.createElement("div", { style: { fontSize: 11, fontWeight: 700, color: palette.green, fontFamily: palette.mono } },
24
+ "\u2212",
25
+ delta.toFixed(1),
26
+ " pp")),
27
+ react_1.default.createElement("svg", { viewBox: "0 0 " + W + " " + H, style: { width: "100%", height: "auto", display: "block" } },
28
+ yTicks.map(t => (react_1.default.createElement("g", { key: t },
29
+ react_1.default.createElement("line", { x1: padL, y1: yScale(t), x2: W - padR, y2: yScale(t), stroke: palette.gray100, strokeWidth: "1" }),
30
+ react_1.default.createElement("text", { x: padL - 10, y: yScale(t) + 4, fontSize: "10", fill: palette.gray400, fontFamily: palette.mono, textAnchor: "end" },
31
+ t,
32
+ "%")))),
33
+ react_1.default.createElement("line", { x1: padL, y1: padT + plotH, x2: W - padR, y2: padT + plotH, stroke: palette.gray300, strokeWidth: "1" }),
34
+ react_1.default.createElement("rect", { x: bar1X, y: yScale(currentRate), width: barW, height: padT + plotH - yScale(currentRate), fill: palette.gray400, rx: "2" }),
35
+ react_1.default.createElement("text", { x: bar1X + barW / 2, y: yScale(currentRate) - 8, fontSize: "13", fontWeight: "700", fill: palette.gray700, fontFamily: palette.mono, textAnchor: "middle" },
36
+ currentRate.toFixed(1),
37
+ "%"),
38
+ react_1.default.createElement("text", { x: bar1X + barW / 2, y: padT + plotH + 22, fontSize: "11", fill: palette.gray500, fontFamily: palette.body, textAnchor: "middle" }, "Current"),
39
+ react_1.default.createElement("text", { x: bar1X + barW / 2, y: padT + plotH + 36, fontSize: "9", fill: palette.gray400, fontFamily: palette.body, textAnchor: "middle" }, "marginal"),
40
+ react_1.default.createElement("rect", { x: bar2X, y: yScale(optimizedRate), width: barW, height: padT + plotH - yScale(optimizedRate), fill: palette.teal, rx: "2" }),
41
+ react_1.default.createElement("text", { x: bar2X + barW / 2, y: yScale(optimizedRate) - 8, fontSize: "13", fontWeight: "700", fill: palette.teal, fontFamily: palette.mono, textAnchor: "middle" },
42
+ optimizedRate.toFixed(1),
43
+ "%"),
44
+ react_1.default.createElement("text", { x: bar2X + barW / 2, y: padT + plotH + 22, fontSize: "11", fill: palette.gray500, fontFamily: palette.body, textAnchor: "middle" }, "After"),
45
+ react_1.default.createElement("text", { x: bar2X + barW / 2, y: padT + plotH + 36, fontSize: "9", fill: palette.gray400, fontFamily: palette.body, textAnchor: "middle" }, "strategies"),
46
+ react_1.default.createElement("line", { x1: bar1X + barW + 8, y1: yScale(currentRate), x2: bar2X - 8, y2: yScale(currentRate), stroke: palette.green, strokeWidth: "1", strokeDasharray: "3,3" }),
47
+ react_1.default.createElement("line", { x1: bar2X - 8, y1: yScale(currentRate), x2: bar2X - 8, y2: yScale(optimizedRate), stroke: palette.green, strokeWidth: "1", strokeDasharray: "3,3" }),
48
+ react_1.default.createElement("polygon", { points: bar2X - 8 + "," + yScale(optimizedRate) + " " + (bar2X - 12) + "," + (yScale(optimizedRate) + 5) + " " + (bar2X - 4) + "," + (yScale(optimizedRate) + 5), fill: palette.green })),
49
+ note && (react_1.default.createElement("div", { style: { fontSize: 10, color: palette.gray500, fontFamily: palette.body, lineHeight: 1.6, marginTop: 14, paddingTop: 12, borderTop: "1px solid " + palette.gray100 } }, note))));
50
+ }
@@ -0,0 +1,15 @@
1
+ import React from "react";
2
+ import type { ClientProfile, Strategy, ComputedMap } from "../../lib/types";
3
+ import type { Palette } from "./palette";
4
+ interface ExecutiveSummaryProps {
5
+ profile: ClientProfile;
6
+ eligible: Strategy[];
7
+ computed: ComputedMap;
8
+ totalLo: number;
9
+ totalHi: number;
10
+ nowCount: number;
11
+ top3: Strategy[];
12
+ palette: Palette;
13
+ }
14
+ export declare function ExecutiveSummary({ profile, eligible, computed, totalLo, totalHi, nowCount, top3, palette }: ExecutiveSummaryProps): React.JSX.Element;
15
+ export {};
@@ -0,0 +1,73 @@
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.ExecutiveSummary = ExecutiveSummary;
7
+ const react_1 = __importDefault(require("react"));
8
+ const compute_1 = require("../../lib/compute");
9
+ const SectionOpener_1 = require("./SectionOpener");
10
+ const ETRChart_1 = require("./ETRChart");
11
+ function ExecutiveSummary({ profile, eligible, computed, totalLo, totalHi, nowCount, top3, palette }) {
12
+ const bizName = profile.bizName || "Client";
13
+ const rev = parseInt((profile.revenue || "0").replace(/,/g, "")) || 500000;
14
+ return (react_1.default.createElement(react_1.default.Fragment, null,
15
+ react_1.default.createElement(SectionOpener_1.SectionOpener, { number: "01", eyebrow: "EXECUTIVE SUMMARY", headline: "Where " + bizName + "'s tax dollars are going \u2014 and where they don't have to.", bullets: [
16
+ eligible.length + " strategies apply to your current profile, with combined estimated savings of $" + totalLo + "K\u2013$" + totalHi + "K annually.",
17
+ nowCount > 0
18
+ ? nowCount + " can be initiated this week without any structural changes to your business."
19
+ : "Implementation timeline spans the current tax year with no structural changes required.",
20
+ "Analysis is based on " + (profile.taxDataYears || "1 year") + " of financial data and current law as of April 2026, including OBBBA provisions.",
21
+ ], palette: palette }),
22
+ react_1.default.createElement("div", { style: { marginBottom: 28 } },
23
+ react_1.default.createElement("div", { style: { background: palette.gray50, border: "1px solid " + palette.gray200, borderRadius: 10, padding: "24px 28px", marginBottom: 20 } },
24
+ react_1.default.createElement("div", { style: { fontSize: 10, fontWeight: 700, textTransform: "uppercase", letterSpacing: "0.15em", color: palette.gray400, marginBottom: 16, fontFamily: palette.mono } }, "KEY METRICS"),
25
+ react_1.default.createElement("div", { style: { display: "grid", gridTemplateColumns: "1fr 1fr 1fr 1fr", gap: 16 } }, [
26
+ { v: "$" + totalLo + "K\u2013$" + totalHi + "K", l: "Est. Annual Savings" },
27
+ { v: String(eligible.length), l: "Strategies Identified" },
28
+ { v: String(nowCount), l: "Immediate Actions" },
29
+ { v: String(top3.length), l: "Priority Recommendations" },
30
+ ].map(({ v, l }) => (react_1.default.createElement("div", { key: l },
31
+ react_1.default.createElement("div", { style: { fontSize: 22, fontWeight: 800, color: palette.teal, fontFamily: palette.head, lineHeight: 1.2, marginBottom: 4 } }, v),
32
+ react_1.default.createElement("div", { style: { fontSize: 11, color: palette.gray500, fontFamily: palette.body, lineHeight: 1.4 } }, l)))))),
33
+ react_1.default.createElement("div", { style: { fontSize: 14, color: palette.gray700, lineHeight: 1.8, fontFamily: palette.body, marginBottom: 16 } },
34
+ "We conducted a comprehensive analysis of ",
35
+ bizName,
36
+ "'s federal tax position, evaluating all 25 strategies in the TaxAxis framework against your current financial profile. Our analysis identified ",
37
+ react_1.default.createElement("strong", { style: { color: palette.gray900 } },
38
+ eligible.length,
39
+ " applicable strategies"),
40
+ " with combined estimated savings of ",
41
+ react_1.default.createElement("strong", { style: { color: palette.teal } }, "$" + totalLo + "K\u2013$" + totalHi + "K annually"),
42
+ "."),
43
+ react_1.default.createElement("div", { style: { fontSize: 14, color: palette.gray700, lineHeight: 1.8, fontFamily: palette.body, marginBottom: 16 } },
44
+ top3.length,
45
+ " strategies represent the highest-impact opportunities and are detailed below. ",
46
+ nowCount > 0 ? "Of these and the broader eligible set, " + nowCount + " can be initiated this week with no structural changes to your business." : "",
47
+ " Savings estimates reflect your current revenue of ",
48
+ "$" + Math.round(rev / 1000) + "K",
49
+ ", a combined federal/state marginal rate of ",
50
+ parseFloat(profile.federalRate || "24") + parseFloat(profile.stateRate || "4.95"),
51
+ "%, and ",
52
+ profile.taxDataYears || "1 year",
53
+ " of financial data."),
54
+ (() => {
55
+ const fedRate = parseFloat(profile.federalRate || "24");
56
+ const stateRate = parseFloat(profile.stateRate || "4.95");
57
+ const currentRate = fedRate + stateRate;
58
+ const net = (0, compute_1.parseNum)(profile.netIncome) || (rev * 0.20);
59
+ const aggregateMidSavings = eligible.reduce((a, s) => {
60
+ var _a, _b;
61
+ const c = computed.get(s.rank);
62
+ return a + (((_a = c === null || c === void 0 ? void 0 : c.lo) !== null && _a !== void 0 ? _a : s.lo) + ((_b = c === null || c === void 0 ? void 0 : c.hi) !== null && _b !== void 0 ? _b : s.hi)) / 2;
63
+ }, 0);
64
+ const INTERACTION_DISCOUNT = 0.25;
65
+ const realizedSavings = aggregateMidSavings * INTERACTION_DISCOUNT;
66
+ const currentTax = net * currentRate / 100;
67
+ const cappedSavings = Math.min(realizedSavings, currentTax);
68
+ const optimizedTax = currentTax - cappedSavings;
69
+ const optimizedRate = net > 0 ? Math.round(optimizedTax / net * 1000) / 10 : currentRate;
70
+ const aggregateExceedsLiability = aggregateMidSavings > currentTax;
71
+ return (react_1.default.createElement(ETRChart_1.ETRChart, { currentRate: currentRate, optimizedRate: optimizedRate, palette: palette, note: "Effective rate after applying realized-savings adjustment to aggregate strategy estimates. Realized combined savings reflect strategy interactions, marginal-rate exhaustion, and ordering effects per \u00A76694 reasonableness \u2014 typically 25\u201340% of theoretical aggregate. See methodology." + (aggregateExceedsLiability ? " Aggregate theoretical savings at this profile exceed current-year tax liability; multi-year sequencing applies." : "") }));
72
+ })())));
73
+ }
@@ -0,0 +1,11 @@
1
+ import React from "react";
2
+ import type { Palette } from "./palette";
3
+ interface FootnoteBlockProps {
4
+ assigned: {
5
+ num: number;
6
+ note: string;
7
+ }[];
8
+ palette: Palette;
9
+ }
10
+ export declare function FootnoteBlock({ assigned, palette }: FootnoteBlockProps): React.JSX.Element | null;
11
+ export {};
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.FootnoteBlock = FootnoteBlock;
7
+ const react_1 = __importDefault(require("react"));
8
+ function FootnoteBlock({ assigned, palette }) {
9
+ if (!assigned || assigned.length === 0)
10
+ return null;
11
+ return (react_1.default.createElement("div", { className: "fn-block", style: {
12
+ marginTop: 10,
13
+ paddingTop: 8,
14
+ borderTop: "1px solid " + palette.gray300,
15
+ clear: "both",
16
+ } }, assigned.map((fn) => (react_1.default.createElement("div", { key: "fnblock-" + fn.num, style: {
17
+ fontSize: 9,
18
+ lineHeight: 1.35,
19
+ color: palette.gray800,
20
+ fontFamily: palette.body,
21
+ marginBottom: 2,
22
+ display: "flex",
23
+ gap: 6,
24
+ } },
25
+ react_1.default.createElement("span", { style: {
26
+ fontFamily: palette.mono,
27
+ color: palette.teal,
28
+ fontWeight: 600,
29
+ flexShrink: 0,
30
+ } },
31
+ fn.num,
32
+ "."),
33
+ react_1.default.createElement("span", null, fn.note))))));
34
+ }
@@ -0,0 +1,26 @@
1
+ import React from "react";
2
+ import type { Strategy, ComputedMap } from "../../lib/types";
3
+ import type { Palette } from "./palette";
4
+ interface BucketDef {
5
+ key: string;
6
+ label: string;
7
+ color: string;
8
+ }
9
+ interface BucketTotal {
10
+ strategies: Strategy[];
11
+ lo: number;
12
+ hi: number;
13
+ }
14
+ interface ImplementationRoadmapProps {
15
+ eligible: Strategy[];
16
+ computed: ComputedMap;
17
+ top3: Strategy[];
18
+ nowCount: number;
19
+ nowMidK: number;
20
+ bucketDefs: BucketDef[];
21
+ bucketTotals: Record<string, BucketTotal>;
22
+ activeBuckets: BucketDef[];
23
+ palette: Palette;
24
+ }
25
+ export declare function ImplementationRoadmap({ eligible, computed, top3, nowCount, nowMidK, bucketDefs, bucketTotals, activeBuckets, palette, }: ImplementationRoadmapProps): React.JSX.Element;
26
+ export {};