From 8c00d5d0791038c7893083a60bb3842423e052a6 Mon Sep 17 00:00:00 2001 From: Daniel Gonzalez Date: Sat, 11 Oct 2025 18:00:43 -0400 Subject: [PATCH] feat(NFTs): Added categories dropdown to nfts page --- .../app-body/nfts-for-sale/filter-dropdown.js | 41 +++++++++++++++++++ .../app-body/nfts-for-sale/index.js | 9 +++- .../content-creators/content-creators-list.js | 27 +++--------- .../nostr/content-creators/filter-dropdown.js | 31 ++++++++++++++ 4 files changed, 85 insertions(+), 23 deletions(-) create mode 100644 src/components/app-body/nfts-for-sale/filter-dropdown.js create mode 100644 src/components/app-body/nostr/content-creators/filter-dropdown.js diff --git a/src/components/app-body/nfts-for-sale/filter-dropdown.js b/src/components/app-body/nfts-for-sale/filter-dropdown.js new file mode 100644 index 0000000..664de79 --- /dev/null +++ b/src/components/app-body/nfts-for-sale/filter-dropdown.js @@ -0,0 +1,41 @@ +import React from 'react' +import { Dropdown } from 'react-bootstrap' +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome' +import { faFilter } from '@fortawesome/free-solid-svg-icons' + +function FilterDropdown (props) { + const { selectedFilter, setSelectedFilter } = props + + return ( + + + + {selectedFilter} + + + + setSelectedFilter('Art')}> + Art + + setSelectedFilter('Video')}> + Video + + setSelectedFilter('Writing')}> + Writing + + setSelectedFilter('Download')}> + Download + + setSelectedFilter('Misc')}> + Misc + + + + ) +} + +export default FilterDropdown diff --git a/src/components/app-body/nfts-for-sale/index.js b/src/components/app-body/nfts-for-sale/index.js index 74a6976..6f922dc 100644 --- a/src/components/app-body/nfts-for-sale/index.js +++ b/src/components/app-body/nfts-for-sale/index.js @@ -20,6 +20,7 @@ import { faRedo } from '@fortawesome/free-solid-svg-icons' // Local libraries import config from '../../../config' import TokenCard from './token-card' +import FilterDropdown from './filter-dropdown' // Global variables and constants const SERVER = config.dexServer @@ -35,6 +36,7 @@ function NftsForSale (props) { const [dataAreLoaded, setDataAreLoaded] = useState(false) const [currentPage, setCurrentPage] = useState(0) const [totalPages, setTotalPages] = useState(0) + const [selectedFilter, setSelectedFilter] = useState('Art') // Handler for previous page const handlePreviousPage = () => { @@ -304,6 +306,9 @@ function NftsForSale (props) {

NFTs for Sale

+ + + @@ -339,7 +344,7 @@ function NftsForSale (props) { {/* Pagination Controls */} {offersAreLoaded && totalPages > 1 && ( -
-
- - - - {selectedFilter} - - - - setSelectedFilter('Most Followers')}> - Most Followers - - setSelectedFilter('Most Tokens')}> - Most Tokens - - setSelectedFilter('Most Likes')}> - Most Likes - - - +
{!loaded && ( diff --git a/src/components/app-body/nostr/content-creators/filter-dropdown.js b/src/components/app-body/nostr/content-creators/filter-dropdown.js new file mode 100644 index 0000000..61a99a3 --- /dev/null +++ b/src/components/app-body/nostr/content-creators/filter-dropdown.js @@ -0,0 +1,31 @@ +import React from 'react' +import { Dropdown } from 'react-bootstrap' +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome' +import { faFilter } from '@fortawesome/free-solid-svg-icons' + +function FilterDropdown (props) { + const { selectedFilter, setSelectedFilter } = props + + return ( + + + + {selectedFilter} + + + + setSelectedFilter('Most Followers')}> + Most Followers + + setSelectedFilter('Most Tokens')}> + Most Tokens + + setSelectedFilter('Most Likes')}> + Most Likes + + + + ) +} + +export default FilterDropdown