Files
blitzkit/packages/website-ue/src/components/AvatarControls/index.tsx
T

40 lines
984 B
TypeScript
Raw Normal View History

2026-01-15 14:13:34 -06:00
import { MagnifyingGlassIcon } from "@radix-ui/react-icons";
2026-01-16 20:13:56 -06:00
import { useCallback, useEffect, useRef } from "react";
2026-01-15 14:13:34 -06:00
import { useStrings } from "../../hooks/useStrings";
2026-01-15 14:30:40 -06:00
import { Avatars } from "../../stores/avatars";
2026-01-15 14:13:34 -06:00
import { TextField } from "../TextField";
import "./index.css";
export function AvatarControls() {
const strings = useStrings();
2026-01-15 14:30:40 -06:00
const search = useRef<HTMLInputElement>(null);
2026-01-15 14:13:34 -06:00
2026-01-16 20:13:56 -06:00
const onChange = useCallback(() => {
if (!search.current) return;
const trimmed = search.current.value.trim();
Avatars.mutate((draft) => {
if (trimmed.length === 0) {
draft.search = null;
} else {
draft.search = trimmed;
}
});
}, []);
useEffect(onChange, []);
2026-01-15 14:13:34 -06:00
return (
2026-01-15 14:30:40 -06:00
<div className="avatar-controls">
<TextField
ref={search}
className="search"
placeholder={strings.avatars.search}
2026-01-16 20:14:47 -06:00
onChange={onChange}
2026-01-15 14:30:40 -06:00
>
2026-01-15 14:13:34 -06:00
<MagnifyingGlassIcon />
</TextField>
</div>
);
}