This repository has no description
0

Configure Feed

Select the types of activity you want to include in your feed.

semble / src / webapp / features / collections / containers / collectionsContainer / CollectionsContainer.tsx
1.9 kB 56 lines
1'use client'; 2 3import { CloseButton, Container, Group, Stack, TextInput } from '@mantine/core'; 4import { Suspense, useState } from 'react'; 5import CollectionsContainerContent from '../collectionsContainerContent/CollectionsContainerContent'; 6import CollectionsContainerContentSkeleton from '../collectionsContainerContent/Skeleton.collectionsContainerContent'; 7import { CollectionFilters } from '../../components/collectionFilters/CollectionFilters'; 8import { IoSearch } from 'react-icons/io5'; 9import { useDebouncedValue } from '@mantine/hooks'; 10 11interface Props { 12 handle: string; 13} 14 15export default function CollectionsContainer(props: Props) { 16 const [search, setSearch] = useState(''); 17 const [debouncedSearch] = useDebouncedValue(search, 300); 18 19 return ( 20 <Container p={0} size={'xl'}> 21 <Group justify="space-between" gap="xs" px="xs" pt="xs"> 22 <CollectionFilters.Root> 23 <CollectionFilters.SortSelect /> 24 <CollectionFilters.ViewToggle /> 25 </CollectionFilters.Root> 26 <TextInput 27 variant="filled" 28 placeholder="Search..." 29 leftSection={<IoSearch />} 30 rightSection={ 31 <CloseButton 32 aria-label="Clear input" 33 onClick={() => setSearch('')} 34 style={{ display: search ? undefined : 'none' }} 35 /> 36 } 37 radius={'xl'} 38 value={search} 39 onChange={(e) => setSearch(e.currentTarget.value)} 40 w={160} 41 /> 42 </Group> 43 44 <Container p="xs" size="xl"> 45 <Stack> 46 <Suspense fallback={<CollectionsContainerContentSkeleton />}> 47 <CollectionsContainerContent 48 handle={props.handle} 49 query={debouncedSearch || undefined} 50 /> 51 </Suspense> 52 </Stack> 53 </Container> 54 </Container> 55 ); 56}