@tesouro/embedded-components-react 0.11.21 → 0.11.24
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/dist/index.css +0 -14
- package/dist/index.d.ts +2 -1
- package/dist/lib/InsightsWidget.d.ts +3 -2
- package/dist/lib/WidgetSuite.d.ts +3 -2
- package/dist/libs/tesouro-embedded-components-react/insights-widget/feature/dist/lib/InsightsWidget/InsightsWidgetContext.js +73 -65
- package/dist/libs/tesouro-embedded-components-react/insights-widget/feature/dist/lib/InsightsWidget/InsightsWidgetFeature.js +10 -8
- package/dist/libs/tesouro-embedded-components-react/insights-widget/feature/dist/lib/InsightsWidget/mapInsightToRowView.js +12 -18
- package/dist/libs/tesouro-embedded-components-react/insights-widget/feature/dist/lib/InsightsWidget/testIds.js +1 -1
- package/dist/libs/tesouro-embedded-components-react/insights-widget/ui/dist/lib/InsightsWidget/InsightsWidget.js +61 -74
- package/dist/libs/tesouro-embedded-components-react/insights-widget/ui/dist/lib/InsightsWidget/SingleInsight/SingleInsight.js +61 -64
- package/dist/libs/tesouro-embedded-components-react/insights-widget/ui/dist/lib/InsightsWidget/labels.js +5 -3
- package/dist/libs/tesouro-embedded-components-react/shared/feature/dist/lib/analytics/build-info.js +1 -1
- package/dist/libs/tesouro-embedded-components-react/shared/util/dist/index.js +27 -27
- package/package.json +1 -1
package/dist/index.css
CHANGED
|
@@ -2055,9 +2055,6 @@
|
|
|
2055
2055
|
.ttw\:border-\[\#D0D5DD\] {
|
|
2056
2056
|
border-color: #D0D5DD;
|
|
2057
2057
|
}
|
|
2058
|
-
.ttw\:border-\[\#E0E4EA\] {
|
|
2059
|
-
border-color: #E0E4EA;
|
|
2060
|
-
}
|
|
2061
2058
|
.ttw\:border-\[\#EAECF0\] {
|
|
2062
2059
|
border-color: #EAECF0;
|
|
2063
2060
|
}
|
|
@@ -2250,9 +2247,6 @@
|
|
|
2250
2247
|
.ttw\:bg-\[\#EFF8FF\] {
|
|
2251
2248
|
background-color: #EFF8FF;
|
|
2252
2249
|
}
|
|
2253
|
-
.ttw\:bg-\[\#F0F2FD\] {
|
|
2254
|
-
background-color: #F0F2FD;
|
|
2255
|
-
}
|
|
2256
2250
|
.ttw\:bg-\[\#F2F4F7\] {
|
|
2257
2251
|
background-color: #F2F4F7;
|
|
2258
2252
|
}
|
|
@@ -5647,14 +5641,6 @@
|
|
|
5647
5641
|
.ttw\:hover\:bg-primary:hover {
|
|
5648
5642
|
background-color: var(--ttw-primary);
|
|
5649
5643
|
}
|
|
5650
|
-
.ttw\:hover\:bg-primary\/10:hover {
|
|
5651
|
-
background-color: var(--ttw-primary);
|
|
5652
|
-
}
|
|
5653
|
-
@supports (color: color-mix(in lab, red, red)) {
|
|
5654
|
-
.ttw\:hover\:bg-primary\/10:hover {
|
|
5655
|
-
background-color: color-mix(in oklab, var(--ttw-primary) 10%, transparent);
|
|
5656
|
-
}
|
|
5657
|
-
}
|
|
5658
5644
|
.ttw\:hover\:bg-primary\/15:hover {
|
|
5659
5645
|
background-color: var(--ttw-primary);
|
|
5660
5646
|
}
|
package/dist/index.d.ts
CHANGED
|
@@ -3632,9 +3632,11 @@ declare function ExpenseManagementWidget({ screenLabels, headerLabels, transacti
|
|
|
3632
3632
|
|
|
3633
3633
|
interface InsightsWidgetLabels {
|
|
3634
3634
|
widgetTitle: string;
|
|
3635
|
+
filterTabsLabel: string;
|
|
3635
3636
|
activeTab: string;
|
|
3636
3637
|
dismissedTab: string;
|
|
3637
3638
|
noInsightsFound: string;
|
|
3639
|
+
noInsightsDescription: string;
|
|
3638
3640
|
/** Screen-reader only: names the wait while insights load. */
|
|
3639
3641
|
loadingLabel: string;
|
|
3640
3642
|
loadErrorTitle: string;
|
|
@@ -3650,7 +3652,6 @@ interface InsightRowView {
|
|
|
3650
3652
|
displayText: string;
|
|
3651
3653
|
createdDate: string;
|
|
3652
3654
|
badgeLabel: string;
|
|
3653
|
-
badgeIcon: ReactElement;
|
|
3654
3655
|
showDismissButton: boolean;
|
|
3655
3656
|
showToggle: boolean;
|
|
3656
3657
|
toggleLabel?: string;
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { ComponentType, AnchorHTMLAttributes, ReactNode, ErrorInfo } from 'react';
|
|
3
3
|
import { RowData } from '@tanstack/react-table';
|
|
4
4
|
import { FallbackProps } from 'react-error-boundary';
|
|
5
5
|
|
|
6
6
|
interface InsightsWidgetLabels {
|
|
7
7
|
widgetTitle: string;
|
|
8
|
+
filterTabsLabel: string;
|
|
8
9
|
activeTab: string;
|
|
9
10
|
dismissedTab: string;
|
|
10
11
|
noInsightsFound: string;
|
|
12
|
+
noInsightsDescription: string;
|
|
11
13
|
/** Screen-reader only: names the wait while insights load. */
|
|
12
14
|
loadingLabel: string;
|
|
13
15
|
loadErrorTitle: string;
|
|
@@ -23,7 +25,6 @@ interface InsightRowView {
|
|
|
23
25
|
displayText: string;
|
|
24
26
|
createdDate: string;
|
|
25
27
|
badgeLabel: string;
|
|
26
|
-
badgeIcon: ReactElement;
|
|
27
28
|
showDismissButton: boolean;
|
|
28
29
|
showToggle: boolean;
|
|
29
30
|
toggleLabel?: string;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import { ComponentType, AnchorHTMLAttributes, ReactNode, ErrorInfo
|
|
2
|
+
import { ComponentType, AnchorHTMLAttributes, ReactNode, ErrorInfo } from 'react';
|
|
3
3
|
import { RowData } from '@tanstack/react-table';
|
|
4
4
|
import { FallbackProps } from 'react-error-boundary';
|
|
5
5
|
import { PartialDeep } from 'type-fest';
|
|
@@ -2568,9 +2568,11 @@ type ExpenseManagementWidgetProps = WidgetProviderProps & ExpenseManagementWidge
|
|
|
2568
2568
|
|
|
2569
2569
|
interface InsightsWidgetLabels {
|
|
2570
2570
|
widgetTitle: string;
|
|
2571
|
+
filterTabsLabel: string;
|
|
2571
2572
|
activeTab: string;
|
|
2572
2573
|
dismissedTab: string;
|
|
2573
2574
|
noInsightsFound: string;
|
|
2575
|
+
noInsightsDescription: string;
|
|
2574
2576
|
/** Screen-reader only: names the wait while insights load. */
|
|
2575
2577
|
loadingLabel: string;
|
|
2576
2578
|
loadErrorTitle: string;
|
|
@@ -2585,7 +2587,6 @@ interface InsightRowView {
|
|
|
2585
2587
|
displayText: string;
|
|
2586
2588
|
createdDate: string;
|
|
2587
2589
|
badgeLabel: string;
|
|
2588
|
-
badgeIcon: ReactElement;
|
|
2589
2590
|
showDismissButton: boolean;
|
|
2590
2591
|
showToggle: boolean;
|
|
2591
2592
|
toggleLabel?: string;
|
|
@@ -2,115 +2,123 @@
|
|
|
2
2
|
"use client";
|
|
3
3
|
"use client";
|
|
4
4
|
"use client";
|
|
5
|
-
import {
|
|
6
|
-
import
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
5
|
+
import { DATE_DISPLAY_LOCALE as e, DATE_DISPLAY_OPTIONS as t } from "../../../../../shared/util/dist/lib/dateDisplay.js";
|
|
6
|
+
import "../../../../../shared/util/dist/index.js";
|
|
7
|
+
import { OrganizationStatus as n } from "../../../../../shared/data-access/dist/lib/organizationStatus.js";
|
|
8
|
+
import { useEmbedApi as ee } from "../../../../../shared/data-access/dist/lib/EmbedApiContext.js";
|
|
9
|
+
import { useAllBankAccountsQuery as r } from "../../../../../shared/data-access/dist/lib/bank-account/useAllBankAccountsQuery.js";
|
|
10
|
+
import { useAllExternalBankAccountsQuery as i } from "../../../../../shared/data-access/dist/lib/external-bank-account/useAllExternalBankAccountsQuery.js";
|
|
9
11
|
import "../../../../../shared/data-access/dist/index.js";
|
|
10
|
-
import { useRefetchWidget as
|
|
12
|
+
import { useRefetchWidget as a, useWidgetConfig as o, useWidgetError as s, useWidgetLoading as te } from "../../../../../shared/feature/dist/lib/WidgetProvider/hooks.js";
|
|
11
13
|
import "../../../../../shared/feature/dist/index.js";
|
|
12
14
|
import { INSIGHTS_FEATURE_LABELS_EN as c } from "./labels.js";
|
|
13
|
-
import { useDismissedInsightIds as
|
|
14
|
-
import { shouldShowRoutingOnboardingInsight as
|
|
15
|
-
import { getInsightsPermissions as
|
|
16
|
-
import { createContext as
|
|
17
|
-
import { jsx as
|
|
15
|
+
import { useDismissedInsightIds as ne } from "./useDismissedInsightIds.js";
|
|
16
|
+
import { shouldShowRoutingOnboardingInsight as l } from "./shouldShowRoutingOnboardingInsight.js";
|
|
17
|
+
import { getInsightsPermissions as u } from "./permissions.js";
|
|
18
|
+
import { createContext as d, useCallback as f, useContext as p, useMemo as m, useState as h } from "react";
|
|
19
|
+
import { jsx as g } from "react/jsx-runtime";
|
|
18
20
|
// ../../libs/tesouro-embedded-components-react/insights-widget/feature/dist/lib/InsightsWidget/InsightsWidgetContext.js
|
|
19
|
-
var _ =
|
|
21
|
+
var _ = d({
|
|
20
22
|
activeFilter: "active",
|
|
21
23
|
setActiveFilter: () => {},
|
|
22
24
|
filteredInsights: [],
|
|
25
|
+
activeCount: 0,
|
|
26
|
+
dismissedCount: 0,
|
|
23
27
|
isLoading: !1,
|
|
24
28
|
isError: !1,
|
|
25
29
|
refetch: async () => void 0,
|
|
26
30
|
onDismissClick: () => {},
|
|
27
31
|
featureLabels: c,
|
|
28
32
|
createdDateLabel: ""
|
|
29
|
-
}), v = () =>
|
|
30
|
-
let { initResponse: x } =
|
|
33
|
+
}), v = () => p(_), y = ({ children: d, routingEnabled: p = !1, onRoutingToggleChange: v, onLinkExternalAccountClick: y, featureLabels: b }) => {
|
|
34
|
+
let { initResponse: x } = o(), S = te(), { organizationStatus: C } = ee(), w = s(), T = a(), E = m(() => l(x?.scopes), [x?.scopes]), { canReadBankAccounts: D, canReadExternalBankAccounts: O } = m(() => u(x?.scopes), [x?.scopes]), k = m(() => ({
|
|
31
35
|
...c,
|
|
32
36
|
...b
|
|
33
|
-
}), [b]), [
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
+
}), [b]), [A, re] = h("active"), [ie, ae] = h(!1), j = v !== void 0, M = j ? p : ie, N = j ? v : ae, { dismissedIds: P, isLoading: F, refetch: I, dismissInsight: L } = ne(), { data: R, isLoading: z, isError: B, refetch: V } = r({ enabled: D }), { data: H, isLoading: U, isError: W, refetch: G } = i({ enabled: O }), K = R?.data, q = H?.data, oe = !D || K !== void 0 || B, se = !O || q !== void 0 || W, ce = C === n.None, J = S || z || U || F || !(oe && se) && !w && !ce, Y = !!w || (D || O) && !(D && !B) && !(O && !W), le = f(() => (T(), Promise.all([
|
|
38
|
+
D ? V() : void 0,
|
|
39
|
+
O ? G() : void 0,
|
|
40
|
+
I()
|
|
37
41
|
])), [
|
|
38
|
-
C,
|
|
39
|
-
H,
|
|
40
|
-
K,
|
|
41
|
-
L,
|
|
42
42
|
T,
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
43
|
+
V,
|
|
44
|
+
G,
|
|
45
|
+
I,
|
|
46
|
+
D,
|
|
47
|
+
O
|
|
48
|
+
]), X = m(() => new Intl.DateTimeFormat(e, t).format(/* @__PURE__ */ new Date()), []), Z = m(() => {
|
|
49
|
+
if (J || Y) return [];
|
|
46
50
|
let e = [];
|
|
47
|
-
if (
|
|
51
|
+
if (E && e.push({
|
|
48
52
|
id: "insight-routing-onboarding",
|
|
49
|
-
isDismissed:
|
|
53
|
+
isDismissed: P.includes("insight-routing-onboarding"),
|
|
50
54
|
canDismiss: !0,
|
|
51
55
|
showToggle: !0,
|
|
52
|
-
displayText:
|
|
53
|
-
toggleLabel:
|
|
54
|
-
toggleChecked:
|
|
55
|
-
onToggle:
|
|
56
|
-
}),
|
|
56
|
+
displayText: k.routingOnboardingText,
|
|
57
|
+
toggleLabel: k.enableRoutingToggle,
|
|
58
|
+
toggleChecked: M,
|
|
59
|
+
onToggle: N
|
|
60
|
+
}), K !== void 0 && K.length === 0 && e.push({
|
|
57
61
|
id: "insight-create-embedded-account",
|
|
58
|
-
isDismissed:
|
|
62
|
+
isDismissed: P.includes("insight-create-embedded-account"),
|
|
59
63
|
canDismiss: !0,
|
|
60
64
|
showToggle: !1,
|
|
61
|
-
displayText:
|
|
62
|
-
}),
|
|
65
|
+
displayText: k.createAccountText
|
|
66
|
+
}), q !== void 0 && q.length === 0 && e.push({
|
|
63
67
|
id: "insight-connect-external-account",
|
|
64
|
-
isDismissed:
|
|
68
|
+
isDismissed: P.includes("insight-connect-external-account"),
|
|
65
69
|
canDismiss: !0,
|
|
66
70
|
showToggle: !1,
|
|
67
|
-
displayText:
|
|
68
|
-
actionText: y ?
|
|
71
|
+
displayText: k.connectExternalText,
|
|
72
|
+
actionText: y ? k.linkAccountAction : void 0,
|
|
69
73
|
onActionClick: y
|
|
70
|
-
}),
|
|
71
|
-
for (let t of
|
|
74
|
+
}), q !== void 0) {
|
|
75
|
+
for (let t of q) if (t.verificationStatus !== "VERIFIED") {
|
|
72
76
|
let n = `insight-verify-external-${t.id}`;
|
|
73
77
|
e.push({
|
|
74
78
|
id: n,
|
|
75
|
-
isDismissed:
|
|
79
|
+
isDismissed: P.includes(n),
|
|
76
80
|
canDismiss: !0,
|
|
77
81
|
showToggle: !1,
|
|
78
|
-
displayText:
|
|
82
|
+
displayText: k.verifyExternalAccountText(t.nickname ?? "")
|
|
79
83
|
});
|
|
80
84
|
}
|
|
81
85
|
}
|
|
82
86
|
return e;
|
|
83
87
|
}, [
|
|
88
|
+
K,
|
|
84
89
|
q,
|
|
85
90
|
J,
|
|
86
|
-
|
|
87
|
-
Q,
|
|
88
|
-
F,
|
|
89
|
-
w,
|
|
90
|
-
N,
|
|
91
|
+
Y,
|
|
91
92
|
P,
|
|
93
|
+
E,
|
|
94
|
+
M,
|
|
95
|
+
N,
|
|
92
96
|
y,
|
|
93
|
-
|
|
94
|
-
]),
|
|
95
|
-
|
|
96
|
-
}, [
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
97
|
+
k
|
|
98
|
+
]), ue = f((e) => {
|
|
99
|
+
L(e);
|
|
100
|
+
}, [L]), { activeInsights: Q, dismissedInsights: $ } = m(() => {
|
|
101
|
+
let e = Z.filter((e) => P.includes(e.id));
|
|
102
|
+
return {
|
|
103
|
+
activeInsights: Z.filter((e) => !P.includes(e.id)),
|
|
104
|
+
dismissedInsights: e
|
|
105
|
+
};
|
|
106
|
+
}, [Z, P]), de = A === "dismissed" ? $ : Q;
|
|
107
|
+
return /* @__PURE__ */ g(_.Provider, {
|
|
102
108
|
value: {
|
|
103
|
-
activeFilter:
|
|
104
|
-
setActiveFilter:
|
|
105
|
-
filteredInsights:
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
109
|
+
activeFilter: A,
|
|
110
|
+
setActiveFilter: re,
|
|
111
|
+
filteredInsights: de,
|
|
112
|
+
activeCount: Q.length,
|
|
113
|
+
dismissedCount: $.length,
|
|
114
|
+
isLoading: J,
|
|
115
|
+
isError: Y,
|
|
116
|
+
refetch: le,
|
|
117
|
+
onDismissClick: ue,
|
|
118
|
+
featureLabels: k,
|
|
119
|
+
createdDateLabel: X
|
|
112
120
|
},
|
|
113
|
-
children:
|
|
121
|
+
children: d
|
|
114
122
|
});
|
|
115
123
|
};
|
|
116
124
|
export { y as InsightsWidgetContextProvider, v as useInsightsWidgetContext };
|
|
@@ -20,27 +20,29 @@ function d({ labels: t, singleInsightLabels: n }) {
|
|
|
20
20
|
l(() => {
|
|
21
21
|
a(i.Mounted);
|
|
22
22
|
}, [a]);
|
|
23
|
-
let { activeFilter: d, setActiveFilter: f, filteredInsights: p,
|
|
23
|
+
let { activeFilter: d, setActiveFilter: f, filteredInsights: p, activeCount: m, dismissedCount: h, isLoading: g, isError: _, refetch: v, onDismissClick: y, featureLabels: b, createdDateLabel: x } = r();
|
|
24
24
|
return /* @__PURE__ */ u(s, {
|
|
25
25
|
hasInsights: p.length > 0,
|
|
26
|
-
isLoading:
|
|
27
|
-
isError:
|
|
28
|
-
onRetry:
|
|
26
|
+
isLoading: g,
|
|
27
|
+
isError: _,
|
|
28
|
+
onRetry: _ ? () => void v() : void 0,
|
|
29
29
|
activeFilter: d,
|
|
30
30
|
setActiveFilter: f,
|
|
31
|
+
activeCount: String(m),
|
|
32
|
+
dismissedCount: String(h),
|
|
31
33
|
labels: t,
|
|
32
34
|
testIds: {
|
|
33
35
|
activeTab: o.activeTab,
|
|
34
36
|
skeleton: o.skeleton,
|
|
35
37
|
error: o.error,
|
|
36
|
-
|
|
38
|
+
empty: o.empty,
|
|
37
39
|
list: o.list
|
|
38
40
|
},
|
|
39
41
|
children: p.map((e) => /* @__PURE__ */ u(c, {
|
|
40
42
|
insight: e,
|
|
41
|
-
createdDate:
|
|
42
|
-
featureLabels:
|
|
43
|
-
onDismissClick:
|
|
43
|
+
createdDate: x,
|
|
44
|
+
featureLabels: b,
|
|
45
|
+
onDismissClick: y,
|
|
44
46
|
labels: n
|
|
45
47
|
}, e.id))
|
|
46
48
|
});
|
|
@@ -1,22 +1,16 @@
|
|
|
1
|
-
import { jsx as e } from "react/jsx-runtime";
|
|
2
|
-
import { ClipboardCheck as t } from "lucide-react";
|
|
3
1
|
// ../../libs/tesouro-embedded-components-react/insights-widget/feature/dist/lib/InsightsWidget/mapInsightToRowView.js
|
|
4
|
-
function
|
|
2
|
+
function e(e, t, n) {
|
|
5
3
|
return {
|
|
6
|
-
displayText:
|
|
7
|
-
createdDate:
|
|
8
|
-
badgeLabel:
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
toggleChecked: n.toggleChecked,
|
|
17
|
-
onToggle: n.onToggle,
|
|
18
|
-
actionText: n.actionText,
|
|
19
|
-
onActionClick: n.onActionClick
|
|
4
|
+
displayText: e.displayText,
|
|
5
|
+
createdDate: n,
|
|
6
|
+
badgeLabel: t.onboardingBadgeLabel,
|
|
7
|
+
showDismissButton: e.canDismiss && !e.isDismissed,
|
|
8
|
+
showToggle: e.showToggle,
|
|
9
|
+
toggleLabel: e.toggleLabel,
|
|
10
|
+
toggleChecked: e.toggleChecked,
|
|
11
|
+
onToggle: e.onToggle,
|
|
12
|
+
actionText: e.actionText,
|
|
13
|
+
onActionClick: e.onActionClick
|
|
20
14
|
};
|
|
21
15
|
}
|
|
22
|
-
export {
|
|
16
|
+
export { e as mapInsightToRowView };
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
var e = {
|
|
3
3
|
skeleton: "insights-widget-skeleton",
|
|
4
4
|
error: "insights-widget-error",
|
|
5
|
-
|
|
5
|
+
empty: "insights-widget-empty",
|
|
6
6
|
activeTab: "insights-widget-active-tab",
|
|
7
7
|
list: "insights-widget-list",
|
|
8
8
|
singleInsight: "insights-widget-single-insight",
|
|
@@ -1,85 +1,72 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { WidgetContainer as
|
|
1
|
+
import { Skeleton as e, Tabs as t, TabsContent as n, TabsList as r, TabsTrigger as i } from "../../../../../../../packages/shared-ui-shadcn/dist/index.js";
|
|
2
|
+
import { WidgetContainer as a } from "../../../../../shared/ui/dist/lib/WidgetContainer/WidgetContainer.js";
|
|
3
|
+
import { EmptyState as o } from "../../../../../shared/ui/dist/lib/EmptyState/EmptyState.js";
|
|
4
|
+
import { ErrorState as s } from "../../../../../shared/ui/dist/lib/ErrorState/ErrorState.js";
|
|
5
|
+
import { LoadingRegion as c } from "../../../../../shared/ui/dist/lib/LoadingRegion/LoadingRegion.js";
|
|
3
6
|
import "../../../../../shared/ui/dist/index.js";
|
|
4
|
-
import { INSIGHTS_WIDGET_LABELS_EN as
|
|
5
|
-
import {
|
|
6
|
-
import { Sparkles as
|
|
7
|
+
import { INSIGHTS_WIDGET_LABELS_EN as l } from "./labels.js";
|
|
8
|
+
import { jsx as u, jsxs as d } from "react/jsx-runtime";
|
|
9
|
+
import { Sparkles as f } from "lucide-react";
|
|
7
10
|
// ../../libs/tesouro-embedded-components-react/insights-widget/ui/dist/lib/InsightsWidget/InsightsWidget.js
|
|
8
|
-
var
|
|
9
|
-
let
|
|
10
|
-
...
|
|
11
|
-
...
|
|
11
|
+
var p = (e) => e === "active" || e === "dismissed", m = ({ hasInsights: m, children: h, activeFilter: g, setActiveFilter: _, activeCount: v, dismissedCount: y, isLoading: b, isError: x, onRetry: S, labels: C, testIds: w }) => {
|
|
12
|
+
let T = {
|
|
13
|
+
...l,
|
|
14
|
+
...C
|
|
12
15
|
};
|
|
13
|
-
return /* @__PURE__ */
|
|
14
|
-
icon: /* @__PURE__ */
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
"aria-busy": !0,
|
|
22
|
-
children: [/* @__PURE__ */ s("span", {
|
|
23
|
-
className: "ttw:sr-only",
|
|
24
|
-
children: y.loadingLabel
|
|
25
|
-
}), /* @__PURE__ */ s(t, {
|
|
26
|
-
"data-testid": v?.skeleton,
|
|
16
|
+
return /* @__PURE__ */ u(a, {
|
|
17
|
+
icon: /* @__PURE__ */ u(f, {}),
|
|
18
|
+
title: T.widgetTitle,
|
|
19
|
+
children: b ? /* @__PURE__ */ u(c, {
|
|
20
|
+
isLoading: !0,
|
|
21
|
+
loadingLabel: T.loadingLabel,
|
|
22
|
+
children: /* @__PURE__ */ u(e, {
|
|
23
|
+
"data-testid": w?.skeleton,
|
|
27
24
|
height: 80,
|
|
28
25
|
width: "100%",
|
|
29
26
|
className: "ttw:rounded-md"
|
|
30
|
-
})
|
|
31
|
-
}) :
|
|
32
|
-
|
|
33
|
-
|
|
27
|
+
})
|
|
28
|
+
}) : x ? /* @__PURE__ */ u(s, {
|
|
29
|
+
title: T.loadErrorTitle,
|
|
30
|
+
description: T.loadErrorDescription,
|
|
31
|
+
retryLabel: T.loadErrorRetry,
|
|
32
|
+
onRetry: S,
|
|
33
|
+
testId: w?.error
|
|
34
|
+
}) : /* @__PURE__ */ d(t, {
|
|
35
|
+
value: g,
|
|
36
|
+
onValueChange: (e) => {
|
|
37
|
+
p(e) && _(e);
|
|
38
|
+
},
|
|
39
|
+
className: "ttw:gap-4",
|
|
34
40
|
children: [
|
|
35
|
-
/* @__PURE__ */
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
41
|
+
/* @__PURE__ */ d(r, {
|
|
42
|
+
variant: "pills",
|
|
43
|
+
"aria-label": T.filterTabsLabel,
|
|
44
|
+
children: [/* @__PURE__ */ u(i, {
|
|
45
|
+
value: "active",
|
|
46
|
+
count: v,
|
|
47
|
+
"data-testid": w?.activeTab,
|
|
48
|
+
children: T.activeTab
|
|
49
|
+
}), /* @__PURE__ */ u(i, {
|
|
50
|
+
value: "dismissed",
|
|
51
|
+
count: y,
|
|
52
|
+
children: T.dismissedTab
|
|
53
|
+
})]
|
|
40
54
|
}),
|
|
41
|
-
/* @__PURE__ */
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
children: y.loadErrorRetry
|
|
55
|
-
}) : null
|
|
55
|
+
/* @__PURE__ */ u(n, { value: g === "active" ? "dismissed" : "active" }),
|
|
56
|
+
/* @__PURE__ */ u(n, {
|
|
57
|
+
value: g,
|
|
58
|
+
children: m ? /* @__PURE__ */ u("div", {
|
|
59
|
+
className: "ttw:flex ttw:max-h-80 ttw:flex-col ttw:gap-2 ttw:overflow-y-auto",
|
|
60
|
+
"data-testid": w?.list,
|
|
61
|
+
children: h
|
|
62
|
+
}) : /* @__PURE__ */ u(o, {
|
|
63
|
+
title: T.noInsightsFound,
|
|
64
|
+
description: g === "active" ? T.noInsightsDescription : void 0,
|
|
65
|
+
testId: w?.empty
|
|
66
|
+
})
|
|
67
|
+
})
|
|
56
68
|
]
|
|
57
|
-
})
|
|
58
|
-
className: "ttw:mb-2 ttw:flex ttw:flex-row ttw:gap-1",
|
|
59
|
-
children: [/* @__PURE__ */ s(e, {
|
|
60
|
-
type: "button",
|
|
61
|
-
"data-testid": v?.activeTab,
|
|
62
|
-
variant: f === "active" ? "default" : "outline",
|
|
63
|
-
size: "sm",
|
|
64
|
-
className: r("ttw:cursor-pointer ttw:rounded-md ttw:font-normal", f !== "active" && "ttw:border-border ttw:text-foreground"),
|
|
65
|
-
onClick: () => p("active"),
|
|
66
|
-
children: y.activeTab
|
|
67
|
-
}), /* @__PURE__ */ s(e, {
|
|
68
|
-
type: "button",
|
|
69
|
-
variant: f === "dismissed" ? "default" : "outline",
|
|
70
|
-
size: "sm",
|
|
71
|
-
className: r("ttw:cursor-pointer ttw:rounded-md ttw:font-normal", f !== "dismissed" && "ttw:border-border ttw:text-foreground"),
|
|
72
|
-
onClick: () => p("dismissed"),
|
|
73
|
-
children: y.dismissedTab
|
|
74
|
-
})]
|
|
75
|
-
}), u ? /* @__PURE__ */ s("div", {
|
|
76
|
-
className: "ttw:flex ttw:max-h-80 ttw:flex-col ttw:gap-1.5 ttw:overflow-y-auto ttw:rounded-2xl ttw:bg-[#F0F2FD] ttw:p-2",
|
|
77
|
-
"data-testid": v?.list,
|
|
78
|
-
children: d
|
|
79
|
-
}) : /* @__PURE__ */ s(n, {
|
|
80
|
-
color: "muted",
|
|
81
|
-
children: y.noInsightsFound
|
|
82
|
-
})] })
|
|
69
|
+
})
|
|
83
70
|
});
|
|
84
71
|
};
|
|
85
|
-
export {
|
|
72
|
+
export { l as INSIGHTS_WIDGET_LABELS_EN, m as InsightsWidget };
|
|
@@ -1,93 +1,90 @@
|
|
|
1
|
-
import { Badge as e, Button as t, Switch as n,
|
|
2
|
-
import { SINGLE_INSIGHT_LABELS_EN as
|
|
3
|
-
import { jsx as
|
|
4
|
-
import { ArrowRight as
|
|
1
|
+
import { Badge as e, Button as t, Switch as n, Tooltip as r, TooltipContent as i, TooltipProvider as a, TooltipTrigger as o, Typography as s } from "../../../../../../../../packages/shared-ui-shadcn/dist/index.js";
|
|
2
|
+
import { SINGLE_INSIGHT_LABELS_EN as c } from "./labels.js";
|
|
3
|
+
import { jsx as l, jsxs as u } from "react/jsx-runtime";
|
|
4
|
+
import { ArrowRight as d, X as f } from "lucide-react";
|
|
5
5
|
// ../../libs/tesouro-embedded-components-react/insights-widget/ui/dist/lib/InsightsWidget/SingleInsight/SingleInsight.js
|
|
6
|
-
var
|
|
7
|
-
let
|
|
8
|
-
...
|
|
9
|
-
...
|
|
10
|
-
},
|
|
11
|
-
return /* @__PURE__ */
|
|
12
|
-
className: "ttw:rounded-
|
|
13
|
-
"data-testid":
|
|
6
|
+
var p = ({ row: p, onDismissClick: m, labels: h, testIds: g }) => {
|
|
7
|
+
let _ = {
|
|
8
|
+
...c,
|
|
9
|
+
...h
|
|
10
|
+
}, v = p.showToggle || !!(p.navigationLinkText && p.onNavigationClick) || !!(p.actionText && p.onActionClick);
|
|
11
|
+
return /* @__PURE__ */ u("div", {
|
|
12
|
+
className: "ttw:rounded-lg ttw:bg-muted ttw:p-3",
|
|
13
|
+
"data-testid": g?.root,
|
|
14
14
|
children: [
|
|
15
|
-
/* @__PURE__ */
|
|
16
|
-
className: "ttw:mb-1 ttw:flex ttw:flex-row ttw:items-center ttw:justify-between",
|
|
17
|
-
children: [/* @__PURE__ */
|
|
18
|
-
className: "ttw:flex ttw:flex-row ttw:items-center ttw:gap-
|
|
19
|
-
children: [/* @__PURE__ */
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
}), /* @__PURE__ */ a(r, {
|
|
15
|
+
/* @__PURE__ */ u("div", {
|
|
16
|
+
className: "ttw:mb-1 ttw:flex ttw:flex-row ttw:items-center ttw:justify-between ttw:gap-2",
|
|
17
|
+
children: [/* @__PURE__ */ u("div", {
|
|
18
|
+
className: "ttw:flex ttw:min-w-0 ttw:flex-row ttw:items-center ttw:gap-2",
|
|
19
|
+
children: [/* @__PURE__ */ l(e, {
|
|
20
|
+
tone: "neutral",
|
|
21
|
+
children: p.badgeLabel
|
|
22
|
+
}), /* @__PURE__ */ l(s, {
|
|
24
23
|
variant: "body2",
|
|
25
24
|
color: "muted",
|
|
26
25
|
component: "span",
|
|
27
|
-
children:
|
|
26
|
+
children: p.createdDate
|
|
28
27
|
})]
|
|
29
|
-
}),
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
"
|
|
28
|
+
}), p.showDismissButton && m ? /* @__PURE__ */ l(a, { children: /* @__PURE__ */ u(r, { children: [/* @__PURE__ */ l(o, {
|
|
29
|
+
asChild: !0,
|
|
30
|
+
"aria-describedby": void 0,
|
|
31
|
+
children: /* @__PURE__ */ l(t, {
|
|
32
|
+
type: "button",
|
|
33
|
+
variant: "ghost",
|
|
34
|
+
size: "icon-sm",
|
|
35
|
+
className: "ttw:shrink-0",
|
|
36
|
+
"aria-label": _.dismissInsightAriaLabel,
|
|
37
|
+
onClick: m,
|
|
38
|
+
"data-testid": g?.dismiss,
|
|
39
|
+
children: /* @__PURE__ */ l(f, { "aria-hidden": !0 })
|
|
40
40
|
})
|
|
41
|
-
})
|
|
41
|
+
}), /* @__PURE__ */ l(i, {
|
|
42
|
+
sideOffset: 4,
|
|
43
|
+
children: _.dismissInsightAriaLabel
|
|
44
|
+
})] }) }) : null]
|
|
42
45
|
}),
|
|
43
|
-
/* @__PURE__ */
|
|
46
|
+
/* @__PURE__ */ l(s, {
|
|
44
47
|
variant: "body1",
|
|
45
48
|
component: "p",
|
|
46
|
-
className:
|
|
47
|
-
children:
|
|
49
|
+
className: v ? "ttw:mb-1" : "",
|
|
50
|
+
children: p.displayText
|
|
48
51
|
}),
|
|
49
|
-
|
|
52
|
+
p.showToggle ? /* @__PURE__ */ u("div", {
|
|
50
53
|
className: "ttw:mt-1 ttw:flex ttw:flex-row ttw:items-center ttw:gap-2",
|
|
51
|
-
children: [
|
|
52
|
-
checked:
|
|
53
|
-
onCheckedChange:
|
|
54
|
-
"data-testid":
|
|
55
|
-
}) : null,
|
|
54
|
+
children: [p.onToggle ? /* @__PURE__ */ l(n, {
|
|
55
|
+
checked: p.toggleChecked ?? !1,
|
|
56
|
+
onCheckedChange: p.onToggle,
|
|
57
|
+
"data-testid": g?.toggle
|
|
58
|
+
}) : null, p.toggleLabel ? /* @__PURE__ */ l(s, {
|
|
56
59
|
variant: "body2",
|
|
57
60
|
component: "span",
|
|
58
|
-
color:
|
|
59
|
-
children:
|
|
61
|
+
color: p.onToggle ? void 0 : "muted",
|
|
62
|
+
children: p.toggleLabel
|
|
60
63
|
}) : null]
|
|
61
64
|
}) : null,
|
|
62
|
-
|
|
65
|
+
p.navigationLinkText && p.onNavigationClick ? /* @__PURE__ */ l("div", {
|
|
63
66
|
className: "ttw:mt-1",
|
|
64
|
-
children: /* @__PURE__ */
|
|
67
|
+
children: /* @__PURE__ */ u(t, {
|
|
65
68
|
type: "button",
|
|
66
69
|
variant: "link",
|
|
67
|
-
className: "ttw:h-auto ttw:gap-
|
|
68
|
-
onClick:
|
|
69
|
-
"data-testid":
|
|
70
|
-
children: [
|
|
71
|
-
className: "ttw:size-[18px] ttw:shrink-0",
|
|
72
|
-
"aria-hidden": !0
|
|
73
|
-
})]
|
|
70
|
+
className: "ttw:h-auto ttw:gap-1 ttw:p-0 ttw:font-medium",
|
|
71
|
+
onClick: p.onNavigationClick,
|
|
72
|
+
"data-testid": g?.navigation,
|
|
73
|
+
children: [p.navigationLinkText, /* @__PURE__ */ l(d, { "aria-hidden": !0 })]
|
|
74
74
|
})
|
|
75
75
|
}) : null,
|
|
76
|
-
|
|
76
|
+
p.actionText && p.onActionClick ? /* @__PURE__ */ l("div", {
|
|
77
77
|
className: "ttw:mt-1",
|
|
78
|
-
children: /* @__PURE__ */
|
|
78
|
+
children: /* @__PURE__ */ u(t, {
|
|
79
79
|
type: "button",
|
|
80
80
|
variant: "link",
|
|
81
|
-
className: "ttw:h-auto ttw:gap-
|
|
82
|
-
onClick:
|
|
83
|
-
"data-testid":
|
|
84
|
-
children: [
|
|
85
|
-
className: "ttw:size-[18px] ttw:shrink-0",
|
|
86
|
-
"aria-hidden": !0
|
|
87
|
-
})]
|
|
81
|
+
className: "ttw:h-auto ttw:gap-1 ttw:p-0 ttw:font-medium",
|
|
82
|
+
onClick: p.onActionClick,
|
|
83
|
+
"data-testid": g?.action,
|
|
84
|
+
children: [p.actionText, /* @__PURE__ */ l(d, { "aria-hidden": !0 })]
|
|
88
85
|
})
|
|
89
86
|
}) : null
|
|
90
87
|
]
|
|
91
88
|
});
|
|
92
89
|
};
|
|
93
|
-
export {
|
|
90
|
+
export { c as SINGLE_INSIGHT_LABELS_EN, p as SingleInsight };
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
// ../../libs/tesouro-embedded-components-react/insights-widget/ui/dist/lib/InsightsWidget/labels.js
|
|
2
2
|
var e = {
|
|
3
3
|
widgetTitle: "Insights",
|
|
4
|
+
filterTabsLabel: "Filter insights",
|
|
4
5
|
activeTab: "Active",
|
|
5
6
|
dismissedTab: "Dismissed",
|
|
6
7
|
noInsightsFound: "No insights found",
|
|
8
|
+
noInsightsDescription: "New insights appear here as your accounts change.",
|
|
7
9
|
loadingLabel: "Loading insights",
|
|
8
|
-
loadErrorTitle: "
|
|
9
|
-
loadErrorDescription: "
|
|
10
|
-
loadErrorRetry: "
|
|
10
|
+
loadErrorTitle: "Couldn't load insights",
|
|
11
|
+
loadErrorDescription: "Check your connection, then try again.",
|
|
12
|
+
loadErrorRetry: "Try again"
|
|
11
13
|
};
|
|
12
14
|
export { e as INSIGHTS_WIDGET_LABELS_EN };
|
package/dist/libs/tesouro-embedded-components-react/shared/feature/dist/lib/analytics/build-info.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// ../../libs/tesouro-embedded-components-react/shared/feature/dist/lib/analytics/build-info.js
|
|
2
|
-
var e = "@tesouro/embedded-components-react", t = "0.11.
|
|
2
|
+
var e = "@tesouro/embedded-components-react", t = "0.11.24", n = "dc95664f77b2946ce62c2fbbf22978637cbbd07f", r = Object.freeze({
|
|
3
3
|
library_name: e,
|
|
4
4
|
library_version: t,
|
|
5
5
|
library_sha: n
|
|
@@ -1,34 +1,34 @@
|
|
|
1
1
|
import { coerceAmountValueToMinorUnits as e } from "./lib/coerceAmountValueToMinorUnits.js";
|
|
2
2
|
import { createCurrencyFormatter as t } from "./lib/createCurrencyFormatter.js";
|
|
3
3
|
import { amountOutputToMajorUnits as n, minorExponentForCurrency as r } from "./lib/amountOutputToMajorUnits.js";
|
|
4
|
-
import "./lib/dateDisplay.js";
|
|
5
|
-
import { formatCalendarDate as
|
|
6
|
-
import { formatTimestampDate as
|
|
7
|
-
import { formatRejectionDate as
|
|
8
|
-
import { currencySymbolForCode as
|
|
9
|
-
import { formatPhoneDisplay as
|
|
10
|
-
import { getInitials as
|
|
11
|
-
import { isValidAchAccountNumber as
|
|
12
|
-
import { mergeLabelTree as
|
|
13
|
-
import { normalizeAmountOutputCurrencyCode as
|
|
14
|
-
import { parseAmountOutputMajorUnits as
|
|
15
|
-
import { parseCalendarDate as
|
|
16
|
-
import { getRelativeCalendarDay as
|
|
17
|
-
import { parseDecimalAmountToMinorUnits as
|
|
18
|
-
import { sumAmountOutputsMajorUnits as
|
|
19
|
-
import { getStateOptions as
|
|
20
|
-
import { createWidgetTokenManager as
|
|
21
|
-
import { TESOURO_NEW_EMBEDDED_BANK_ACCOUNT_CREATED_SUCCESS_EVENT as
|
|
22
|
-
import { extractApiErrorMessage as
|
|
23
|
-
import { parseApiValidationErrors as
|
|
4
|
+
import { DATE_DISPLAY_LOCALE as i, DATE_DISPLAY_OPTIONS as a } from "./lib/dateDisplay.js";
|
|
5
|
+
import { formatCalendarDate as o } from "./lib/formatCalendarDate.js";
|
|
6
|
+
import { formatTimestampDate as s } from "./lib/formatTimestampDate.js";
|
|
7
|
+
import { formatRejectionDate as c } from "./lib/formatRejectionDate.js";
|
|
8
|
+
import { currencySymbolForCode as l, formatMoneyExact as u } from "./lib/formatMoneyExact.js";
|
|
9
|
+
import { formatPhoneDisplay as d } from "./lib/formatPhoneDisplay.js";
|
|
10
|
+
import { getInitials as f } from "./lib/getInitials.js";
|
|
11
|
+
import { isValidAchAccountNumber as p } from "./lib/isValidAchAccountNumber.js";
|
|
12
|
+
import { mergeLabelTree as m } from "./lib/mergeLabelTree.js";
|
|
13
|
+
import { normalizeAmountOutputCurrencyCode as h } from "./lib/normalizeAmountOutputCurrencyCode.js";
|
|
14
|
+
import { parseAmountOutputMajorUnits as g } from "./lib/parseAmountOutputMajorUnits.js";
|
|
15
|
+
import { parseCalendarDate as _, parseDateOrTimestamp as v } from "./lib/parseCalendarDate.js";
|
|
16
|
+
import { getRelativeCalendarDay as y } from "./lib/relativeCalendarDay.js";
|
|
17
|
+
import { parseDecimalAmountToMinorUnits as b } from "./lib/parseDecimalAmountToMinorUnits.js";
|
|
18
|
+
import { sumAmountOutputsMajorUnits as x } from "./lib/sumAmountOutputsMajorUnits.js";
|
|
19
|
+
import { getStateOptions as S, isStateValid as C } from "./lib/usStates.js";
|
|
20
|
+
import { createWidgetTokenManager as w } from "./lib/widgetTokenManager.js";
|
|
21
|
+
import { TESOURO_NEW_EMBEDDED_BANK_ACCOUNT_CREATED_SUCCESS_EVENT as T, TESOURO_NEW_EXTERNAL_BANK_ACCOUNT_LINKED_SUCCESS_EVENT as E, emitWidgetDomEvent as D } from "./lib/widgetDomEvents.js";
|
|
22
|
+
import { extractApiErrorMessage as O } from "./lib/apiErrors.js";
|
|
23
|
+
import { parseApiValidationErrors as k } from "./lib/apiValidationErrors.js";
|
|
24
24
|
import "./lib/auditHistory/auditHistoryActor.js";
|
|
25
|
-
import { buildReceivableAuditHistory as
|
|
26
|
-
import { buildPayableAuditHistory as
|
|
25
|
+
import { buildReceivableAuditHistory as A } from "./lib/auditHistory/buildReceivableAuditHistory.js";
|
|
26
|
+
import { buildPayableAuditHistory as j, hasUnattributedAuditRows as M } from "./lib/auditHistory/buildPayableAuditHistory.js";
|
|
27
27
|
import "./lib/theme/color.js";
|
|
28
|
-
import { THEME_TOKEN_NAMES as
|
|
28
|
+
import { THEME_TOKEN_NAMES as N } from "./lib/theme/themeTokens.js";
|
|
29
29
|
import "./lib/theme/toneColors.js";
|
|
30
|
-
import { createTheme as
|
|
30
|
+
import { createTheme as P, isThemeDevelopmentBuild as F, readThemeTokens as I, reportThemeIssues as L, themeIssues as R, themeToCss as z } from "./lib/theme/createTheme.js";
|
|
31
31
|
import "./lib/theme/index.js";
|
|
32
|
-
import { configureCsp as
|
|
33
|
-
import { resolvePdfWorkerSrc as
|
|
34
|
-
export {
|
|
32
|
+
import { configureCsp as B, installStyleNonce as V } from "./lib/csp.js";
|
|
33
|
+
import { resolvePdfWorkerSrc as H } from "./lib/pdfWorkerSrc.js";
|
|
34
|
+
export { i as DATE_DISPLAY_LOCALE, a as DATE_DISPLAY_OPTIONS, T as TESOURO_NEW_EMBEDDED_BANK_ACCOUNT_CREATED_SUCCESS_EVENT, E as TESOURO_NEW_EXTERNAL_BANK_ACCOUNT_LINKED_SUCCESS_EVENT, N as THEME_TOKEN_NAMES, n as amountOutputToMajorUnits, j as buildPayableAuditHistory, A as buildReceivableAuditHistory, e as coerceAmountValueToMinorUnits, B as configureCsp, t as createCurrencyFormatter, P as createTheme, w as createWidgetTokenManager, l as currencySymbolForCode, D as emitWidgetDomEvent, O as extractApiErrorMessage, o as formatCalendarDate, u as formatMoneyExact, d as formatPhoneDisplay, c as formatRejectionDate, s as formatTimestampDate, f as getInitials, y as getRelativeCalendarDay, S as getStateOptions, M as hasUnattributedAuditRows, V as installStyleNonce, C as isStateValid, F as isThemeDevelopmentBuild, p as isValidAchAccountNumber, m as mergeLabelTree, r as minorExponentForCurrency, h as normalizeAmountOutputCurrencyCode, g as parseAmountOutputMajorUnits, k as parseApiValidationErrors, _ as parseCalendarDate, v as parseDateOrTimestamp, b as parseDecimalAmountToMinorUnits, I as readThemeTokens, L as reportThemeIssues, H as resolvePdfWorkerSrc, x as sumAmountOutputsMajorUnits, R as themeIssues, z as themeToCss };
|