Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/bunlong/next-share
Social media share buttons and share counts for your next React apps.
https://github.com/bunlong/next-share
create-react-app javascript next next-share nextjs nextjs-plugin react react-share reactjs sharing social-media social-share social-share-buttons typescript
Last synced: 4 days ago
JSON representation
Social media share buttons and share counts for your next React apps.
- Host: GitHub
- URL: https://github.com/bunlong/next-share
- Owner: Bunlong
- License: mit
- Created: 2020-07-27T16:04:19.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2024-06-27T18:29:36.000Z (6 months ago)
- Last Synced: 2024-12-20T08:04:03.305Z (6 days ago)
- Topics: create-react-app, javascript, next, next-share, nextjs, nextjs-plugin, react, react-share, reactjs, sharing, social-media, social-share, social-share-buttons, typescript
- Language: TypeScript
- Homepage: https://next-share.js.org
- Size: 501 KB
- Stars: 246
- Watchers: 5
- Forks: 35
- Open Issues: 40
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Support: supports/create-next-app/.eslintrc.json
Awesome Lists containing this project
README
# next-share
Social media share buttons for your next React apps.
[![downloads](https://img.shields.io/npm/dm/next-share.svg?label=monthly%20downloads)](https://www.npmjs.com/package/next-share) [![downloads](https://img.shields.io/npm/dt/next-share.svg?label=total%20downloads)](https://www.npmjs.com/package/next-share)
[![NPM](https://img.shields.io/npm/v/next-share.svg)](https://www.npmjs.com/package/next-share) ![npm bundle size](https://img.shields.io/bundlephobia/min/next-share) [![Build Status](https://api.travis-ci.com/Bunlong/next-share.svg?branch=master)](https://travis-ci.com/Bunlong/next-share) [![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://standardjs.com)
## 🎁 Features
* No dependencies
* Compatible with both JavaScript and TypeScript
* Share buttons for your next React app
* Line
* Telegram
* Tumblr
* Viber
* VKShare
* Mailru
* Livejournal
* Workplace
* Instapaper
* Hatena
* FacebookMessenger
* Gab
* Share counts
* FacebookShareCount
* HatenaShareCount
* OKShareCount
* PinterestShareCount
* TumblrShareCount
* VKShareCount
* Icons## 🔧 Install
next-share is available on npm. It can be installed with the following command:
```
npm install next-share --save
```next-share is available on yarn as well. It can be installed with the following command:
```
yarn add next-share --save
```## 💡 Usage of ShareButton
#### 👨💻 Code
```js
import {
FacebookShareButton,
FacebookIcon,
} from 'next-share'
```
#### 📖 FacebookShareButton Props
| Props | Type | Default | Description | Required |
| :--- | :--- | :--- | :--- | :--- |
| children | node | | React component, HTML element or string. | ✅ |
| url | string | | The URL of the shared page. | ✅ |
| quote | string | | A quote to be shared. | ❌ |
| hashtag | string | | Hashtag to be shared. | ❌ |
| windowWidth | number | 550 | Opened window width. | ❌ |
| windowHeight | number | 400 | Opened window height. | ❌ |
| blankTarget | boolean | false | Open share window in a new tab if set to `true`. | ❌ |#### 📖 [FacebookIcon Props](https://github.com/Bunlong/next-share#-icons-props)
### 🎀 Line
#### 👨💻 Code
```js
import {
LineShareButton,
LineIcon,
} from 'next-share'
```
#### 📖 LineShareButton Props
| Props | Type | Default | Description | Required |
| :--- | :--- | :--- | :--- | :--- |
| children | node | | React component, HTML element or string. | ✅ |
| url | string | | The URL of the shared page. | ✅ |
| title | string | | The title of the shared page. | ❌ |
| windowWidth | number | 500 | Opened window width. | ❌ |
| windowHeight | number | 500 | Opened window height. | ❌ |
| blankTarget | boolean | false | Open share window in a new tab if set to `true`. | ❌ |#### 📖 [LineIcon props](https://github.com/Bunlong/next-share#-icons-props)
#### 👨💻 Code
```js
import {
PinterestShareButton,
PinterestIcon,
} from 'next-share'
```
#### 📖 PinterestShareButton Props
| Props | Type | Default | Description | Required |
| :--- | :--- | :--- | :--- | :--- |
| children | node | | React component, HTML element or string. | ✅ |
| url | string | | The URL of the shared page. | ✅ |
| media | string | | The image URL that will be pinned. | ✅ |
| description | string | | The description of the shared media. | ❌ |
| windowWidth | number | 1000 | Opened window width. | ❌ |
| windowHeight | number | 730 | Opened window height. | ❌ |
| blankTarget | boolean | false | Open share window in a new tab if set to `true`. | ❌ |#### 📖 [PinterestIcon Props](https://github.com/Bunlong/next-share#-icons-props)
#### 👨💻 Code
```js
import {
RedditShareButton,
RedditIcon,
} from 'next-share'
```
#### 📖 RedditShareButton Props
| Props | Type | Default | Description | Required |
| :--- | :--- | :--- | :--- | :--- |
| children | node | | React component, HTML element or string. | ✅ |
| url | string | | The URL of the shared page. | ✅ |
| title | string | | The title of the shared page. | ❌ |
| windowWidth | number | 660 | Opened window width. | ❌ |
| windowHeight | number | 460 | Opened window height. | ❌ |
| blankTarget | boolean | false | Open share window in a new tab if set to `true`. | ❌ |#### 📖 [RedditIcon Props](https://github.com/Bunlong/next-share#-icons-props)
### 🎀 Telegram
#### 👨💻 Code
```js
import {
TelegramShareButton,
TelegramIcon,
} from 'next-share'
```
#### 📖 TelegramShareButton Props
| Props | Type | Default | Description | Required |
| :--- | :--- | :--- | :--- | :--- |
| children | node | | React component, HTML element or string. | ✅ |
| url | string | | The URL of the shared page. | ✅ |
| title | string | | The title of the shared page. | ❌ |
| windowWidth | number | 550 | Opened window width. | ❌ |
| windowHeight | number | 400 | Opened window height. | ❌ |
| blankTarget | boolean | false | Open share window in a new tab if set to `true`. | ❌ |#### 📖 [TelegramIcon Props](https://github.com/Bunlong/next-share#-icons-props)
### 🎀 Tumblr
#### 👨💻 Code
```js
import {
TumblrShareButton,
TumblrIcon,
} from 'next-share'
```
#### 📖 TumblrShareButton Props
| Props | Type | Default | Description | Required |
| :--- | :--- | :--- | :--- | :--- |
| children | node | | React component, HTML element or string. | ✅ |
| url | string | | The URL of the shared page. | ✅ |
| title | string | | The title of the shared page. | ❌ |
| tags |Array<string>
| | | ❌ |
| caption | string | | The description of the shared page. | ❌ |
| posttype | string |link
| | ❌ |
| windowWidth | number | 660 | Opened window width. | ❌ |
| windowHeight | number | 460 | Opened window height. | ❌ |
| blankTarget | boolean | false | Open share window in a new tab if set to `true`. | ❌ |#### 📖 [TumblrIcon Props](https://github.com/Bunlong/next-share#-icons-props)
#### 👨💻 Code
```js
import {
TwitterShareButton,
TwitterIcon,
} from 'next-share'
```
#### 📖 TwitterShareButton Props
| Props | Type | Default | Description | Required |
| :--- | :--- | :--- | :--- | :--- |
| children | node | | React component, HTML element or string. | ✅ |
| url | string | | The URL of the shared page. | ✅ |
| title | string | | The title of the shared page. | ❌ |
| via | string | | | ❌ |
| hashtags | array | | | ❌ |
| related | array | | | ❌ |
| windowWidth | number | 550 | Opened window width. | ❌ |
| windowHeight | number | 400 | Opened window height. | ❌ |
| blankTarget | boolean | false | Open share window in a new tab if set to `true`. | ❌ |#### 📖 [TwitterIcon Props](https://github.com/Bunlong/next-share#-icons-props)
### 🎀 Viber
#### 👨💻 Code
```js
import {
ViberShareButton,
ViberIcon,
} from 'next-share'
```
#### 📖 ViberShareButton Props
| Props | Type | Default | Description | Required |
| :--- | :--- | :--- | :--- | :--- |
| children | node | | React component, HTML element or string. | ✅ |
| url | string | | The URL of the shared page. | ✅ |
| title | string | | The title of the shared page. | ❌ |
| separator | | | | ❌ |
| windowWidth | number | 660 | Opened window width. | ❌ |
| windowHeight | number | 460 | Opened window height. | ❌ |
| blankTarget | boolean | false | Open share window in a new tab if set to `true`. | ❌ |#### 📖 [ViberIcon Props](https://github.com/Bunlong/next-share#-icons-props)
#### 👨💻 Code
```js
import {
WeiboShareButton,
WeiboIcon,
} from 'next-share'
```
#### 📖 WeiboShareButton Props
| Props | Type | Default | Description | Required |
| :--- | :--- | :--- | :--- | :--- |
| children | node | | React component, HTML element or string. | ✅ |
| url | string | | The URL of the shared page. | ✅ |
| title | string | | The title of the shared page. | ❌ |
| image | string | | The image URL that will be shared. | ❌ |
| windowWidth | number | 660 | Opened window width. | ❌ |
| windowHeight | number | 550 | Opened window height. | ❌ |
| blankTarget | boolean | false | Open share window in a new tab if set to `true`. | ❌ |#### 📖 [WeiboIcon Props](https://github.com/Bunlong/next-share#-icons-props)
#### 👨💻 Code
```js
import {
WhatsappShareButton,
WhatsappIcon,
} from 'next-share'
```
#### 📖 WhatsappShareButton Props
| Props | Type | Default | Description | Required |
| :--- | :--- | :--- | :--- | :--- |
| children | node | | React component, HTML element or string. | ✅ |
| url | string | | The URL of the shared page. | ✅ |
| title | string | | The title of the shared page. | ❌ |
| separator | string | | | ❌ |
| windowWidth | number | 550 | Opened window width. | ❌ |
| windowHeight | number | 400 | Opened window height. | ❌ |
| blankTarget | boolean | false | Open share window in a new tab if set to `true`. | ❌ |#### 📖 [WhatsappIcon Props](https://github.com/Bunlong/next-share#-icons-props)
#### 👨💻 Code
```js
import {
LinkedinShareButton,
LinkedinIcon,
} from 'next-share'
```
#### 📖 LinkedinShareButton Props
| Props | Type | Default | Description | Required |
| :--- | :--- | :--- | :--- | :--- |
| children | node | | React component, HTML element or string. | ✅ |
| url | string | | The URL of the shared page. | ✅ |
| windowWidth | number | 750 | Opened window width. | ❌ |
| windowHeight | number | 600 | Opened window height. | ❌ |
| blankTarget | boolean | false | Open share window in a new tab if set to `true`. | ❌ |How do you use things like `title`, `summary`, etc.?
Use `og` tags in the `` block of the HTML.
```html
```
#### 📖 [LinkedinIcon Props](https://github.com/Bunlong/next-share#-icons-props)
### 🎀 VK
#### 👨💻 Code
```js
import {
VKShareButton,
VKIcon,
} from 'next-share'
```
#### 📖 VKShareButton Props
| Props | Type | Default | Description | Required |
| :--- | :--- | :--- | :--- | :--- |
| children | node | | React component, HTML element or string. | ✅ |
| url | string | | The URL of the shared page. | ✅ |
| title | string | | The title of the shared page. | ❌ |
| image | string | | An absolute link to the image that will be shared. | ❌ |
| noParse | boolean | | If true is passed, VK will not retrieve URL information. | ❌ |
| noVkLinks | boolean | | If true is passed, there will be no links to the user's profile in the open window. Only for mobile devices. | ❌ |
| windowWidth | number | 660 | Opened window width. | ❌ |
| windowHeight | number | 460 | Opened window height. | ❌ |
| blankTarget | boolean | false | Open share window in a new tab if set to `true`. | ❌ |#### 📖 [VKIcon Props](https://github.com/Bunlong/next-share#-icons-props)
### 🎀 Mailru
#### 👨💻 Code
```js
import {
MailruShareButton,
MailruIcon,
} from 'next-share'
```
#### 📖 MailruShareButton Props
| Props | Type | Default | Description | Required |
| :--- | :--- | :--- | :--- | :--- |
| children | node | | React component, HTML element or string. | ✅ |
| url | string | | The URL of the shared page. | ✅ |
| title | string | | The title of the shared page. | ❌ |
| description | string | | Description of the shared page. | ❌ |
| imageUrl | string | | Image url of the shared page. | ❌ |
| windowWidth | number | 660 | Opened window width. | ❌ |
| windowHeight | number | 460 | Opened window height. | ❌ |
| blankTarget | boolean | false | Open share window in a new tab if set to `true`. | ❌ |#### 📖 [MailruIcon Props](https://github.com/Bunlong/next-share#-icons-props)
### 🎀 Livejournal
#### 👨💻 Code
```js
import {
LivejournalShareButton,
LivejournalIcon,
} from 'next-share'
```
#### 📖 LivejournalShareButton Props
| Props | Type | Default | Description | Required |
| :--- | :--- | :--- | :--- | :--- |
| children | node | | React component, HTML element or string. | ✅ |
| url | string | | The URL of the shared page. | ✅ |
| title | string | | The title of the shared page. | ❌ |
| description | string | | Description of the shared page. | ❌ |
| windowWidth | number | 660 | Opened window width. | ❌ |
| windowHeight | number | 460 | Opened window height. | ❌ |
| blankTarget | boolean | false | Open share window in a new tab if set to `true`. | ❌ |#### 📖 [LivejournalIcon Props](https://github.com/Bunlong/next-share#-icons-props)
### 🎀 Workplace
#### 👨💻 Code
```js
import {
WorkplaceShareButton,
WorkplaceIcon,
} from 'next-share'
```
#### 📖 WorkplaceShareButton Props
| Props | Type | Default | Description | Required |
| :--- | :--- | :--- | :--- | :--- |
| children | node | | React component, HTML element or string. | ✅ |
| url | string | | The URL of the shared page. | ✅ |
| quote | string | | | ❌ |
| hashtag | string | | | ❌ |
| windowWidth | number | 550 | Opened window width. | ❌ |
| windowHeight | number | 400 | Opened window height. | ❌ |
| blankTarget | boolean | false | Open share window in a new tab if set to `true`. | ❌ |#### 📖 [WorkplaceIcon Props](https://github.com/Bunlong/next-share#-icons-props)
#### 👨💻 Code
```js
import {
PocketShareButton,
PocketIcon,
} from 'next-share'
```
#### 📖 PocketShareButton Props
| Props | Type | Default | Description | Required |
| :--- | :--- | :--- | :--- | :--- |
| children | node | | React component, HTML element or string. | ✅ |
| url | string | | The URL of the shared page. | ✅ |
| title | string | | Title of the shared page. Note that if Pocket detects a title tag on the page being saved, this parameter will be ignored and the title tag of the saved page will be used instead. | ❌ |
| windowWidth | number | 500 | Opened window width. | ❌ |
| windowHeight | number | 500 | Opened window height. | ❌ |
| blankTarget | boolean | false | Open share window in a new tab if set to `true`. | ❌ |#### 📖 [PocketIcon Props](https://github.com/Bunlong/next-share#-icons-props)
### 🎀 Instapaper
#### 👨💻 Code
```js
import {
InstapaperShareButton,
InstapaperIcon,
} from 'next-share'
```
#### 📖 InstapaperShareButton Props
| Props | Type | Default | Description | Required |
| :--- | :--- | :--- | :--- | :--- |
| children | node | | React component, HTML element or string. | ✅ |
| url | string | | The URL of the shared page. | ✅ |
| title | string | | Title of the shared page. | ❌ |
| description | string | | Description of the shared page. | ❌ |
| windowWidth | number | 500 | Opened window width. | ❌ |
| windowHeight | number | 500 | Opened window height. | ❌ |
| blankTarget | boolean | false | Open share window in a new tab if set to `true`. | ❌ |#### 📖 [InstapaperIcon Props](https://github.com/Bunlong/next-share#-icons-props)
### 🎀 Hatena
#### 👨💻 Code
```js
import {
HatenaShareButton,
HatenaIcon,
} from 'next-share'
```
#### 📖 HatenaShareButton Props
| Props | Type | Default | Description | Required |
| :--- | :--- | :--- | :--- | :--- |
| children | node | | React component, HTML element or string. | ✅ |
| url | string | | The URL of the shared page. | ✅ |
| title | string | | Title of the shared page. | ❌ |
| windowWidth | number | 660 | Opened window width. | ❌ |
| windowHeight | number | 460 | Opened window height. | ❌ |
| blankTarget | boolean | false | Open share window in a new tab if set to `true`. | ❌ |#### 📖 [HatenaIcon Props](https://github.com/Bunlong/next-share#-icons-props)
### 🎀 FacebookMessenger
#### 👨💻 Code
```js
import {
FacebookMessengerShareButton,
FacebookMessengerIcon,
} from 'next-share'
```
#### 📖 FacebookMessengerShareButton Props
| Props | Type | Default | Description | Required |
| :--- | :--- | :--- | :--- | :--- |
| children | node | | React component, HTML element or string. | ✅ |
| url | string | | The URL of the shared page. | ✅ |
| appId | string | | Facebook application id. | ✅ |
| redirectUri | string | | The URL to redirect to after sharing (default: the shared url). | ❌ |
| to | string | | A user ID of a recipient. Once the dialog comes up, the sender can specify additional people as recipients. | ❌ |
| windowWidth | number | 1000 | Opened window width. | ❌ |
| windowHeight | number | 820 | Opened window height. | ❌ |
| blankTarget | boolean | false | Open share window in a new tab if set to `true`. | ❌ |#### 📖 [FacebookMessengerIcon Props](https://github.com/Bunlong/next-share#-icons-props)
#### 👨💻 Code
```js
import {
EmailShareButton,
EmailIcon,
} from 'next-share'
```
#### 📖 EmailShareButton Props
| Props | Type | Default | Description | Required |
| :--- | :--- | :--- | :--- | :--- |
| children | node | | React component, HTML element or string. | ✅ |
| url | string | | The URL of the shared page. | ✅ |
| subject | string | | | ❌ |
| body | string | | | ❌ |
| separator | string | | | ❌ |
| blankTarget | boolean | false | Open share window in a new tab if set to `true`. | ❌ |#### 📖 [EmailIcon Props](https://github.com/Bunlong/next-share#-icons-props)
### 🎀 Gab
#### 👨💻 Code
```js
import {
GabShareButton,
GabIcon,
} from 'next-share'
```
#### 📖 GabShareButton Props
| Props | Type | Default | Description | Required |
| :--- | :--- | :--- | :--- | :--- |
| children | node | | React component, HTML element or string. | ✅ |
| url | string | | The URL of the shared page. | ✅ |
| title | string | | Title of the shared page. | ❌ |
| windowWidth | number | 660 | Opened window width. | ❌ |
| windowHeight | number | 640 | Opened window height. | ❌ |#### 📖 [GabIcon Props](https://github.com/Bunlong/next-share#-icons-props)
## 📚 Icons Props
| Props | Type | Default | Description | Required |
| :--- | :--- | :--- | :--- | :--- |
| size | number | | Icon size in pixels. | ❌ |
| round | boolean | | Show round or rectangle. | ❌ |
| borderRadius | number | | Set rounded corners if using round icon. | ❌ |
| bgStyle | object | | Customize background style. | ❌ |
| iconFillColor | string |white
| Customize icon fill color. | ❌ |
| blankTarget | boolean | false | Open share window in a new tab if set to `true`. | ❌ |## 💡 Usage of ShareCount
#### 👨💻 Code
```js
import { FacebookShareCount } from 'next-share'{shareCount => {shareCount}}
```
#### 📖 FacebookShareCount Props
| Props | Type | Default | Description | Required |
| :--- | :--- | :--- | :--- | :--- |
| url | string | | The URL of the shared page. | ✅ |
| appId | string | | Facebook application id. | ✅ |
| appSecret | string | | Facebook application secret. | ✅ |
| children | node | | React component, HTML element or string. | ❌ |### 🎀 Hatena
#### 👨💻 Code
```js
import { HatenaShareCount } from 'next-share'{shareCount => {shareCount}}
```
#### 📖 HatenaShareCount Props
| Props | Type | Default | Description | Required |
| :--- | :--- | :--- | :--- | :--- |
| url | string | | The URL of the shared page. | ✅ |
| children | node | | React component, HTML element or string. | ❌ |### 🎀 OK
#### 👨💻 Code
```js
import { OKShareCount } from 'next-share'{shareCount => {shareCount}}
```
#### 📖 OKShareCount Props
| Props | Type | Default | Description | Required |
| :--- | :--- | :--- | :--- | :--- |
| url | string | | The URL of the shared page. | ✅ |
| children | node | | React component, HTML element or string. | ❌ |#### 👨💻 Code
```js
import { PinterestShareCount } from 'next-share'{shareCount => {shareCount}}
```
#### 📖 PinterestShareCount Props
| Props | Type | Default | Description | Required |
| :--- | :--- | :--- | :--- | :--- |
| url | string | | The URL of the shared page. | ✅ |
| children | node | | React component, HTML element or string. | ❌ |### 🎀 Tumblr
#### 👨💻 Code
```js
import { TumblrShareCount } from 'next-share'{shareCount => {shareCount}}
```
#### 📖 TumblrShareCount Props
| Props | Type | Default | Description | Required |
| :--- | :--- | :--- | :--- | :--- |
| url | string | | The URL of the shared page. | ✅ |
| children | node | | React component, HTML element or string. | ❌ |### 🎀 VK
#### 👨💻 Code
```js
import { VKShareCount } from 'next-share'{shareCount => {shareCount}}
```
#### 📖 VKShareCount Props
| Props | Type | Default | Description | Required |
| :--- | :--- | :--- | :--- | :--- |
| url | string | | The URL of the shared page. | ✅ |
| children | node | | React component, HTML element or string. | ❌ |## 💡 Usage of Icon
#### 👨💻 Code
```js
import {
EmailIcon,
FacebookIcon,
FacebookMessengerIcon,
GithubIcon,
HatenaIcon,
InstagramIcon,
InstapaperIcon,
LineIcon,
LinkedinIcon,
LivejournalIcon,
MailruIcon,
OKIcon,
PinterestIcon,
PocketIcon,
RedditIcon,
SpotifyIcon,
TelegramIcon,
TumblrIcon,
TwitterIcon,
ViberIcon,
VKIcon,
WeiboIcon,
WhatsappIcon,
WorkplaceIcon,
} from 'next-share'
```#### 📖 Props
| Props | Type | Default | Description | Required |
| :--- | :--- | :--- | :--- | :--- |
| size | number | | Icon size in pixels. | ❌ |
| round | boolean | | Whether to show round or rect icons. | ❌ |
| borderRadius | number | | Allow rounded corners if using rect icons. | ❌ |
| bgStyle | object | | Customize background. | ❌ |
| iconFillColor | string |white
| Customize icon fill color. | ❌ |## 📜 Changelog
Latest version 0.27.0 (2023-09-28):
* Upgrade TwitterIcon
Details changes for each release are documented in the [CHANGELOG.md](https://github.com/Bunlong/next-share/blob/master/CHANGELOG.md).
## 💖 Wrap Up
If you think any of the `next-share` can be improved, please do open a PR with any updates and submit any issues. Also, I will continue to improve this, so you might want to watch/star this repository to revisit.
## 🌟 Contribution
We'd love to have your helping hand on contributions to `next-share` by forking and sending a pull request!
Your contributions are heartily ♡ welcome, recognized and appreciated. (✿◠‿◠)
How to contribute:
- Open pull request with improvements
- Discuss ideas in issues
- Spread the word
- Reach out with any feedback## ✨ Contributors
Bunlong
Arturs Kirtovskis
Sean
Steve Scavo
Maddy Miller
Joe McBroom
Lena Kotlyar
## 👨👩👦 Advertisement
You maybe interested.
* [React Patterns](https://github.com/reactpatterns/reactpatterns) – React patterns & techniques to use in development for React Developer.
* [React Papaparse](https://github.com/Bunlong/react-papaparse) – The fastest in-browser CSV (or delimited text) parser for React.
* [Next QRCode](https://github.com/bunlong/next-qrcode) – React hooks for generating QR code for your next React apps.
* [Next Time Ago](https://github.com/Bunlong/next-time-ago) – A lightweight tiny time-ago component for your next React apps.## ⚖️ License
The MIT License [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)