@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.
- package/lib/components/TaxAxis/TaxAxisShell.js +31 -5
- package/lib/tax-axis/components/dashboard/TaxAxisDashboard.d.ts +2 -1
- package/lib/tax-axis/components/dashboard/TaxAxisDashboard.js +74 -9
- package/lib/tax-axis/components/documents/DocumentCard.d.ts +3 -1
- package/lib/tax-axis/components/documents/DocumentCard.js +15 -3
- package/lib/tax-axis/components/documents/DocumentReviewModal.d.ts +1 -3
- package/lib/tax-axis/components/documents/DocumentReviewModal.js +263 -113
- package/lib/tax-axis/components/documents/DocumentTier.d.ts +3 -1
- package/lib/tax-axis/components/documents/DocumentTier.js +2 -2
- package/lib/tax-axis/components/documents/TaxAxisDocuments.js +21 -2
- package/lib/tax-axis/components/extractionReview/TaxAxisExtractionReview.js +17 -17
- package/lib/tax-axis/components/intake/TaxAxisIntake.js +11 -23
- package/lib/tax-axis/index.d.ts +2 -0
- package/lib/tax-axis/index.js +5 -1
- package/package.json +1 -1
- package/lib/tax-axis/components/documents/qbo/QboAvailableReportsModal.d.ts +0 -13
- package/lib/tax-axis/components/documents/qbo/QboAvailableReportsModal.js +0 -180
- package/lib/tax-axis/components/documents/qbo/QboClientSelectorModal.d.ts +0 -10
- package/lib/tax-axis/components/documents/qbo/QboClientSelectorModal.js +0 -155
- package/lib/tax-axis/components/documents/qbo/QboConnectBanner.d.ts +0 -9
- package/lib/tax-axis/components/documents/qbo/QboConnectBanner.js +0 -55
- package/lib/tax-axis/components/documents/qbo/QboDocumentMappingModal.d.ts +0 -10
- package/lib/tax-axis/components/documents/qbo/QboDocumentMappingModal.js +0 -202
- package/lib/tax-axis/components/documents/qbo/QboImportingModal.d.ts +0 -8
- package/lib/tax-axis/components/documents/qbo/QboImportingModal.js +0 -75
- package/lib/tax-axis/components/documents/qbo/QboPermissionsModal.d.ts +0 -8
- package/lib/tax-axis/components/documents/qbo/QboPermissionsModal.js +0 -126
- package/lib/tax-axis/components/documents/qbo/index.d.ts +0 -8
- package/lib/tax-axis/components/documents/qbo/index.js +0 -17
- package/lib/tax-axis/components/documents/qbo/qboConstants.d.ts +0 -24
- package/lib/tax-axis/components/documents/qbo/qboConstants.js +0 -71
- package/lib/tax-axis/components/documents/qbo/types.d.ts +0 -43
- package/lib/tax-axis/components/documents/qbo/types.js +0 -3
- package/lib/tax-axis/components/documents/qbo/useQboFlow.d.ts +0 -19
- package/lib/tax-axis/components/documents/qbo/useQboFlow.js +0 -207
|
@@ -1,202 +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.QboDocumentMappingModal = QboDocumentMappingModal;
|
|
27
|
-
const react_1 = __importStar(require("react"));
|
|
28
|
-
const qboConstants_1 = require("./qboConstants");
|
|
29
|
-
const STATUS_COLORS = {
|
|
30
|
-
mapped: {
|
|
31
|
-
bg: "rgba(44,160,28,0.08)",
|
|
32
|
-
border: "rgba(44,160,28,0.2)",
|
|
33
|
-
text: qboConstants_1.QBO_GREEN,
|
|
34
|
-
label: "MAPPED",
|
|
35
|
-
},
|
|
36
|
-
unmapped: {
|
|
37
|
-
bg: "rgba(107,114,128,0.08)",
|
|
38
|
-
border: "rgba(107,114,128,0.2)",
|
|
39
|
-
text: "#6b7280",
|
|
40
|
-
label: "UNMAPPED",
|
|
41
|
-
},
|
|
42
|
-
review: {
|
|
43
|
-
bg: "rgba(251,154,29,0.08)",
|
|
44
|
-
border: "rgba(251,154,29,0.2)",
|
|
45
|
-
text: "#FB9A1D",
|
|
46
|
-
label: "REVIEW",
|
|
47
|
-
},
|
|
48
|
-
};
|
|
49
|
-
function QboDocumentMappingModal({ open, companyName, selectedReports, onCancel, onConfirm, }) {
|
|
50
|
-
const hasPL = selectedReports.includes("profit_loss");
|
|
51
|
-
const hasBS = selectedReports.includes("balance_sheet");
|
|
52
|
-
const defaultTab = hasPL ? "profit_loss" : "balance_sheet";
|
|
53
|
-
const [activeTab, setActiveTab] = (0, react_1.useState)(defaultTab);
|
|
54
|
-
if (!open)
|
|
55
|
-
return null;
|
|
56
|
-
const rows = activeTab === "profit_loss" ? qboConstants_1.PL_MAPPING_ROWS : qboConstants_1.BS_MAPPING_ROWS;
|
|
57
|
-
const mappedCount = rows.filter((r) => r.status === "mapped").length;
|
|
58
|
-
const reviewCount = rows.filter((r) => r.status === "review").length;
|
|
59
|
-
const tabs = [
|
|
60
|
-
{ key: "profit_loss", label: "Profit & Loss", visible: hasPL },
|
|
61
|
-
{ key: "balance_sheet", label: "Balance Sheet", visible: hasBS },
|
|
62
|
-
];
|
|
63
|
-
return (react_1.default.createElement("div", { onClick: onCancel, style: {
|
|
64
|
-
position: "fixed",
|
|
65
|
-
inset: 0,
|
|
66
|
-
zIndex: 9999,
|
|
67
|
-
background: "rgba(0,0,0,0.65)",
|
|
68
|
-
display: "flex",
|
|
69
|
-
alignItems: "center",
|
|
70
|
-
justifyContent: "center",
|
|
71
|
-
} },
|
|
72
|
-
react_1.default.createElement("div", { onClick: (e) => e.stopPropagation(), style: {
|
|
73
|
-
width: 720,
|
|
74
|
-
maxHeight: "85vh",
|
|
75
|
-
background: "#111827",
|
|
76
|
-
border: "1px solid #1f2937",
|
|
77
|
-
borderRadius: 16,
|
|
78
|
-
display: "flex",
|
|
79
|
-
flexDirection: "column",
|
|
80
|
-
boxShadow: "0 25px 60px rgba(0,0,0,0.5)",
|
|
81
|
-
} },
|
|
82
|
-
react_1.default.createElement("div", { style: { padding: "20px 24px 0" } },
|
|
83
|
-
react_1.default.createElement("div", { style: { display: "flex", alignItems: "center", gap: 12, marginBottom: 12 } },
|
|
84
|
-
react_1.default.createElement("div", { style: {
|
|
85
|
-
width: 36,
|
|
86
|
-
height: 36,
|
|
87
|
-
borderRadius: 8,
|
|
88
|
-
background: "rgba(44,160,28,0.12)",
|
|
89
|
-
border: "1px solid rgba(44,160,28,0.25)",
|
|
90
|
-
display: "flex",
|
|
91
|
-
alignItems: "center",
|
|
92
|
-
justifyContent: "center",
|
|
93
|
-
} },
|
|
94
|
-
react_1.default.createElement("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none" },
|
|
95
|
-
react_1.default.createElement("path", { d: "M2 5h5v6H2zM9 5h5v6H9z", stroke: qboConstants_1.QBO_GREEN, strokeWidth: "1.2", strokeLinecap: "round" }),
|
|
96
|
-
react_1.default.createElement("path", { d: "M7 8h2", stroke: qboConstants_1.QBO_GREEN, strokeWidth: "1.2", strokeLinecap: "round" }))),
|
|
97
|
-
react_1.default.createElement("div", { style: { flex: 1 } },
|
|
98
|
-
react_1.default.createElement("div", { style: { fontSize: 15, fontWeight: 600, color: "#f3f4f6" } }, "Document Mapping"),
|
|
99
|
-
react_1.default.createElement("div", { style: { fontSize: 12, color: "#9ca3af", marginTop: 2 } },
|
|
100
|
-
companyName,
|
|
101
|
-
" \u00B7 ",
|
|
102
|
-
mappedCount,
|
|
103
|
-
" mapped, ",
|
|
104
|
-
reviewCount,
|
|
105
|
-
" needs review")),
|
|
106
|
-
react_1.default.createElement("button", { onClick: onCancel, style: {
|
|
107
|
-
background: "transparent",
|
|
108
|
-
border: "none",
|
|
109
|
-
color: "#6b7280",
|
|
110
|
-
fontSize: 18,
|
|
111
|
-
cursor: "pointer",
|
|
112
|
-
padding: 4,
|
|
113
|
-
lineHeight: 1,
|
|
114
|
-
} }, "\u00D7")),
|
|
115
|
-
react_1.default.createElement("div", { style: { display: "flex", gap: 0, borderBottom: "1px solid #1f2937" } }, tabs.filter((t) => t.visible).map((tab) => (react_1.default.createElement("button", { key: tab.key, onClick: () => setActiveTab(tab.key), style: {
|
|
116
|
-
background: "transparent",
|
|
117
|
-
border: "none",
|
|
118
|
-
borderBottom: activeTab === tab.key ? `2px solid ${qboConstants_1.QBO_GREEN}` : "2px solid transparent",
|
|
119
|
-
padding: "8px 16px",
|
|
120
|
-
fontSize: 13,
|
|
121
|
-
fontWeight: activeTab === tab.key ? 600 : 400,
|
|
122
|
-
color: activeTab === tab.key ? "#e5e7eb" : "#6b7280",
|
|
123
|
-
cursor: "pointer",
|
|
124
|
-
marginBottom: -1,
|
|
125
|
-
} }, tab.label))))),
|
|
126
|
-
react_1.default.createElement("div", { style: { flex: 1, overflowY: "auto", padding: "0 24px" } },
|
|
127
|
-
react_1.default.createElement("div", { style: {
|
|
128
|
-
display: "grid",
|
|
129
|
-
gridTemplateColumns: "1fr 1fr 90px",
|
|
130
|
-
gap: 12,
|
|
131
|
-
padding: "12px 0",
|
|
132
|
-
borderBottom: "1px solid #1f2937",
|
|
133
|
-
position: "sticky",
|
|
134
|
-
top: 0,
|
|
135
|
-
background: "#111827",
|
|
136
|
-
zIndex: 1,
|
|
137
|
-
} },
|
|
138
|
-
react_1.default.createElement("span", { style: { fontSize: 10, fontWeight: 700, color: "#6b7280", letterSpacing: "0.05em", textTransform: "uppercase" } }, "QuickBooks Field"),
|
|
139
|
-
react_1.default.createElement("span", { style: { fontSize: 10, fontWeight: 700, color: "#6b7280", letterSpacing: "0.05em", textTransform: "uppercase" } }, "TaxAxis Field"),
|
|
140
|
-
react_1.default.createElement("span", { style: { fontSize: 10, fontWeight: 700, color: "#6b7280", letterSpacing: "0.05em", textTransform: "uppercase" } }, "Status")),
|
|
141
|
-
rows.map((row, i) => {
|
|
142
|
-
const sc = STATUS_COLORS[row.status];
|
|
143
|
-
return (react_1.default.createElement("div", { key: i, style: {
|
|
144
|
-
display: "grid",
|
|
145
|
-
gridTemplateColumns: "1fr 1fr 90px",
|
|
146
|
-
gap: 12,
|
|
147
|
-
padding: "10px 0",
|
|
148
|
-
borderBottom: i < rows.length - 1 ? "1px solid rgba(31,41,55,0.5)" : "none",
|
|
149
|
-
alignItems: "center",
|
|
150
|
-
} },
|
|
151
|
-
react_1.default.createElement("span", { style: { fontSize: 12, color: "#d1d5db", fontFamily: "monospace" } }, row.qboField),
|
|
152
|
-
react_1.default.createElement("div", { style: { display: "flex", alignItems: "center", gap: 6 } },
|
|
153
|
-
react_1.default.createElement("svg", { width: "10", height: "10", viewBox: "0 0 10 10", fill: "none" },
|
|
154
|
-
react_1.default.createElement("path", { d: "M1 5h8M6 2.5L8.5 5 6 7.5", stroke: "#4b5563", strokeWidth: "1", strokeLinecap: "round" })),
|
|
155
|
-
react_1.default.createElement("span", { style: { fontSize: 12, color: "#d1d5db", fontFamily: "monospace" } }, row.taxAxisField)),
|
|
156
|
-
react_1.default.createElement("span", { style: {
|
|
157
|
-
fontSize: 9,
|
|
158
|
-
fontWeight: 700,
|
|
159
|
-
letterSpacing: "0.05em",
|
|
160
|
-
padding: "2px 8px",
|
|
161
|
-
borderRadius: 4,
|
|
162
|
-
background: sc.bg,
|
|
163
|
-
border: `1px solid ${sc.border}`,
|
|
164
|
-
color: sc.text,
|
|
165
|
-
textAlign: "center",
|
|
166
|
-
} }, sc.label)));
|
|
167
|
-
})),
|
|
168
|
-
react_1.default.createElement("div", { style: {
|
|
169
|
-
padding: "14px 24px",
|
|
170
|
-
borderTop: "1px solid #1f2937",
|
|
171
|
-
display: "flex",
|
|
172
|
-
justifyContent: "space-between",
|
|
173
|
-
alignItems: "center",
|
|
174
|
-
} },
|
|
175
|
-
react_1.default.createElement("span", { style: { fontSize: 11, color: "#6b7280" } },
|
|
176
|
-
mappedCount,
|
|
177
|
-
" of ",
|
|
178
|
-
rows.length,
|
|
179
|
-
" fields mapped"),
|
|
180
|
-
react_1.default.createElement("div", { style: { display: "flex", gap: 10 } },
|
|
181
|
-
react_1.default.createElement("button", { onClick: onCancel, style: {
|
|
182
|
-
background: "transparent",
|
|
183
|
-
border: "1px solid #374151",
|
|
184
|
-
borderRadius: 8,
|
|
185
|
-
padding: "8px 18px",
|
|
186
|
-
fontSize: 13,
|
|
187
|
-
fontWeight: 500,
|
|
188
|
-
color: "#9ca3af",
|
|
189
|
-
cursor: "pointer",
|
|
190
|
-
} }, "Cancel"),
|
|
191
|
-
react_1.default.createElement("button", { onClick: onConfirm, style: {
|
|
192
|
-
background: qboConstants_1.QBO_GREEN,
|
|
193
|
-
border: "none",
|
|
194
|
-
borderRadius: 8,
|
|
195
|
-
padding: "8px 20px",
|
|
196
|
-
fontSize: 13,
|
|
197
|
-
fontWeight: 600,
|
|
198
|
-
color: "white",
|
|
199
|
-
cursor: "pointer",
|
|
200
|
-
boxShadow: "0 2px 8px rgba(44,160,28,0.3)",
|
|
201
|
-
} }, "Confirm & Import"))))));
|
|
202
|
-
}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
interface QboImportingModalProps {
|
|
3
|
-
open: boolean;
|
|
4
|
-
currentStepIndex: number;
|
|
5
|
-
companyName: string;
|
|
6
|
-
}
|
|
7
|
-
export declare function QboImportingModal({ open, currentStepIndex, companyName, }: QboImportingModalProps): React.JSX.Element | null;
|
|
8
|
-
export {};
|
|
@@ -1,75 +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.QboImportingModal = QboImportingModal;
|
|
7
|
-
const react_1 = __importDefault(require("react"));
|
|
8
|
-
const qboConstants_1 = require("./qboConstants");
|
|
9
|
-
function QboImportingModal({ open, currentStepIndex, companyName, }) {
|
|
10
|
-
if (!open)
|
|
11
|
-
return null;
|
|
12
|
-
return (react_1.default.createElement("div", { style: {
|
|
13
|
-
position: "fixed",
|
|
14
|
-
inset: 0,
|
|
15
|
-
zIndex: 9999,
|
|
16
|
-
background: "rgba(0,0,0,0.65)",
|
|
17
|
-
display: "flex",
|
|
18
|
-
alignItems: "center",
|
|
19
|
-
justifyContent: "center",
|
|
20
|
-
} },
|
|
21
|
-
react_1.default.createElement("div", { style: {
|
|
22
|
-
width: 420,
|
|
23
|
-
background: "#111827",
|
|
24
|
-
border: "1px solid #1f2937",
|
|
25
|
-
borderRadius: 16,
|
|
26
|
-
boxShadow: "0 25px 60px rgba(0,0,0,0.5)",
|
|
27
|
-
padding: "28px 24px 24px",
|
|
28
|
-
} },
|
|
29
|
-
react_1.default.createElement("div", { style: { textAlign: "center", marginBottom: 24 } },
|
|
30
|
-
react_1.default.createElement("div", { style: { fontSize: 15, fontWeight: 600, color: "#f3f4f6" } }, "Importing from QuickBooks"),
|
|
31
|
-
react_1.default.createElement("div", { style: { fontSize: 12, color: "#9ca3af", marginTop: 4 } }, companyName)),
|
|
32
|
-
react_1.default.createElement("div", { style: { display: "flex", flexDirection: "column", gap: 6 } }, qboConstants_1.IMPORT_STEPS.map((step, i) => {
|
|
33
|
-
const isComplete = i < currentStepIndex;
|
|
34
|
-
const isActive = i === currentStepIndex;
|
|
35
|
-
const isPending = i > currentStepIndex;
|
|
36
|
-
return (react_1.default.createElement("div", { key: step.key, style: {
|
|
37
|
-
display: "flex",
|
|
38
|
-
alignItems: "center",
|
|
39
|
-
gap: 12,
|
|
40
|
-
padding: "10px 12px",
|
|
41
|
-
borderRadius: 8,
|
|
42
|
-
background: isActive ? "rgba(44,160,28,0.06)" : "transparent",
|
|
43
|
-
} },
|
|
44
|
-
react_1.default.createElement("div", { style: Object.assign({ width: 24, height: 24, borderRadius: "50%", display: "flex", alignItems: "center", justifyContent: "center", flexShrink: 0 }, (isComplete
|
|
45
|
-
? { background: "rgba(44,160,28,0.15)" }
|
|
46
|
-
: isActive
|
|
47
|
-
? { background: "rgba(44,160,28,0.1)", border: "2px solid rgba(44,160,28,0.3)" }
|
|
48
|
-
: { background: "rgba(75,85,99,0.15)" })) }, isComplete ? (react_1.default.createElement("svg", { width: "12", height: "12", viewBox: "0 0 12 12", fill: "none" },
|
|
49
|
-
react_1.default.createElement("path", { d: "M2.5 6l3 3 4.5-5", stroke: qboConstants_1.QBO_GREEN, strokeWidth: "1.5", strokeLinecap: "round" }))) : isActive ? (react_1.default.createElement("div", { style: {
|
|
50
|
-
width: 12,
|
|
51
|
-
height: 12,
|
|
52
|
-
borderRadius: "50%",
|
|
53
|
-
border: "2px solid transparent",
|
|
54
|
-
borderTopColor: qboConstants_1.QBO_GREEN,
|
|
55
|
-
animation: "qbo-spin 0.8s linear infinite",
|
|
56
|
-
} })) : (react_1.default.createElement("div", { style: {
|
|
57
|
-
width: 6,
|
|
58
|
-
height: 6,
|
|
59
|
-
borderRadius: "50%",
|
|
60
|
-
background: "#4b5563",
|
|
61
|
-
} }))),
|
|
62
|
-
react_1.default.createElement("span", { style: {
|
|
63
|
-
fontSize: 13,
|
|
64
|
-
fontWeight: isActive ? 500 : 400,
|
|
65
|
-
color: isComplete ? qboConstants_1.QBO_GREEN : isActive ? "#e5e7eb" : "#6b7280",
|
|
66
|
-
} },
|
|
67
|
-
step.label,
|
|
68
|
-
isComplete && (react_1.default.createElement("span", { style: { fontSize: 11, color: "#6b7280", marginLeft: 6 } }, "Done")))));
|
|
69
|
-
})),
|
|
70
|
-
react_1.default.createElement("style", null, `
|
|
71
|
-
@keyframes qbo-spin {
|
|
72
|
-
to { transform: rotate(360deg); }
|
|
73
|
-
}
|
|
74
|
-
`))));
|
|
75
|
-
}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
interface QboPermissionsModalProps {
|
|
3
|
-
open: boolean;
|
|
4
|
-
onCancel: () => void;
|
|
5
|
-
onContinue: () => void;
|
|
6
|
-
}
|
|
7
|
-
export declare function QboPermissionsModal({ open, onCancel, onContinue, }: QboPermissionsModalProps): React.JSX.Element | null;
|
|
8
|
-
export {};
|
|
@@ -1,126 +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.QboPermissionsModal = QboPermissionsModal;
|
|
7
|
-
const react_1 = __importDefault(require("react"));
|
|
8
|
-
const qboConstants_1 = require("./qboConstants");
|
|
9
|
-
function QboPermissionsModal({ open, onCancel, onContinue, }) {
|
|
10
|
-
if (!open)
|
|
11
|
-
return null;
|
|
12
|
-
return (react_1.default.createElement("div", { onClick: onCancel, style: {
|
|
13
|
-
position: "fixed",
|
|
14
|
-
inset: 0,
|
|
15
|
-
zIndex: 9999,
|
|
16
|
-
background: "rgba(0,0,0,0.65)",
|
|
17
|
-
display: "flex",
|
|
18
|
-
alignItems: "center",
|
|
19
|
-
justifyContent: "center",
|
|
20
|
-
} },
|
|
21
|
-
react_1.default.createElement("div", { onClick: (e) => e.stopPropagation(), style: {
|
|
22
|
-
width: 440,
|
|
23
|
-
maxHeight: "85vh",
|
|
24
|
-
background: "#111827",
|
|
25
|
-
border: "1px solid #1f2937",
|
|
26
|
-
borderRadius: 16,
|
|
27
|
-
display: "flex",
|
|
28
|
-
flexDirection: "column",
|
|
29
|
-
boxShadow: "0 25px 60px rgba(0,0,0,0.5)",
|
|
30
|
-
} },
|
|
31
|
-
react_1.default.createElement("div", { style: { padding: "20px 24px 16px", borderBottom: "1px solid #1f2937" } },
|
|
32
|
-
react_1.default.createElement("div", { style: { display: "flex", alignItems: "center", gap: 12 } },
|
|
33
|
-
react_1.default.createElement("div", { style: {
|
|
34
|
-
width: 36,
|
|
35
|
-
height: 36,
|
|
36
|
-
borderRadius: 8,
|
|
37
|
-
background: "rgba(44,160,28,0.12)",
|
|
38
|
-
border: "1px solid rgba(44,160,28,0.25)",
|
|
39
|
-
display: "flex",
|
|
40
|
-
alignItems: "center",
|
|
41
|
-
justifyContent: "center",
|
|
42
|
-
} },
|
|
43
|
-
react_1.default.createElement("svg", { width: "18", height: "18", viewBox: "0 0 24 24", fill: "none" },
|
|
44
|
-
react_1.default.createElement("rect", { width: "24", height: "24", rx: "4", fill: qboConstants_1.QBO_GREEN }),
|
|
45
|
-
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" }))),
|
|
46
|
-
react_1.default.createElement("div", { style: { flex: 1 } },
|
|
47
|
-
react_1.default.createElement("div", { style: { fontSize: 15, fontWeight: 600, color: "#f3f4f6" } }, "Connect QuickBooks Online"),
|
|
48
|
-
react_1.default.createElement("div", { style: { fontSize: 12, color: "#9ca3af", marginTop: 2 } }, "TaxAxis will request the following permissions")),
|
|
49
|
-
react_1.default.createElement("button", { onClick: onCancel, style: {
|
|
50
|
-
background: "transparent",
|
|
51
|
-
border: "none",
|
|
52
|
-
color: "#6b7280",
|
|
53
|
-
fontSize: 18,
|
|
54
|
-
cursor: "pointer",
|
|
55
|
-
padding: 4,
|
|
56
|
-
lineHeight: 1,
|
|
57
|
-
} }, "\u00D7"))),
|
|
58
|
-
react_1.default.createElement("div", { style: { padding: "16px 24px", flex: 1, overflowY: "auto" } }, qboConstants_1.QBO_PERMISSIONS.map((perm, i) => (react_1.default.createElement("div", { key: i, style: {
|
|
59
|
-
display: "flex",
|
|
60
|
-
alignItems: "center",
|
|
61
|
-
gap: 12,
|
|
62
|
-
padding: "12px 0",
|
|
63
|
-
borderBottom: i < qboConstants_1.QBO_PERMISSIONS.length - 1 ? "1px solid #1f2937" : "none",
|
|
64
|
-
} },
|
|
65
|
-
react_1.default.createElement("div", { style: {
|
|
66
|
-
width: 28,
|
|
67
|
-
height: 28,
|
|
68
|
-
borderRadius: 6,
|
|
69
|
-
background: "rgba(44,160,28,0.08)",
|
|
70
|
-
border: "1px solid rgba(44,160,28,0.2)",
|
|
71
|
-
display: "flex",
|
|
72
|
-
alignItems: "center",
|
|
73
|
-
justifyContent: "center",
|
|
74
|
-
flexShrink: 0,
|
|
75
|
-
} },
|
|
76
|
-
react_1.default.createElement("svg", { width: "12", height: "12", viewBox: "0 0 12 12", fill: "none" },
|
|
77
|
-
react_1.default.createElement("path", { d: "M2 6l3 3 5-5.5", stroke: qboConstants_1.QBO_GREEN, strokeWidth: "1.5", strokeLinecap: "round" }))),
|
|
78
|
-
react_1.default.createElement("div", { style: { flex: 1, minWidth: 0 } },
|
|
79
|
-
react_1.default.createElement("div", { style: { fontSize: 13, fontWeight: 500, color: "#e5e7eb" } }, perm.label),
|
|
80
|
-
react_1.default.createElement("div", { style: { fontSize: 11, color: "#9ca3af", marginTop: 2 } }, perm.description)),
|
|
81
|
-
react_1.default.createElement("span", { style: {
|
|
82
|
-
fontSize: 9,
|
|
83
|
-
fontWeight: 700,
|
|
84
|
-
color: "#9ca3af",
|
|
85
|
-
background: "rgba(156,163,175,0.1)",
|
|
86
|
-
border: "1px solid rgba(156,163,175,0.2)",
|
|
87
|
-
borderRadius: 4,
|
|
88
|
-
padding: "2px 6px",
|
|
89
|
-
letterSpacing: "0.05em",
|
|
90
|
-
flexShrink: 0,
|
|
91
|
-
} }, "READ ONLY"))))),
|
|
92
|
-
react_1.default.createElement("div", { style: {
|
|
93
|
-
padding: "14px 24px",
|
|
94
|
-
borderTop: "1px solid #1f2937",
|
|
95
|
-
display: "flex",
|
|
96
|
-
justifyContent: "flex-end",
|
|
97
|
-
gap: 10,
|
|
98
|
-
} },
|
|
99
|
-
react_1.default.createElement("button", { onClick: onCancel, style: {
|
|
100
|
-
background: "transparent",
|
|
101
|
-
border: "1px solid #374151",
|
|
102
|
-
borderRadius: 8,
|
|
103
|
-
padding: "8px 18px",
|
|
104
|
-
fontSize: 13,
|
|
105
|
-
fontWeight: 500,
|
|
106
|
-
color: "#9ca3af",
|
|
107
|
-
cursor: "pointer",
|
|
108
|
-
} }, "Cancel"),
|
|
109
|
-
react_1.default.createElement("button", { onClick: onContinue, style: {
|
|
110
|
-
background: qboConstants_1.INTUIT_BLUE,
|
|
111
|
-
border: "none",
|
|
112
|
-
borderRadius: 8,
|
|
113
|
-
padding: "8px 20px",
|
|
114
|
-
fontSize: 13,
|
|
115
|
-
fontWeight: 600,
|
|
116
|
-
color: "white",
|
|
117
|
-
cursor: "pointer",
|
|
118
|
-
display: "flex",
|
|
119
|
-
alignItems: "center",
|
|
120
|
-
gap: 6,
|
|
121
|
-
boxShadow: "0 2px 8px rgba(0,119,197,0.3)",
|
|
122
|
-
} },
|
|
123
|
-
"Continue to Intuit",
|
|
124
|
-
react_1.default.createElement("svg", { width: "10", height: "10", viewBox: "0 0 10 10", fill: "none" },
|
|
125
|
-
react_1.default.createElement("path", { d: "M2 5h6M5.5 2.5L8 5 5.5 7.5", stroke: "white", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" })))))));
|
|
126
|
-
}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
export { QboConnectBanner } from "./QboConnectBanner";
|
|
2
|
-
export { QboPermissionsModal } from "./QboPermissionsModal";
|
|
3
|
-
export { QboClientSelectorModal } from "./QboClientSelectorModal";
|
|
4
|
-
export { QboAvailableReportsModal } from "./QboAvailableReportsModal";
|
|
5
|
-
export { QboImportingModal } from "./QboImportingModal";
|
|
6
|
-
export { QboDocumentMappingModal } from "./QboDocumentMappingModal";
|
|
7
|
-
export { useQboFlow } from "./useQboFlow";
|
|
8
|
-
export type { QboCompany, QboReportOption, QboMappingRow, QboImportStep, QboModalStep, QboFlowState, QboFlowProps, } from "./types";
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.useQboFlow = exports.QboDocumentMappingModal = exports.QboImportingModal = exports.QboAvailableReportsModal = exports.QboClientSelectorModal = exports.QboPermissionsModal = exports.QboConnectBanner = void 0;
|
|
4
|
-
var QboConnectBanner_1 = require("./QboConnectBanner");
|
|
5
|
-
Object.defineProperty(exports, "QboConnectBanner", { enumerable: true, get: function () { return QboConnectBanner_1.QboConnectBanner; } });
|
|
6
|
-
var QboPermissionsModal_1 = require("./QboPermissionsModal");
|
|
7
|
-
Object.defineProperty(exports, "QboPermissionsModal", { enumerable: true, get: function () { return QboPermissionsModal_1.QboPermissionsModal; } });
|
|
8
|
-
var QboClientSelectorModal_1 = require("./QboClientSelectorModal");
|
|
9
|
-
Object.defineProperty(exports, "QboClientSelectorModal", { enumerable: true, get: function () { return QboClientSelectorModal_1.QboClientSelectorModal; } });
|
|
10
|
-
var QboAvailableReportsModal_1 = require("./QboAvailableReportsModal");
|
|
11
|
-
Object.defineProperty(exports, "QboAvailableReportsModal", { enumerable: true, get: function () { return QboAvailableReportsModal_1.QboAvailableReportsModal; } });
|
|
12
|
-
var QboImportingModal_1 = require("./QboImportingModal");
|
|
13
|
-
Object.defineProperty(exports, "QboImportingModal", { enumerable: true, get: function () { return QboImportingModal_1.QboImportingModal; } });
|
|
14
|
-
var QboDocumentMappingModal_1 = require("./QboDocumentMappingModal");
|
|
15
|
-
Object.defineProperty(exports, "QboDocumentMappingModal", { enumerable: true, get: function () { return QboDocumentMappingModal_1.QboDocumentMappingModal; } });
|
|
16
|
-
var useQboFlow_1 = require("./useQboFlow");
|
|
17
|
-
Object.defineProperty(exports, "useQboFlow", { enumerable: true, get: function () { return useQboFlow_1.useQboFlow; } });
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import type { QboCompany, QboReportOption, QboMappingRow, QboImportStep } from "./types";
|
|
2
|
-
export declare const QBO_GREEN = "#2CA01C";
|
|
3
|
-
export declare const QBO_GREEN_LIGHT = "#3FBF2E";
|
|
4
|
-
export declare const QBO_GREEN_BG = "rgba(44,160,28,0.08)";
|
|
5
|
-
export declare const QBO_GREEN_BORDER = "rgba(44,160,28,0.25)";
|
|
6
|
-
export declare const INTUIT_BLUE = "#0077C5";
|
|
7
|
-
export declare const MOCK_COMPANIES: QboCompany[];
|
|
8
|
-
export declare const QBO_PERMISSIONS: {
|
|
9
|
-
label: string;
|
|
10
|
-
description: string;
|
|
11
|
-
}[];
|
|
12
|
-
export declare const QBO_REPORT_OPTIONS: QboReportOption[];
|
|
13
|
-
export declare const IMPORT_STEPS: {
|
|
14
|
-
key: QboImportStep;
|
|
15
|
-
label: string;
|
|
16
|
-
}[];
|
|
17
|
-
export declare const PL_MAPPING_ROWS: QboMappingRow[];
|
|
18
|
-
export declare const BS_MAPPING_ROWS: QboMappingRow[];
|
|
19
|
-
export declare const LS_QBO_CONNECTED = "quickbooks_connected";
|
|
20
|
-
export declare const LS_QBO_ACCESS_TOKEN = "quickbooks_access_token";
|
|
21
|
-
export declare const LS_QBO_REFRESH_TOKEN = "quickbooks_refresh_token";
|
|
22
|
-
export declare const LS_QBO_TOKEN_EXPIRY = "quickbooks_token_expiry";
|
|
23
|
-
export declare const LS_QBO_REALM_ID = "quickbooks_realm_id";
|
|
24
|
-
export declare const LS_QBO_COMPANY_NAME = "taxaxis_qbo_company_name";
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
// QBO Connect Flow — constants and mock data
|
|
3
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.LS_QBO_COMPANY_NAME = exports.LS_QBO_REALM_ID = exports.LS_QBO_TOKEN_EXPIRY = exports.LS_QBO_REFRESH_TOKEN = exports.LS_QBO_ACCESS_TOKEN = exports.LS_QBO_CONNECTED = exports.BS_MAPPING_ROWS = exports.PL_MAPPING_ROWS = exports.IMPORT_STEPS = exports.QBO_REPORT_OPTIONS = exports.QBO_PERMISSIONS = exports.MOCK_COMPANIES = exports.INTUIT_BLUE = exports.QBO_GREEN_BORDER = exports.QBO_GREEN_BG = exports.QBO_GREEN_LIGHT = exports.QBO_GREEN = void 0;
|
|
5
|
-
// ── Brand colors ──
|
|
6
|
-
exports.QBO_GREEN = "#2CA01C";
|
|
7
|
-
exports.QBO_GREEN_LIGHT = "#3FBF2E";
|
|
8
|
-
exports.QBO_GREEN_BG = "rgba(44,160,28,0.08)";
|
|
9
|
-
exports.QBO_GREEN_BORDER = "rgba(44,160,28,0.25)";
|
|
10
|
-
exports.INTUIT_BLUE = "#0077C5";
|
|
11
|
-
// ── Mock companies (v1 — real API call blocked by OAuth code re-exchange issue) ──
|
|
12
|
-
exports.MOCK_COMPANIES = [
|
|
13
|
-
{ id: "realm-001", name: "Acme Consulting LLC", initials: "AC", color: "#6366F1" },
|
|
14
|
-
{ id: "realm-002", name: "Summit Digital Services", initials: "SD", color: "#248384" },
|
|
15
|
-
{ id: "realm-003", name: "Greenleaf Tax & Advisory", initials: "GT", color: "#0F6E56" },
|
|
16
|
-
{ id: "realm-004", name: "Northstar Financial Group", initials: "NF", color: "#FB9A1D" },
|
|
17
|
-
];
|
|
18
|
-
// ── Permissions shown in the modal ──
|
|
19
|
-
exports.QBO_PERMISSIONS = [
|
|
20
|
-
{ label: "Profit & Loss Reports", description: "Read your income and expense summaries" },
|
|
21
|
-
{ label: "Balance Sheet Reports", description: "Read your assets, liabilities, and equity" },
|
|
22
|
-
{ label: "Chart of Accounts", description: "Read your account structure and naming" },
|
|
23
|
-
{ label: "Company Information", description: "Read your business name and fiscal year" },
|
|
24
|
-
];
|
|
25
|
-
// ── Available report options ──
|
|
26
|
-
exports.QBO_REPORT_OPTIONS = [
|
|
27
|
-
{ id: "profit_loss", label: "Profit & Loss (Accrual)", documentType: "profit_loss", available: true },
|
|
28
|
-
{ id: "balance_sheet", label: "Balance Sheet (Accrual)", documentType: "balance_sheet", available: true },
|
|
29
|
-
{ id: "payroll_summary", label: "Payroll Summary", documentType: "payroll_records", available: false },
|
|
30
|
-
{ id: "fixed_asset_detail", label: "Fixed Asset Detail", documentType: "fixed_asset_schedule", available: false },
|
|
31
|
-
];
|
|
32
|
-
// ── Import step definitions ──
|
|
33
|
-
exports.IMPORT_STEPS = [
|
|
34
|
-
{ key: "connecting", label: "Connecting to QuickBooks" },
|
|
35
|
-
{ key: "fetching_reports", label: "Fetching report data" },
|
|
36
|
-
{ key: "importing_pl", label: "Importing Profit & Loss" },
|
|
37
|
-
{ key: "importing_bs", label: "Importing Balance Sheet" },
|
|
38
|
-
];
|
|
39
|
-
// ── Document mapping rows (mock for v1) ──
|
|
40
|
-
exports.PL_MAPPING_ROWS = [
|
|
41
|
-
{ qboField: "Total Income", taxAxisField: "Gross Revenue", status: "mapped" },
|
|
42
|
-
{ qboField: "Cost of Goods Sold", taxAxisField: "Cost of Goods Sold", status: "mapped" },
|
|
43
|
-
{ qboField: "Gross Profit", taxAxisField: "Gross Profit", status: "mapped" },
|
|
44
|
-
{ qboField: "Total Operating Expenses", taxAxisField: "Total Operating Expenses", status: "mapped" },
|
|
45
|
-
{ qboField: "Net Operating Income", taxAxisField: "Net Operating Income", status: "mapped" },
|
|
46
|
-
{ qboField: "Advertising & Marketing", taxAxisField: "Advertising Expense", status: "mapped" },
|
|
47
|
-
{ qboField: "Insurance", taxAxisField: "Insurance Expense", status: "mapped" },
|
|
48
|
-
{ qboField: "Rent or Lease", taxAxisField: "Rent Expense", status: "mapped" },
|
|
49
|
-
{ qboField: "Meals & Entertainment", taxAxisField: "Meals & Entertainment", status: "review" },
|
|
50
|
-
{ qboField: "Depreciation", taxAxisField: "Depreciation Expense", status: "mapped" },
|
|
51
|
-
{ qboField: "Office Supplies", taxAxisField: "Office Supplies", status: "mapped" },
|
|
52
|
-
{ qboField: "Professional Fees", taxAxisField: "Professional Fees", status: "mapped" },
|
|
53
|
-
];
|
|
54
|
-
exports.BS_MAPPING_ROWS = [
|
|
55
|
-
{ qboField: "Total Current Assets", taxAxisField: "Total Current Assets", status: "mapped" },
|
|
56
|
-
{ qboField: "Total Fixed Assets", taxAxisField: "Total Fixed Assets", status: "mapped" },
|
|
57
|
-
{ qboField: "Total Assets", taxAxisField: "Total Assets", status: "mapped" },
|
|
58
|
-
{ qboField: "Total Current Liabilities", taxAxisField: "Current Liabilities", status: "mapped" },
|
|
59
|
-
{ qboField: "Total Long-Term Liabilities", taxAxisField: "Long-Term Liabilities", status: "mapped" },
|
|
60
|
-
{ qboField: "Total Liabilities", taxAxisField: "Total Liabilities", status: "mapped" },
|
|
61
|
-
{ qboField: "Owner's Equity", taxAxisField: "Owner's Equity", status: "mapped" },
|
|
62
|
-
{ qboField: "Retained Earnings", taxAxisField: "Retained Earnings", status: "mapped" },
|
|
63
|
-
{ qboField: "Total Equity", taxAxisField: "Total Equity", status: "mapped" },
|
|
64
|
-
];
|
|
65
|
-
// ── localStorage keys ──
|
|
66
|
-
exports.LS_QBO_CONNECTED = "quickbooks_connected";
|
|
67
|
-
exports.LS_QBO_ACCESS_TOKEN = "quickbooks_access_token";
|
|
68
|
-
exports.LS_QBO_REFRESH_TOKEN = "quickbooks_refresh_token";
|
|
69
|
-
exports.LS_QBO_TOKEN_EXPIRY = "quickbooks_token_expiry";
|
|
70
|
-
exports.LS_QBO_REALM_ID = "quickbooks_realm_id";
|
|
71
|
-
exports.LS_QBO_COMPANY_NAME = "taxaxis_qbo_company_name";
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
export interface QboCompany {
|
|
2
|
-
id: string;
|
|
3
|
-
name: string;
|
|
4
|
-
initials: string;
|
|
5
|
-
color: string;
|
|
6
|
-
}
|
|
7
|
-
export interface QboReportOption {
|
|
8
|
-
id: string;
|
|
9
|
-
label: string;
|
|
10
|
-
documentType: string;
|
|
11
|
-
available: boolean;
|
|
12
|
-
}
|
|
13
|
-
export interface QboMappingRow {
|
|
14
|
-
qboField: string;
|
|
15
|
-
taxAxisField: string;
|
|
16
|
-
status: "mapped" | "unmapped" | "review";
|
|
17
|
-
}
|
|
18
|
-
export type QboImportStep = "connecting" | "fetching_reports" | "importing_pl" | "importing_bs";
|
|
19
|
-
export type QboModalStep = "closed" | "permissions" | "oauth_pending" | "client_selector" | "available_reports" | "mapping" | "importing" | "done";
|
|
20
|
-
export interface QboFlowState {
|
|
21
|
-
modalStep: QboModalStep;
|
|
22
|
-
selectedCompany: QboCompany | null;
|
|
23
|
-
selectedReports: string[];
|
|
24
|
-
importStepIndex: number;
|
|
25
|
-
error: string | null;
|
|
26
|
-
}
|
|
27
|
-
export interface QboFlowProps {
|
|
28
|
-
qboConnected?: boolean;
|
|
29
|
-
qboCompanyName?: string | null;
|
|
30
|
-
qboAuthorizeUrl?: string;
|
|
31
|
-
qboGetClientsUrl?: string;
|
|
32
|
-
/** Selected tax year from the session profile — pre-fills the year dropdown */
|
|
33
|
-
profileYear?: number;
|
|
34
|
-
onImportQboReport?: (sessionId: string, realmId: string, reportType: string, accountingMethod: string, year?: number) => Promise<any>;
|
|
35
|
-
fetchUploadedDocuments?: () => Promise<any[]>;
|
|
36
|
-
sessionId?: string;
|
|
37
|
-
onQboConnected?: (companyName: string) => void;
|
|
38
|
-
onQboDisconnected?: () => void;
|
|
39
|
-
onQboImportComplete?: (importedReports: {
|
|
40
|
-
slot: string;
|
|
41
|
-
fileName: string;
|
|
42
|
-
}[]) => void;
|
|
43
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import type { QboCompany, QboModalStep, QboFlowProps } from "./types";
|
|
2
|
-
export declare function useQboFlow({ qboConnected, qboCompanyName, qboAuthorizeUrl, onImportQboReport, fetchUploadedDocuments, sessionId, profileYear, onQboConnected, onQboDisconnected, onQboImportComplete, }: QboFlowProps): {
|
|
3
|
-
modalStep: QboModalStep;
|
|
4
|
-
selectedCompany: QboCompany | null;
|
|
5
|
-
selectedReports: string[];
|
|
6
|
-
selectedYear: number;
|
|
7
|
-
setSelectedYear: import("react").Dispatch<import("react").SetStateAction<number>>;
|
|
8
|
-
importStepIndex: number;
|
|
9
|
-
error: string | null;
|
|
10
|
-
companies: QboCompany[];
|
|
11
|
-
openPermissions: () => void;
|
|
12
|
-
openImport: () => void;
|
|
13
|
-
handlePermissionsContinue: () => void;
|
|
14
|
-
handleCompanySelected: (company: QboCompany) => void;
|
|
15
|
-
handleReportsConfirmed: (reportIds: string[]) => Promise<void>;
|
|
16
|
-
handleMappingConfirm: () => Promise<void>;
|
|
17
|
-
handleDisconnect: () => void;
|
|
18
|
-
closeModal: () => void;
|
|
19
|
-
};
|