MCPcopy Create free account
hub / github.com/fontsource/fontsource / LanguagesDropdown

Function LanguagesDropdown

website/app/components/search/Dropdowns.tsx:37–80  ·  view source on GitHub ↗
({ state$ }: LanguagesDropdownProps)

Source from the content-addressed store, hash-verified

35};
36
37const LanguagesDropdown = ({ state$ }: LanguagesDropdownProps) => {
38 const { items, refine, searchForItems } = useRefinementList({
39 attribute: 'subsets',
40 operator: 'and',
41 sortBy: ['isRefined', 'count:desc'],
42 limit: 100,
43 transformItems: transformSubsets,
44 });
45
46 const refinedItems = items.filter((item) => item.isRefined);
47
48 const label = () => {
49 if (refinedItems.length === 1) {
50 return refinedItems[0].label;
51 }
52
53 if (refinedItems.length > 1) {
54 return `${refinedItems[0].label} + ${refinedItems.length - 1}`;
55 }
56
57 if (items.length === 0) {
58 return 'No languages';
59 }
60
61 return 'All languages';
62 };
63
64 const refineLanguage = (value: string) => {
65 refine(value);
66 state$.language.set(
67 refinedItems.some((item) => item.value === value) ? 'latin' : value,
68 );
69 };
70
71 return (
72 <DropdownCheckbox
73 label={label()}
74 items={items}
75 refine={refineLanguage}
76 showCount
77 search={searchForItems}
78 />
79 );
80};
81
82const CategoriesDropdown = () => {
83 const { items, refine } = useMenu({

Callers

nothing calls this directly

Calls 1

labelFunction · 0.85

Tested by

no test coverage detected