impact-nova 2.1.0-alpha.7 → 2.1.0-alpha.9

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 (108) hide show
  1. package/dist/components/data/ag-grid-react/ag-grid.types.d.ts +6 -0
  2. package/dist/components/data/ag-grid-react/build-ag-grid-theme.d.ts +3 -0
  3. package/dist/components/data/ag-grid-react/cell-renderers/editors/input-cell-editor.js +58 -58
  4. package/dist/components/data/ag-grid-react/column-indicator-sync-bus.d.ts +9 -0
  5. package/dist/components/data/ag-grid-react/column-indicator-sync-bus.js +15 -0
  6. package/dist/components/data/ag-grid-react/headers/column-menu/column-settings-menu.js +78 -73
  7. package/dist/components/data/ag-grid-react/headers/custom-header.js +3 -1
  8. package/dist/components/data/ag-grid-react/headers/header-search-input.js +87 -91
  9. package/dist/components/data/ag-grid-react/index.d.ts +1 -1
  10. package/dist/components/data/ag-grid-react/index.js +109 -100
  11. package/dist/components/data/ag-grid-react/notify-column-indicator-sync.d.ts +3 -2
  12. package/dist/components/data/ag-grid-react/notify-column-indicator-sync.js +4 -3
  13. package/dist/components/data/ag-grid-react/sync-ag-grid-theme-mode.d.ts +3 -0
  14. package/dist/components/data/ag-grid-react/sync-ag-grid-theme-mode.js +10 -0
  15. package/dist/components/data/ag-grid-react/theme.d.ts +1 -0
  16. package/dist/components/data/ag-grid-react/theme.js +93 -21
  17. package/dist/components/data/data-table/column-indicator.d.ts +1 -1
  18. package/dist/components/data/data-table/column-indicator.js +15 -11
  19. package/dist/components/data/data-table/data-table-column-def-pin.d.ts +9 -4
  20. package/dist/components/data/data-table/data-table-column-def-pin.js +38 -38
  21. package/dist/components/data/data-table/data-table-saved-views.js +37 -37
  22. package/dist/components/data/data-table/data-table.js +78 -73
  23. package/dist/components/data/data-table/data-table.types.d.ts +7 -1
  24. package/dist/components/data/data-table/indicator-legend.d.ts +13 -2
  25. package/dist/components/data/data-table/indicator-legend.js +20 -17
  26. package/dist/components/data/data-table/pin-switch.js +9 -9
  27. package/dist/components/data/data-table/use-data-table-column-list-sync.js +92 -89
  28. package/dist/components/data/nested-list/nested-list-change-detection.d.ts +11 -0
  29. package/dist/components/data/nested-list/nested-list-change-detection.js +13 -0
  30. package/dist/components/data/nested-list/nested-list.js +107 -97
  31. package/dist/components/data-display/calendar/calendar.d.ts +1 -1
  32. package/dist/components/data-display/calendar/calendar.js +194 -189
  33. package/dist/components/data-display/chart/chart-palette.d.ts +16 -0
  34. package/dist/components/data-display/chart/chart-palette.js +28 -0
  35. package/dist/components/data-display/chart/chart.js +121 -115
  36. package/dist/components/data-display/chart/chart.utils.js +9 -6
  37. package/dist/components/data-display/chart/index.d.ts +1 -0
  38. package/dist/components/data-display/chart/index.js +15 -9
  39. package/dist/components/data-display/chart/resolve-highcharts-options.d.ts +3 -0
  40. package/dist/components/data-display/chart/resolve-highcharts-options.js +35 -0
  41. package/dist/components/data-display/statistics-card/statistics-card.color.d.ts +6 -0
  42. package/dist/components/data-display/statistics-card/statistics-card.color.js +19 -0
  43. package/dist/components/data-display/statistics-card/statistics-card.hooks.js +50 -48
  44. package/dist/components/data-display/statistics-card/statistics-card.js +127 -146
  45. package/dist/components/feedback/alert-dialog/alert-dialog.js +15 -15
  46. package/dist/components/feedback/dialog/dialog.js +3 -3
  47. package/dist/components/feedback/drawer/drawer.js +32 -32
  48. package/dist/components/feedback/sheet/sheet.js +8 -8
  49. package/dist/components/feedback/sheet/sheet.variants.js +1 -1
  50. package/dist/components/feedback/toast/toast.js +83 -92
  51. package/dist/components/flows/command-palette/command-palette-context.types.d.ts +5 -0
  52. package/dist/components/flows/command-palette/command-palette.d.ts +4 -16
  53. package/dist/components/flows/command-palette/command-palette.js +245 -258
  54. package/dist/components/flows/command-palette/command-palette.types.d.ts +9 -0
  55. package/dist/components/flows/command-palette/shortcut-overlay.js +6 -6
  56. package/dist/components/flows/filter-panel/filter-panel.d.ts +3 -2
  57. package/dist/components/flows/filter-panel/filter-panel.js +99 -104
  58. package/dist/components/flows/filter-strip/filter-summary.js +41 -41
  59. package/dist/components/flows/filter-strip/filter-tag-list.js +48 -48
  60. package/dist/components/flows/wizard/wizard.js +32 -32
  61. package/dist/components/forms/choice-card/choice-card.d.ts +2 -2
  62. package/dist/components/forms/choice-card/choice-card.js +156 -166
  63. package/dist/components/forms/combobox/combobox.js +70 -70
  64. package/dist/components/forms/date-picker/date-picker.js +31 -30
  65. package/dist/components/forms/file-upload/file-upload.js +146 -168
  66. package/dist/components/forms/prompt/prompt.js +47 -48
  67. package/dist/components/forms/select/components/SelectAllRow.js +14 -14
  68. package/dist/components/forms/select/components/SelectMenuFooter.js +12 -12
  69. package/dist/components/forms/select/components/SelectMenuHeader.js +44 -44
  70. package/dist/components/forms/select/components/SelectMenuListBody.js +22 -22
  71. package/dist/components/forms/select/components/SelectMenuPanel.js +8 -8
  72. package/dist/components/forms/select/components/SelectOptionRow.js +62 -62
  73. package/dist/components/forms/select/select.d.ts +5 -4
  74. package/dist/components/forms/select/select.js +123 -120
  75. package/dist/components/forms/select/select.types.d.ts +95 -204
  76. package/dist/components/forms/slider/slider.js +17 -17
  77. package/dist/components/forms/smart-input/smart-input.js +49 -49
  78. package/dist/components/forms/textarea/textarea.js +25 -25
  79. package/dist/components/layout/breadcrumb/breadcrumb.js +112 -118
  80. package/dist/components/layout/header/header.d.ts +5 -17
  81. package/dist/components/layout/header/header.js +113 -116
  82. package/dist/components/layout/header/header.types.d.ts +3 -0
  83. package/dist/components/layout/sidebar/sidebar.js +5 -5
  84. package/dist/components/layout/sidebar/sidebar.variants.js +1 -1
  85. package/dist/components/primitives/accordion/accordion.js +38 -41
  86. package/dist/components/primitives/kbd/kbd.variants.js +1 -1
  87. package/dist/i18n/defaultMessages.d.ts +2 -0
  88. package/dist/i18n/defaultMessages.js +6 -4
  89. package/dist/i18n/locales/de.js +2 -0
  90. package/dist/i18n/locales/es.js +2 -0
  91. package/dist/i18n/locales/hi.js +2 -0
  92. package/dist/i18n/locales/kn.js +2 -0
  93. package/dist/impact-nova-base.scss +8 -5
  94. package/dist/impact-nova-components.css +2 -2
  95. package/dist/impact-nova-tokens.scss +346 -189
  96. package/dist/impact-nova.css +1 -1
  97. package/dist/index.js +505 -499
  98. package/dist/lib/resolve-design-token-color.d.ts +5 -0
  99. package/dist/lib/resolve-design-token-color.js +12 -0
  100. package/dist/llms/rules/ag-grid.js +1 -1
  101. package/dist/llms/rules/installation.js +1 -1
  102. package/dist/llms/rules/requirements.js +1 -1
  103. package/dist/tailwind.config.js +297 -0
  104. package/dist/theme/tailwind-colors.js +199 -0
  105. package/dist/theme/tokens/chart-series-palette.json.d.ts +53 -0
  106. package/dist/theme/tokens/chart-series-palette.json.js +7 -0
  107. package/package.json +32 -259
  108. package/tailwind.config.js +0 -335
