{
+ if (e.key === "Escape" && document.activeElement === inputRef.current) {
+ if (query) {
+ setQuery("");
+ } else {
+ inputRef.current?.blur();
+ }
+ return;
+ }
+
const isSearchShortcut =
(e.key === "k" && (e.metaKey || e.ctrlKey)) || e.key === "/";
@@ -47,7 +56,7 @@ export const Searchbar = ({
globalThis.addEventListener("keydown", handleKeyDown);
return () => globalThis.removeEventListener("keydown", handleKeyDown);
- }, []);
+ }, [query, setQuery]);
return (
@@ -88,7 +97,10 @@ export const Searchbar = ({
variant="ghost"
size="sm"
aria-label="Clear search"
- onPress={() => setQuery("")}
+ onPress={() => {
+ setQuery("");
+ inputRef.current?.focus();
+ }}
className="absolute right-2 top-1/2 -translate-y-1/2 text-zinc-500 hover:text-zinc-900 dark:hover:text-zinc-100 min-w-0 h-7 w-7"
>
diff --git a/src/components/unified-filter-bar.tsx b/src/components/unified-filter-bar.tsx
index 68247ef..cfe3edd 100644
--- a/src/components/unified-filter-bar.tsx
+++ b/src/components/unified-filter-bar.tsx
@@ -38,28 +38,38 @@ const FilterDropdown = memo(
}: {
selected: Record;
setSelected: (category: string, selected: string[]) => void;
- }) => (
-
- setSelected("areas", vals)}
- />
- setSelected("skills", vals)}
- />
- setSelected("roles", vals)}
- />
-
- ),
+ }) => {
+ const activeCount = Object.values(selected).reduce(
+ (acc, curr) => acc + curr.length,
+ 0,
+ );
+
+ return (
+
+ setSelected("areas", vals)}
+ />
+ setSelected("skills", vals)}
+ />
+ setSelected("roles", vals)}
+ />
+
+ );
+ },
);
FilterDropdown.displayName = "FilterDropdown";