diff --git a/src/webapp/app/(dashboard)/profile/[handle]/(withHeader)/collections/page.tsx b/src/webapp/app/(dashboard)/profile/[handle]/(withHeader)/collections/page.tsx index ee1c055e..b8ce7660 100644 --- a/src/webapp/app/(dashboard)/profile/[handle]/(withHeader)/collections/page.tsx +++ b/src/webapp/app/(dashboard)/profile/[handle]/(withHeader)/collections/page.tsx @@ -1,48 +1,11 @@ import CollectionsContainer from '@/features/collections/containers/collectionsContainer/CollectionsContainer'; -import { Group, Container } from '@mantine/core'; -import { IoSearch } from 'react-icons/io5'; -import { - CollectionFiltersRoot, - CollectionFiltersSortSelect, - CollectionFiltersViewToggle, -} from '@/features/collections/components/collectionFilters/CollectionFilters'; -import { Fragment } from 'react'; -import { CollectionSortField } from '@semble/types'; -import { LinkButton } from '@/components/link/MantineLink'; interface Props { params: Promise<{ handle: string }>; - searchParams: Promise<{ collectionSort?: string }>; } export default async function Page(props: Props) { - const [{ handle }, { collectionSort }] = await Promise.all([ - props.params, - props.searchParams, - ]); + const { handle } = await props.params; - const sort = - (collectionSort as CollectionSortField) ?? CollectionSortField.UPDATED_AT; - - return ( - - - - - - - - } - > - Search - - - - - - ); + return ; } diff --git a/src/webapp/features/collections/containers/collectionsContainer/CollectionsContainer.tsx b/src/webapp/features/collections/containers/collectionsContainer/CollectionsContainer.tsx index 8e719248..8b4d8f94 100644 --- a/src/webapp/features/collections/containers/collectionsContainer/CollectionsContainer.tsx +++ b/src/webapp/features/collections/containers/collectionsContainer/CollectionsContainer.tsx @@ -1,20 +1,56 @@ -import { Container, Stack } from '@mantine/core'; -import { Suspense } from 'react'; +'use client'; + +import { CloseButton, Container, Group, Stack, TextInput } from '@mantine/core'; +import { Suspense, useState } from 'react'; import CollectionsContainerContent from '../collectionsContainerContent/CollectionsContainerContent'; import CollectionsContainerContentSkeleton from '../collectionsContainerContent/Skeleton.collectionsContainerContent'; +import { CollectionFilters } from '../../components/collectionFilters/CollectionFilters'; +import { IoSearch } from 'react-icons/io5'; +import { useDebouncedValue } from '@mantine/hooks'; interface Props { handle: string; } export default function CollectionsContainer(props: Props) { + const [search, setSearch] = useState(''); + const [debouncedSearch] = useDebouncedValue(search, 300); + return ( - - - }> - - - + + + + + + + } + rightSection={ + setSearch('')} + style={{ display: search ? undefined : 'none' }} + /> + } + radius={'xl'} + value={search} + onChange={(e) => setSearch(e.currentTarget.value)} + w={160} + /> + + + + + }> + + + + ); } diff --git a/src/webapp/features/collections/containers/collectionsContainer/Skeleton.CollectionsContainer.tsx b/src/webapp/features/collections/containers/collectionsContainer/Skeleton.CollectionsContainer.tsx index d5308ec5..630475c5 100644 --- a/src/webapp/features/collections/containers/collectionsContainer/Skeleton.CollectionsContainer.tsx +++ b/src/webapp/features/collections/containers/collectionsContainer/Skeleton.CollectionsContainer.tsx @@ -4,10 +4,10 @@ import CollectionCardSkeleton from '../../components/collectionCard/Skeleton.Col export default function CollectionsContainerSkeleton() { return ( - + - + diff --git a/src/webapp/features/collections/containers/collectionsContainerContent/CollectionsContainerContent.tsx b/src/webapp/features/collections/containers/collectionsContainerContent/CollectionsContainerContent.tsx index 21c56e3a..259b9ef3 100644 --- a/src/webapp/features/collections/containers/collectionsContainerContent/CollectionsContainerContent.tsx +++ b/src/webapp/features/collections/containers/collectionsContainerContent/CollectionsContainerContent.tsx @@ -14,6 +14,7 @@ import { useSearchParams } from 'next/navigation'; interface Props { handle: string; + query?: string; } export default function CollectionsContainerContent(props: Props) { @@ -26,6 +27,7 @@ export default function CollectionsContainerContent(props: Props) { useCollections({ didOrHandle: props.handle, sortBy, + query: props.query, }); const { settings } = useUserSettings();