diff --git a/.circleci/config.yml b/.circleci/config.yml index dcc487a9889..67646c5ebb2 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -135,6 +135,11 @@ jobs: command: | pnpm prettier:all pnpm check-changes + - run: + name: '`pnpm proptypes` changes committed?' + command: | + pnpm proptypes + pnpm check-changes - run: name: '`pnpm jsonSchemas` changes committed?' command: | diff --git a/.eslintignore b/.eslintignore index 909b7afb0a7..29f70af6b0d 100644 --- a/.eslintignore +++ b/.eslintignore @@ -14,4 +14,5 @@ build /test/integration/*/fixture*/ /test/visual/*/fixture*/ -.generated \ No newline at end of file +.generated +.github diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 8f70d6e1c7a..f9b68b76e82 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -19,7 +19,7 @@ jobs: uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@9fdb3e49720b44c48891d036bb502feb25684276 # v3.25.6 + uses: github/codeql-action/init@f079b8493333aace61c81488f8bd40919487bd9f # v3.25.7 with: languages: typescript # If you wish to specify custom queries, you can do so here or in a config file. @@ -29,4 +29,4 @@ jobs: # Details on CodeQL's query packs refer to : https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs # queries: security-extended,security-and-quality - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@9fdb3e49720b44c48891d036bb502feb25684276 # v3.25.6 + uses: github/codeql-action/analyze@f079b8493333aace61c81488f8bd40919487bd9f # v3.25.7 diff --git a/.github/workflows/maintenance.yml b/.github/workflows/maintenance.yml index 64b55940576..cfc97527206 100644 --- a/.github/workflows/maintenance.yml +++ b/.github/workflows/maintenance.yml @@ -29,7 +29,7 @@ jobs: steps: - run: echo "${{ github.actor }}" - name: check if prs are dirty - uses: eps1lon/actions-label-merge-conflict@6d74047dcef155976a15e4a124dde2c7fe0c5522 # v3.0.1 + uses: eps1lon/actions-label-merge-conflict@1b1b1fcde06a9b3d089f3464c96417961dde1168 # v3.0.2 with: dirtyLabel: 'PR: out-of-date' removeOnDirtyLabel: 'PR: ready to ship' diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index 323b3897473..019256a06bf 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -44,6 +44,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: Upload to code-scanning - uses: github/codeql-action/upload-sarif@9fdb3e49720b44c48891d036bb502feb25684276 # v3.25.6 + uses: github/codeql-action/upload-sarif@f079b8493333aace61c81488f8bd40919487bd9f # v3.25.7 with: sarif_file: results.sarif diff --git a/README.md b/README.md index f13eda92e6d..6e316235f77 100644 --- a/README.md +++ b/README.md @@ -1,24 +1,20 @@

- Toolpad Studio logo + Toolpad logo

-

Toolpad Studio

+

Toolpad

