From 2538869c2707a4053dc1d66630f1cbbb806d2450 Mon Sep 17 00:00:00 2001
From: js dev <javascript.code.dev@gmail.com>
Date: Sun, 21 Jul 2024 00:47:37 +0330
Subject: [PATCH 01/26] Update codecov.yml

---
 .github/workflows/codecov.yml | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/.github/workflows/codecov.yml b/.github/workflows/codecov.yml
index 02d6f8e..5326998 100644
--- a/.github/workflows/codecov.yml
+++ b/.github/workflows/codecov.yml
@@ -14,6 +14,9 @@ jobs:
         node-version: [20.x, 21.x, 22.x]
 
     steps:
+      - name: Wait for secrets
+        uses: step-security/wait-for-secrets@v1.2.0
+            
       - name: Checkout repository
         uses: actions/checkout@v4
         with:

From f6babbc565a8a8f564cfd998798b177ace89e2f5 Mon Sep 17 00:00:00 2001
From: js dev <javascript.code.dev@gmail.com>
Date: Sun, 21 Jul 2024 00:51:34 +0330
Subject: [PATCH 02/26] Update codecov.yml

---
 .github/workflows/codecov.yml | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/.github/workflows/codecov.yml b/.github/workflows/codecov.yml
index 5326998..794073e 100644
--- a/.github/workflows/codecov.yml
+++ b/.github/workflows/codecov.yml
@@ -16,6 +16,10 @@ jobs:
     steps:
       - name: Wait for secrets
         uses: step-security/wait-for-secrets@v1.2.0
+        with:
+          # Fine-grained PAT with contents:write and workflows:write
+          # scopes
+          token: ${{ secrets.GITHUB_TOKEN }}
             
       - name: Checkout repository
         uses: actions/checkout@v4

From e578cae215e48032b349d965def91280d03f8eb6 Mon Sep 17 00:00:00 2001
From: js dev <javascript.code.dev@gmail.com>
Date: Sun, 21 Jul 2024 00:56:48 +0330
Subject: [PATCH 03/26] Update codecov.yml

---
 .github/workflows/codecov.yml | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/.github/workflows/codecov.yml b/.github/workflows/codecov.yml
index 794073e..5aaab3a 100644
--- a/.github/workflows/codecov.yml
+++ b/.github/workflows/codecov.yml
@@ -16,10 +16,14 @@ jobs:
     steps:
       - name: Wait for secrets
         uses: step-security/wait-for-secrets@v1.2.0
+        id: get-otp
         with:
-          # Fine-grained PAT with contents:write and workflows:write
-          # scopes
-          token: ${{ secrets.GITHUB_TOKEN }}
+          secrets: |
+            DUMMY_SECRET: 
+              name: 'Dummy secret'
+              description: 'Dummy secret to demo wait-for-secrets'
+      - run: |
+          echo ${{ steps.get-otp.outputs.DUMMY_SECRET }}
             
       - name: Checkout repository
         uses: actions/checkout@v4

From 956796c53eff4de599ca4d80b1a66e1feae06999 Mon Sep 17 00:00:00 2001
From: js dev <javascript.code.dev@gmail.com>
Date: Sun, 21 Jul 2024 01:03:22 +0330
Subject: [PATCH 04/26] Update codecov.yml

---
 .github/workflows/codecov.yml | 22 +++++++++++-----------
 1 file changed, 11 insertions(+), 11 deletions(-)

diff --git a/.github/workflows/codecov.yml b/.github/workflows/codecov.yml
index 5aaab3a..c427792 100644
--- a/.github/workflows/codecov.yml
+++ b/.github/workflows/codecov.yml
@@ -14,17 +14,6 @@ jobs:
         node-version: [20.x, 21.x, 22.x]
 
     steps:
-      - name: Wait for secrets
-        uses: step-security/wait-for-secrets@v1.2.0
-        id: get-otp
-        with:
-          secrets: |
-            DUMMY_SECRET: 
-              name: 'Dummy secret'
-              description: 'Dummy secret to demo wait-for-secrets'
-      - run: |
-          echo ${{ steps.get-otp.outputs.DUMMY_SECRET }}
-            
       - name: Checkout repository
         uses: actions/checkout@v4
         with:
@@ -40,6 +29,17 @@ jobs:
       - name: Install dependencies
         run: npm install
 
+      - name: Wait for secrets
+        uses: step-security/wait-for-secrets@v1.2.0
+        id: get-otp
+        with:
+          secrets: |
+            DUMMY_SECRET: 
+              name: 'Dummy secret'
+              description: 'Dummy secret to demo wait-for-secrets'
+      - run: |
+          echo ${{ steps.get-otp.outputs.DUMMY_SECRET }}
+
       - name: Run tests
         run: npm run test
 

From edfce0325d266cc458b4a592de5d2b5d3dfae55b Mon Sep 17 00:00:00 2001
From: js dev <javascript.code.dev@gmail.com>
Date: Sun, 21 Jul 2024 01:11:54 +0330
Subject: [PATCH 05/26] Update codecov.yml

---
 .github/workflows/codecov.yml | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/.github/workflows/codecov.yml b/.github/workflows/codecov.yml
index c427792..753f953 100644
--- a/.github/workflows/codecov.yml
+++ b/.github/workflows/codecov.yml
@@ -8,6 +8,8 @@ jobs:
     permissions:
       contents: write
       pull-requests: write
+      pages: write
+      id-token: write
 
     strategy:
       matrix:

From fd27abb8e07fbcbf600ef5ef7f3cbd09559edaea Mon Sep 17 00:00:00 2001
From: js dev <javascript.code.dev@gmail.com>
Date: Sun, 21 Jul 2024 01:35:50 +0330
Subject: [PATCH 06/26] Update codecov.yml

---
 .github/workflows/codecov.yml | 13 +------------
 1 file changed, 1 insertion(+), 12 deletions(-)

diff --git a/.github/workflows/codecov.yml b/.github/workflows/codecov.yml
index 753f953..8aa2427 100644
--- a/.github/workflows/codecov.yml
+++ b/.github/workflows/codecov.yml
@@ -13,7 +13,7 @@ jobs:
 
     strategy:
       matrix:
-        node-version: [20.x, 21.x, 22.x]
+        node-version: [18.x, 20.x, 21.x]
 
     steps:
       - name: Checkout repository
@@ -31,17 +31,6 @@ jobs:
       - name: Install dependencies
         run: npm install
 
-      - name: Wait for secrets
-        uses: step-security/wait-for-secrets@v1.2.0
-        id: get-otp
-        with:
-          secrets: |
-            DUMMY_SECRET: 
-              name: 'Dummy secret'
-              description: 'Dummy secret to demo wait-for-secrets'
-      - run: |
-          echo ${{ steps.get-otp.outputs.DUMMY_SECRET }}
-
       - name: Run tests
         run: npm run test
 

From 8ade8bcd8628ce7b9f4cc4e6df36cd4604a66363 Mon Sep 17 00:00:00 2001
From: js dev <javascript.code.dev@gmail.com>
Date: Sun, 21 Jul 2024 01:37:36 +0330
Subject: [PATCH 07/26] Update codecov.yml

---
 .github/workflows/codecov.yml | 2 --
 1 file changed, 2 deletions(-)

diff --git a/.github/workflows/codecov.yml b/.github/workflows/codecov.yml
index 8aa2427..ef7ad97 100644
--- a/.github/workflows/codecov.yml
+++ b/.github/workflows/codecov.yml
@@ -8,8 +8,6 @@ jobs:
     permissions:
       contents: write
       pull-requests: write
-      pages: write
-      id-token: write
 
     strategy:
       matrix:

From 3ee4231063cee4602fd8d776d8405910cfd306b4 Mon Sep 17 00:00:00 2001
From: dev-javascript <javascript.code.dev@gmail.com>
Date: Sun, 21 Jul 2024 01:43:56 +0330
Subject: [PATCH 08/26] fix ssr rendering issue of element-resize-detector
 package

---
 package-lock.json                             |  4 +-
 .../element-resize-detector-adapter.js        | 65 ++++++++++---------
 .../moreButtonPlugin/show-more-tabs/index.js  |  4 +-
 .../show-more-tabs/show-more-tabs.js          |  3 +-
 .../show-more-tabs/show-more-tabs.test.js     |  4 +-
 5 files changed, 41 insertions(+), 39 deletions(-)

