@paro.io/expert-shared-components 1.14.62 → 1.14.64

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 (35) hide show
  1. package/lib/components/TaxAxis/TaxAxisShell.js +31 -5
  2. package/lib/tax-axis/components/dashboard/TaxAxisDashboard.d.ts +2 -1
  3. package/lib/tax-axis/components/dashboard/TaxAxisDashboard.js +74 -9
  4. package/lib/tax-axis/components/documents/DocumentCard.d.ts +3 -1
  5. package/lib/tax-axis/components/documents/DocumentCard.js +15 -3
  6. package/lib/tax-axis/components/documents/DocumentReviewModal.d.ts +1 -3
  7. package/lib/tax-axis/components/documents/DocumentReviewModal.js +263 -113
  8. package/lib/tax-axis/components/documents/DocumentTier.d.ts +3 -1
  9. package/lib/tax-axis/components/documents/DocumentTier.js +2 -2
  10. package/lib/tax-axis/components/documents/TaxAxisDocuments.js +21 -2
  11. package/lib/tax-axis/components/extractionReview/TaxAxisExtractionReview.js +17 -17
  12. package/lib/tax-axis/components/intake/TaxAxisIntake.js +11 -23
  13. package/lib/tax-axis/index.d.ts +2 -0
  14. package/lib/tax-axis/index.js +5 -1
  15. package/package.json +1 -1
  16. package/lib/tax-axis/components/documents/qbo/QboAvailableReportsModal.d.ts +0 -13
  17. package/lib/tax-axis/components/documents/qbo/QboAvailableReportsModal.js +0 -180
  18. package/lib/tax-axis/components/documents/qbo/QboClientSelectorModal.d.ts +0 -10
  19. package/lib/tax-axis/components/documents/qbo/QboClientSelectorModal.js +0 -155
  20. package/lib/tax-axis/components/documents/qbo/QboConnectBanner.d.ts +0 -9
  21. package/lib/tax-axis/components/documents/qbo/QboConnectBanner.js +0 -55
  22. package/lib/tax-axis/components/documents/qbo/QboDocumentMappingModal.d.ts +0 -10
  23. package/lib/tax-axis/components/documents/qbo/QboDocumentMappingModal.js +0 -202
  24. package/lib/tax-axis/components/documents/qbo/QboImportingModal.d.ts +0 -8
  25. package/lib/tax-axis/components/documents/qbo/QboImportingModal.js +0 -75
  26. package/lib/tax-axis/components/documents/qbo/QboPermissionsModal.d.ts +0 -8
  27. package/lib/tax-axis/components/documents/qbo/QboPermissionsModal.js +0 -126
  28. package/lib/tax-axis/components/documents/qbo/index.d.ts +0 -8
  29. package/lib/tax-axis/components/documents/qbo/index.js +0 -17
  30. package/lib/tax-axis/components/documents/qbo/qboConstants.d.ts +0 -24
  31. package/lib/tax-axis/components/documents/qbo/qboConstants.js +0 -71
  32. package/lib/tax-axis/components/documents/qbo/types.d.ts +0 -43
  33. package/lib/tax-axis/components/documents/qbo/types.js +0 -3
  34. package/lib/tax-axis/components/documents/qbo/useQboFlow.d.ts +0 -19
  35. package/lib/tax-axis/components/documents/qbo/useQboFlow.js +0 -207
@@ -88,26 +88,6 @@ function TaxAxisIntake({ userContext = "expert", onProspect, onFullAnalysis, ini
88
88
  });
89
89
  const profile = methods.watch();
90
90
  const missingFields = (0, react_1.useMemo)(() => getMissingFields(profile), [profile]);
