impact-nova 1.5.14 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (149) hide show
  1. package/dist/components/ui/accordion.d.ts +4 -1
  2. package/dist/components/ui/accordion.js +28 -22
  3. package/dist/components/ui/ag-grid-react/cell-renderers/badge-cell-renderer.js +11 -11
  4. package/dist/components/ui/ag-grid-react/cell-renderers/checkbox-display-renderer.js +12 -12
  5. package/dist/components/ui/ag-grid-react/cell-renderers/date-display-renderer.js +13 -13
  6. package/dist/components/ui/ag-grid-react/cell-renderers/editors/date-cell-editor.js +13 -13
  7. package/dist/components/ui/ag-grid-react/cell-renderers/editors/input-cell-editor.js +30 -30
  8. package/dist/components/ui/ag-grid-react/cell-renderers/editors/percent-progress-cell-editor.js +13 -13
  9. package/dist/components/ui/ag-grid-react/cell-renderers/editors/split-cell-editor.js +16 -16
  10. package/dist/components/ui/ag-grid-react/cell-renderers/editors/textarea-cell-editor.js +17 -17
  11. package/dist/components/ui/ag-grid-react/cell-renderers/input-display-renderer.js +11 -11
  12. package/dist/components/ui/ag-grid-react/cell-renderers/link-with-batch-cell-renderer.js +2 -2
  13. package/dist/components/ui/ag-grid-react/cell-renderers/percent-progress-display-renderer.js +11 -13
  14. package/dist/components/ui/ag-grid-react/cell-renderers/select-display-renderer.js +8 -8
  15. package/dist/components/ui/ag-grid-react/cell-renderers/split-cell-renderer.js +6 -6
  16. package/dist/components/ui/ag-grid-react/cell-renderers/status-badge-renderer.d.ts +1 -1
  17. package/dist/components/ui/ag-grid-react/cell-renderers/status-badge-renderer.js +14 -14
  18. package/dist/components/ui/ag-grid-react/cell-renderers/switch-display-renderer.js +18 -18
  19. package/dist/components/ui/ag-grid-react/cell-renderers/textarea-display-renderer.js +6 -6
  20. package/dist/components/ui/ag-grid-react/headers/advanced-filter/advanced-filter-dialog.js +14 -14
  21. package/dist/components/ui/ag-grid-react/headers/advanced-filter/column-filter-section.js +35 -35
  22. package/dist/components/ui/ag-grid-react/headers/column-menu/column-settings-menu.js +49 -49
  23. package/dist/components/ui/ag-grid-react/headers/components/header-info.js +29 -29
  24. package/dist/components/ui/ag-grid-react/headers/components/info-modal.js +9 -9
  25. package/dist/components/ui/ag-grid-react/headers/components/section-renderers.js +20 -20
  26. package/dist/components/ui/ag-grid-react/headers/custom-header-group.js +10 -10
  27. package/dist/components/ui/ag-grid-react/headers/custom-header.js +76 -76
  28. package/dist/components/ui/ag-grid-react/headers/header-search-input.js +118 -118
  29. package/dist/components/ui/ag-grid-react/index.js +121 -102
  30. package/dist/components/ui/alert-dialog.js +6 -6
  31. package/dist/components/ui/alert.d.ts +4 -3
  32. package/dist/components/ui/alert.js +182 -64
  33. package/dist/components/ui/avatar.js +5 -5
  34. package/dist/components/ui/badge.d.ts +7 -2
  35. package/dist/components/ui/badge.js +105 -32
  36. package/dist/components/ui/breadcrumb.js +26 -21
  37. package/dist/components/ui/button-group.d.ts +7 -0
  38. package/dist/components/ui/button-group.js +116 -91
  39. package/dist/components/ui/button-variants.d.ts +7 -2
  40. package/dist/components/ui/button-variants.js +31 -16
  41. package/dist/components/ui/button.d.ts +2 -2
  42. package/dist/components/ui/button.js +10 -10
  43. package/dist/components/ui/calendar.js +185 -184
  44. package/dist/components/ui/card.js +24 -24
  45. package/dist/components/ui/chart/chart.js +27 -27
  46. package/dist/components/ui/chart/chart.utils.js +50 -50
  47. package/dist/components/ui/checkbox.js +22 -22
  48. package/dist/components/ui/chips.d.ts +19 -3
  49. package/dist/components/ui/chips.js +140 -41
  50. package/dist/components/ui/command-palette/command-palette-layout.d.ts +28 -0
  51. package/dist/components/ui/command-palette/command-palette-layout.js +59 -0
  52. package/dist/components/ui/command-palette/command-palette.js +254 -264
  53. package/dist/components/ui/command-palette/index.d.ts +1 -1
  54. package/dist/components/ui/command-palette/index.js +42 -41
  55. package/dist/components/ui/command-palette/kbd.js +18 -18
  56. package/dist/components/ui/command-palette/shortcut-settings.d.ts +3 -3
  57. package/dist/components/ui/command-palette/shortcut-settings.js +105 -111
  58. package/dist/components/ui/command-palette/utils.d.ts +6 -1
  59. package/dist/components/ui/command-palette/utils.js +81 -74
  60. package/dist/components/ui/data-table/data-table-column-list.js +31 -31
  61. package/dist/components/ui/data-table/data-table-constants.d.ts +6 -0
  62. package/dist/components/ui/data-table/data-table-constants.js +4 -0
  63. package/dist/components/ui/data-table/data-table-context.d.ts +4 -0
  64. package/dist/components/ui/data-table/data-table-format-options.js +35 -35
  65. package/dist/components/ui/data-table/data-table-sheet.d.ts +4 -4
  66. package/dist/components/ui/data-table/data-table-sheet.js +91 -58
  67. package/dist/components/ui/data-table/data-table-view-options.js +29 -29
  68. package/dist/components/ui/data-table/data-table.js +84 -52
  69. package/dist/components/ui/data-table/index.d.ts +1 -0
  70. package/dist/components/ui/data-table/index.js +15 -13
  71. package/dist/components/ui/date-picker/date-picker.js +35 -35
  72. package/dist/components/ui/date-picker/date-range-picker.js +166 -164
  73. package/dist/components/ui/date-picker/month-picker.js +14 -14
  74. package/dist/components/ui/date-picker/month-range-picker.js +198 -189
  75. package/dist/components/ui/date-picker/multi-date-picker.js +14 -14
  76. package/dist/components/ui/date-picker/multi-month-picker.js +1 -1
  77. package/dist/components/ui/date-picker/multi-week-picker.js +1 -1
  78. package/dist/components/ui/date-picker/week-picker.js +2 -2
  79. package/dist/components/ui/date-picker/week-range-picker.js +164 -162
  80. package/dist/components/ui/dialog.js +25 -28
  81. package/dist/components/ui/drawer.js +40 -40
  82. package/dist/components/ui/dropdown-menu.js +72 -72
  83. package/dist/components/ui/empty-container.js +73 -69
  84. package/dist/components/ui/file-upload.js +137 -135
  85. package/dist/components/ui/filter-panel/filter-panel.d.ts +2 -2
  86. package/dist/components/ui/filter-panel/filter-panel.js +175 -97
  87. package/dist/components/ui/filter-strip/filter-strip.d.ts +1 -1
  88. package/dist/components/ui/filter-strip/filter-strip.js +63 -50
  89. package/dist/components/ui/filter-strip/filter-summary.d.ts +4 -1
  90. package/dist/components/ui/filter-strip/filter-summary.js +230 -146
  91. package/dist/components/ui/filter-strip/filter-tag-list.js +125 -91
  92. package/dist/components/ui/header.d.ts +7 -3
  93. package/dist/components/ui/header.js +87 -79
  94. package/dist/components/ui/horizontal-scroller/horizontal-scroller.js +44 -44
  95. package/dist/components/ui/hover-card.js +10 -10
  96. package/dist/components/ui/input.js +79 -70
  97. package/dist/components/ui/loader.js +16 -16
  98. package/dist/components/ui/nested-list/components/NestedListCategoryFilters.js +16 -16
  99. package/dist/components/ui/nested-list/components/NestedListHeader.js +27 -27
  100. package/dist/components/ui/nested-list/components/SortableItem.js +58 -58
  101. package/dist/components/ui/notification-panel/notification-item.js +32 -32
  102. package/dist/components/ui/notification-panel/notification-list.js +24 -24
  103. package/dist/components/ui/notification-panel/notification-panel.js +26 -26
  104. package/dist/components/ui/popover.js +22 -22
  105. package/dist/components/ui/progress.js +34 -34
  106. package/dist/components/ui/prompt.js +48 -48
  107. package/dist/components/ui/radio-group.js +63 -54
  108. package/dist/components/ui/select/components/LabelWithSequence.js +6 -6
  109. package/dist/components/ui/select/components/Submenu.js +33 -33
  110. package/dist/components/ui/select/select.js +425 -376
  111. package/dist/components/ui/sheet.js +88 -66
  112. package/dist/components/ui/sidebar.js +342 -296
  113. package/dist/components/ui/skeleton.js +6 -6
  114. package/dist/components/ui/slider.js +17 -17
  115. package/dist/components/ui/statistics-card.d.ts +86 -0
  116. package/dist/components/ui/statistics-card.hooks.d.ts +150 -0
  117. package/dist/components/ui/statistics-card.hooks.js +100 -0
  118. package/dist/components/ui/statistics-card.js +259 -0
  119. package/dist/components/ui/stepper.js +51 -51
  120. package/dist/components/ui/switch.js +7 -7
  121. package/dist/components/ui/tabs.js +70 -70
  122. package/dist/components/ui/tag-group.d.ts +1 -0
  123. package/dist/components/ui/tag-group.js +14 -13
  124. package/dist/components/ui/tag.js +43 -43
  125. package/dist/components/ui/textarea.js +86 -58
  126. package/dist/components/ui/toast.js +39 -39
  127. package/dist/components/ui/tooltip.js +23 -23
  128. package/dist/components/ui/types/date-picker.types.d.ts +1 -0
  129. package/dist/components/ui/types/filter-panel.types.d.ts +3 -0
  130. package/dist/components/ui/types/filter-strip.types.d.ts +14 -0
  131. package/dist/components/ui/types/horizontal-scroller.types.d.ts +1 -1
  132. package/dist/components/ui/types/statistics-card.types.d.ts +1 -0
  133. package/dist/i18n/defaultMessages.d.ts +8 -0
  134. package/dist/i18n/defaultMessages.js +15 -9
  135. package/dist/i18n/locales/de.js +7 -1
  136. package/dist/i18n/locales/es.js +7 -1
  137. package/dist/i18n/locales/hi.js +7 -1
  138. package/dist/i18n/locales/kn.js +7 -1
  139. package/dist/icons/assets/bulk-edit.svg.js +5 -0
  140. package/dist/icons/assets/clock.svg.js +5 -0
  141. package/dist/icons/assets/statistics.svg.js +5 -0
  142. package/dist/icons/index.d.ts +3 -0
  143. package/dist/icons/index.js +254 -206
  144. package/dist/impact-nova.css +1 -1
  145. package/dist/index.d.ts +1 -0
  146. package/dist/index.js +361 -347
  147. package/package.json +3 -2
  148. package/tailwind.config.js +259 -152
  149. /package/dist/icons/assets/{PivotMode.svg.js → pivotMode.svg.js} +0 -0
