/
DevMaster
/
my_cv
Обзор
Документация
Войти
/
DevMaster
/
my_cv
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/components/projects/ProjectsGrid.jsx
146 строк
5 KB
Oleg Kulichkov
add project
12 июн 2025, 01:54
12 июн 2025, 01:54
b41c182
Код
Авторство
О чём код?
import { useContext } from "react"; import { FiSearch } from "react-icons/fi"; import ProjectSingle from "./ProjectSingle"; import { ProjectsContext } from "../../context/ProjectsContext"; import ProjectsFilter from "./ProjectsFilter"; import bg_github from "../../assets/bg_github.png"; const ProjectsGrid = () => { const { projects, searchProject, setSearchProject, searchProjectsByTitle, selectProject, setSelectProject, selectProjectsByCategory, } = useContext(ProjectsContext); return ( <section className="py-5 sm:py-10 mt-5 sm:mt-10"> <div className="text-center"> <p className="font-general-medium text-2xl sm:text-4xl mb-1 text-ternary-dark dark:text-ternary-light"> Мои проекты </p> </div> <div className="mt-10 sm:mt-16"> <h3 className="font-general-regular text-center text-secondary-dark dark:text-ternary-light text-md sm:text-xl mb-3 " > Ищите проекты по названию или фильтруйте по категории </h3> <div className=" flex justify-between border-b border-primary-light dark:border-secondary-dark pb-3 gap-3 " > <div className="flex justify-between gap-2"> <span className=" hidden sm:block bg-primary-light dark:bg-ternary-dark p-2.5 shadow-sm rounded-xl cursor-pointer " > <FiSearch className="text-ternary-dark dark:text-ternary-light w-5 h-5"></FiSearch> </span> <input onChange={(e) => { setSearchProject(e.target.value); }} className="font-general-medium pl-3 pr-1 sm:px-4 py-2 border border-gray-200 dark:border-secondary-dark rounded-lg text-sm sm:text-md bg-secondary-light dark:bg-ternary-dark text-primary-dark dark:text-ternary-light " id="name" name="name" type="search" required="" placeholder="Найти проект" aria-label="Name" /> </div> <ProjectsFilter setSelectProject={setSelectProject} /> </div> </div> <div className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 mt-6 sm:gap-10"> {selectProject ? selectProjectsByCategory.map((project) => ( <ProjectSingle project={project} title={project.title} category={project.category} image={ project.url_background != null ? project.url_background : bg_github } key={project.id} /> )) : searchProject ? searchProjectsByTitle.map((project) => ( <ProjectSingle project={project} title={project.title} category={project.category} image={ project.url_background != null ? project.url_background : bg_github } key={project.id} /> )) : projects .sort((a, b) => b.id - a.id) .map((project) => ( <ProjectSingle project={project} title={project.title} category={project.category} image={ project.url_background != null ? project.url_background : bg_github } key={project.id} /> ))} </div> </section> ); }; export default ProjectsGrid;