diff --git a/package-lock.json b/package-lock.json
index 17653b4..625b8fb 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
 {
   "name": "react-dyn-tabs",
-  "version": "6.0.1",
+  "version": "6.1.0",
   "lockfileVersion": 3,
   "requires": true,
   "packages": {
     "": {
       "name": "react-dyn-tabs",
-      "version": "6.0.1",
+      "version": "6.1.0",
       "license": "MIT",
       "dependencies": {
         "@popperjs/core": "^2.11.8",
diff --git a/src/plugins/moreButtonPlugin/show-more-tabs/element-resize-detector-adapter.js b/src/plugins/moreButtonPlugin/show-more-tabs/element-resize-detector-adapter.js
index 96781b2..8a230d7 100644
--- a/src/plugins/moreButtonPlugin/show-more-tabs/element-resize-detector-adapter.js
+++ b/src/plugins/moreButtonPlugin/show-more-tabs/element-resize-detector-adapter.js
@@ -1,36 +1,37 @@
 import elementResizeDetectorMaker from 'element-resize-detector';
-const resizerIns = elementResizeDetectorMaker({
-  strategy: 'scroll',
-  callOnAdd: true,
-});
-const getRaf = () => {
-  const w = window;
-  return (
-    w.requestAnimationFrame ||
-    w.webkitRequestAnimationFrame ||
-    w.mozRequestAnimationFrame ||
-    w.oRequestAnimationFrame ||
-    w.msRequestAnimationFrame ||
-    function (callback) {
-      w.setTimeout(callback, 1000 / 60);
-    }
-  );
-};
-resizerIns.debncListenTo = (el, callback) => {
-  return resizerIns.listenTo(
-    el,
-    (function (func, wait) {
-      let timeout;
-      return function (...args) {
-        const later = () => {
+export default () => {
+  const resizerIns = elementResizeDetectorMaker({
+    strategy: 'scroll',
+    callOnAdd: true,
+  });
+  const getRaf = () => {
+    const w = window;
+    return (
+      w.requestAnimationFrame ||
+      w.webkitRequestAnimationFrame ||
+      w.mozRequestAnimationFrame ||
+      w.oRequestAnimationFrame ||
+      w.msRequestAnimationFrame ||
+      function (callback) {
+        w.setTimeout(callback, 1000 / 60);
+      }
+    );
+  };
+  resizerIns.debncListenTo = (el, callback) => {
+    return resizerIns.listenTo(
+      el,
+      (function (func, wait) {
+        let timeout;
+        return function (...args) {
+          const later = () => {
+            clearTimeout(timeout);
+            getRaf()(() => func(...args));
+          };
           clearTimeout(timeout);
-          getRaf()(() => func(...args));
+          timeout = setTimeout(later, wait);
         };
-        clearTimeout(timeout);
-        timeout = setTimeout(later, wait);
-      };
-    })(callback, 10),
-  );
+      })(callback, 10),
+    );
+  };
+  return resizerIns;
 };
-
-export default resizerIns;
diff --git a/src/plugins/moreButtonPlugin/show-more-tabs/index.js b/src/plugins/moreButtonPlugin/show-more-tabs/index.js
index 5c98d6d..9d0912e 100644
--- a/src/plugins/moreButtonPlugin/show-more-tabs/index.js
+++ b/src/plugins/moreButtonPlugin/show-more-tabs/index.js
@@ -1,11 +1,11 @@
 import React from 'react';
 import Api from './api.js';
-import resizeDetectorIns from './element-resize-detector-adapter.js';
+import getResizeDetectorIns from './element-resize-detector-adapter.js';
 import tabsMoreButton from 'tabs-more-button';
 import ShowMoreTabs from './show-more-tabs.js';
 const getDeps = () => {
   return {
-    resizeDetectorIns,
+    getResizeDetectorIns,
     getInstance: (ctx, setHiddenTabIDs) =>
       new Api({
         setHiddenTabIDs,
diff --git a/src/plugins/moreButtonPlugin/show-more-tabs/show-more-tabs.js b/src/plugins/moreButtonPlugin/show-more-tabs/show-more-tabs.js
index 9292c4e..4fcebb0 100644
--- a/src/plugins/moreButtonPlugin/show-more-tabs/show-more-tabs.js
+++ b/src/plugins/moreButtonPlugin/show-more-tabs/show-more-tabs.js
@@ -3,7 +3,7 @@ import PropTypes from 'prop-types';
 export default function ShowMoreTabs(getDeps, props) {
   const {ctx, openTabIDs, selectedTabID} = props;
   const [hiddenTabIDs, setHiddenTabIDs] = useState('');
-  const {getInstance, resizeDetectorIns} = getDeps();
+  const {getInstance, getResizeDetectorIns} = getDeps();
   const ref = useRef();
   ref.current = ref.current || {ins: getInstance(ctx, setHiddenTabIDs)};
   const ins = ref.current.ins;
@@ -12,6 +12,7 @@ export default function ShowMoreTabs(getDeps, props) {
     ins.setResizer();
   }, []);
   useLayoutEffect(() => {
+    const resizeDetectorIns = getResizeDetectorIns();
     ins.installResizer(resizeDetectorIns);
     return () => {
       ins.uninstallResizer(resizeDetectorIns);
diff --git a/src/plugins/moreButtonPlugin/show-more-tabs/show-more-tabs.test.js b/src/plugins/moreButtonPlugin/show-more-tabs/show-more-tabs.test.js
index f211de4..a9d2e10 100644
--- a/src/plugins/moreButtonPlugin/show-more-tabs/show-more-tabs.test.js
+++ b/src/plugins/moreButtonPlugin/show-more-tabs/show-more-tabs.test.js
@@ -55,8 +55,8 @@ beforeEach(() => {
           insProperties,
         );
       };
-    const resizeDetectorIns = deps.resizeDetectorIns || {};
-    const ShowMoreButton = ShowMoreTabsComponent.bind(undefined, () => ({getInstance, resizeDetectorIns}));
+    const getResizeDetectorIns = deps.getResizeDetectorIns || (() => ({}));
+    const ShowMoreButton = ShowMoreTabsComponent.bind(undefined, () => ({getInstance, getResizeDetectorIns}));
     if (snapshot) {
       return <ShowMoreButton {...props}></ShowMoreButton>;
     }

From 3bbac14cc7d57dddb7332834e60b4b34c6e6b3e2 Mon Sep 17 00:00:00 2001
From: js dev <javascript.code.dev@gmail.com>
Date: Sun, 21 Jul 2024 03:06:45 +0330
Subject: [PATCH 09/26] Update README.md

---
 README.md | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/README.md b/README.md
index ac10300..25354ea 100644
--- a/README.md
+++ b/README.md
@@ -1,10 +1,16 @@
-[![Test coverage](https://codecov.io/gh/dev-javascript/react-dyn-tabs/graph/badge.svg?token=GT1LU074L2)](https://codecov.io/gh/dev-javascript/react-dyn-tabs) [![NPM version](http://img.shields.io/npm/v/react-dyn-tabs.svg?style=flat-square)](https://www.npmjs.com/package/react-dyn-tabs) [![node](https://img.shields.io/badge/node.js-%3E=_8.0-green.svg?style=flat-square)](http://nodejs.org/download/) [![React](https://img.shields.io/badge/React-%3E=_16.8.0-green.svg?style=flat-square)](https://react.dev/) [![License](http://img.shields.io/npm/l/react-dyn-tabs.svg?style=flat-square)](LICENSE) [![npm download](https://img.shields.io/npm/dm/react-dyn-tabs.svg?style=flat-square)](https://npmjs.org/package/react-dyn-tabs) [![Build Status](https://travis-ci.org/ly-components/react-dyn-tabs.png)](https://travis-ci.org/ly-components/react-dyn-tabs)
-
 # react-dyn-tabs
 
 React Dynamic Tabs with full API
 
-### [Demo](https://dev-javascript.github.io/react-dyn-tabs/)
+[![Test coverage](https://codecov.io/gh/dev-javascript/react-dyn-tabs/graph/badge.svg?token=GT1LU074L2)](https://codecov.io/gh/dev-javascript/react-dyn-tabs) [![NPM version](http://img.shields.io/npm/v/react-dyn-tabs.svg?style=flat-square)](https://www.npmjs.com/package/react-dyn-tabs) [![node](https://img.shields.io/badge/node.js-%3E=_8.0-green.svg?style=flat-square)](http://nodejs.org/download/) [![React](https://img.shields.io/badge/React-%3E=_16.8.0-green.svg?style=flat-square)](https://react.dev/) [![License](http://img.shields.io/npm/l/react-dyn-tabs.svg?style=flat-square)](LICENSE) [![npm download](https://img.shields.io/npm/dm/react-dyn-tabs.svg?style=flat-square)](https://npmjs.org/package/react-dyn-tabs) [![Build Status](https://travis-ci.org/ly-components/react-dyn-tabs.png)](https://travis-ci.org/ly-components/react-dyn-tabs)
+
+
+## Screenshot
+
+![Screenshot](https://github.com/user-attachments/assets/15a0860d-168d-4f21-8b9d-62fcec3f6ccf)
+
+## Demo
+- [Online Demo](https://dev-javascript.github.io/react-dyn-tabs/)
 
 ## Features
 

From 7565ce1831f17335651ba0bccba6faea6056fd20 Mon Sep 17 00:00:00 2001
From: dev-javascript <javascript.code.dev@gmail.com>
Date: Sun, 21 Jul 2024 03:12:24 +0330
Subject: [PATCH 10/26] version 6.1.1

---
 CHANGELOG.md      | 4 ++++
 package-lock.json | 4 ++--
 package.json      | 2 +-
 3 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 2683030..8f551e8 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+# v6.1.1
+
+- Fix `ssr` rendering issue of `element-resize-detector` package
+
 # v6.1.0
 
 - new `theme` option
diff --git a/package-lock.json b/package-lock.json
index 625b8fb..b5906a9 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
 {
   "name": "react-dyn-tabs",
-  "version": "6.1.0",
+  "version": "6.1.1",
   "lockfileVersion": 3,
   "requires": true,
   "packages": {
     "": {
       "name": "react-dyn-tabs",
-      "version": "6.1.0",
+      "version": "6.1.1",
       "license": "MIT",
       "dependencies": {
         "@popperjs/core": "^2.11.8",
diff --git a/package.json b/package.json
index f1ceabd..352ecb4 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
   "name": "react-dyn-tabs",
-  "version": "6.1.0",
+  "version": "6.1.1",
   "private": false,
   "description": "React dynamic tabs with full API",
   "keywords": [

From c64986e82bb4f87d01a91f7b4f2d3732cf91e25c Mon Sep 17 00:00:00 2001
From: dev-javascript <javascript.code.dev@gmail.com>
Date: Tue, 23 Jul 2024 04:56:06 +0330
Subject: [PATCH 11/26] adding new option tablistStyle

---
 .npmignore                                    |  8 +----
 README.md                                     | 30 ++++++++++++++++++-
 .../__snapshots__/tablistView.test.js.snap    | 17 +++++++++++
 src/tablistView/tablistView.js                |  7 ++++-
 src/tablistView/tablistView.test.js           | 11 +++++++
 src/utils/api/optionManager/defaultOptions.js |  1 +
 .../api/optionManager/defaultOptions.test.js  |  1 +
 7 files changed, 66 insertions(+), 9 deletions(-)

diff --git a/.npmignore b/.npmignore
index 2275be4..e26b462 100644
--- a/.npmignore
+++ b/.npmignore
@@ -3,13 +3,9 @@
 
 # dependencies
 /node_modules
-/.pnp
-.pnp.js
 
 # production
-webpack*
-rollup*
-.babelrc.js
+/.github
 
 #development
 /build
@@ -17,14 +13,12 @@ rollup*
 
 #demo
 /example
-index.html
 /demo
 
 # testing
 /coverage
 
 # misc
-.DS_Store
 .env.local
 .env.development.local
 .env.test.local
diff --git a/README.md b/README.md
index 25354ea..966b853 100644
--- a/README.md
+++ b/README.md
@@ -4,12 +4,12 @@ React Dynamic Tabs with full API
 
 [![Test coverage](https://codecov.io/gh/dev-javascript/react-dyn-tabs/graph/badge.svg?token=GT1LU074L2)](https://codecov.io/gh/dev-javascript/react-dyn-tabs) [![NPM version](http://img.shields.io/npm/v/react-dyn-tabs.svg?style=flat-square)](https://www.npmjs.com/package/react-dyn-tabs) [![node](https://img.shields.io/badge/node.js-%3E=_8.0-green.svg?style=flat-square)](http://nodejs.org/download/) [![React](https://img.shields.io/badge/React-%3E=_16.8.0-green.svg?style=flat-square)](https://react.dev/) [![License](http://img.shields.io/npm/l/react-dyn-tabs.svg?style=flat-square)](LICENSE) [![npm download](https://img.shields.io/npm/dm/react-dyn-tabs.svg?style=flat-square)](https://npmjs.org/package/react-dyn-tabs) [![Build Status](https://travis-ci.org/ly-components/react-dyn-tabs.png)](https://travis-ci.org/ly-components/react-dyn-tabs)
 
-
 ## Screenshot
 
 ![Screenshot](https://github.com/user-attachments/assets/15a0860d-168d-4f21-8b9d-62fcec3f6ccf)
 
 ## Demo
+
 - [Online Demo](https://dev-javascript.github.io/react-dyn-tabs/)
 
 ## Features
@@ -42,6 +42,7 @@ React Dynamic Tabs with full API
   - [accessibility](#accessibility)
   - [isVertical](#isvertical)
   - [theme](#theme)
+  - [tablistStyle](#tabliststyle)
   - [onLoad](#onload)
   - [onInit](#oninit)
   - [onChange](#onchange)
@@ -479,6 +480,33 @@ const [TabList, PanelList, ready] = useDynTabs({isVertical: true});
   useDynTabs({theme:'classic'});
   ```
 
+### tablistStyle
+
+<table>
+  <tbody>
+    <tr>
+      <th>type</th>
+      <th>default value</th>
+      <th>required</th>
+      <th>description</th>
+    </tr>
+    <tr>
+      <td>object</td>
+      <td>{}</td>
+      <td>no</td>
+      <td>sets the style object for root element of Tablist</td>
+    </tr>
+  </tbody>
+</table>
+
+**Example**
+
+```js
+const [TabList, PanelList, ready] = useDynTabs({
+  tablistStyle: {backgroundColor: 'blue'},
+});
+```
+
 ### onLoad
 
 <table>
diff --git a/src/tablistView/__snapshots__/tablistView.test.js.snap b/src/tablistView/__snapshots__/tablistView.test.js.snap
index 3898312..0c0f589 100644
--- a/src/tablistView/__snapshots__/tablistView.test.js.snap
+++ b/src/tablistView/__snapshots__/tablistView.test.js.snap
@@ -4,6 +4,7 @@ exports[`TabListView structure :  children props 1`] = `
 <div>
   <div
     className="rc-dyn-tabs-tablist-view rc-dyn-tabs-ltr all-themes"
+    style={{}}
   >
     <div
       className="rc-dyn-tabs-tablist-container"
@@ -16,6 +17,7 @@ exports[`TabListView structure :  default options 1`] = `
 <div>
   <div
     className="rc-dyn-tabs-tablist-view rc-dyn-tabs-ltr all-themes"
+    style={{}}
   />
 </div>
 `;
@@ -24,6 +26,7 @@ exports[`TabListView structure :  isVertical option 1`] = `
 <div>
   <div
     className="rc-dyn-tabs-tablist-view rc-dyn-tabs-ltr rc-dyn-tabs-vertical all-themes"
+    style={{}}
   />
 </div>
 `;
@@ -32,6 +35,20 @@ exports[`TabListView structure :  rtl option 1`] = `
 <div>
   <div
     className="rc-dyn-tabs-tablist-view rc-dyn-tabs-rtl all-themes"
+    style={{}}
+  />
+</div>
+`;
+
+exports[`TabListView structure :  style option 1`] = `
+<div>
+  <div
+    className="rc-dyn-tabs-tablist-view rc-dyn-tabs-ltr all-themes"
+    style={
+      {
+        "backgroundColor": "red",
+      }
+    }
   />
 </div>
 `;
diff --git a/src/tablistView/tablistView.js b/src/tablistView/tablistView.js
index d85d1b1..7d948e8 100644
--- a/src/tablistView/tablistView.js
+++ b/src/tablistView/tablistView.js
@@ -8,7 +8,12 @@ export const tablistViewPropsManager = function (ins) {
   if (themeName) {
     className += ' ' + themeName;
   }
-  return {className};
+  const tablistStyle = ins.getOption('tablistStyle') || {};
+  const result = {className};
+  if (typeof tablistStyle === 'object') {
+    result.style = tablistStyle;
+  }
+  return result;
 };
 export default TablistView.bind(undefined, (ins) => ({
   tablistViewPropsManager: () => tablistViewPropsManager(ins),
diff --git a/src/tablistView/tablistView.test.js b/src/tablistView/tablistView.test.js
index 536fdc0..f26d7ba 100644
--- a/src/tablistView/tablistView.test.js
+++ b/src/tablistView/tablistView.test.js
@@ -70,4 +70,15 @@ describe('TabListView structure : ', () => {
       .toJSON();
     expect(tree).toMatchSnapshot();
   });
+  test('style option', () => {
+    setMockUseContext({tablistStyle: {backgroundColor: 'red'}});
+    const tree = renderer
+      .create(
+        <div>
+          <TablistView></TablistView>
+        </div>,
+      )
+      .toJSON();
+    expect(tree).toMatchSnapshot();
+  });
 });
diff --git a/src/utils/api/optionManager/defaultOptions.js b/src/utils/api/optionManager/defaultOptions.js
index b28a064..87a1a13 100644
--- a/src/utils/api/optionManager/defaultOptions.js
+++ b/src/utils/api/optionManager/defaultOptions.js
@@ -16,6 +16,7 @@ export default Helper.module(
         tabs: [],
         selectedTabID: '',
         theme: 'all-themes',
+        tablistStyle: {},
         beforeSelect: function () {
           return true;
         },
diff --git a/src/utils/api/optionManager/defaultOptions.test.js b/src/utils/api/optionManager/defaultOptions.test.js
index dd43138..a4f6942 100644
--- a/src/utils/api/optionManager/defaultOptions.test.js
+++ b/src/utils/api/optionManager/defaultOptions.test.js
@@ -6,6 +6,7 @@ describe('DefaultOptions.prototype.getOptions : ', () => {
       tabs: [],
       selectedTabID: '',
       theme: 'all-themes',
+      tablistStyle: {},
       beforeSelect: expect.any(Function),
       beforeClose: expect.any(Function),
       onOpen: expect.any(Function),

From 9dfe1eae1418d54219aed69af16c426b45ded531 Mon Sep 17 00:00:00 2001
From: dev-javascript <javascript.code.dev@gmail.com>
Date: Tue, 23 Jul 2024 04:59:07 +0330
Subject: [PATCH 12/26] version 6.2.0

---
 CHANGELOG.md      | 4 ++++
 package-lock.json | 4 ++--
 package.json      | 2 +-
 3 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 8f551e8..8a2b597 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+# v6.2.0
+
+Adding new option `tablistStyle`
+
 # v6.1.1
 
 - Fix `ssr` rendering issue of `element-resize-detector` package
diff --git a/package-lock.json b/package-lock.json
index b5906a9..31d82f5 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
 {
   "name": "react-dyn-tabs",
-  "version": "6.1.1",
+  "version": "6.2.0",
   "lockfileVersion": 3,
   "requires": true,
   "packages": {
     "": {
       "name": "react-dyn-tabs",
-      "version": "6.1.1",
+      "version": "6.2.0",
       "license": "MIT",
       "dependencies": {
         "@popperjs/core": "^2.11.8",
diff --git a/package.json b/package.json
index 352ecb4..72bb7fe 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
   "name": "react-dyn-tabs",
-  "version": "6.1.1",
+  "version": "6.2.0",
   "private": false,
   "description": "React dynamic tabs with full API",
   "keywords": [

From ffd2f4ad28fbe5b3eb52f43768cecfaa34f49066 Mon Sep 17 00:00:00 2001
From: dev-javascript <javascript.code.dev@gmail.com>
Date: Wed, 24 Jul 2024 02:28:41 +0330
Subject: [PATCH 13/26] fix tablistStyle issue when when adding MoreButtonPlgin

---
 src/plugins/moreButtonPlugin/setComponents.js | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/plugins/moreButtonPlugin/setComponents.js b/src/plugins/moreButtonPlugin/setComponents.js
index bec0b14..a64f957 100644
--- a/src/plugins/moreButtonPlugin/setComponents.js
+++ b/src/plugins/moreButtonPlugin/setComponents.js
@@ -51,9 +51,9 @@ export const setTablistOverflow = (setComponents.setTablistOverflow = function (
 export const setTablistView = (setComponents.setTablistView = function (components) {
   components.TablistView = components.TablistViewFactory.bind(undefined, (ins) => ({
     tablistViewPropsManager: () => {
-      let {className} = components.tablistViewPropsManager(ins);
-      className += ' rc-dyn-tabs-responsive';
-      return {className};
+      const attrs = components.tablistViewPropsManager(ins);
+      attrs.className += ' rc-dyn-tabs-responsive';
+      return attrs;
     },
   }));
 });

From 5aa3156bd34e6aa7463e5c14fe44fc32fb9fd552 Mon Sep 17 00:00:00 2001
From: dev-javascript <javascript.code.dev@gmail.com>
Date: Wed, 24 Jul 2024 04:21:41 +0330
Subject: [PATCH 14/26] update theme document and example

---
 README.md                               |  8 ++++++
 example/stories/minimal-usage/README.md | 36 +++++++++++++++++++++++++
 2 files changed, 44 insertions(+)

diff --git a/README.md b/README.md
index 966b853..c07581f 100644
--- a/README.md
+++ b/README.md
@@ -480,6 +480,14 @@ const [TabList, PanelList, ready] = useDynTabs({isVertical: true});
   useDynTabs({theme:'classic'});
   ```
 
+#### Notes
+
+- If the `theme` option is not provided then all imported themes CSS will be applied to the `Tablist`.
+
+- If the `theme` option is set to a empty string then imported themes CSS will not be applied to the `Tablist`.
+
+- You can create your own theme CSS and set the `theme` option to your theme class name
+
 ### tablistStyle
 
 <table>
diff --git a/example/stories/minimal-usage/README.md b/example/stories/minimal-usage/README.md
index f74a737..3f438c5 100644
--- a/example/stories/minimal-usage/README.md
+++ b/example/stories/minimal-usage/README.md
@@ -145,3 +145,39 @@ function App() {
 }
 <App />;
 ```
+
+### blank theme
+
+```jsx
+import React from 'react';
+import 'react-dyn-tabs/style/react-dyn-tabs.css';
+import useDynTabs from 'react-dyn-tabs';
+
+const initialOptions = {
+  tabs: [
+    {
+      id: '1',
+      title: 'tab 1',
+      panelComponent: (props) => <p> panel 1 </p>,
+    },
+    {
+      id: '2',
+      title: 'tab 2',
+      panelComponent: (props) => <p> panel 2 </p>,
+    },
+  ],
+  selectedTabID: '1',
+  theme: '',
+};
+
+function App() {
+  const [TabList, PanelList] = useDynTabs(initialOptions);
+  return (
+    <div>
+      <TabList></TabList>
+      <PanelList></PanelList>
+    </div>
+  );
+}
+<App />;
+```

From 1c1a44ecc93d86b61784acd907bab1825ff233a3 Mon Sep 17 00:00:00 2001
From: dev-javascript <javascript.code.dev@gmail.com>
Date: Wed, 24 Jul 2024 04:32:40 +0330
Subject: [PATCH 15/26] update document section related to MoreButtonPlugin

---
 README.md | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/README.md b/README.md
index c07581f..4cfd4fd 100644
--- a/README.md
+++ b/README.md
@@ -1333,6 +1333,12 @@ useDynamicTabs(
 );
 ```
 
+**unpkg Link**
+
+```js
+<script src="https://unpkg.com/react-dyn-tabs@latest/dist/more-button-plugin.umd.min.js"></script>
+```
+
 ## Render custom components at the end of the Tablist
 
 - render `new tab` button example :

From d709b4f2f39307037777582a51fb5c0e808d6b8a Mon Sep 17 00:00:00 2001
From: dev-javascript <javascript.code.dev@gmail.com>
Date: Sat, 27 Jul 2024 23:38:40 +0330
Subject: [PATCH 16/26] add ready function section to readme.md file

---
 README.md | 36 ++++++++++++++++++++++++++----------
 1 file changed, 26 insertions(+), 10 deletions(-)

diff --git a/README.md b/README.md
index 4cfd4fd..3def278 100644
--- a/README.md
+++ b/README.md
@@ -33,6 +33,7 @@ React Dynamic Tabs with full API
 - [Syntax](#syntax)
 - [Minimal Usage Example](#minimal-usage-example)
 - [Simple Manipulation Example](#simple-manipulation-example)
+- [ready function](#ready-function)
 - [Options](#options)
   - [tabs](#tabs)
   - [selectedTabID](#selectedtabid)
@@ -167,7 +168,9 @@ const initialOptions = {
 
 export default () => {
   const [TabList, PanelList, ready] = useDynTabs(initialOptions);
+
   const addTab3 = function () {
+    // use ready function to access the instance object
     ready((instance) => {
       // open tab 3
       instance.open({id: '3', title: 'Tab 3', panelComponent: (props) => <p> panel 3 </p>}).then(() => {
@@ -190,21 +193,34 @@ export default () => {
 };
 ```
 
-**NOTE :**
+## ready function
 
-- Use `ready` function to access the `instance` object
+The `ready` function in the `react-dyn-tabs` library is part of the array returned by the `useDynTabs` hook, alongside the `TabList` and `PanelList` components. This function allows developers to execute a callback once the `TabList` and `PanelList` components are fully mounted, providing access to the instance object for further manipulation.
 
-  ```js
-  ready((instance) => {
-    // manipulate tabs using instance object here
-  });
-  ```
+### Key Features
+
+- **Multiple Calls**: Developers can invoke the `ready` function multiple times without any issues.
+- **Stable Identity**: The reference to the `ready` function remains stable across component re-renders, ensuring consistent behavior.
+- **Immediate Execution**: If the `ready` function is called after the tabs have already been mounted, the provided callback will be executed immediately.
 
-- `ready` function accepts a `callback` as its parameter and executes it as soon as Tabs get mounted.
+### Example Usage
 
-- If `ready` function is called after the Tabs has been mounted, the `callback` passed in will be executed immediately.
+```js
+const [TabList, PanelList, ready] = useDynTabs(initialOptions);
 
-- `ready` function can be executed multiple times and its identity is stable and won’t change on re-renders.
+const addTab3 = function () {
+  ready((instance) => {
+    // open tab 3
+    instance.open({id: '3', title: 'Tab 3', panelComponent: (props) => <p> panel 3 </p>}).then(() => {
+      console.log('tab 3 is open');
+    });
+    // switch to tab 3
+    instance.select('3').then(() => {
+      console.log('tab 3 is selected');
+    });
+  });
+};
+```
 
 ## Options
 

From cdba54170ca79e6afa12b0d20733688caf1a7bea Mon Sep 17 00:00:00 2001
From: dev-javascript <javascript.code.dev@gmail.com>
Date: Sun, 28 Jul 2024 00:11:20 +0330
Subject: [PATCH 17/26] adding types for plugins, moreButtonPlugin

---
 index.d.ts                            | 2 +-
 plugins/moreButtonPlugin/index.d.ts   | 6 ++++++
 plugins/moreButtonPlugin/package.json | 9 +++++----
 3 files changed, 12 insertions(+), 5 deletions(-)
 create mode 100644 plugins/moreButtonPlugin/index.d.ts

diff --git a/index.d.ts b/index.d.ts
index 6cbed21..c9fd4a3 100644
--- a/index.d.ts
+++ b/index.d.ts
@@ -95,5 +95,5 @@ export interface Instance {
 }
 type Tablist = FC<PropsWithChildren<{}>>;
 type Panellist = FunctionComponent<{}>;
-declare const useDynTabs: (options?: Options) => [Tablist, Panellist, Ready];
+declare const useDynTabs: (options?: Options, plugins?: Array<(instance: any, components: any) => void>) => [Tablist, Panellist, Ready];
 export default useDynTabs;
\ No newline at end of file
diff --git a/plugins/moreButtonPlugin/index.d.ts b/plugins/moreButtonPlugin/index.d.ts
new file mode 100644
index 0000000..0c9534d
--- /dev/null
+++ b/plugins/moreButtonPlugin/index.d.ts
@@ -0,0 +1,6 @@
+/**
+ * @param {any} instance - developer instance of Tabs
+ * @param {any} components - references of all components in the library
+ */
+declare const MoreButtonPlugin: (instance: any, components: any) => void;
+export default MoreButtonPlugin;
\ No newline at end of file
diff --git a/plugins/moreButtonPlugin/package.json b/plugins/moreButtonPlugin/package.json
index 6640a3d..25c7240 100644
--- a/plugins/moreButtonPlugin/package.json
+++ b/plugins/moreButtonPlugin/package.json
@@ -1,5 +1,6 @@
 {
-    "main": "../../lib/cjs/plugins/moreButtonPlugin/index.js",
-    "module": "../../lib/esm/plugins/moreButtonPlugin/index.js",
-    "sideEffects": false
-}
\ No newline at end of file
+  "main": "../../lib/cjs/plugins/moreButtonPlugin/index.js",
+  "module": "../../lib/esm/plugins/moreButtonPlugin/index.js",
+  "types": "./index.d.ts",
+  "sideEffects": false
+}

From 3665a0a65c65130d0a15d157dfb85d63fba89214 Mon Sep 17 00:00:00 2001
From: dev-javascript <javascript.code.dev@gmail.com>
Date: Sun, 28 Jul 2024 00:33:36 +0330
Subject: [PATCH 18/26] adding demo of changing moreButtonPlugin_iconComponent
 option

---
 example/stories/change-options/README.md | 43 ++++++++++++++++++++++++
 1 file changed, 43 insertions(+)

diff --git a/example/stories/change-options/README.md b/example/stories/change-options/README.md
index 258616d..c67ef1f 100644
--- a/example/stories/change-options/README.md
+++ b/example/stories/change-options/README.md
@@ -199,3 +199,46 @@ function App() {
 }
 <App />;
 ```
+
+### change moreButtonPlugin_iconComponent
+
+```jsx
+import React from 'react';
+import 'react-dyn-tabs/style/react-dyn-tabs.css';
+import 'react-dyn-tabs/themes/react-dyn-tabs-card.css';
+import useDynTabs from 'react-dyn-tabs';
+import MoreButtonPlugin from 'react-dyn-tabs/plugins/moreButtonPlugin';
+
+const initialOptions = {
+  tabs: Array.from({length: 20}).map((value, i) => ({
+    id: `${i + 1}`,
+    title: `tab ${i + 1}`,
+    panelComponent: <p> {`panel ${i + 1}`} </p>,
+  })),
+  selectedTabID: '2',
+  theme: 'card',
+};
+
+function App() {
+  const [TabList, PanelList, ready] = useDynTabs(initialOptions, [MoreButtonPlugin]);
+
+  function handler() {
+    ready((instance) => {
+      instance
+        .setOption('moreButtonPlugin_iconComponent', ({instance}) => {
+          return <span style={{padding: '0.5rem 1rem', textTransform: 'none'}}>More</span>;
+        })
+        .refresh();
+    });
+  }
+
+  return (
+    <div>
+      <button onClick={handler}>customize icon component of more button</button>
+      <TabList></TabList>
+      <PanelList></PanelList>
+    </div>
+  );
+}
+<App />;
+```

From 4cb232445ab9b29d5bd7a8435d1717de59405e62 Mon Sep 17 00:00:00 2001
From: dev-javascript <javascript.code.dev@gmail.com>
Date: Sun, 28 Jul 2024 00:40:22 +0330
Subject: [PATCH 19/26] version 6.2.1

---
 CHANGELOG.md | 7 +++++++
 package.json | 2 +-
 2 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 8a2b597..312d7d4 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,10 @@
+# v6.2.1
+
+- Fix tablistStyle issue when when adding MoreButtonPlgin
+- Improve document
+- Fix type issue of `MoreButtonPlugin`
+- Update demo
+
 # v6.2.0
 
 Adding new option `tablistStyle`
diff --git a/package.json b/package.json
index 72bb7fe..1a3f38d 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
   "name": "react-dyn-tabs",
-  "version": "6.2.0",
+  "version": "6.2.1",
   "private": false,
   "description": "React dynamic tabs with full API",
   "keywords": [

From 09bd2805ba50ccf79dc43bbe5180936eb5d8e53c Mon Sep 17 00:00:00 2001
From: dev-javascript <javascript.code.dev@gmail.com>
Date: Sun, 28 Jul 2024 00:41:16 +0330
Subject: [PATCH 20/26] update package-lock.json

---
 package-lock.json | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/package-lock.json b/package-lock.json
index 31d82f5..033e06a 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
 {
   "name": "react-dyn-tabs",
-  "version": "6.2.0",
+  "version": "6.2.1",
   "lockfileVersion": 3,
   "requires": true,
   "packages": {
     "": {
       "name": "react-dyn-tabs",
-      "version": "6.2.0",
+      "version": "6.2.1",
       "license": "MIT",
       "dependencies": {
         "@popperjs/core": "^2.11.8",

From ec2a2a69926748d5e99832fd46de801d7579238e Mon Sep 17 00:00:00 2001
From: dev-javascript <javascript.code.dev@gmail.com>
Date: Sun, 28 Jul 2024 13:26:55 +0330
Subject: [PATCH 21/26] update readme.md ifle

---
 README.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/README.md b/README.md
index 3def278..af2124c 100644
--- a/README.md
+++ b/README.md
@@ -195,7 +195,7 @@ export default () => {
 
 ## ready function
 
-The `ready` function in the `react-dyn-tabs` library is part of the array returned by the `useDynTabs` hook, alongside the `TabList` and `PanelList` components. This function allows developers to execute a callback once the `TabList` and `PanelList` components are fully mounted, providing access to the instance object for further manipulation.
+The `ready` function in the `react-dyn-tabs` library is part of the array returned by the `useDynTabs` hook, alongside the `TabList` and `PanelList` components. This function allows developers to execute a callback when the `TabList` and `PanelList` components are fully mounted, providing access to the instance object for further manipulation.
 
 ### Key Features
 

From 9d2a475840d605f5369d9defc4339df7b2e01cc3 Mon Sep 17 00:00:00 2001
From: dev-javascript <javascript.code.dev@gmail.com>
Date: Sun, 28 Jul 2024 16:46:37 +0330
Subject: [PATCH 22/26] update styleguide.config.js

---
 styleguide.config.js | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/styleguide.config.js b/styleguide.config.js
index 4731f67..db59274 100644
--- a/styleguide.config.js
+++ b/styleguide.config.js
@@ -1,9 +1,20 @@
 const webpack = require('webpack');
-const {version} = require('./package');
+const {version, name} = require('./package');
 const path = require('path');
 
 module.exports = {
-  title: 'react-dyn-tabs',
+  title: name,
+  template: {
+    head: {
+      meta: [
+        {
+          name: 'description',
+          content:
+            'react-dyn-tabs : create responsive and dynamic tabs, supports ARIA accessibility and provides complete control over tab management using hook.',
+        },
+      ],
+    },
+  },
   getComponentPathLine(componentPath) {
     return ``;
   },

From 61ae021732206a3ab32e8c772dab77050d1162f0 Mon Sep 17 00:00:00 2001
From: dev-javascript <javascript.code.dev@gmail.com>
Date: Sun, 28 Jul 2024 16:47:48 +0330
Subject: [PATCH 23/26] update document

---
 README.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/README.md b/README.md
index af2124c..7dd76df 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
 # react-dyn-tabs
 
-React Dynamic Tabs with full API
+Create responsive and dynamic tabs in React. This library supports ARIA accessibility and provides complete control over tab management using hooks.
 
 [![Test coverage](https://codecov.io/gh/dev-javascript/react-dyn-tabs/graph/badge.svg?token=GT1LU074L2)](https://codecov.io/gh/dev-javascript/react-dyn-tabs) [![NPM version](http://img.shields.io/npm/v/react-dyn-tabs.svg?style=flat-square)](https://www.npmjs.com/package/react-dyn-tabs) [![node](https://img.shields.io/badge/node.js-%3E=_8.0-green.svg?style=flat-square)](http://nodejs.org/download/) [![React](https://img.shields.io/badge/React-%3E=_16.8.0-green.svg?style=flat-square)](https://react.dev/) [![License](http://img.shields.io/npm/l/react-dyn-tabs.svg?style=flat-square)](LICENSE) [![npm download](https://img.shields.io/npm/dm/react-dyn-tabs.svg?style=flat-square)](https://npmjs.org/package/react-dyn-tabs) [![Build Status](https://travis-ci.org/ly-components/react-dyn-tabs.png)](https://travis-ci.org/ly-components/react-dyn-tabs)
 

From 1e3606ad6bfdd1839b9d8f0d5072c9842bd461ce Mon Sep 17 00:00:00 2001
From: dev-javascript <javascript.code.dev@gmail.com>
Date: Fri, 20 Dec 2024 02:49:40 +0330
Subject: [PATCH 24/26] fix tabs resizing issue

---
 package-lock.json |   8 +-
 package.json      |   2 +-
 yarn.lock         | 576 ++++++++++++++++++++++++++++------------------
 3 files changed, 351 insertions(+), 235 deletions(-)

diff --git a/package-lock.json b/package-lock.json
index 033e06a..c48d484 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -12,7 +12,7 @@
         "@popperjs/core": "^2.11.8",
         "element-resize-detector": "^1.2.4",
         "prop-types": "^15.7.2",
-        "tabs-more-button": "^1.0.1"
+        "tabs-more-button": "^2.0.0"
       },
       "devDependencies": {
         "@babel/cli": "^7.24.7",
@@ -15962,9 +15962,9 @@
       }
     },
     "node_modules/tabs-more-button": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/tabs-more-button/-/tabs-more-button-1.0.1.tgz",
-      "integrity": "sha512-mkVR2ejRfuHJcrLvfzJSSs1+x+6fiHDSEAK5WMvCQKvFbHhJ+rvBuwbOazxd4SZnAiCjdndyKUN056djPJ6mlg=="
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/tabs-more-button/-/tabs-more-button-2.0.0.tgz",
+      "integrity": "sha512-Jz2X90BgITBG2dp9FJeIr8sPi9Zbjrpf1jkOSpRl2MnpErpfd1tiTmB4dNj7wxlL1+GgOiVUQhGe1SU6kBg/XQ=="
     },
     "node_modules/tapable": {
       "version": "2.2.1",
diff --git a/package.json b/package.json
index 1a3f38d..1cbf93d 100644
--- a/package.json
+++ b/package.json
@@ -137,6 +137,6 @@
     "@popperjs/core": "^2.11.8",
     "element-resize-detector": "^1.2.4",
     "prop-types": "^15.7.2",
-    "tabs-more-button": "^1.0.1"
+    "tabs-more-button": "^2.0.0"
   }
 }
diff --git a/yarn.lock b/yarn.lock
index 0c1dd5b..6e4d18f 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -39,7 +39,7 @@
   resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.7.tgz"
   integrity sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==
 
-"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.23.9", "@babel/core@^7.24.7", "@babel/core@^7.7.5":
+"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.0.0-0 || ^8.0.0-0 <8.0.0", "@babel/core@^7.11.0", "@babel/core@^7.11.6", "@babel/core@^7.12.0", "@babel/core@^7.12.3", "@babel/core@^7.13.0", "@babel/core@^7.23.9", "@babel/core@^7.24.7", "@babel/core@^7.4.0 || ^8.0.0-0 <8.0.0", "@babel/core@^7.7.5", "@babel/core@^7.8.0":
   version "7.24.7"
   resolved "https://registry.npmjs.org/@babel/core/-/core-7.24.7.tgz"
   integrity sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g==
@@ -1422,7 +1422,7 @@
     "@nodelib/fs.stat" "2.0.5"
     run-parallel "^1.1.9"
 
-"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2":
+"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5":
   version "2.0.5"
   resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz"
   integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
@@ -1492,81 +1492,6 @@
     estree-walker "^2.0.2"
     picomatch "^2.3.1"
 
-"@rollup/rollup-android-arm-eabi@4.18.0":
-  version "4.18.0"
-  resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.18.0.tgz#bbd0e616b2078cd2d68afc9824d1fadb2f2ffd27"
-  integrity sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==
-
-"@rollup/rollup-android-arm64@4.18.0":
-  version "4.18.0"
-  resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.18.0.tgz#97255ef6384c5f73f4800c0de91f5f6518e21203"
-  integrity sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==
-
-"@rollup/rollup-darwin-arm64@4.18.0":
-  version "4.18.0"
-  resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.18.0.tgz#b6dd74e117510dfe94541646067b0545b42ff096"
-  integrity sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==
-
-"@rollup/rollup-darwin-x64@4.18.0":
-  version "4.18.0"
-  resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.18.0.tgz#e07d76de1cec987673e7f3d48ccb8e106d42c05c"
-  integrity sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==
-
-"@rollup/rollup-linux-arm-gnueabihf@4.18.0":
-  version "4.18.0"
-  resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.18.0.tgz#9f1a6d218b560c9d75185af4b8bb42f9f24736b8"
-  integrity sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==
-
-"@rollup/rollup-linux-arm-musleabihf@4.18.0":
-  version "4.18.0"
-  resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.18.0.tgz#53618b92e6ffb642c7b620e6e528446511330549"
-  integrity sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==
-
-"@rollup/rollup-linux-arm64-gnu@4.18.0":
-  version "4.18.0"
-  resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.18.0.tgz#99a7ba5e719d4f053761a698f7b52291cefba577"
-  integrity sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==
-
-"@rollup/rollup-linux-arm64-musl@4.18.0":
-  version "4.18.0"
-  resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.18.0.tgz#f53db99a45d9bc00ce94db8a35efa7c3c144a58c"
-  integrity sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==
-
-"@rollup/rollup-linux-powerpc64le-gnu@4.18.0":
-  version "4.18.0"
-  resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.18.0.tgz#cbb0837408fe081ce3435cf3730e090febafc9bf"
-  integrity sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==
-
-"@rollup/rollup-linux-riscv64-gnu@4.18.0":
-  version "4.18.0"
-  resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.18.0.tgz#8ed09c1d1262ada4c38d791a28ae0fea28b80cc9"
-  integrity sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==
-
-"@rollup/rollup-linux-s390x-gnu@4.18.0":
-  version "4.18.0"
-  resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.18.0.tgz#938138d3c8e0c96f022252a28441dcfb17afd7ec"
-  integrity sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==
-
-"@rollup/rollup-linux-x64-gnu@4.18.0":
-  version "4.18.0"
-  resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.18.0.tgz#1a7481137a54740bee1ded4ae5752450f155d942"
-  integrity sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==
-
-"@rollup/rollup-linux-x64-musl@4.18.0":
-  version "4.18.0"
-  resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.18.0.tgz#f1186afc601ac4f4fc25fac4ca15ecbee3a1874d"
-  integrity sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==
-
-"@rollup/rollup-win32-arm64-msvc@4.18.0":
-  version "4.18.0"
-  resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.18.0.tgz#ed6603e93636a96203c6915be4117245c1bd2daf"
-  integrity sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==
-
-"@rollup/rollup-win32-ia32-msvc@4.18.0":
-  version "4.18.0"
-  resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.18.0.tgz#14e0b404b1c25ebe6157a15edb9c46959ba74c54"
-  integrity sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==
-
 "@rollup/rollup-win32-x64-msvc@4.18.0":
   version "4.18.0"
   resolved "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.18.0.tgz"
@@ -1674,7 +1599,7 @@
     "@types/eslint" "*"
     "@types/estree" "*"
 
-"@types/eslint@*":
+"@types/eslint@*", "@types/eslint@>=8.0.0":
   version "8.56.10"
   resolved "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.10.tgz"
   integrity sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==
@@ -1682,7 +1607,7 @@
     "@types/estree" "*"
     "@types/json-schema" "*"
 
-"@types/estree@*", "@types/estree@1.0.5", "@types/estree@^1.0.0", "@types/estree@^1.0.5":
+"@types/estree@*", "@types/estree@^1.0.0", "@types/estree@^1.0.5", "@types/estree@1.0.5":
   version "1.0.5"
   resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz"
   integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==
@@ -1900,7 +1825,7 @@
   dependencies:
     common-tags "^1.8.0"
 
-"@webassemblyjs/ast@1.12.1", "@webassemblyjs/ast@^1.12.1":
+"@webassemblyjs/ast@^1.12.1", "@webassemblyjs/ast@1.12.1":
   version "1.12.1"
   resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz"
   integrity sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==
@@ -2001,7 +1926,7 @@
     "@webassemblyjs/wasm-gen" "1.12.1"
     "@webassemblyjs/wasm-parser" "1.12.1"
 
-"@webassemblyjs/wasm-parser@1.12.1", "@webassemblyjs/wasm-parser@^1.12.1":
+"@webassemblyjs/wasm-parser@^1.12.1", "@webassemblyjs/wasm-parser@1.12.1":
   version "1.12.1"
   resolved "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz"
   integrity sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==
@@ -2089,16 +2014,16 @@ acorn-walk@^8.0.2:
   dependencies:
     acorn "^8.11.0"
 
-acorn@^6.4.1:
-  version "6.4.2"
-  resolved "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz"
-  integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==
-
-acorn@^8.1.0, acorn@^8.11.0, acorn@^8.7.1, acorn@^8.8.1, acorn@^8.8.2, acorn@^8.9.0:
+"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8, acorn@^8.1.0, acorn@^8.11.0, acorn@^8.7.1, acorn@^8.8.1, acorn@^8.8.2, acorn@^8.9.0:
   version "8.12.0"
   resolved "https://registry.npmjs.org/acorn/-/acorn-8.12.0.tgz"
   integrity sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==
 
+acorn@^6.0.0, acorn@^6.4.1:
+  version "6.4.2"
+  resolved "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz"
+  integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==
+
 address@^1.0.1, address@^1.1.2:
   version "1.2.2"
   resolved "https://registry.npmjs.org/address/-/address-1.2.2.tgz"
@@ -2130,7 +2055,7 @@ ajv-keywords@^5.1.0:
   dependencies:
     fast-deep-equal "^3.1.3"
 
-ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5:
+ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5, ajv@^6.9.1:
   version "6.12.6"
   resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz"
   integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
@@ -2140,7 +2065,17 @@ ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5:
     json-schema-traverse "^0.4.1"
     uri-js "^4.2.2"
 
-ajv@^8.0.0, ajv@^8.9.0:
+ajv@^8.0.0:
+  version "8.16.0"
+  resolved "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz"
+  integrity sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==
+  dependencies:
+    fast-deep-equal "^3.1.3"
+    json-schema-traverse "^1.0.0"
+    require-from-string "^2.0.2"
+    uri-js "^4.4.1"
+
+ajv@^8.8.2, ajv@^8.9.0:
   version "8.16.0"
   resolved "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz"
   integrity sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==
@@ -2184,7 +2119,14 @@ ansi-styles@^3.2.0, ansi-styles@^3.2.1:
   dependencies:
     color-convert "^1.9.0"
 
-ansi-styles@^4.0.0, ansi-styles@^4.1.0:
+ansi-styles@^4.0.0:
+  version "4.3.0"
+  resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz"
+  integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
+  dependencies:
+    color-convert "^2.0.1"
+
+ansi-styles@^4.1.0:
   version "4.3.0"
   resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz"
   integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
@@ -2196,7 +2138,17 @@ ansi-styles@^5.0.0:
   resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz"
   integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==
 
-ansi-styles@^6.0.0, ansi-styles@^6.1.0, ansi-styles@^6.2.1:
+ansi-styles@^6.0.0:
+  version "6.2.1"
+  resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz"
+  integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==
+
+ansi-styles@^6.1.0:
+  version "6.2.1"
+  resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz"
+  integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==
+
+ansi-styles@^6.2.1:
   version "6.2.1"
   resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz"
   integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==
@@ -2338,12 +2290,7 @@ assert@1.5.0:
     object-assign "^4.1.1"
     util "0.10.3"
 
-ast-types@0.13.3:
-  version "0.13.3"
-  resolved "https://registry.npmjs.org/ast-types/-/ast-types-0.13.3.tgz"
-  integrity sha512-XTZ7xGML849LkQP86sWdQzfhwbt3YwIO6MqbX9mUNYY98VKaaVZP7YNNm70IpwecbkkxmfC5IYAzOQ/2p29zRA==
-
-ast-types@0.14.2, ast-types@^0.14.2, ast-types@~0.14.2:
+ast-types@^0.14.2, ast-types@~0.14.2, ast-types@0.14.2:
   version "0.14.2"
   resolved "https://registry.npmjs.org/ast-types/-/ast-types-0.14.2.tgz"
   integrity sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==
@@ -2355,6 +2302,11 @@ ast-types@^0.7.2:
   resolved "https://registry.npmjs.org/ast-types/-/ast-types-0.7.8.tgz"
   integrity sha512-RIOpVnVlltB6PcBJ5BMLx+H+6JJ/zjDGU0t7f0L6c2M1dqcK92VQopLBlPQ9R80AVXelfqYgjcPLtHtDbNFg0Q==
 
+ast-types@0.13.3:
+  version "0.13.3"
+  resolved "https://registry.npmjs.org/ast-types/-/ast-types-0.13.3.tgz"
+  integrity sha512-XTZ7xGML849LkQP86sWdQzfhwbt3YwIO6MqbX9mUNYY98VKaaVZP7YNNm70IpwecbkkxmfC5IYAzOQ/2p29zRA==
+
 async@^3.2.4:
   version "3.2.5"
   resolved "https://registry.npmjs.org/async/-/async-3.2.5.tgz"
@@ -2547,7 +2499,7 @@ braces@^3.0.3, braces@~3.0.2:
   dependencies:
     fill-range "^7.1.1"
 
-browserslist@^4.18.1, browserslist@^4.21.10, browserslist@^4.22.2, browserslist@^4.23.0:
+browserslist@^4.18.1, browserslist@^4.21.10, browserslist@^4.22.2, browserslist@^4.23.0, "browserslist@>= 4.21.0":
   version "4.23.1"
   resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.23.1.tgz"
   integrity sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==
@@ -2663,7 +2615,23 @@ chalk@^3.0.0:
     ansi-styles "^4.1.0"
     supports-color "^7.1.0"
 
-chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.2:
+chalk@^4.0.0:
+  version "4.1.2"
+  resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz"
+  integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
+  dependencies:
+    ansi-styles "^4.1.0"
+    supports-color "^7.1.0"
+
+chalk@^4.1.0:
+  version "4.1.2"
+  resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz"
+  integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
+  dependencies:
+    ansi-styles "^4.1.0"
+    supports-color "^7.1.0"
+
+chalk@^4.1.2:
   version "4.1.2"
   resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz"
   integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
@@ -2696,7 +2664,7 @@ character-reference-invalid@^1.0.0:
   resolved "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz"
   integrity sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==
 
-"chokidar@>=3.0.0 <4.0.0", chokidar@^3.4.0, chokidar@^3.4.2, chokidar@^3.5.3:
+chokidar@^3.4.0, chokidar@^3.4.2, chokidar@^3.5.3, "chokidar@>=3.0.0 <4.0.0":
   version "3.6.0"
   resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz"
   integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==
@@ -2826,16 +2794,16 @@ color-convert@^2.0.1:
   dependencies:
     color-name "~1.1.4"
 
-color-name@1.1.3:
-  version "1.1.3"
-  resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz"
-  integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==
-
 color-name@~1.1.4:
   version "1.1.4"
   resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz"
   integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
 
+color-name@1.1.3:
+  version "1.1.3"
+  resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz"
+  integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==
+
 colorette@^2.0.10, colorette@^2.0.14, colorette@^2.0.20:
   version "2.0.20"
   resolved "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz"
@@ -2863,7 +2831,12 @@ commander@^11.0.0:
   resolved "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz"
   integrity sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==
 
-commander@^2.19.0, commander@^2.20.0:
+commander@^2.19.0:
+  version "2.20.3"
+  resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz"
+  integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
+
+commander@^2.20.0:
   version "2.20.3"
   resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz"
   integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
@@ -3134,20 +3107,27 @@ data-view-byte-offset@^1.0.0:
     es-errors "^1.3.0"
     is-data-view "^1.0.1"
 
-debug@2.6.9, debug@^2.6.0:
+debug@^2.6.0:
   version "2.6.9"
   resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz"
   integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
   dependencies:
     ms "2.0.0"
 
-debug@4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@~4.3.4:
+debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@~4.3.4, debug@4:
   version "4.3.5"
   resolved "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz"
   integrity sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==
   dependencies:
     ms "2.1.2"
 
+debug@2.6.9:
+  version "2.6.9"
+  resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz"
+  integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
+  dependencies:
+    ms "2.0.0"
+
 decimal.js@^10.4.2:
   version "10.4.3"
   resolved "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz"
@@ -3223,16 +3203,16 @@ delayed-stream@~1.0.0:
   resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz"
   integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==
 
-depd@2.0.0:
-  version "2.0.0"
-  resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz"
-  integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==
-
 depd@~1.1.2:
   version "1.1.2"
   resolved "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz"
   integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==
 
+depd@2.0.0:
+  version "2.0.0"
+  resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz"
+  integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==
+
 destroy@1.2.0:
   version "1.2.0"
   resolved "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz"
@@ -3557,7 +3537,7 @@ escodegen@^2.0.0:
   optionalDependencies:
     source-map "~0.6.1"
 
-eslint-config-prettier@^9.1.0:
+eslint-config-prettier@*, eslint-config-prettier@^9.1.0:
   version "9.1.0"
   resolved "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz"
   integrity sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==
@@ -3594,14 +3574,6 @@ eslint-plugin-react@^7.34.3:
     semver "^6.3.1"
     string.prototype.matchall "^4.0.11"
 
-eslint-scope@5.1.1:
-  version "5.1.1"
-  resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz"
-  integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==
-  dependencies:
-    esrecurse "^4.3.0"
-    estraverse "^4.1.1"
-
 eslint-scope@^7.2.2:
   version "7.2.2"
   resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz"
@@ -3610,17 +3582,35 @@ eslint-scope@^7.2.2:
     esrecurse "^4.3.0"
     estraverse "^5.2.0"
 
+eslint-scope@5.1.1:
+  version "5.1.1"
+  resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz"
+  integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==
+  dependencies:
+    esrecurse "^4.3.0"
+    estraverse "^4.1.1"
+
 eslint-visitor-keys@^2.1.0:
   version "2.1.0"
   resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz"
   integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==
 
-eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3:
+eslint-visitor-keys@^3.3.0:
+  version "3.4.3"
+  resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz"
+  integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==
+
+eslint-visitor-keys@^3.4.1:
   version "3.4.3"
   resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz"
   integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==
 
-eslint@^8.0.0:
+eslint-visitor-keys@^3.4.3:
+  version "3.4.3"
+  resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz"
+  integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==
+
+"eslint@^3 || ^4 || ^5 || ^6 || ^7 || ^8", "eslint@^6.0.0 || ^7.0.0 || >=8.0.0", "eslint@^7.5.0 || ^8.0.0 || ^9.0.0", eslint@^8.0.0, "eslint@>= 6", eslint@>=7.0.0, eslint@>=8.0.0:
   version "8.57.0"
   resolved "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz"
   integrity sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==
@@ -3697,7 +3687,12 @@ esrecurse@^4.3.0:
   dependencies:
     estraverse "^5.2.0"
 
-estraverse@^4.1.1, estraverse@^4.2.0:
+estraverse@^4.1.1:
+  version "4.3.0"
+  resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz"
+  integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==
+
+estraverse@^4.2.0:
   version "4.3.0"
   resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz"
   integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==
@@ -3966,7 +3961,15 @@ find-up@^3.0.0:
   dependencies:
     locate-path "^3.0.0"
 
-find-up@^4.0.0, find-up@^4.1.0:
+find-up@^4.0.0:
+  version "4.1.0"
+  resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz"
+  integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==
+  dependencies:
+    locate-path "^5.0.0"
+    path-exists "^4.0.0"
+
+find-up@^4.1.0:
   version "4.1.0"
   resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz"
   integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==
@@ -4117,11 +4120,6 @@ fs.realpath@^1.0.0:
   resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz"
   integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
 
-fsevents@^2.3.2, fsevents@~2.3.2:
-  version "2.3.3"
-  resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6"
-  integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
-
 function-bind@^1.1.2:
   version "1.1.2"
   resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz"
@@ -4227,7 +4225,14 @@ glob-parent@^5.1.2, glob-parent@~5.1.2:
   dependencies:
     is-glob "^4.0.1"
 
-glob-parent@^6.0.1, glob-parent@^6.0.2:
+glob-parent@^6.0.1:
+  version "6.0.2"
+  resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz"
+  integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==
+  dependencies:
+    is-glob "^4.0.3"
+
+glob-parent@^6.0.2:
   version "6.0.2"
   resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz"
   integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==
@@ -4457,6 +4462,16 @@ http-deceiver@^1.2.7:
   resolved "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz"
   integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==
 
+http-errors@~1.6.2:
+  version "1.6.3"
+  resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz"
+  integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==
+  dependencies:
+    depd "~1.1.2"
+    inherits "2.0.3"
+    setprototypeof "1.1.0"
+    statuses ">= 1.4.0 < 2"
+
 http-errors@2.0.0:
   version "2.0.0"
   resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz"
@@ -4468,16 +4483,6 @@ http-errors@2.0.0:
     statuses "2.0.1"
     toidentifier "1.0.1"
 
-http-errors@~1.6.2:
-  version "1.6.3"
-  resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz"
-  integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==
-  dependencies:
-    depd "~1.1.2"
-    inherits "2.0.3"
-    setprototypeof "1.1.0"
-    statuses ">= 1.4.0 < 2"
-
 http-parser-js@>=0.5.1:
   version "0.5.8"
   resolved "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz"
@@ -4598,7 +4603,7 @@ inflight@^1.0.4:
     once "^1.3.0"
     wrappy "1"
 
-inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3:
+inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3, inherits@2, inherits@2.0.4:
   version "2.0.4"
   resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz"
   integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
@@ -4632,16 +4637,16 @@ interpret@^3.1.1:
   resolved "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz"
   integrity sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==
 
-ipaddr.js@1.9.1:
-  version "1.9.1"
-  resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz"
-  integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==
-
 ipaddr.js@^2.0.1:
   version "2.2.0"
   resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz"
   integrity sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==
 
+ipaddr.js@1.9.1:
+  version "1.9.1"
+  resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz"
+  integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==
+
 is-alphabetical@^1.0.0:
   version "1.0.4"
   resolved "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz"
@@ -5305,7 +5310,7 @@ jest-resolve-dependencies@^29.7.0:
     jest-regex-util "^29.6.3"
     jest-snapshot "^29.7.0"
 
-jest-resolve@^29.7.0:
+jest-resolve@*, jest-resolve@^29.7.0:
   version "29.7.0"
   resolved "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz"
   integrity sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==
@@ -5458,7 +5463,7 @@ jest-worker@^29.7.0:
     merge-stream "^2.0.0"
     supports-color "^8.0.0"
 
-jest@^29.7.0:
+jest@^29.7.0, jest@>=27.2.5:
   version "29.7.0"
   resolved "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz"
   integrity sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==
@@ -5626,7 +5631,7 @@ jss-plugin-nested@^10.9.0:
     jss "10.10.0"
     tiny-warning "^1.0.2"
 
-jss@10.10.0, jss@^10.9.0:
+jss@^10.9.0, jss@10.10.0:
   version "10.10.0"
   resolved "https://registry.npmjs.org/jss/-/jss-10.10.0.tgz"
   integrity sha512-cqsOTS7jqPsPMjtKYDUpdFC0AbhYFLTcuGRqymgmdJIeQ8cH7+AgX7YSgQy79wXloZq2VvATYxUOUQEvS1V/Zw==
@@ -5978,7 +5983,7 @@ micromatch@^4.0.2, micromatch@^4.0.4, micromatch@~4.0.7:
     braces "^3.0.3"
     picomatch "^2.3.1"
 
-mime-db@1.52.0, "mime-db@>= 1.43.0 < 2":
+"mime-db@>= 1.43.0 < 2", mime-db@1.52.0:
   version "1.52.0"
   resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz"
   integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
@@ -6322,7 +6327,14 @@ ora@^4.0.2:
     strip-ansi "^6.0.0"
     wcwidth "^1.0.1"
 
-p-limit@^2.0.0, p-limit@^2.2.0:
+p-limit@^2.0.0:
+  version "2.3.0"
+  resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz"
+  integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==
+  dependencies:
+    p-try "^2.0.0"
+
+p-limit@^2.2.0:
   version "2.3.0"
   resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz"
   integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==
@@ -6565,7 +6577,14 @@ pirates@^4.0.4:
   resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz"
   integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==
 
-pkg-dir@^4.1.0, pkg-dir@^4.2.0:
+pkg-dir@^4.1.0:
+  version "4.2.0"
+  resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz"
+  integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==
+  dependencies:
+    find-up "^4.0.0"
+
+pkg-dir@^4.2.0:
   version "4.2.0"
   resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz"
   integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==
@@ -6632,7 +6651,7 @@ postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0:
   resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz"
   integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==
 
-postcss@^8.4.33:
+postcss@^8.1.0, postcss@^8.4.33:
   version "8.4.39"
   resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.39.tgz"
   integrity sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==
@@ -6658,7 +6677,7 @@ prettier-linter-helpers@^1.0.0:
   dependencies:
     fast-diff "^1.1.2"
 
-prettier@3.3.2:
+prettier@>=3.0.0, prettier@3.3.2:
   version "3.3.2"
   resolved "https://registry.npmjs.org/prettier/-/prettier-3.3.2.tgz"
   integrity sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA==
@@ -6822,7 +6841,7 @@ react-docgen-displayname-handler@^3.0.0:
   dependencies:
     ast-types "0.14.2"
 
-react-docgen@^5.0.0:
+"react-docgen@^3.0.0 || ^4.0.0 || ^5.0.0-beta || ^5.0.0", react-docgen@^5.0.0:
   version "5.4.3"
   resolved "https://registry.npmjs.org/react-docgen/-/react-docgen-5.4.3.tgz"
   integrity sha512-xlLJyOlnfr8lLEEeaDZ+X2J/KJoe6Nr9AzxnkdQWush5hz2ZSu66w6iLMOScMmxoSHWpWMn+k3v5ZiyCfcWsOA==
@@ -6838,7 +6857,7 @@ react-docgen@^5.0.0:
     node-dir "^0.1.10"
     strip-indent "^3.0.0"
 
-react-dom@16.9.0:
+react-dom@^16.0.0, react-dom@>=16.8, react-dom@16.9.0:
   version "16.9.0"
   resolved "https://registry.npmjs.org/react-dom/-/react-dom-16.9.0.tgz"
   integrity sha512-YFT2rxO9hM70ewk9jq0y6sQk8cL02xm4+IzYBz75CQGlClQQ1Bxq0nhHF6OtSbit+AIahujJgb/CPRibFkMNJQ==
@@ -6867,7 +6886,12 @@ react-icons@^3.8.0:
   dependencies:
     camelcase "^5.0.0"
 
-react-is@^16.13.1, react-is@^16.9.0:
+react-is@^16.13.1:
+  version "16.13.1"
+  resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz"
+  integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
+
+react-is@^16.9.0:
   version "16.13.1"
   resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz"
   integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
@@ -6959,7 +6983,7 @@ react-test-renderer@16.9.0:
     react-is "^16.9.0"
     scheduler "^0.15.0"
 
-react@16.9.0:
+react@*, react@^16.0.0, "react@>= 0.14.0", react@>=16.0.0, react@>=16.8, react@16.9.0:
   version "16.9.0"
   resolved "https://registry.npmjs.org/react/-/react-16.9.0.tgz"
   integrity sha512-+7LQnFBwkiw+BobzOF6N//BdoNw0ouwmSJTEm9cglOOmsg/TMiFHZLe2sEoN5M7LgJTj9oHH0gxklfnQe66S1w==
@@ -7084,18 +7108,6 @@ regexp.prototype.flags@^1.5.2:
     es-errors "^1.3.0"
     set-function-name "^2.0.1"
 
-regexpu-core@4.5.4:
-  version "4.5.4"
-  resolved "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.5.4.tgz"
-  integrity sha512-BtizvGtFQKGPUcTy56o3nk1bGRp4SZOTYrDtGNlqCQufptV5IkkLN6Emw+yunAJjzf+C9FQFtvq7IoA3+oMYHQ==
-  dependencies:
-    regenerate "^1.4.0"
-    regenerate-unicode-properties "^8.0.2"
-    regjsgen "^0.5.0"
-    regjsparser "^0.6.0"
-    unicode-match-property-ecmascript "^1.0.4"
-    unicode-match-property-value-ecmascript "^1.1.0"
-
 regexpu-core@^5.3.1:
   version "5.3.2"
   resolved "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz"
@@ -7108,6 +7120,18 @@ regexpu-core@^5.3.1:
     unicode-match-property-ecmascript "^2.0.0"
     unicode-match-property-value-ecmascript "^2.1.0"
 
+regexpu-core@4.5.4:
+  version "4.5.4"
+  resolved "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.5.4.tgz"
+  integrity sha512-BtizvGtFQKGPUcTy56o3nk1bGRp4SZOTYrDtGNlqCQufptV5IkkLN6Emw+yunAJjzf+C9FQFtvq7IoA3+oMYHQ==
+  dependencies:
+    regenerate "^1.4.0"
+    regenerate-unicode-properties "^8.0.2"
+    regjsgen "^0.5.0"
+    regjsparser "^0.6.0"
+    unicode-match-property-ecmascript "^1.0.4"
+    unicode-match-property-value-ecmascript "^1.1.0"
+
 regjsgen@^0.5.0:
   version "0.5.2"
   resolved "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz"
@@ -7255,7 +7279,7 @@ rimraf@^3.0.2:
   dependencies:
     glob "^7.1.3"
 
-rollup@^4.18.0:
+rollup@^1.20.0||^2.0.0||^3.0.0||^4.0.0, rollup@^2.0.0||^3.0.0||^4.0.0, rollup@^2.68.0||^3.0.0||^4.0.0, rollup@^2.78.0||^3.0.0||^4.0.0, rollup@^4.18.0:
   version "4.18.0"
   resolved "https://registry.npmjs.org/rollup/-/rollup-4.18.0.tgz"
   integrity sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==
@@ -7297,15 +7321,20 @@ safe-array-concat@^1.1.2:
     has-symbols "^1.0.3"
     isarray "^2.0.5"
 
-safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
+safe-buffer@^5.1.0, safe-buffer@>=5.1.0, safe-buffer@~5.2.0, safe-buffer@5.2.1:
+  version "5.2.1"
+  resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz"
+  integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
+
+safe-buffer@~5.1.0, safe-buffer@~5.1.1:
   version "5.1.2"
   resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz"
   integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
 
-safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.1.0, safe-buffer@~5.2.0:
-  version "5.2.1"
-  resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz"
-  integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
+safe-buffer@5.1.2:
+  version "5.1.2"
+  resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz"
+  integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
 
 safe-regex-test@^1.0.3:
   version "1.0.3"
@@ -7345,16 +7374,16 @@ scheduler@^0.15.0:
     loose-envify "^1.1.0"
     object-assign "^4.1.1"
 
-schema-utils@2.7.0:
-  version "2.7.0"
-  resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz"
-  integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==
+schema-utils@^3.1.1:
+  version "3.3.0"
+  resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz"
+  integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==
   dependencies:
-    "@types/json-schema" "^7.0.4"
-    ajv "^6.12.2"
-    ajv-keywords "^3.4.1"
+    "@types/json-schema" "^7.0.8"
+    ajv "^6.12.5"
+    ajv-keywords "^3.5.2"
 
-schema-utils@^3.1.1, schema-utils@^3.2.0:
+schema-utils@^3.2.0:
   version "3.3.0"
   resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz"
   integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==
@@ -7373,6 +7402,15 @@ schema-utils@^4.0.0:
     ajv-formats "^2.1.1"
     ajv-keywords "^5.1.0"
 
+schema-utils@2.7.0:
+  version "2.7.0"
+  resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz"
+  integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==
+  dependencies:
+    "@types/json-schema" "^7.0.4"
+    ajv "^6.12.2"
+    ajv-keywords "^3.4.1"
+
 select-hose@^2.0.0:
   version "2.0.0"
   resolved "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz"
@@ -7386,7 +7424,12 @@ selfsigned@^2.1.1:
     "@types/node-forge" "^1.3.0"
     node-forge "^1"
 
-"semver@2 || 3 || 4 || 5", semver@^5.5.0, semver@^5.6.0:
+semver@^5.5.0:
+  version "5.7.2"
+  resolved "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz"
+  integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==
+
+semver@^5.6.0:
   version "5.7.2"
   resolved "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz"
   integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==
@@ -7396,11 +7439,26 @@ semver@^6.0.0, semver@^6.3.0, semver@^6.3.1:
   resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz"
   integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
 
-semver@^7.3.2, semver@^7.5.3, semver@^7.5.4:
+semver@^7.3.2:
+  version "7.6.2"
+  resolved "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz"
+  integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==
+
+semver@^7.5.3:
+  version "7.6.2"
+  resolved "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz"
+  integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==
+
+semver@^7.5.4:
   version "7.6.2"
   resolved "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz"
   integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==
 
+"semver@2 || 3 || 4 || 5":
+  version "5.7.2"
+  resolved "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz"
+  integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==
+
 send@0.18.0:
   version "0.18.0"
   resolved "https://registry.npmjs.org/send/-/send-0.18.0.tgz"
@@ -7533,7 +7591,12 @@ signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7:
   resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz"
   integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==
 
-signal-exit@^4.0.1, signal-exit@^4.1.0:
+signal-exit@^4.0.1:
+  version "4.1.0"
+  resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz"
+  integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==
+
+signal-exit@^4.1.0:
   version "4.1.0"
   resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz"
   integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==
@@ -7593,19 +7656,11 @@ source-list-map@^2.0.1:
   resolved "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz"
   integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==
 
-"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.2.0:
+source-map-js@^1.2.0, "source-map-js@>=0.6.2 <2.0.0":
   version "1.2.0"
   resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz"
   integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==
 
-source-map-support@0.5.13:
-  version "0.5.13"
-  resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz"
-  integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==
-  dependencies:
-    buffer-from "^1.0.0"
-    source-map "^0.6.0"
-
 source-map-support@~0.5.20:
   version "0.5.21"
   resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz"
@@ -7614,6 +7669,14 @@ source-map-support@~0.5.20:
     buffer-from "^1.0.0"
     source-map "^0.6.0"
 
+source-map-support@0.5.13:
+  version "0.5.13"
+  resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz"
+  integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==
+  dependencies:
+    buffer-from "^1.0.0"
+    source-map "^0.6.0"
+
 source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1:
   version "0.6.1"
   resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz"
@@ -7690,15 +7753,29 @@ stack-utils@^2.0.3:
   dependencies:
     escape-string-regexp "^2.0.0"
 
+"statuses@>= 1.4.0 < 2":
+  version "1.5.0"
+  resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz"
+  integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==
+
 statuses@2.0.1:
   version "2.0.1"
   resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz"
   integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==
 
-"statuses@>= 1.4.0 < 2":
-  version "1.5.0"
-  resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz"
-  integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==
+string_decoder@^1.1.1:
+  version "1.3.0"
+  resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz"
+  integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
+  dependencies:
+    safe-buffer "~5.2.0"
+
+string_decoder@~1.1.1:
+  version "1.1.1"
+  resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz"
+  integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
+  dependencies:
+    safe-buffer "~5.1.0"
 
 string-argv@~0.3.2:
   version "0.3.2"
@@ -7713,7 +7790,25 @@ string-length@^4.0.1:
     char-regex "^1.0.2"
     strip-ansi "^6.0.0"
 
-"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
+"string-width-cjs@npm:string-width@^4.2.0":
+  version "4.2.3"
+  resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz"
+  integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
+  dependencies:
+    emoji-regex "^8.0.0"
+    is-fullwidth-code-point "^3.0.0"
+    strip-ansi "^6.0.1"
+
+string-width@^4.1.0, string-width@^4.2.0:
+  version "4.2.3"
+  resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz"
+  integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
+  dependencies:
+    emoji-regex "^8.0.0"
+    is-fullwidth-code-point "^3.0.0"
+    strip-ansi "^6.0.1"
+
+string-width@^4.2.3:
   version "4.2.3"
   resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz"
   integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
@@ -7796,20 +7891,6 @@ string.prototype.trimstart@^1.0.8:
     define-properties "^1.2.1"
     es-object-atoms "^1.0.0"
 
-string_decoder@^1.1.1:
-  version "1.3.0"
-  resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz"
-  integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
-  dependencies:
-    safe-buffer "~5.2.0"
-
-string_decoder@~1.1.1:
-  version "1.1.1"
-  resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz"
-  integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
-  dependencies:
-    safe-buffer "~5.1.0"
-
 stringify-object@^3.2.0:
   version "3.3.0"
   resolved "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz"
@@ -7819,14 +7900,28 @@ stringify-object@^3.2.0:
     is-obj "^1.0.1"
     is-regexp "^1.0.0"
 
-"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1:
+"strip-ansi-cjs@npm:strip-ansi@^6.0.1":
+  version "6.0.1"
+  resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz"
+  integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
+  dependencies:
+    ansi-regex "^5.0.1"
+
+strip-ansi@^6.0.0, strip-ansi@^6.0.1:
   version "6.0.1"
   resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz"
   integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
   dependencies:
     ansi-regex "^5.0.1"
 
-strip-ansi@^7.0.1, strip-ansi@^7.1.0:
+strip-ansi@^7.0.1:
+  version "7.1.0"
+  resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz"
+  integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==
+  dependencies:
+    ansi-regex "^6.0.1"
+
+strip-ansi@^7.1.0:
   version "7.1.0"
   resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz"
   integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==
@@ -7921,10 +8016,10 @@ synckit@^0.8.6:
     "@pkgr/core" "^0.1.0"
     tslib "^2.6.2"
 
-tabs-more-button@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.npmjs.org/tabs-more-button/-/tabs-more-button-1.0.1.tgz"
-  integrity sha512-mkVR2ejRfuHJcrLvfzJSSs1+x+6fiHDSEAK5WMvCQKvFbHhJ+rvBuwbOazxd4SZnAiCjdndyKUN056djPJ6mlg==
+tabs-more-button@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.npmjs.org/tabs-more-button/-/tabs-more-button-2.0.0.tgz"
+  integrity sha512-Jz2X90BgITBG2dp9FJeIr8sPi9Zbjrpf1jkOSpRl2MnpErpfd1tiTmB4dNj7wxlL1+GgOiVUQhGe1SU6kBg/XQ==
 
 tapable@^1.0.0:
   version "1.1.3"
@@ -8066,7 +8161,7 @@ type-check@~0.3.2:
   dependencies:
     prelude-ls "~1.1.2"
 
-type-detect@4.0.8, type-detect@^4.0.8:
+type-detect@^4.0.8, type-detect@4.0.8:
   version "4.0.8"
   resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz"
   integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==
@@ -8133,6 +8228,11 @@ typed-array-length@^1.0.6:
     is-typed-array "^1.1.13"
     possible-typed-array-names "^1.0.0"
 
+"typescript@>= 2.7":
+  version "5.5.3"
+  resolved "https://registry.npmjs.org/typescript/-/typescript-5.5.3.tgz"
+  integrity sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==
+
 unbox-primitive@^1.0.2:
   version "1.0.2"
   resolved "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz"
@@ -8245,7 +8345,7 @@ universalify@^2.0.0:
   resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz"
   integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==
 
-unpipe@1.0.0, unpipe@~1.0.0:
+unpipe@~1.0.0, unpipe@1.0.0:
   version "1.0.0"
   resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz"
   integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==
@@ -8381,7 +8481,7 @@ webidl-conversions@^7.0.0:
   resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz"
   integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==
 
-webpack-cli@^5.1.4:
+webpack-cli@^5.1.4, webpack-cli@5.x.x:
   version "5.1.4"
   resolved "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz"
   integrity sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==
@@ -8476,7 +8576,7 @@ webpack-sources@^3.2.3:
   resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz"
   integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==
 
-webpack@^5.92.1:
+"webpack@^4.0.0 || ^5.0.0", "webpack@^4.37.0 || ^5.0.0", webpack@^5.1.0, webpack@^5.27.0, webpack@^5.92.1, "webpack@>= 4", webpack@>=4, "webpack@>=4.0.0 <6.0.0", webpack@>=5, webpack@5.x.x:
   version "5.92.1"
   resolved "https://registry.npmjs.org/webpack/-/webpack-5.92.1.tgz"
   integrity sha512-JECQ7IwJb+7fgUFBlrJzbyu3GEuNBcdqr1LD7IbSzwkSmIevTm8PF+wej3Oxuz/JFBUZ6O1o43zsPkwm1C4TmA==
@@ -8506,7 +8606,7 @@ webpack@^5.92.1:
     watchpack "^2.4.1"
     webpack-sources "^3.2.3"
 
-websocket-driver@>=0.5.1, websocket-driver@^0.7.4:
+websocket-driver@^0.7.4, websocket-driver@>=0.5.1:
   version "0.7.4"
   resolved "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz"
   integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==
@@ -8590,7 +8690,14 @@ which-typed-array@^1.1.14, which-typed-array@^1.1.15, which-typed-array@^1.1.9:
     gopd "^1.0.1"
     has-tostringtag "^1.0.2"
 
-which@^1.2.9, which@^1.3.1:
+which@^1.2.9:
+  version "1.3.1"
+  resolved "https://registry.npmjs.org/which/-/which-1.3.1.tgz"
+  integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
+  dependencies:
+    isexe "^2.0.0"
+
+which@^1.3.1:
   version "1.3.1"
   resolved "https://registry.npmjs.org/which/-/which-1.3.1.tgz"
   integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
@@ -8614,7 +8721,16 @@ word-wrap@^1.2.5, word-wrap@~1.2.3:
   resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz"
   integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==
 
-"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0:
+"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0":
+  version "7.0.0"
+  resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz"
+  integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
+  dependencies:
+    ansi-styles "^4.0.0"
+    string-width "^4.1.0"
+    strip-ansi "^6.0.0"
+
+wrap-ansi@^7.0.0:
   version "7.0.0"
   resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz"
   integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==

From e693901fe05f3be0d3e4eeb45938ad40fb3a1d18 Mon Sep 17 00:00:00 2001
From: dev-javascript <javascript.code.dev@gmail.com>
Date: Fri, 20 Dec 2024 02:49:53 +0330
Subject: [PATCH 25/26] remove eslint errors

---
 src/hooks.js                                  | 2 +-
 src/plugins/moreButtonPlugin/button/api.js    | 9 +++++----
 src/plugins/moreButtonPlugin/setComponents.js | 8 ++++----
 src/tab/memomizeTab.js                        | 2 +-
 src/tab/tab.factory.js                        | 2 +-
 src/utils/api/api.factory.js                  | 2 +-
 6 files changed, 13 insertions(+), 12 deletions(-)

diff --git a/src/hooks.js b/src/hooks.js
index 47a8747..4ffb51d 100644
--- a/src/hooks.js
+++ b/src/hooks.js
@@ -1,4 +1,4 @@
-import React, {useContext} from 'react';
+import {useContext} from 'react';
 import {ApiContext, StateContext, ForceUpdateContext} from './context.js';
 export const useApi = function useApi() {
   return useContext(ApiContext);
diff --git a/src/plugins/moreButtonPlugin/button/api.js b/src/plugins/moreButtonPlugin/button/api.js
index 97ec128..1818808 100644
--- a/src/plugins/moreButtonPlugin/button/api.js
+++ b/src/plugins/moreButtonPlugin/button/api.js
@@ -74,11 +74,12 @@ export default function Api(components, setOpen) {
           this._components.TabFactory.bind(undefined, (ins) => ({
             tabPropsManager: (props) => {
               const originalProps = this._components.tabPropsManager(ins, props);
+
               const {
-                'aria-controls': ariaControls,
-                'aria-expanded': ariaExpanded,
-                'aria-selected': ariaSelected,
-                id,
+                'aria-controls': ariaControls, // eslint-disable-line no-unused-vars
+                'aria-expanded': ariaExpanded, // eslint-disable-line no-unused-vars
+                'aria-selected': ariaSelected, // eslint-disable-line no-unused-vars
+                id, // eslint-disable-line no-unused-vars
                 ...rest
               } = originalProps;
               if (rest.role) {
diff --git a/src/plugins/moreButtonPlugin/setComponents.js b/src/plugins/moreButtonPlugin/setComponents.js
index a64f957..5053c12 100644
--- a/src/plugins/moreButtonPlugin/setComponents.js
+++ b/src/plugins/moreButtonPlugin/setComponents.js
@@ -8,7 +8,7 @@ export default function setComponents(deps, ctx, components) {
   setComponents.setMoreButtonPlugin(ctx, components, ShowMoreTabs, setComponents.ShowMoreButton, memo);
   setComponents.setTablistOverflow(components);
 }
-export const ShowMoreButton = (setComponents.ShowMoreButton = function (deps, props) {
+export const ShowMoreButton = (setComponents.ShowMoreButton = function ShowMoreButton(deps, props) {
   const {
     ShowMoreTabs,
     components: {useForceUpdate, useRootState},
@@ -17,7 +17,7 @@ export const ShowMoreButton = (setComponents.ShowMoreButton = function (deps, pr
   const {openTabIDs, selectedTabID} = useRootState();
   return (
     <ShowMoreTabs {...props} ctx={deps.ctx} openTabIDs={openTabIDs} selectedTabID={selectedTabID}>
-      {props.children}
+      {props.children /* eslint-disable-line react/prop-types */}
     </ShowMoreTabs>
   );
 });
@@ -38,10 +38,10 @@ export const setMoreButtonPlugin = (setComponents.setMoreButtonPlugin = function
 export const setTablistOverflow = (setComponents.setTablistOverflow = function (components) {
   if (!components.OriginalTablistOverflow) {
     components.OriginalTablistOverflow = components.TablistOverflow;
-    components.TablistOverflow = function (props) {
+    components.TablistOverflow = function TablistOverflow(props) {
       return (
         <components.OriginalTablistOverflow {...props}>
-          {props.children}
+          {props.children /* eslint-disable-line react/prop-types */}
           <components.MoreButtonPlugin />
         </components.OriginalTablistOverflow>
       );
diff --git a/src/tab/memomizeTab.js b/src/tab/memomizeTab.js
index a85c99d..f75fc3b 100644
--- a/src/tab/memomizeTab.js
+++ b/src/tab/memomizeTab.js
@@ -1,4 +1,4 @@
-import React, {memo} from 'react';
+import {memo} from 'react';
 export default (TabComponent) =>
   memo(TabComponent, (oldProps, newProps) => {
     const {id, selectedTabID: oldActiveId} = oldProps,
diff --git a/src/tab/tab.factory.js b/src/tab/tab.factory.js
index 43c4725..8b485dd 100644
--- a/src/tab/tab.factory.js
+++ b/src/tab/tab.factory.js
@@ -5,7 +5,7 @@ const TabComponent = function TabComponent(deps, props) {
   React.useContext(ForceUpdateContext);
   const api = React.useContext(ApiContext);
   const {tabPropsManager, tabInnerPropsManager, closeIconPropsManager} = deps(api);
-  const {id, selectedTabID} = props,
+  const {id, selectedTabID} = props, // eslint-disable-line no-unused-vars
     TabInnerComponent = api.getOption('tabComponent'),
     tabObj = api.getTab(id),
     clkHandler = function (e) {
diff --git a/src/utils/api/api.factory.js b/src/utils/api/api.factory.js
index 5d895e4..39290f4 100644
--- a/src/utils/api/api.factory.js
+++ b/src/utils/api/api.factory.js
@@ -244,7 +244,7 @@ Helper.setNoneEnumProps(_apiProps, {
   },
   getSetting: function (settingName) {
     const st = this.optionsManager.setting;
-    if (st.hasOwnProperty(settingName)) {
+    if (Object.prototype.hasOwnProperty.call(st, settingName)) {
       if (typeof st[settingName] === 'function') {
         return st[settingName].apply(st, Array.prototype.slice.call(arguments, 1));
       }

From 38378c2ee9cd38e2f017c777d549213279d575b1 Mon Sep 17 00:00:00 2001
From: dev-javascript <javascript.code.dev@gmail.com>
Date: Fri, 20 Dec 2024 03:43:56 +0330
Subject: [PATCH 26/26] version 6.2.2

---
 CHANGELOG.md | 4 ++++
 package.json | 2 +-
 2 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 312d7d4..6b4b806 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+# v6.2.2
+
+Fix Tabs resizing issue
+
 # v6.2.1
 
 - Fix tablistStyle issue when when adding MoreButtonPlgin
diff --git a/package.json b/package.json
index 1cbf93d..2e42fdd 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
   "name": "react-dyn-tabs",
-  "version": "6.2.1",
+  "version": "6.2.2",
   "private": false,
   "description": "React dynamic tabs with full API",
   "keywords": [