diff --git a/src/plays/accordian/Accordian.jsx b/src/plays/accordian/Accordian.jsx new file mode 100644 index 0000000000..bae8196cae --- /dev/null +++ b/src/plays/accordian/Accordian.jsx @@ -0,0 +1,38 @@ +import React, { useState } from 'react'; +import PlayHeader from 'common/playlists/PlayHeader'; +import AccordionData from './AccordianData'; +import './styles.css'; +import { accordionData } from './data'; + +// WARNING: Do not change the entry componenet name +function Accordian(props) { + const [activeAccordion, setActiveAccordion] = useState(null); + const handleAccordionClick = (index) => { + setActiveAccordion(index === activeAccordion ? null : index); + }; + + return ( + <> +
+ +
+ {/* Your Code Starts Here */} +
+ {accordionData.map(({ title, content }, index) => ( + handleAccordionClick(index)} + /> + ))} +
+ {/* Your Code Ends Here */} +
+
+ + ); +} + +export default Accordian; diff --git a/src/plays/accordian/AccordianData.jsx b/src/plays/accordian/AccordianData.jsx new file mode 100644 index 0000000000..43b3a224ba --- /dev/null +++ b/src/plays/accordian/AccordianData.jsx @@ -0,0 +1,13 @@ +function AccordionData({ title, content, isActive, onClick }) { + return ( +
+
+
{title}
+
{isActive ? '-' : '+'}
+
+ {isActive &&
{content}
} +
+ ); +} + +export default AccordionData; diff --git a/src/plays/accordian/Readme.md b/src/plays/accordian/Readme.md new file mode 100644 index 0000000000..094d5c5299 --- /dev/null +++ b/src/plays/accordian/Readme.md @@ -0,0 +1,14 @@ +# Accordian + +When you click on a section, it opens up to show more details, and when you click again, it closes to keep things tidy and prevent information overload. + +## Play Demographic + +- Language: js +- Level: Intermediate + +## Creator Information + +- User: clavy123 +- Gihub Link: https://github.com/clavy123 + diff --git a/src/plays/accordian/cover.png b/src/plays/accordian/cover.png new file mode 100644 index 0000000000..d97574f05b Binary files /dev/null and b/src/plays/accordian/cover.png differ diff --git a/src/plays/accordian/data.js b/src/plays/accordian/data.js new file mode 100644 index 0000000000..03626e1032 --- /dev/null +++ b/src/plays/accordian/data.js @@ -0,0 +1,36 @@ +export const accordionData = [ + { + title: 'Section 1', + content: `Lorem ipsum dolor, sit amet consectetur adipisicing elit. Quis sapiente + laborum cupiditate possimus labore, hic temporibus velit dicta earum + suscipit commodi eum enim atque at? Et perspiciatis dolore iure + voluptatem.` + }, + { + title: 'Section 2', + content: `Lorem ipsum, dolor sit amet consectetur adipisicing elit. Mollitia veniam + reprehenderit nam assumenda voluptatem ut. Ipsum eius dicta, officiis + quaerat iure quos dolorum accusantium ducimus in illum vero commodi + pariatur? Impedit autem esse nostrum quasi, fugiat a aut error cumque + quidem maiores doloremque est numquam praesentium eos voluptatem amet! + Repudiandae, mollitia id reprehenderit a ab odit!` + }, + { + title: 'Section 3', + content: `Sapiente expedita hic obcaecati, laboriosam similique omnis architecto ducimus magnam accusantium corrupti + quam sint dolore pariatur perspiciatis, necessitatibus rem vel dignissimos + dolor ut sequi minus iste? Quas?` + }, + { + title: 'Section 4', + content: `Sapiente expedita hic obcaecati, laboriosam similique omnis architecto ducimus magnam accusantium corrupti + quam sint dolore pariatur perspiciatis, necessitatibus rem vel dignissimos + dolor ut sequi minus iste? Quas?` + }, + { + title: 'Section 5', + content: `Sapiente expedita hic obcaecati, laboriosam similique omnis architecto ducimus magnam accusantium corrupti + quam sint dolore pariatur perspiciatis, necessitatibus rem vel dignissimos + dolor ut sequi minus iste? Quas?` + } +]; diff --git a/src/plays/accordian/styles.css b/src/plays/accordian/styles.css new file mode 100644 index 0000000000..8b63d271ae --- /dev/null +++ b/src/plays/accordian/styles.css @@ -0,0 +1,37 @@ +.accordion { + max-width: 600px; + margin: 2rem auto; + } + + .accordion-item { + border: 1px solid #ccc; + border-radius: 0.5rem; + margin-bottom: 1rem; + overflow: hidden; + } + + .accordion-title { + display: flex; + justify-content: space-between; + align-items: center; + padding: 1rem; + background-color: #f0f0f0; + cursor: pointer; + transition: background-color 0.3s ease; + } + + .accordion-title:hover { + background-color: #e0e0e0; + } + + .accordion-content { + padding: 1rem; + background-color: #ffffff; + } + + @media screen and (max-width: 768px) { + .accordion { + width: 90%; + } + } + \ No newline at end of file