91
- const [showDemo, setShowDemo] = (0, react_1.useState)(false);
92
- const konamiRef = (0, react_1.useRef)({ keys: '', timer: null });
93
- (0, react_1.useEffect)(() => {
94
- const handler = (e) => {
95
- var _a;
96
- const tag = (_a = e.target) === null || _a === void 0 ? void 0 : _a.tagName;
97
- if (tag === 'INPUT' || tag === 'TEXTAREA' || tag === 'SELECT')
98
- return;
99
- const k = konamiRef.current;
100
- k.keys += e.key.toLowerCase();
101
- clearTimeout(k.timer);
102
- k.timer = setTimeout(() => { k.keys = ''; }, 3000);
103
- if (k.keys.includes('demo')) {
104
- setShowDemo(true);
105
- k.keys = '';
106
- }
107
- };
108
- window.addEventListener('keydown', handler);
109
- return () => window.removeEventListener('keydown', handler);
110
- }, []);
111
91
  const handleDemoToggle = () => {
112
92
  const current = methods.getValues();
113
93
  const isDemoFilled = current.bizName === DEMO_PROFILE.bizName;
@@ -127,9 +107,17 @@ function TaxAxisIntake({ userContext = "expert", onProspect, onFullAnalysis, ini
127
107
  };
128
108
  return (react_1.default.createElement(react_hook_form_1.FormProvider, Object.assign({}, methods),
129
109
  react_1.default.createElement("div", { className: "grid grid-cols-[1fr_1fr] gap-5" },
130
- react_1.default.createElement("div", { className: "relative flex flex-col gap-4" },
131
- showDemo && (react_1.default.createElement("button", { type: "button", onClick: handleDemoToggle, className: "absolute right-0 -top-1 text-[10px] text-tax-axis-text-4 opacity-40 hover:opacity-80 transition-opacity cursor-pointer bg-transparent border-none font-tax-axis-mono", style: { zIndex: 20 } }, "Demo")),
132
- react_1.default.createElement(ClientParametersSection_1.ClientParametersSection, { userContext: userContext }),
110
+ react_1.default.createElement("div", { className: "flex flex-col gap-4" },
111
+ react_1.default.createElement("div", { onClick: (e) => {
112
+ var _a;
113
+ if (e.detail === 3) {
114
+ const tag = (_a = e.target) === null || _a === void 0 ? void 0 : _a.tagName;
115
+ if (tag === 'INPUT' || tag === 'TEXTAREA' || tag === 'SELECT')
116
+ return;
117
+ handleDemoToggle();
118
+ }
119
+ } },
120
+ react_1.default.createElement(ClientParametersSection_1.ClientParametersSection, { userContext: userContext })),
133
121
  react_1.default.createElement(RefineAnalysisSection_1.RefineAnalysisSection, { userContext: userContext }),
134
122
  react_1.default.createElement(CpaIntakeQuestionsSection_1.CpaIntakeQuestionsSection, { userContext: userContext }),
135
123
  react_1.default.createElement(IntakeCtaCards_1.IntakeCtaCards, { onProspect: handleProspect, onFullAnalysis: handleFull, userContext: userContext, missingFields: missingFields })),
@@ -9,6 +9,8 @@ export { TaxAxisIntake } from "./components/intake/TaxAxisIntake";
9
9
  export type { TaxAxisIntakeProps } from "./components/intake/TaxAxisIntake";
10
10
  export { TaxAxisDocuments } from "./components/documents/TaxAxisDocuments";
11
11
  export type { TaxAxisDocumentsProps } from "./components/documents/TaxAxisDocuments";
12
+ export { DocumentReviewModal, EXTRACTED_FIELDS_QUERY, SAVE_FIELD_EDIT_MUTATION } from "./components/documents/DocumentReviewModal";
13
+ export type { DocumentReviewModalProps } from "./components/documents/DocumentReviewModal";
12
14
  export { TaxAxisProcessing } from "./components/processing/TaxAxisProcessing";
13
15
  export type { TaxAxisProcessingProps } from "./components/processing/TaxAxisProcessing";
14
16
  export { TaxAxisDashboard } from "./components/dashboard/TaxAxisDashboard";
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.TaxAxisPresentationMode = exports.TaxAxisProspectReport = exports.TaxAxisExtractionReview = exports.TaxAxisPreparerWorkpaper = exports.TaxAxisClientReport = exports.TaxAxisDashboard = exports.TaxAxisProcessing = exports.TaxAxisDocuments = exports.TaxAxisIntake = exports.SectionHeader = exports.TaxAxisButton = exports.TaxAxisBadge = exports.TaxAxisCard = void 0;
17
+ exports.TaxAxisPresentationMode = exports.TaxAxisProspectReport = exports.TaxAxisExtractionReview = exports.TaxAxisPreparerWorkpaper = exports.TaxAxisClientReport = exports.TaxAxisDashboard = exports.TaxAxisProcessing = exports.SAVE_FIELD_EDIT_MUTATION = exports.EXTRACTED_FIELDS_QUERY = exports.DocumentReviewModal = exports.TaxAxisDocuments = exports.TaxAxisIntake = exports.SectionHeader = exports.TaxAxisButton = exports.TaxAxisBadge = exports.TaxAxisCard = void 0;
18
18
  // Shared primitives
19
19
  var TaxAxisCard_1 = require("./components/shared/TaxAxisCard");
20
20
  Object.defineProperty(exports, "TaxAxisCard", { enumerable: true, get: function () { return TaxAxisCard_1.TaxAxisCard; } });
@@ -35,6 +35,10 @@ var TaxAxisIntake_1 = require("./components/intake/TaxAxisIntake");
35
35
  Object.defineProperty(exports, "TaxAxisIntake", { enumerable: true, get: function () { return TaxAxisIntake_1.TaxAxisIntake; } });
36
36
  var TaxAxisDocuments_1 = require("./components/documents/TaxAxisDocuments");
37
37
  Object.defineProperty(exports, "TaxAxisDocuments", { enumerable: true, get: function () { return TaxAxisDocuments_1.TaxAxisDocuments; } });
38
+ var DocumentReviewModal_1 = require("./components/documents/DocumentReviewModal");
39
+ Object.defineProperty(exports, "DocumentReviewModal", { enumerable: true, get: function () { return DocumentReviewModal_1.DocumentReviewModal; } });
40
+ Object.defineProperty(exports, "EXTRACTED_FIELDS_QUERY", { enumerable: true, get: function () { return DocumentReviewModal_1.EXTRACTED_FIELDS_QUERY; } });
41
+ Object.defineProperty(exports, "SAVE_FIELD_EDIT_MUTATION", { enumerable: true, get: function () { return DocumentReviewModal_1.SAVE_FIELD_EDIT_MUTATION; } });
38
42
  var TaxAxisProcessing_1 = require("./components/processing/TaxAxisProcessing");
39
43
  Object.defineProperty(exports, "TaxAxisProcessing", { enumerable: true, get: function () { return TaxAxisProcessing_1.TaxAxisProcessing; } });
40
44
  var TaxAxisDashboard_1 = require("./components/dashboard/TaxAxisDashboard");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@paro.io/expert-shared-components",
3
- "version": "1.14.62",
3
+ "version": "1.14.64",
4
4
  "description": "",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {
@@ -1,13 +0,0 @@
1
- import React from "react";
2
- import type { QboReportOption } from "./types";
3
- interface QboAvailableReportsModalProps {
4
- open: boolean;
5
- companyName: string;
6
- reports?: QboReportOption[];
7
- selectedYear?: number;
8
- onYearChange?: (year: number) => void;
9
- onCancel: () => void;
10
- onConfirm: (selectedReportIds: string[]) => void;
11
- }
12
- export declare function QboAvailableReportsModal({ open, companyName, reports, selectedYear, onYearChange, onCancel, onConfirm, }: QboAvailableReportsModalProps): React.JSX.Element | null;
13
- export {};
@@ -1,180 +0,0 @@
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.QboAvailableReportsModal = QboAvailableReportsModal;
27
- const react_1 = __importStar(require("react"));
28
- const qboConstants_1 = require("./qboConstants");
29
- const QBO_YEAR_OPTIONS = [2023, 2024, 2025, 2026];
30
- function QboAvailableReportsModal({ open, companyName, reports = qboConstants_1.QBO_REPORT_OPTIONS, selectedYear, onYearChange, onCancel, onConfirm, }) {
31
- const availableReports = reports.filter((r) => r.available);
32
- const [selected, setSelected] = (0, react_1.useState)(() => new Set(availableReports.map((r) => r.id)));
33
- const [localYear, setLocalYear] = (0, react_1.useState)(selectedYear !== null && selectedYear !== void 0 ? selectedYear : new Date().getFullYear());
34
- const handleYearChange = (year) => {
35
- setLocalYear(year);
36
- if (onYearChange)
37
- onYearChange(year);
38
- };
39
- if (!open)
40
- return null;
41
- const toggleReport = (id) => {
42
- setSelected((prev) => {
43
- const next = new Set(prev);
44
- if (next.has(id))
45
- next.delete(id);
46
- else
47
- next.add(id);
48
- return next;
49
- });
50
- };
51
- return (react_1.default.createElement("div", { onClick: onCancel, style: {
52
- position: "fixed",
53
- inset: 0,
54
- zIndex: 9999,
55
- background: "rgba(0,0,0,0.65)",
56
- display: "flex",
57
- alignItems: "center",
58
- justifyContent: "center",
59
- } },
60
- react_1.default.createElement("div", { onClick: (e) => e.stopPropagation(), style: {
61
- width: 480,
62
- maxHeight: "85vh",
63
- background: "#111827",
64
- border: "1px solid #1f2937",
65
- borderRadius: 16,
66
- display: "flex",
67
- flexDirection: "column",
68
- boxShadow: "0 25px 60px rgba(0,0,0,0.5)",
69
- } },
70
- react_1.default.createElement("div", { style: { padding: "20px 24px 16px", borderBottom: "1px solid #1f2937" } },
71
- react_1.default.createElement("div", { style: { display: "flex", alignItems: "center", gap: 12 } },
72
- react_1.default.createElement("div", { style: {
73
- width: 36,
74
- height: 36,
75
- borderRadius: 8,
76
- background: "rgba(44,160,28,0.12)",
77
- border: "1px solid rgba(44,160,28,0.25)",
78
- display: "flex",
79
- alignItems: "center",
80
- justifyContent: "center",
81
- } },
82
- react_1.default.createElement("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none" },
83
- react_1.default.createElement("rect", { x: "3", y: "2", width: "10", height: "12", rx: "1.5", stroke: qboConstants_1.QBO_GREEN, strokeWidth: "1.2" }),
84
- react_1.default.createElement("path", { d: "M5.5 5.5h5M5.5 8h5M5.5 10.5h3", stroke: qboConstants_1.QBO_GREEN, strokeWidth: "0.9", strokeLinecap: "round" }))),
85
- react_1.default.createElement("div", { style: { flex: 1 } },
86
- react_1.default.createElement("div", { style: { fontSize: 15, fontWeight: 600, color: "#f3f4f6" } }, "Available Reports"),
87
- react_1.default.createElement("div", { style: { fontSize: 12, color: "#9ca3af", marginTop: 2 } },
88
- companyName,
89
- " \u00B7 Select reports to import")),
90
- react_1.default.createElement("button", { onClick: onCancel, style: {
91
- background: "transparent",
92
- border: "none",
93
- color: "#6b7280",
94
- fontSize: 18,
95
- cursor: "pointer",
96
- padding: 4,
97
- lineHeight: 1,
98
- } }, "\u00D7"))),
99
- react_1.default.createElement("div", { style: { padding: "14px 24px 0", borderBottom: "1px solid #1f2937" } },
100
- react_1.default.createElement("div", { style: { display: "flex", alignItems: "center", gap: 10, paddingBottom: 14 } },
101
- react_1.default.createElement("span", { style: { fontSize: 12, color: "#9ca3af", flexShrink: 0 } }, "Tax Year"),
102
- react_1.default.createElement("div", { style: { display: "flex", gap: 6 } }, QBO_YEAR_OPTIONS.map((yr) => (react_1.default.createElement("button", { key: yr, onClick: () => handleYearChange(yr), style: Object.assign(Object.assign({ padding: "4px 12px", borderRadius: 6, fontSize: 12, fontWeight: 600, cursor: "pointer", border: "none" }, (localYear === yr
103
- ? { background: qboConstants_1.QBO_GREEN, color: "white" }
104
- : { background: "rgba(255,255,255,0.05)", color: "#9ca3af" })), { transition: "all 150ms" }) }, yr)))))),
105
- react_1.default.createElement("div", { style: { padding: "16px 24px", flex: 1, overflowY: "auto" } }, reports.map((report, i) => {
106
- const isAvailable = report.available;
107
- const isChecked = selected.has(report.id);
108
- return (react_1.default.createElement("div", { key: report.id, style: {
109
- display: "flex",
110
- alignItems: "center",
111
- gap: 12,
112
- padding: "12px 0",
113
- borderBottom: i < reports.length - 1 ? "1px solid #1f2937" : "none",
114
- opacity: isAvailable ? 1 : 0.5,
115
- } },
116
- react_1.default.createElement("div", { onClick: () => isAvailable && toggleReport(report.id), style: {
117
- width: 18,
118
- height: 18,
119
- borderRadius: 4,
120
- border: isChecked
121
- ? `none`
122
- : `2px solid ${isAvailable ? "#4b5563" : "#374151"}`,
123
- background: isChecked ? qboConstants_1.QBO_GREEN : "transparent",
124
- display: "flex",
125
- alignItems: "center",
126
- justifyContent: "center",
127
- cursor: isAvailable ? "pointer" : "not-allowed",
128
- flexShrink: 0,
129
- transition: "all 150ms",
130
- } }, isChecked && (react_1.default.createElement("svg", { width: "10", height: "10", viewBox: "0 0 10 10", fill: "none" },
131
- react_1.default.createElement("path", { d: "M2 5l2.5 2.5L8 3", stroke: "white", strokeWidth: "1.5", strokeLinecap: "round" })))),
132
- react_1.default.createElement("div", { style: { flex: 1 } },
133
- react_1.default.createElement("span", { style: { fontSize: 13, fontWeight: 500, color: isAvailable ? "#e5e7eb" : "#6b7280" } }, report.label)),
134
- react_1.default.createElement("span", { style: Object.assign({ fontSize: 9, fontWeight: 700, letterSpacing: "0.05em", padding: "2px 8px", borderRadius: 4 }, (isAvailable
135
- ? {
136
- background: "rgba(44,160,28,0.1)",
137
- border: "1px solid rgba(44,160,28,0.2)",
138
- color: qboConstants_1.QBO_GREEN,
139
- }
140
- : {
141
- background: "rgba(107,114,128,0.1)",
142
- border: "1px solid rgba(107,114,128,0.2)",
143
- color: "#6b7280",
144
- })) }, isAvailable ? "AVAILABLE" : "NOT FOUND")));
145
- })),
146
- react_1.default.createElement("div", { style: {
147
- padding: "14px 24px",
148
- borderTop: "1px solid #1f2937",
149
- display: "flex",
150
- justifyContent: "space-between",
151
- alignItems: "center",
152
- } },
153
- react_1.default.createElement("span", { style: { fontSize: 11, color: "#6b7280" } },
154
- selected.size,
155
- " report",
156
- selected.size !== 1 ? "s" : "",
157
- " selected"),
158
- react_1.default.createElement("div", { style: { display: "flex", gap: 10 } },
159
- react_1.default.createElement("button", { onClick: onCancel, style: {
160
- background: "transparent",
161
- border: "1px solid #374151",
162
- borderRadius: 8,
163
- padding: "8px 18px",
164
- fontSize: 13,
165
- fontWeight: 500,
166
- color: "#9ca3af",
167
- cursor: "pointer",
168
- } }, "Cancel"),
169
- react_1.default.createElement("button", { onClick: () => onConfirm(Array.from(selected)), disabled: selected.size === 0, style: {
170
- background: selected.size > 0 ? qboConstants_1.QBO_GREEN : "#374151",
171
- border: "none",
172
- borderRadius: 8,
173
- padding: "8px 20px",
174
- fontSize: 13,
175
- fontWeight: 600,
176
- color: "white",
177
- cursor: selected.size > 0 ? "pointer" : "not-allowed",
178
- opacity: selected.size > 0 ? 1 : 0.5,
179
- } }, "Confirm & Import"))))));
180
- }
@@ -1,10 +0,0 @@
1
- import React from "react";
2
- import type { QboCompany } from "./types";
3
- interface QboClientSelectorModalProps {
4
- open: boolean;
5
- companies: QboCompany[];
6
- onCancel: () => void;
7
- onSelect: (company: QboCompany) => void;
8
- }
9
- export declare function QboClientSelectorModal({ open, companies, onCancel, onSelect, }: QboClientSelectorModalProps): React.JSX.Element | null;
10
- export {};
@@ -1,155 +0,0 @@
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.QboClientSelectorModal = QboClientSelectorModal;
27
- const react_1 = __importStar(require("react"));
28
- const qboConstants_1 = require("./qboConstants");
29
- function QboClientSelectorModal({ open, companies, onCancel, onSelect, }) {
30
- const [selectedId, setSelectedId] = (0, react_1.useState)(companies.length > 0 ? companies[0].id : null);
31
- if (!open)
32
- return null;
33
- const handleConfirm = () => {
34
- const company = companies.find((c) => c.id === selectedId);
35
- if (company)
36
- onSelect(company);
37
- };
38
- return (react_1.default.createElement("div", { onClick: onCancel, style: {
39
- position: "fixed",
40
- inset: 0,
41
- zIndex: 9999,
42
- background: "rgba(0,0,0,0.65)",
43
- display: "flex",
44
- alignItems: "center",
45
- justifyContent: "center",
46
- } },
47
- react_1.default.createElement("div", { onClick: (e) => e.stopPropagation(), style: {
48
- width: 440,
49
- maxHeight: "85vh",
50
- background: "#111827",
51
- border: "1px solid #1f2937",
52
- borderRadius: 16,
53
- display: "flex",
54
- flexDirection: "column",
55
- boxShadow: "0 25px 60px rgba(0,0,0,0.5)",
56
- } },
57
- react_1.default.createElement("div", { style: { padding: "20px 24px 16px", borderBottom: "1px solid #1f2937" } },
58
- react_1.default.createElement("div", { style: { display: "flex", alignItems: "center", gap: 12 } },
59
- react_1.default.createElement("div", { style: {
60
- width: 36,
61
- height: 36,
62
- borderRadius: 8,
63
- background: "rgba(44,160,28,0.12)",
64
- border: "1px solid rgba(44,160,28,0.25)",
65
- display: "flex",
66
- alignItems: "center",
67
- justifyContent: "center",
68
- } },
69
- react_1.default.createElement("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none" },
70
- react_1.default.createElement("rect", { x: "2", y: "3", width: "12", height: "10", rx: "2", stroke: qboConstants_1.QBO_GREEN, strokeWidth: "1.5" }),
71
- react_1.default.createElement("path", { d: "M5 7h6M5 9.5h4", stroke: qboConstants_1.QBO_GREEN, strokeWidth: "1", strokeLinecap: "round" }))),
72
- react_1.default.createElement("div", { style: { flex: 1 } },
73
- react_1.default.createElement("div", { style: { fontSize: 15, fontWeight: 600, color: "#f3f4f6" } }, "Select a Company"),
74
- react_1.default.createElement("div", { style: { fontSize: 12, color: "#9ca3af", marginTop: 2 } }, "Select the QuickBooks account for this client")),
75
- react_1.default.createElement("button", { onClick: onCancel, style: {
76
- background: "transparent",
77
- border: "none",
78
- color: "#6b7280",
79
- fontSize: 18,
80
- cursor: "pointer",
81
- padding: 4,
82
- lineHeight: 1,
83
- } }, "\u00D7"))),
84
- react_1.default.createElement("div", { style: { padding: "12px 24px", flex: 1, overflowY: "auto" } }, companies.map((company) => {
85
- const isSelected = company.id === selectedId;
86
- return (react_1.default.createElement("label", { key: company.id, style: {
87
- display: "flex",
88
- alignItems: "center",
89
- gap: 12,
90
- padding: "10px 12px",
91
- borderRadius: 10,
92
- cursor: "pointer",
93
- marginBottom: 4,
94
- background: isSelected ? "rgba(44,160,28,0.06)" : "transparent",
95
- border: isSelected
96
- ? "1px solid rgba(44,160,28,0.25)"
97
- : "1px solid transparent",
98
- transition: "all 150ms",
99
- } },
100
- react_1.default.createElement("div", { style: {
101
- width: 16,
102
- height: 16,
103
- borderRadius: "50%",
104
- border: isSelected
105
- ? `5px solid ${qboConstants_1.QBO_GREEN}`
106
- : "2px solid #4b5563",
107
- background: isSelected ? "white" : "transparent",
108
- flexShrink: 0,
109
- transition: "all 150ms",
110
- } }),
111
- react_1.default.createElement("input", { type: "radio", name: "qbo-company", value: company.id, checked: isSelected, onChange: () => setSelectedId(company.id), style: { display: "none" } }),
112
- react_1.default.createElement("div", { style: {
113
- width: 32,
114
- height: 32,
115
- borderRadius: 8,
116
- background: company.color,
117
- display: "flex",
118
- alignItems: "center",
119
- justifyContent: "center",
120
- fontSize: 12,
121
- fontWeight: 700,
122
- color: "white",
123
- flexShrink: 0,
124
- } }, company.initials),
125
- react_1.default.createElement("span", { style: { fontSize: 13, fontWeight: 500, color: "#e5e7eb" } }, company.name)));
126
- })),
127
- react_1.default.createElement("div", { style: {
128
- padding: "14px 24px",
129
- borderTop: "1px solid #1f2937",
130
- display: "flex",
131
- justifyContent: "flex-end",
132
- gap: 10,
133
- } },
134
- react_1.default.createElement("button", { onClick: onCancel, style: {
135
- background: "transparent",
136
- border: "1px solid #374151",
137
- borderRadius: 8,
138
- padding: "8px 18px",
139
- fontSize: 13,
140
- fontWeight: 500,
141
- color: "#9ca3af",
142
- cursor: "pointer",
143
- } }, "Cancel"),
144
- react_1.default.createElement("button", { onClick: handleConfirm, disabled: !selectedId, style: {
145
- background: selectedId ? qboConstants_1.QBO_GREEN : "#374151",
146
- border: "none",
147
- borderRadius: 8,
148
- padding: "8px 20px",
149
- fontSize: 13,
150
- fontWeight: 600,
151
- color: "white",
152
- cursor: selectedId ? "pointer" : "not-allowed",
153
- opacity: selectedId ? 1 : 0.5,
154
- } }, "Continue")))));
155
- }
@@ -1,9 +0,0 @@
1
- import React from "react";
2
- interface QboConnectBannerProps {
3
- connected: boolean;
4
- companyName?: string | null;
5
- onConnect: () => void;
6
- onDisconnect?: () => void;
7
- }
8
- export declare function QboConnectBanner({ connected, companyName, onConnect, onDisconnect, }: QboConnectBannerProps): React.JSX.Element;
9
- export {};
@@ -1,55 +0,0 @@
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.QboConnectBanner = QboConnectBanner;
7
- const react_1 = __importDefault(require("react"));
8
- const qboConstants_1 = require("./qboConstants");
9
- // QuickBooks logo SVG (simplified mark)
10
- function QboLogo({ size = 20 }) {
11
- return (react_1.default.createElement("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none" },
12
- react_1.default.createElement("rect", { width: "24", height: "24", rx: "4", fill: qboConstants_1.QBO_GREEN }),
13
- react_1.default.createElement("path", { d: "M12 4C7.58 4 4 7.58 4 12s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8zm-1.5 12.5c-2.49 0-4.5-2.01-4.5-4.5s2.01-4.5 4.5-4.5c.83 0 1.5.67 1.5 1.5s-.67 1.5-1.5 1.5-1.5.67-1.5 1.5.67 1.5 1.5 1.5 1.5-.67 1.5-1.5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5c0 2.49-2.01 4.5-4.5 4.5zm3 0c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5-.67 1.5-1.5-.67-1.5-1.5-1.5-1.5.67-1.5 1.5c0 .83-.67 1.5-1.5 1.5s-1.5-.67-1.5-1.5c0-2.49 2.01-4.5 4.5-4.5s4.5 2.01 4.5 4.5-2.01 4.5-4.5 4.5z", fill: "white" })));
14
- }
15
- function QboConnectBanner({ connected, companyName, onConnect, onDisconnect, }) {
16
- if (connected) {
17
- return (react_1.default.createElement("div", { className: "flex flex-col sm:flex-row items-start sm:items-center gap-3 px-4 py-3 mb-4 rounded-lg", style: {
18
- background: qboConstants_1.QBO_GREEN_BG,
19
- border: `1px solid ${qboConstants_1.QBO_GREEN_BORDER}`,
20
- } },
21
- react_1.default.createElement(QboLogo, { size: 20 }),
22
- react_1.default.createElement("div", { className: "flex-1 min-w-0" },
23
- react_1.default.createElement("div", { className: "text-[13px] font-medium text-white font-tax-axis-body" }, "Connected to QuickBooks"),
24
- companyName && (react_1.default.createElement("div", { className: "text-[11px] text-tax-axis-text-3 font-tax-axis-body mt-0.5" }, companyName))),
25
- react_1.default.createElement("span", { className: "text-[10px] font-semibold font-tax-axis-mono px-2 py-0.5 rounded", style: { background: "rgba(44,160,28,0.15)", color: qboConstants_1.QBO_GREEN } }, "SYNCED"),
26
- react_1.default.createElement("button", { onClick: onConnect, className: "flex items-center gap-1.5 rounded-md px-3 py-1.5 text-[11px] font-semibold font-tax-axis-mono flex-shrink-0 cursor-pointer border-none", style: {
27
- background: qboConstants_1.QBO_GREEN,
28
- color: "white",
29
- boxShadow: "0 2px 8px rgba(44,160,28,0.3)",
30
- } },
31
- "Import",
32
- react_1.default.createElement("svg", { width: "10", height: "10", viewBox: "0 0 10 10", fill: "none" },
33
- react_1.default.createElement("path", { d: "M3 1.5L6.5 5 3 8.5", stroke: "white", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }))),
34
- onDisconnect && (react_1.default.createElement("button", { onClick: onDisconnect, className: "bg-transparent border-none text-tax-axis-text-4 text-[11px] font-tax-axis-body cursor-pointer hover:text-white" }, "Disconnect"))));
35
- }
36
- return (react_1.default.createElement("div", { className: "flex flex-col sm:flex-row items-start sm:items-center gap-3 px-4 py-3.5 mb-4 rounded-lg cursor-pointer", style: {
37
- background: "linear-gradient(135deg, rgba(44,160,28,0.06) 0%, rgba(44,160,28,0.02) 100%)",
38
- border: `1px solid ${qboConstants_1.QBO_GREEN_BORDER}`,
39
- }, onClick: onConnect, role: "button", tabIndex: 0, onKeyDown: (e) => {
40
- if (e.key === "Enter" || e.key === " ")
41
- onConnect();
42
- } },
43
- react_1.default.createElement(QboLogo, { size: 24 }),
44
- react_1.default.createElement("div", { className: "flex-1 min-w-0" },
45
- react_1.default.createElement("div", { className: "text-[13px] font-medium text-white font-tax-axis-body" }, "Import from QuickBooks Online"),
46
- react_1.default.createElement("div", { className: "text-[11px] text-tax-axis-text-3 font-tax-axis-body mt-0.5" }, "Connect a QuickBooks account to import financial documents for this client")),
47
- react_1.default.createElement("div", { className: "flex items-center gap-1.5 rounded-md px-3 py-1.5 text-[11px] font-semibold font-tax-axis-mono flex-shrink-0 w-full sm:w-auto justify-center sm:justify-start", style: {
48
- background: qboConstants_1.QBO_GREEN,
49
- color: "white",
50
- boxShadow: "0 2px 8px rgba(44,160,28,0.3)",
51
- } },
52
- "Connect",
53
- react_1.default.createElement("svg", { width: "10", height: "10", viewBox: "0 0 10 10", fill: "none" },
54
- react_1.default.createElement("path", { d: "M3 1.5L6.5 5 3 8.5", stroke: "white", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" })))));
55
- }
@@ -1,10 +0,0 @@
1
- import React from "react";
2
- interface QboDocumentMappingModalProps {
3
- open: boolean;
4
- companyName: string;
5
- selectedReports: string[];
6
- onCancel: () => void;
7
- onConfirm: () => void;
8
- }
9
- export declare function QboDocumentMappingModal({ open, companyName, selectedReports, onCancel, onConfirm, }: QboDocumentMappingModalProps): React.JSX.Element | null;
10
- export {};