impact-nova 1.7.6 → 1.7.8

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.
@@ -1,7 +1,7 @@
1
1
  import { jsxs as r, jsx as e, Fragment as j } from "react/jsx-runtime";
2
2
  import "react";
3
3
  import { Settings as F, Checkmark as h, Search as _ } from "../../../../../icons/index.js";
4
- import { DropdownMenu as E, DropdownMenuTrigger as G, DropdownMenuContent as L, DropdownMenuLabel as k, DropdownMenuSeparator as z, DropdownMenuSub as p, DropdownMenuSubTrigger as f, DropdownMenuSubContent as g, DropdownMenuItem as i } from "../../../dropdown-menu.js";
4
+ import { DropdownMenu as E, DropdownMenuTrigger as G, DropdownMenuContent as L, DropdownMenuLabel as k, DropdownMenuSeparator as z, DropdownMenuSub as p, DropdownMenuSubTrigger as f, DropdownMenuSubContent as g, DropdownMenuItem as a } from "../../../dropdown-menu.js";
5
5
  import { useGridHeader as R } from "../context/grid-header-context.js";
6
6
  import { useImpactNovaI18n as B } from "../../../../../i18n/ImpactNovaI18nContext.js";
7
7
  const U = ({
@@ -13,15 +13,14 @@ const U = ({
13
13
  }) => {
14
14
  const { t } = B(), C = R(), o = s.getColumn(l);
15
15
  if (!o) return null;
16
- const a = o.getColDef(), x = o.getSort(), S = o.getPinned(), M = a?.sortable !== !1, y = a?.filter || "agTextColumnFilter", H = y === "agNumberColumnFilter" || (Array.isArray(a?.type) ? a.type.includes("numericColumn") : a?.type === "numericColumn"), b = y === "agDateColumnFilter" || (Array.isArray(a?.type) ? a.type.includes("dateColumn") : a?.type === "dateColumn"), u = (n) => {
16
+ const i = o.getColDef(), x = o.getSort(), S = o.getPinned(), M = i?.sortable !== !1, y = i?.filter || "agTextColumnFilter", H = y === "agNumberColumnFilter" || (Array.isArray(i?.type) ? i.type.includes("numericColumn") : i?.type === "numericColumn"), b = y === "agDateColumnFilter" || (Array.isArray(i?.type) ? i.type.includes("dateColumn") : i?.type === "dateColumn"), m = (n) => {
17
17
  s.applyColumnState({
18
18
  state: [{ colId: l, sort: n }],
19
19
  defaultState: { sort: null }
20
20
  }), c();
21
- }, m = (n) => {
21
+ }, u = (n) => {
22
22
  s.applyColumnState({
23
- state: [{ colId: l, pinned: n }],
24
- defaultState: { pinned: null }
23
+ state: [{ colId: l, pinned: n }]
25
24
  }), c();
26
25
  }, w = (n) => {
27
26
  n ? s.autoSizeAllColumns() : s.autoSizeColumns([l]), c();
@@ -29,9 +28,9 @@ const U = ({
29
28
  const n = s.getGridOption("context") || {};
30
29
  s.setGridOption("context", { ...n, activeSearchColumnId: l }), s.refreshHeader(), c();
31
30
  }, T = () => {
32
- const n = a?.headerComponentParams;
31
+ const n = i?.headerComponentParams;
33
32
  n?.onAdvanceSearchClick ? n.onAdvanceSearchClick(o) : n?.toggleAdvanceSearch ? n.toggleAdvanceSearch(l) : C && C.openAdvancedFilter(l), c();
34
- }, d = A?.getBoundingClientRect(), D = a?.headerComponentParams, N = D?.isSearchable, v = D?.advanceSearchEnabled;
33
+ }, d = A?.getBoundingClientRect(), D = i?.headerComponentParams, N = D?.isSearchable, v = D?.advanceSearchEnabled;
35
34
  return /* @__PURE__ */ r(E, { open: O, onOpenChange: (n) => !n && c(), children: [
36
35
  d && /* @__PURE__ */ e(G, { asChild: !0, children: /* @__PURE__ */ e(
37
36
  "div",
@@ -65,36 +64,36 @@ const U = ({
65
64
  M && /* @__PURE__ */ r(p, { children: [
66
65
  /* @__PURE__ */ e(f, { inset: !0, children: t("gridHeader.sort") }),
67
66
  /* @__PURE__ */ r(g, { sideOffset: 10, alignOffset: -5, children: [
68
- /* @__PURE__ */ e(i, { onClick: () => u("asc"), children: /* @__PURE__ */ r("span", { className: "flex items-center w-full justify-between", children: [
67
+ /* @__PURE__ */ e(a, { onClick: () => m("asc"), children: /* @__PURE__ */ r("span", { className: "flex items-center w-full justify-between", children: [
69
68
  /* @__PURE__ */ e("span", { children: t(H ? "gridHeader.sortAscNumber" : b ? "gridHeader.sortAscDate" : "gridHeader.sortAscText") }),
70
69
  x === "asc" && /* @__PURE__ */ e(h, { size: "sm", className: "ml-2 text-content-tertiary" })
71
70
  ] }) }),
72
- /* @__PURE__ */ e(i, { onClick: () => u("desc"), children: /* @__PURE__ */ r("span", { className: "flex items-center w-full justify-between", children: [
71
+ /* @__PURE__ */ e(a, { onClick: () => m("desc"), children: /* @__PURE__ */ r("span", { className: "flex items-center w-full justify-between", children: [
73
72
  /* @__PURE__ */ e("span", { children: t(H ? "gridHeader.sortDescNumber" : b ? "gridHeader.sortDescDate" : "gridHeader.sortDescText") }),
74
73
  x === "desc" && /* @__PURE__ */ e(h, { size: "sm", className: "ml-2 text-content-tertiary" })
75
74
  ] }) }),
76
- /* @__PURE__ */ e(i, { onClick: () => u(null), children: /* @__PURE__ */ e("span", { children: t("gridHeader.reset") }) })
75
+ /* @__PURE__ */ e(a, { onClick: () => m(null), children: /* @__PURE__ */ e("span", { children: t("gridHeader.reset") }) })
77
76
  ] })
78
77
  ] }),
79
78
  /* @__PURE__ */ r(p, { children: [
80
79
  /* @__PURE__ */ e(f, { inset: !0, children: t("gridHeader.freezeColumn") }),
81
80
  /* @__PURE__ */ r(g, { className: "z-[120]", sideOffset: 10, alignOffset: -5, children: [
82
- /* @__PURE__ */ e(i, { onClick: () => m("left"), children: /* @__PURE__ */ r("span", { className: "flex items-center w-full justify-between", children: [
81
+ /* @__PURE__ */ e(a, { onClick: () => u("left"), children: /* @__PURE__ */ r("span", { className: "flex items-center w-full justify-between", children: [
83
82
  /* @__PURE__ */ e("span", { children: t("gridHeader.pinLeft") }),
84
83
  S === "left" && /* @__PURE__ */ e(h, { size: "sm", className: "ml-2 text-content-tertiary" })
85
84
  ] }) }),
86
- /* @__PURE__ */ e(i, { onClick: () => m("right"), children: /* @__PURE__ */ r("span", { className: "flex items-center w-full justify-between", children: [
85
+ /* @__PURE__ */ e(a, { onClick: () => u("right"), children: /* @__PURE__ */ r("span", { className: "flex items-center w-full justify-between", children: [
87
86
  /* @__PURE__ */ e("span", { children: t("gridHeader.pinRight") }),
88
87
  S === "right" && /* @__PURE__ */ e(h, { size: "sm", className: "ml-2 text-content-tertiary" })
89
88
  ] }) }),
90
- /* @__PURE__ */ e(i, { onClick: () => m(null), children: /* @__PURE__ */ e("span", { children: t("gridHeader.noPin") }) })
89
+ /* @__PURE__ */ e(a, { onClick: () => u(null), children: /* @__PURE__ */ e("span", { children: t("gridHeader.noPin") }) })
91
90
  ] })
92
91
  ] }),
93
92
  /* @__PURE__ */ r(p, { children: [
94
93
  /* @__PURE__ */ e(f, { inset: !0, children: t("gridHeader.columnWidth") }),
95
94
  /* @__PURE__ */ r(g, { className: "z-[120]", sideOffset: 10, alignOffset: -5, children: [
96
- /* @__PURE__ */ e(i, { onClick: () => w(!1), children: t("gridHeader.autosizeThisColumn") }),
97
- /* @__PURE__ */ e(i, { onClick: () => w(!0), children: t("gridHeader.autosizeAllColumns") })
95
+ /* @__PURE__ */ e(a, { onClick: () => w(!1), children: t("gridHeader.autosizeThisColumn") }),
96
+ /* @__PURE__ */ e(a, { onClick: () => w(!0), children: t("gridHeader.autosizeAllColumns") })
98
97
  ] })
99
98
  ] }),
100
99
  (N || v) && /* @__PURE__ */ r(j, { children: [
@@ -104,8 +103,8 @@ const U = ({
104
103
  " ",
105
104
  t("gridHeader.searchOptions")
106
105
  ] }),
107
- N && /* @__PURE__ */ e(i, { inset: !0, onClick: P, children: t("gridHeader.search") }),
108
- v && /* @__PURE__ */ e(i, { inset: !0, onClick: T, children: t("gridHeader.advanceSearch") })
106
+ N && /* @__PURE__ */ e(a, { inset: !0, onClick: P, children: t("gridHeader.search") }),
107
+ v && /* @__PURE__ */ e(a, { inset: !0, onClick: T, children: t("gridHeader.advanceSearch") })
109
108
  ] })
110
109
  ] })
111
110
  }
@@ -21,3 +21,6 @@ export { Kbd } from './kbd';
21
21
  export type { KbdProps } from './kbd';
22
22
  export { ShortcutSettings } from './shortcut-settings';
23
23
  export type { ShortcutSettingsProps } from './shortcut-settings';
24
+ export { ShortcutOverlayProvider, useShortcutOverlay } from './shortcut-overlay-context';
25
+ export type { ShortcutOverlayContextValue, ShortcutOverlayProviderProps } from './shortcut-overlay-context';
26
+ export { ShortcutOverlay } from './shortcut-overlay';
@@ -1,6 +1,6 @@
1
- import { BROWSER_SHORTCUTS as o, COMMAND_SOURCE_LABELS as r, deserialiseOverrides as m, fuzzyFilter as a, fuzzyScore as i, getBrowserShortcutInfo as n, getKeySymbol as d, isMac as s, isReservedShortcut as S, keybindingFromEvent as l, keybindingToString as p, keybindingToSymbols as u, keybindingsEqual as c, matchesKeybinding as y, parseKeybinding as C, scopePriority as P, serialiseOverrides as f } from "./utils.js";
2
- import { LocalStorageAdapter as b, ShortcutRegistry as h } from "./shortcut-registry.js";
3
- import { CommandPaletteProvider as v, useCommandPalette as E } from "./command-palette-context.js";
1
+ import { BROWSER_SHORTCUTS as r, COMMAND_SOURCE_LABELS as o, deserialiseOverrides as m, fuzzyFilter as a, fuzzyScore as i, getBrowserShortcutInfo as n, getKeySymbol as d, isMac as s, isReservedShortcut as S, keybindingFromEvent as l, keybindingToString as u, keybindingToSymbols as p, keybindingsEqual as c, matchesKeybinding as y, parseKeybinding as f, scopePriority as P, serialiseOverrides as C } from "./utils.js";
2
+ import { LocalStorageAdapter as g, ShortcutRegistry as x } from "./shortcut-registry.js";
3
+ import { CommandPaletteProvider as v, useCommandPalette as O } from "./command-palette-context.js";
4
4
  import { useShortcut as R } from "./use-shortcut.js";
5
5
  import { useGlobalShortcut as z } from "./use-global-shortcut.js";
6
6
  import { useBrowserShortcuts as K } from "./use-browser-shortcuts.js";
@@ -8,9 +8,11 @@ import { ShortcutScopeProvider as T } from "./shortcut-scope-provider.js";
8
8
  import { CommandPalette as F, CommandPaletteEmpty as I, CommandPaletteFooter as M, CommandPaletteGroup as _, CommandPaletteInput as w, CommandPaletteItem as G, CommandPaletteList as U, CommandPaletteSeparator as q, CommandPaletteShortcut as D } from "./command-palette.js";
9
9
  import { Kbd as N } from "./kbd.js";
10
10
  import { ShortcutSettings as j } from "./shortcut-settings.js";
11
+ import { ShortcutOverlayProvider as Q, useShortcutOverlay as V } from "./shortcut-overlay-context.js";
12
+ import { ShortcutOverlay as Y } from "./shortcut-overlay.js";
11
13
  export {
12
- o as BROWSER_SHORTCUTS,
13
- r as COMMAND_SOURCE_LABELS,
14
+ r as BROWSER_SHORTCUTS,
15
+ o as COMMAND_SOURCE_LABELS,
14
16
  F as CommandPalette,
15
17
  I as CommandPaletteEmpty,
16
18
  M as CommandPaletteFooter,
@@ -22,8 +24,10 @@ export {
22
24
  q as CommandPaletteSeparator,
23
25
  D as CommandPaletteShortcut,
24
26
  N as Kbd,
25
- b as LocalStorageAdapter,
26
- h as ShortcutRegistry,
27
+ g as LocalStorageAdapter,
28
+ Y as ShortcutOverlay,
29
+ Q as ShortcutOverlayProvider,
30
+ x as ShortcutRegistry,
27
31
  T as ShortcutScopeProvider,
28
32
  j as ShortcutSettings,
29
33
  m as deserialiseOverrides,
@@ -34,15 +38,16 @@ export {
34
38
  s as isMac,
35
39
  S as isReservedShortcut,
36
40
  l as keybindingFromEvent,
37
- p as keybindingToString,
38
- u as keybindingToSymbols,
41
+ u as keybindingToString,
42
+ p as keybindingToSymbols,
39
43
  c as keybindingsEqual,
40
44
  y as matchesKeybinding,
41
- C as parseKeybinding,
45
+ f as parseKeybinding,
42
46
  P as scopePriority,
43
- f as serialiseOverrides,
47
+ C as serialiseOverrides,
44
48
  K as useBrowserShortcuts,
45
- E as useCommandPalette,
49
+ O as useCommandPalette,
46
50
  z as useGlobalShortcut,
47
- R as useShortcut
51
+ R as useShortcut,
52
+ V as useShortcutOverlay
48
53
  };
@@ -0,0 +1,23 @@
1
+ /**
2
+ * ShortcutOverlayProvider — React context for the Excel-like "Key Tips" overlay.
3
+ *
4
+ * Manages visibility state for the shortcut overlay, which displays
5
+ * keyboard shortcut badges next to their associated UI elements.
6
+ */
7
+ import * as React from 'react';
8
+ export interface ShortcutOverlayContextValue {
9
+ /** Whether the shortcut overlay is currently visible */
10
+ isOverlayVisible: boolean;
11
+ /** Set overlay visibility explicitly */
12
+ setOverlayVisible: (visible: boolean) => void;
13
+ /** Toggle overlay visibility */
14
+ toggleOverlay: () => void;
15
+ }
16
+ export interface ShortcutOverlayProviderProps {
17
+ children: React.ReactNode;
18
+ }
19
+ export declare function ShortcutOverlayProvider({ children }: ShortcutOverlayProviderProps): import("react/jsx-runtime").JSX.Element;
20
+ export declare namespace ShortcutOverlayProvider {
21
+ var displayName: string;
22
+ }
23
+ export declare function useShortcutOverlay(): ShortcutOverlayContextValue;
@@ -0,0 +1,28 @@
1
+ import { jsx as c } from "react/jsx-runtime";
2
+ import * as t from "react";
3
+ const u = t.createContext(null);
4
+ function n({ children: e }) {
5
+ const [o, a] = t.useState(!1), l = t.useCallback((r) => {
6
+ a(r);
7
+ }, []), s = t.useCallback(() => {
8
+ a((r) => !r);
9
+ }, []), i = t.useMemo(() => ({
10
+ isOverlayVisible: o,
11
+ setOverlayVisible: l,
12
+ toggleOverlay: s
13
+ }), [o, l, s]);
14
+ return /* @__PURE__ */ c(u.Provider, { value: i, children: e });
15
+ }
16
+ n.displayName = "ShortcutOverlayProvider";
17
+ function y() {
18
+ const e = t.useContext(u);
19
+ if (!e)
20
+ throw new Error(
21
+ "useShortcutOverlay must be used within a <ShortcutOverlayProvider>. Wrap your application root with <ShortcutOverlayProvider>."
22
+ );
23
+ return e;
24
+ }
25
+ export {
26
+ n as ShortcutOverlayProvider,
27
+ y as useShortcutOverlay
28
+ };
@@ -0,0 +1,19 @@
1
+ /**
2
+ * ShortcutOverlay — Excel-like "Key Tips" overlay.
3
+ *
4
+ * When visible, scans the DOM for elements with `[data-shortcut-id]`,
5
+ * resolves their effective keybindings from the command palette registry,
6
+ * and renders floating Kbd badges positioned next to each element.
7
+ *
8
+ * Performance notes:
9
+ * - No `elementFromPoint` / forced reflows — uses containment checks only.
10
+ * - MutationObserver (childList on body) detects panel open/close cheaply.
11
+ * - All rescans are debounced via a single `requestAnimationFrame`.
12
+ *
13
+ * Dismiss: click backdrop, press Escape, or re-trigger the shortcut.
14
+ */
15
+ import * as React from 'react';
16
+ export declare function ShortcutOverlay(): React.ReactPortal;
17
+ export declare namespace ShortcutOverlay {
18
+ var displayName: string;
19
+ }
@@ -0,0 +1,151 @@
1
+ import { jsxs as O, Fragment as L, jsx as p } from "react/jsx-runtime";
2
+ import * as d from "react";
3
+ import { createPortal as M } from "react-dom";
4
+ import { useShortcutOverlay as S } from "./shortcut-overlay-context.js";
5
+ import { useCommandPalette as C } from "./command-palette-context.js";
6
+ import { Kbd as X } from "./kbd.js";
7
+ const u = 26, h = 80, s = 4;
8
+ function z() {
9
+ const t = document.querySelectorAll(
10
+ '[role="dialog"][data-state="open"]'
11
+ );
12
+ return t.length > 0 ? t[t.length - 1] : null;
13
+ }
14
+ function F(t) {
15
+ if (t.length <= 1) return t;
16
+ const r = [...t].sort((n, e) => n.top - e.top), l = (n, e) => Math.abs(n.left - e.left) < h && Math.abs(n.top - e.top) < u + s;
17
+ for (let n = 1; n < r.length; n++) {
18
+ const e = r[n], c = () => r.slice(Math.max(0, n - 5), n).some((y) => l(y, e));
19
+ c() && (e.placement === "above" ? (e.placement = "below", e.top = e.top + u + 32 + s) : (e.placement = "above", e.top = e.top - u - 32 - s), c() && (e.left = e.left + h + s));
20
+ }
21
+ return r;
22
+ }
23
+ function R(t) {
24
+ const r = window.innerWidth, l = window.innerHeight;
25
+ return {
26
+ ...t,
27
+ top: Math.max(s, Math.min(t.top, l - u - s)),
28
+ left: Math.max(h / 2, Math.min(t.left, r - h / 2))
29
+ };
30
+ }
31
+ function T() {
32
+ const { isOverlayVisible: t, setOverlayVisible: r } = S(), { getEffectiveKeybinding: l, version: n } = C(), [e, c] = d.useState([]), [y, x] = d.useState(0);
33
+ return d.useLayoutEffect(() => {
34
+ if (!t) {
35
+ c([]);
36
+ return;
37
+ }
38
+ const f = (z() ?? document).querySelectorAll("[data-shortcut-id]"), m = [];
39
+ f.forEach((v) => {
40
+ const w = v.getAttribute("data-shortcut-id");
41
+ if (!w) return;
42
+ const b = window.getComputedStyle(v);
43
+ if (b.display === "none" || b.visibility === "hidden" || b.opacity === "0")
44
+ return;
45
+ const a = v.getBoundingClientRect();
46
+ if (a.width === 0 || a.height === 0 || a.bottom < 0 || a.top > window.innerHeight || a.right < 0 || a.left > window.innerWidth)
47
+ return;
48
+ const E = l(w);
49
+ if (!E) return;
50
+ const A = a.left + a.width / 2;
51
+ let k = "above", g = a.top - u - s;
52
+ g < s && (k = "below", g = a.bottom + s), m.push({
53
+ id: w,
54
+ keybinding: E,
55
+ top: g,
56
+ left: A,
57
+ placement: k
58
+ });
59
+ }), c(F(m).map(R));
60
+ }, [t, l, n, y]), d.useEffect(() => {
61
+ if (!t) return;
62
+ const o = (i) => {
63
+ i.key === "Escape" && (i.preventDefault(), i.stopPropagation(), r(!1));
64
+ };
65
+ return window.addEventListener("keydown", o, !0), () => window.removeEventListener("keydown", o, !0);
66
+ }, [t, r]), d.useEffect(() => {
67
+ if (!t) return;
68
+ let o;
69
+ const i = () => {
70
+ cancelAnimationFrame(o), o = requestAnimationFrame(() => x((m) => m + 1));
71
+ };
72
+ window.addEventListener("scroll", i, !0), window.addEventListener("resize", i);
73
+ const f = new MutationObserver(i);
74
+ return f.observe(document.body, {
75
+ childList: !0,
76
+ subtree: !0,
77
+ attributes: !0,
78
+ attributeFilter: ["data-state"]
79
+ }), () => {
80
+ cancelAnimationFrame(o), window.removeEventListener("scroll", i, !0), window.removeEventListener("resize", i), f.disconnect();
81
+ };
82
+ }, [t]), !t || e.length === 0 ? null : M(
83
+ /* @__PURE__ */ O(L, { children: [
84
+ /* @__PURE__ */ p(
85
+ "div",
86
+ {
87
+ "data-shortcut-overlay-backdrop": "",
88
+ onClick: () => r(!1),
89
+ style: {
90
+ position: "fixed",
91
+ inset: 0,
92
+ backgroundColor: "rgba(0, 0, 0, 0.06)",
93
+ zIndex: 99998,
94
+ cursor: "default"
95
+ }
96
+ }
97
+ ),
98
+ e.map((o) => /* @__PURE__ */ p(
99
+ "div",
100
+ {
101
+ "data-shortcut-overlay-badge": "",
102
+ style: {
103
+ position: "fixed",
104
+ top: o.top,
105
+ left: o.left,
106
+ transform: "translateX(-50%)",
107
+ zIndex: 99999,
108
+ pointerEvents: "none",
109
+ animation: o.placement === "below" ? "shortcut-overlay-badge-in-below 0.15s ease-out" : "shortcut-overlay-badge-in 0.15s ease-out"
110
+ },
111
+ children: /* @__PURE__ */ p(
112
+ X,
113
+ {
114
+ keybinding: o.keybinding,
115
+ size: "sm",
116
+ variant: "dark"
117
+ }
118
+ )
119
+ },
120
+ o.id
121
+ )),
122
+ /* @__PURE__ */ p("style", { children: `
123
+ @keyframes shortcut-overlay-badge-in {
124
+ from {
125
+ opacity: 0;
126
+ transform: translateX(-50%) translateY(4px);
127
+ }
128
+ to {
129
+ opacity: 1;
130
+ transform: translateX(-50%) translateY(0);
131
+ }
132
+ }
133
+ @keyframes shortcut-overlay-badge-in-below {
134
+ from {
135
+ opacity: 0;
136
+ transform: translateX(-50%) translateY(-4px);
137
+ }
138
+ to {
139
+ opacity: 1;
140
+ transform: translateX(-50%) translateY(0);
141
+ }
142
+ }
143
+ ` })
144
+ ] }),
145
+ document.body
146
+ );
147
+ }
148
+ T.displayName = "ShortcutOverlay";
149
+ export {
150
+ T as ShortcutOverlay
151
+ };
@@ -109,6 +109,7 @@ const j = ({
109
109
  "data-component": "filter-panel-sidebar-item",
110
110
  "data-active": o ? "true" : "false",
111
111
  "data-tab": a.id,
112
+ "data-shortcut-id": a.shortcutId,
112
113
  className: i(
113
114
  "group flex items-center justify-between px-3 py-[6px] mx-2 rounded-lg text-left text-sm font-medium transition-colors",
114
115
  o ? "bg-canvas-accent text-brand" : "text-content-secondary hover:bg-canvas-accent"
@@ -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, onEditSavedFilter, onDeleteSavedFilter, onSetDefaultSavedFilter, 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, allFiltersShortcutId, }: FilterStripProps) => import("react/jsx-runtime").JSX.Element;
3
3
  export { FilterStrip };
@@ -1,20 +1,20 @@
1
1
  import { jsx as e, jsxs as i } from "react/jsx-runtime";
2
- import { ListFilter as F } from "lucide-react";
2
+ import { ListFilter as j } from "lucide-react";
3
3
  import { cn as l } from "../../../lib/utils.js";
4
- import { Button as j } from "../button.js";
4
+ import { Button as I } from "../button.js";
5
5
  import { Skeleton as t } from "../skeleton.js";
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 = ({
6
+ import { FilterSummary as L } from "./filter-summary.js";
7
+ import { FilterTagList as A } from "./filter-tag-list.js";
8
+ import { useImpactNovaI18n as B } from "../../../i18n/ImpactNovaI18nContext.js";
9
+ const G = ({
10
10
  filters: s,
11
11
  onFilterRemove: n,
12
12
  onAllFiltersClick: m,
13
13
  savedFilters: o,
14
- recentFilters: p,
15
- onApplySavedFilter: c,
16
- onSavedFilterSearch: f,
17
- onSavedFiltersScroll: h,
14
+ recentFilters: c,
15
+ onApplySavedFilter: p,
16
+ onSavedFilterSearch: h,
17
+ onSavedFiltersScroll: f,
18
18
  onViewAll: d,
19
19
  onOverflowClick: w,
20
20
  selectedFilter: x,
@@ -22,13 +22,14 @@ const E = ({
22
22
  onDropdownOpenChange: v,
23
23
  isLoadingFilterPreferencesList: g,
24
24
  isLoading: k,
25
- onEditSavedFilter: b,
26
- onDeleteSavedFilter: u,
25
+ onEditSavedFilter: u,
26
+ onDeleteSavedFilter: b,
27
27
  onSetDefaultSavedFilter: S,
28
28
  className: a,
29
- allFiltersKeybinding: y
29
+ allFiltersKeybinding: y,
30
+ allFiltersShortcutId: F
30
31
  }) => {
31
- const { t: r } = A();
32
+ const { t: r } = B();
32
33
  return k ? /* @__PURE__ */ e(
33
34
  "div",
34
35
  {
@@ -71,25 +72,25 @@ const E = ({
71
72
  ),
72
73
  children: [
73
74
  /* @__PURE__ */ e(
74
- I,
75
+ L,
75
76
  {
76
77
  selectedFilter: x,
77
78
  onSelectedFilterChange: N,
78
79
  savedFilters: o,
79
- recentFilters: p,
80
- onApplySavedFilter: c,
81
- onSavedFilterSearch: f,
82
- onSavedFiltersScroll: h,
80
+ recentFilters: c,
81
+ onApplySavedFilter: p,
82
+ onSavedFilterSearch: h,
83
+ onSavedFiltersScroll: f,
83
84
  onDropdownOpenChange: v,
84
85
  isLoadingFilterPreferencesList: g,
85
- onEditSavedFilter: b,
86
- onDeleteSavedFilter: u,
86
+ onEditSavedFilter: u,
87
+ onDeleteSavedFilter: b,
87
88
  onSetDefaultSavedFilter: S
88
89
  }
89
90
  ),
90
91
  /* @__PURE__ */ e("div", { className: "h-4 w-[1px] bg-stroke-hairline mx-1 shrink-0" }),
91
92
  /* @__PURE__ */ e(
92
- L,
93
+ A,
93
94
  {
94
95
  filters: s,
95
96
  onFilterRemove: n,
@@ -98,7 +99,7 @@ const E = ({
98
99
  }
99
100
  ),
100
101
  /* @__PURE__ */ i(
101
- j,
102
+ I,
102
103
  {
103
104
  variant: "tertiary",
104
105
  onClick: m,
@@ -106,8 +107,9 @@ const E = ({
106
107
  "aria-label": r("filterStrip.allFilters"),
107
108
  tooltipSide: "bottom",
108
109
  tooltipKeybinding: y,
110
+ "data-shortcut-id": F,
109
111
  children: [
110
- /* @__PURE__ */ e(F, { className: "h-4 w-4" }),
112
+ /* @__PURE__ */ e(j, { className: "h-4 w-4" }),
111
113
  r("filterStrip.allFilters")
112
114
  ]
113
115
  }
@@ -117,5 +119,5 @@ const E = ({
117
119
  );
118
120
  };
119
121
  export {
120
- E as FilterStrip
122
+ G as FilterStrip
121
123
  };
@@ -3,9 +3,10 @@ import { HelperTextPosition } from './types/helper-text.types';
3
3
  import * as React from "react";
4
4
  declare const textareaVariants: (props?: {
5
5
  isError?: boolean;
6
+ size?: "sm" | "md" | "lg" | "default";
6
7
  disabled?: boolean;
7
8
  } & import('class-variance-authority/types').ClassProp) => string;
8
- export interface TextareaProps extends Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, "disabled">, VariantProps<typeof textareaVariants> {
9
+ export interface TextareaProps extends Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, "disabled" | "size">, VariantProps<typeof textareaVariants> {
9
10
  label?: string;
10
11
  helperText?: React.ReactNode;
11
12
  /** @default "absolute" */