UNPKG

@foxeian/react-read-more

Version:

A React.js package for creating short text with a "read more" button to expand the text, built with TypeScript support. This package provides a simple and easy-to-use component for truncating and expanding text with a customizable button.

116 lines (92 loc) 3.81 kB
<p align="center"> <a href="https://github.com/foxeian/react-read-more"> <picture> <img alt="Foxeian Logo" src=".github/images/foxeian-readme-logo.png" height=200> </picture> </a> </p> # React Read More <p align="center"> <picture> <img alt="ScreenGIF" src=".github/images/foxeian-readme-screen.gif" height=500> </picture> </p> <p align="center"> <a href="#quickstart">Quickstart</a> | <a href="#installation">Installation</a> | <a href="#example-of-readmorearea-customize">Examples</a> | <a href="#parameters">Parameters</a> </p> ## About **React Read More** A React.js package for creating short text with a "read more" button to expand the text, built with TypeScript support. This package provides a simple and easy-to-use component for truncating and expanding text with a customizable button. ### Features - Support Typescript - Every part of component (container, text, button) is customizable - It works with Server-side components (SSR) - Support classes (Tailwind, Bootstrap, etc...) - Easy-to-use ## Getting Started ### Installation To install the package: ```bash npm install @foxeian/react-read-more ``` ### Quickstart example of 'ReadMoreArea' in React Component ```tsx import React from 'react'; import ReadMoreArea from '@foxeian/react-read-more'; export default function App() { return ( <ReadMoreArea lettersLimit={100} // limit of letters (100 letters) > Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. </ReadMoreArea> ); } ); ``` ## Example of 'ReadMoreArea' customize ```tsx import React from 'react'; import ReadMoreArea from '@foxeian/react-read-more'; const buttonStyle = { color: "blue", fontSize: "1rem", padding: "1.5rem", // Add any other CSS styles as needed }; export default function App() { return ( <ReadMoreArea className="flex flex-col" // classes styles of main div (tailwind) style={{ display: 'flex', flexDirection: 'column' }} // inline styles of main div expandLabel="Read more" // Expand Label collapseLabel="Read less" // Collapse Label textClassName="text-lg text-black" // classes styles of text (tailwind) textStyle={{ fontSize: '1rem', color: 'black' }} // inline styles of text buttonClassName="text-base text-green-700 p-6" // classes styles of button (tailwind) buttonStyle={buttonStyle} // inline styles of button lettersLimit={100} // limit of letters (100 letters) > Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. </ReadMoreArea> ); } ); ``` ### Parameters | Name | Description | Type | Default value | | --------------- | :------------------------- | :------------- | :------------ | | className | classes styles of main div | string | null | | style | inline styles of main div | CSS Properties | null | | expandLabel | Expand Label | number | `Read more` | | collapseLabel | Collapse Label | string | `Read less` | | textClassName | classes styles of text | string | null | | textStyle | inline styles of text | CSS Properties | null | | buttonClassName | classes styles of button | string | null | | buttonStyle | inline styles of button | CSS Properties | null | | lettersLimit | limit of letters | number | 500 | ## License MIT © [Immanuel Ehsan](https://github.com/foxeian)