@almadar/ui 5.122.13 → 5.123.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.
@@ -2986,6 +2986,11 @@ var colorStyles = {
2986
2986
  inherit: "text-inherit"
2987
2987
  };
2988
2988
  var weightStyles = {
2989
+ // Neutral: an atom default of "none" must not override the variant's baked
2990
+ // weight (C-PATTERN-ENUM-BLOCKS-NEUTRAL-OVERRIDE — `variant={h2}` rendered
2991
+ // tiny because the ui-typography atom's `weight: light`/`size: xs` defaults
2992
+ // clobbered every variant).
2993
+ none: "",
2989
2994
  light: "font-light",
2990
2995
  normal: "font-normal",
2991
2996
  medium: "font-medium",
@@ -3011,6 +3016,7 @@ var defaultElements = {
3011
3016
  label: "span"
3012
3017
  };
3013
3018
  var typographySizeStyles = {
3019
+ none: "",
3014
3020
  xs: "text-xs",
3015
3021
  sm: "text-sm",
3016
3022
  md: "text-base",
@@ -3533,6 +3539,7 @@ var Button = React12__namespace.default.forwardRef(
3533
3539
  "button",
3534
3540
  {
3535
3541
  ref,
3542
+ type: "button",
3536
3543
  disabled: disabled || isLoading,
3537
3544
  className: cn(
3538
3545
  "relative inline-flex items-center justify-center gap-2",
@@ -2965,6 +2965,11 @@ var colorStyles = {
2965
2965
  inherit: "text-inherit"
2966
2966
  };
2967
2967
  var weightStyles = {
2968
+ // Neutral: an atom default of "none" must not override the variant's baked
2969
+ // weight (C-PATTERN-ENUM-BLOCKS-NEUTRAL-OVERRIDE — `variant={h2}` rendered
2970
+ // tiny because the ui-typography atom's `weight: light`/`size: xs` defaults
2971
+ // clobbered every variant).
2972
+ none: "",
2968
2973
  light: "font-light",
2969
2974
  normal: "font-normal",
2970
2975
  medium: "font-medium",
@@ -2990,6 +2995,7 @@ var defaultElements = {
2990
2995
  label: "span"
2991
2996
  };
2992
2997
  var typographySizeStyles = {
2998
+ none: "",
2993
2999
  xs: "text-xs",
2994
3000
  sm: "text-sm",
2995
3001
  md: "text-base",
@@ -3512,6 +3518,7 @@ var Button = React12__default.forwardRef(
3512
3518
  "button",
3513
3519
  {
3514
3520
  ref,
3521
+ type: "button",
3515
3522
  disabled: disabled || isLoading,
3516
3523
  className: cn(
3517
3524
  "relative inline-flex items-center justify-center gap-2",
@@ -62,6 +62,7 @@ var langPowershell = require('react-syntax-highlighter/dist/esm/languages/prism/
62
62
  var langMakefile = require('react-syntax-highlighter/dist/esm/languages/prism/makefile.js');
63
63
  var langNginx = require('react-syntax-highlighter/dist/esm/languages/prism/nginx.js');
64
64
  var langIni = require('react-syntax-highlighter/dist/esm/languages/prism/ini.js');
65
+ var langClike = require('react-syntax-highlighter/dist/esm/languages/prism/clike.js');
65
66
  var ReactMarkdown = require('react-markdown');
66
67
  var remarkGfm = require('remark-gfm');
67
68
  var remarkMath = require('remark-math');
@@ -144,6 +145,7 @@ var langPowershell__default = /*#__PURE__*/_interopDefault(langPowershell);
144
145
  var langMakefile__default = /*#__PURE__*/_interopDefault(langMakefile);
145
146
  var langNginx__default = /*#__PURE__*/_interopDefault(langNginx);
146
147
  var langIni__default = /*#__PURE__*/_interopDefault(langIni);
148
+ var langClike__default = /*#__PURE__*/_interopDefault(langClike);
147
149
  var ReactMarkdown__default = /*#__PURE__*/_interopDefault(ReactMarkdown);
148
150
  var remarkGfm__default = /*#__PURE__*/_interopDefault(remarkGfm);
149
151
  var remarkMath__default = /*#__PURE__*/_interopDefault(remarkMath);
@@ -1162,6 +1164,7 @@ var init_Button = __esm({
1162
1164
  "button",
1163
1165
  {
1164
1166
  ref,
1167
+ type: "button",
1165
1168
  disabled: disabled || isLoading,
1166
1169
  className: cn(
1167
1170
  "relative inline-flex items-center justify-center gap-2",
@@ -1255,6 +1258,11 @@ var init_Typography = __esm({
1255
1258
  inherit: "text-inherit"
1256
1259
  };
1257
1260
  weightStyles = {
1261
+ // Neutral: an atom default of "none" must not override the variant's baked
1262
+ // weight (C-PATTERN-ENUM-BLOCKS-NEUTRAL-OVERRIDE — `variant={h2}` rendered
1263
+ // tiny because the ui-typography atom's `weight: light`/`size: xs` defaults
1264
+ // clobbered every variant).
1265
+ none: "",
1258
1266
  light: "font-light",
1259
1267
  normal: "font-normal",
1260
1268
  medium: "font-medium",
@@ -1280,6 +1288,7 @@ var init_Typography = __esm({
1280
1288
  label: "span"
1281
1289
  };
1282
1290
  typographySizeStyles = {
1291
+ none: "",
1283
1292
  xs: "text-xs",
1284
1293
  sm: "text-sm",
1285
1294
  md: "text-base",
@@ -14479,7 +14488,7 @@ async function loadPrismLanguage(lang) {
14479
14488
  if (isLanguageRegistered(lang)) return;
14480
14489
  try {
14481
14490
  const grammar = codeLanguageLoader ? await codeLanguageLoader(lang) : null;
14482
- if (grammar) SyntaxHighlighter__default.default.registerLanguage(lang, grammar);
14491
+ SyntaxHighlighter__default.default.registerLanguage(lang, grammar ?? langClike__default.default);
14483
14492
  dynamicallyLoaded.add(lang);
14484
14493
  } catch {
14485
14494
  dynamicallyLoaded.add(lang);
@@ -14648,6 +14657,7 @@ var init_CodeBlock = __esm({
14648
14657
  SyntaxHighlighter__default.default.registerLanguage("make", langMakefile__default.default);
14649
14658
  SyntaxHighlighter__default.default.registerLanguage("nginx", langNginx__default.default);
14650
14659
  SyntaxHighlighter__default.default.registerLanguage("ini", langIni__default.default);
14660
+ SyntaxHighlighter__default.default.registerLanguage("clike", langClike__default.default);
14651
14661
  SyntaxHighlighter__default.default.registerLanguage("orb", syntax.orbLanguage);
14652
14662
  SyntaxHighlighter__default.default.registerLanguage("lolo", syntax.loloLanguage);
14653
14663
  dynamicallyLoaded = /* @__PURE__ */ new Set();
@@ -15197,7 +15207,7 @@ var init_CodeBlock = __esm({
15197
15207
  ] }) });
15198
15208
  }
15199
15209
  const hasHeader = showLanguageBadge || effectiveCopy;
15200
- return /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: `relative group ${className || ""}`, style: { display: "flex", flexDirection: "column", height: "100%" }, children: [
15210
+ return /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: `relative group not-prose ${className || ""}`, style: { display: "flex", flexDirection: "column", height: "100%" }, children: [
15201
15211
  hasHeader && /* @__PURE__ */ jsxRuntime.jsxs(
15202
15212
  HStack,
15203
15213
  {
@@ -23140,6 +23150,13 @@ function DataGrid({
23140
23150
  row: itemData
23141
23151
  };
23142
23152
  eventBus.emit(`UI:${action.event}`, payload);
23153
+ if (action.navigatesTo) {
23154
+ const url = action.navigatesTo.replace(
23155
+ /\{\{row\.(\w+(?:\.\w+)*)\}\}/g,
23156
+ (_, field) => String(itemData[field] ?? "")
23157
+ );
23158
+ eventBus.emit("UI:NAVIGATE", { url });
23159
+ }
23143
23160
  };
23144
23161
  const hasRenderProp = typeof children === "function";
23145
23162
  React84.useEffect(() => {
@@ -23207,13 +23224,49 @@ function DataGrid({
23207
23224
  const wrapDnd = (node) => dnd.isZone ? /* @__PURE__ */ jsxRuntime.jsx(dnd.SortableItem, { id: dndId, children: node }, dndId) : node;
23208
23225
  if (hasRenderProp) {
23209
23226
  return wrapDnd(
23210
- /* @__PURE__ */ jsxRuntime.jsx(
23227
+ /* @__PURE__ */ jsxRuntime.jsxs(
23211
23228
  Box,
23212
23229
  {
23213
23230
  "data-entity-row": true,
23214
23231
  "data-entity-id": id,
23215
23232
  className: cn(isSelected && "ring-2 ring-primary rounded-lg"),
23216
- children: children(itemData, index)
23233
+ children: [
23234
+ children(itemData, index),
23235
+ actionDefs.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "px-4 py-3 border-t border-border", children: /* @__PURE__ */ jsxRuntime.jsxs(HStack, { gap: "sm", className: "justify-end", children: [
23236
+ (maxInlineActions != null ? actionDefs.slice(0, maxInlineActions) : actionDefs).map((action, idx) => /* @__PURE__ */ jsxRuntime.jsxs(
23237
+ Button,
23238
+ {
23239
+ variant: action.variant === "primary" ? "primary" : "ghost",
23240
+ size: "sm",
23241
+ onClick: handleActionClick(action, itemData),
23242
+ "data-testid": `action-${action.event}`,
23243
+ "data-row-id": String(itemData.id),
23244
+ className: action.variant === "danger" ? "text-error hover:text-error hover:bg-error/10" : void 0,
23245
+ children: [
23246
+ action.icon && renderIconInput(action.icon, { size: "xs", className: "mr-1" }),
23247
+ action.label
23248
+ ]
23249
+ },
23250
+ idx
23251
+ )),
23252
+ maxInlineActions != null && actionDefs.length > maxInlineActions && /* @__PURE__ */ jsxRuntime.jsx(
23253
+ Menu,
23254
+ {
23255
+ position: "bottom-end",
23256
+ trigger: /* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "ghost", size: "sm", "aria-label": t("common.actions"), "data-testid": "action-overflow", children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "more-horizontal", size: "xs" }) }),
23257
+ items: actionDefs.slice(maxInlineActions).map((action) => ({
23258
+ label: action.label,
23259
+ icon: action.icon,
23260
+ event: action.event,
23261
+ onClick: () => eventBus.emit(`UI:${action.event}`, {
23262
+ id: itemData.id,
23263
+ row: itemData
23264
+ })
23265
+ }))
23266
+ }
23267
+ )
23268
+ ] }) })
23269
+ ]
23217
23270
  },
23218
23271
  id
23219
23272
  )
@@ -24237,7 +24290,9 @@ var init_FilterGroup = __esm({
24237
24290
  showIcon = true,
24238
24291
  query,
24239
24292
  isLoading,
24240
- look = "toolbar"
24293
+ look = "toolbar",
24294
+ event,
24295
+ clearEvent
24241
24296
  }) => {
24242
24297
  const { t } = hooks.useTranslate();
24243
24298
  const eventBus = useEventBus();
@@ -24274,14 +24329,18 @@ var init_FilterGroup = __esm({
24274
24329
  queryState.setFilter(field, value === "all" ? null : value);
24275
24330
  }
24276
24331
  onFilterChange?.(field, value === "all" ? null : value);
24277
- eventBus.emit("UI:FILTER", {
24332
+ const payload = {
24278
24333
  entity,
24279
24334
  field,
24280
24335
  value: value === "all" || value === null ? "" : value,
24281
24336
  query
24282
- });
24337
+ };
24338
+ if (event && event !== "FILTER") {
24339
+ eventBus.emit(`UI:${event}`, payload);
24340
+ }
24341
+ eventBus.emit("UI:FILTER", payload);
24283
24342
  },
24284
- [onFilterChange, queryState, eventBus, entity, query]
24343
+ [onFilterChange, queryState, eventBus, entity, query, event]
24285
24344
  );
24286
24345
  const handleClearAll = React84.useCallback(() => {
24287
24346
  setSelectedValues({});
@@ -24289,8 +24348,11 @@ var init_FilterGroup = __esm({
24289
24348
  queryState.clearFilters();
24290
24349
  }
24291
24350
  onClearAll?.();
24351
+ if (clearEvent && clearEvent !== "CLEAR_FILTERS") {
24352
+ eventBus.emit(`UI:${clearEvent}`, { entity, query });
24353
+ }
24292
24354
  eventBus.emit("UI:CLEAR_FILTERS", { entity, query });
24293
- }, [onClearAll, queryState, eventBus, entity, query]);
24355
+ }, [onClearAll, queryState, eventBus, entity, query, clearEvent]);
24294
24356
  const activeFilterCount = Object.keys(selectedValues).length;
24295
24357
  if (variant === "pills") {
24296
24358
  return /* @__PURE__ */ jsxRuntime.jsxs(
@@ -25418,7 +25480,7 @@ var init_SearchInput = __esm({
25418
25480
  queryState.setSearch(newValue);
25419
25481
  }
25420
25482
  onSearch?.(newValue);
25421
- if (event) {
25483
+ if (event && event !== "SEARCH") {
25422
25484
  eventBus.emit(`UI:${event}`, { searchTerm: newValue, entity });
25423
25485
  }
25424
25486
  if (event || entity || query) {
@@ -35,7 +35,7 @@ interface EventBusContextTypeExtended extends EventBusContextType {
35
35
  }
36
36
  declare const EventBusContext: React__default.Context<EventBusContextTypeExtended | null>;
37
37
  interface EventBusProviderProps {
38
- children: ReactNode;
38
+ children?: ReactNode;
39
39
  /**
40
40
  * @deprecated No-op. Logging is now gated by `@almadar/logger` —
41
41
  * use `setLogLevel('DEBUG')` or `setNamespaceLevel('almadar:eventbus', 'DEBUG')`
@@ -288,7 +288,7 @@ type TraitScopeChain = readonly TraitScope[];
288
288
  interface TraitScopeProviderProps {
289
289
  orbital: string;
290
290
  trait: string;
291
- children: React__default.ReactNode;
291
+ children?: React__default.ReactNode;
292
292
  }
293
293
  /**
294
294
  * Wrap a trait's rendered subtree to qualify bare `UI:*` emits with the
@@ -35,7 +35,7 @@ interface EventBusContextTypeExtended extends EventBusContextType {
35
35
  }
36
36
  declare const EventBusContext: React__default.Context<EventBusContextTypeExtended | null>;
37
37
  interface EventBusProviderProps {
38
- children: ReactNode;
38
+ children?: ReactNode;
39
39
  /**
40
40
  * @deprecated No-op. Logging is now gated by `@almadar/logger` —
41
41
  * use `setLogLevel('DEBUG')` or `setNamespaceLevel('almadar:eventbus', 'DEBUG')`
@@ -288,7 +288,7 @@ type TraitScopeChain = readonly TraitScope[];
288
288
  interface TraitScopeProviderProps {
289
289
  orbital: string;
290
290
  trait: string;
291
- children: React__default.ReactNode;
291
+ children?: React__default.ReactNode;
292
292
  }
293
293
  /**
294
294
  * Wrap a trait's rendered subtree to qualify bare `UI:*` emits with the
@@ -63,6 +63,7 @@ import langPowershell from 'react-syntax-highlighter/dist/esm/languages/prism/po
63
63
  import langMakefile from 'react-syntax-highlighter/dist/esm/languages/prism/makefile.js';
64
64
  import langNginx from 'react-syntax-highlighter/dist/esm/languages/prism/nginx.js';
65
65
  import langIni from 'react-syntax-highlighter/dist/esm/languages/prism/ini.js';
66
+ import langClike from 'react-syntax-highlighter/dist/esm/languages/prism/clike.js';
66
67
  import ReactMarkdown from 'react-markdown';
67
68
  import remarkGfm from 'remark-gfm';
68
69
  import remarkMath from 'remark-math';
@@ -1088,6 +1089,7 @@ var init_Button = __esm({
1088
1089
  "button",
1089
1090
  {
1090
1091
  ref,
1092
+ type: "button",
1091
1093
  disabled: disabled || isLoading,
1092
1094
  className: cn(
1093
1095
  "relative inline-flex items-center justify-center gap-2",
@@ -1181,6 +1183,11 @@ var init_Typography = __esm({
1181
1183
  inherit: "text-inherit"
1182
1184
  };
1183
1185
  weightStyles = {
1186
+ // Neutral: an atom default of "none" must not override the variant's baked
1187
+ // weight (C-PATTERN-ENUM-BLOCKS-NEUTRAL-OVERRIDE — `variant={h2}` rendered
1188
+ // tiny because the ui-typography atom's `weight: light`/`size: xs` defaults
1189
+ // clobbered every variant).
1190
+ none: "",
1184
1191
  light: "font-light",
1185
1192
  normal: "font-normal",
1186
1193
  medium: "font-medium",
@@ -1206,6 +1213,7 @@ var init_Typography = __esm({
1206
1213
  label: "span"
1207
1214
  };
1208
1215
  typographySizeStyles = {
1216
+ none: "",
1209
1217
  xs: "text-xs",
1210
1218
  sm: "text-sm",
1211
1219
  md: "text-base",
@@ -14405,7 +14413,7 @@ async function loadPrismLanguage(lang) {
14405
14413
  if (isLanguageRegistered(lang)) return;
14406
14414
  try {
14407
14415
  const grammar = codeLanguageLoader ? await codeLanguageLoader(lang) : null;
14408
- if (grammar) SyntaxHighlighter.registerLanguage(lang, grammar);
14416
+ SyntaxHighlighter.registerLanguage(lang, grammar ?? langClike);
14409
14417
  dynamicallyLoaded.add(lang);
14410
14418
  } catch {
14411
14419
  dynamicallyLoaded.add(lang);
@@ -14574,6 +14582,7 @@ var init_CodeBlock = __esm({
14574
14582
  SyntaxHighlighter.registerLanguage("make", langMakefile);
14575
14583
  SyntaxHighlighter.registerLanguage("nginx", langNginx);
14576
14584
  SyntaxHighlighter.registerLanguage("ini", langIni);
14585
+ SyntaxHighlighter.registerLanguage("clike", langClike);
14577
14586
  SyntaxHighlighter.registerLanguage("orb", orbLanguage);
14578
14587
  SyntaxHighlighter.registerLanguage("lolo", loloLanguage);
14579
14588
  dynamicallyLoaded = /* @__PURE__ */ new Set();
@@ -15123,7 +15132,7 @@ var init_CodeBlock = __esm({
15123
15132
  ] }) });
15124
15133
  }
15125
15134
  const hasHeader = showLanguageBadge || effectiveCopy;
15126
- return /* @__PURE__ */ jsxs(Box, { className: `relative group ${className || ""}`, style: { display: "flex", flexDirection: "column", height: "100%" }, children: [
15135
+ return /* @__PURE__ */ jsxs(Box, { className: `relative group not-prose ${className || ""}`, style: { display: "flex", flexDirection: "column", height: "100%" }, children: [
15127
15136
  hasHeader && /* @__PURE__ */ jsxs(
15128
15137
  HStack,
15129
15138
  {
@@ -23066,6 +23075,13 @@ function DataGrid({
23066
23075
  row: itemData
23067
23076
  };
23068
23077
  eventBus.emit(`UI:${action.event}`, payload);
23078
+ if (action.navigatesTo) {
23079
+ const url = action.navigatesTo.replace(
23080
+ /\{\{row\.(\w+(?:\.\w+)*)\}\}/g,
23081
+ (_, field) => String(itemData[field] ?? "")
23082
+ );
23083
+ eventBus.emit("UI:NAVIGATE", { url });
23084
+ }
23069
23085
  };
23070
23086
  const hasRenderProp = typeof children === "function";
23071
23087
  useEffect(() => {
@@ -23133,13 +23149,49 @@ function DataGrid({
23133
23149
  const wrapDnd = (node) => dnd.isZone ? /* @__PURE__ */ jsx(dnd.SortableItem, { id: dndId, children: node }, dndId) : node;
23134
23150
  if (hasRenderProp) {
23135
23151
  return wrapDnd(
23136
- /* @__PURE__ */ jsx(
23152
+ /* @__PURE__ */ jsxs(
23137
23153
  Box,
23138
23154
  {
23139
23155
  "data-entity-row": true,
23140
23156
  "data-entity-id": id,
23141
23157
  className: cn(isSelected && "ring-2 ring-primary rounded-lg"),
23142
- children: children(itemData, index)
23158
+ children: [
23159
+ children(itemData, index),
23160
+ actionDefs.length > 0 && /* @__PURE__ */ jsx(Box, { className: "px-4 py-3 border-t border-border", children: /* @__PURE__ */ jsxs(HStack, { gap: "sm", className: "justify-end", children: [
23161
+ (maxInlineActions != null ? actionDefs.slice(0, maxInlineActions) : actionDefs).map((action, idx) => /* @__PURE__ */ jsxs(
23162
+ Button,
23163
+ {
23164
+ variant: action.variant === "primary" ? "primary" : "ghost",
23165
+ size: "sm",
23166
+ onClick: handleActionClick(action, itemData),
23167
+ "data-testid": `action-${action.event}`,
23168
+ "data-row-id": String(itemData.id),
23169
+ className: action.variant === "danger" ? "text-error hover:text-error hover:bg-error/10" : void 0,
23170
+ children: [
23171
+ action.icon && renderIconInput(action.icon, { size: "xs", className: "mr-1" }),
23172
+ action.label
23173
+ ]
23174
+ },
23175
+ idx
23176
+ )),
23177
+ maxInlineActions != null && actionDefs.length > maxInlineActions && /* @__PURE__ */ jsx(
23178
+ Menu,
23179
+ {
23180
+ position: "bottom-end",
23181
+ trigger: /* @__PURE__ */ jsx(Button, { variant: "ghost", size: "sm", "aria-label": t("common.actions"), "data-testid": "action-overflow", children: /* @__PURE__ */ jsx(Icon, { name: "more-horizontal", size: "xs" }) }),
23182
+ items: actionDefs.slice(maxInlineActions).map((action) => ({
23183
+ label: action.label,
23184
+ icon: action.icon,
23185
+ event: action.event,
23186
+ onClick: () => eventBus.emit(`UI:${action.event}`, {
23187
+ id: itemData.id,
23188
+ row: itemData
23189
+ })
23190
+ }))
23191
+ }
23192
+ )
23193
+ ] }) })
23194
+ ]
23143
23195
  },
23144
23196
  id
23145
23197
  )
@@ -24163,7 +24215,9 @@ var init_FilterGroup = __esm({
24163
24215
  showIcon = true,
24164
24216
  query,
24165
24217
  isLoading,
24166
- look = "toolbar"
24218
+ look = "toolbar",
24219
+ event,
24220
+ clearEvent
24167
24221
  }) => {
24168
24222
  const { t } = useTranslate();
24169
24223
  const eventBus = useEventBus();
@@ -24200,14 +24254,18 @@ var init_FilterGroup = __esm({
24200
24254
  queryState.setFilter(field, value === "all" ? null : value);
24201
24255
  }
24202
24256
  onFilterChange?.(field, value === "all" ? null : value);
24203
- eventBus.emit("UI:FILTER", {
24257
+ const payload = {
24204
24258
  entity,
24205
24259
  field,
24206
24260
  value: value === "all" || value === null ? "" : value,
24207
24261
  query
24208
- });
24262
+ };
24263
+ if (event && event !== "FILTER") {
24264
+ eventBus.emit(`UI:${event}`, payload);
24265
+ }
24266
+ eventBus.emit("UI:FILTER", payload);
24209
24267
  },
24210
- [onFilterChange, queryState, eventBus, entity, query]
24268
+ [onFilterChange, queryState, eventBus, entity, query, event]
24211
24269
  );
24212
24270
  const handleClearAll = useCallback(() => {
24213
24271
  setSelectedValues({});
@@ -24215,8 +24273,11 @@ var init_FilterGroup = __esm({
24215
24273
  queryState.clearFilters();
24216
24274
  }
24217
24275
  onClearAll?.();
24276
+ if (clearEvent && clearEvent !== "CLEAR_FILTERS") {
24277
+ eventBus.emit(`UI:${clearEvent}`, { entity, query });
24278
+ }
24218
24279
  eventBus.emit("UI:CLEAR_FILTERS", { entity, query });
24219
- }, [onClearAll, queryState, eventBus, entity, query]);
24280
+ }, [onClearAll, queryState, eventBus, entity, query, clearEvent]);
24220
24281
  const activeFilterCount = Object.keys(selectedValues).length;
24221
24282
  if (variant === "pills") {
24222
24283
  return /* @__PURE__ */ jsxs(
@@ -25344,7 +25405,7 @@ var init_SearchInput = __esm({
25344
25405
  queryState.setSearch(newValue);
25345
25406
  }
25346
25407
  onSearch?.(newValue);
25347
- if (event) {
25408
+ if (event && event !== "SEARCH") {
25348
25409
  eventBus.emit(`UI:${event}`, { searchTerm: newValue, entity });
25349
25410
  }
25350
25411
  if (event || entity || query) {