@@ -1,5 +1,6 @@
1
1
  import { CommandDefinition, KeyBinding } from './utils';
2
2
  import type * as React from "react";
3
+ /** Localized strings for the command palette chrome. */
3
4
  export interface CommandPaletteLabels {
4
5
  /** Placeholder text for the search input */
5
6
  placeholder?: string;
@@ -20,6 +21,10 @@ export interface CommandPaletteLabels {
20
21
  /** Label for the configure shortcuts hint in the footer */
21
22
  configureShortcutsLabel?: string;
22
23
  }
24
+ /**
25
+ * Command palette dialog — search, grouped commands, keyboard navigation.
26
+ * Requires `CommandPaletteProvider` at app root.
27
+ */
23
28
  export interface CommandPaletteProps extends CommandPaletteLabels {
24
29
  className?: string;
25
30
  children?: React.ReactNode;
@@ -30,18 +35,22 @@ export interface CommandPaletteProps extends CommandPaletteLabels {
30
35
  /** Called when the palette opens/closes */
31
36
  onOpenChange?: (open: boolean) => void;
32
37
  }
38
+ /** Search input inside the palette — use `onValueChange` for controlled query. */
33
39
  export interface CommandPaletteInputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, "onChange"> {
34
40
  onValueChange?: (value: string) => void;
35
41
  }
42
+ /** Group heading + command items. */
36
43
  export interface CommandPaletteGroupProps extends React.HTMLAttributes<HTMLDivElement> {
37
44
  heading?: string;
38
45
  }
46
+ /** Single command row — pass `command` from registry or custom list. */
39
47
  export interface CommandPaletteItemProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "onSelect"> {
40
48
  command: CommandDefinition;
41
49
  isSelected?: boolean;
42
50
  onSelect?: () => void;
43
51
  keybinding?: KeyBinding;
44
52
  }
53
+ /** Renders a shortcut key chord (pairs with `Kbd`). */
45
54
  export interface CommandPaletteShortcutProps extends React.HTMLAttributes<HTMLSpanElement> {
46
55
  keybinding: KeyBinding;
47
56
  isSelected?: boolean;
@@ -60,8 +60,8 @@ function F() {
60
60
  i.forEach((m) => {
61
61
  const w = m.getAttribute("data-shortcut-id");
62
62
  if (!w || n && !n.contains(m)) return;
63
- const b = window.getComputedStyle(m);
64
- if (b.display === "none" || b.visibility === "hidden" || b.opacity === "0")
63
+ const g = window.getComputedStyle(m);
64
+ if (g.display === "none" || g.visibility === "hidden" || g.opacity === "0")
65
65
  return;
66
66
  const l = m.getBoundingClientRect();
67
67
  if (l.width === 0 || l.height === 0 || l.bottom < 0 || l.top > window.innerHeight || l.right < 0 || l.left > window.innerWidth)
@@ -69,11 +69,11 @@ function F() {
69
69
  const k = f(w);
70
70
  if (!k) return;
71
71
  const A = l.left + l.width / 2;
72
- let E = "above", g = l.top - u - s;
73
- g < s && (E = "below", g = l.bottom + s), r.push({
72
+ let E = "above", b = l.top - u - s;
73
+ b < s && (E = "below", b = l.bottom + s), r.push({
74
74
  id: w,
75
75
  keybinding: k,
76
- top: g,
76
+ top: b,
77
77
  left: A,
78
78
  placement: E
79
79
  });
@@ -105,7 +105,7 @@ function F() {
105
105
  /* @__PURE__ */ v(
106
106
  "div",
107
107
  {
108
- className: "fixed inset-0 z-[99998] cursor-default bg-black/[0.06]",
108
+ className: "fixed inset-0 z-[99998] cursor-default bg-scrim-light",
109
109
  "data-shortcut-overlay-backdrop": "",
110
110
  onClick: () => a(!1)
111
111
  }
@@ -1,7 +1,8 @@
1
- import { FilterPanelHeaderProps, FilterPanelProps, FilterPanelSidebarProps, FilterPanelBodyProps, FilterPanelFooterProps } from './filter-panel.types';
1
+ import { default as React } from 'react';
2
+ import { FilterPanelHeaderProps, FilterPanelProps, FilterPanelSidebarProps, FilterPanelFooterProps } from './filter-panel.types';
2
3
  declare const FilterPanelHeader: ({ title, children, className, }: FilterPanelHeaderProps) => import("react/jsx-runtime").JSX.Element;
3
4
  declare const FilterPanel: ({ open, onOpenChange, title, children, header, sidebar, className, preventClose, }: FilterPanelProps) => import("react/jsx-runtime").JSX.Element;
4
5
  declare const FilterPanelSidebar: ({ items, activeTab, onTabChange, className, }: FilterPanelSidebarProps) => import("react/jsx-runtime").JSX.Element;
5
- declare const FilterPanelBody: ({ children, className }: FilterPanelBodyProps) => import("react/jsx-runtime").JSX.Element;
6
+ declare const FilterPanelBody: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
6
7
  declare const FilterPanelFooter: ({ children, className, leftAction, }: FilterPanelFooterProps) => import("react/jsx-runtime").JSX.Element;
7
8
  export { FilterPanel, FilterPanelHeader, FilterPanelSidebar, FilterPanelBody, FilterPanelFooter, };
@@ -1,71 +1,72 @@
1
- import { jsx as e, jsxs as a } from "react/jsx-runtime";
1
+ import { jsx as e, jsxs as t } from "react/jsx-runtime";
2
2
  import b from "react";
3
3
  import { Sheet as v, SheetContent as g, SheetDescription as N, SheetTitle as y, SheetClose as w } from "../../feedback/sheet/sheet.js";
4
- import { cn as i } from "../../../lib/utils.js";
5
- import { MultiColorFilter as k, Cross as C, InfoBadge as m } from "impact-nova-icons";
6
- import { Button as F } from "../../primitives/button/button.js";
4
+ import { createCompoundPart as k } from "../../../lib/primitives/create-compound.js";
5
+ import { cn as o } from "../../../lib/utils.js";
6
+ import { MultiColorFilter as C, Cross as F, InfoBadge as m } from "impact-nova-icons";
7
+ import { Button as P } from "../../primitives/button/button.js";
7
8
  import { Tooltip as d, TooltipTrigger as h, TooltipContent as f } from "../../feedback/tooltip/tooltip.js";
8
- import { Kbd as P } from "../../primitives/kbd/kbd.js";
9
+ import { Kbd as I } from "../../primitives/kbd/kbd.js";
9
10
  import { useImpactNovaI18n as u } from "../../../i18n/use-impact-nova-i18n.js";
10
- const I = ({
11
- title: n,
12
- children: r,
13
- className: l
11
+ const j = ({
12
+ title: r,
13
+ children: l,
14
+ className: n
14
15
  }) => {
15
16
  const { t: c } = u();
16
- return /* @__PURE__ */ a(
17
+ return /* @__PURE__ */ t(
17
18
  "div",
18
19
  {
19
20
  "data-component": "filter-panel-header",
20
- className: i(
21
+ className: o(
21
22
  "flex shrink-0 flex-row items-center justify-between border-b px-4 py-[9px] bg-canvas-elevated",
22
- l
23
+ n
23
24
  ),
24
25
  children: [
25
- /* @__PURE__ */ a("div", { className: "flex items-center gap-3", children: [
26
+ /* @__PURE__ */ t("div", { className: "flex items-center gap-3", children: [
26
27
  /* @__PURE__ */ e(
27
28
  "div",
28
29
  {
29
- className: "flex size-8 shrink-0 items-center justify-center rounded-md border border-brand-tint bg-white",
30
+ className: "flex size-8 shrink-0 items-center justify-center rounded-md border border-brand-tint bg-canvas-elevated",
30
31
  "aria-hidden": !0,
31
- children: /* @__PURE__ */ e(k, { className: "size-5 shrink-0" })
32
+ children: /* @__PURE__ */ e(C, { className: "size-5 shrink-0" })
32
33
  }
33
34
  ),
34
- /* @__PURE__ */ e(y, { className: "text-lg font-bold text-content", children: n })
35
+ /* @__PURE__ */ e(y, { className: "text-lg font-bold text-content", children: r })
35
36
  ] }),
36
- /* @__PURE__ */ a("div", { className: "flex items-center gap-2", children: [
37
- r,
37
+ /* @__PURE__ */ t("div", { className: "flex items-center gap-2", children: [
38
+ l,
38
39
  /* @__PURE__ */ e(w, { asChild: !0, children: /* @__PURE__ */ e(
39
- F,
40
+ P,
40
41
  {
41
42
  variant: "secondary",
42
43
  size: "icon",
43
44
  tabIndex: -1,
44
45
  "aria-label": c("aria.close"),
45
46
  "data-component": "filter-panel-close",
46
- children: /* @__PURE__ */ e(C, { className: "h-3 w-3" })
47
+ children: /* @__PURE__ */ e(F, { className: "h-3 w-3" })
47
48
  }
48
49
  ) })
49
50
  ] })
50
51
  ]
51
52
  }
52
53
  );
53
- }, H = ({
54
- open: n,
55
- onOpenChange: r,
56
- title: l = "Filter panel",
54
+ }, R = ({
55
+ open: r,
56
+ onOpenChange: l,
57
+ title: n = "Filter panel",
57
58
  children: c,
58
- header: s,
59
- sidebar: t,
60
- className: o,
59
+ header: i,
60
+ sidebar: a,
61
+ className: s,
61
62
  preventClose: x = !1
62
- }) => /* @__PURE__ */ e(v, { open: n, onOpenChange: r, children: /* @__PURE__ */ a(
63
+ }) => /* @__PURE__ */ e(v, { open: r, onOpenChange: l, children: /* @__PURE__ */ t(
63
64
  g,
64
65
  {
65
66
  side: "right",
66
- className: i(
67
+ className: o(
67
68
  "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",
68
- o
69
+ s
69
70
  ),
70
71
  onInteractOutside: (p) => {
71
72
  x && p.preventDefault();
@@ -75,147 +76,141 @@ const I = ({
75
76
  },
76
77
  children: [
77
78
  /* @__PURE__ */ e(N, { className: "sr-only", children: "Select filters to apply to the current view." }),
78
- /* @__PURE__ */ a("div", { className: "flex h-full flex-col bg-canvas-elevated", "data-component": "filter-panel", children: [
79
- s || /* @__PURE__ */ e(I, { title: l }),
80
- /* @__PURE__ */ a("div", { className: "flex flex-1 overflow-hidden", children: [
81
- t,
79
+ /* @__PURE__ */ t("div", { className: "flex h-full flex-col bg-canvas-elevated", "data-component": "filter-panel", children: [
80
+ i || /* @__PURE__ */ e(j, { title: n }),
81
+ /* @__PURE__ */ t("div", { className: "flex flex-1 overflow-hidden", children: [
82
+ a,
82
83
  /* @__PURE__ */ e("div", { className: "flex flex-col flex-1 overflow-hidden", children: c })
83
84
  ] })
84
85
  ] })
85
86
  ]
86
87
  }
87
- ) }), M = ({
88
- items: n,
89
- activeTab: r,
90
- onTabChange: l,
88
+ ) }), W = ({
89
+ items: r,
90
+ activeTab: l,
91
+ onTabChange: n,
91
92
  className: c
92
93
  }) => {
93
- const { t: s } = u();
94
+ const { t: i } = u();
94
95
  return /* @__PURE__ */ e(
95
96
  "div",
96
97
  {
97
98
  "data-component": "filter-panel-sidebar",
98
- className: i(
99
+ className: o(
99
100
  "flex w-[200px] shrink-0 flex-col border-r bg-navigation-canvas",
100
101
  c
101
102
  ),
102
- children: /* @__PURE__ */ e("div", { className: "flex flex-1 flex-col py-2 gap-1 overflow-y-auto", children: n.map((t) => {
103
- const o = r === t.id;
104
- return /* @__PURE__ */ a(b.Fragment, { children: [
105
- t.separator && /* @__PURE__ */ e("div", { className: "my-2 h-px bg-stroke-hairline" }),
106
- /* @__PURE__ */ a(
103
+ children: /* @__PURE__ */ e("div", { className: "flex flex-1 flex-col py-2 gap-1 overflow-y-auto", children: r.map((a) => {
104
+ const s = l === a.id;
105
+ return /* @__PURE__ */ t(b.Fragment, { children: [
106
+ a.separator && /* @__PURE__ */ e("div", { className: "my-2 h-px bg-stroke-hairline" }),
107
+ /* @__PURE__ */ t(
107
108
  "button",
108
109
  {
109
110
  type: "button",
110
- autoFocus: o,
111
- onClick: () => l(t.id),
111
+ autoFocus: s,
112
+ onClick: () => n(a.id),
112
113
  "data-component": "filter-panel-sidebar-item",
113
- "data-active": o ? "true" : "false",
114
- "data-tab": t.id,
115
- "data-shortcut-id": t.shortcutId,
116
- className: i(
114
+ "data-active": s ? "true" : "false",
115
+ "data-tab": a.id,
116
+ "data-shortcut-id": a.shortcutId,
117
+ className: o(
117
118
  "group flex items-center justify-between px-3 py-[6px] mx-2 rounded-lg text-left text-sm font-medium transition-colors",
118
- o ? "bg-canvas-accent text-brand" : "text-content-secondary hover:bg-canvas-accent"
119
+ s ? "bg-canvas-accent text-brand" : "text-content-secondary hover:bg-canvas-accent"
119
120
  ),
120
121
  children: [
121
- /* @__PURE__ */ a("div", { className: "flex items-center gap-2 min-w-0 flex-1", children: [
122
+ /* @__PURE__ */ t("div", { className: "flex items-center gap-2 min-w-0 flex-1", children: [
122
123
  /* @__PURE__ */ e(
123
124
  "span",
124
125
  {
125
- className: i(
126
+ className: o(
126
127
  "shrink-0",
127
- o ? "text-brand" : "text-content-secondary"
128
+ s ? "text-brand" : "text-content-secondary"
128
129
  ),
129
- children: t.icon
130
+ children: a.icon
130
131
  }
131
132
  ),
132
- /* @__PURE__ */ a("div", { className: "flex items-center gap-1 min-w-0", children: [
133
- /* @__PURE__ */ a(d, { children: [
134
- /* @__PURE__ */ e(h, { asChild: !0, children: /* @__PURE__ */ e("span", { className: "truncate font-['Manrope']", children: t.label }) }),
135
- /* @__PURE__ */ e(f, { variant: "tertiary", side: "right", children: t.tooltipKeybinding ? /* @__PURE__ */ a("span", { className: "flex items-center gap-2", children: [
136
- t.label,
133
+ /* @__PURE__ */ t("div", { className: "flex items-center gap-1 min-w-0", children: [
134
+ /* @__PURE__ */ t(d, { children: [
135
+ /* @__PURE__ */ e(h, { asChild: !0, children: /* @__PURE__ */ e("span", { className: "truncate font-['Manrope']", children: a.label }) }),
136
+ /* @__PURE__ */ e(f, { variant: "tertiary", side: "right", children: a.tooltipKeybinding ? /* @__PURE__ */ t("span", { className: "flex items-center gap-2", children: [
137
+ a.label,
137
138
  " ",
138
139
  /* @__PURE__ */ e(
139
- P,
140
+ I,
140
141
  {
141
- keybinding: t.tooltipKeybinding,
142
+ keybinding: a.tooltipKeybinding,
142
143
  size: "sm"
143
144
  }
144
145
  )
145
- ] }) : t.label })
146
+ ] }) : a.label })
146
147
  ] }),
147
- t.isRequired && /* @__PURE__ */ e("span", { className: "shrink-0 text-danger", children: "*" })
148
+ a.isRequired && /* @__PURE__ */ e("span", { className: "shrink-0 text-danger", children: "*" })
148
149
  ] })
149
150
  ] }),
150
- /* @__PURE__ */ a("div", { className: "flex items-center gap-1 shrink-0 ml-1", children: [
151
- t.count !== void 0 && t.count > 0 && /* @__PURE__ */ a(d, { children: [
151
+ /* @__PURE__ */ t("div", { className: "flex items-center gap-1 shrink-0 ml-1", children: [
152
+ a.count !== void 0 && a.count > 0 && /* @__PURE__ */ t(d, { children: [
152
153
  /* @__PURE__ */ e(h, { asChild: !0, children: /* @__PURE__ */ e(
153
154
  "span",
154
155
  {
155
- className: i(
156
+ className: o(
156
157
  "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",
157
- o ? "bg-canvas-elevated text-brand border border-stroke-subtle" : "bg-brand-tint border border-stroke-subtle"
158
+ s ? "bg-canvas-elevated text-brand border border-stroke-subtle" : "bg-brand-tint border border-stroke-subtle"
158
159
  ),
159
- children: t.count
160
+ children: a.count
160
161
  }
161
162
  ) }),
162
- /* @__PURE__ */ e(f, { variant: "tertiary", side: "top", children: s(
163
- t.countBadgeContext === "savedFiltersTotal" ? "filterPanel.savedFiltersAvailableCount" : "filterPanel.filtersAppliedCount",
164
- { count: t.count }
163
+ /* @__PURE__ */ e(f, { variant: "tertiary", side: "top", children: i(
164
+ a.countBadgeContext === "savedFiltersTotal" ? "filterPanel.savedFiltersAvailableCount" : "filterPanel.filtersAppliedCount",
165
+ { count: a.count }
165
166
  ) })
166
167
  ] }),
167
- t.hasError && /* @__PURE__ */ a(d, { children: [
168
+ a.hasError && /* @__PURE__ */ t(d, { children: [
168
169
  /* @__PURE__ */ e(h, { asChild: !0, children: /* @__PURE__ */ e(m, { className: "h-5 w-5 shrink-0 text-danger" }) }),
169
- /* @__PURE__ */ e(f, { variant: "tertiary", children: s("filterPanel.tabContainsErrors") })
170
+ /* @__PURE__ */ e(f, { variant: "tertiary", children: i("filterPanel.tabContainsErrors") })
170
171
  ] }),
171
- t.hasWarning && /* @__PURE__ */ a(d, { children: [
172
+ a.hasWarning && /* @__PURE__ */ t(d, { children: [
172
173
  /* @__PURE__ */ e(h, { asChild: !0, children: /* @__PURE__ */ e(m, { className: "h-5 w-5 shrink-0 text-warning" }) }),
173
- /* @__PURE__ */ e(f, { variant: "tertiary", children: s("filterPanel.tabHasWarnings") })
174
+ /* @__PURE__ */ e(f, { variant: "tertiary", children: i("filterPanel.tabHasWarnings") })
174
175
  ] }),
175
- t.hasInfo && /* @__PURE__ */ a(d, { children: [
176
+ a.hasInfo && /* @__PURE__ */ t(d, { children: [
176
177
  /* @__PURE__ */ e(h, { asChild: !0, children: /* @__PURE__ */ e(m, { className: "h-5 w-5 shrink-0 text-content-icon" }) }),
177
- /* @__PURE__ */ e(f, { variant: "tertiary", children: s("filterPanel.additionalInfoAvailable") })
178
+ /* @__PURE__ */ e(f, { variant: "tertiary", children: i("filterPanel.additionalInfoAvailable") })
178
179
  ] })
179
180
  ] })
180
181
  ]
181
182
  }
182
183
  )
183
- ] }, t.id);
184
+ ] }, a.id);
184
185
  }) })
185
186
  }
186
187
  );
187
- }, R = ({ children: n, className: r }) => /* @__PURE__ */ e(
188
- "div",
189
- {
190
- "data-component": "filter-panel-body",
191
- className: i(
192
- "flex flex-1 flex-col overflow-auto bg-canvas-elevated p-4",
193
- r
194
- ),
195
- children: n
196
- }
197
- ), W = ({
198
- children: n,
199
- className: r,
200
- leftAction: l
201
- }) => /* @__PURE__ */ a(
188
+ }, _ = k("filter-panel", {
189
+ part: "body",
190
+ displayName: "FilterPanelBody",
191
+ className: "flex flex-1 flex-col overflow-auto bg-canvas-elevated p-4"
192
+ }), q = ({
193
+ children: r,
194
+ className: l,
195
+ leftAction: n
196
+ }) => /* @__PURE__ */ t(
202
197
  "div",
203
198
  {
204
199
  "data-component": "filter-panel-footer",
205
- className: i(
200
+ className: o(
206
201
  "flex items-center justify-between border-t bg-canvas-elevated px-4 py-3 shrink-0",
207
- r
202
+ l
208
203
  ),
209
204
  children: [
210
- /* @__PURE__ */ e("div", { children: l && l }),
211
- /* @__PURE__ */ e("div", { className: "flex items-center gap-3", children: n })
205
+ /* @__PURE__ */ e("div", { children: n && n }),
206
+ /* @__PURE__ */ e("div", { className: "flex items-center gap-3", children: r })
212
207
  ]
213
208
  }
214
209
  );
215
210
  export {
216
- H as FilterPanel,
217
- R as FilterPanelBody,
218
- W as FilterPanelFooter,
219
- I as FilterPanelHeader,
220
- M as FilterPanelSidebar
211
+ R as FilterPanel,
212
+ _ as FilterPanelBody,
213
+ q as FilterPanelFooter,
214
+ j as FilterPanelHeader,
215
+ W as FilterPanelSidebar
221
216
  };
@@ -13,56 +13,56 @@ import { Badge as ue } from "../../data-display/badge/badge.js";
13
13
  import { Skeleton as fe } from "../../data-display/skeleton/skeleton.js";
14
14
  const Ie = ({
15
15
  selectedFilter: u,
16
- onSelectedFilterChange: _,
16
+ onSelectedFilterChange: B,
17
17
  savedFilters: C,
18
18
  recentFilters: S,
19
- onApplySavedFilter: B,
19
+ onApplySavedFilter: z,
20
20
  onSavedFilterSearch: N,
21
- onSavedFiltersScroll: z,
22
- onDropdownOpenChange: E,
23
- isLoadingFilterPreferencesList: R = !1,
21
+ onSavedFiltersScroll: E,
22
+ onDropdownOpenChange: R,
23
+ isLoadingFilterPreferencesList: U = !1,
24
24
  onEditSavedFilter: k,
25
25
  onDeleteSavedFilter: I,
26
26
  onSetDefaultSavedFilter: P
27
27
  }) => {
28
- const { t: n } = le(), [b, T] = l.useState(!1), [O, G] = l.useState(null), [A, U] = l.useState(null);
28
+ const { t: n } = le(), [b, T] = l.useState(!1), [O, G] = l.useState(null), [A, V] = l.useState(null);
29
29
  l.useEffect(() => {
30
30
  const a = C?.find((d) => d.isDefault);
31
- a && a.id !== A && U(a.id);
31
+ a && a.id !== A && V(a.id);
32
32
  }, [C, A]);
33
- const V = (a) => {
34
- T(a), E?.(a);
35
- }, [D, Y] = l.useState(""), [x, q] = l.useState(""), [c, H] = l.useState("All"), [p, j] = l.useState(null);
33
+ const Y = (a) => {
34
+ T(a), R?.(a);
35
+ }, [D, q] = l.useState(""), [g, H] = l.useState(""), [c, J] = l.useState("All"), [p, j] = l.useState(null);
36
36
  l.useEffect(() => {
37
37
  const a = setTimeout(() => {
38
- q(D);
38
+ H(D);
39
39
  }, 300);
40
40
  return () => clearTimeout(a);
41
41
  }, [D]), l.useEffect(() => {
42
42
  N && N(
43
- x,
43
+ g,
44
44
  c === "All" ? void 0 : c
45
45
  );
46
- }, [x, c, N]), l.useEffect(() => {
46
+ }, [g, c, N]), l.useEffect(() => {
47
47
  b && j(u != null ? { label: u } : null);
48
48
  }, [b, u]);
49
- const J = (a) => {
50
- Y(a.target.value);
51
- }, K = () => {
52
- p && (_?.(p.label), p.savedItem && B?.(p.savedItem), T(!1));
49
+ const K = (a) => {
50
+ q(a.target.value);
53
51
  }, W = () => {
52
+ p && (B?.(p.label), p.savedItem && z?.(p.savedItem), T(!1));
53
+ }, X = () => {
54
54
  T(!1);
55
- }, X = () => !S || S.length === 0 ? null : /* @__PURE__ */ r("div", { className: "flex flex-col", children: [
55
+ }, Z = () => !S || S.length === 0 ? null : /* @__PURE__ */ r("div", { className: "flex flex-col", children: [
56
56
  /* @__PURE__ */ e("div", { className: "px-1 py-[6px] text-xs font-medium text-secondary-foreground font-['Manrope']", children: "Recent" }),
57
57
  /* @__PURE__ */ e("div", { className: "mb-[6px] flex flex-col", children: S.map((a, d) => {
58
- const o = a.map((w) => w.label).join(", "), g = p?.label === o;
58
+ const o = a.map((w) => w.label).join(", "), x = p?.label === o;
59
59
  return /* @__PURE__ */ e(
60
60
  "button",
61
61
  {
62
62
  type: "button",
63
63
  className: s(
64
64
  "flex cursor-pointer flex-row px-3 py-2 rounded-lg hover:bg-secondary w-full text-start bg-transparent border-none",
65
- g && "bg-accent"
65
+ x && "bg-accent"
66
66
  ),
67
67
  onClick: () => j({ label: o }),
68
68
  children: /* @__PURE__ */ r(f, { children: [
@@ -74,17 +74,17 @@ const Ie = ({
74
74
  );
75
75
  }) }),
76
76
  /* @__PURE__ */ e(M, { className: "mb-2" })
77
- ] }), Z = () => {
78
- if (R)
77
+ ] }), _ = () => {
78
+ if (U)
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
80
  let a = C?.filter(
81
81
  (t) => c === "All" || t.type === c
82
82
  );
83
- if (!N && x && (a = a?.filter(
84
- (t) => t.label.toLowerCase().includes(x.toLowerCase())
83
+ if (!N && g && (a = a?.filter(
84
+ (t) => t.label.toLowerCase().includes(g.toLowerCase())
85
85
  )), !a || a.length === 0) {
86
86
  let t = "No saved filters found";
87
- if (!!x)
87
+ if (!!g)
88
88
  switch (c) {
89
89
  case "Personal":
90
90
  t = "No personal filters match your search";
@@ -108,7 +108,7 @@ const Ie = ({
108
108
  }
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-secondary-foreground font-['Manrope'] leading-relaxed", children: t }) });
110
110
  }
111
- const d = k || I || P, o = a.find((t) => t.isDefault), g = a.filter((t) => !t.isDefault), w = (t, y = !1) => {
111
+ const d = k || I || P, o = a.find((t) => t.isDefault), x = a.filter((t) => !t.isDefault), w = (t, y = !1) => {
112
112
  const L = p?.label === t.label, i = O === t.id;
113
113
  return /* @__PURE__ */ r(
114
114
  "button",
@@ -192,12 +192,12 @@ const Ie = ({
192
192
  onClick: (v) => {
193
193
  v.stopPropagation(), G(t.id), P(t), setTimeout(() => G(null), 1200);
194
194
  },
195
- children: i ? /* @__PURE__ */ e("div", { className: "h-3.5 w-3.5 animate-spin motion-reduce:animate-none rounded-full border-2 border-yellow-500 border-t-transparent" }) : /* @__PURE__ */ e(
195
+ children: i ? /* @__PURE__ */ e("div", { className: "h-3.5 w-3.5 animate-spin motion-reduce:animate-none rounded-full border-2 border-warning border-t-transparent" }) : /* @__PURE__ */ e(
196
196
  ne,
197
197
  {
198
198
  className: s(
199
199
  "h-3.5 w-3.5 transition-all duration-300",
200
- t.isDefault ? "fill-yellow-500 text-yellow-500" : "text-secondary-foreground"
200
+ t.isDefault ? "fill-warning text-warning" : "text-secondary-foreground"
201
201
  )
202
202
  }
203
203
  )
@@ -221,17 +221,17 @@ const Ie = ({
221
221
  ),
222
222
  children: [
223
223
  w(o, !0),
224
- g.length > 0 && /* @__PURE__ */ e(M, { className: "my-1" })
224
+ x.length > 0 && /* @__PURE__ */ e(M, { className: "my-1" })
225
225
  ]
226
226
  },
227
227
  `default-${o.id}`
228
228
  ),
229
- g.length > 0 && /* @__PURE__ */ e(
229
+ x.length > 0 && /* @__PURE__ */ e(
230
230
  "div",
231
231
  {
232
232
  className: "flex max-h-[160px] flex-col overflow-y-auto",
233
- onScroll: z,
234
- children: g.map((t) => /* @__PURE__ */ e(
233
+ onScroll: E,
234
+ children: x.map((t) => /* @__PURE__ */ e(
235
235
  "div",
236
236
  {
237
237
  className: s(
@@ -246,7 +246,7 @@ const Ie = ({
246
246
  )
247
247
  ] });
248
248
  }, F = p?.label !== u;
249
- return /* @__PURE__ */ r(ie, { open: b, onOpenChange: V, children: [
249
+ return /* @__PURE__ */ r(ie, { open: b, onOpenChange: Y, children: [
250
250
  /* @__PURE__ */ e(oe, { asChild: !0, children: /* @__PURE__ */ r(
251
251
  "button",
252
252
  {
@@ -286,21 +286,21 @@ const Ie = ({
286
286
  se,
287
287
  {
288
288
  align: "start",
289
- className: "w-[280px] p-0 shadow-[0_0_4px_0_rgba(0,0,0,0.12)] overflow-visible",
289
+ className: "w-[280px] p-0 shadow-elevation-floating overflow-visible",
290
290
  sideOffset: 8,
291
291
  onInteractOutside: (a) => {
292
292
  const d = a.target;
293
293
  (d.closest('[role="dialog"]') || d.closest("[data-radix-dialog-content]")) && a.preventDefault();
294
294
  },
295
295
  children: /* @__PURE__ */ r("div", { className: "flex w-full flex-col py-[8px] px-[6px]", children: [
296
- X(),
296
+ Z(),
297
297
  /* @__PURE__ */ r("div", { className: "flex flex-col", children: [
298
298
  /* @__PURE__ */ e("div", { className: "px-1 py-[6px] text-xs font-medium text-secondary-foreground font-['Manrope']", children: n("filterStrip.savedFilters") }),
299
299
  /* @__PURE__ */ r(
300
300
  ce,
301
301
  {
302
302
  value: c,
303
- onValueChange: (a) => H(a),
303
+ onValueChange: (a) => J(a),
304
304
  variant: "outline",
305
305
  size: "sm",
306
306
  className: "w-full px-1",
@@ -313,26 +313,26 @@ const Ie = ({
313
313
  /* @__PURE__ */ e("div", { className: "pb-[8px]", children: /* @__PURE__ */ e(
314
314
  pe,
315
315
  {
316
- prefix: /* @__PURE__ */ e(te, { className: "h-4 w-4 text-gray-500" }),
316
+ prefix: /* @__PURE__ */ e(te, { className: "h-4 w-4 text-content-secondary" }),
317
317
  placeholder: n("filterStrip.searchFiltersPlaceholder"),
318
318
  value: D,
319
- onChange: J,
319
+ onChange: K,
320
320
  className: "h-9 px-1 border-none shadow-none focus-visible:ring-0"
321
321
  }
322
322
  ) }),
323
- /* @__PURE__ */ e("div", { className: "mt-0", children: Z() })
323
+ /* @__PURE__ */ e("div", { className: "mt-0", children: _() })
324
324
  ]
325
325
  }
326
326
  )
327
327
  ] }),
328
328
  /* @__PURE__ */ e(M, { className: "my-2" }),
329
329
  /* @__PURE__ */ r("div", { className: "flex justify-end gap-2 px-3 pb-1", children: [
330
- /* @__PURE__ */ e(Q, { variant: "secondary", onClick: W, children: n("prompt.cancel") }),
330
+ /* @__PURE__ */ e(Q, { variant: "secondary", onClick: X, children: n("prompt.cancel") }),
331
331
  /* @__PURE__ */ e(
332
332
  Q,
333
333
  {
334
334
  variant: "default",
335
- onClick: K,
335
+ onClick: W,
336
336
  disabled: !F,
337
337
  children: n("filterStrip.applyFilter")
338
338
  }