import { Box, Text } from "ink"; import { TextInput } from "@inkjs/ui"; import { useStore } from "../state/store.tsx"; import { setFilter } from "../state/actions.ts"; import { ViewModeIndicator } from "./ViewModeIndicator.tsx"; import { palette } from "../ui/theme.ts"; export function FilterBar() { const { state, dispatch } = useStore(); const { filterText, mode, sortBy, sortDirection, viewMode, isLoadingGitHub, githubError, quickFilter, languageFilter, } = state; const isFilterMode = mode === "filter"; const sortArrow = sortDirection === "desc" ? "↓" : "↑"; return ( {/* View mode indicator */} {/* Filter input */} Filter: {isFilterMode ? ( dispatch(setFilter(value))} placeholder="type to filter..." /> ) : ( {filterText || "(press / to filter)"} )} {/* Active filters summary */} {quickFilter !== "all" && ( [{quickFilter}] )} {languageFilter && ( Lang:{languageFilter} )} {/* Sort indicator */} Sort: {sortBy} {sortArrow} (press s to change) ); }