@@ -1,39 +1,62 @@
1
1
  import { jsx as e, jsxs as t } from "react/jsx-runtime";
2
- import b from "react";
3
- import { Sheet as g, SheetContent as v, SheetDescription as y, SheetTitle as w, SheetClose as N } from "../sheet.js";
4
- import { cn as n } from "../../../lib/utils.js";
5
- import { MultiColorFilter as C, Cross as F, Info as m } from "../../../icons/index.js";
6
- import { Button as P } from "../button.js";
2
+ import u from "react";
3
+ import { Sheet as b, SheetContent as g, SheetDescription as N, SheetTitle as y, SheetClose as w } from "../sheet.js";
4
+ import { cn as i } from "../../../lib/utils.js";
5
+ import { MultiColorFilter as k, Cross as C, Info as m } from "../../../icons/index.js";
6
+ import { Button as F } from "../button.js";
7
7
  import { Tooltip as d, TooltipTrigger as h, TooltipContent as f } from "../tooltip.js";
8
- import { Kbd as k } from "../command-palette/kbd.js";
9
- import { useImpactNovaI18n as u } from "../../../i18n/ImpactNovaI18nContext.js";
10
- const j = ({ title: l, children: a, className: i }) => {
11
- const { t: c } = u();
12
- return /* @__PURE__ */ t("div", { "data-component": "filter-panel-header", className: n("flex shrink-0 flex-row items-center justify-between border-b px-4 py-3 bg-white", i), children: [
13
- /* @__PURE__ */ t("div", { className: "flex items-center gap-3", children: [
14
- /* @__PURE__ */ e("div", { className: "flex h-6 w-6 items-center justify-center", children: /* @__PURE__ */ e(C, { className: "h-5 w-5" }) }),
15
- /* @__PURE__ */ e(w, { className: "text-lg font-bold text-[#1f2b4d]", children: l })
16
- ] }),
17
- /* @__PURE__ */ t("div", { className: "flex items-center gap-2", children: [
18
- a,
19
- /* @__PURE__ */ e(N, { asChild: !0, children: /* @__PURE__ */ e(P, { variant: "secondary", size: "icon", "aria-label": c("aria.close"), "data-component": "filter-panel-close", children: /* @__PURE__ */ e(F, { className: "h-3 w-3" }) }) })
20
- ] })
21
- ] });
8
+ import { Kbd as P } from "../command-palette/kbd.js";
9
+ import { useImpactNovaI18n as v } from "../../../i18n/ImpactNovaI18nContext.js";
10
+ const j = ({
11
+ title: n,
12
+ children: r,
13
+ className: l
14
+ }) => {
15
+ const { t: c } = v();
16
+ return /* @__PURE__ */ t(
17
+ "div",
18
+ {
19
+ "data-component": "filter-panel-header",
20
+ className: i(
21
+ "flex shrink-0 flex-row items-center justify-between border-b px-4 py-3 bg-canvas-elevated",
22
+ l
23
+ ),
24
+ children: [
25
+ /* @__PURE__ */ t("div", { className: "flex items-center gap-3", children: [
26
+ /* @__PURE__ */ e("div", { className: "flex h-6 w-6 items-center justify-center", children: /* @__PURE__ */ e(k, { className: "h-5 w-5" }) }),
27
+ /* @__PURE__ */ e(y, { className: "text-lg font-bold text-content", children: n })
28
+ ] }),
29
+ /* @__PURE__ */ t("div", { className: "flex items-center gap-2", children: [
30
+ r,
31
+ /* @__PURE__ */ e(w, { asChild: !0, children: /* @__PURE__ */ e(
32
+ F,
33
+ {
34
+ variant: "secondary",
35
+ size: "icon",
36
+ "aria-label": c("aria.close"),
37
+ "data-component": "filter-panel-close",
38
+ children: /* @__PURE__ */ e(C, { className: "h-3 w-3" })
39
+ }
40
+ ) })
41
+ ] })
42
+ ]
43
+ }
44
+ );
22
45
  }, H = ({
23
- open: l,
24
- onOpenChange: a,
25
- title: i = "Filter panel",
46
+ open: n,
47
+ onOpenChange: r,
48
+ title: l = "Filter panel",
26
49
  children: c,
27
50
  header: s,
28
- sidebar: r,
51
+ sidebar: a,
29
52
  className: o,
30
53
  preventClose: x = !1
31
- }) => /* @__PURE__ */ e(g, { open: l, onOpenChange: a, children: /* @__PURE__ */ t(
32
- v,
54
+ }) => /* @__PURE__ */ e(b, { open: n, onOpenChange: r, children: /* @__PURE__ */ t(
55
+ g,
33
56
  {
34
57
  side: "right",
35
- className: n(
36
- "w-full !max-w-[840px] p-0 sm:!max-w-[840px] gap-0 border-l shadow-xl transition-all duration-300 ease-in-out bg-white",
58
+ className: i(
59
+ "w-full !max-w-[840px] p-0 sm:!max-w-[840px] gap-0 border-l shadow-xl transition-all duration-300 ease-in-out bg-canvas-elevated",
37
60
  o
38
61
  ),
39
62
  onInteractOutside: (p) => {
@@ -43,86 +66,141 @@ const j = ({ title: l, children: a, className: i }) => {
43
66
  x && p.preventDefault();
44
67
  },
45
68
  children: [
46
- /* @__PURE__ */ e(y, { className: "sr-only", children: "Select filters to apply to the current view." }),
47
- /* @__PURE__ */ t("div", { className: "flex h-full flex-col bg-white", children: [
48
- s || /* @__PURE__ */ e(j, { title: i }),
69
+ /* @__PURE__ */ e(N, { className: "sr-only", children: "Select filters to apply to the current view." }),
70
+ /* @__PURE__ */ t("div", { className: "flex h-full flex-col bg-canvas-elevated", children: [
71
+ s || /* @__PURE__ */ e(j, { title: l }),
49
72
  /* @__PURE__ */ t("div", { className: "flex flex-1 overflow-hidden", children: [
50
- r,
73
+ a,
51
74
  /* @__PURE__ */ e("div", { className: "flex flex-col flex-1 overflow-hidden", children: c })
52
75
  ] })
53
76
  ] })
54
77
  ]
55
78
  }
56
79
  ) }), M = ({
57
- items: l,
58
- activeTab: a,
59
- onTabChange: i,
80
+ items: n,
81
+ activeTab: r,
82
+ onTabChange: l,
60
83
  className: c
61
84
  }) => {
62
- const { t: s } = u();
63
- return /* @__PURE__ */ e("div", { "data-component": "filter-panel-sidebar", className: n("flex w-[200px] shrink-0 flex-col border-r bg-sidebar-light", c), children: /* @__PURE__ */ e("div", { className: "flex flex-1 flex-col py-2 gap-1 overflow-y-auto", children: l.map((r) => {
64
- const o = a === r.id;
65
- return /* @__PURE__ */ t(b.Fragment, { children: [
66
- r.separator && /* @__PURE__ */ e("div", { className: "my-2 h-px bg-gray-200" }),
67
- /* @__PURE__ */ t(
68
- "button",
69
- {
70
- onClick: () => i(r.id),
71
- "data-component": "filter-panel-sidebar-item",
72
- "data-active": o ? "true" : "false",
73
- "data-tab": r.id,
74
- className: n(
75
- "group flex items-center justify-between px-3 py-[6px] mx-2 rounded-lg text-left text-sm font-medium transition-colors",
76
- o ? "bg-active-blue text-primary" : "text-text-secondary hover:bg-active-blue"
77
- ),
78
- children: [
79
- /* @__PURE__ */ t("div", { className: "flex items-center gap-2 min-w-0 flex-1", children: [
80
- /* @__PURE__ */ e("span", { className: n(
81
- "shrink-0",
82
- o ? "text-primary" : "text-text-secondary"
83
- ), children: r.icon }),
84
- /* @__PURE__ */ t("div", { className: "flex items-center gap-1 min-w-0", children: [
85
- /* @__PURE__ */ t(d, { children: [
86
- /* @__PURE__ */ e(h, { asChild: !0, children: /* @__PURE__ */ e("span", { className: "truncate font-['Manrope']", children: r.label }) }),
87
- /* @__PURE__ */ e(f, { variant: "tertiary", side: "right", children: r.tooltipKeybinding ? /* @__PURE__ */ t("span", { className: "flex items-center gap-2", children: [
88
- r.label,
89
- " ",
90
- /* @__PURE__ */ e(k, { keybinding: r.tooltipKeybinding, size: "sm" })
91
- ] }) : r.label })
85
+ const { t: s } = v();
86
+ return /* @__PURE__ */ e(
87
+ "div",
88
+ {
89
+ "data-component": "filter-panel-sidebar",
90
+ className: i(
91
+ "flex w-[200px] shrink-0 flex-col border-r bg-navigation-canvas",
92
+ c
93
+ ),
94
+ children: /* @__PURE__ */ e("div", { className: "flex flex-1 flex-col py-2 gap-1 overflow-y-auto", children: n.map((a) => {
95
+ const o = r === a.id;
96
+ return /* @__PURE__ */ t(u.Fragment, { children: [
97
+ a.separator && /* @__PURE__ */ e("div", { className: "my-2 h-px bg-stroke-hairline" }),
98
+ /* @__PURE__ */ t(
99
+ "button",
100
+ {
101
+ onClick: () => l(a.id),
102
+ "data-component": "filter-panel-sidebar-item",
103
+ "data-active": o ? "true" : "false",
104
+ "data-tab": a.id,
105
+ className: i(
106
+ "group flex items-center justify-between px-3 py-[6px] mx-2 rounded-lg text-left text-sm font-medium transition-colors",
107
+ o ? "bg-canvas-accent text-brand" : "text-content-secondary hover:bg-canvas-accent"
108
+ ),
109
+ children: [
110
+ /* @__PURE__ */ t("div", { className: "flex items-center gap-2 min-w-0 flex-1", children: [
111
+ /* @__PURE__ */ e(
112
+ "span",
113
+ {
114
+ className: i(
115
+ "shrink-0",
116
+ o ? "text-brand" : "text-content-secondary"
117
+ ),
118
+ children: a.icon
119
+ }
120
+ ),
121
+ /* @__PURE__ */ t("div", { className: "flex items-center gap-1 min-w-0", children: [
122
+ /* @__PURE__ */ t(d, { children: [
123
+ /* @__PURE__ */ e(h, { asChild: !0, children: /* @__PURE__ */ e("span", { className: "truncate font-['Manrope']", children: a.label }) }),
124
+ /* @__PURE__ */ e(f, { variant: "tertiary", side: "right", children: a.tooltipKeybinding ? /* @__PURE__ */ t("span", { className: "flex items-center gap-2", children: [
125
+ a.label,
126
+ " ",
127
+ /* @__PURE__ */ e(
128
+ P,
129
+ {
130
+ keybinding: a.tooltipKeybinding,
131
+ size: "sm"
132
+ }
133
+ )
134
+ ] }) : a.label })
135
+ ] }),
136
+ a.isRequired && /* @__PURE__ */ e("span", { className: "shrink-0 text-danger", children: "*" })
137
+ ] })
92
138
  ] }),
93
- r.isRequired && /* @__PURE__ */ e("span", { className: "shrink-0 text-error", children: "*" })
94
- ] })
95
- ] }),
96
- /* @__PURE__ */ t("div", { className: "flex items-center gap-1 shrink-0 ml-1", children: [
97
- r.count !== void 0 && r.count > 0 && /* @__PURE__ */ t(d, { children: [
98
- /* @__PURE__ */ e(h, { asChild: !0, children: /* @__PURE__ */ e("span", { className: n(
99
- "flex h-5 items-center justify-center rounded-full px-2 text-[11px]",
100
- o ? "bg-white text-[#4259ee] border border-gray-100" : "bg-white border border-gray-100"
101
- ), children: r.count }) }),
102
- /* @__PURE__ */ e(f, { variant: "tertiary", side: "top", children: s("filterPanel.filtersAppliedCount", { count: r.count }) })
103
- ] }),
104
- r.hasError && /* @__PURE__ */ t(d, { children: [
105
- /* @__PURE__ */ e(h, { asChild: !0, children: /* @__PURE__ */ e(m, { className: "h-4 w-4 text-error" }) }),
106
- /* @__PURE__ */ e(f, { variant: "tertiary", children: s("filterPanel.tabContainsErrors") })
107
- ] }),
108
- r.hasWarning && /* @__PURE__ */ t(d, { children: [
109
- /* @__PURE__ */ e(h, { asChild: !0, children: /* @__PURE__ */ e(m, { className: "h-4 w-4 text-warning" }) }),
110
- /* @__PURE__ */ e(f, { variant: "tertiary", children: s("filterPanel.tabHasWarnings") })
111
- ] }),
112
- r.hasInfo && /* @__PURE__ */ t(d, { children: [
113
- /* @__PURE__ */ e(h, { asChild: !0, children: /* @__PURE__ */ e(m, { className: "h-4 w-4 text-icon-gray" }) }),
114
- /* @__PURE__ */ e(f, { variant: "tertiary", children: s("filterPanel.additionalInfoAvailable") })
115
- ] })
116
- ] })
117
- ]
118
- }
119
- )
120
- ] }, r.id);
121
- }) }) });
122
- }, R = ({ children: l, className: a }) => /* @__PURE__ */ e("div", { "data-component": "filter-panel-body", className: n("flex flex-1 flex-col overflow-auto bg-white p-4", a), children: l }), W = ({ children: l, className: a, leftAction: i }) => /* @__PURE__ */ t("div", { "data-component": "filter-panel-footer", className: n("flex items-center justify-between border-t bg-white px-4 py-3 shrink-0", a), children: [
123
- /* @__PURE__ */ e("div", { children: i && i }),
124
- /* @__PURE__ */ e("div", { className: "flex items-center gap-3", children: l })
125
- ] });
139
+ /* @__PURE__ */ t("div", { className: "flex items-center gap-1 shrink-0 ml-1", children: [
140
+ a.count !== void 0 && a.count > 0 && /* @__PURE__ */ t(d, { children: [
141
+ /* @__PURE__ */ e(h, { asChild: !0, children: /* @__PURE__ */ e(
142
+ "span",
143
+ {
144
+ className: i(
145
+ "inline-flex h-5 min-w-5 items-center justify-center rounded-full px-1.5 text-[11px] font-medium tabular-nums leading-none shrink-0",
146
+ o ? "bg-canvas-elevated text-brand border border-stroke-subtle" : "bg-brand-tint border border-stroke-subtle"
147
+ ),
148
+ children: a.count
149
+ }
150
+ ) }),
151
+ /* @__PURE__ */ e(f, { variant: "tertiary", side: "top", children: s(
152
+ a.countBadgeContext === "savedFiltersTotal" ? "filterPanel.savedFiltersAvailableCount" : "filterPanel.filtersAppliedCount",
153
+ { count: a.count }
154
+ ) })
155
+ ] }),
156
+ a.hasError && /* @__PURE__ */ t(d, { children: [
157
+ /* @__PURE__ */ e(h, { asChild: !0, children: /* @__PURE__ */ e(m, { className: "h-5 w-5 shrink-0 text-danger" }) }),
158
+ /* @__PURE__ */ e(f, { variant: "tertiary", children: s("filterPanel.tabContainsErrors") })
159
+ ] }),
160
+ a.hasWarning && /* @__PURE__ */ t(d, { children: [
161
+ /* @__PURE__ */ e(h, { asChild: !0, children: /* @__PURE__ */ e(m, { className: "h-5 w-5 shrink-0 text-warning" }) }),
162
+ /* @__PURE__ */ e(f, { variant: "tertiary", children: s("filterPanel.tabHasWarnings") })
163
+ ] }),
164
+ a.hasInfo && /* @__PURE__ */ t(d, { children: [
165
+ /* @__PURE__ */ e(h, { asChild: !0, children: /* @__PURE__ */ e(m, { className: "h-5 w-5 shrink-0 text-content-icon" }) }),
166
+ /* @__PURE__ */ e(f, { variant: "tertiary", children: s("filterPanel.additionalInfoAvailable") })
167
+ ] })
168
+ ] })
169
+ ]
170
+ }
171
+ )
172
+ ] }, a.id);
173
+ }) })
174
+ }
175
+ );
176
+ }, R = ({ children: n, className: r }) => /* @__PURE__ */ e(
177
+ "div",
178
+ {
179
+ "data-component": "filter-panel-body",
180
+ className: i(
181
+ "flex flex-1 flex-col overflow-auto bg-canvas-elevated p-4",
182
+ r
183
+ ),
184
+ children: n
185
+ }
186
+ ), W = ({
187
+ children: n,
188
+ className: r,
189
+ leftAction: l
190
+ }) => /* @__PURE__ */ t(
191
+ "div",
192
+ {
193
+ "data-component": "filter-panel-footer",
194
+ className: i(
195
+ "flex items-center justify-between border-t bg-canvas-elevated px-4 py-3 shrink-0",
196
+ r
197
+ ),
198
+ children: [
199
+ /* @__PURE__ */ e("div", { children: l && l }),
200
+ /* @__PURE__ */ e("div", { className: "flex items-center gap-3", children: n })
201
+ ]
202
+ }
203
+ );
126
204
  export {
127
205
  H as FilterPanel,
128
206
  R as FilterPanelBody,
@@ -1,3 +1,3 @@
1
1
  import { FilterStripProps } from '../types/filter-strip.types';
2
- declare const FilterStrip: ({ filters, onFilterRemove, onAllFiltersClick, savedFilters, recentFilters, onApplySavedFilter, onSavedFilterSearch, onSavedFiltersScroll, onViewAll, onOverflowClick, selectedFilter, onSelectedFilterChange, onDropdownOpenChange, isLoadingFilterPreferencesList, isLoading, className, allFiltersKeybinding, }: FilterStripProps) => import("react/jsx-runtime").JSX.Element;
2
+ declare const FilterStrip: ({ filters, onFilterRemove, onAllFiltersClick, savedFilters, recentFilters, onApplySavedFilter, onSavedFilterSearch, onSavedFiltersScroll, onViewAll, onOverflowClick, selectedFilter, onSelectedFilterChange, onDropdownOpenChange, isLoadingFilterPreferencesList, isLoading, onEditSavedFilter, onDeleteSavedFilter, onSetDefaultSavedFilter, className, allFiltersKeybinding, }: FilterStripProps) => import("react/jsx-runtime").JSX.Element;
3
3
  export { FilterStrip };
@@ -1,101 +1,114 @@
1
1
  import { jsx as e, jsxs as i } from "react/jsx-runtime";
2
- import { ListFilter as u } from "lucide-react";
2
+ import { ListFilter as F } from "lucide-react";
3
3
  import { cn as l } from "../../../lib/utils.js";
4
- import { Button as S } from "../button.js";
4
+ import { Button as j } from "../button.js";
5
5
  import { Skeleton as t } from "../skeleton.js";
6
- import { FilterSummary as F } from "./filter-summary.js";
7
- import { FilterTagList as y } from "./filter-tag-list.js";
8
- import { useImpactNovaI18n as j } from "../../../i18n/ImpactNovaI18nContext.js";
9
- const q = ({
6
+ import { FilterSummary as I } from "./filter-summary.js";
7
+ import { FilterTagList as L } from "./filter-tag-list.js";
8
+ import { useImpactNovaI18n as A } from "../../../i18n/ImpactNovaI18nContext.js";
9
+ const E = ({
10
10
  filters: s,
11
- onFilterRemove: m,
12
- onAllFiltersClick: n,
11
+ onFilterRemove: n,
12
+ onAllFiltersClick: m,
13
13
  savedFilters: o,
14
14
  recentFilters: p,
15
15
  onApplySavedFilter: c,
16
- onSavedFilterSearch: f,
17
- onSavedFiltersScroll: h,
16
+ onSavedFilterSearch: h,
17
+ onSavedFiltersScroll: f,
18
18
  onViewAll: d,
19
- onOverflowClick: w,
20
- selectedFilter: x,
21
- onSelectedFilterChange: N,
19
+ onOverflowClick: x,
20
+ selectedFilter: N,
21
+ onSelectedFilterChange: w,
22
22
  onDropdownOpenChange: g,
23
23
  isLoadingFilterPreferencesList: v,
24
- isLoading: b,
24
+ isLoading: k,
25
+ onEditSavedFilter: b,
26
+ onDeleteSavedFilter: u,
27
+ onSetDefaultSavedFilter: S,
25
28
  className: a,
26
- allFiltersKeybinding: k
29
+ allFiltersKeybinding: y
27
30
  }) => {
28
- const { t: r } = j();
29
- return b ? /* @__PURE__ */ e(
31
+ const { t: r } = A();
32
+ return k ? /* @__PURE__ */ e(
30
33
  "div",
31
34
  {
32
35
  "data-component": "filter-strip",
33
36
  "data-loading": "true",
34
37
  className: l(
35
- "flex w-full h-12 items-center gap-3 bg-white px-6 py-2",
38
+ "flex w-full h-12 items-center gap-3 bg-canvas-elevated px-6 py-2",
36
39
  a
37
40
  ),
38
- children: /* @__PURE__ */ i("div", { className: "flex items-center gap-2 flex-1 min-w-0", "data-component": "filter-strip-loading", children: [
39
- /* @__PURE__ */ e("span", { className: "text-sm font-medium text-[#60697d] font-['Manrope'] shrink-0", children: r("filterStrip.filtersApplied") }),
40
- /* @__PURE__ */ e(t, { className: "h-6 w-20 shrink-0" }),
41
- /* @__PURE__ */ e("div", { className: "h-4 w-[1px] bg-[#e6e8f0] shrink-0" }),
42
- /* @__PURE__ */ i("div", { className: "flex items-center gap-2 flex-1 min-w-0", children: [
43
- /* @__PURE__ */ e(t, { className: "h-6 w-32" }),
44
- /* @__PURE__ */ e(t, { className: "h-6 w-28" }),
45
- /* @__PURE__ */ e(t, { className: "h-6 w-24" }),
46
- /* @__PURE__ */ e(t, { className: "h-6 w-36" }),
47
- /* @__PURE__ */ e(t, { className: "h-6 w-20" }),
48
- /* @__PURE__ */ e(t, { className: "h-6 w-30" })
49
- ] }),
50
- /* @__PURE__ */ e("div", { className: "h-4 w-[1px] bg-[#e6e8f0] shrink-0" }),
51
- /* @__PURE__ */ e(t, { className: "h-8 w-24 shrink-0" })
52
- ] })
41
+ children: /* @__PURE__ */ i(
42
+ "div",
43
+ {
44
+ className: "flex items-center gap-2 flex-1 min-w-0",
45
+ "data-component": "filter-strip-loading",
46
+ children: [
47
+ /* @__PURE__ */ e("span", { className: "text-sm font-medium text-content-tertiary font-['Manrope'] shrink-0", children: r("filterStrip.filtersApplied") }),
48
+ /* @__PURE__ */ e(t, { className: "h-6 w-20 shrink-0" }),
49
+ /* @__PURE__ */ e("div", { className: "h-4 w-[1px] bg-stroke-hairline shrink-0" }),
50
+ /* @__PURE__ */ i("div", { className: "flex items-center gap-2 flex-1 min-w-0", children: [
51
+ /* @__PURE__ */ e(t, { className: "h-6 w-32" }),
52
+ /* @__PURE__ */ e(t, { className: "h-6 w-28" }),
53
+ /* @__PURE__ */ e(t, { className: "h-6 w-24" }),
54
+ /* @__PURE__ */ e(t, { className: "h-6 w-36" }),
55
+ /* @__PURE__ */ e(t, { className: "h-6 w-20" }),
56
+ /* @__PURE__ */ e(t, { className: "h-6 w-30" })
57
+ ] }),
58
+ /* @__PURE__ */ e("div", { className: "h-4 w-[1px] bg-stroke-hairline shrink-0" }),
59
+ /* @__PURE__ */ e(t, { className: "h-8 w-24 shrink-0" })
60
+ ]
61
+ }
62
+ )
53
63
  }
54
64
  ) : /* @__PURE__ */ i(
55
65
  "div",
56
66
  {
57
67
  "data-component": "filter-strip",
58
68
  className: l(
59
- "flex w-full h-12 items-center gap-3 bg-white px-6 py-2",
69
+ "flex w-full h-12 items-center gap-3 bg-canvas-elevated px-6 py-2",
60
70
  a
61
71
  ),
62
72
  children: [
63
73
  /* @__PURE__ */ e(
64
- F,
74
+ I,
65
75
  {
66
- selectedFilter: x,
67
- onSelectedFilterChange: N,
76
+ selectedFilter: N,
77
+ onSelectedFilterChange: w,
68
78
  savedFilters: o,
69
79
  recentFilters: p,
70
80
  onApplySavedFilter: c,
71
- onSavedFilterSearch: f,
72
- onSavedFiltersScroll: h,
81
+ onSavedFilterSearch: h,
82
+ onSavedFiltersScroll: f,
73
83
  onDropdownOpenChange: g,
74
- isLoadingFilterPreferencesList: v
84
+ isLoadingFilterPreferencesList: v,
85
+ onEditSavedFilter: b,
86
+ onDeleteSavedFilter: u,
87
+ onSetDefaultSavedFilter: S
75
88
  }
76
89
  ),
77
- /* @__PURE__ */ e("div", { className: "h-4 w-[1px] bg-[#e6e8f0] mx-1 shrink-0" }),
90
+ /* @__PURE__ */ e("div", { className: "h-4 w-[1px] bg-stroke-hairline mx-1 shrink-0" }),
78
91
  /* @__PURE__ */ e(
79
- y,
92
+ L,
80
93
  {
81
94
  filters: s,
82
- onFilterRemove: m,
83
- onOverflowClick: w,
95
+ onFilterRemove: n,
96
+ onOverflowClick: x,
84
97
  onViewAll: d
85
98
  }
86
99
  ),
87
- /* @__PURE__ */ e("div", { className: "h-4 w-[1px] bg-[#e6e8f0] mx-1 shrink-0" }),
100
+ /* @__PURE__ */ e("div", { className: "h-4 w-[1px] bg-stroke-hairline mx-1 shrink-0" }),
88
101
  /* @__PURE__ */ i(
89
- S,
102
+ j,
90
103
  {
91
104
  variant: "tertiary",
92
- onClick: n,
105
+ onClick: m,
93
106
  "data-component": "filter-strip-all-filters",
94
107
  "aria-label": r("filterStrip.allFilters"),
95
108
  tooltipSide: "bottom",
96
- tooltipKeybinding: k,
109
+ tooltipKeybinding: y,
97
110
  children: [
98
- /* @__PURE__ */ e(u, { className: "h-4 w-4" }),
111
+ /* @__PURE__ */ e(F, { className: "h-4 w-4" }),
99
112
  r("filterStrip.allFilters")
100
113
  ]
101
114
  }
@@ -105,5 +118,5 @@ const q = ({
105
118
  );
106
119
  };
107
120
  export {
108
- q as FilterStrip
121
+ E as FilterStrip
109
122
  };
@@ -10,6 +10,9 @@ interface FilterSummaryProps {
10
10
  onSavedFiltersScroll?: (event: React.UIEvent<HTMLDivElement>) => void;
11
11
  onDropdownOpenChange?: (isOpen: boolean) => void;
12
12
  isLoadingFilterPreferencesList?: boolean;
13
+ onEditSavedFilter?: (filter: SavedFilterItem) => void;
14
+ onDeleteSavedFilter?: (filter: SavedFilterItem) => void;
15
+ onSetDefaultSavedFilter?: (filter: SavedFilterItem) => void;
13
16
  }
14
- declare const FilterSummary: ({ selectedFilter, onSelectedFilterChange, savedFilters, recentFilters, onApplySavedFilter, onSavedFilterSearch, onSavedFiltersScroll, onDropdownOpenChange, isLoadingFilterPreferencesList, }: FilterSummaryProps) => import("react/jsx-runtime").JSX.Element;
17
+ declare const FilterSummary: ({ selectedFilter, onSelectedFilterChange, savedFilters, recentFilters, onApplySavedFilter, onSavedFilterSearch, onSavedFiltersScroll, onDropdownOpenChange, isLoadingFilterPreferencesList, onEditSavedFilter, onDeleteSavedFilter, onSetDefaultSavedFilter, }: FilterSummaryProps) => import("react/jsx-runtime").JSX.Element;
15
18
  export { FilterSummary };