-
+- [Toolpad Core](https://mui.com/toolpad/core/introduction/) is a framework approach to internal tools. Through high-level components and data management interfaces, It's tightly integrated with [MUIΒ X](http://github.com/mui/mui-x) and MUI's core libraries like [MaterialΒ UI](http://github.com/mui/material-ui). You can use it as a framework for admin dashboards and CRUD apps! +- [Toolpad Studio](https://mui.com/toolpad/studio/getting-started/) is a self-hosted low-code admin builder designed to extend the Toolpad Core React components. It's for developers of all trades who want to save time building internal applications. Drag and drop from a catalog of pre-built components, connect to any data source and build apps quickly. -Toolpad Studio is a self-hosted low-code admin builder designed to extend the [MUI](https://mui.com/) React components. It's for developers of all trades who want to save time building internal applications. Drag-and-drop from a catalogue of pre-built components, connect to any data source and build apps quickly. +
[![license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/mui/material-ui/blob/HEAD/LICENSE) - - - -[![CircleCI](https://circleci.com/gh/mui/mui-toolpad/tree/master.svg?style=shield)](https://app.circleci.com/pipelines/github/mui/mui-toolpad?branch=master) -[![Follow on Twitter](https://img.shields.io/twitter/follow/Toolpad_.svg?label=follow+Toolpad)](https://twitter.com/Toolpad_) +[![npm latest package](https://img.shields.io/npm/v/@toolpad/core/latest.svg)](https://www.npmjs.com/package/@toolpad/core) +[![npm downloads](https://img.shields.io/npm/dm/@toolpad/core.svg)](https://www.npmjs.com/package/@toolpad/core) +[![GitHub branch status](https://img.shields.io/github/checks-status/mui/mui-toolpad/HEAD)](https://github.com/mui/mui-toolpad/commits/HEAD/) +[![Follow on X](https://img.shields.io/twitter/follow/Toolpad_.svg?label=follow+Toolpad)](https://x.com/Toolpad_) [![Renovate status](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://github.com/mui/mui-toolpad/issues/8) [![Average time to resolve an issue](https://isitmaintained.com/badge/resolution/mui/mui-toolpad.svg)](https://isitmaintained.com/project/mui/mui-toolpad 'Average time to resolve an issue') [![Open Collective backers and sponsors](https://img.shields.io/opencollective/all/mui-org)](https://opencollective.com/mui-org) diff --git a/docs/data/toolpad/core/all-components/all-components.md b/docs/data/toolpad/core/all-components/all-components.md index 93b03bbce29..287ebabff60 100644 --- a/docs/data/toolpad/core/all-components/all-components.md +++ b/docs/data/toolpad/core/all-components/all-components.md @@ -4,3 +4,4 @@ - [App Provider](/toolpad/core/react-app-provider/) - [Dashboard Layout](/toolpad/core/react-dashboard-layout/) +- [Data Grid](/toolpad/core/react-data-grid/) diff --git a/docs/data/toolpad/core/api/components/dashboard-layout.md b/docs/data/toolpad/core/api/components/dashboard-layout.md deleted file mode 100644 index e099cc8857f..00000000000 --- a/docs/data/toolpad/core/api/components/dashboard-layout.md +++ /dev/null @@ -1,3 +0,0 @@ -# Dashboard Layout API - -

DashboardLayout API reference

diff --git a/docs/data/toolpad/core/api/index.md b/docs/data/toolpad/core/api/index.md deleted file mode 100644 index b8fa7bc5387..00000000000 --- a/docs/data/toolpad/core/api/index.md +++ /dev/null @@ -1,14 +0,0 @@ -# API reference - -

This page contains an index to the most important JavaScript APIs of Toolpad.

- -## Components - -- [Dashboard Layout](/toolpad/core/api/dashboard-layout/) -- [Data Grid](/toolpad/core/api/data-grid/) -- [Line Chart](/toolpad/core/api/line-chart/) -- [Select Filter](/toolpad/core/api/select-filter/) - -## Hooks - -- [useFilterState](/toolpad/core/api/use-filter-state/) diff --git a/docs/data/toolpad/core/components/data-grid/data-grid.md b/docs/data/toolpad/core/components/data-grid/data-grid.md index 3f35f381a02..7c85858bb88 100644 --- a/docs/data/toolpad/core/components/data-grid/data-grid.md +++ b/docs/data/toolpad/core/components/data-grid/data-grid.md @@ -1,14 +1,14 @@ --- productId: toolpad-core -title: App Provider +title: DataGrid components: DataGrid, DataProvider --- # Data Grid -

Data Grid component for CRUD applications.

+

Data Grid component for CRUD ("Create Read Update Delete") applications.

-Toolpad Core extends the X grid with CRUD functionality. It abstracts the manipulations in a data provider object. The data provider object describes the shape of the data and the available manipulations. When you pass the data provider to a grid it is automatically configured as a CRUD grid. All properties of the X grid are also available and can be used to override the data provider behavior. +Toolpad Core extends the [X data grid](https://mui.com/x/react-data-grid/) with CRUD functionality. It abstracts the manipulations in a data provider object. The data provider object describes the shape of the data and the available manipulations. When you pass the data provider to a grid it is automatically configured as a CRUD grid. All properties of the X grid are also available and can be used to override the data provider behavior. Where Core and X components focus on the user interface, Toolpad Core components start from a definition of the data. It centralizes data loading, filtering, pagination, field formatting, mutations, access control and more. @@ -20,13 +20,13 @@ The simplest data provider exposes a `getMany` function and a `fields` definitio ## Override columns -The Toolpad Core grid adopts the fields that are defined in its data provider. This is handy because it allows for sharing formatting and validation options between data rendering components. But it is still possible to override the defaults at the level of an individual grid. The grid adopts the columns you've defined in the `columns` property, and sets default values for the individual column options for each of them. +The Toolpad Core grid adopts the fields that are defined in its data provider. This is handy because it allows for sharing formatting and validation options between data rendering components. However, it is still possible to override the defaults at the level of an individual grid. The grid adopts the columns you've defined in the `columns` property, and sets default values for the individual column options for each of them. {{"demo": "OverrideColumns.js"}} -## Column inferrence +## Column inference -To help you get started quickly, the grid is able to inferrence data provider fields if they are not defined. This allows you to quickly get started with a basic field definition based on the returned data. When a data provider is passed that doesn't have a field definiton, the grid infers field definitions and shows a warning. Click the question mark to show more information on how to solve the warning message. Try copying the snippet from the dialog and paste it in the data provider definition below: +To help you get started quickly, the grid is able to infer data provider fields if they are not defined. This allows you to quickly get started with a basic field definition based on the returned data. When a data provider is passed that doesn't have a field definiton, the grid infers field definitions and shows a warning. Click the question mark to show more information on how to solve the warning message. Try copying the snippet from the dialog and paste it in the data provider definition below: {{"demo": "FieldInference.js"}} @@ -42,25 +42,25 @@ You can decide whether your data provider supports pagination exclusively or opt The data provider supports all basic CRUD operations -### Create +### Create a row When you add a `createOne` method to the data provider, the grid gets a "Add record" button in the Toolbar. When you click this button, a draft row shows wich you can fill with values for the created item. To commit the new row, click the save button. This calls the `createOne` function with the values that were filled. When the operation finishes, a notification shows. {{"demo": "CrudCreate.js"}} -### Update +### Update a row When you add a `updateOne` method to the data provider, the grid gets edit buttons in its action column. When you click this button, the row goes in editing mode. When you click the save button, the `updateOne` method is called with the row id as first parameter and the changed values as the second parameter. When the operation finishes, a notification shows. {{"demo": "CrudUpdate.js"}} -### Delete +### Delete a row When you add a `deleteOne` method to your data provider, the grid gets delete buttons in its action column. When you click this button, the `deleteOne` method is called with the id of the relevant row. When the operation finishes, a notification shows. {{"demo": "CrudDelete.js"}} -### 🚧 Delete multiple +### 🚧 Delete multiple rows When the data provider contains a `deleteMany` method, the grid allows for multiple selection and delete. diff --git a/docs/data/toolpad/core/components/index.md b/docs/data/toolpad/core/components/index.md index d08d3d85418..90b83666295 100644 --- a/docs/data/toolpad/core/components/index.md +++ b/docs/data/toolpad/core/components/index.md @@ -5,4 +5,3 @@ - [Dashboard Layout](/toolpad/core/components/dashboard-layout/) - [Data Grid](/toolpad/core/components/data-grid/) - [Line Chart](/toolpad/core/components/line-chart/) -- [Select Filter](/toolpad/core/components/select-filter/) diff --git a/docs/data/toolpad/core/components/line-chart/BasicLineChart.js b/docs/data/toolpad/core/components/line-chart/BasicLineChart.js new file mode 100644 index 00000000000..a2721a24da3 --- /dev/null +++ b/docs/data/toolpad/core/components/line-chart/BasicLineChart.js @@ -0,0 +1,30 @@ +import * as React from 'react'; +import { createDataProvider } from '@toolpad/core/DataProvider'; +import { LineChart } from '@toolpad/core/LineChart'; +import Box from '@mui/material/Box'; + +const myData = createDataProvider({ + async getMany() { + return { + rows: [ + { id: 1, value: 19 }, + { id: 2, value: 34 }, + { id: 3, value: 6 }, + { id: 4, value: 14 }, + { id: 5, value: 17 }, + ], + }; + }, + fields: { + id: { label: 'ID' }, + value: { label: 'Value', type: 'number' }, + }, +}); + +export default function BasicLineChart() { + return ( + + + + ); +} diff --git a/docs/data/toolpad/core/components/line-chart/BasicLineChart.tsx b/docs/data/toolpad/core/components/line-chart/BasicLineChart.tsx new file mode 100644 index 00000000000..a2721a24da3 --- /dev/null +++ b/docs/data/toolpad/core/components/line-chart/BasicLineChart.tsx @@ -0,0 +1,30 @@ +import * as React from 'react'; +import { createDataProvider } from '@toolpad/core/DataProvider'; +import { LineChart } from '@toolpad/core/LineChart'; +import Box from '@mui/material/Box'; + +const myData = createDataProvider({ + async getMany() { + return { + rows: [ + { id: 1, value: 19 }, + { id: 2, value: 34 }, + { id: 3, value: 6 }, + { id: 4, value: 14 }, + { id: 5, value: 17 }, + ], + }; + }, + fields: { + id: { label: 'ID' }, + value: { label: 'Value', type: 'number' }, + }, +}); + +export default function BasicLineChart() { + return ( + + + + ); +} diff --git a/docs/data/toolpad/core/components/line-chart/BasicLineChart.tsx.preview b/docs/data/toolpad/core/components/line-chart/BasicLineChart.tsx.preview new file mode 100644 index 00000000000..583757dc505 --- /dev/null +++ b/docs/data/toolpad/core/components/line-chart/BasicLineChart.tsx.preview @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/data/toolpad/core/components/line-chart/CustomizedLineChart.js b/docs/data/toolpad/core/components/line-chart/CustomizedLineChart.js new file mode 100644 index 00000000000..0e0f589a74a --- /dev/null +++ b/docs/data/toolpad/core/components/line-chart/CustomizedLineChart.js @@ -0,0 +1,42 @@ +import * as React from 'react'; +import { createDataProvider } from '@toolpad/core/DataProvider'; +import { LineChart } from '@toolpad/core/LineChart'; +import Box from '@mui/material/Box'; + +const myData = createDataProvider({ + async getMany() { + return { + rows: [ + { id: 1, value: 19 }, + { id: 2, value: 34 }, + { id: 3, value: 6 }, + { id: 4, value: 14 }, + { id: 5, value: 17 }, + ], + }; + }, + fields: { + id: { label: 'ID' }, + value: { label: 'Value', type: 'number' }, + }, +}); + +export default function CustomizedLineChart() { + return ( + + + + ); +} diff --git a/docs/data/toolpad/core/components/line-chart/CustomizedLineChart.tsx b/docs/data/toolpad/core/components/line-chart/CustomizedLineChart.tsx new file mode 100644 index 00000000000..0e0f589a74a --- /dev/null +++ b/docs/data/toolpad/core/components/line-chart/CustomizedLineChart.tsx @@ -0,0 +1,42 @@ +import * as React from 'react'; +import { createDataProvider } from '@toolpad/core/DataProvider'; +import { LineChart } from '@toolpad/core/LineChart'; +import Box from '@mui/material/Box'; + +const myData = createDataProvider({ + async getMany() { + return { + rows: [ + { id: 1, value: 19 }, + { id: 2, value: 34 }, + { id: 3, value: 6 }, + { id: 4, value: 14 }, + { id: 5, value: 17 }, + ], + }; + }, + fields: { + id: { label: 'ID' }, + value: { label: 'Value', type: 'number' }, + }, +}); + +export default function CustomizedLineChart() { + return ( + + + + ); +} diff --git a/docs/data/toolpad/core/components/line-chart/CustomizedLineChart.tsx.preview b/docs/data/toolpad/core/components/line-chart/CustomizedLineChart.tsx.preview new file mode 100644 index 00000000000..4a5448bb072 --- /dev/null +++ b/docs/data/toolpad/core/components/line-chart/CustomizedLineChart.tsx.preview @@ -0,0 +1,13 @@ + \ No newline at end of file diff --git a/docs/data/toolpad/core/components/line-chart/ErrorLineChart.js b/docs/data/toolpad/core/components/line-chart/ErrorLineChart.js new file mode 100644 index 00000000000..bafc8021a4b --- /dev/null +++ b/docs/data/toolpad/core/components/line-chart/ErrorLineChart.js @@ -0,0 +1,22 @@ +import * as React from 'react'; +import { createDataProvider } from '@toolpad/core/DataProvider'; +import { LineChart } from '@toolpad/core/LineChart'; +import Box from '@mui/material/Box'; + +const myData = createDataProvider({ + async getMany() { + throw new Error('Failed to fetch data'); + }, + fields: { + id: { label: 'ID' }, + value: { label: 'Value', type: 'number' }, + }, +}); + +export default function ErrorLineChart() { + return ( + + + + ); +} diff --git a/docs/data/toolpad/core/components/line-chart/ErrorLineChart.tsx b/docs/data/toolpad/core/components/line-chart/ErrorLineChart.tsx new file mode 100644 index 00000000000..bafc8021a4b --- /dev/null +++ b/docs/data/toolpad/core/components/line-chart/ErrorLineChart.tsx @@ -0,0 +1,22 @@ +import * as React from 'react'; +import { createDataProvider } from '@toolpad/core/DataProvider'; +import { LineChart } from '@toolpad/core/LineChart'; +import Box from '@mui/material/Box'; + +const myData = createDataProvider({ + async getMany() { + throw new Error('Failed to fetch data'); + }, + fields: { + id: { label: 'ID' }, + value: { label: 'Value', type: 'number' }, + }, +}); + +export default function ErrorLineChart() { + return ( + + + + ); +} diff --git a/docs/data/toolpad/core/components/line-chart/ErrorLineChart.tsx.preview b/docs/data/toolpad/core/components/line-chart/ErrorLineChart.tsx.preview new file mode 100644 index 00000000000..9990bfbbf05 --- /dev/null +++ b/docs/data/toolpad/core/components/line-chart/ErrorLineChart.tsx.preview @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/data/toolpad/core/components/line-chart/line-chart.md b/docs/data/toolpad/core/components/line-chart/line-chart.md new file mode 100644 index 00000000000..f7ccf464a4f --- /dev/null +++ b/docs/data/toolpad/core/components/line-chart/line-chart.md @@ -0,0 +1,27 @@ +--- +productId: toolpad-core +title: Line Chart +components: LineChart +--- + +# Line Chart + +

Line Chart component for Toolpad Core applications.

+ +Toolpad Core extends X Charts with data provider support. Toolpad Core charts automatically load data and adopt defaults for labels and formatting. + +## Basic example + +Add a data provider to a chart and its data is automatically loaded in the chart. + +{{"demo": "BasicLineChart.js"}} + +Error and loading states are automatically handled. Errors from the data provider are shown in an overlay: + +{{"demo": "ErrorLineChart.js", "hideToolbar": true}} + +## Customization + +The chart automatically adopts configuration from the data provider. When you pick a `dataKey` for an axis or a series, the chart automatically infers default values for series and axis options. The Toolpad Core components accept all properties that the X components offer. SO to customize the chart further, you can override these defaults and add extra options as you need. + +{{"demo": "CustomizedLineChart.js"}} diff --git a/docs/data/toolpad/core/features/data-providers.md b/docs/data/toolpad/core/features/data-providers.md index cb2614cc400..2cd2d962991 100644 --- a/docs/data/toolpad/core/features/data-providers.md +++ b/docs/data/toolpad/core/features/data-providers.md @@ -4,7 +4,7 @@ ## Interface -A data provider is a stateless interface representing a collection of remote data. It mainly contains method to fetch and manipulate this data, along with certain additional methods for certain data providers. +A data provider is a stateless interface representing a collection of remote data. It mainly contains methods to fetch and manipulate this data, along with certain additional methods for certain data providers. ```tsx import { createDataProvider } from '@toolpad/data'; @@ -34,10 +34,6 @@ const sharedDataSource = useSharedDataProvider(dataProvider, { }); ``` -:::info -Find more details in the [connecting to components](/toolpad/data/connecting-to-components/) page -::: - ## Server-side data providers ```tsx diff --git a/docs/data/toolpad/core/introduction/Tutorial1.js b/docs/data/toolpad/core/introduction/Tutorial1.js index 25026739a6c..6d701309682 100644 --- a/docs/data/toolpad/core/introduction/Tutorial1.js +++ b/docs/data/toolpad/core/introduction/Tutorial1.js @@ -7,7 +7,8 @@ const npmData = createDataProvider({ async getMany() { const res = await fetch('https://api.npmjs.org/downloads/range/last-year/react'); if (!res.ok) { - throw new Error(`HTTP ${res.status}: ${res.statusText}`); + const { error } = await res.json(); + throw new Error(`HTTP ${res.status}: ${error}`); } const { downloads } = await res.json(); return { rows: downloads }; @@ -21,8 +22,8 @@ const npmData = createDataProvider({ export default function Tutorial1() { return ( - - + + ); } diff --git a/docs/data/toolpad/core/introduction/Tutorial1.tsx b/docs/data/toolpad/core/introduction/Tutorial1.tsx index 25026739a6c..6d701309682 100644 --- a/docs/data/toolpad/core/introduction/Tutorial1.tsx +++ b/docs/data/toolpad/core/introduction/Tutorial1.tsx @@ -7,7 +7,8 @@ const npmData = createDataProvider({ async getMany() { const res = await fetch('https://api.npmjs.org/downloads/range/last-year/react'); if (!res.ok) { - throw new Error(`HTTP ${res.status}: ${res.statusText}`); + const { error } = await res.json(); + throw new Error(`HTTP ${res.status}: ${error}`); } const { downloads } = await res.json(); return { rows: downloads }; @@ -21,8 +22,8 @@ const npmData = createDataProvider({ export default function Tutorial1() { return ( - - + + ); } diff --git a/docs/data/toolpad/core/introduction/Tutorial1.tsx.preview b/docs/data/toolpad/core/introduction/Tutorial1.tsx.preview index f4e58438bdc..6d9f8e338b6 100644 --- a/docs/data/toolpad/core/introduction/Tutorial1.tsx.preview +++ b/docs/data/toolpad/core/introduction/Tutorial1.tsx.preview @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/docs/data/toolpad/core/introduction/Tutorial2.js b/docs/data/toolpad/core/introduction/Tutorial2.js new file mode 100644 index 00000000000..2b4fc65f0e0 --- /dev/null +++ b/docs/data/toolpad/core/introduction/Tutorial2.js @@ -0,0 +1,36 @@ +import * as React from 'react'; +import { createDataProvider } from '@toolpad/core/DataProvider'; +import { DataGrid } from '@toolpad/core/DataGrid'; +import { LineChart } from '@toolpad/core/LineChart'; +import Box from '@mui/material/Box'; + +const npmData = createDataProvider({ + async getMany() { + const res = await fetch('https://api.npmjs.org/downloads/range/last-year/react'); + if (!res.ok) { + const { error } = await res.json(); + throw new Error(`HTTP ${res.status}: ${error}`); + } + const { downloads } = await res.json(); + return { rows: downloads }; + }, + idField: 'day', + fields: { + day: { type: 'date' }, + downloads: { type: 'number' }, + }, +}); + +export default function Tutorial2() { + return ( + + + + + ); +} diff --git a/docs/data/toolpad/core/introduction/Tutorial2.tsx b/docs/data/toolpad/core/introduction/Tutorial2.tsx new file mode 100644 index 00000000000..2b4fc65f0e0 --- /dev/null +++ b/docs/data/toolpad/core/introduction/Tutorial2.tsx @@ -0,0 +1,36 @@ +import * as React from 'react'; +import { createDataProvider } from '@toolpad/core/DataProvider'; +import { DataGrid } from '@toolpad/core/DataGrid'; +import { LineChart } from '@toolpad/core/LineChart'; +import Box from '@mui/material/Box'; + +const npmData = createDataProvider({ + async getMany() { + const res = await fetch('https://api.npmjs.org/downloads/range/last-year/react'); + if (!res.ok) { + const { error } = await res.json(); + throw new Error(`HTTP ${res.status}: ${error}`); + } + const { downloads } = await res.json(); + return { rows: downloads }; + }, + idField: 'day', + fields: { + day: { type: 'date' }, + downloads: { type: 'number' }, + }, +}); + +export default function Tutorial2() { + return ( + + + + + ); +} diff --git a/docs/data/toolpad/core/introduction/Tutorial2.tsx.preview b/docs/data/toolpad/core/introduction/Tutorial2.tsx.preview new file mode 100644 index 00000000000..263a8cfda3a --- /dev/null +++ b/docs/data/toolpad/core/introduction/Tutorial2.tsx.preview @@ -0,0 +1,7 @@ + + \ No newline at end of file diff --git a/docs/data/toolpad/core/introduction/TutorialDefault.js b/docs/data/toolpad/core/introduction/TutorialDefault.js new file mode 100644 index 00000000000..5a90f2cb218 --- /dev/null +++ b/docs/data/toolpad/core/introduction/TutorialDefault.js @@ -0,0 +1,32 @@ +import * as React from 'react'; +import Box from '@mui/material/Box'; +import Typography from '@mui/material/Typography'; +import DashboardIcon from '@mui/icons-material/Dashboard'; +import { AppProvider } from '@toolpad/core/AppProvider'; +import { DashboardLayout } from '@toolpad/core/DashboardLayout'; + +const NAVIGATION = [ + { + title: 'Page', + icon: , + }, +]; + +export default function TutorialDefault() { + return ( + + + + Dashboard content + + + + ); +} diff --git a/docs/data/toolpad/core/introduction/build-deploy.md b/docs/data/toolpad/core/introduction/build-deploy.md index 6199b440928..22e9f29ff0c 100644 --- a/docs/data/toolpad/core/introduction/build-deploy.md +++ b/docs/data/toolpad/core/introduction/build-deploy.md @@ -1,3 +1,57 @@ # Build and Deploy

With Toolpad Core, you can build and deploy on your own terms

+ +## Install step + +Install required depdencies via: + + + +```bash npm +npm install +``` + +```bash yarn +yarn +``` + + + +## Build step + +This command creates an optimized production build for the app and outputs the generated files: + + + +```bash npm +npm run build +``` + +```bash yarn +yarn build +``` + +```bash pnpm +pnpm build +``` + + + +## Start step + +Once the build has been made, you can deploy it to any service of your choice! + +To serve the app once built, run: + + + +```bash npm +npm run start +``` + +```bash yarn +yarn start +``` + + diff --git a/docs/data/toolpad/core/introduction/dashboard-tutorial.md b/docs/data/toolpad/core/introduction/dashboard-tutorial.md index cd2e9aeb0bd..d95c63d1be4 100644 --- a/docs/data/toolpad/core/introduction/dashboard-tutorial.md +++ b/docs/data/toolpad/core/introduction/dashboard-tutorial.md @@ -1,6 +1,3 @@ ---- ---- - # Dashboard tutorial

Tutorial

@@ -16,10 +13,11 @@ const npmData = createDataProvider({ async getMany() { const res = await fetch('https://api.npmjs.org/downloads/range/last-year/react'); if (!res.ok) { - throw new Error(`HTTP ${res.status}: ${res.statusText}`); + const { error } = await res.json(); + throw new Error(`HTTP ${res.status}: ${error}`); } const { downloads } = await res.json(); - return { rows: downloads.map((point: any) => ({ ...point, id: point.day })) }; + return { rows: downloads }; }, idField: 'day', fields: { @@ -49,3 +47,32 @@ export default function App() { This results in the following output {{"demo": "Tutorial1.js", "hideToolbar": true}} + +## Sharing data providers + +Interesting things happen when you share data providers between different components. For instance, you can add a chart that uses the same data. + +```js +// ... +import { DataGrid, LineChart } from '@toolpad/core'; + +// ... + +export default function App() { + return ( + + + + + ); +} +``` + +The Toolpad Core components automatically adopt default values + +{{"demo": "Tutorial2.js", "hideToolbar": true}} diff --git a/docs/data/toolpad/core/introduction/examples.md b/docs/data/toolpad/core/introduction/examples.md index b8cffeeed03..352bfe44129 100644 --- a/docs/data/toolpad/core/introduction/examples.md +++ b/docs/data/toolpad/core/introduction/examples.md @@ -1,3 +1,12 @@ -# Examples +--- +productId: toolpad-core +title: Examples +--- -

Examples

+# Toolpad Core - Examples + +

Browse a collection of Toolpad Core examples to help you get started quickly:

+ + + +{{"component": "modules/components/ExamplesGrid/ExamplesGrid.tsx", "examplesFile": "core-examples.ts"}} diff --git a/docs/data/toolpad/core/introduction/installation.md b/docs/data/toolpad/core/introduction/installation.md index b24a8f69317..69b25328011 100644 --- a/docs/data/toolpad/core/introduction/installation.md +++ b/docs/data/toolpad/core/introduction/installation.md @@ -1,3 +1,74 @@ -# Installation +--- +title: Toolpad Core - Installation +--- -

Installation

+# Toolpad Core - Installation + +

Learn how to install Toolpad Core in your local environment.

+ +1. Run the following command to start Toolpad Core: + + + +```bash npm +npx create-toolpad-app@latest --core +``` + +```bash pnpm +pnpm create toolpad-app --core +``` + +```bash yarn +yarn create toolpad-app --core +``` + + + +2. Follow the instructions presented. Once the installation ends, run: + + + +```bash npm +cd +npm run dev +``` + +```bash pnpm +cd +pnpm run dev +``` + +```bash yarn +cd +yarn dev +``` + + + +3. Visit **http://localhost:3000/** in your browser to open the application. + +4. The CLI bootstraps the following directory: + + ```bash + β”œβ”€β”€ app + β”‚ β”œβ”€β”€ auth + β”‚ β”œβ”€β”€β”€β”€ [...path] + β”‚ └────── page.tsx + β”‚ β”œβ”€β”€ api + β”‚ β”œβ”€β”€β”€β”€ auth + β”‚ β”œβ”€β”€β”€β”€β”€β”€ [...nextAuth] + β”‚ └───────── route.tsx + β”‚ β”œβ”€β”€ (dashboard) + | β”œβ”€β”€β”€β”€ layout.tsx + β”‚ β”œβ”€β”€β”€β”€ page + β”‚ └────── page.tsx + β”œβ”€β”€β”€β”€ layout.tsx + └──── page.tsx + + ``` + + and the following page appears when you run the project locally: + +{{"component": "modules/components/DocsImage.tsx", "src": "/static/toolpad/docs/core/installation-1.png", "alt": "Toolpad Core entry point", "caption": "Starting with Toolpad Core", "zoom": true, "indent": 1 }} + +5. Installation is complete! Begin building your project by making edits to `(dashboard/page/page.tsx`. To understand how to leverage Toolpad Core to build dashboards quickly, [see the detailed tutorial](/toolpad/core/introduction/tutorial/). diff --git a/docs/data/toolpad/core/introduction/overview.md b/docs/data/toolpad/core/introduction/overview.md index 8ab9a14ed33..9e103476ec5 100644 --- a/docs/data/toolpad/core/introduction/overview.md +++ b/docs/data/toolpad/core/introduction/overview.md @@ -1,195 +1,40 @@ --- -title: Overview +title: Toolpad Overview --- -# Toolpad - Overview +# Toolpad Core -

Learn the fundamentals of building with Toolpad Core by creating a small application.

+

A framework to build full-stack apps, fast. It can be used as a Next.js starter, or integrated within an existing React project to build dashboards and internal tools.

-## Installation +This framework leverages the existing suite of components offered by MUI, and ties them together with the most commonly-used backend integrations to help you create dashboards fast. Imagine a React dashboard template but with backend features like authentication, role-based access control and data fetching already included. It comes with the guarantee of MUI's enterprise-tested components, and the Toolpad team's focus on using the latest stable libraries, and prioritising razor-sharp performance. -Run +{{"demo": "../components/dashboard-layout/DashboardLayoutNavigation.js", "height": 640, "iframe": true}} - +## Overview -```bash yarn -yarn create toolpad-app --core -``` +:::info +Visit the [installation guide](/toolpad/core/installation/) to learn how to install the package correctly. +::: -```bash pnpm -pnpm dlx create-toolpad-app --core -``` +Toolpad can be multiple things: a set of low-level primitives for common use-cases like state management across components, a Next.js starter with features like authentication and data-fetching baked-in, or an umbrella framework to help bring together your existing internal tooling applications. To sum up: it is a framework that integrates many disparate libraries with MUI's components, which otherwise require a lot of inefficient glue code to work together. The framework is accessible through a Command Line Interface (CLI) which generates starter code quickly based on features needed or example templates to be followed. - +The framework follows the open-core model, with some features being available under the MIT license, and some being under a paid license. -Follow the instructions of the CLI. After you conclude the installation process, change your working dir to the project and run - +## Features -```bash npm -npm run dev -``` +- Built with and exclusively for React βš›οΈ +- High performance πŸš€ +- [Layout and Navigation](/toolpad/core/react-dashboard-layout/) +- [Data Providers](/toolpad/core/features/data-providers/) +- [Data Grid](/toolpad/core/react-data-grid/) -```bash yarn -yarn dev -``` +## Upcoming Features 🚧 -```bash pnpm -pnpm dev -``` +:::info +Visit the [roadmap](/toolpad/core/introduction/roadmap/) to see more details around upcoming features. +::: - - -Visit **http://localhost:3000/** in your browser to open the application - -## Options of the CLI - -- Do you want to enable authentication? - - select authentication method - - follow instructions at XYZ and paste the auth token (written to .env) -- Do you want to enable RBAC -- …? - -The CLI scaffolds a Next.js project with all Toolpad features set up - -## Tutorial - -1. Run - `bash - yarn create toolpad-app --tutorial my-first-project -` - - This will prompt for a project name and create a basic project for this tutorial - -2. Install the packages necessary for this example - - ```bash - yarn add -S @mui/x-data-grid @mui/x-charts @mui/toolpad-data-csv - ``` - -3. Run - - ```bash - cd my-first-project - yarn dev - ``` - - to start the app in dev mode - -4. Create a file `/app/hello-world/page.tsx` and add - - ```tsx - import * as React from 'react'; - - export default async function HelloWorld() { - return
Hello world!
; - } - ``` - -In your browser open the page http://localhost:3000/hello-world and verify that it shows "Hello World!" - -5. Now to add our first data provider. Copy the sample CSV file (insert link) to the project root and add the following - - ```tsx - import * as React from 'react'; - import createDataProviderCsv from '@mui/toolpad-data-csv'; - import DataGrid from '@mui/x-data-grid'; - import { useDataGrid } from '@mui/toolpad'; - - const myCsvData = createDataProviderCsv('./sample-data.csv'); - - export default async function HelloWorld() { - const dataGridProps = useDataGrid(myCsvData); - - return ( -
- -
- ); - } - ``` - - - -6. This is great, but we'd also like to visualise this data: - - ```tsx - import * as React from 'react'; - import createDataProviderCsv from '@mui/toolpad-data-csv'; - import DataGrid from '@mui/x-data-grid'; - import { BarChart } from '@mui/x-charts'; - import { useDataGrid, useChart } from '@mui/toolpad'; - - const myCsvData = createDataProviderCsv('./sample-data.csv'); - - export default async function HelloWorld() { - const dataGridProps = useDataGrid(myCsvData); - const chartProps = useChart(myCsvData, { - xAxis: 'categories', - yAxis: ['values'], - }); - - return ( -
- - -
- ); - } - ``` - - - - Now both the data grid and the chart display the CSV data - -7. Wouldn't it be nice if the chart also displayed the data in the grid as it was filtered? - - ```tsx - import * as React from 'react'; - import createDataProviderCsv from '@mui/toolpad-data-csv'; - import DataGrid, { GridFilterModel } from '@mui/x-data-grid'; - import { BarChart } from '@mui/x-charts'; - import { useDataGrid, useChart, useSharedDataProvider } from '@mui/toolpad'; - - const myCsvData = createDataProviderCsv('./sample-data.csv'); - - export default async function HelloWorld() { - const [filterModel, setFilterModel] = React.useState({}); - - const mySharedProvider = useSharedDataProvider(myCsvData, { - filterModel, - setFilterModel, - }); - - const dataGridProps = useDataGrid(mySharedProvider); - const chartProps = useChart(mySharedProvider, { - xAxis: 'categories', - yAxis: ['values'], - }); - - return ( -
- - -
- ); - } - ``` - - - - This concludes the tutorial. +- [Authentication](/) +- [Dialogs and Notifications](/) +- [Role-based Access Control](/) +- [Audit Logs](/) diff --git a/docs/data/toolpad/core/introduction/roadmap.md b/docs/data/toolpad/core/introduction/roadmap.md index 9011d45f71d..d11dd52de7c 100644 --- a/docs/data/toolpad/core/introduction/roadmap.md +++ b/docs/data/toolpad/core/introduction/roadmap.md @@ -1,3 +1,16 @@ # Roadmap -

Know our plan for the features we intend to support in the coming months

+

Find out about future plans for Toolpad Core.

+ +## Toolpad Core roadmap + +The roadmap is publicly visible on [GitHub](https://github.com/orgs/mui/projects/9). + +:::warning +Toolpad Core is being built in a dynamic environment, so things are subject to change. +The information provided is intended to outline the general direction, but is for informational purposes only. + +New items may be added and existing ones may be removed at any time, depending on the team's capability to deliver, while meeting existing quality standards. +The development, releases, and timing of any features or functionality remains at the sole discretion of the company. +The roadmap does not represent a commitment, obligation, or promise to deliver at any time. +::: diff --git a/docs/data/toolpad/core/introduction/support.md b/docs/data/toolpad/core/introduction/support.md index fd339e10540..8166e24f757 100644 --- a/docs/data/toolpad/core/introduction/support.md +++ b/docs/data/toolpad/core/introduction/support.md @@ -1,3 +1,49 @@ # Support -

Support

+

From community guidance to critical business support, we're here to help.

+ +## Community help + +Welcome to the MUI community as a Toolpad Core user! +These are the best places to start asking questions and looking for answers when you need help. + +### GitHub + +Toolpad uses GitHub issues to track bug reports and feature requests. + +If you think you've found a bug in the codebase, or you have an idea for a new feature, please [search the issues on GitHub](https://github.com/mui/mui-toolpad/issues?utf8=%E2%9C%93&q=is%3Aopen+is%3Aclosed) before opening a new one, to ensure you're not creating a duplicate. + +- [Open an issue on GitHub](https://github.com/mui/mui-toolpad/issues/new/choose) for issues or feature requests. +- [Start a GitHub discussion](https://github.com/mui/mui-toolpad/discussions) for a broad topic. Here you can engage with the team and the discussion would likely result in one or more GitHub issues. + +#### New issue guidelines + +- Please follow one of the issue templates provided on GitHub. +- Please use a succinct description that helps others find similar issues. + - ❌ _"It doesn't work"_ + - βœ… _"Add support for {{new feature}}"_ +- Please don't group multiple topics in one issue. +- Please don't comment "+1" on an issue. It spams the maintainers and doesn't help move the issue forward. Use GitHub reactions instead (πŸ‘). + +### Discord + +Toolpad is also present on Discord, you can connect with other users and get help from the community. To join, simply click on this [Discord server](https://mui.com/r/discord/) and follow the instructions. Looking forward to seeing you there! + +:::warning +Please note that there is a single Discord server for all MUI products and you should post in the Toolpad channel. +::: + +### StackΒ Overflow + +StackΒ Overflow contains a wealth of information about MUI products. Toolpad Core is a new product and you can start by [posting a question](https://stackoverflow.com/questions/tagged/toolpad) to get help from community experts as well as maintainers. + +### Social media + +Toolpad has a growing presence on [Twitter/X](https://twitter.com/Toolpad_). +You can use it to share what you're working on and connect with other developers. + +Please keep in mind that we don't actively monitor direct messages on the company's social media accounts, so this is _not_ a good way to get in touch with us directly. + +### Direct email + +If email is your thing, the team can be directly reached at toolpad@mui.com. diff --git a/docs/data/toolpad/core/introduction/tutorial.md b/docs/data/toolpad/core/introduction/tutorial.md index 0fbef047f28..5dc9b4d0f46 100644 --- a/docs/data/toolpad/core/introduction/tutorial.md +++ b/docs/data/toolpad/core/introduction/tutorial.md @@ -1,3 +1,105 @@ -# Tutorial +--- +title: Tutorial +--- -

Tutorial

+# Toolpad Core - Tutorial + +

Learn how to use Toolpad Core through an illustrative example dashboard.

+ +## Bootstrapping + +
+ +1. To choose a project name and create a basic project for this tutorial, run: + + + +```bash npm +npx create-toolpad-app@latest --example core-tutorial +``` + +```bash pnpm +pnpm create toolpad-app --example core-tutorial +``` + +```bash yarn +yarn create toolpad-app --example core-tutorial +``` + + + +2. To start the basic project on [http://localhost:3000](http://localhost:3000/), run: + + + +```bash npm +cd +npm install && npm run dev +``` + +```bash pnpm +cd +pnpm install && pnpm dev +``` + +```bash yarn +cd +yarn && yarn dev +``` + + + +3. The following splash screen appears: + +{{"component": "modules/components/DocsImage.tsx", "src": "/static/toolpad/docs/core/installation-1.png", "alt": "Toolpad Core entry point", "caption": "Starting with Toolpad Core", "zoom": true, "indent": 1 }} + +4. The app has one page already created, which can be viewed by clicking on the "Go to page" button. The following page should appear: + +{{"demo": "TutorialDefault.js", "iframe": true, "hideToolbar": true }} + +## Create a new page + +
+ +1. To add a new page and make it appear in the sidebar navigation, create a new folder within the `(dashboard)` directory titled `page-2` and add the following content to `page.tsx` inside it: + +```tsx +import { Typography, Container } from '@mui/material'; +export default function Home() { + return ( +
+ + + This is page 2! + + +
+ ); +} +``` + +2. Add the newly created page to the sidebar navigation by adding the following code to the navigation items array in `app/layout.tsx`: + +```tsx +const NAVIGATION: Navigation = [ + { + kind: 'header', + title: 'Main items', + }, + { + slug: '/page', + title: 'Page', + icon: , + }, + // Add the following new item: + { + slug: '/page-2', + title: 'Page 2', + icon: , + }, +]; +``` + +The newly created page can now be navigated to from the sidebar, like the following: + +{{"component": "modules/components/DocsImage.tsx", "src": "/static/toolpad/docs/core/tutorial-2.gif", "alt": "Toolpad Core new page", "caption": "Adding pages to navigation", "zoom": true, "indent": 1 }} diff --git a/docs/data/toolpad/core/pages.ts b/docs/data/toolpad/core/pages.ts index 439c3de17b2..7fae536b320 100644 --- a/docs/data/toolpad/core/pages.ts +++ b/docs/data/toolpad/core/pages.ts @@ -1,6 +1,8 @@ import type { MuiPage } from '@mui/monorepo/docs/src/MuiPage'; import pagesApi from './pagesApi'; +// TODO: Split pagesApi into components and hooks + const pages: MuiPage[] = [ { pathname: '/toolpad/core/intro-group', @@ -38,20 +40,10 @@ const pages: MuiPage[] = [ pathname: '/toolpad/core/features-group', subheader: 'Features', children: [ - { - pathname: '/toolpad/core/features/authentication', - - title: 'Authentication', - }, { pathname: '/toolpad/core/features/data-providers', title: 'Data Providers', }, - { - pathname: '/toolpad/core/features/audit-logs', - title: 'Audit Logs', - plan: 'pro', - }, ], }, ], @@ -90,6 +82,10 @@ const pages: MuiPage[] = [ pathname: '/toolpad/core/react-data-grid', title: 'Data Grid', }, + { + pathname: '/toolpad/core/react-line-chart', + title: 'Line Chart', + }, ], }, ], @@ -97,11 +93,13 @@ const pages: MuiPage[] = [ { pathname: '/toolpad/core/api-group', title: 'APIs', - children: pagesApi, - }, - { - pathname: '/toolpad/core/customization', - title: 'Customization', + children: [ + { + pathname: '/toolpad/core/api/components-group', + subheader: 'Components', + children: pagesApi, + }, + ], }, ]; diff --git a/docs/data/toolpad/core/pagesApi.js b/docs/data/toolpad/core/pagesApi.js index ae3e0e2111b..b9e2c06e032 100644 --- a/docs/data/toolpad/core/pagesApi.js +++ b/docs/data/toolpad/core/pagesApi.js @@ -2,4 +2,5 @@ module.exports = [ { pathname: '/toolpad/core/api/app-provider' }, { pathname: '/toolpad/core/api/dashboard-layout' }, { pathname: '/toolpad/core/api/data-grid' }, + { pathname: '/toolpad/core/api/line-chart' }, ]; diff --git a/docs/data/toolpad/studio/getting-started/examples-overview.md b/docs/data/toolpad/studio/getting-started/examples-overview.md index efa6c662649..95335641cf4 100644 --- a/docs/data/toolpad/studio/getting-started/examples-overview.md +++ b/docs/data/toolpad/studio/getting-started/examples-overview.md @@ -13,4 +13,4 @@ This collection includes apps that showcase connecting to APIs, adding custom co If you're interested in how we, at MUI, use Toolpad Studio to build internal apps, check out the [blog post](https://mui.com/blog/toolpad-use-cases/). -{{"component": "modules/components/ExamplesGrid.js"}} +{{"component": "modules/components/ExamplesGrid/ExamplesGrid.tsx", "examplesFile": "studio-examples.ts"}} diff --git a/docs/data/toolpad/studio/getting-started/support.md b/docs/data/toolpad/studio/getting-started/support.md index a68bd69d384..9ae94eb39f9 100644 --- a/docs/data/toolpad/studio/getting-started/support.md +++ b/docs/data/toolpad/studio/getting-started/support.md @@ -40,7 +40,7 @@ StackΒ Overflow contains a wealth of information about MUI products. Toolpad Stu ### Social media -Toolpad Studio has a growing presence on [Twitter/X](https://twitter.com/Toolpad_). +Toolpad Studio has a growing presence on [Twitter/X](https://x.com/Toolpad_). You can use it to share what you're working on and connect with other developers. Please keep in mind that we don't actively monitor direct messages on the company's social media accounts, so this is _not_ a good way to get in touch with us directly. diff --git a/docs/package.json b/docs/package.json index ecc27f05c23..ca26f732f08 100644 --- a/docs/package.json +++ b/docs/package.json @@ -34,7 +34,7 @@ "@mui/material-nextjs": "5.15.11", "@mui/styles": "5.15.19", "@mui/utils": "5.15.14", - "@mui/x-license": "7.2.1", + "@mui/x-license": "7.6.1", "@toolpad/core": "workspace:*", "@toolpad/studio": "workspace:*", "@trendmicro/react-interpolate": "0.5.5", diff --git a/docs/pages/toolpad/core/api/data-grid.json b/docs/pages/toolpad/core/api/data-grid.json index 27c9fa7fa63..2164c017a59 100644 --- a/docs/pages/toolpad/core/api/data-grid.json +++ b/docs/pages/toolpad/core/api/data-grid.json @@ -1,5 +1,13 @@ { - "props": {}, + "props": { + "dataProvider": { + "type": { + "name": "shape", + "description": "{ createOne?: func, deleteOne?: func, fields?: object, getMany: func, getOne?: func, idField?: object, updateOne?: func }" + } + }, + "height": { "type": { "name": "number" } } + }, "name": "DataGrid", "imports": [ "import { DataGrid } from '@toolpad-core/DataGrid';", @@ -7,10 +15,14 @@ ], "classes": [], "spread": true, - "themeDefaultProps": null, + "themeDefaultProps": false, "muiName": "DataGrid", + "forwardsRefTo": "HTMLDivElement", "filename": "/packages/toolpad-core/src/DataGrid/DataGrid.tsx", - "inheritance": null, + "inheritance": { + "component": "X DataGrid", + "pathname": "https://mui.com/x/api/data-grid/data-grid/" + }, "demos": "", "cssComponent": false } diff --git a/docs/pages/toolpad/core/api/line-chart.js b/docs/pages/toolpad/core/api/line-chart.js new file mode 100644 index 00000000000..f580ac941c6 --- /dev/null +++ b/docs/pages/toolpad/core/api/line-chart.js @@ -0,0 +1,23 @@ +import * as React from 'react'; +import ApiPage from 'docs/src/modules/components/ApiPage'; +import mapApiPageTranslations from 'docs/src/modules/utils/mapApiPageTranslations'; +import jsonPageContent from './line-chart.json'; + +export default function Page(props) { + const { descriptions, pageContent } = props; + return ; +} + +Page.getInitialProps = () => { + const req = require.context( + 'docs-toolpad/translations/api-docs/line-chart', + false, + /\.\/line-chart.*.json$/, + ); + const descriptions = mapApiPageTranslations(req); + + return { + descriptions, + pageContent: jsonPageContent, + }; +}; diff --git a/docs/pages/toolpad/core/api/line-chart.json b/docs/pages/toolpad/core/api/line-chart.json new file mode 100644 index 00000000000..8965eb537fc --- /dev/null +++ b/docs/pages/toolpad/core/api/line-chart.json @@ -0,0 +1,27 @@ +{ + "props": { + "dataProvider": { + "type": { + "name": "shape", + "description": "{ createOne?: func, deleteOne?: func, fields?: object, getMany: func, getOne?: func, idField?: object, updateOne?: func }" + } + } + }, + "name": "LineChart", + "imports": [ + "import { LineChart } from '@toolpad-core/LineChart';", + "import { LineChart } from '@toolpad-core';" + ], + "classes": [], + "spread": true, + "themeDefaultProps": false, + "muiName": "LineChart", + "forwardsRefTo": "HTMLDivElement", + "filename": "/packages/toolpad-core/src/LineChart/LineChart.tsx", + "inheritance": { + "component": "X LineChart", + "pathname": "https://mui.com/x/api/charts/line-chart/" + }, + "demos": "", + "cssComponent": false +} diff --git a/docs/pages/toolpad/core/react-line-chart/index.js b/docs/pages/toolpad/core/react-line-chart/index.js new file mode 100644 index 00000000000..d87fc257bbf --- /dev/null +++ b/docs/pages/toolpad/core/react-line-chart/index.js @@ -0,0 +1,7 @@ +import * as React from 'react'; +import MarkdownDocs from 'docs/src/modules/components/MarkdownDocs'; +import * as pageProps from '../../../../data/toolpad/core/components/line-chart/line-chart.md?muiMarkdown'; + +export default function Page() { + return ; +} diff --git a/docs/public/static/toolpad/docs/core/installation-1.png b/docs/public/static/toolpad/docs/core/installation-1.png new file mode 100644 index 00000000000..fadff5c62e6 Binary files /dev/null and b/docs/public/static/toolpad/docs/core/installation-1.png differ diff --git a/docs/public/static/toolpad/docs/core/tutorial-1.png b/docs/public/static/toolpad/docs/core/tutorial-1.png new file mode 100644 index 00000000000..7ec559c0630 Binary files /dev/null and b/docs/public/static/toolpad/docs/core/tutorial-1.png differ diff --git a/docs/public/static/toolpad/docs/core/tutorial-2.gif b/docs/public/static/toolpad/docs/core/tutorial-2.gif new file mode 100644 index 00000000000..4e9f1b8a020 Binary files /dev/null and b/docs/public/static/toolpad/docs/core/tutorial-2.gif differ diff --git a/docs/src/modules/components/ExamplesGrid/ExamplesGrid.tsx b/docs/src/modules/components/ExamplesGrid/ExamplesGrid.tsx new file mode 100644 index 00000000000..9026b6ebd12 --- /dev/null +++ b/docs/src/modules/components/ExamplesGrid/ExamplesGrid.tsx @@ -0,0 +1,97 @@ +import * as React from 'react'; +import Card from '@mui/material/Card'; +import CardActions from '@mui/material/CardActions'; +import CardContent from '@mui/material/CardContent'; +import CardMedia from '@mui/material/CardMedia'; +import Button from '@mui/material/Button'; +import Grid from '@mui/material/Grid'; +import Typography from '@mui/material/Typography'; +import { alpha } from '@mui/material/styles'; + +interface Example { + title: string; + description: string; + src: string; + href: string; + source: string; +} + +interface TemplatesProps { + examplesFile: string; +} + +function Templates({ examplesFile }: TemplatesProps) { + const [examples, setExamples] = React.useState([]); + + React.useEffect(() => { + const importExamples = async () => { + const exampleContent = await import(`./${examplesFile}`); + setExamples(exampleContent.default); + }; + importExamples(); + }, [examplesFile]); + + return ( + + {examples.map((example) => ( + + ({ + height: '100%', + display: 'flex', + flexDirection: 'column', + px: 2, + pt: 2, + pb: 1, + gap: 1.5, + borderRadius: 1, + backgroundColor: `${alpha(theme.palette.grey[50], 0.4)}`, + borderColor: 'divider', + ...theme.applyStyles('dark', { + backgroundColor: `${alpha(theme.palette.primary.dark, 0.1)}`, + borderColor: 'divider', + }), + })} + variant="outlined" + > + ({ + height: 0, + pt: '65%', + borderRadius: 0.5, + bgcolor: 'currentColor', + border: '1px solid', + borderColor: 'grey.100', + color: 'grey.100', + ...theme.applyStyles('dark', { + borderColor: 'grey.900', + color: 'primaryDark.900', + }), + })} + /> + + + {example.title} + + + {example.description} + + + + + + + + ))} + + ); +} + +export default Templates; diff --git a/docs/src/modules/components/ExamplesGrid/core-examples.ts b/docs/src/modules/components/ExamplesGrid/core-examples.ts new file mode 100644 index 00000000000..72b0d3df63e --- /dev/null +++ b/docs/src/modules/components/ExamplesGrid/core-examples.ts @@ -0,0 +1,12 @@ +export default function examples() { + return [ + { + title: 'Tutorial app', + description: + 'This app shows you to get started with Toolpad Core and use basic layout and navigation features.', + src: '/static/toolpad/docs/core/tutorial-1.png', + href: 'https://mui.com/toolpad/core/introduction/tutorial/', + source: 'https://github.com/mui/mui-toolpad/tree/master/examples/core-tutorial', + }, + ]; +} diff --git a/docs/src/modules/components/ExamplesGrid.js b/docs/src/modules/components/studio-examples.ts similarity index 68% rename from docs/src/modules/components/ExamplesGrid.js rename to docs/src/modules/components/studio-examples.ts index 97339937322..140b7179ee1 100644 --- a/docs/src/modules/components/ExamplesGrid.js +++ b/docs/src/modules/components/studio-examples.ts @@ -1,14 +1,4 @@ -import * as React from 'react'; -import Card from '@mui/material/Card'; -import CardActions from '@mui/material/CardActions'; -import CardContent from '@mui/material/CardContent'; -import CardMedia from '@mui/material/CardMedia'; -import Button from '@mui/material/Button'; -import Grid from '@mui/material/Grid'; -import Typography from '@mui/material/Typography'; -import { alpha } from '@mui/material/styles'; - -function layouts() { +export default function examples() { return [ { title: 'npm stats', @@ -125,69 +115,3 @@ function layouts() { }, ]; } - -function Templates() { - return ( - - {layouts().map((layout) => ( - - ({ - height: '100%', - display: 'flex', - flexDirection: 'column', - px: 2, - pt: 2, - pb: 1, - gap: 1.5, - borderRadius: 1, - backgroundColor: `${alpha(theme.palette.grey[50], 0.4)}`, - borderColor: 'divider', - ...theme.applyDarkStyles({ - backgroundColor: `${alpha(theme.palette.primaryDark[700], 0.3)}`, - borderColor: 'divider', - }), - })} - variant="outlined" - > - ({ - height: 0, - pt: '65%', - borderRadius: 0.5, - bgcolor: 'currentColor', - border: '1px solid', - borderColor: 'grey.100', - color: 'grey.100', - ...theme.applyDarkStyles({ - borderColor: 'grey.900', - color: 'primaryDark.900', - }), - })} - /> - - - {layout.title} - - - {layout.description} - - - - - - - - ))} - - ); -} - -export default Templates; diff --git a/docs/translations/api-docs/data-grid/data-grid.json b/docs/translations/api-docs/data-grid/data-grid.json index f93d4cbd8c7..994401fdf15 100644 --- a/docs/translations/api-docs/data-grid/data-grid.json +++ b/docs/translations/api-docs/data-grid/data-grid.json @@ -1 +1,12 @@ -{ "componentDescription": "", "propDescriptions": {}, "classDescriptions": {} } +{ + "componentDescription": "", + "propDescriptions": { + "dataProvider": { + "description": "The data provider to resolve the displayed data. This object must be referentially stable." + }, + "height": { + "description": "The height of the datagrid in pixels. If left undefined, it adopts the height of its parent." + } + }, + "classDescriptions": {} +} diff --git a/docs/translations/api-docs/line-chart/line-chart.json b/docs/translations/api-docs/line-chart/line-chart.json new file mode 100644 index 00000000000..7136b3f1a65 --- /dev/null +++ b/docs/translations/api-docs/line-chart/line-chart.json @@ -0,0 +1,9 @@ +{ + "componentDescription": "", + "propDescriptions": { + "dataProvider": { + "description": "The data provider to resolve the displayed data. This object must be referentially stable." + } + }, + "classDescriptions": {} +} diff --git a/examples/core-tutorial/.eslintrc.json b/examples/core-tutorial/.eslintrc.json new file mode 100644 index 00000000000..bffb357a712 --- /dev/null +++ b/examples/core-tutorial/.eslintrc.json @@ -0,0 +1,3 @@ +{ + "extends": "next/core-web-vitals" +} diff --git a/examples/core-tutorial/.gitignore b/examples/core-tutorial/.gitignore new file mode 100644 index 00000000000..0563835d349 --- /dev/null +++ b/examples/core-tutorial/.gitignore @@ -0,0 +1,36 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js +.yarn/install-state.gz + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# local env files +.env*.local + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts \ No newline at end of file diff --git a/examples/core-tutorial/app/(dashboard)/layout.tsx b/examples/core-tutorial/app/(dashboard)/layout.tsx new file mode 100644 index 00000000000..945ea792377 --- /dev/null +++ b/examples/core-tutorial/app/(dashboard)/layout.tsx @@ -0,0 +1,6 @@ +import * as React from 'react'; +import { DashboardLayout } from '@toolpad/core/DashboardLayout'; + +export default function Layout(props: { children: React.ReactNode }) { + return {props.children}; +} diff --git a/examples/core-tutorial/app/(dashboard)/page/page.tsx b/examples/core-tutorial/app/(dashboard)/page/page.tsx new file mode 100644 index 00000000000..9a9f1baea40 --- /dev/null +++ b/examples/core-tutorial/app/(dashboard)/page/page.tsx @@ -0,0 +1,13 @@ +import { Typography, Container } from '@mui/material'; + +export default function Home() { + return ( +
+ + + Dashboard content! + + +
+ ); +} diff --git a/examples/core-tutorial/app/api/auth/[...nextAuth]/route.ts b/examples/core-tutorial/app/api/auth/[...nextAuth]/route.ts new file mode 100644 index 00000000000..e69de29bb2d diff --git a/examples/core-tutorial/app/auth/[...path]/page.tsx b/examples/core-tutorial/app/auth/[...path]/page.tsx new file mode 100644 index 00000000000..e69de29bb2d diff --git a/examples/core-tutorial/app/layout.tsx b/examples/core-tutorial/app/layout.tsx new file mode 100644 index 00000000000..20373eade60 --- /dev/null +++ b/examples/core-tutorial/app/layout.tsx @@ -0,0 +1,28 @@ +import { AppProvider } from '@toolpad/core/AppProvider'; +import DashboardIcon from '@mui/icons-material/Dashboard'; +import type { Navigation } from '@toolpad/core'; +import theme from '../theme'; + +const NAVIGATION: Navigation = [ + { + kind: 'header', + title: 'Main items', + }, + { + slug: '/page', + title: 'Page', + icon: , + }, +]; + +export default function RootLayout({ children }: Readonly<{ children: React.ReactNode }>) { + return ( + + + + {children} + + + + ); +} diff --git a/examples/core-tutorial/app/page.tsx b/examples/core-tutorial/app/page.tsx new file mode 100644 index 00000000000..4f3a9b7609b --- /dev/null +++ b/examples/core-tutorial/app/page.tsx @@ -0,0 +1,26 @@ +import Link from 'next/link'; +import { Button, Container, Typography, Box } from '@mui/material'; + +export default function Home() { + return ( + + + + Welcome to Toolpad Core! + + + + Get started by editing (dashboard)/page/page.tsx + + + + + + + + + + ); +} diff --git a/examples/core-tutorial/next-env.d.ts b/examples/core-tutorial/next-env.d.ts new file mode 100644 index 00000000000..4f11a03dc6c --- /dev/null +++ b/examples/core-tutorial/next-env.d.ts @@ -0,0 +1,5 @@ +/// +/// + +// NOTE: This file should not be edited +// see https://nextjs.org/docs/basic-features/typescript for more information. diff --git a/examples/core-tutorial/next.config.mjs b/examples/core-tutorial/next.config.mjs new file mode 100644 index 00000000000..f26ac370c56 --- /dev/null +++ b/examples/core-tutorial/next.config.mjs @@ -0,0 +1,3 @@ +/** @type {import('next').NextConfig} */ +const nextConfig = {}; +export default nextConfig; diff --git a/examples/core-tutorial/package.json b/examples/core-tutorial/package.json new file mode 100644 index 00000000000..117477fedae --- /dev/null +++ b/examples/core-tutorial/package.json @@ -0,0 +1,29 @@ +{ + "name": "core-test", + "version": "0.1.0", + "scripts": { + "dev": "next dev", + "build": "next build", + "start": "next start", + "lint": "next lint" + }, + "dependencies": { + "react": "^18", + "react-dom": "^18", + "next": "^14", + "@toolpad/core": "latest", + "@mui/material": "^5", + "@mui/icons-material": "^5", + "@emotion/react": "^11", + "@emotion/styled": "^11", + "@emotion/cache": "^11" + }, + "devDependencies": { + "typescript": "^5", + "@types/node": "^20", + "@types/react": "^18", + "@types/react-dom": "^18", + "eslint": "^8", + "eslint-config-next": "^14" + } +} diff --git a/examples/core-tutorial/theme.ts b/examples/core-tutorial/theme.ts new file mode 100644 index 00000000000..354fcbdd88f --- /dev/null +++ b/examples/core-tutorial/theme.ts @@ -0,0 +1,115 @@ +'use client'; +import { createTheme } from '@mui/material/styles'; + +const defaultTheme = createTheme(); + +const theme = createTheme(defaultTheme, { + palette: { + background: { + default: defaultTheme.palette.grey['50'], + }, + }, + typography: { + h6: { + fontWeight: '700', + }, + }, + components: { + MuiAppBar: { + styleOverrides: { + root: { + borderWidth: 0, + borderBottomWidth: 1, + borderStyle: 'solid', + borderColor: defaultTheme.palette.divider, + boxShadow: 'none', + }, + }, + }, + MuiList: { + styleOverrides: { + root: { + padding: 0, + }, + }, + }, + MuiIconButton: { + styleOverrides: { + root: { + color: defaultTheme.palette.primary.dark, + padding: 8, + }, + }, + }, + MuiListSubheader: { + styleOverrides: { + root: { + color: defaultTheme.palette.grey['600'], + fontSize: 12, + fontWeight: '700', + height: 40, + paddingLeft: 32, + }, + }, + }, + MuiListItem: { + styleOverrides: { + root: { + paddingTop: 0, + paddingBottom: 0, + }, + }, + }, + MuiListItemButton: { + styleOverrides: { + root: { + borderRadius: 8, + '&.Mui-selected': { + '& .MuiListItemIcon-root': { + color: defaultTheme.palette.primary.dark, + }, + '& .MuiTypography-root': { + color: defaultTheme.palette.primary.dark, + }, + '& .MuiSvgIcon-root': { + color: defaultTheme.palette.primary.dark, + }, + '& .MuiTouchRipple-child': { + backgroundColor: defaultTheme.palette.primary.dark, + }, + }, + '& .MuiSvgIcon-root': { + color: defaultTheme.palette.action.active, + }, + }, + }, + }, + MuiListItemText: { + styleOverrides: { + root: { + '& .MuiTypography-root': { + fontWeight: '500', + }, + }, + }, + }, + MuiListItemIcon: { + styleOverrides: { + root: { + minWidth: 34, + }, + }, + }, + MuiDivider: { + styleOverrides: { + root: { + borderBottomWidth: 2, + marginLeft: '16px', + marginRight: '16px', + }, + }, + }, + }, +}); + +export default theme; diff --git a/examples/core-tutorial/tsconfig.json b/examples/core-tutorial/tsconfig.json new file mode 100644 index 00000000000..e7ff90fd276 --- /dev/null +++ b/examples/core-tutorial/tsconfig.json @@ -0,0 +1,26 @@ +{ + "compilerOptions": { + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve", + "incremental": true, + "plugins": [ + { + "name": "next" + } + ], + "paths": { + "@/*": ["./*"] + } + }, + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], + "exclude": ["node_modules"] +} diff --git a/examples/custom-server-nextjs/package.json b/examples/custom-server-nextjs/package.json index fc3043f07b8..dd832e83bc1 100644 --- a/examples/custom-server-nextjs/package.json +++ b/examples/custom-server-nextjs/package.json @@ -12,10 +12,10 @@ "@toolpad/studio": "0.1.55", "express": "4.19.2", "next": "14.2.3", - "react": "18.2.0", - "react-dom": "18.2.0" + "react": "18.3.1", + "react-dom": "18.3.1" }, "devDependencies": { - "@types/react": "18.3.1" + "@types/react": "18.3.3" } } diff --git a/examples/datagrid-premium/package.json b/examples/datagrid-premium/package.json index af0a9307e6b..67419c531c0 100644 --- a/examples/datagrid-premium/package.json +++ b/examples/datagrid-premium/package.json @@ -8,8 +8,8 @@ "start": "toolpad-studio start ." }, "dependencies": { - "@mui/x-data-grid-premium": "^7.3.2", - "@mui/x-license": "^7.2.0", + "@mui/x-data-grid-premium": "^7.6.1", + "@mui/x-license": "^7.6.1", "@toolpad/studio": "0.1.55" } } diff --git a/examples/hacker-news-client/package.json b/examples/hacker-news-client/package.json index 63626ba9bd7..105a4fc507f 100644 --- a/examples/hacker-news-client/package.json +++ b/examples/hacker-news-client/package.json @@ -9,6 +9,6 @@ }, "dependencies": { "@toolpad/studio": "^0.1.55", - "axios": "^1.6.8" + "axios": "^1.7.2" } } diff --git a/examples/react-pages/package.json b/examples/react-pages/package.json index e68a3fc4540..971d671686a 100644 --- a/examples/react-pages/package.json +++ b/examples/react-pages/package.json @@ -8,10 +8,10 @@ "start": "toolpad-studio start" }, "dependencies": { - "@mui/material": "5.15.16", + "@mui/material": "5.15.19", "@toolpad/studio": "0.1.55", - "@mui/x-data-grid": "7.3.2", - "@tanstack/react-query": "5.32.1" + "@mui/x-data-grid": "7.6.1", + "@tanstack/react-query": "5.40.0" }, "devDependencies": {} } diff --git a/examples/supabase/package.json b/examples/supabase/package.json index aee9651c1bd..8386cc7af4b 100644 --- a/examples/supabase/package.json +++ b/examples/supabase/package.json @@ -9,6 +9,6 @@ }, "dependencies": { "@toolpad/studio": "0.1.55", - "@supabase/supabase-js": "2.43.0" + "@supabase/supabase-js": "2.43.4" } } diff --git a/examples/with-prisma-data-provider/package.json b/examples/with-prisma-data-provider/package.json index 9d90701f2a5..d21b3adc7c3 100644 --- a/examples/with-prisma-data-provider/package.json +++ b/examples/with-prisma-data-provider/package.json @@ -10,13 +10,13 @@ }, "dependencies": { "@toolpad/studio": "0.1.55", - "@prisma/client": "5.13.0", + "@prisma/client": "5.14.0", "qrcode": "^1.5.3" }, "devDependencies": { - "@types/node": "^20.12.7", + "@types/node": "^20.13.0", "@types/qrcode": "^1.5.5", - "prisma": "^5.13.0", + "prisma": "^5.14.0", "ts-node": "^10.9.2", "typescript": "^5.4.5" } diff --git a/examples/with-prisma/package.json b/examples/with-prisma/package.json index bed51368dbd..c48c0ece19a 100644 --- a/examples/with-prisma/package.json +++ b/examples/with-prisma/package.json @@ -10,13 +10,13 @@ }, "dependencies": { "@toolpad/studio": "0.1.55", - "@prisma/client": "5.13.0", + "@prisma/client": "5.14.0", "qrcode": "^1.5.3" }, "devDependencies": { - "@types/node": "^20.12.7", + "@types/node": "^20.13.0", "@types/qrcode": "^1.5.5", - "prisma": "^5.13.0", + "prisma": "^5.14.0", "ts-node": "^10.9.2", "typescript": "^5.4.5" } diff --git a/package.json b/package.json index 1eec15aa08b..569c87c5a75 100644 --- a/package.json +++ b/package.json @@ -55,7 +55,7 @@ "@mui/internal-markdown": "1.0.4", "@mui/internal-scripts": "1.0.8", "@mui/monorepo": "github:mui/material-ui#a3fdc9f9682b57a6059792634863e39f322cef8d", - "@mui/x-charts": "7.5.1", + "@mui/x-charts": "7.6.1", "@next/eslint-plugin-next": "14.2.3", "@playwright/test": "1.43.1", "@testing-library/react": "14.3.1", @@ -65,8 +65,8 @@ "@types/invariant": "2.2.37", "@types/node": "20.12.8", "@types/yargs": "17.0.32", - "@typescript-eslint/eslint-plugin": "7.10.0", - "@typescript-eslint/parser": "7.10.0", + "@typescript-eslint/eslint-plugin": "7.11.0", + "@typescript-eslint/parser": "7.11.0", "babel-plugin-react-remove-properties": "0.3.0", "babel-plugin-transform-react-remove-prop-types": "0.4.24", "chalk": "5.3.0", @@ -81,7 +81,7 @@ "eslint-plugin-jsx-a11y": "6.8.0", "eslint-plugin-material-ui": "workspace:*", "eslint-plugin-mocha": "10.4.3", - "eslint-plugin-react": "7.34.1", + "eslint-plugin-react": "7.34.2", "eslint-plugin-react-hooks": "4.6.2", "eslint-plugin-typescript-enum": "2.1.0", "execa": "8.0.1", @@ -89,10 +89,10 @@ "format-util": "1.0.5", "fs-extra": "11.2.0", "globby": "14.0.1", - "jsdom": "24.0.0", + "jsdom": "24.1.0", "lerna": "7.4.2", "markdownlint-cli2": "0.13.0", - "prettier": "3.2.5", + "prettier": "3.3.0", "pretty-quick": "4.0.0", "react-docgen": "5.4.3", "react-inspector": "6.0.2", @@ -111,7 +111,7 @@ "cross-env": "7.0.3", "dotenv-cli": "7.4.2", "eslint-import-resolver-exports": "1.0.0-beta.5", - "eslint-plugin-react-compiler": "0.0.0-experimental-c8b3f72-20240517", + "eslint-plugin-react-compiler": "0.0.0", "inquirer": "9.2.22", "invariant": "2.2.4", "lodash": "4.17.21", diff --git a/packages/eslint-plugin-material-ui/package.json b/packages/eslint-plugin-material-ui/package.json index 227f0ee3b1d..ddc229c45c7 100644 --- a/packages/eslint-plugin-material-ui/package.json +++ b/packages/eslint-plugin-material-ui/package.json @@ -9,7 +9,7 @@ }, "devDependencies": { "@types/eslint": "8.56.10", - "@typescript-eslint/parser": "7.10.0" + "@typescript-eslint/parser": "7.11.0" }, "scripts": {}, "repository": { diff --git a/packages/toolpad-core/package.json b/packages/toolpad-core/package.json index 6822e293455..516fda97812 100644 --- a/packages/toolpad-core/package.json +++ b/packages/toolpad-core/package.json @@ -47,8 +47,9 @@ }, "dependencies": { "@mui/lab": "5.0.0-alpha.170", - "@mui/x-data-grid": "7.5.1", - "@tanstack/react-query": "5.36.0", + "@mui/x-charts": "7.6.1", + "@mui/x-data-grid": "7.6.1", + "@tanstack/react-query": "5.40.0", "@toolpad/utils": "workspace:*", "client-only": "^0.0.1", "invariant": "2.2.4", @@ -60,7 +61,9 @@ "@types/invariant": "2.2.37", "@types/prop-types": "15.7.12", "@types/react": "18.3.1", - "@types/react-dom": "18.3.0" + "@types/react-dom": "18.3.0", + "@types/sinon": "^17.0.3", + "sinon": "^18.0.0" }, "peerDependencies": { "@mui/icons-material": "^5", diff --git a/packages/toolpad-core/src/DashboardLayout/DashboardLayout.tsx b/packages/toolpad-core/src/DashboardLayout/DashboardLayout.tsx index 534bc875ff8..93f7cd9dcf1 100644 --- a/packages/toolpad-core/src/DashboardLayout/DashboardLayout.tsx +++ b/packages/toolpad-core/src/DashboardLayout/DashboardLayout.tsx @@ -213,6 +213,7 @@ function DashboardSidebarSubNavigation({ ) : ( listItem )} + {navigationItem.children ? ( { afterEach(cleanup); + describeConformance(, () => ({ + inheritComponent: XDataGrid, + refInstanceof: window.HTMLDivElement, + skip: ['themeDefaultProps'], + })); + test('renders content correctly', async () => { // placeholder test const { getByText } = render(); diff --git a/packages/toolpad-core/src/DataGrid/DataGrid.tsx b/packages/toolpad-core/src/DataGrid/DataGrid.tsx index 6b0b59a58c1..d908351f663 100644 --- a/packages/toolpad-core/src/DataGrid/DataGrid.tsx +++ b/packages/toolpad-core/src/DataGrid/DataGrid.tsx @@ -46,7 +46,7 @@ import { ValidId, DEFAULT_ID_FIELD, } from '../DataProvider'; -import InferencingAlert from './InferrencingAlert'; +import InferencingAlert from './InferencingAlert'; import { NotificationSnackbar, DataGridNotification, @@ -111,7 +111,6 @@ function cleanDraftRow(row: MaybeDraftRow): R { const PlaceholderBorder = styled('div')(({ theme }) => ({ position: 'absolute', inset: '0 0 0 0', - backgroundColor: theme.palette.background.paper, borderColor: theme.palette.divider, borderWidth: 1, borderStyle: 'solid', @@ -120,11 +119,14 @@ const PlaceholderBorder = styled('div')(({ theme }) => ({ type ProcessRowUpdate = XDataGridProps['processRowUpdate']; -export interface DataGridProps - extends Omit, 'columns' | 'rows'> { - rows?: readonly R[]; - columns?: readonly GridColDef[]; +export interface DataGridProps extends Partial> { + /** + * The height of the datagrid in pixels. If left `undefined`, it adopts the height of its parent. + */ height?: number; + /** + * The data provider to resolve the displayed data. This object must be referentially stable. + */ dataProvider?: ResolvedDataProvider; } @@ -481,8 +483,12 @@ function diffRows>(original: R, changed: * API: * * - [DataGrid API](https://mui.com/toolpad/core/api/data-grid) + * - inherits [X DataGrid API](https://mui.com/x/api/data-grid/data-grid/) */ -const DataGrid = function DataGrid(props: DataGridProps) { +const DataGrid = React.forwardRef(function DataGrid( + props: DataGridProps, + ref: React.Ref, +) { const { dataProvider, ...restProps1 } = props; // TODO: figure out how to stop generating prop types for X Grid properties @@ -721,11 +727,15 @@ const DataGrid = function DataGrid(props: DataGridProps) { [`& .${gridClasses['scrollbar--vertical']}`]: { ...(editingState.editedRowId === DRAFT_ROW_ID ? { pointerEvents: 'none' } : {}), }, + [`& .${gridClasses.root}`]: { + visibility: error ? 'hidden' : undefined, + }, }} > {inferredFields ? : null} (props: DataGridProps) { ); -}; +}); DataGrid.propTypes /* remove-proptypes */ = { // β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ Warning ──────────────────────────────┐ @@ -775,205 +785,7 @@ DataGrid.propTypes /* remove-proptypes */ = { // β”‚ To update them, edit the TypeScript types and run `pnpm proptypes`. β”‚ // β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ /** - * @ignore - */ - columns: PropTypes.arrayOf( - PropTypes.oneOfType([ - PropTypes.shape({ - align: PropTypes.oneOf(['center', 'left', 'right']), - cellClassName: PropTypes.oneOfType([PropTypes.func, PropTypes.string]), - colSpan: PropTypes.oneOfType([PropTypes.func, PropTypes.number]), - description: PropTypes.string, - disableColumnMenu: PropTypes.bool, - disableExport: PropTypes.bool, - disableReorder: PropTypes.bool, - display: PropTypes.oneOf(['flex', 'text']), - editable: PropTypes.bool, - field: PropTypes.string.isRequired, - filterable: PropTypes.bool, - filterOperators: PropTypes.arrayOf( - PropTypes.shape({ - getApplyFilterFn: PropTypes.func.isRequired, - getValueAsString: PropTypes.func, - headerLabel: PropTypes.string, - InputComponent: PropTypes.elementType, - InputComponentProps: PropTypes.object, - label: PropTypes.string, - requiresFilterValue: PropTypes.bool, - value: PropTypes.string.isRequired, - }), - ), - flex: PropTypes.number, - getApplyQuickFilterFn: PropTypes.func, - getSortComparator: PropTypes.func, - groupable: PropTypes.bool, - headerAlign: PropTypes.oneOf(['center', 'left', 'right']), - headerClassName: PropTypes.oneOfType([PropTypes.func, PropTypes.string]), - headerName: PropTypes.string, - hideable: PropTypes.bool, - hideSortIcons: PropTypes.bool, - maxWidth: PropTypes.number, - minWidth: PropTypes.number, - pinnable: PropTypes.bool, - preProcessEditCellProps: PropTypes.func, - renderCell: PropTypes.func, - renderEditCell: PropTypes.func, - renderHeader: PropTypes.func, - resizable: PropTypes.bool, - sortable: PropTypes.bool, - sortComparator: PropTypes.func, - sortingOrder: PropTypes.arrayOf(PropTypes.oneOf(['asc', 'desc'])), - type: PropTypes.oneOf([ - 'actions', - 'boolean', - 'custom', - 'date', - 'dateTime', - 'number', - 'singleSelect', - 'string', - ]), - valueFormatter: PropTypes.func, - valueGetter: PropTypes.func, - valueParser: PropTypes.func, - valueSetter: PropTypes.func, - width: PropTypes.number, - }), - PropTypes.shape({ - align: PropTypes.oneOf(['center', 'left', 'right']), - cellClassName: PropTypes.oneOfType([PropTypes.func, PropTypes.string]), - colSpan: PropTypes.oneOfType([PropTypes.func, PropTypes.number]), - description: PropTypes.string, - disableColumnMenu: PropTypes.bool, - disableExport: PropTypes.bool, - disableReorder: PropTypes.bool, - display: PropTypes.oneOf(['flex', 'text']), - editable: PropTypes.bool, - field: PropTypes.string.isRequired, - filterable: PropTypes.bool, - filterOperators: PropTypes.arrayOf( - PropTypes.shape({ - getApplyFilterFn: PropTypes.func.isRequired, - getValueAsString: PropTypes.func, - headerLabel: PropTypes.string, - InputComponent: PropTypes.elementType, - InputComponentProps: PropTypes.object, - label: PropTypes.string, - requiresFilterValue: PropTypes.bool, - value: PropTypes.string.isRequired, - }), - ), - flex: PropTypes.number, - getActions: PropTypes.func.isRequired, - getApplyQuickFilterFn: PropTypes.func, - getSortComparator: PropTypes.func, - groupable: PropTypes.bool, - headerAlign: PropTypes.oneOf(['center', 'left', 'right']), - headerClassName: PropTypes.oneOfType([PropTypes.func, PropTypes.string]), - headerName: PropTypes.string, - hideable: PropTypes.bool, - hideSortIcons: PropTypes.bool, - maxWidth: PropTypes.number, - minWidth: PropTypes.number, - pinnable: PropTypes.bool, - preProcessEditCellProps: PropTypes.func, - renderCell: PropTypes.func, - renderEditCell: PropTypes.func, - renderHeader: PropTypes.func, - resizable: PropTypes.bool, - sortable: PropTypes.bool, - sortComparator: PropTypes.func, - sortingOrder: PropTypes.arrayOf(PropTypes.oneOf(['asc', 'desc'])), - type: PropTypes.oneOf([ - /** - * The type of the column. - * @default 'actions' - */ - 'actions', - ]).isRequired, - valueFormatter: PropTypes.func, - valueGetter: PropTypes.func, - valueParser: PropTypes.func, - valueSetter: PropTypes.func, - width: PropTypes.number, - }), - PropTypes.shape({ - align: PropTypes.oneOf(['center', 'left', 'right']), - cellClassName: PropTypes.oneOfType([PropTypes.func, PropTypes.string]), - colSpan: PropTypes.oneOfType([PropTypes.func, PropTypes.number]), - description: PropTypes.string, - disableColumnMenu: PropTypes.bool, - disableExport: PropTypes.bool, - disableReorder: PropTypes.bool, - display: PropTypes.oneOf(['flex', 'text']), - editable: PropTypes.bool, - field: PropTypes.string.isRequired, - filterable: PropTypes.bool, - filterOperators: PropTypes.arrayOf( - PropTypes.shape({ - getApplyFilterFn: PropTypes.func.isRequired, - getValueAsString: PropTypes.func, - headerLabel: PropTypes.string, - InputComponent: PropTypes.elementType, - InputComponentProps: PropTypes.object, - label: PropTypes.string, - requiresFilterValue: PropTypes.bool, - value: PropTypes.string.isRequired, - }), - ), - flex: PropTypes.number, - getApplyQuickFilterFn: PropTypes.func, - getOptionLabel: PropTypes.func, - getOptionValue: PropTypes.func, - getSortComparator: PropTypes.func, - groupable: PropTypes.bool, - headerAlign: PropTypes.oneOf(['center', 'left', 'right']), - headerClassName: PropTypes.oneOfType([PropTypes.func, PropTypes.string]), - headerName: PropTypes.string, - hideable: PropTypes.bool, - hideSortIcons: PropTypes.bool, - maxWidth: PropTypes.number, - minWidth: PropTypes.number, - pinnable: PropTypes.bool, - preProcessEditCellProps: PropTypes.func, - renderCell: PropTypes.func, - renderEditCell: PropTypes.func, - renderHeader: PropTypes.func, - resizable: PropTypes.bool, - sortable: PropTypes.bool, - sortComparator: PropTypes.func, - sortingOrder: PropTypes.arrayOf(PropTypes.oneOf(['asc', 'desc'])), - type: PropTypes.oneOf([ - /** - * The type of the column. - * @default 'singleSelect' - */ - 'singleSelect', - ]).isRequired, - valueFormatter: PropTypes.func, - valueGetter: PropTypes.func, - valueOptions: PropTypes.oneOfType([ - PropTypes.arrayOf( - PropTypes.oneOfType([ - PropTypes.number, - PropTypes.object, - PropTypes.shape({ - label: PropTypes.string.isRequired, - value: PropTypes.any.isRequired, - }), - PropTypes.string, - ]).isRequired, - ), - PropTypes.func, - ]), - valueParser: PropTypes.func, - valueSetter: PropTypes.func, - width: PropTypes.number, - }), - ]).isRequired, - ), - /** - * @ignore + * The data provider to resolve the displayed data. This object must be referentially stable. */ dataProvider: PropTypes.shape({ createOne: PropTypes.func, @@ -981,16 +793,13 @@ DataGrid.propTypes /* remove-proptypes */ = { fields: PropTypes.object, getMany: PropTypes.func.isRequired, getOne: PropTypes.func, + idField: PropTypes.object, updateOne: PropTypes.func, }), /** - * @ignore + * The height of the datagrid in pixels. If left `undefined`, it adopts the height of its parent. */ - rows: PropTypes.arrayOf( - PropTypes.shape({ - id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired, - }), - ), + height: PropTypes.number, } as any; export { DataGrid }; diff --git a/packages/toolpad-core/src/DataGrid/InferrencingAlert.tsx b/packages/toolpad-core/src/DataGrid/InferencingAlert.tsx similarity index 97% rename from packages/toolpad-core/src/DataGrid/InferrencingAlert.tsx rename to packages/toolpad-core/src/DataGrid/InferencingAlert.tsx index 72ced3ccc24..10c09f40fb1 100644 --- a/packages/toolpad-core/src/DataGrid/InferrencingAlert.tsx +++ b/packages/toolpad-core/src/DataGrid/InferencingAlert.tsx @@ -47,7 +47,7 @@ function CodeSnippet({ children }: { children: string }) { ); } -const INFERENCING_DOCS_URL = 'https://mui.com/toolpad/core/components/data-grid/#column-inferrence'; +const INFERENCING_DOCS_URL = 'https://mui.com/toolpad/core/react-data-grid/#column-inference'; interface InferencingDialogProps { open: boolean; diff --git a/packages/toolpad-core/src/DataProvider/DataProvider.test.tsx b/packages/toolpad-core/src/DataProvider/DataProvider.test.tsx index b6209312123..841933c3a9e 100644 --- a/packages/toolpad-core/src/DataProvider/DataProvider.test.tsx +++ b/packages/toolpad-core/src/DataProvider/DataProvider.test.tsx @@ -13,7 +13,7 @@ describe('DataProvider', () => { test('renders content correctly', async () => { // placeholder test - const data = createDataProvider({ + const data = createDataProvider({ async getMany() { return { rows: [{ id: 1, hello: 'foo' }] }; }, diff --git a/packages/toolpad-core/src/DataProvider/DataProvider.tsx b/packages/toolpad-core/src/DataProvider/DataProvider.tsx index dc796bc0d59..b1b68a1d9b7 100644 --- a/packages/toolpad-core/src/DataProvider/DataProvider.tsx +++ b/packages/toolpad-core/src/DataProvider/DataProvider.tsx @@ -139,7 +139,17 @@ function getKeyForParams(params: GetManyParams): string[] { ]; } -const queryClient = new QueryClient(); +const queryClient = new QueryClient({ + defaultOptions: { + queries: { + retry: false, + networkMode: 'always', + }, + mutations: { + networkMode: 'always', + }, + }, +}); export function useGetMany( dataProvider: ResolvedDataProvider | null, diff --git a/packages/toolpad-core/src/LineChart/LineChart.test.tsx b/packages/toolpad-core/src/LineChart/LineChart.test.tsx new file mode 100644 index 00000000000..05c6f270a41 --- /dev/null +++ b/packages/toolpad-core/src/LineChart/LineChart.test.tsx @@ -0,0 +1,41 @@ +/** + * @vitest-environment jsdom + */ + +import * as React from 'react'; +import { describe, test, expect, afterEach } from 'vitest'; +import { render, cleanup } from '@testing-library/react'; +import sinon from 'sinon'; +import { LineChart as XLineChart } from '@mui/x-charts'; +import describeConformance from '@toolpad/utils/describeConformance'; +import { LineChart } from './LineChart'; + +export const stubMatchMedia = (matches = true) => + sinon.stub().returns({ + matches, + addEventListener: () => {}, + removeEventListener: () => {}, + }); + +describe('LineChart', () => { + const originalMatchMedia = window.matchMedia; + + afterEach(() => { + cleanup(); + window.matchMedia = originalMatchMedia; + }); + + describeConformance(, () => ({ + inheritComponent: XLineChart, + refInstanceof: window.HTMLDivElement, + skip: ['themeDefaultProps'], + })); + + test('renders content correctly', async () => { + window.matchMedia = stubMatchMedia(false); + // placeholder test + const { getByText } = render(); + + expect(getByText('No data to display')).toBeTruthy(); + }); +}); diff --git a/packages/toolpad-core/src/LineChart/LineChart.tsx b/packages/toolpad-core/src/LineChart/LineChart.tsx new file mode 100644 index 00000000000..0115e6eab0a --- /dev/null +++ b/packages/toolpad-core/src/LineChart/LineChart.tsx @@ -0,0 +1,167 @@ +'use client'; + +import * as React from 'react'; +import PropTypes from 'prop-types'; +import { + LineChart as XLineChart, + LineChartProps as XLineChartProps, + AxisConfig, + blueberryTwilightPalette, + LineSeriesType, +} from '@mui/x-charts'; +import { styled, useTheme } from '@mui/material'; +import { Datum, ResolvedDataProvider, useGetMany } from '../DataProvider'; +import { ErrorOverlay, LoadingOverlay } from '../shared'; + +const LineChartRoot = styled('div')({ + position: 'relative', +}); + +export type LineChartSeries = XLineChartProps['series']; + +export interface LineChartProps extends Partial { + /** + * The data provider to resolve the displayed data. This object must be referentially stable. + */ + dataProvider?: ResolvedDataProvider; +} + +/** + * + * Demos: + * + * - [Line Chart](https://mui.com/toolpad/core/react-line-chart/) + * + * API: + * + * - [LineChart API](https://mui.com/toolpad/core/api/line-chart) + * - inherits [X LineChart API](https://mui.com/x/api/charts/line-chart/) + */ +const LineChart = React.forwardRef(function LineChart( + props: LineChartProps, + ref: React.Ref, +) { + const { dataProvider, ...restProps1 } = props; + // TODO: figure out how to stop generating prop types for X Grid properties + // and document with inheritance + const restProps2 = restProps1; + const { xAxis, series, ...rest } = restProps2; + const theme = useTheme(); + const { data, loading, error } = useGetMany(dataProvider ?? null); + const resolvedXAxis = React.useMemo(() => { + if (!xAxis || xAxis.length <= 0) { + return [{ dataKey: 'id' }]; + } + return xAxis.map((axis) => { + let defaults: Partial = {}; + if (axis.dataKey) { + const field = dataProvider?.fields?.[axis.dataKey]; + if (field) { + defaults = { + label: field.label, + }; + if (field.type === 'date') { + defaults.scaleType = 'time'; + } + } + } + return { ...defaults, ...axis }; + }); + }, [dataProvider?.fields, xAxis]); + + const resolvedSeries = React.useMemo(() => { + const idField = dataProvider?.idField ?? 'id'; + const resolvedSeriesProp: LineChartSeries = + series || + Object.keys(dataProvider?.fields ?? {}) + .filter( + (dataKey) => dataKey !== idField && dataProvider?.fields?.[dataKey]?.type === 'number', + ) + .map((dataKey) => ({ dataKey })); + + const colorSchemeIndices = new Map( + Object.keys(dataProvider?.fields ?? {}).map((name, i) => [name, i]), + ); + + const colors = blueberryTwilightPalette(theme.palette.mode); + + return resolvedSeriesProp.map((s) => { + let defaults: Partial = {}; + if (s.dataKey) { + const name = s.dataKey; + const field = dataProvider?.fields?.[name]; + if (field) { + const colorSchemeIndex = colorSchemeIndices.get(name) ?? 0; + defaults = { + label: field.label, + color: colors[colorSchemeIndex % colors.length], + }; + const valueFormatter = field.valueFormatter; + if (valueFormatter) { + defaults.valueFormatter = (value: any) => valueFormatter(value, name); + } + } + } + return { ...defaults, ...s }; + }); + }, [dataProvider?.idField, dataProvider?.fields, series, theme.palette.mode]); + + const dataSet = React.useMemo(() => { + const resolvedRows = data?.rows ?? []; + return resolvedRows.map((row) => { + const result: NonNullable[number] = {}; + for (const [name, field] of Object.entries(dataProvider?.fields ?? {})) { + let value = row[name]; + if (field.type === 'date' && (typeof value === 'string' || typeof value === 'number')) { + value = new Date(value); + } + + if (typeof value === 'string' || typeof value === 'number' || value instanceof Date) { + result[name] = value; + } + } + return result; + }); + }, [data?.rows, dataProvider?.fields]); + + return ( + +
+ +
+ {loading ? : null} + {error ? : null} +
+ ); +}); + +LineChart.propTypes /* remove-proptypes */ = { + // β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ Warning ──────────────────────────────┐ + // β”‚ These PropTypes are generated from the TypeScript type definitions. β”‚ + // β”‚ To update them, edit the TypeScript types and run `pnpm proptypes`. β”‚ + // β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + /** + * @ignore + */ + children: PropTypes.node, + /** + * The data provider to resolve the displayed data. This object must be referentially stable. + */ + dataProvider: PropTypes.shape({ + createOne: PropTypes.func, + deleteOne: PropTypes.func, + fields: PropTypes.object, + getMany: PropTypes.func.isRequired, + getOne: PropTypes.func, + idField: PropTypes.object, + updateOne: PropTypes.func, + }), +} as any; + +export { LineChart }; diff --git a/packages/toolpad-core/src/LineChart/index.ts b/packages/toolpad-core/src/LineChart/index.ts new file mode 100644 index 00000000000..d2dbedfcecb --- /dev/null +++ b/packages/toolpad-core/src/LineChart/index.ts @@ -0,0 +1 @@ +export * from './LineChart'; diff --git a/packages/toolpad-core/src/index.ts b/packages/toolpad-core/src/index.ts index 71e11e0b79f..ac93cc55f24 100644 --- a/packages/toolpad-core/src/index.ts +++ b/packages/toolpad-core/src/index.ts @@ -5,3 +5,5 @@ export * from './DashboardLayout'; export * from './DataProvider'; export * from './DataGrid'; + +export * from './LineChart'; diff --git a/packages/toolpad-studio-components/package.json b/packages/toolpad-studio-components/package.json index b8b4a88f23a..d1bd87de89d 100644 --- a/packages/toolpad-studio-components/package.json +++ b/packages/toolpad-studio-components/package.json @@ -42,11 +42,11 @@ "@mui/icons-material": "5.15.19", "@mui/lab": "5.0.0-alpha.170", "@mui/material": "5.15.19", - "@mui/x-charts": "7.5.1", - "@mui/x-data-grid-premium": "7.5.1", - "@mui/x-date-pickers": "7.5.1", - "@mui/x-license": "7.2.1", - "@tanstack/react-query": "5.39.0", + "@mui/x-charts": "7.6.1", + "@mui/x-data-grid-premium": "7.6.1", + "@mui/x-date-pickers": "7.6.1", + "@mui/x-license": "7.6.1", + "@tanstack/react-query": "5.40.0", "@toolpad/studio-runtime": "workspace:*", "@toolpad/utils": "workspace:*", "dayjs": "1.11.11", diff --git a/packages/toolpad-studio-runtime/package.json b/packages/toolpad-studio-runtime/package.json index 4e94cdf2c37..1a419ae6a56 100644 --- a/packages/toolpad-studio-runtime/package.json +++ b/packages/toolpad-studio-runtime/package.json @@ -44,7 +44,7 @@ "dependencies": { "@auth/core": "0.31.0", "@mui/material": "5.15.19", - "@tanstack/react-query": "5.39.0", + "@tanstack/react-query": "5.40.0", "@toolpad/utils": "workspace:*", "@types/json-schema": "7.0.15", "@webcontainer/env": "1.1.1", diff --git a/packages/toolpad-studio/package.json b/packages/toolpad-studio/package.json index 08f25098d64..f24403973f6 100644 --- a/packages/toolpad-studio/package.json +++ b/packages/toolpad-studio/package.json @@ -69,14 +69,14 @@ "@mui/system": "5.15.15", "@mui/types": "7.2.14", "@mui/utils": "5.15.14", - "@mui/x-charts": "7.5.1", - "@mui/x-data-grid": "7.5.1", - "@mui/x-data-grid-premium": "7.5.1", - "@mui/x-date-pickers": "7.5.1", - "@mui/x-date-pickers-pro": "7.5.1", - "@mui/x-tree-view": "7.5.1", - "@tanstack/react-query": "5.39.0", - "@tanstack/react-query-devtools": "5.39.0", + "@mui/x-charts": "7.6.1", + "@mui/x-data-grid": "7.6.1", + "@mui/x-data-grid-premium": "7.6.1", + "@mui/x-date-pickers": "7.6.1", + "@mui/x-date-pickers-pro": "7.6.1", + "@mui/x-tree-view": "7.6.1", + "@tanstack/react-query": "5.40.0", + "@tanstack/react-query-devtools": "5.40.0", "@toolpad/studio-components": "workspace:*", "@toolpad/studio-runtime": "workspace:*", "@toolpad/utils": "workspace:*", @@ -138,7 +138,7 @@ "serialize-javascript": "6.0.2", "superjson": "2.0.0", "typescript": "5.4.5", - "vite": "5.2.11", + "vite": "5.2.12", "vm-browserify": "1.1.2", "whatwg-url": "14.0.0", "ws": "8.17.0", diff --git a/packages/toolpad-studio/src/components/MonacoEditor.tsx b/packages/toolpad-studio/src/components/MonacoEditor.tsx index d701db57bfe..497ff14789a 100644 --- a/packages/toolpad-studio/src/components/MonacoEditor.tsx +++ b/packages/toolpad-studio/src/components/MonacoEditor.tsx @@ -418,24 +418,20 @@ export default React.forwardRef(function }; }, []); - React.useImperativeHandle( - ref, - () => { - return { - get editor() { - const editor = instanceRef.current; - if (!editor) { - throw new Error('Editor not created yet'); - } - return editor; - }, - get monaco() { - return monaco; - }, - }; - }, - [], - ); + React.useImperativeHandle(ref, () => { + return { + get editor() { + const editor = instanceRef.current; + if (!editor) { + throw new Error('Editor not created yet'); + } + return editor; + }, + get monaco() { + return monaco; + }, + }; + }, []); return ( diff --git a/packages/toolpad-studio/src/toolpad/AppEditor/PageEditor/RenderPanel/OverlayGrid.tsx b/packages/toolpad-studio/src/toolpad/AppEditor/PageEditor/RenderPanel/OverlayGrid.tsx index 875b0be1196..8a66ae11d2f 100644 --- a/packages/toolpad-studio/src/toolpad/AppEditor/PageEditor/RenderPanel/OverlayGrid.tsx +++ b/packages/toolpad-studio/src/toolpad/AppEditor/PageEditor/RenderPanel/OverlayGrid.tsx @@ -45,37 +45,33 @@ export const OverlayGrid = React.forwardRef( const appTheme = React.useMemo(() => createToolpadAppTheme(dom), [dom]); - React.useImperativeHandle( - forwardedRef, - () => { - const gridElement = gridRef.current; - invariant(gridElement, 'Overlay grid ref not bound'); + React.useImperativeHandle(forwardedRef, () => { + const gridElement = gridRef.current; + invariant(gridElement, 'Overlay grid ref not bound'); - let columnEdges: number[] = []; - const gridColumnContainers = Array.from(gridElement.children); - const gridColumnEdges = gridColumnContainers.map((container: Element) => { - const containerRect = container.firstElementChild?.getBoundingClientRect(); - return containerRect - ? [Math.round(containerRect.x), Math.round(containerRect.x + containerRect.width)] - : []; - }); - columnEdges = gridColumnEdges.flat(); + let columnEdges: number[] = []; + const gridColumnContainers = Array.from(gridElement.children); + const gridColumnEdges = gridColumnContainers.map((container: Element) => { + const containerRect = container.firstElementChild?.getBoundingClientRect(); + return containerRect + ? [Math.round(containerRect.x), Math.round(containerRect.x + containerRect.width)] + : []; + }); + columnEdges = gridColumnEdges.flat(); - return { - gridElement: gridRef.current, - getMinColumnWidth() { - return columnEdges[1] - columnEdges[0]; - }, - getLeftColumnEdges() { - return columnEdges.filter((column, index) => index % 2 === 0); - }, - getRightColumnEdges() { - return columnEdges.filter((column, index) => index % 2 === 1); - }, - }; - }, - [], - ); + return { + gridElement: gridRef.current, + getMinColumnWidth() { + return columnEdges[1] - columnEdges[0]; + }, + getLeftColumnEdges() { + return columnEdges.filter((column, index) => index % 2 === 0); + }, + getRightColumnEdges() { + return columnEdges.filter((column, index) => index % 2 === 1); + }, + }; + }, []); const pageChildrenSlotRect = pageNode?.slots?.children?.rect; diff --git a/packages/toolpad-utils/src/describeConformance.ts b/packages/toolpad-utils/src/describeConformance.ts new file mode 100644 index 00000000000..879284beda4 --- /dev/null +++ b/packages/toolpad-utils/src/describeConformance.ts @@ -0,0 +1,14 @@ +import * as React from 'react'; + +export interface ConformanceOptions { + refInstanceof: unknown; + inheritComponent?: React.ElementType; + skip?: Array<'themeDefaultProps'>; +} + +export default function describeConformance( + minimalElement: React.ReactElement, + getOptions: () => ConformanceOptions, +) { + getOptions(); +} diff --git a/playground/toolpad-core-nextjs/package.json b/playground/toolpad-core-nextjs/package.json index ffd2e38e1d7..534cf8c478b 100644 --- a/playground/toolpad-core-nextjs/package.json +++ b/playground/toolpad-core-nextjs/package.json @@ -15,7 +15,7 @@ "@toolpad/core": "workspace:*", "@types/react": "18.3.1", "@types/react-dom": "18.3.0", - "eslint-config-next": "14.1.3", + "eslint-config-next": "14.2.3", "next": "14.2.3", "react": "18.2.0", "react-dom": "18.2.0" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 60564d24892..63725945692 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -27,8 +27,8 @@ importers: specifier: 1.0.0-beta.5 version: 1.0.0-beta.5(eslint-plugin-import@2.29.1)(eslint@8.57.0) eslint-plugin-react-compiler: - specifier: 0.0.0-experimental-c8b3f72-20240517 - version: 0.0.0-experimental-c8b3f72-20240517(eslint@8.57.0) + specifier: 0.0.0 + version: 0.0.0 inquirer: specifier: 9.2.22 version: 9.2.22 @@ -49,7 +49,7 @@ importers: version: 4.11.0 vitest: specifier: 1.6.0 - version: 1.6.0(@types/node@20.12.8)(jsdom@24.0.0) + version: 1.6.0(@types/node@20.12.8)(jsdom@24.1.0) yargs: specifier: 17.7.2 version: 17.7.2 @@ -100,8 +100,8 @@ importers: specifier: github:mui/material-ui#a3fdc9f9682b57a6059792634863e39f322cef8d version: github.com/mui/material-ui/a3fdc9f9682b57a6059792634863e39f322cef8d(@opentelemetry/api@1.8.0) '@mui/x-charts': - specifier: 7.5.1 - version: 7.5.1(@mui/material@5.15.19)(react-dom@18.2.0)(react@18.2.0) + specifier: 7.6.1 + version: 7.6.1(@mui/material@5.15.19)(react-dom@18.2.0)(react@18.2.0) '@next/eslint-plugin-next': specifier: 14.2.3 version: 14.2.3 @@ -130,11 +130,11 @@ importers: specifier: 17.0.32 version: 17.0.32 '@typescript-eslint/eslint-plugin': - specifier: 7.10.0 - version: 7.10.0(@typescript-eslint/parser@7.10.0)(eslint@8.57.0)(typescript@5.4.5) + specifier: 7.11.0 + version: 7.11.0(@typescript-eslint/parser@7.11.0)(eslint@8.57.0)(typescript@5.4.5) '@typescript-eslint/parser': - specifier: 7.10.0 - version: 7.10.0(eslint@8.57.0)(typescript@5.4.5) + specifier: 7.11.0 + version: 7.11.0(eslint@8.57.0)(typescript@5.4.5) babel-plugin-react-remove-properties: specifier: 0.3.0 version: 0.3.0 @@ -152,10 +152,10 @@ importers: version: 8.57.0 eslint-config-airbnb: specifier: 19.0.4 - version: 19.0.4(eslint-plugin-import@2.29.1)(eslint-plugin-jsx-a11y@6.8.0)(eslint-plugin-react-hooks@4.6.2)(eslint-plugin-react@7.34.1)(eslint@8.57.0) + version: 19.0.4(eslint-plugin-import@2.29.1)(eslint-plugin-jsx-a11y@6.8.0)(eslint-plugin-react-hooks@4.6.2)(eslint-plugin-react@7.34.2)(eslint@8.57.0) eslint-config-airbnb-typescript: specifier: 18.0.0 - version: 18.0.0(@typescript-eslint/eslint-plugin@7.10.0)(@typescript-eslint/parser@7.10.0)(eslint-plugin-import@2.29.1)(eslint@8.57.0) + version: 18.0.0(@typescript-eslint/eslint-plugin@7.11.0)(@typescript-eslint/parser@7.11.0)(eslint-plugin-import@2.29.1)(eslint@8.57.0) eslint-config-prettier: specifier: 9.1.0 version: 9.1.0(eslint@8.57.0) @@ -167,7 +167,7 @@ importers: version: 1.3.2(eslint@8.57.0) eslint-plugin-import: specifier: 2.29.1 - version: 2.29.1(@typescript-eslint/parser@7.10.0)(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0) + version: 2.29.1(@typescript-eslint/parser@7.11.0)(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0) eslint-plugin-jsx-a11y: specifier: 6.8.0 version: 6.8.0(eslint@8.57.0) @@ -178,8 +178,8 @@ importers: specifier: 10.4.3 version: 10.4.3(eslint@8.57.0) eslint-plugin-react: - specifier: 7.34.1 - version: 7.34.1(eslint@8.57.0) + specifier: 7.34.2 + version: 7.34.2(eslint@8.57.0) eslint-plugin-react-hooks: specifier: 4.6.2 version: 4.6.2(eslint@8.57.0) @@ -202,8 +202,8 @@ importers: specifier: 14.0.1 version: 14.0.1 jsdom: - specifier: 24.0.0 - version: 24.0.0 + specifier: 24.1.0 + version: 24.1.0 lerna: specifier: 7.4.2 version: 7.4.2 @@ -211,11 +211,11 @@ importers: specifier: 0.13.0 version: 0.13.0 prettier: - specifier: 3.2.5 - version: 3.2.5 + specifier: 3.3.0 + version: 3.3.0 pretty-quick: specifier: 4.0.0 - version: 4.0.0(prettier@3.2.5) + version: 4.0.0(prettier@3.3.0) react-docgen: specifier: 5.4.3 version: 5.4.3 @@ -245,7 +245,7 @@ importers: version: 0.1.1(vitest@1.6.0) vitest-fail-on-console: specifier: 0.7.0 - version: 0.7.0(vite@5.2.11)(vitest@1.6.0) + version: 0.7.0(vite@5.2.12)(vitest@1.6.0) docs: dependencies: @@ -260,7 +260,7 @@ importers: version: 3.0.0(date-fns-jalali@2.29.3-0) '@docsearch/react': specifier: 3.6.0 - version: 3.6.0(@algolia/client-search@4.23.3)(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0) + version: 3.6.0(@algolia/client-search@4.23.3)(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.14.0) '@emotion/cache': specifier: 11.11.0 version: 11.11.0 @@ -304,8 +304,8 @@ importers: specifier: 5.15.14 version: 5.15.14(@types/react@18.3.1)(react@18.2.0) '@mui/x-license': - specifier: 7.2.1 - version: 7.2.1(@types/react@18.3.1)(react@18.2.0) + specifier: 7.6.1 + version: 7.6.1(@types/react@18.3.1)(react@18.2.0) '@toolpad/core': specifier: workspace:* version: link:../packages/toolpad-core @@ -556,20 +556,23 @@ importers: specifier: 8.56.10 version: 8.56.10 '@typescript-eslint/parser': - specifier: 7.10.0 - version: 7.10.0(eslint@8.57.0)(typescript@5.4.5) + specifier: 7.11.0 + version: 7.11.0(eslint@8.57.0)(typescript@5.4.5) packages/toolpad-core: dependencies: '@mui/lab': specifier: 5.0.0-alpha.170 version: 5.0.0-alpha.170(@mui/material@5.15.19)(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0) + '@mui/x-charts': + specifier: 7.6.1 + version: 7.6.1(@mui/material@5.15.19)(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0) '@mui/x-data-grid': - specifier: 7.5.1 - version: 7.5.1(@mui/material@5.15.19)(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0) + specifier: 7.6.1 + version: 7.6.1(@mui/material@5.15.19)(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0) '@tanstack/react-query': - specifier: 5.36.0 - version: 5.36.0(react@18.2.0) + specifier: 5.40.0 + version: 5.40.0(react@18.2.0) '@toolpad/utils': specifier: workspace:* version: link:../toolpad-utils @@ -604,6 +607,12 @@ importers: '@types/react-dom': specifier: 18.3.0 version: 18.3.0 + '@types/sinon': + specifier: ^17.0.3 + version: 17.0.3 + sinon: + specifier: ^18.0.0 + version: 18.0.0 packages/toolpad-studio: dependencies: @@ -647,29 +656,29 @@ importers: specifier: 5.15.14 version: 5.15.14(@types/react@18.3.1)(react@18.2.0) '@mui/x-charts': - specifier: 7.5.1 - version: 7.5.1(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@5.15.19)(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0) + specifier: 7.6.1 + version: 7.6.1(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@5.15.19)(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0) '@mui/x-data-grid': - specifier: 7.5.1 - version: 7.5.1(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@5.15.19)(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0) + specifier: 7.6.1 + version: 7.6.1(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@5.15.19)(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0) '@mui/x-data-grid-premium': - specifier: 7.5.1 - version: 7.5.1(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@5.15.19)(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0) + specifier: 7.6.1 + version: 7.6.1(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@5.15.19)(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0) '@mui/x-date-pickers': - specifier: 7.5.1 - version: 7.5.1(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@5.15.19)(@types/react@18.3.1)(dayjs@1.11.11)(react-dom@18.2.0)(react@18.2.0) + specifier: 7.6.1 + version: 7.6.1(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@5.15.19)(@types/react@18.3.1)(dayjs@1.11.11)(react-dom@18.2.0)(react@18.2.0) '@mui/x-date-pickers-pro': - specifier: 7.5.1 - version: 7.5.1(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@5.15.19)(@types/react@18.3.1)(dayjs@1.11.11)(react-dom@18.2.0)(react@18.2.0) + specifier: 7.6.1 + version: 7.6.1(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@5.15.19)(@types/react@18.3.1)(dayjs@1.11.11)(react-dom@18.2.0)(react@18.2.0) '@mui/x-tree-view': - specifier: 7.5.1 - version: 7.5.1(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@5.15.19)(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0) + specifier: 7.6.1 + version: 7.6.1(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@5.15.19)(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0) '@tanstack/react-query': - specifier: 5.39.0 - version: 5.39.0(react@18.2.0) + specifier: 5.40.0 + version: 5.40.0(react@18.2.0) '@tanstack/react-query-devtools': - specifier: 5.39.0 - version: 5.39.0(@tanstack/react-query@5.39.0)(react@18.2.0) + specifier: 5.40.0 + version: 5.40.0(@tanstack/react-query@5.40.0)(react@18.2.0) '@toolpad/studio-components': specifier: workspace:* version: link:../toolpad-studio-components @@ -693,7 +702,7 @@ importers: version: 9.0.15 '@vitejs/plugin-react': specifier: 4.3.0 - version: 4.3.0(vite@5.2.11) + version: 4.3.0(vite@5.2.12) '@webcontainer/env': specifier: 1.1.1 version: 1.1.1 @@ -750,7 +759,7 @@ importers: version: 10.4.1 google-auth-library: specifier: '*' - version: 9.9.0 + version: 9.10.0 http-proxy-middleware: specifier: 3.0.0 version: 3.0.0 @@ -854,8 +863,8 @@ importers: specifier: 5.4.5 version: 5.4.5 vite: - specifier: 5.2.11 - version: 5.2.11(@types/node@20.12.11) + specifier: 5.2.12 + version: 5.2.12(@types/node@20.12.11) vm-browserify: specifier: 1.1.2 version: 1.1.2 @@ -946,7 +955,7 @@ importers: version: 9.1.0(eslint@8.57.0) eslint-plugin-import: specifier: 2.29.1 - version: 2.29.1(@typescript-eslint/parser@7.10.0)(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0) + version: 2.29.1(@typescript-eslint/parser@7.11.0)(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0) formidable: specifier: 3.5.1 version: 3.5.1 @@ -969,20 +978,20 @@ importers: specifier: 5.15.19 version: 5.15.19(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0) '@mui/x-charts': - specifier: 7.5.1 - version: 7.5.1(@mui/material@5.15.19)(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0) + specifier: 7.6.1 + version: 7.6.1(@mui/material@5.15.19)(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0) '@mui/x-data-grid-premium': - specifier: 7.5.1 - version: 7.5.1(@mui/material@5.15.19)(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0) + specifier: 7.6.1 + version: 7.6.1(@mui/material@5.15.19)(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0) '@mui/x-date-pickers': - specifier: 7.5.1 - version: 7.5.1(@mui/material@5.15.19)(@types/react@18.3.1)(dayjs@1.11.11)(react-dom@18.2.0)(react@18.2.0) + specifier: 7.6.1 + version: 7.6.1(@mui/material@5.15.19)(@types/react@18.3.1)(dayjs@1.11.11)(react-dom@18.2.0)(react@18.2.0) '@mui/x-license': - specifier: 7.2.1 - version: 7.2.1(@types/react@18.3.1)(react@18.2.0) + specifier: 7.6.1 + version: 7.6.1(@types/react@18.3.1)(react@18.2.0) '@tanstack/react-query': - specifier: 5.39.0 - version: 5.39.0(react@18.2.0) + specifier: 5.40.0 + version: 5.40.0(react@18.2.0) '@toolpad/studio-runtime': specifier: workspace:* version: link:../toolpad-studio-runtime @@ -1024,8 +1033,8 @@ importers: specifier: 5.15.19 version: 5.15.19(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0) '@tanstack/react-query': - specifier: 5.39.0 - version: 5.39.0(react@18.2.0) + specifier: 5.40.0 + version: 5.40.0(react@18.2.0) '@toolpad/utils': specifier: workspace:* version: link:../toolpad-utils @@ -1143,8 +1152,8 @@ importers: specifier: 18.3.0 version: 18.3.0 eslint-config-next: - specifier: 14.1.3 - version: 14.1.3(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0)(typescript@5.4.5) + specifier: 14.2.3 + version: 14.2.3(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0)(typescript@5.4.5) next: specifier: 14.2.3 version: 14.2.3(@babel/core@7.24.6)(@opentelemetry/api@1.8.0)(@playwright/test@1.43.1)(react-dom@18.2.0)(react@18.2.0) @@ -1187,10 +1196,10 @@ importers: packages: - /@algolia/autocomplete-core@1.9.3(@algolia/client-search@4.23.3)(algoliasearch@4.23.3)(search-insights@2.13.0): + /@algolia/autocomplete-core@1.9.3(@algolia/client-search@4.23.3)(algoliasearch@4.23.3)(search-insights@2.14.0): resolution: {integrity: sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==} dependencies: - '@algolia/autocomplete-plugin-algolia-insights': 1.9.3(@algolia/client-search@4.23.3)(algoliasearch@4.23.3)(search-insights@2.13.0) + '@algolia/autocomplete-plugin-algolia-insights': 1.9.3(@algolia/client-search@4.23.3)(algoliasearch@4.23.3)(search-insights@2.14.0) '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.23.3)(algoliasearch@4.23.3) transitivePeerDependencies: - '@algolia/client-search' @@ -1198,13 +1207,13 @@ packages: - search-insights dev: false - /@algolia/autocomplete-plugin-algolia-insights@1.9.3(@algolia/client-search@4.23.3)(algoliasearch@4.23.3)(search-insights@2.13.0): + /@algolia/autocomplete-plugin-algolia-insights@1.9.3(@algolia/client-search@4.23.3)(algoliasearch@4.23.3)(search-insights@2.14.0): resolution: {integrity: sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg==} peerDependencies: search-insights: '>= 1 < 3' dependencies: '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.23.3)(algoliasearch@4.23.3) - search-insights: 2.13.0 + search-insights: 2.14.0 transitivePeerDependencies: - '@algolia/client-search' - algoliasearch @@ -1349,9 +1358,9 @@ packages: engines: {node: '>=16.0.0'} dependencies: '@argos-ci/util': 1.2.1 - axios: 1.6.8(debug@4.3.4) + axios: 1.7.2(debug@4.3.5) convict: 6.2.4 - debug: 4.3.4 + debug: 4.3.5 fast-glob: 3.3.2 sharp: 0.32.6 tmp: 0.2.3 @@ -1381,7 +1390,7 @@ packages: '@panva/hkdf': 1.1.1 '@types/cookie': 0.6.0 cookie: 0.6.0 - jose: 5.2.4 + jose: 5.3.0 oauth4webapi: 2.10.4 preact: 10.11.3 preact-render-to-string: 5.2.3(preact@10.11.3) @@ -1412,7 +1421,7 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/highlight': 7.24.6 - picocolors: 1.0.0 + picocolors: 1.0.1 /@babel/compat-data@7.24.6: resolution: {integrity: sha512-aC2DGhBq5eEdyXWqrDInSqQjO0k8xtPRf5YylULqx8MCd6jBtzqfta/3ETMRpuKIc5hyswfO80ObyA1MvkCcUQ==} @@ -1433,7 +1442,7 @@ packages: '@babel/traverse': 7.24.6 '@babel/types': 7.24.6 convert-source-map: 2.0.0 - debug: 4.3.4 + debug: 4.3.5 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -1454,6 +1463,7 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.24.6 + dev: true /@babel/helper-builder-binary-assignment-operator-visitor@7.24.6: resolution: {integrity: sha512-+wnfqc5uHiMYtvRX7qu80Toef8BXeh4HHR1SPeonGb1SKPniNEd4a/nlaJJMv/OIEYvIVavvo0yR7u10Gqz0Iw==} @@ -1488,6 +1498,7 @@ packages: '@babel/helper-skip-transparent-expression-wrappers': 7.24.6 '@babel/helper-split-export-declaration': 7.24.6 semver: 6.3.1 + dev: true /@babel/helper-create-regexp-features-plugin@7.24.6(@babel/core@7.24.6): resolution: {integrity: sha512-C875lFBIWWwyv6MHZUG9HmRrlTDgOsLWZfYR0nW69gaKJNe0/Mpxx5r0EID2ZdHQkdUmQo2t0uNckTL08/1BgA==} @@ -1509,7 +1520,7 @@ packages: '@babel/core': 7.24.6 '@babel/helper-compilation-targets': 7.24.6 '@babel/helper-plugin-utils': 7.24.6 - debug: 4.3.4 + debug: 4.3.5 lodash.debounce: 4.0.8 resolve: 1.22.8 transitivePeerDependencies: @@ -1538,6 +1549,7 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.24.6 + dev: true /@babel/helper-module-imports@7.24.6: resolution: {integrity: sha512-a26dmxFJBF62rRO9mmpgrfTLsAuyHk4e1hKTUkD/fcMfynt8gvEKwQPQDVxWhca8dHoDck+55DFt42zV0QMw5g==} @@ -1563,6 +1575,7 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.24.6 + dev: true /@babel/helper-plugin-utils@7.24.6: resolution: {integrity: sha512-MZG/JcWfxybKwsA9N9PmtF2lOSFSEMVCpIRrbxccZFLJPrJciJdG/UhSh5W96GEteJI2ARqm5UAHxISwRDLSNg==} @@ -1590,6 +1603,7 @@ packages: '@babel/helper-environment-visitor': 7.24.6 '@babel/helper-member-expression-to-functions': 7.24.6 '@babel/helper-optimise-call-expression': 7.24.6 + dev: true /@babel/helper-simple-access@7.24.6: resolution: {integrity: sha512-nZzcMMD4ZhmB35MOOzQuiGO5RzL6tJbsT37Zx8M5L/i9KSrukGXWTjLe1knIbb/RmxoJE9GON9soq0c0VEMM5g==} @@ -1602,6 +1616,7 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.24.6 + dev: true /@babel/helper-split-export-declaration@7.24.6: resolution: {integrity: sha512-CvLSkwXGWnYlF9+J3iZUvwgAxKiYzK3BWuo+mLzD/MDGOZDj7Gq8+hqaOkMxmJwmlv0iu86uH5fdADd9Hxkymw==} @@ -1644,7 +1659,7 @@ packages: '@babel/helper-validator-identifier': 7.24.6 chalk: 2.4.2 js-tokens: 4.0.0 - picocolors: 1.0.0 + picocolors: 1.0.1 /@babel/node@7.24.6(@babel/core@7.24.6): resolution: {integrity: sha512-63bD/Kbh1Vl6HapTZLSsyaGlQhhpF1/GpyS1oJotroJKoamOgKKEEKk3iHZAkicjcr+n4V4zdB0V+8siv6AZ5Q==} @@ -1656,7 +1671,7 @@ packages: '@babel/core': 7.24.6 '@babel/register': 7.24.6(@babel/core@7.24.6) commander: 6.2.1 - core-js: 3.37.0 + core-js: 3.37.1 node-environment-flags: 1.0.6 regenerator-runtime: 0.14.1 v8flags: 3.2.0 @@ -1713,18 +1728,6 @@ packages: '@babel/helper-plugin-utils': 7.24.6 dev: true - /@babel/plugin-proposal-private-methods@7.18.6(@babel/core@7.24.6): - resolution: {integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-methods instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-create-class-features-plugin': 7.24.6(@babel/core@7.24.6) - '@babel/helper-plugin-utils': 7.24.6 - dev: false - /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.6): resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} engines: {node: '>=6.9.0'} @@ -2379,8 +2382,8 @@ packages: '@babel/plugin-transform-react-jsx': 7.24.6(@babel/core@7.24.6) dev: true - /@babel/plugin-transform-react-jsx-self@7.24.5(@babel/core@7.24.6): - resolution: {integrity: sha512-RtCJoUO2oYrYwFPtR1/jkoBEcFuI1ae9a9IMxeyAVa3a1Ap4AnxmyIKG2b2FaJKqkidw/0cxRbWN+HOs6ZWd1w==} + /@babel/plugin-transform-react-jsx-self@7.24.6(@babel/core@7.24.6): + resolution: {integrity: sha512-FfZfHXtQ5jYPQsCRyLpOv2GeLIIJhs8aydpNh39vRDjhD411XcfWDni5i7OjP/Rs8GAtTn7sWFFELJSHqkIxYg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -2389,8 +2392,8 @@ packages: '@babel/helper-plugin-utils': 7.24.6 dev: false - /@babel/plugin-transform-react-jsx-source@7.24.1(@babel/core@7.24.6): - resolution: {integrity: sha512-1v202n7aUq4uXAieRTKcwPzNyphlCuqHHDcdSNc+vdhoTEZcFMh+L5yZuCmGaIO7bs1nJUNfHB89TZyoL48xNA==} + /@babel/plugin-transform-react-jsx-source@7.24.6(@babel/core@7.24.6): + resolution: {integrity: sha512-BQTBCXmFRreU3oTUXcGKuPOfXAGb1liNY4AvvFKsOBAJ89RKcTsIrSsnMYkj59fNa66OFKnSa4AJZfy5Y4B9WA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -2655,7 +2658,7 @@ packages: babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.24.6) babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.24.6) babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.24.6) - core-js-compat: 3.37.0 + core-js-compat: 3.37.1 semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -2727,8 +2730,8 @@ packages: regenerator-runtime: 0.14.1 dev: false - /@babel/runtime@7.24.5: - resolution: {integrity: sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g==} + /@babel/runtime@7.24.6: + resolution: {integrity: sha512-Ja18XcETdEl5mzzACGd+DKgaGJzPTCow7EglgwTmHdwokzDFYh/MHua6lU6DV/hjF2IaOJ4oX2nqnjG7RElKOw==} engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.14.1 @@ -2753,7 +2756,7 @@ packages: '@babel/helper-split-export-declaration': 7.24.6 '@babel/parser': 7.24.6 '@babel/types': 7.24.6 - debug: 4.3.4 + debug: 4.3.5 globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -2795,7 +2798,7 @@ packages: resolution: {integrity: sha512-+sbxb71sWre+PwDK7X2T8+bhS6clcVMLwBPznX45Qu6opJcgRjAp7gYSDzVFp187J+feSj5dNBN1mJoi6ckkUQ==} dev: false - /@docsearch/react@3.6.0(@algolia/client-search@4.23.3)(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0): + /@docsearch/react@3.6.0(@algolia/client-search@4.23.3)(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.14.0): resolution: {integrity: sha512-HUFut4ztcVNmqy9gp/wxNbC7pTOHhgVVkHVGCACTuLhUKUhKAF9KYHJtMiLUJxEqiFLQiuri1fWF8zqwM/cu1w==} peerDependencies: '@types/react': '>= 16.8.0 < 19.0.0' @@ -2812,14 +2815,14 @@ packages: search-insights: optional: true dependencies: - '@algolia/autocomplete-core': 1.9.3(@algolia/client-search@4.23.3)(algoliasearch@4.23.3)(search-insights@2.13.0) + '@algolia/autocomplete-core': 1.9.3(@algolia/client-search@4.23.3)(algoliasearch@4.23.3)(search-insights@2.14.0) '@algolia/autocomplete-preset-algolia': 1.9.3(@algolia/client-search@4.23.3)(algoliasearch@4.23.3) '@docsearch/css': 3.6.0 '@types/react': 18.3.1 algoliasearch: 4.23.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - search-insights: 2.13.0 + search-insights: 2.14.0 transitivePeerDependencies: - '@algolia/client-search' dev: false @@ -2828,7 +2831,7 @@ packages: resolution: {integrity: sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==} dependencies: '@babel/helper-module-imports': 7.24.6 - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.6 '@emotion/hash': 0.9.1 '@emotion/memoize': 0.8.1 '@emotion/serialize': 1.1.4 @@ -2874,7 +2877,7 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.6 '@emotion/babel-plugin': 11.11.0 '@emotion/cache': 11.11.0 '@emotion/serialize': 1.1.4 @@ -2921,7 +2924,7 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.6 '@emotion/babel-plugin': 11.11.0 '@emotion/is-prop-valid': 1.2.2 '@emotion/react': 11.11.4(@types/react@18.3.1)(react@18.2.0) @@ -3517,7 +3520,7 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 - debug: 4.3.4 + debug: 4.3.5 espree: 9.6.1 globals: 13.24.0 ignore: 5.3.1 @@ -3555,24 +3558,24 @@ packages: lodash.uniq: 4.5.0 dev: false - /@floating-ui/core@1.6.1: - resolution: {integrity: sha512-42UH54oPZHPdRHdw6BgoBD6cg/eVTmVrFcgeRDM3jbO7uxSoipVcmcIGFcA5jmOHO5apcyvBhkSKES3fQJnu7A==} + /@floating-ui/core@1.6.2: + resolution: {integrity: sha512-+2XpQV9LLZeanU4ZevzRnGFg2neDeKHgFLjP6YLW+tly0IvrhqT4u8enLGjLH3qeh85g19xY5rsAusfwTdn5lg==} dependencies: '@floating-ui/utils': 0.2.2 - /@floating-ui/dom@1.6.4: - resolution: {integrity: sha512-0G8R+zOvQsAG1pg2Q99P21jiqxqGBW1iRe/iXHsBRBxnpXKFI8QwbB4x5KmYLggNO5m34IQgOIu9SCRfR/WWiQ==} + /@floating-ui/dom@1.6.5: + resolution: {integrity: sha512-Nsdud2X65Dz+1RHjAIP0t8z5e2ff/IRbei6BqFrl1urT8sDVzM1HMQ+R0XcU5ceRfyO3I6ayeqIfh+6Wb8LGTw==} dependencies: - '@floating-ui/core': 1.6.1 + '@floating-ui/core': 1.6.2 '@floating-ui/utils': 0.2.2 - /@floating-ui/react-dom@2.0.9(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-q0umO0+LQK4+p6aGyvzASqKbKOJcAHJ7ycE9CuUvfx3s9zTHWmGJTPOIlM/hmSBfUfg/XfY5YhLBLR/LHwShQQ==} + /@floating-ui/react-dom@2.1.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-lNzj5EQmEKn5FFKc04+zasr09h/uX8RtJRNj5gUXsSQIXHVWTVh+hVAg1vOMCexkX8EgvemMvIFpQfkosnVNyA==} peerDependencies: react: '>=16.8.0' react-dom: '>=16.8.0' dependencies: - '@floating-ui/dom': 1.6.4 + '@floating-ui/dom': 1.6.5 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -3618,7 +3621,7 @@ packages: engines: {node: '>=10.10.0'} dependencies: '@humanwhocodes/object-schema': 2.0.3 - debug: 4.3.4 + debug: 4.3.5 minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -3635,8 +3638,8 @@ packages: engines: {node: '>=6.9.0'} dev: true - /@inquirer/figures@1.0.2: - resolution: {integrity: sha512-4F1MBwVr3c/m4bAUef6LgkvBfSjzwH+OfldgHqcuacWwSUetFebM2wi58WfG9uk1rR98U6GwLed4asLJbwdV5w==} + /@inquirer/figures@1.0.3: + resolution: {integrity: sha512-ErXXzENMH5pJt5/ssXV0DfWUZqly8nGzf0UcBV9xTnP+KyffE2mqyxIMBrZ8ijQck2nU0TQm40EQB53YreyWHw==} engines: {node: '>=18'} dev: false @@ -3827,8 +3830,8 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.24.5 - '@floating-ui/react-dom': 2.0.9(react-dom@18.2.0)(react@18.2.0) + '@babel/runtime': 7.24.6 + '@floating-ui/react-dom': 2.1.0(react-dom@18.2.0)(react@18.2.0) '@mui/types': 7.2.14(@types/react@18.3.1) '@mui/utils': 5.15.14(@types/react@18.3.1)(react@18.2.0) '@popperjs/core': 2.11.8 @@ -3849,10 +3852,10 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.24.5 - '@floating-ui/react-dom': 2.0.9(react-dom@18.2.0)(react@18.2.0) + '@babel/runtime': 7.24.6 + '@floating-ui/react-dom': 2.1.0(react-dom@18.2.0)(react@18.2.0) '@mui/types': 7.2.14(@types/react@18.3.1) - '@mui/utils': 6.0.0-alpha.3(@types/react@18.3.1)(react@18.2.0) + '@mui/utils': 6.0.0-dev.20240529-082515-213b5e33ab(@types/react@18.3.1)(react@18.2.0) '@popperjs/core': 2.11.8 '@types/react': 18.3.1 clsx: 2.1.1 @@ -3883,7 +3886,7 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.6 '@mui/base': 5.0.0-beta.40(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0) '@mui/icons-material': 5.15.19(@mui/material@5.15.19)(@types/react@18.3.1)(react@18.2.0) '@mui/internal-markdown': 1.0.4 @@ -3909,7 +3912,7 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.6 '@mui/material': 5.15.19(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0) '@types/react': 18.3.1 react: 18.2.0 @@ -3924,7 +3927,7 @@ packages: /@mui/internal-markdown@1.0.4: resolution: {integrity: sha512-wG9J76LpfknM5g30+xbaRmOYjxIJwt/d5S4qEniohcNp8cQuovPP0c3AhAhPTXsCyIn9xCsrc+qQwDne9kvxFg==} dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.6 lodash: 4.17.21 marked: 5.1.2 prismjs: 1.29.0 @@ -3963,14 +3966,14 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.6 '@emotion/react': 11.11.4(@types/react@18.3.1)(react@18.2.0) '@emotion/styled': 11.11.5(@emotion/react@11.11.4)(@types/react@18.3.1)(react@18.2.0) '@mui/base': 5.0.0-beta.42(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0) '@mui/core-downloads-tracker': 6.0.0-dev.240424162023-9968b4889d '@mui/system': 6.0.0-dev.240424162023-9968b4889d(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.3.1)(react@18.2.0) '@mui/types': 7.2.14(@types/react@18.3.1) - '@mui/utils': 6.0.0-alpha.3(@types/react@18.3.1)(react@18.2.0) + '@mui/utils': 6.0.0-dev.20240529-082515-213b5e33ab(@types/react@18.3.1)(react@18.2.0) '@types/react': 18.3.1 clsx: 2.1.1 prop-types: 15.8.1 @@ -3996,7 +3999,7 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.6 '@emotion/react': 11.11.4(@types/react@18.3.1)(react@18.2.0) '@emotion/styled': 11.11.5(@emotion/react@11.11.4)(@types/react@18.3.1)(react@18.2.0) '@mui/base': 5.0.0-beta.40(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0) @@ -4029,7 +4032,7 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.6 '@mui/base': 5.0.0-beta.40(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0) '@mui/material': 5.15.19(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0) '@mui/system': 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.3.1)(react@18.2.0) @@ -4060,7 +4063,7 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.6 '@emotion/cache': 11.11.0 '@emotion/server': 11.11.0 '@mui/material': 5.15.19(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0) @@ -4086,7 +4089,7 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.6 '@emotion/react': 11.11.4(@types/react@18.3.1)(react@18.2.0) '@emotion/styled': 11.11.5(@emotion/react@11.11.4)(@types/react@18.3.1)(react@18.2.0) '@mui/base': 5.0.0-beta.40(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0) @@ -4121,7 +4124,7 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.6 '@mui/base': 5.0.0-beta.40(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0) '@mui/core-downloads-tracker': 5.15.19 '@mui/system': 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.3.1)(react@18.2.0) @@ -4155,7 +4158,7 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.6 '@mui/base': 5.0.0-beta.40(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0) '@mui/core-downloads-tracker': 5.15.19 '@mui/system': 5.15.15(react@18.2.0) @@ -4181,14 +4184,14 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.6 '@mui/utils': 5.15.14(@types/react@18.3.1)(react@18.2.0) '@types/react': 18.3.1 prop-types: 15.8.1 react: 18.2.0 - /@mui/private-theming@6.0.0-alpha.3(@types/react@18.3.1)(react@18.2.0): - resolution: {integrity: sha512-zRdwVf8RpuM0MEqMveoJ0sV48eMWvutkcY/pt9nX21jXD9kaxOCuQyT6oNrXF7ZlBDOi/NXfKRDgkQfj+kwxDQ==} + /@mui/private-theming@6.0.0-dev.20240529-082515-213b5e33ab(@types/react@18.3.1)(react@18.2.0): + resolution: {integrity: sha512-5AL+3TUSWaW2E9g+wIaD8jXHxFzqDInhNa3kNWJk2ZEqN2yG5msJLFr2BMp5/ev/x6V3AzTIIktkAV6qnlhOig==} engines: {node: '>=12.0.0'} peerDependencies: '@types/react': ^17.0.0 || ^18.0.0 @@ -4197,8 +4200,8 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.24.5 - '@mui/utils': 6.0.0-alpha.3(@types/react@18.3.1)(react@18.2.0) + '@babel/runtime': 7.24.6 + '@mui/utils': 6.0.0-dev.20240529-082515-213b5e33ab(@types/react@18.3.1)(react@18.2.0) '@types/react': 18.3.1 prop-types: 15.8.1 react: 18.2.0 @@ -4217,7 +4220,7 @@ packages: '@emotion/styled': optional: true dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.6 '@emotion/cache': 11.11.0 '@emotion/react': 11.11.4(@types/react@18.3.1)(react@18.2.0) '@emotion/styled': 11.11.5(@emotion/react@11.11.4)(@types/react@18.3.1)(react@18.2.0) @@ -4225,8 +4228,8 @@ packages: prop-types: 15.8.1 react: 18.2.0 - /@mui/styled-engine@6.0.0-alpha.3(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.2.0): - resolution: {integrity: sha512-tQ7xa3mJI6MZJnmm0O/Y+2z4LBSnnvMw0jfEawBSP6vRdN31kiCx8bj/J6asg9uWkCQ7FtNbzq9at7HQlWjGXA==} + /@mui/styled-engine@6.0.0-dev.20240529-082515-213b5e33ab(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.2.0): + resolution: {integrity: sha512-+vpJBmaOPwp5fTjcin/MZ5umeqYAJD4RXxj0Ey+5KBp+j+7aXQBW5ZgehIZtM2eCg/VfUIfiVsB+i3SMFrfdFw==} engines: {node: '>=12.0.0'} peerDependencies: '@emotion/react': ^11.4.1 @@ -4238,7 +4241,7 @@ packages: '@emotion/styled': optional: true dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.6 '@emotion/cache': 11.11.0 '@emotion/react': 11.11.4(@types/react@18.3.1)(react@18.2.0) '@emotion/styled': 11.11.5(@emotion/react@11.11.4)(@types/react@18.3.1)(react@18.2.0) @@ -4257,7 +4260,7 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.6 '@emotion/hash': 0.9.1 '@mui/private-theming': 5.15.14(@types/react@18.3.1)(react@18.2.0) '@mui/types': 7.2.14(@types/react@18.3.1) @@ -4294,7 +4297,7 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.6 '@emotion/react': 11.11.4(@types/react@18.3.1)(react@18.2.0) '@emotion/styled': 11.11.5(@emotion/react@11.11.4)(@types/react@18.3.1)(react@18.2.0) '@mui/private-theming': 5.15.14(@types/react@18.3.1)(react@18.2.0) @@ -4323,7 +4326,7 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.6 '@mui/private-theming': 5.15.14(@types/react@18.3.1)(react@18.2.0) '@mui/styled-engine': 5.15.14(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.2.0) '@mui/types': 7.2.14(@types/react@18.3.1) @@ -4350,13 +4353,13 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.6 '@emotion/react': 11.11.4(@types/react@18.3.1)(react@18.2.0) '@emotion/styled': 11.11.5(@emotion/react@11.11.4)(@types/react@18.3.1)(react@18.2.0) - '@mui/private-theming': 6.0.0-alpha.3(@types/react@18.3.1)(react@18.2.0) - '@mui/styled-engine': 6.0.0-alpha.3(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.2.0) + '@mui/private-theming': 6.0.0-dev.20240529-082515-213b5e33ab(@types/react@18.3.1)(react@18.2.0) + '@mui/styled-engine': 6.0.0-dev.20240529-082515-213b5e33ab(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.2.0) '@mui/types': 7.2.14(@types/react@18.3.1) - '@mui/utils': 6.0.0-alpha.3(@types/react@18.3.1)(react@18.2.0) + '@mui/utils': 6.0.0-dev.20240529-082515-213b5e33ab(@types/react@18.3.1)(react@18.2.0) '@types/react': 18.3.1 clsx: 2.1.1 csstype: 3.1.3 @@ -4384,15 +4387,15 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.6 '@types/prop-types': 15.7.12 '@types/react': 18.3.1 prop-types: 15.8.1 react: 18.2.0 react-is: 18.2.0 - /@mui/utils@6.0.0-alpha.3(@types/react@18.3.1)(react@18.2.0): - resolution: {integrity: sha512-DBuCy0LmpKFBX6KcZpNve8T3oZmbdZABN0ixJIvDRdoxTG86divvx1CcA71YJojZD3FhRWb0d/XxtMAzn4qIvg==} + /@mui/utils@6.0.0-dev.20240529-082515-213b5e33ab(@types/react@18.3.1)(react@18.2.0): + resolution: {integrity: sha512-jyNcB0drDhYcoq5MHNTiEc63GfVE1GZK+CVUd8tlLzk5q631RPYJ5jONSOszLiUOXBmI8Uu1SBJUwrG3j2YG2A==} engines: {node: '>=12.0.0'} peerDependencies: '@types/react': ^17.0.0 || ^18.0.0 @@ -4401,7 +4404,7 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.6 '@types/prop-types': 15.7.12 '@types/react': 18.3.1 prop-types: 15.8.1 @@ -4409,8 +4412,8 @@ packages: react-is: 18.2.0 dev: false - /@mui/x-charts@7.5.1(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@5.15.19)(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-8vMQyJL13cGXMbp+gm2QdABzFuOpP4hxEa/o6nL3ZpVNp7hja6h9F5bc0FNGR8h/eRN+4+swDnrEebnR0w4cbA==} + /@mui/x-charts@7.6.1(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@5.15.19)(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-LuAVQX4lzhmsqk2NRdWCP+aQZ8kRwG7KOy8ulf8hR5NI5J1VsiOtH41J+qgV3uAC6hDMWL7fTgffrRDFTMci/g==} engines: {node: '>=14.0.0'} peerDependencies: '@emotion/react': ^11.9.0 @@ -4424,7 +4427,7 @@ packages: '@emotion/styled': optional: true dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.6 '@emotion/react': 11.11.4(@types/react@18.3.1)(react@18.2.0) '@emotion/styled': 11.11.5(@emotion/react@11.11.4)(@types/react@18.3.1)(react@18.2.0) '@mui/base': 5.0.0-beta.40(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0) @@ -4446,8 +4449,8 @@ packages: - '@types/react' dev: false - /@mui/x-charts@7.5.1(@mui/material@5.15.19)(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-8vMQyJL13cGXMbp+gm2QdABzFuOpP4hxEa/o6nL3ZpVNp7hja6h9F5bc0FNGR8h/eRN+4+swDnrEebnR0w4cbA==} + /@mui/x-charts@7.6.1(@mui/material@5.15.19)(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-LuAVQX4lzhmsqk2NRdWCP+aQZ8kRwG7KOy8ulf8hR5NI5J1VsiOtH41J+qgV3uAC6hDMWL7fTgffrRDFTMci/g==} engines: {node: '>=14.0.0'} peerDependencies: '@emotion/react': ^11.9.0 @@ -4461,7 +4464,7 @@ packages: '@emotion/styled': optional: true dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.6 '@mui/base': 5.0.0-beta.40(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0) '@mui/material': 5.15.19(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0) '@mui/system': 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.3.1)(react@18.2.0) @@ -4481,8 +4484,8 @@ packages: - '@types/react' dev: false - /@mui/x-charts@7.5.1(@mui/material@5.15.19)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-8vMQyJL13cGXMbp+gm2QdABzFuOpP4hxEa/o6nL3ZpVNp7hja6h9F5bc0FNGR8h/eRN+4+swDnrEebnR0w4cbA==} + /@mui/x-charts@7.6.1(@mui/material@5.15.19)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-LuAVQX4lzhmsqk2NRdWCP+aQZ8kRwG7KOy8ulf8hR5NI5J1VsiOtH41J+qgV3uAC6hDMWL7fTgffrRDFTMci/g==} engines: {node: '>=14.0.0'} peerDependencies: '@emotion/react': ^11.9.0 @@ -4496,7 +4499,7 @@ packages: '@emotion/styled': optional: true dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.6 '@mui/base': 5.0.0-beta.40(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0) '@mui/material': 5.15.19(react-dom@18.2.0)(react@18.2.0) '@mui/system': 5.15.15(react@18.2.0) @@ -4516,21 +4519,21 @@ packages: - '@types/react' dev: true - /@mui/x-data-grid-premium@7.5.1(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@5.15.19)(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-aNM4doFIM/0xuAvYs0uoi+JnJsyfGtpB60+KHBxUCGR5vL7/NYlZAhVhzA8r9mfGBqnUUKhVogN5mmqaifa4Wg==} + /@mui/x-data-grid-premium@7.6.1(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@5.15.19)(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-TZqF+W7eV541JjhZPCJf2MppBTKWePs2MF6hVyLtKYJwkVelH5YL963CV0qE7icflhRRjZybP2sBAcwDwjjG+Q==} engines: {node: '>=14.0.0'} peerDependencies: '@mui/material': ^5.15.14 react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.6 '@mui/material': 5.15.19(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0) '@mui/system': 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.3.1)(react@18.2.0) '@mui/utils': 5.15.14(@types/react@18.3.1)(react@18.2.0) - '@mui/x-data-grid': 7.5.1(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@5.15.19)(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0) - '@mui/x-data-grid-pro': 7.5.1(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@5.15.19)(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0) - '@mui/x-license': 7.2.1(@types/react@18.3.1)(react@18.2.0) + '@mui/x-data-grid': 7.6.1(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@5.15.19)(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0) + '@mui/x-data-grid-pro': 7.6.1(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@5.15.19)(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0) + '@mui/x-license': 7.6.1(@types/react@18.3.1)(react@18.2.0) '@types/format-util': 1.0.4 clsx: 2.1.1 exceljs: 4.4.0 @@ -4544,21 +4547,21 @@ packages: - '@types/react' dev: false - /@mui/x-data-grid-premium@7.5.1(@mui/material@5.15.19)(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-aNM4doFIM/0xuAvYs0uoi+JnJsyfGtpB60+KHBxUCGR5vL7/NYlZAhVhzA8r9mfGBqnUUKhVogN5mmqaifa4Wg==} + /@mui/x-data-grid-premium@7.6.1(@mui/material@5.15.19)(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-TZqF+W7eV541JjhZPCJf2MppBTKWePs2MF6hVyLtKYJwkVelH5YL963CV0qE7icflhRRjZybP2sBAcwDwjjG+Q==} engines: {node: '>=14.0.0'} peerDependencies: '@mui/material': ^5.15.14 react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.6 '@mui/material': 5.15.19(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0) '@mui/system': 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.3.1)(react@18.2.0) '@mui/utils': 5.15.14(@types/react@18.3.1)(react@18.2.0) - '@mui/x-data-grid': 7.5.1(@mui/material@5.15.19)(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0) - '@mui/x-data-grid-pro': 7.5.1(@mui/material@5.15.19)(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0) - '@mui/x-license': 7.2.1(@types/react@18.3.1)(react@18.2.0) + '@mui/x-data-grid': 7.6.1(@mui/material@5.15.19)(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0) + '@mui/x-data-grid-pro': 7.6.1(@mui/material@5.15.19)(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0) + '@mui/x-license': 7.6.1(@types/react@18.3.1)(react@18.2.0) '@types/format-util': 1.0.4 clsx: 2.1.1 exceljs: 4.4.0 @@ -4572,20 +4575,20 @@ packages: - '@types/react' dev: false - /@mui/x-data-grid-pro@7.5.1(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@5.15.19)(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-ye2NXr5+Tgu1hLBWnIvudrOWeD91/QTmlCRSkTquZImdL+2Q2p3/IyfV9J36i7aZGiYXu+FVaKwqOQmuLKYmWQ==} + /@mui/x-data-grid-pro@7.6.1(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@5.15.19)(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-HQaggA07J6gMVr1pG5X931Eq8nUc5MUvz/qewIm2yPExd4JgzdxbO1MHbc3mQvLcgeP+Vb6v58Nzc0FnEtCOiQ==} engines: {node: '>=14.0.0'} peerDependencies: '@mui/material': ^5.15.14 react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.6 '@mui/material': 5.15.19(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0) '@mui/system': 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.3.1)(react@18.2.0) '@mui/utils': 5.15.14(@types/react@18.3.1)(react@18.2.0) - '@mui/x-data-grid': 7.5.1(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@5.15.19)(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0) - '@mui/x-license': 7.2.1(@types/react@18.3.1)(react@18.2.0) + '@mui/x-data-grid': 7.6.1(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@5.15.19)(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0) + '@mui/x-license': 7.6.1(@types/react@18.3.1)(react@18.2.0) '@types/format-util': 1.0.4 clsx: 2.1.1 prop-types: 15.8.1 @@ -4598,20 +4601,20 @@ packages: - '@types/react' dev: false - /@mui/x-data-grid-pro@7.5.1(@mui/material@5.15.19)(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-ye2NXr5+Tgu1hLBWnIvudrOWeD91/QTmlCRSkTquZImdL+2Q2p3/IyfV9J36i7aZGiYXu+FVaKwqOQmuLKYmWQ==} + /@mui/x-data-grid-pro@7.6.1(@mui/material@5.15.19)(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-HQaggA07J6gMVr1pG5X931Eq8nUc5MUvz/qewIm2yPExd4JgzdxbO1MHbc3mQvLcgeP+Vb6v58Nzc0FnEtCOiQ==} engines: {node: '>=14.0.0'} peerDependencies: '@mui/material': ^5.15.14 react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.6 '@mui/material': 5.15.19(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0) '@mui/system': 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.3.1)(react@18.2.0) '@mui/utils': 5.15.14(@types/react@18.3.1)(react@18.2.0) - '@mui/x-data-grid': 7.5.1(@mui/material@5.15.19)(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0) - '@mui/x-license': 7.2.1(@types/react@18.3.1)(react@18.2.0) + '@mui/x-data-grid': 7.6.1(@mui/material@5.15.19)(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0) + '@mui/x-license': 7.6.1(@types/react@18.3.1)(react@18.2.0) '@types/format-util': 1.0.4 clsx: 2.1.1 prop-types: 15.8.1 @@ -4624,15 +4627,15 @@ packages: - '@types/react' dev: false - /@mui/x-data-grid@7.5.1(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@5.15.19)(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-5GuHg95UcphQ3O4LftUEFkNPP00YKUDZoSxmsNJ2+o6pwhHH4f8XIuuXEZJCyEMUiVYQk6/iYZwxJL6CpvbNCw==} + /@mui/x-data-grid@7.6.1(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@5.15.19)(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-ZUQqSvmJgNQAgwLqVp/XUgNgKFb3zdsBQTbYCagjAK7Saq3iPDJkTb7FNSyT8UN0G6Kqogxgd9fKJW4L4ku1zQ==} engines: {node: '>=14.0.0'} peerDependencies: '@mui/material': ^5.15.14 react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.6 '@mui/material': 5.15.19(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0) '@mui/system': 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.3.1)(react@18.2.0) '@mui/utils': 5.15.14(@types/react@18.3.1)(react@18.2.0) @@ -4647,15 +4650,15 @@ packages: - '@types/react' dev: false - /@mui/x-data-grid@7.5.1(@mui/material@5.15.19)(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-5GuHg95UcphQ3O4LftUEFkNPP00YKUDZoSxmsNJ2+o6pwhHH4f8XIuuXEZJCyEMUiVYQk6/iYZwxJL6CpvbNCw==} + /@mui/x-data-grid@7.6.1(@mui/material@5.15.19)(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-ZUQqSvmJgNQAgwLqVp/XUgNgKFb3zdsBQTbYCagjAK7Saq3iPDJkTb7FNSyT8UN0G6Kqogxgd9fKJW4L4ku1zQ==} engines: {node: '>=14.0.0'} peerDependencies: '@mui/material': ^5.15.14 react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.6 '@mui/material': 5.15.19(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0) '@mui/system': 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.3.1)(react@18.2.0) '@mui/utils': 5.15.14(@types/react@18.3.1)(react@18.2.0) @@ -4670,8 +4673,8 @@ packages: - '@types/react' dev: false - /@mui/x-date-pickers-pro@7.5.1(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@5.15.19)(@types/react@18.3.1)(dayjs@1.11.11)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-aTBPoPE2CnTNMnE80wKJcypM39n7g6hYrvhOF+u8uVy0/W61w07AZVMNfVklBxi7QehZn+tfgF9NAfJLcwSL7g==} + /@mui/x-date-pickers-pro@7.6.1(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@5.15.19)(@types/react@18.3.1)(dayjs@1.11.11)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-CshbN4ksOWCB7dIr6BvaVso2eih0g4Zz7BgfwVbSA/M3gawM3z9ChPRSQRrQRc/GxfULCbjEL8mFJPo82vfqjQ==} engines: {node: '>=14.0.0'} peerDependencies: '@emotion/react': ^11.9.0 @@ -4706,15 +4709,15 @@ packages: moment-jalaali: optional: true dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.6 '@emotion/react': 11.11.4(@types/react@18.3.1)(react@18.2.0) '@emotion/styled': 11.11.5(@emotion/react@11.11.4)(@types/react@18.3.1)(react@18.2.0) '@mui/base': 5.0.0-beta.40(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0) '@mui/material': 5.15.19(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0) '@mui/system': 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.3.1)(react@18.2.0) '@mui/utils': 5.15.14(@types/react@18.3.1)(react@18.2.0) - '@mui/x-date-pickers': 7.5.1(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@5.15.19)(@types/react@18.3.1)(dayjs@1.11.11)(react-dom@18.2.0)(react@18.2.0) - '@mui/x-license': 7.2.1(@types/react@18.3.1)(react@18.2.0) + '@mui/x-date-pickers': 7.6.1(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@5.15.19)(@types/react@18.3.1)(dayjs@1.11.11)(react-dom@18.2.0)(react@18.2.0) + '@mui/x-license': 7.6.1(@types/react@18.3.1)(react@18.2.0) clsx: 2.1.1 dayjs: 1.11.11 prop-types: 15.8.1 @@ -4725,8 +4728,8 @@ packages: - '@types/react' dev: false - /@mui/x-date-pickers@7.5.1(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@5.15.19)(@types/react@18.3.1)(dayjs@1.11.11)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-O3K2pewxk5u9mK8PG0+xgIOAn+GSBRWHtU0ZbzaqCjS8ZbxNT2OhkI0aXqp/W2ECVwxYaGjwtjl3ypQIdqRvjw==} + /@mui/x-date-pickers@7.6.1(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@5.15.19)(@types/react@18.3.1)(dayjs@1.11.11)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-erSq5cnOUyBgBmpHnMxIit5yhT3bl/lOaNZKpObvJtvEJetvNA9xWQ7dz/J/AufLzDuvThjusuRD0y+GmeXtiw==} engines: {node: '>=14.0.0'} peerDependencies: '@emotion/react': ^11.9.0 @@ -4761,7 +4764,7 @@ packages: moment-jalaali: optional: true dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.6 '@emotion/react': 11.11.4(@types/react@18.3.1)(react@18.2.0) '@emotion/styled': 11.11.5(@emotion/react@11.11.4)(@types/react@18.3.1)(react@18.2.0) '@mui/base': 5.0.0-beta.40(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0) @@ -4779,8 +4782,8 @@ packages: - '@types/react' dev: false - /@mui/x-date-pickers@7.5.1(@mui/material@5.15.19)(@types/react@18.3.1)(dayjs@1.11.11)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-O3K2pewxk5u9mK8PG0+xgIOAn+GSBRWHtU0ZbzaqCjS8ZbxNT2OhkI0aXqp/W2ECVwxYaGjwtjl3ypQIdqRvjw==} + /@mui/x-date-pickers@7.6.1(@mui/material@5.15.19)(@types/react@18.3.1)(dayjs@1.11.11)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-erSq5cnOUyBgBmpHnMxIit5yhT3bl/lOaNZKpObvJtvEJetvNA9xWQ7dz/J/AufLzDuvThjusuRD0y+GmeXtiw==} engines: {node: '>=14.0.0'} peerDependencies: '@emotion/react': ^11.9.0 @@ -4815,7 +4818,7 @@ packages: moment-jalaali: optional: true dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.6 '@mui/base': 5.0.0-beta.40(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0) '@mui/material': 5.15.19(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0) '@mui/system': 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.3.1)(react@18.2.0) @@ -4831,21 +4834,21 @@ packages: - '@types/react' dev: false - /@mui/x-license@7.2.1(@types/react@18.3.1)(react@18.2.0): - resolution: {integrity: sha512-v0ObZw6wWu5GGre/AhASXay3Rw+aKWO0ID8yhjzmQliUfE1AYrNUw5KsiK/gNVE2YPRTYZKhIqCivtkNU+rIGA==} + /@mui/x-license@7.6.1(@types/react@18.3.1)(react@18.2.0): + resolution: {integrity: sha512-tTCrsk6mFCzD+1nLiU9gh/tk4PGABLfV188bi/K2cMBUdXOBv9kUsCqqU/3sL6qVmjFwY/WP0RGwOAGizQNjLQ==} engines: {node: '>=14.0.0'} peerDependencies: react: ^17.0.0 || ^18.0.0 dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.6 '@mui/utils': 5.15.14(@types/react@18.3.1)(react@18.2.0) react: 18.2.0 transitivePeerDependencies: - '@types/react' dev: false - /@mui/x-tree-view@7.5.1(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@5.15.19)(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-b4Lfclg1Lpa+kSs305snl/xFG5yOxq3/oVZEyPIseg8oOfl0r79UKqCIdO2iQqQydjUsUMbLtnR9TFypxlwCbQ==} + /@mui/x-tree-view@7.6.1(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@5.15.19)(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-FR8GUTMG0GgStHj+TDs2UzTln6SeWcGdVj62CAcQGVW61RpVRvPgBhYH3+g0SVtps6FYQxe/pvi83eLwMWW0Fw==} engines: {node: '>=14.0.0'} peerDependencies: '@emotion/react': ^11.9.0 @@ -4854,7 +4857,7 @@ packages: react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.6 '@emotion/react': 11.11.4(@types/react@18.3.1)(react@18.2.0) '@emotion/styled': 11.11.5(@emotion/react@11.11.4)(@types/react@18.3.1)(react@18.2.0) '@mui/base': 5.0.0-beta.40(@types/react@18.3.1)(react-dom@18.2.0)(react@18.2.0) @@ -4903,12 +4906,6 @@ packages: /@next/env@14.2.3: resolution: {integrity: sha512-W7fd7IbkfmeeY2gXrzJYDx8D2lWKbVoTIj1o1ScPHNzvp30s1AuoEFSdr39bC5sjxJaxTtq3OTCZboNp0lNWHA==} - /@next/eslint-plugin-next@14.1.3: - resolution: {integrity: sha512-VCnZI2cy77Yaj3L7Uhs3+44ikMM1VD/fBMwvTBb3hIaTIuqa+DmG4dhUDq+MASu3yx97KhgsVJbsas0XuiKyww==} - dependencies: - glob: 10.3.10 - dev: true - /@next/eslint-plugin-next@14.2.3: resolution: {integrity: sha512-L3oDricIIjgj1AVnRdRor21gI7mShlSwU/1ZGHmqM3LzHhXXhdkrfeNY5zif25Bi5Dd7fiJHsbhoZCHfXYvlAw==} dependencies: @@ -5019,8 +5016,8 @@ packages: semver: 7.6.2 dev: true - /@npmcli/fs@3.1.0: - resolution: {integrity: sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==} + /@npmcli/fs@3.1.1: + resolution: {integrity: sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: semver: 7.6.2 @@ -5047,7 +5044,7 @@ packages: engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} hasBin: true dependencies: - npm-bundled: 3.0.0 + npm-bundled: 3.0.1 npm-normalize-package-bin: 3.0.1 dev: true @@ -5476,7 +5473,7 @@ packages: requiresBuild: true dependencies: node-addon-api: 3.2.1 - node-gyp-build: 4.8.0 + node-gyp-build: 4.8.1 dev: true /@pkgjs/parseargs@0.11.0: @@ -5571,113 +5568,113 @@ packages: engines: {node: '>=14.0.0'} dev: false - /@rollup/rollup-android-arm-eabi@4.17.2: - resolution: {integrity: sha512-NM0jFxY8bB8QLkoKxIQeObCaDlJKewVlIEkuyYKm5An1tdVZ966w2+MPQ2l8LBZLjR+SgyV+nRkTIunzOYBMLQ==} + /@rollup/rollup-android-arm-eabi@4.18.0: + resolution: {integrity: sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==} cpu: [arm] os: [android] requiresBuild: true optional: true - /@rollup/rollup-android-arm64@4.17.2: - resolution: {integrity: sha512-yeX/Usk7daNIVwkq2uGoq2BYJKZY1JfyLTaHO/jaiSwi/lsf8fTFoQW/n6IdAsx5tx+iotu2zCJwz8MxI6D/Bw==} + /@rollup/rollup-android-arm64@4.18.0: + resolution: {integrity: sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==} cpu: [arm64] os: [android] requiresBuild: true optional: true - /@rollup/rollup-darwin-arm64@4.17.2: - resolution: {integrity: sha512-kcMLpE6uCwls023+kknm71ug7MZOrtXo+y5p/tsg6jltpDtgQY1Eq5sGfHcQfb+lfuKwhBmEURDga9N0ol4YPw==} + /@rollup/rollup-darwin-arm64@4.18.0: + resolution: {integrity: sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==} cpu: [arm64] os: [darwin] requiresBuild: true optional: true - /@rollup/rollup-darwin-x64@4.17.2: - resolution: {integrity: sha512-AtKwD0VEx0zWkL0ZjixEkp5tbNLzX+FCqGG1SvOu993HnSz4qDI6S4kGzubrEJAljpVkhRSlg5bzpV//E6ysTQ==} + /@rollup/rollup-darwin-x64@4.18.0: + resolution: {integrity: sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==} cpu: [x64] os: [darwin] requiresBuild: true optional: true - /@rollup/rollup-linux-arm-gnueabihf@4.17.2: - resolution: {integrity: sha512-3reX2fUHqN7sffBNqmEyMQVj/CKhIHZd4y631duy0hZqI8Qoqf6lTtmAKvJFYa6bhU95B1D0WgzHkmTg33In0A==} + /@rollup/rollup-linux-arm-gnueabihf@4.18.0: + resolution: {integrity: sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==} cpu: [arm] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-arm-musleabihf@4.17.2: - resolution: {integrity: sha512-uSqpsp91mheRgw96xtyAGP9FW5ChctTFEoXP0r5FAzj/3ZRv3Uxjtc7taRQSaQM/q85KEKjKsZuiZM3GyUivRg==} + /@rollup/rollup-linux-arm-musleabihf@4.18.0: + resolution: {integrity: sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==} cpu: [arm] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-arm64-gnu@4.17.2: - resolution: {integrity: sha512-EMMPHkiCRtE8Wdk3Qhtciq6BndLtstqZIroHiiGzB3C5LDJmIZcSzVtLRbwuXuUft1Cnv+9fxuDtDxz3k3EW2A==} + /@rollup/rollup-linux-arm64-gnu@4.18.0: + resolution: {integrity: sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==} cpu: [arm64] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-arm64-musl@4.17.2: - resolution: {integrity: sha512-NMPylUUZ1i0z/xJUIx6VUhISZDRT+uTWpBcjdv0/zkp7b/bQDF+NfnfdzuTiB1G6HTodgoFa93hp0O1xl+/UbA==} + /@rollup/rollup-linux-arm64-musl@4.18.0: + resolution: {integrity: sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==} cpu: [arm64] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-powerpc64le-gnu@4.17.2: - resolution: {integrity: sha512-T19My13y8uYXPw/L/k0JYaX1fJKFT/PWdXiHr8mTbXWxjVF1t+8Xl31DgBBvEKclw+1b00Chg0hxE2O7bTG7GQ==} + /@rollup/rollup-linux-powerpc64le-gnu@4.18.0: + resolution: {integrity: sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==} cpu: [ppc64] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-riscv64-gnu@4.17.2: - resolution: {integrity: sha512-BOaNfthf3X3fOWAB+IJ9kxTgPmMqPPH5f5k2DcCsRrBIbWnaJCgX2ll77dV1TdSy9SaXTR5iDXRL8n7AnoP5cg==} + /@rollup/rollup-linux-riscv64-gnu@4.18.0: + resolution: {integrity: sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==} cpu: [riscv64] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-s390x-gnu@4.17.2: - resolution: {integrity: sha512-W0UP/x7bnn3xN2eYMql2T/+wpASLE5SjObXILTMPUBDB/Fg/FxC+gX4nvCfPBCbNhz51C+HcqQp2qQ4u25ok6g==} + /@rollup/rollup-linux-s390x-gnu@4.18.0: + resolution: {integrity: sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==} cpu: [s390x] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-x64-gnu@4.17.2: - resolution: {integrity: sha512-Hy7pLwByUOuyaFC6mAr7m+oMC+V7qyifzs/nW2OJfC8H4hbCzOX07Ov0VFk/zP3kBsELWNFi7rJtgbKYsav9QQ==} + /@rollup/rollup-linux-x64-gnu@4.18.0: + resolution: {integrity: sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==} cpu: [x64] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-x64-musl@4.17.2: - resolution: {integrity: sha512-h1+yTWeYbRdAyJ/jMiVw0l6fOOm/0D1vNLui9iPuqgRGnXA0u21gAqOyB5iHjlM9MMfNOm9RHCQ7zLIzT0x11Q==} + /@rollup/rollup-linux-x64-musl@4.18.0: + resolution: {integrity: sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==} cpu: [x64] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-win32-arm64-msvc@4.17.2: - resolution: {integrity: sha512-tmdtXMfKAjy5+IQsVtDiCfqbynAQE/TQRpWdVataHmhMb9DCoJxp9vLcCBjEQWMiUYxO1QprH/HbY9ragCEFLA==} + /@rollup/rollup-win32-arm64-msvc@4.18.0: + resolution: {integrity: sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==} cpu: [arm64] os: [win32] requiresBuild: true optional: true - /@rollup/rollup-win32-ia32-msvc@4.17.2: - resolution: {integrity: sha512-7II/QCSTAHuE5vdZaQEwJq2ZACkBpQDOmQsE6D6XUbnBHW8IAhm4eTufL6msLJorzrHDFv3CF8oCA/hSIRuZeQ==} + /@rollup/rollup-win32-ia32-msvc@4.18.0: + resolution: {integrity: sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==} cpu: [ia32] os: [win32] requiresBuild: true optional: true - /@rollup/rollup-win32-x64-msvc@4.17.2: - resolution: {integrity: sha512-TGGO7v7qOq4CYmSBVEYpI1Y5xDuCEnbVC5Vth8mOsW0gDSzxNrVERPc790IGHsrT2dQSimgMr9Ub3Y1Jci5/8w==} + /@rollup/rollup-win32-x64-msvc@4.18.0: + resolution: {integrity: sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==} cpu: [x64] os: [win32] requiresBuild: true @@ -5728,6 +5725,36 @@ packages: engines: {node: '>=18'} dev: true + /@sinonjs/commons@2.0.0: + resolution: {integrity: sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==} + dependencies: + type-detect: 4.0.8 + dev: true + + /@sinonjs/commons@3.0.1: + resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} + dependencies: + type-detect: 4.0.8 + dev: true + + /@sinonjs/fake-timers@11.2.2: + resolution: {integrity: sha512-G2piCSxQ7oWOxwGSAyFHfPIsyeJGXYtc6mFbnFA+kRXkiEnTl8c/8jul2S329iFBnDI9HGoeWWAZvuvOkZccgw==} + dependencies: + '@sinonjs/commons': 3.0.1 + dev: true + + /@sinonjs/samsam@8.0.0: + resolution: {integrity: sha512-Bp8KUVlLp8ibJZrnvq2foVhP0IVX2CIprMJPK0vqGqgrDa0OHVKeZyBykqskkrdxV6yKBPmGasO8LVjAKR3Gew==} + dependencies: + '@sinonjs/commons': 2.0.0 + lodash.get: 4.4.2 + type-detect: 4.0.8 + dev: true + + /@sinonjs/text-encoding@0.7.2: + resolution: {integrity: sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==} + dev: true + /@slack/bolt@3.18.0: resolution: {integrity: sha512-A7bDi5kY50fS6/nsmURkQdO3iMxD8aX/rA+m1UXEM2ue2z4KijeQtx2sOZ4YkJQ/h7BsgTQM0CYh3qqmo+m5sQ==} engines: {node: '>=12.13.0', npm: '>=6.12.0'} @@ -5740,7 +5767,7 @@ packages: '@types/express': 4.17.21 '@types/promise.allsettled': 1.0.6 '@types/tsscmp': 1.0.2 - axios: 1.6.8(debug@4.3.4) + axios: 1.7.2(debug@4.3.5) express: 4.19.2 path-to-regexp: 6.2.2 please-upgrade-node: 3.2.0 @@ -5812,7 +5839,7 @@ packages: '@slack/types': 2.11.0 '@types/is-stream': 1.1.0 '@types/node': 20.12.11 - axios: 1.6.8(debug@4.3.4) + axios: 1.7.2(debug@4.3.5) eventemitter3: 3.1.2 form-data: 2.5.1 is-electron: 2.2.2 @@ -5832,44 +5859,31 @@ packages: '@swc/counter': 0.1.3 tslib: 2.6.2 - /@tanstack/query-core@5.36.0: - resolution: {integrity: sha512-B5BD3pg/mztDR36i77hGcyySKKeYrbM5mnogOROTBi1SUml5ByRK7PGUUl16vvubvQC+mSnqziFG/VIy/DE3FQ==} - dev: false - - /@tanstack/query-core@5.38.0: - resolution: {integrity: sha512-QtkoxvFcu52mNpp3+qOo9H265m3rt83Dgbw5WnNyJvr83cegrQ7zT8haHhL4Rul6ZQkeovxyWbXVW9zI0WYx6g==} + /@tanstack/query-core@5.40.0: + resolution: {integrity: sha512-eD8K8jsOIq0Z5u/QbvOmfvKKE/XC39jA7yv4hgpl/1SRiU+J8QCIwgM/mEHuunQsL87dcvnHqSVLmf9pD4CiaA==} dev: false /@tanstack/query-devtools@5.37.1: resolution: {integrity: sha512-XcG4IIHIv0YQKrexTqo2zogQWR1Sz672tX2KsfE9kzB+9zhx44vRKH5si4WDILE1PIWQpStFs/NnrDQrBAUQpg==} dev: false - /@tanstack/react-query-devtools@5.39.0(@tanstack/react-query@5.39.0)(react@18.2.0): - resolution: {integrity: sha512-CSULMTjL1jj1Q8ph6cVLpwtZPbO8E2PLqoASddhQUuab58NkP1ha12ITkJGkvcR6NORZKxoos2ADS7nDYTbWpg==} + /@tanstack/react-query-devtools@5.40.0(@tanstack/react-query@5.40.0)(react@18.2.0): + resolution: {integrity: sha512-JoQOQj/LKaHoHVMAh73R0pc4lIAHiZMV8L4DGHsTSvHcKi22LZmSC9aYBY9oMkqGpFtKmbspwrUIn55+czNSbA==} peerDependencies: - '@tanstack/react-query': ^5.39.0 + '@tanstack/react-query': ^5.40.0 react: ^18 || ^19 dependencies: '@tanstack/query-devtools': 5.37.1 - '@tanstack/react-query': 5.39.0(react@18.2.0) - react: 18.2.0 - dev: false - - /@tanstack/react-query@5.36.0(react@18.2.0): - resolution: {integrity: sha512-BATvtM0rohwg7pRHUnxgeDiwLWRGZ8OM/4y8LImHVpecQWoH6Uhytu3Z8YV6V7hQ1sMQBFcUrGE1/e4MxR6YiA==} - peerDependencies: - react: ^18.0.0 - dependencies: - '@tanstack/query-core': 5.36.0 + '@tanstack/react-query': 5.40.0(react@18.2.0) react: 18.2.0 dev: false - /@tanstack/react-query@5.39.0(react@18.2.0): - resolution: {integrity: sha512-zc0WnyEffyTgG+myLv8cY2tJOUT6jOprCiprpbMqylCaCFipSDUPCYCt2AC+qxgk2CFuqiI/fjb1u5/HhLkrPg==} + /@tanstack/react-query@5.40.0(react@18.2.0): + resolution: {integrity: sha512-iv/W0Axc4aXhFzkrByToE1JQqayxTPNotCoSCnarR/A1vDIHaoKpg7FTIfP3Ev2mbKn1yrxq0ZKYUdLEJxs6Tg==} peerDependencies: react: ^18.0.0 dependencies: - '@tanstack/query-core': 5.38.0 + '@tanstack/query-core': 5.40.0 react: 18.2.0 dev: false @@ -5878,7 +5892,7 @@ packages: engines: {node: '>=14'} dependencies: '@babel/code-frame': 7.24.6 - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.6 '@types/aria-query': 5.0.4 aria-query: 5.1.3 chalk: 4.1.2 @@ -5894,7 +5908,7 @@ packages: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.6 '@testing-library/dom': 9.3.4 '@types/react-dom': 18.3.0 react: 18.2.0 @@ -5950,7 +5964,7 @@ packages: '@babel/types': 7.24.6 '@types/babel__generator': 7.6.8 '@types/babel__template': 7.4.4 - '@types/babel__traverse': 7.20.5 + '@types/babel__traverse': 7.20.6 /@types/babel__generator@7.6.8: resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} @@ -5963,8 +5977,8 @@ packages: '@babel/parser': 7.24.6 '@babel/types': 7.24.6 - /@types/babel__traverse@7.20.5: - resolution: {integrity: sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==} + /@types/babel__traverse@7.20.6: + resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} dependencies: '@babel/types': 7.24.6 @@ -6337,6 +6351,16 @@ packages: '@types/node': 20.12.11 '@types/send': 0.17.4 + /@types/sinon@17.0.3: + resolution: {integrity: sha512-j3uovdn8ewky9kRBG19bOwaZbexJu/XjtkHyjvUgt4xfPFz18dcORIMqnYh66Fx3Powhcr85NT5+er3+oViapw==} + dependencies: + '@types/sinonjs__fake-timers': 8.1.5 + dev: true + + /@types/sinonjs__fake-timers@8.1.5: + resolution: {integrity: sha512-mQkU2jY8jJEF7YHjHvsQO8+3ughTL1mcnn96igfhONmR+fUPSKIkefQYpSe8bsly2Ep7oQbn/6VG5/9/0qcArQ==} + dev: true + /@types/source-list-map@0.1.6: resolution: {integrity: sha512-5JcVt1u5HDmlXkwOD2nslZVllBBc7HDuOICfiZah2Z0is8M8g+ddAEawbmd3VjedfDHBzxCaXLs07QEmb7y54g==} dev: false @@ -6443,8 +6467,8 @@ packages: '@types/yargs-parser': 21.0.3 dev: true - /@typescript-eslint/eslint-plugin@7.10.0(@typescript-eslint/parser@7.10.0)(eslint@8.57.0)(typescript@5.4.5): - resolution: {integrity: sha512-PzCr+a/KAef5ZawX7nbyNwBDtM1HdLIT53aSA2DDlxmxMngZ43O8SIePOeX8H5S+FHXeI6t97mTt/dDdzY4Fyw==} + /@typescript-eslint/eslint-plugin@7.11.0(@typescript-eslint/parser@7.11.0)(eslint@8.57.0)(typescript@5.4.5): + resolution: {integrity: sha512-P+qEahbgeHW4JQ/87FuItjBj8O3MYv5gELDzr8QaQ7fsll1gSMTYb6j87MYyxwf3DtD7uGFB9ShwgmCJB5KmaQ==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: '@typescript-eslint/parser': ^7.0.0 @@ -6455,11 +6479,11 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 7.10.0(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/scope-manager': 7.10.0 - '@typescript-eslint/type-utils': 7.10.0(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/utils': 7.10.0(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/visitor-keys': 7.10.0 + '@typescript-eslint/parser': 7.11.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/scope-manager': 7.11.0 + '@typescript-eslint/type-utils': 7.11.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/utils': 7.11.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 7.11.0 eslint: 8.57.0 graphemer: 1.4.0 ignore: 5.3.1 @@ -6497,15 +6521,15 @@ packages: '@typescript-eslint/types': 6.21.0 '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.4.5) '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.3.4 + debug: 4.3.5 eslint: 8.57.0 typescript: 5.4.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser@7.10.0(eslint@8.57.0)(typescript@5.4.5): - resolution: {integrity: sha512-2EjZMA0LUW5V5tGQiaa2Gys+nKdfrn2xiTIBLR4fxmPmVSvgPcKNW+AE/ln9k0A4zDUti0J/GZXMDupQoI+e1w==} + /@typescript-eslint/parser@7.11.0(eslint@8.57.0)(typescript@5.4.5): + resolution: {integrity: sha512-yimw99teuaXVWsBcPO1Ais02kwJ1jmNA1KxE7ng0aT7ndr1pT1wqj0OJnsYVGKKlc4QJai86l/025L6z8CljOg==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -6514,11 +6538,11 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 7.10.0 - '@typescript-eslint/types': 7.10.0 - '@typescript-eslint/typescript-estree': 7.10.0(typescript@5.4.5) - '@typescript-eslint/visitor-keys': 7.10.0 - debug: 4.3.4 + '@typescript-eslint/scope-manager': 7.11.0 + '@typescript-eslint/types': 7.11.0 + '@typescript-eslint/typescript-estree': 7.11.0(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 7.11.0 + debug: 4.3.5 eslint: 8.57.0 typescript: 5.4.5 transitivePeerDependencies: @@ -6540,15 +6564,15 @@ packages: '@typescript-eslint/visitor-keys': 6.21.0 dev: true - /@typescript-eslint/scope-manager@7.10.0: - resolution: {integrity: sha512-7L01/K8W/VGl7noe2mgH0K7BE29Sq6KAbVmxurj8GGaPDZXPr8EEQ2seOeAS+mEV9DnzxBQB6ax6qQQ5C6P4xg==} + /@typescript-eslint/scope-manager@7.11.0: + resolution: {integrity: sha512-27tGdVEiutD4POirLZX4YzT180vevUURJl4wJGmm6TrQoiYwuxTIY98PBp6L2oN+JQxzE0URvYlzJaBHIekXAw==} engines: {node: ^18.18.0 || >=20.0.0} dependencies: - '@typescript-eslint/types': 7.10.0 - '@typescript-eslint/visitor-keys': 7.10.0 + '@typescript-eslint/types': 7.11.0 + '@typescript-eslint/visitor-keys': 7.11.0 - /@typescript-eslint/type-utils@7.10.0(eslint@8.57.0)(typescript@5.4.5): - resolution: {integrity: sha512-D7tS4WDkJWrVkuzgm90qYw9RdgBcrWmbbRkrLA4d7Pg3w0ttVGDsvYGV19SH8gPR5L7OtcN5J1hTtyenO9xE9g==} + /@typescript-eslint/type-utils@7.11.0(eslint@8.57.0)(typescript@5.4.5): + resolution: {integrity: sha512-WmppUEgYy+y1NTseNMJ6mCFxt03/7jTOy08bcg7bxJJdsM4nuhnchyBbE8vryveaJUf62noH7LodPSo5Z0WUCg==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -6557,9 +6581,9 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 7.10.0(typescript@5.4.5) - '@typescript-eslint/utils': 7.10.0(eslint@8.57.0)(typescript@5.4.5) - debug: 4.3.4 + '@typescript-eslint/typescript-estree': 7.11.0(typescript@5.4.5) + '@typescript-eslint/utils': 7.11.0(eslint@8.57.0)(typescript@5.4.5) + debug: 4.3.5 eslint: 8.57.0 ts-api-utils: 1.3.0(typescript@5.4.5) typescript: 5.4.5 @@ -6577,8 +6601,8 @@ packages: engines: {node: ^16.0.0 || >=18.0.0} dev: true - /@typescript-eslint/types@7.10.0: - resolution: {integrity: sha512-7fNj+Ya35aNyhuqrA1E/VayQX9Elwr8NKZ4WueClR3KwJ7Xx9jcCdOrLW04h51de/+gNbyFMs+IDxh5xIwfbNg==} + /@typescript-eslint/types@7.11.0: + resolution: {integrity: sha512-MPEsDRZTyCiXkD4vd3zywDCifi7tatc4K37KqTprCvaXptP7Xlpdw0NR2hRJTetG5TxbWDB79Ys4kLmHliEo/w==} engines: {node: ^18.18.0 || >=20.0.0} /@typescript-eslint/typescript-estree@5.62.0(typescript@5.4.5): @@ -6592,7 +6616,7 @@ packages: dependencies: '@typescript-eslint/types': 5.62.0 '@typescript-eslint/visitor-keys': 5.62.0 - debug: 4.3.4 + debug: 4.3.5 globby: 11.1.0 is-glob: 4.0.3 semver: 7.6.2 @@ -6613,7 +6637,7 @@ packages: dependencies: '@typescript-eslint/types': 6.21.0 '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.3.4 + debug: 4.3.5 globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.3 @@ -6624,8 +6648,8 @@ packages: - supports-color dev: true - /@typescript-eslint/typescript-estree@7.10.0(typescript@5.4.5): - resolution: {integrity: sha512-LXFnQJjL9XIcxeVfqmNj60YhatpRLt6UhdlFwAkjNc6jSUlK8zQOl1oktAP8PlWFzPQC1jny/8Bai3/HPuvN5g==} + /@typescript-eslint/typescript-estree@7.11.0(typescript@5.4.5): + resolution: {integrity: sha512-cxkhZ2C/iyi3/6U9EPc5y+a6csqHItndvN/CzbNXTNrsC3/ASoYQZEt9uMaEp+xFNjasqQyszp5TumAVKKvJeQ==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: typescript: '*' @@ -6633,9 +6657,9 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 7.10.0 - '@typescript-eslint/visitor-keys': 7.10.0 - debug: 4.3.4 + '@typescript-eslint/types': 7.11.0 + '@typescript-eslint/visitor-keys': 7.11.0 + debug: 4.3.5 globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.4 @@ -6665,16 +6689,16 @@ packages: - typescript dev: true - /@typescript-eslint/utils@7.10.0(eslint@8.57.0)(typescript@5.4.5): - resolution: {integrity: sha512-olzif1Fuo8R8m/qKkzJqT7qwy16CzPRWBvERS0uvyc+DHd8AKbO4Jb7kpAvVzMmZm8TrHnI7hvjN4I05zow+tg==} + /@typescript-eslint/utils@7.11.0(eslint@8.57.0)(typescript@5.4.5): + resolution: {integrity: sha512-xlAWwPleNRHwF37AhrZurOxA1wyXowW4PqVXZVUNCLjB48CqdPJoJWkrpH2nij9Q3Lb7rtWindtoXwxjxlKKCA==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - '@typescript-eslint/scope-manager': 7.10.0 - '@typescript-eslint/types': 7.10.0 - '@typescript-eslint/typescript-estree': 7.10.0(typescript@5.4.5) + '@typescript-eslint/scope-manager': 7.11.0 + '@typescript-eslint/types': 7.11.0 + '@typescript-eslint/typescript-estree': 7.11.0(typescript@5.4.5) eslint: 8.57.0 transitivePeerDependencies: - supports-color @@ -6697,28 +6721,28 @@ packages: eslint-visitor-keys: 3.4.3 dev: true - /@typescript-eslint/visitor-keys@7.10.0: - resolution: {integrity: sha512-9ntIVgsi6gg6FIq9xjEO4VQJvwOqA3jaBFQJ/6TK5AvEup2+cECI6Fh7QiBxmfMHXU0V0J4RyPeOU1VDNzl9cg==} + /@typescript-eslint/visitor-keys@7.11.0: + resolution: {integrity: sha512-7syYk4MzjxTEk0g/w3iqtgxnFQspDJfn6QKD36xMuuhTzjcxY7F8EmBLnALjVyaOF1/bVocu3bS/2/F7rXrveQ==} engines: {node: ^18.18.0 || >=20.0.0} dependencies: - '@typescript-eslint/types': 7.10.0 + '@typescript-eslint/types': 7.11.0 eslint-visitor-keys: 3.4.3 /@ungap/structured-clone@1.2.0: resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - /@vitejs/plugin-react@4.3.0(vite@5.2.11): + /@vitejs/plugin-react@4.3.0(vite@5.2.12): resolution: {integrity: sha512-KcEbMsn4Dpk+LIbHMj7gDPRKaTMStxxWRkRmxsg/jVdFdJCZWt1SchZcf0M4t8lIKdwwMsEyzhrcOXRrDPtOBw==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: vite: ^4.2.0 || ^5.0.0 dependencies: '@babel/core': 7.24.6 - '@babel/plugin-transform-react-jsx-self': 7.24.5(@babel/core@7.24.6) - '@babel/plugin-transform-react-jsx-source': 7.24.1(@babel/core@7.24.6) + '@babel/plugin-transform-react-jsx-self': 7.24.6(@babel/core@7.24.6) + '@babel/plugin-transform-react-jsx-source': 7.24.6(@babel/core@7.24.6) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 5.2.11(@types/node@20.12.11) + vite: 5.2.12(@types/node@20.12.11) transitivePeerDependencies: - supports-color dev: false @@ -6939,7 +6963,7 @@ packages: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} dependencies: - debug: 4.3.4 + debug: 4.3.5 transitivePeerDependencies: - supports-color dev: true @@ -6948,7 +6972,7 @@ packages: resolution: {integrity: sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==} engines: {node: '>= 14'} dependencies: - debug: 4.3.4 + debug: 4.3.5 transitivePeerDependencies: - supports-color @@ -7389,10 +7413,10 @@ packages: postcss: ^8.1.0 dependencies: browserslist: 4.23.0 - caniuse-lite: 1.0.30001614 + caniuse-lite: 1.0.30001625 fraction.js: 4.3.7 normalize-range: 0.1.2 - picocolors: 1.0.0 + picocolors: 1.0.1 postcss: 8.4.38 postcss-value-parser: 4.2.0 dev: false @@ -7408,10 +7432,10 @@ packages: engines: {node: '>=4'} dev: true - /axios@1.6.8(debug@4.3.4): - resolution: {integrity: sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==} + /axios@1.7.2(debug@4.3.5): + resolution: {integrity: sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==} dependencies: - follow-redirects: 1.15.6(debug@4.3.4) + follow-redirects: 1.15.6(debug@4.3.5) form-data: 4.0.0 proxy-from-env: 1.1.0 transitivePeerDependencies: @@ -7431,7 +7455,7 @@ packages: resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} engines: {node: '>=10', npm: '>=6'} dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.6 cosmiconfig: 7.1.0 resolve: 1.22.8 @@ -7476,7 +7500,7 @@ packages: dependencies: '@babel/core': 7.24.6 '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.6) - core-js-compat: 3.37.0 + core-js-compat: 3.37.1 transitivePeerDependencies: - supports-color dev: true @@ -7496,7 +7520,7 @@ packages: resolution: {integrity: sha512-G5R+xmo5LS41A4UyZjOjV0mp9AvkuCyUOAJ6TOv/jTZS+VKh7L7HUDRcCSOb0YCM/u0fFarh7Diz0wjY8rFNFg==} engines: {node: '>=10', npm: '>=6'} dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.6 '@types/babel__core': 7.20.5 babel-plugin-macros: 3.1.0 require-from-string: 2.0.2 @@ -7515,8 +7539,8 @@ packages: /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - /bare-events@2.2.2: - resolution: {integrity: sha512-h7z00dWdG0PYOQEvChhOSWvOfkIKsdZGkWr083FgN/HyoQuebSew/cgirYqh9SCuy/hRvxc5Vy6Fw8xAmYHLkQ==} + /bare-events@2.3.1: + resolution: {integrity: sha512-sJnSOTVESURZ61XgEleqmP255T6zTYwHPwE4r6SssIh0U9/uDvfpdoJYpVUerJJZH2fueO+CdT8ZT+OC/7aZDA==} requiresBuild: true optional: true @@ -7524,8 +7548,8 @@ packages: resolution: {integrity: sha512-TNFqa1B4N99pds2a5NYHR15o0ZpdNKbAeKTE/+G6ED/UeOavv8RY3dr/Fu99HW3zU3pXpo2kDNO8Sjsm2esfOw==} requiresBuild: true dependencies: - bare-events: 2.2.2 - bare-path: 2.1.2 + bare-events: 2.3.1 + bare-path: 2.1.3 bare-stream: 1.0.0 dev: true optional: true @@ -7536,8 +7560,8 @@ packages: dev: true optional: true - /bare-path@2.1.2: - resolution: {integrity: sha512-o7KSt4prEphWUHa3QUwCxUI00R86VdjiuxmJK0iNVDHYPGo+HsDaVCnqCmPbf/MiW1ok8F4p3m8RTHlWk8K2ig==} + /bare-path@2.1.3: + resolution: {integrity: sha512-lh/eITfU8hrj9Ru5quUp0Io1kJWIk1bTjzo7JH1P5dWmQ2EL4hFUlfI8FonAhSlgIfhn63p84CDY/x+PisgcXA==} requiresBuild: true dependencies: bare-os: 2.3.0 @@ -7548,7 +7572,7 @@ packages: resolution: {integrity: sha512-KhNUoDL40iP4gFaLSsoGE479t0jHijfYdIcxRn/XtezA2BaUD0NRf/JGRpsMq6dMNM+SrCrB0YSSo/5wBY4rOQ==} requiresBuild: true dependencies: - streamx: 2.16.1 + streamx: 2.18.0 dev: true optional: true @@ -7626,21 +7650,21 @@ packages: dependencies: balanced-match: 1.0.2 - /braces@3.0.2: - resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + /braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} dependencies: - fill-range: 7.0.1 + fill-range: 7.1.1 /browserslist@4.23.0: resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001614 - electron-to-chromium: 1.4.752 + caniuse-lite: 1.0.30001625 + electron-to-chromium: 1.4.787 node-releases: 2.0.14 - update-browserslist-db: 1.0.13(browserslist@4.23.0) + update-browserslist-db: 1.0.16(browserslist@4.23.0) /buffer-crc32@0.2.13: resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} @@ -7694,8 +7718,8 @@ packages: semver: 7.6.2 dev: true - /bundle-require@4.0.3(esbuild@0.19.12): - resolution: {integrity: sha512-2iscZ3fcthP2vka4Y7j277YJevwmsby/FpFDwjgw34Nl7dtCpt7zz/4TexmHMzY6KZEih7En9ImlbbgUNNQGtA==} + /bundle-require@4.1.0(esbuild@0.19.12): + resolution: {integrity: sha512-FeArRFM+ziGkRViKRnSTbHZc35dgmR9yNog05Kn0+ItI59pOAISGvnnIwW1WgFZQW59IxD9QpJnUPkdIPfZuXg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} peerDependencies: esbuild: '>=0.17' @@ -7772,7 +7796,7 @@ packages: resolution: {integrity: sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: - '@npmcli/fs': 3.1.0 + '@npmcli/fs': 3.1.1 fs-minipass: 3.0.3 glob: 10.4.1 lru-cache: 7.18.3 @@ -7781,7 +7805,7 @@ packages: minipass-flush: 1.0.5 minipass-pipeline: 1.2.4 p-map: 4.0.0 - ssri: 10.0.5 + ssri: 10.0.6 tar: 6.2.1 unique-filename: 3.0.0 dev: true @@ -7818,8 +7842,8 @@ packages: resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==} dev: false - /caniuse-lite@1.0.30001614: - resolution: {integrity: sha512-jmZQ1VpmlRwHgdP1/uiKzgiAuGOfLEJsYFP4+GBou/QQ4U6IOJCB4NP1c+1p9RGLpwObcT94jA5/uO+F1vBbog==} + /caniuse-lite@1.0.30001625: + resolution: {integrity: sha512-4KE9N2gcRH+HQhpeiRZXd+1niLB/XNLAhSy4z7fI8EzcbcPoAqjNInxVHTiTwWfTIV4w096XG8OtCOCQQKPv3w==} /chai@4.4.1: resolution: {integrity: sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==} @@ -7900,7 +7924,7 @@ packages: engines: {node: '>= 8.10.0'} dependencies: anymatch: 3.1.3 - braces: 3.0.2 + braces: 3.0.3 glob-parent: 5.1.2 is-binary-path: 2.1.0 is-glob: 4.0.3 @@ -7917,8 +7941,8 @@ packages: resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} engines: {node: '>=10'} - /chrome-trace-event@1.0.3: - resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} + /chrome-trace-event@1.0.4: + resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} engines: {node: '>=6.0'} /ci-info@3.9.0: @@ -8288,8 +8312,8 @@ packages: is-what: 4.1.16 dev: false - /core-js-compat@3.37.0: - resolution: {integrity: sha512-vYq4L+T8aS5UuFg4UwDhc7YNRWVeVZwltad9C/jV3R2LgVOpS9BDr7l/WL6BN0dbV3k1XejPTHqqEzJgsa0frA==} + /core-js-compat@3.37.1: + resolution: {integrity: sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg==} dependencies: browserslist: 4.23.0 dev: true @@ -8300,8 +8324,8 @@ packages: requiresBuild: true dev: false - /core-js@3.37.0: - resolution: {integrity: sha512-fu5vHevQ8ZG4og+LXug8ulUtVxjOcEYvifJr7L5Bfq9GOztVqsKd9/59hUk2ZSbCrS3BqUr3EpaYGIYzq7g3Ug==} + /core-js@3.37.1: + resolution: {integrity: sha512-Xn6qmxrQZyB0FFY8E3bgRXei3lWDJHhvI+u0q9TKIYM49G8pAr0FgnnrFRAmsbptZL1yxRADVXn+x5AGsbBfyw==} requiresBuild: true dev: true @@ -8379,7 +8403,7 @@ packages: cp-file: 10.0.0 globby: 13.2.2 junk: 4.0.1 - micromatch: 4.0.5 + micromatch: 4.0.7 nested-error-stacks: 2.1.1 p-filter: 3.0.0 p-map: 6.0.0 @@ -8462,7 +8486,7 @@ packages: /css-vendor@2.0.8: resolution: {integrity: sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ==} dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.6 is-in-browser: 1.1.3 dev: false @@ -8603,7 +8627,7 @@ packages: resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} engines: {node: '>=0.11'} dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.6 /dateformat@3.0.3: resolution: {integrity: sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==} @@ -8637,8 +8661,8 @@ packages: dependencies: ms: 2.1.3 - /debug@4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + /debug@4.3.5: + resolution: {integrity: sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==} engines: {node: '>=6.0'} peerDependencies: supports-color: '*' @@ -8812,6 +8836,11 @@ packages: resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + /diff@5.2.0: + resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} + engines: {node: '>=0.3.1'} + dev: true + /dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} @@ -8841,7 +8870,7 @@ packages: /dom-helpers@5.2.1: resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.6 csstype: 3.1.3 /dot-prop@5.3.0: @@ -8900,11 +8929,11 @@ packages: engines: {node: '>=0.10.0'} hasBin: true dependencies: - jake: 10.8.7 + jake: 10.9.1 dev: true - /electron-to-chromium@1.4.752: - resolution: {integrity: sha512-P3QJreYI/AUTcfBVrC4zy9KvnZWekViThgQMX/VpJ+IsOBbcX5JFpORM4qWapwWQ+agb2nYAOyn/4PMXOk0m2Q==} + /electron-to-chromium@1.4.787: + resolution: {integrity: sha512-d0EFmtLPjctczO3LogReyM2pbBiiZbnsKnGF+cdZhsYzHm/A0GV7W94kqzLD8SN4O3f3iHlgLUChqghgyznvCQ==} /emoji-regex@10.3.0: resolution: {integrity: sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==} @@ -8941,8 +8970,8 @@ packages: memory-fs: 0.2.0 tapable: 0.1.10 - /enhanced-resolve@5.16.0: - resolution: {integrity: sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA==} + /enhanced-resolve@5.16.1: + resolution: {integrity: sha512-4U5pNsuDl0EhuZpq46M5xPslstkviJuhrdobaRDBk2Jy2KO37FDAJl4lb2KlNabxT0m4MTK2UHNrsAcphE8nyw==} engines: {node: '>=10.13.0'} dependencies: graceful-fs: 4.2.11 @@ -9082,8 +9111,8 @@ packages: safe-array-concat: 1.1.2 dev: true - /es-module-lexer@1.5.2: - resolution: {integrity: sha512-l60ETUTmLqbVbVHv1J4/qj+M8nq7AwMzEcg3kmJDt9dCNrTk+yHcYFf/Kw75pMDwd9mPcIGCG5LcS20SxYRzFA==} + /es-module-lexer@1.5.3: + resolution: {integrity: sha512-i1gCgmR9dCl6Vil6UKPI/trA69s08g/syhiDK9TG0Nf1RJjjFI+AzoWW7sPufzkgYAn861skuCwJa0pIIHYxvg==} /es-object-atoms@1.0.0: resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} @@ -9246,28 +9275,28 @@ packages: dependencies: confusing-browser-globals: 1.0.11 eslint: 8.57.0 - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.10.0)(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.11.0)(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0) object.assign: 4.1.5 object.entries: 1.1.8 semver: 6.3.1 dev: true - /eslint-config-airbnb-typescript@18.0.0(@typescript-eslint/eslint-plugin@7.10.0)(@typescript-eslint/parser@7.10.0)(eslint-plugin-import@2.29.1)(eslint@8.57.0): + /eslint-config-airbnb-typescript@18.0.0(@typescript-eslint/eslint-plugin@7.11.0)(@typescript-eslint/parser@7.11.0)(eslint-plugin-import@2.29.1)(eslint@8.57.0): resolution: {integrity: sha512-oc+Lxzgzsu8FQyFVa4QFaVKiitTYiiW3frB9KYW5OWdPrqFc7FzxgB20hP4cHMlr+MBzGcLl3jnCOVOydL9mIg==} peerDependencies: '@typescript-eslint/eslint-plugin': ^7.0.0 '@typescript-eslint/parser': ^7.0.0 eslint: ^8.56.0 dependencies: - '@typescript-eslint/eslint-plugin': 7.10.0(@typescript-eslint/parser@7.10.0)(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/parser': 7.10.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/eslint-plugin': 7.11.0(@typescript-eslint/parser@7.11.0)(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/parser': 7.11.0(eslint@8.57.0)(typescript@5.4.5) eslint: 8.57.0 eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.29.1)(eslint@8.57.0) transitivePeerDependencies: - eslint-plugin-import dev: true - /eslint-config-airbnb@19.0.4(eslint-plugin-import@2.29.1)(eslint-plugin-jsx-a11y@6.8.0)(eslint-plugin-react-hooks@4.6.2)(eslint-plugin-react@7.34.1)(eslint@8.57.0): + /eslint-config-airbnb@19.0.4(eslint-plugin-import@2.29.1)(eslint-plugin-jsx-a11y@6.8.0)(eslint-plugin-react-hooks@4.6.2)(eslint-plugin-react@7.34.2)(eslint@8.57.0): resolution: {integrity: sha512-T75QYQVQX57jiNgpF9r1KegMICE94VYwoFQyMGhrvc+lB8YF2E/M/PYDaQe1AJcWaEgqLE+ErXV1Og/+6Vyzew==} engines: {node: ^10.12.0 || ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -9279,16 +9308,16 @@ packages: dependencies: eslint: 8.57.0 eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.29.1)(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.10.0)(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.11.0)(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0) eslint-plugin-jsx-a11y: 6.8.0(eslint@8.57.0) - eslint-plugin-react: 7.34.1(eslint@8.57.0) + eslint-plugin-react: 7.34.2(eslint@8.57.0) eslint-plugin-react-hooks: 4.6.2(eslint@8.57.0) object.assign: 4.1.5 object.entries: 1.1.8 dev: true - /eslint-config-next@14.1.3(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0)(typescript@5.4.5): - resolution: {integrity: sha512-sUCpWlGuHpEhI0pIT0UtdSLJk5Z8E2DYinPTwsBiWaSYQomchdl0i60pjynY48+oXvtyWMQ7oE+G3m49yrfacg==} + /eslint-config-next@14.2.3(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0)(typescript@5.4.5): + resolution: {integrity: sha512-ZkNztm3Q7hjqvB1rRlOX8P9E/cXRL9ajRcs8jufEtwMfTVYRqnmtnaSu57QqHyBlovMuiB8LEzfLBkh5RYV6Fg==} peerDependencies: eslint: ^7.23.0 || ^8.0.0 typescript: '>=3.3.1' @@ -9296,15 +9325,15 @@ packages: typescript: optional: true dependencies: - '@next/eslint-plugin-next': 14.1.3 + '@next/eslint-plugin-next': 14.2.3 '@rushstack/eslint-patch': 1.10.3 '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.4.5) eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-webpack@0.13.8)(eslint-plugin-import@2.29.1)(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.10.0)(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.11.0)(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0) eslint-plugin-jsx-a11y: 6.8.0(eslint@8.57.0) - eslint-plugin-react: 7.34.1(eslint@8.57.0) + eslint-plugin-react: 7.34.2(eslint@8.57.0) eslint-plugin-react-hooks: 4.6.2(eslint@8.57.0) typescript: 5.4.5 transitivePeerDependencies: @@ -9328,7 +9357,7 @@ packages: eslint-plugin-import: '*' dependencies: eslint: 8.57.0 - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.10.0)(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.11.0)(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0) resolve.exports: 2.0.2 dev: false @@ -9348,11 +9377,11 @@ packages: eslint: '*' eslint-plugin-import: '*' dependencies: - debug: 4.3.4 - enhanced-resolve: 5.16.0 + debug: 4.3.5 + enhanced-resolve: 5.16.1 eslint: 8.57.0 eslint-module-utils: 2.8.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.10.0)(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.11.0)(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0) fast-glob: 3.3.2 get-tsconfig: 4.7.5 is-core-module: 2.13.1 @@ -9374,7 +9403,7 @@ packages: array.prototype.find: 2.2.3 debug: 3.2.7 enhanced-resolve: 0.9.1 - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.10.0)(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.11.0)(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0) find-root: 1.1.0 hasown: 2.0.2 interpret: 1.4.0 @@ -9418,7 +9447,7 @@ packages: - supports-color dev: true - /eslint-module-utils@2.8.1(@typescript-eslint/parser@7.10.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0): + /eslint-module-utils@2.8.1(@typescript-eslint/parser@7.11.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0): resolution: {integrity: sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==} engines: {node: '>=4'} peerDependencies: @@ -9439,7 +9468,7 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 7.10.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/parser': 7.11.0(eslint@8.57.0)(typescript@5.4.5) debug: 3.2.7 eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 @@ -9459,7 +9488,7 @@ packages: lodash.upperfirst: 4.3.1 dev: true - /eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.10.0)(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0): + /eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.11.0)(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0): resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} engines: {node: '>=4'} peerDependencies: @@ -9469,7 +9498,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 7.10.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/parser': 7.11.0(eslint@8.57.0)(typescript@5.4.5) array-includes: 3.1.8 array.prototype.findlastindex: 1.2.5 array.prototype.flat: 1.3.2 @@ -9478,7 +9507,7 @@ packages: doctrine: 2.1.0 eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.10.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0) + eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.11.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0) hasown: 2.0.2 is-core-module: 2.13.1 is-glob: 4.0.3 @@ -9499,7 +9528,7 @@ packages: peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.6 aria-query: 5.3.0 array-includes: 3.1.8 array.prototype.flatmap: 1.3.2 @@ -9530,21 +9559,8 @@ packages: rambda: 7.5.0 dev: true - /eslint-plugin-react-compiler@0.0.0-experimental-c8b3f72-20240517(eslint@8.57.0): - resolution: {integrity: sha512-cxUTFNMEKiLX6uFaRfrr2GHnB7KUHDMYLjEGzDec82ka6WyBCHg906nGSf3JvVnQKHaBDfUk7Mmv/JMvdgQB8Q==} - engines: {node: ^14.17.0 || ^16.0.0 || >= 18.0.0} - peerDependencies: - eslint: '>=7' - dependencies: - '@babel/core': 7.24.6 - '@babel/parser': 7.24.6 - '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.24.6) - eslint: 8.57.0 - hermes-parser: 0.20.1 - zod: 3.23.8 - zod-validation-error: 3.3.0(zod@3.23.8) - transitivePeerDependencies: - - supports-color + /eslint-plugin-react-compiler@0.0.0: + resolution: {integrity: sha512-ICamVGuuHqQRBOkfjhUBzyzkLGfGiVHaZdSvAtTkHMMBwkdHjNYyp0ngoBI732mvuhkRI1V2tmoG8092oj2VwQ==} dev: false /eslint-plugin-react-hooks@4.6.2(eslint@8.57.0): @@ -9556,8 +9572,8 @@ packages: eslint: 8.57.0 dev: true - /eslint-plugin-react@7.34.1(eslint@8.57.0): - resolution: {integrity: sha512-N97CxlouPT1AHt8Jn0mhhN2RrADlUAsk1/atcT2KyA/l9Q/E6ll7OIGwNumFmWfZ9skV3XXccYS19h80rHtgkw==} + /eslint-plugin-react@7.34.2(eslint@8.57.0): + resolution: {integrity: sha512-2HCmrU+/JNigDN6tg55cRDKCQWicYAPB38JGSFDQt95jDm8rrvSUo7YPkOIm5l6ts1j1zCvysNcasvfTMQzUOw==} engines: {node: '>=4'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 @@ -9642,7 +9658,7 @@ packages: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.4 + debug: 4.3.5 doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.2.2 @@ -9904,7 +9920,7 @@ packages: '@nodelib/fs.walk': 1.2.8 glob-parent: 5.1.2 merge2: 1.4.1 - micromatch: 4.0.5 + micromatch: 4.0.7 /fast-json-patch@3.1.1: resolution: {integrity: sha512-vf6IHUX2SBcA+5/+4883dsIjpBTqmfBjmYiWK1savxQmFk4JfBMLa7ynTYOs1Rolp/T1betJxHiGD3g1Mn8lUQ==} @@ -9950,8 +9966,8 @@ packages: engines: {node: '>= 0.4.0'} dev: false - /fill-range@7.0.1: - resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + /fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} dependencies: to-regex-range: 5.0.1 @@ -10054,7 +10070,7 @@ packages: /flatted@3.3.1: resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} - /follow-redirects@1.15.6(debug@4.3.4): + /follow-redirects@1.15.6(debug@4.3.5): resolution: {integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==} engines: {node: '>=4.0'} peerDependencies: @@ -10063,7 +10079,7 @@ packages: debug: optional: true dependencies: - debug: 4.3.4 + debug: 4.3.5 /for-each@0.3.3: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} @@ -10197,8 +10213,8 @@ packages: minipass: 7.1.2 dev: true - /fs-monkey@1.0.5: - resolution: {integrity: sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew==} + /fs-monkey@1.0.6: + resolution: {integrity: sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==} dev: false /fs-readdir-recursive@1.1.0: @@ -10263,8 +10279,8 @@ packages: wide-align: 1.1.5 dev: true - /gaxios@6.5.0: - resolution: {integrity: sha512-R9QGdv8j4/dlNoQbX3hSaK/S0rkMijqjVvW3YM06CoBdbU/VdKd159j4hePpng0KuE6Lh6JJ7UdmVGJZFcAG1w==} + /gaxios@6.6.0: + resolution: {integrity: sha512-bpOZVQV5gthH/jVCSuYuokRo2bTKOcuBiVWpjmTn6C5Agl5zclGfTljuGsQZxwwDBkli+YhZhP4TdlqTnhOezQ==} engines: {node: '>=14'} dependencies: extend: 3.0.2 @@ -10280,7 +10296,7 @@ packages: resolution: {integrity: sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg==} engines: {node: '>=14'} dependencies: - gaxios: 6.5.0 + gaxios: 6.6.0 json-bigint: 1.0.0 transitivePeerDependencies: - encoding @@ -10575,13 +10591,13 @@ packages: - supports-color dev: true - /google-auth-library@9.9.0: - resolution: {integrity: sha512-9l+zO07h1tDJdIHN74SpnWIlNR+OuOemXlWJlLP9pXy6vFtizgpEzMuwJa4lqY9UAdiAv5DVd5ql0Am916I+aA==} + /google-auth-library@9.10.0: + resolution: {integrity: sha512-ol+oSa5NbcGdDqA+gZ3G3mev59OHBZksBTxY/tYwjtcp1H/scAFwJfSQU9/1RALoyZ7FslNbke8j4i3ipwlyuQ==} engines: {node: '>=14'} dependencies: base64-js: 1.5.1 ecdsa-sig-formatter: 1.0.11 - gaxios: 6.5.0 + gaxios: 6.6.0 gcp-metadata: 6.1.0 gtoken: 7.1.0 jws: 4.0.0 @@ -10594,8 +10610,8 @@ packages: engines: {node: '>=14.0.0'} dependencies: extend: 3.0.2 - gaxios: 6.5.0 - google-auth-library: 9.9.0 + gaxios: 6.6.0 + google-auth-library: 9.10.0 qs: 6.12.1 url-template: 2.0.8 uuid: 9.0.1 @@ -10622,7 +10638,7 @@ packages: resolution: {integrity: sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==} engines: {node: '>=14.0.0'} dependencies: - gaxios: 6.5.0 + gaxios: 6.6.0 jws: 4.0.0 transitivePeerDependencies: - encoding @@ -10705,16 +10721,6 @@ packages: dependencies: function-bind: 1.1.2 - /hermes-estree@0.20.1: - resolution: {integrity: sha512-SQpZK4BzR48kuOg0v4pb3EAGNclzIlqMj3Opu/mu7bbAoFw6oig6cEt/RAi0zTFW/iW6Iz9X9ggGuZTAZ/yZHg==} - dev: false - - /hermes-parser@0.20.1: - resolution: {integrity: sha512-BL5P83cwCogI8D7rrDCgsFY0tdYUtmFP9XaXtl2IQjC+2Xo+4okjfXintlTxcIwl4qeGddEl28Z11kbVIw0aNA==} - dependencies: - hermes-estree: 0.20.1 - dev: false - /hexoid@1.0.0: resolution: {integrity: sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==} engines: {node: '>=8'} @@ -10797,7 +10803,7 @@ packages: dependencies: '@tootallnate/once': 2.0.0 agent-base: 6.0.2 - debug: 4.3.4 + debug: 4.3.5 transitivePeerDependencies: - supports-color dev: true @@ -10807,7 +10813,7 @@ packages: engines: {node: '>= 14'} dependencies: agent-base: 7.1.1 - debug: 4.3.4 + debug: 4.3.5 transitivePeerDependencies: - supports-color @@ -10816,10 +10822,10 @@ packages: engines: {node: '>=8.0.0'} dependencies: '@types/http-proxy': 1.17.14 - http-proxy: 1.18.1(debug@4.3.4) + http-proxy: 1.18.1(debug@4.3.5) is-glob: 4.0.3 is-plain-obj: 3.0.0 - micromatch: 4.0.5 + micromatch: 4.0.7 transitivePeerDependencies: - debug dev: false @@ -10829,21 +10835,21 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@types/http-proxy': 1.17.14 - debug: 4.3.4 - http-proxy: 1.18.1(debug@4.3.4) + debug: 4.3.5 + http-proxy: 1.18.1(debug@4.3.5) is-glob: 4.0.3 is-plain-obj: 3.0.0 - micromatch: 4.0.5 + micromatch: 4.0.7 transitivePeerDependencies: - supports-color dev: false - /http-proxy@1.18.1(debug@4.3.4): + /http-proxy@1.18.1(debug@4.3.5): resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} engines: {node: '>=8.0.0'} dependencies: eventemitter3: 4.0.7 - follow-redirects: 1.15.6(debug@4.3.4) + follow-redirects: 1.15.6(debug@4.3.5) requires-port: 1.0.0 transitivePeerDependencies: - debug @@ -10854,7 +10860,7 @@ packages: engines: {node: '>= 6'} dependencies: agent-base: 6.0.2 - debug: 4.3.4 + debug: 4.3.5 transitivePeerDependencies: - supports-color dev: true @@ -10864,7 +10870,7 @@ packages: engines: {node: '>= 14'} dependencies: agent-base: 7.1.1 - debug: 4.3.4 + debug: 4.3.5 transitivePeerDependencies: - supports-color @@ -10882,8 +10888,8 @@ packages: ms: 2.1.3 dev: true - /hyphenate-style-name@1.0.4: - resolution: {integrity: sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==} + /hyphenate-style-name@1.0.5: + resolution: {integrity: sha512-fedL7PRwmeVkgyhu9hLeTBaI6wcGk7JGJswdaRsa5aUbkXI1kr1xZwTPBtaYPpwf56878iDek6VbVnuWMebJmw==} dev: false /iconv-lite@0.4.24: @@ -10908,8 +10914,8 @@ packages: minimatch: 5.1.6 dev: true - /ignore-walk@6.0.4: - resolution: {integrity: sha512-t7sv42WkwFkyKbivUCglsQW5YWMskWtbEf4MNKX5u/CCWHKSPzN4FtBQGsQZgCLbxOzpVlcbWVK5KB3auIOjSw==} + /ignore-walk@6.0.5: + resolution: {integrity: sha512-VuuG0wCnjhnylG1ABXT3dAuIpTNDs/G8jlpmwXY03fXoXy/8ZK8/T+hMzt8L4WnrLCJgdybqgPagnF/f97cg3A==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: minimatch: 9.0.4 @@ -10979,7 +10985,7 @@ packages: engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: npm-package-arg: 10.1.0 - promzard: 1.0.1 + promzard: 1.0.2 read: 2.1.0 read-package-json: 6.0.4 semver: 7.6.2 @@ -11012,7 +11018,7 @@ packages: resolution: {integrity: sha512-SqLLa/Oe5rZUagTR9z+Zd6izyatHglbmbvVofo1KzuVB54YHleWzeHNLoR7FOICGOeQSqeLh1cordb3MzhGcEw==} engines: {node: '>=18'} dependencies: - '@inquirer/figures': 1.0.2 + '@inquirer/figures': 1.0.3 '@ljharb/through': 2.3.13 ansi-escapes: 4.3.2 chalk: 5.3.0 @@ -11453,8 +11459,8 @@ packages: optionalDependencies: '@pkgjs/parseargs': 0.11.0 - /jake@10.8.7: - resolution: {integrity: sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==} + /jake@10.9.1: + resolution: {integrity: sha512-61btcOHNnLnsOdtLgA5efqQWjnSi/vow5HbI7HMdKKWqvrKR1bLK3BPlJn9gcSaP2ewuamUSMB5XEy76KUIS2w==} engines: {node: '>=10'} hasBin: true dependencies: @@ -11487,8 +11493,8 @@ packages: merge-stream: 2.0.0 supports-color: 8.1.1 - /jose@5.2.4: - resolution: {integrity: sha512-6ScbIk2WWCeXkmzF6bRPmEuaqy1m8SbsRFMa/FLrSCkGIhj8OLVG/IH+XHVmNMx/KUo8cVWEE6oKR4dJ+S0Rkg==} + /jose@5.3.0: + resolution: {integrity: sha512-IChe9AtAE79ru084ow8jzkN2lNrG3Ntfiv65Cvj9uOCE2m5LNsdHG+9EbxWxAoWRF9TgDOqLN5jm08++owDVRg==} dev: false /joycon@3.1.1: @@ -11520,8 +11526,8 @@ packages: resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==} dev: true - /jsdom@24.0.0: - resolution: {integrity: sha512-UDS2NayCvmXSXVP6mpTj+73JnNQadZlr9N68189xib2tx5Mls7swlTNao26IoHv46BZJFvXygyRtyXd1feAk1A==} + /jsdom@24.1.0: + resolution: {integrity: sha512-6gpM7pRXCwIOKxX47cgOyvyQDN/Eh0f1MeKySBV2xGdKtqJBLj8P25eY3EVCWo2mglDDzozR2r2MW4T+JiNUZA==} engines: {node: '>=18'} peerDependencies: canvas: ^2.11.2 @@ -11537,9 +11543,9 @@ packages: http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.4 is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.9 + nwsapi: 2.2.10 parse5: 7.1.2 - rrweb-cssom: 0.6.0 + rrweb-cssom: 0.7.0 saxes: 6.0.0 symbol-tree: 3.2.4 tough-cookie: 4.1.4 @@ -11580,8 +11586,8 @@ packages: /json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - /json-parse-even-better-errors@3.0.1: - resolution: {integrity: sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==} + /json-parse-even-better-errors@3.0.2: + resolution: {integrity: sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dev: true @@ -11657,29 +11663,29 @@ packages: /jss-plugin-camel-case@10.10.0: resolution: {integrity: sha512-z+HETfj5IYgFxh1wJnUAU8jByI48ED+v0fuTuhKrPR+pRBYS2EDwbusU8aFOpCdYhtRc9zhN+PJ7iNE8pAWyPw==} dependencies: - '@babel/runtime': 7.24.5 - hyphenate-style-name: 1.0.4 + '@babel/runtime': 7.24.6 + hyphenate-style-name: 1.0.5 jss: 10.10.0 dev: false /jss-plugin-default-unit@10.10.0: resolution: {integrity: sha512-SvpajxIECi4JDUbGLefvNckmI+c2VWmP43qnEy/0eiwzRUsafg5DVSIWSzZe4d2vFX1u9nRDP46WCFV/PXVBGQ==} dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.6 jss: 10.10.0 dev: false /jss-plugin-global@10.10.0: resolution: {integrity: sha512-icXEYbMufiNuWfuazLeN+BNJO16Ge88OcXU5ZDC2vLqElmMybA31Wi7lZ3lf+vgufRocvPj8443irhYRgWxP+A==} dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.6 jss: 10.10.0 dev: false /jss-plugin-nested@10.10.0: resolution: {integrity: sha512-9R4JHxxGgiZhurDo3q7LdIiDEgtA1bTGzAbhSPyIOWb7ZubrjQe8acwhEQ6OEKydzpl8XHMtTnEwHXCARLYqYA==} dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.6 jss: 10.10.0 tiny-warning: 1.0.3 dev: false @@ -11687,14 +11693,14 @@ packages: /jss-plugin-props-sort@10.10.0: resolution: {integrity: sha512-5VNJvQJbnq/vRfje6uZLe/FyaOpzP/IH1LP+0fr88QamVrGJa0hpRRyAa0ea4U/3LcorJfBFVyC4yN2QC73lJg==} dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.6 jss: 10.10.0 dev: false /jss-plugin-rule-value-function@10.10.0: resolution: {integrity: sha512-uEFJFgaCtkXeIPgki8ICw3Y7VMkL9GEan6SqmT9tqpwM+/t+hxfMUdU4wQ0MtOiMNWhwnckBV0IebrKcZM9C0g==} dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.6 jss: 10.10.0 tiny-warning: 1.0.3 dev: false @@ -11702,7 +11708,7 @@ packages: /jss-plugin-vendor-prefixer@10.10.0: resolution: {integrity: sha512-UY/41WumgjW8r1qMCO8l1ARg7NHnfRVWRhZ2E2m0DMYsr2DD91qIXLyNhiX83hHswR7Wm4D+oDYNC1zWCJWtqg==} dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.6 css-vendor: 2.0.8 jss: 10.10.0 dev: false @@ -11719,7 +11725,7 @@ packages: /jss@10.10.0: resolution: {integrity: sha512-cqsOTS7jqPsPMjtKYDUpdFC0AbhYFLTcuGRqymgmdJIeQ8cH7+AgX7YSgQy79wXloZq2VvATYxUOUQEvS1V/Zw==} dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.6 csstype: 3.1.3 is-in-browser: 1.1.3 tiny-warning: 1.0.3 @@ -11749,6 +11755,10 @@ packages: engines: {node: '>=12.20'} dev: true + /just-extend@6.2.0: + resolution: {integrity: sha512-cYofQu2Xpom82S6qD778jBDpwvvy39s1l/hrYij2u9AMdQcGRpaBu6kY4mVhuno5kJVi1DAz4aiphA2WI1/OAw==} + dev: true + /jwa@1.4.1: resolution: {integrity: sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==} dependencies: @@ -11791,20 +11801,20 @@ packages: engines: {node: '>=6'} dev: false - /ky@1.2.4: - resolution: {integrity: sha512-CfSrf4a0yj1n6WgPT6kQNQOopIGLkQzqSAXo05oKByaH7G3SiqW4a8jGox0p9whMXqO49H7ljgigivrMyycAVA==} + /ky@1.3.0: + resolution: {integrity: sha512-QUViPXlgP6NKA57IAPff/aZSmRA6qs9wKxlEpayBorwRZG+x2LG7jD4kXh8lnH3q/gkUr64NyZ7kwErUEZJmlw==} engines: {node: '>=18'} dev: false - /language-subtag-registry@0.3.22: - resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} + /language-subtag-registry@0.3.23: + resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==} dev: true /language-tags@1.0.9: resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} engines: {node: '>=0.10'} dependencies: - language-subtag-registry: 0.3.22 + language-subtag-registry: 0.3.23 dev: true /latest-version@9.0.0: @@ -11938,7 +11948,7 @@ packages: proc-log: 3.0.0 semver: 7.6.2 sigstore: 1.9.0 - ssri: 10.0.5 + ssri: 10.0.6 transitivePeerDependencies: - supports-color dev: true @@ -12008,8 +12018,8 @@ packages: resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} engines: {node: '>=6.11.5'} - /loader-utils@3.2.1: - resolution: {integrity: sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==} + /loader-utils@3.2.2: + resolution: {integrity: sha512-vjJi4vQDasD8t0kMpxe+9URAcgbSuASqoj/Wuk3MawTk97LYa2KfdHreAkd1G/pmPLMvzZEw7/OsydADNemerQ==} engines: {node: '>= 12.13.0'} dev: false @@ -12017,8 +12027,8 @@ packages: resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} engines: {node: '>=14'} dependencies: - mlly: 1.6.1 - pkg-types: 1.1.0 + mlly: 1.7.0 + pkg-types: 1.1.1 /locate-path@2.0.0: resolution: {integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==} @@ -12085,6 +12095,10 @@ packages: resolution: {integrity: sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==} dev: false + /lodash.get@4.4.2: + resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} + dev: true + /lodash.groupby@4.6.0: resolution: {integrity: sha512-5dcWxm23+VAoz+awKmBaiBvzox8+RqMgFhi7UvX9DHZr2HdxHXM/Wrf8cfKpsW37RNrvtPn6hSwNqurSILbmJw==} dev: false @@ -12294,13 +12308,13 @@ packages: is-lambda: 1.0.1 lru-cache: 7.18.3 minipass: 5.0.0 - minipass-fetch: 3.0.4 + minipass-fetch: 3.0.5 minipass-flush: 1.0.5 minipass-pipeline: 1.2.4 negotiator: 0.6.3 promise-retry: 2.0.1 socks-proxy-agent: 7.0.0 - ssri: 10.0.5 + ssri: 10.0.6 transitivePeerDependencies: - supports-color dev: true @@ -12420,7 +12434,7 @@ packages: resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==} engines: {node: '>= 4.0.0'} dependencies: - fs-monkey: 1.0.5 + fs-monkey: 1.0.6 dev: false /memory-fs@0.2.0: @@ -12465,7 +12479,7 @@ packages: /micromark@2.11.4: resolution: {integrity: sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==} dependencies: - debug: 4.3.4 + debug: 4.3.5 parse-entities: 2.0.0 transitivePeerDependencies: - supports-color @@ -12475,7 +12489,15 @@ packages: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} engines: {node: '>=8.6'} dependencies: - braces: 3.0.2 + braces: 3.0.3 + picomatch: 2.3.1 + dev: true + + /micromatch@4.0.7: + resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==} + engines: {node: '>=8.6'} + dependencies: + braces: 3.0.3 picomatch: 2.3.1 /mime-db@1.52.0: @@ -12586,8 +12608,8 @@ packages: encoding: 0.1.13 dev: true - /minipass-fetch@3.0.4: - resolution: {integrity: sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg==} + /minipass-fetch@3.0.5: + resolution: {integrity: sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: minipass: 7.1.2 @@ -12666,12 +12688,12 @@ packages: engines: {node: '>=10'} hasBin: true - /mlly@1.6.1: - resolution: {integrity: sha512-vLgaHvaeunuOXHSmEbZ9izxPx3USsk8KCQ8iC+aTlp5sKRSoZvwhHh5L9VbKSaVC6sJDqbyohIS76E2VmHIPAA==} + /mlly@1.7.0: + resolution: {integrity: sha512-U9SDaXGEREBYQgfejV97coK0UL1r+qnF2SyO9A3qcI8MzKnsIFKHNVEkrDyNncQTKQQumsasmeq84eNMdBfsNQ==} dependencies: acorn: 8.11.3 pathe: 1.1.2 - pkg-types: 1.1.0 + pkg-types: 1.1.1 ufo: 1.5.3 /modify-values@1.0.1: @@ -12813,7 +12835,7 @@ packages: '@playwright/test': 1.43.1 '@swc/helpers': 0.5.5 busboy: 1.6.0 - caniuse-lite: 1.0.30001614 + caniuse-lite: 1.0.30001625 graceful-fs: 4.2.11 postcss: 8.4.31 react: 18.2.0 @@ -12839,12 +12861,22 @@ packages: requiresBuild: true dependencies: node-addon-api: 3.2.1 - node-gyp-build: 4.8.0 + node-gyp-build: 4.8.1 dev: false optional: true - /node-abi@3.62.0: - resolution: {integrity: sha512-CPMcGa+y33xuL1E0TcNIu4YyaZCxnnvkVaEXrsosR3FxN+fV8xvb7Mzpb7IgKler10qeMkE6+Dp8qJhpzdq35g==} + /nise@6.0.0: + resolution: {integrity: sha512-K8ePqo9BFvN31HXwEtTNGzgrPpmvgciDsFz8aztFjt4LqKO/JeFD8tBOeuDiCMXrIl/m1YvfH8auSpxfaD09wg==} + dependencies: + '@sinonjs/commons': 3.0.1 + '@sinonjs/fake-timers': 11.2.2 + '@sinonjs/text-encoding': 0.7.2 + just-extend: 6.2.0 + path-to-regexp: 6.2.2 + dev: true + + /node-abi@3.63.0: + resolution: {integrity: sha512-vAszCsOUrUxjGAmdnM/pq7gUgie0IRteCQMX6d4A534fQCR93EJU5qgzBvU6EkFfK27s0T3HEV3BOyJIr7OMYw==} engines: {node: '>=10'} dependencies: semver: 7.6.2 @@ -12906,8 +12938,8 @@ packages: dependencies: whatwg-url: 5.0.0 - /node-gyp-build@4.8.0: - resolution: {integrity: sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==} + /node-gyp-build@4.8.1: + resolution: {integrity: sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw==} hasBin: true /node-gyp@9.4.1: @@ -12990,8 +13022,8 @@ packages: npm-normalize-package-bin: 1.0.1 dev: true - /npm-bundled@3.0.0: - resolution: {integrity: sha512-Vq0eyEQy+elFpzsKjMss9kxqb9tG3YHg4dsyWuUENuzvSUWe1TCnW/vV9FkhvBk/brEDoDiVd+M1Btosa6ImdQ==} + /npm-bundled@3.0.1: + resolution: {integrity: sha512-+AvaheE/ww1JEwRHOrn4WHNzOxGtVp+adrg2AeZS/7KuxGUYFuBta98wYpfHBbJp6Tg6j1NKSEVHNcfZzJHQwQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: npm-normalize-package-bin: 3.0.1 @@ -13047,7 +13079,7 @@ packages: resolution: {integrity: sha512-d6RGEuRrNS5/N84iglPivjaJPxhDbZmlbTwTDX2IbcRHG5bZCdtysYMhwiPvcF4GisXHGn7xsxv+GQ7T/02M5Q==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: - ignore-walk: 6.0.4 + ignore-walk: 6.0.5 dev: true /npm-pick-manifest@8.0.2: @@ -13066,7 +13098,7 @@ packages: dependencies: make-fetch-happen: 11.1.1 minipass: 5.0.0 - minipass-fetch: 3.0.4 + minipass-fetch: 3.0.5 minipass-json-stream: 1.0.1 minizlib: 2.1.2 npm-package-arg: 10.1.0 @@ -13109,8 +13141,8 @@ packages: resolution: {integrity: sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==} dev: false - /nwsapi@2.2.9: - resolution: {integrity: sha512-2f3F0SEEer8bBu0dsNCFF50N0cTThV1nWFYcEYFZttdW0lDAoybv9cQoK7X7/68Z89S7FoRrVjP1LPX4XRf9vg==} + /nwsapi@2.2.10: + resolution: {integrity: sha512-QK0sRs7MKv0tKe1+5uZIQk/C8XGza4DAnztJG8iD+TpJIORARrCxczA738awHrZoHeTjSSoHqao2teO0dC/gFQ==} /nx@16.10.0: resolution: {integrity: sha512-gZl4iCC0Hx0Qe1VWmO4Bkeul2nttuXdPpfnlcDKSACGu3ZIo+uySqwOF8yBAxSTIf8xe2JRhgzJN1aFkuezEBg==} @@ -13130,7 +13162,7 @@ packages: '@yarnpkg/lockfile': 1.1.0 '@yarnpkg/parsers': 3.0.0-rc.46 '@zkochan/js-yaml': 0.0.6 - axios: 1.6.8(debug@4.3.4) + axios: 1.7.2(debug@4.3.5) chalk: 4.1.2 cli-cursor: 3.1.0 cli-spinners: 2.6.1 @@ -13521,7 +13553,7 @@ packages: resolution: {integrity: sha512-w34pqp733w35nElGG6eH1OnDnHEWud4uxruQ2nKzY/Uy0uOJmWFdjDcAC+xAD4goVuBZStwaAEBS21BANv83HQ==} engines: {node: '>=18'} dependencies: - ky: 1.2.4 + ky: 1.3.0 registry-auth-token: 5.0.2 registry-url: 6.0.1 semver: 7.6.2 @@ -13548,7 +13580,7 @@ packages: read-package-json: 6.0.4 read-package-json-fast: 3.0.2 sigstore: 1.9.0 - ssri: 10.0.5 + ssri: 10.0.6 tar: 6.2.1 transitivePeerDependencies: - bluebird @@ -13771,8 +13803,8 @@ packages: split2: 4.2.0 dev: false - /picocolors@1.0.0: - resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + /picocolors@1.0.1: + resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} /picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} @@ -13826,11 +13858,11 @@ packages: dependencies: find-up: 4.1.0 - /pkg-types@1.1.0: - resolution: {integrity: sha512-/RpmvKdxKf8uILTtoOhAgf30wYbP2Qw+L9p3Rvshx1JZVX+XQNZQFjlbmGHEGIm4CkVPlSn+NXmIM8+9oWQaSA==} + /pkg-types@1.1.1: + resolution: {integrity: sha512-ko14TjmDuQJ14zsotODv7dBlwxKhUKQEhuhmbqo1uCi9BB0Z2alo/wAXg6q1dTR5TyuqYyWhjtfe/Tsh+X28jQ==} dependencies: confbox: 0.1.7 - mlly: 1.6.1 + mlly: 1.7.0 pathe: 1.1.2 /pkg-up@3.1.0: @@ -13893,7 +13925,7 @@ packages: engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.7 - picocolors: 1.0.0 + picocolors: 1.0.1 source-map-js: 1.2.0 /postcss@8.4.38: @@ -13901,7 +13933,7 @@ packages: engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.7 - picocolors: 1.0.0 + picocolors: 1.0.1 source-map-js: 1.2.0 /postgres-array@2.0.0: @@ -13976,7 +14008,7 @@ packages: minimist: 1.2.8 mkdirp-classic: 0.5.3 napi-build-utils: 1.0.2 - node-abi: 3.62.0 + node-abi: 3.63.0 pump: 3.0.0 rc: 1.2.8 simple-get: 4.0.1 @@ -13992,6 +14024,13 @@ packages: resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==} engines: {node: '>=14'} hasBin: true + dev: false + + /prettier@3.3.0: + resolution: {integrity: sha512-J9odKxERhCQ10OC2yb93583f6UnYutOeiV5i0zEDS7UGTdUt0u+y8erxl3lBKvwo/JHyyoEdXjwp4dke9oyZ/g==} + engines: {node: '>=14'} + hasBin: true + dev: true /pretty-bytes@6.1.1: resolution: {integrity: sha512-mQUvGU6aUFQ+rNvTIAcZuWGRT9a6f6Yrg9bHs4ImKF+HZCEK+plBvnAZYSIQztknZF2qnzNtr6F8s0+IuptdlQ==} @@ -14019,7 +14058,7 @@ packages: resolution: {integrity: sha512-WuxUnVtlWL1OfZFQFuqvnvs6MiAGk9UNsBostyBOB0Is9wb5uRESevA6rnl/rkksXaGX3GzZhPup5d6Vp1nFew==} dev: false - /pretty-quick@4.0.0(prettier@3.2.5): + /pretty-quick@4.0.0(prettier@3.3.0): resolution: {integrity: sha512-M+2MmeufXb/M7Xw3Afh1gxcYpj+sK0AxEfnfF958ktFeAyi5MsKY5brymVURQLgPLV1QaF5P4pb2oFJ54H3yzQ==} engines: {node: '>=14'} hasBin: true @@ -14030,9 +14069,9 @@ packages: find-up: 5.0.0 ignore: 5.3.1 mri: 1.2.0 - picocolors: 1.0.0 + picocolors: 1.0.1 picomatch: 3.0.1 - prettier: 3.2.5 + prettier: 3.3.0 tslib: 2.6.2 dev: true @@ -14090,8 +14129,8 @@ packages: sisteransi: 1.0.5 dev: false - /promzard@1.0.1: - resolution: {integrity: sha512-ulDF77aULEHUoJkN5XZgRV5loHXBaqd9eorMvLNLvi2gXMuRAtwH6Gh4zsMHQY1kTt7tyv/YZwZW5C2gtj8F2A==} + /promzard@1.0.2: + resolution: {integrity: sha512-2FPputGL+mP3jJ3UZg/Dl9YOkovB7DX0oOr+ck5QbZ5MtORtds8k/BZdn+02peDLI8/YWbmzx34k5fA+fHvCVQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: read: 3.0.1 @@ -14165,7 +14204,6 @@ packages: /queue-tick@1.0.1: resolution: {integrity: sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==} - requiresBuild: true /quick-lru@4.0.1: resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} @@ -14245,7 +14283,7 @@ packages: gzip-size: 6.0.0 immer: 9.0.21 is-root: 2.1.0 - loader-utils: 3.2.1 + loader-utils: 3.2.2 open: 8.4.2 pkg-up: 3.1.0 prompts: 2.4.2 @@ -14269,7 +14307,7 @@ packages: dependencies: '@babel/core': 7.24.6 '@babel/generator': 7.24.6 - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.6 ast-types: 0.14.2 commander: 2.20.3 doctrine: 3.0.0 @@ -14289,7 +14327,7 @@ packages: '@babel/traverse': 7.24.6 '@babel/types': 7.24.6 '@types/babel__core': 7.20.5 - '@types/babel__traverse': 7.20.5 + '@types/babel__traverse': 7.20.6 '@types/doctrine': 0.0.9 '@types/resolve': 1.20.6 doctrine: 3.0.0 @@ -14313,7 +14351,7 @@ packages: peerDependencies: react: '>=16.13.1' dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.6 react: 18.2.0 dev: false @@ -14433,7 +14471,7 @@ packages: react: '>=16.6.0' react-dom: '>=16.6.0' dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.6 dom-helpers: 5.2.1 loose-envify: 1.4.0 prop-types: 15.8.1 @@ -14455,7 +14493,7 @@ packages: resolution: {integrity: sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: - json-parse-even-better-errors: 3.0.1 + json-parse-even-better-errors: 3.0.2 npm-normalize-package-bin: 3.0.1 dev: true @@ -14465,7 +14503,7 @@ packages: deprecated: This package is no longer supported. Please use @npmcli/package-json instead. dependencies: glob: 10.4.1 - json-parse-even-better-errors: 3.0.1 + json-parse-even-better-errors: 3.0.2 normalize-package-data: 5.0.0 npm-normalize-package-bin: 3.0.1 dev: true @@ -14658,7 +14696,7 @@ packages: /regenerator-transform@0.15.2: resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.6 dev: true /regexp.prototype.flags@1.5.2: @@ -14840,38 +14878,41 @@ packages: /robust-predicates@3.0.2: resolution: {integrity: sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==} - /rollup@4.17.2: - resolution: {integrity: sha512-/9ClTJPByC0U4zNLowV1tMBe8yMEAxewtR3cUNX5BoEpGH3dQEWpJLr6CLp0fPdYRF/fzVOgvDb1zXuakwF5kQ==} + /rollup@4.18.0: + resolution: {integrity: sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true dependencies: '@types/estree': 1.0.5 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.17.2 - '@rollup/rollup-android-arm64': 4.17.2 - '@rollup/rollup-darwin-arm64': 4.17.2 - '@rollup/rollup-darwin-x64': 4.17.2 - '@rollup/rollup-linux-arm-gnueabihf': 4.17.2 - '@rollup/rollup-linux-arm-musleabihf': 4.17.2 - '@rollup/rollup-linux-arm64-gnu': 4.17.2 - '@rollup/rollup-linux-arm64-musl': 4.17.2 - '@rollup/rollup-linux-powerpc64le-gnu': 4.17.2 - '@rollup/rollup-linux-riscv64-gnu': 4.17.2 - '@rollup/rollup-linux-s390x-gnu': 4.17.2 - '@rollup/rollup-linux-x64-gnu': 4.17.2 - '@rollup/rollup-linux-x64-musl': 4.17.2 - '@rollup/rollup-win32-arm64-msvc': 4.17.2 - '@rollup/rollup-win32-ia32-msvc': 4.17.2 - '@rollup/rollup-win32-x64-msvc': 4.17.2 + '@rollup/rollup-android-arm-eabi': 4.18.0 + '@rollup/rollup-android-arm64': 4.18.0 + '@rollup/rollup-darwin-arm64': 4.18.0 + '@rollup/rollup-darwin-x64': 4.18.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.18.0 + '@rollup/rollup-linux-arm-musleabihf': 4.18.0 + '@rollup/rollup-linux-arm64-gnu': 4.18.0 + '@rollup/rollup-linux-arm64-musl': 4.18.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.18.0 + '@rollup/rollup-linux-riscv64-gnu': 4.18.0 + '@rollup/rollup-linux-s390x-gnu': 4.18.0 + '@rollup/rollup-linux-x64-gnu': 4.18.0 + '@rollup/rollup-linux-x64-musl': 4.18.0 + '@rollup/rollup-win32-arm64-msvc': 4.18.0 + '@rollup/rollup-win32-ia32-msvc': 4.18.0 + '@rollup/rollup-win32-x64-msvc': 4.18.0 fsevents: 2.3.3 /rrweb-cssom@0.6.0: resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} + /rrweb-cssom@0.7.0: + resolution: {integrity: sha512-KlSv0pm9kgQSRxXEMgtivPJ4h826YHsuob8pSHcfSZsSXGtvpEAie8S0AnXuObEJ7nhikOb4ahwxDm0H2yW17g==} + /rtl-css-js@1.16.1: resolution: {integrity: sha512-lRQgou1mu19e+Ya0LsTvKrVJ5TYUbqCVPAiImX3UfLTenarvPUl1QFdvu5Z3PYmHT9RCcwIfbjRQBntExyj3Zg==} dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.6 dev: false /run-async@2.4.1: @@ -14955,8 +14996,8 @@ packages: ajv: 6.12.6 ajv-keywords: 3.5.2(ajv@6.12.6) - /search-insights@2.13.0: - resolution: {integrity: sha512-Orrsjf9trHHxFRuo9/rzm0KIWmgzE8RMlZMzuhZOJ01Rnz3D0YBAe+V6473t6/H6c7irs6Lt48brULAiRWb3Vw==} + /search-insights@2.14.0: + resolution: {integrity: sha512-OLN6MsPMCghDOqlCtsIsYgtsC0pnwVTyT9Mu6A3ewOj1DxvzZF6COrn2g86E/c05xbktB0XN04m/t1Z+n+fTGw==} dev: false /semver-compare@1.0.0: @@ -15161,6 +15202,17 @@ packages: is-arrayish: 0.3.2 dev: true + /sinon@18.0.0: + resolution: {integrity: sha512-+dXDXzD1sBO6HlmZDd7mXZCR/y5ECiEiGCBSGuFD/kZ0bDTofPYc6JaeGmPSF+1j1MejGUWkORbYOLDyvqCWpA==} + dependencies: + '@sinonjs/commons': 3.0.1 + '@sinonjs/fake-timers': 11.2.2 + '@sinonjs/samsam': 8.0.0 + diff: 5.2.0 + nise: 6.0.0 + supports-color: 7.2.0 + dev: true + /sirv@2.0.4: resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} engines: {node: '>= 10'} @@ -15203,7 +15255,7 @@ packages: engines: {node: '>= 10'} dependencies: agent-base: 6.0.2 - debug: 4.3.4 + debug: 4.3.5 socks: 2.8.3 transitivePeerDependencies: - supports-color @@ -15261,7 +15313,7 @@ packages: resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} dependencies: spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.17 + spdx-license-ids: 3.0.18 dev: true /spdx-exceptions@2.5.0: @@ -15272,11 +15324,11 @@ packages: resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} dependencies: spdx-exceptions: 2.5.0 - spdx-license-ids: 3.0.17 + spdx-license-ids: 3.0.18 dev: true - /spdx-license-ids@3.0.17: - resolution: {integrity: sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==} + /spdx-license-ids@3.0.18: + resolution: {integrity: sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==} dev: true /split2@3.2.2: @@ -15309,8 +15361,8 @@ packages: engines: {node: '>= 0.6'} dev: false - /ssri@10.0.5: - resolution: {integrity: sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A==} + /ssri@10.0.6: + resolution: {integrity: sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: minipass: 7.1.2 @@ -15344,13 +15396,14 @@ packages: resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} engines: {node: '>=10.0.0'} - /streamx@2.16.1: - resolution: {integrity: sha512-m9QYj6WygWyWa3H1YY69amr4nVgy61xfjys7xO7kviL5rfIEc2naf+ewFiOA+aEJD7y0JO3h2GoiUv4TDwEGzQ==} + /streamx@2.18.0: + resolution: {integrity: sha512-LLUC1TWdjVdn1weXGcSxyTR3T4+acB6tVGXT95y0nGbca4t4o/ng1wKAGTljm9VicuCVLvRlqFYXYy5GwgM7sQ==} dependencies: fast-fifo: 1.3.2 queue-tick: 1.0.1 + text-decoder: 1.1.0 optionalDependencies: - bare-events: 2.2.2 + bare-events: 2.3.1 /string-at@1.1.0: resolution: {integrity: sha512-jCpPowWKBn0NFdvtmK2qxK40Ol4jPcgCt8qYnKpPx6B5eDwHMDhRvq9MCsDEgsOTNtbXY6beAMHMRT2qPJXllA==} @@ -15680,7 +15733,7 @@ packages: tar-stream: 3.1.7 optionalDependencies: bare-fs: 2.3.0 - bare-path: 2.1.2 + bare-path: 2.1.3 dev: true /tar-stream@2.2.0: @@ -15698,7 +15751,7 @@ packages: dependencies: b4a: 1.6.6 fast-fifo: 1.3.2 - streamx: 2.16.1 + streamx: 2.18.0 /tar@6.1.11: resolution: {integrity: sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==} @@ -15795,6 +15848,11 @@ packages: minimatch: 3.1.2 dev: true + /text-decoder@1.1.0: + resolution: {integrity: sha512-TmLJNj6UgX8xcUZo4UDStGQtDiTzF7BzWlzn9g7UWrjkpHr5uJTK1ld16wZ3LXb2vb6jH8qU89dW5whuMdXYdw==} + dependencies: + b4a: 1.6.6 + /text-extensions@1.9.0: resolution: {integrity: sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==} engines: {node: '>=0.10'} @@ -16000,17 +16058,17 @@ packages: typescript: optional: true dependencies: - bundle-require: 4.0.3(esbuild@0.19.12) + bundle-require: 4.1.0(esbuild@0.19.12) cac: 6.7.14 chokidar: 3.6.0 - debug: 4.3.4 + debug: 4.3.5 esbuild: 0.19.12 execa: 5.1.1 globby: 11.1.0 joycon: 3.1.1 postcss-load-config: 4.0.2 resolve-from: 5.0.0 - rollup: 4.17.2 + rollup: 4.18.0 source-map: 0.8.0-beta.0 sucrase: 3.35.0 tree-kill: 1.2.2 @@ -16046,7 +16104,7 @@ packages: engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: '@tufjs/models': 1.0.4 - debug: 4.3.4 + debug: 4.3.5 make-fetch-happen: 11.1.1 transitivePeerDependencies: - supports-color @@ -16334,15 +16392,15 @@ packages: engines: {node: '>=4'} dev: true - /update-browserslist-db@1.0.13(browserslist@4.23.0): - resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} + /update-browserslist-db@1.0.16(browserslist@4.23.0): + resolution: {integrity: sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' dependencies: browserslist: 4.23.0 escalade: 3.1.2 - picocolors: 1.0.0 + picocolors: 1.0.1 /uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} @@ -16461,10 +16519,10 @@ packages: hasBin: true dependencies: cac: 6.7.14 - debug: 4.3.4 + debug: 4.3.5 pathe: 1.1.2 - picocolors: 1.0.0 - vite: 5.2.11(@types/node@20.12.8) + picocolors: 1.0.1 + vite: 5.2.12(@types/node@20.12.8) transitivePeerDependencies: - '@types/node' - less @@ -16475,8 +16533,8 @@ packages: - supports-color - terser - /vite@5.2.11(@types/node@20.12.11): - resolution: {integrity: sha512-HndV31LWW05i1BLPMUCE1B9E9GFbOu1MbenhS58FuK6owSO5qHm7GiCotrNY1YE5rMeQSFBGmT5ZaLEjFizgiQ==} + /vite@5.2.12(@types/node@20.12.11): + resolution: {integrity: sha512-/gC8GxzxMK5ntBwb48pR32GGhENnjtY30G4A0jemunsBkiEZFw60s8InGpN8gkhHEkjnRK1aSAxeQgwvFhUHAA==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -16506,13 +16564,13 @@ packages: '@types/node': 20.12.11 esbuild: 0.20.2 postcss: 8.4.38 - rollup: 4.17.2 + rollup: 4.18.0 optionalDependencies: fsevents: 2.3.3 dev: false - /vite@5.2.11(@types/node@20.12.8): - resolution: {integrity: sha512-HndV31LWW05i1BLPMUCE1B9E9GFbOu1MbenhS58FuK6owSO5qHm7GiCotrNY1YE5rMeQSFBGmT5ZaLEjFizgiQ==} + /vite@5.2.12(@types/node@20.12.8): + resolution: {integrity: sha512-/gC8GxzxMK5ntBwb48pR32GGhENnjtY30G4A0jemunsBkiEZFw60s8InGpN8gkhHEkjnRK1aSAxeQgwvFhUHAA==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -16542,7 +16600,7 @@ packages: '@types/node': 20.12.8 esbuild: 0.20.2 postcss: 8.4.38 - rollup: 4.17.2 + rollup: 4.18.0 optionalDependencies: fsevents: 2.3.3 @@ -16557,21 +16615,21 @@ packages: dom-accessibility-api: 0.6.3 lodash-es: 4.17.21 redent: 4.0.0 - vitest: 1.6.0(@types/node@20.12.8)(jsdom@24.0.0) + vitest: 1.6.0(@types/node@20.12.8)(jsdom@24.1.0) dev: true - /vitest-fail-on-console@0.7.0(vite@5.2.11)(vitest@1.6.0): + /vitest-fail-on-console@0.7.0(vite@5.2.12)(vitest@1.6.0): resolution: {integrity: sha512-oXxHkCJTDL4eA7DQYHa8D0e9RBKeU/mI3nxI54Qjt7MR/m+jeO623apek8kpIaIEjm0/M6syk3evfTm6zFNSCg==} peerDependencies: vite: '>=4.5.2' vitest: '>=0.26.2' dependencies: chalk: 5.3.0 - vite: 5.2.11(@types/node@20.12.8) - vitest: 1.6.0(@types/node@20.12.8)(jsdom@24.0.0) + vite: 5.2.12(@types/node@20.12.8) + vitest: 1.6.0(@types/node@20.12.8)(jsdom@24.1.0) dev: true - /vitest@1.6.0(@types/node@20.12.8)(jsdom@24.0.0): + /vitest@1.6.0(@types/node@20.12.8)(jsdom@24.1.0): resolution: {integrity: sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true @@ -16604,18 +16662,18 @@ packages: '@vitest/utils': 1.6.0 acorn-walk: 8.3.2 chai: 4.4.1 - debug: 4.3.4 + debug: 4.3.5 execa: 8.0.1 - jsdom: 24.0.0 + jsdom: 24.1.0 local-pkg: 0.5.0 magic-string: 0.30.10 pathe: 1.1.2 - picocolors: 1.0.0 + picocolors: 1.0.1 std-env: 3.7.0 strip-literal: 2.1.0 tinybench: 2.8.0 tinypool: 0.8.4 - vite: 5.2.11(@types/node@20.12.8) + vite: 5.2.12(@types/node@20.12.8) vite-node: 1.6.0(@types/node@20.12.8) why-is-node-running: 2.2.2 transitivePeerDependencies: @@ -16674,7 +16732,7 @@ packages: gzip-size: 6.0.0 html-escaper: 2.0.2 opener: 1.5.2 - picocolors: 1.0.0 + picocolors: 1.0.1 sirv: 2.0.4 ws: 7.5.9 transitivePeerDependencies: @@ -16704,9 +16762,9 @@ packages: acorn: 8.11.3 acorn-import-assertions: 1.9.0(acorn@8.11.3) browserslist: 4.23.0 - chrome-trace-event: 1.0.3 - enhanced-resolve: 5.16.0 - es-module-lexer: 1.5.2 + chrome-trace-event: 1.0.4 + enhanced-resolve: 5.16.1 + es-module-lexer: 1.5.3 eslint-scope: 5.1.1 events: 3.3.0 glob-to-regexp: 0.4.1 @@ -16743,9 +16801,9 @@ packages: acorn: 8.11.3 acorn-import-assertions: 1.9.0(acorn@8.11.3) browserslist: 4.23.0 - chrome-trace-event: 1.0.3 - enhanced-resolve: 5.16.0 - es-module-lexer: 1.5.2 + chrome-trace-event: 1.0.4 + enhanced-resolve: 5.16.1 + es-module-lexer: 1.5.3 eslint-scope: 5.1.1 events: 3.3.0 glob-to-regexp: 0.4.1 @@ -17126,7 +17184,7 @@ packages: '@netlify/functions': 2.7.0(@opentelemetry/api@1.8.0) '@slack/bolt': 3.18.0 execa: 8.0.1 - google-auth-library: 9.9.0 + google-auth-library: 9.10.0 transitivePeerDependencies: - '@opentelemetry/api' - bufferutil diff --git a/scripts/docs/buildCoreApiDocs/config/getCoreComponentInfo.ts b/scripts/docs/buildCoreApiDocs/config/getCoreComponentInfo.ts index a8fc142044e..9ae51207415 100644 --- a/scripts/docs/buildCoreApiDocs/config/getCoreComponentInfo.ts +++ b/scripts/docs/buildCoreApiDocs/config/getCoreComponentInfo.ts @@ -56,8 +56,21 @@ export function getCoreComponentInfo(filename: string): ComponentInfo { srcInfo = parseFile(filename); return srcInfo; }, - getInheritance: () => { - return null; + getInheritance: (x) => { + switch (x) { + case 'XDataGrid': + return { + name: 'X DataGrid', + apiPathname: 'https://mui.com/x/api/data-grid/data-grid/', + }; + case 'XLineChart': + return { + name: 'X LineChart', + apiPathname: 'https://mui.com/x/api/charts/line-chart/', + }; + default: + return null; + } }, getDemos: () => demos, };