@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,60 @@
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.RerunFooter = RerunFooter;
7
+ const react_1 = __importDefault(require("react"));
8
+ function RerunFooter({ totalEdits, rerunning, onRerun }) {
9
+ if (totalEdits === 0)
10
+ return null;
11
+ return (react_1.default.createElement("div", { style: {
12
+ marginTop: 12,
13
+ background: "linear-gradient(135deg, rgba(36,131,132,0.12), rgba(36,131,132,0.06))",
14
+ border: "1px solid rgba(36,131,132,0.3)",
15
+ borderRadius: 12,
16
+ padding: "14px 18px",
17
+ display: "flex",
18
+ alignItems: "center",
19
+ gap: 14,
20
+ } },
21
+ react_1.default.createElement("div", { style: { flex: 1 } },
22
+ react_1.default.createElement("div", { className: "text-[13px] font-semibold font-tax-axis-head", style: { color: "#A1E5E6" } },
23
+ totalEdits,
24
+ " value",
25
+ totalEdits > 1 ? "s" : "",
26
+ " corrected"),
27
+ react_1.default.createElement("div", { className: "text-[11px] text-tax-axis-text-2 font-tax-axis-body mt-0.5" }, "Re-run to regenerate all strategies with corrected inputs.")),
28
+ react_1.default.createElement("button", { onClick: onRerun, disabled: rerunning, style: {
29
+ padding: "10px 22px",
30
+ background: rerunning
31
+ ? "#171B44"
32
+ : "linear-gradient(135deg, #248384, #1A6B6C)",
33
+ border: "none",
34
+ borderRadius: 8,
35
+ fontSize: 13,
36
+ fontWeight: 600,
37
+ color: "#FFFFFF",
38
+ cursor: rerunning ? "wait" : "pointer",
39
+ whiteSpace: "nowrap",
40
+ boxShadow: rerunning ? "none" : "0 0 20px rgba(36,131,132,0.3)",
41
+ display: "flex",
42
+ alignItems: "center",
43
+ gap: 8,
44
+ transition: "all .2s",
45
+ fontFamily: "inherit",
46
+ } }, rerunning ? (react_1.default.createElement(react_1.default.Fragment, null,
47
+ react_1.default.createElement("div", { style: {
48
+ width: 14,
49
+ height: 14,
50
+ border: "2px solid transparent",
51
+ borderTopColor: "#A1E5E6",
52
+ borderRadius: "50%",
53
+ animation: "spin .8s linear infinite",
54
+ } }),
55
+ "Re-analyzing\u2026")) : (react_1.default.createElement(react_1.default.Fragment, null,
56
+ react_1.default.createElement("svg", { width: "14", height: "14", viewBox: "0 0 14 14", fill: "none" },
57
+ react_1.default.createElement("path", { d: "M1 7a6 6 0 0111.2-3M13 7a6 6 0 01-11.2 3", stroke: "#FFFFFF", strokeWidth: "1.5", strokeLinecap: "round" }),
58
+ react_1.default.createElement("path", { d: "M12 1v3h-3M2 13v-3h3", stroke: "#FFFFFF", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" })),
59
+ "Rerun Analysis")))));
60
+ }
@@ -0,0 +1,11 @@
1
+ import React from "react";
2
+ import type { TaxAxisScreenProps } from "../../lib/types";
3
+ export interface TaxAxisExtractionReviewProps extends TaxAxisScreenProps {
4
+ onStatusChange?: (status: {
5
+ unreviewed: number;
6
+ edits: number;
7
+ }) => void;
8
+ onConfirmAndUnlock?: () => void;
9
+ onBack?: () => void;
10
+ }
11
+ export declare function TaxAxisExtractionReview({ onStatusChange, onConfirmAndUnlock, onBack, }: TaxAxisExtractionReviewProps): React.JSX.Element;
@@ -0,0 +1,186 @@
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.TaxAxisExtractionReview = TaxAxisExtractionReview;
27
+ const react_1 = __importStar(require("react"));
28
+ const data_1 = require("../../lib/data");
29
+ const TaxAxisButton_1 = require("../shared/TaxAxisButton");
30
+ const PurposeBlock_1 = require("./PurposeBlock");
31
+ const DocumentCard_1 = require("./DocumentCard");
32
+ const RerunFooter_1 = require("./RerunFooter");
33
+ function TaxAxisExtractionReview({ onStatusChange, onConfirmAndUnlock, onBack, }) {
34
+ // ─── State ─────────────────────────────────────────────────────
35
+ const [edits, setEdits] = (0, react_1.useState)({});
36
+ const [editingKey, setEditingKey] = (0, react_1.useState)(null);
37
+ const [editVal, setEditVal] = (0, react_1.useState)("");
38
+ const [expandedDocs, setExpandedDocs] = (0, react_1.useState)(() => {
39
+ const init = {};
40
+ data_1.EXTRACTED_DATA.forEach((d) => {
41
+ init[d.docId] = d.flagCount > 0;
42
+ });
43
+ return init;
44
+ });
45
+ const [cleanExpanded, setCleanExpanded] = (0, react_1.useState)(false);
46
+ const [rerunning, setRerunning] = (0, react_1.useState)(false);
47
+ // ─── Derived ───────────────────────────────────────────────────
48
+ const flaggedDocs = (0, react_1.useMemo)(() => data_1.EXTRACTED_DATA.filter((d) => d.flagCount > 0), []);
49
+ const cleanDocs = (0, react_1.useMemo)(() => data_1.EXTRACTED_DATA.filter((d) => d.flagCount === 0), []);
50
+ const totalFlags = flaggedDocs.reduce((a, d) => a + d.flagCount, 0);
51
+ const totalEdits = Object.keys(edits).length;
52
+ const totalFields = data_1.EXTRACTED_DATA.reduce((a, d) => a + d.fields.length, 0);
53
+ // ─── Callbacks ─────────────────────────────────────────────────
54
+ (0, react_1.useEffect)(() => {
55
+ if (onStatusChange) {
56
+ onStatusChange({
57
+ unreviewed: Math.max(0, totalFlags - totalEdits),
58
+ edits: totalEdits,
59
+ });
60
+ }
61
+ }, [totalEdits, totalFlags, onStatusChange]);
62
+ const startEdit = (docId, fieldIdx, val) => {
63
+ setEditingKey(docId + "-" + fieldIdx);
64
+ setEditVal(val);
65
+ };
66
+ const saveEdit = (docId, fieldIdx) => {
67
+ var _a, _b;
68
+ const k = docId + "-" + fieldIdx;
69
+ const orig = (_b = (_a = data_1.EXTRACTED_DATA.find((d) => d.docId === docId)) === null || _a === void 0 ? void 0 : _a.fields[fieldIdx]) === null || _b === void 0 ? void 0 : _b.value;
70
+ const origRaw = orig ? orig.replace(/[^0-9.]/g, "") : "";
71
+ if (editVal.trim() && editVal.trim() !== origRaw) {
72
+ setEdits((p) => (Object.assign(Object.assign({}, p), { [k]: editVal.trim() })));
73
+ }
74
+ setEditingKey(null);
75
+ setEditVal("");
76
+ };
77
+ const cancelEdit = () => {
78
+ setEditingKey(null);
79
+ setEditVal("");
80
+ };
81
+ const handleRerun = () => {
82
+ setRerunning(true);
83
+ setTimeout(() => {
84
+ setRerunning(false);
85
+ }, 2200);
86
+ };
87
+ const toggleDoc = (id) => setExpandedDocs((p) => (Object.assign(Object.assign({}, p), { [id]: !p[id] })));
88
+ // ─── Render ────────────────────────────────────────────────────
89
+ return (react_1.default.createElement("div", null,
90
+ react_1.default.createElement("style", null, `@keyframes spin{to{transform:rotate(360deg)}}`),
91
+ react_1.default.createElement(PurposeBlock_1.PurposeBlock, { totalFields: totalFields, totalDocs: data_1.EXTRACTED_DATA.length }),
92
+ react_1.default.createElement("div", { style: { display: "flex", alignItems: "center", gap: 10, marginBottom: 12 } },
93
+ react_1.default.createElement("div", { style: {
94
+ width: 8,
95
+ height: 8,
96
+ borderRadius: "50%",
97
+ background: totalEdits >= totalFlags ? "#248384" : "#FB9A1D",
98
+ transition: "background .3s",
99
+ } }),
100
+ react_1.default.createElement("span", { className: "text-[13px] font-bold text-white uppercase font-tax-axis-head", style: { letterSpacing: 1 } }, "Extracted Data"),
101
+ totalFlags - totalEdits > 0 && (react_1.default.createElement("span", { className: "text-[11px] text-tax-axis-text-2 font-tax-axis-body" },
102
+ "\u2014 ",
103
+ totalFlags - totalEdits,
104
+ " value",
105
+ totalFlags - totalEdits > 1 ? "s" : "",
106
+ " to review")),
107
+ totalFlags - totalEdits <= 0 && totalEdits > 0 && (react_1.default.createElement("span", { className: "text-[11px] font-tax-axis-body", style: { color: "#A1E5E6" } },
108
+ "\u2014 ",
109
+ totalEdits,
110
+ " correction",
111
+ totalEdits > 1 ? "s" : "",
112
+ " ready"))),
113
+ totalFlags - totalEdits > 0 && (react_1.default.createElement("div", { style: {
114
+ padding: "12px 16px",
115
+ background: "rgba(251,154,29,0.08)",
116
+ border: "1px solid rgba(251,154,29,0.25)",
117
+ borderRadius: 10,
118
+ marginBottom: 12,
119
+ fontSize: 13,
120
+ color: "#FFFFFF",
121
+ lineHeight: 1.65,
122
+ fontFamily: "inherit",
123
+ } },
124
+ react_1.default.createElement("strong", { style: { fontWeight: 700, color: "#FB9A1D" } },
125
+ totalFlags - totalEdits,
126
+ " value",
127
+ totalFlags - totalEdits > 1 ? "s" : "",
128
+ " need verification."),
129
+ " ",
130
+ "TaxAxis flagged these because its extraction confidence was below threshold. Verify each against the source document and correct if needed. The strategy tags below each value show which recommendations depend on it.")),
131
+ react_1.default.createElement("div", { style: { display: "flex", flexDirection: "column", gap: 8, marginBottom: cleanDocs.length ? 8 : 0 } }, flaggedDocs.map((d) => (react_1.default.createElement(DocumentCard_1.DocumentCard, { key: d.docId, doc: d, isFlagged: true, isOpen: !!expandedDocs[d.docId], onToggle: toggleDoc, editingKey: editingKey, editVal: editVal, edits: edits, onStartEdit: startEdit, onSaveEdit: saveEdit, onCancelEdit: cancelEdit, onEditValChange: setEditVal })))),
132
+ cleanDocs.length > 0 && (react_1.default.createElement("div", { style: {
133
+ background: "#0E1133",
134
+ border: "1px solid #2E3160",
135
+ borderRadius: 12,
136
+ overflow: "hidden",
137
+ boxShadow: "0 2px 12px rgba(6,8,33,0.5)",
138
+ } },
139
+ react_1.default.createElement("div", { onClick: () => setCleanExpanded(!cleanExpanded), style: {
140
+ padding: "12px 16px",
141
+ display: "flex",
142
+ alignItems: "center",
143
+ gap: 10,
144
+ cursor: "pointer",
145
+ } },
146
+ react_1.default.createElement("svg", { width: "12", height: "12", viewBox: "0 0 12 12", fill: "none" },
147
+ react_1.default.createElement("path", { d: "M2.5 6l3 3 4.5-5", stroke: "#34D399", strokeWidth: "1.5", strokeLinecap: "round" })),
148
+ react_1.default.createElement("span", { className: "text-[13px] text-white font-tax-axis-body" },
149
+ cleanDocs.length,
150
+ " document",
151
+ cleanDocs.length > 1 ? "s" : "",
152
+ " \u2014 all values verified"),
153
+ react_1.default.createElement("svg", { width: "12", height: "12", viewBox: "0 0 12 12", fill: "none", style: {
154
+ marginLeft: "auto",
155
+ transform: cleanExpanded ? "rotate(180deg)" : "none",
156
+ transition: "transform .2s",
157
+ } },
158
+ react_1.default.createElement("path", { d: "M3 4.5l3 3 3-3", stroke: "#E6E8F5", strokeWidth: "1.5", strokeLinecap: "round" }))),
159
+ cleanExpanded && (react_1.default.createElement("div", { style: { borderTop: "1px solid #2E3160", padding: "4px 8px 8px" } },
160
+ react_1.default.createElement("div", { style: { display: "flex", flexDirection: "column", gap: 6, padding: "4px 0" } }, cleanDocs.map((d) => (react_1.default.createElement(DocumentCard_1.DocumentCard, { key: d.docId, doc: d, isFlagged: false, isOpen: !!expandedDocs[d.docId], onToggle: toggleDoc, editingKey: editingKey, editVal: editVal, edits: edits, onStartEdit: startEdit, onSaveEdit: saveEdit, onCancelEdit: cancelEdit, onEditValChange: setEditVal })))))),
161
+ !cleanExpanded && (react_1.default.createElement("div", { style: { padding: "4px 16px 12px", display: "flex", gap: 6, flexWrap: "wrap" } }, cleanDocs.map((d) => (react_1.default.createElement("span", { key: d.docId, className: "font-tax-axis-mono", style: {
162
+ fontSize: 10,
163
+ color: "#E6E8F5",
164
+ padding: "2px 8px",
165
+ background: "#171B44",
166
+ borderRadius: 4,
167
+ border: "1px solid #2E3160",
168
+ } }, d.code))))))),
169
+ react_1.default.createElement(RerunFooter_1.RerunFooter, { totalEdits: totalEdits, rerunning: rerunning, onRerun: handleRerun }),
170
+ onConfirmAndUnlock && (react_1.default.createElement("div", { style: {
171
+ marginTop: 16,
172
+ background: "linear-gradient(135deg, rgba(36,131,132,0.12), rgba(36,131,132,0.06))",
173
+ border: "1px solid rgba(36,131,132,0.3)",
174
+ borderRadius: 12,
175
+ padding: "18px 20px",
176
+ } },
177
+ react_1.default.createElement("div", { className: "flex items-center gap-4" },
178
+ react_1.default.createElement("div", { className: "flex-1" },
179
+ react_1.default.createElement("div", { className: "text-[15px] font-bold text-white font-tax-axis-head mb-1" }, "Ready to view your report?"),
180
+ react_1.default.createElement("div", { className: "text-[13px] text-tax-axis-text leading-relaxed font-tax-axis-body" }, totalFlags - totalEdits > 0
181
+ ? (totalFlags - totalEdits) + " value" + (totalFlags - totalEdits > 1 ? "s" : "") + " still flagged. You can confirm now or correct values first."
182
+ : "All extracted values look good. Confirm to unlock the Intelligence Report.")),
183
+ react_1.default.createElement("div", { className: "flex gap-2.5" },
184
+ onBack && (react_1.default.createElement(TaxAxisButton_1.TaxAxisButton, { variant: "secondary", onClick: onBack }, "Back to Dashboard")),
185
+ react_1.default.createElement(TaxAxisButton_1.TaxAxisButton, { onClick: onConfirmAndUnlock }, totalFlags - totalEdits > 0 ? "Confirm & Unlock Report" : "Confirm & View Report")))))));
186
+ }
@@ -0,0 +1,7 @@
1
+ import React from "react";
2
+ import { UserContext } from "../../lib/types";
3
+ interface ClientParametersSectionProps {
4
+ userContext?: UserContext;
5
+ }
6
+ export declare function ClientParametersSection({ userContext, }: ClientParametersSectionProps): React.JSX.Element;
7
+ export {};
@@ -0,0 +1,146 @@
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.ClientParametersSection = ClientParametersSection;
27
+ const react_1 = __importStar(require("react"));
28
+ const react_hook_form_1 = require("react-hook-form");
29
+ const TaxAxisCard_1 = require("../shared/TaxAxisCard");
30
+ const StateMultiSelect_1 = require("./StateMultiSelect");
31
+ const data_1 = require("../../lib/data");
32
+ // Strip everything except digits and a single decimal point
33
+ const stripToNum = (v) => {
34
+ const stripped = v.replace(/[^0-9.]/g, "");
35
+ const parts = stripped.split(".");
36
+ if (parts.length <= 1)
37
+ return stripped;
38
+ return parts[0] + "." + parts.slice(1).join("");
39
+ };
40
+ // Strip to integer only (no decimal)
41
+ const stripToInt = (v) => v.replace(/[^0-9]/g, "");
42
+ /* ═══ Shared class constants ═══ */
43
+ const inputCls = "w-full bg-tax-axis-surface border border-tax-axis-border text-white text-sm rounded-lg p-2.5 focus:border-tax-axis-teal-light focus:outline-none font-tax-axis-body transition-colors";
44
+ const selectCls = "w-full bg-tax-axis-surface border border-tax-axis-border text-white text-sm rounded-lg p-2.5 focus:border-tax-axis-teal-light focus:outline-none font-tax-axis-body transition-colors appearance-none cursor-pointer";
45
+ const labelCls = "block text-[11px] font-semibold text-tax-axis-text-2 mb-1 font-tax-axis-body tracking-wide";
46
+ const errCls = "text-tax-axis-red text-xs mt-1";
47
+ /* ═══ Chevron shared by all <select> wrappers ═══ */
48
+ const Chevron = () => (react_1.default.createElement("svg", { className: "absolute right-2.5 top-1/2 -translate-y-1/2 pointer-events-none", width: "10", height: "10", viewBox: "0 0 12 12", fill: "none" },
49
+ react_1.default.createElement("path", { d: "M3 4.5l3 3 3-3", stroke: "#E6E8F5", strokeWidth: "1.5", strokeLinecap: "round" })));
50
+ /* ═══ Option lists (spec-canonical) ═══ */
51
+ const ENTITY_OPTIONS = [
52
+ "S-Corporation",
53
+ "C-Corporation",
54
+ "LLC",
55
+ "Partnership",
56
+ "Sole Proprietor",
57
+ ];
58
+ const INDUSTRY_OPTIONS = [
59
+ "Professional Services",
60
+ "Restaurant / Hospitality",
61
+ "Retail",
62
+ "Manufacturing",
63
+ "Construction",
64
+ "Healthcare",
65
+ "Technology",
66
+ "Real Estate",
67
+ "Other",
68
+ ];
69
+ const PERIOD_OPTIONS = ["Full Year", "YTD"];
70
+ const YEAR_OPTIONS = ["2024", "2025", "2026"];
71
+ function ClientParametersSection({ userContext = "expert", }) {
72
+ const { control, formState: { errors }, } = (0, react_hook_form_1.useFormContext)();
73
+ // TECH DEBT (post-BDO): Analysis Period dropdown is local useState only —
74
+ // value does not persist to form state because ClientProfile has no `period`
75
+ // field. computeAllStrategies does not read this value. Spec defect.
76
+ // Resolve post-BDO by either adding `period` to ClientProfile or removing
77
+ // the field entirely.
78
+ const [analysisPeriod, setAnalysisPeriod] = (0, react_1.useState)("Full Year");
79
+ const [expanded, setExpanded] = (0, react_1.useState)(true);
80
+ return (react_1.default.createElement(TaxAxisCard_1.TaxAxisCard, null,
81
+ react_1.default.createElement("div", { onClick: () => setExpanded((prev) => !prev), className: "flex items-center justify-between cursor-pointer", style: { marginBottom: expanded ? 14 : 0 } },
82
+ react_1.default.createElement("span", { className: "text-[10px] font-bold uppercase tracking-widest text-tax-axis-teal-light font-tax-axis-body" }, userContext === "cpa-firm-client" ? "Your Business" : "Client Parameters"),
83
+ react_1.default.createElement("svg", { className: `transition-transform ${expanded ? "rotate-180" : "rotate-0"}`, width: "10", height: "10", viewBox: "0 0 12 12", fill: "none" },
84
+ react_1.default.createElement("path", { d: "M3 4.5l3 3 3-3", stroke: "#9498B8", strokeWidth: "1.5", strokeLinecap: "round" }))),
85
+ expanded && (react_1.default.createElement(react_1.default.Fragment, null,
86
+ react_1.default.createElement("div", { className: "grid grid-cols-2 gap-3" },
87
+ react_1.default.createElement("div", null,
88
+ react_1.default.createElement("label", { className: labelCls }, "Business Name"),
89
+ react_1.default.createElement(react_hook_form_1.Controller, { name: "bizName", control: control, render: ({ field }) => (react_1.default.createElement("input", Object.assign({}, field, { placeholder: "Acme Consulting LLC", className: inputCls }))) }),
90
+ errors.bizName && react_1.default.createElement("div", { className: errCls }, errors.bizName.message)),
91
+ react_1.default.createElement("div", null,
92
+ react_1.default.createElement("label", { className: labelCls }, userContext === "cpa-firm-client" ? "Your Firm Name" : "Preparer Name"),
93
+ react_1.default.createElement(react_hook_form_1.Controller, { name: "cpaName", control: control, render: ({ field }) => (react_1.default.createElement("input", Object.assign({}, field, { placeholder: "Sarah Chen, EA", className: inputCls }))) }),
94
+ errors.cpaName && react_1.default.createElement("div", { className: errCls }, errors.cpaName.message)),
95
+ react_1.default.createElement("div", null,
96
+ react_1.default.createElement("label", { className: labelCls }, "Entity Type"),
97
+ react_1.default.createElement(react_hook_form_1.Controller, { name: "entity", control: control, render: ({ field }) => (react_1.default.createElement("div", { className: "relative" },
98
+ react_1.default.createElement("select", Object.assign({}, field, { className: selectCls }), ENTITY_OPTIONS.map(o => (react_1.default.createElement("option", { key: o, value: o, className: "bg-tax-axis-surface-2" }, o)))),
99
+ react_1.default.createElement(Chevron, null))) }),
100
+ errors.entity && react_1.default.createElement("div", { className: errCls }, errors.entity.message)),
101
+ react_1.default.createElement("div", null,
102
+ react_1.default.createElement("label", { className: labelCls }, "Industry"),
103
+ react_1.default.createElement(react_hook_form_1.Controller, { name: "industry", control: control, render: ({ field }) => (react_1.default.createElement("div", { className: "relative" },
104
+ react_1.default.createElement("select", Object.assign({}, field, { className: selectCls }), INDUSTRY_OPTIONS.map(o => (react_1.default.createElement("option", { key: o, value: o, className: "bg-tax-axis-surface-2" }, o)))),
105
+ react_1.default.createElement(Chevron, null))) }),
106
+ errors.industry && react_1.default.createElement("div", { className: errCls }, errors.industry.message)),
107
+ react_1.default.createElement("div", null,
108
+ react_1.default.createElement("label", { className: labelCls }, "Analysis Period"),
109
+ react_1.default.createElement("div", { className: "relative" },
110
+ react_1.default.createElement("select", { value: analysisPeriod, onChange: e => setAnalysisPeriod(e.target.value), className: selectCls }, PERIOD_OPTIONS.map(o => (react_1.default.createElement("option", { key: o, value: o, className: "bg-tax-axis-surface-2" }, o)))),
111
+ react_1.default.createElement(Chevron, null))),
112
+ react_1.default.createElement("div", null,
113
+ react_1.default.createElement("label", { className: labelCls }, "Annual Revenue"),
114
+ react_1.default.createElement(react_hook_form_1.Controller, { name: "revenue", control: control, render: ({ field }) => (react_1.default.createElement("div", { className: "relative" },
115
+ react_1.default.createElement("span", { className: "absolute left-2.5 top-1/2 -translate-y-1/2 text-tax-axis-text-3 text-[13px]" }, "$"),
116
+ react_1.default.createElement("input", Object.assign({}, field, { placeholder: "500,000", className: `${inputCls} pl-6`, onChange: (e) => field.onChange(stripToNum(e.target.value)) })))) }),
117
+ errors.revenue && react_1.default.createElement("div", { className: errCls }, errors.revenue.message)),
118
+ react_1.default.createElement("div", null,
119
+ react_1.default.createElement("label", { className: labelCls }, "Owner W-2 Comp"),
120
+ react_1.default.createElement(react_hook_form_1.Controller, { name: "ownerComp", control: control, render: ({ field }) => (react_1.default.createElement("div", { className: "relative" },
121
+ react_1.default.createElement("span", { className: "absolute left-2.5 top-1/2 -translate-y-1/2 text-tax-axis-text-3 text-[13px]" }, "$"),
122
+ react_1.default.createElement("input", Object.assign({}, field, { placeholder: "65,000", className: `${inputCls} pl-6`, onChange: (e) => field.onChange(stripToNum(e.target.value)) })))) })),
123
+ react_1.default.createElement("div", null,
124
+ react_1.default.createElement("label", { className: labelCls }, "Employees"),
125
+ react_1.default.createElement(react_hook_form_1.Controller, { name: "employees", control: control, render: ({ field }) => (react_1.default.createElement("input", Object.assign({}, field, { placeholder: "3", className: inputCls, onChange: (e) => field.onChange(stripToInt(e.target.value)) }))) })),
126
+ react_1.default.createElement("div", null,
127
+ react_1.default.createElement("label", { className: labelCls }, "Tax Year"),
128
+ react_1.default.createElement(react_hook_form_1.Controller, { name: "year", control: control, render: ({ field }) => (react_1.default.createElement("div", { className: "relative" },
129
+ react_1.default.createElement("select", Object.assign({}, field, { className: selectCls }), YEAR_OPTIONS.map(o => (react_1.default.createElement("option", { key: o, value: o, className: "bg-tax-axis-surface-2" }, o)))),
130
+ react_1.default.createElement(Chevron, null))) }),
131
+ errors.year && react_1.default.createElement("div", { className: errCls }, errors.year.message))),
132
+ react_1.default.createElement("div", { className: "border-t border-tax-axis-border pt-3 mt-3.5" },
133
+ react_1.default.createElement(react_hook_form_1.Controller, { name: "states", control: control, render: ({ field }) => (react_1.default.createElement(react_1.default.Fragment, null,
134
+ react_1.default.createElement("label", { className: `${labelCls} flex items-center gap-1.5` },
135
+ "States of Operation",
136
+ field.value && field.value.length > 0 && (react_1.default.createElement("span", { className: "text-[9px] font-semibold text-tax-axis-teal-light font-tax-axis-body" },
137
+ "(",
138
+ field.value.length,
139
+ ")"))),
140
+ react_1.default.createElement(StateMultiSelect_1.StateMultiSelect, { selected: field.value || [], onChange: field.onChange }),
141
+ field.value && field.value.length > 0 && (react_1.default.createElement("div", { className: "mt-1.5 flex gap-1 flex-wrap" },
142
+ field.value.some((s) => data_1.PTE_STATES.has(s)) && (react_1.default.createElement("span", { className: "text-[8px] font-semibold text-tax-axis-teal-light bg-tax-axis-teal-bg px-1.5 py-0.5 rounded font-tax-axis-mono" }, "PTE")),
143
+ field.value.some((s) => data_1.NO_INCOME_TAX.has(s)) && (react_1.default.createElement("span", { className: "text-[8px] font-semibold text-tax-axis-green bg-tax-axis-green-bg px-1.5 py-0.5 rounded font-tax-axis-mono" }, "NO-TAX")),
144
+ field.value.length > 1 && (react_1.default.createElement("span", { className: "text-[8px] font-semibold text-tax-axis-orange bg-tax-axis-orange-bg px-1.5 py-0.5 rounded font-tax-axis-mono" }, "NEXUS")))))) }),
145
+ errors.states && react_1.default.createElement("div", { className: errCls }, errors.states.message))))));
146
+ }
@@ -0,0 +1,7 @@
1
+ import React from "react";
2
+ import { UserContext } from "../../lib/types";
3
+ interface CpaIntakeQuestionsSectionProps {
4
+ userContext?: UserContext;
5
+ }
6
+ export declare function CpaIntakeQuestionsSection({ userContext, }: CpaIntakeQuestionsSectionProps): React.JSX.Element;
7
+ export {};
@@ -0,0 +1,93 @@
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.CpaIntakeQuestionsSection = CpaIntakeQuestionsSection;
27
+ const react_1 = __importStar(require("react"));
28
+ const react_hook_form_1 = require("react-hook-form");
29
+ const TaxAxisCard_1 = require("../shared/TaxAxisCard");
30
+ /* ═══ Shared class constants ═══ */
31
+ const inputCls = "w-full bg-tax-axis-surface border border-tax-axis-border text-white text-sm rounded-lg p-2.5 focus:border-tax-axis-teal-light focus:outline-none font-tax-axis-body transition-colors";
32
+ const selectCls = "w-full bg-tax-axis-surface border border-tax-axis-border text-white text-sm rounded-lg p-2.5 focus:border-tax-axis-teal-light focus:outline-none font-tax-axis-body transition-colors appearance-none cursor-pointer";
33
+ const labelCls = "block text-[11px] font-semibold text-tax-axis-text-2 mb-1 font-tax-axis-body tracking-wide";
34
+ const helperCls = "text-[11px] text-tax-axis-text-4 mt-0.5 leading-tight";
35
+ const Chevron = () => (react_1.default.createElement("svg", { className: "absolute right-2.5 top-1/2 -translate-y-1/2 pointer-events-none", width: "10", height: "10", viewBox: "0 0 12 12", fill: "none" },
36
+ react_1.default.createElement("path", { d: "M3 4.5l3 3 3-3", stroke: "#E6E8F5", strokeWidth: "1.5", strokeLinecap: "round" })));
37
+ /* ═══ Option lists ═══ */
38
+ const HDHP_OPTIONS = ["No", "Yes"];
39
+ const WOTC_OPTIONS = ["No", "Yes — Form 8850 submitted", "Yes — No Form 8850"];
40
+ const FAMILY_OPTIONS = ["No", "Yes"];
41
+ function CpaIntakeQuestionsSection({ userContext = "expert", }) {
42
+ // Collapsed by default (spec S1.4 explicitly says "collapsed by default").
43
+ const [expanded, setExpanded] = (0, react_1.useState)(false);
44
+ const { control, watch } = (0, react_hook_form_1.useFormContext)();
45
+ const hdhpEnrolled = watch("hdhpEnrolled");
46
+ const industry = watch("industry");
47
+ return (react_1.default.createElement(TaxAxisCard_1.TaxAxisCard, null,
48
+ react_1.default.createElement("div", { onClick: () => setExpanded(prev => !prev), className: "flex items-center justify-between cursor-pointer", style: { marginBottom: expanded ? 10 : 0 } },
49
+ react_1.default.createElement("span", { className: "text-[11px] font-semibold uppercase tracking-wider text-tax-axis-text-3" }, userContext === "cpa-firm-client" ? "Additional Details" : "CPA Intake Questions"),
50
+ react_1.default.createElement("svg", { className: `transition-transform ${expanded ? "rotate-180" : "rotate-0"}`, width: "10", height: "10", viewBox: "0 0 12 12", fill: "none" },
51
+ react_1.default.createElement("path", { d: "M3 4.5l3 3 3-3", stroke: "#9498B8", strokeWidth: "1.5", strokeLinecap: "round" }))),
52
+ expanded && (react_1.default.createElement("div", null,
53
+ react_1.default.createElement("div", { className: "grid grid-cols-2 gap-3 mb-2.5" },
54
+ react_1.default.createElement("div", null,
55
+ react_1.default.createElement("label", { className: labelCls }, "Overtime Premium Paid"),
56
+ react_1.default.createElement(react_hook_form_1.Controller, { name: "overtimePremium", control: control, render: ({ field }) => (react_1.default.createElement("div", { className: "relative" },
57
+ react_1.default.createElement("span", { className: "absolute left-2.5 top-1/2 -translate-y-1/2 text-tax-axis-text-3 text-[13px]" }, "$"),
58
+ react_1.default.createElement("input", Object.assign({}, field, { placeholder: "0", className: `${inputCls} pl-6` })))) }),
59
+ react_1.default.createElement("div", { className: helperCls }, "Extra 0.5\u00D7 rate on hours above 40/week, not total overtime wages")),
60
+ react_1.default.createElement("div", null,
61
+ react_1.default.createElement("label", { className: labelCls }, "Gross Revenue from Tips"),
62
+ react_1.default.createElement(react_hook_form_1.Controller, { name: "tipIncomePct", control: control, render: ({ field }) => (react_1.default.createElement("div", { className: "relative" },
63
+ react_1.default.createElement("input", Object.assign({}, field, { placeholder: "0", className: `${inputCls} pr-6` })),
64
+ react_1.default.createElement("span", { className: "absolute right-2.5 top-1/2 -translate-y-1/2 text-tax-axis-text-3 text-[13px]" }, "%"))) }),
65
+ industry !== "Restaurant / Hospitality" && (react_1.default.createElement("div", { className: helperCls }, "Typically relevant for Restaurant / Hospitality")))),
66
+ react_1.default.createElement("div", { className: "grid grid-cols-2 gap-3 mb-2.5" },
67
+ react_1.default.createElement("div", null,
68
+ react_1.default.createElement("label", { className: labelCls }, "Retirement Plan Contributions"),
69
+ react_1.default.createElement(react_hook_form_1.Controller, { name: "retirementContributions", control: control, render: ({ field }) => (react_1.default.createElement("div", { className: "relative" },
70
+ react_1.default.createElement("span", { className: "absolute left-2.5 top-1/2 -translate-y-1/2 text-tax-axis-text-3 text-[13px]" }, "$"),
71
+ react_1.default.createElement("input", Object.assign({}, field, { placeholder: "0", className: `${inputCls} pl-6` })))) })),
72
+ react_1.default.createElement("div", null,
73
+ react_1.default.createElement("label", { className: labelCls }, "Enrolled in HDHP?"),
74
+ react_1.default.createElement(react_hook_form_1.Controller, { name: "hdhpEnrolled", control: control, render: ({ field }) => (react_1.default.createElement("div", { className: "relative" },
75
+ react_1.default.createElement("select", Object.assign({}, field, { className: selectCls }), HDHP_OPTIONS.map(o => (react_1.default.createElement("option", { key: o, value: o, className: "bg-tax-axis-surface-2" }, o)))),
76
+ react_1.default.createElement(Chevron, null))) }),
77
+ hdhpEnrolled === "Yes" && (react_1.default.createElement("div", { className: "mt-1.5 transition-opacity" },
78
+ react_1.default.createElement("label", { className: labelCls }, "HSA Contributions"),
79
+ react_1.default.createElement(react_hook_form_1.Controller, { name: "hsaContributions", control: control, render: ({ field }) => (react_1.default.createElement("div", { className: "relative" },
80
+ react_1.default.createElement("span", { className: "absolute left-2.5 top-1/2 -translate-y-1/2 text-tax-axis-text-3 text-[13px]" }, "$"),
81
+ react_1.default.createElement("input", Object.assign({}, field, { placeholder: "0", className: `${inputCls} pl-6` })))) }))))),
82
+ react_1.default.createElement("div", { className: "grid grid-cols-2 gap-3 mb-2.5" },
83
+ react_1.default.createElement("div", null,
84
+ react_1.default.createElement("label", { className: labelCls }, "WOTC Qualifying Hires"),
85
+ react_1.default.createElement(react_hook_form_1.Controller, { name: "wotcHires", control: control, render: ({ field }) => (react_1.default.createElement("div", { className: "relative" },
86
+ react_1.default.createElement("select", Object.assign({}, field, { className: selectCls }), WOTC_OPTIONS.map(o => (react_1.default.createElement("option", { key: o, value: o, className: "bg-tax-axis-surface-2" }, o)))),
87
+ react_1.default.createElement(Chevron, null))) })),
88
+ react_1.default.createElement("div", null,
89
+ react_1.default.createElement("label", { className: labelCls }, "Family Members Employed (W-2)"),
90
+ react_1.default.createElement(react_hook_form_1.Controller, { name: "familyEmployed", control: control, render: ({ field }) => (react_1.default.createElement("div", { className: "relative" },
91
+ react_1.default.createElement("select", Object.assign({}, field, { className: selectCls }), FAMILY_OPTIONS.map(o => (react_1.default.createElement("option", { key: o, value: o, className: "bg-tax-axis-surface-2" }, o)))),
92
+ react_1.default.createElement(Chevron, null))) })))))));
93
+ }
@@ -0,0 +1,9 @@
1
+ import React from "react";
2
+ import { UserContext } from "../../lib/types";
3
+ interface IntakeCtaCardsProps {
4
+ onProspect: () => void;
5
+ onFullAnalysis: () => void;
6
+ userContext?: UserContext;
7
+ }
8
+ export declare function IntakeCtaCards({ onProspect, onFullAnalysis, userContext, }: IntakeCtaCardsProps): React.JSX.Element;
9
+ export {};
@@ -0,0 +1,30 @@
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.IntakeCtaCards = IntakeCtaCards;
7
+ const react_1 = __importDefault(require("react"));
8
+ const TaxAxisButton_1 = require("../shared/TaxAxisButton");
9
+ const TaxAxisBadge_1 = require("../shared/TaxAxisBadge");
10
+ function IntakeCtaCards({ onProspect, onFullAnalysis, userContext = "expert", }) {
11
+ return (react_1.default.createElement("div", { className: "grid grid-cols-2 gap-3", style: { position: "sticky", bottom: 0, zIndex: 10, paddingTop: 12, paddingBottom: 4, background: "linear-gradient(to bottom, transparent 0%, #060821 16%)" } },
12
+ react_1.default.createElement("div", { className: "bg-tax-axis-surface border border-tax-axis-border rounded-xl p-4 min-h-[140px] flex flex-col transition-all" },
13
+ react_1.default.createElement("div", { className: "text-[11px] font-bold text-tax-axis-orange uppercase tracking-widest mb-2.5 font-tax-axis-body" }, "Prospect Report"),
14
+ react_1.default.createElement("div", { className: "text-xs text-tax-axis-text-3 font-tax-axis-body mb-3" }, "Top 3 strategies \u00B7 Savings ranges \u00B7 ~2 min \u00B7 No docs"),
15
+ react_1.default.createElement("div", { className: "flex-1" }),
16
+ react_1.default.createElement(TaxAxisButton_1.TaxAxisButton, { variant: "orange", onClick: onProspect, className: "w-full text-xs" }, userContext === "cpa-firm-client"
17
+ ? "Generate My Savings Report"
18
+ : "Generate Prospect Report")),
19
+ react_1.default.createElement("div", { className: "bg-tax-axis-surface border border-tax-axis-teal rounded-xl p-4 min-h-[140px] flex flex-col transition-all", style: {
20
+ background: "radial-gradient(ellipse at 50% 0%,rgba(36,131,132,0.06) 0%,transparent 70%) #0F1330",
21
+ boxShadow: "0 0 30px rgba(36,131,132,0.15)",
22
+ } },
23
+ react_1.default.createElement(TaxAxisBadge_1.TaxAxisBadge, { color: "teal", variant: "outline", size: "xs" }, "Recommended"),
24
+ react_1.default.createElement("div", { className: "text-[11px] font-bold text-tax-axis-teal uppercase tracking-widest mt-2 mb-2.5 font-tax-axis-body" }, "Full Analysis"),
25
+ react_1.default.createElement("div", { className: "text-xs text-tax-axis-text-3 font-tax-axis-body mb-3" }, "All 25 strategies \u00B7 Real dollar savings \u00B7 ~15 min"),
26
+ react_1.default.createElement("div", { className: "flex-1" }),
27
+ react_1.default.createElement(TaxAxisButton_1.TaxAxisButton, { variant: "primary", onClick: onFullAnalysis, className: "w-full text-xs" }, userContext === "cpa-firm-client"
28
+ ? "Run Full Analysis on My Business"
29
+ : "Start Full Analysis"))));
30
+ }
@@ -0,0 +1,7 @@
1
+ import React from "react";
2
+ import { UserContext } from "../../lib/types";
3
+ interface RefineAnalysisSectionProps {
4
+ userContext?: UserContext;
5
+ }
6
+ export declare function RefineAnalysisSection({ userContext: _userContext, }: RefineAnalysisSectionProps): React.JSX.Element;
7
+ export {};