Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

react-simple-accordion-ui

Package Overview
Dependencies
Maintainers
0
Versions
5
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

react-simple-accordion-ui

A flexible and customizable accordion component for React applications.

  • 1.0.4
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
7
increased by600%
Maintainers
0
Weekly downloads
 
Created
Source

React Simple Accordion UI

A flexible and customizable accordion component for React applications.

Features

  • Easy to use and integrate
  • Supports single or multiple open items
  • Customizable styling
  • Accessible (follows WAI-ARIA practices)
  • Typescript support

Installation

Install the package using npm:

npm install react-simple-accordion-ui

Or using yarn:

yarn add react-simple-accordion-ui

Usage

Here's a basic example of how to use the Accordion component:

import { Accordion } from 'react-simple-accordion-ui';

const App = () => {
  const items = [
    {
      title: "Simple Title",
      content: <p>This is a simple content with a React component.</p>,
      action: (isActive) => (
        <button>{isActive ? "Hide" : "Show"}</button>
      ),
    },
    {
      title: (
        <p>
          This title is a React component title
        </p>
      ),
      content: (
        <div>
          <p>This content is also a React component.</p>
          <p>It can contain multiple elements and even other components.</p>
          <a href="https://www.google.com">Another link to Google</a>
        </div>
      ),
    },
    {
      title: "Title with Default Toggle",
      content: (
        <p>
          This item uses the default toggle button instead of a custom action.
          The content can be as complex as you need.
        </p>
      ),
    },
  ];

  return (
    <Accordion
      items={items}
      allowMultiple={true}
      duration={300}
      easing="ease-in-out"
    />
  );
};

export default App;

Here are some basic styles for the component.

.RSA__AccordionWrapper {
  &__Item {
    border-radius: 6px;
    background-color: #fff;
    border: 1px solid #e5e5e5;

    &:not(:last-child) {
      margin-bottom: 20px;
    }

    &__Header {
      display: flex;
      align-items: center;
      padding: 20px;
      overflow: hidden;
      color: #333;

      > span {
        margin-left: auto;
      }
    }

    &__Content {
      border-top: 1px solid #ccc;

      &__ContentContainer {
        &__Wrapper {
          padding: 20px;
        }
      }
    }
  }
}

Props

The Accordion component accepts the following props:

PropTypeDefaultDescription
allowMultiplebooleantrueIf true, multiple accordion items can be expanded at once. If false, only one item can be expanded at a time.
classNamestringSpecify a custom className for the wrapper.
durationnumberThe duration of the expand/collapse animation in milliseconds. If not provided, no transition is applied.
easingstringThe easing function for the expand/collapse animation. Any valid CSS transition timing function can be used.
itemsArrayRequiredAn array of objects representing the accordion items. Each object should have a title and content property.

Item Object Properties

Each item in the items array should be an object with the following properties:

PropertyTypeDescription
titleReactNodeThe title of the accordion item. Can be a string or a React component.
contentReactNodeThe content of the accordion item. Can be a string or a React component.
actionfunction(Optional) A custom function to render the expand/collapse action. If provided, it overrides the default toggle button.

Styling

The component uses CSS modules for styling. You can override the default styles by targeting the following classes:

  • .RSA__AccordionWrapper: The main wrapper for the accordion
  • .RSA__AccordionWrapper__Item: Each accordion item
  • .RSA__AccordionWrapper__Item__Header: The header of each accordion item
  • .RSA__AccordionWrapper__Item__Content: The content wrapper of each accordion item
  • .RSA__AccordionWrapper__Item__Content__ContentContainer: The inner content container
  • .RSA__AccordionWrapper__Item__Content__ContentContainer__Wrapper: The innermost content wrapper

Additionally, the following modifier class is applied to active items:

  • .active: Applied to the accordion item when it's expanded

Accessibility

This component follows WAI-ARIA practices for accordions:

  • The accordion header buttons are keyboard accessible
  • aria-expanded is used to indicate the expanded state
  • aria-hidden is used to hide the content when collapsed

TypeScript

This component is written in TypeScript and includes type definitions. The main types you might need are:

interface IAccordionProps {
  allowMultiple?: boolean;
  duration?: number;
  easing?: string;
  items: Array<{
    title: ReactNode;
    content: ReactNode;
    action?: (isActive: boolean) => ReactNode;
  }>;
}

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

This project is licensed under the MIT License.

Keywords

FAQs

Package last updated on 07 Aug 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc