impact-nova 2.0.2 → 2.0.4
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/components/ui/accordion.d.ts +13 -0
- package/dist/components/ui/accordion.js +50 -33
- package/dist/components/ui/ag-grid-react/cell-renderers/percent-progress-display-renderer.js +24 -23
- package/dist/components/ui/ag-grid-react/headers/components/header-info.d.ts +8 -6
- package/dist/components/ui/ag-grid-react/headers/components/header-info.js +69 -60
- package/dist/components/ui/ag-grid-react/headers/custom-header.js +23 -22
- package/dist/components/ui/ag-grid-react/headers/header-search-input.js +43 -35
- package/dist/components/ui/ag-grid-react/index.js +44 -42
- package/dist/components/ui/breadcrumb.d.ts +5 -1
- package/dist/components/ui/breadcrumb.js +59 -51
- package/dist/components/ui/date-picker/date-picker.js +14 -14
- package/dist/components/ui/date-picker/date-range-picker.js +25 -25
- package/dist/components/ui/date-picker/month-picker.js +4 -4
- package/dist/components/ui/date-picker/month-range-picker.js +7 -7
- package/dist/components/ui/date-picker/multi-date-picker.js +9 -9
- package/dist/components/ui/date-picker/multi-month-picker.js +29 -29
- package/dist/components/ui/date-picker/multi-week-picker.js +20 -20
- package/dist/components/ui/date-picker/week-picker.js +31 -31
- package/dist/components/ui/date-picker/week-range-picker.js +22 -22
- package/dist/components/ui/dynamic-layout.d.ts +1 -1
- package/dist/components/ui/empty-container.js +58 -49
- package/dist/components/ui/filter-strip/filter-summary.js +28 -29
- package/dist/components/ui/filter-strip/filter-tag-list.js +87 -96
- package/dist/components/ui/radio-group.js +19 -19
- package/dist/components/ui/select/select.js +49 -48
- package/dist/components/ui/sidebar.d.ts +2 -1
- package/dist/components/ui/sidebar.js +212 -202
- package/dist/components/ui/tag.d.ts +3 -1
- package/dist/components/ui/tag.js +65 -44
- package/dist/components/ui/types/empty-container.types.d.ts +2 -0
- package/dist/i18n/defaultMessages.d.ts +1 -0
- package/dist/i18n/defaultMessages.js +1 -0
- package/dist/i18n/locales/de.js +1 -0
- package/dist/i18n/locales/es.js +1 -0
- package/dist/i18n/locales/hi.js +1 -0
- package/dist/i18n/locales/kn.js +1 -0
- package/dist/impact-nova-components.css +4 -0
- package/dist/impact-nova.css +1 -1
- package/dist/index.js +441 -439
- package/package.json +1 -1
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { jsxs as
|
|
1
|
+
import { jsxs as g, jsx as r } from "react/jsx-runtime";
|
|
2
2
|
import * as s from "react";
|
|
3
3
|
import { Cross as te, CalendarMonth as oe } from "impact-nova-icons";
|
|
4
4
|
import { isValid as w, parse as P, format as B } from "date-fns";
|
|
5
5
|
import { cn as re, padValidDateString as se, maskDate as ie } from "../../../lib/utils.js";
|
|
6
6
|
import { Input as ce } from "../input.js";
|
|
7
|
-
import { Popover as le,
|
|
7
|
+
import { Popover as le, PopoverAnchor as ae, PopoverContent as pe } from "../popover.js";
|
|
8
8
|
import { Calendar as de } from "../calendar.js";
|
|
9
9
|
import { Tooltip as E, TooltipTrigger as O, TooltipContent as $ } from "../tooltip.js";
|
|
10
10
|
import { resolveWeekSelection as fe } from "../../../lib/fiscal-calendar.js";
|
|
11
|
-
import { getDateFnsLocale as
|
|
12
|
-
import { useImpactNovaI18n as
|
|
11
|
+
import { getDateFnsLocale as he } from "../../../i18n/getDateFnsLocale.js";
|
|
12
|
+
import { useImpactNovaI18n as ue } from "../../../i18n/ImpactNovaI18nContext.js";
|
|
13
13
|
const p = (e, i = "MM/dd/yyyy", n) => {
|
|
14
14
|
const y = B(e.startDate, i, n ? { locale: n } : {}), C = B(e.endDate, i, n ? { locale: n } : {});
|
|
15
15
|
return `${y} - ${C}`;
|
|
@@ -28,43 +28,43 @@ const p = (e, i = "MM/dd/yyyy", n) => {
|
|
|
28
28
|
fiscalMode: S = "basic",
|
|
29
29
|
selectionMode: N = "week",
|
|
30
30
|
fiscalMonthPattern: b,
|
|
31
|
-
fiscalYearStartMonth:
|
|
32
|
-
weekStartsOn:
|
|
31
|
+
fiscalYearStartMonth: V = 1,
|
|
32
|
+
weekStartsOn: A = 1,
|
|
33
33
|
disabled: D,
|
|
34
34
|
className: J,
|
|
35
35
|
...K
|
|
36
36
|
}, Q) => {
|
|
37
|
-
const { locale: M, t:
|
|
38
|
-
s.useRef(null), s.useImperativeHandle(Q, () =>
|
|
39
|
-
const [c,
|
|
37
|
+
const { locale: M, t: k } = ue(), o = s.useMemo(() => he(M), [M]), U = y ?? k("datePicker.selectWeek"), T = s.useRef(null);
|
|
38
|
+
s.useRef(null), s.useImperativeHandle(Q, () => T.current);
|
|
39
|
+
const [c, u] = s.useState(!1), [L, l] = s.useState(e), [f, a] = s.useState(e ? p(e, n, o) : ""), [X, W] = s.useState(e?.startDate || /* @__PURE__ */ new Date());
|
|
40
40
|
s.useEffect(() => {
|
|
41
41
|
c || (a(e ? p(e, n, o) : ""), l(e));
|
|
42
42
|
}, [c, e, n, o]), s.useEffect(() => {
|
|
43
43
|
c && (l(e), W(e?.startDate || /* @__PURE__ */ new Date()), a(e ? p(e, n, o) : ""));
|
|
44
44
|
}, [c, e, n, o]);
|
|
45
45
|
const Z = (t) => {
|
|
46
|
-
l(t), t && a(p(t, n, o)), d || (i?.(t),
|
|
46
|
+
l(t), t && a(p(t, n, o)), d || (i?.(t), u(!1));
|
|
47
47
|
}, _ = (t) => {
|
|
48
|
-
i?.(t !== void 0 ? t : L),
|
|
48
|
+
i?.(t !== void 0 ? t : L), u(!1);
|
|
49
49
|
}, Y = () => {
|
|
50
|
-
l(e), a(e ? p(e, n, o) : ""),
|
|
50
|
+
l(e), a(e ? p(e, n, o) : ""), u(!1);
|
|
51
51
|
}, R = () => {
|
|
52
|
-
l(void 0), a(""), i?.(void 0), d ||
|
|
52
|
+
l(void 0), a(""), i?.(void 0), d || u(!1);
|
|
53
53
|
}, j = (t) => fe(t, {
|
|
54
54
|
calendarType: I,
|
|
55
55
|
fiscalMode: S,
|
|
56
56
|
selectionMode: N,
|
|
57
57
|
fiscalMonthPattern: b,
|
|
58
|
-
fiscalYearStartMonth:
|
|
59
|
-
weekStartsOn:
|
|
58
|
+
fiscalYearStartMonth: V,
|
|
59
|
+
weekStartsOn: A
|
|
60
60
|
}), F = (t) => {
|
|
61
|
-
const m = t.target.value,
|
|
62
|
-
if (a(
|
|
61
|
+
const m = t.target.value, h = ie(m, n, f);
|
|
62
|
+
if (a(h), h === "") {
|
|
63
63
|
l(void 0), d || i?.(void 0);
|
|
64
64
|
return;
|
|
65
65
|
}
|
|
66
|
-
const x = P(
|
|
67
|
-
if (w(x) &&
|
|
66
|
+
const x = P(h, n, /* @__PURE__ */ new Date(), { locale: o });
|
|
67
|
+
if (w(x) && h.length === n.length) {
|
|
68
68
|
const z = j(x);
|
|
69
69
|
l(z), W(x), d || i?.(z);
|
|
70
70
|
}
|
|
@@ -74,15 +74,15 @@ const p = (e, i = "MM/dd/yyyy", n) => {
|
|
|
74
74
|
if (!w(m) || t.length !== n.length)
|
|
75
75
|
a(e ? p(e, n, o) : ""), l(e);
|
|
76
76
|
else if (a(t), !d) {
|
|
77
|
-
const
|
|
78
|
-
i?.(
|
|
77
|
+
const h = j(m);
|
|
78
|
+
i?.(h);
|
|
79
79
|
}
|
|
80
80
|
}, v = (e ? p(e, n, o) : "") !== f, ne = f.length === n.length && !w(P(f, n, /* @__PURE__ */ new Date(), { locale: o }));
|
|
81
|
-
return /* @__PURE__ */
|
|
81
|
+
return /* @__PURE__ */ g(le, { open: c, onOpenChange: (t) => !D && u(t), children: [
|
|
82
82
|
/* @__PURE__ */ r(ae, { asChild: !0, children: /* @__PURE__ */ r("div", { "data-component": "week-picker", "data-state": c ? "open" : "closed", "data-pending": v || void 0, children: /* @__PURE__ */ r(
|
|
83
83
|
ce,
|
|
84
84
|
{
|
|
85
|
-
ref:
|
|
85
|
+
ref: T,
|
|
86
86
|
value: f,
|
|
87
87
|
onChange: F,
|
|
88
88
|
onBlur: ee,
|
|
@@ -95,14 +95,14 @@ const p = (e, i = "MM/dd/yyyy", n) => {
|
|
|
95
95
|
ne ? "text-destructive" : v ? "text-content-muted" : "",
|
|
96
96
|
J
|
|
97
97
|
),
|
|
98
|
-
suffix: /* @__PURE__ */
|
|
99
|
-
e && !D && /* @__PURE__ */
|
|
98
|
+
suffix: /* @__PURE__ */ g("div", { className: "flex items-center gap-1", children: [
|
|
99
|
+
e && !D && /* @__PURE__ */ g(E, { children: [
|
|
100
100
|
/* @__PURE__ */ r(O, { asChild: !0, children: /* @__PURE__ */ r(
|
|
101
101
|
"button",
|
|
102
102
|
{
|
|
103
103
|
type: "button",
|
|
104
104
|
tabIndex: 0,
|
|
105
|
-
"aria-label":
|
|
105
|
+
"aria-label": k("calendar.clear"),
|
|
106
106
|
onClick: (t) => {
|
|
107
107
|
t.stopPropagation(), R();
|
|
108
108
|
},
|
|
@@ -110,11 +110,11 @@ const p = (e, i = "MM/dd/yyyy", n) => {
|
|
|
110
110
|
children: /* @__PURE__ */ r(te, { className: "size-3 hover:text-content" })
|
|
111
111
|
}
|
|
112
112
|
) }),
|
|
113
|
-
/* @__PURE__ */ r($, { variant: "tertiary", side: "top", children:
|
|
113
|
+
/* @__PURE__ */ r($, { variant: "tertiary", side: "top", children: k("calendar.clear") })
|
|
114
114
|
] }),
|
|
115
|
-
/* @__PURE__ */
|
|
115
|
+
/* @__PURE__ */ g(E, { children: [
|
|
116
116
|
/* @__PURE__ */ r(O, { asChild: !0, children: /* @__PURE__ */ r(oe, { className: "h-4 w-4 text-secondary-foreground" }) }),
|
|
117
|
-
/* @__PURE__ */ r($, { variant: "tertiary", side: "top", children:
|
|
117
|
+
/* @__PURE__ */ r($, { variant: "tertiary", side: "top", children: k("datePicker.selectWeek") })
|
|
118
118
|
] })
|
|
119
119
|
] }),
|
|
120
120
|
...K
|
|
@@ -143,8 +143,8 @@ const p = (e, i = "MM/dd/yyyy", n) => {
|
|
|
143
143
|
fiscalMode: S,
|
|
144
144
|
selectionMode: N,
|
|
145
145
|
fiscalMonthPattern: b,
|
|
146
|
-
fiscalYearStartMonth:
|
|
147
|
-
weekStartsOn:
|
|
146
|
+
fiscalYearStartMonth: V,
|
|
147
|
+
weekStartsOn: A,
|
|
148
148
|
onApply: _,
|
|
149
149
|
onCancel: Y,
|
|
150
150
|
onClear: R,
|
|
@@ -3,7 +3,7 @@ import * as c from "react";
|
|
|
3
3
|
import { Cross as Ne, CalendarMonth as Re, Info as Z } from "impact-nova-icons";
|
|
4
4
|
import { format as s, isValid as C, parse as I } from "date-fns";
|
|
5
5
|
import { cn as p, padValidDateString as $, maskDate as Y } from "../../../lib/utils.js";
|
|
6
|
-
import { Popover as Se,
|
|
6
|
+
import { Popover as Se, PopoverAnchor as Ce, PopoverContent as Ie } from "../popover.js";
|
|
7
7
|
import { Calendar as Pe } from "../calendar.js";
|
|
8
8
|
import { Tooltip as _, TooltipTrigger as F, TooltipContent as ee } from "../tooltip.js";
|
|
9
9
|
import { resolveWeekSelection as We } from "../../../lib/fiscal-calendar.js";
|
|
@@ -24,8 +24,8 @@ const a = (t) => t?.from ? t.to ? t.to.endDate : t.from.endDate : void 0, Ae = c
|
|
|
24
24
|
fiscalMode: K = "basic",
|
|
25
25
|
selectionMode: M = "week",
|
|
26
26
|
fiscalMonthPattern: B,
|
|
27
|
-
fiscalYearStartMonth:
|
|
28
|
-
weekStartsOn:
|
|
27
|
+
fiscalYearStartMonth: O = 1,
|
|
28
|
+
weekStartsOn: T = 1,
|
|
29
29
|
disabled: i,
|
|
30
30
|
className: se,
|
|
31
31
|
isError: D,
|
|
@@ -59,42 +59,42 @@ const a = (t) => t?.from ? t.to ? t.to.endDate : t.from.endDate : void 0, Ae = c
|
|
|
59
59
|
fiscalMode: K,
|
|
60
60
|
selectionMode: M,
|
|
61
61
|
fiscalMonthPattern: B,
|
|
62
|
-
fiscalYearStartMonth:
|
|
63
|
-
weekStartsOn:
|
|
62
|
+
fiscalYearStartMonth: O,
|
|
63
|
+
weekStartsOn: T
|
|
64
64
|
}), ue = (e) => {
|
|
65
65
|
const w = e.target.value, d = Y(w, n, R);
|
|
66
66
|
if (u(d), d === "") {
|
|
67
|
-
const
|
|
68
|
-
m(
|
|
67
|
+
const g = { from: void 0, to: v?.to };
|
|
68
|
+
m(g), y || b?.(g);
|
|
69
69
|
return;
|
|
70
70
|
}
|
|
71
|
-
const
|
|
72
|
-
if (C(
|
|
73
|
-
const N = { from: E(
|
|
71
|
+
const h = I(d, n, /* @__PURE__ */ new Date(), { locale: o });
|
|
72
|
+
if (C(h) && d.length === n.length) {
|
|
73
|
+
const N = { from: E(h), to: v?.to };
|
|
74
74
|
m(N), x(s(a(N), n, { locale: o })), y || b?.(N);
|
|
75
75
|
}
|
|
76
76
|
}, xe = (e) => {
|
|
77
77
|
const w = e.target.value, d = Y(w, n, S);
|
|
78
78
|
if (x(d), d === "") {
|
|
79
|
-
const
|
|
80
|
-
m(
|
|
79
|
+
const g = { from: v?.from, to: void 0 };
|
|
80
|
+
m(g), y || b?.(g);
|
|
81
81
|
return;
|
|
82
82
|
}
|
|
83
|
-
const
|
|
84
|
-
if (C(
|
|
85
|
-
const
|
|
86
|
-
m(N), v?.from && u(s(v.from.startDate, n, { locale: o })),
|
|
83
|
+
const h = I(d, n, /* @__PURE__ */ new Date(), { locale: o });
|
|
84
|
+
if (C(h) && d.length === n.length) {
|
|
85
|
+
const g = E(h), N = { from: v?.from, to: g };
|
|
86
|
+
m(N), v?.from && u(s(v.from.startDate, n, { locale: o })), h && j(h), y || b?.(N);
|
|
87
87
|
}
|
|
88
88
|
}, X = () => {
|
|
89
89
|
if (r) return;
|
|
90
|
-
const e = $(R, n), w = $(S, n), d = I(e, n, /* @__PURE__ */ new Date(), { locale: o }),
|
|
91
|
-
if (!
|
|
90
|
+
const e = $(R, n), w = $(S, n), d = I(e, n, /* @__PURE__ */ new Date(), { locale: o }), h = I(w, n, /* @__PURE__ */ new Date(), { locale: o }), g = C(d) && e.length === n.length, N = C(h) && w.length === n.length;
|
|
91
|
+
if (!g || !N)
|
|
92
92
|
u(t?.from ? s(t.from.startDate, n, { locale: o }) : ""), x(a(t) ? s(a(t), n, { locale: o }) : ""), m(t);
|
|
93
93
|
else if (u(e), x(w), !y) {
|
|
94
|
-
const De = E(d), ve = E(
|
|
94
|
+
const De = E(d), ve = E(h);
|
|
95
95
|
b?.({ from: De, to: ve });
|
|
96
96
|
}
|
|
97
|
-
},
|
|
97
|
+
}, he = t?.from ? s(t.from.startDate, n, { locale: o }) : "", ge = a(t) ? s(a(t), n, { locale: o }) : "", ke = he !== R, we = ge !== S, be = R.length === n.length && !C(I(R, n, /* @__PURE__ */ new Date(), { locale: o })), ye = S.length === n.length && !C(I(S, n, /* @__PURE__ */ new Date(), { locale: o }));
|
|
98
98
|
return /* @__PURE__ */ f("div", { className: "flex w-full min-w-[240px] flex-col gap-[6px]", "data-component": "week-range-picker", "data-disabled": i || void 0, children: [
|
|
99
99
|
/* @__PURE__ */ f("div", { className: "flex flex-col gap-[6px]", children: [
|
|
100
100
|
q && /* @__PURE__ */ f(
|
|
@@ -237,8 +237,8 @@ const a = (t) => t?.from ? t.to ? t.to.endDate : t.from.endDate : void 0, Ae = c
|
|
|
237
237
|
fiscalMode: K,
|
|
238
238
|
selectionMode: M,
|
|
239
239
|
fiscalMonthPattern: B,
|
|
240
|
-
fiscalYearStartMonth:
|
|
241
|
-
weekStartsOn:
|
|
240
|
+
fiscalYearStartMonth: O,
|
|
241
|
+
weekStartsOn: T,
|
|
242
242
|
onApply: me,
|
|
243
243
|
onCancel: z,
|
|
244
244
|
onClear: U,
|
|
@@ -2,7 +2,7 @@ import { VariantProps } from 'class-variance-authority';
|
|
|
2
2
|
import * as React from "react";
|
|
3
3
|
declare const dynamicLayoutVariants: (props?: {
|
|
4
4
|
layout?: "grid" | "flex" | "stack";
|
|
5
|
-
columns?: 1 | 4 | 3 | 2 |
|
|
5
|
+
columns?: 1 | 4 | 3 | 2 | 6 | 12;
|
|
6
6
|
gap?: "none" | "sm" | "md" | "lg" | "xl";
|
|
7
7
|
} & import('class-variance-authority/types').ClassProp) => string;
|
|
8
8
|
export interface DynamicLayoutProps extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof dynamicLayoutVariants> {
|
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
import { jsx as
|
|
1
|
+
import { jsx as s } from "react/jsx-runtime";
|
|
2
2
|
import * as i from "react";
|
|
3
3
|
import { Slot as f } from "@radix-ui/react-slot";
|
|
4
|
-
import { cn as
|
|
4
|
+
import { cn as d } from "../../lib/utils.js";
|
|
5
5
|
import { EMPTY_STATE_IMAGE_LOADERS as y } from "./empty-container/emptyStateIllustrations.js";
|
|
6
|
-
const
|
|
7
|
-
({ className: a, children: t, asChild: e = !1, ...o }, n) => /* @__PURE__ */
|
|
6
|
+
const b = i.forwardRef(
|
|
7
|
+
({ className: a, children: t, asChild: e = !1, ...o }, n) => /* @__PURE__ */ s(
|
|
8
8
|
e ? f : "div",
|
|
9
9
|
{
|
|
10
10
|
ref: n,
|
|
11
|
-
className:
|
|
11
|
+
className: d(
|
|
12
12
|
"flex flex-col items-center justify-center py-16 px-5 text-center animate-in fade-in zoom-in duration-300 border border-stroke-subtle rounded-xl bg-canvas-elevated w-[884px] min-w-[884px] h-auto",
|
|
13
13
|
a
|
|
14
14
|
),
|
|
15
15
|
"data-component": "empty-container",
|
|
16
16
|
...o,
|
|
17
|
-
children: /* @__PURE__ */
|
|
17
|
+
children: /* @__PURE__ */ s("div", { className: "flex flex-col items-center max-w-[650px]", children: t })
|
|
18
18
|
}
|
|
19
19
|
)
|
|
20
20
|
);
|
|
21
|
-
|
|
21
|
+
b.displayName = "EmptyContainer";
|
|
22
22
|
const S = i.forwardRef(
|
|
23
23
|
({
|
|
24
24
|
className: a,
|
|
@@ -26,18 +26,18 @@ const S = i.forwardRef(
|
|
|
26
26
|
src: e,
|
|
27
27
|
alt: o = "",
|
|
28
28
|
width: n,
|
|
29
|
-
height:
|
|
30
|
-
asChild:
|
|
31
|
-
...
|
|
32
|
-
},
|
|
33
|
-
const [
|
|
29
|
+
height: m,
|
|
30
|
+
asChild: p = !1,
|
|
31
|
+
...u
|
|
32
|
+
}, g) => {
|
|
33
|
+
const [h] = i.useState(() => t || e ? null : Math.floor(Math.random() * y.length)), [l, x] = i.useState(null), r = h !== null ? y[h] : null;
|
|
34
34
|
i.useEffect(() => {
|
|
35
35
|
if (t || e || !r)
|
|
36
36
|
return;
|
|
37
37
|
let c = !1;
|
|
38
|
-
return r.loadSrc().then((
|
|
38
|
+
return r.loadSrc().then((N) => {
|
|
39
39
|
c || x({
|
|
40
|
-
imageSource:
|
|
40
|
+
imageSource: N,
|
|
41
41
|
width: r.width,
|
|
42
42
|
height: r.height
|
|
43
43
|
});
|
|
@@ -45,11 +45,11 @@ const S = i.forwardRef(
|
|
|
45
45
|
c = !0;
|
|
46
46
|
};
|
|
47
47
|
}, [t, r, e]);
|
|
48
|
-
const C = n || (t ? "auto" : l?.width ?? r?.width ?? 225),
|
|
48
|
+
const C = n || (t ? "auto" : l?.width ?? r?.width ?? 225), E = m || (t ? "auto" : l?.height ?? r?.height ?? 150), w = () => {
|
|
49
49
|
if (t)
|
|
50
50
|
return t;
|
|
51
51
|
const c = e ?? l?.imageSource;
|
|
52
|
-
return c ? /* @__PURE__ */
|
|
52
|
+
return c ? /* @__PURE__ */ s(
|
|
53
53
|
"img",
|
|
54
54
|
{
|
|
55
55
|
src: c,
|
|
@@ -57,52 +57,61 @@ const S = i.forwardRef(
|
|
|
57
57
|
className: "object-contain shrink-0 select-none",
|
|
58
58
|
style: {
|
|
59
59
|
width: n || l?.width || r?.width || "100%",
|
|
60
|
-
height:
|
|
60
|
+
height: m || l?.height || r?.height || "100%"
|
|
61
61
|
}
|
|
62
62
|
}
|
|
63
63
|
) : null;
|
|
64
64
|
};
|
|
65
|
-
return /* @__PURE__ */
|
|
66
|
-
|
|
65
|
+
return /* @__PURE__ */ s(
|
|
66
|
+
p ? f : "div",
|
|
67
67
|
{
|
|
68
|
-
ref:
|
|
69
|
-
className:
|
|
68
|
+
ref: g,
|
|
69
|
+
className: d(
|
|
70
70
|
"mb-4 flex items-center justify-center relative",
|
|
71
71
|
"after:absolute after:inset-0 after:bg-brand/5 after:blur-3xl after:-z-10 after:rounded-full",
|
|
72
72
|
a
|
|
73
73
|
),
|
|
74
74
|
style: {
|
|
75
75
|
width: C,
|
|
76
|
-
height:
|
|
77
|
-
...
|
|
76
|
+
height: E,
|
|
77
|
+
...u.style
|
|
78
78
|
},
|
|
79
79
|
"data-component": "empty-container-image",
|
|
80
|
-
...
|
|
81
|
-
children:
|
|
80
|
+
...u,
|
|
81
|
+
children: w()
|
|
82
82
|
}
|
|
83
83
|
);
|
|
84
84
|
}
|
|
85
85
|
);
|
|
86
86
|
S.displayName = "EmptyContainerImage";
|
|
87
|
-
const I =
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
87
|
+
const I = {
|
|
88
|
+
2: "h2",
|
|
89
|
+
3: "h3",
|
|
90
|
+
4: "h4",
|
|
91
|
+
5: "h5",
|
|
92
|
+
6: "h6"
|
|
93
|
+
}, A = i.forwardRef(({ className: a, children: t, asChild: e = !1, headingLevel: o = 2, ...n }, m) => {
|
|
94
|
+
const p = e ? f : I[o];
|
|
95
|
+
return /* @__PURE__ */ s(
|
|
96
|
+
p,
|
|
97
|
+
{
|
|
98
|
+
ref: m,
|
|
99
|
+
className: d(
|
|
100
|
+
"text-xl font-bold tracking-tight leading-[30px] text-content",
|
|
101
|
+
a
|
|
102
|
+
),
|
|
103
|
+
"data-component": "empty-container-title",
|
|
104
|
+
...n,
|
|
105
|
+
children: t
|
|
106
|
+
}
|
|
107
|
+
);
|
|
108
|
+
});
|
|
109
|
+
A.displayName = "EmptyContainerTitle";
|
|
110
|
+
const R = i.forwardRef(({ className: a, children: t, asChild: e = !1, ...o }, n) => /* @__PURE__ */ s(
|
|
102
111
|
e ? f : "p",
|
|
103
112
|
{
|
|
104
113
|
ref: n,
|
|
105
|
-
className:
|
|
114
|
+
className: d(
|
|
106
115
|
"text-base leading-[21px] mt-1 font-medium text-secondary-foreground",
|
|
107
116
|
a
|
|
108
117
|
),
|
|
@@ -111,12 +120,12 @@ const v = i.forwardRef(({ className: a, children: t, asChild: e = !1, ...o }, n)
|
|
|
111
120
|
children: t
|
|
112
121
|
}
|
|
113
122
|
));
|
|
114
|
-
|
|
115
|
-
const
|
|
123
|
+
R.displayName = "EmptyContainerDescription";
|
|
124
|
+
const T = i.forwardRef(({ className: a, children: t, asChild: e = !1, ...o }, n) => /* @__PURE__ */ s(
|
|
116
125
|
e ? f : "div",
|
|
117
126
|
{
|
|
118
127
|
ref: n,
|
|
119
|
-
className:
|
|
128
|
+
className: d(
|
|
120
129
|
"mt-6 flex flex-wrap items-center justify-center gap-3",
|
|
121
130
|
a
|
|
122
131
|
),
|
|
@@ -125,11 +134,11 @@ const R = i.forwardRef(({ className: a, children: t, asChild: e = !1, ...o }, n)
|
|
|
125
134
|
children: t
|
|
126
135
|
}
|
|
127
136
|
));
|
|
128
|
-
|
|
137
|
+
T.displayName = "EmptyContainerAction";
|
|
129
138
|
export {
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
139
|
+
b as EmptyContainer,
|
|
140
|
+
T as EmptyContainerAction,
|
|
141
|
+
R as EmptyContainerDescription,
|
|
133
142
|
S as EmptyContainerImage,
|
|
134
|
-
|
|
143
|
+
A as EmptyContainerTitle
|
|
135
144
|
};
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { jsxs as l, jsx as e } from "react/jsx-runtime";
|
|
2
|
-
import * as
|
|
2
|
+
import * as n from "react";
|
|
3
3
|
import { ChevronRight as ee, Search as te, Bin as ae, Pencil as le, Star as re } from "impact-nova-icons";
|
|
4
4
|
import { cn as o } from "../../../lib/utils.js";
|
|
5
|
-
import { Popover as
|
|
5
|
+
import { Popover as ne, PopoverTrigger as ie, PopoverContent as se } from "../popover.js";
|
|
6
6
|
import { Tooltip as f, TooltipTrigger as u, TooltipContent as h } from "../tooltip.js";
|
|
7
7
|
import { Button as Q } from "../button.js";
|
|
8
8
|
import { Separator as M } from "../separator.js";
|
|
@@ -14,8 +14,8 @@ import { useImpactNovaI18n as ue } from "../../../i18n/ImpactNovaI18nContext.js"
|
|
|
14
14
|
const Ie = ({
|
|
15
15
|
selectedFilter: m,
|
|
16
16
|
onSelectedFilterChange: _,
|
|
17
|
-
savedFilters:
|
|
18
|
-
recentFilters:
|
|
17
|
+
savedFilters: C,
|
|
18
|
+
recentFilters: S,
|
|
19
19
|
onApplySavedFilter: B,
|
|
20
20
|
onSavedFilterSearch: N,
|
|
21
21
|
onSavedFiltersScroll: z,
|
|
@@ -25,25 +25,25 @@ const Ie = ({
|
|
|
25
25
|
onDeleteSavedFilter: I,
|
|
26
26
|
onSetDefaultSavedFilter: P
|
|
27
27
|
}) => {
|
|
28
|
-
const { t: r } = ue(), [b, T] =
|
|
29
|
-
|
|
30
|
-
const a =
|
|
28
|
+
const { t: r } = ue(), [b, T] = n.useState(!1), [O, G] = n.useState(null), [A, U] = n.useState(null);
|
|
29
|
+
n.useEffect(() => {
|
|
30
|
+
const a = C?.find((d) => d.isDefault);
|
|
31
31
|
a && a.id !== A && U(a.id);
|
|
32
|
-
}, [
|
|
32
|
+
}, [C, A]);
|
|
33
33
|
const V = (a) => {
|
|
34
34
|
T(a), E?.(a);
|
|
35
|
-
}, [D, Y] =
|
|
36
|
-
|
|
35
|
+
}, [D, Y] = n.useState(""), [x, q] = n.useState(""), [c, H] = n.useState("All"), [p, j] = n.useState(null);
|
|
36
|
+
n.useEffect(() => {
|
|
37
37
|
const a = setTimeout(() => {
|
|
38
38
|
q(D);
|
|
39
39
|
}, 300);
|
|
40
40
|
return () => clearTimeout(a);
|
|
41
|
-
}, [D]),
|
|
41
|
+
}, [D]), n.useEffect(() => {
|
|
42
42
|
N && N(
|
|
43
43
|
x,
|
|
44
44
|
c === "All" ? void 0 : c
|
|
45
45
|
);
|
|
46
|
-
}, [x, c, N]),
|
|
46
|
+
}, [x, c, N]), n.useEffect(() => {
|
|
47
47
|
b && j({ label: m });
|
|
48
48
|
}, [b, m]);
|
|
49
49
|
const J = (a) => {
|
|
@@ -52,9 +52,9 @@ const Ie = ({
|
|
|
52
52
|
p && (_?.(p.label), p.savedItem && B?.(p.savedItem), T(!1));
|
|
53
53
|
}, W = () => {
|
|
54
54
|
T(!1);
|
|
55
|
-
}, X = () => !
|
|
55
|
+
}, X = () => !S || S.length === 0 ? null : /* @__PURE__ */ l("div", { className: "flex flex-col", children: [
|
|
56
56
|
/* @__PURE__ */ e("div", { className: "px-1 py-[6px] text-xs font-medium text-[#60697d] font-['Manrope']", children: "Recent" }),
|
|
57
|
-
/* @__PURE__ */ e("div", { className: "mb-[6px] flex flex-col", children:
|
|
57
|
+
/* @__PURE__ */ e("div", { className: "mb-[6px] flex flex-col", children: S.map((a, d) => {
|
|
58
58
|
const s = a.map((w) => w.label).join(", "), g = p?.label === s;
|
|
59
59
|
return /* @__PURE__ */ e(
|
|
60
60
|
"button",
|
|
@@ -77,7 +77,7 @@ const Ie = ({
|
|
|
77
77
|
] }), Z = () => {
|
|
78
78
|
if (R)
|
|
79
79
|
return /* @__PURE__ */ e("div", { className: "flex max-h-[160px] flex-col overflow-y-auto px-3 py-2 space-y-2", children: [1, 2, 3, 4, 5].map((t) => /* @__PURE__ */ e(fe, { className: "h-9 w-full rounded-lg" }, t)) });
|
|
80
|
-
let a =
|
|
80
|
+
let a = C?.filter(
|
|
81
81
|
(t) => c === "All" || t.type === c
|
|
82
82
|
);
|
|
83
83
|
if (!N && x && (a = a?.filter(
|
|
@@ -109,22 +109,22 @@ const Ie = ({
|
|
|
109
109
|
return /* @__PURE__ */ e("div", { className: "flex flex-col items-center justify-center py-8 text-center min-h-[100px] px-6", children: /* @__PURE__ */ e("span", { className: "text-sm text-[#60697d] font-['Manrope'] leading-relaxed", children: t }) });
|
|
110
110
|
}
|
|
111
111
|
const d = k || I || P, s = a.find((t) => t.isDefault), g = a.filter((t) => !t.isDefault), w = (t, v = !1) => {
|
|
112
|
-
const L = p?.label === t.label,
|
|
112
|
+
const L = p?.label === t.label, i = O === t.id;
|
|
113
113
|
return /* @__PURE__ */ l(
|
|
114
114
|
"button",
|
|
115
115
|
{
|
|
116
116
|
type: "button",
|
|
117
117
|
className: o(
|
|
118
118
|
"group mb-1 flex items-center justify-between cursor-pointer rounded-lg px-3 py-2 text-sm font-medium font-['Manrope'] w-full text-left bg-transparent border-none transition-all duration-300 relative overflow-hidden",
|
|
119
|
-
!
|
|
120
|
-
!
|
|
121
|
-
!
|
|
122
|
-
|
|
119
|
+
!i && "hover:bg-[#f5f6fa]",
|
|
120
|
+
!i && L && "bg-[#edf0ff]",
|
|
121
|
+
!i && !L && "text-[#1f2b4d]",
|
|
122
|
+
i && "pointer-events-none"
|
|
123
123
|
),
|
|
124
|
-
onClick: () => !
|
|
125
|
-
disabled:
|
|
124
|
+
onClick: () => !i && j({ label: t.label, savedItem: t }),
|
|
125
|
+
disabled: i,
|
|
126
126
|
children: [
|
|
127
|
-
|
|
127
|
+
i && /* @__PURE__ */ e(
|
|
128
128
|
"div",
|
|
129
129
|
{
|
|
130
130
|
className: "absolute inset-0 bg-gradient-to-r from-[#e6e8f0] via-[#d5dafb] to-[#e6e8f0] opacity-60",
|
|
@@ -188,11 +188,11 @@ const Ie = ({
|
|
|
188
188
|
tabIndex: v ? 0 : -1,
|
|
189
189
|
"aria-label": `${t.isDefault ? r("filterStrip.defaultFilter") : r("filterStrip.setAsDefault")} ${t.label}`,
|
|
190
190
|
className: "p-1 rounded hover:bg-[#e6e8f0] transition-colors disabled:opacity-50 disabled:cursor-not-allowed",
|
|
191
|
-
disabled:
|
|
191
|
+
disabled: i,
|
|
192
192
|
onClick: (y) => {
|
|
193
193
|
y.stopPropagation(), G(t.id), P(t), setTimeout(() => G(null), 1200);
|
|
194
194
|
},
|
|
195
|
-
children:
|
|
195
|
+
children: i ? /* @__PURE__ */ e("div", { className: "h-3.5 w-3.5 animate-spin rounded-full border-2 border-yellow-500 border-t-transparent" }) : /* @__PURE__ */ e(
|
|
196
196
|
re,
|
|
197
197
|
{
|
|
198
198
|
className: o(
|
|
@@ -203,7 +203,7 @@ const Ie = ({
|
|
|
203
203
|
)
|
|
204
204
|
}
|
|
205
205
|
) }),
|
|
206
|
-
/* @__PURE__ */ e(h, { variant: "tertiary", side: "top", children:
|
|
206
|
+
/* @__PURE__ */ e(h, { variant: "tertiary", side: "top", children: i ? r("filterStrip.updating") : t.isDefault ? r("filterStrip.defaultFilter") : r("filterStrip.setAsDefault") })
|
|
207
207
|
] })
|
|
208
208
|
] })
|
|
209
209
|
]
|
|
@@ -246,13 +246,12 @@ const Ie = ({
|
|
|
246
246
|
)
|
|
247
247
|
] });
|
|
248
248
|
}, F = p?.label !== m;
|
|
249
|
-
return /* @__PURE__ */ l(
|
|
250
|
-
/* @__PURE__ */ e(
|
|
249
|
+
return /* @__PURE__ */ l(ne, { open: b, onOpenChange: V, children: [
|
|
250
|
+
/* @__PURE__ */ e(ie, { asChild: !0, children: /* @__PURE__ */ l(
|
|
251
251
|
"button",
|
|
252
252
|
{
|
|
253
253
|
type: "button",
|
|
254
254
|
className: "flex cursor-pointer items-center gap-2 bg-transparent border-none p-0",
|
|
255
|
-
"aria-label": r("filterStrip.selectFilter"),
|
|
256
255
|
"aria-expanded": b,
|
|
257
256
|
"aria-haspopup": "dialog",
|
|
258
257
|
children: [
|