diff --git a/.eslintrc.js b/.eslintrc.js index 84e943f7d2a685..c716674a2f2128 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -120,6 +120,10 @@ module.exports = /** @type {Config} */ ({ variables: true, }, ], + '@typescript-eslint/no-unused-vars': [ + 'error', + { vars: 'all', args: 'after-used', ignoreRestSiblings: true, argsIgnorePattern: '^_' }, + ], 'no-use-before-define': 'off', // disabled type-aware linting due to performance considerations @@ -242,8 +246,6 @@ module.exports = /** @type {Config} */ ({ // We re-export default in many places, remove when https://github.com/airbnb/javascript/issues/2500 gets resolved 'no-restricted-exports': 'off', - // Some of these occurences are deliberate and fixing them will break things in repos that use @monorepo dependency - 'import/no-relative-packages': 'off', // Avoid accidental auto-"fixes" https://github.com/jsx-eslint/eslint-plugin-react/issues/3458 'react/no-invalid-html-attribute': 'off', @@ -304,15 +306,6 @@ module.exports = /** @type {Config} */ ({ 'react/no-unused-prop-types': 'off', }, }, - { - files: ['docs/src/modules/components/**/*.js'], - rules: { - 'material-ui/no-hardcoded-labels': [ - 'error', - { allow: ['MUI', 'X', 'GitHub', 'Stack Overflow'] }, - ], - }, - }, // Next.js plugin { files: ['docs/**/*'], @@ -325,18 +318,27 @@ module.exports = /** @type {Config} */ ({ rules: { // We're not using the Image component at the moment '@next/next/no-img-element': 'off', + 'no-restricted-imports': [ + 'error', + { + paths: NO_RESTRICTED_IMPORTS_PATHS_TOP_LEVEL_PACKAGES, + patterns: NO_RESTRICTED_IMPORTS_PATTERNS_DEEPLY_NESTED, + }, + ], }, }, - // Next.js entry points pages { - files: ['docs/pages/**/*.?(c|m)[jt]s?(x)'], + files: ['docs/src/modules/components/**/*'], rules: { - 'react/prop-types': 'off', + 'material-ui/no-hardcoded-labels': [ + 'error', + { allow: ['MUI', 'X', 'GitHub', 'Stack Overflow'] }, + ], }, }, // demos { - files: ['docs/src/pages/**/*.?(c|m)[jt]s?(x)', 'docs/data/**/*.?(c|m)[jt]s?(x)'], + files: ['docs/src/pages/**/*', 'docs/data/**/*'], rules: { // This most often reports data that is defined after the component definition. // This is safe to do and helps readability of the demo code since the data is mostly irrelevant. @@ -346,8 +348,15 @@ module.exports = /** @type {Config} */ ({ 'no-console': 'off', }, }, + // Next.js entry points pages { - files: ['docs/data/**/*.?(c|m)[jt]s?(x)'], + files: ['docs/pages/**/*'], + rules: { + 'react/prop-types': 'off', + }, + }, + { + files: ['docs/data/**/*'], excludedFiles: [ // filenames/match-exported sees filename as 'file-name.d' // Plugin looks unmaintain, find alternative? (e.g. eslint-plugin-project-structure) @@ -359,6 +368,14 @@ module.exports = /** @type {Config} */ ({ 'filenames/match-exported': ['error'], }, }, + { + files: ['docs/data/material/getting-started/templates/**/*'], + rules: { + // So we can use # to improve the page UX + // and so developer get eslint warning to remind them to fix the links + 'jsx-a11y/anchor-is-valid': 'off', + }, + }, { files: ['*.d.ts'], rules: { @@ -442,18 +459,6 @@ module.exports = /** @type {Config} */ ({ 'no-bitwise': 'off', }, }, - { - files: ['docs/**/*.?(c|m)[jt]s?(x)'], - rules: { - 'no-restricted-imports': [ - 'error', - { - paths: NO_RESTRICTED_IMPORTS_PATHS_TOP_LEVEL_PACKAGES, - patterns: NO_RESTRICTED_IMPORTS_PATTERNS_DEEPLY_NESTED, - }, - ], - }, - }, { files: ['packages/*/src/**/*.?(c|m)[jt]s?(x)'], excludedFiles: ['*.d.ts', '*.spec.*'], @@ -529,5 +534,11 @@ module.exports = /** @type {Config} */ ({ 'react/react-in-jsx-scope': 'off', }, }, + { + files: ['apps/**/*'], + rules: { + 'import/no-relative-packages': 'off', + }, + }, ], }); diff --git a/.github/ISSUE_TEMPLATE/1.bug.yml b/.github/ISSUE_TEMPLATE/1.bug.yml index c8c7c2d05eb11c..95bf615df300ff 100644 --- a/.github/ISSUE_TEMPLATE/1.bug.yml +++ b/.github/ISSUE_TEMPLATE/1.bug.yml @@ -28,10 +28,8 @@ body: Please provide a link to a live example and an unambiguous set of steps to reproduce this bug. See our [documentation](https://mui.com/material-ui/getting-started/support/#bug-reproductions) on how to build a reproduction case. value: | - Link to live example: (required) - Steps: - 1. + 1. Open this link to live example: (required) 2. 3. - type: textarea diff --git a/.github/workflows/cherry-pick-next-to-master.yml b/.github/workflows/cherry-pick-next-to-master.yml deleted file mode 100644 index 52a5fe7c8be6bb..00000000000000 --- a/.github/workflows/cherry-pick-next-to-master.yml +++ /dev/null @@ -1,34 +0,0 @@ -name: Cherry pick next to master - -on: - pull_request_target: - branches: - - next - types: ['closed'] - -permissions: {} - -jobs: - cherry_pick_to_master: - runs-on: ubuntu-latest - name: Cherry pick into master - permissions: - pull-requests: write - contents: write - if: ${{ contains(github.event.pull_request.labels.*.name, 'needs cherry-pick') && github.event.pull_request.merged == true }} - steps: - - name: Checkout - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - with: - fetch-depth: 0 - - name: Cherry pick and create the new PR - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - uses: carloscastrojumo/github-cherry-pick-action@503773289f4a459069c832dc628826685b75b4b3 # v1.0.10 - with: - branch: master - body: 'Cherry-pick of #{old_pull_request_id}' - cherry-pick-branch: ${{ format('cherry-pick-{0}', github.event.number) }} - title: '{old_title} (@${{ github.event.pull_request.user.login }})' - labels: | - cherry-pick diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 196e419300736a..df6a8e19d6cfad 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -19,7 +19,7 @@ jobs: uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@4f3212b61783c3c68e8309a0f18a699764811cda # v3.27.1 + uses: github/codeql-action/init@f09c1c0a94de965c15400f5634aa42fac8fb8f88 # v3.27.5 with: languages: typescript config-file: ./.github/codeql/codeql-config.yml @@ -30,4 +30,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@4f3212b61783c3c68e8309a0f18a699764811cda # v3.27.1 + uses: github/codeql-action/analyze@f09c1c0a94de965c15400f5634aa42fac8fb8f88 # v3.27.5 diff --git a/.github/workflows/create-cherry-pick-pr.yml b/.github/workflows/create-cherry-pick-pr.yml new file mode 100644 index 00000000000000..fdfe07ff19c315 --- /dev/null +++ b/.github/workflows/create-cherry-pick-pr.yml @@ -0,0 +1,18 @@ +name: Create cherry-pick PR +on: + pull_request_target: + branches: + - 'next' + - 'v*.x' + - 'master' + types: ['closed'] + +permissions: {} + +jobs: + create_pr: + name: Create cherry-pick PR + uses: mui/mui-public/.github/workflows/prs_create-cherry-pick-pr.yml@master + permissions: + contents: write + pull-requests: write diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index ed78d7610a8171..190640bd7d46d7 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -43,6 +43,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: Upload to code-scanning - uses: github/codeql-action/upload-sarif@4f3212b61783c3c68e8309a0f18a699764811cda # v3.27.1 + uses: github/codeql-action/upload-sarif@f09c1c0a94de965c15400f5634aa42fac8fb8f88 # v3.27.5 with: sarif_file: results.sarif diff --git a/CHANGELOG.md b/CHANGELOG.md index d5c36e91c1ca76..67592edc9a5701 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,206 @@ # [Versions](https://mui.com/versions/) -## 6.1.6 +## 6.1.10 + + + +_Dec 3, 2024_ + +A big thanks to the 11 contributors who made this release possible. + +### `@mui/material@6.1.10` + +- [Avatar] Fix `slotProps.img` not spread to hook (#44536) @siriwatknp +- [FilledInput] Use `slotProps` instead of `componentsProps` (#44552) @siriwatknp +- [Grid2] Fix theme scoping error (#44599) @siriwatknp +- [Grid2] Add container styles from styleOverrides (#44598) @sai6855 +- Skip `tonalOffset` from setting color channel (#44585) @siriwatknp +- Remove few more React.ReactElement types (#44290) @sai6855 +- [Tabs] Fix `ScrollbarSize` ref being overriden (#44593) @DiegoAndai +- [Select][TextField] Fix screen reader from saying `&ZeroWidthSpace` (#44631) @arishoham + +### `@mui/system@6.1.10` + +- [ThemeProvider] Optimize `theme` changes when enabling CSS theme variables (#44588) @siriwatknp + +### Docs + +- Notification for the MUI X v8 alpha zero announcement blog post (#44629) @joserodolfofreitas +- Bump React Router to ^7.0.1 (#44531) @oliviertassinari +- [material-ui] Replace testid with id in migration guide (#44636) @sai6855 +- [material-ui][TextField] Update usage of `InputLabelProps` in docs (#44634) @sai6855 +- [material-ui][ListItem] Add missing diffs in migration guide (#44638) @sai6855 +- [examples] Use Next.js 14 on examples (#44486) @DiegoAndai +- Update links and sidebar nav for Base UI components in Material UI (#44581) @samuelsycamore + +### Core + +- Remove `getSlotOwnerState` from `useSlot` util (#44403) @ZeeshanTamboli +- Extract useRippleHandler outside of ButtonBase (#44591) @albarv340 +- Update eslint config (#44586) @MBilalShafi +- [core-infra] Remove useless fragments (#44516) @oliviertassinari +- [docs-infra] Fix Banner CLS (#44632) @oliviertassinari +- [docs-infra] Change CSS vars generation to be extracted from Enum (#44587) @mnajdova +- [docs-infra] Automatically hide Black Friday banner (#44630) @oliviertassinari +- [docs-infra] Fix TOC RTL padding regression (#44535) @oliviertassinari +- [test-utils] Remove leftover React.ReactElement from describeConformance.tsx (#44639) @sai6855 + +All contributors of this release in alphabetical order: @albarv340, @arishoham, @DiegoAndai, @joserodolfofreitas, @MBilalShafi, @mnajdova, @oliviertassinari, @sai6855, @samuelsycamore, @siriwatknp, @ZeeshanTamboli + +## 6.1.9 + + + +_Nov 27, 2024_ + +A big thanks to the 8 contributors who made this release possible. + +### `@mui/material@6.1.9` + +- [Select] Omit `placeholder` from props (#44502) @Juneezee +- [Grid2] Add container class to `Grid2Classes` (#44562) @sai6855 + +### `@mui/system@6.1.9` + +- Add ThemeProvider `noSsr` to prevent double rendering (#44451) @siriwatknp + +### `@mui/codemod@6.1.9` + +- [codemod] Fix handling of computed `paragraph` props (#44195) @joshkel + +### `@mui/material-pigment-css@6.1.9` + +- Make @pigment-css/react as peer dependency (#44498) @brijeshb42 + +### Docs + +- [material-ui] Add missing required dependencies in dashboard template README (#44476) @mesqueeb +- [material-ui] Add missing Roboto import to Next.js integration docs (#44462) @StaceyD22 +- [material-ui][Dialog] Fix padding in SimpleDialog demo (#44467) @oliviertassinari +- Fix template page issues (#44466) @oliviertassinari +- [examples] Add dark mode example for Material UI + Pigment CSS (#44480) @mnajdova + +### Core + +- Remove TODO line in the changelog (#44484) @mnajdova +- Polish image display (418e888) @oliviertassinari +- [core-infra] Add no-relative-packages (#44489) @oliviertassinari +- [docs-infra] Support CSS variables API info (#44559) @mnajdova +- [docs-infra] Fix display when ad-block triggers (#44567) @oliviertassinari +- [docs-infra] Improve locator finding using visible option (#44541) @siriwatknp +- [docs-infra] Correctly flatten the pages tree (#44514) @oliviertassinari +- [docs-infra] Fix Sponsor design regression (#44515) @oliviertassinari +- [test] Remove React.ReactElement from describeConformance.tsx (#44318) @sai6855 +- [test] Do not enforce the presence of `ownerState.className` in `describeConformance` (#44479) @flaviendelangle + +All contributors of this release in alphabetical order: @brijeshb42, @flaviendelangle, @joshkel, @Juneezee, @mesqueeb, @mnajdova, @oliviertassinari, @sai6855, @siriwatknp, @StaceyD22 + +## v6.1.8 + + + +_Nov 20, 2024_ + +A big thanks to the 10 contributors who made this release possible. + +### `@mui/material@6.1.8` + +- [Autocomplete] Use `ul` element for the listbox (#44422) @DiegoAndai +- [Grid2] Remove item and zeroMinWidth classes from grid2Classes (#44419) @sai6855 +- [StepIcon] Add SvgIconOwnProps type to StepIcon props (#44337) @sai6855 +- Add generic back to `useMediaQuery` to prevent a breaking change (#44455) @siriwatknp +- [Tooltip] Deprecate `*Component` and `*Props` for v6 (#44350) @siriwatknp + +### `@mui/system@6.1.8` + +- Warn when calling `setMode` without configuring `colorSchemeSelector` (#43783) @siriwatknp + +### `@mui/styled-engine@6.1.8` + +- Add back removed internal function (#44421) @mnajdova + +### `@mui/utils@6.1.8` + +- Skip deep clone React element (#44400) @siriwatknp +- Add documentation to `useForkRef` (#44410) @JCQuintas + +### Docs + +- [Accordion] Replace hardcoded classes with constants in demos (#44453) @ZeeshanTamboli +- [material-ui][Autocomplete] Fix virtualization demo (#44382) @DiegoAndai +- Revert #44388 (#44454) @prakhargupta1 +- Add App starters in related-projects.md (#44315) @oliviertassinari +- Bring back `*Component` and `*Props` codemods and deprecation messages (#44383) @DiegoAndai +- [docs] Copyedit Templates page (#44461) @samuelsycamore + +### Core + +- Remove `stylis-plugin-rtl-sc` (#44447) @renovate[bot] +- [test][Autocomplete] Make virtualize regression screenshots deterministic (#44425) @DiegoAndai +- [blog] Fix reference to subdomain on MUI X v8 alpha zero post (#44416) @joserodolfofreitas +- [blog] MUI X v8 alpha zero blog post (#44377) @joserodolfofreitas +- [code-infra] Use vitest-compatible skip in `describeConformance` (#44412) @JCQuintas +- Keep OpenSSF badge up-to-date (aef2bf2) @oliviertassinari +- Polish useForkRef docs (#44424) @oliviertassinari +- [infra] Upgrade Cherry-pick workflow to latest (#44448) @oliviertassinari + +All contributors of this release in alphabetical order: @DiegoAndai, @JCQuintas, @joserodolfofreitas, @mnajdova, @oliviertassinari, @prakhargupta1, @sai6855, samuelsycamore, @siriwatknp, @ZeeshanTamboli + +## v6.1.7 + + + +_Nov 13, 2024_ + +A big thanks to the 13 contributors who made this release possible. +This release includes fixes as well as documentation improvements. + +### `@mui/material@6.1.7` + +- Fix default props theme scoping (#44340) @siriwatknp +- Support theme scoping in `useMediaQuery` (#44339) @siriwatknp +- [Grid] Fix regression spacing prop with string value (#44376) @siriwatknp + +### `@mui/styled-engine-sc@6.1.7` + +- Fix missing `@types/hoist-non-react-statics` causing `styled` returns any (#44397) @megos + +### Docs + +- Replace 'Experimental APIs - Toolpad' with 'Toolpad (Beta)' (#44388) @prakhargupta1 +- Fix Pigment CSS install (#44353) @oliviertassinari +- Fix dashboard menu warning (#44317) @siriwatknp +- Add runtime theme section for Material Pigment CSS (#44137) @siriwatknp +- Add hash to `key` to remove noise from console (#44289) @sai6855 +- Revise Example Projects and Related Projects pages (#44191) @samuelsycamore +- [material-ui] Fix typo in typography theme set up for templates (#44338) @navedqb +- [material-ui] Add StackBlitz/CodeSandbox buttons to template cards (#44253) @zanivan +- [material-ui] Fix Sign-in/Sign-up templates layout (#44281) @zanivan +- [material-ui] Remove noise in template (#44260) @oliviertassinari +- [material-ui][Rating] Add uncontrolled example to Basic Rating demo (#44386) @sai6855 +- [material-ui][TextField] Replace InputProps with slotProps.input in demo (#44288) @sai6855 + +### Core + +- [blog] Follow media asset guidelines (#44374) @oliviertassinari +- [code-infra] Changes for test util to work in `vitest` (#43625) @JCQuintas +- Remove old marked JS options (#44375) @ZeeshanTamboli +- Fix webpack capitalization (#44352) @oliviertassinari +- Fix Next.js link 404 (710cd95) @oliviertassinari +- Update Gold sponsoring backlinks (#44316) @oliviertassinari +- Fix tools-public.mui.com redirection (9196fa5) @oliviertassinari +- Remove blank AlertTitle test file (#44282) @ZeeshanTamboli +- [docs-infra] Fix ad in RTL (#44345) @oliviertassinari +- [docs-infra] Enforce punctuation on descriptions (#44292) @oliviertassinari +- [docs-infra] Add CodeSandbox and StackBlitz to vale vocab (6db477a) @oliviertassinari +- [docs-infra] Fix correct spelling of VS Code (#44277) @oliviertassinari +- [docs-infra] Add a `rawDescriptions` option (#44390) @vladmoroz +- [examples] Add missing `clsx` dependency (#43526) @Janpot +- [infra] Fix @renovate[bot] appearing in changelog (#44275) @mnajdova + +All contributors of this release in alphabetical order: @Janpot, @JCQuintas, @megos, @mnajdova, @navedqb, @oliviertassinari, @prakhargupta1, @sai6855, @samuelsycamore, @siriwatknp, @vladmoroz, @zanivan, @ZeeshanTamboli + +## v6.1.6 @@ -52,7 +252,7 @@ A big thanks to the 13 contributors who made this release possible. All contributors of this release in alphabetical order: @aarongarciah, @blackcow1987, @DiegoAndai, @jimmycallin, @joshkel, @mnajdova, @navedqb, @nphmuller, @o-alexandrov, @oliviertassinari, @prakhargupta1, @sai6855, @siriwatknp -## 6.1.5 +## v6.1.5 diff --git a/README.md b/README.md index 8b4962c352edc4..ba34401d509911 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ [![Renovate status](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://github.com/mui/material-ui/issues/27062) [![Average time to resolve an issue](https://isitmaintained.com/badge/resolution/mui/material-ui.svg)](https://isitmaintained.com/project/mui/material-ui 'Average time to resolve an issue') [![Open Collective backers and sponsors](https://img.shields.io/opencollective/all/mui-org)](https://opencollective.com/mui-org) -[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/1320/badge)](https://bestpractices.coreinfrastructure.org/projects/1320) +[![OpenSSF Best Practices](https://www.bestpractices.dev/projects/1320/badge)](https://www.bestpractices.dev/projects/1320) @@ -61,7 +61,6 @@ View the [Joy UI documentation](https://mui.com/joy-ui/getting-started/).

octopus doit - marblism

Diamond sponsors are those who have pledged \$1,500/month or more to MUI. @@ -100,6 +99,8 @@ via [Open Collective](https://opencollective.com/mui-org) or via [Patreon](http   views4you.comViews4You   + poprey.comPoprey +  

Gold sponsors are those who have pledged \$500/month or more to MUI. diff --git a/apps/pigment-css-next-app/package.json b/apps/pigment-css-next-app/package.json index 7c3a07eae2609c..8f5ba0e1da3942 100644 --- a/apps/pigment-css-next-app/package.json +++ b/apps/pigment-css-next-app/package.json @@ -23,12 +23,12 @@ "react-dom": "^18.3.1" }, "devDependencies": { - "@pigment-css/nextjs-plugin": "0.0.26", - "@types/node": "^20.17.6", + "@pigment-css/nextjs-plugin": "0.0.28", + "@types/node": "^20.17.9", "@types/react": "^18.3.12", "@types/react-dom": "^18.3.1", "eslint": "^8.57.1", - "typescript": "^5.6.3" + "typescript": "^5.7.2" }, "nx": { "targets": { diff --git a/apps/pigment-css-vite-app/package.json b/apps/pigment-css-vite-app/package.json index 347e22a96199ae..6f0d50f7ddcd28 100644 --- a/apps/pigment-css-vite-app/package.json +++ b/apps/pigment-css-vite-app/package.json @@ -27,16 +27,16 @@ "devDependencies": { "@babel/preset-react": "^7.25.9", "@babel/preset-typescript": "^7.26.0", - "@pigment-css/vite-plugin": "0.0.26", + "@pigment-css/vite-plugin": "0.0.28", "@types/react": "^18.3.12", "@types/react-dom": "^18.3.1", "@types/webfontloader": "^1.6.38", - "@vitejs/plugin-react": "^4.3.3", - "postcss": "^8.4.47", + "@vitejs/plugin-react": "^4.3.4", + "postcss": "^8.4.49", "postcss-combine-media-query": "^1.0.1", - "vite": "5.4.10", + "vite": "5.4.11", "vite-plugin-node-polyfills": "0.22.0", - "vite-plugin-pages": "^0.32.3" + "vite-plugin-pages": "^0.32.4" }, "nx": { "targets": { diff --git a/benchmark/package.json b/benchmark/package.json index a9c9575ab88751..a9d0d72d192d65 100644 --- a/benchmark/package.json +++ b/benchmark/package.json @@ -13,9 +13,9 @@ "dependencies": { "@babel/runtime": "^7.26.0", "@chakra-ui/system": "^2.6.2", - "@emotion/react": "^11.13.3", + "@emotion/react": "^11.13.5", "@emotion/server": "^11.11.0", - "@emotion/styled": "^11.13.0", + "@emotion/styled": "^11.13.5", "@mui/material": "workspace:^", "@mui/styles": "workspace:^", "@mui/system": "workspace:^", diff --git a/dangerFileContent.ts b/dangerFileContent.ts index 8469d7f28978b6..89960978b0c16d 100644 --- a/dangerFileContent.ts +++ b/dangerFileContent.ts @@ -1,7 +1,8 @@ import { exec } from 'child_process'; import type * as dangerModule from 'danger'; +import replaceUrl from '@mui-internal/api-docs-builder/utils/replaceUrl'; +// eslint-disable-next-line import/no-relative-packages import { loadComparison } from './scripts/sizeSnapshot'; -import replaceUrl from './packages/api-docs-builder/utils/replaceUrl'; declare const danger: (typeof dangerModule)['danger']; declare const markdown: (typeof dangerModule)['markdown']; diff --git a/docs/data/base/components/autocomplete/AutocompleteIntroduction/system/index.js b/docs/data/base/components/autocomplete/AutocompleteIntroduction/system/index.js index dbb38f500a1f69..c7fadf55684f08 100644 --- a/docs/data/base/components/autocomplete/AutocompleteIntroduction/system/index.js +++ b/docs/data/base/components/autocomplete/AutocompleteIntroduction/system/index.js @@ -146,7 +146,7 @@ const StyledAutocompleteRoot = styled('div')( color: ${theme.palette.mode === 'dark' ? grey[300] : grey[500]}; background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; - box-shadow: 0px 2px 4px ${ + box-shadow: 0 2px 4px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.5)' : 'rgba(0,0,0, 0.05)' }; display: flex; @@ -210,7 +210,7 @@ const StyledListbox = styled('ul')( background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; - box-shadow: 0px 4px 6px ${ + box-shadow: 0 4px 6px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.3)' : 'rgba(0,0,0, 0.05)' }; `, @@ -231,7 +231,7 @@ const StyledOption = styled('li')( cursor: pointer; } - &[aria-selected=true] { + &[aria-selected="true"] { background-color: ${theme.palette.mode === 'dark' ? blue[900] : blue[100]}; color: ${theme.palette.mode === 'dark' ? blue[100] : blue[900]}; } @@ -246,8 +246,8 @@ const StyledOption = styled('li')( box-shadow: 0 0 0 3px ${theme.palette.mode === 'dark' ? blue[500] : blue[200]}; } - &[aria-selected=true].Mui-focused, - &[aria-selected=true].Mui-focusVisible { + &[aria-selected="true"].Mui-focused, + &[aria-selected="true"].Mui-focusVisible { background-color: ${theme.palette.mode === 'dark' ? blue[900] : blue[100]}; color: ${theme.palette.mode === 'dark' ? blue[100] : blue[900]}; } diff --git a/docs/data/base/components/autocomplete/AutocompleteIntroduction/system/index.tsx b/docs/data/base/components/autocomplete/AutocompleteIntroduction/system/index.tsx index d42ad105baf066..c414d7c15d9729 100644 --- a/docs/data/base/components/autocomplete/AutocompleteIntroduction/system/index.tsx +++ b/docs/data/base/components/autocomplete/AutocompleteIntroduction/system/index.tsx @@ -130,7 +130,7 @@ const StyledAutocompleteRoot = styled('div')( color: ${theme.palette.mode === 'dark' ? grey[300] : grey[500]}; background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; - box-shadow: 0px 2px 4px ${ + box-shadow: 0 2px 4px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.5)' : 'rgba(0,0,0, 0.05)' }; display: flex; @@ -194,7 +194,7 @@ const StyledListbox = styled('ul')( background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; - box-shadow: 0px 4px 6px ${ + box-shadow: 0 4px 6px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.3)' : 'rgba(0,0,0, 0.05)' }; `, @@ -215,7 +215,7 @@ const StyledOption = styled('li')( cursor: pointer; } - &[aria-selected=true] { + &[aria-selected="true"] { background-color: ${theme.palette.mode === 'dark' ? blue[900] : blue[100]}; color: ${theme.palette.mode === 'dark' ? blue[100] : blue[900]}; } @@ -230,8 +230,8 @@ const StyledOption = styled('li')( box-shadow: 0 0 0 3px ${theme.palette.mode === 'dark' ? blue[500] : blue[200]}; } - &[aria-selected=true].Mui-focused, - &[aria-selected=true].Mui-focusVisible { + &[aria-selected="true"].Mui-focused, + &[aria-selected="true"].Mui-focusVisible { background-color: ${theme.palette.mode === 'dark' ? blue[900] : blue[100]}; color: ${theme.palette.mode === 'dark' ? blue[100] : blue[900]}; } diff --git a/docs/data/base/components/autocomplete/ControlledStates.js b/docs/data/base/components/autocomplete/ControlledStates.js index 4ae658e13a4cf4..6d52d478a3945b 100644 --- a/docs/data/base/components/autocomplete/ControlledStates.js +++ b/docs/data/base/components/autocomplete/ControlledStates.js @@ -86,7 +86,7 @@ const AutocompleteRoot = styled('div')( color: ${theme.palette.mode === 'dark' ? grey[300] : grey[500]}; background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; - box-shadow: 0px 2px 4px ${ + box-shadow: 0 2px 4px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.5)' : 'rgba(0,0,0, 0.05)' }; display: flex; @@ -145,7 +145,7 @@ const Listbox = styled('ul')( background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; - box-shadow: 0px 4px 6px ${ + box-shadow: 0 4px 6px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.50)' : 'rgba(0,0,0, 0.05)' }; `, @@ -166,7 +166,7 @@ const Option = styled('li')( cursor: pointer; } - &[aria-selected=true] { + &[aria-selected="true"] { background-color: ${theme.palette.mode === 'dark' ? blue[900] : blue[100]}; color: ${theme.palette.mode === 'dark' ? blue[100] : blue[900]}; } @@ -181,8 +181,8 @@ const Option = styled('li')( box-shadow: 0 0 0 3px ${theme.palette.mode === 'dark' ? blue[500] : blue[200]}; } - &[aria-selected=true].Mui-focused, - &[aria-selected=true].Mui-focusVisible { + &[aria-selected="true"].Mui-focused, + &[aria-selected="true"].Mui-focusVisible { background-color: ${theme.palette.mode === 'dark' ? blue[900] : blue[100]}; color: ${theme.palette.mode === 'dark' ? blue[100] : blue[900]}; } diff --git a/docs/data/base/components/autocomplete/ControlledStates.tsx b/docs/data/base/components/autocomplete/ControlledStates.tsx index bdebd9928a300b..f0ad37b6dde33a 100644 --- a/docs/data/base/components/autocomplete/ControlledStates.tsx +++ b/docs/data/base/components/autocomplete/ControlledStates.tsx @@ -86,7 +86,7 @@ const AutocompleteRoot = styled('div')( color: ${theme.palette.mode === 'dark' ? grey[300] : grey[500]}; background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; - box-shadow: 0px 2px 4px ${ + box-shadow: 0 2px 4px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.5)' : 'rgba(0,0,0, 0.05)' }; display: flex; @@ -145,7 +145,7 @@ const Listbox = styled('ul')( background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; - box-shadow: 0px 4px 6px ${ + box-shadow: 0 4px 6px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.50)' : 'rgba(0,0,0, 0.05)' }; `, @@ -166,7 +166,7 @@ const Option = styled('li')( cursor: pointer; } - &[aria-selected=true] { + &[aria-selected="true"] { background-color: ${theme.palette.mode === 'dark' ? blue[900] : blue[100]}; color: ${theme.palette.mode === 'dark' ? blue[100] : blue[900]}; } @@ -181,8 +181,8 @@ const Option = styled('li')( box-shadow: 0 0 0 3px ${theme.palette.mode === 'dark' ? blue[500] : blue[200]}; } - &[aria-selected=true].Mui-focused, - &[aria-selected=true].Mui-focusVisible { + &[aria-selected="true"].Mui-focused, + &[aria-selected="true"].Mui-focusVisible { background-color: ${theme.palette.mode === 'dark' ? blue[900] : blue[100]}; color: ${theme.palette.mode === 'dark' ? blue[100] : blue[900]}; } diff --git a/docs/data/base/components/autocomplete/UseAutocomplete.js b/docs/data/base/components/autocomplete/UseAutocomplete.js index 96b85941f661a9..59856e118c3906 100644 --- a/docs/data/base/components/autocomplete/UseAutocomplete.js +++ b/docs/data/base/components/autocomplete/UseAutocomplete.js @@ -77,7 +77,7 @@ const Root = styled('div')( color: ${theme.palette.mode === 'dark' ? grey[300] : grey[500]}; background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; - box-shadow: 0px 2px 4px ${ + box-shadow: 0 2px 4px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.5)' : 'rgba(0,0,0, 0.05)' }; display: flex; @@ -134,7 +134,7 @@ const Listbox = styled('ul')( background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; - box-shadow: 0px 2px 3px ${ + box-shadow: 0 2px 3px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.50)' : 'rgba(0,0,0, 0.05)' }; `, @@ -155,7 +155,7 @@ const Option = styled('li')( cursor: pointer; } - &[aria-selected=true] { + &[aria-selected="true"] { background-color: ${theme.palette.mode === 'dark' ? blue[900] : blue[100]}; color: ${theme.palette.mode === 'dark' ? blue[100] : blue[900]}; } @@ -170,8 +170,8 @@ const Option = styled('li')( box-shadow: 0 0 0 3px ${theme.palette.mode === 'dark' ? blue[500] : blue[200]}; } - &[aria-selected=true].Mui-focused, - &[aria-selected=true].Mui-focusVisible { + &[aria-selected="true"].Mui-focused, + &[aria-selected="true"].Mui-focusVisible { background-color: ${theme.palette.mode === 'dark' ? blue[900] : blue[100]}; color: ${theme.palette.mode === 'dark' ? blue[100] : blue[900]}; } diff --git a/docs/data/base/components/autocomplete/UseAutocomplete.tsx b/docs/data/base/components/autocomplete/UseAutocomplete.tsx index fcbbd8d83ebb27..67a72c7b8606f9 100644 --- a/docs/data/base/components/autocomplete/UseAutocomplete.tsx +++ b/docs/data/base/components/autocomplete/UseAutocomplete.tsx @@ -79,7 +79,7 @@ const Root = styled('div')( color: ${theme.palette.mode === 'dark' ? grey[300] : grey[500]}; background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; - box-shadow: 0px 2px 4px ${ + box-shadow: 0 2px 4px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.5)' : 'rgba(0,0,0, 0.05)' }; display: flex; @@ -136,7 +136,7 @@ const Listbox = styled('ul')( background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; - box-shadow: 0px 2px 3px ${ + box-shadow: 0 2px 3px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.50)' : 'rgba(0,0,0, 0.05)' }; `, @@ -157,7 +157,7 @@ const Option = styled('li')( cursor: pointer; } - &[aria-selected=true] { + &[aria-selected="true"] { background-color: ${theme.palette.mode === 'dark' ? blue[900] : blue[100]}; color: ${theme.palette.mode === 'dark' ? blue[100] : blue[900]}; } @@ -172,8 +172,8 @@ const Option = styled('li')( box-shadow: 0 0 0 3px ${theme.palette.mode === 'dark' ? blue[500] : blue[200]}; } - &[aria-selected=true].Mui-focused, - &[aria-selected=true].Mui-focusVisible { + &[aria-selected="true"].Mui-focused, + &[aria-selected="true"].Mui-focusVisible { background-color: ${theme.palette.mode === 'dark' ? blue[900] : blue[100]}; color: ${theme.palette.mode === 'dark' ? blue[100] : blue[900]}; } diff --git a/docs/data/base/components/autocomplete/UseAutocompletePopper.js b/docs/data/base/components/autocomplete/UseAutocompletePopper.js index 75b54c9adc879f..fab8caec2b0ae2 100644 --- a/docs/data/base/components/autocomplete/UseAutocompletePopper.js +++ b/docs/data/base/components/autocomplete/UseAutocompletePopper.js @@ -94,7 +94,7 @@ const Root = styled('div')( color: ${theme.palette.mode === 'dark' ? grey[300] : grey[500]}; background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; - box-shadow: 0px 2px 4px ${ + box-shadow: 0 2px 4px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.5)' : 'rgba(0,0,0, 0.05)' }; display: flex; @@ -158,7 +158,7 @@ const Listbox = styled('ul')( background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; - box-shadow: 0px 4px 6px ${ + box-shadow: 0 4px 6px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.50)' : 'rgba(0,0,0, 0.05)' }; `, @@ -179,7 +179,7 @@ const Option = styled('li')( cursor: pointer; } - &[aria-selected=true] { + &[aria-selected="true"] { background-color: ${theme.palette.mode === 'dark' ? blue[900] : blue[100]}; color: ${theme.palette.mode === 'dark' ? blue[100] : blue[900]}; } @@ -194,8 +194,8 @@ const Option = styled('li')( box-shadow: 0 0 0 3px ${theme.palette.mode === 'dark' ? blue[500] : blue[200]}; } - &[aria-selected=true].Mui-focused, - &[aria-selected=true].Mui-focusVisible { + &[aria-selected="true"].Mui-focused, + &[aria-selected="true"].Mui-focusVisible { background-color: ${theme.palette.mode === 'dark' ? blue[900] : blue[100]}; color: ${theme.palette.mode === 'dark' ? blue[100] : blue[900]}; } diff --git a/docs/data/base/components/autocomplete/UseAutocompletePopper.tsx b/docs/data/base/components/autocomplete/UseAutocompletePopper.tsx index f11b48ed1f9321..e4945270cef2a2 100644 --- a/docs/data/base/components/autocomplete/UseAutocompletePopper.tsx +++ b/docs/data/base/components/autocomplete/UseAutocompletePopper.tsx @@ -102,7 +102,7 @@ const Root = styled('div')( color: ${theme.palette.mode === 'dark' ? grey[300] : grey[500]}; background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; - box-shadow: 0px 2px 4px ${ + box-shadow: 0 2px 4px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.5)' : 'rgba(0,0,0, 0.05)' }; display: flex; @@ -166,7 +166,7 @@ const Listbox = styled('ul')( background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; - box-shadow: 0px 4px 6px ${ + box-shadow: 0 4px 6px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.50)' : 'rgba(0,0,0, 0.05)' }; `, @@ -187,7 +187,7 @@ const Option = styled('li')( cursor: pointer; } - &[aria-selected=true] { + &[aria-selected="true"] { background-color: ${theme.palette.mode === 'dark' ? blue[900] : blue[100]}; color: ${theme.palette.mode === 'dark' ? blue[100] : blue[900]}; } @@ -202,8 +202,8 @@ const Option = styled('li')( box-shadow: 0 0 0 3px ${theme.palette.mode === 'dark' ? blue[500] : blue[200]}; } - &[aria-selected=true].Mui-focused, - &[aria-selected=true].Mui-focusVisible { + &[aria-selected="true"].Mui-focused, + &[aria-selected="true"].Mui-focusVisible { background-color: ${theme.palette.mode === 'dark' ? blue[900] : blue[100]}; color: ${theme.palette.mode === 'dark' ? blue[100] : blue[900]}; } diff --git a/docs/data/base/components/badge/AccessibleBadges.js b/docs/data/base/components/badge/AccessibleBadges.js index 6b4573d7e8833b..919d742126fde8 100644 --- a/docs/data/base/components/badge/AccessibleBadges.js +++ b/docs/data/base/components/badge/AccessibleBadges.js @@ -67,7 +67,7 @@ const Badge = styled(BaseBadge)( text-align: center; border-radius: 12px; background: ${blue[500]}; - box-shadow: 0px 4px 6x ${theme.palette.mode === 'dark' ? grey[900] : grey[300]}; + box-shadow: 0 4px 6x ${theme.palette.mode === 'dark' ? grey[900] : grey[300]}; transform: translate(50%, -50%); transform-origin: 100% 0; } diff --git a/docs/data/base/components/badge/AccessibleBadges.tsx b/docs/data/base/components/badge/AccessibleBadges.tsx index fb1aca023f3e9c..37fe45228941d1 100644 --- a/docs/data/base/components/badge/AccessibleBadges.tsx +++ b/docs/data/base/components/badge/AccessibleBadges.tsx @@ -67,7 +67,7 @@ const Badge = styled(BaseBadge)( text-align: center; border-radius: 12px; background: ${blue[500]}; - box-shadow: 0px 4px 6x ${theme.palette.mode === 'dark' ? grey[900] : grey[300]}; + box-shadow: 0 4px 6x ${theme.palette.mode === 'dark' ? grey[900] : grey[300]}; transform: translate(50%, -50%); transform-origin: 100% 0; } diff --git a/docs/data/base/components/badge/BadgeMax.js b/docs/data/base/components/badge/BadgeMax.js index c6a11d32f43599..ba00daf86e67ae 100644 --- a/docs/data/base/components/badge/BadgeMax.js +++ b/docs/data/base/components/badge/BadgeMax.js @@ -64,7 +64,7 @@ const Badge = styled(BaseBadge)( text-align: center; border-radius: 12px; background: ${blue[500]}; - box-shadow: 0px 4px 6x ${theme.palette.mode === 'dark' ? grey[900] : grey[300]}; + box-shadow: 0 4px 6x ${theme.palette.mode === 'dark' ? grey[900] : grey[300]}; transform: translate(50%, -50%); transform-origin: 100% 0; } diff --git a/docs/data/base/components/badge/BadgeMax.tsx b/docs/data/base/components/badge/BadgeMax.tsx index c6a11d32f43599..ba00daf86e67ae 100644 --- a/docs/data/base/components/badge/BadgeMax.tsx +++ b/docs/data/base/components/badge/BadgeMax.tsx @@ -64,7 +64,7 @@ const Badge = styled(BaseBadge)( text-align: center; border-radius: 12px; background: ${blue[500]}; - box-shadow: 0px 4px 6x ${theme.palette.mode === 'dark' ? grey[900] : grey[300]}; + box-shadow: 0 4px 6x ${theme.palette.mode === 'dark' ? grey[900] : grey[300]}; transform: translate(50%, -50%); transform-origin: 100% 0; } diff --git a/docs/data/base/components/badge/BadgeVisibility.js b/docs/data/base/components/badge/BadgeVisibility.js index e97ad4b6043349..b1d47c8afde926 100644 --- a/docs/data/base/components/badge/BadgeVisibility.js +++ b/docs/data/base/components/badge/BadgeVisibility.js @@ -57,7 +57,7 @@ const Badge = styled(BaseBadge)( text-align: center; border-radius: 12px; background: ${blue[500]}; - box-shadow: 0px 4px 6x ${theme.palette.mode === 'dark' ? grey[900] : grey[300]}; + box-shadow: 0 4px 6x ${theme.palette.mode === 'dark' ? grey[900] : grey[300]}; transform: translate(50%, -50%); transform-origin: 100% 0; } @@ -89,7 +89,7 @@ const StyledButton = styled(Button)( } &.${buttonClasses.focusVisible} { - box-shadow: 0 3px 20px 0 rgba(61, 71, 82, 0.1), 0 0 0 4px rgba(0, 127, 255, 0.5); + box-shadow: 0 3px 20px 0 rgb(61 71 82 / 0.1), 0 0 0 4px rgb(0 127 255 / 0.5); outline: none; } `, diff --git a/docs/data/base/components/badge/BadgeVisibility.tsx b/docs/data/base/components/badge/BadgeVisibility.tsx index e97ad4b6043349..b1d47c8afde926 100644 --- a/docs/data/base/components/badge/BadgeVisibility.tsx +++ b/docs/data/base/components/badge/BadgeVisibility.tsx @@ -57,7 +57,7 @@ const Badge = styled(BaseBadge)( text-align: center; border-radius: 12px; background: ${blue[500]}; - box-shadow: 0px 4px 6x ${theme.palette.mode === 'dark' ? grey[900] : grey[300]}; + box-shadow: 0 4px 6x ${theme.palette.mode === 'dark' ? grey[900] : grey[300]}; transform: translate(50%, -50%); transform-origin: 100% 0; } @@ -89,7 +89,7 @@ const StyledButton = styled(Button)( } &.${buttonClasses.focusVisible} { - box-shadow: 0 3px 20px 0 rgba(61, 71, 82, 0.1), 0 0 0 4px rgba(0, 127, 255, 0.5); + box-shadow: 0 3px 20px 0 rgb(61 71 82 / 0.1), 0 0 0 4px rgb(0 127 255 / 0.5); outline: none; } `, diff --git a/docs/data/base/components/badge/ShowZeroBadge.js b/docs/data/base/components/badge/ShowZeroBadge.js index 79178504f03065..8dfd674c747dc2 100644 --- a/docs/data/base/components/badge/ShowZeroBadge.js +++ b/docs/data/base/components/badge/ShowZeroBadge.js @@ -62,7 +62,7 @@ const Badge = styled(BaseBadge)( text-align: center; border-radius: 12px; background: ${blue[500]}; - box-shadow: 0px 4px 6x ${theme.palette.mode === 'dark' ? grey[900] : grey[300]}; + box-shadow: 0 4px 6x ${theme.palette.mode === 'dark' ? grey[900] : grey[300]}; transform: translate(50%, -50%); transform-origin: 100% 0; } diff --git a/docs/data/base/components/badge/ShowZeroBadge.tsx b/docs/data/base/components/badge/ShowZeroBadge.tsx index 79178504f03065..8dfd674c747dc2 100644 --- a/docs/data/base/components/badge/ShowZeroBadge.tsx +++ b/docs/data/base/components/badge/ShowZeroBadge.tsx @@ -62,7 +62,7 @@ const Badge = styled(BaseBadge)( text-align: center; border-radius: 12px; background: ${blue[500]}; - box-shadow: 0px 4px 6x ${theme.palette.mode === 'dark' ? grey[900] : grey[300]}; + box-shadow: 0 4px 6x ${theme.palette.mode === 'dark' ? grey[900] : grey[300]}; transform: translate(50%, -50%); transform-origin: 100% 0; } diff --git a/docs/data/base/components/badge/UnstyledBadge/system/index.js b/docs/data/base/components/badge/UnstyledBadge/system/index.js index fe2f6ee2d16813..45fd46f9c7765c 100644 --- a/docs/data/base/components/badge/UnstyledBadge/system/index.js +++ b/docs/data/base/components/badge/UnstyledBadge/system/index.js @@ -73,7 +73,7 @@ const Badge = styled(BaseBadge)( text-align: center; border-radius: 12px; background: ${blue[500]}; - box-shadow: 0px 4px 8px ${theme.palette.mode === 'dark' ? grey[900] : grey[300]}; + box-shadow: 0 4px 8px ${theme.palette.mode === 'dark' ? grey[900] : grey[300]}; transform: translate(50%, -50%); transform-origin: 100% 0; } diff --git a/docs/data/base/components/badge/UnstyledBadge/system/index.tsx b/docs/data/base/components/badge/UnstyledBadge/system/index.tsx index fe2f6ee2d16813..45fd46f9c7765c 100644 --- a/docs/data/base/components/badge/UnstyledBadge/system/index.tsx +++ b/docs/data/base/components/badge/UnstyledBadge/system/index.tsx @@ -73,7 +73,7 @@ const Badge = styled(BaseBadge)( text-align: center; border-radius: 12px; background: ${blue[500]}; - box-shadow: 0px 4px 8px ${theme.palette.mode === 'dark' ? grey[900] : grey[300]}; + box-shadow: 0 4px 8px ${theme.palette.mode === 'dark' ? grey[900] : grey[300]}; transform: translate(50%, -50%); transform-origin: 100% 0; } diff --git a/docs/data/base/components/badge/UnstyledBadgeIntroduction/system/index.js b/docs/data/base/components/badge/UnstyledBadgeIntroduction/system/index.js index 220d05649da1d7..8351275e711d2b 100644 --- a/docs/data/base/components/badge/UnstyledBadgeIntroduction/system/index.js +++ b/docs/data/base/components/badge/UnstyledBadgeIntroduction/system/index.js @@ -75,9 +75,7 @@ const Badge = styled(BaseBadge)( text-align: center; border-radius: 12px; background: ${blue[500]}; - box-shadow: 0px 2px 24px ${ - theme.palette.mode === 'dark' ? blue[900] : blue[100] - }; + box-shadow: 0 2px 24px ${theme.palette.mode === 'dark' ? blue[900] : blue[100]}; transform: translate(50%, -50%); transform-origin: 100% 0; } diff --git a/docs/data/base/components/badge/UnstyledBadgeIntroduction/system/index.tsx b/docs/data/base/components/badge/UnstyledBadgeIntroduction/system/index.tsx index 220d05649da1d7..8351275e711d2b 100644 --- a/docs/data/base/components/badge/UnstyledBadgeIntroduction/system/index.tsx +++ b/docs/data/base/components/badge/UnstyledBadgeIntroduction/system/index.tsx @@ -75,9 +75,7 @@ const Badge = styled(BaseBadge)( text-align: center; border-radius: 12px; background: ${blue[500]}; - box-shadow: 0px 2px 24px ${ - theme.palette.mode === 'dark' ? blue[900] : blue[100] - }; + box-shadow: 0 2px 24px ${theme.palette.mode === 'dark' ? blue[900] : blue[100]}; transform: translate(50%, -50%); transform-origin: 100% 0; } diff --git a/docs/data/base/components/button/UnstyledButtonCustom.js b/docs/data/base/components/button/UnstyledButtonCustom.js index 80b112845cbee6..3f79fd96c5c34b 100644 --- a/docs/data/base/components/button/UnstyledButtonCustom.js +++ b/docs/data/base/components/button/UnstyledButtonCustom.js @@ -45,6 +45,7 @@ const CustomButtonRoot = styled(ButtonRoot)( ({ theme }) => ` overflow: visible; cursor: pointer; + --main-color: ${theme.palette.mode === 'light' ? blue[600] : blue[200]}; --hover-color: ${theme.palette.mode === 'light' ? blue[50] : blue[900]}; --active-color: ${theme.palette.mode === 'light' ? blue[100] : blue[800]}; @@ -58,7 +59,7 @@ const CustomButtonRoot = styled(ButtonRoot)( & .bg { stroke: var(--main-color); stroke-width: 1; - filter: drop-shadow(0 4px 16px rgba(0, 0, 0, 0.1)); + filter: drop-shadow(0 4px 16px rgb(0 0 0 / 0.1)); fill: transparent; } diff --git a/docs/data/base/components/button/UnstyledButtonCustom.tsx b/docs/data/base/components/button/UnstyledButtonCustom.tsx index 2697a535acb9f1..df1d8a72d41b16 100644 --- a/docs/data/base/components/button/UnstyledButtonCustom.tsx +++ b/docs/data/base/components/button/UnstyledButtonCustom.tsx @@ -46,6 +46,7 @@ const CustomButtonRoot = styled(ButtonRoot)( ({ theme }: { theme: Theme }) => ` overflow: visible; cursor: pointer; + --main-color: ${theme.palette.mode === 'light' ? blue[600] : blue[200]}; --hover-color: ${theme.palette.mode === 'light' ? blue[50] : blue[900]}; --active-color: ${theme.palette.mode === 'light' ? blue[100] : blue[800]}; @@ -59,7 +60,7 @@ const CustomButtonRoot = styled(ButtonRoot)( & .bg { stroke: var(--main-color); stroke-width: 1; - filter: drop-shadow(0 4px 16px rgba(0, 0, 0, 0.1)); + filter: drop-shadow(0 4px 16px rgb(0 0 0 / 0.1)); fill: transparent; } diff --git a/docs/data/base/components/form-control/BasicFormControl/system/index.js b/docs/data/base/components/form-control/BasicFormControl/system/index.js index c1d067c13a9fe8..a2d0fab80ea285 100644 --- a/docs/data/base/components/form-control/BasicFormControl/system/index.js +++ b/docs/data/base/components/form-control/BasicFormControl/system/index.js @@ -28,7 +28,7 @@ const StyledInput = styled(Input)( color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; - box-shadow: 0px 2px 2px ${theme.palette.mode === 'dark' ? grey[900] : grey[50]}; + box-shadow: 0 2px 2px ${theme.palette.mode === 'dark' ? grey[900] : grey[50]}; &:hover { border-color: ${blue[400]}; diff --git a/docs/data/base/components/form-control/BasicFormControl/system/index.tsx b/docs/data/base/components/form-control/BasicFormControl/system/index.tsx index 0148825c5850fe..05ea70d43f8fb3 100644 --- a/docs/data/base/components/form-control/BasicFormControl/system/index.tsx +++ b/docs/data/base/components/form-control/BasicFormControl/system/index.tsx @@ -28,7 +28,7 @@ const StyledInput = styled(Input)( color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; - box-shadow: 0px 2px 2px ${theme.palette.mode === 'dark' ? grey[900] : grey[50]}; + box-shadow: 0 2px 2px ${theme.palette.mode === 'dark' ? grey[900] : grey[50]}; &:hover { border-color: ${blue[400]}; diff --git a/docs/data/base/components/form-control/FormControlFunctionChild.js b/docs/data/base/components/form-control/FormControlFunctionChild.js index c0f5e3e3c8a89c..43953bf06e4244 100644 --- a/docs/data/base/components/form-control/FormControlFunctionChild.js +++ b/docs/data/base/components/form-control/FormControlFunctionChild.js @@ -31,7 +31,7 @@ const StyledInput = styled(Input)( color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; - box-shadow: 0px 2px 2px ${theme.palette.mode === 'dark' ? grey[900] : grey[50]}; + box-shadow: 0 2px 2px ${theme.palette.mode === 'dark' ? grey[900] : grey[50]}; &:hover { border-color: ${blue[400]}; @@ -45,7 +45,7 @@ const StyledInput = styled(Input)( } &.filled .${inputClasses.input} { - box-shadow: 0 0 2px 2px rgba(125, 200, 0, 0.25); + box-shadow: 0 0 2px 2px rgb(125 200 0 / 0.25); } `, ); diff --git a/docs/data/base/components/form-control/FormControlFunctionChild.tsx b/docs/data/base/components/form-control/FormControlFunctionChild.tsx index 60c3735f940f5c..b40080885f51c2 100644 --- a/docs/data/base/components/form-control/FormControlFunctionChild.tsx +++ b/docs/data/base/components/form-control/FormControlFunctionChild.tsx @@ -31,7 +31,7 @@ const StyledInput = styled(Input)( color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; - box-shadow: 0px 2px 2px ${theme.palette.mode === 'dark' ? grey[900] : grey[50]}; + box-shadow: 0 2px 2px ${theme.palette.mode === 'dark' ? grey[900] : grey[50]}; &:hover { border-color: ${blue[400]}; @@ -45,7 +45,7 @@ const StyledInput = styled(Input)( } &.filled .${inputClasses.input} { - box-shadow: 0 0 2px 2px rgba(125, 200, 0, 0.25); + box-shadow: 0 0 2px 2px rgb(125 200 0 / 0.25); } `, ); diff --git a/docs/data/base/components/input/InputAdornments.js b/docs/data/base/components/input/InputAdornments.js index 780ac6e9fa0151..f9dd317cd487c0 100644 --- a/docs/data/base/components/input/InputAdornments.js +++ b/docs/data/base/components/input/InputAdornments.js @@ -122,7 +122,7 @@ const InputRoot = styled('div')( color: ${theme.palette.mode === 'dark' ? grey[300] : grey[500]}; background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; - box-shadow: 0px 2px 4px ${ + box-shadow: 0 2px 4px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.5)' : 'rgba(0,0,0, 0.05)' }; display: flex; @@ -139,7 +139,7 @@ const InputRoot = styled('div')( border-color: ${blue[400]}; } - // firefox + /* firefox */ &:focus-visible { outline: 0; } diff --git a/docs/data/base/components/input/InputAdornments.tsx b/docs/data/base/components/input/InputAdornments.tsx index 46810a8a79894b..dfd524cb72218a 100644 --- a/docs/data/base/components/input/InputAdornments.tsx +++ b/docs/data/base/components/input/InputAdornments.tsx @@ -120,7 +120,7 @@ const InputRoot = styled('div')( color: ${theme.palette.mode === 'dark' ? grey[300] : grey[500]}; background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; - box-shadow: 0px 2px 4px ${ + box-shadow: 0 2px 4px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.5)' : 'rgba(0,0,0, 0.05)' }; display: flex; @@ -137,7 +137,7 @@ const InputRoot = styled('div')( border-color: ${blue[400]}; } - // firefox + /* firefox */ &:focus-visible { outline: 0; } diff --git a/docs/data/base/components/input/InputMultiline.js b/docs/data/base/components/input/InputMultiline.js index c4bf824270f98a..edf04e32632afe 100644 --- a/docs/data/base/components/input/InputMultiline.js +++ b/docs/data/base/components/input/InputMultiline.js @@ -58,11 +58,11 @@ const TextareaElement = styled('textarea', { font-weight: 400; line-height: 1.5rem; padding: 8px 12px; - border-radius: 8px 8px 0 8px; + border-radius: 8px 8px 0; color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; - box-shadow: 0px 2px 4px ${ + box-shadow: 0 2px 4px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.5)' : 'rgba(0,0,0, 0.05)' }; @@ -75,7 +75,7 @@ const TextareaElement = styled('textarea', { box-shadow: 0 0 0 3px ${theme.palette.mode === 'dark' ? blue[700] : blue[200]}; } - // firefox + /* firefox */ &:focus-visible { outline: 0; } diff --git a/docs/data/base/components/input/InputMultiline.tsx b/docs/data/base/components/input/InputMultiline.tsx index 975576da3f49ce..5aff70dcc12f4d 100644 --- a/docs/data/base/components/input/InputMultiline.tsx +++ b/docs/data/base/components/input/InputMultiline.tsx @@ -61,11 +61,11 @@ const TextareaElement = styled('textarea', { font-weight: 400; line-height: 1.5rem; padding: 8px 12px; - border-radius: 8px 8px 0 8px; + border-radius: 8px 8px 0; color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; - box-shadow: 0px 2px 4px ${ + box-shadow: 0 2px 4px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.5)' : 'rgba(0,0,0, 0.05)' }; @@ -78,7 +78,7 @@ const TextareaElement = styled('textarea', { box-shadow: 0 0 0 3px ${theme.palette.mode === 'dark' ? blue[700] : blue[200]}; } - // firefox + /* firefox */ &:focus-visible { outline: 0; } diff --git a/docs/data/base/components/input/InputMultilineAutosize.js b/docs/data/base/components/input/InputMultilineAutosize.js index 79e91f903d423f..d1d5d76a75ab6a 100644 --- a/docs/data/base/components/input/InputMultilineAutosize.js +++ b/docs/data/base/components/input/InputMultilineAutosize.js @@ -56,11 +56,11 @@ const TextareaElement = styled(TextareaAutosize)( font-weight: 400; line-height: 1.5rem; padding: 8px 12px; - border-radius: 8px 8px 0 8px; + border-radius: 8px 8px 0; color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; - box-shadow: 0px 2px 4px ${ + box-shadow: 0 2px 4px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.5)' : 'rgba(0,0,0, 0.05)' }; @@ -73,7 +73,7 @@ const TextareaElement = styled(TextareaAutosize)( box-shadow: 0 0 0 3px ${theme.palette.mode === 'dark' ? blue[500] : blue[200]}; } - // firefox + /* firefox */ &:focus-visible { outline: 0; } diff --git a/docs/data/base/components/input/InputMultilineAutosize.tsx b/docs/data/base/components/input/InputMultilineAutosize.tsx index aab50aed8804c4..44f1f928234d13 100644 --- a/docs/data/base/components/input/InputMultilineAutosize.tsx +++ b/docs/data/base/components/input/InputMultilineAutosize.tsx @@ -59,11 +59,11 @@ const TextareaElement = styled(TextareaAutosize)( font-weight: 400; line-height: 1.5rem; padding: 8px 12px; - border-radius: 8px 8px 0 8px; + border-radius: 8px 8px 0; color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; - box-shadow: 0px 2px 4px ${ + box-shadow: 0 2px 4px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.5)' : 'rgba(0,0,0, 0.05)' }; @@ -76,7 +76,7 @@ const TextareaElement = styled(TextareaAutosize)( box-shadow: 0 0 0 3px ${theme.palette.mode === 'dark' ? blue[500] : blue[200]}; } - // firefox + /* firefox */ &:focus-visible { outline: 0; } diff --git a/docs/data/base/components/input/OTPInput.js b/docs/data/base/components/input/OTPInput.js index 7139e37970f2be..81686d67085df9 100644 --- a/docs/data/base/components/input/OTPInput.js +++ b/docs/data/base/components/input/OTPInput.js @@ -198,13 +198,13 @@ const InputElement = styled('input')( font-size: 0.875rem; font-weight: 400; line-height: 1.5; - padding: 8px 0px; + padding: 8px 0; border-radius: 8px; text-align: center; color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; - box-shadow: 0px 2px 4px ${ + box-shadow: 0 2px 4px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.5)' : 'rgba(0,0,0, 0.05)' }; @@ -217,7 +217,7 @@ const InputElement = styled('input')( box-shadow: 0 0 0 3px ${theme.palette.mode === 'dark' ? blue[600] : blue[200]}; } - // firefox + /* firefox */ &:focus-visible { outline: 0; } diff --git a/docs/data/base/components/input/OTPInput.tsx b/docs/data/base/components/input/OTPInput.tsx index 5dd6128b883d80..8f44aa843f05d4 100644 --- a/docs/data/base/components/input/OTPInput.tsx +++ b/docs/data/base/components/input/OTPInput.tsx @@ -212,13 +212,13 @@ const InputElement = styled('input')( font-size: 0.875rem; font-weight: 400; line-height: 1.5; - padding: 8px 0px; + padding: 8px 0; border-radius: 8px; text-align: center; color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; - box-shadow: 0px 2px 4px ${ + box-shadow: 0 2px 4px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.5)' : 'rgba(0,0,0, 0.05)' }; @@ -231,7 +231,7 @@ const InputElement = styled('input')( box-shadow: 0 0 0 3px ${theme.palette.mode === 'dark' ? blue[600] : blue[200]}; } - // firefox + /* firefox */ &:focus-visible { outline: 0; } diff --git a/docs/data/base/components/input/UnstyledInputBasic/system/index.js b/docs/data/base/components/input/UnstyledInputBasic/system/index.js index 8f8a8cd835fcfd..714b6ec9058235 100644 --- a/docs/data/base/components/input/UnstyledInputBasic/system/index.js +++ b/docs/data/base/components/input/UnstyledInputBasic/system/index.js @@ -43,7 +43,7 @@ const InputElement = styled('input')( color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; - box-shadow: 0px 2px 2px ${theme.palette.mode === 'dark' ? grey[900] : grey[50]}; + box-shadow: 0 2px 2px ${theme.palette.mode === 'dark' ? grey[900] : grey[50]}; &:hover { border-color: ${blue[400]}; @@ -54,7 +54,7 @@ const InputElement = styled('input')( box-shadow: 0 0 0 3px ${theme.palette.mode === 'dark' ? blue[600] : blue[200]}; } - // firefox + /* firefox */ &:focus-visible { outline: 0; } diff --git a/docs/data/base/components/input/UnstyledInputBasic/system/index.tsx b/docs/data/base/components/input/UnstyledInputBasic/system/index.tsx index 2d6520354d8209..d15542ba7e65c3 100644 --- a/docs/data/base/components/input/UnstyledInputBasic/system/index.tsx +++ b/docs/data/base/components/input/UnstyledInputBasic/system/index.tsx @@ -46,7 +46,7 @@ const InputElement = styled('input')( color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; - box-shadow: 0px 2px 2px ${theme.palette.mode === 'dark' ? grey[900] : grey[50]}; + box-shadow: 0 2px 2px ${theme.palette.mode === 'dark' ? grey[900] : grey[50]}; &:hover { border-color: ${blue[400]}; @@ -57,7 +57,7 @@ const InputElement = styled('input')( box-shadow: 0 0 0 3px ${theme.palette.mode === 'dark' ? blue[600] : blue[200]}; } - // firefox + /* firefox */ &:focus-visible { outline: 0; } diff --git a/docs/data/base/components/input/UnstyledInputIntroduction/system/index.js b/docs/data/base/components/input/UnstyledInputIntroduction/system/index.js index 41cc8bb45d8f6c..a4d7f3237a63f9 100644 --- a/docs/data/base/components/input/UnstyledInputIntroduction/system/index.js +++ b/docs/data/base/components/input/UnstyledInputIntroduction/system/index.js @@ -44,7 +44,7 @@ const InputElement = styled('input')( color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; - box-shadow: 0px 2px 4px ${ + box-shadow: 0 2px 4px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.5)' : 'rgba(0,0,0, 0.05)' }; @@ -57,7 +57,7 @@ const InputElement = styled('input')( box-shadow: 0 0 0 3px ${theme.palette.mode === 'dark' ? blue[600] : blue[200]}; } - // firefox + /* firefox */ &:focus-visible { outline: 0; } diff --git a/docs/data/base/components/input/UnstyledInputIntroduction/system/index.tsx b/docs/data/base/components/input/UnstyledInputIntroduction/system/index.tsx index d623f5c16d26ae..40564603fa8265 100644 --- a/docs/data/base/components/input/UnstyledInputIntroduction/system/index.tsx +++ b/docs/data/base/components/input/UnstyledInputIntroduction/system/index.tsx @@ -47,7 +47,7 @@ const InputElement = styled('input')( color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; - box-shadow: 0px 2px 4px ${ + box-shadow: 0 2px 4px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.5)' : 'rgba(0,0,0, 0.05)' }; @@ -60,7 +60,7 @@ const InputElement = styled('input')( box-shadow: 0 0 0 3px ${theme.palette.mode === 'dark' ? blue[600] : blue[200]}; } - // firefox + /* firefox */ &:focus-visible { outline: 0; } diff --git a/docs/data/base/components/input/UseInput.js b/docs/data/base/components/input/UseInput.js index 1aa1ebb897148f..e69ae545e5fc32 100644 --- a/docs/data/base/components/input/UseInput.js +++ b/docs/data/base/components/input/UseInput.js @@ -56,7 +56,7 @@ const StyledInputElement = styled('input')( color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; - box-shadow: 0px 2px 4px ${ + box-shadow: 0 2px 4px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.5)' : 'rgba(0,0,0, 0.05)' }; @@ -69,7 +69,7 @@ const StyledInputElement = styled('input')( box-shadow: 0 0 0 3px ${theme.palette.mode === 'dark' ? blue[600] : blue[200]}; } - // firefox + /* firefox */ &:focus-visible { outline: 0; } diff --git a/docs/data/base/components/input/UseInput.tsx b/docs/data/base/components/input/UseInput.tsx index 63e868f1c1429d..e74b04b9fc3894 100644 --- a/docs/data/base/components/input/UseInput.tsx +++ b/docs/data/base/components/input/UseInput.tsx @@ -59,7 +59,7 @@ const StyledInputElement = styled('input')( color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; - box-shadow: 0px 2px 4px ${ + box-shadow: 0 2px 4px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.5)' : 'rgba(0,0,0, 0.05)' }; @@ -72,7 +72,7 @@ const StyledInputElement = styled('input')( box-shadow: 0 0 0 3px ${theme.palette.mode === 'dark' ? blue[600] : blue[200]}; } - // firefox + /* firefox */ &:focus-visible { outline: 0; } diff --git a/docs/data/base/components/menu/MenuIntroduction/system/index.js b/docs/data/base/components/menu/MenuIntroduction/system/index.js index 1f85d127a8c5ae..2bd194d92cefe7 100644 --- a/docs/data/base/components/menu/MenuIntroduction/system/index.js +++ b/docs/data/base/components/menu/MenuIntroduction/system/index.js @@ -69,7 +69,7 @@ const Listbox = styled('ul')( background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; - box-shadow: 0px 4px 30px ${theme.palette.mode === 'dark' ? grey[900] : grey[200]}; + box-shadow: 0 4px 30px ${theme.palette.mode === 'dark' ? grey[900] : grey[200]}; z-index: 1; .closed & { @@ -153,7 +153,6 @@ const MenuButton = styled(BaseMenuButton)( line-height: 1.5; padding: 8px 16px; border-radius: 8px; - color: white; transition: all 150ms ease; cursor: pointer; background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; diff --git a/docs/data/base/components/menu/MenuIntroduction/system/index.tsx b/docs/data/base/components/menu/MenuIntroduction/system/index.tsx index 7db53805f34a8f..db77c9b9a79ae6 100644 --- a/docs/data/base/components/menu/MenuIntroduction/system/index.tsx +++ b/docs/data/base/components/menu/MenuIntroduction/system/index.tsx @@ -68,7 +68,7 @@ const Listbox = styled('ul')( background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; - box-shadow: 0px 4px 30px ${theme.palette.mode === 'dark' ? grey[900] : grey[200]}; + box-shadow: 0 4px 30px ${theme.palette.mode === 'dark' ? grey[900] : grey[200]}; z-index: 1; .closed & { @@ -151,7 +151,6 @@ const MenuButton = styled(BaseMenuButton)( line-height: 1.5; padding: 8px 16px; border-radius: 8px; - color: white; transition: all 150ms ease; cursor: pointer; background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; diff --git a/docs/data/base/components/menu/MenuSimple/system/index.js b/docs/data/base/components/menu/MenuSimple/system/index.js index 0b091a2ade18b1..d0aa8f50ecf5bf 100644 --- a/docs/data/base/components/menu/MenuSimple/system/index.js +++ b/docs/data/base/components/menu/MenuSimple/system/index.js @@ -66,7 +66,7 @@ const Listbox = styled('ul')( background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; - box-shadow: 0px 4px 6px ${ + box-shadow: 0 4px 6px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.50)' : 'rgba(0,0,0, 0.05)' }; z-index: 1; @@ -105,7 +105,6 @@ const MenuButton = styled(BaseMenuButton)( line-height: 1.5; padding: 8px 16px; border-radius: 8px; - color: white; transition: all 150ms ease; cursor: pointer; background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; diff --git a/docs/data/base/components/menu/MenuSimple/system/index.tsx b/docs/data/base/components/menu/MenuSimple/system/index.tsx index a68c30b8e9be0a..21e50c90192c0f 100644 --- a/docs/data/base/components/menu/MenuSimple/system/index.tsx +++ b/docs/data/base/components/menu/MenuSimple/system/index.tsx @@ -66,7 +66,7 @@ const Listbox = styled('ul')( background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; - box-shadow: 0px 4px 6px ${ + box-shadow: 0 4px 6px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.50)' : 'rgba(0,0,0, 0.05)' }; z-index: 1; @@ -105,7 +105,6 @@ const MenuButton = styled(BaseMenuButton)( line-height: 1.5; padding: 8px 16px; border-radius: 8px; - color: white; transition: all 150ms ease; cursor: pointer; background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; diff --git a/docs/data/base/components/menu/MenuTransitions.js b/docs/data/base/components/menu/MenuTransitions.js index 962af17f3c130e..f81646506c2230 100644 --- a/docs/data/base/components/menu/MenuTransitions.js +++ b/docs/data/base/components/menu/MenuTransitions.js @@ -69,7 +69,7 @@ const Listbox = styled('ul')( background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; - box-shadow: 0px 4px 30px ${theme.palette.mode === 'dark' ? grey[900] : grey[200]}; + box-shadow: 0 4px 30px ${theme.palette.mode === 'dark' ? grey[900] : grey[200]}; z-index: 1; .closed & { @@ -158,7 +158,6 @@ const MenuButton = styled(BaseMenuButton)( line-height: 1.5; padding: 8px 16px; border-radius: 8px; - color: white; transition: all 150ms ease; cursor: pointer; background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; diff --git a/docs/data/base/components/menu/MenuTransitions.tsx b/docs/data/base/components/menu/MenuTransitions.tsx index aed6cadee7a853..1176bd369de0ca 100644 --- a/docs/data/base/components/menu/MenuTransitions.tsx +++ b/docs/data/base/components/menu/MenuTransitions.tsx @@ -68,7 +68,7 @@ const Listbox = styled('ul')( background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; - box-shadow: 0px 4px 30px ${theme.palette.mode === 'dark' ? grey[900] : grey[200]}; + box-shadow: 0 4px 30px ${theme.palette.mode === 'dark' ? grey[900] : grey[200]}; z-index: 1; .closed & { @@ -156,7 +156,6 @@ const MenuButton = styled(BaseMenuButton)( line-height: 1.5; padding: 8px 16px; border-radius: 8px; - color: white; transition: all 150ms ease; cursor: pointer; background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; diff --git a/docs/data/base/components/menu/WrappedMenuItems.js b/docs/data/base/components/menu/WrappedMenuItems.js index 0cc07fcc129b9b..1ea877e232f410 100644 --- a/docs/data/base/components/menu/WrappedMenuItems.js +++ b/docs/data/base/components/menu/WrappedMenuItems.js @@ -94,7 +94,7 @@ const Listbox = styled('ul')( background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; - box-shadow: 0px 4px 6px ${ + box-shadow: 0 4px 6px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.50)' : 'rgba(0,0,0, 0.05)' }; z-index: 1; @@ -133,7 +133,6 @@ const MenuButton = styled(BaseMenuButton)( line-height: 1.5; padding: 8px 16px; border-radius: 8px; - color: white; transition: all 150ms ease; cursor: pointer; background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; diff --git a/docs/data/base/components/menu/WrappedMenuItems.tsx b/docs/data/base/components/menu/WrappedMenuItems.tsx index 0bab4fe6c07bf2..957be87e089f20 100644 --- a/docs/data/base/components/menu/WrappedMenuItems.tsx +++ b/docs/data/base/components/menu/WrappedMenuItems.tsx @@ -88,7 +88,7 @@ const Listbox = styled('ul')( background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; - box-shadow: 0px 4px 6px ${ + box-shadow: 0 4px 6px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.50)' : 'rgba(0,0,0, 0.05)' }; z-index: 1; @@ -127,7 +127,6 @@ const MenuButton = styled(BaseMenuButton)( line-height: 1.5; padding: 8px 16px; border-radius: 8px; - color: white; transition: all 150ms ease; cursor: pointer; background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; diff --git a/docs/data/base/components/modal/NestedModal.js b/docs/data/base/components/modal/NestedModal.js index 7a77c1dc53abed..8910e8d66a64f3 100644 --- a/docs/data/base/components/modal/NestedModal.js +++ b/docs/data/base/components/modal/NestedModal.js @@ -176,7 +176,6 @@ const TriggerButton = styled(Button)( line-height: 1.5; padding: 8px 16px; border-radius: 8px; - color: white; transition: all 150ms ease; cursor: pointer; background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; @@ -235,6 +234,7 @@ const ModalButton = styled(Button)( opacity: 0.4; cursor: not-allowed; box-shadow: none; + &:hover { background-color: ${blue[500]}; } diff --git a/docs/data/base/components/modal/NestedModal.tsx b/docs/data/base/components/modal/NestedModal.tsx index 4bca324c55f9a4..ebfebbd6b1b4bd 100644 --- a/docs/data/base/components/modal/NestedModal.tsx +++ b/docs/data/base/components/modal/NestedModal.tsx @@ -173,7 +173,6 @@ const TriggerButton = styled(Button)( line-height: 1.5; padding: 8px 16px; border-radius: 8px; - color: white; transition: all 150ms ease; cursor: pointer; background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; @@ -232,6 +231,7 @@ const ModalButton = styled(Button)( opacity: 0.4; cursor: not-allowed; box-shadow: none; + &:hover { background-color: ${blue[500]}; } diff --git a/docs/data/base/components/number-input/NumberInputAdornments.js b/docs/data/base/components/number-input/NumberInputAdornments.js index fae3df571569b7..9c683ef6b67906 100644 --- a/docs/data/base/components/number-input/NumberInputAdornments.js +++ b/docs/data/base/components/number-input/NumberInputAdornments.js @@ -101,7 +101,7 @@ const InputRoot = styled('div')( color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; - box-shadow: 0px 2px 4px ${ + box-shadow: 0 2px 4px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.5)' : 'rgba(0,0,0, 0.05)' }; display: grid; @@ -119,7 +119,7 @@ const InputRoot = styled('div')( border-color: ${blue[400]}; } - // firefox + /* firefox */ &:focus-visible { outline: 0; } @@ -209,9 +209,5 @@ const Button = styled('button')( & .arrow { transform: translateY(-1px); } - - & .arrow { - transform: translateY(-1px); - } `, ); diff --git a/docs/data/base/components/number-input/NumberInputAdornments.tsx b/docs/data/base/components/number-input/NumberInputAdornments.tsx index 3ff689bf394f8e..90bde60fba9544 100644 --- a/docs/data/base/components/number-input/NumberInputAdornments.tsx +++ b/docs/data/base/components/number-input/NumberInputAdornments.tsx @@ -105,7 +105,7 @@ const InputRoot = styled('div')( color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; - box-shadow: 0px 2px 4px ${ + box-shadow: 0 2px 4px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.5)' : 'rgba(0,0,0, 0.05)' }; display: grid; @@ -123,7 +123,7 @@ const InputRoot = styled('div')( border-color: ${blue[400]}; } - // firefox + /* firefox */ &:focus-visible { outline: 0; } @@ -213,9 +213,5 @@ const Button = styled('button')( & .arrow { transform: translateY(-1px); } - - & .arrow { - transform: translateY(-1px); - } `, ); diff --git a/docs/data/base/components/number-input/NumberInputBasic/system/index.js b/docs/data/base/components/number-input/NumberInputBasic/system/index.js index 2e13a87732193a..a6d3860f35cc69 100644 --- a/docs/data/base/components/number-input/NumberInputBasic/system/index.js +++ b/docs/data/base/components/number-input/NumberInputBasic/system/index.js @@ -69,7 +69,7 @@ const StyledInputRoot = styled('div')( color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; - box-shadow: 0px 2px 2px ${theme.palette.mode === 'dark' ? grey[900] : grey[50]}; + box-shadow: 0 2px 2px ${theme.palette.mode === 'dark' ? grey[900] : grey[50]}; display: grid; grid-template-columns: 1fr 19px; grid-template-rows: 1fr 1fr; @@ -86,7 +86,7 @@ const StyledInputRoot = styled('div')( border-color: ${blue[400]}; } - // firefox + /* firefox */ &:focus-visible { outline: 0; } @@ -144,6 +144,7 @@ const StyledButton = styled('button')( border-top-right-radius: 4px; border: 1px solid; border-bottom: 0; + &:hover { cursor: pointer; background: ${blue[400]}; @@ -161,6 +162,7 @@ const StyledButton = styled('button')( border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border: 1px solid; + &:hover { cursor: pointer; background: ${blue[400]}; @@ -171,6 +173,7 @@ const StyledButton = styled('button')( background: ${theme.palette.mode === 'dark' ? grey[900] : grey[50]}; color: ${theme.palette.mode === 'dark' ? grey[200] : grey[900]}; } + & .arrow { transform: translateY(-1px); } diff --git a/docs/data/base/components/number-input/NumberInputBasic/system/index.tsx b/docs/data/base/components/number-input/NumberInputBasic/system/index.tsx index 9000513f4c1637..10fc00b170c8c1 100644 --- a/docs/data/base/components/number-input/NumberInputBasic/system/index.tsx +++ b/docs/data/base/components/number-input/NumberInputBasic/system/index.tsx @@ -73,7 +73,7 @@ const StyledInputRoot = styled('div')( color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; - box-shadow: 0px 2px 2px ${theme.palette.mode === 'dark' ? grey[900] : grey[50]}; + box-shadow: 0 2px 2px ${theme.palette.mode === 'dark' ? grey[900] : grey[50]}; display: grid; grid-template-columns: 1fr 19px; grid-template-rows: 1fr 1fr; @@ -90,7 +90,7 @@ const StyledInputRoot = styled('div')( border-color: ${blue[400]}; } - // firefox + /* firefox */ &:focus-visible { outline: 0; } @@ -148,6 +148,7 @@ const StyledButton = styled('button')( border-top-right-radius: 4px; border: 1px solid; border-bottom: 0; + &:hover { cursor: pointer; background: ${blue[400]}; @@ -165,6 +166,7 @@ const StyledButton = styled('button')( border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border: 1px solid; + &:hover { cursor: pointer; background: ${blue[400]}; @@ -175,6 +177,7 @@ const StyledButton = styled('button')( background: ${theme.palette.mode === 'dark' ? grey[900] : grey[50]}; color: ${theme.palette.mode === 'dark' ? grey[200] : grey[900]}; } + & .arrow { transform: translateY(-1px); } diff --git a/docs/data/base/components/number-input/NumberInputIntroduction/system/index.js b/docs/data/base/components/number-input/NumberInputIntroduction/system/index.js index ddc2d54b08e65c..a4ef2948f45bba 100644 --- a/docs/data/base/components/number-input/NumberInputIntroduction/system/index.js +++ b/docs/data/base/components/number-input/NumberInputIntroduction/system/index.js @@ -64,7 +64,7 @@ const StyledInputRoot = styled('div')( color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; - box-shadow: 0px 2px 4px ${ + box-shadow: 0 2px 4px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.5)' : 'rgba(0,0,0, 0.05)' }; display: grid; @@ -83,7 +83,7 @@ const StyledInputRoot = styled('div')( border-color: ${blue[400]}; } - // firefox + /* firefox */ &:focus-visible { outline: 0; } @@ -129,9 +129,10 @@ const StyledButton = styled('button')( transition-duration: 120ms; &:hover { - background: ${theme.palette.mode === 'dark' ? grey[800] : grey[50]}; - border-color: ${theme.palette.mode === 'dark' ? grey[600] : grey[300]}; cursor: pointer; + color: #FFF; + background: ${theme.palette.mode === 'dark' ? blue[600] : blue[500]}; + border-color: ${theme.palette.mode === 'dark' ? blue[400] : blue[600]}; } &.${numberInputClasses.incrementButton} { @@ -164,17 +165,6 @@ const StyledButton = styled('button')( color: ${theme.palette.mode === 'dark' ? grey[200] : grey[900]}; } - &:hover { - cursor: pointer; - color: #FFF; - background: ${theme.palette.mode === 'dark' ? blue[600] : blue[500]}; - border-color: ${theme.palette.mode === 'dark' ? blue[400] : blue[600]}; - } - - & .arrow { - transform: translateY(-1px); - } - & .arrow { transform: translateY(-1px); } diff --git a/docs/data/base/components/number-input/NumberInputIntroduction/system/index.tsx b/docs/data/base/components/number-input/NumberInputIntroduction/system/index.tsx index 654f4140b92f9e..d368d21859a9f0 100644 --- a/docs/data/base/components/number-input/NumberInputIntroduction/system/index.tsx +++ b/docs/data/base/components/number-input/NumberInputIntroduction/system/index.tsx @@ -68,7 +68,7 @@ const StyledInputRoot = styled('div')( color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; - box-shadow: 0px 2px 4px ${ + box-shadow: 0 2px 4px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.5)' : 'rgba(0,0,0, 0.05)' }; display: grid; @@ -87,7 +87,7 @@ const StyledInputRoot = styled('div')( border-color: ${blue[400]}; } - // firefox + /* firefox */ &:focus-visible { outline: 0; } @@ -133,9 +133,10 @@ const StyledButton = styled('button')( transition-duration: 120ms; &:hover { - background: ${theme.palette.mode === 'dark' ? grey[800] : grey[50]}; - border-color: ${theme.palette.mode === 'dark' ? grey[600] : grey[300]}; cursor: pointer; + color: #FFF; + background: ${theme.palette.mode === 'dark' ? blue[600] : blue[500]}; + border-color: ${theme.palette.mode === 'dark' ? blue[400] : blue[600]}; } &.${numberInputClasses.incrementButton} { @@ -168,17 +169,6 @@ const StyledButton = styled('button')( color: ${theme.palette.mode === 'dark' ? grey[200] : grey[900]}; } - &:hover { - cursor: pointer; - color: #FFF; - background: ${theme.palette.mode === 'dark' ? blue[600] : blue[500]}; - border-color: ${theme.palette.mode === 'dark' ? blue[400] : blue[600]}; - } - - & .arrow { - transform: translateY(-1px); - } - & .arrow { transform: translateY(-1px); } diff --git a/docs/data/base/components/number-input/QuantityInput.js b/docs/data/base/components/number-input/QuantityInput.js index 54c19b527b375a..1e0d89034c2a6e 100644 --- a/docs/data/base/components/number-input/QuantityInput.js +++ b/docs/data/base/components/number-input/QuantityInput.js @@ -77,7 +77,7 @@ const StyledInput = styled('input')( color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; - box-shadow: 0px 2px 4px ${ + box-shadow: 0 2px 4px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.5)' : 'rgba(0,0,0, 0.05)' }; border-radius: 8px; diff --git a/docs/data/base/components/number-input/QuantityInput.tsx b/docs/data/base/components/number-input/QuantityInput.tsx index 9a6b066af54f70..b83109b18af9df 100644 --- a/docs/data/base/components/number-input/QuantityInput.tsx +++ b/docs/data/base/components/number-input/QuantityInput.tsx @@ -83,7 +83,7 @@ const StyledInput = styled('input')( color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; - box-shadow: 0px 2px 4px ${ + box-shadow: 0 2px 4px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.5)' : 'rgba(0,0,0, 0.05)' }; border-radius: 8px; diff --git a/docs/data/base/components/number-input/UseNumberInput.js b/docs/data/base/components/number-input/UseNumberInput.js index a2620b6f195d1f..a44106cc130894 100644 --- a/docs/data/base/components/number-input/UseNumberInput.js +++ b/docs/data/base/components/number-input/UseNumberInput.js @@ -67,7 +67,7 @@ const StyledInputRoot = styled('div')( color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; - box-shadow: 0px 2px 4px ${ + box-shadow: 0 2px 4px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.5)' : 'rgba(0,0,0, 0.05)' }; display: grid; @@ -84,10 +84,12 @@ const StyledInputRoot = styled('div')( & button:hover { background: ${blue[400]}; } - // firefox + + /* firefox */ &:focus-visible { outline: 0; } +} `, ); diff --git a/docs/data/base/components/number-input/UseNumberInput.tsx b/docs/data/base/components/number-input/UseNumberInput.tsx index 5b77bab17145bd..084c80d16050ba 100644 --- a/docs/data/base/components/number-input/UseNumberInput.tsx +++ b/docs/data/base/components/number-input/UseNumberInput.tsx @@ -73,7 +73,7 @@ const StyledInputRoot: React.ElementType = styled('div')( color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; - box-shadow: 0px 2px 4px ${ + box-shadow: 0 2px 4px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.5)' : 'rgba(0,0,0, 0.05)' }; display: grid; @@ -90,10 +90,12 @@ const StyledInputRoot: React.ElementType = styled('div')( & button:hover { background: ${blue[400]}; } - // firefox + + /* firefox */ &:focus-visible { outline: 0; } +} `, ); diff --git a/docs/data/base/components/number-input/UseNumberInputCompact.js b/docs/data/base/components/number-input/UseNumberInputCompact.js index 7ad7d3a5ad81e3..2ebe7b5229e7da 100644 --- a/docs/data/base/components/number-input/UseNumberInputCompact.js +++ b/docs/data/base/components/number-input/UseNumberInputCompact.js @@ -72,11 +72,7 @@ const grey = { const StyledInputRoot = styled('div')( ({ theme }) => ` display: grid; - grid-template-columns: 2rem; - grid-template-rows: 2rem 2rem; - grid-template-areas: - "increment" - "decrement"; + grid-template: "increment" 2rem "decrement" 2rem / 2rem; row-gap: 1px; overflow: auto; border-radius: 8px; @@ -84,7 +80,7 @@ const StyledInputRoot = styled('div')( border-width: 1px; color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; border-color: ${theme.palette.mode === 'dark' ? grey[800] : grey[200]}; - box-shadow: 0px 2px 4px ${ + box-shadow: 0 2px 4px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.5)' : 'rgba(0,0,0, 0.05)' }; `, diff --git a/docs/data/base/components/number-input/UseNumberInputCompact.tsx b/docs/data/base/components/number-input/UseNumberInputCompact.tsx index e87910bd295562..1195471be1ef7f 100644 --- a/docs/data/base/components/number-input/UseNumberInputCompact.tsx +++ b/docs/data/base/components/number-input/UseNumberInputCompact.tsx @@ -80,11 +80,7 @@ const grey = { const StyledInputRoot = styled('div')( ({ theme }) => ` display: grid; - grid-template-columns: 2rem; - grid-template-rows: 2rem 2rem; - grid-template-areas: - "increment" - "decrement"; + grid-template: "increment" 2rem "decrement" 2rem / 2rem; row-gap: 1px; overflow: auto; border-radius: 8px; @@ -92,7 +88,7 @@ const StyledInputRoot = styled('div')( border-width: 1px; color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; border-color: ${theme.palette.mode === 'dark' ? grey[800] : grey[200]}; - box-shadow: 0px 2px 4px ${ + box-shadow: 0 2px 4px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.5)' : 'rgba(0,0,0, 0.05)' }; `, diff --git a/docs/data/base/components/popper/SimplePopper.js b/docs/data/base/components/popper/SimplePopper.js index 15786b8a87c29a..a07fc567b23605 100644 --- a/docs/data/base/components/popper/SimplePopper.js +++ b/docs/data/base/components/popper/SimplePopper.js @@ -30,6 +30,6 @@ const StyledPopperDiv = styled('div')( border: 1px solid; background-color: ${theme.palette.mode === 'dark' ? '#121212' : '#fff'}; opacity: 1; - margin: 0.25rem 0px; + margin: 0.25rem 0; `, ); diff --git a/docs/data/base/components/popper/SimplePopper.tsx b/docs/data/base/components/popper/SimplePopper.tsx index 36fba0ca32687a..9f264f68cdc876 100644 --- a/docs/data/base/components/popper/SimplePopper.tsx +++ b/docs/data/base/components/popper/SimplePopper.tsx @@ -30,6 +30,6 @@ const StyledPopperDiv = styled('div')( border: 1px solid; background-color: ${theme.palette.mode === 'dark' ? '#121212' : '#fff'}; opacity: 1; - margin: 0.25rem 0px; + margin: 0.25rem 0; `, ); diff --git a/docs/data/base/components/popper/UnstyledPopperBasic/system/index.js b/docs/data/base/components/popper/UnstyledPopperBasic/system/index.js index 1b5e5f4d7c921c..cf5e30f200b421 100644 --- a/docs/data/base/components/popper/UnstyledPopperBasic/system/index.js +++ b/docs/data/base/components/popper/UnstyledPopperBasic/system/index.js @@ -85,6 +85,7 @@ const TriggerButton = styled('button')( opacity: 0.4; cursor: not-allowed; box-shadow: none; + &:hover { background-color: ${blue[500]}; } diff --git a/docs/data/base/components/popper/UnstyledPopperBasic/system/index.tsx b/docs/data/base/components/popper/UnstyledPopperBasic/system/index.tsx index 802b936a9431c4..6a52f32dc891c3 100644 --- a/docs/data/base/components/popper/UnstyledPopperBasic/system/index.tsx +++ b/docs/data/base/components/popper/UnstyledPopperBasic/system/index.tsx @@ -85,6 +85,7 @@ const TriggerButton = styled('button')( opacity: 0.4; cursor: not-allowed; box-shadow: none; + &:hover { background-color: ${blue[500]}; } diff --git a/docs/data/base/components/popup/AnimatedPopup.js b/docs/data/base/components/popup/AnimatedPopup.js index b07e1ae759245b..7bd470da73c958 100644 --- a/docs/data/base/components/popup/AnimatedPopup.js +++ b/docs/data/base/components/popup/AnimatedPopup.js @@ -162,6 +162,7 @@ const Button = styled('button')( opacity: 0.4; cursor: not-allowed; box-shadow: none; + &:hover { background-color: ${blue[500]}; } diff --git a/docs/data/base/components/popup/AnimatedPopup.tsx b/docs/data/base/components/popup/AnimatedPopup.tsx index adc87e8bf24d5c..2c0fa0d3f02dd8 100644 --- a/docs/data/base/components/popup/AnimatedPopup.tsx +++ b/docs/data/base/components/popup/AnimatedPopup.tsx @@ -160,6 +160,7 @@ const Button = styled('button')( opacity: 0.4; cursor: not-allowed; box-shadow: none; + &:hover { background-color: ${blue[500]}; } diff --git a/docs/data/base/components/popup/DisabledPortalPopup.js b/docs/data/base/components/popup/DisabledPortalPopup.js index f025cde88eff2a..2833d873deaae5 100644 --- a/docs/data/base/components/popup/DisabledPortalPopup.js +++ b/docs/data/base/components/popup/DisabledPortalPopup.js @@ -140,6 +140,7 @@ const Button = styled('button')( opacity: 0.4; cursor: not-allowed; box-shadow: none; + &:hover { background-color: ${blue[500]}; } diff --git a/docs/data/base/components/popup/DisabledPortalPopup.tsx b/docs/data/base/components/popup/DisabledPortalPopup.tsx index 89208937281a5d..f7fadf33397b3b 100644 --- a/docs/data/base/components/popup/DisabledPortalPopup.tsx +++ b/docs/data/base/components/popup/DisabledPortalPopup.tsx @@ -134,6 +134,7 @@ const Button = styled('button')( opacity: 0.4; cursor: not-allowed; box-shadow: none; + &:hover { background-color: ${blue[500]}; } diff --git a/docs/data/base/components/popup/SimplePopup.js b/docs/data/base/components/popup/SimplePopup.js index 283186f6c79338..c105cba08fc413 100644 --- a/docs/data/base/components/popup/SimplePopup.js +++ b/docs/data/base/components/popup/SimplePopup.js @@ -100,6 +100,7 @@ const Button = styled('button')( opacity: 0.4; cursor: not-allowed; box-shadow: none; + &:hover { background-color: ${blue[500]}; } diff --git a/docs/data/base/components/popup/SimplePopup.tsx b/docs/data/base/components/popup/SimplePopup.tsx index a664c51f668e01..e320658620a837 100644 --- a/docs/data/base/components/popup/SimplePopup.tsx +++ b/docs/data/base/components/popup/SimplePopup.tsx @@ -100,6 +100,7 @@ const Button = styled('button')( opacity: 0.4; cursor: not-allowed; box-shadow: none; + &:hover { background-color: ${blue[500]}; } diff --git a/docs/data/base/components/popup/UnstyledPopupIntroduction/system/index.js b/docs/data/base/components/popup/UnstyledPopupIntroduction/system/index.js index 192d701532dd85..e0d4da6a1cd70e 100644 --- a/docs/data/base/components/popup/UnstyledPopupIntroduction/system/index.js +++ b/docs/data/base/components/popup/UnstyledPopupIntroduction/system/index.js @@ -101,6 +101,7 @@ const Button = styled('button')( opacity: 0.4; cursor: not-allowed; box-shadow: none; + &:hover { background-color: ${blue[500]}; } diff --git a/docs/data/base/components/popup/UnstyledPopupIntroduction/system/index.tsx b/docs/data/base/components/popup/UnstyledPopupIntroduction/system/index.tsx index 18be629b2e7292..01ab8f7630593d 100644 --- a/docs/data/base/components/popup/UnstyledPopupIntroduction/system/index.tsx +++ b/docs/data/base/components/popup/UnstyledPopupIntroduction/system/index.tsx @@ -101,6 +101,7 @@ const Button = styled('button')( opacity: 0.4; cursor: not-allowed; box-shadow: none; + &:hover { background-color: ${blue[500]}; } diff --git a/docs/data/base/components/select/UnstyledSelectBasic/system/index.js b/docs/data/base/components/select/UnstyledSelectBasic/system/index.js index 4eca2d4dc1e75a..e6a80b983ac3e6 100644 --- a/docs/data/base/components/select/UnstyledSelectBasic/system/index.js +++ b/docs/data/base/components/select/UnstyledSelectBasic/system/index.js @@ -78,10 +78,9 @@ const StyledButton = styled('button', { shouldForwardProp: () => true })( background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; - box-shadow: 0px 2px 4px ${ + box-shadow: 0 2px 4px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.5)' : 'rgba(0,0,0, 0.05)' }; - transition-property: all; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 120ms; @@ -121,7 +120,7 @@ const Listbox = styled('ul')( background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; - box-shadow: 0px 2px 4px ${ + box-shadow: 0 2px 4px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.5)' : 'rgba(0,0,0, 0.05)' }; `, diff --git a/docs/data/base/components/select/UnstyledSelectBasic/system/index.tsx b/docs/data/base/components/select/UnstyledSelectBasic/system/index.tsx index 3a9494eb2cf7d0..b351db3b42de4e 100644 --- a/docs/data/base/components/select/UnstyledSelectBasic/system/index.tsx +++ b/docs/data/base/components/select/UnstyledSelectBasic/system/index.tsx @@ -88,10 +88,9 @@ const StyledButton = styled('button', { shouldForwardProp: () => true })( background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; - box-shadow: 0px 2px 4px ${ + box-shadow: 0 2px 4px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.5)' : 'rgba(0,0,0, 0.05)' }; - transition-property: all; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 120ms; @@ -131,7 +130,7 @@ const Listbox = styled('ul')( background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; - box-shadow: 0px 2px 4px ${ + box-shadow: 0 2px 4px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.5)' : 'rgba(0,0,0, 0.05)' }; `, diff --git a/docs/data/base/components/select/UnstyledSelectControlled.js b/docs/data/base/components/select/UnstyledSelectControlled.js index 03f5d3837f32b3..eed0d5262ea493 100644 --- a/docs/data/base/components/select/UnstyledSelectControlled.js +++ b/docs/data/base/components/select/UnstyledSelectControlled.js @@ -104,8 +104,7 @@ const StyledButton = styled(CustomButton, { shouldForwardProp: () => true })( background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; - box-shadow: 0px 2px 2px ${theme.palette.mode === 'dark' ? grey[900] : grey[50]}; - + box-shadow: 0 2px 2px ${theme.palette.mode === 'dark' ? grey[900] : grey[50]}; transition-property: all; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 120ms; @@ -142,7 +141,7 @@ const Listbox = styled('ul')( background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; - box-shadow: 0px 2px 6px ${ + box-shadow: 0 2px 6px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.50)' : 'rgba(0,0,0, 0.05)' }; `, diff --git a/docs/data/base/components/select/UnstyledSelectControlled.tsx b/docs/data/base/components/select/UnstyledSelectControlled.tsx index 812d796a453a2b..9913a9465c5ec3 100644 --- a/docs/data/base/components/select/UnstyledSelectControlled.tsx +++ b/docs/data/base/components/select/UnstyledSelectControlled.tsx @@ -93,8 +93,7 @@ const StyledButton = styled(CustomButton, { shouldForwardProp: () => true })( background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; - box-shadow: 0px 2px 2px ${theme.palette.mode === 'dark' ? grey[900] : grey[50]}; - + box-shadow: 0 2px 2px ${theme.palette.mode === 'dark' ? grey[900] : grey[50]}; transition-property: all; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 120ms; @@ -131,7 +130,7 @@ const Listbox = styled('ul')( background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; - box-shadow: 0px 2px 6px ${ + box-shadow: 0 2px 6px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.50)' : 'rgba(0,0,0, 0.05)' }; `, diff --git a/docs/data/base/components/select/UnstyledSelectCustomRenderValue.js b/docs/data/base/components/select/UnstyledSelectCustomRenderValue.js index 382cdf278bbaf1..6877b7db5ef0ca 100644 --- a/docs/data/base/components/select/UnstyledSelectCustomRenderValue.js +++ b/docs/data/base/components/select/UnstyledSelectCustomRenderValue.js @@ -101,10 +101,9 @@ const StyledButton = styled('button', { shouldForwardProp: () => true })( border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; position: relative; - box-shadow: 0px 2px 4px ${ + box-shadow: 0 2px 4px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.5)' : 'rgba(0,0,0, 0.05)' }; - transition-property: all; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 120ms; @@ -144,7 +143,7 @@ const Listbox = styled('ul')( background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; - box-shadow: 0px 2px 4px ${ + box-shadow: 0 2px 4px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.5)' : 'rgba(0,0,0, 0.05)' }; `, diff --git a/docs/data/base/components/select/UnstyledSelectCustomRenderValue.tsx b/docs/data/base/components/select/UnstyledSelectCustomRenderValue.tsx index 37bdc53ba6263e..5e4968ba4b9aa7 100644 --- a/docs/data/base/components/select/UnstyledSelectCustomRenderValue.tsx +++ b/docs/data/base/components/select/UnstyledSelectCustomRenderValue.tsx @@ -93,10 +93,9 @@ const StyledButton = styled('button', { shouldForwardProp: () => true })( border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; position: relative; - box-shadow: 0px 2px 4px ${ + box-shadow: 0 2px 4px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.5)' : 'rgba(0,0,0, 0.05)' }; - transition-property: all; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 120ms; @@ -136,7 +135,7 @@ const Listbox = styled('ul')( background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; - box-shadow: 0px 2px 4px ${ + box-shadow: 0 2px 4px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.5)' : 'rgba(0,0,0, 0.05)' }; `, diff --git a/docs/data/base/components/select/UnstyledSelectForm.js b/docs/data/base/components/select/UnstyledSelectForm.js index 508732ce235563..d7e324f3924d23 100644 --- a/docs/data/base/components/select/UnstyledSelectForm.js +++ b/docs/data/base/components/select/UnstyledSelectForm.js @@ -93,10 +93,9 @@ const StyledButton = styled('button', { shouldForwardProp: () => true })( background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; - box-shadow: 0px 2px 6px ${ + box-shadow: 0 2px 6px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.50)' : 'rgba(0,0,0, 0.05)' }; - transition-property: all; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 120ms; @@ -136,7 +135,7 @@ const Listbox = styled('ul')( background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; - box-shadow: 0px 2px 6px ${ + box-shadow: 0 2px 6px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.50)' : 'rgba(0,0,0, 0.05)' }; `, @@ -200,7 +199,7 @@ const Label = styled('label')( const SubmitButton = styled('button')( ({ theme }) => ` - font-family: IBM Plex Sans, sans-serif; + font-family: "IBM Plex Sans", sans-serif; font-weight: 600; font-size: 0.875rem; line-height: 1.5; diff --git a/docs/data/base/components/select/UnstyledSelectForm.tsx b/docs/data/base/components/select/UnstyledSelectForm.tsx index c520b4e831196e..c1609ca0400d19 100644 --- a/docs/data/base/components/select/UnstyledSelectForm.tsx +++ b/docs/data/base/components/select/UnstyledSelectForm.tsx @@ -103,10 +103,9 @@ const StyledButton = styled('button', { shouldForwardProp: () => true })( background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; - box-shadow: 0px 2px 6px ${ + box-shadow: 0 2px 6px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.50)' : 'rgba(0,0,0, 0.05)' }; - transition-property: all; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 120ms; @@ -146,7 +145,7 @@ const Listbox = styled('ul')( background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; - box-shadow: 0px 2px 6px ${ + box-shadow: 0 2px 6px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.50)' : 'rgba(0,0,0, 0.05)' }; `, @@ -210,7 +209,7 @@ const Label = styled('label')( const SubmitButton = styled('button')( ({ theme }) => ` - font-family: IBM Plex Sans, sans-serif; + font-family: "IBM Plex Sans", sans-serif; font-weight: 600; font-size: 0.875rem; line-height: 1.5; diff --git a/docs/data/base/components/select/UnstyledSelectGrouping.js b/docs/data/base/components/select/UnstyledSelectGrouping.js index 4727f9bd65c529..81ad7207c18a6f 100644 --- a/docs/data/base/components/select/UnstyledSelectGrouping.js +++ b/docs/data/base/components/select/UnstyledSelectGrouping.js @@ -122,10 +122,9 @@ const StyledButton = styled('button', { shouldForwardProp: () => true })( background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; - box-shadow: 0px 2px 6px ${ + box-shadow: 0 2px 6px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.50)' : 'rgba(0,0,0, 0.05)' }; - transition-property: all; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 120ms; @@ -165,7 +164,7 @@ const Listbox = styled('ul')( background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; - box-shadow: 0px 2px 6px ${ + box-shadow: 0 2px 6px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.50)' : 'rgba(0,0,0, 0.05)' }; `, diff --git a/docs/data/base/components/select/UnstyledSelectGrouping.tsx b/docs/data/base/components/select/UnstyledSelectGrouping.tsx index 8d75852992b297..2d722f4bd5270c 100644 --- a/docs/data/base/components/select/UnstyledSelectGrouping.tsx +++ b/docs/data/base/components/select/UnstyledSelectGrouping.tsx @@ -107,10 +107,9 @@ const StyledButton = styled('button', { shouldForwardProp: () => true })( background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; - box-shadow: 0px 2px 6px ${ + box-shadow: 0 2px 6px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.50)' : 'rgba(0,0,0, 0.05)' }; - transition-property: all; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 120ms; @@ -150,7 +149,7 @@ const Listbox = styled('ul')( background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; - box-shadow: 0px 2px 6px ${ + box-shadow: 0 2px 6px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.50)' : 'rgba(0,0,0, 0.05)' }; `, diff --git a/docs/data/base/components/select/UnstyledSelectIntroduction/system/index.js b/docs/data/base/components/select/UnstyledSelectIntroduction/system/index.js index 6ca9ea0309a5cf..1e35027f639ea8 100644 --- a/docs/data/base/components/select/UnstyledSelectIntroduction/system/index.js +++ b/docs/data/base/components/select/UnstyledSelectIntroduction/system/index.js @@ -93,10 +93,9 @@ const StyledButton = styled(Button, { shouldForwardProp: () => true })( border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; position: relative; - box-shadow: 0px 2px 4px ${ + box-shadow: 0 2px 4px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.5)' : 'rgba(0,0,0, 0.05)' }; - transition-property: all; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 120ms; @@ -136,7 +135,7 @@ const Listbox = styled('ul')( background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; - box-shadow: 0px 2px 4px ${ + box-shadow: 0 2px 4px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.5)' : 'rgba(0,0,0, 0.05)' }; diff --git a/docs/data/base/components/select/UnstyledSelectIntroduction/system/index.tsx b/docs/data/base/components/select/UnstyledSelectIntroduction/system/index.tsx index 321be4a611b5aa..3c9c19592ccbf5 100644 --- a/docs/data/base/components/select/UnstyledSelectIntroduction/system/index.tsx +++ b/docs/data/base/components/select/UnstyledSelectIntroduction/system/index.tsx @@ -89,10 +89,9 @@ const StyledButton = styled(Button, { shouldForwardProp: () => true })( border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; position: relative; - box-shadow: 0px 2px 4px ${ + box-shadow: 0 2px 4px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.5)' : 'rgba(0,0,0, 0.05)' }; - transition-property: all; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 120ms; @@ -132,7 +131,7 @@ const Listbox = styled('ul')( background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; - box-shadow: 0px 2px 4px ${ + box-shadow: 0 2px 4px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.5)' : 'rgba(0,0,0, 0.05)' }; diff --git a/docs/data/base/components/select/UnstyledSelectMultiple.js b/docs/data/base/components/select/UnstyledSelectMultiple.js index 2e0371099c33c2..126bfe197404b5 100644 --- a/docs/data/base/components/select/UnstyledSelectMultiple.js +++ b/docs/data/base/components/select/UnstyledSelectMultiple.js @@ -92,8 +92,7 @@ const StyledButton = styled('button', { shouldForwardProp: () => true })( border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; position: relative; - box-shadow: 0px 2px 2px ${theme.palette.mode === 'dark' ? grey[900] : grey[50]}; - + box-shadow: 0 2px 2px ${theme.palette.mode === 'dark' ? grey[900] : grey[50]}; transition-property: all; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 120ms; @@ -133,7 +132,7 @@ const Listbox = styled('ul')( background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; - box-shadow: 0px 2px 6px ${ + box-shadow: 0 2px 6px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.50)' : 'rgba(0,0,0, 0.05)' }; `, diff --git a/docs/data/base/components/select/UnstyledSelectMultiple.tsx b/docs/data/base/components/select/UnstyledSelectMultiple.tsx index ddf47487cc3c70..2de37c18714ddc 100644 --- a/docs/data/base/components/select/UnstyledSelectMultiple.tsx +++ b/docs/data/base/components/select/UnstyledSelectMultiple.tsx @@ -87,8 +87,7 @@ const StyledButton = styled('button', { shouldForwardProp: () => true })( border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; position: relative; - box-shadow: 0px 2px 2px ${theme.palette.mode === 'dark' ? grey[900] : grey[50]}; - + box-shadow: 0 2px 2px ${theme.palette.mode === 'dark' ? grey[900] : grey[50]}; transition-property: all; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 120ms; @@ -128,7 +127,7 @@ const Listbox = styled('ul')( background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; - box-shadow: 0px 2px 6px ${ + box-shadow: 0 2px 6px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.50)' : 'rgba(0,0,0, 0.05)' }; `, diff --git a/docs/data/base/components/select/UnstyledSelectObjectValues.js b/docs/data/base/components/select/UnstyledSelectObjectValues.js index eaf8df57c8bf50..1a7a2ebb161802 100644 --- a/docs/data/base/components/select/UnstyledSelectObjectValues.js +++ b/docs/data/base/components/select/UnstyledSelectObjectValues.js @@ -108,8 +108,7 @@ const StyledButton = styled('button', { shouldForwardProp: () => true })( border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; position: relative; - box-shadow: 0px 2px 2px ${theme.palette.mode === 'dark' ? grey[900] : grey[50]}; - + box-shadow: 0 2px 2px ${theme.palette.mode === 'dark' ? grey[900] : grey[50]}; transition-property: all; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 120ms; @@ -149,7 +148,7 @@ const Listbox = styled('ul')( background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; - box-shadow: 0px 2px 6px ${ + box-shadow: 0 2px 6px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.50)' : 'rgba(0,0,0, 0.05)' }; `, diff --git a/docs/data/base/components/select/UnstyledSelectObjectValues.tsx b/docs/data/base/components/select/UnstyledSelectObjectValues.tsx index 484bae2ad7b9b6..ee336302363041 100644 --- a/docs/data/base/components/select/UnstyledSelectObjectValues.tsx +++ b/docs/data/base/components/select/UnstyledSelectObjectValues.tsx @@ -107,8 +107,7 @@ const StyledButton = styled('button', { shouldForwardProp: () => true })( border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; position: relative; - box-shadow: 0px 2px 2px ${theme.palette.mode === 'dark' ? grey[900] : grey[50]}; - + box-shadow: 0 2px 2px ${theme.palette.mode === 'dark' ? grey[900] : grey[50]}; transition-property: all; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 120ms; @@ -148,7 +147,7 @@ const Listbox = styled('ul')( background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; - box-shadow: 0px 2px 6px ${ + box-shadow: 0 2px 6px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.50)' : 'rgba(0,0,0, 0.05)' }; `, diff --git a/docs/data/base/components/select/UnstyledSelectObjectValuesForm.js b/docs/data/base/components/select/UnstyledSelectObjectValuesForm.js index b3cd9532acb1a8..daff43b42cbe91 100644 --- a/docs/data/base/components/select/UnstyledSelectObjectValuesForm.js +++ b/docs/data/base/components/select/UnstyledSelectObjectValuesForm.js @@ -167,10 +167,9 @@ const StyledButton = styled(Button, { shouldForwardProp: () => true })( border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; position: relative; - box-shadow: 0px 2px 4px ${ + box-shadow: 0 2px 4px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.5)' : 'rgba(0,0,0, 0.05)' }; - transition-property: all; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 120ms; @@ -210,7 +209,7 @@ const Listbox = styled('ul')( color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; overflow: auto; outline: 0; - box-shadow: 0px 2px 6px ${ + box-shadow: 0 2px 6px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.50)' : 'rgba(0,0,0, 0.05)' }; `, @@ -307,6 +306,7 @@ const SubmitButton = styled('button')( opacity: 0.4; cursor: not-allowed; box-shadow: none; + &:hover { background-color: ${blue[500]}; } diff --git a/docs/data/base/components/select/UnstyledSelectObjectValuesForm.tsx b/docs/data/base/components/select/UnstyledSelectObjectValuesForm.tsx index cff198fdf9fe13..13836154fd5f0c 100644 --- a/docs/data/base/components/select/UnstyledSelectObjectValuesForm.tsx +++ b/docs/data/base/components/select/UnstyledSelectObjectValuesForm.tsx @@ -166,10 +166,9 @@ const StyledButton = styled(Button, { shouldForwardProp: () => true })( border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; position: relative; - box-shadow: 0px 2px 4px ${ + box-shadow: 0 2px 4px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.5)' : 'rgba(0,0,0, 0.05)' }; - transition-property: all; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 120ms; @@ -209,7 +208,7 @@ const Listbox = styled('ul')( color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; overflow: auto; outline: 0; - box-shadow: 0px 2px 6px ${ + box-shadow: 0 2px 6px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.50)' : 'rgba(0,0,0, 0.05)' }; `, @@ -306,6 +305,7 @@ const SubmitButton = styled('button')( opacity: 0.4; cursor: not-allowed; box-shadow: none; + &:hover { background-color: ${blue[500]}; } diff --git a/docs/data/base/components/select/UnstyledSelectRichOptions.js b/docs/data/base/components/select/UnstyledSelectRichOptions.js index 662803adfb8331..7d625af4f22441 100644 --- a/docs/data/base/components/select/UnstyledSelectRichOptions.js +++ b/docs/data/base/components/select/UnstyledSelectRichOptions.js @@ -100,8 +100,7 @@ const StyledButton = styled('button', { shouldForwardProp: () => true })( border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; position: relative; - box-shadow: 0px 2px 2px ${theme.palette.mode === 'dark' ? grey[900] : grey[50]}; - + box-shadow: 0 2px 2px ${theme.palette.mode === 'dark' ? grey[900] : grey[50]}; transition-property: all; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 120ms; @@ -142,7 +141,7 @@ const Listbox = styled('ul')( background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; - box-shadow: 0px 2px 6px ${ + box-shadow: 0 2px 6px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.50)' : 'rgba(0,0,0, 0.05)' }; `, diff --git a/docs/data/base/components/select/UnstyledSelectRichOptions.tsx b/docs/data/base/components/select/UnstyledSelectRichOptions.tsx index f00c62b91cd88c..3c52c728d870eb 100644 --- a/docs/data/base/components/select/UnstyledSelectRichOptions.tsx +++ b/docs/data/base/components/select/UnstyledSelectRichOptions.tsx @@ -95,8 +95,7 @@ const StyledButton = styled('button', { shouldForwardProp: () => true })( border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; position: relative; - box-shadow: 0px 2px 2px ${theme.palette.mode === 'dark' ? grey[900] : grey[50]}; - + box-shadow: 0 2px 2px ${theme.palette.mode === 'dark' ? grey[900] : grey[50]}; transition-property: all; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 120ms; @@ -137,7 +136,7 @@ const Listbox = styled('ul')( background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; - box-shadow: 0px 2px 6px ${ + box-shadow: 0 2px 6px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.50)' : 'rgba(0,0,0, 0.05)' }; `, diff --git a/docs/data/base/components/select/UnstyledSelectTransitions.js b/docs/data/base/components/select/UnstyledSelectTransitions.js index 0335b8340ed2fc..c26a6a85082f1a 100644 --- a/docs/data/base/components/select/UnstyledSelectTransitions.js +++ b/docs/data/base/components/select/UnstyledSelectTransitions.js @@ -96,10 +96,9 @@ const StyledButton = styled(Button, { shouldForwardProp: () => true })( border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; position: relative; - box-shadow: 0px 2px 4px ${ + box-shadow: 0 2px 4px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.5)' : 'rgba(0,0,0, 0.05)' }; - transition-property: all; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 120ms; @@ -139,7 +138,7 @@ const Listbox = styled('ul')( background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; - box-shadow: 0px 2px 4px ${ + box-shadow: 0 2px 4px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.5)' : 'rgba(0,0,0, 0.05)' }; diff --git a/docs/data/base/components/select/UnstyledSelectTransitions.tsx b/docs/data/base/components/select/UnstyledSelectTransitions.tsx index 6bc6ba44123ff8..dda8ded8e40f39 100644 --- a/docs/data/base/components/select/UnstyledSelectTransitions.tsx +++ b/docs/data/base/components/select/UnstyledSelectTransitions.tsx @@ -92,10 +92,9 @@ const StyledButton = styled(Button, { shouldForwardProp: () => true })( border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; position: relative; - box-shadow: 0px 2px 4px ${ + box-shadow: 0 2px 4px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.5)' : 'rgba(0,0,0, 0.05)' }; - transition-property: all; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 120ms; @@ -135,7 +134,7 @@ const Listbox = styled('ul')( background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; - box-shadow: 0px 2px 4px ${ + box-shadow: 0 2px 4px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.5)' : 'rgba(0,0,0, 0.05)' }; diff --git a/docs/data/base/components/select/UseSelect.js b/docs/data/base/components/select/UseSelect.js index cd8fa115567042..2341e64ccdb715 100644 --- a/docs/data/base/components/select/UseSelect.js +++ b/docs/data/base/components/select/UseSelect.js @@ -50,8 +50,7 @@ const Toggle = styled('button')( border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; position: relative; - box-shadow: 0px 2px 2px ${theme.palette.mode === 'dark' ? grey[900] : grey[50]}; - + box-shadow: 0 2px 2px ${theme.palette.mode === 'dark' ? grey[900] : grey[50]}; transition-property: all; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 120ms; @@ -85,7 +84,6 @@ const Listbox = styled('ul')( box-sizing: border-box; min-height: calc(1.5em + 22px); min-width: 320px; - padding: 12px; border-radius: 12px; text-align: left; line-height: 1.5; @@ -93,7 +91,7 @@ const Listbox = styled('ul')( border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; padding: 5px; - margin: 5px 0 0 0; + margin: 5px 0 0; position: absolute; height: auto; width: 100%; @@ -101,7 +99,7 @@ const Listbox = styled('ul')( z-index: 1; outline: 0; list-style: none; - box-shadow: 0px 2px 6px ${ + box-shadow: 0 2px 6px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.50)' : 'rgba(0,0,0, 0.05)' }; diff --git a/docs/data/base/components/select/UseSelect.tsx b/docs/data/base/components/select/UseSelect.tsx index c93db05dd09925..f0cb9e4d76e547 100644 --- a/docs/data/base/components/select/UseSelect.tsx +++ b/docs/data/base/components/select/UseSelect.tsx @@ -53,8 +53,7 @@ const Toggle = styled('button')( border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; position: relative; - box-shadow: 0px 2px 2px ${theme.palette.mode === 'dark' ? grey[900] : grey[50]}; - + box-shadow: 0 2px 2px ${theme.palette.mode === 'dark' ? grey[900] : grey[50]}; transition-property: all; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 120ms; @@ -88,7 +87,6 @@ const Listbox = styled('ul')( box-sizing: border-box; min-height: calc(1.5em + 22px); min-width: 320px; - padding: 12px; border-radius: 12px; text-align: left; line-height: 1.5; @@ -96,7 +94,7 @@ const Listbox = styled('ul')( border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; padding: 5px; - margin: 5px 0 0 0; + margin: 5px 0 0; position: absolute; height: auto; width: 100%; @@ -104,7 +102,7 @@ const Listbox = styled('ul')( z-index: 1; outline: 0; list-style: none; - box-shadow: 0px 2px 6px ${ + box-shadow: 0 2px 6px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.50)' : 'rgba(0,0,0, 0.05)' }; diff --git a/docs/data/base/components/slider/DiscreteSlider.js b/docs/data/base/components/slider/DiscreteSlider.js index 38c906072dc664..e6dc04dc39e36f 100644 --- a/docs/data/base/components/slider/DiscreteSlider.js +++ b/docs/data/base/components/slider/DiscreteSlider.js @@ -151,7 +151,7 @@ const Slider = styled(BaseSlider)( } & .valueLabel { - font-family: IBM Plex Sans; + font-family: "IBM Plex Sans", sans-serif; font-weight: 600; font-size: 12px; position: relative; diff --git a/docs/data/base/components/slider/DiscreteSlider.tsx b/docs/data/base/components/slider/DiscreteSlider.tsx index 87216292aca7cd..f29ecc66cff43b 100644 --- a/docs/data/base/components/slider/DiscreteSlider.tsx +++ b/docs/data/base/components/slider/DiscreteSlider.tsx @@ -150,7 +150,7 @@ const Slider = styled(BaseSlider)( } & .valueLabel { - font-family: IBM Plex Sans; + font-family: "IBM Plex Sans", sans-serif; font-weight: 600; font-size: 12px; position: relative; diff --git a/docs/data/base/components/slider/DiscreteSliderMarks.js b/docs/data/base/components/slider/DiscreteSliderMarks.js index 9001abcf186456..faf44eb123568e 100644 --- a/docs/data/base/components/slider/DiscreteSliderMarks.js +++ b/docs/data/base/components/slider/DiscreteSliderMarks.js @@ -156,7 +156,7 @@ const Slider = styled(BaseSlider)( } & .${sliderClasses.markLabel} { - font-family: IBM Plex Sans; + font-family: "IBM Plex Sans", sans-serif; font-weight: 600; font-size: 12px; position: absolute; diff --git a/docs/data/base/components/slider/DiscreteSliderMarks.tsx b/docs/data/base/components/slider/DiscreteSliderMarks.tsx index 8d1d283fafcbed..d4f2fc79f7deb4 100644 --- a/docs/data/base/components/slider/DiscreteSliderMarks.tsx +++ b/docs/data/base/components/slider/DiscreteSliderMarks.tsx @@ -156,7 +156,7 @@ const Slider = styled(BaseSlider)( } & .${sliderClasses.markLabel} { - font-family: IBM Plex Sans; + font-family: "IBM Plex Sans", sans-serif; font-weight: 600; font-size: 12px; position: absolute; diff --git a/docs/data/base/components/slider/DiscreteSliderValues.js b/docs/data/base/components/slider/DiscreteSliderValues.js index ba5710ec11eecb..4e22f356684e83 100644 --- a/docs/data/base/components/slider/DiscreteSliderValues.js +++ b/docs/data/base/components/slider/DiscreteSliderValues.js @@ -157,7 +157,7 @@ const Slider = styled(BaseSlider)( } & .${sliderClasses.markLabel} { - font-family: IBM Plex Sans; + font-family: "IBM Plex Sans", sans-serif; font-weight: 600; font-size: 12px; position: absolute; diff --git a/docs/data/base/components/slider/DiscreteSliderValues.tsx b/docs/data/base/components/slider/DiscreteSliderValues.tsx index ee6f73874cb10c..d2b2b2688ad31e 100644 --- a/docs/data/base/components/slider/DiscreteSliderValues.tsx +++ b/docs/data/base/components/slider/DiscreteSliderValues.tsx @@ -157,7 +157,7 @@ const Slider = styled(BaseSlider)( } & .${sliderClasses.markLabel} { - font-family: IBM Plex Sans; + font-family: "IBM Plex Sans", sans-serif; font-weight: 600; font-size: 12px; position: absolute; diff --git a/docs/data/base/components/slider/LabeledValuesSlider.js b/docs/data/base/components/slider/LabeledValuesSlider.js index 3e5f5ae8192864..5bc2af91390e62 100644 --- a/docs/data/base/components/slider/LabeledValuesSlider.js +++ b/docs/data/base/components/slider/LabeledValuesSlider.js @@ -128,14 +128,14 @@ const Slider = styled(BaseSlider)( } & .label { - font-family: IBM Plex Sans; + font-family: "IBM Plex Sans", sans-serif; font-weight: 600; font-size: 14px; background: unset; background-color: ${theme.palette.mode === 'light' ? blue[600] : blue[900]}; width: 32px; height: 32px; - padding: 0px; + padding: 0; visibility: hidden; color: #fff; border-radius: 50% 50% 50% 0; @@ -156,6 +156,5 @@ const Slider = styled(BaseSlider)( transform: rotate(45deg); text-align: center; } - } `, ); diff --git a/docs/data/base/components/slider/LabeledValuesSlider.tsx b/docs/data/base/components/slider/LabeledValuesSlider.tsx index 143073006c60bb..544bd1c70ffaaa 100644 --- a/docs/data/base/components/slider/LabeledValuesSlider.tsx +++ b/docs/data/base/components/slider/LabeledValuesSlider.tsx @@ -127,14 +127,14 @@ const Slider = styled(BaseSlider)( } & .label { - font-family: IBM Plex Sans; + font-family: "IBM Plex Sans", sans-serif; font-weight: 600; font-size: 14px; background: unset; background-color: ${theme.palette.mode === 'light' ? blue[600] : blue[900]}; width: 32px; height: 32px; - padding: 0px; + padding: 0; visibility: hidden; color: #fff; border-radius: 50% 50% 50% 0; @@ -155,6 +155,5 @@ const Slider = styled(BaseSlider)( transform: rotate(45deg); text-align: center; } - } `, ); diff --git a/docs/data/base/components/slider/VerticalSlider.js b/docs/data/base/components/slider/VerticalSlider.js index e02335da7736a6..b389c6d7d38f3f 100644 --- a/docs/data/base/components/slider/VerticalSlider.js +++ b/docs/data/base/components/slider/VerticalSlider.js @@ -64,9 +64,6 @@ const Slider = styled(BaseSlider)( outline: 0; background-color: ${theme.palette.mode === 'light' ? blue[500] : blue[400]}; left: 50%; - -webkit-transform: translate(-50%, 50%); - -moz-transform: translate(-50%, 50%); - -ms-transform: translate(-50%, 50%); transform: translate(-50%, 50%); transition-property: box-shadow, width, height; transition-timing-function: ease; diff --git a/docs/data/base/components/slider/VerticalSlider.tsx b/docs/data/base/components/slider/VerticalSlider.tsx index e02335da7736a6..b389c6d7d38f3f 100644 --- a/docs/data/base/components/slider/VerticalSlider.tsx +++ b/docs/data/base/components/slider/VerticalSlider.tsx @@ -64,9 +64,6 @@ const Slider = styled(BaseSlider)( outline: 0; background-color: ${theme.palette.mode === 'light' ? blue[500] : blue[400]}; left: 50%; - -webkit-transform: translate(-50%, 50%); - -moz-transform: translate(-50%, 50%); - -ms-transform: translate(-50%, 50%); transform: translate(-50%, 50%); transition-property: box-shadow, width, height; transition-timing-function: ease; diff --git a/docs/data/base/components/snackbar/TransitionComponentSnackbar.js b/docs/data/base/components/snackbar/TransitionComponentSnackbar.js index 338ad9a413bedf..6f229bfe3147cb 100644 --- a/docs/data/base/components/snackbar/TransitionComponentSnackbar.js +++ b/docs/data/base/components/snackbar/TransitionComponentSnackbar.js @@ -97,7 +97,6 @@ const TriggerButton = styled('button')( line-height: 1.5; padding: 8px 16px; border-radius: 8px; - color: white; transition: all 150ms ease; cursor: pointer; background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; @@ -111,6 +110,7 @@ const TriggerButton = styled('button')( background: ${theme.palette.mode === 'dark' ? grey[800] : grey[50]}; border-color: ${theme.palette.mode === 'dark' ? grey[600] : grey[300]}; } + &:active { background: ${theme.palette.mode === 'dark' ? grey[700] : grey[100]}; } diff --git a/docs/data/base/components/snackbar/TransitionComponentSnackbar.tsx b/docs/data/base/components/snackbar/TransitionComponentSnackbar.tsx index ccd8821e10f1d1..4db4510af61023 100644 --- a/docs/data/base/components/snackbar/TransitionComponentSnackbar.tsx +++ b/docs/data/base/components/snackbar/TransitionComponentSnackbar.tsx @@ -98,7 +98,6 @@ const TriggerButton = styled('button')( line-height: 1.5; padding: 8px 16px; border-radius: 8px; - color: white; transition: all 150ms ease; cursor: pointer; background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; @@ -112,6 +111,7 @@ const TriggerButton = styled('button')( background: ${theme.palette.mode === 'dark' ? grey[800] : grey[50]}; border-color: ${theme.palette.mode === 'dark' ? grey[600] : grey[300]}; } + &:active { background: ${theme.palette.mode === 'dark' ? grey[700] : grey[100]}; } diff --git a/docs/data/base/components/snackbar/UnstyledSnackbar/system/index.js b/docs/data/base/components/snackbar/UnstyledSnackbar/system/index.js index af9520d92c017b..0629d6a3c44db9 100644 --- a/docs/data/base/components/snackbar/UnstyledSnackbar/system/index.js +++ b/docs/data/base/components/snackbar/UnstyledSnackbar/system/index.js @@ -78,7 +78,6 @@ const TriggerButton = styled('button')( line-height: 1.5; padding: 8px 16px; border-radius: 8px; - color: white; transition: all 150ms ease; cursor: pointer; background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; diff --git a/docs/data/base/components/snackbar/UnstyledSnackbar/system/index.tsx b/docs/data/base/components/snackbar/UnstyledSnackbar/system/index.tsx index af9520d92c017b..0629d6a3c44db9 100644 --- a/docs/data/base/components/snackbar/UnstyledSnackbar/system/index.tsx +++ b/docs/data/base/components/snackbar/UnstyledSnackbar/system/index.tsx @@ -78,7 +78,6 @@ const TriggerButton = styled('button')( line-height: 1.5; padding: 8px 16px; border-radius: 8px; - color: white; transition: all 150ms ease; cursor: pointer; background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; diff --git a/docs/data/base/components/snackbar/UnstyledSnackbarIntroduction/system/index.js b/docs/data/base/components/snackbar/UnstyledSnackbarIntroduction/system/index.js index d92c112f4140f3..b81be8f9b488ad 100644 --- a/docs/data/base/components/snackbar/UnstyledSnackbarIntroduction/system/index.js +++ b/docs/data/base/components/snackbar/UnstyledSnackbarIntroduction/system/index.js @@ -113,7 +113,6 @@ const TriggerButton = styled('button')( line-height: 1.5; padding: 8px 16px; border-radius: 8px; - color: white; transition: all 150ms ease; cursor: pointer; background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; @@ -157,7 +156,7 @@ const SnackbarContent = styled('div')( border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; box-shadow: ${ theme.palette.mode === 'dark' - ? `0 2px 16px rgba(0,0,0, 0.5)` + ? `0 2px 16px rgb(0 0 0 / 0.5)` : `0 2px 16px ${grey[200]}` }; padding: 0.75rem; diff --git a/docs/data/base/components/snackbar/UnstyledSnackbarIntroduction/system/index.tsx b/docs/data/base/components/snackbar/UnstyledSnackbarIntroduction/system/index.tsx index b4fed03c2a230f..65eb729017da28 100644 --- a/docs/data/base/components/snackbar/UnstyledSnackbarIntroduction/system/index.tsx +++ b/docs/data/base/components/snackbar/UnstyledSnackbarIntroduction/system/index.tsx @@ -114,7 +114,6 @@ const TriggerButton = styled('button')( line-height: 1.5; padding: 8px 16px; border-radius: 8px; - color: white; transition: all 150ms ease; cursor: pointer; background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; @@ -158,7 +157,7 @@ const SnackbarContent = styled('div')( border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; box-shadow: ${ theme.palette.mode === 'dark' - ? `0 2px 16px rgba(0,0,0, 0.5)` + ? `0 2px 16px rgb(0 0 0 / 0.5)` : `0 2px 16px ${grey[200]}` }; padding: 0.75rem; diff --git a/docs/data/base/components/snackbar/UseSnackbar.js b/docs/data/base/components/snackbar/UseSnackbar.js index a479feb8477ee7..22bf3a1fe88263 100644 --- a/docs/data/base/components/snackbar/UseSnackbar.js +++ b/docs/data/base/components/snackbar/UseSnackbar.js @@ -74,7 +74,6 @@ const TriggerButton = styled('button')( line-height: 1.5; padding: 8px 16px; border-radius: 8px; - color: white; transition: all 150ms ease; cursor: pointer; background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; diff --git a/docs/data/base/components/snackbar/UseSnackbar.tsx b/docs/data/base/components/snackbar/UseSnackbar.tsx index a479feb8477ee7..22bf3a1fe88263 100644 --- a/docs/data/base/components/snackbar/UseSnackbar.tsx +++ b/docs/data/base/components/snackbar/UseSnackbar.tsx @@ -74,7 +74,6 @@ const TriggerButton = styled('button')( line-height: 1.5; padding: 8px 16px; border-radius: 8px; - color: white; transition: all 150ms ease; cursor: pointer; background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; diff --git a/docs/data/base/components/switch/UnstyledSwitchIntroduction/system/index.js b/docs/data/base/components/switch/UnstyledSwitchIntroduction/system/index.js index 8a8fe6ee4726eb..d00f1c033d53db 100644 --- a/docs/data/base/components/switch/UnstyledSwitchIntroduction/system/index.js +++ b/docs/data/base/components/switch/UnstyledSwitchIntroduction/system/index.js @@ -85,7 +85,7 @@ const Root = styled('span')( transition-property: all; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 120ms; - box-shadow: inset 0px 1px 1px ${ + box-shadow: inset 0 1px 1px ${ theme.palette.mode === 'dark' ? 'rgba(0, 0, 0, 0.5)' : 'rgba(0, 0, 0, 0.05)' }; } @@ -113,7 +113,7 @@ const Root = styled('span')( transition-property: all; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 120ms; - box-shadow: 0px 1px 2px ${ + box-shadow: 0 1px 2px ${ theme.palette.mode === 'dark' ? 'rgba(0, 0, 0, 0.25)' : 'rgba(0, 0, 0, 0.1)' }; } @@ -122,7 +122,7 @@ const Root = styled('span')( .${switchClasses.thumb} { left: 18px; background-color: #fff; - box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.3); + box-shadow: 0 1px 2px rgb(0 0 0 / 0.3); } .${switchClasses.track} { diff --git a/docs/data/base/components/switch/UnstyledSwitchIntroduction/system/index.tsx b/docs/data/base/components/switch/UnstyledSwitchIntroduction/system/index.tsx index 8a8fe6ee4726eb..d00f1c033d53db 100644 --- a/docs/data/base/components/switch/UnstyledSwitchIntroduction/system/index.tsx +++ b/docs/data/base/components/switch/UnstyledSwitchIntroduction/system/index.tsx @@ -85,7 +85,7 @@ const Root = styled('span')( transition-property: all; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 120ms; - box-shadow: inset 0px 1px 1px ${ + box-shadow: inset 0 1px 1px ${ theme.palette.mode === 'dark' ? 'rgba(0, 0, 0, 0.5)' : 'rgba(0, 0, 0, 0.05)' }; } @@ -113,7 +113,7 @@ const Root = styled('span')( transition-property: all; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 120ms; - box-shadow: 0px 1px 2px ${ + box-shadow: 0 1px 2px ${ theme.palette.mode === 'dark' ? 'rgba(0, 0, 0, 0.25)' : 'rgba(0, 0, 0, 0.1)' }; } @@ -122,7 +122,7 @@ const Root = styled('span')( .${switchClasses.thumb} { left: 18px; background-color: #fff; - box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.3); + box-shadow: 0 1px 2px rgb(0 0 0 / 0.3); } .${switchClasses.track} { diff --git a/docs/data/base/components/switch/UnstyledSwitches.js b/docs/data/base/components/switch/UnstyledSwitches.js index 21232781940a91..0d3ee244f5364c 100644 --- a/docs/data/base/components/switch/UnstyledSwitches.js +++ b/docs/data/base/components/switch/UnstyledSwitches.js @@ -79,7 +79,7 @@ const Root = styled('span')( height: 100%; width: 100%; position: absolute; - box-shadow: inset 0px 1px 1px ${ + box-shadow: inset 0 1px 1px ${ theme.palette.mode === 'dark' ? 'rgba(0, 0, 0, 0.5)' : 'rgba(0, 0, 0, 0.05)' }; } @@ -105,7 +105,7 @@ const Root = styled('span')( transition-property: all; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 120ms; - box-shadow: 0px 1px 2px ${ + box-shadow: 0 1px 2px ${ theme.palette.mode === 'dark' ? 'rgba(0, 0, 0, 0.25)' : 'rgba(0, 0, 0, 0.1)' }; } diff --git a/docs/data/base/components/switch/UnstyledSwitches.tsx b/docs/data/base/components/switch/UnstyledSwitches.tsx index 21232781940a91..0d3ee244f5364c 100644 --- a/docs/data/base/components/switch/UnstyledSwitches.tsx +++ b/docs/data/base/components/switch/UnstyledSwitches.tsx @@ -79,7 +79,7 @@ const Root = styled('span')( height: 100%; width: 100%; position: absolute; - box-shadow: inset 0px 1px 1px ${ + box-shadow: inset 0 1px 1px ${ theme.palette.mode === 'dark' ? 'rgba(0, 0, 0, 0.5)' : 'rgba(0, 0, 0, 0.05)' }; } @@ -105,7 +105,7 @@ const Root = styled('span')( transition-property: all; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 120ms; - box-shadow: 0px 1px 2px ${ + box-shadow: 0 1px 2px ${ theme.palette.mode === 'dark' ? 'rgba(0, 0, 0, 0.25)' : 'rgba(0, 0, 0, 0.1)' }; } diff --git a/docs/data/base/components/switch/UseSwitchesBasic.js b/docs/data/base/components/switch/UseSwitchesBasic.js index 8a58979c51ebba..8a42f440ffa53c 100644 --- a/docs/data/base/components/switch/UseSwitchesBasic.js +++ b/docs/data/base/components/switch/UseSwitchesBasic.js @@ -63,7 +63,7 @@ const BasicSwitchRoot = styled('span')( background: ${theme.palette.mode === 'dark' ? grey[900] : grey[50]}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[800] : grey[200]}; border-radius: 24px; - box-shadow: inset 0px 1px 1px ${ + box-shadow: inset 0 1px 1px ${ theme.palette.mode === 'dark' ? 'rgba(0, 0, 0, 0.5)' : 'rgba(0, 0, 0, 0.05)' }; @@ -83,9 +83,10 @@ const BasicSwitchRoot = styled('span')( &.Switch-checked { border: 1px solid ${theme.palette.mode === 'dark' ? grey[800] : grey[200]}; background: ${blue[500]}; - box-shadow: inset 0px 1px 1px ${ + box-shadow: inset 0 1px 1px ${ theme.palette.mode === 'dark' ? 'rgba(0, 0, 0, 0.2)' : 'rgba(0, 0, 0, 0.05)' }; + &.Switch-focusVisible { box-shadow: 0 0 0 3px ${theme.palette.mode === 'dark' ? blue[700] : blue[200]}; } @@ -122,7 +123,7 @@ const BasicSwitchThumb = styled('span')( transition-property: all; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 120ms; - box-shadow: 0px 1px 2px + box-shadow: 0 1px 2px ${theme.palette.mode === 'dark' ? 'rgba(0, 0, 0, 0.25)' : 'rgba(0, 0, 0, 0.1)'}; &.Switch-checked { diff --git a/docs/data/base/components/switch/UseSwitchesBasic.tsx b/docs/data/base/components/switch/UseSwitchesBasic.tsx index a144720b4209da..480987b02a93e9 100644 --- a/docs/data/base/components/switch/UseSwitchesBasic.tsx +++ b/docs/data/base/components/switch/UseSwitchesBasic.tsx @@ -63,7 +63,7 @@ const BasicSwitchRoot = styled('span')( background: ${theme.palette.mode === 'dark' ? grey[900] : grey[50]}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[800] : grey[200]}; border-radius: 24px; - box-shadow: inset 0px 1px 1px ${ + box-shadow: inset 0 1px 1px ${ theme.palette.mode === 'dark' ? 'rgba(0, 0, 0, 0.5)' : 'rgba(0, 0, 0, 0.05)' }; @@ -83,9 +83,10 @@ const BasicSwitchRoot = styled('span')( &.Switch-checked { border: 1px solid ${theme.palette.mode === 'dark' ? grey[800] : grey[200]}; background: ${blue[500]}; - box-shadow: inset 0px 1px 1px ${ + box-shadow: inset 0 1px 1px ${ theme.palette.mode === 'dark' ? 'rgba(0, 0, 0, 0.2)' : 'rgba(0, 0, 0, 0.05)' }; + &.Switch-focusVisible { box-shadow: 0 0 0 3px ${theme.palette.mode === 'dark' ? blue[700] : blue[200]}; } @@ -122,7 +123,7 @@ const BasicSwitchThumb = styled('span')( transition-property: all; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 120ms; - box-shadow: 0px 1px 2px + box-shadow: 0 1px 2px ${theme.palette.mode === 'dark' ? 'rgba(0, 0, 0, 0.25)' : 'rgba(0, 0, 0, 0.1)'}; &.Switch-checked { diff --git a/docs/data/base/components/switch/UseSwitchesCustom.js b/docs/data/base/components/switch/UseSwitchesCustom.js index 439119b67024a5..a7e9f9f7852713 100644 --- a/docs/data/base/components/switch/UseSwitchesCustom.js +++ b/docs/data/base/components/switch/UseSwitchesCustom.js @@ -79,14 +79,10 @@ const SwitchThumb = styled('span')` content: ''; width: 100%; height: 100%; - - /* false positive: */ - /* stylelint-disable unit-no-unknown */ background: url('data:image/svg+xml;utf8,') center center no-repeat; - /* stylelint-enable unit-no-unknown */ } &.focusVisible { @@ -97,12 +93,9 @@ const SwitchThumb = styled('span')` transform: translateX(24px); &::before { - /* false positive: */ - /* stylelint-disable unit-no-unknown */ background-image: url('data:image/svg+xml;utf8,'); - /* stylelint-enable unit-no-unknown */ } } `; diff --git a/docs/data/base/components/switch/UseSwitchesCustom.tsx b/docs/data/base/components/switch/UseSwitchesCustom.tsx index 15a381f9c6c942..8cc2d1b9929267 100644 --- a/docs/data/base/components/switch/UseSwitchesCustom.tsx +++ b/docs/data/base/components/switch/UseSwitchesCustom.tsx @@ -79,14 +79,10 @@ const SwitchThumb = styled('span')` content: ''; width: 100%; height: 100%; - - /* false positive: */ - /* stylelint-disable unit-no-unknown */ background: url('data:image/svg+xml;utf8,') center center no-repeat; - /* stylelint-enable unit-no-unknown */ } &.focusVisible { @@ -97,12 +93,9 @@ const SwitchThumb = styled('span')` transform: translateX(24px); &::before { - /* false positive: */ - /* stylelint-disable unit-no-unknown */ background-image: url('data:image/svg+xml;utf8,'); - /* stylelint-enable unit-no-unknown */ } } `; diff --git a/docs/data/base/components/table-pagination/TableCustomized.js b/docs/data/base/components/table-pagination/TableCustomized.js index 11f17cb9da09df..de3540d44d90f5 100644 --- a/docs/data/base/components/table-pagination/TableCustomized.js +++ b/docs/data/base/components/table-pagination/TableCustomized.js @@ -218,7 +218,6 @@ const CustomTablePagination = styled(TablePagination)( display: flex; align-items: center; padding: 0; - border: transparent; border-radius: 50%; background-color: transparent; border: 1px solid ${theme.palette.mode === 'dark' ? grey[800] : grey[200]}; @@ -241,6 +240,7 @@ const CustomTablePagination = styled(TablePagination)( &:disabled { opacity: 0.3; + &:hover { border: 1px solid ${theme.palette.mode === 'dark' ? grey[800] : grey[200]}; background-color: transparent; diff --git a/docs/data/base/components/table-pagination/TableCustomized.tsx b/docs/data/base/components/table-pagination/TableCustomized.tsx index 089c8a25ce7831..c6d4cf5d3c5e22 100644 --- a/docs/data/base/components/table-pagination/TableCustomized.tsx +++ b/docs/data/base/components/table-pagination/TableCustomized.tsx @@ -223,7 +223,6 @@ const CustomTablePagination = styled(TablePagination)( display: flex; align-items: center; padding: 0; - border: transparent; border-radius: 50%; background-color: transparent; border: 1px solid ${theme.palette.mode === 'dark' ? grey[800] : grey[200]}; @@ -246,6 +245,7 @@ const CustomTablePagination = styled(TablePagination)( &:disabled { opacity: 0.3; + &:hover { border: 1px solid ${theme.palette.mode === 'dark' ? grey[800] : grey[200]}; background-color: transparent; diff --git a/docs/data/base/components/table-pagination/UnstyledPaginationIntroduction/system/index.js b/docs/data/base/components/table-pagination/UnstyledPaginationIntroduction/system/index.js index 3acbb13cb02df1..8092add4909188 100644 --- a/docs/data/base/components/table-pagination/UnstyledPaginationIntroduction/system/index.js +++ b/docs/data/base/components/table-pagination/UnstyledPaginationIntroduction/system/index.js @@ -83,7 +83,7 @@ const Root = styled('div')( font-size: 0.875rem; width: 100%; background-color: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; - box-shadow: 0px 4px 16px ${ + box-shadow: 0 4px 16px ${ theme.palette.mode === 'dark' ? 'rgba(0, 0, 0, 0.3)' : grey[200] }; border-radius: 12px; @@ -164,7 +164,6 @@ const CustomTablePagination = styled(TablePagination)( display: flex; align-items: center; padding: 0; - border: transparent; border-radius: 50%; background-color: transparent; border: 1px solid ${theme.palette.mode === 'dark' ? grey[800] : grey[200]}; @@ -187,6 +186,7 @@ const CustomTablePagination = styled(TablePagination)( &:disabled { opacity: 0.3; + &:hover { border: 1px solid ${theme.palette.mode === 'dark' ? grey[800] : grey[200]}; background-color: transparent; diff --git a/docs/data/base/components/table-pagination/UnstyledPaginationIntroduction/system/index.tsx b/docs/data/base/components/table-pagination/UnstyledPaginationIntroduction/system/index.tsx index f101913086a3ea..7918ebfdeb693e 100644 --- a/docs/data/base/components/table-pagination/UnstyledPaginationIntroduction/system/index.tsx +++ b/docs/data/base/components/table-pagination/UnstyledPaginationIntroduction/system/index.tsx @@ -88,7 +88,7 @@ const Root = styled('div')( font-size: 0.875rem; width: 100%; background-color: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; - box-shadow: 0px 4px 16px ${ + box-shadow: 0 4px 16px ${ theme.palette.mode === 'dark' ? 'rgba(0, 0, 0, 0.3)' : grey[200] }; border-radius: 12px; @@ -169,7 +169,6 @@ const CustomTablePagination = styled(TablePagination)( display: flex; align-items: center; padding: 0; - border: transparent; border-radius: 50%; background-color: transparent; border: 1px solid ${theme.palette.mode === 'dark' ? grey[800] : grey[200]}; @@ -192,6 +191,7 @@ const CustomTablePagination = styled(TablePagination)( &:disabled { opacity: 0.3; + &:hover { border: 1px solid ${theme.palette.mode === 'dark' ? grey[800] : grey[200]}; background-color: transparent; diff --git a/docs/data/base/components/tabs/KeyboardNavigation.js b/docs/data/base/components/tabs/KeyboardNavigation.js index 8df5b6764817fc..7e9eb3a3f55d60 100644 --- a/docs/data/base/components/tabs/KeyboardNavigation.js +++ b/docs/data/base/components/tabs/KeyboardNavigation.js @@ -102,8 +102,7 @@ const TabsList = styled(BaseTabsList)( margin-bottom: 16px; display: flex; align-items: center; - justify-content: center; - align-content: space-between; - box-shadow: 0px 4px 8px ${theme.palette.mode === 'dark' ? grey[900] : grey[200]}; + place-content: space-between center; + box-shadow: 0 4px 8px ${theme.palette.mode === 'dark' ? grey[900] : grey[200]}; `, ); diff --git a/docs/data/base/components/tabs/KeyboardNavigation.tsx b/docs/data/base/components/tabs/KeyboardNavigation.tsx index 8df5b6764817fc..7e9eb3a3f55d60 100644 --- a/docs/data/base/components/tabs/KeyboardNavigation.tsx +++ b/docs/data/base/components/tabs/KeyboardNavigation.tsx @@ -102,8 +102,7 @@ const TabsList = styled(BaseTabsList)( margin-bottom: 16px; display: flex; align-items: center; - justify-content: center; - align-content: space-between; - box-shadow: 0px 4px 8px ${theme.palette.mode === 'dark' ? grey[900] : grey[200]}; + place-content: space-between center; + box-shadow: 0 4px 8px ${theme.palette.mode === 'dark' ? grey[900] : grey[200]}; `, ); diff --git a/docs/data/base/components/tabs/UnstyledTabsCustomized/system/index.js b/docs/data/base/components/tabs/UnstyledTabsCustomized/system/index.js index 0c46d66dbc7b6c..aa92538ca4ad02 100644 --- a/docs/data/base/components/tabs/UnstyledTabsCustomized/system/index.js +++ b/docs/data/base/components/tabs/UnstyledTabsCustomized/system/index.js @@ -84,9 +84,8 @@ const TabsList = styled(BaseTabsList)( margin-bottom: 16px; display: flex; align-items: center; - justify-content: center; - align-content: space-between; - box-shadow: 0px 4px 6px ${ + place-content: space-between center; + box-shadow: 0 4px 6px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.4)' : 'rgba(0,0,0, 0.2)' }; `, diff --git a/docs/data/base/components/tabs/UnstyledTabsCustomized/system/index.tsx b/docs/data/base/components/tabs/UnstyledTabsCustomized/system/index.tsx index 0c46d66dbc7b6c..aa92538ca4ad02 100644 --- a/docs/data/base/components/tabs/UnstyledTabsCustomized/system/index.tsx +++ b/docs/data/base/components/tabs/UnstyledTabsCustomized/system/index.tsx @@ -84,9 +84,8 @@ const TabsList = styled(BaseTabsList)( margin-bottom: 16px; display: flex; align-items: center; - justify-content: center; - align-content: space-between; - box-shadow: 0px 4px 6px ${ + place-content: space-between center; + box-shadow: 0 4px 6px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.4)' : 'rgba(0,0,0, 0.2)' }; `, diff --git a/docs/data/base/components/tabs/UnstyledTabsIntroduction/system/index.js b/docs/data/base/components/tabs/UnstyledTabsIntroduction/system/index.js index 95d5efbac95ead..810db1bcf3a1b3 100644 --- a/docs/data/base/components/tabs/UnstyledTabsIntroduction/system/index.js +++ b/docs/data/base/components/tabs/UnstyledTabsIntroduction/system/index.js @@ -103,8 +103,7 @@ const TabsList = styled(BaseTabsList)( margin-bottom: 16px; display: flex; align-items: center; - justify-content: center; - align-content: space-between; - box-shadow: 0px 4px 30px ${theme.palette.mode === 'dark' ? grey[900] : grey[200]}; + place-content: space-between center; + box-shadow: 0 4px 30px ${theme.palette.mode === 'dark' ? grey[900] : grey[200]}; `, ); diff --git a/docs/data/base/components/tabs/UnstyledTabsIntroduction/system/index.tsx b/docs/data/base/components/tabs/UnstyledTabsIntroduction/system/index.tsx index 95d5efbac95ead..810db1bcf3a1b3 100644 --- a/docs/data/base/components/tabs/UnstyledTabsIntroduction/system/index.tsx +++ b/docs/data/base/components/tabs/UnstyledTabsIntroduction/system/index.tsx @@ -103,8 +103,7 @@ const TabsList = styled(BaseTabsList)( margin-bottom: 16px; display: flex; align-items: center; - justify-content: center; - align-content: space-between; - box-shadow: 0px 4px 30px ${theme.palette.mode === 'dark' ? grey[900] : grey[200]}; + place-content: space-between center; + box-shadow: 0 4px 30px ${theme.palette.mode === 'dark' ? grey[900] : grey[200]}; `, ); diff --git a/docs/data/base/components/tabs/UnstyledTabsRouting.js b/docs/data/base/components/tabs/UnstyledTabsRouting.js index ea4c28f7f5499f..00ad986e4d34fe 100644 --- a/docs/data/base/components/tabs/UnstyledTabsRouting.js +++ b/docs/data/base/components/tabs/UnstyledTabsRouting.js @@ -5,13 +5,13 @@ import { Tab as BaseTab, tabClasses } from '@mui/base/Tab'; import { TabsList as BaseTabsList } from '@mui/base/TabsList'; import { MemoryRouter, + StaticRouter, Route, Routes, Link, matchPath, useLocation, -} from 'react-router-dom'; -import { StaticRouter } from 'react-router-dom/server'; +} from 'react-router'; import { styled } from '@mui/system'; function Router(props) { @@ -167,8 +167,7 @@ const TabsList = styled(BaseTabsList)( margin-bottom: 16px; display: flex; align-items: center; - justify-content: center; - align-content: space-between; - box-shadow: 0px 4px 30px ${theme.palette.mode === 'dark' ? grey[900] : grey[200]}; + place-content: space-between center; + box-shadow: 0 4px 30px ${theme.palette.mode === 'dark' ? grey[900] : grey[200]}; `, ); diff --git a/docs/data/base/components/tabs/UnstyledTabsRouting.tsx b/docs/data/base/components/tabs/UnstyledTabsRouting.tsx index ef6ea6fbc1786c..6bc3b85b055d43 100644 --- a/docs/data/base/components/tabs/UnstyledTabsRouting.tsx +++ b/docs/data/base/components/tabs/UnstyledTabsRouting.tsx @@ -4,13 +4,13 @@ import { Tab as BaseTab, TabRootSlotProps, tabClasses } from '@mui/base/Tab'; import { TabsList as BaseTabsList } from '@mui/base/TabsList'; import { MemoryRouter, + StaticRouter, Route, Routes, Link, matchPath, useLocation, -} from 'react-router-dom'; -import { StaticRouter } from 'react-router-dom/server'; +} from 'react-router'; import { styled } from '@mui/system'; function Router(props: { children?: React.ReactNode }) { @@ -161,8 +161,7 @@ const TabsList = styled(BaseTabsList)( margin-bottom: 16px; display: flex; align-items: center; - justify-content: center; - align-content: space-between; - box-shadow: 0px 4px 30px ${theme.palette.mode === 'dark' ? grey[900] : grey[200]}; + place-content: space-between center; + box-shadow: 0 4px 30px ${theme.palette.mode === 'dark' ? grey[900] : grey[200]}; `, ); diff --git a/docs/data/base/components/tabs/UnstyledTabsVertical.js b/docs/data/base/components/tabs/UnstyledTabsVertical.js index 0b31fa333ea5a0..0bc82ad62b453d 100644 --- a/docs/data/base/components/tabs/UnstyledTabsVertical.js +++ b/docs/data/base/components/tabs/UnstyledTabsVertical.js @@ -109,8 +109,7 @@ const TabsList = styled(BaseTabsList)( gap: 12px; flex-direction: column; align-items: center; - justify-content: center; - align-content: space-between; - box-shadow: 0px 4px 8px ${theme.palette.mode === 'dark' ? grey[900] : grey[200]}; + place-content: space-between center; + box-shadow: 0 4px 8px ${theme.palette.mode === 'dark' ? grey[900] : grey[200]}; `, ); diff --git a/docs/data/base/components/tabs/UnstyledTabsVertical.tsx b/docs/data/base/components/tabs/UnstyledTabsVertical.tsx index 0b31fa333ea5a0..0bc82ad62b453d 100644 --- a/docs/data/base/components/tabs/UnstyledTabsVertical.tsx +++ b/docs/data/base/components/tabs/UnstyledTabsVertical.tsx @@ -109,8 +109,7 @@ const TabsList = styled(BaseTabsList)( gap: 12px; flex-direction: column; align-items: center; - justify-content: center; - align-content: space-between; - box-shadow: 0px 4px 8px ${theme.palette.mode === 'dark' ? grey[900] : grey[200]}; + place-content: space-between center; + box-shadow: 0 4px 8px ${theme.palette.mode === 'dark' ? grey[900] : grey[200]}; `, ); diff --git a/docs/data/base/components/textarea-autosize/EmptyTextarea.js b/docs/data/base/components/textarea-autosize/EmptyTextarea.js index 6f4adc9941067d..cde3afaedac856 100644 --- a/docs/data/base/components/textarea-autosize/EmptyTextarea.js +++ b/docs/data/base/components/textarea-autosize/EmptyTextarea.js @@ -38,7 +38,7 @@ export default function EmptyTextarea() { color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; - box-shadow: 0px 2px 2px ${theme.palette.mode === 'dark' ? grey[900] : grey[50]}; + box-shadow: 0 2px 2px ${theme.palette.mode === 'dark' ? grey[900] : grey[50]}; &:hover { border-color: ${blue[400]}; @@ -50,7 +50,7 @@ export default function EmptyTextarea() { box-shadow: 0 0 0 3px ${theme.palette.mode === 'dark' ? blue[600] : blue[200]}; } - // firefox + /* firefox */ &:focus-visible { outline: 0; } diff --git a/docs/data/base/components/textarea-autosize/EmptyTextarea.tsx b/docs/data/base/components/textarea-autosize/EmptyTextarea.tsx index 6f4adc9941067d..cde3afaedac856 100644 --- a/docs/data/base/components/textarea-autosize/EmptyTextarea.tsx +++ b/docs/data/base/components/textarea-autosize/EmptyTextarea.tsx @@ -38,7 +38,7 @@ export default function EmptyTextarea() { color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; - box-shadow: 0px 2px 2px ${theme.palette.mode === 'dark' ? grey[900] : grey[50]}; + box-shadow: 0 2px 2px ${theme.palette.mode === 'dark' ? grey[900] : grey[50]}; &:hover { border-color: ${blue[400]}; @@ -50,7 +50,7 @@ export default function EmptyTextarea() { box-shadow: 0 0 0 3px ${theme.palette.mode === 'dark' ? blue[600] : blue[200]}; } - // firefox + /* firefox */ &:focus-visible { outline: 0; } diff --git a/docs/data/base/components/textarea-autosize/MaxHeightTextarea.js b/docs/data/base/components/textarea-autosize/MaxHeightTextarea.js index 94b8511fa2a176..c64645eca98a06 100644 --- a/docs/data/base/components/textarea-autosize/MaxHeightTextarea.js +++ b/docs/data/base/components/textarea-autosize/MaxHeightTextarea.js @@ -38,7 +38,7 @@ export default function MaxHeightTextarea() { color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; - box-shadow: 0px 2px 2px ${theme.palette.mode === 'dark' ? grey[900] : grey[50]}; + box-shadow: 0 2px 2px ${theme.palette.mode === 'dark' ? grey[900] : grey[50]}; &:hover { border-color: ${blue[400]}; @@ -49,7 +49,7 @@ export default function MaxHeightTextarea() { box-shadow: 0 0 0 3px ${theme.palette.mode === 'dark' ? blue[600] : blue[200]}; } - // firefox + /* firefox */ &:focus-visible { outline: 0; } diff --git a/docs/data/base/components/textarea-autosize/MaxHeightTextarea.tsx b/docs/data/base/components/textarea-autosize/MaxHeightTextarea.tsx index 94b8511fa2a176..c64645eca98a06 100644 --- a/docs/data/base/components/textarea-autosize/MaxHeightTextarea.tsx +++ b/docs/data/base/components/textarea-autosize/MaxHeightTextarea.tsx @@ -38,7 +38,7 @@ export default function MaxHeightTextarea() { color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; - box-shadow: 0px 2px 2px ${theme.palette.mode === 'dark' ? grey[900] : grey[50]}; + box-shadow: 0 2px 2px ${theme.palette.mode === 'dark' ? grey[900] : grey[50]}; &:hover { border-color: ${blue[400]}; @@ -49,7 +49,7 @@ export default function MaxHeightTextarea() { box-shadow: 0 0 0 3px ${theme.palette.mode === 'dark' ? blue[600] : blue[200]}; } - // firefox + /* firefox */ &:focus-visible { outline: 0; } diff --git a/docs/data/base/components/textarea-autosize/MinHeightTextarea.js b/docs/data/base/components/textarea-autosize/MinHeightTextarea.js index ed21fd8b460277..9868af0a337f1d 100644 --- a/docs/data/base/components/textarea-autosize/MinHeightTextarea.js +++ b/docs/data/base/components/textarea-autosize/MinHeightTextarea.js @@ -38,7 +38,7 @@ export default function MinHeightTextarea() { color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; - box-shadow: 0px 2px 2px ${theme.palette.mode === 'dark' ? grey[900] : grey[50]}; + box-shadow: 0 2px 2px ${theme.palette.mode === 'dark' ? grey[900] : grey[50]}; &:hover { border-color: ${blue[400]}; @@ -49,7 +49,7 @@ export default function MinHeightTextarea() { box-shadow: 0 0 0 3px ${theme.palette.mode === 'dark' ? blue[600] : blue[200]}; } - // firefox + /* firefox */ &:focus-visible { outline: 0; } diff --git a/docs/data/base/components/textarea-autosize/MinHeightTextarea.tsx b/docs/data/base/components/textarea-autosize/MinHeightTextarea.tsx index ed21fd8b460277..9868af0a337f1d 100644 --- a/docs/data/base/components/textarea-autosize/MinHeightTextarea.tsx +++ b/docs/data/base/components/textarea-autosize/MinHeightTextarea.tsx @@ -38,7 +38,7 @@ export default function MinHeightTextarea() { color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; - box-shadow: 0px 2px 2px ${theme.palette.mode === 'dark' ? grey[900] : grey[50]}; + box-shadow: 0 2px 2px ${theme.palette.mode === 'dark' ? grey[900] : grey[50]}; &:hover { border-color: ${blue[400]}; @@ -49,7 +49,7 @@ export default function MinHeightTextarea() { box-shadow: 0 0 0 3px ${theme.palette.mode === 'dark' ? blue[600] : blue[200]}; } - // firefox + /* firefox */ &:focus-visible { outline: 0; } diff --git a/docs/data/base/components/textarea-autosize/UnstyledTextarea/system/index.js b/docs/data/base/components/textarea-autosize/UnstyledTextarea/system/index.js index 770ddcce916367..67662fea58604c 100644 --- a/docs/data/base/components/textarea-autosize/UnstyledTextarea/system/index.js +++ b/docs/data/base/components/textarea-autosize/UnstyledTextarea/system/index.js @@ -34,11 +34,11 @@ export default function EmptyTextarea() { font-weight: 400; line-height: 1.5; padding: 12px; - border-radius: 12px 12px 0 12px; + border-radius: 12px 12px 0; color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; - box-shadow: 0px 2px 2px ${theme.palette.mode === 'dark' ? grey[900] : grey[50]}; + box-shadow: 0 2px 2px ${theme.palette.mode === 'dark' ? grey[900] : grey[50]}; &:hover { border-color: ${blue[400]}; @@ -50,7 +50,7 @@ export default function EmptyTextarea() { box-shadow: 0 0 0 3px ${theme.palette.mode === 'dark' ? blue[600] : blue[200]}; } - // firefox + /* firefox */ &:focus-visible { outline: 0; } diff --git a/docs/data/base/components/textarea-autosize/UnstyledTextarea/system/index.tsx b/docs/data/base/components/textarea-autosize/UnstyledTextarea/system/index.tsx index 770ddcce916367..67662fea58604c 100644 --- a/docs/data/base/components/textarea-autosize/UnstyledTextarea/system/index.tsx +++ b/docs/data/base/components/textarea-autosize/UnstyledTextarea/system/index.tsx @@ -34,11 +34,11 @@ export default function EmptyTextarea() { font-weight: 400; line-height: 1.5; padding: 12px; - border-radius: 12px 12px 0 12px; + border-radius: 12px 12px 0; color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; - box-shadow: 0px 2px 2px ${theme.palette.mode === 'dark' ? grey[900] : grey[50]}; + box-shadow: 0 2px 2px ${theme.palette.mode === 'dark' ? grey[900] : grey[50]}; &:hover { border-color: ${blue[400]}; @@ -50,7 +50,7 @@ export default function EmptyTextarea() { box-shadow: 0 0 0 3px ${theme.palette.mode === 'dark' ? blue[600] : blue[200]}; } - // firefox + /* firefox */ &:focus-visible { outline: 0; } diff --git a/docs/data/base/components/textarea-autosize/UnstyledTextareaIntroduction/system/index.js b/docs/data/base/components/textarea-autosize/UnstyledTextareaIntroduction/system/index.js index da4cc78174e798..4c7c29182d2e97 100644 --- a/docs/data/base/components/textarea-autosize/UnstyledTextareaIntroduction/system/index.js +++ b/docs/data/base/components/textarea-autosize/UnstyledTextareaIntroduction/system/index.js @@ -41,7 +41,7 @@ const TextareaAutosize = styled(BaseTextareaAutosize)( color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; - box-shadow: 0px 2px 2px ${theme.palette.mode === 'dark' ? grey[900] : grey[50]}; + box-shadow: 0 2px 2px ${theme.palette.mode === 'dark' ? grey[900] : grey[50]}; &:hover { border-color: ${blue[400]}; @@ -52,7 +52,7 @@ const TextareaAutosize = styled(BaseTextareaAutosize)( box-shadow: 0 0 0 3px ${theme.palette.mode === 'dark' ? blue[600] : blue[200]}; } - // firefox + /* firefox */ &:focus-visible { outline: 0; } diff --git a/docs/data/base/components/textarea-autosize/UnstyledTextareaIntroduction/system/index.tsx b/docs/data/base/components/textarea-autosize/UnstyledTextareaIntroduction/system/index.tsx index da4cc78174e798..4c7c29182d2e97 100644 --- a/docs/data/base/components/textarea-autosize/UnstyledTextareaIntroduction/system/index.tsx +++ b/docs/data/base/components/textarea-autosize/UnstyledTextareaIntroduction/system/index.tsx @@ -41,7 +41,7 @@ const TextareaAutosize = styled(BaseTextareaAutosize)( color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; - box-shadow: 0px 2px 2px ${theme.palette.mode === 'dark' ? grey[900] : grey[50]}; + box-shadow: 0 2px 2px ${theme.palette.mode === 'dark' ? grey[900] : grey[50]}; &:hover { border-color: ${blue[400]}; @@ -52,7 +52,7 @@ const TextareaAutosize = styled(BaseTextareaAutosize)( box-shadow: 0 0 0 3px ${theme.palette.mode === 'dark' ? blue[600] : blue[200]}; } - // firefox + /* firefox */ &:focus-visible { outline: 0; } diff --git a/docs/data/base/getting-started/accessibility/KeyboardNavigation.js b/docs/data/base/getting-started/accessibility/KeyboardNavigation.js index 60e489583bc3bc..d38115d58333f4 100644 --- a/docs/data/base/getting-started/accessibility/KeyboardNavigation.js +++ b/docs/data/base/getting-started/accessibility/KeyboardNavigation.js @@ -100,10 +100,9 @@ const StyledSelectButton = styled('button')( background: ${theme.palette.mode === 'dark' ? alpha(grey[900], 0.4) : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[900] : grey[200]}; color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; - box-shadow: 0px 2px 6px ${ + box-shadow: 0 2px 6px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.2)' : 'rgba(0,0,0, 0.1)' }; - transition-property: all; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 120ms; @@ -143,7 +142,7 @@ const Listbox = styled('ul')( background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[800] : grey[200]}; color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; - box-shadow: 0px 2px 6px ${ + box-shadow: 0 2px 6px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.50)' : 'rgba(0,0,0, 0.05)' }; `, @@ -233,7 +232,6 @@ const MenuButton = styled(BaseMenuButton)( }; border: 1px solid ${theme.palette.mode === 'dark' ? grey[800] : grey[200]}; color: ${theme.palette.mode === 'dark' ? grey[200] : grey[800]}; - transition-property: all; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 120ms; diff --git a/docs/data/base/getting-started/accessibility/KeyboardNavigation.tsx b/docs/data/base/getting-started/accessibility/KeyboardNavigation.tsx index 1ed45054c79f1c..632d573afaad2b 100644 --- a/docs/data/base/getting-started/accessibility/KeyboardNavigation.tsx +++ b/docs/data/base/getting-started/accessibility/KeyboardNavigation.tsx @@ -110,10 +110,9 @@ const StyledSelectButton = styled('button')( background: ${theme.palette.mode === 'dark' ? alpha(grey[900], 0.4) : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[900] : grey[200]}; color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; - box-shadow: 0px 2px 6px ${ + box-shadow: 0 2px 6px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.2)' : 'rgba(0,0,0, 0.1)' }; - transition-property: all; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 120ms; @@ -153,7 +152,7 @@ const Listbox = styled('ul')( background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[800] : grey[200]}; color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; - box-shadow: 0px 2px 6px ${ + box-shadow: 0 2px 6px ${ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.50)' : 'rgba(0,0,0, 0.05)' }; `, @@ -243,7 +242,6 @@ const MenuButton = styled(BaseMenuButton)( }; border: 1px solid ${theme.palette.mode === 'dark' ? grey[800] : grey[200]}; color: ${theme.palette.mode === 'dark' ? grey[200] : grey[800]}; - transition-property: all; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 120ms; diff --git a/docs/data/base/getting-started/support/support.md b/docs/data/base/getting-started/support/support.md index 9924c30bed2eb0..670459dde18eca 100644 --- a/docs/data/base/getting-started/support/support.md +++ b/docs/data/base/getting-started/support/support.md @@ -33,10 +33,10 @@ You can browse the documentation, find an example close to your use case, and th -Forking an example + Forking an example -Forking an example + Forking an example diff --git a/docs/data/joy/components/link/link.md b/docs/data/joy/components/link/link.md index 3b4f8a91fda5ad..e20fc076ff00b4 100644 --- a/docs/data/joy/components/link/link.md +++ b/docs/data/joy/components/link/link.md @@ -125,12 +125,12 @@ import Link from '@mui/joy/Link'; ; ``` -### React Router +### React Router -Here is an example with the [Link component](https://reactrouter.com/en/main/components/link) of React Router: +Here is a demo with the [Link component](https://reactrouter.com/start/library/navigating#link) of [React Router](https://github.com/remix-run/react-router). ```js -import { Link as RouterLink } from 'react-router-dom'; +import { Link as RouterLink } from 'react-router'; import Link from '@mui/joy/Link'; diff --git a/docs/data/joy/getting-started/support/support.md b/docs/data/joy/getting-started/support/support.md index e687daaeccef6a..8d233f2dff692c 100644 --- a/docs/data/joy/getting-started/support/support.md +++ b/docs/data/joy/getting-started/support/support.md @@ -33,10 +33,10 @@ You can browse the documentation, find an example close to your use case, and th -Forking an example + Forking an example -Forking an example + Forking an example diff --git a/docs/data/material/components/accordion/AccordionTransition.js b/docs/data/material/components/accordion/AccordionTransition.js index a8ce2bfbe4bfa3..0b05acdf3236fd 100644 --- a/docs/data/material/components/accordion/AccordionTransition.js +++ b/docs/data/material/components/accordion/AccordionTransition.js @@ -1,7 +1,9 @@ import * as React from 'react'; -import Accordion from '@mui/material/Accordion'; +import Accordion, { accordionClasses } from '@mui/material/Accordion'; import AccordionSummary from '@mui/material/AccordionSummary'; -import AccordionDetails from '@mui/material/AccordionDetails'; +import AccordionDetails, { + accordionDetailsClasses, +} from '@mui/material/AccordionDetails'; import Typography from '@mui/material/Typography'; import ExpandMoreIcon from '@mui/icons-material/ExpandMore'; import Fade from '@mui/material/Fade'; @@ -23,18 +25,18 @@ export default function AccordionTransition() { sx={[ expanded ? { - '& .MuiAccordion-region': { + [`& .${accordionClasses.region}`]: { height: 'auto', }, - '& .MuiAccordionDetails-root': { + [`& .${accordionDetailsClasses.root}`]: { display: 'block', }, } : { - '& .MuiAccordion-region': { + [`& .${accordionClasses.region}`]: { height: 0, }, - '& .MuiAccordionDetails-root': { + [`& .${accordionDetailsClasses.root}`]: { display: 'none', }, }, diff --git a/docs/data/material/components/accordion/AccordionTransition.tsx b/docs/data/material/components/accordion/AccordionTransition.tsx index 031d482042c876..d3f90707145255 100644 --- a/docs/data/material/components/accordion/AccordionTransition.tsx +++ b/docs/data/material/components/accordion/AccordionTransition.tsx @@ -1,7 +1,12 @@ import * as React from 'react'; -import Accordion, { AccordionSlots } from '@mui/material/Accordion'; +import Accordion, { + AccordionSlots, + accordionClasses, +} from '@mui/material/Accordion'; import AccordionSummary from '@mui/material/AccordionSummary'; -import AccordionDetails from '@mui/material/AccordionDetails'; +import AccordionDetails, { + accordionDetailsClasses, +} from '@mui/material/AccordionDetails'; import Typography from '@mui/material/Typography'; import ExpandMoreIcon from '@mui/icons-material/ExpandMore'; import Fade from '@mui/material/Fade'; @@ -23,18 +28,18 @@ export default function AccordionTransition() { sx={[ expanded ? { - '& .MuiAccordion-region': { + [`& .${accordionClasses.region}`]: { height: 'auto', }, - '& .MuiAccordionDetails-root': { + [`& .${accordionDetailsClasses.root}`]: { display: 'block', }, } : { - '& .MuiAccordion-region': { + [`& .${accordionClasses.region}`]: { height: 0, }, - '& .MuiAccordionDetails-root': { + [`& .${accordionDetailsClasses.root}`]: { display: 'none', }, }, diff --git a/docs/data/material/components/accordion/CustomizedAccordions.js b/docs/data/material/components/accordion/CustomizedAccordions.js index 0fb98e8d7cac7a..5710f8c1cca468 100644 --- a/docs/data/material/components/accordion/CustomizedAccordions.js +++ b/docs/data/material/components/accordion/CustomizedAccordions.js @@ -2,7 +2,9 @@ import * as React from 'react'; import { styled } from '@mui/material/styles'; import ArrowForwardIosSharpIcon from '@mui/icons-material/ArrowForwardIosSharp'; import MuiAccordion from '@mui/material/Accordion'; -import MuiAccordionSummary from '@mui/material/AccordionSummary'; +import MuiAccordionSummary, { + accordionSummaryClasses, +} from '@mui/material/AccordionSummary'; import MuiAccordionDetails from '@mui/material/AccordionDetails'; import Typography from '@mui/material/Typography'; @@ -26,10 +28,11 @@ const AccordionSummary = styled((props) => ( ))(({ theme }) => ({ backgroundColor: 'rgba(0, 0, 0, .03)', flexDirection: 'row-reverse', - '& .MuiAccordionSummary-expandIconWrapper.Mui-expanded': { - transform: 'rotate(90deg)', - }, - '& .MuiAccordionSummary-content': { + [`& .${accordionSummaryClasses.expandIconWrapper}.${accordionSummaryClasses.expanded}`]: + { + transform: 'rotate(90deg)', + }, + [`& .${accordionSummaryClasses.content}`]: { marginLeft: theme.spacing(1), }, ...theme.applyStyles('dark', { diff --git a/docs/data/material/components/accordion/CustomizedAccordions.tsx b/docs/data/material/components/accordion/CustomizedAccordions.tsx index 71f4d820b439c7..3d6644f9358f2f 100644 --- a/docs/data/material/components/accordion/CustomizedAccordions.tsx +++ b/docs/data/material/components/accordion/CustomizedAccordions.tsx @@ -4,6 +4,7 @@ import ArrowForwardIosSharpIcon from '@mui/icons-material/ArrowForwardIosSharp'; import MuiAccordion, { AccordionProps } from '@mui/material/Accordion'; import MuiAccordionSummary, { AccordionSummaryProps, + accordionSummaryClasses, } from '@mui/material/AccordionSummary'; import MuiAccordionDetails from '@mui/material/AccordionDetails'; import Typography from '@mui/material/Typography'; @@ -28,10 +29,11 @@ const AccordionSummary = styled((props: AccordionSummaryProps) => ( ))(({ theme }) => ({ backgroundColor: 'rgba(0, 0, 0, .03)', flexDirection: 'row-reverse', - '& .MuiAccordionSummary-expandIconWrapper.Mui-expanded': { - transform: 'rotate(90deg)', - }, - '& .MuiAccordionSummary-content': { + [`& .${accordionSummaryClasses.expandIconWrapper}.${accordionSummaryClasses.expanded}`]: + { + transform: 'rotate(90deg)', + }, + [`& .${accordionSummaryClasses.content}`]: { marginLeft: theme.spacing(1), }, ...theme.applyStyles('dark', { diff --git a/docs/data/material/components/autocomplete/CustomizedHook.js b/docs/data/material/components/autocomplete/CustomizedHook.js index 54dacedfde7591..0a2b7281e5f2c6 100644 --- a/docs/data/material/components/autocomplete/CustomizedHook.js +++ b/docs/data/material/components/autocomplete/CustomizedHook.js @@ -37,7 +37,7 @@ const InputWrapper = styled('div')( &.focused { border-color: ${theme.palette.mode === 'dark' ? '#177ddc' : '#40a9ff'}; - box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); + box-shadow: 0 0 0 2px rgb(24 144 255 / 0.2); } & input { @@ -120,7 +120,7 @@ const Listbox = styled('ul')( overflow: auto; max-height: 250px; border-radius: 4px; - box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); + box-shadow: 0 2px 8px rgb(0 0 0 / 0.15); z-index: 1; & li { diff --git a/docs/data/material/components/autocomplete/CustomizedHook.tsx b/docs/data/material/components/autocomplete/CustomizedHook.tsx index 66a216c698c4d7..8def3c10cff7e3 100644 --- a/docs/data/material/components/autocomplete/CustomizedHook.tsx +++ b/docs/data/material/components/autocomplete/CustomizedHook.tsx @@ -36,7 +36,7 @@ const InputWrapper = styled('div')( &.focused { border-color: ${theme.palette.mode === 'dark' ? '#177ddc' : '#40a9ff'}; - box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); + box-shadow: 0 0 0 2px rgb(24 144 255 / 0.2); } & input { @@ -118,7 +118,7 @@ const Listbox = styled('ul')( overflow: auto; max-height: 250px; border-radius: 4px; - box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); + box-shadow: 0 2px 8px rgb(0 0 0 / 0.15); z-index: 1; & li { diff --git a/docs/data/material/components/autocomplete/Virtualize.js b/docs/data/material/components/autocomplete/Virtualize.js index 72c0cfa455bc3e..ca70916330891d 100644 --- a/docs/data/material/components/autocomplete/Virtualize.js +++ b/docs/data/material/components/autocomplete/Virtualize.js @@ -149,7 +149,11 @@ export default function Virtualize() { renderGroup={(params) => params} slots={{ popper: StyledPopper, - listbox: ListboxComponent, + }} + slotProps={{ + listbox: { + component: ListboxComponent, + }, }} /> ); diff --git a/docs/data/material/components/autocomplete/Virtualize.tsx b/docs/data/material/components/autocomplete/Virtualize.tsx index 11440cf0be8ec3..e2d8923bc3d116 100644 --- a/docs/data/material/components/autocomplete/Virtualize.tsx +++ b/docs/data/material/components/autocomplete/Virtualize.tsx @@ -155,7 +155,11 @@ export default function Virtualize() { renderGroup={(params) => params as any} slots={{ popper: StyledPopper, - listbox: ListboxComponent, + }} + slotProps={{ + listbox: { + component: ListboxComponent, + }, }} /> ); diff --git a/docs/data/material/components/autocomplete/Virtualize.tsx.preview b/docs/data/material/components/autocomplete/Virtualize.tsx.preview deleted file mode 100644 index d8b7f0e136c084..00000000000000 --- a/docs/data/material/components/autocomplete/Virtualize.tsx.preview +++ /dev/null @@ -1,15 +0,0 @@ - option[0].toUpperCase()} - renderInput={(params) => } - renderOption={(props, option, state) => - [props, option, state.index] as React.ReactNode - } - renderGroup={(params) => params as any} - slots={{ - popper: StyledPopper, - listbox: ListboxComponent, - }} -/> \ No newline at end of file diff --git a/docs/data/material/components/breadcrumbs/RouterBreadcrumbs.js b/docs/data/material/components/breadcrumbs/RouterBreadcrumbs.js index 835108303bd362..2b070f122b380b 100644 --- a/docs/data/material/components/breadcrumbs/RouterBreadcrumbs.js +++ b/docs/data/material/components/breadcrumbs/RouterBreadcrumbs.js @@ -17,7 +17,7 @@ import { Routes, MemoryRouter, useLocation, -} from 'react-router-dom'; +} from 'react-router'; const breadcrumbNameMap = { '/inbox': 'Inbox', diff --git a/docs/data/material/components/breadcrumbs/RouterBreadcrumbs.tsx b/docs/data/material/components/breadcrumbs/RouterBreadcrumbs.tsx index 6c85d1812cafb5..6e79d9904cf65e 100644 --- a/docs/data/material/components/breadcrumbs/RouterBreadcrumbs.tsx +++ b/docs/data/material/components/breadcrumbs/RouterBreadcrumbs.tsx @@ -16,7 +16,7 @@ import { Routes, MemoryRouter, useLocation, -} from 'react-router-dom'; +} from 'react-router'; interface ListItemLinkProps extends ListItemProps { to: string; diff --git a/docs/data/material/components/click-away-listener/click-away-listener.md b/docs/data/material/components/click-away-listener/click-away-listener.md index fcc8d5e363ac01..7618b34439ab53 100644 --- a/docs/data/material/components/click-away-listener/click-away-listener.md +++ b/docs/data/material/components/click-away-listener/click-away-listener.md @@ -15,5 +15,5 @@ githubLabel: 'component: ClickAwayListener' Please refer to the [Click-Away Listener](/base-ui/react-click-away-listener/) component page in the Base UI docs for demos and details on usage. Click-Away Listener is a part of the standalone [Base UI](/base-ui/) component library. -It is currently re-exported from `@mui/material` for your convenience, but it will be removed from this package in a future major version, after `@mui/base` gets a stable release. +It is currently re-exported from `@mui/material` for your convenience, but it will be removed from this package in a future major version after Base UI gets a stable release. ::: diff --git a/docs/data/material/components/dialogs/SimpleDialogDemo.js b/docs/data/material/components/dialogs/SimpleDialogDemo.js index 3406e1a0bf0de9..02dc908677fc0e 100644 --- a/docs/data/material/components/dialogs/SimpleDialogDemo.js +++ b/docs/data/material/components/dialogs/SimpleDialogDemo.js @@ -32,7 +32,7 @@ function SimpleDialog(props) { Set backup account {emails.map((email) => ( - + handleListItemClick(email)}> @@ -43,7 +43,7 @@ function SimpleDialog(props) { ))} - + handleListItemClick('addAccount')} diff --git a/docs/data/material/components/dialogs/SimpleDialogDemo.tsx b/docs/data/material/components/dialogs/SimpleDialogDemo.tsx index 848f5662a1160e..4b94ae17292240 100644 --- a/docs/data/material/components/dialogs/SimpleDialogDemo.tsx +++ b/docs/data/material/components/dialogs/SimpleDialogDemo.tsx @@ -37,7 +37,7 @@ function SimpleDialog(props: SimpleDialogProps) { Set backup account {emails.map((email) => ( - + handleListItemClick(email)}> @@ -48,7 +48,7 @@ function SimpleDialog(props: SimpleDialogProps) { ))} - + handleListItemClick('addAccount')} diff --git a/docs/data/material/components/dialogs/dialogs.md b/docs/data/material/components/dialogs/dialogs.md index c12c0b7a4306ec..47e02ab2dbb4bb 100644 --- a/docs/data/material/components/dialogs/dialogs.md +++ b/docs/data/material/components/dialogs/dialogs.md @@ -153,7 +153,7 @@ Follow the [Modal performance section](/material-ui/react-modal/#performance). Follow the [Modal limitations section](/material-ui/react-modal/#limitations). -## Complementary projects +## Supplementary projects For more advanced use cases you might be able to take advantage of: diff --git a/docs/data/material/components/material-icons/SearchIcons.js b/docs/data/material/components/material-icons/SearchIcons.js index 4e252ebcca769c..f1d8cba2e84783 100644 --- a/docs/data/material/components/material-icons/SearchIcons.js +++ b/docs/data/material/components/material-icons/SearchIcons.js @@ -376,8 +376,10 @@ const DialogDetails = React.memo(function DialogDetails(props) { setCopied1(false), + slotProps={{ + transition: { + onExited: () => setCopied1(false), + }, }} > @@ -388,7 +390,9 @@ const DialogDetails = React.memo(function DialogDetails(props) { <Tooltip placement="top" title={copied2 ? t('copied') : t('clickToCopy')} - TransitionProps={{ onExited: () => setCopied2(false) }} + slotProps={{ + transition: { onExited: () => setCopied2(false) }, + }} > <Markdown copyButtonHidden diff --git a/docs/data/material/components/menus/menus.md b/docs/data/material/components/menus/menus.md index ca8b591883b6de..f8b357ae77bdcc 100644 --- a/docs/data/material/components/menus/menus.md +++ b/docs/data/material/components/menus/menus.md @@ -107,7 +107,7 @@ Here is an example of a context menu. (Right click to open.) {{"demo": "ContextMenu.js"}} -## Complementary projects +## Supplementary projects For more advanced use cases you might be able to take advantage of: diff --git a/docs/data/material/components/no-ssr/no-ssr.md b/docs/data/material/components/no-ssr/no-ssr.md index c003737331abaf..dec36823a9d88f 100644 --- a/docs/data/material/components/no-ssr/no-ssr.md +++ b/docs/data/material/components/no-ssr/no-ssr.md @@ -14,5 +14,5 @@ components: NoSsr Please refer to the [No-SSR](/base-ui/react-no-ssr/) component page in the Base UI docs for demos and details on usage. No-SSR is a part of the standalone [Base UI](/base-ui/) component library. -It is currently re-exported from `@mui/material` for your convenience, but it will be removed from this package in a future major version, after `@mui/base` gets a stable release. +It is currently re-exported from `@mui/material` for your convenience, but it will be removed from this package in a future major version after Base UI gets a stable release. ::: diff --git a/docs/data/material/components/pagination/PaginationLink.js b/docs/data/material/components/pagination/PaginationLink.js index 2c1577815ecf60..317eabab4f0bb2 100644 --- a/docs/data/material/components/pagination/PaginationLink.js +++ b/docs/data/material/components/pagination/PaginationLink.js @@ -1,5 +1,5 @@ import * as React from 'react'; -import { Link, MemoryRouter, Route, Routes, useLocation } from 'react-router-dom'; +import { Link, MemoryRouter, Route, Routes, useLocation } from 'react-router'; import Pagination from '@mui/material/Pagination'; import PaginationItem from '@mui/material/PaginationItem'; diff --git a/docs/data/material/components/pagination/PaginationLink.tsx b/docs/data/material/components/pagination/PaginationLink.tsx index 2c1577815ecf60..317eabab4f0bb2 100644 --- a/docs/data/material/components/pagination/PaginationLink.tsx +++ b/docs/data/material/components/pagination/PaginationLink.tsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import { Link, MemoryRouter, Route, Routes, useLocation } from 'react-router-dom'; +import { Link, MemoryRouter, Route, Routes, useLocation } from 'react-router'; import Pagination from '@mui/material/Pagination'; import PaginationItem from '@mui/material/PaginationItem'; diff --git a/docs/data/material/components/popover/popover.md b/docs/data/material/components/popover/popover.md index 9aceeb3c6dd248..ec1c1fd1ab8d53 100644 --- a/docs/data/material/components/popover/popover.md +++ b/docs/data/material/components/popover/popover.md @@ -64,7 +64,7 @@ The usage of a virtual element for the Popover component requires the `nodeType` This is different from virtual elements used for the [`Popper`](/material-ui/react-popper/#virtual-element) or [`Tooltip`](/material-ui/react-tooltip/#virtual-element) components, both of which don't require the property. ::: -## Complementary projects +## Supplementary projects For more advanced use cases, you might be able to take advantage of: diff --git a/docs/data/material/components/popper/popper.md b/docs/data/material/components/popper/popper.md index d88359dd7b90f0..24c9dcb54c8423 100644 --- a/docs/data/material/components/popper/popper.md +++ b/docs/data/material/components/popper/popper.md @@ -11,21 +11,21 @@ githubSource: packages/mui-material/src/Popper <p class="description">A Popper can be used to display some content on top of another. It's an alternative to react-popper.</p> -Some important features of the `Popper` component: +Some important features of the Popper component: - 🕷 Popper relies on the 3rd party library ([Popper.js](https://popper.js.org/)) for perfect positioning. - 💄 It's an alternative API to react-popper. It aims for simplicity. -- The children is [`Portal`](/material-ui/react-portal/) to the body of the document to avoid rendering problems. +- Its child element is a [Base UI Portal](/base-ui/react-portal/) on the body of the document to avoid rendering problems. You can disable this behavior with `disablePortal`. -- The scroll isn't blocked like with the [`Popover`](/material-ui/react-popover/) component. +- The scroll isn't blocked like with the [Popover](/material-ui/react-popover/) component. The placement of the popper updates with the available area in the viewport. -- Clicking away does not hide the `Popper` component. - If you need this behavior, you can use [`ClickAwayListener`](/material-ui/react-click-away-listener/) - see the example in the [menu documentation section](/material-ui/react-menu/#menulist-composition). +- Clicking away does not hide the Popper component. + If you need this behavior, you can use the [Base UI Click-Away Listener](/base-ui/react-click-away-listener/) - see the example in the [menu documentation section](/material-ui/react-menu/#menulist-composition). - The `anchorEl` is passed as the reference object to create a new `Popper.js` instance. {{"component": "@mui/docs/ComponentLinkHeader", "design": false}} -## Basic popper +## Basic Popper {{"demo": "SimplePopper.js"}} @@ -64,7 +64,7 @@ Highlight part of the text to see the popper: {{"demo": "VirtualElementPopper.js"}} -## Complementary projects +## Supplementary projects For more advanced use cases you might be able to take advantage of: diff --git a/docs/data/material/components/portal/portal.md b/docs/data/material/components/portal/portal.md index 06c3885f4169cb..2f66f2159fd063 100644 --- a/docs/data/material/components/portal/portal.md +++ b/docs/data/material/components/portal/portal.md @@ -15,5 +15,5 @@ githubLabel: 'component: Portal' Please refer to the [Portal](/base-ui/react-portal/) component page in the Base UI docs for demos and details on usage. Portal is a part of the standalone [Base UI](/base-ui/) component library. -It is currently re-exported from `@mui/material` for your convenience, but it will be removed from this package in a future major version, after `@mui/base` gets a stable release. +It is currently re-exported from `@mui/material` for your convenience, but it will be removed from this package in a future major version after Base UI gets a stable release. ::: diff --git a/docs/data/material/components/selects/selects.md b/docs/data/material/components/selects/selects.md index 4025b19b73751d..dbbb2ad619e871 100644 --- a/docs/data/material/components/selects/selects.md +++ b/docs/data/material/components/selects/selects.md @@ -200,7 +200,7 @@ If you use the ListSubheader directly, **no additional code is required**. ## Accessibility To properly label your `Select` input you need an extra element with an `id` that contains a label. -That `id` needs to match the `labelId` of the `Select` e.g. +That `id` needs to match the `labelId` of the `Select`, for example: ```jsx <InputLabel id="label">Age</InputLabel> diff --git a/docs/data/material/components/snackbars/snackbars.md b/docs/data/material/components/snackbars/snackbars.md index 7b50dc4fc504eb..8f2bae2f7e5180 100644 --- a/docs/data/material/components/snackbars/snackbars.md +++ b/docs/data/material/components/snackbars/snackbars.md @@ -87,7 +87,7 @@ This demo shows how to display multiple Snackbars without stacking them by using {{"demo": "ConsecutiveSnackbars.js"}} -## Third-party integrations +## Supplementary components ### notistack @@ -141,7 +141,7 @@ The Snackbar component is composed of a root `<div>` that houses interior elemen </div> ``` -## Toolpad (Beta) +## Experimental APIs - Toolpad ### useNotifications diff --git a/docs/data/material/components/text-fields/text-fields.md b/docs/data/material/components/text-fields/text-fields.md index 583fe3cd894ef5..8142a867b4b700 100644 --- a/docs/data/material/components/text-fields/text-fields.md +++ b/docs/data/material/components/text-fields/text-fields.md @@ -44,8 +44,8 @@ The `helperText` prop can then be used to provide feedback to the user about the ## Multiline -The `multiline` prop transforms the text field into a [TextareaAutosize](/material-ui/react-textarea-autosize/) element. -Unless the `rows` prop is set, the height of the text field dynamically matches its content (using [TextareaAutosize](/material-ui/react-textarea-autosize/)). +The `multiline` prop transforms the Text Field into a [Base UI Textarea Autosize](/base-ui/react-textarea-autosize/) element. +Unless the `rows` prop is set, the height of the text field dynamically matches its content. You can use the `minRows` and `maxRows` props to bound it. {{"demo": "MultilineTextFields.js"}} @@ -242,7 +242,7 @@ In some circumstances, we can't determine the "shrink" state (number input, date To workaround the issue, you can force the "shrink" state of the label. ```jsx -<TextField InputLabelProps={{ shrink: true }} /> +<TextField slotProps={{ inputLabel: { shrink: true } }} /> ``` or @@ -353,13 +353,13 @@ In order for the text field to be accessible, **the input should be linked to th </FormControl> ``` -## Complementary projects +## Supplementary projects + +<!-- To sync with related-projects.md --> For more advanced use cases, you might be able to take advantage of: -- [react-hook-form](https://react-hook-form.com/): React hook for form validation. -- [react-hook-form-mui](https://github.com/dohomi/react-hook-form-mui): Material UI and react-hook-form combined. +- [react-hook-form-mui](https://github.com/dohomi/react-hook-form-mui): Material UI and [react-hook-form](https://react-hook-form.com/) combined. - [formik-material-ui](https://github.com/stackworx/formik-mui): Bindings for using Material UI with [formik](https://formik.org/). - [mui-rff](https://github.com/lookfirst/mui-rff): Bindings for using Material UI with [React Final Form](https://final-form.org/react). - [@ui-schema/ds-material](https://www.npmjs.com/package/@ui-schema/ds-material) Bindings for using Material UI with [UI Schema](https://github.com/ui-schema/ui-schema). JSON Schema compatible. -- [@data-driven-forms/mui-component-mapper](https://www.data-driven-forms.org/provided-mappers/mui-component-mapper): Bindings for using Material UI with [Data Driven Forms](https://github.com/data-driven-forms/react-forms). diff --git a/docs/data/material/components/textarea-autosize/textarea-autosize.md b/docs/data/material/components/textarea-autosize/textarea-autosize.md index dd404a2f340e7e..d4b51a9a2da082 100644 --- a/docs/data/material/components/textarea-autosize/textarea-autosize.md +++ b/docs/data/material/components/textarea-autosize/textarea-autosize.md @@ -15,5 +15,5 @@ githubLabel: 'component: TextareaAutosize' Please refer to the [Textarea Autosize](/base-ui/react-textarea-autosize/) component page in the Base UI docs for demos and details on usage. Textarea Autosize is a part of the standalone [Base UI](/base-ui/) component library. -It is currently re-exported from `@mui/material` for your convenience, but it will be removed from this package in a future major version, after `@mui/base` gets a stable release. +It is currently re-exported from `@mui/material` for your convenience, but it will be removed from this package in a future major version after Base UI gets a stable release. ::: diff --git a/docs/data/material/components/tooltips/AnchorElTooltips.js b/docs/data/material/components/tooltips/AnchorElTooltips.js index ecbc291b2d2116..cbfaaf36dd61f6 100644 --- a/docs/data/material/components/tooltips/AnchorElTooltips.js +++ b/docs/data/material/components/tooltips/AnchorElTooltips.js @@ -23,16 +23,18 @@ export default function AnchorElTooltips() { title="Add" placement="top" arrow - PopperProps={{ - popperRef, - anchorEl: { - getBoundingClientRect: () => { - return new DOMRect( - positionRef.current.x, - areaRef.current.getBoundingClientRect().y, - 0, - 0, - ); + slotProps={{ + popper: { + popperRef, + anchorEl: { + getBoundingClientRect: () => { + return new DOMRect( + positionRef.current.x, + areaRef.current.getBoundingClientRect().y, + 0, + 0, + ); + }, }, }, }} diff --git a/docs/data/material/components/tooltips/AnchorElTooltips.tsx b/docs/data/material/components/tooltips/AnchorElTooltips.tsx index 9e5ef5ea7bfe9e..736a61ef39712d 100644 --- a/docs/data/material/components/tooltips/AnchorElTooltips.tsx +++ b/docs/data/material/components/tooltips/AnchorElTooltips.tsx @@ -24,16 +24,18 @@ export default function AnchorElTooltips() { title="Add" placement="top" arrow - PopperProps={{ - popperRef, - anchorEl: { - getBoundingClientRect: () => { - return new DOMRect( - positionRef.current.x, - areaRef.current!.getBoundingClientRect().y, - 0, - 0, - ); + slotProps={{ + popper: { + popperRef, + anchorEl: { + getBoundingClientRect: () => { + return new DOMRect( + positionRef.current.x, + areaRef.current!.getBoundingClientRect().y, + 0, + 0, + ); + }, }, }, }} diff --git a/docs/data/material/components/tooltips/TransitionsTooltips.js b/docs/data/material/components/tooltips/TransitionsTooltips.js index f468119c6b1a0c..f2b08180781486 100644 --- a/docs/data/material/components/tooltips/TransitionsTooltips.js +++ b/docs/data/material/components/tooltips/TransitionsTooltips.js @@ -11,13 +11,22 @@ export default function TransitionsTooltips() { <Button>Grow</Button> </Tooltip> <Tooltip - TransitionComponent={Fade} - TransitionProps={{ timeout: 600 }} title="Add" + slots={{ + transition: Fade, + }} + slotProps={{ + transition: { timeout: 600 }, + }} > <Button>Fade</Button> </Tooltip> - <Tooltip TransitionComponent={Zoom} title="Add"> + <Tooltip + title="Add" + slots={{ + transition: Zoom, + }} + > <Button>Zoom</Button> </Tooltip> </div> diff --git a/docs/data/material/components/tooltips/TransitionsTooltips.tsx b/docs/data/material/components/tooltips/TransitionsTooltips.tsx index f468119c6b1a0c..f2b08180781486 100644 --- a/docs/data/material/components/tooltips/TransitionsTooltips.tsx +++ b/docs/data/material/components/tooltips/TransitionsTooltips.tsx @@ -11,13 +11,22 @@ export default function TransitionsTooltips() { <Button>Grow</Button> </Tooltip> <Tooltip - TransitionComponent={Fade} - TransitionProps={{ timeout: 600 }} title="Add" + slots={{ + transition: Fade, + }} + slotProps={{ + transition: { timeout: 600 }, + }} > <Button>Fade</Button> </Tooltip> - <Tooltip TransitionComponent={Zoom} title="Add"> + <Tooltip + title="Add" + slots={{ + transition: Zoom, + }} + > <Button>Zoom</Button> </Tooltip> </div> diff --git a/docs/data/material/components/tooltips/TransitionsTooltips.tsx.preview b/docs/data/material/components/tooltips/TransitionsTooltips.tsx.preview deleted file mode 100644 index 3a298ce9881fe9..00000000000000 --- a/docs/data/material/components/tooltips/TransitionsTooltips.tsx.preview +++ /dev/null @@ -1,13 +0,0 @@ -<Tooltip title="Add"> - <Button>Grow</Button> -</Tooltip> -<Tooltip - TransitionComponent={Fade} - TransitionProps={{ timeout: 600 }} - title="Add" -> - <Button>Fade</Button> -</Tooltip> -<Tooltip TransitionComponent={Zoom} title="Add"> - <Button>Zoom</Button> -</Tooltip> \ No newline at end of file diff --git a/docs/data/material/components/tooltips/TriggersTooltips.js b/docs/data/material/components/tooltips/TriggersTooltips.js index 24894fbe9f3b7a..822022c564d979 100644 --- a/docs/data/material/components/tooltips/TriggersTooltips.js +++ b/docs/data/material/components/tooltips/TriggersTooltips.js @@ -37,15 +37,17 @@ export default function TriggersTooltips() { <ClickAwayListener onClickAway={handleTooltipClose}> <div> <Tooltip - PopperProps={{ - disablePortal: true, - }} onClose={handleTooltipClose} open={open} disableFocusListener disableHoverListener disableTouchListener title="Add" + slotProps={{ + popper: { + disablePortal: true, + }, + }} > <Button onClick={handleTooltipOpen}>Click</Button> </Tooltip> diff --git a/docs/data/material/components/tooltips/TriggersTooltips.tsx b/docs/data/material/components/tooltips/TriggersTooltips.tsx index 24894fbe9f3b7a..822022c564d979 100644 --- a/docs/data/material/components/tooltips/TriggersTooltips.tsx +++ b/docs/data/material/components/tooltips/TriggersTooltips.tsx @@ -37,15 +37,17 @@ export default function TriggersTooltips() { <ClickAwayListener onClickAway={handleTooltipClose}> <div> <Tooltip - PopperProps={{ - disablePortal: true, - }} onClose={handleTooltipClose} open={open} disableFocusListener disableHoverListener disableTouchListener title="Add" + slotProps={{ + popper: { + disablePortal: true, + }, + }} > <Button onClick={handleTooltipOpen}>Click</Button> </Tooltip> diff --git a/docs/data/material/customization/dark-mode/dark-mode.md b/docs/data/material/customization/dark-mode/dark-mode.md index 1ac10aa18cc0ea..77c76d8d820b07 100644 --- a/docs/data/material/customization/dark-mode/dark-mode.md +++ b/docs/data/material/customization/dark-mode/dark-mode.md @@ -132,6 +132,21 @@ To instantly switch between color schemes with no transition, apply the `disable </ThemeProvider> ``` +## Disable double rendering + +By default, the `ThemeProvider` rerenders when the theme contains light **and** dark color schemes to prevent SSR hydration mismatches. + +To disable this behavior, use the `noSsr` prop: + +```jsx +<ThemeProvider theme={theme} noSsr> +``` + +`noSsr` is useful if you are building: + +- A client-only application, such as a single-page application (SPA). This prop will optimize the performance and prevent the dark mode flickering when users refresh the page. +- A server-rendered application with [Suspense](https://react.dev/reference/react/Suspense). However, you must ensure that the server render output matches the initial render output on the client. + ## Setting the default mode When `colorSchemes` is provided, the default mode is `system`, which means the app uses the system preference when users first visit the site. diff --git a/docs/data/material/customization/shadow-dom/shadow-dom.md b/docs/data/material/customization/shadow-dom/shadow-dom.md index dbb2c931f91654..fc19540b8b0f9b 100644 --- a/docs/data/material/customization/shadow-dom/shadow-dom.md +++ b/docs/data/material/customization/shadow-dom/shadow-dom.md @@ -32,7 +32,7 @@ ReactDOM.createRoot(shadowRootElement).render( ### 2. Theme -Material UI components like `Menu`, `Dialog`, `Popover` and others use [`Portal`](/material-ui/react-portal/) to render a new "subtree" in a container outside of current DOM hierarchy. +Material UI components like Menu, Dialog, Popover, and others use the [Base UI Portal](/base-ui/react-portal/) component to render a new "subtree" in a container outside of current DOM hierarchy. By default, this container is `document.body`. But since the styles are applied only inside of the Shadow DOM, we need to render portals inside the Shadow DOM container as well: diff --git a/docs/data/material/customization/typography/typography.md b/docs/data/material/customization/typography/typography.md index 445b1b5a2aa9ae..b1f23e3a147e88 100644 --- a/docs/data/material/customization/typography/typography.md +++ b/docs/data/material/customization/typography/typography.md @@ -101,10 +101,10 @@ const theme = createTheme({ The computed font size by the browser follows this mathematical equation: <div class="only-light-mode"> - <img alt="font size calculation" style="width: 550px;" src="/static/images/font-size.svg" width="436" height="48" /> + <img alt="font size calculation" style="width: 550px; display: block;" src="/static/images/font-size.svg" width="436" height="48" /> </div> <div class="only-dark-mode"> - <img alt="font size calculation" style="width: 550px;" src="/static/images/font-size-dark.svg" width="436" height="48" /> + <img alt="font size calculation" style="width: 550px; display: block;" src="/static/images/font-size-dark.svg" width="436" height="48" /> </div> <!-- https://latex.codecogs.com/svg.latex?\dpi{200}&space;\text{computed}&space;=&space;\text{specification}\cdot\frac{\text{typography.fontSize}}{14}\cdot\frac{\text{html&space;fontsize}}{\text{typography.htmlFontSize}} --> diff --git a/docs/data/material/discover-more/backers/backers.md b/docs/data/material/discover-more/backers/backers.md index 353c5a957f2af7..dcf56020d5d745 100644 --- a/docs/data/material/discover-more/backers/backers.md +++ b/docs/data/material/discover-more/backers/backers.md @@ -10,9 +10,10 @@ Sponsorship increases the rate of bug fixes, documentation improvements, and fea <p style="display: flex; justify-content: start; align-items: center; flex-wrap: wrap; margin-top: 8px;"> <a data-ga-event-category="sponsor" data-ga-event-action="docs-backers" data-ga-event-label="octopus.com" href="https://octopus.com/?utm_source=mui.com&utm_medium=referral&utm_content=backers" rel="noopener sponsored" target="_blank" class="remove-link-arrow" class="remove-link-arrow" style="margin-right: 24px;"><img height="128" width="128" src="/static/sponsors/octopus-square.svg" alt="octopus" title="Repeatable, reliable deployments" loading="lazy" /></a> <a data-ga-event-category="sponsor" data-ga-event-action="docs-backers" data-ga-event-label="doit.com" href="https://www.doit.com/flexsave/?utm_source=mui.com&utm_medium=referral&utm_content=backers" rel="noopener sponsored" target="_blank" class="remove-link-arrow" class="remove-link-arrow" style="margin-right: 24px;"><img height="128" width="128" src="/static/sponsors/doit-square.svg" alt="doit" title="Management platform for Google Cloud and AWS" loading="lazy" /></a> - <a data-ga-event-category="sponsor" data-ga-event-action="docs-backers" data-ga-event-label="marblism.com" href="https://www.marblism.com/?utm_source=mui" rel="noopener sponsored" target="_blank" class="remove-link-arrow" class="remove-link-arrow" style="margin-right: 24px;"><img height="128" width="128" src="/static/sponsors/marblism-square.svg" alt="marblism" title="AI web app generation" loading="lazy" /></a> </p> +_1/3 slots available_ + Diamond sponsors are those who've pledged \$1,500/month or more to the MUI organization. [Tier benefits](#diamond). ## Gold sponsors @@ -40,6 +41,7 @@ For example, it could be because the service breaks another service's Terms of s <a data-ga-event-category="sponsor" data-ga-event-action="docs-backers" data-ga-event-label="buzzoid.com" href="https://buzzoid.com/?utm_source=mui.com&utm_medium=referral&utm_content=backers" rel="noopener sponsored" target="_blank" class="remove-link-arrow" style="margin-right: 16px; display:flex;"><img height="26" width="26" src="https://images.opencollective.com/buzzoidz/d23d9bb/logo/26.png" srcset="https://images.opencollective.com/buzzoidz/d23d9bb/logo/78.png 3x" alt="buzzoid.com" title="Buzzoid: Instant delivery Instagram followers." loading="lazy" style="margin-right: 6px;" />Buzzoid</a> <a data-ga-event-category="sponsor" data-ga-event-action="docs-backers" data-ga-event-label="twicsy.com" href="https://twicsy.com/?utm_source=mui.com&utm_medium=referral&utm_content=backers" rel="noopener sponsored" target="_blank" class="remove-link-arrow" style="margin-right: 16px; display:flex;"><img height="26" width="30" src="https://images.opencollective.com/twicsy/7af290f/logo/26.png" srcset="https://images.opencollective.com/twicsy/7af290f/logo/78.png 3x" alt="twicsy.com" title="Twicsy: Instant delivery Instagram followers." loading="lazy" style="margin-right: 6px;" />Twicsy</a> <a data-ga-event-category="sponsor" data-ga-event-action="docs-backers" data-ga-event-label="views4you.com" href="https://views4you.com/?utm_source=mui.com&utm_medium=referral&utm_content=backers" rel="noopener sponsored" target="_blank" class="remove-link-arrow" style="margin-right: 16px; display:flex;"><img height="26" width="26" src="https://images.opencollective.com/buy-instagram-followers-v4y/6364714/logo/26.png" srcset="https://images.opencollective.com/buy-instagram-followers-v4y/6364714/logo/78.png 3x" alt="views4you.com" title="Views4you: Social media growth services." loading="lazy" style="margin-right: 6px;" />Views4You</a> + <a data-ga-event-category="sponsor" data-ga-event-action="docs-backers" data-ga-event-label="poprey.com" href="https://poprey.com/?utm_source=mui.com&utm_medium=referral&utm_content=backers" rel="noopener sponsored" target="_blank" class="remove-link-arrow" style="margin-right: 16px; display:flex;"><img height="26" width="26" src="https://images.opencollective.com/instagram-likes/2a72a03/logo/26.png" srcset="https://images.opencollective.com/instagram-likes/2a72a03/logo/78.png 3x" alt="poprey.com" title="Poprey: Buy Instagram likes with crypto." loading="lazy" style="margin-right: 6px;" />Poprey</a> </p> Gold sponsors are those who've pledged \$500/month or more to the MUI organization. [Tier benefits](#gold). @@ -105,33 +107,33 @@ Funds transferred to the MUI for-profit organization support the company's missi These great services sponsor our open-source projects: <span class="only-light-mode"> - <img src="/static/readme/github-lightmode.svg" alt="GitHub logo" loading="lazy" width="300" height="107" style="width:80px;"> + <img src="/static/readme/github-lightmode.svg" alt="GitHub logo" loading="lazy" width="300" height="107" style="width:80px; display: block; margin-bottom: 2px;"> </span> <span class="only-dark-mode"> - <img src="/static/readme/github-darkmode.svg" alt="GitHub logo" loading="lazy" width="300" height="107" style="width:80px;"> + <img src="/static/readme/github-darkmode.svg" alt="GitHub logo" loading="lazy" width="300" height="107" style="width:80px; display: block; margin-bottom: 2px;"> </span> [GitHub](https://github.com/) lets us host the Git repository and coordinate contributions. <span class="only-light-mode"> - <img src="/static/readme/netlify-lightmode.svg" alt="Netlify logo" loading="lazy" width="180" height="49" style="width: 100px; margin-top: 1rem;"> + <img src="/static/readme/netlify-lightmode.svg" alt="Netlify logo" loading="lazy" width="180" height="49" style="width: 100px; margin-top: 1.2rem; margin-bottom: 2px; display: block;"> </span> <span class="only-dark-mode"> - <img src="/static/readme/netlify-darkmode.svg" alt="Netlify logo" loading="lazy" width="180" height="49" style="width: 100px; margin-top: 1rem;"> + <img src="/static/readme/netlify-darkmode.svg" alt="Netlify logo" loading="lazy" width="180" height="49" style="width: 100px; margin-top: 1.2rem; margin-bottom: 2px; display: block;"> </span> [Netlify](https://www.netlify.com/) lets us distribute the documentation. <span class="only-light-mode"> - <img src="/static/readme/browserstack-lightmode.svg" alt="BrowserStack logo" loading="lazy" width="180" height="32" style="width: 140px; margin-top: 1rem;"> + <img src="/static/readme/browserstack-lightmode.svg" alt="BrowserStack logo" loading="lazy" width="180" height="32" style="width: 140px; margin-top: 1.2rem; margin-bottom: 2px; display: block;"> </span> <span class="only-dark-mode"> - <img src="/static/readme/browserstack-darkmode.svg" alt="BrowserStack logo" loading="lazy" width="180" height="32" style="width: 140px; margin-top: 1rem;"> + <img src="/static/readme/browserstack-darkmode.svg" alt="BrowserStack logo" loading="lazy" width="180" height="32" style="width: 140px; margin-top: 1.2rem; margin-bottom: 2px; display: block;"> </span> [BrowserStack](https://www.browserstack.com/) lets us test in real browsers. -<img loading="lazy" alt="CodeCov logo" src="https://avatars.githubusercontent.com/u/8226205?s=210" width="36" height="36" style="margin-top: 1rem;"> +<img loading="lazy" alt="CodeCov logo" src="https://avatars.githubusercontent.com/u/8226205?s=210" width="36" height="36" style="margin-top: 1.2rem; margin-bottom: 2px; display: block;"> [CodeCov](https://about.codecov.io/) lets us monitor test coverage. diff --git a/docs/data/material/discover-more/related-projects/related-projects.md b/docs/data/material/discover-more/related-projects/related-projects.md index 93f895c38b3fff..32d09fc0f80dbb 100644 --- a/docs/data/material/discover-more/related-projects/related-projects.md +++ b/docs/data/material/discover-more/related-projects/related-projects.md @@ -1,69 +1,81 @@ # Related projects -<p class="description">A carefully curated list of third-party tools that expand or build on top of Material UI.</p> +<p class="description">A carefully curated list of tools that expand or build on top of Material UI.</p> -Developers from the community have built some excellent supplemental tools for working with Material UI—this page highlights some of the best that we've seen. +The MUI org and developers from the community have built some excellent supplemental tools for working with Material UI—this page highlights some of the best that we've seen. Do you have a project that you think should be featured here? Feel free to submit a pull request and the maintainers will work with you to write the description. -## Premium tools +## Third-party app starters -- [ScaffoldHub](https://v2.scaffoldhub.io/scaffolds/react-material-ui?partner=1): +### Admin frameworks - - Tool for building web applications. - - Choose your framework and library (React with Material UI). - - Choose your database (SQL, MongoDB or Firestore). - - Model your database and application with the intuitive GUI. - - Generate your application, including a complete scaffolded backend. - - Preview your application online and download the generated code. +- [React-admin](https://github.com/marmelab/react-admin): A front-end framework for building data-driven applications running in the browser on top of REST/GraphQL APIs. +- [Refine](https://github.com/refinedev/refine): An open source, headless React meta-framework for the rapid development of web applications. + +### Paid starters - [Divjoy](https://divjoy.com?via=material-ui): - Create a Material UI app in minutes. - Templates, authentication, database integration, subscription payments, and more. -## Free tools - -### Admin frameworks - -- [React-admin](https://github.com/marmelab/react-admin): A front-end framework for building data-driven applications running in the browser on top of REST/GraphQL APIs. -- [Refine](https://github.com/refinedev/refine): An open source, headless React meta-framework for the rapid development of web applications. +- [ScaffoldHub](https://v2.scaffoldhub.io/scaffolds/react-material-ui?partner=1): + - Tool for building web applications. + - Choose your framework and library (React with Material UI). + - Choose your database (SQL, MongoDB or Firestore). + - Model your database and application with the intuitive GUI. + - Generate your application, including a complete scaffolded backend. + - Preview your application online and download the generated code. -### Theming tools +## Third-party theming tools - [Material palette generator](https://m2.material.io/inline-tools/color/): The official Material Design 2 palette generator tool. -### Supplementary components +## Supplementary components -#### Layout +### Layout - [MUI Treasury Layout](https://mui-treasury.com/?path=/docs/layout-v6-introduction--docs): Components to handle the overall layout of a page. Check out examples such as [a legacy.reactjs.org clone](https://mui-treasury.com/?path=/story/layout-v6-app-react-legacy--react-legacy). -#### Image +### Image - [mui-image](https://github.com/benmneb/mui-image): The only Material UI image component to satisfy the Material Design 2 guidelines for loading images. -#### Chips input +### Chips input - [mui-chips-input](https://github.com/viclafouch/mui-chips-input): A chips input designed for use with Material UI. -#### Phone number input +### Phone number input - [mui-tel-input](https://github.com/viclafouch/mui-tel-input): A phone number input designed for use with Material UI, built with [libphonenumber-js](https://www.npmjs.com/package/libphonenumber-js). -#### One-time password input +### One-time password input - [mui-otp-input](https://github.com/viclafouch/mui-otp-input): A one-time password input designed for use with Material UI. -#### File input +### File input - [mui-file-input](https://github.com/viclafouch/mui-file-input): A file input designed for use with Material UI. -#### Color input +### Color input - [mui-color-input](https://github.com/viclafouch/mui-color-input): A color input designed for use with Material UI, built with [TinyColor](https://tinycolor.vercel.app/). -#### Rich text editor +### Rich text editor - [mui-tiptap](https://github.com/sjdemartini/mui-tiptap): A customizable Material UI-styled WYSIWYG rich text editor, built with [Tiptap](https://tiptap.dev/). + +### Form + +<!-- To sync with text-fields.md --> + +- [react-hook-form-mui](https://github.com/dohomi/react-hook-form-mui): Material UI and [react-hook-form](https://react-hook-form.com/) combined. +- [formik-material-ui](https://github.com/stackworx/formik-mui): Bindings for using Material UI with [formik](https://formik.org/). +- [mui-rff](https://github.com/lookfirst/mui-rff): Bindings for using Material UI with [React Final Form](https://final-form.org/react). +- [@ui-schema/ds-material](https://www.npmjs.com/package/@ui-schema/ds-material) Bindings for using Material UI with [UI Schema](https://github.com/ui-schema/ui-schema). JSON Schema compatible. + +### Notification + +- [notistack](https://github.com/iamhosseindhv/notistack): Display multiple snackbars that can be stacked and queued—this tool makes it simpler to handle the open and close states. diff --git a/docs/data/material/getting-started/support/support.md b/docs/data/material/getting-started/support/support.md index 7798a2ff0bda5f..e36df840356c8c 100644 --- a/docs/data/material/getting-started/support/support.md +++ b/docs/data/material/getting-started/support/support.md @@ -33,10 +33,10 @@ You can browse the documentation, find an example close to your use case, and th <a href="/material-ui/react-button/#basic-button"> <span class="only-light-mode"> -<img src="/static/docs-infra/forking-an-example.png" alt="Forking an example" loading="lazy" width="1628" height="700" style="display: block; max-width: 774px;"> + <img src="/static/docs-infra/forking-an-example.png" alt="Forking an example" loading="lazy" width="1628" height="700" style="display: block; max-width: 774px;"> </span> <span class="only-dark-mode"> -<img src="/static/docs-infra/forking-an-example-dark.png" alt="Forking an example" loading="lazy" width="1628" height="700" style="display: block; max-width: 774px;"> + <img src="/static/docs-infra/forking-an-example-dark.png" alt="Forking an example" loading="lazy" width="1628" height="700" style="display: block; max-width: 774px;"> </span> </a> diff --git a/docs/data/material/getting-started/templates/.eslintrc.js b/docs/data/material/getting-started/templates/.eslintrc.js deleted file mode 100644 index f3850954b39273..00000000000000 --- a/docs/data/material/getting-started/templates/.eslintrc.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = { - rules: { - 'jsx-a11y/anchor-is-valid': 'off', - }, -}; diff --git a/docs/data/material/getting-started/templates/dashboard/README.md b/docs/data/material/getting-started/templates/dashboard/README.md index 1c250fb12d5de2..98a9b8754f7be3 100644 --- a/docs/data/material/getting-started/templates/dashboard/README.md +++ b/docs/data/material/getting-started/templates/dashboard/README.md @@ -5,7 +5,7 @@ <!-- #default-branch-switch --> 1. Copy these folders (`dashboard` and `shared-theme`) into your project, or one of the [example projects](https://github.com/mui/material-ui/tree/master/examples). -2. Make sure your project has the required dependencies: @mui/material, @mui/icons-material, @emotion/styled, @emotion/react, @mui/x-charts. +2. Make sure your project has the required dependencies: @mui/material, @mui/icons-material, @emotion/styled, @emotion/react, @mui/x-charts, @mui/x-date-pickers, @mui/x-data-grid, @mui/x-tree-view, dayjs 3. Import and use the `Dashboard` component. ## Demo diff --git a/docs/data/material/getting-started/templates/dashboard/components/AppNavbar.js b/docs/data/material/getting-started/templates/dashboard/components/AppNavbar.js index d21c86dab33bda..99f12b420f6092 100644 --- a/docs/data/material/getting-started/templates/dashboard/components/AppNavbar.js +++ b/docs/data/material/getting-started/templates/dashboard/components/AppNavbar.js @@ -68,7 +68,7 @@ export default function AppNavbar() { Dashboard </Typography> </Stack> - <ColorModeIconDropdown data-screenshot="" /> + <ColorModeIconDropdown /> <MenuButton aria-label="menu" onClick={toggleDrawer(true)}> <MenuRoundedIcon /> </MenuButton> diff --git a/docs/data/material/getting-started/templates/dashboard/components/AppNavbar.tsx b/docs/data/material/getting-started/templates/dashboard/components/AppNavbar.tsx index bbf2f446d0c4c3..739273583c2ce0 100644 --- a/docs/data/material/getting-started/templates/dashboard/components/AppNavbar.tsx +++ b/docs/data/material/getting-started/templates/dashboard/components/AppNavbar.tsx @@ -68,7 +68,7 @@ export default function AppNavbar() { Dashboard </Typography> </Stack> - <ColorModeIconDropdown data-screenshot="" /> + <ColorModeIconDropdown /> <MenuButton aria-label="menu" onClick={toggleDrawer(true)}> <MenuRoundedIcon /> </MenuButton> diff --git a/docs/data/material/getting-started/templates/marketing-page/components/FAQ.js b/docs/data/material/getting-started/templates/marketing-page/components/FAQ.js index 82a9f0f33c98be..5f34782ffb1234 100644 --- a/docs/data/material/getting-started/templates/marketing-page/components/FAQ.js +++ b/docs/data/material/getting-started/templates/marketing-page/components/FAQ.js @@ -6,14 +6,15 @@ import Box from '@mui/material/Box'; import Container from '@mui/material/Container'; import Link from '@mui/material/Link'; import Typography from '@mui/material/Typography'; - import ExpandMoreIcon from '@mui/icons-material/ExpandMore'; export default function FAQ() { - const [expanded, setExpanded] = React.useState(false); + const [expanded, setExpanded] = React.useState([]); const handleChange = (panel) => (event, isExpanded) => { - setExpanded(isExpanded ? panel : false); + setExpanded( + isExpanded ? [...expanded, panel] : expanded.filter((item) => item !== panel), + ); }; return ( @@ -42,7 +43,7 @@ export default function FAQ() { </Typography> <Box sx={{ width: '100%' }}> <Accordion - expanded={expanded === 'panel1'} + expanded={expanded.includes('panel1')} onChange={handleChange('panel1')} > <AccordionSummary @@ -60,15 +61,15 @@ export default function FAQ() { gutterBottom sx={{ maxWidth: { sm: '100%', md: '70%' } }} > - You can reach our customer support team by emailing - <Link> support@email.com </Link> - or calling our toll-free number. We're here to assist you + You can reach our customer support team by emailing  + <Link href="mailto:support@email.com">support@email.com</Link> +  or calling our toll-free number. We're here to assist you promptly. </Typography> </AccordionDetails> </Accordion> <Accordion - expanded={expanded === 'panel2'} + expanded={expanded.includes('panel2')} onChange={handleChange('panel2')} > <AccordionSummary @@ -93,7 +94,7 @@ export default function FAQ() { </AccordionDetails> </Accordion> <Accordion - expanded={expanded === 'panel3'} + expanded={expanded.includes('panel3')} onChange={handleChange('panel3')} > <AccordionSummary @@ -118,7 +119,7 @@ export default function FAQ() { </AccordionDetails> </Accordion> <Accordion - expanded={expanded === 'panel4'} + expanded={expanded.includes('panel4')} onChange={handleChange('panel4')} > <AccordionSummary diff --git a/docs/data/material/getting-started/templates/marketing-page/components/FAQ.tsx b/docs/data/material/getting-started/templates/marketing-page/components/FAQ.tsx index fa8cfd1d1fa6f9..03319f0654ce93 100644 --- a/docs/data/material/getting-started/templates/marketing-page/components/FAQ.tsx +++ b/docs/data/material/getting-started/templates/marketing-page/components/FAQ.tsx @@ -6,15 +6,18 @@ import Box from '@mui/material/Box'; import Container from '@mui/material/Container'; import Link from '@mui/material/Link'; import Typography from '@mui/material/Typography'; - import ExpandMoreIcon from '@mui/icons-material/ExpandMore'; export default function FAQ() { - const [expanded, setExpanded] = React.useState<string | false>(false); + const [expanded, setExpanded] = React.useState<string[]>([]); const handleChange = (panel: string) => (event: React.SyntheticEvent, isExpanded: boolean) => { - setExpanded(isExpanded ? panel : false); + setExpanded( + isExpanded + ? [...expanded, panel] + : expanded.filter((item) => item !== panel), + ); }; return ( @@ -43,7 +46,7 @@ export default function FAQ() { </Typography> <Box sx={{ width: '100%' }}> <Accordion - expanded={expanded === 'panel1'} + expanded={expanded.includes('panel1')} onChange={handleChange('panel1')} > <AccordionSummary @@ -61,15 +64,15 @@ export default function FAQ() { gutterBottom sx={{ maxWidth: { sm: '100%', md: '70%' } }} > - You can reach our customer support team by emailing - <Link> support@email.com </Link> - or calling our toll-free number. We're here to assist you + You can reach our customer support team by emailing  + <Link href="mailto:support@email.com">support@email.com</Link> +  or calling our toll-free number. We're here to assist you promptly. </Typography> </AccordionDetails> </Accordion> <Accordion - expanded={expanded === 'panel2'} + expanded={expanded.includes('panel2')} onChange={handleChange('panel2')} > <AccordionSummary @@ -94,7 +97,7 @@ export default function FAQ() { </AccordionDetails> </Accordion> <Accordion - expanded={expanded === 'panel3'} + expanded={expanded.includes('panel3')} onChange={handleChange('panel3')} > <AccordionSummary @@ -119,7 +122,7 @@ export default function FAQ() { </AccordionDetails> </Accordion> <Accordion - expanded={expanded === 'panel4'} + expanded={expanded.includes('panel4')} onChange={handleChange('panel4')} > <AccordionSummary diff --git a/docs/data/material/getting-started/templates/shared-theme/AppTheme.js b/docs/data/material/getting-started/templates/shared-theme/AppTheme.js index b1d55ca4408a14..6fde1fc9fd9be3 100644 --- a/docs/data/material/getting-started/templates/shared-theme/AppTheme.js +++ b/docs/data/material/getting-started/templates/shared-theme/AppTheme.js @@ -9,7 +9,8 @@ import { navigationCustomizations } from './customizations/navigation'; import { surfacesCustomizations } from './customizations/surfaces'; import { colorSchemes, typography, shadows, shape } from './themePrimitives'; -function AppTheme({ children, disableCustomTheme, themeComponents }) { +function AppTheme(props) { + const { children, disableCustomTheme, themeComponents } = props; const theme = React.useMemo(() => { return disableCustomTheme ? {} diff --git a/docs/data/material/getting-started/templates/shared-theme/AppTheme.tsx b/docs/data/material/getting-started/templates/shared-theme/AppTheme.tsx index 1fe35d6faeef48..a4a512c30aef59 100644 --- a/docs/data/material/getting-started/templates/shared-theme/AppTheme.tsx +++ b/docs/data/material/getting-started/templates/shared-theme/AppTheme.tsx @@ -17,11 +17,8 @@ interface AppThemeProps { themeComponents?: ThemeOptions['components']; } -export default function AppTheme({ - children, - disableCustomTheme, - themeComponents, -}: AppThemeProps) { +export default function AppTheme(props: AppThemeProps) { + const { children, disableCustomTheme, themeComponents } = props; const theme = React.useMemo(() => { return disableCustomTheme ? {} diff --git a/docs/data/material/getting-started/templates/sign-in-side/SignInCard.js b/docs/data/material/getting-started/templates/sign-in-side/SignInCard.js index 4b57614a366965..f67ead0dbba721 100644 --- a/docs/data/material/getting-started/templates/sign-in-side/SignInCard.js +++ b/docs/data/material/getting-started/templates/sign-in-side/SignInCard.js @@ -10,9 +10,7 @@ import FormControlLabel from '@mui/material/FormControlLabel'; import Link from '@mui/material/Link'; import TextField from '@mui/material/TextField'; import Typography from '@mui/material/Typography'; - import { styled } from '@mui/material/styles'; - import ForgotPassword from './ForgotPassword'; import { GoogleIcon, FacebookIcon, SitemarkIcon } from './CustomIcons'; diff --git a/docs/data/material/getting-started/templates/sign-in-side/SignInCard.tsx b/docs/data/material/getting-started/templates/sign-in-side/SignInCard.tsx index 9e7baffa93b24c..0bc4c44e76acc6 100644 --- a/docs/data/material/getting-started/templates/sign-in-side/SignInCard.tsx +++ b/docs/data/material/getting-started/templates/sign-in-side/SignInCard.tsx @@ -10,9 +10,7 @@ import FormControlLabel from '@mui/material/FormControlLabel'; import Link from '@mui/material/Link'; import TextField from '@mui/material/TextField'; import Typography from '@mui/material/Typography'; - import { styled } from '@mui/material/styles'; - import ForgotPassword from './ForgotPassword'; import { GoogleIcon, FacebookIcon, SitemarkIcon } from './CustomIcons'; diff --git a/docs/data/material/getting-started/templates/templates.md b/docs/data/material/getting-started/templates/templates.md index e10309f884352a..aa6aca6d5bce2f 100644 --- a/docs/data/material/getting-started/templates/templates.md +++ b/docs/data/material/getting-started/templates/templates.md @@ -3,7 +3,7 @@ productId: material-ui title: New Free React Templates --- -# React Templates +# React templates <p class="description">Browse our collection of free React templates to get started building your app with Material UI, including a React dashboard, React marketing page, and more.</p> @@ -11,35 +11,38 @@ title: New Free React Templates ## Free templates -Our curated collection of free Material UI templates includes dashboards, marketing pages, sign-in and sign-up pages, a blog, a checkout flow, and more. -They can be combined with one of the [example projects](/material-ui/getting-started/example-projects/) to form a complete starter. +Our curated collection of free Material UI templates includes a dashboard, a marketing page, a checkout flow, sign-in and sign-up pages, and a blog. +You can download each one directly from the source code or via CodeSandbox or StackBlitz. -Sections of each layout are clearly defined either by comments or use of separate files, -making it simple to extract parts of a page (such as a "hero unit", or footer, for example) -for reuse in other pages. -For multi-part examples, a table in the README at the linked source code location describes -the purpose of each file. +All templates feature a custom theme and a default Material Design 2 theme, with light and dark modes for both. +You can toggle through each of these style options in the top right corner of the live previews. -{{"component": "modules/components/MaterialFreeTemplatesCollection.js"}} +Sections of each layout are defined either by comments or use of separate files, so you can extract parts of a page (such as a hero unit or a footer) for reuse in other pages. +These templates can be combined with one of the [example projects](/material-ui/getting-started/example-projects/) to form a complete starter app. + +If you see any room for improvement, please feel free to open an [issue](https://github.com/mui/material-ui/issues/new/choose) or a [pull request](https://github.com/mui/material-ui/pulls) on GitHub. -See any room for improvement? -Please feel free to open an [issue](https://github.com/mui/material-ui/issues/new/choose) or a [pull request](https://github.com/mui/material-ui/pulls) on GitHub, following the [contribution guide](/material-ui/getting-started/faq/#how-can-i-contribute-to-the-free-templates). +{{"component": "modules/components/MaterialFreeTemplatesCollection.js"}} ## Premium templates -Looking for something more? You can find complete templates and themes in the <a href="https://mui.com/store/?utm_source=docs&utm_medium=referral&utm_campaign=templates-store">premium template section</a>. +Looking for something more? +You can find complete templates and themes like those shown below in the <a href="https://mui.com/store/?utm_source=docs&utm_medium=referral&utm_campaign=templates-store">premium template section</a> of the MUI Store. <a href="https://mui.com/store/?utm_source=docs&utm_medium=referral&utm_campaign=templates-store"> <span class="only-light-mode"> -<img src="/static/images/themes-display-light.png" alt="The MUI Store includes several carefully curated React templates using Material UI" width="2280" height="1200" /> + <img src="/static/images/themes-display-light.png" alt="The MUI Store includes several carefully curated React templates using Material UI" width="2280" height="1200" style="display: block;" /> </span> <span class="only-dark-mode"> -<img src="/static/images/themes-display-dark.png" alt="The MUI Store includes several carefully curated React templates using Material UI" width="2280" height="1200" /> + <img src="/static/images/themes-display-dark.png" alt="The MUI Store includes several carefully curated React templates using Material UI" width="2280" height="1200" style="display: block;" /> </span> </a> ## Toolpad Core (beta) -[Toolpad Core](https://mui.com/toolpad/core/introduction/) is a set of components designed to build dashboards and internal tools. It leverages the existing suite of components offered by Material UI and ties them together to help you create applications quickly. +[Toolpad Core](https://mui.com/toolpad/core/introduction/) is a set of components designed for assembling dashboards and internal tools more efficiently. +It builds on top of Material UI to provide sophisticated UI components with full-stack functionality, such as the [Dashboard Layout](https://mui.com/toolpad/core/react-dashboard-layout/) shown below. + +This is a great option if you don't want to start building from scratch but don't need a prebuilt template. {{"demo": "../../components/app-bar/DashboardLayoutBasic.js", "height": 400, "iframe": true, "defaultExpanded": false, "bg": "inline"}} diff --git a/docs/data/material/guides/composition/composition.md b/docs/data/material/guides/composition/composition.md index 59274283ed6b7d..00190c9f867791 100644 --- a/docs/data/material/guides/composition/composition.md +++ b/docs/data/material/guides/composition/composition.md @@ -49,10 +49,10 @@ This pattern is very powerful and allows for great flexibility, as well as a way ### Passing other React components -You can pass any other React component to `component` prop. For example, you can pass `Link` component from `react-router-dom`: +You can pass any other React component to `component` prop. For example, you can pass `Link` component from `react-router`: ```tsx -import { Link } from 'react-router-dom'; +import { Link } from 'react-router'; import Button from '@mui/material/Button'; function Demo() { @@ -84,7 +84,7 @@ Now the `CustomComponent` can be used with a `component` prop which should be se In addition, the `CustomComponent` will have all props of a `<a>` HTML element. The other props of the `Typography` component will also be present in props of the `CustomComponent`. -You can find a code example with the Button and react-router-dom in [these demos](/material-ui/integrations/routing/#component-prop). +You can find a code example with the Button and react-router in [these demos](/material-ui/integrations/routing/#component-prop). ### Generic diff --git a/docs/data/material/integrations/interoperability/interoperability.md b/docs/data/material/integrations/interoperability/interoperability.md index 1676780993c7f4..56c22bfc22d13c 100644 --- a/docs/data/material/integrations/interoperability/interoperability.md +++ b/docs/data/material/integrations/interoperability/interoperability.md @@ -376,7 +376,7 @@ const CustomizedSlider = styled(Slider)( ### Portals -The [Portal](/material-ui/react-portal/) provides a first-class way to render children into a DOM node that exists outside the DOM hierarchy of the parent component. +The [Base UI Portal](/base-ui/react-portal/) component provides a first-class way to render children into a DOM node that exists outside the DOM hierarchy of the parent component. Because of the way styled-components scopes its CSS, you may run into issues where styling is not applied. For example, if you attempt to style the `tooltip` generated by the [Tooltip](/material-ui/react-tooltip/) component, diff --git a/docs/data/material/integrations/nextjs/nextjs.md b/docs/data/material/integrations/nextjs/nextjs.md index 4a0aaea26add2a..3050259d175a20 100644 --- a/docs/data/material/integrations/nextjs/nextjs.md +++ b/docs/data/material/integrations/nextjs/nextjs.md @@ -89,6 +89,7 @@ Finally, in `src/app/layout.tsx`, pass the theme to the `ThemeProvider`: ```diff title="app/layout.tsx" import { AppRouterCacheProvider } from '@mui/material-nextjs/v15-appRouter'; ++import { Roboto } from 'next/font/google'; +import { ThemeProvider } from '@mui/material/styles'; +import theme from '../theme'; diff --git a/docs/data/material/integrations/routing/ButtonRouter.js b/docs/data/material/integrations/routing/ButtonRouter.js index 0fac505afd8ee9..e09dc6ddbfee18 100644 --- a/docs/data/material/integrations/routing/ButtonRouter.js +++ b/docs/data/material/integrations/routing/ButtonRouter.js @@ -1,7 +1,6 @@ import * as React from 'react'; import PropTypes from 'prop-types'; -import { Link as RouterLink, MemoryRouter } from 'react-router-dom'; -import { StaticRouter } from 'react-router-dom/server'; +import { Link as RouterLink, MemoryRouter, StaticRouter } from 'react-router'; import Button from '@mui/material/Button'; const LinkBehavior = React.forwardRef((props, ref) => ( diff --git a/docs/data/material/integrations/routing/ButtonRouter.tsx b/docs/data/material/integrations/routing/ButtonRouter.tsx index 6b91185550d1c7..9e8d32275081a8 100644 --- a/docs/data/material/integrations/routing/ButtonRouter.tsx +++ b/docs/data/material/integrations/routing/ButtonRouter.tsx @@ -3,8 +3,8 @@ import { Link as RouterLink, LinkProps as RouterLinkProps, MemoryRouter, -} from 'react-router-dom'; -import { StaticRouter } from 'react-router-dom/server'; + StaticRouter, +} from 'react-router'; import Button from '@mui/material/Button'; const LinkBehavior = React.forwardRef<any, Omit<RouterLinkProps, 'to'>>( diff --git a/docs/data/material/integrations/routing/LinkRouter.js b/docs/data/material/integrations/routing/LinkRouter.js index bdec73e5996442..d15fde468e884e 100644 --- a/docs/data/material/integrations/routing/LinkRouter.js +++ b/docs/data/material/integrations/routing/LinkRouter.js @@ -1,8 +1,7 @@ /* eslint-disable jsx-a11y/anchor-is-valid */ import * as React from 'react'; import PropTypes from 'prop-types'; -import { Link as RouterLink, MemoryRouter } from 'react-router-dom'; -import { StaticRouter } from 'react-router-dom/server'; +import { Link as RouterLink, MemoryRouter, StaticRouter } from 'react-router'; import Link from '@mui/material/Link'; import Box from '@mui/material/Box'; diff --git a/docs/data/material/integrations/routing/LinkRouter.tsx b/docs/data/material/integrations/routing/LinkRouter.tsx index 26d7caf5e7f919..aecdfdd48359c0 100644 --- a/docs/data/material/integrations/routing/LinkRouter.tsx +++ b/docs/data/material/integrations/routing/LinkRouter.tsx @@ -4,8 +4,8 @@ import { Link as RouterLink, LinkProps as RouterLinkProps, MemoryRouter, -} from 'react-router-dom'; -import { StaticRouter } from 'react-router-dom/server'; + StaticRouter, +} from 'react-router'; import Link from '@mui/material/Link'; import Box from '@mui/material/Box'; diff --git a/docs/data/material/integrations/routing/LinkRouterWithTheme.js b/docs/data/material/integrations/routing/LinkRouterWithTheme.js index 1e1f51a963882a..07fe829876a28b 100644 --- a/docs/data/material/integrations/routing/LinkRouterWithTheme.js +++ b/docs/data/material/integrations/routing/LinkRouterWithTheme.js @@ -1,7 +1,6 @@ import * as React from 'react'; import PropTypes from 'prop-types'; -import { Link as RouterLink, MemoryRouter } from 'react-router-dom'; -import { StaticRouter } from 'react-router-dom/server'; +import { Link as RouterLink, MemoryRouter, StaticRouter } from 'react-router'; import { ThemeProvider, createTheme } from '@mui/material/styles'; import Button from '@mui/material/Button'; import Stack from '@mui/material/Stack'; diff --git a/docs/data/material/integrations/routing/LinkRouterWithTheme.tsx b/docs/data/material/integrations/routing/LinkRouterWithTheme.tsx index 4776d710ae4bdf..0eabdf4f85986e 100644 --- a/docs/data/material/integrations/routing/LinkRouterWithTheme.tsx +++ b/docs/data/material/integrations/routing/LinkRouterWithTheme.tsx @@ -3,8 +3,8 @@ import { Link as RouterLink, LinkProps as RouterLinkProps, MemoryRouter, -} from 'react-router-dom'; -import { StaticRouter } from 'react-router-dom/server'; + StaticRouter, +} from 'react-router'; import { ThemeProvider, createTheme } from '@mui/material/styles'; import Button from '@mui/material/Button'; import Stack from '@mui/material/Stack'; diff --git a/docs/data/material/integrations/routing/ListRouter.js b/docs/data/material/integrations/routing/ListRouter.js index ec3153a65cc5ae..eacda889e7a72b 100644 --- a/docs/data/material/integrations/routing/ListRouter.js +++ b/docs/data/material/integrations/routing/ListRouter.js @@ -11,8 +11,14 @@ import Divider from '@mui/material/Divider'; import InboxIcon from '@mui/icons-material/Inbox'; import DraftsIcon from '@mui/icons-material/Drafts'; import Typography from '@mui/material/Typography'; -import { Link, Route, Routes, MemoryRouter, useLocation } from 'react-router-dom'; -import { StaticRouter } from 'react-router-dom/server'; +import { + Link, + Route, + Routes, + MemoryRouter, + useLocation, + StaticRouter, +} from 'react-router'; function Router(props) { const { children } = props; diff --git a/docs/data/material/integrations/routing/ListRouter.tsx b/docs/data/material/integrations/routing/ListRouter.tsx index 669d548181ffca..2c732a1fe4b3ca 100644 --- a/docs/data/material/integrations/routing/ListRouter.tsx +++ b/docs/data/material/integrations/routing/ListRouter.tsx @@ -10,8 +10,14 @@ import Divider from '@mui/material/Divider'; import InboxIcon from '@mui/icons-material/Inbox'; import DraftsIcon from '@mui/icons-material/Drafts'; import Typography from '@mui/material/Typography'; -import { Link, Route, Routes, MemoryRouter, useLocation } from 'react-router-dom'; -import { StaticRouter } from 'react-router-dom/server'; +import { + Link, + Route, + Routes, + MemoryRouter, + useLocation, + StaticRouter, +} from 'react-router'; function Router(props: { children?: React.ReactNode }) { const { children } = props; diff --git a/docs/data/material/integrations/routing/TabsRouter.js b/docs/data/material/integrations/routing/TabsRouter.js index 4224347ee2ca8a..e42348e532efe5 100644 --- a/docs/data/material/integrations/routing/TabsRouter.js +++ b/docs/data/material/integrations/routing/TabsRouter.js @@ -11,8 +11,8 @@ import { Link, matchPath, useLocation, -} from 'react-router-dom'; -import { StaticRouter } from 'react-router-dom/server'; + StaticRouter, +} from 'react-router'; function Router(props) { const { children } = props; diff --git a/docs/data/material/integrations/routing/TabsRouter.tsx b/docs/data/material/integrations/routing/TabsRouter.tsx index e2e0325a3b8eb4..9334804032c3c8 100644 --- a/docs/data/material/integrations/routing/TabsRouter.tsx +++ b/docs/data/material/integrations/routing/TabsRouter.tsx @@ -10,8 +10,8 @@ import { Link, matchPath, useLocation, -} from 'react-router-dom'; -import { StaticRouter } from 'react-router-dom/server'; + StaticRouter, +} from 'react-router'; function Router(props: { children?: React.ReactNode }) { const { children } = props; diff --git a/docs/data/material/integrations/routing/routing.md b/docs/data/material/integrations/routing/routing.md index 61c245ac6091cf..f8f4dbed948768 100644 --- a/docs/data/material/integrations/routing/routing.md +++ b/docs/data/material/integrations/routing/routing.md @@ -24,7 +24,7 @@ The Material UI theme lets you configure this component once. For instance, with react-router: ```tsx -import { Link as RouterLink, LinkProps as RouterLinkProps } from 'react-router-dom'; +import { Link as RouterLink, LinkProps as RouterLinkProps } from 'react-router'; import { LinkProps } from '@mui/material/Link'; const LinkBehavior = React.forwardRef< @@ -65,9 +65,9 @@ In the event you need to provide a richer structure, see the next section. You can achieve the integration with third-party routing libraries with the `component` prop. You can learn more about this prop in the **[composition guide](/material-ui/guides/composition/#component-prop)**. -## react-router examples +## React Router examples -Here are a few demos with [react-router](https://github.com/remix-run/react-router). +Here are a few demos with the [Link component](https://reactrouter.com/start/library/navigating#link) of [React Router](https://github.com/remix-run/react-router). You can apply the same strategy with all the components: BottomNavigation, Card, etc. ### Link diff --git a/docs/data/material/migration/migrating-from-deprecated-apis/migrating-from-deprecated-apis.md b/docs/data/material/migration/migrating-from-deprecated-apis/migrating-from-deprecated-apis.md index ee033608634f79..149f713f4e40f8 100644 --- a/docs/data/material/migration/migrating-from-deprecated-apis/migrating-from-deprecated-apis.md +++ b/docs/data/material/migration/migrating-from-deprecated-apis/migrating-from-deprecated-apis.md @@ -87,6 +87,36 @@ You can also manually update your theme as shown in the snippet below: This reduces the API surface and lets you define variants in other slots of the component. +## Accordion + +Use the [codemod](https://github.com/mui/material-ui/tree/HEAD/packages/mui-codemod#accordion-props) below to migrate the code as described in the following sections: + +```bash +npx @mui/codemod@latest deprecations/accordion-props <path> +``` + +### TransitionComponent + +The Accordion's `TransitionComponent` prop was deprecated in favor of `slots.transition`: + +```diff + <Accordion +- TransitionComponent={CustomTransition} ++ slots={{ transition: CustomTransition }} + /> +``` + +### TransitionProps + +The Accordion's `TransitionProps` prop was deprecated in favor of `slotProps.transition`: + +```diff + <Accordion +- TransitionProps={{ unmountOnExit: true }} ++ slotProps={{ transition: { unmountOnExit: true } }} + /> +``` + ## AccordionSummary Use the [codemod](https://github.com/mui/material-ui/tree/HEAD/packages/mui-codemod#accordion-summary-classes) below to migrate the code as described in the following sections: @@ -146,8 +176,8 @@ The Alert's `componentsProps` prop was deprecated in favor of `slotProps`: ```diff <Alert -- componentsProps={{ closeButton: { testid: 'test-id' } }} -+ slotProps={{ closeButton: { testid: 'test-id' } }} +- componentsProps={{ closeButton: { id: 'close-id' } }} ++ slotProps={{ closeButton: { id: 'close-id' } }} /> ``` @@ -251,6 +281,47 @@ Use the [codemod](https://github.com/mui/material-ui/tree/HEAD/packages/mui-code npx @mui/codemod@latest deprecations/autocomplete-props <path> ``` +### \*Component props + +All of the Autocomplete's slot (`*Component`) props were deprecated in favor of equivalent `slots` and `slotProps` entries: + +```diff + <Autocomplete +- PaperComponent={CustomPaperComponent} +- PopperComponent={CustomPopperComponent} +- ListboxComponent={CustomListboxComponent} ++ slots={{ ++ paper: CustomPaperComponent, ++ popper: CustomPopperComponent, ++ }} ++ slotProps={{ ++ listbox: { ++ component: CustomListboxComponent, ++ }, ++ }} + /> +``` + +:::warning +The listbox slot is a special case because `ListboxComponent` was implemented differently from the other `*Component` props, behaving similar to the `component` and `as` props. +The `slots.listbox` entry exists and you can use it to replace the component entirely, but if you want to keep `ListboxComponent`'s behavior which maintains the original listbox styles, you should use the `slotProps.listbox.component` entry. +::: + +### \*Props props + +All of the Autocomplete's slot props (`*Props`) props were deprecated in favor of equivalent `slotProps` entries: + +```diff + <Autocomplete +- ChipProps={CustomChipProps} +- ListboxProps={CustomListboxProps} ++ slotProps={{ ++ chip: CustomChipProps, ++ listbox: CustomListboxProps, ++ }} + /> +``` + ### componentsProps The Autocomplete's `componentsProps` prop was deprecated in favor of `slotProps`: @@ -271,6 +342,32 @@ The Autocomplete's `componentsProps` prop was deprecated in favor of `slotProps` /> ``` +## Avatar + +Use the [codemod](https://github.com/mui/material-ui/tree/HEAD/packages/mui-codemod#avatar-props) below to migrate the code as described in the following sections: + +```bash +npx @mui/codemod@latest deprecations/avatar-props <path> +``` + +### imgProps + +The Avatar's `imgProps` prop was deprecated in favor of `slotProps.img`: + +```diff + <Avatar +- imgProps={{ +- onError: () => {}, +- onLoad: () => {}, ++ slotProps={{ ++ img: { ++ onError: () => {}, ++ onLoad: () => {}, ++ } + }} + />; +``` + ## AvatarGroup Use the [codemod](https://github.com/mui/material-ui/tree/HEAD/packages/mui-codemod#avatar-group-props) below to migrate the code as described in the following sections: @@ -354,11 +451,21 @@ The Backdrop's `componentsProps` prop was deprecated in favor of `slotProps`: ```diff <Backdrop -- componentsProps={{ root: { testid: 'test-id' } }} -+ slotProps={{ root: { testid: 'test-id' } }} +- componentsProps={{ root: { id: 'root-id' } }} ++ slotProps={{ root: { id: 'root-id' } }} /> ``` +### TransitionComponent + +The Backdrop's `TransitionComponent` prop was deprecated in favor of `slots.transition`: + +```diff + <Slider +- TransitionComponent={CustomTransition} ++ slots={{ transition: CustomTransition }} +``` + ## Badge Use the [codemod](https://github.com/mui/material-ui/tree/HEAD/packages/mui-codemod#badge-props) below to migrate the code as described in the following sections: @@ -384,8 +491,8 @@ The Badge's `componentsProps` prop was deprecated in favor of `slotProps`: ```diff <Badge -- componentsProps={{ root: { testid: 'test-id' } }} -+ slotProps={{ root: { testid: 'test-id' } }} +- componentsProps={{ root: { id: 'root-id' } }} ++ slotProps={{ root: { id: 'root-id' } }} > ``` @@ -1131,8 +1238,8 @@ The ListItem's `componentsProps` prop was deprecated in favor of `slotProps`: ```diff <ListItem -- componentsProps={{ root: { testid: 'test-id' } }} -+ slotProps={{ root: { testid: 'test-id' } }} +- componentsProps={{ root: { id: 'root-id' } }} ++ slotProps={{ root: { id: 'root-id' } }} /> ``` @@ -1140,10 +1247,24 @@ The ListItem's `componentsProps` prop was deprecated in favor of `slotProps`: The ListItem's `ContainerComponent` prop was deprecated in favor of `slots.root` or `component` instead. +```diff + <ListItem +- ContainerComponent={CustomContainer} ++ slots={{ root: CustomContainer }} + /> +``` + ### ContainerProps The ListItem's `ContainerProps` prop was deprecated in favor of `slotProps.root` instead. +```diff + <ListItem +- ContainerProps={{ id: 'container-id' }} ++ slotProps={{ root: { id: 'container-id' } }} + /> +``` + ## ListItemSecondaryAction ### Deprecated component @@ -1249,8 +1370,8 @@ The Modal's `componentsProps` prop was deprecated in favor of `slotProps`: ```diff <Modal -- componentsProps={{ root: { testid: 'root-id' }, backdrop: { testid: 'backdrop-id' } }} -+ slotProps={{ root: { testid: 'root-id' }, backdrop: { testid: 'backdrop-id' } }} +- componentsProps={{ root: { id: 'root-id' }, backdrop: { id: 'backdrop-id' } }} ++ slotProps={{ root: { id: 'root-id' }, backdrop: { id: 'backdrop-id' } }} > ``` @@ -1372,8 +1493,8 @@ The Popper's prop `componentsProps` was deprecated in favor of `slotProps`: ```diff <Popper -- componentsProps={{ root: { testid: 'test-id' } }} -+ slotProps={{ root: { testid: 'test-id' } }} +- componentsProps={{ root: { id: 'root-id' } }} ++ slotProps={{ root: { id: 'root-id' } }} /> ``` @@ -1402,8 +1523,8 @@ The Slider's `componentsProps` prop was deprecated in favor of `slotProps`: ```diff <Slider -- componentsProps={{ track: { testid: 'test-id' } }} -+ slotProps={{ track: { testid: 'test-id' } }} +- componentsProps={{ track: { id: 'track-id' } }} ++ slotProps={{ track: { id: 'track-id' } }} /> ``` @@ -1575,8 +1696,38 @@ The Tooltip's prop `componentsProps` was deprecated in favor of `slotProps`: ```diff <Tooltip -- componentsProps={{ arrow: { testid: 'test-id' } }} -+ slotProps={{ arrow: { testid: 'test-id' } }} +- componentsProps={{ arrow: { id: 'arrow-id' } }} ++ slotProps={{ arrow: { id: 'arrow-id' } }} + /> +``` + +### \*Component props + +All of the Tooltip's slot (`*Component`) props were deprecated in favor of equivalent `slots` entries: + +```diff + <Tooltip +- PopperComponent={CustomPopperComponent} +- TransitionComponent={CustomTransitionComponent} ++ slots={{ ++ popper: CustomPopperComponent, ++ transition: CustomTransitionComponent, ++ }} + /> +``` + +### \*Props props + +All of the Tooltip's slot props (`*Props`) props were deprecated in favor of equivalent `slotProps` entries: + +```diff + <Tooltip +- PopperProps={CustomPopperProps} +- TransitionProps={CustomTransitionProps} ++ slotProps={{ ++ popper: CustomPopperProps, ++ transition: CustomTransitionProps, ++ }} /> ``` @@ -1625,6 +1776,28 @@ The StepLabel's `componentsProps` prop was deprecated in favor of `slotProps`: /> ``` +### StepIconComponent + +The StepLabel's `StepIconComponent` prop was deprecated in favor of `slots.stepIcon`: + +```diff + <StepLabel +- StepIconComponent={StepIconComponent} ++ slots={{ stepIcon: StepIconComponent }} + /> +``` + +### StepIconProps + +The StepLabel's `StepIconProps` prop was deprecated in favor of `slotProps.stepIcon`: + +```diff + <StepLabel +- StepIconProps={StepIconProps} ++ slotProps={{ stepIcon: StepIconProps }} + /> +``` + ## StepConnector Use the [codemod](https://github.com/mui/material-ui/tree/HEAD/packages/mui-codemod#step-connector-classes) below to migrate the code as described in the following sections: @@ -1664,3 +1837,32 @@ Here's how to migrate: }, }, ``` + +## SpeedDial + +Use the [codemod](https://github.com/mui/material-ui/tree/HEAD/packages/mui-codemod#speed-dial-props) below to migrate the code as described in the following sections: + +```bash +npx @mui/codemod@next deprecations/speed-dial-props <path> +``` + +### TransitionComponent + +The SpeedDial's `TransitionComponent` prop was deprecated in favor of `slots.transition`: + +```diff + <SpeedDial +- TransitionComponent={CustomTransition} ++ slots={{ transition: CustomTransition }} +``` + +### TransitionProps + +The SpeedDial's `TransitionProps` prop was deprecated in favor of `slotProps.transition`: + +```diff + <SpeedDial +- TransitionProps={{ unmountOnExit: true }} ++ slotProps={{ transition: { unmountOnExit: true } }} + /> +``` diff --git a/docs/data/material/migration/upgrade-to-v6/migrating-to-pigment-css.md b/docs/data/material/migration/upgrade-to-v6/migrating-to-pigment-css.md index 4783bfd4f7a8fa..0b4789c482af56 100644 --- a/docs/data/material/migration/upgrade-to-v6/migrating-to-pigment-css.md +++ b/docs/data/material/migration/upgrade-to-v6/migrating-to-pigment-css.md @@ -31,15 +31,15 @@ First, install the Material UI wrapper package for Pigment CSS: <codeblock storageKey="package-manager"> ```bash npm -npm install @mui/material-pigment-css +npm install @mui/material-pigment-css @pigment-css/react ``` ```bash pnpm -pnpm add @mui/material-pigment-css +pnpm add @mui/material-pigment-css @pigment-css/react ``` ```bash yarn -yarn add @mui/material-pigment-css +yarn add @mui/material-pigment-css @pigment-css/react ``` </codeblock> diff --git a/docs/data/material/pages.ts b/docs/data/material/pages.ts index d4758f3e8a7600..bcbfcebc05f48f 100644 --- a/docs/data/material/pages.ts +++ b/docs/data/material/pages.ts @@ -117,14 +117,22 @@ const pages: MuiPage[] = [ pathname: '/material-ui/components/utils', subheader: 'utils', children: [ - { pathname: '/material-ui/react-click-away-listener', title: 'Click-Away Listener' }, + { + pathname: '/material-ui/react-click-away-listener', + title: 'Click-Away Listener', + deprecated: true, + }, { pathname: '/material-ui/react-css-baseline', title: 'CSS Baseline' }, { pathname: '/material-ui/react-modal' }, - { pathname: '/material-ui/react-no-ssr', title: 'No SSR' }, + { pathname: '/material-ui/react-no-ssr', title: 'No SSR', deprecated: true }, { pathname: '/material-ui/react-popover' }, { pathname: '/material-ui/react-popper' }, - { pathname: '/material-ui/react-portal' }, - { pathname: '/material-ui/react-textarea-autosize', title: 'Textarea Autosize' }, + { pathname: '/material-ui/react-portal', deprecated: true }, + { + pathname: '/material-ui/react-textarea-autosize', + title: 'Textarea Autosize', + deprecated: true, + }, { pathname: '/material-ui/transitions' }, { pathname: '/material-ui/react-use-media-query', title: 'useMediaQuery' }, ], diff --git a/docs/data/system/getting-started/support/support.md b/docs/data/system/getting-started/support/support.md index 0706156f5d34ab..c3267dfd68a8d8 100644 --- a/docs/data/system/getting-started/support/support.md +++ b/docs/data/system/getting-started/support/support.md @@ -33,10 +33,10 @@ You can browse the documentation, find an example close to your use case, and th <a href="/system/borders/#additive"> <span class="only-light-mode"> -<img src="/static/docs-infra/forking-an-example.png" alt="Forking an example" loading="lazy" width="1628" height="700" style="display: block; max-width: 774px;"> + <img src="/static/docs-infra/forking-an-example.png" alt="Forking an example" loading="lazy" width="1628" height="700" style="display: block; max-width: 774px;"> </span> <span class="only-dark-mode"> -<img src="/static/docs-infra/forking-an-example-dark.png" alt="Forking an example" loading="lazy" width="1628" height="700" style="display: block; max-width: 774px;"> + <img src="/static/docs-infra/forking-an-example-dark.png" alt="Forking an example" loading="lazy" width="1628" height="700" style="display: block; max-width: 774px;"> </span> </a> diff --git a/docs/mui-vale.zip b/docs/mui-vale.zip index 0429255690a7b7..b8c231a5ae4421 100644 Binary files a/docs/mui-vale.zip and b/docs/mui-vale.zip differ diff --git a/docs/mui-vale/styles/MUI/CorrectRererenceCased.yml b/docs/mui-vale/styles/MUI/CorrectRererenceCased.yml index 85853ab5146d39..b963be6b4e5260 100644 --- a/docs/mui-vale/styles/MUI/CorrectRererenceCased.yml +++ b/docs/mui-vale/styles/MUI/CorrectRererenceCased.yml @@ -8,6 +8,7 @@ ignorecase: false swap: eg: e.g. eg\.: e.g. - 'e\.g ': 'e.g.' - 'ie\.': i.e. - 'i\.e ': 'i.e.' + e\.g: e.g. + ie: i.e. + ie\.: i.e. + i\.e: i.e. diff --git a/docs/notifications.json b/docs/notifications.json index 01ee0a5b7ea6da..ee101b59627039 100644 --- a/docs/notifications.json +++ b/docs/notifications.json @@ -13,5 +13,10 @@ "id": 83, "title": "Material UI v6 is out now", "text": "This major release includes CSS variables support, experimental opt-in CSS extraction, and many more improvements. Check out the <a style=\"color: inherit;\" data-ga-event-category=\"Announcement\" data-ga-event-action=\"notification\" data-ga-event-label=\"material-ui-v6\" href=\"https://mui.com/blog/material-ui-v6-is-out/\">announcement blog post</a>." + }, + { + "id": 85, + "title": "MUI X v8 alpha", + "text": "Check our plans for the upcoming stable in the <a style=\"color: inherit;\" data-ga-event-category=\"Announcement\" data-ga-event-action=\"notification\" data-ga-event-label=\"mui-x-v8-alpha-zero\" href=\"https://mui.com/blog/mui-x-v8-alpha-zero/\">announcement blog post</a>." } ] diff --git a/docs/package.json b/docs/package.json index d7e31250766e9a..62a6bc68ad8ee4 100644 --- a/docs/package.json +++ b/docs/package.json @@ -22,13 +22,13 @@ "@babel/core": "^7.26.0", "@babel/runtime": "^7.26.0", "@babel/runtime-corejs2": "^7.26.0", - "@docsearch/react": "^3.7.0", - "@emotion/cache": "^11.13.1", - "@emotion/react": "^11.13.3", + "@docsearch/react": "^3.8.0", + "@emotion/cache": "^11.13.5", + "@emotion/react": "^11.13.5", "@emotion/server": "^11.11.0", - "@emotion/styled": "^11.13.0", - "@fortawesome/fontawesome-svg-core": "^6.6.0", - "@fortawesome/free-solid-svg-icons": "^6.6.0", + "@emotion/styled": "^11.13.5", + "@fortawesome/fontawesome-svg-core": "^6.7.1", + "@fortawesome/free-solid-svg-icons": "^6.7.1", "@fortawesome/react-fontawesome": "^0.2.2", "@mui/base": "workspace:*", "@mui/docs": "workspace:^", @@ -43,18 +43,18 @@ "@mui/system": "workspace:^", "@mui/types": "workspace:^", "@mui/utils": "workspace:^", - "@mui/x-charts": "7.22.2", - "@mui/x-data-grid": "7.22.2", - "@mui/x-data-grid-generator": "7.22.2", - "@mui/x-data-grid-premium": "7.22.2", - "@mui/x-data-grid-pro": "7.22.2", - "@mui/x-date-pickers": "7.22.2", - "@mui/x-date-pickers-pro": "7.22.2", - "@mui/x-license": "7.21.0", - "@mui/x-tree-view": "7.22.1", + "@mui/x-charts": "7.23.0", + "@mui/x-data-grid": "7.23.0", + "@mui/x-data-grid-generator": "7.23.0", + "@mui/x-data-grid-premium": "7.23.0", + "@mui/x-data-grid-pro": "7.23.0", + "@mui/x-date-pickers": "7.23.0", + "@mui/x-date-pickers-pro": "7.23.0", + "@mui/x-license": "7.23.0", + "@mui/x-tree-view": "7.23.0", "@popperjs/core": "^2.11.8", "@react-spring/web": "^9.7.5", - "@toolpad/core": "^0.9.0", + "@toolpad/core": "^0.10.0", "autoprefixer": "^10.4.20", "autosuggest-highlight": "^3.3.4", "babel-plugin-module-resolver": "^5.0.2", @@ -80,12 +80,12 @@ "jss-rtl": "^0.3.0", "lodash": "^4.17.21", "lz-string": "^1.5.0", - "markdown-to-jsx": "^7.5.0", + "markdown-to-jsx": "^7.7.0", "material-ui-popup-state": "^5.3.1", - "next": "^14.2.17", + "next": "^14.2.18", "notistack": "3.0.1", "nprogress": "^0.2.0", - "postcss": "^8.4.47", + "postcss": "^8.4.49", "postcss-import": "^16.1.0", "prop-types": "^15.8.1", "react": "^18.3.1", @@ -96,13 +96,13 @@ "react-intersection-observer": "^9.13.1", "react-is": "^18.3.1", "react-number-format": "^5.4.2", - "react-router-dom": "^6.28.0", + "react-router": "^7.0.1", "react-runner": "^1.0.5", "react-simple-code-editor": "^0.14.1", "react-spring": "^9.7.4", "react-swipeable-views": "^0.14.0", "react-transition-group": "^4.4.5", - "react-virtuoso": "^4.12.0", + "react-virtuoso": "^4.12.2", "react-window": "^1.8.10", "rimraf": "^6.0.1", "styled-components": "^6.1.13", @@ -124,7 +124,7 @@ "@types/css-mediaquery": "^0.1.4", "@types/gtag.js": "^0.0.20", "@types/json2mq": "^0.2.2", - "@types/node": "^20.17.6", + "@types/node": "^20.17.9", "@types/prop-types": "^15.7.13", "@types/react": "^18.3.12", "@types/react-dom": "^18.3.1", @@ -135,10 +135,10 @@ "chai": "^4.5.0", "cross-fetch": "^4.0.0", "gm": "^1.25.0", - "marked": "^14.1.4", + "marked": "^15.0.3", "playwright": "^1.48.2", - "prettier": "^3.3.3", - "tailwindcss": "^3.4.14", + "prettier": "^3.4.1", + "tailwindcss": "^3.4.15", "yargs": "^17.7.2" } } diff --git a/docs/pages/blog/mui-x-v8-alpha-zero.js b/docs/pages/blog/mui-x-v8-alpha-zero.js new file mode 100644 index 00000000000000..18973d9dfc7b32 --- /dev/null +++ b/docs/pages/blog/mui-x-v8-alpha-zero.js @@ -0,0 +1,7 @@ +import * as React from 'react'; +import TopLayoutBlog from 'docs/src/modules/components/TopLayoutBlog'; +import { docs } from './mui-x-v8-alpha-zero.md?muiMarkdown'; + +export default function Page() { + return <TopLayoutBlog docs={docs} />; +} diff --git a/docs/pages/blog/mui-x-v8-alpha-zero.md b/docs/pages/blog/mui-x-v8-alpha-zero.md new file mode 100644 index 00000000000000..74d875d215be2e --- /dev/null +++ b/docs/pages/blog/mui-x-v8-alpha-zero.md @@ -0,0 +1,99 @@ +--- +title: The road to MUI X v8 +description: Explore the planned features and our roadmap to the next major version. +date: 2024-11-20T00:00:00.000Z +authors: ['josefreitas'] +tags: ['MUI X', 'Product'] +--- + +We're kicking off the development of [MUI X v8](https://github.com/mui/mui-x/releases/tag/v8.0.0-alpha.0). +Following our yearly release cycle, the target for the first stable release is March 2025. +This major update includes new versions of the Data Grid, Charts, Tree View, and the Date and Time Pickers. +We're excited to share our roadmap with you and invite you to join us on this journey! + +:::warning +Only MUI X is getting a new version—Material UI will remain in v6 for now. +Since only MUI X is getting a new version, you can rest assured that all MUI X v8 components will be fully compatible with Material UI v5 and v6. +:::: + +## What's the plan to get to the next major release? + +Before the official release of MUI X v8, we'll go through a few months of pre-releases. +During this period, we'll continue with our usual weekly release process and follow [semantic versioning](https://semver.org/). +While we'll still release bug fixes for v7, these will become less frequent as we progress toward a stable v8 release. +Our primary focus will be on delivering the new features and implementing the necessary breaking changes in the v8 pre-release packages. + +In the alpha phase, we'll introduce all planned breaking changes for this major version. Some APIs may be unstable—not in terms of functionality, but there may be adjustments or renaming of parameters. This phase is expected to last about two to three months. + +Following the alpha phase, the beta phase will focus on stabilizing the APIs, fixing bugs, and refining the overall experience. This phase is anticipated to take about one month. + +Finally, we'll release the first `v8.0.0` stable by March 2025, and we'll continue improving the components and adding features, but without making any new breaking changes until the next major version. + +## What happens to v7? + +During v8 pre-releases, v7 will continue to be the official current major, and it will remain supported during this time. +However, we will only release new v7 versions as needed to patch bugs or add community contributions. + +All new features and enhancements will go to v8, and after its first stable release, v7 will officially transition to [long-term support](https://mui.com/x/introduction/support/#long-term-support-lts) status. + +## Where's the v8 documentation? + +As mentioned above, v7 is still the official version, so by default, the documentation shows v7 features and API. +The next version's documentation is in the `next` subdomain. + +- [https://next.mui.com/x/introduction/](https://next.mui.com/x/introduction/) + +## What's new in v8 + +The following is a list of enhancements in the pipeline for v8. +It contains the highlights we aim to include in the first versions: + +### Data Grid + +- [Drag and drop with touch support](https://github.com/mui/mui-x/issues/15385) +- [New Toolbar](https://github.com/mui/mui-x/issues/11584) +- [Row spanning](https://mui.com/x/react-data-grid/row-spanning/) (Now stable) +- [Pivoting](https://github.com/mui/mui-x/issues/214) [<span class="plan-premium"></span>](/x/introduction/licensing/#premium-plan 'Premium plan') + +### Date and Time Pickers + +- [Improved visual customization](https://github.com/mui/mui-x/issues/14753) +- [Accessible DOM field by default](https://mui.com/x/react-date-pickers/fields/#accessible-dom-structure) +- [Time Range Picker](https://github.com/mui/mui-x/issues/4460) [<span class="plan-pro"></span>](/x/introduction/licensing/#pro-plan 'Pro plan') + +### Tree View + +- [Parent/chidren selection propagation](https://github.com/mui/mui-x/issues/12883) +- [Lazy loading](https://github.com/mui/mui-x/issues/9687)[<span class="plan-pro"></span>](/x/introduction/licensing/#pro-plan 'Pro plan') +- [Virtualization](https://github.com/mui/mui-x/issues/9685)[<span class="plan-pro"></span>](/x/introduction/licensing/#pro-plan 'Pro plan') + +### Charts + +- Improved design +- [Radar Chart](https://github.com/mui/mui-x/issues/7925) +- [Improved data zoom](https://github.com/mui/mui-x/issues/15383)[<span class="plan-pro"></span>](/x/introduction/licensing/#pro-plan 'Pro plan') +- [Funnel Chart](https://github.com/mui/mui-x/issues/7929)[<span class="plan-pro"></span>](/x/introduction/licensing/#pro-plan 'Pro plan') + +:::info +You can check our [roadmap](https://github.com/orgs/mui/projects/35) for the full live list. +::: + +## How to migrate + +As usual, we've prepared a migration guide for each component, and we'll continuously update them as we make any breaking changes during the pre-releases. +They list every breaking change you may need to update to migrate your codebase. + +- [Data Grid](https://next.mui.com/x/migration/migration-data-grid-v7/) +- [Date and Time Pickers](https://next.mui.com/x/migration/migration-pickers-v7/) +- [Charts](https://next.mui.com/x/migration/migration-charts-v7/) +- [Tree View](https://next.mui.com/x/migration/migration-tree-view-v7/) + +We strongly encourage you to try the new version—it builds on the solid foundation we established with v7, bringing even more improvements! + +## How to get involved + +We'd love to hear about your expectations and pain points! Please consider [connecting with us](https://forms.gle/vsBv6CLPz9h57xg8A) for a user interview. +You'll get an insider's perspective on the development, and you'll be able to help us iterate early on the new features. + +We're also happy to receive feedback on new features and bug reports in our [GitHub repository](https://github.com/mui/mui-x/issues/new/choose). +You can follow every step of the v8 development process through our [changelog](https://github.com/mui/mui-x/releases). diff --git a/docs/pages/experiments/base/components-gallery.tsx b/docs/pages/experiments/base/components-gallery.tsx index 40c5064529e999..f67dccde0f06c9 100644 --- a/docs/pages/experiments/base/components-gallery.tsx +++ b/docs/pages/experiments/base/components-gallery.tsx @@ -66,7 +66,7 @@ const hslPickerLinearGradient = [...new Array(36)] const ColorPickerSlider = styled(Slider)( ({ theme }) => ` width: 100%; - background: -webkit-linear-gradient(left, ${hslPickerLinearGradient}); + background: linear-gradient(to left, ${hslPickerLinearGradient}); margin: 16px 0; height: 8px; border-radius: 8px; @@ -94,8 +94,8 @@ const ColorPickerSlider = styled(Slider)( theme.palette.mode === 'dark' ? 'rgba(255,255,255,0.2)' : 'rgba(0,0,0,0.2)' }; transform: scale(1.2); - }, - }, + } + } `, ); diff --git a/docs/pages/experiments/base/menu.tsx b/docs/pages/experiments/base/menu.tsx index 62f667cb3f8bdf..03c692bf1c73ad 100644 --- a/docs/pages/experiments/base/menu.tsx +++ b/docs/pages/experiments/base/menu.tsx @@ -41,7 +41,7 @@ const StyledListbox = styled('ul')( background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'}; border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]}; color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]}; - box-shadow: 0 1px 3px rgba(31,35,40,0.12), 0 8px 24px rgba(66,74,83,0.12); + box-shadow: 0 1px 3px rgba(31 35 40 0.12), 0 8px 24px rgba(66 74 83 0.12); z-index: 1; `, ); @@ -54,6 +54,7 @@ const StyledMenuItem = styled(MenuItem)( border-radius: 8px; cursor: default; user-select: none; + &:last-of-type { border-bottom: none; } @@ -87,10 +88,12 @@ const StyledMenuButton = styled(MenuButton)( transition-property: all; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 120ms; + &:hover { background: ${theme.palette.mode === 'dark' ? grey[800] : grey[50]}; border-color: ${theme.palette.mode === 'dark' ? grey[600] : grey[300]}; } + &:focus { border-color: ${blue[400]}; outline: 3px solid ${theme.palette.mode === 'dark' ? blue[500] : blue[200]}; diff --git a/docs/pages/experiments/base/tabs.tsx b/docs/pages/experiments/base/tabs.tsx index 63877376e07878..ead697a693c6cd 100644 --- a/docs/pages/experiments/base/tabs.tsx +++ b/docs/pages/experiments/base/tabs.tsx @@ -87,9 +87,8 @@ const StyledTabsList = styled(TabsList)( margin-bottom: 16px; display: flex; align-items: center; - justify-content: center; - align-content: space-between; - box-shadow: 0px 4px 30px ${theme.palette.mode === 'dark' ? grey[900] : grey[200]}; + place-content: space-between center; + box-shadow: 0 4px 30px ${theme.palette.mode === 'dark' ? grey[900] : grey[200]}; `, ); diff --git a/docs/pages/joy-ui/api/stack.json b/docs/pages/joy-ui/api/stack.json index 008afff7737bbc..8826d1eebc8a85 100644 --- a/docs/pages/joy-ui/api/stack.json +++ b/docs/pages/joy-ui/api/stack.json @@ -6,14 +6,16 @@ "type": { "name": "union", "description": "'column-reverse'<br>| 'column'<br>| 'row-reverse'<br>| 'row'<br>| Array<'column-reverse'<br>| 'column'<br>| 'row-reverse'<br>| 'row'><br>| object" - } + }, + "default": "'column'" }, "divider": { "type": { "name": "node" } }, "spacing": { "type": { "name": "union", "description": "Array<number<br>| string><br>| number<br>| object<br>| string" - } + }, + "default": "0" }, "sx": { "type": { @@ -22,7 +24,7 @@ }, "additionalInfo": { "sx": true } }, - "useFlexGap": { "type": { "name": "bool" } } + "useFlexGap": { "type": { "name": "bool" }, "default": "false" } }, "name": "Stack", "imports": ["import Stack from '@mui/joy/Stack';", "import { Stack } from '@mui/joy';"], diff --git a/docs/pages/material-ui/api/accordion.json b/docs/pages/material-ui/api/accordion.json index c1025809a0aa7b..2120b8585e77e7 100644 --- a/docs/pages/material-ui/api/accordion.json +++ b/docs/pages/material-ui/api/accordion.json @@ -35,8 +35,16 @@ }, "additionalInfo": { "sx": true } }, - "TransitionComponent": { "type": { "name": "elementType" } }, - "TransitionProps": { "type": { "name": "object" } } + "TransitionComponent": { + "type": { "name": "elementType" }, + "deprecated": true, + "deprecationInfo": "Use <code>slots.transition</code> instead. This prop will be removed in v7. See <a href=\"/material-ui/migration/migrating-from-deprecated-apis/\">Migrating from deprecated APIs</a> for more details." + }, + "TransitionProps": { + "type": { "name": "object" }, + "deprecated": true, + "deprecationInfo": "Use <code>slotProps.transition</code> instead. This prop will be removed in v7. See <a href=\"/material-ui/migration/migrating-from-deprecated-apis/\">Migrating from deprecated APIs</a> for more details." + } }, "name": "Accordion", "imports": [ diff --git a/docs/pages/material-ui/api/autocomplete.json b/docs/pages/material-ui/api/autocomplete.json index 0eebdc3261a28d..b61f4c3c93fdaa 100644 --- a/docs/pages/material-ui/api/autocomplete.json +++ b/docs/pages/material-ui/api/autocomplete.json @@ -16,7 +16,11 @@ }, "default": "false" }, - "ChipProps": { "type": { "name": "object" } }, + "ChipProps": { + "type": { "name": "object" }, + "deprecated": true, + "deprecationInfo": "Use <code>slotProps.chip</code> instead. This prop will be removed in v7. See <a href=\"/material-ui/migration/migrating-from-deprecated-apis/\">Migrating from deprecated APIs</a> for more details." + }, "classes": { "type": { "name": "object" }, "additionalInfo": { "cssApi": true } }, "clearIcon": { "type": { "name": "node" }, "default": "<ClearIcon fontSize=\"small\" />" }, "clearOnBlur": { "type": { "name": "bool" }, "default": "!props.freeSolo" }, @@ -93,8 +97,17 @@ } }, "limitTags": { "type": { "name": "custom", "description": "integer" }, "default": "-1" }, - "ListboxComponent": { "type": { "name": "elementType" }, "default": "'ul'" }, - "ListboxProps": { "type": { "name": "object" } }, + "ListboxComponent": { + "type": { "name": "elementType" }, + "default": "'ul'", + "deprecated": true, + "deprecationInfo": "Use <code>slotProps.listbox.component</code> instead. This prop will be removed in v7. See <a href=\"/material-ui/migration/migrating-from-deprecated-apis/\">Migrating from deprecated APIs</a> for more details." + }, + "ListboxProps": { + "type": { "name": "object" }, + "deprecated": true, + "deprecationInfo": "Use <code>slotProps.listbox</code> instead. This prop will be removed in v7. See <a href=\"/material-ui/migration/migrating-from-deprecated-apis/\">Migrating from deprecated APIs</a> for more details." + }, "loading": { "type": { "name": "bool" }, "default": "false" }, "loadingText": { "type": { "name": "node" }, "default": "'Loading…'" }, "multiple": { "type": { "name": "bool" }, "default": "false" }, @@ -137,8 +150,18 @@ "open": { "type": { "name": "bool" } }, "openOnFocus": { "type": { "name": "bool" }, "default": "false" }, "openText": { "type": { "name": "string" }, "default": "'Open'" }, - "PaperComponent": { "type": { "name": "elementType" }, "default": "Paper" }, - "PopperComponent": { "type": { "name": "elementType" }, "default": "Popper" }, + "PaperComponent": { + "type": { "name": "elementType" }, + "default": "Paper", + "deprecated": true, + "deprecationInfo": "Use <code>slots.paper</code> instead. This prop will be removed in v7. See <a href=\"/material-ui/migration/migrating-from-deprecated-apis/\">Migrating from deprecated APIs</a> for more details." + }, + "PopperComponent": { + "type": { "name": "elementType" }, + "default": "Popper", + "deprecated": true, + "deprecationInfo": "Use <code>slots.popper</code> instead. This prop will be removed in v7. See <a href=\"/material-ui/migration/migrating-from-deprecated-apis/\">Migrating from deprecated APIs</a> for more details." + }, "popupIcon": { "type": { "name": "node" }, "default": "<ArrowDropDownIcon />" }, "readOnly": { "type": { "name": "bool" }, "default": "false" }, "renderGroup": { diff --git a/docs/pages/material-ui/api/avatar.json b/docs/pages/material-ui/api/avatar.json index c7049f61c281f4..ca3e4f30330a72 100644 --- a/docs/pages/material-ui/api/avatar.json +++ b/docs/pages/material-ui/api/avatar.json @@ -4,7 +4,11 @@ "children": { "type": { "name": "node" } }, "classes": { "type": { "name": "object" }, "additionalInfo": { "cssApi": true } }, "component": { "type": { "name": "elementType" } }, - "imgProps": { "type": { "name": "object" } }, + "imgProps": { + "type": { "name": "object" }, + "deprecated": true, + "deprecationInfo": "Use <code>slotProps.img</code> instead. This prop will be removed in v7. See <a href=\"/material-ui/migration/migrating-from-deprecated-apis/\">Migrating from deprecated APIs</a> for more details." + }, "sizes": { "type": { "name": "string" } }, "slotProps": { "type": { "name": "shape", "description": "{ img?: func<br>| object }" }, diff --git a/docs/pages/material-ui/api/backdrop.json b/docs/pages/material-ui/api/backdrop.json index 591d41f1a66d8d..abf7ced24f3346 100644 --- a/docs/pages/material-ui/api/backdrop.json +++ b/docs/pages/material-ui/api/backdrop.json @@ -38,7 +38,12 @@ }, "additionalInfo": { "sx": true } }, - "TransitionComponent": { "type": { "name": "elementType" }, "default": "Fade" }, + "TransitionComponent": { + "type": { "name": "elementType" }, + "default": "Fade", + "deprecated": true, + "deprecationInfo": "Use <code>slots.transition</code> instead. This prop will be removed in v7. See <a href=\"/material-ui/migration/migrating-from-deprecated-apis/\">Migrating from deprecated APIs</a> for more details." + }, "transitionDuration": { "type": { "name": "union", diff --git a/docs/pages/material-ui/api/container.json b/docs/pages/material-ui/api/container.json index 29b78f807d6157..0f60f58e920597 100644 --- a/docs/pages/material-ui/api/container.json +++ b/docs/pages/material-ui/api/container.json @@ -2,13 +2,14 @@ "props": { "classes": { "type": { "name": "object" }, "additionalInfo": { "cssApi": true } }, "component": { "type": { "name": "elementType" } }, - "disableGutters": { "type": { "name": "bool" } }, - "fixed": { "type": { "name": "bool" } }, + "disableGutters": { "type": { "name": "bool" }, "default": "false" }, + "fixed": { "type": { "name": "bool" }, "default": "false" }, "maxWidth": { "type": { "name": "union", "description": "'xs'<br>| 'sm'<br>| 'md'<br>| 'lg'<br>| 'xl'<br>| false<br>| string" - } + }, + "default": "'lg'" }, "sx": { "type": { diff --git a/docs/pages/material-ui/api/grid-2.json b/docs/pages/material-ui/api/grid-2.json index 08188af737d19a..7f74fa6b051eef 100644 --- a/docs/pages/material-ui/api/grid-2.json +++ b/docs/pages/material-ui/api/grid-2.json @@ -5,7 +5,8 @@ "type": { "name": "union", "description": "Array<number><br>| number<br>| object" - } + }, + "default": "12" }, "columnSpacing": { "type": { @@ -13,12 +14,13 @@ "description": "Array<number<br>| string><br>| number<br>| object<br>| string" } }, - "container": { "type": { "name": "bool" } }, + "container": { "type": { "name": "bool" }, "default": "false" }, "direction": { "type": { "name": "union", "description": "'column-reverse'<br>| 'column'<br>| 'row-reverse'<br>| 'row'<br>| Array<'column-reverse'<br>| 'column'<br>| 'row-reverse'<br>| 'row'><br>| object" - } + }, + "default": "'row'" }, "offset": { "type": { @@ -42,18 +44,33 @@ "type": { "name": "union", "description": "Array<number<br>| string><br>| number<br>| object<br>| string" - } + }, + "default": "0" }, "wrap": { "type": { "name": "enum", "description": "'nowrap'<br>| 'wrap-reverse'<br>| 'wrap'" - } + }, + "default": "'wrap'" } }, "name": "Grid2", "imports": ["import Grid2 from '@mui/material/Grid2';", "import { Grid2 } from '@mui/material';"], - "classes": [], + "classes": [ + { + "key": "container", + "className": "MuiGrid2-container", + "description": "Styles applied to the root element if `container={true}`.", + "isGlobal": false + }, + { + "key": "root", + "className": "MuiGrid2-root", + "description": "Styles applied to the root element.", + "isGlobal": false + } + ], "spread": true, "themeDefaultProps": true, "muiName": "MuiGrid2", diff --git a/docs/pages/material-ui/api/speed-dial.json b/docs/pages/material-ui/api/speed-dial.json index de5ec1866b4d4d..de7696ebdd9125 100644 --- a/docs/pages/material-ui/api/speed-dial.json +++ b/docs/pages/material-ui/api/speed-dial.json @@ -44,7 +44,12 @@ }, "additionalInfo": { "sx": true } }, - "TransitionComponent": { "type": { "name": "elementType" }, "default": "Zoom" }, + "TransitionComponent": { + "type": { "name": "elementType" }, + "default": "Zoom\n* @deprecated Use `slots.transition` instead. This prop will be removed in v7. [How to migrate](/material-ui/migration/migrating-from-deprecated-apis/)", + "deprecated": true, + "deprecationInfo": "Use <code>slots.transition</code> instead. This prop will be removed in v7. <a href=\"/material-ui/migration/migrating-from-deprecated-apis/\">How to migrate</a>" + }, "transitionDuration": { "type": { "name": "union", @@ -52,7 +57,11 @@ }, "default": "{\n enter: theme.transitions.duration.enteringScreen,\n exit: theme.transitions.duration.leavingScreen,\n}" }, - "TransitionProps": { "type": { "name": "object" } } + "TransitionProps": { + "type": { "name": "object" }, + "deprecated": true, + "deprecationInfo": "Use <code>slotProps.transition</code> instead. This prop will be removed in v7. <a href=\"/material-ui/migration/migrating-from-deprecated-apis/\">How to migrate</a>" + } }, "name": "SpeedDial", "imports": [ diff --git a/docs/pages/material-ui/api/stack.json b/docs/pages/material-ui/api/stack.json index ae424d7b57eea6..65e1dc1c8a28d2 100644 --- a/docs/pages/material-ui/api/stack.json +++ b/docs/pages/material-ui/api/stack.json @@ -6,14 +6,16 @@ "type": { "name": "union", "description": "'column-reverse'<br>| 'column'<br>| 'row-reverse'<br>| 'row'<br>| Array<'column-reverse'<br>| 'column'<br>| 'row-reverse'<br>| 'row'><br>| object" - } + }, + "default": "'column'" }, "divider": { "type": { "name": "node" } }, "spacing": { "type": { "name": "union", "description": "Array<number<br>| string><br>| number<br>| object<br>| string" - } + }, + "default": "0" }, "sx": { "type": { @@ -22,7 +24,7 @@ }, "additionalInfo": { "sx": true } }, - "useFlexGap": { "type": { "name": "bool" } } + "useFlexGap": { "type": { "name": "bool" }, "default": "false" } }, "name": "Stack", "imports": ["import Stack from '@mui/material/Stack';", "import { Stack } from '@mui/material';"], diff --git a/docs/pages/material-ui/api/step-icon.json b/docs/pages/material-ui/api/step-icon.json index 82d908380447bb..16d31b1020e608 100644 --- a/docs/pages/material-ui/api/step-icon.json +++ b/docs/pages/material-ui/api/step-icon.json @@ -55,7 +55,7 @@ "muiName": "MuiStepIcon", "forwardsRefTo": "SVGSVGElement", "filename": "/packages/mui-material/src/StepIcon/StepIcon.js", - "inheritance": null, + "inheritance": { "component": "SvgIcon", "pathname": "/material-ui/api/svg-icon/" }, "demos": "<ul><li><a href=\"/material-ui/react-stepper/\">Stepper</a></li></ul>", "cssComponent": false } diff --git a/docs/pages/material-ui/api/step-label.json b/docs/pages/material-ui/api/step-label.json index 50cf61702588a3..8c51868b91236d 100644 --- a/docs/pages/material-ui/api/step-label.json +++ b/docs/pages/material-ui/api/step-label.json @@ -22,8 +22,16 @@ "type": { "name": "shape", "description": "{ label?: elementType, stepIcon?: elementType }" }, "default": "{}" }, - "StepIconComponent": { "type": { "name": "elementType" } }, - "StepIconProps": { "type": { "name": "object" } }, + "StepIconComponent": { + "type": { "name": "elementType" }, + "deprecated": true, + "deprecationInfo": "Use <code>slots.stepIcon</code> instead. This prop will be removed in v7. See <a href=\"/material-ui/migration/migrating-from-deprecated-apis/\">Migrating from deprecated APIs</a> for more details." + }, + "StepIconProps": { + "type": { "name": "object" }, + "deprecated": true, + "deprecationInfo": "Use <code>slotProps.stepIcon</code> instead. This prop will be removed in v7. See <a href=\"/material-ui/migration/migrating-from-deprecated-apis/\">Migrating from deprecated APIs</a> for more details." + }, "sx": { "type": { "name": "union", diff --git a/docs/pages/material-ui/api/tooltip.json b/docs/pages/material-ui/api/tooltip.json index 9433e5b4a16481..e984629c6e788c 100644 --- a/docs/pages/material-ui/api/tooltip.json +++ b/docs/pages/material-ui/api/tooltip.json @@ -10,7 +10,7 @@ }, "default": "{}", "deprecated": true, - "deprecationInfo": "use the <code>slots</code> prop instead. This prop will be removed in v7. <a href=\"https://mui.com/material-ui/migration/migrating-from-deprecated-apis/\">How to migrate</a>." + "deprecationInfo": "use the <code>slots</code> prop instead. This prop will be removed in v7. See <a href=\"https://mui.com/material-ui/migration/migrating-from-deprecated-apis/\">Migrating from deprecated APIs</a> for more details." }, "componentsProps": { "type": { @@ -19,7 +19,7 @@ }, "default": "{}", "deprecated": true, - "deprecationInfo": "use the <code>slotProps</code> prop instead. This prop will be removed in v7. <a href=\"https://mui.com/material-ui/migration/migrating-from-deprecated-apis/\">How to migrate</a>." + "deprecationInfo": "use the <code>slotProps</code> prop instead. This prop will be removed in v7. See <a href=\"https://mui.com/material-ui/migration/migrating-from-deprecated-apis/\">Migrating from deprecated APIs</a> for more details." }, "describeChild": { "type": { "name": "bool" }, "default": "false" }, "disableFocusListener": { "type": { "name": "bool" }, "default": "false" }, @@ -55,12 +55,21 @@ }, "default": "'bottom'" }, - "PopperComponent": { "type": { "name": "elementType" }, "default": "Popper" }, - "PopperProps": { "type": { "name": "object" }, "default": "{}" }, + "PopperComponent": { + "type": { "name": "elementType" }, + "deprecated": true, + "deprecationInfo": "use the <code>slots.popper</code> prop instead. This prop will be removed in v7. See <a href=\"https://mui.com/material-ui/migration/migrating-from-deprecated-apis/\">Migrating from deprecated APIs</a> for more details." + }, + "PopperProps": { + "type": { "name": "object" }, + "default": "{}", + "deprecated": true, + "deprecationInfo": "use the <code>slotProps.popper</code> prop instead. This prop will be removed in v7. See <a href=\"https://mui.com/material-ui/migration/migrating-from-deprecated-apis/\">Migrating from deprecated APIs</a> for more details." + }, "slotProps": { "type": { "name": "shape", - "description": "{ arrow?: object, popper?: object, tooltip?: object, transition?: object }" + "description": "{ arrow?: func<br>| object, popper?: func<br>| object, tooltip?: func<br>| object, transition?: func<br>| object }" }, "default": "{}" }, @@ -79,27 +88,48 @@ "additionalInfo": { "sx": true } }, "title": { "type": { "name": "node" } }, - "TransitionComponent": { "type": { "name": "elementType" }, "default": "Grow" }, - "TransitionProps": { "type": { "name": "object" } } + "TransitionComponent": { + "type": { "name": "elementType" }, + "deprecated": true, + "deprecationInfo": "use the <code>slots.transition</code> prop instead. This prop will be removed in v7. See <a href=\"https://mui.com/material-ui/migration/migrating-from-deprecated-apis/\">Migrating from deprecated APIs</a> for more details." + }, + "TransitionProps": { + "type": { "name": "object" }, + "default": "{}", + "deprecated": true, + "deprecationInfo": "use the <code>slotProps.transition</code> prop instead. This prop will be removed in v7. See <a href=\"https://mui.com/material-ui/migration/migrating-from-deprecated-apis/\">Migrating from deprecated APIs</a> for more details." + } }, "name": "Tooltip", "imports": [ "import Tooltip from '@mui/material/Tooltip';", "import { Tooltip } from '@mui/material';" ], - "classes": [ + "slots": [ { - "key": "arrow", - "className": "MuiTooltip-arrow", - "description": "Styles applied to the arrow element.", - "isGlobal": false + "name": "popper", + "description": "The component used for the popper.", + "default": "Popper", + "class": "MuiTooltip-popper" }, { - "key": "popper", - "className": "MuiTooltip-popper", - "description": "Styles applied to the Popper component.", - "isGlobal": false + "name": "transition", + "description": "The component used for the transition.\n[Follow this guide](https://mui.com/material-ui/transitions/#transitioncomponent-prop) to learn more about the requirements for this component.", + "default": "Grow", + "class": null + }, + { + "name": "tooltip", + "description": "The component used for the tooltip.", + "class": "MuiTooltip-tooltip" }, + { + "name": "arrow", + "description": "The component used for the arrow.", + "class": "MuiTooltip-arrow" + } + ], + "classes": [ { "key": "popperArrow", "className": "MuiTooltip-popperArrow", @@ -118,12 +148,6 @@ "description": "Styles applied to the Popper component unless `disableInteractive={true}`.", "isGlobal": false }, - { - "key": "tooltip", - "className": "MuiTooltip-tooltip", - "description": "Styles applied to the tooltip (label wrapper) element.", - "isGlobal": false - }, { "key": "tooltipArrow", "className": "MuiTooltip-tooltipArrow", diff --git a/docs/pages/system/api/container.json b/docs/pages/system/api/container.json index 3f094034d61076..ae5bd4660c2576 100644 --- a/docs/pages/system/api/container.json +++ b/docs/pages/system/api/container.json @@ -2,13 +2,14 @@ "props": { "classes": { "type": { "name": "object" }, "additionalInfo": { "cssApi": true } }, "component": { "type": { "name": "elementType" } }, - "disableGutters": { "type": { "name": "bool" } }, - "fixed": { "type": { "name": "bool" } }, + "disableGutters": { "type": { "name": "bool" }, "default": "false" }, + "fixed": { "type": { "name": "bool" }, "default": "false" }, "maxWidth": { "type": { "name": "union", "description": "'xs'<br>| 'sm'<br>| 'md'<br>| 'lg'<br>| 'xl'<br>| false<br>| string" - } + }, + "default": "'lg'" }, "sx": { "type": { diff --git a/docs/pages/system/api/grid.json b/docs/pages/system/api/grid.json index 3a3c9d23850287..4cd038309b7d7b 100644 --- a/docs/pages/system/api/grid.json +++ b/docs/pages/system/api/grid.json @@ -5,7 +5,8 @@ "type": { "name": "union", "description": "Array<number><br>| number<br>| object" - } + }, + "default": "12" }, "columnSpacing": { "type": { @@ -13,12 +14,13 @@ "description": "Array<number<br>| string><br>| number<br>| object<br>| string" } }, - "container": { "type": { "name": "bool" } }, + "container": { "type": { "name": "bool" }, "default": "false" }, "direction": { "type": { "name": "union", "description": "'column-reverse'<br>| 'column'<br>| 'row-reverse'<br>| 'row'<br>| Array<'column-reverse'<br>| 'column'<br>| 'row-reverse'<br>| 'row'><br>| object" - } + }, + "default": "'row'" }, "offset": { "type": { @@ -42,13 +44,15 @@ "type": { "name": "union", "description": "Array<number<br>| string><br>| number<br>| object<br>| string" - } + }, + "default": "0" }, "wrap": { "type": { "name": "enum", "description": "'nowrap'<br>| 'wrap-reverse'<br>| 'wrap'" - } + }, + "default": "'wrap'" } }, "name": "Grid", diff --git a/docs/pages/system/api/stack.json b/docs/pages/system/api/stack.json index a5d69b0c81f265..2c838e2175b73d 100644 --- a/docs/pages/system/api/stack.json +++ b/docs/pages/system/api/stack.json @@ -6,14 +6,16 @@ "type": { "name": "union", "description": "'column-reverse'<br>| 'column'<br>| 'row-reverse'<br>| 'row'<br>| Array<'column-reverse'<br>| 'column'<br>| 'row-reverse'<br>| 'row'><br>| object" - } + }, + "default": "'column'" }, "divider": { "type": { "name": "node" } }, "spacing": { "type": { "name": "union", "description": "Array<number<br>| string><br>| number<br>| object<br>| string" - } + }, + "default": "0" }, "sx": { "type": { @@ -22,7 +24,7 @@ }, "additionalInfo": { "sx": true } }, - "useFlexGap": { "type": { "name": "bool" } } + "useFlexGap": { "type": { "name": "bool" }, "default": "false" } }, "name": "Stack", "imports": ["import Stack from '@mui/system/Stack';", "import { Stack } from '@mui/system';"], diff --git a/docs/public/static/branding/pricing/x-plan-pro.svg b/docs/public/static/branding/pricing/x-plan-pro.svg index cec6124bb4ef2f..8f8f149dd754d0 100644 --- a/docs/public/static/branding/pricing/x-plan-pro.svg +++ b/docs/public/static/branding/pricing/x-plan-pro.svg @@ -1 +1 @@ -<svg fill="none" height="15" width="13" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><linearGradient id="a" gradientUnits="userSpaceOnUse" x1="13" x2="3.254" y1="14.999" y2="9.368"><stop offset="0" stop-color="#0059b3"/><stop offset="1" stop-color="#007fff"/></linearGradient><mask id="b" height="15" maskUnits="userSpaceOnUse" width="13" x="0" y="0"><path d="m0 5.177a2.47 2.47 0 0 1 1.236-2.14l4.03-2.325a2.47 2.47 0 0 1 2.469 0l4.029 2.325a2.47 2.47 0 0 1 1.236 2.14v4.646a2.47 2.47 0 0 1 -1.236 2.14l-4.03 2.325a2.47 2.47 0 0 1 -2.469 0l-4.029-2.325a2.47 2.47 0 0 1 -1.236-2.14z" fill="#ed64a6"/></mask><g mask="url(#b)"><path d="m0 3.75 6.5 3.75 6.5-3.75-6.5-3.75z" fill="#80bfff"/><path d="m6.5 7.5v7.5l6.5-3.75v-7.5z" fill="url(#a)"/><path d="m0 11.25 6.5 3.75v-7.5l-6.5-3.75z" fill="#39f"/></g></svg> \ No newline at end of file +<svg width="13" height="15" fill="none" xmlns="http://www.w3.org/2000/svg"><mask id="block-blue" maskUnits="userSpaceOnUse" mask-type="alpha" x="0" y="0" width="13" height="15"><path d="M0 5.177a2.47 2.47 0 011.236-2.14L5.266.712a2.47 2.47 0 012.469 0l4.029 2.325A2.47 2.47 0 0113 5.177v4.646a2.47 2.47 0 01-1.236 2.14l-4.03 2.325a2.47 2.47 0 01-2.469 0l-4.029-2.325A2.47 2.47 0 010 9.823V5.177z" fill="#ED64A6"/></mask><g mask="url(#block-blue)"><path d="M0 3.75L6.5 7.5 13 3.75 6.5 0 0 3.75z" fill="#80BFFF"/><path d="M6.5 7.5V15l6.5-3.75v-7.5L6.5 7.5z" fill="url(#paint0_linear)"/><path d="M0 11.25L6.5 15V7.5L0 3.75v7.5z" fill="#39F"/></g><defs><linearGradient id="paint0_linear" x1="13" y1="14.999" x2="3.254" y2="9.368" gradientUnits="userSpaceOnUse"><stop stop-color="#0059B3"/><stop offset="1" stop-color="#007FFF"/></linearGradient></defs></svg> diff --git a/docs/public/static/screenshots/material-ui/getting-started/templates/blog-dark.jpg b/docs/public/static/screenshots/material-ui/getting-started/templates/blog-dark.jpg index ebfad56adba7bb..7750033112a8ad 100644 Binary files a/docs/public/static/screenshots/material-ui/getting-started/templates/blog-dark.jpg and b/docs/public/static/screenshots/material-ui/getting-started/templates/blog-dark.jpg differ diff --git a/docs/public/static/screenshots/material-ui/getting-started/templates/blog.jpg b/docs/public/static/screenshots/material-ui/getting-started/templates/blog.jpg index a290460370991b..3cd2433c24d496 100644 Binary files a/docs/public/static/screenshots/material-ui/getting-started/templates/blog.jpg and b/docs/public/static/screenshots/material-ui/getting-started/templates/blog.jpg differ diff --git a/docs/public/static/screenshots/material-ui/getting-started/templates/checkout-dark.jpg b/docs/public/static/screenshots/material-ui/getting-started/templates/checkout-dark.jpg index c1798f312cfc50..d789ffd7ab175e 100644 Binary files a/docs/public/static/screenshots/material-ui/getting-started/templates/checkout-dark.jpg and b/docs/public/static/screenshots/material-ui/getting-started/templates/checkout-dark.jpg differ diff --git a/docs/public/static/screenshots/material-ui/getting-started/templates/checkout.jpg b/docs/public/static/screenshots/material-ui/getting-started/templates/checkout.jpg index 8b213ea885f5c4..753fb420820ebd 100644 Binary files a/docs/public/static/screenshots/material-ui/getting-started/templates/checkout.jpg and b/docs/public/static/screenshots/material-ui/getting-started/templates/checkout.jpg differ diff --git a/docs/public/static/screenshots/material-ui/getting-started/templates/dashboard-dark.jpg b/docs/public/static/screenshots/material-ui/getting-started/templates/dashboard-dark.jpg index 6de1018b7caafb..2152e8951dac08 100644 Binary files a/docs/public/static/screenshots/material-ui/getting-started/templates/dashboard-dark.jpg and b/docs/public/static/screenshots/material-ui/getting-started/templates/dashboard-dark.jpg differ diff --git a/docs/public/static/screenshots/material-ui/getting-started/templates/dashboard.jpg b/docs/public/static/screenshots/material-ui/getting-started/templates/dashboard.jpg index 1af7200e4c8f2d..11515c1f52bfa9 100644 Binary files a/docs/public/static/screenshots/material-ui/getting-started/templates/dashboard.jpg and b/docs/public/static/screenshots/material-ui/getting-started/templates/dashboard.jpg differ diff --git a/docs/public/static/screenshots/material-ui/getting-started/templates/marketing-page-dark.jpg b/docs/public/static/screenshots/material-ui/getting-started/templates/marketing-page-dark.jpg index 331724f53548f7..30e9ad5f9d5bf8 100644 Binary files a/docs/public/static/screenshots/material-ui/getting-started/templates/marketing-page-dark.jpg and b/docs/public/static/screenshots/material-ui/getting-started/templates/marketing-page-dark.jpg differ diff --git a/docs/public/static/screenshots/material-ui/getting-started/templates/marketing-page.jpg b/docs/public/static/screenshots/material-ui/getting-started/templates/marketing-page.jpg index d86c9cabbed253..8065a0f5a52d49 100644 Binary files a/docs/public/static/screenshots/material-ui/getting-started/templates/marketing-page.jpg and b/docs/public/static/screenshots/material-ui/getting-started/templates/marketing-page.jpg differ diff --git a/docs/public/static/screenshots/material-ui/getting-started/templates/sign-in-dark.jpg b/docs/public/static/screenshots/material-ui/getting-started/templates/sign-in-dark.jpg index eb17be9c32d22d..2e95e76fde43ce 100644 Binary files a/docs/public/static/screenshots/material-ui/getting-started/templates/sign-in-dark.jpg and b/docs/public/static/screenshots/material-ui/getting-started/templates/sign-in-dark.jpg differ diff --git a/docs/public/static/screenshots/material-ui/getting-started/templates/sign-in-side-dark.jpg b/docs/public/static/screenshots/material-ui/getting-started/templates/sign-in-side-dark.jpg index f2bfafa1cc8009..91982ca94ae82b 100644 Binary files a/docs/public/static/screenshots/material-ui/getting-started/templates/sign-in-side-dark.jpg and b/docs/public/static/screenshots/material-ui/getting-started/templates/sign-in-side-dark.jpg differ diff --git a/docs/public/static/screenshots/material-ui/getting-started/templates/sign-in-side.jpg b/docs/public/static/screenshots/material-ui/getting-started/templates/sign-in-side.jpg index e93ff96dac7b67..df8e3c84437735 100644 Binary files a/docs/public/static/screenshots/material-ui/getting-started/templates/sign-in-side.jpg and b/docs/public/static/screenshots/material-ui/getting-started/templates/sign-in-side.jpg differ diff --git a/docs/public/static/screenshots/material-ui/getting-started/templates/sign-in.jpg b/docs/public/static/screenshots/material-ui/getting-started/templates/sign-in.jpg index 8bc5a3925e8e87..7aeb2e7b85c187 100644 Binary files a/docs/public/static/screenshots/material-ui/getting-started/templates/sign-in.jpg and b/docs/public/static/screenshots/material-ui/getting-started/templates/sign-in.jpg differ diff --git a/docs/public/static/screenshots/material-ui/getting-started/templates/sign-up-dark.jpg b/docs/public/static/screenshots/material-ui/getting-started/templates/sign-up-dark.jpg index f512ce30813a02..aba6180a79b0fc 100644 Binary files a/docs/public/static/screenshots/material-ui/getting-started/templates/sign-up-dark.jpg and b/docs/public/static/screenshots/material-ui/getting-started/templates/sign-up-dark.jpg differ diff --git a/docs/public/static/screenshots/material-ui/getting-started/templates/sign-up.jpg b/docs/public/static/screenshots/material-ui/getting-started/templates/sign-up.jpg index ba73bc82a8fc7d..5c0793261cc72c 100644 Binary files a/docs/public/static/screenshots/material-ui/getting-started/templates/sign-up.jpg and b/docs/public/static/screenshots/material-ui/getting-started/templates/sign-up.jpg differ diff --git a/docs/public/static/sponsors/marblism-dark.png b/docs/public/static/sponsors/marblism-dark.png deleted file mode 100644 index 17cd691a7349eb..00000000000000 Binary files a/docs/public/static/sponsors/marblism-dark.png and /dev/null differ diff --git a/docs/public/static/sponsors/marblism-dark.svg b/docs/public/static/sponsors/marblism-dark.svg deleted file mode 100644 index f0860a8bb56a57..00000000000000 --- a/docs/public/static/sponsors/marblism-dark.svg +++ /dev/null @@ -1 +0,0 @@ -<svg fill="none" height="282" width="938" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><clipPath id="a"><path d="m0 0h937.33v281.33h-937.33z"/></clipPath><g clip-path="url(#a)"><g stroke-width="2.51"><path d="m93.08 67.67 12.77-.84c.42 0 .63-.2.63-.73l.2-4.92" stroke="#656567"/><path d="m106.8 61.18-.22-2.4c0-.53-.2-.74-.73-.74-8.06 1.26-15.81-.84-20.31-8.17-4.5-7.32-4.3-14.86.63-22.3 4.6-7.01 12.14-8.58 20-8.06a.42.42 0 0 0 .41-.42l.21-1.04a.41.41 0 0 0 0-.21.41.41 0 0 0 -.31-.1c-11.1-1.16-19.69 2.09-25.76 9.83-1.99 2.41-3.35 3.88-4.19 7.12-3.87 15.7 1.68 26.7 16.76 32.98" stroke="#787878"/><path d="m106.8 61.18c-12.15 2.51-21.16-1.36-26.81-11.52l-2.2-3.97c-.31-.53-.42-.53-.42 0 0 3.76.84 7.12 2.62 9.84 3.14 5.23 7.33 8.69 12.77 10.47.42.2.63.83.32 1.67" stroke="#dddddf"/><path d="m111.82 74.8v2.3" stroke="#656567"/><path d="m111.82 77.1v9.42c0 .42.31.63.83.63l18.85-2.52a6.38 6.38 0 0 0 3.66-1.78 117.3 117.3 0 0 0 11.1-9.84c.32-.42.53-.84.53-1.25l5.23-40.2c0-.43-.21-.74-.52-1.05a115.69 115.69 0 0 0 -31.52-11.31 46.2 46.2 0 0 0 -7.43-.84c-.42 0-.63.21-.63.63v55.8" stroke="#7f7f7f"/><path d="m111.82 77.1c2.93.2 5.86 0 9.1-.84.42-.21.74-.42.84-.74l1.78-3.35" stroke="#e3e4e6"/><path d="m123.33 72.07 1.57-2.1c3.25-3.34 6.8-6.8 10.58-10.05" stroke="#bebcbd"/><path d="m135.69 59.92 1.15 2c.42.41.73.41 1.15 0 2.51-2.1 4.92-1.05 6.7-4.61.21-.53.63-.84 1.26-.84.42 0 .73-.1 1.04-.42.21-.2.42-.52.53-1.05l.52-5.65v-.42c0-.2-.1-.31-.42-.42-.31-.1-.52 0-.73.21-.73 1.68-1.47 3.35-2.93 4.19a18.23 18.23 0 0 0 -5.24 3.98c-.83.94-1.88 1.25-2.82 1.78" stroke="#e3e4e6"/><path d="m135.9 58.67c-3.77 1.05-6.39 2.4-8.07 4.08-1.25 1.36-2.82 4.19-4.92 8.7" stroke="#bebcbd"/><path d="m122.91 71.44a16.07 16.07 0 0 0 -4.81 2.93c-.32.21-.63.32-1.05.21-1.78-.1-3.56 0-5.23.32" stroke="#e3e4e6"/><path d="m135.69 59.92c.31.21.42-.2.2-1.25m-12.56 13.4c-.42.1-.63 0-.52-.52" stroke="#a4a3a6"/><path d="m99.99 53.75c2.09.31 4.08.2 5.86-.32.42 0 .63-.2.73-.73v-4.92" stroke="#656567"/><path d="m106.69 47.88v-2.82c0-.42-.21-.53-.63-.53h-2.62c-2.62.1-4.4-.73-5.23-2.5" stroke="#7f7f7f"/><path d="m98.2 42.02c-1.15-6.38 1.05-9.84 6.92-10.47" stroke="#656567"/><path d="m105.12 31.55c1.67.32 2.09-1.67 1.46-5.76a.72.72 0 0 0 -.73-.73c-12.88-2.83-20.95 7.34-16.96 19.47 1.88 5.55 5.65 8.59 11.1 9.22" stroke="#7f7f7f"/><path d="m105.12 31.55c-3.77-1.57-7.96.53-9.43 4.4-1.04 2.51-.2 4.5 2.52 6.07m8.48 5.86c-8.27.53-14.66-1.04-16.75-9.84a.2.2 0 0 0 -.1-.1.21.21 0 0 0 -.22 0c-.63 5.55 1.78 12.46 7.64 13.6l2.52.43c.41.1.63.42.73.84 0 .41-.1.62-.52.94" stroke="#e3e4e6"/><path d="m44.5 43.8c-.28 4.05.3 8.12 1.67 11.94a.63.63 0 0 0 .84 0l2.72-3.25c4.71-5.76 11.2-7.85 19.27-6.07" stroke="#656567"/><path d="m68.9 46.42c.3.2.62.2.83.1.31 0 .52-.2.52-.62.1-3.35-1.46-5.45-5.02-6.18-3.14-.63-5.97-.84-8.48-.42-.74 0-.84-.21-.21-.63 4.5-4.3 9.1-5.23 13.92-2.51.42.2.63.1.73-.42.32-2.1 1.05-4.19 2.41-5.86.32-.63.1-.95-.52-1.05-.52 0-1.36-.21-2.51-.73-1.05-.42-4.2-.53-9.43-.32-2.4 0-4.6.53-6.38 1.68-5.56 3.34-9.43 7.64-10.26 14.34" stroke="#7f7f7f"/><path d="m68.9 46.42c0-2.1-2.1-3.14-6.3-2.83-4.7.21-8.68 2-11.82 5.24a1.05 1.05 0 0 1 -1.47-.32l-2.4-4.7c-.32-.64-.63-.64-.95 0l-.42.62c-.31.31-.52.31-.83 0v-.63" stroke="#e3e4e6"/><path d="m112.13 102.85c.21.31.21.73 0 1.15" stroke="#2b2b2b"/><path d="m112.03 104.1a37.35 37.35 0 0 0 0 8.38c0 .32.1.42.41.32" stroke="#656567"/><path d="m112.44 112.8v.62" stroke="#2b2b2b"/><path d="m112.44 113.53-.52 22.5" stroke="#787878"/><path d="m111.82 136.04v12.88" stroke="#656567"/><path d="m111.82 148.92c.42.94.52 1.36.2 1.36" stroke="#2b2b2b"/><path d="m112.03 150.28-.1 10.68" stroke="#656567"/><path d="m111.82 160.96.63 16.54v.1c2.04-.95 4-2.07 5.86-3.35l.83-39.57c0-.42.22-.84.42-1.15l10.26-14.98c.21-.41.63-.62 1.05-.62 10.26-.32 20.73-.42 31.41-.42 2.1 0 3.46 1.67 4.82 3.03a1.26 1.26 0 0 0 1.78-.83c.73-6.29 1.78-12.57 3.24-18.74.63-2.2.21-4.2-1.05-6.08-2.61-3.66-6.49-9.73-5.75-14.45a386.73 386.73 0 0 0 3.66-36.32c0-.21-.2-.42-.31-.53a357.27 357.27 0 0 0 -11.73-9.42.3.3 0 0 0 0 .1v.1l-6.28 40.53c0 .41-.1.83-.53 1.25l-14.02 12.25a209.7 209.7 0 0 1 -23.46 3.56c-.52 0-.73.21-.62.73l.1 10.06" stroke="#787878"/><path d="m111.82 160.96a3.3 3.3 0 0 0 2.4.52c.74 0 1.05.2 1.26.73l.21 1.15c0 .32.21.42.52.32.21 0 .32 0 .42-.32.42-2.72.42-5.75-.2-8.9" stroke="#dddddf"/><path d="m116.42 154.47c-.2-.63-.31-1.16-.2-1.68" stroke="#a3a3a3"/><path d="m116.21 152.79c.84-5.03.84-10.16.1-15.18" stroke="#dddddf"/><path d="m116.32 137.6 6.49-12.03c.1-.31 0-.42-.31-.42a5.86 5.86 0 0 0 -2.83 2.4 44.66 44.66 0 0 1 -6.91 8.17" stroke="#b7b6b7"/><path d="m112.76 135.72c-.21.21-.53.32-.84.32" stroke="#dddddf"/><path d="m112.44 113.53h5.03c.45 0 .9-.15 1.26-.42l5.44-4.5a.74.74 0 0 1 .63-.1c.2 0 .42.1.42.41.31.53.73.53 1.25 0l.63-1.05" stroke="#a3a3a3"/><path d="m127 107.88 5.97.83.62.32c.21 0 .42.31.53.42a10.15 10.15 0 0 1 1.25 5.44.72.72 0 0 0 .14.55.73.73 0 0 0 .5.29c1.46 0 2.5-.73 2.92-2.3 1.05-3.04 1.57-5.76 1.26-8.17" stroke="#dddddf"/><path d="m140.19 105.26 8.8-11.1a1.47 1.47 0 0 0 .3-1.57c-.62-1.15-.52-2.2.22-3.14l-.42-.1a.52.52 0 0 0 -.42 0l-3.87 6.8" stroke="#a3a3a3"/><path d="m144.8 96.15-4.93-1.05c-.41 0-.73-.31-1.04-.73l-.21-.42c0-.63-.31-.73-.84-.52-.84.42-1.57.94-2.1 1.57-.62 1.04-2.3 1.25-3.24 2.1a5.56 5.56 0 0 1 -4.19 1.35c-1.36-.1-1.46-.63-.52-1.57a5.24 5.24 0 0 0 1.89-3.56.74.74 0 0 0 -.32-.52l-.31-.1a22.02 22.02 0 0 0 -7.44.2" stroke="#dddddf"/><path d="m121.45 93c-.84 0-1.68.22-2.4.64" stroke="#a3a3a3"/><path d="m119.14 93.64a4.2 4.2 0 0 0 -.94 1.78c0 .42-.31.62-.73.62h-.84c-.42 0-.73.1-1.04.42a10.26 10.26 0 0 0 -1.89 5.66" stroke="#dddddf"/><path d="m113.7 102.01c-.42.53-.94.84-1.47.84" stroke="#a3a3a3"/><path d="m116.42 154.47c-1.04 0-1.67-.21-1.78-.84a5.86 5.86 0 0 0 -2.72-3.35m1.78-48.16c1.57-.63 2.62-2.1 3.25-4.4 0-.42.31-.63.73-.84l1.26-.42c.31-.1.62-.42.73-.73 0-.42-.1-.63-.31-.84a.84.84 0 0 1 -.42-.73l.1-.52m21.15 11.62c-.84-1.57 0-3.35 2.4-5.24 1.22-1 2-2.42 2.2-3.98m-17.79 11.83a13.94 13.94 0 0 1 6.19-8.16 1.04 1.04 0 0 1 1.04 0 10.5 10.5 0 0 0 3.67 1.57c1.04.31 1.25 0 .73-.94a9.33 9.33 0 0 1 -1.57-3.88.73.73 0 0 0 -.43-.45.73.73 0 0 0 -.62.03c-2.3 1.05-4.4 2-5.76 4.3a24.99 24.99 0 0 1 -4.6 5.23c-.32.21-.53.53-.63 1.05-.21 1.05-.84 1.67-2 1.67-.41 0-.72.1-1.04.42l-2.83 3.04c-.3.2-.73.42-1.15.42a8.3 8.3 0 0 1 -3.97.2c-.63 0-1.05.11-1.58.43" stroke="#909092"/><path d="m112.03 104.1 2.2 1.05c.3.21.73.1 1.04-.1.73-.84.94-1.78.63-2.83-.21-.52 0-.73.52-.63.74 0 1.05.32 1.26 1.05a.4.4 0 0 0 .31.14.41.41 0 0 0 .32-.14c1.25-1.05 1.88-1.88 2.1-2.62.1-2.4.52-4.7 1.04-7.12" stroke="#909092"/><path d="m116.32 137.6c-.42.64-.84.85-1.26.74-.52-.31-.63-1.05-.2-2.51l-1.05.63a.62.62 0 0 1 -.53.2c-.52 0-.73-.3-.52-.83" stroke="#a4a3a6"/><path d="m116.21 152.79a5.94 5.94 0 0 1 -2.5-3.56c0-.63-.32-.73-.85-.42-.2.21-.52.21-1.04.1" stroke="#909092"/><path d="m103.13 39.72 3.66-.84a.42.42 0 0 0 .21-.52v-.21l-.31-.63-.63-.42a2.09 2.09 0 0 0 -.73-.2l-.84.1-.42.1-.63.31c-.24.14-.45.31-.63.53l-.2.63v.94a.31.31 0 0 0 .2.2c.1.05.22.05.32 0z" stroke="#656567"/><path d="m186.36 74.16c-.2-7.95-6.6-18-11.94-23.66a.42.42 0 0 0 -.3-.1.42.42 0 0 0 -.22.2l-4.5 31.73c0 .42.1.84.31 1.15l15.7 25.13c.43.63.74.63.74-.21.42-11.1.42-22.62 0-34.24m-155.25-17.16c2.11-2.1 4.97-3.3 7.95-3.35.53 0 .84-.31.74-.94l-.42-2.4c0-.32-.21-.43-.53-.53-.94-.1-1.78-.21-2.5.42a23.15 23.15 0 0 0 -5.77 5.76c-.2.2-.2.41 0 .62v.42a.26.26 0 1 0 .53 0z" stroke="#787878"/><path d="m92.66 76.57c1.78.21 3.45-.63 5.23-2.4.1-.43 0-.53-.31-.64l-11.52-3.13" stroke="#656567"/><path d="m86.06 70.4a29.94 29.94 0 0 1 -12.35-13.2c-1.05-3.56-3.56-5.55-7.44-5.86-9.42-.84-14.76 3.24-16.12 12.14-.42 3.67-4.82 5.24-7.85 3.35a1.57 1.57 0 0 0 -2.51 1.26c-.1 5.76 2.2 9 7.22 9.84 7.01 1.05 11.73-4.08 11.83-10.89.21-4.4 5.24-5.65 8.38-3.14.31.32.52.74.62 1.05 2.94 7.43 7.44 11.94 13.61 13.61 3.36.84 7.02.21 11.2-1.99" stroke="#7f7f7f"/><path d="m86.06 70.4c-3.14 1.88-6.6 1.36-10.05-1.58-3.35-2.82-4.92-8.37-9.1-9.63-4.93-1.67-8.6-.42-10.8 3.67-1.25 2.09-1.25 4.7-2.82 6.6-3.14 3.55-7.01 3.66-11.41.3-.42-.3-.63-.2-.63.42.32 3.88 2.3 5.97 6.28 6.18 5.97.32 9.22-2.83 9.74-9.53a6.39 6.39 0 0 1 5.65-5.86c2.52-.2 5.66 1.57 6.6 4.19a16.12 16.12 0 0 0 9.84 10.68c2.93 1.05 7.33 1.25 13.3.63" stroke="#e3e4e6"/><path d="m69.1 84 1.99-2.93a1.05 1.05 0 0 0 0-1.25 8.59 8.59 0 0 0 -4.92-3.46" stroke="#656567"/><path d="m66.17 76.36c-2.83-.52-5.24 1.57-7.12 3.14-3.35 3.04-8.9 3.56-13.09 2.93a12.36 12.36 0 0 1 -10.26-17.38c1.26-3.24 3.98-4.5 8.17-3.66 1.15.21 1.26 0 .42-.73-2.62-2.1-5.34-2.52-8.38-1.05-4.92 2.51-7.33 9.42-7.12 14.55.42 13.61 12.88 21.36 25.86 19.37 5.97-.84 10.79-3.98 14.45-9.42" stroke="#787878"/><path d="m66.17 76.36c-7.12 17.28-28.69 13.82-34.66-1.88-1.04-2.72-1.46-2.62-1.25.42a18.84 18.84 0 0 0 19.79 17.27 24.08 24.08 0 0 0 17.9-8.37c.31-.1.52-.21.94-.1.21-.01.32-.01.32.3" stroke="#dddddf"/><path d="m25.13 65.26c.73-1.78.42-2.09-1.15-1.04-8.27 5.23-10.47 12.56-6.6 21.98.31.74.52.74.73 0 .84-2.61 2.52-4.81 4.82-6.8.35-.3.57-.7.63-1.15.31-3.88-.32-9.85 1.57-13.2" stroke="#787878"/><path d="m56.64 118.14a44.3 44.3 0 0 1 34.55-2.94 13.61 13.61 0 0 1 10.47 13.1l.63 9.62" stroke="#7f7f7f"/><path d="m102.29 137.92c-.73-.31-1.05-1.36-.94-3.14 0-.84-.21-1.46-.74-1.88l-.31-.32a.62.62 0 0 0 -.52 0 .63.63 0 0 0 -.42.32 80.36 80.36 0 0 0 -1.15 8.58c0 .74-.21 1.26-.63 1.78-.42.53-.53.42-.42-.1.63-2.1.1-3.67-1.47-4.6-1.25-.64-2.3-.32-3.35.83" stroke="#787878"/><path d="m92.34 139.39a10.47 10.47 0 0 1 -4.08 2.3" stroke="#7f7f7f"/><path d="m88.26 141.7 1.47-2.63c2.3-3.14 1.67-3.76-1.68-2.09-7.22 3.77-14.66 3.67-22.3-.42-2.1-1.05-2.62-.52-1.57 1.68l1.26 2.4" stroke="#787878"/><path d="m65.44 140.75c-2.41-2.1-4.09-3.25-5.03-3.46" stroke="#7f7f7f"/><path d="m60.3 137.3a36.4 36.4 0 0 0 -5.44-3.15 13.87 13.87 0 0 1 -4.19-2.93 24.27 24.27 0 0 1 -3.14-4.4.73.73 0 0 0 -1.04.22 27.3 27.3 0 0 0 -3.77 14.23c0 16.23 1.99 31.73 5.76 46.49 5.23 20.41 17.27 35.6 36.01 45.54 7.75 4.19 15.18 5.55 22.2 4.19" stroke="#787878"/><path d="m106.58 237.49v-7.75" stroke="#656567"/><path d="m106.69 229.74v-16.44c0-.42-.21-.73-.74-.83a15.9 15.9 0 0 0 -8.69 1.57" stroke="#7f7f7f"/><path d="m97.47 214.04a5.23 5.23 0 0 1 .95-4.61c.2-.31.2-.63-.1-.73l-4.93-2.72" stroke="#656567"/><path d="m93.39 205.97-.42-.52a.42.42 0 0 1 0-.52.42.42 0 0 1 .63 0 22.27 22.27 0 0 0 12.56 1.36.73.73 0 0 0 .63-.73l-.2-4.92a1.37 1.37 0 0 0 -.64-1.05 9.24 9.24 0 0 0 -3.56-1.57c-6.28-.73-10.88.31-13.82 3.14-.41.42-.83.42-1.04 0l-2.1-3.35c-.2-.42-.31-.84-.1-1.26.42-1.67 1.46-2.51 3.14-2.72.2 0 .52 0 .84.21.42.42.63.84.63 1.26 0 .52.2.73.73.63.2 0 .42-.32.73-.63" stroke="#7f7f7f"/><path d="m91.4 195.4c2.53-.54 5.05-1.17 7.54-1.88 2.62-.84 4.4-.21 6.8.41.42.22.74 0 .84-.41.21-.63 0-1.16-.2-1.68" stroke="#656567"/><path d="m106.37 191.84-3.45-7.01c-.21-.42-.53-.63-.95-.63h-7.32" stroke="#787878"/><path d="m94.75 184.2c-6.8-6.8-6.28-13.82 1.36-20.94" stroke="#7f7f7f"/><path d="m96.11 163.26c1.26.52 1.47 1.78.53 3.77" stroke="#787878"/><path d="m96.64 166.92c-3.25 1.89-4.4 5.24-3.46 10.06" stroke="#7f7f7f"/><path d="m93.18 176.97c1.89-.73 3.46-1.36 5.03-1.57 3.14-.52 5.23 1.36 7.74 2.83.42.21.63 0 .74-.31.2-.74.2-1.36 0-1.89" stroke="#656567"/><path d="m106.8 176.03v-91.6" stroke="#7f7f7f"/><path d="m106.69 84.42-.32-7.85c-.1-.63-.42-.73-.94-.2a19.15 19.15 0 0 1 -6.8 4.28 107.55 107.55 0 0 1 -15.5 3.77c-7.64 1.16-10.47 5.66-16.75 9.43-10.79 6.38-17.28 14.44-16.02 28.06.31 4.08 2.3 6.8 5.86 8.16a1.04 1.04 0 0 0 1.05-.31c2.83-3.14 5.44-6.8 9.63-8.27a87.8 87.8 0 0 1 14.24-4.09c.63 0 .63-.2 0-.52a28.12 28.12 0 0 0 -12.77-1.78c-1.15.1-3.14.63-5.87 1.57a22.9 22.9 0 0 1 -5.86 1.47" stroke="#656567"/><path d="m106.69 84.42a348.4 348.4 0 0 0 -29.53 9.84 48.16 48.16 0 0 0 -13.3 8.17 35.28 35.28 0 0 0 -10.56 14.67 1.46 1.46 0 0 0 .32 1.57c1.04 1.05 2.09.94 3.03-.63m50.26 58c-6.29-3.98-10.9-3.66-13.61 1.05" stroke="#e3e4e6"/><path d="m96.64 166.92 2.4.21c.42 0 .63.21.74.63.31 1.05.73 2.2 1.25 3.14.21.84.42.84.53 0 .73-11.1 1.04-21.98.73-32.98m-6.29 25.34a40.81 40.81 0 0 0 .52-18.85 5.76 5.76 0 0 0 -1.57-2.93l-2.51-2.1m-27.01 1.37c.42 1.47 1.25 2.3 2.3 2.51l1.05.63c1.04.73 1.46 1.15 2.82 1.36 4.92.53 8.8.53 11.52 0 1.88-.31 3.56-1.46 5.03-3.45m6.6 42.5 5.75 6.28" stroke="#f7f7f7"/><path d="m100.5 190.48c-4.18 1.05-7.11 2.72-9.1 4.92m1.99 10.47c-.52.63-.84 1.05-.84 1.36.32 2.62 1.89 4.82 4.92 6.8m9.22 15.71a29.95 29.95 0 0 1 -25.55-10.89" stroke="#e3e4e6"/><path d="m106.37 191.84a11.52 11.52 0 0 0 -5.86-1.36" stroke="#dddddf"/><path d="m60.3 137.3c-3.55-.32-6.9-1.68-10.25-3.98-.32-.21-.63-.21-.84 0a8.27 8.27 0 0 0 -1.89 5.75 88.37 88.37 0 0 0 3.77 16.76c2.93 9.42 7.54 21.46 13.93 36.01 3.77 8.8 9.1 17.8 16.12 27.01" stroke="#f7f7f7"/><path d="m81.14 218.85h-.94l-1.36-.73c-8.38-7.33-14.87-15.28-19.37-23.87a294.21 294.21 0 0 1 -11.73-25.76c-1.04-2.5-1.46-2.5-1.25.21a90.57 90.57 0 0 0 11.93 38.32 61.1 61.1 0 0 0 15.92 18.01c9 6.8 19.89 11 32.45 12.46" stroke="#dddddf"/><path d="m27.01 104.32c7.65 6.07 20.2 5.75 24.08-4.61.1-.42 0-.63-.42-.73l-5.96-1.05" stroke="#656567"/><path d="m44.81 98.03c-1.57-.31-3.77-.2-6.6.32-3.14.63-5.44-.63-6.8-3.56-1.26-2.41-.31-4.3-2.72-6.28a6.8 6.8 0 0 1 -2.1-2.62c-.83-2.1-1.78-2.1-2.72 0-3.14 6.39-2.1 12.56 3.14 18.53" stroke="#787878"/><path d="m44.81 98.03c-1.36 3.77-4.6 5.24-9.74 4.2a14.67 14.67 0 0 1 -10.26-7.34c-.52-.83-.73-.73-.73.21a11.52 11.52 0 0 0 3.77 8.17c.31.42.31.63 0 .94l-.94.21" stroke="#dddddf"/><path d="m18.64 110.39c2.1.52 3.77 0 5.23-1.05.32-.31.32-.63 0-1.05l-4.7-6.49" stroke="#656567"/><path d="m19.16 101.8-7.43-15.18c-.21-.42-.32-.42-.53 0-4.92 8.7-3.03 20.63 7.44 23.77" stroke="#787878"/><path d="m19.16 101.8c-3.14 1.36-5.65-.1-7.43-4.4-.95-2.4-1.36-2.3-1.47.22-.2 5.65 2.83 9.42 9 11.51.21 0 .21.1.21.32v.41a.63.63 0 0 1 -.3.53h-.53" stroke="#dddddf"/><path d="m124.59 138.66h-.52c-.53-.21-.84 0-.84.52v30.36" stroke="#656567"/><path d="m123.33 169.44-.31 7.22a1.98 1.98 0 0 1 -1.05 1.68l-9.1 4.6a1.48 1.48 0 0 0 -.74 1.26l-.52 8.37c0 .63.31.95.94.95h2.72" stroke="#787878"/><path d="m115.27 193.52h5.03" stroke="#656567"/><path d="m120.4 193.62 5.03.31c.31 0 .73.22 1.04.53a13.6 13.6 0 0 1 4.93 9.42c.2.53.52 1.05.94 1.36l4.92 4.19c.42.31.73.31 1.05 0 4.4-4.92 8.79-9.21 13.3-12.98.3-.32.51-.73.62-1.26l5.23-25.96c0-.42.21-.84.53-1.26l25.23-24.18c.42-.32.52-.74.52-1.26v-27.22c.01-.63-.17-1.25-.52-1.78l-5.86-8.59a.42.42 0 0 0 -.42-.41.42.42 0 0 0 -.32.41l-4.7 21.57a5.59 5.59 0 0 1 -2.42 3.14c-.31.21-.52.42-.73.84a6.63 6.63 0 0 1 -1.47 2.83 139.85 139.85 0 0 0 -12.04 13.82h-17.26c-.52 0-.94 0-1.26-.42l-4.81-5.76c-1.68-2.1-4.19-2.83-7.33-2.4" stroke="#787878"/><path d="m120.4 193.62c-.31-.73 0-1.57.63-2.51" stroke="#dddddf"/><path d="m121.03 191.1a47.12 47.12 0 0 0 9.53-9.83" stroke="#b7b6b7"/><path d="m130.66 181.27.94.42c.21.2.32.41.32.73l-.1.52a.42.42 0 0 0 0 .42l.3.21c.32 0 .53 0 .64-.2a8.71 8.71 0 0 0 1.25-6.81" stroke="#dddddf"/><path d="m134.01 176.56a6.28 6.28 0 0 1 1.78-3.46" stroke="#a3a3a3"/><path d="m135.8 173.1h3.97a.2.2 0 0 1 .21.31l.31 3.46h.32c.1-1.47.42-2.83.73-3.98.73-2.72 2.51-3.35 5.24-1.88a.74.74 0 0 0 .77-.17.74.74 0 0 0 .17-.25 5.23 5.23 0 0 1 2.93-2.72c.84-.32.84-.42 0-.42-1.99.31-2.83-.21-2.72-1.47" stroke="#dddddf"/><path d="m147.62 165.98c2.62-1.25 4.19-2.72 4.92-4.4" stroke="#a3a3a3"/><path d="m152.65 161.58c.63.63 1.67.84 2.82.63.42-.1.74 0 .84.63 0 .52 0 1.05-.42 1.57-.41.53-.2.73.53.53a3.45 3.45 0 0 0 2.1-2.52 9.98 9.98 0 0 1 3.13-5.23c.42-.42.42-.63 0-.84a.63.63 0 0 0 -.73 0c-.84.31-1.05.1-.63-.63l2.1-3.66c.2-.21.2-.32 0-.53h-.32l-5.76 6.6c-.31.31-.73.42-1.05.31h-1.56a.86.86 0 0 0 -.53.84c0 .84-.1 1.57-.52 2.1-.42.3-.74.41-1.15.2l-4.2-2.5c-.41-.22-.52-.64-.41-1.06l2.1-6.8v-.63c-.22-.63-.64-.84-1.37-.73-.1 0-.31 0-.42.2-.41.32-.41.64 0 .84.32.32.42.53.21.84l-.83 1.89-.32.63c0 3.56-.63 7.64-3.14 10.47-.2.2-.63.52-1.05.52-2.09.31-4.18.31-6.17 0a1.05 1.05 0 0 0 -1.05.52.95.95 0 0 0 0 1.05" stroke="#dddddf"/><path d="m134.85 166.92-1.15 1.16" stroke="#a3a3a3"/><path d="m133.7 168.28-5.86 3.25c-.19.14-.4.21-.63.21a.85.85 0 0 1 -.63-.31l-.42-.63c-.52-.42-.84-.32-.94.42 0 1.04.42 1.88 1.25 2.5.42.22.53.64.42 1.16-.94 2.1-2.72 3.25-3.77 5.44-1.25 2.73-2.4 5.76-4.92 7.33-1.25.84-2.3 1.78-3.35 2.73-.42.31-.42.62 0 .83 1.05.84 1.15 1.57.53 2.1m7.85-23.87c2.51-1.68 3.87-4.5 4.19-8.38" stroke="#dddddf"/><path d="m127.52 161.06 4.6-4.92" stroke="#b7b6b7"/><path d="m132.13 156.03c1.67-.52 2.1-2.5 3.98-2.3.31 0 .62 0 .73-.2a3 3 0 0 0 .73-2.94 1.28 1.28 0 0 0 -.81-.71 1.27 1.27 0 0 0 -1.07.19c-.42.31-.84.31-1.15 0-.21-.21-.32-.63-.21-1.05a4.19 4.19 0 0 0 -1.16-3.87" stroke="#dddddf"/><path d="m133.18 145.15-1.05-1.26" stroke="#a3a3a3"/><path d="m132.13 144c-.94-3.15-3.88-3.35-6.5-3.98a.84.84 0 0 1 -.73-.74l-.31-.73" stroke="#dddddf"/><path d="m132.13 144a12.03 12.03 0 0 1 -1.78 4.29.63.63 0 0 0 0 .63l.2.42c0 .05 0 .1.03.16.03.05.08.08.13.1a.22.22 0 0 0 .27-.16v-.1l2.09-4.2" stroke="#909092"/><path d="m132.13 156.03a5.18 5.18 0 0 1 -.21-2.93 1.05 1.05 0 0 0 -.63-1.15l-.42-.31a.63.63 0 0 0 -.94.52l-.42 3.46c0 .41-.31.63-.84.73a4.92 4.92 0 0 1 -3.66-.21c-.53-.31-.84-.1-1.05.31a3.64 3.64 0 0 0 .21 3.98c.63 1.05 1.78 1.26 3.35.63m3.14 20.2a24.5 24.5 0 0 0 -7.33 5.24 8.38 8.38 0 0 0 -2.3 4.6" stroke="#a4a3a6"/><path d="m152.65 161.58a48.37 48.37 0 0 1 -16.44 8.17c-.31.1-.63 0-.73-.42l-.73-2.4m12.87-.95c-3.6 1.98-7.3 3.76-11.1 5.34-.52.31-.73.94-.62 1.78m-1.89 3.46a5.36 5.36 0 0 1 -1.25 1.36c-.42.42-.63.31-.42-.32a14.39 14.39 0 0 1 2.4-4.92c.21-.42.11-.73 0-1.05a2.1 2.1 0 0 0 -2.2 0l-2.5 1.26c0 .21-.11.21-.22 0l-.1-.42v-.31l3.56-2.4c.31-.43.42-.95.42-1.47" stroke="#909092"/><path d="m189.71 109.34-.52 11.2" stroke="#656567"/><path d="m189.3 120.54v20.94" stroke="#7f7f7f"/><path d="m189.3 141.38.41 15.28" stroke="#656567"/><path d="m189.71 156.66a2 2 0 0 0 0 1.89c.1.52.42.52.73 0l7.12-8.48c.47-.56.73-1.26.74-2v-27.74a4.2 4.2 0 0 0 -.84-2.4l-7.33-10.16c-.42-.42-.63-.42-.84.1 0 .53 0 1.05.32 1.47" stroke="#7f7f7f"/><path d="m189.71 156.66c2.2-1.99 4.19-3.97 5.65-6.28a6.9 6.9 0 0 0 1.26-4.19c-.03-1.7.04-3.42.21-5.13a.85.85 0 0 0 -.53-.51.83.83 0 0 0 -.73.1c-2.4 1.04-4.6 1.36-6.28.73m0-20.94c.74-3.56.84-7.33.32-11.1" stroke="#e3e4e6"/><path d="m44.81 111.85-9.1 1.57" stroke="#656567"/><path d="m35.7 113.53-4.92 2.4c-.42.32-.84.32-1.25.11l-3.67-1.36a2.19 2.19 0 0 0 -3.14 1.88c-.52 5.45 2.62 8.48 7.96 9a12.56 12.56 0 0 0 13.08-6.9c1.68-3.14 2.1-5.24 1.05-6.8" stroke="#7f7f7f"/><path d="m35.7 113.53c1.26 0 2.1.42 2.52 1.05.41.52.52 1.04.2 1.57a7.95 7.95 0 0 1 -8.69 4.18c-1.88-.31-3.45-1.36-4.92-2.09a.63.63 0 0 0 -.77-.1.62.62 0 0 0 -.27.73 4.92 4.92 0 0 0 3.77 4.19c9 2.82 14.76-.95 17.38-11.2" stroke="#e3e4e6"/><path d="m34.03 137.82c1.67 0 3.03-1.26 3.87-3.67.21-.41 0-.73-.42-.83l-7.22-.84" stroke="#656567"/><path d="m30.26 132.48c-8.7-2.62-12.98-8.27-12.88-16.75 0-.53-.2-.84-.73-.84-.73 0-1.36.2-2 .52-.3.32-.51.63-.62 1.05-1.88 8.9.52 15.8 7.12 20.94 4.19 3.14 8.38 3.14 12.88.42" stroke="#787878"/><path d="m30.26 132.48c-5.76 1.36-10.26-1.05-13.61-7.02-.1-.31-.32-.31-.63 0-.31.53-.42 1.05-.21 1.58 1.88 8.06 7.96 11.51 18.22 10.78" stroke="#dddddf"/><path d="m67.95 126.4c8.69-4.4 16.54-3.13 23.56 3.98h.1l.42-.3a.63.63 0 0 0 0-.85c-6.5-8.58-14.24-10.68-23.45-6.17a11.52 11.52 0 0 0 -5.55 6.6c-.21.83 0 .93.52.2a16.85 16.85 0 0 1 4.4-3.45z" stroke="#787878"/><path d="m70.36 130.18-2.1 1.78c-1.15 1.04-1.04 2.09.21 2.93 5.24 3.24 10.05 3.87 14.45 1.78 3.35-1.47 4.5-3.14 3.66-4.92m62.82 10.78a10.06 10.06 0 0 0 5.97-5.13 10.89 10.89 0 0 0 -4.4-14.24 10.05 10.05 0 0 0 -7.75-.94 10.05 10.05 0 0 0 -6.07 5.13 10.78 10.78 0 0 0 4.4 14.24 10.3 10.3 0 0 0 7.85.94z" stroke="#7f7f7f"/><path d="m86.58 131.75c-5.54-5.55-10.88-6.08-16.12-1.57" stroke="#656567"/><path d="m86.58 131.75c-1.36-.1-3.03-.74-5.02-1.89-1.26-.63-3.25-.84-5.86-.42l-5.34.74" stroke="#e3e4e6"/><path d="m18.53 146.61c1.15 4.82 4.4 7.96 9.84 9.42" stroke="#787878"/><path d="m28.37 156.03h3.56a.52.52 0 0 0 .68-.43c.02-.1 0-.2-.05-.3l-.31-.31a86.44 86.44 0 0 1 -9-10.26 5.23 5.23 0 0 0 -3.88-2.2c-.52 0-.73.2-.84.63-.2 1.05-.2 2.2 0 3.45" stroke="#656567"/><path d="m28.37 156.03c.32-.3.42-.62.42-.94 0-.42-.2-.63-.63-.73a12.05 12.05 0 0 1 -8.48-8.27c-.1-.42-.41-.52-.83-.21l-.32.73" stroke="#dddddf"/><path d="m177.36 170.38 5.54-6.07a3.65 3.65 0 0 0 1.05-2.52v-9.84c0-1.15-.52-1.36-1.36-.63a391.58 391.58 0 0 0 -19.79 19.8 7.26 7.26 0 0 0 -1.67 3.34l-3.56 16.75v.74a34.65 34.65 0 0 0 10.26 9 1.05 1.05 0 0 0 1.05-.84 367.37 367.37 0 0 0 7.53-28.37c.21-.52.42-1.05.74-1.36" stroke="#787878"/><path d="m40.62 176.66-1.36-9.63c-.31-2.51-2.82-4.6-7.54-6.28" stroke="#656567"/><path d="m31.72 160.96a38.27 38.27 0 0 0 3.04 11.1 14.45 14.45 0 0 0 5.44 6.28.53.53 0 0 0 .63-.42c.1-.32 0-.74-.2-1.26" stroke="#787878"/><path d="m31.72 160.96a96.34 96.34 0 0 1 5.34 12.56 4.6 4.6 0 0 0 3.56 3.14" stroke="#dddddf"/><path d="m51.3 222.94.1 6.28c.22 1.78.84 3.45 1.9 4.81a63.32 63.32 0 0 0 19.26 16.75m62.29-36.53c-2.1-2.2-4.4-4.5-7.02-6.8a3.77 3.77 0 0 1 -1.25-2.73c.2-2.83-1.68-5.76-4.82-5.97l-9.63-.2c-.2 0-.31.1-.31.41v7.33c0 .42.1.52.42.52h9.42c2.2 0 3.98 0 5.65 1.57l7.02 6.6a.53.53 0 0 0 .52-.1.52.52 0 0 0 0-.63zm6.5-1.26c-.22.2-.43.52-.43.84l-.2 13.6a1.25 1.25 0 0 0 .7 1.07 1.26 1.26 0 0 0 1.28-.12l22.51-20.63a1.24 1.24 0 0 0 .37-.88 1.26 1.26 0 0 0 -.37-.9l-7.96-6.59a1.25 1.25 0 0 0 -1.57 0l-14.34 13.61z" stroke="#787878"/><path d="m72.56 250.68a73.71 73.71 0 0 0 24.29 8.9c1.57.42 1.67 0 .2-.84a100.78 100.78 0 0 1 -35.9-34.02l-7.33-11.52c-.95-1.26-1.05-2.51-1.68-3.77-.42-.94-.63-.84-.63.1l-.2 13.4" stroke="#656567"/><path d="m72.56 250.68c.41-2.1.31-3.66-.32-4.6a663.72 663.72 0 0 1 -18.63-29.84c-.74-1.26-1.16-1.16-1.37.2l-.94 6.5" stroke="#dddddf"/><path d="m112.44 224.61-.3 8.06" stroke="#656567"/><path d="m112.13 232.67v5.24c0 .42.31.73.73.73 3.35 0 6.8-.2 10.47-.42 4.4-.2 8.07-3.56 11.2-6.18l.53-1.25a35.5 35.5 0 0 0 0-8.17l-.63-1.25-5.97-5.66" stroke="#787878"/><path d="m128.57 215.71c-1.68-1.67-2.93-2.83-5.45-3.14h-3.45" stroke="#656567"/><path d="m119.67 212.68-6.5-.21c-.41 0-.62.2-.62.63v11.51" stroke="#787878"/><path d="m119.67 212.68-3.14 3.66c-.21.42-.21.73.2 1.05 1.05.52 1.47 1.88 1.05 3.14-.73 2.4-2.61 3.77-5.34 4.19m16.02-9c-.31-.11-.63-.11-.83.1-.32.31-.32.63 0 .73" stroke="#dddddf"/><path d="m127.52 216.55h-.31l-.32.1-.31.32a26.49 26.49 0 0 1 -12.88 11.52" stroke="#a4a3a6"/><path d="m113.7 228.49c.84.83 1.26 1.56 1.26 2.3 0 .42-.21.63-.73.63-1.05 0-1.79.42-2.1 1.25" stroke="#dddddf"/><path d="m130.98 220.63c-.95 0-1.78.21-2.52.63-.42.31-.52.63-.52 1.05.31 1.25 1.05 1.78 2.1 1.46" stroke="#6a6869"/><path d="m130.03 223.77c-.41.84-.41 1.05 0 .74" stroke="#a4a3a6"/><path d="m113.7 228.49a22 22 0 0 0 9.42-3.98 1.25 1.25 0 0 1 1.05-.21c1.78.52 3.77.63 5.86.2" stroke="#b7b6b7"/><path d="m130.03 224.5c1.26 1.37 1.37 3.57.42 6.4v.3a.62.62 0 0 0 .53.64h.31c.73 0 1.05-.21 1.36-.74a10.26 10.26 0 0 0 0-8.8" stroke="#dddddf"/><path d="m132.76 222.3a4.4 4.4 0 0 0 -1.78-1.67" stroke="#a3a3a3"/><path d="m130.98 220.63c-.79-1.6-1.94-3-3.35-4.08" stroke="#b7b6b7"/><path d="m132.76 222.3c-1.36-.41-2.1 0-2.73 1.47" stroke="#909092"/><path d="m161.02 219.06c-3.87 2.51-5.96 5.03-6.07 7.75" stroke="#656567"/><path d="m155.06 226.81-.74 17.28a.52.52 0 0 0 .32.41h.52c3.04-2.5 12.04-10.47 12.25-14.55.21-5.65 0-10.89-.63-15.8 0-.74-.2-.74-.73-.32l-4.92 5.23" stroke="#787878"/><path d="m155.06 226.81.41.52c.32.32.42.74.42 1.26l.42 10.89c0 1.15.42 1.36 1.26.52l1.15-1.25a4.17 4.17 0 0 0 1.78-3.15l.63-16.54" stroke="#dddddf"/><path d="m149.72 230.9a.73.73 0 0 0 -.74-.74h-.31a.73.73 0 0 0 -.52.73l-1.47 17.8a.74.74 0 0 0 .73.84.74.74 0 0 0 .84-.73l1.47-17.8z" stroke="#787878"/><path d="m134.43 28.1a8.26 8.26 0 0 0 2.4-1.47.73.73 0 0 0 0-1.05 2.52 2.52 0 0 0 -1.56-.41c-.42 0-.63.2-.73.73 0 .52-.42.94-.84 1.25a10.47 10.47 0 0 0 -4.6 6.18c-.22.84 0 1.05.72.53a11.3 11.3 0 0 0 3.88-5.03c.1-.42.42-.63.73-.73zm-13.4 5.44 8.38-4.08a.53.53 0 0 0 .2-.42.53.53 0 0 0 -.1-.42l-.31-.42c-.42-.52-.95-.63-1.57-.31-2.83 1.57-6.29 2.82-8.38 5.65-1.5 2.1-3.14 4.1-4.92 5.97l.31.2a42.28 42.28 0 0 0 6.39-6.17z" stroke="#e3e4e6"/><path d="m157.25 62.96v1.05" stroke="#b7b6b7"/><path d="m157.15 64c-.84.32-1.57.85-2.2 1.47-.52.53-.42.74.31.84h1.16c.84.42 1.04.84.52 1.26-.31.31-.42.63-.1 1.04.41.84.41 1.78 0 2.62a17.6 17.6 0 0 0 -1.05 8.8" stroke="#dddddf"/><path d="m155.79 80.03a67.33 67.33 0 0 1 -4.3 5.55c-.41.41-.3.62.22.52.62-.52 1.15-.63 1.78-.52.73.2.83.62.2 1.15l-3.45 3.77.1.41c.21.21.42.21.63 0 2.41-1.57 4.4-3.56 5.97-5.86" stroke="#b7b6b7"/><path d="m156.84 85.05c2.3-1.67 3.14-3.77 5.96-4.19.42 0 .74-.2.84-.62a5.6 5.6 0 0 0 -.31-2.73" stroke="#dddddf"/><path d="m163.33 77.51c.31-.31.42-.62.42-.94" stroke="#b7b6b7"/><path d="m163.75 76.57c.41 0 .62 0 .83-.31a.42.42 0 0 0 -.1-.63h-.84c-.52 0-.84-.21-1.05-.63a9.42 9.42 0 0 1 -.83-6.07 2.08 2.08 0 0 1 1.25-1.47c1.68-.73 2.93-2.72 2.52-4.6-.1-.95 0-1.78.41-2.62.21-.42.21-1.05 0-1.47-.62-1.04-.52-2.1.42-3.14a.62.62 0 0 0 -.1-.73l-.21-.21-.21-.1c-.42-.21-.73-.21-.84.2a10.25 10.25 0 0 1 -2.1 2.52l-1.04.52c-1.88.21-3.66.84-5.44 1.68a.84.84 0 0 0 -.53.73c0 .63.32 1.05.95 1.25a1.25 1.25 0 0 1 .52 1.05v.42" stroke="#dddddf"/><path d="m163.75 76.57-.42-.31a1.05 1.05 0 0 0 -1.05-.1c-.94.3-2.3.2-2.72-.85-.32-.3-.42-.83-.53-1.36 0-.31-.2-.42-.62-.31h-.53c-.2 0-.31.2-.31.52.42 2.41-.21 4.4-1.78 5.76m1.36-15.91c.2.52.52.94 1.05 1.04a1.25 1.25 0 0 0 1.57-1.15l-.1-.94a1.05 1.05 0 0 0 -.95-.63c-.63 0-1.05.21-1.36.63" stroke="#a4a3a6"/><path d="m163.33 77.51h-3.77c-.42 0-.74.1-.84.42l-1.78 7.12" stroke="#a4a3a6"/><path d="m158.3 114.47-.31.31c-.42.32-.32.63.2.74h.84c.42-.1.63-.42.74-.84l.63-2.83c.1-.62 0-.73-.53-.2a5.67 5.67 0 0 0 -1.46 2.5v.32" stroke="#b7b6b7"/><path d="m164.58 62.23c.32-.21.32-.53 0-.84a.84.84 0 0 0 -1.04-.1l-.21.2-1.89 2.2c-.31.42-.2.63.32.63 1.25 0 2.1-.63 2.61-1.78 0-.1 0-.2.21-.31z" stroke="#a4a3a6"/><path d="m174.43 124.63c-.42 1.04-.42 2.5 0 4.5.52 2.62.2 5.34-.95 8.37a1.04 1.04 0 0 1 -.73.53l-3.14 1.15c-.53 0-.73.31-.73.84 0 1.04.41 3.14-.42 4.19-.32.3-.63.41-.95.52-.43.16-.8.45-1.04.84l-.53 1.88c-.83 2.1-.2 2.62 1.78 1.78l2.1-1.36.52-1.05c.53-1.67.84-3.35 1.89-4.7a18.68 18.68 0 0 0 4.18-11.53c0-.52.21-.83.53-1.15l1.78-1.36c.31-.31.52-.63.63-1.05l1.15-6.17" stroke="#dddddf"/><path d="m180.5 120.86a3.87 3.87 0 0 0 1.57-3.14c0-.42-.32-.63-.84-.42-.84.42-1.47 1.25-1.78 2.72a1.05 1.05 0 0 1 -.73.63 1.04 1.04 0 0 1 -1.05-.1l-1.05-1.05c-.41-.42-.63-.32-.83.31l-1.36 4.82" stroke="#a3a3a3"/><path d="m180.5 120.86c-2.52 3.14-4.6 4.5-6.18 3.77" stroke="#909092"/><path d="m134.33 202.1a2 2 0 0 1 0-1.67 8.38 8.38 0 0 0 1.15-4.4c.2-1.88-.21-1.99-1.05-.31a12.13 12.13 0 0 0 -1.05 7.32c0 1.05.63 1.68 1.47 2.1.63 0 1.05.31 1.26.84l1.04 1.04h1.05a16.55 16.55 0 0 0 3.35-3.24c1.67-2.3.31-4.61-.42-6.8-.31-.74-.52-.74-.84 0-.41 1.46-.52 3.66-2.4 4.08-.42 0-.63.3-.84.52-.32.42-.42.73-.42 1.04 0 .32-.21.53-.52.74-.63.31-1.26 0-1.78-1.26z" stroke="#dddddf"/><path d="m126.58 151.22a18.63 18.63 0 0 1 2.4-7.01 1.05 1.05 0 0 0 0-1.05v-.32c-.3-.31-.62-.31-1.04 0-1.67 1.37-1.05 2.62-1.36 4.5l-1.15 5.56a.52.52 0 0 0 .31.62c.21 0 .42 0 .63-.2.2-.22.42-.42.42-.63l-.21-.63z" stroke="#a4a3a6"/><path d="m169.5 167.24a30.91 30.91 0 0 1 -3.76 3.45c-1.16.84-1.89 1.57-2.1 2.2a3.77 3.77 0 0 0 0 3.35" stroke="#dddddf"/><path d="m163.64 176.35c-1.15 1.15-1.36 2.3-.42 3.24.21.32.21.73 0 1.05l-1.46 2.1" stroke="#a3a3a3"/><path d="m161.76 182.63a4.85 4.85 0 0 0 -1.26 4.08c0 .31.31.63.73.73 1.16 0 2.3-.2 3.35-.52" stroke="#dddddf"/><path d="m164.58 186.82c.95.73 1.68 1.04 2.3 1.04" stroke="#b7b6b7"/><path d="m166.89 187.86c2.72-.94 4.29-2.51 4.81-4.81.1-.53 0-.84-.52-.84a5.11 5.11 0 0 1 -2.4-1.36c-.22-.21-.32-.53-.22-1.05a9.43 9.43 0 0 1 5.03-7.33.73.73 0 0 0 .31-.84l-.31-.3a4.51 4.51 0 0 1 -2.41-2.73" stroke="#dddddf"/><path d="m171.18 168.6c.2-1.68 1.05-3.14 2.51-4.6 1.05-.84 1.05-1.06-.31-.74a6.5 6.5 0 0 0 -3.98 3.98" stroke="#b7b6b7"/><path d="m171.18 168.6c-.84.42-1.47 0-1.78-1.36m-2.51 20.52c-.53-1.05-.74-2-.42-2.72.1-.53.42-.74.84-.63.83 0 1.36-.32 1.78-1.05v-.31a.64.64 0 0 0 -.32-.42h-.2c-2.73.1-4.1 1.57-3.99 4.19" stroke="#a4a3a6"/><path d="m161.76 182.63c1.04 0 1.88-.32 2.4-1.05.42-.31.53-.73.53-1.26 0-1.04.63-1.98 1.78-2.61.84-.32.84-.74 0-1.05h-.53c-.62-.2-.62-.63-.2-1.05l4.92-3.14h.1c.21-.31 0-.52-.2-.63a1.04 1.04 0 0 0 -.74-.1c-2.52.8-4.72 2.38-6.28 4.5" stroke="#909092"/><path d="m143.22 214.04a1.05 1.05 0 0 0 -.41.84l-.63 9a1.05 1.05 0 0 0 1.78.84l18.32-16.75a1.05 1.05 0 0 0 .2-1.26c-.03-.16-.1-.3-.2-.42l-5.44-4.19a1.05 1.05 0 0 0 -1.26 0l-12.36 12.04z" stroke="#dddddf"/></g><path d="m41.36 185.46c-4.5-2.1-9.43-5.76-11.1-10.68a74.13 74.13 0 0 0 -5.97-13.82c-9.42-4.93-12.98-12.46-10.68-22.62 0-.52 0-1.05-.42-1.46-5.55-7.44-6.6-15.7-3.14-24.71.1-.32 0-.73-.31-1.05-5.66-6.07-5.24-16.75-3.88-25.02.63-4.71 3.77-7.85 5.03-12.36a22.72 22.72 0 0 1 12.25-14.86c.42-.32.63-.74.84-1.15 1.25-4.2 4.18-8.17 9-12.04 1.68-1.26 3.46-1.37 5.24-2.1.41-.2.62-.42.73-.84 3.65-18.21 20.94-23.75 37.37-19.05a1.47 1.47 0 0 0 1.58-.42c2.72-3.14 5.96-6.28 9.84-7.64 3.03-1.05 5.86-2.51 8.9-2.51 20.72-.84 41.25 2.4 57.58 13.08a193.33 193.33 0 0 1 18.53 14.56 53.04 53.04 0 0 1 10.16 12.04c4.08 7.01 9 14.76 9.1 22.4.21 8.27.21 16.75.1 25.34.04.96.41 1.89 1.05 2.61l10.27 13.1.52 1.25c.5 10.95.5 21.92 0 32.87 0 .53-.21 1.05-.63 1.26l-10.89 13.5c-.35.34-.78.6-1.25.74-2.3.83-4.5 2.2-6.7 4.19a11.52 11.52 0 0 0 -2.94 5.54c-2.09 8.06-4.5 16.55-7.22 25.44-.73 2.3-1.47 4.92-1.57 7.33 0 8.8-.31 17.28-.73 25.44 0 .53-.21 1.05-.63 1.58a70.15 70.15 0 0 1 -29.94 23.24 155.28 155.28 0 0 1 -25.45 7.95 66.25 66.25 0 0 1 -29.31-3.35 71.93 71.93 0 0 1 -39.78-27.95 3.16 3.16 0 0 1 -.53-1.67c-.42-11.2-.63-22.62-.73-33.93 0-2.3-.42-4.5-1.26-6.6a48.4 48.4 0 0 1 -1.99-6.27c-.1-.74-.52-1.05-1.04-1.26v-.1zm51.82-117.79 12.77-.84c.42 0 .63-.2.63-.73l.21-4.92v-2.51c0-.42-.31-.63-.84-.53-8.06 1.05-15.8-1.04-20.3-8.27-4.5-7.32-4.3-14.86.62-22.3 4.6-7.01 12.15-8.58 20.1-8.06a.42.42 0 0 0 .32-.42l.31-.83a.32.32 0 0 0 -.1-.42.42.42 0 0 0 -.32-.1c-11.1-1.16-19.58 2.09-25.75 9.83-2 2.41-3.35 3.88-4.2 7.12-3.97 15.7 1.58 26.7 16.55 32.98zm18.74 7.23v11.62c0 .42.31.63.84.63l18.84-2.52a6.38 6.38 0 0 0 3.67-1.78c4.19-3.24 7.95-6.6 11.1-9.84.31-.42.52-.84.52-1.25l5.24-40.2c0-.43-.22-.74-.53-1.05a115.7 115.7 0 0 0 -31.5-11.31 46.18 46.18 0 0 0 -7.44-.84c-.42 0-.62.21-.62.63l-.21 55.8.1.1zm-11.72-21.15c2.1.31 3.98.2 5.76-.1.42-.22.63-.53.74-.95v-4.92l.1-2.72c0-.32-.2-.53-.63-.53h-2.51c-2.72.1-4.5-.73-5.44-2.5-1.05-6.4 1.25-9.85 7.01-10.48 1.68.32 2.1-1.67 1.47-5.76a.72.72 0 0 0 -.74-.73c-12.88-2.83-20.95 7.34-16.96 19.47 1.89 5.55 5.66 8.59 11.2 9.22zm-55.49-9.95c-.31 4.05.22 8.11 1.57 11.94a.63.63 0 0 0 .83 0l2.73-3.25c4.7-5.76 11.2-7.85 19.26-6.07.21.2.52.2.73.1.32 0 .53-.2.53-.62.1-3.35-1.47-5.45-4.92-6.18-3.14-.63-5.97-.84-8.59-.42-.73 0-.84-.21-.2-.63 4.5-4.19 9.2-5.02 13.92-2.51.42.2.73.1.73-.42.31-2.1 1.15-4.19 2.4-5.86.43-.63.22-.95-.52-1.05-.42 0-1.25-.2-2.5-.73-1.06-.42-4.2-.53-9.43-.32-2.41 0-4.5.53-6.28 1.68-5.67 3.34-9.64 7.64-10.37 14.34h.1zm67.73 59.05-.3 1.15a39.23 39.23 0 0 0 0 8.59c0 .2.1.31.4.2v.74l-.51 22.5v12.89c.41.94.41 1.36 0 1.36v10.68l.52 16.54v.1c2.04-.95 4-2.07 5.86-3.35l.95-39.57c0-.42 0-.84.3-1.15l10.27-14.98c.31-.41.63-.62 1.05-.62 10.36-.32 20.73-.42 31.4-.42 2.1 0 3.46 1.67 4.82 3.03a1.26 1.26 0 0 0 1.89-.83 142.8 142.8 0 0 1 3.14-18.74c.62-2.2.31-4.2-1.05-6.08-2.62-3.66-6.5-9.73-5.76-14.45a387.07 387.07 0 0 0 3.67-36.32 356.13 356.13 0 0 0 -12.05-10.06.31.31 0 0 0 0 .21v.1l-6.28 40.53c0 .41-.1.83-.52 1.25l-14.03 12.25a209.7 209.7 0 0 1 -23.45 3.56c-.53 0-.73.21-.63.73l.31 10.06zm-9.2-63.13 3.76-.84a.42.42 0 0 0 0-.52v-.21c0-.21 0-.42-.2-.63l-.64-.42a2.1 2.1 0 0 0 -.73-.2l-.84.1-.31.1-.73.31c-.2.15-.39.32-.53.53l-.31.63v.94a.31.31 0 0 0 .2.2.32.32 0 0 0 .32 0zm-72.26 17.38c2.3-2.1 4.92-3.25 7.96-3.35.52 0 .84-.32.73-.94l-.42-2.41c0-.32-.2-.42-.42-.53-1.04-.1-1.88-.2-2.61.42a22.72 22.72 0 0 0 -5.66 5.76c-.31.21-.31.42 0 .63v.42a.21.21 0 0 0 .36.15.2.2 0 0 0 .06-.15zm155.47 17.06c-.2-7.95-6.6-18-11.83-23.66a.41.41 0 0 0 -.33-.09.42.42 0 0 0 -.3.2l-4.4 31.72c0 .42.11.84.32 1.15l15.7 25.13c.53.63.74.63.74-.21.41-11.4.41-22.83 0-34.24zm-93.7 2.41c1.78.21 3.56-.63 5.24-2.4.2-.43 0-.53-.32-.64l-11.5-3.13a31.83 31.83 0 0 1 -12.25-13.2 7.85 7.85 0 0 0 -7.33-5.86c-9.53-.84-14.87 3.24-16.13 12.14-.62 3.67-5.02 5.24-8.06 3.35a1.57 1.57 0 0 0 -2.5 1.26c-.11 5.76 2.3 9 7.21 9.84 7.02 1.05 11.73-4.08 11.84-10.89.3-4.4 5.23-5.65 8.37-3.14.31.32.52.74.63 1.05 2.93 7.43 7.43 11.94 13.6 13.61 3.36.84 7.02.21 11.21-1.99zm-23.54 7.43 2.09-2.93a1.05 1.05 0 0 0 0-1.25 8.59 8.59 0 0 0 -5.03-3.46c-2.82-.52-5.23 1.57-7.01 3.14-3.35 3.04-8.9 3.56-13.2 2.93a12.35 12.35 0 0 1 -10.25-17.38c1.25-3.24 3.98-4.5 8.16-3.66 1.16.21 1.26 0 .42-.73-2.62-2.1-5.34-2.52-8.37-1.05-4.92 2.51-7.33 9.42-7.12 14.55.42 13.61 12.88 21.36 25.86 19.37 5.97-.84 10.78-3.98 14.45-9.42zm-43.98-18.84c.84-1.68.42-2.1-1.04-.94-8.38 5.23-10.47 12.56-6.7 21.98.31.74.52.74.83 0 .74-2.61 2.41-4.81 4.82-6.8.35-.3.57-.7.63-1.15.2-3.88-.42-9.85 1.46-13.2v.1zm31.41 52.87a44.6 44.6 0 0 1 34.76-2.83 13.61 13.61 0 0 1 10.37 13.1l.62 9.62c-.73-.31-1.04-1.36-.83-3.14a2.3 2.3 0 0 0 -.84-1.88l-.31-.32a.63.63 0 0 0 -.74 0l-.1.32a60.61 60.61 0 0 0 -1.26 8.58c0 .74-.2 1.26-.63 1.78-.42.53-.52.42-.42-.1.63-2.1.1-3.67-1.46-4.6-1.26-.64-2.3-.32-3.35.83a10.47 10.47 0 0 1 -4.09 2.3l1.58-2.62c2.09-3.14 1.57-3.76-1.78-2.09-7.23 3.77-14.66 3.67-22.3-.42-2.1-1.05-2.62-.52-1.58 1.68l1.26 2.4c-2.4-2.09-4.08-3.14-4.92-3.34a42.23 42.23 0 0 0 -5.65-3.15c-1.59-.68-3.01-1.67-4.2-2.93a24.27 24.27 0 0 1 -3.13-4.4.73.73 0 0 0 -1.05.22c-2.51 4.18-3.66 9-3.66 14.23 0 16.23 1.88 31.73 5.65 46.49 5.24 20.41 17.28 35.6 36.02 45.54 7.85 4.19 15.18 5.55 22.2 4.3v-24.3c0-.42-.22-.62-.74-.62a15.69 15.69 0 0 0 -8.59 1.15 5.24 5.24 0 0 1 1.05-4.4c.31-.31.21-.63-.1-.73l-4.93-2.72-.41-.53a.42.42 0 0 1 .41-.63l.21.1a22.27 22.27 0 0 0 12.57 1.37.73.73 0 0 0 .73-.73l-.31-4.92a1.37 1.37 0 0 0 -.63-1.05 9.24 9.24 0 0 0 -3.56-1.57c-6.28-.73-10.89.31-13.82 3.14-.42.42-.73.42-1.05 0l-2.1-3.35c-.2-.42-.3-.84-.1-1.26.42-1.67 1.47-2.51 3.14-2.72.32 0 .53 0 .84.21.42.42.63.84.63 1.26 0 .52.2.73.73.63l.74-.53 7.53-1.88c2.62-.84 4.4-.21 6.8.41.53.22.74 0 .85-.41.2-.63 0-1.16-.21-1.68l-3.46-7.01c-.2-.42-.52-.63-.94-.63h-7.33c-6.7-6.8-6.28-13.82 1.47-20.94 1.25.52 1.46 1.78.63 3.77-3.36 1.78-4.5 5.13-3.46 9.94a22.07 22.07 0 0 1 4.92-1.57c3.14-.52 5.24 1.47 7.75 2.83.42.21.73 0 .73-.31.21-.74.21-1.36 0-1.89v-91.6l-.42-7.86c0-.63-.31-.73-.73-.2a19.16 19.16 0 0 1 -6.8 4.28 106.9 106.9 0 0 1 -15.71 3.77c-7.43 1.16-10.47 5.66-16.65 9.43-10.89 6.38-17.27 14.44-16.02 28.06.42 4.08 2.41 6.8 5.87 8.16a1.04 1.04 0 0 0 1.04-.31c2.83-3.14 5.45-6.8 9.64-8.27a90.93 90.93 0 0 1 14.24-4.09c.62 0 .62-.2 0-.52a28.12 28.12 0 0 0 -12.78-1.78c-1.04.1-3.14.63-5.76 1.57-2.09.73-3.97 1.26-5.96 1.47v-.1h-.1zm-29.63-13.61c7.75 5.97 20.31 5.65 24.08-4.71.21-.42.1-.63-.31-.73l-5.86-1.05c-1.57-.21-3.67 0-6.6.42-3.14.63-5.44-.63-6.8-3.56-1.26-2.41-.21-4.3-2.73-6.28a6.8 6.8 0 0 1 -1.99-2.62c-.94-2.1-1.88-2.1-2.82 0-3.14 6.39-2.1 12.56 3.14 18.53h-.1zm-8.27 6.07c2.1.42 3.88 0 5.24-1.25.31-.21.31-.53 0-1.05l-4.71-6.28-7.33-15.29c-.21-.42-.42-.42-.63 0-4.92 8.7-3.14 20.63 7.43 23.87zm106.06 28.27-.63-.31c-.52 0-.73.2-.73.63v30.36l-.32 7.22a1.99 1.99 0 0 1 -1.04 1.68l-9.11 4.6a1.47 1.47 0 0 0 -.73 1.26l-.42 8.37c0 .63.2.95.83.95h7.75l5.03.41c.42 0 .83.22 1.15.53a13.6 13.6 0 0 1 5.02 9.42c.1.53.42 1.05.84 1.36l4.92 4.19c.42.31.84.31 1.05 0 4.4-4.92 8.8-9.21 13.3-12.98.31-.32.52-.73.62-1.26l5.24-25.96c0-.42.2-.84.63-1.26l25.12-24.18c.42-.32.53-.74.53-1.26v-27.22c.04-.62-.1-1.24-.42-1.78l-5.97-8.59a.42.42 0 0 0 -.26-.38.42.42 0 0 0 -.16-.03.42.42 0 0 0 -.31.41l-4.71 21.57a5.59 5.59 0 0 1 -2.41 3.14c-.32.21-.53.42-.73.84a6.63 6.63 0 0 1 -1.47 2.83 139.6 139.6 0 0 0 -12.04 13.82h-17.28c-.52 0-.83 0-1.25-.42l-4.82-5.76c-1.67-2.1-4.19-2.83-7.33-2.4v.1l.1.1zm64.91-29.31-.42 11.1v20.93l.53 15.18a2.9 2.9 0 0 0 0 1.89c.2.52.41.52.73 0l7.22-8.48c.47-.56.73-1.26.73-2v-27.74a3.7 3.7 0 0 0 -.94-2.4l-7.33-10.16c-.41-.42-.62-.42-.83.1 0 .53 0 1.05.31 1.47v.1zm-144.69 2.4-9.21 1.57-4.92 2.52c-.42.31-.84.31-1.26.1l-3.66-1.36a2.19 2.19 0 0 0 -3.14 1.88c-.42 5.45 2.61 8.48 7.95 9a12.56 12.56 0 0 0 13.09-6.9c1.67-3.14 2.1-5.24 1.05-6.8h.1zm-10.89 25.97c1.68 0 3.04-1.26 3.98-3.67.1-.41 0-.73-.52-.83l-7.23-.84c-8.69-2.62-12.98-8.27-12.87-16.75 0-.53-.21-.84-.74-.84-.73 0-1.36.2-1.88.52-.42.32-.63.63-.63 1.05-1.99 8.9.42 15.8 7.12 20.94 4.19 3.14 8.38 3.14 12.77.42zm34.03-11.41c8.58-4.4 16.44-3.14 23.45 3.97h.1l.42-.3a.63.63 0 0 0 0-.85c-6.49-8.58-14.23-10.68-23.24-6.17a11.52 11.52 0 0 0 -5.76 6.6c-.2.83 0 .93.53.2a15.71 15.71 0 0 1 4.5-3.45zm81.35 16.12a10.06 10.06 0 0 0 5.97-5.13 10.9 10.9 0 0 0 -4.4-14.24 10.05 10.05 0 0 0 -7.75-.94 10.05 10.05 0 0 0 -5.97 5.13 10.89 10.89 0 0 0 4.3 14.24 10.3 10.3 0 0 0 7.85.94zm-79.05-12.35-2.1 1.78c-1.14 1.04-1.04 2.09.22 2.93 5.23 3.24 10.05 3.87 14.55 1.78 3.25-1.47 4.4-3.14 3.56-4.92-5.55-5.55-10.89-6.08-16.12-1.57h-.1zm-51.82 16.42c1.15 4.82 4.5 7.96 9.94 9.42h3.46a.52.52 0 0 0 .68-.43c.01-.1 0-.2-.05-.3l-.32-.31a86.44 86.44 0 0 1 -9-10.26 5.23 5.23 0 0 0 -3.88-2.2c-.41 0-.73.2-.83.63-.21 1.05-.21 2.2 0 3.45zm158.72 23.77 5.65-6.07a3.65 3.65 0 0 0 1.05-2.52v-9.84c0-1.15-.42-1.36-1.26-.63a352.77 352.77 0 0 0 -19.9 19.8 7.26 7.26 0 0 0 -1.67 3.34l-3.56 16.75v.74a33.08 33.08 0 0 0 10.16 8.9 1.04 1.04 0 0 0 1.05-.74 323.19 323.19 0 0 0 7.74-28.37c.1-.52.32-1.05.74-1.36zm-136.53 6.28-1.36-9.63c-.42-2.51-2.93-4.6-7.54-6.28a40.44 40.44 0 0 0 2.94 11.51c1.2 2.5 3.09 4.6 5.44 6.08h.2a.53.53 0 0 0 .43-.42c.1-.32 0-.74-.1-1.26zm94.23 37.59c-2.1-2.2-4.5-4.5-7.12-6.8a3.77 3.77 0 0 1 -1.15-2.73c.2-2.83-1.68-5.76-4.92-5.97l-9.64-.2c-.2 0-.3.1-.3.41v7.33c0 .42.1.52.51.52h9.43c2.1 0 3.87 0 5.65 1.57l6.91 6.6c.1.05.22.07.33.05a.53.53 0 0 0 .3-.16.53.53 0 0 0 0-.62zm6.39-1.26c-.21.2-.32.52-.32.84l-.31 13.6a1.25 1.25 0 0 0 1.36 1.06l.63-.11 22.5-20.52a1.27 1.27 0 0 0 .28-1.37c-.06-.16-.16-.3-.27-.41l-7.96-6.6a1.25 1.25 0 0 0 -1.57 0l-14.34 13.62zm-90.04 9.95.1 6.28c.21 1.78.84 3.45 1.89 4.81a64.58 64.58 0 0 0 19.26 16.75 69.68 69.68 0 0 0 24.29 8.7c1.67.41 1.67.2.2-.74a100.47 100.47 0 0 1 -35.8-34.02l-7.43-11.52c-.84-1.26-1.05-2.51-1.68-3.77-.41-.94-.52-.84-.52.1l-.31 13.4zm61.14 1.67-.31 8.06v5.24c0 .42.3.73.73.73 3.35 0 6.8-.2 10.47-.42 4.4-.2 8.16-3.56 11.2-6.18l.52-1.25a35.5 35.5 0 0 0 0-8.17c0-.42-.31-.84-.62-1.25l-5.97-5.66c-1.57-1.67-2.83-2.83-5.24-3.14h-10.05c-.42 0-.63.1-.63.53zm48.68-5.55c-3.97 2.51-5.97 5.03-6.17 7.75l-.63 17.28a.52.52 0 0 0 .31.41h.52c3.04-2.5 12.05-10.47 12.25-14.55.21-5.65 0-10.89-.62-15.8 0-.74-.21-.74-.74-.32zm-11.4 12.04a.73.73 0 0 0 -.74-.94.74.74 0 0 0 -.53.21.73.73 0 0 0 -.3.52l-1.47 17.8a.74.74 0 0 0 .73.84.73.73 0 0 0 .83-.42v-.31l1.47-17.8v.1z" fill="#000"/><path d="m106.8 61.18c-12.15 2.51-21.16-1.36-26.81-11.52l-2.2-3.97c-.31-.53-.42-.53-.42 0 0 3.76.84 7.12 2.62 9.84 3.14 5.23 7.33 8.69 12.77 10.47.42.2.63.83.32 1.67-14.88-6.27-20.31-17.27-16.55-32.97.84-3.14 2.2-4.7 4.2-7.22 6.06-7.64 14.65-10.89 25.75-9.84a.41.41 0 0 1 .27.2c.03.04.05.1.05.15a.4.4 0 0 1 0 .17v.94a.42.42 0 0 1 -.2.41.42.42 0 0 1 -.44.01c-7.85-.52-15.39 1.15-19.89 7.96-5.02 7.43-5.23 14.87-.73 22.4 4.5 7.33 12.25 9.43 20.3 8.17.53 0 .74.2.74.73l.21 2.52v-.1z" fill="#f0f0f0"/><path d="m111.82 77.1c2.93.2 5.86 0 9.1-.84.42-.21.74-.42.84-.74l1.78-3.35c.32-.83.73-1.57 1.36-2.09 3.42-3.57 7.02-6.96 10.79-10.16l1.15 2c.42.41.73.41 1.15 0 2.51-2.1 4.92-1.05 6.7-4.61.21-.53.63-.84 1.26-.84.42 0 .73-.1 1.04-.42.21-.2.42-.52.53-1.05l.52-5.65v-.42c0-.2-.1-.31-.42-.42-.31-.1-.52 0-.73.21-.73 1.68-1.47 3.35-2.93 4.19a18.23 18.23 0 0 0 -5.24 3.98c-.83.94-1.88 1.25-2.82 1.78-3.77 1.05-6.39 2.4-8.07 4.08-1.25 1.36-2.82 4.19-4.92 8.7a16.07 16.07 0 0 0 -4.81 2.92c-.32.21-.63.32-1.05.21-1.78-.1-3.56 0-5.23.32v-55.91c0-.42.2-.63.73-.63 2.4 0 4.92.31 7.33.84 11.3 2.2 21.78 6.07 31.62 11.41.31.2.41.52.41 1.05l-5.23 39.99c0 .52-.1.94-.52 1.26a129.8 129.8 0 0 1 -10.9 9.94 7.12 7.12 0 0 1 -3.86 1.78l-18.85 2.52c-.42 0-.63-.21-.63-.63v-9.43h-.1zm22.61-49a8.26 8.26 0 0 0 2.4-1.47.73.73 0 0 0 0-1.05 2.52 2.52 0 0 0 -1.56-.41c-.42 0-.63.2-.73.73 0 .52-.42.94-.84 1.25a10.47 10.47 0 0 0 -4.6 6.18c-.22.84 0 1.05.72.53a11.3 11.3 0 0 0 3.88-5.03c.1-.42.42-.63.73-.73zm-13.4 5.44 8.38-4.08a.53.53 0 0 0 .2-.42.53.53 0 0 0 -.1-.42l-.31-.42c-.42-.52-.95-.63-1.57-.31-2.83 1.57-6.29 2.82-8.38 5.65a40.8 40.8 0 0 1 -4.92 5.97l.31.2c2.3-1.77 4.4-3.76 6.18-5.85zm-15.91-1.99c-3.77-1.57-7.96.53-9.43 4.4-1.04 2.51-.2 4.5 2.52 6.07.83 1.78 2.5 2.62 5.23 2.51h2.62c.42 0 .63.21.63.53v2.82c-8.27.53-14.66-1.04-16.75-9.84a.2.2 0 0 0 -.1-.1.21.21 0 0 0 -.22 0c-.63 5.55 1.78 12.46 7.64 13.6l2.52.43c.41.1.63.42.73.84 0 .41-.1.62-.52.94-5.45-.63-9.22-3.67-11.1-9.32-4.08-12.15 4.08-22.2 16.96-19.58.42.1.63.42.73.84.63 4.19.21 6.18-1.46 5.86z" fill="#fdfdfd"/><path d="m133.7 28.73a9.56 9.56 0 0 1 -3.88 4.92c-.83.62-1.04.41-.73-.42a11.52 11.52 0 0 1 4.6-6.28c.43-.21.74-.63.85-1.16 0-.31.31-.52.73-.62.63 0 1.15.1 1.46.52a.73.73 0 0 1 0 .94 7.8 7.8 0 0 1 -2.3 1.47 1.04 1.04 0 0 0 -.73.63z" fill="#c9cace"/><path d="m68.9 46.42c0-2.1-2.1-3.14-6.3-2.83-4.7.21-8.68 2-11.82 5.24a1.05 1.05 0 0 1 -1.47-.32l-2.4-4.7c-.32-.64-.63-.64-.95 0l-.42.62c-.31.31-.52.31-.83 0v-.63c.62-6.7 4.6-11 10.15-14.34a13.2 13.2 0 0 1 6.39-1.68c5.23-.2 8.37 0 9.53.32l2.4.73c.74.1.95.42.53 1.05a12.7 12.7 0 0 0 -2.41 5.86c0 .52-.21.63-.73.42-4.82-2.51-9.43-1.78-13.93 2.51-.63.42-.52.63.21.63 2.51-.42 5.34-.21 8.7.42 3.34.73 5.02 2.83 4.91 6.28 0 .2-.2.42-.63.52l-.73-.1z" fill="#fdfdfd"/><path d="m121.03 33.54-.21.32a42.01 42.01 0 0 1 -6.28 5.86l-.21-.21v-.32a63.82 63.82 0 0 0 5.03-5.75c2.09-2.83 5.44-4.09 8.37-5.66.52-.31 1.05-.2 1.47.32l.31.42a.51.51 0 0 1 .12.47.52.52 0 0 1 -.33.36l-8.27 4.2zm-15.91-1.99c-5.76.63-8.07 4.09-6.91 10.47-2.62-1.57-3.46-3.56-2.52-6.28 1.47-3.66 5.55-5.76 9.43-4.19z" fill="#c9cace"/><path d="m111.82 160.96a3.3 3.3 0 0 0 2.4.52c.74 0 1.05.2 1.26.73l.21 1.15c0 .32.21.42.52.32.21 0 .32 0 .42-.32.42-2.72.42-5.75-.2-8.9-.22-.62-.32-1.15-.22-1.67.84-5.03.84-10.16.1-15.18l6.5-12.04c.1-.31 0-.42-.31-.42a6.6 6.6 0 0 0 -2.94 2.4 45 45 0 0 1 -6.8 8.38l-.84.1.52-22.5h5.03c.52 0 .94-.1 1.26-.42l5.44-4.5a.74.74 0 0 1 .63-.1c.2 0 .42.1.42.41.31.53.73.53 1.25 0 .32-.31.53-.63.53-1.05l5.97.84.62.32c.21 0 .42.31.53.42a10.15 10.15 0 0 1 1.25 5.44.72.72 0 0 0 .14.55.73.73 0 0 0 .5.29c1.46 0 2.5-.73 2.92-2.3 1.05-3.04 1.57-5.76 1.26-8.17l8.8-11.1a1.47 1.47 0 0 0 .3-1.57c-.62-1.15-.52-2.2.22-3.14l-.42-.1a.52.52 0 0 0 -.42 0l-3.87 6.8-4.93-.94c-.41 0-.73-.32-1.04-.74l-.21-.41c0-.63-.31-.74-.84-.53-.84.42-1.57.94-2.1 1.57-.62 1.05-2.3 1.26-3.24 2.1a5.56 5.56 0 0 1 -4.19 1.36c-1.36 0-1.46-.63-.52-1.57a5.24 5.24 0 0 0 1.89-3.56.74.74 0 0 0 -.32-.53l-.31-.1c-2.62-.31-5.03-.21-7.44.31-.94 0-1.78.21-2.5.63-.43.52-.71 1.13-.85 1.78 0 .42-.31.63-.73.63h-.84c-.42 0-.73.1-1.04.42a9.74 9.74 0 0 0 -2 5.65c-.41.42-.83.73-1.46.73l-.1-9.94c0-.53.2-.73.62-.84 7.65-.63 15.08-1.67 22.2-3.14.52 0 1.05-.2 1.26-.63l14.02-11.93c.32-.42.53-.84.63-1.36l6.18-40.42v-.1a.31.31 0 0 1 0-.21.3.3 0 0 1 .31-.1l.1.1c3.96 3.22 7.8 6.57 11.53 10.05l.2.63a447.38 447.38 0 0 1 -3.76 35.6c-.74 4.7 3.14 10.78 5.65 14.44 1.26 1.89 1.78 3.88 1.26 6.28a132.7 132.7 0 0 0 -3.56 19.06 1.26 1.26 0 0 1 -1.57.31c-1.36-1.25-2.73-3.03-4.82-3.03-10.78 0-21.15.2-31.4.42-.43 0-.85.2-1.16.62l-10.16 14.87c-.2.42-.42.84-.42 1.15l-.83 39.58c0 .31 0 .42-.21.52a40.2 40.2 0 0 1 -5.66 2.93l-.62-16.75zm45.75-98-.31 1.05c-.84.31-1.58.73-2.2 1.36-.53.42-.42.84.41 1.05h.42c.21-.21.42-.21.63 0 .84.31 1.05.73.52 1.15-.3.31-.41.63-.1 1.04.42.84.42 1.78 0 2.62a17.58 17.58 0 0 0 -1.05 8.7 72.33 72.33 0 0 1 -4.29 5.65c-.42.41-.31.62.21.52.63-.52 1.15-.63 1.78-.52.73.2.84.62.21 1.15l-3.46 3.77.1.41c.22.21.43.21.64 0 2.4-1.57 4.4-3.56 5.96-5.86 2.1-1.67 3.15-3.77 5.97-4.19.42 0 .63-.2.74-.62a5.6 5.6 0 0 0 -.32-2.73c.32-.31.42-.62.42-.94.42 0 .73 0 .84-.31a.42.42 0 0 0 -.1-.63h-.84c-.53 0-.84-.21-1.05-.63a9.43 9.43 0 0 1 -.84-6.07 2.1 2.1 0 0 1 1.26-1.47 4.5 4.5 0 0 0 2.62-4.6c-.21-.95 0-1.78.3-2.62.22-.42.22-1.05 0-1.47-.62-1.04-.51-2.1.43-3.14a.63.63 0 0 0 0-.73l-.32-.21-.2-.1c-.42-.21-.74-.21-.84.2a10.25 10.25 0 0 1 -2.1 2.52l-1.04.52c-1.89.21-3.67.84-5.45 1.68a.84.84 0 0 0 -.52.73c0 .63.31 1.05.94 1.25a1.26 1.26 0 0 1 .63 1.05v.42zm.84 51.51-.21.31c-.42.32-.42.63 0 .74h.94c.42-.1.63-.42.73-.84l.63-2.83c.21-.62 0-.73-.52-.2a5.67 5.67 0 0 0 -1.47 2.5v.32z" fill="#f0f0f0"/><path d="m103.13 39.72a.42.42 0 0 1 -.53-.21v-.94l.21-.63.63-.53.63-.3h.52l1.47.1c.42.2.73.52.94.94v.2a.32.32 0 0 1 0 .32.42.42 0 0 1 -.31.21zm3.56 8.16-.1 4.93c0 .41-.22.62-.74.62-1.9.53-3.91.64-5.86.32.42-.32.52-.53.52-.94 0-.42-.21-.74-.73-.84l-2.52-.32c-5.86-1.25-8.26-8.15-7.64-13.6a.21.21 0 0 1 .21-.11h.21c2.1 8.9 8.38 10.47 16.75 9.94zm-37.7-1.46c-8.06-1.78-14.55.31-19.26 6.28l-2.82 2.93a.63.63 0 0 1 -1.05-.2 29.31 29.31 0 0 1 -1.47-11.73v.52c.32.42.63.42 1.05.1l.31-.52c.32-.73.63-.73 1.05 0l2.4 4.6a1.05 1.05 0 0 0 1.47.22 17.96 17.96 0 0 1 11.94-5.24c4.08-.1 6.28.84 6.28 2.93l.1.1zm37.8 14.87-.31 4.92c0 .42-.21.62-.63.62l-12.77.84c.2-.84 0-1.36-.32-1.57a23.45 23.45 0 0 1 -12.76-10.47 19.16 19.16 0 0 1 -2.51-9.94c0-.53.1-.53.31 0l2.2 3.97c5.76 10.26 14.66 14.14 26.7 11.52h.1v.1zm28.9-1.37c.31.21.42-.2.2-1.25 1.05-.63 2-.84 2.83-1.78a20.63 20.63 0 0 1 5.24-4.08c1.46-.74 2.2-2.41 2.93-4.09.2-.31.42-.31.73-.2l.42.41v.42l-.52 5.76c0 .42-.21.73-.63 1.05-.21.2-.52.31-1.05.31-.52 0-.94.2-1.15.84-1.78 3.66-4.19 2.61-6.7 4.7-.42.32-.73.32-1.05-.1l-1.25-2.09z" fill="#c9cace"/><path d="m38.84 53.75a11.2 11.2 0 0 0 -8.06 3.35.21.21 0 0 1 -.2 0l-.32-.42v-.63a25.5 25.5 0 0 1 5.86-5.76c.73-.63 1.57-.52 2.41-.42.31 0 .52.21.63.53l.42 2.4c0 .63-.32.95-.74.95zm135.59-3.35c5.33 5.76 11.72 15.8 11.93 23.76.31 11.62.31 23.04-.1 34.24 0 .84-.32.84-.74.2l-15.7-24.9c-.21-.43-.21-.85-.21-1.27l4.4-31.82c.04-.1.11-.17.2-.21a.42.42 0 0 1 .42.1z" fill="#f0f0f0"/><path d="m86.06 70.4c-3.14 1.88-6.6 1.36-10.05-1.58-3.35-2.82-4.92-8.37-9.1-9.63-4.93-1.67-8.6-.42-10.8 3.67-1.25 2.09-1.25 4.7-2.82 6.6-3.14 3.55-7.01 3.66-11.41.3-.42-.3-.63-.2-.63.42.32 3.88 2.3 5.97 6.28 6.18 5.97.32 9.22-2.83 9.74-9.53a6.39 6.39 0 0 1 5.65-5.86c2.52-.2 5.66 1.57 6.6 4.19a16.12 16.12 0 0 0 9.84 10.68c2.93 1.05 7.33 1.25 13.3.63-4.2 2.09-7.85 2.82-11.2 1.88-6.18-1.67-10.68-6.28-13.62-13.6-.1-.32-.31-.64-.62-.85-3.14-2.61-8.17-1.36-8.38 3.14-.1 6.7-4.92 11.83-11.83 10.68-5.03-.73-7.33-3.98-7.22-9.73a1.57 1.57 0 0 1 2.5-1.26c3.15 1.88 7.34.52 8.07-3.35 1.15-9 6.6-12.98 16.02-12.15 3.77.32 6.28 2.3 7.43 5.87a28.8 28.8 0 0 0 12.25 13.08z" fill="#fdfdfd"/><path d="m163.75 76.57-.42-.31a1.05 1.05 0 0 0 -1.05-.1c-.94.3-2.3.2-2.72-.85-.32-.3-.42-.83-.53-1.36 0-.31-.2-.42-.62-.31h-.53c-.2 0-.31.2-.31.52.42 2.41-.21 4.4-1.78 5.76-.42-2.83 0-5.76 1.25-8.69.22-.84.22-1.78-.2-2.51-.32-.42-.32-.84 0-1.15.41-.42.31-.84-.42-1.26h-1.16c-.73 0-.83-.31-.3-.84.6-.63 1.35-1.1 2.19-1.36.2.53.52.84 1.05 1.05a1.25 1.25 0 0 0 1.57-1.26l-.1-.94a1.05 1.05 0 0 0 -.95-.63c-.63 0-1.05.21-1.36.63v-.42a1.27 1.27 0 0 0 -.52-.94c-.63-.31-.95-.73-.95-1.36a.84.84 0 0 1 .53-.73 17.25 17.25 0 0 1 5.44-1.68c.31 0 .73-.2 1.05-.42l2.1-2.4c.1-.53.41-.63.83-.42l.2.1a.63.63 0 0 1 .32.84c-.83 1.04-1.04 2.1-.52 3.24.2.53.2 1.05 0 1.47-.27.8-.38 1.66-.31 2.51a4.42 4.42 0 0 1 -2.41 4.71 2.1 2.1 0 0 0 -1.26 1.47 9.7 9.7 0 0 0 .73 6.07c.21.42.53.63 1.05.63h.53a.42.42 0 0 1 .52.1.42.42 0 0 1 -.1.53zm.83-14.34c.32-.21.32-.53 0-.84a.84.84 0 0 0 -1.04-.1l-.21.2-1.89 2.2c-.31.42-.2.63.32.63 1.25 0 2.09-.63 2.61-1.78 0-.1 0-.2.21-.31zm-78.52 8.16 11.52 3.14c.42 0 .42.21.2.63-1.67 1.78-3.34 2.62-5.23 2.41-5.76.63-10.26.42-13.19-.63a16.12 16.12 0 0 1 -9.84-10.89c-.94-2.4-4.19-4.18-6.6-4.08a6.39 6.39 0 0 0 -5.65 5.97c-.52 6.6-3.87 9.74-9.95 9.42-3.77-.2-5.86-2.3-6.17-6.28 0-.52.2-.63.73-.31 4.4 3.35 8.17 3.24 11.41-.21 1.68-1.89 1.57-4.61 2.83-6.8 2.2-4.2 5.86-5.35 10.78-3.67 4.19 1.46 5.76 6.7 9.11 9.63 3.46 3.04 6.8 3.56 10.05 1.57z" fill="#c9cace"/><path d="m66.17 76.36c-7.12 17.28-28.69 13.82-34.66-1.88-1.04-2.72-1.46-2.62-1.25.42a18.84 18.84 0 0 0 19.79 17.27 24.08 24.08 0 0 0 17.9-8.37c.31-.1.52-.21.94-.1.21-.01.32-.01.32.3a20.94 20.94 0 0 1 -14.56 9.64c-12.98 1.78-25.33-5.76-25.96-19.48 0-5.02 2.4-12.04 7.33-14.55 2.93-1.47 5.65-1.05 8.27 1.05.84.84.73 1.04-.42.73-4.19-.84-6.8.42-8.17 3.66a12.36 12.36 0 0 0 10.26 17.38c4.2.63 9.95 0 13.09-2.82 1.88-1.68 4.19-3.77 7.12-3.25z" fill="#f0f0f0"/><path d="m135.9 58.67c.2 1.05 0 1.46-.21 1.25-3.77 3.2-7.37 6.59-10.79 10.16a4.5 4.5 0 0 0 -1.36 1.99c-.63.1-.84 0-.73-.52 2.1-4.5 3.77-7.44 5.02-8.8 1.68-1.67 4.3-3.03 8.07-4.08zm28.47 3.87c-.52 1.05-1.36 1.78-2.5 1.78-.64 0-.74-.2-.43-.63l1.89-2.09a.84.84 0 0 1 1.25 0c.32.2.32.42 0 .63l-.2.31zm-7.22 1.47.2-1.05a1.5 1.5 0 0 1 1.27-.63 1.05 1.05 0 0 1 1.04.63v.73a1.28 1.28 0 0 1 -.44.98 1.25 1.25 0 0 1 -1.02.28c-.53 0-.84-.31-1.05-.84z" fill="#7e7b7d"/><path d="m25.13 65.26c-1.89 3.14-1.26 9.11-1.57 12.78a1.78 1.78 0 0 1 -.73 1.25 14.17 14.17 0 0 0 -4.72 6.91c-.2.74-.42.74-.73 0-3.87-9.42-1.67-16.75 6.6-21.98 1.67-1.05 2.1-.74 1.04.83v.21h.1z" fill="#f0f0f0"/><path d="m122.91 71.44c-.2.52 0 .84.63.73l-1.78 3.35c-.1.32-.42.53-.84.74a27.3 27.3 0 0 1 -9 .83v-2.2c1.68-.3 3.35-.41 5.24-.1.31 0 .62-.2.94-.42a15.27 15.27 0 0 1 4.71-2.82v-.1h.1zm-56.74 4.92a8.38 8.38 0 0 1 4.92 3.56c.2.32.2.73 0 1.05l-1.99 3.13c0-.31-.1-.42-.31-.42-.42-.1-.63 0-.95.21a24.81 24.81 0 0 1 -17.9 8.38 18.74 18.74 0 0 1 -19.58-17.37c-.31-3.04 0-3.14 1.15-.42 5.97 15.8 27.54 19.16 34.55 1.88h.1z" fill="#c9cace"/><path d="m163.75 76.57c0 .32-.1.63-.42.94h-3.77c-.42 0-.74.1-.84.42l-1.78 7.12a22.74 22.74 0 0 1 -5.97 5.86c-.2.21-.42.21-.63 0l-.1-.31v-.1l3.45-3.77c.63-.53.53-1.05-.2-1.26-.63 0-1.16.1-1.68.52-.63.21-.73 0-.31-.41a57.51 57.51 0 0 0 4.29-5.55c1.57-1.36 2.1-3.35 1.78-5.76 0-.32 0-.42.31-.42l.53-.1c.31 0 .52 0 .63.3l.52 1.37c.42 1.05 1.78 1.26 2.72.84.31-.32.73-.21 1.05 0l.42.42v-.1z" fill="#7e7b7d"/><path d="m106.69 84.42a348.5 348.5 0 0 0 -29.53 9.84 48.16 48.16 0 0 0 -13.3 8.17 35.28 35.28 0 0 0 -10.56 14.67 1.46 1.46 0 0 0 .32 1.57c1.04 1.05 2.09.94 3.03-.63 2-.2 3.98-.63 5.86-1.26 2.73-1.04 4.72-1.57 5.87-1.67 4.19-.42 8.58.2 12.88 1.78.52.31.52.42 0 .52-4.91.86-9.72 2.23-14.35 4.09-4.19 1.46-6.8 5.02-9.63 8.37a1.05 1.05 0 0 1 -1.05.21c-3.56-1.26-5.44-3.98-5.76-8.16-1.25-13.62 5.03-21.57 16.02-28.17 6.08-3.66 9-8.27 16.65-9.42 5.23-.84 10.36-2.1 15.5-3.67 1.88-.52 4.18-2.09 6.8-4.4.52-.41.73-.3.73.32l.53 7.85zm56.64-6.9c.31.73.42 1.67.31 2.72-.1.31-.42.62-.84.73-2.82.31-3.66 2.4-5.86 4.08l1.78-7.12c.1-.31.42-.42.84-.42h3.77z" fill="#c9cace"/><path d="m44.81 98.03c-1.36 3.77-4.6 5.24-9.74 4.2a14.67 14.67 0 0 1 -10.26-7.34c-.52-.83-.73-.73-.73.21a11.52 11.52 0 0 0 3.77 8.17c.31.42.31.63 0 .94l-.94.21c-5.24-5.76-6.28-11.94-3.14-18.53 1.04-2.1 2.1-2.1 2.93.1.52 1.16 1.05 2.1 1.99 2.73 2.4 1.88 1.46 3.87 2.72 6.28 1.36 2.82 3.66 4.19 6.8 3.66 2.83-.63 5.03-.84 6.5-.52v-.1h.1z" fill="#f0f0f0"/><path d="m106.69 84.42v91.5c-6.18-3.87-10.68-3.45-13.61 1.26-.84-5.02.41-8.37 3.56-10.15h2.4c.42 0 .63.31.74.73.31 1.05.73 2.2 1.25 3.14.21.84.42.84.53 0 .73-11.1 1.04-21.98.73-32.98l-.63-9.63a13.5 13.5 0 0 0 -10.46-13.09 44.29 44.29 0 0 0 -34.55 2.94c-.84 1.46-1.88 1.67-3.03.52a1.47 1.47 0 0 1 -.32-1.57 35.28 35.28 0 0 1 10.58-14.66 48.16 48.16 0 0 1 13.3-8.06c9.67-3.78 19.52-7.1 29.52-9.95z" fill="#fdfdfd"/><path d="m19.16 101.8c-3.14 1.36-5.65-.1-7.43-4.4-.95-2.4-1.36-2.3-1.47.22-.2 5.65 2.83 9.42 9 11.51.21 0 .21.1.21.32v.41a.63.63 0 0 1 -.3.53h-.53c-10.47-3.14-12.36-14.97-7.34-23.77 0-.42.2-.42.42 0l7.33 15.18h.1z" fill="#f0f0f0"/><path d="m140.19 105.26c-.84-1.57 0-3.35 2.4-5.24 1.22-1 2-2.42 2.2-3.98l3.67-6.7a.53.53 0 0 1 .63-.1h.42c-.84 1.05-.94 2.1-.21 3.35a1.47 1.47 0 0 1 -.32 1.57l-8.8 11.1z" fill="#565555"/><path d="m144.8 96.15a5.77 5.77 0 0 1 -2.2 3.98c-2.3 1.78-3.14 3.56-2.3 5.23.2 2.41-.22 5.13-1.16 8.06-.63 1.68-1.67 2.41-3.14 2.3a.73.73 0 0 1 -.7-.52.74.74 0 0 1 -.03-.31 8.42 8.42 0 0 0 -1.26-5.44l-.42-.42-.63-.32-5.86-.83a14.21 14.21 0 0 1 6.08-8.17 1.04 1.04 0 0 1 1.04 0 10.5 10.5 0 0 0 3.67 1.57c1.04.31 1.25 0 .73-.94a9.33 9.33 0 0 1 -1.57-3.88.73.73 0 0 0 -.43-.45.73.73 0 0 0 -.62.03c-2.3 1.05-4.4 2-5.76 4.3a24.99 24.99 0 0 1 -4.6 5.23c-.32.21-.53.53-.63 1.05-.21 1.05-.84 1.67-2 1.67-.41 0-.72.1-1.04.42l-2.83 3.04c-.3.2-.73.42-1.15.42a8.3 8.3 0 0 1 -3.97.2c-.63 0-1.05.11-1.58.43-.2 0-.3 0-.41-.32a37.35 37.35 0 0 1 0-8.37l2.2 1.04c.3.21.73.1 1.04-.1.73-.84.94-1.78.63-2.83-.1-.52 0-.73.52-.63.74 0 1.05.32 1.26 1.05a.4.4 0 0 0 .31.14.41.41 0 0 0 .32-.14c1.25-1.05 1.88-1.88 2.1-2.62.1-2.4.52-4.7 1.04-7.12a22.3 22.3 0 0 1 7.85-.2.74.74 0 0 1 .5.73 8.13 8.13 0 0 1 -1.97 3.45c-1.04.94-.94 1.47.53 1.57 1.46 0 2.82-.42 4.08-1.46 1.05-.84 2.62-1.05 3.35-2a4.45 4.45 0 0 1 2-1.56c.52-.21.83 0 .83.52l.2.42c.32.42.64.52 1.06.63l4.92 1.04v.1z" fill="#c9cace"/><path d="m121.45 93-1.26 7.02c0 .74-.63 1.68-1.88 2.83a.42.42 0 0 1 -.32 0 .42.42 0 0 1 -.31-.21c-.1-.63-.52-1.05-1.26-1.15-.52 0-.73.2-.52.73.31 1.05 0 2.1-.63 2.83-.31.2-.73.2-1.05 0l-2.2-1.05c.22-.42.32-.84.22-1.15.52 0 1.04-.31 1.46-.73 1.57-.63 2.62-2.1 3.25-4.4 0-.42.31-.63.73-.84l1.26-.42c.31-.1.62-.42.73-.73 0-.42-.1-.63-.31-.84a.84.84 0 0 1 -.42-.73l.1-.52a5.04 5.04 0 0 1 2.51-.74z" fill="#565555"/><path d="m119.14 93.64v.52c-.2.31 0 .63.22.73.3.21.41.42.3.84-.1.31-.41.63-.72.73l-1.26.42c-.42.21-.63.42-.84.84-.52 2.3-1.67 3.77-3.14 4.4 0-2.1.63-3.98 1.89-5.66.31-.31.62-.42 1.04-.42h.84c.42 0 .63-.2.73-.62.14-.65.42-1.27.84-1.78zm-74.33 4.4 5.86 1.04c.42 0 .53.21.42.63-3.77 10.47-16.43 10.68-24.08 4.6l.63-.3c.52-.22.52-.53.21-.85a11.52 11.52 0 0 1 -3.77-8.16c0-.84.21-.94.73 0a15.48 15.48 0 0 0 10.26 7.22c5.24 1.05 8.38-.42 9.64-4.19h.1zm-25.65 3.76 4.71 6.5c.21.41.21.73-.1 1.04a5.77 5.77 0 0 1 -5.24 1.05h.53a.62.62 0 0 0 .31-.53v-.41c0-.1 0-.21-.2-.32-6.19-2.1-9.22-5.86-9.01-11.51 0-2.52.52-2.52 1.57-.21 1.78 4.18 4.19 5.75 7.33 4.4h.1z" fill="#c9cace"/><path d="m127 107.88c0 .3-.21.73-.53 1.04-.52.53-.83.53-1.25 0l-.42-.52a.73.73 0 0 0 -.63.1l-5.44 4.61c-.32.31-.74.42-1.26.42h-4.92l-.1-.73c.41-.42.94-.53 1.46-.42 1.57.2 2.93.2 4.19 0l1.05-.63 2.72-3.04c.42-.31.73-.42 1.15-.42 1.15 0 1.78-.52 1.99-1.78 0-.42.2-.73.63-1.04a24.34 24.34 0 0 0 4.6-5.13c1.36-2.3 3.46-3.35 5.76-4.3a.74.74 0 0 1 .89.15c.07.08.13.17.16.27a9.35 9.35 0 0 0 1.57 3.98c.52.84.2 1.05-.73.84a11.97 11.97 0 0 1 -3.77-1.57 1.05 1.05 0 0 0 -1.05 0 14.76 14.76 0 0 0 -6.07 8.17z" fill="#565555"/><path d="m120.4 193.62c-.31-.73 0-1.57.63-2.51a47.12 47.12 0 0 0 9.53-9.84l1.04.42c.21.2.32.41.32.73l-.1.52a.42.42 0 0 0 0 .42l.3.21c.32 0 .53 0 .64-.2a8.71 8.71 0 0 0 1.25-6.81 6.28 6.28 0 0 1 1.78-3.46h3.98a.2.2 0 0 1 .1.1v.22l.42 3.45h.32c.1-1.47.42-2.83.73-3.98.73-2.72 2.51-3.35 5.24-1.88a.74.74 0 0 0 .77-.17.74.74 0 0 0 .17-.25 5.23 5.23 0 0 1 2.93-2.72c.84-.32.84-.42 0-.42-1.99.31-2.83-.21-2.72-1.47 2.51-1.25 4.08-2.72 4.7-4.4.85.63 1.9.84 3.04.63.42-.1.74 0 .84.63 0 .52 0 1.05-.42 1.57-.41.53-.2.73.53.53a3.45 3.45 0 0 0 2.1-2.52 9.98 9.98 0 0 1 3.13-5.23c.42-.42.42-.63 0-.84a.63.63 0 0 0 -.73 0c-.84.31-1.05.1-.63-.63l2.1-3.66c.2-.21.2-.32 0-.53h-.32l-5.76 6.6c-.31.31-.73.42-1.05.31h-1.56a.86.86 0 0 0 -.53.84c0 .84-.1 1.57-.52 2.1-.42.3-.74.41-1.15.2l-4.2-2.5c-.41-.22-.52-.64-.41-1.06l2.1-6.8v-.63c-.22-.63-.64-.84-1.37-.73-.1 0-.31 0-.42.2-.41.32-.41.64 0 .84.32.32.42.53.21.84l-.83 1.89-.32.63c0 3.56-.63 7.64-3.14 10.47-.2.2-.63.52-1.05.52-2.09.31-4.18.31-6.17 0a1.05 1.05 0 0 0 -1.05.52.95.95 0 0 0 0 1.05l-1.15 1.25-5.97 3.67c-.2.1-.41.14-.63.1a.83.83 0 0 1 -.63-.31l-.41-.52c-.53-.53-.84-.42-.95.31 0 1.05.42 1.89 1.26 2.51.42.21.52.63.31 1.26-.83 2.1-2.5 3.14-3.66 5.34-1.26 2.72-2.4 5.76-4.92 7.33-1.26.84-2.3 1.78-3.35 2.72-.42.31-.42.63 0 .84 1.05.84 1.15 1.57.52 2.1h-2.72c-.63 0-1.05-.22-.84-.85l.42-8.48a1.47 1.47 0 0 1 .73-1.25l9.11-4.5a2 2 0 0 0 1.15-1.68v-7.22c2.52-1.68 3.98-4.5 4.4-8.38l4.71-4.92c1.57-.63 2-2.51 3.88-2.4.41 0 .62 0 .83-.22.74-.84.95-1.78.74-2.93a1.27 1.27 0 0 0 -.87-.92 1.26 1.26 0 0 0 -1.23.3c-.31.41-.73.41-1.04 0-.21-.11-.32-.53-.21-.95a4.19 4.19 0 0 0 -1.05-3.87l-1.05-1.26c-1.04-2.93-3.98-3.14-6.49-3.87-.42 0-.73-.32-.84-.74l-.2-.73c3.13-.42 5.54.42 7.32 2.4l4.92 5.77c.21.31.53.52 1.05.52h16.75a1.38 1.38 0 0 0 1.05-.52c3.66-4.71 7.54-9.11 11.52-13.4a6.12 6.12 0 0 0 1.46-2.83c.21-.42.42-.63.73-.84a5.23 5.23 0 0 0 2.52-3.14l4.7-21.36a.42.42 0 0 1 .29-.66.42.42 0 0 1 .47.35c.01.07 0 .14-.02.2l5.97 8.6c.31.52.52 1.04.52 1.77v27.22c0 .53-.2.95-.52 1.26l-25.23 24.08c-.42.42-.63.84-.63 1.26l-5.24 25.96c0 .42-.2.84-.62 1.05-4.5 3.87-8.9 8.16-13.2 13.09-.31.31-.73.31-1.04 0l-5.03-4.2a2.1 2.1 0 0 1 -.73-1.35 13.78 13.78 0 0 0 -5.13-9.43l-1.15-.52-5.03-.31zm54.03-69.1c-.42 1.05-.42 2.62 0 4.6.52 2.63.2 5.35-.95 8.38a1.05 1.05 0 0 1 -.73.53l-3.14 1.15c-.53 0-.73.31-.73.84 0 1.04.41 3.14-.42 4.19-.32.3-.63.41-.95.52-.43.16-.8.45-1.04.84l-.53 1.88c-.83 2.1-.2 2.62 1.78 1.78l2.1-1.36.52-1.05c.53-1.67.84-3.35 1.89-4.7a18.68 18.68 0 0 0 4.18-11.53c0-.52.21-.83.53-1.15l1.78-1.36c.31-.31.52-.63.63-1.05l1.15-6.17a3.87 3.87 0 0 0 1.57-3.14c0-.42-.32-.63-.84-.42-.84.42-1.47 1.25-1.78 2.62a1.04 1.04 0 0 1 -.45.68 1.05 1.05 0 0 1 -.8.15c-.2-.02-.38-.09-.53-.2l-1.05-1.05c-.41-.42-.63-.32-.83.31l-1.36 4.82v-.1zm-40.1 77.58a2 2 0 0 1 0-1.67 8.38 8.38 0 0 0 1.15-4.4c.2-1.88-.21-1.99-1.05-.31a12.13 12.13 0 0 0 -1.05 7.32c0 1.05.63 1.68 1.47 2.1.63 0 1.05.31 1.26.84l1.04 1.04h1.05a16.55 16.55 0 0 0 3.35-3.24c1.67-2.3.31-4.61-.42-6.8-.31-.74-.52-.74-.84 0-.41 1.46-.52 3.66-2.4 4.08-.42 0-.63.3-.84.52-.32.42-.42.73-.42 1.04 0 .32-.21.53-.52.74-.63.31-1.26 0-1.78-1.26z" fill="#f0f0f0"/><path d="m189.71 156.66c2.2-1.99 4.19-3.97 5.65-6.28a6.9 6.9 0 0 0 1.26-4.19c-.03-1.7.04-3.42.21-5.13a.85.85 0 0 0 -.53-.51.83.83 0 0 0 -.73.1c-2.4 1.04-4.6 1.36-6.28.73v-20.94c.94-4.13.97-8.42.1-12.56.11-.53.32-.53.64-.1l7.43 10.15c.52.73.84 1.57.84 2.4v27.75c-.01.73-.27 1.43-.74 1.99l-7.12 8.69c-.31.42-.63.31-.83-.21a2.9 2.9 0 0 1 0-1.89z" fill="#fdfdfd"/><path d="m189.71 109.34c.5 3.74.32 7.53-.52 11.2z" fill="#c9cace"/><path d="m158.4 114.37c.22-1.05.74-2.1 1.47-2.73.53-.52.63-.41.53.21l-.63 2.83c0 .42-.21.73-.74.84h-.83c-.53-.1-.63-.42-.21-.73l.31-.32v-.1z" fill="#7e7b7d"/><path d="m35.7 113.53c1.26 0 2.1.42 2.52 1.05.41.52.52 1.04.2 1.57a7.95 7.95 0 0 1 -8.69 4.18c-1.88-.31-3.45-1.36-4.92-2.09a.63.63 0 0 0 -.77-.1.62.62 0 0 0 -.27.73 4.92 4.92 0 0 0 3.77 4.19c9 2.82 14.76-.95 17.38-11.2.94 1.46.52 3.76-1.26 6.8-2.93 5.23-7.33 7.54-12.98 6.9-5.34-.52-8.38-3.66-7.96-9a2.2 2.2 0 0 1 3.14-1.88l3.67 1.36c.41.21.83.21 1.25 0l4.92-2.62v.1z" fill="#fdfdfd"/><path d="m44.81 111.85c-2.51 10.26-8.27 14.03-17.27 11.2a4.92 4.92 0 0 1 -3.67-4.5.63.63 0 0 1 .58-.46c.09 0 .18.01.26.05 1.57.73 3.14 1.88 4.92 2.09 3.87.63 6.8-.73 8.69-4.08.42-.53.42-1.05 0-1.57-.52-.63-1.36-1.05-2.62-1.26l9.22-1.47h-.1z" fill="#c9cace"/><path d="m30.26 132.48c-5.76 1.36-10.26-1.05-13.61-7.02-.1-.31-.32-.31-.63 0-.31.53-.42 1.05-.21 1.58 1.88 8.06 7.96 11.51 18.22 10.78a10.47 10.47 0 0 1 -12.88-.53c-6.6-5.02-9-12.03-7.12-20.93 0-.42.21-.63.63-.95a4.43 4.43 0 0 1 2.1-.52c.41 0 .62.31.62.84-.1 8.48 4.19 14.13 12.88 16.75z" fill="#f0f0f0"/><path d="m180.5 120.86c-2.52 3.14-4.6 4.5-6.18 3.77l1.47-5.03c.2-.42.42-.42.83 0l1.05.94a1.04 1.04 0 0 0 1.05.1 1.05 1.05 0 0 0 .73-.62c.31-1.47.94-2.3 1.78-2.72.52-.21.84 0 .84.52a3.6 3.6 0 0 1 -1.57 3.14z" fill="#565555"/><path d="m67.95 126.4c-1.57.84-3.14 2.1-4.4 3.46-.63.73-.73.63-.52-.2a10.86 10.86 0 0 1 5.76-6.4c9-4.7 16.75-2.61 23.24 6.18a.62.62 0 0 1 0 .63l-.42.31h-.1c-7.02-7.11-14.87-8.37-23.56-3.97z" fill="#f0f0f0"/><path d="m180.5 120.86-1.15 6.28c0 .31-.32.63-.53.94l-1.88 1.47c-.32.2-.53.52-.53 1.04-.1 4.4-1.57 8.28-4.18 11.52-1.26 1.47-1.36 3.04-1.89 4.71-.07.4-.25.76-.52 1.05l-2.1 1.15c-2.09 1.05-2.61.52-1.78-1.47l.63-1.98c.25-.4.62-.69 1.05-.84.31 0 .63-.1.84-.52.83-1.05.42-3.15.42-4.2 0-.52.2-.73.62-.83l3.15-1.05c.41-.1.62-.31.83-.73 1.15-2.93 1.47-5.65.84-8.17-.42-2.1-.42-3.56 0-4.6 1.57.73 3.66-.53 6.28-3.77z" fill="#c9cace"/><path d="m136.42 135.41a10.47 10.47 0 0 0 12.88 7.22 10.47 10.47 0 0 0 6.8-13.08 10.46 10.46 0 0 0 -12.88-7.33 10.47 10.47 0 0 0 -6.8 13.19z" fill="#fdfdfd"/><path d="m30.26 132.48 7.22.84c.42 0 .63.31.42.83-.73 2.41-2.1 3.67-3.87 3.67-10.26.84-16.34-2.72-18.22-10.78-.2-.53 0-1.05.21-1.58.31-.31.52-.31.63 0 3.35 5.97 7.85 8.38 13.6 7.02z" fill="#c9cace"/><path d="m116.32 137.6c-.42.64-.84.85-1.26.74-.52-.31-.63-1.05-.2-2.51l-1.05.63a.62.62 0 0 1 -.53.2c-.52 0-.73-.3-.52-.83a45 45 0 0 0 6.8-8.38 7.38 7.38 0 0 1 2.94-2.3c.41 0 .41 0 .31.42l-6.5 12.04z" fill="#7e7b7d"/><path d="m60.3 137.3c-3.55-.32-6.9-1.68-10.25-3.98-.32-.21-.63-.21-.84 0a8.27 8.27 0 0 0 -1.89 5.75 88.36 88.36 0 0 0 3.77 16.76c2.93 9.42 7.54 21.46 13.93 36.01 3.77 8.8 9.1 17.8 16.12 27.01h-.94l-1.36-.73c-8.38-7.33-14.87-15.28-19.37-23.87a294.24 294.24 0 0 1 -11.73-25.76c-1.04-2.5-1.46-2.5-1.25.21a90.57 90.57 0 0 0 11.93 38.32 61.1 61.1 0 0 0 15.92 18.01c9 6.8 19.89 11 32.45 12.46-7.12 1.36-14.55 0-22.3-4.19a68.88 68.88 0 0 1 -36.01-45.54 178.82 178.82 0 0 1 -5.76-46.49 27.54 27.54 0 0 1 3.98-14.45.73.73 0 0 1 1.04.22 23.16 23.16 0 0 0 2.93 4.18c.95 1.05 2.3 2.1 4.2 3.04 1.88.84 3.66 1.78 5.44 2.93v.1z" fill="#f0f0f0"/><path d="m86.58 131.75c-1.36-.1-3.03-.74-5.02-1.89-1.26-.63-3.25-.84-5.86-.42l-5.34.74c5.23-4.5 10.57-3.98 16.02 1.57z" fill="#c9cace"/><path d="m86.58 131.75c1.05 1.78-.3 3.45-3.76 4.92-4.4 2.1-9.11 1.46-14.35-1.78-1.25-.84-1.36-1.78-.2-2.93l2.09-1.89c1.78-.1 3.56-.31 5.23-.63 2.72-.42 4.6-.31 5.86.42 2.1 1.05 3.77 1.78 4.93 1.89z" fill="#fdfdfd"/><path d="m102.29 137.92c.31 10.9 0 21.99-.73 33.09 0 .73-.21.73-.63 0l-1.15-3.25c0-.42-.32-.63-.74-.63h-2.5c1.04-2.1.83-3.35-.43-3.87a42.3 42.3 0 0 0 .42-18.85 5.76 5.76 0 0 0 -1.57-2.93l-2.51-2.1c.84-1.14 1.88-1.46 3.24-.83 1.68.84 2.1 2.3 1.47 4.5-.1.63 0 .74.42.21.42-.63.63-1.15.63-1.78.28-2.95.74-5.89 1.36-8.8a.63.63 0 0 1 .42-.1h.31l.31.32c.63.42.84 1.04.74 1.67-.1 1.89.2 3.04.94 3.35z" fill="#f0f0f0"/><path d="m60.3 137.3c1.05.2 2.73 1.25 5.14 3.14.42 1.67 1.25 2.61 2.3 2.82.31 0 .63.21 1.05.53 1.04.73 1.46 1.15 2.82 1.36 4.92.52 8.8.52 11.52 0 1.88-.32 3.56-1.47 5.03-3.46a9.42 9.42 0 0 0 4.18-2.3l2.62 2.3c.8.75 1.36 1.75 1.57 2.83a43.96 43.96 0 0 1 -.42 18.84c-7.75 7.12-8.16 14.14-1.25 20.94l5.65 6.28c-4.19 1.05-7.12 2.62-9.1 4.82l-.74.53c-.63 0-.84-.22-.73-.63 0-.42-.21-.84-.63-1.26l-.95-.2a3.45 3.45 0 0 0 -3.14 2.71c0 .42 0 .84.32 1.26l2.1 3.35c.1.42.52.42.93 0 2.94-2.83 7.54-3.87 13.82-3.14 1.36.2 2.62.73 3.67 1.67a1.36 1.36 0 0 1 .52.95l.21 4.92a.73.73 0 0 1 -.63.73c-4.34.87-8.84.36-12.87-1.47a.42.42 0 0 0 -.42.32l.1.31c0 .21.1.32.42.53-.52.52-.84.83-.84 1.25.32 2.62 1.89 4.82 4.92 6.8a14.27 14.27 0 0 1 8.59-1.35c.31 0 .52.2.52.62v16.44a29.84 29.84 0 0 1 -25.44-10.89 130.42 130.42 0 0 1 -16.12-27c-6.28-14.67-11-26.6-13.93-36.13a79.47 79.47 0 0 1 -3.77-16.75 7.7 7.7 0 0 1 1.89-5.44c.2-.42.52-.42.84-.21 3.35 2.3 6.7 3.66 10.26 3.97z" fill="#fdfdfd"/><path d="m112.76 135.72c-.21.53 0 .84.52 1.05l.32-.1.31-.21.84-.74.1.1c-.42 1.37-.31 2.2.42 2.52.21.1.63-.1 1.15-.73.6 5.05.52 10.15-.2 15.18a5.94 5.94 0 0 1 -2.52-3.56c0-.63-.31-.73-.84-.42-.2.21-.52.21-1.04.1v-12.87c.42 0 .73 0 .94-.32z" fill="#c9cace"/><path d="m88.26 141.7a9.21 9.21 0 0 1 -5.03 3.55c-2.82.53-6.7.53-11.62 0-1.36-.31-1.78-.73-2.82-1.46a2.82 2.82 0 0 0 -1.16-.53c-1.04-.2-1.77-1.15-2.2-2.72l-1.25-2.51c-1.05-2.1-.52-2.52 1.57-1.47 7.64 4.09 15.08 4.19 22.3.42 3.35-1.67 3.98-1.05 1.68 2.1l-1.47 2.61z" fill="#f0f0f0"/><path d="m124.59 138.66.31.62c0 .42.32.63.84.74 2.51.63 5.45.83 6.39 3.87a10.63 10.63 0 0 1 -1.78 4.3.63.63 0 0 0 0 .73l.2.42a.26.26 0 0 0 .45.18.26.26 0 0 0 .08-.19l2.1-4.18a4.2 4.2 0 0 1 1.04 3.87c0 .42 0 .84.32 1.05.31.31.73.31 1.25 0a1.25 1.25 0 0 1 1.47 0c.2.2.31.31.31.52.32 1.05 0 2.1-.73 2.93-.1.21-.42.32-.73.21-2-.2-2.41 1.78-3.98 2.3a5.18 5.18 0 0 1 -.21-2.93 1.05 1.05 0 0 0 -.63-1.15l-.42-.31a.63.63 0 0 0 -.94.52l-.42 3.46c0 .41-.31.63-.84.73a4.92 4.92 0 0 1 -3.66-.21c-.53-.31-.84-.1-1.05.31a3.64 3.64 0 0 0 .21 3.98c.52 1.05 1.68 1.26 3.35.63-.42 3.88-1.88 6.7-4.19 8.38v-30.37c0-.41.21-.62.74-.62l.52.1v.1zm1.88 12.56a20.85 20.85 0 0 1 2.52-7.01 1.05 1.05 0 0 0 0-1.05v-.32c-.32-.31-.63-.31-1.05 0-1.67 1.37-1.05 2.62-1.36 4.5l-1.15 5.56a.52.52 0 0 0 .31.62c.21 0 .42 0 .63-.2.2-.22.42-.42.42-.63l-.21-.63v-.84h-.1zm63.24 5.44-.52-15.28c1.78.63 3.97.31 6.6-.73a.83.83 0 0 1 1.04.41c.1.1.2.32.1.42-.2 1.57-.31 3.14-.2 4.71 0 1.47-.42 2.83-1.37 4.2a35.3 35.3 0 0 1 -5.65 6.27zm-161.23-.63.31-.94c0-.42-.2-.63-.63-.73a12.05 12.05 0 0 1 -8.48-8.27c-.1-.42-.41-.52-.83-.21l-.32.73a8.17 8.17 0 0 1 0-3.45c0-.42.32-.63.84-.63 1.57.1 2.83.94 3.77 2.2a96.05 96.05 0 0 0 9.56 10.62.52.52 0 0 1 -.77.69h-3.56.1z" fill="#c9cace"/><path d="m126.58 152.06v.63a.84.84 0 0 1 -.84.83.52.52 0 0 1 -.52-.42v-.2c.52-1.68.94-3.56 1.25-5.55.53-1.89-.2-3.14 1.47-4.61.42-.21.73-.21 1.05.1v1.47a20.3 20.3 0 0 0 -2.52 6.9v.85h.1z" fill="#7e7b7d"/><path d="m132.13 144 1.05 1.04-2.1 4.19v.21a.2.2 0 0 1 -.2.2.21.21 0 0 1 -.16-.05.21.21 0 0 1 -.06-.15v-.1l-.31-.42a.63.63 0 0 1 0-.74 13.35 13.35 0 0 0 1.88-4.29v.1h-.1z" fill="#565555"/><path d="m28.37 156.03c-5.44-1.46-8.69-4.6-9.84-9.42l.32-.73c.42-.31.73-.2.83.2 1.37 4.3 4.2 7.02 8.59 8.38.31 0 .52.21.52.63 0 .32-.1.63-.42.94z" fill="#f0f0f0"/><path d="m116.21 152.79c0 .52 0 1.05.21 1.68-1.04 0-1.67-.21-1.78-.84a5.86 5.86 0 0 0 -2.72-3.35c.42 0 .42-.42 0-1.26.42 0 .73 0 1.05-.2.42-.32.73-.22.94.41.42 1.78 1.15 2.93 2.4 3.56z" fill="#565555"/><path d="m152.65 161.58a48.37 48.37 0 0 1 -16.44 8.17c-.31.1-.63 0-.73-.42l-.73-2.4a1.05 1.05 0 0 1 0-1.26 1.05 1.05 0 0 1 1.04-.42c2.1.31 4.19.31 6.28 0 .42 0 .84-.31 1.05-.63a15.7 15.7 0 0 0 3.14-10.36l.32-.63.83-1.89c.1-.31 0-.52-.31-.84-.31-.2-.31-.52 0-.83l.52-.21c.74 0 1.15.2 1.26.73v.63c-.84 2.3-1.47 4.6-1.99 6.8-.21.42 0 .84.42 1.05l4.19 2.51c.41.21.73.1 1.04-.31.42-.52.63-1.15.63-1.88 0-.42.21-.74.53-.84.48-.12.98-.12 1.46 0 .42 0 .84-.21 1.05-.42l5.86-6.5c.1-.1.21-.1.42 0v.43l-2.2 3.66c-.42.84-.2 1.05.63.63h.73c.42.2.42.42 0 .73a9.95 9.95 0 0 0 -3.14 5.34 3.45 3.45 0 0 1 -2.1 2.52c-.73.2-.94 0-.52-.53.32-.52.53-1.05.42-1.57 0-.52-.31-.73-.84-.63-1.15.21-2.09 0-3.03-.63h.2zm-40.73-11.4a5.99 5.99 0 0 1 2.51 3.34c.32.63.95 1.05 1.89.84.63 3.14.63 6.18 0 8.9 0 .2 0 .31-.21.31s-.42-.1-.52-.41l-.21-1.05c-.21-.63-.53-.84-1.26-.74-.84.11-1.68 0-2.4-.52l.2-10.68z" fill="#c9cace"/><path d="m176.41 171.74c-2.18 9.7-4.8 19.32-7.85 28.8a1.05 1.05 0 0 1 -.84.3 33.07 33.07 0 0 1 -10.15-8.9v-.73l3.56-16.75c.2-1.25.84-2.4 1.67-3.45 6.8-7.23 13.4-13.82 19.9-19.69.73-.73 1.15-.52 1.15.63v9.84c0 1.05-.32 1.78-1.05 2.52l-5.65 6.07zm-6.9-4.5a30.91 30.91 0 0 1 -3.77 3.45c-1.16.84-1.89 1.57-2.1 2.2a3.77 3.77 0 0 0 0 3.35c-1.15 1.26-1.36 2.41-.42 3.35.21.32.21.73 0 1.05l-1.46 2.1a4.53 4.53 0 0 0 -1.26 3.97c0 .31.31.63.73.73 1.16 0 2.3-.2 3.35-.52.95.63 1.68.94 2.3.84 2.73-.84 4.3-2.41 4.82-4.71.1-.53 0-.84-.52-.84a5.11 5.11 0 0 1 -2.4-1.36c-.22-.21-.32-.53-.22-1.05a9.43 9.43 0 0 1 5.03-7.33.73.73 0 0 0 .31-.84l-.31-.3a4.51 4.51 0 0 1 -2.41-2.73c.2-1.68 1.05-3.14 2.51-4.6 1.05-.84 1.05-1.06-.31-.74-1.78.63-3.04 1.88-3.88 3.98z" fill="#f0f0f0"/><path d="m132.13 156.03-4.6 4.93c-1.68.73-2.84.52-3.36-.53a3.76 3.76 0 0 1 -.31-3.98c.31-.41.73-.62 1.25-.31 1.05.52 2.3.63 3.77.21.32 0 .53-.31.63-.73l.42-3.46a.63.63 0 0 1 .63-.52h.31l.42.31a1.05 1.05 0 0 1 .63 1.15c-.21 1.26-.1 2.2.31 2.94h-.1z" fill="#7e7b7d"/><path d="m31.72 160.96a96.34 96.34 0 0 1 5.34 12.56 4.6 4.6 0 0 0 3.56 3.14c.32.52.32.94.21 1.26a.52.52 0 0 1 -.7.4.52.52 0 0 1 -.24-.2 14.86 14.86 0 0 1 -5.23-5.96 39.58 39.58 0 0 1 -2.94-11.2z" fill="#f0f0f0"/><path d="m31.72 160.96c4.72 1.46 7.33 3.45 7.54 6.07l1.26 9.63a4.83 4.83 0 0 1 -3.46-3.14c-1.67-4.4-3.45-8.59-5.23-12.56h-.1z" fill="#c9cace"/><path d="m152.65 161.58c-.84 1.68-2.41 3.14-5.03 4.4-3.6 1.98-7.3 3.76-11.1 5.34-.52.31-.73.94-.62 1.78-.84.73-1.47 1.99-2 3.46-.2.62-.62 1.04-1.04 1.46-.52.32-.73.21-.52-.42a14.39 14.39 0 0 1 2.4-4.92c.21-.42.11-.73 0-1.05a2.1 2.1 0 0 0 -2.2 0l-2.5 1.26c0 .21-.11.21-.22 0l-.1-.42v-.31l3.56-2.4c.31-.43.42-.95.42-1.47l1.05-1.37.73 2.41c.1.42.42.52.73.42a45.66 45.66 0 0 0 16.23-8.17h.2z" fill="#565555"/><path d="m171.18 168.6c-.84.42-1.47 0-1.78-1.36.94-2.1 2.2-3.35 3.98-3.98 1.25-.42 1.46-.21.31.73a8.06 8.06 0 0 0 -2.72 4.6h.2z" fill="#7e7b7d"/><path d="m147.62 165.98c0 1.26.84 1.78 2.72 1.47.84 0 .84.2.1.42a5.23 5.23 0 0 0 -2.92 2.72.73.73 0 0 1 -.74.42h-.2c-2.73-1.47-4.5-.84-5.24 1.88a21.24 21.24 0 0 0 -.73 3.88v.1h-.32l-.31-3.46v-.2h-.21l-3.87-.1c0-.85.2-1.48.73-1.79a219.2 219.2 0 0 0 11.1-5.23l-.1-.1zm-66.48 52.87c6.18 7.54 14.66 11.2 25.55 10.9v7.74a62.19 62.19 0 0 1 -48.16-30.36 88.78 88.78 0 0 1 -12.04-38.43c-.21-2.72.1-2.72 1.25-.2a252.6 252.6 0 0 0 11.73 25.75 81.77 81.77 0 0 0 19.37 23.87c.42.31.94.52 1.36.52zm88.36-51.61c.32 1.36.74 1.78 1.47 1.36a5.02 5.02 0 0 0 2.51 2.72.75.75 0 0 1 .4.45.73.73 0 0 1 -.08.6l-.21.2a9.32 9.32 0 0 0 -5.03 7.34c0 .41 0 .73.21.94a3.15 3.15 0 0 0 2.51 1.25c.42 0 .53.42.42 1.05-.52 2.2-2.1 3.77-4.92 4.6-.42-1.04-.63-2.09-.31-2.82.1-.42.42-.52.84-.52.83 0 1.36-.32 1.78-1.05v-.31a.64.64 0 0 0 -.32-.42h-.2c-2.73.1-4.1 1.57-3.99 4.19-1.04.42-2.1.52-3.35.42-.42 0-.63-.22-.73-.53a4.53 4.53 0 0 1 1.26-3.98c1.04 0 1.88-.42 2.4-1.04.42-.42.53-.84.53-1.37 0-1.04.63-1.98 1.78-2.61.84-.32.84-.74 0-1.05h-.53c-.62-.2-.62-.63-.2-1.05l4.92-3.14h.1c.21-.31 0-.52-.2-.63a1.04 1.04 0 0 0 -.74-.1c-2.52.8-4.72 2.38-6.28 4.5a3.99 3.99 0 0 1 0-3.35 6.52 6.52 0 0 1 2.09-2.1 24.7 24.7 0 0 0 3.77-3.55zm-35.8 1.04c0 .53 0 1.05-.42 1.37l-3.46 2.5c-.2.11-.2.22-.1.32l.1.42c0 .21.1.21.42 0a7.65 7.65 0 0 1 2.41-1.36c.73-.31 1.26-.2 1.89.21.31.2.41.52.2 1.05a14.87 14.87 0 0 0 -2.4 4.81c-.21.63 0 .74.42.42a2.9 2.9 0 0 0 1.25-1.46c.53 2.4.1 4.7-1.25 6.8-.1.21-.42.31-.74.21l-.2-.1a.42.42 0 0 1 0-.53l.1-.52c0-.31-.1-.52-.32-.73l-1.04-.42a23.67 23.67 0 0 0 -7.12 5.44 7.85 7.85 0 0 0 -2.41 4.4c-.73.94-1.05 1.78-.73 2.51l-4.92-.1c.52-.74.31-1.36-.63-2.1-.42-.31-.42-.63 0-.94a24.28 24.28 0 0 1 3.14-2.72c2.62-1.57 3.87-4.6 5.23-7.33.95-2.1 2.73-3.14 3.67-5.55.1-.42 0-.84-.42-1.15-.84-.52-1.26-1.36-1.26-2.51 0-.63.42-.74.84-.21l.63.52c.2.21.42.21.52.21.21 0 .42 0 .63-.21z" fill="#c9cace"/><path d="m161.76 182.63 1.46-1.89c.21-.42.21-.73 0-1.04-.84-1.05-.73-2.1.42-3.46a11.52 11.52 0 0 1 6.18-4.5h.73c.31.2.42.42.21.73h-.1a32.9 32.9 0 0 0 -4.92 3.14c-.42.42-.42.74.2.95h.42c.84.41.84.83 0 1.25a3.15 3.15 0 0 0 -1.67 2.62l-.32 1.26a3.4 3.4 0 0 1 -2.5 1.04h-.11z" fill="#565555"/><path d="m106.8 176.03v1.89c-.22.42-.43.52-.85.31-2.5-1.47-4.7-3.35-7.64-2.83-1.67.21-3.35.74-5.13 1.57 2.83-4.6 7.33-4.92 13.61-.94z" fill="#c9cace"/><path d="m130.66 181.27a47.1 47.1 0 0 1 -9.63 9.84 8.38 8.38 0 0 1 2.4-4.6c2.31-2.31 4.72-4.2 7.13-5.24zm36.23 6.49c-.63.2-1.36-.1-2.3-.84 0-2.72 1.35-4.19 3.97-4.3.16.02.31.1.42.22a.64.64 0 0 1 0 .52c-.31.84-.84 1.15-1.67 1.05-.42 0-.74.2-.84.63-.32.73-.1 1.67.42 2.72z" fill="#7e7b7d"/><path d="m94.75 184.2h7.33c.31 0 .63.2.84.63l3.45 7.01a11.52 11.52 0 0 0 -5.86-1.36z" fill="#f0f0f0"/><path d="m106.37 191.84c.32.53.42 1.05.21 1.68 0 .41-.31.63-.73.41-2.51-.62-4.3-1.25-6.8-.41a62.34 62.34 0 0 1 -7.65 1.78c1.99-2.1 5.03-3.77 9.1-4.82 2.05-.07 4.07.4 5.87 1.36zm27.96 10.26c.52 1.15 1.15 1.57 1.78 1.26.31-.21.41-.42.52-.74 0-.3.1-.62.42-1.04.2-.32.52-.53.94-.53 1.78-.41 1.88-2.61 2.51-4.18.1-.63.32-.63.63 0 .73 2.3 2.1 4.6.42 6.7a10.25 10.25 0 0 1 -3.35 3.35c-.31.2-.63.2-1.05 0a2.51 2.51 0 0 1 -1.04-1.05c-.32-.42-.74-.73-1.26-.73a2.76 2.76 0 0 1 -1.57-2.1c-.31-2.72 0-5.23 1.26-7.32.83-1.68 1.15-1.57 1.04.3a10.49 10.49 0 0 1 -1.15 4.4 1.97 1.97 0 0 0 -.1 1.68z" fill="#c9cace"/><path d="m134.33 214.88-7.02-6.5c-1.67-1.57-3.45-1.57-5.65-1.57h-9.42c-.32 0-.42-.1-.42-.52v-7.33c0-.31 0-.42.31-.42l9.63.21c3.14 0 5.03 3.14 5.03 5.97a3.14 3.14 0 0 0 1.04 2.72l7.02 6.8a.53.53 0 0 1 .05.42.51.51 0 0 1 -.26.32h-.31zm7.01-1.89 14.34-13.5a1.26 1.26 0 0 1 1.57 0l7.86 6.59a1.25 1.25 0 0 1 .27 1.37c-.06.16-.16.3-.27.41l-22.4 20.63a1.26 1.26 0 0 1 -2-.84l.21-13.61c0-.42.21-.63.42-.94zm1.88 1.26c-.2.15-.36.37-.41.63l-.63 9a1.05 1.05 0 0 0 1.78.84l18.32-16.75a1.05 1.05 0 0 0 .2-1.26c-.03-.16-.1-.3-.2-.42l-5.44-4.19a1.05 1.05 0 0 0 -1.26 0z" fill="#f0f0f0"/><path d="m143.22 214.04 12.36-11.94a1.04 1.04 0 0 1 1.26 0l5.44 4.19a1.04 1.04 0 0 1 .3 1.3c-.06.15-.17.28-.3.38l-18.32 16.75a1.04 1.04 0 0 1 -1.19.2 1.05 1.05 0 0 1 -.6-1.04l.64-9c0-.32.2-.53.41-.74zm-49.83-8.06 4.92 2.72c.31.1.31.42 0 .73a5.34 5.34 0 0 0 -.84 4.6c-3.03-1.98-4.6-4.18-4.81-7 0-.22.2-.64.73-1.16v.1zm-20.83 44.7c.41-2.1.31-3.66-.32-4.6a663.72 663.72 0 0 1 -18.63-29.84c-.74-1.26-1.16-1.16-1.37.2l-.94 6.5.21-13.4c0-1.05.21-1.05.63 0 .63 1.25.73 2.5 1.68 3.56l7.32 11.62a101.45 101.45 0 0 0 35.91 34.02c1.47.84 1.37 1.05-.2.84a73.33 73.33 0 0 1 -24.3-8.69v-.2z" fill="#c9cace"/><path d="m119.67 212.68-3.14 3.66c-.21.42-.21.73.2 1.05 1.05.52 1.47 1.88 1.05 3.14-.73 2.4-2.61 3.77-5.34 4.19v-11.52c0-.52.21-.73.74-.73l6.49.2z" fill="#f0f0f0"/><path d="m119.67 212.68h3.45c2.52.2 3.77 1.36 5.34 3.14-.31-.21-.63-.21-.83 0-.32.31-.32.63 0 .73h-.42l-.32.1-.31.32a26.49 26.49 0 0 1 -12.88 11.52c.84.83 1.26 1.56 1.26 2.3 0 .42-.21.63-.73.63-1.05 0-1.79.42-2.1 1.25l.31-8.06c2.73-.31 4.61-1.67 5.34-4.08.42-1.26 0-2.41-1.04-3.14-.42-.32-.42-.63-.1-1.05l3.13-3.66z" fill="#c9cace"/><path d="m155.06 226.81.41.52c.32.32.42.74.42 1.26l.42 10.89c0 1.15.42 1.36 1.26.52l1.15-1.25a4.17 4.17 0 0 0 1.78-3.15l.63-16.54 4.92-5.23c.42-.42.63-.42.73.31.63 4.92.84 10.16.63 15.81-.2 4.08-9.21 11.83-12.35 14.45a.52.52 0 0 1 -.42 0 .53.53 0 0 1 -.32-.31zm-82.5 23.87a63.86 63.86 0 0 1 -19.27-16.65 9.1 9.1 0 0 1 -1.88-4.81v-6.28l.83-6.5c.21-1.36.63-1.46 1.26-.2a578.03 578.03 0 0 0 18.53 29.83c.73.95.84 2.52.53 4.82v-.2zm55.9-34.97 5.97 5.66c.31.41.42.83.42 1.25.42 2.62.52 5.34.2 8.17 0 .42-.2.84-.62 1.25-3.03 2.62-6.7 5.97-11.2 6.29l-10.37.31a.72.72 0 0 1 -.73-.73v-5.24c.31-.83 1.05-1.25 2.1-1.25.41 0 .73-.21.73-.63 0-.84-.42-1.57-1.26-2.3a22 22 0 0 0 9.42-3.98 1.25 1.25 0 0 1 1.05-.21c1.78.52 3.77.63 5.86.2 1.26 1.37 1.37 3.57.42 6.4v.3a.63.63 0 0 0 .53.64h.31c.73 0 1.05-.21 1.36-.74a10.26 10.26 0 0 0 0-8.8 4.4 4.4 0 0 0 -1.67-1.67c-.79-1.6-1.94-3-3.35-4.08-.32-.1-.32-.42 0-.73.2-.21.52-.21.83 0v-.1z" fill="#f0f0f0"/><path d="m127.52 216.55a13.6 13.6 0 0 1 3.46 4.19c-.95 0-1.78.1-2.52.52-.42.31-.52.63-.52 1.05.31 1.25 1.05 1.78 2.1 1.46-.42.84-.42 1.05 0 .74-2.1.42-4.09.42-5.87-.1a1.26 1.26 0 0 0 -1.05.1 22 22 0 0 1 -9.42 3.98 25.86 25.86 0 0 0 13.2-11.84h.73l-.1-.1z" fill="#7e7b7d"/><path d="m161.02 219.06-.62 16.44c0 1.36-.53 2.4-1.47 3.35l-1.26 1.26c-.94.73-1.36.52-1.36-.63l-.42-11c0-.41-.1-.83-.41-1.25l-.42-.42c0-2.62 2.09-5.24 6.07-7.75h-.1z" fill="#c9cace"/><path d="m130.98 220.63 1.67 1.68c-1.25-.42-2.1 0-2.62 1.46-1.04.32-1.78-.2-2.09-1.46 0-.42.2-.74.52-1.05a4.97 4.97 0 0 1 2.52-.63z" fill="#565555"/><path d="m132.76 222.3a10.26 10.26 0 0 1 0 8.8c-.32.53-.74.74-1.36.74h-.42a.63.63 0 0 1 -.52-.94c1.04-2.83.83-5.03-.43-6.4-.31.32-.31 0 0-.73.53-1.36 1.37-1.88 2.52-1.46h.2z" fill="#c9cace"/><path d="m148.98 230.26c-.52 0-.83.21-.94.63l-1.46 17.8c0 .53.31.84.73.84.52 0 .84-.21.84-.63l1.57-17.8c0-.52-.32-.84-.74-.84z" fill="#f0f0f0"/><path d="m561.33 140.33v62h21.34v-9.6l4.4 3.87c12.13 10.67 35.86 8.8 48.93-3.87 7.6-7.46 11.2-17.2 11.73-31.33.67-16.53-1.86-24.93-10.66-34.53-13.2-14.4-36.8-17.07-49.74-5.6l-4.66 4v-46.94h-21.34zm54.67-4.4c6.27 4.27 9.07 8.8 10.53 16.4 3.47 18.67-6.26 32.67-22.53 32.67-9.2 0-15.07-3.47-19.73-11.33-2.54-4.54-2.94-6.8-2.67-16 .4-11.87 3.2-17.34 10.93-22.14 6-3.73 17.74-3.46 23.47.4zm42.67 4.4v62h21.33v-124h-21.33zm37.86-59.2c-3.86 4.27-3.46 15.34.67 18.67 4.53 3.73 12.8 3.33 16.8-.8 4.27-4.13 4.53-12.13.53-17.2-2.26-2.93-3.86-3.47-9.06-3.47-4.8 0-7.07.67-8.94 2.8zm-394.53 35.74a30.76 30.76 0 0 0 -9.07 6.66l-3.6 4.4v-12.26h-21.33v86.66h21.33v-27.73c0-30.27.8-33.87 8.27-39.33 5.33-4 14.67-3.6 19.2.53 6.53 6 7.2 9.6 7.2 39.2v27.33h21.2l.4-29.86.4-30 3.87-4c6.93-7.2 16.66-8.14 23.33-2.27 6.13 5.47 6.8 9.47 6.8 38.8v27.33h21.33v-29.73c0-33.33-1.2-40.27-8.13-48.13-2.13-2.54-6.67-6-10-7.6-12-5.74-31.2-1.2-39.07 9.06-2.66 3.6-2.8 3.6-4.4 1.07-6.66-11.33-24.53-16.13-37.73-10.13zm131.6 0c-9.6 3.33-18.4 12-20.93 20.66-1.07 3.6-2 6.8-2 7.07s4.13.4 9.33.4h9.33l1.87-4.67c2.67-6.13 9.2-10 17.2-10 11.2 0 16.93 4.67 16.93 13.74 0 5.86-1.06 6.26-16.66 6.26-15.34 0-25.2 3.2-31.2 10-10.8 12.27-7.47 32.27 6.66 39.34 11.74 6.13 28.27 4.53 36.54-3.34l4.66-4.26v10.26h21.34v-30.4c0-17.73-.67-32.53-1.47-35.6-2.13-7.6-12.4-17.2-21.33-19.86-9.34-2.8-21.6-2.67-30.27.4zm31.73 51.46c0 5.6-2.4 10.8-7.2 15.2-2.66 2.54-5.33 3.47-11.33 3.87-7.2.53-8.27.27-11.33-2.8-4.14-4.13-4.67-11.2-1.07-15.6 2.93-3.6 8.8-5.07 21.33-5.2l9.6-.13zm282.67-52.8c-6.93 2.27-12 5.6-15.6 10.27-2.93 4-3.73 6.53-4.13 13.73-.8 15.87 6 22.54 26.93 26.4 13.87 2.54 19.47 5.6 19.47 10.67 0 6.67-4.4 9.73-13.6 9.73-7.74 0-11.87-2.4-14.8-8.4l-2.54-4.93h-18.66l.8 4.93c1.6 8.54 7.33 16.4 15.46 20.94 6.8 3.86 8.27 4.13 20 4.13 10.27 0 13.6-.53 18-2.93 10.4-5.47 15.34-13.07 15.34-23.47 0-12-4.94-20.13-14.54-23.87-2.93-1.06-24-5.06-27.06-5.06-.67 0-2.27-1.2-3.74-2.67-9.73-9.73 9.07-20.4 19.87-11.33 2.13 1.86 4.4 4.66 4.8 6 .8 2.26 2.13 2.66 10.27 2.66h9.46l-.8-4.8c-2.13-13.06-14.66-22.13-31.6-22.8-5.46-.13-11.46.14-13.33.8zm90.8.8c-2.4 1.07-6.53 4.27-8.93 6.94l-4.54 4.93v-12.53h-21.33v86.66h21.33v-27.06c0-23.6.4-27.6 2.54-32.54 1.46-3.06 4.13-6.53 6-7.73 4.53-2.93 14.4-3.07 18.8-.13 6.53 4.26 7.33 8.8 7.33 39.46v28h21.33v-27.73c0-30.13.8-33.87 8.14-39.33 4.53-3.34 14.53-3.47 19.2-.4 6.53 4.26 7.33 8.8 7.33 39.46v28h21.33v-31.2c0-34.66-.8-39.33-8.4-47.33-12.13-12.8-32-12.8-45.2-.13-3.6 3.46-6.4 5.73-6.4 5.2 0-2.4-7.73-9.87-12.66-12-6.54-3.07-19.47-3.2-25.87-.54zm-340.13 42.67v43.33h21.06l.54-26.4c.4-22.93.8-26.93 3.06-31.6 4.14-8.13 9.87-11.33 20.8-11.33h9.2v-17.33h-8.66c-10.27 0-14.8 2-20.54 8.93l-4.13 5.07v-14h-21.33zm196 0v43.33h21.33v-86.66h-21.33z" fill="#fff"/></g></svg> \ No newline at end of file diff --git a/docs/public/static/sponsors/marblism-light.svg b/docs/public/static/sponsors/marblism-light.svg deleted file mode 100644 index 4336bd551f871c..00000000000000 --- a/docs/public/static/sponsors/marblism-light.svg +++ /dev/null @@ -1 +0,0 @@ -<svg fill="none" height="282" width="938" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><clipPath id="a"><path d="m0 0h937.33v281.33h-937.33z"/></clipPath><g clip-path="url(#a)"><g stroke-width="2.51"><path d="m93.08 67.67 12.77-.84c.42 0 .63-.2.63-.73l.2-4.92" stroke="#656567"/><path d="m106.8 61.18-.22-2.4c0-.53-.2-.74-.73-.74-8.06 1.26-15.81-.84-20.31-8.17-4.5-7.32-4.3-14.86.63-22.3 4.6-7.01 12.14-8.58 20-8.06a.42.42 0 0 0 .41-.42l.21-1.04a.41.41 0 0 0 0-.21.41.41 0 0 0 -.31-.1c-11.1-1.16-19.69 2.09-25.76 9.83-1.99 2.41-3.35 3.88-4.19 7.12-3.87 15.7 1.68 26.7 16.76 32.98" stroke="#787878"/><path d="m106.8 61.18c-12.15 2.51-21.16-1.36-26.81-11.52l-2.2-3.97c-.31-.53-.42-.53-.42 0 0 3.76.84 7.12 2.62 9.84 3.14 5.23 7.33 8.69 12.77 10.47.42.2.63.83.32 1.67" stroke="#dddddf"/><path d="m111.82 74.8v2.3" stroke="#656567"/><path d="m111.82 77.1v9.42c0 .42.31.63.83.63l18.85-2.52a6.38 6.38 0 0 0 3.66-1.78 117.3 117.3 0 0 0 11.1-9.84c.32-.42.53-.84.53-1.25l5.23-40.2c0-.43-.21-.74-.52-1.05a115.69 115.69 0 0 0 -31.52-11.31 46.2 46.2 0 0 0 -7.43-.84c-.42 0-.63.21-.63.63v55.8" stroke="#7f7f7f"/><path d="m111.82 77.1c2.93.2 5.86 0 9.1-.84.42-.21.74-.42.84-.74l1.78-3.35" stroke="#e3e4e6"/><path d="m123.33 72.07 1.57-2.1c3.25-3.34 6.8-6.8 10.58-10.05" stroke="#bebcbd"/><path d="m135.69 59.92 1.15 2c.42.41.73.41 1.15 0 2.51-2.1 4.92-1.05 6.7-4.61.21-.53.63-.84 1.26-.84.42 0 .73-.1 1.04-.42.21-.2.42-.52.53-1.05l.52-5.65v-.42c0-.2-.1-.31-.42-.42-.31-.1-.52 0-.73.21-.73 1.68-1.47 3.35-2.93 4.19a18.23 18.23 0 0 0 -5.24 3.98c-.83.94-1.88 1.25-2.82 1.78" stroke="#e3e4e6"/><path d="m135.9 58.67c-3.77 1.05-6.39 2.4-8.07 4.08-1.25 1.36-2.82 4.19-4.92 8.7" stroke="#bebcbd"/><path d="m122.91 71.44a16.07 16.07 0 0 0 -4.81 2.93c-.32.21-.63.32-1.05.21-1.78-.1-3.56 0-5.23.32" stroke="#e3e4e6"/><path d="m135.69 59.92c.31.21.42-.2.2-1.25m-12.56 13.4c-.42.1-.63 0-.52-.52" stroke="#a4a3a6"/><path d="m99.99 53.75c2.09.31 4.08.2 5.86-.32.42 0 .63-.2.73-.73v-4.92" stroke="#656567"/><path d="m106.69 47.88v-2.82c0-.42-.21-.53-.63-.53h-2.62c-2.62.1-4.4-.73-5.23-2.5" stroke="#7f7f7f"/><path d="m98.2 42.02c-1.15-6.38 1.05-9.84 6.92-10.47" stroke="#656567"/><path d="m105.12 31.55c1.67.32 2.09-1.67 1.46-5.76a.72.72 0 0 0 -.73-.73c-12.88-2.83-20.95 7.34-16.96 19.47 1.88 5.55 5.65 8.59 11.1 9.22" stroke="#7f7f7f"/><path d="m105.12 31.55c-3.77-1.57-7.96.53-9.43 4.4-1.04 2.51-.2 4.5 2.52 6.07m8.48 5.86c-8.27.53-14.66-1.04-16.75-9.84a.2.2 0 0 0 -.1-.1.21.21 0 0 0 -.22 0c-.63 5.55 1.78 12.46 7.64 13.6l2.52.43c.41.1.63.42.73.84 0 .41-.1.62-.52.94" stroke="#e3e4e6"/><path d="m44.5 43.8c-.28 4.05.3 8.12 1.67 11.94a.63.63 0 0 0 .84 0l2.72-3.25c4.71-5.76 11.2-7.85 19.27-6.07" stroke="#656567"/><path d="m68.9 46.42c.3.2.62.2.83.1.31 0 .52-.2.52-.62.1-3.35-1.46-5.45-5.02-6.18-3.14-.63-5.97-.84-8.48-.42-.74 0-.84-.21-.21-.63 4.5-4.3 9.1-5.23 13.92-2.51.42.2.63.1.73-.42.32-2.1 1.05-4.19 2.41-5.86.32-.63.1-.95-.52-1.05-.52 0-1.36-.21-2.51-.73-1.05-.42-4.2-.53-9.43-.32-2.4 0-4.6.53-6.38 1.68-5.56 3.34-9.43 7.64-10.26 14.34" stroke="#7f7f7f"/><path d="m68.9 46.42c0-2.1-2.1-3.14-6.3-2.83-4.7.21-8.68 2-11.82 5.24a1.05 1.05 0 0 1 -1.47-.32l-2.4-4.7c-.32-.64-.63-.64-.95 0l-.42.62c-.31.31-.52.31-.83 0v-.63" stroke="#e3e4e6"/><path d="m112.13 102.85c.21.31.21.73 0 1.15" stroke="#2b2b2b"/><path d="m112.03 104.1a37.35 37.35 0 0 0 0 8.38c0 .32.1.42.41.32" stroke="#656567"/><path d="m112.44 112.8v.62" stroke="#2b2b2b"/><path d="m112.44 113.53-.52 22.5" stroke="#787878"/><path d="m111.82 136.04v12.88" stroke="#656567"/><path d="m111.82 148.92c.42.94.52 1.36.2 1.36" stroke="#2b2b2b"/><path d="m112.03 150.28-.1 10.68" stroke="#656567"/><path d="m111.82 160.96.63 16.54v.1c2.04-.95 4-2.07 5.86-3.35l.83-39.57c0-.42.22-.84.42-1.15l10.26-14.98c.21-.41.63-.62 1.05-.62 10.26-.32 20.73-.42 31.41-.42 2.1 0 3.46 1.67 4.82 3.03a1.26 1.26 0 0 0 1.78-.83c.73-6.29 1.78-12.57 3.24-18.74.63-2.2.21-4.2-1.05-6.08-2.61-3.66-6.49-9.73-5.75-14.45a386.73 386.73 0 0 0 3.66-36.32c0-.21-.2-.42-.31-.53a357.27 357.27 0 0 0 -11.73-9.42.3.3 0 0 0 0 .1v.1l-6.28 40.53c0 .41-.1.83-.53 1.25l-14.02 12.25a209.7 209.7 0 0 1 -23.46 3.56c-.52 0-.73.21-.62.73l.1 10.06" stroke="#787878"/><path d="m111.82 160.96a3.3 3.3 0 0 0 2.4.52c.74 0 1.05.2 1.26.73l.21 1.15c0 .32.21.42.52.32.21 0 .32 0 .42-.32.42-2.72.42-5.75-.2-8.9" stroke="#dddddf"/><path d="m116.42 154.47c-.2-.63-.31-1.16-.2-1.68" stroke="#a3a3a3"/><path d="m116.21 152.79c.84-5.03.84-10.16.1-15.18" stroke="#dddddf"/><path d="m116.32 137.6 6.49-12.03c.1-.31 0-.42-.31-.42a5.86 5.86 0 0 0 -2.83 2.4 44.66 44.66 0 0 1 -6.91 8.17" stroke="#b7b6b7"/><path d="m112.76 135.72c-.21.21-.53.32-.84.32" stroke="#dddddf"/><path d="m112.44 113.53h5.03c.45 0 .9-.15 1.26-.42l5.44-4.5a.74.74 0 0 1 .63-.1c.2 0 .42.1.42.41.31.53.73.53 1.25 0l.63-1.05" stroke="#a3a3a3"/><path d="m127 107.88 5.97.83.62.32c.21 0 .42.31.53.42a10.15 10.15 0 0 1 1.25 5.44.72.72 0 0 0 .14.55.73.73 0 0 0 .5.29c1.46 0 2.5-.73 2.92-2.3 1.05-3.04 1.57-5.76 1.26-8.17" stroke="#dddddf"/><path d="m140.19 105.26 8.8-11.1a1.47 1.47 0 0 0 .3-1.57c-.62-1.15-.52-2.2.22-3.14l-.42-.1a.52.52 0 0 0 -.42 0l-3.87 6.8" stroke="#a3a3a3"/><path d="m144.8 96.15-4.93-1.05c-.41 0-.73-.31-1.04-.73l-.21-.42c0-.63-.31-.73-.84-.52-.84.42-1.57.94-2.1 1.57-.62 1.04-2.3 1.25-3.24 2.1a5.56 5.56 0 0 1 -4.19 1.35c-1.36-.1-1.46-.63-.52-1.57a5.24 5.24 0 0 0 1.89-3.56.74.74 0 0 0 -.32-.52l-.31-.1a22.02 22.02 0 0 0 -7.44.2" stroke="#dddddf"/><path d="m121.45 93c-.84 0-1.68.22-2.4.64" stroke="#a3a3a3"/><path d="m119.14 93.64a4.2 4.2 0 0 0 -.94 1.78c0 .42-.31.62-.73.62h-.84c-.42 0-.73.1-1.04.42a10.26 10.26 0 0 0 -1.89 5.66" stroke="#dddddf"/><path d="m113.7 102.01c-.42.53-.94.84-1.47.84" stroke="#a3a3a3"/><path d="m116.42 154.47c-1.04 0-1.67-.21-1.78-.84a5.86 5.86 0 0 0 -2.72-3.35m1.78-48.16c1.57-.63 2.62-2.1 3.25-4.4 0-.42.31-.63.73-.84l1.26-.42c.31-.1.62-.42.73-.73 0-.42-.1-.63-.31-.84a.84.84 0 0 1 -.42-.73l.1-.52m21.15 11.62c-.84-1.57 0-3.35 2.4-5.24 1.22-1 2-2.42 2.2-3.98m-17.79 11.83a13.94 13.94 0 0 1 6.19-8.16 1.04 1.04 0 0 1 1.04 0 10.5 10.5 0 0 0 3.67 1.57c1.04.31 1.25 0 .73-.94a9.33 9.33 0 0 1 -1.57-3.88.73.73 0 0 0 -.43-.45.73.73 0 0 0 -.62.03c-2.3 1.05-4.4 2-5.76 4.3a24.99 24.99 0 0 1 -4.6 5.23c-.32.21-.53.53-.63 1.05-.21 1.05-.84 1.67-2 1.67-.41 0-.72.1-1.04.42l-2.83 3.04c-.3.2-.73.42-1.15.42a8.3 8.3 0 0 1 -3.97.2c-.63 0-1.05.11-1.58.43" stroke="#909092"/><path d="m112.03 104.1 2.2 1.05c.3.21.73.1 1.04-.1.73-.84.94-1.78.63-2.83-.21-.52 0-.73.52-.63.74 0 1.05.32 1.26 1.05a.4.4 0 0 0 .31.14.41.41 0 0 0 .32-.14c1.25-1.05 1.88-1.88 2.1-2.62.1-2.4.52-4.7 1.04-7.12" stroke="#909092"/><path d="m116.32 137.6c-.42.64-.84.85-1.26.74-.52-.31-.63-1.05-.2-2.51l-1.05.63a.62.62 0 0 1 -.53.2c-.52 0-.73-.3-.52-.83" stroke="#a4a3a6"/><path d="m116.21 152.79a5.94 5.94 0 0 1 -2.5-3.56c0-.63-.32-.73-.85-.42-.2.21-.52.21-1.04.1" stroke="#909092"/><path d="m103.13 39.72 3.66-.84a.42.42 0 0 0 .21-.52v-.21l-.31-.63-.63-.42a2.09 2.09 0 0 0 -.73-.2l-.84.1-.42.1-.63.31c-.24.14-.45.31-.63.53l-.2.63v.94a.31.31 0 0 0 .2.2c.1.05.22.05.32 0z" stroke="#656567"/><path d="m186.36 74.16c-.2-7.95-6.6-18-11.94-23.66a.42.42 0 0 0 -.3-.1.42.42 0 0 0 -.22.2l-4.5 31.73c0 .42.1.84.31 1.15l15.7 25.13c.43.63.74.63.74-.21.42-11.1.42-22.62 0-34.24m-155.25-17.16c2.11-2.1 4.97-3.3 7.95-3.35.53 0 .84-.31.74-.94l-.42-2.4c0-.32-.21-.43-.53-.53-.94-.1-1.78-.21-2.5.42a23.15 23.15 0 0 0 -5.77 5.76c-.2.2-.2.41 0 .62v.42a.26.26 0 1 0 .53 0z" stroke="#787878"/><path d="m92.66 76.57c1.78.21 3.45-.63 5.23-2.4.1-.43 0-.53-.31-.64l-11.52-3.13" stroke="#656567"/><path d="m86.06 70.4a29.94 29.94 0 0 1 -12.35-13.2c-1.05-3.56-3.56-5.55-7.44-5.86-9.42-.84-14.76 3.24-16.12 12.14-.42 3.67-4.82 5.24-7.85 3.35a1.57 1.57 0 0 0 -2.51 1.26c-.1 5.76 2.2 9 7.22 9.84 7.01 1.05 11.73-4.08 11.83-10.89.21-4.4 5.24-5.65 8.38-3.14.31.32.52.74.62 1.05 2.94 7.43 7.44 11.94 13.61 13.61 3.36.84 7.02.21 11.2-1.99" stroke="#7f7f7f"/><path d="m86.06 70.4c-3.14 1.88-6.6 1.36-10.05-1.58-3.35-2.82-4.92-8.37-9.1-9.63-4.93-1.67-8.6-.42-10.8 3.67-1.25 2.09-1.25 4.7-2.82 6.6-3.14 3.55-7.01 3.66-11.41.3-.42-.3-.63-.2-.63.42.32 3.88 2.3 5.97 6.28 6.18 5.97.32 9.22-2.83 9.74-9.53a6.39 6.39 0 0 1 5.65-5.86c2.52-.2 5.66 1.57 6.6 4.19a16.12 16.12 0 0 0 9.84 10.68c2.93 1.05 7.33 1.25 13.3.63" stroke="#e3e4e6"/><path d="m69.1 84 1.99-2.93a1.05 1.05 0 0 0 0-1.25 8.59 8.59 0 0 0 -4.92-3.46" stroke="#656567"/><path d="m66.17 76.36c-2.83-.52-5.24 1.57-7.12 3.14-3.35 3.04-8.9 3.56-13.09 2.93a12.36 12.36 0 0 1 -10.26-17.38c1.26-3.24 3.98-4.5 8.17-3.66 1.15.21 1.26 0 .42-.73-2.62-2.1-5.34-2.52-8.38-1.05-4.92 2.51-7.33 9.42-7.12 14.55.42 13.61 12.88 21.36 25.86 19.37 5.97-.84 10.79-3.98 14.45-9.42" stroke="#787878"/><path d="m66.17 76.36c-7.12 17.28-28.69 13.82-34.66-1.88-1.04-2.72-1.46-2.62-1.25.42a18.84 18.84 0 0 0 19.79 17.27 24.08 24.08 0 0 0 17.9-8.37c.31-.1.52-.21.94-.1.21-.01.32-.01.32.3" stroke="#dddddf"/><path d="m25.13 65.26c.73-1.78.42-2.09-1.15-1.04-8.27 5.23-10.47 12.56-6.6 21.98.31.74.52.74.73 0 .84-2.61 2.52-4.81 4.82-6.8.35-.3.57-.7.63-1.15.31-3.88-.32-9.85 1.57-13.2" stroke="#787878"/><path d="m56.64 118.14a44.3 44.3 0 0 1 34.55-2.94 13.61 13.61 0 0 1 10.47 13.1l.63 9.62" stroke="#7f7f7f"/><path d="m102.29 137.92c-.73-.31-1.05-1.36-.94-3.14 0-.84-.21-1.46-.74-1.88l-.31-.32a.62.62 0 0 0 -.52 0 .63.63 0 0 0 -.42.32 80.36 80.36 0 0 0 -1.15 8.58c0 .74-.21 1.26-.63 1.78-.42.53-.53.42-.42-.1.63-2.1.1-3.67-1.47-4.6-1.25-.64-2.3-.32-3.35.83" stroke="#787878"/><path d="m92.34 139.39a10.47 10.47 0 0 1 -4.08 2.3" stroke="#7f7f7f"/><path d="m88.26 141.7 1.47-2.63c2.3-3.14 1.67-3.76-1.68-2.09-7.22 3.77-14.66 3.67-22.3-.42-2.1-1.05-2.62-.52-1.57 1.68l1.26 2.4" stroke="#787878"/><path d="m65.44 140.75c-2.41-2.1-4.09-3.25-5.03-3.46" stroke="#7f7f7f"/><path d="m60.3 137.3a36.4 36.4 0 0 0 -5.44-3.15 13.87 13.87 0 0 1 -4.19-2.93 24.27 24.27 0 0 1 -3.14-4.4.73.73 0 0 0 -1.04.22 27.3 27.3 0 0 0 -3.77 14.23c0 16.23 1.99 31.73 5.76 46.49 5.23 20.41 17.27 35.6 36.01 45.54 7.75 4.19 15.18 5.55 22.2 4.19" stroke="#787878"/><path d="m106.58 237.49v-7.75" stroke="#656567"/><path d="m106.69 229.74v-16.44c0-.42-.21-.73-.74-.83a15.9 15.9 0 0 0 -8.69 1.57" stroke="#7f7f7f"/><path d="m97.47 214.04a5.23 5.23 0 0 1 .95-4.61c.2-.31.2-.63-.1-.73l-4.93-2.72" stroke="#656567"/><path d="m93.39 205.97-.42-.52a.42.42 0 0 1 0-.52.42.42 0 0 1 .63 0 22.27 22.27 0 0 0 12.56 1.36.73.73 0 0 0 .63-.73l-.2-4.92a1.37 1.37 0 0 0 -.64-1.05 9.24 9.24 0 0 0 -3.56-1.57c-6.28-.73-10.88.31-13.82 3.14-.41.42-.83.42-1.04 0l-2.1-3.35c-.2-.42-.31-.84-.1-1.26.42-1.67 1.46-2.51 3.14-2.72.2 0 .52 0 .84.21.42.42.63.84.63 1.26 0 .52.2.73.73.63.2 0 .42-.32.73-.63" stroke="#7f7f7f"/><path d="m91.4 195.4c2.53-.54 5.05-1.17 7.54-1.88 2.62-.84 4.4-.21 6.8.41.42.22.74 0 .84-.41.21-.63 0-1.16-.2-1.68" stroke="#656567"/><path d="m106.37 191.84-3.45-7.01c-.21-.42-.53-.63-.95-.63h-7.32" stroke="#787878"/><path d="m94.75 184.2c-6.8-6.8-6.28-13.82 1.36-20.94" stroke="#7f7f7f"/><path d="m96.11 163.26c1.26.52 1.47 1.78.53 3.77" stroke="#787878"/><path d="m96.64 166.92c-3.25 1.89-4.4 5.24-3.46 10.06" stroke="#7f7f7f"/><path d="m93.18 176.97c1.89-.73 3.46-1.36 5.03-1.57 3.14-.52 5.23 1.36 7.74 2.83.42.21.63 0 .74-.31.2-.74.2-1.36 0-1.89" stroke="#656567"/><path d="m106.8 176.03v-91.6" stroke="#7f7f7f"/><path d="m106.69 84.42-.32-7.85c-.1-.63-.42-.73-.94-.2a19.15 19.15 0 0 1 -6.8 4.28 107.55 107.55 0 0 1 -15.5 3.77c-7.64 1.16-10.47 5.66-16.75 9.43-10.79 6.38-17.28 14.44-16.02 28.06.31 4.08 2.3 6.8 5.86 8.16a1.04 1.04 0 0 0 1.05-.31c2.83-3.14 5.44-6.8 9.63-8.27a87.8 87.8 0 0 1 14.24-4.09c.63 0 .63-.2 0-.52a28.12 28.12 0 0 0 -12.77-1.78c-1.15.1-3.14.63-5.87 1.57a22.9 22.9 0 0 1 -5.86 1.47" stroke="#656567"/><path d="m106.69 84.42a348.4 348.4 0 0 0 -29.53 9.84 48.16 48.16 0 0 0 -13.3 8.17 35.28 35.28 0 0 0 -10.56 14.67 1.46 1.46 0 0 0 .32 1.57c1.04 1.05 2.09.94 3.03-.63m50.26 58c-6.29-3.98-10.9-3.66-13.61 1.05" stroke="#e3e4e6"/><path d="m96.64 166.92 2.4.21c.42 0 .63.21.74.63.31 1.05.73 2.2 1.25 3.14.21.84.42.84.53 0 .73-11.1 1.04-21.98.73-32.98m-6.29 25.34a40.81 40.81 0 0 0 .52-18.85 5.76 5.76 0 0 0 -1.57-2.93l-2.51-2.1m-27.01 1.37c.42 1.47 1.25 2.3 2.3 2.51l1.05.63c1.04.73 1.46 1.15 2.82 1.36 4.92.53 8.8.53 11.52 0 1.88-.31 3.56-1.46 5.03-3.45m6.6 42.5 5.75 6.28" stroke="#f7f7f7"/><path d="m100.5 190.48c-4.18 1.05-7.11 2.72-9.1 4.92m1.99 10.47c-.52.63-.84 1.05-.84 1.36.32 2.62 1.89 4.82 4.92 6.8m9.22 15.71a29.95 29.95 0 0 1 -25.55-10.89" stroke="#e3e4e6"/><path d="m106.37 191.84a11.52 11.52 0 0 0 -5.86-1.36" stroke="#dddddf"/><path d="m60.3 137.3c-3.55-.32-6.9-1.68-10.25-3.98-.32-.21-.63-.21-.84 0a8.27 8.27 0 0 0 -1.89 5.75 88.37 88.37 0 0 0 3.77 16.76c2.93 9.42 7.54 21.46 13.93 36.01 3.77 8.8 9.1 17.8 16.12 27.01" stroke="#f7f7f7"/><path d="m81.14 218.85h-.94l-1.36-.73c-8.38-7.33-14.87-15.28-19.37-23.87a294.21 294.21 0 0 1 -11.73-25.76c-1.04-2.5-1.46-2.5-1.25.21a90.57 90.57 0 0 0 11.93 38.32 61.1 61.1 0 0 0 15.92 18.01c9 6.8 19.89 11 32.45 12.46" stroke="#dddddf"/><path d="m27.01 104.32c7.65 6.07 20.2 5.75 24.08-4.61.1-.42 0-.63-.42-.73l-5.96-1.05" stroke="#656567"/><path d="m44.81 98.03c-1.57-.31-3.77-.2-6.6.32-3.14.63-5.44-.63-6.8-3.56-1.26-2.41-.31-4.3-2.72-6.28a6.8 6.8 0 0 1 -2.1-2.62c-.83-2.1-1.78-2.1-2.72 0-3.14 6.39-2.1 12.56 3.14 18.53" stroke="#787878"/><path d="m44.81 98.03c-1.36 3.77-4.6 5.24-9.74 4.2a14.67 14.67 0 0 1 -10.26-7.34c-.52-.83-.73-.73-.73.21a11.52 11.52 0 0 0 3.77 8.17c.31.42.31.63 0 .94l-.94.21" stroke="#dddddf"/><path d="m18.64 110.39c2.1.52 3.77 0 5.23-1.05.32-.31.32-.63 0-1.05l-4.7-6.49" stroke="#656567"/><path d="m19.16 101.8-7.43-15.18c-.21-.42-.32-.42-.53 0-4.92 8.7-3.03 20.63 7.44 23.77" stroke="#787878"/><path d="m19.16 101.8c-3.14 1.36-5.65-.1-7.43-4.4-.95-2.4-1.36-2.3-1.47.22-.2 5.65 2.83 9.42 9 11.51.21 0 .21.1.21.32v.41a.63.63 0 0 1 -.3.53h-.53" stroke="#dddddf"/><path d="m124.59 138.66h-.52c-.53-.21-.84 0-.84.52v30.36" stroke="#656567"/><path d="m123.33 169.44-.31 7.22a1.98 1.98 0 0 1 -1.05 1.68l-9.1 4.6a1.48 1.48 0 0 0 -.74 1.26l-.52 8.37c0 .63.31.95.94.95h2.72" stroke="#787878"/><path d="m115.27 193.52h5.03" stroke="#656567"/><path d="m120.4 193.62 5.03.31c.31 0 .73.22 1.04.53a13.6 13.6 0 0 1 4.93 9.42c.2.53.52 1.05.94 1.36l4.92 4.19c.42.31.73.31 1.05 0 4.4-4.92 8.79-9.21 13.3-12.98.3-.32.51-.73.62-1.26l5.23-25.96c0-.42.21-.84.53-1.26l25.23-24.18c.42-.32.52-.74.52-1.26v-27.22c.01-.63-.17-1.25-.52-1.78l-5.86-8.59a.42.42 0 0 0 -.42-.41.42.42 0 0 0 -.32.41l-4.7 21.57a5.59 5.59 0 0 1 -2.42 3.14c-.31.21-.52.42-.73.84a6.63 6.63 0 0 1 -1.47 2.83 139.85 139.85 0 0 0 -12.04 13.82h-17.26c-.52 0-.94 0-1.26-.42l-4.81-5.76c-1.68-2.1-4.19-2.83-7.33-2.4" stroke="#787878"/><path d="m120.4 193.62c-.31-.73 0-1.57.63-2.51" stroke="#dddddf"/><path d="m121.03 191.1a47.12 47.12 0 0 0 9.53-9.83" stroke="#b7b6b7"/><path d="m130.66 181.27.94.42c.21.2.32.41.32.73l-.1.52a.42.42 0 0 0 0 .42l.3.21c.32 0 .53 0 .64-.2a8.71 8.71 0 0 0 1.25-6.81" stroke="#dddddf"/><path d="m134.01 176.56a6.28 6.28 0 0 1 1.78-3.46" stroke="#a3a3a3"/><path d="m135.8 173.1h3.97a.2.2 0 0 1 .21.31l.31 3.46h.32c.1-1.47.42-2.83.73-3.98.73-2.72 2.51-3.35 5.24-1.88a.74.74 0 0 0 .77-.17.74.74 0 0 0 .17-.25 5.23 5.23 0 0 1 2.93-2.72c.84-.32.84-.42 0-.42-1.99.31-2.83-.21-2.72-1.47" stroke="#dddddf"/><path d="m147.62 165.98c2.62-1.25 4.19-2.72 4.92-4.4" stroke="#a3a3a3"/><path d="m152.65 161.58c.63.63 1.67.84 2.82.63.42-.1.74 0 .84.63 0 .52 0 1.05-.42 1.57-.41.53-.2.73.53.53a3.45 3.45 0 0 0 2.1-2.52 9.98 9.98 0 0 1 3.13-5.23c.42-.42.42-.63 0-.84a.63.63 0 0 0 -.73 0c-.84.31-1.05.1-.63-.63l2.1-3.66c.2-.21.2-.32 0-.53h-.32l-5.76 6.6c-.31.31-.73.42-1.05.31h-1.56a.86.86 0 0 0 -.53.84c0 .84-.1 1.57-.52 2.1-.42.3-.74.41-1.15.2l-4.2-2.5c-.41-.22-.52-.64-.41-1.06l2.1-6.8v-.63c-.22-.63-.64-.84-1.37-.73-.1 0-.31 0-.42.2-.41.32-.41.64 0 .84.32.32.42.53.21.84l-.83 1.89-.32.63c0 3.56-.63 7.64-3.14 10.47-.2.2-.63.52-1.05.52-2.09.31-4.18.31-6.17 0a1.05 1.05 0 0 0 -1.05.52.95.95 0 0 0 0 1.05" stroke="#dddddf"/><path d="m134.85 166.92-1.15 1.16" stroke="#a3a3a3"/><path d="m133.7 168.28-5.86 3.25c-.19.14-.4.21-.63.21a.85.85 0 0 1 -.63-.31l-.42-.63c-.52-.42-.84-.32-.94.42 0 1.04.42 1.88 1.25 2.5.42.22.53.64.42 1.16-.94 2.1-2.72 3.25-3.77 5.44-1.25 2.73-2.4 5.76-4.92 7.33-1.25.84-2.3 1.78-3.35 2.73-.42.31-.42.62 0 .83 1.05.84 1.15 1.57.53 2.1m7.85-23.87c2.51-1.68 3.87-4.5 4.19-8.38" stroke="#dddddf"/><path d="m127.52 161.06 4.6-4.92" stroke="#b7b6b7"/><path d="m132.13 156.03c1.67-.52 2.1-2.5 3.98-2.3.31 0 .62 0 .73-.2a3 3 0 0 0 .73-2.94 1.28 1.28 0 0 0 -.81-.71 1.27 1.27 0 0 0 -1.07.19c-.42.31-.84.31-1.15 0-.21-.21-.32-.63-.21-1.05a4.19 4.19 0 0 0 -1.16-3.87" stroke="#dddddf"/><path d="m133.18 145.15-1.05-1.26" stroke="#a3a3a3"/><path d="m132.13 144c-.94-3.15-3.88-3.35-6.5-3.98a.84.84 0 0 1 -.73-.74l-.31-.73" stroke="#dddddf"/><path d="m132.13 144a12.03 12.03 0 0 1 -1.78 4.29.63.63 0 0 0 0 .63l.2.42c0 .05 0 .1.03.16.03.05.08.08.13.1a.22.22 0 0 0 .27-.16v-.1l2.09-4.2" stroke="#909092"/><path d="m132.13 156.03a5.18 5.18 0 0 1 -.21-2.93 1.05 1.05 0 0 0 -.63-1.15l-.42-.31a.63.63 0 0 0 -.94.52l-.42 3.46c0 .41-.31.63-.84.73a4.92 4.92 0 0 1 -3.66-.21c-.53-.31-.84-.1-1.05.31a3.64 3.64 0 0 0 .21 3.98c.63 1.05 1.78 1.26 3.35.63m3.14 20.2a24.5 24.5 0 0 0 -7.33 5.24 8.38 8.38 0 0 0 -2.3 4.6" stroke="#a4a3a6"/><path d="m152.65 161.58a48.37 48.37 0 0 1 -16.44 8.17c-.31.1-.63 0-.73-.42l-.73-2.4m12.87-.95c-3.6 1.98-7.3 3.76-11.1 5.34-.52.31-.73.94-.62 1.78m-1.89 3.46a5.36 5.36 0 0 1 -1.25 1.36c-.42.42-.63.31-.42-.32a14.39 14.39 0 0 1 2.4-4.92c.21-.42.11-.73 0-1.05a2.1 2.1 0 0 0 -2.2 0l-2.5 1.26c0 .21-.11.21-.22 0l-.1-.42v-.31l3.56-2.4c.31-.43.42-.95.42-1.47" stroke="#909092"/><path d="m189.71 109.34-.52 11.2" stroke="#656567"/><path d="m189.3 120.54v20.94" stroke="#7f7f7f"/><path d="m189.3 141.38.41 15.28" stroke="#656567"/><path d="m189.71 156.66a2 2 0 0 0 0 1.89c.1.52.42.52.73 0l7.12-8.48c.47-.56.73-1.26.74-2v-27.74a4.2 4.2 0 0 0 -.84-2.4l-7.33-10.16c-.42-.42-.63-.42-.84.1 0 .53 0 1.05.32 1.47" stroke="#7f7f7f"/><path d="m189.71 156.66c2.2-1.99 4.19-3.97 5.65-6.28a6.9 6.9 0 0 0 1.26-4.19c-.03-1.7.04-3.42.21-5.13a.85.85 0 0 0 -.53-.51.83.83 0 0 0 -.73.1c-2.4 1.04-4.6 1.36-6.28.73m0-20.94c.74-3.56.84-7.33.32-11.1" stroke="#e3e4e6"/><path d="m44.81 111.85-9.1 1.57" stroke="#656567"/><path d="m35.7 113.53-4.92 2.4c-.42.32-.84.32-1.25.11l-3.67-1.36a2.19 2.19 0 0 0 -3.14 1.88c-.52 5.45 2.62 8.48 7.96 9a12.56 12.56 0 0 0 13.08-6.9c1.68-3.14 2.1-5.24 1.05-6.8" stroke="#7f7f7f"/><path d="m35.7 113.53c1.26 0 2.1.42 2.52 1.05.41.52.52 1.04.2 1.57a7.95 7.95 0 0 1 -8.69 4.18c-1.88-.31-3.45-1.36-4.92-2.09a.63.63 0 0 0 -.77-.1.62.62 0 0 0 -.27.73 4.92 4.92 0 0 0 3.77 4.19c9 2.82 14.76-.95 17.38-11.2" stroke="#e3e4e6"/><path d="m34.03 137.82c1.67 0 3.03-1.26 3.87-3.67.21-.41 0-.73-.42-.83l-7.22-.84" stroke="#656567"/><path d="m30.26 132.48c-8.7-2.62-12.98-8.27-12.88-16.75 0-.53-.2-.84-.73-.84-.73 0-1.36.2-2 .52-.3.32-.51.63-.62 1.05-1.88 8.9.52 15.8 7.12 20.94 4.19 3.14 8.38 3.14 12.88.42" stroke="#787878"/><path d="m30.26 132.48c-5.76 1.36-10.26-1.05-13.61-7.02-.1-.31-.32-.31-.63 0-.31.53-.42 1.05-.21 1.58 1.88 8.06 7.96 11.51 18.22 10.78" stroke="#dddddf"/><path d="m67.95 126.4c8.69-4.4 16.54-3.13 23.56 3.98h.1l.42-.3a.63.63 0 0 0 0-.85c-6.5-8.58-14.24-10.68-23.45-6.17a11.52 11.52 0 0 0 -5.55 6.6c-.21.83 0 .93.52.2a16.85 16.85 0 0 1 4.4-3.45z" stroke="#787878"/><path d="m70.36 130.18-2.1 1.78c-1.15 1.04-1.04 2.09.21 2.93 5.24 3.24 10.05 3.87 14.45 1.78 3.35-1.47 4.5-3.14 3.66-4.92m62.82 10.78a10.06 10.06 0 0 0 5.97-5.13 10.89 10.89 0 0 0 -4.4-14.24 10.05 10.05 0 0 0 -7.75-.94 10.05 10.05 0 0 0 -6.07 5.13 10.78 10.78 0 0 0 4.4 14.24 10.3 10.3 0 0 0 7.85.94z" stroke="#7f7f7f"/><path d="m86.58 131.75c-5.54-5.55-10.88-6.08-16.12-1.57" stroke="#656567"/><path d="m86.58 131.75c-1.36-.1-3.03-.74-5.02-1.89-1.26-.63-3.25-.84-5.86-.42l-5.34.74" stroke="#e3e4e6"/><path d="m18.53 146.61c1.15 4.82 4.4 7.96 9.84 9.42" stroke="#787878"/><path d="m28.37 156.03h3.56a.52.52 0 0 0 .68-.43c.02-.1 0-.2-.05-.3l-.31-.31a86.44 86.44 0 0 1 -9-10.26 5.23 5.23 0 0 0 -3.88-2.2c-.52 0-.73.2-.84.63-.2 1.05-.2 2.2 0 3.45" stroke="#656567"/><path d="m28.37 156.03c.32-.3.42-.62.42-.94 0-.42-.2-.63-.63-.73a12.05 12.05 0 0 1 -8.48-8.27c-.1-.42-.41-.52-.83-.21l-.32.73" stroke="#dddddf"/><path d="m177.36 170.38 5.54-6.07a3.65 3.65 0 0 0 1.05-2.52v-9.84c0-1.15-.52-1.36-1.36-.63a391.58 391.58 0 0 0 -19.79 19.8 7.26 7.26 0 0 0 -1.67 3.34l-3.56 16.75v.74a34.65 34.65 0 0 0 10.26 9 1.05 1.05 0 0 0 1.05-.84 367.37 367.37 0 0 0 7.53-28.37c.21-.52.42-1.05.74-1.36" stroke="#787878"/><path d="m40.62 176.66-1.36-9.63c-.31-2.51-2.82-4.6-7.54-6.28" stroke="#656567"/><path d="m31.72 160.96a38.27 38.27 0 0 0 3.04 11.1 14.45 14.45 0 0 0 5.44 6.28.53.53 0 0 0 .63-.42c.1-.32 0-.74-.2-1.26" stroke="#787878"/><path d="m31.72 160.96a96.34 96.34 0 0 1 5.34 12.56 4.6 4.6 0 0 0 3.56 3.14" stroke="#dddddf"/><path d="m51.3 222.94.1 6.28c.22 1.78.84 3.45 1.9 4.81a63.32 63.32 0 0 0 19.26 16.75m62.29-36.53c-2.1-2.2-4.4-4.5-7.02-6.8a3.77 3.77 0 0 1 -1.25-2.73c.2-2.83-1.68-5.76-4.82-5.97l-9.63-.2c-.2 0-.31.1-.31.41v7.33c0 .42.1.52.42.52h9.42c2.2 0 3.98 0 5.65 1.57l7.02 6.6a.53.53 0 0 0 .52-.1.52.52 0 0 0 0-.63zm6.5-1.26c-.22.2-.43.52-.43.84l-.2 13.6a1.25 1.25 0 0 0 .7 1.07 1.26 1.26 0 0 0 1.28-.12l22.51-20.63a1.24 1.24 0 0 0 .37-.88 1.26 1.26 0 0 0 -.37-.9l-7.96-6.59a1.25 1.25 0 0 0 -1.57 0l-14.34 13.61z" stroke="#787878"/><path d="m72.56 250.68a73.71 73.71 0 0 0 24.29 8.9c1.57.42 1.67 0 .2-.84a100.78 100.78 0 0 1 -35.9-34.02l-7.33-11.52c-.95-1.26-1.05-2.51-1.68-3.77-.42-.94-.63-.84-.63.1l-.2 13.4" stroke="#656567"/><path d="m72.56 250.68c.41-2.1.31-3.66-.32-4.6a663.72 663.72 0 0 1 -18.63-29.84c-.74-1.26-1.16-1.16-1.37.2l-.94 6.5" stroke="#dddddf"/><path d="m112.44 224.61-.3 8.06" stroke="#656567"/><path d="m112.13 232.67v5.24c0 .42.31.73.73.73 3.35 0 6.8-.2 10.47-.42 4.4-.2 8.07-3.56 11.2-6.18l.53-1.25a35.5 35.5 0 0 0 0-8.17l-.63-1.25-5.97-5.66" stroke="#787878"/><path d="m128.57 215.71c-1.68-1.67-2.93-2.83-5.45-3.14h-3.45" stroke="#656567"/><path d="m119.67 212.68-6.5-.21c-.41 0-.62.2-.62.63v11.51" stroke="#787878"/><path d="m119.67 212.68-3.14 3.66c-.21.42-.21.73.2 1.05 1.05.52 1.47 1.88 1.05 3.14-.73 2.4-2.61 3.77-5.34 4.19m16.02-9c-.31-.11-.63-.11-.83.1-.32.31-.32.63 0 .73" stroke="#dddddf"/><path d="m127.52 216.55h-.31l-.32.1-.31.32a26.49 26.49 0 0 1 -12.88 11.52" stroke="#a4a3a6"/><path d="m113.7 228.49c.84.83 1.26 1.56 1.26 2.3 0 .42-.21.63-.73.63-1.05 0-1.79.42-2.1 1.25" stroke="#dddddf"/><path d="m130.98 220.63c-.95 0-1.78.21-2.52.63-.42.31-.52.63-.52 1.05.31 1.25 1.05 1.78 2.1 1.46" stroke="#6a6869"/><path d="m130.03 223.77c-.41.84-.41 1.05 0 .74" stroke="#a4a3a6"/><path d="m113.7 228.49a22 22 0 0 0 9.42-3.98 1.25 1.25 0 0 1 1.05-.21c1.78.52 3.77.63 5.86.2" stroke="#b7b6b7"/><path d="m130.03 224.5c1.26 1.37 1.37 3.57.42 6.4v.3a.62.62 0 0 0 .53.64h.31c.73 0 1.05-.21 1.36-.74a10.26 10.26 0 0 0 0-8.8" stroke="#dddddf"/><path d="m132.76 222.3a4.4 4.4 0 0 0 -1.78-1.67" stroke="#a3a3a3"/><path d="m130.98 220.63c-.79-1.6-1.94-3-3.35-4.08" stroke="#b7b6b7"/><path d="m132.76 222.3c-1.36-.41-2.1 0-2.73 1.47" stroke="#909092"/><path d="m161.02 219.06c-3.87 2.51-5.96 5.03-6.07 7.75" stroke="#656567"/><path d="m155.06 226.81-.74 17.28a.52.52 0 0 0 .32.41h.52c3.04-2.5 12.04-10.47 12.25-14.55.21-5.65 0-10.89-.63-15.8 0-.74-.2-.74-.73-.32l-4.92 5.23" stroke="#787878"/><path d="m155.06 226.81.41.52c.32.32.42.74.42 1.26l.42 10.89c0 1.15.42 1.36 1.26.52l1.15-1.25a4.17 4.17 0 0 0 1.78-3.15l.63-16.54" stroke="#dddddf"/><path d="m149.72 230.9a.73.73 0 0 0 -.74-.74h-.31a.73.73 0 0 0 -.52.73l-1.47 17.8a.74.74 0 0 0 .73.84.74.74 0 0 0 .84-.73l1.47-17.8z" stroke="#787878"/><path d="m134.43 28.1a8.26 8.26 0 0 0 2.4-1.47.73.73 0 0 0 0-1.05 2.52 2.52 0 0 0 -1.56-.41c-.42 0-.63.2-.73.73 0 .52-.42.94-.84 1.25a10.47 10.47 0 0 0 -4.6 6.18c-.22.84 0 1.05.72.53a11.3 11.3 0 0 0 3.88-5.03c.1-.42.42-.63.73-.73zm-13.4 5.44 8.38-4.08a.53.53 0 0 0 .2-.42.53.53 0 0 0 -.1-.42l-.31-.42c-.42-.52-.95-.63-1.57-.31-2.83 1.57-6.29 2.82-8.38 5.65-1.5 2.1-3.14 4.1-4.92 5.97l.31.2a42.28 42.28 0 0 0 6.39-6.17z" stroke="#e3e4e6"/><path d="m157.25 62.96v1.05" stroke="#b7b6b7"/><path d="m157.15 64c-.84.32-1.57.85-2.2 1.47-.52.53-.42.74.31.84h1.16c.84.42 1.04.84.52 1.26-.31.31-.42.63-.1 1.04.41.84.41 1.78 0 2.62a17.6 17.6 0 0 0 -1.05 8.8" stroke="#dddddf"/><path d="m155.79 80.03a67.33 67.33 0 0 1 -4.3 5.55c-.41.41-.3.62.22.52.62-.52 1.15-.63 1.78-.52.73.2.83.62.2 1.15l-3.45 3.77.1.41c.21.21.42.21.63 0 2.41-1.57 4.4-3.56 5.97-5.86" stroke="#b7b6b7"/><path d="m156.84 85.05c2.3-1.67 3.14-3.77 5.96-4.19.42 0 .74-.2.84-.62a5.6 5.6 0 0 0 -.31-2.73" stroke="#dddddf"/><path d="m163.33 77.51c.31-.31.42-.62.42-.94" stroke="#b7b6b7"/><path d="m163.75 76.57c.41 0 .62 0 .83-.31a.42.42 0 0 0 -.1-.63h-.84c-.52 0-.84-.21-1.05-.63a9.42 9.42 0 0 1 -.83-6.07 2.08 2.08 0 0 1 1.25-1.47c1.68-.73 2.93-2.72 2.52-4.6-.1-.95 0-1.78.41-2.62.21-.42.21-1.05 0-1.47-.62-1.04-.52-2.1.42-3.14a.62.62 0 0 0 -.1-.73l-.21-.21-.21-.1c-.42-.21-.73-.21-.84.2a10.25 10.25 0 0 1 -2.1 2.52l-1.04.52c-1.88.21-3.66.84-5.44 1.68a.84.84 0 0 0 -.53.73c0 .63.32 1.05.95 1.25a1.25 1.25 0 0 1 .52 1.05v.42" stroke="#dddddf"/><path d="m163.75 76.57-.42-.31a1.05 1.05 0 0 0 -1.05-.1c-.94.3-2.3.2-2.72-.85-.32-.3-.42-.83-.53-1.36 0-.31-.2-.42-.62-.31h-.53c-.2 0-.31.2-.31.52.42 2.41-.21 4.4-1.78 5.76m1.36-15.91c.2.52.52.94 1.05 1.04a1.25 1.25 0 0 0 1.57-1.15l-.1-.94a1.05 1.05 0 0 0 -.95-.63c-.63 0-1.05.21-1.36.63" stroke="#a4a3a6"/><path d="m163.33 77.51h-3.77c-.42 0-.74.1-.84.42l-1.78 7.12" stroke="#a4a3a6"/><path d="m158.3 114.47-.31.31c-.42.32-.32.63.2.74h.84c.42-.1.63-.42.74-.84l.63-2.83c.1-.62 0-.73-.53-.2a5.67 5.67 0 0 0 -1.46 2.5v.32" stroke="#b7b6b7"/><path d="m164.58 62.23c.32-.21.32-.53 0-.84a.84.84 0 0 0 -1.04-.1l-.21.2-1.89 2.2c-.31.42-.2.63.32.63 1.25 0 2.1-.63 2.61-1.78 0-.1 0-.2.21-.31z" stroke="#a4a3a6"/><path d="m174.43 124.63c-.42 1.04-.42 2.5 0 4.5.52 2.62.2 5.34-.95 8.37a1.04 1.04 0 0 1 -.73.53l-3.14 1.15c-.53 0-.73.31-.73.84 0 1.04.41 3.14-.42 4.19-.32.3-.63.41-.95.52-.43.16-.8.45-1.04.84l-.53 1.88c-.83 2.1-.2 2.62 1.78 1.78l2.1-1.36.52-1.05c.53-1.67.84-3.35 1.89-4.7a18.68 18.68 0 0 0 4.18-11.53c0-.52.21-.83.53-1.15l1.78-1.36c.31-.31.52-.63.63-1.05l1.15-6.17" stroke="#dddddf"/><path d="m180.5 120.86a3.87 3.87 0 0 0 1.57-3.14c0-.42-.32-.63-.84-.42-.84.42-1.47 1.25-1.78 2.72a1.05 1.05 0 0 1 -.73.63 1.04 1.04 0 0 1 -1.05-.1l-1.05-1.05c-.41-.42-.63-.32-.83.31l-1.36 4.82" stroke="#a3a3a3"/><path d="m180.5 120.86c-2.52 3.14-4.6 4.5-6.18 3.77" stroke="#909092"/><path d="m134.33 202.1a2 2 0 0 1 0-1.67 8.38 8.38 0 0 0 1.15-4.4c.2-1.88-.21-1.99-1.05-.31a12.13 12.13 0 0 0 -1.05 7.32c0 1.05.63 1.68 1.47 2.1.63 0 1.05.31 1.26.84l1.04 1.04h1.05a16.55 16.55 0 0 0 3.35-3.24c1.67-2.3.31-4.61-.42-6.8-.31-.74-.52-.74-.84 0-.41 1.46-.52 3.66-2.4 4.08-.42 0-.63.3-.84.52-.32.42-.42.73-.42 1.04 0 .32-.21.53-.52.74-.63.31-1.26 0-1.78-1.26z" stroke="#dddddf"/><path d="m126.58 151.22a18.63 18.63 0 0 1 2.4-7.01 1.05 1.05 0 0 0 0-1.05v-.32c-.3-.31-.62-.31-1.04 0-1.67 1.37-1.05 2.62-1.36 4.5l-1.15 5.56a.52.52 0 0 0 .31.62c.21 0 .42 0 .63-.2.2-.22.42-.42.42-.63l-.21-.63z" stroke="#a4a3a6"/><path d="m169.5 167.24a30.91 30.91 0 0 1 -3.76 3.45c-1.16.84-1.89 1.57-2.1 2.2a3.77 3.77 0 0 0 0 3.35" stroke="#dddddf"/><path d="m163.64 176.35c-1.15 1.15-1.36 2.3-.42 3.24.21.32.21.73 0 1.05l-1.46 2.1" stroke="#a3a3a3"/><path d="m161.76 182.63a4.85 4.85 0 0 0 -1.26 4.08c0 .31.31.63.73.73 1.16 0 2.3-.2 3.35-.52" stroke="#dddddf"/><path d="m164.58 186.82c.95.73 1.68 1.04 2.3 1.04" stroke="#b7b6b7"/><path d="m166.89 187.86c2.72-.94 4.29-2.51 4.81-4.81.1-.53 0-.84-.52-.84a5.11 5.11 0 0 1 -2.4-1.36c-.22-.21-.32-.53-.22-1.05a9.43 9.43 0 0 1 5.03-7.33.73.73 0 0 0 .31-.84l-.31-.3a4.51 4.51 0 0 1 -2.41-2.73" stroke="#dddddf"/><path d="m171.18 168.6c.2-1.68 1.05-3.14 2.51-4.6 1.05-.84 1.05-1.06-.31-.74a6.5 6.5 0 0 0 -3.98 3.98" stroke="#b7b6b7"/><path d="m171.18 168.6c-.84.42-1.47 0-1.78-1.36m-2.51 20.52c-.53-1.05-.74-2-.42-2.72.1-.53.42-.74.84-.63.83 0 1.36-.32 1.78-1.05v-.31a.64.64 0 0 0 -.32-.42h-.2c-2.73.1-4.1 1.57-3.99 4.19" stroke="#a4a3a6"/><path d="m161.76 182.63c1.04 0 1.88-.32 2.4-1.05.42-.31.53-.73.53-1.26 0-1.04.63-1.98 1.78-2.61.84-.32.84-.74 0-1.05h-.53c-.62-.2-.62-.63-.2-1.05l4.92-3.14h.1c.21-.31 0-.52-.2-.63a1.04 1.04 0 0 0 -.74-.1c-2.52.8-4.72 2.38-6.28 4.5" stroke="#909092"/><path d="m143.22 214.04a1.05 1.05 0 0 0 -.41.84l-.63 9a1.05 1.05 0 0 0 1.78.84l18.32-16.75a1.05 1.05 0 0 0 .2-1.26c-.03-.16-.1-.3-.2-.42l-5.44-4.19a1.05 1.05 0 0 0 -1.26 0l-12.36 12.04z" stroke="#dddddf"/></g><path d="m41.36 185.46c-4.5-2.1-9.43-5.76-11.1-10.68a74.13 74.13 0 0 0 -5.97-13.82c-9.42-4.93-12.98-12.46-10.68-22.62 0-.52 0-1.05-.42-1.46-5.55-7.44-6.6-15.7-3.14-24.71.1-.32 0-.73-.31-1.05-5.66-6.07-5.24-16.75-3.88-25.02.63-4.71 3.77-7.85 5.03-12.36a22.72 22.72 0 0 1 12.25-14.86c.42-.32.63-.74.84-1.15 1.25-4.2 4.18-8.17 9-12.04 1.68-1.26 3.46-1.37 5.24-2.1.41-.2.62-.42.73-.84 3.65-18.21 20.94-23.75 37.37-19.05a1.47 1.47 0 0 0 1.58-.42c2.72-3.14 5.96-6.28 9.84-7.64 3.03-1.05 5.86-2.51 8.9-2.51 20.72-.84 41.25 2.4 57.58 13.08a193.33 193.33 0 0 1 18.53 14.56 53.04 53.04 0 0 1 10.16 12.04c4.08 7.01 9 14.76 9.1 22.4.21 8.27.21 16.75.1 25.34.04.96.41 1.89 1.05 2.61l10.27 13.1.52 1.25c.5 10.95.5 21.92 0 32.87 0 .53-.21 1.05-.63 1.26l-10.89 13.5c-.35.34-.78.6-1.25.74-2.3.83-4.5 2.2-6.7 4.19a11.52 11.52 0 0 0 -2.94 5.54c-2.09 8.06-4.5 16.55-7.22 25.44-.73 2.3-1.47 4.92-1.57 7.33 0 8.8-.31 17.28-.73 25.44 0 .53-.21 1.05-.63 1.58a70.15 70.15 0 0 1 -29.94 23.24 155.28 155.28 0 0 1 -25.45 7.95 66.25 66.25 0 0 1 -29.31-3.35 71.93 71.93 0 0 1 -39.78-27.95 3.16 3.16 0 0 1 -.53-1.67c-.42-11.2-.63-22.62-.73-33.93 0-2.3-.42-4.5-1.26-6.6a48.4 48.4 0 0 1 -1.99-6.27c-.1-.74-.52-1.05-1.04-1.26v-.1zm51.82-117.79 12.77-.84c.42 0 .63-.2.63-.73l.21-4.92v-2.51c0-.42-.31-.63-.84-.53-8.06 1.05-15.8-1.04-20.3-8.27-4.5-7.32-4.3-14.86.62-22.3 4.6-7.01 12.15-8.58 20.1-8.06a.42.42 0 0 0 .32-.42l.31-.83a.32.32 0 0 0 -.1-.42.42.42 0 0 0 -.32-.1c-11.1-1.16-19.58 2.09-25.75 9.83-2 2.41-3.35 3.88-4.2 7.12-3.97 15.7 1.58 26.7 16.55 32.98zm18.74 7.23v11.62c0 .42.31.63.84.63l18.84-2.52a6.38 6.38 0 0 0 3.67-1.78c4.19-3.24 7.95-6.6 11.1-9.84.31-.42.52-.84.52-1.25l5.24-40.2c0-.43-.22-.74-.53-1.05a115.7 115.7 0 0 0 -31.5-11.31 46.18 46.18 0 0 0 -7.44-.84c-.42 0-.62.21-.62.63l-.21 55.8.1.1zm-11.72-21.15c2.1.31 3.98.2 5.76-.1.42-.22.63-.53.74-.95v-4.92l.1-2.72c0-.32-.2-.53-.63-.53h-2.51c-2.72.1-4.5-.73-5.44-2.5-1.05-6.4 1.25-9.85 7.01-10.48 1.68.32 2.1-1.67 1.47-5.76a.72.72 0 0 0 -.74-.73c-12.88-2.83-20.95 7.34-16.96 19.47 1.89 5.55 5.66 8.59 11.2 9.22zm-55.49-9.95c-.31 4.05.22 8.11 1.57 11.94a.63.63 0 0 0 .83 0l2.73-3.25c4.7-5.76 11.2-7.85 19.26-6.07.21.2.52.2.73.1.32 0 .53-.2.53-.62.1-3.35-1.47-5.45-4.92-6.18-3.14-.63-5.97-.84-8.59-.42-.73 0-.84-.21-.2-.63 4.5-4.19 9.2-5.02 13.92-2.51.42.2.73.1.73-.42.31-2.1 1.15-4.19 2.4-5.86.43-.63.22-.95-.52-1.05-.42 0-1.25-.2-2.5-.73-1.06-.42-4.2-.53-9.43-.32-2.41 0-4.5.53-6.28 1.68-5.67 3.34-9.64 7.64-10.37 14.34h.1zm67.73 59.05-.3 1.15a39.23 39.23 0 0 0 0 8.59c0 .2.1.31.4.2v.74l-.51 22.5v12.89c.41.94.41 1.36 0 1.36v10.68l.52 16.54v.1c2.04-.95 4-2.07 5.86-3.35l.95-39.57c0-.42 0-.84.3-1.15l10.27-14.98c.31-.41.63-.62 1.05-.62 10.36-.32 20.73-.42 31.4-.42 2.1 0 3.46 1.67 4.82 3.03a1.26 1.26 0 0 0 1.89-.83 142.8 142.8 0 0 1 3.14-18.74c.62-2.2.31-4.2-1.05-6.08-2.62-3.66-6.5-9.73-5.76-14.45a387.07 387.07 0 0 0 3.67-36.32 356.13 356.13 0 0 0 -12.05-10.06.31.31 0 0 0 0 .21v.1l-6.28 40.53c0 .41-.1.83-.52 1.25l-14.03 12.25a209.7 209.7 0 0 1 -23.45 3.56c-.53 0-.73.21-.63.73l.31 10.06zm-9.2-63.13 3.76-.84a.42.42 0 0 0 0-.52v-.21c0-.21 0-.42-.2-.63l-.64-.42a2.1 2.1 0 0 0 -.73-.2l-.84.1-.31.1-.73.31c-.2.15-.39.32-.53.53l-.31.63v.94a.31.31 0 0 0 .2.2.32.32 0 0 0 .32 0zm-72.26 17.38c2.3-2.1 4.92-3.25 7.96-3.35.52 0 .84-.32.73-.94l-.42-2.41c0-.32-.2-.42-.42-.53-1.04-.1-1.88-.2-2.61.42a22.72 22.72 0 0 0 -5.66 5.76c-.31.21-.31.42 0 .63v.42a.21.21 0 0 0 .36.15.2.2 0 0 0 .06-.15zm155.47 17.06c-.2-7.95-6.6-18-11.83-23.66a.41.41 0 0 0 -.33-.09.42.42 0 0 0 -.3.2l-4.4 31.72c0 .42.11.84.32 1.15l15.7 25.13c.53.63.74.63.74-.21.41-11.4.41-22.83 0-34.24zm-93.7 2.41c1.78.21 3.56-.63 5.24-2.4.2-.43 0-.53-.32-.64l-11.5-3.13a31.83 31.83 0 0 1 -12.25-13.2 7.85 7.85 0 0 0 -7.33-5.86c-9.53-.84-14.87 3.24-16.13 12.14-.62 3.67-5.02 5.24-8.06 3.35a1.57 1.57 0 0 0 -2.5 1.26c-.11 5.76 2.3 9 7.21 9.84 7.02 1.05 11.73-4.08 11.84-10.89.3-4.4 5.23-5.65 8.37-3.14.31.32.52.74.63 1.05 2.93 7.43 7.43 11.94 13.6 13.61 3.36.84 7.02.21 11.21-1.99zm-23.54 7.43 2.09-2.93a1.05 1.05 0 0 0 0-1.25 8.59 8.59 0 0 0 -5.03-3.46c-2.82-.52-5.23 1.57-7.01 3.14-3.35 3.04-8.9 3.56-13.2 2.93a12.35 12.35 0 0 1 -10.25-17.38c1.25-3.24 3.98-4.5 8.16-3.66 1.16.21 1.26 0 .42-.73-2.62-2.1-5.34-2.52-8.37-1.05-4.92 2.51-7.33 9.42-7.12 14.55.42 13.61 12.88 21.36 25.86 19.37 5.97-.84 10.78-3.98 14.45-9.42zm-43.98-18.84c.84-1.68.42-2.1-1.04-.94-8.38 5.23-10.47 12.56-6.7 21.98.31.74.52.74.83 0 .74-2.61 2.41-4.81 4.82-6.8.35-.3.57-.7.63-1.15.2-3.88-.42-9.85 1.46-13.2v.1zm31.41 52.87a44.6 44.6 0 0 1 34.76-2.83 13.61 13.61 0 0 1 10.37 13.1l.62 9.62c-.73-.31-1.04-1.36-.83-3.14a2.3 2.3 0 0 0 -.84-1.88l-.31-.32a.63.63 0 0 0 -.74 0l-.1.32a60.61 60.61 0 0 0 -1.26 8.58c0 .74-.2 1.26-.63 1.78-.42.53-.52.42-.42-.1.63-2.1.1-3.67-1.46-4.6-1.26-.64-2.3-.32-3.35.83a10.47 10.47 0 0 1 -4.09 2.3l1.58-2.62c2.09-3.14 1.57-3.76-1.78-2.09-7.23 3.77-14.66 3.67-22.3-.42-2.1-1.05-2.62-.52-1.58 1.68l1.26 2.4c-2.4-2.09-4.08-3.14-4.92-3.34a42.23 42.23 0 0 0 -5.65-3.15c-1.59-.68-3.01-1.67-4.2-2.93a24.27 24.27 0 0 1 -3.13-4.4.73.73 0 0 0 -1.05.22c-2.51 4.18-3.66 9-3.66 14.23 0 16.23 1.88 31.73 5.65 46.49 5.24 20.41 17.28 35.6 36.02 45.54 7.85 4.19 15.18 5.55 22.2 4.3v-24.3c0-.42-.22-.62-.74-.62a15.69 15.69 0 0 0 -8.59 1.15 5.24 5.24 0 0 1 1.05-4.4c.31-.31.21-.63-.1-.73l-4.93-2.72-.41-.53a.42.42 0 0 1 .41-.63l.21.1a22.27 22.27 0 0 0 12.57 1.37.73.73 0 0 0 .73-.73l-.31-4.92a1.37 1.37 0 0 0 -.63-1.05 9.24 9.24 0 0 0 -3.56-1.57c-6.28-.73-10.89.31-13.82 3.14-.42.42-.73.42-1.05 0l-2.1-3.35c-.2-.42-.3-.84-.1-1.26.42-1.67 1.47-2.51 3.14-2.72.32 0 .53 0 .84.21.42.42.63.84.63 1.26 0 .52.2.73.73.63l.74-.53 7.53-1.88c2.62-.84 4.4-.21 6.8.41.53.22.74 0 .85-.41.2-.63 0-1.16-.21-1.68l-3.46-7.01c-.2-.42-.52-.63-.94-.63h-7.33c-6.7-6.8-6.28-13.82 1.47-20.94 1.25.52 1.46 1.78.63 3.77-3.36 1.78-4.5 5.13-3.46 9.94a22.07 22.07 0 0 1 4.92-1.57c3.14-.52 5.24 1.47 7.75 2.83.42.21.73 0 .73-.31.21-.74.21-1.36 0-1.89v-91.6l-.42-7.86c0-.63-.31-.73-.73-.2a19.16 19.16 0 0 1 -6.8 4.28 106.9 106.9 0 0 1 -15.71 3.77c-7.43 1.16-10.47 5.66-16.65 9.43-10.89 6.38-17.27 14.44-16.02 28.06.42 4.08 2.41 6.8 5.87 8.16a1.04 1.04 0 0 0 1.04-.31c2.83-3.14 5.45-6.8 9.64-8.27a90.93 90.93 0 0 1 14.24-4.09c.62 0 .62-.2 0-.52a28.12 28.12 0 0 0 -12.78-1.78c-1.04.1-3.14.63-5.76 1.57-2.09.73-3.97 1.26-5.96 1.47v-.1h-.1zm-29.63-13.61c7.75 5.97 20.31 5.65 24.08-4.71.21-.42.1-.63-.31-.73l-5.86-1.05c-1.57-.21-3.67 0-6.6.42-3.14.63-5.44-.63-6.8-3.56-1.26-2.41-.21-4.3-2.73-6.28a6.8 6.8 0 0 1 -1.99-2.62c-.94-2.1-1.88-2.1-2.82 0-3.14 6.39-2.1 12.56 3.14 18.53h-.1zm-8.27 6.07c2.1.42 3.88 0 5.24-1.25.31-.21.31-.53 0-1.05l-4.71-6.28-7.33-15.29c-.21-.42-.42-.42-.63 0-4.92 8.7-3.14 20.63 7.43 23.87zm106.06 28.27-.63-.31c-.52 0-.73.2-.73.63v30.36l-.32 7.22a1.99 1.99 0 0 1 -1.04 1.68l-9.11 4.6a1.47 1.47 0 0 0 -.73 1.26l-.42 8.37c0 .63.2.95.83.95h7.75l5.03.41c.42 0 .83.22 1.15.53a13.6 13.6 0 0 1 5.02 9.42c.1.53.42 1.05.84 1.36l4.92 4.19c.42.31.84.31 1.05 0 4.4-4.92 8.8-9.21 13.3-12.98.31-.32.52-.73.62-1.26l5.24-25.96c0-.42.2-.84.63-1.26l25.12-24.18c.42-.32.53-.74.53-1.26v-27.22c.04-.62-.1-1.24-.42-1.78l-5.97-8.59a.42.42 0 0 0 -.26-.38.42.42 0 0 0 -.16-.03.42.42 0 0 0 -.31.41l-4.71 21.57a5.59 5.59 0 0 1 -2.41 3.14c-.32.21-.53.42-.73.84a6.63 6.63 0 0 1 -1.47 2.83 139.6 139.6 0 0 0 -12.04 13.82h-17.28c-.52 0-.83 0-1.25-.42l-4.82-5.76c-1.67-2.1-4.19-2.83-7.33-2.4v.1l.1.1zm64.91-29.31-.42 11.1v20.93l.53 15.18a2.9 2.9 0 0 0 0 1.89c.2.52.41.52.73 0l7.22-8.48c.47-.56.73-1.26.73-2v-27.74a3.7 3.7 0 0 0 -.94-2.4l-7.33-10.16c-.41-.42-.62-.42-.83.1 0 .53 0 1.05.31 1.47v.1zm-144.69 2.4-9.21 1.57-4.92 2.52c-.42.31-.84.31-1.26.1l-3.66-1.36a2.19 2.19 0 0 0 -3.14 1.88c-.42 5.45 2.61 8.48 7.95 9a12.56 12.56 0 0 0 13.09-6.9c1.67-3.14 2.1-5.24 1.05-6.8h.1zm-10.89 25.97c1.68 0 3.04-1.26 3.98-3.67.1-.41 0-.73-.52-.83l-7.23-.84c-8.69-2.62-12.98-8.27-12.87-16.75 0-.53-.21-.84-.74-.84-.73 0-1.36.2-1.88.52-.42.32-.63.63-.63 1.05-1.99 8.9.42 15.8 7.12 20.94 4.19 3.14 8.38 3.14 12.77.42zm34.03-11.41c8.58-4.4 16.44-3.14 23.45 3.97h.1l.42-.3a.63.63 0 0 0 0-.85c-6.49-8.58-14.23-10.68-23.24-6.17a11.52 11.52 0 0 0 -5.76 6.6c-.2.83 0 .93.53.2a15.71 15.71 0 0 1 4.5-3.45zm81.35 16.12a10.06 10.06 0 0 0 5.97-5.13 10.9 10.9 0 0 0 -4.4-14.24 10.05 10.05 0 0 0 -7.75-.94 10.05 10.05 0 0 0 -5.97 5.13 10.89 10.89 0 0 0 4.3 14.24 10.3 10.3 0 0 0 7.85.94zm-79.05-12.35-2.1 1.78c-1.14 1.04-1.04 2.09.22 2.93 5.23 3.24 10.05 3.87 14.55 1.78 3.25-1.47 4.4-3.14 3.56-4.92-5.55-5.55-10.89-6.08-16.12-1.57h-.1zm-51.82 16.42c1.15 4.82 4.5 7.96 9.94 9.42h3.46a.52.52 0 0 0 .68-.43c.01-.1 0-.2-.05-.3l-.32-.31a86.44 86.44 0 0 1 -9-10.26 5.23 5.23 0 0 0 -3.88-2.2c-.41 0-.73.2-.83.63-.21 1.05-.21 2.2 0 3.45zm158.72 23.77 5.65-6.07a3.65 3.65 0 0 0 1.05-2.52v-9.84c0-1.15-.42-1.36-1.26-.63a352.77 352.77 0 0 0 -19.9 19.8 7.26 7.26 0 0 0 -1.67 3.34l-3.56 16.75v.74a33.08 33.08 0 0 0 10.16 8.9 1.04 1.04 0 0 0 1.05-.74 323.19 323.19 0 0 0 7.74-28.37c.1-.52.32-1.05.74-1.36zm-136.53 6.28-1.36-9.63c-.42-2.51-2.93-4.6-7.54-6.28a40.44 40.44 0 0 0 2.94 11.51c1.2 2.5 3.09 4.6 5.44 6.08h.2a.53.53 0 0 0 .43-.42c.1-.32 0-.74-.1-1.26zm94.23 37.59c-2.1-2.2-4.5-4.5-7.12-6.8a3.77 3.77 0 0 1 -1.15-2.73c.2-2.83-1.68-5.76-4.92-5.97l-9.64-.2c-.2 0-.3.1-.3.41v7.33c0 .42.1.52.51.52h9.43c2.1 0 3.87 0 5.65 1.57l6.91 6.6c.1.05.22.07.33.05a.53.53 0 0 0 .3-.16.53.53 0 0 0 0-.62zm6.39-1.26c-.21.2-.32.52-.32.84l-.31 13.6a1.25 1.25 0 0 0 1.36 1.06l.63-.11 22.5-20.52a1.27 1.27 0 0 0 .28-1.37c-.06-.16-.16-.3-.27-.41l-7.96-6.6a1.25 1.25 0 0 0 -1.57 0l-14.34 13.62zm-90.04 9.95.1 6.28c.21 1.78.84 3.45 1.89 4.81a64.58 64.58 0 0 0 19.26 16.75 69.68 69.68 0 0 0 24.29 8.7c1.67.41 1.67.2.2-.74a100.47 100.47 0 0 1 -35.8-34.02l-7.43-11.52c-.84-1.26-1.05-2.51-1.68-3.77-.41-.94-.52-.84-.52.1l-.31 13.4zm61.14 1.67-.31 8.06v5.24c0 .42.3.73.73.73 3.35 0 6.8-.2 10.47-.42 4.4-.2 8.16-3.56 11.2-6.18l.52-1.25a35.5 35.5 0 0 0 0-8.17c0-.42-.31-.84-.62-1.25l-5.97-5.66c-1.57-1.67-2.83-2.83-5.24-3.14h-10.05c-.42 0-.63.1-.63.53zm48.68-5.55c-3.97 2.51-5.97 5.03-6.17 7.75l-.63 17.28a.52.52 0 0 0 .31.41h.52c3.04-2.5 12.05-10.47 12.25-14.55.21-5.65 0-10.89-.62-15.8 0-.74-.21-.74-.74-.32zm-11.4 12.04a.73.73 0 0 0 -.74-.94.74.74 0 0 0 -.53.21.73.73 0 0 0 -.3.52l-1.47 17.8a.74.74 0 0 0 .73.84.73.73 0 0 0 .83-.42v-.31l1.47-17.8v.1z" fill="#000"/><path d="m106.8 61.18c-12.15 2.51-21.16-1.36-26.81-11.52l-2.2-3.97c-.31-.53-.42-.53-.42 0 0 3.76.84 7.12 2.62 9.84 3.14 5.23 7.33 8.69 12.77 10.47.42.2.63.83.32 1.67-14.88-6.27-20.31-17.27-16.55-32.97.84-3.14 2.2-4.7 4.2-7.22 6.06-7.64 14.65-10.89 25.75-9.84a.41.41 0 0 1 .27.2c.03.04.05.1.05.15a.4.4 0 0 1 0 .17v.94a.42.42 0 0 1 -.2.41.42.42 0 0 1 -.44.01c-7.85-.52-15.39 1.15-19.89 7.96-5.02 7.43-5.23 14.87-.73 22.4 4.5 7.33 12.25 9.43 20.3 8.17.53 0 .74.2.74.73l.21 2.52v-.1z" fill="#f0f0f0"/><path d="m111.82 77.1c2.93.2 5.86 0 9.1-.84.42-.21.74-.42.84-.74l1.78-3.35c.32-.83.73-1.57 1.36-2.09 3.42-3.57 7.02-6.96 10.79-10.16l1.15 2c.42.41.73.41 1.15 0 2.51-2.1 4.92-1.05 6.7-4.61.21-.53.63-.84 1.26-.84.42 0 .73-.1 1.04-.42.21-.2.42-.52.53-1.05l.52-5.65v-.42c0-.2-.1-.31-.42-.42-.31-.1-.52 0-.73.21-.73 1.68-1.47 3.35-2.93 4.19a18.23 18.23 0 0 0 -5.24 3.98c-.83.94-1.88 1.25-2.82 1.78-3.77 1.05-6.39 2.4-8.07 4.08-1.25 1.36-2.82 4.19-4.92 8.7a16.07 16.07 0 0 0 -4.81 2.92c-.32.21-.63.32-1.05.21-1.78-.1-3.56 0-5.23.32v-55.91c0-.42.2-.63.73-.63 2.4 0 4.92.31 7.33.84 11.3 2.2 21.78 6.07 31.62 11.41.31.2.41.52.41 1.05l-5.23 39.99c0 .52-.1.94-.52 1.26a129.8 129.8 0 0 1 -10.9 9.94 7.12 7.12 0 0 1 -3.86 1.78l-18.85 2.52c-.42 0-.63-.21-.63-.63v-9.43h-.1zm22.61-49a8.26 8.26 0 0 0 2.4-1.47.73.73 0 0 0 0-1.05 2.52 2.52 0 0 0 -1.56-.41c-.42 0-.63.2-.73.73 0 .52-.42.94-.84 1.25a10.47 10.47 0 0 0 -4.6 6.18c-.22.84 0 1.05.72.53a11.3 11.3 0 0 0 3.88-5.03c.1-.42.42-.63.73-.73zm-13.4 5.44 8.38-4.08a.53.53 0 0 0 .2-.42.53.53 0 0 0 -.1-.42l-.31-.42c-.42-.52-.95-.63-1.57-.31-2.83 1.57-6.29 2.82-8.38 5.65a40.8 40.8 0 0 1 -4.92 5.97l.31.2c2.3-1.77 4.4-3.76 6.18-5.85zm-15.91-1.99c-3.77-1.57-7.96.53-9.43 4.4-1.04 2.51-.2 4.5 2.52 6.07.83 1.78 2.5 2.62 5.23 2.51h2.62c.42 0 .63.21.63.53v2.82c-8.27.53-14.66-1.04-16.75-9.84a.2.2 0 0 0 -.1-.1.21.21 0 0 0 -.22 0c-.63 5.55 1.78 12.46 7.64 13.6l2.52.43c.41.1.63.42.73.84 0 .41-.1.62-.52.94-5.45-.63-9.22-3.67-11.1-9.32-4.08-12.15 4.08-22.2 16.96-19.58.42.1.63.42.73.84.63 4.19.21 6.18-1.46 5.86z" fill="#fdfdfd"/><path d="m133.7 28.73a9.56 9.56 0 0 1 -3.88 4.92c-.83.62-1.04.41-.73-.42a11.52 11.52 0 0 1 4.6-6.28c.43-.21.74-.63.85-1.16 0-.31.31-.52.73-.62.63 0 1.15.1 1.46.52a.73.73 0 0 1 0 .94 7.8 7.8 0 0 1 -2.3 1.47 1.04 1.04 0 0 0 -.73.63z" fill="#c9cace"/><path d="m68.9 46.42c0-2.1-2.1-3.14-6.3-2.83-4.7.21-8.68 2-11.82 5.24a1.05 1.05 0 0 1 -1.47-.32l-2.4-4.7c-.32-.64-.63-.64-.95 0l-.42.62c-.31.31-.52.31-.83 0v-.63c.62-6.7 4.6-11 10.15-14.34a13.2 13.2 0 0 1 6.39-1.68c5.23-.2 8.37 0 9.53.32l2.4.73c.74.1.95.42.53 1.05a12.7 12.7 0 0 0 -2.41 5.86c0 .52-.21.63-.73.42-4.82-2.51-9.43-1.78-13.93 2.51-.63.42-.52.63.21.63 2.51-.42 5.34-.21 8.7.42 3.34.73 5.02 2.83 4.91 6.28 0 .2-.2.42-.63.52l-.73-.1z" fill="#fdfdfd"/><path d="m121.03 33.54-.21.32a42.01 42.01 0 0 1 -6.28 5.86l-.21-.21v-.32a63.82 63.82 0 0 0 5.03-5.75c2.09-2.83 5.44-4.09 8.37-5.66.52-.31 1.05-.2 1.47.32l.31.42a.51.51 0 0 1 .12.47.52.52 0 0 1 -.33.36l-8.27 4.2zm-15.91-1.99c-5.76.63-8.07 4.09-6.91 10.47-2.62-1.57-3.46-3.56-2.52-6.28 1.47-3.66 5.55-5.76 9.43-4.19z" fill="#c9cace"/><path d="m111.82 160.96a3.3 3.3 0 0 0 2.4.52c.74 0 1.05.2 1.26.73l.21 1.15c0 .32.21.42.52.32.21 0 .32 0 .42-.32.42-2.72.42-5.75-.2-8.9-.22-.62-.32-1.15-.22-1.67.84-5.03.84-10.16.1-15.18l6.5-12.04c.1-.31 0-.42-.31-.42a6.6 6.6 0 0 0 -2.94 2.4 45 45 0 0 1 -6.8 8.38l-.84.1.52-22.5h5.03c.52 0 .94-.1 1.26-.42l5.44-4.5a.74.74 0 0 1 .63-.1c.2 0 .42.1.42.41.31.53.73.53 1.25 0 .32-.31.53-.63.53-1.05l5.97.84.62.32c.21 0 .42.31.53.42a10.15 10.15 0 0 1 1.25 5.44.72.72 0 0 0 .14.55.73.73 0 0 0 .5.29c1.46 0 2.5-.73 2.92-2.3 1.05-3.04 1.57-5.76 1.26-8.17l8.8-11.1a1.47 1.47 0 0 0 .3-1.57c-.62-1.15-.52-2.2.22-3.14l-.42-.1a.52.52 0 0 0 -.42 0l-3.87 6.8-4.93-.94c-.41 0-.73-.32-1.04-.74l-.21-.41c0-.63-.31-.74-.84-.53-.84.42-1.57.94-2.1 1.57-.62 1.05-2.3 1.26-3.24 2.1a5.56 5.56 0 0 1 -4.19 1.36c-1.36 0-1.46-.63-.52-1.57a5.24 5.24 0 0 0 1.89-3.56.74.74 0 0 0 -.32-.53l-.31-.1c-2.62-.31-5.03-.21-7.44.31-.94 0-1.78.21-2.5.63-.43.52-.71 1.13-.85 1.78 0 .42-.31.63-.73.63h-.84c-.42 0-.73.1-1.04.42a9.74 9.74 0 0 0 -2 5.65c-.41.42-.83.73-1.46.73l-.1-9.94c0-.53.2-.73.62-.84 7.65-.63 15.08-1.67 22.2-3.14.52 0 1.05-.2 1.26-.63l14.02-11.93c.32-.42.53-.84.63-1.36l6.18-40.42v-.1a.31.31 0 0 1 0-.21.3.3 0 0 1 .31-.1l.1.1c3.96 3.22 7.8 6.57 11.53 10.05l.2.63a447.38 447.38 0 0 1 -3.76 35.6c-.74 4.7 3.14 10.78 5.65 14.44 1.26 1.89 1.78 3.88 1.26 6.28a132.7 132.7 0 0 0 -3.56 19.06 1.26 1.26 0 0 1 -1.57.31c-1.36-1.25-2.73-3.03-4.82-3.03-10.78 0-21.15.2-31.4.42-.43 0-.85.2-1.16.62l-10.16 14.87c-.2.42-.42.84-.42 1.15l-.83 39.58c0 .31 0 .42-.21.52a40.2 40.2 0 0 1 -5.66 2.93l-.62-16.75zm45.75-98-.31 1.05c-.84.31-1.58.73-2.2 1.36-.53.42-.42.84.41 1.05h.42c.21-.21.42-.21.63 0 .84.31 1.05.73.52 1.15-.3.31-.41.63-.1 1.04.42.84.42 1.78 0 2.62a17.58 17.58 0 0 0 -1.05 8.7 72.33 72.33 0 0 1 -4.29 5.65c-.42.41-.31.62.21.52.63-.52 1.15-.63 1.78-.52.73.2.84.62.21 1.15l-3.46 3.77.1.41c.22.21.43.21.64 0 2.4-1.57 4.4-3.56 5.96-5.86 2.1-1.67 3.15-3.77 5.97-4.19.42 0 .63-.2.74-.62a5.6 5.6 0 0 0 -.32-2.73c.32-.31.42-.62.42-.94.42 0 .73 0 .84-.31a.42.42 0 0 0 -.1-.63h-.84c-.53 0-.84-.21-1.05-.63a9.43 9.43 0 0 1 -.84-6.07 2.1 2.1 0 0 1 1.26-1.47 4.5 4.5 0 0 0 2.62-4.6c-.21-.95 0-1.78.3-2.62.22-.42.22-1.05 0-1.47-.62-1.04-.51-2.1.43-3.14a.63.63 0 0 0 0-.73l-.32-.21-.2-.1c-.42-.21-.74-.21-.84.2a10.25 10.25 0 0 1 -2.1 2.52l-1.04.52c-1.89.21-3.67.84-5.45 1.68a.84.84 0 0 0 -.52.73c0 .63.31 1.05.94 1.25a1.26 1.26 0 0 1 .63 1.05v.42zm.84 51.51-.21.31c-.42.32-.42.63 0 .74h.94c.42-.1.63-.42.73-.84l.63-2.83c.21-.62 0-.73-.52-.2a5.67 5.67 0 0 0 -1.47 2.5v.32z" fill="#f0f0f0"/><path d="m103.13 39.72a.42.42 0 0 1 -.53-.21v-.94l.21-.63.63-.53.63-.3h.52l1.47.1c.42.2.73.52.94.94v.2a.32.32 0 0 1 0 .32.42.42 0 0 1 -.31.21zm3.56 8.16-.1 4.93c0 .41-.22.62-.74.62-1.9.53-3.91.64-5.86.32.42-.32.52-.53.52-.94 0-.42-.21-.74-.73-.84l-2.52-.32c-5.86-1.25-8.26-8.15-7.64-13.6a.21.21 0 0 1 .21-.11h.21c2.1 8.9 8.38 10.47 16.75 9.94zm-37.7-1.46c-8.06-1.78-14.55.31-19.26 6.28l-2.82 2.93a.63.63 0 0 1 -1.05-.2 29.31 29.31 0 0 1 -1.47-11.73v.52c.32.42.63.42 1.05.1l.31-.52c.32-.73.63-.73 1.05 0l2.4 4.6a1.05 1.05 0 0 0 1.47.22 17.96 17.96 0 0 1 11.94-5.24c4.08-.1 6.28.84 6.28 2.93l.1.1zm37.8 14.87-.31 4.92c0 .42-.21.62-.63.62l-12.77.84c.2-.84 0-1.36-.32-1.57a23.45 23.45 0 0 1 -12.76-10.47 19.16 19.16 0 0 1 -2.51-9.94c0-.53.1-.53.31 0l2.2 3.97c5.76 10.26 14.66 14.14 26.7 11.52h.1v.1zm28.9-1.37c.31.21.42-.2.2-1.25 1.05-.63 2-.84 2.83-1.78a20.63 20.63 0 0 1 5.24-4.08c1.46-.74 2.2-2.41 2.93-4.09.2-.31.42-.31.73-.2l.42.41v.42l-.52 5.76c0 .42-.21.73-.63 1.05-.21.2-.52.31-1.05.31-.52 0-.94.2-1.15.84-1.78 3.66-4.19 2.61-6.7 4.7-.42.32-.73.32-1.05-.1l-1.25-2.09z" fill="#c9cace"/><path d="m38.84 53.75a11.2 11.2 0 0 0 -8.06 3.35.21.21 0 0 1 -.2 0l-.32-.42v-.63a25.5 25.5 0 0 1 5.86-5.76c.73-.63 1.57-.52 2.41-.42.31 0 .52.21.63.53l.42 2.4c0 .63-.32.95-.74.95zm135.59-3.35c5.33 5.76 11.72 15.8 11.93 23.76.31 11.62.31 23.04-.1 34.24 0 .84-.32.84-.74.2l-15.7-24.9c-.21-.43-.21-.85-.21-1.27l4.4-31.82c.04-.1.11-.17.2-.21a.42.42 0 0 1 .42.1z" fill="#f0f0f0"/><path d="m86.06 70.4c-3.14 1.88-6.6 1.36-10.05-1.58-3.35-2.82-4.92-8.37-9.1-9.63-4.93-1.67-8.6-.42-10.8 3.67-1.25 2.09-1.25 4.7-2.82 6.6-3.14 3.55-7.01 3.66-11.41.3-.42-.3-.63-.2-.63.42.32 3.88 2.3 5.97 6.28 6.18 5.97.32 9.22-2.83 9.74-9.53a6.39 6.39 0 0 1 5.65-5.86c2.52-.2 5.66 1.57 6.6 4.19a16.12 16.12 0 0 0 9.84 10.68c2.93 1.05 7.33 1.25 13.3.63-4.2 2.09-7.85 2.82-11.2 1.88-6.18-1.67-10.68-6.28-13.62-13.6-.1-.32-.31-.64-.62-.85-3.14-2.61-8.17-1.36-8.38 3.14-.1 6.7-4.92 11.83-11.83 10.68-5.03-.73-7.33-3.98-7.22-9.73a1.57 1.57 0 0 1 2.5-1.26c3.15 1.88 7.34.52 8.07-3.35 1.15-9 6.6-12.98 16.02-12.15 3.77.32 6.28 2.3 7.43 5.87a28.8 28.8 0 0 0 12.25 13.08z" fill="#fdfdfd"/><path d="m163.75 76.57-.42-.31a1.05 1.05 0 0 0 -1.05-.1c-.94.3-2.3.2-2.72-.85-.32-.3-.42-.83-.53-1.36 0-.31-.2-.42-.62-.31h-.53c-.2 0-.31.2-.31.52.42 2.41-.21 4.4-1.78 5.76-.42-2.83 0-5.76 1.25-8.69.22-.84.22-1.78-.2-2.51-.32-.42-.32-.84 0-1.15.41-.42.31-.84-.42-1.26h-1.16c-.73 0-.83-.31-.3-.84.6-.63 1.35-1.1 2.19-1.36.2.53.52.84 1.05 1.05a1.25 1.25 0 0 0 1.57-1.26l-.1-.94a1.05 1.05 0 0 0 -.95-.63c-.63 0-1.05.21-1.36.63v-.42a1.27 1.27 0 0 0 -.52-.94c-.63-.31-.95-.73-.95-1.36a.84.84 0 0 1 .53-.73 17.25 17.25 0 0 1 5.44-1.68c.31 0 .73-.2 1.05-.42l2.1-2.4c.1-.53.41-.63.83-.42l.2.1a.63.63 0 0 1 .32.84c-.83 1.04-1.04 2.1-.52 3.24.2.53.2 1.05 0 1.47-.27.8-.38 1.66-.31 2.51a4.42 4.42 0 0 1 -2.41 4.71 2.1 2.1 0 0 0 -1.26 1.47 9.7 9.7 0 0 0 .73 6.07c.21.42.53.63 1.05.63h.53a.42.42 0 0 1 .52.1.42.42 0 0 1 -.1.53zm.83-14.34c.32-.21.32-.53 0-.84a.84.84 0 0 0 -1.04-.1l-.21.2-1.89 2.2c-.31.42-.2.63.32.63 1.25 0 2.09-.63 2.61-1.78 0-.1 0-.2.21-.31zm-78.52 8.16 11.52 3.14c.42 0 .42.21.2.63-1.67 1.78-3.34 2.62-5.23 2.41-5.76.63-10.26.42-13.19-.63a16.12 16.12 0 0 1 -9.84-10.89c-.94-2.4-4.19-4.18-6.6-4.08a6.39 6.39 0 0 0 -5.65 5.97c-.52 6.6-3.87 9.74-9.95 9.42-3.77-.2-5.86-2.3-6.17-6.28 0-.52.2-.63.73-.31 4.4 3.35 8.17 3.24 11.41-.21 1.68-1.89 1.57-4.61 2.83-6.8 2.2-4.2 5.86-5.35 10.78-3.67 4.19 1.46 5.76 6.7 9.11 9.63 3.46 3.04 6.8 3.56 10.05 1.57z" fill="#c9cace"/><path d="m66.17 76.36c-7.12 17.28-28.69 13.82-34.66-1.88-1.04-2.72-1.46-2.62-1.25.42a18.84 18.84 0 0 0 19.79 17.27 24.08 24.08 0 0 0 17.9-8.37c.31-.1.52-.21.94-.1.21-.01.32-.01.32.3a20.94 20.94 0 0 1 -14.56 9.64c-12.98 1.78-25.33-5.76-25.96-19.48 0-5.02 2.4-12.04 7.33-14.55 2.93-1.47 5.65-1.05 8.27 1.05.84.84.73 1.04-.42.73-4.19-.84-6.8.42-8.17 3.66a12.36 12.36 0 0 0 10.26 17.38c4.2.63 9.95 0 13.09-2.82 1.88-1.68 4.19-3.77 7.12-3.25z" fill="#f0f0f0"/><path d="m135.9 58.67c.2 1.05 0 1.46-.21 1.25-3.77 3.2-7.37 6.59-10.79 10.16a4.5 4.5 0 0 0 -1.36 1.99c-.63.1-.84 0-.73-.52 2.1-4.5 3.77-7.44 5.02-8.8 1.68-1.67 4.3-3.03 8.07-4.08zm28.47 3.87c-.52 1.05-1.36 1.78-2.5 1.78-.64 0-.74-.2-.43-.63l1.89-2.09a.84.84 0 0 1 1.25 0c.32.2.32.42 0 .63l-.2.31zm-7.22 1.47.2-1.05a1.5 1.5 0 0 1 1.27-.63 1.05 1.05 0 0 1 1.04.63v.73a1.28 1.28 0 0 1 -.44.98 1.25 1.25 0 0 1 -1.02.28c-.53 0-.84-.31-1.05-.84z" fill="#7e7b7d"/><path d="m25.13 65.26c-1.89 3.14-1.26 9.11-1.57 12.78a1.78 1.78 0 0 1 -.73 1.25 14.17 14.17 0 0 0 -4.72 6.91c-.2.74-.42.74-.73 0-3.87-9.42-1.67-16.75 6.6-21.98 1.67-1.05 2.1-.74 1.04.83v.21h.1z" fill="#f0f0f0"/><path d="m122.91 71.44c-.2.52 0 .84.63.73l-1.78 3.35c-.1.32-.42.53-.84.74a27.3 27.3 0 0 1 -9 .83v-2.2c1.68-.3 3.35-.41 5.24-.1.31 0 .62-.2.94-.42a15.27 15.27 0 0 1 4.71-2.82v-.1h.1zm-56.74 4.92a8.38 8.38 0 0 1 4.92 3.56c.2.32.2.73 0 1.05l-1.99 3.13c0-.31-.1-.42-.31-.42-.42-.1-.63 0-.95.21a24.81 24.81 0 0 1 -17.9 8.38 18.74 18.74 0 0 1 -19.58-17.37c-.31-3.04 0-3.14 1.15-.42 5.97 15.8 27.54 19.16 34.55 1.88h.1z" fill="#c9cace"/><path d="m163.75 76.57c0 .32-.1.63-.42.94h-3.77c-.42 0-.74.1-.84.42l-1.78 7.12a22.74 22.74 0 0 1 -5.97 5.86c-.2.21-.42.21-.63 0l-.1-.31v-.1l3.45-3.77c.63-.53.53-1.05-.2-1.26-.63 0-1.16.1-1.68.52-.63.21-.73 0-.31-.41a57.51 57.51 0 0 0 4.29-5.55c1.57-1.36 2.1-3.35 1.78-5.76 0-.32 0-.42.31-.42l.53-.1c.31 0 .52 0 .63.3l.52 1.37c.42 1.05 1.78 1.26 2.72.84.31-.32.73-.21 1.05 0l.42.42v-.1z" fill="#7e7b7d"/><path d="m106.69 84.42a348.5 348.5 0 0 0 -29.53 9.84 48.16 48.16 0 0 0 -13.3 8.17 35.28 35.28 0 0 0 -10.56 14.67 1.46 1.46 0 0 0 .32 1.57c1.04 1.05 2.09.94 3.03-.63 2-.2 3.98-.63 5.86-1.26 2.73-1.04 4.72-1.57 5.87-1.67 4.19-.42 8.58.2 12.88 1.78.52.31.52.42 0 .52-4.91.86-9.72 2.23-14.35 4.09-4.19 1.46-6.8 5.02-9.63 8.37a1.05 1.05 0 0 1 -1.05.21c-3.56-1.26-5.44-3.98-5.76-8.16-1.25-13.62 5.03-21.57 16.02-28.17 6.08-3.66 9-8.27 16.65-9.42 5.23-.84 10.36-2.1 15.5-3.67 1.88-.52 4.18-2.09 6.8-4.4.52-.41.73-.3.73.32l.53 7.85zm56.64-6.9c.31.73.42 1.67.31 2.72-.1.31-.42.62-.84.73-2.82.31-3.66 2.4-5.86 4.08l1.78-7.12c.1-.31.42-.42.84-.42h3.77z" fill="#c9cace"/><path d="m44.81 98.03c-1.36 3.77-4.6 5.24-9.74 4.2a14.67 14.67 0 0 1 -10.26-7.34c-.52-.83-.73-.73-.73.21a11.52 11.52 0 0 0 3.77 8.17c.31.42.31.63 0 .94l-.94.21c-5.24-5.76-6.28-11.94-3.14-18.53 1.04-2.1 2.1-2.1 2.93.1.52 1.16 1.05 2.1 1.99 2.73 2.4 1.88 1.46 3.87 2.72 6.28 1.36 2.82 3.66 4.19 6.8 3.66 2.83-.63 5.03-.84 6.5-.52v-.1h.1z" fill="#f0f0f0"/><path d="m106.69 84.42v91.5c-6.18-3.87-10.68-3.45-13.61 1.26-.84-5.02.41-8.37 3.56-10.15h2.4c.42 0 .63.31.74.73.31 1.05.73 2.2 1.25 3.14.21.84.42.84.53 0 .73-11.1 1.04-21.98.73-32.98l-.63-9.63a13.5 13.5 0 0 0 -10.46-13.09 44.29 44.29 0 0 0 -34.55 2.94c-.84 1.46-1.88 1.67-3.03.52a1.47 1.47 0 0 1 -.32-1.57 35.28 35.28 0 0 1 10.58-14.66 48.16 48.16 0 0 1 13.3-8.06c9.67-3.78 19.52-7.1 29.52-9.95z" fill="#fdfdfd"/><path d="m19.16 101.8c-3.14 1.36-5.65-.1-7.43-4.4-.95-2.4-1.36-2.3-1.47.22-.2 5.65 2.83 9.42 9 11.51.21 0 .21.1.21.32v.41a.63.63 0 0 1 -.3.53h-.53c-10.47-3.14-12.36-14.97-7.34-23.77 0-.42.2-.42.42 0l7.33 15.18h.1z" fill="#f0f0f0"/><path d="m140.19 105.26c-.84-1.57 0-3.35 2.4-5.24 1.22-1 2-2.42 2.2-3.98l3.67-6.7a.53.53 0 0 1 .63-.1h.42c-.84 1.05-.94 2.1-.21 3.35a1.47 1.47 0 0 1 -.32 1.57l-8.8 11.1z" fill="#565555"/><path d="m144.8 96.15a5.77 5.77 0 0 1 -2.2 3.98c-2.3 1.78-3.14 3.56-2.3 5.23.2 2.41-.22 5.13-1.16 8.06-.63 1.68-1.67 2.41-3.14 2.3a.73.73 0 0 1 -.7-.52.74.74 0 0 1 -.03-.31 8.42 8.42 0 0 0 -1.26-5.44l-.42-.42-.63-.32-5.86-.83a14.21 14.21 0 0 1 6.08-8.17 1.04 1.04 0 0 1 1.04 0 10.5 10.5 0 0 0 3.67 1.57c1.04.31 1.25 0 .73-.94a9.33 9.33 0 0 1 -1.57-3.88.73.73 0 0 0 -.43-.45.73.73 0 0 0 -.62.03c-2.3 1.05-4.4 2-5.76 4.3a24.99 24.99 0 0 1 -4.6 5.23c-.32.21-.53.53-.63 1.05-.21 1.05-.84 1.67-2 1.67-.41 0-.72.1-1.04.42l-2.83 3.04c-.3.2-.73.42-1.15.42a8.3 8.3 0 0 1 -3.97.2c-.63 0-1.05.11-1.58.43-.2 0-.3 0-.41-.32a37.35 37.35 0 0 1 0-8.37l2.2 1.04c.3.21.73.1 1.04-.1.73-.84.94-1.78.63-2.83-.1-.52 0-.73.52-.63.74 0 1.05.32 1.26 1.05a.4.4 0 0 0 .31.14.41.41 0 0 0 .32-.14c1.25-1.05 1.88-1.88 2.1-2.62.1-2.4.52-4.7 1.04-7.12a22.3 22.3 0 0 1 7.85-.2.74.74 0 0 1 .5.73 8.13 8.13 0 0 1 -1.97 3.45c-1.04.94-.94 1.47.53 1.57 1.46 0 2.82-.42 4.08-1.46 1.05-.84 2.62-1.05 3.35-2a4.45 4.45 0 0 1 2-1.56c.52-.21.83 0 .83.52l.2.42c.32.42.64.52 1.06.63l4.92 1.04v.1z" fill="#c9cace"/><path d="m121.45 93-1.26 7.02c0 .74-.63 1.68-1.88 2.83a.42.42 0 0 1 -.32 0 .42.42 0 0 1 -.31-.21c-.1-.63-.52-1.05-1.26-1.15-.52 0-.73.2-.52.73.31 1.05 0 2.1-.63 2.83-.31.2-.73.2-1.05 0l-2.2-1.05c.22-.42.32-.84.22-1.15.52 0 1.04-.31 1.46-.73 1.57-.63 2.62-2.1 3.25-4.4 0-.42.31-.63.73-.84l1.26-.42c.31-.1.62-.42.73-.73 0-.42-.1-.63-.31-.84a.84.84 0 0 1 -.42-.73l.1-.52a5.04 5.04 0 0 1 2.51-.74z" fill="#565555"/><path d="m119.14 93.64v.52c-.2.31 0 .63.22.73.3.21.41.42.3.84-.1.31-.41.63-.72.73l-1.26.42c-.42.21-.63.42-.84.84-.52 2.3-1.67 3.77-3.14 4.4 0-2.1.63-3.98 1.89-5.66.31-.31.62-.42 1.04-.42h.84c.42 0 .63-.2.73-.62.14-.65.42-1.27.84-1.78zm-74.33 4.4 5.86 1.04c.42 0 .53.21.42.63-3.77 10.47-16.43 10.68-24.08 4.6l.63-.3c.52-.22.52-.53.21-.85a11.52 11.52 0 0 1 -3.77-8.16c0-.84.21-.94.73 0a15.48 15.48 0 0 0 10.26 7.22c5.24 1.05 8.38-.42 9.64-4.19h.1zm-25.65 3.76 4.71 6.5c.21.41.21.73-.1 1.04a5.77 5.77 0 0 1 -5.24 1.05h.53a.62.62 0 0 0 .31-.53v-.41c0-.1 0-.21-.2-.32-6.19-2.1-9.22-5.86-9.01-11.51 0-2.52.52-2.52 1.57-.21 1.78 4.18 4.19 5.75 7.33 4.4h.1z" fill="#c9cace"/><path d="m127 107.88c0 .3-.21.73-.53 1.04-.52.53-.83.53-1.25 0l-.42-.52a.73.73 0 0 0 -.63.1l-5.44 4.61c-.32.31-.74.42-1.26.42h-4.92l-.1-.73c.41-.42.94-.53 1.46-.42 1.57.2 2.93.2 4.19 0l1.05-.63 2.72-3.04c.42-.31.73-.42 1.15-.42 1.15 0 1.78-.52 1.99-1.78 0-.42.2-.73.63-1.04a24.34 24.34 0 0 0 4.6-5.13c1.36-2.3 3.46-3.35 5.76-4.3a.74.74 0 0 1 .89.15c.07.08.13.17.16.27a9.35 9.35 0 0 0 1.57 3.98c.52.84.2 1.05-.73.84a11.97 11.97 0 0 1 -3.77-1.57 1.05 1.05 0 0 0 -1.05 0 14.76 14.76 0 0 0 -6.07 8.17z" fill="#565555"/><path d="m120.4 193.62c-.31-.73 0-1.57.63-2.51a47.12 47.12 0 0 0 9.53-9.84l1.04.42c.21.2.32.41.32.73l-.1.52a.42.42 0 0 0 0 .42l.3.21c.32 0 .53 0 .64-.2a8.71 8.71 0 0 0 1.25-6.81 6.28 6.28 0 0 1 1.78-3.46h3.98a.2.2 0 0 1 .1.1v.22l.42 3.45h.32c.1-1.47.42-2.83.73-3.98.73-2.72 2.51-3.35 5.24-1.88a.74.74 0 0 0 .77-.17.74.74 0 0 0 .17-.25 5.23 5.23 0 0 1 2.93-2.72c.84-.32.84-.42 0-.42-1.99.31-2.83-.21-2.72-1.47 2.51-1.25 4.08-2.72 4.7-4.4.85.63 1.9.84 3.04.63.42-.1.74 0 .84.63 0 .52 0 1.05-.42 1.57-.41.53-.2.73.53.53a3.45 3.45 0 0 0 2.1-2.52 9.98 9.98 0 0 1 3.13-5.23c.42-.42.42-.63 0-.84a.63.63 0 0 0 -.73 0c-.84.31-1.05.1-.63-.63l2.1-3.66c.2-.21.2-.32 0-.53h-.32l-5.76 6.6c-.31.31-.73.42-1.05.31h-1.56a.86.86 0 0 0 -.53.84c0 .84-.1 1.57-.52 2.1-.42.3-.74.41-1.15.2l-4.2-2.5c-.41-.22-.52-.64-.41-1.06l2.1-6.8v-.63c-.22-.63-.64-.84-1.37-.73-.1 0-.31 0-.42.2-.41.32-.41.64 0 .84.32.32.42.53.21.84l-.83 1.89-.32.63c0 3.56-.63 7.64-3.14 10.47-.2.2-.63.52-1.05.52-2.09.31-4.18.31-6.17 0a1.05 1.05 0 0 0 -1.05.52.95.95 0 0 0 0 1.05l-1.15 1.25-5.97 3.67c-.2.1-.41.14-.63.1a.83.83 0 0 1 -.63-.31l-.41-.52c-.53-.53-.84-.42-.95.31 0 1.05.42 1.89 1.26 2.51.42.21.52.63.31 1.26-.83 2.1-2.5 3.14-3.66 5.34-1.26 2.72-2.4 5.76-4.92 7.33-1.26.84-2.3 1.78-3.35 2.72-.42.31-.42.63 0 .84 1.05.84 1.15 1.57.52 2.1h-2.72c-.63 0-1.05-.22-.84-.85l.42-8.48a1.47 1.47 0 0 1 .73-1.25l9.11-4.5a2 2 0 0 0 1.15-1.68v-7.22c2.52-1.68 3.98-4.5 4.4-8.38l4.71-4.92c1.57-.63 2-2.51 3.88-2.4.41 0 .62 0 .83-.22.74-.84.95-1.78.74-2.93a1.27 1.27 0 0 0 -.87-.92 1.26 1.26 0 0 0 -1.23.3c-.31.41-.73.41-1.04 0-.21-.11-.32-.53-.21-.95a4.19 4.19 0 0 0 -1.05-3.87l-1.05-1.26c-1.04-2.93-3.98-3.14-6.49-3.87-.42 0-.73-.32-.84-.74l-.2-.73c3.13-.42 5.54.42 7.32 2.4l4.92 5.77c.21.31.53.52 1.05.52h16.75a1.38 1.38 0 0 0 1.05-.52c3.66-4.71 7.54-9.11 11.52-13.4a6.12 6.12 0 0 0 1.46-2.83c.21-.42.42-.63.73-.84a5.23 5.23 0 0 0 2.52-3.14l4.7-21.36a.42.42 0 0 1 .29-.66.42.42 0 0 1 .47.35c.01.07 0 .14-.02.2l5.97 8.6c.31.52.52 1.04.52 1.77v27.22c0 .53-.2.95-.52 1.26l-25.23 24.08c-.42.42-.63.84-.63 1.26l-5.24 25.96c0 .42-.2.84-.62 1.05-4.5 3.87-8.9 8.16-13.2 13.09-.31.31-.73.31-1.04 0l-5.03-4.2a2.1 2.1 0 0 1 -.73-1.35 13.78 13.78 0 0 0 -5.13-9.43l-1.15-.52-5.03-.31zm54.03-69.1c-.42 1.05-.42 2.62 0 4.6.52 2.63.2 5.35-.95 8.38a1.05 1.05 0 0 1 -.73.53l-3.14 1.15c-.53 0-.73.31-.73.84 0 1.04.41 3.14-.42 4.19-.32.3-.63.41-.95.52-.43.16-.8.45-1.04.84l-.53 1.88c-.83 2.1-.2 2.62 1.78 1.78l2.1-1.36.52-1.05c.53-1.67.84-3.35 1.89-4.7a18.68 18.68 0 0 0 4.18-11.53c0-.52.21-.83.53-1.15l1.78-1.36c.31-.31.52-.63.63-1.05l1.15-6.17a3.87 3.87 0 0 0 1.57-3.14c0-.42-.32-.63-.84-.42-.84.42-1.47 1.25-1.78 2.62a1.04 1.04 0 0 1 -.45.68 1.05 1.05 0 0 1 -.8.15c-.2-.02-.38-.09-.53-.2l-1.05-1.05c-.41-.42-.63-.32-.83.31l-1.36 4.82v-.1zm-40.1 77.58a2 2 0 0 1 0-1.67 8.38 8.38 0 0 0 1.15-4.4c.2-1.88-.21-1.99-1.05-.31a12.13 12.13 0 0 0 -1.05 7.32c0 1.05.63 1.68 1.47 2.1.63 0 1.05.31 1.26.84l1.04 1.04h1.05a16.55 16.55 0 0 0 3.35-3.24c1.67-2.3.31-4.61-.42-6.8-.31-.74-.52-.74-.84 0-.41 1.46-.52 3.66-2.4 4.08-.42 0-.63.3-.84.52-.32.42-.42.73-.42 1.04 0 .32-.21.53-.52.74-.63.31-1.26 0-1.78-1.26z" fill="#f0f0f0"/><path d="m189.71 156.66c2.2-1.99 4.19-3.97 5.65-6.28a6.9 6.9 0 0 0 1.26-4.19c-.03-1.7.04-3.42.21-5.13a.85.85 0 0 0 -.53-.51.83.83 0 0 0 -.73.1c-2.4 1.04-4.6 1.36-6.28.73v-20.94c.94-4.13.97-8.42.1-12.56.11-.53.32-.53.64-.1l7.43 10.15c.52.73.84 1.57.84 2.4v27.75c-.01.73-.27 1.43-.74 1.99l-7.12 8.69c-.31.42-.63.31-.83-.21a2.9 2.9 0 0 1 0-1.89z" fill="#fdfdfd"/><path d="m189.71 109.34c.5 3.74.32 7.53-.52 11.2z" fill="#c9cace"/><path d="m158.4 114.37c.22-1.05.74-2.1 1.47-2.73.53-.52.63-.41.53.21l-.63 2.83c0 .42-.21.73-.74.84h-.83c-.53-.1-.63-.42-.21-.73l.31-.32v-.1z" fill="#7e7b7d"/><path d="m35.7 113.53c1.26 0 2.1.42 2.52 1.05.41.52.52 1.04.2 1.57a7.95 7.95 0 0 1 -8.69 4.18c-1.88-.31-3.45-1.36-4.92-2.09a.63.63 0 0 0 -.77-.1.62.62 0 0 0 -.27.73 4.92 4.92 0 0 0 3.77 4.19c9 2.82 14.76-.95 17.38-11.2.94 1.46.52 3.76-1.26 6.8-2.93 5.23-7.33 7.54-12.98 6.9-5.34-.52-8.38-3.66-7.96-9a2.2 2.2 0 0 1 3.14-1.88l3.67 1.36c.41.21.83.21 1.25 0l4.92-2.62v.1z" fill="#fdfdfd"/><path d="m44.81 111.85c-2.51 10.26-8.27 14.03-17.27 11.2a4.92 4.92 0 0 1 -3.67-4.5.63.63 0 0 1 .58-.46c.09 0 .18.01.26.05 1.57.73 3.14 1.88 4.92 2.09 3.87.63 6.8-.73 8.69-4.08.42-.53.42-1.05 0-1.57-.52-.63-1.36-1.05-2.62-1.26l9.22-1.47h-.1z" fill="#c9cace"/><path d="m30.26 132.48c-5.76 1.36-10.26-1.05-13.61-7.02-.1-.31-.32-.31-.63 0-.31.53-.42 1.05-.21 1.58 1.88 8.06 7.96 11.51 18.22 10.78a10.47 10.47 0 0 1 -12.88-.53c-6.6-5.02-9-12.03-7.12-20.93 0-.42.21-.63.63-.95a4.43 4.43 0 0 1 2.1-.52c.41 0 .62.31.62.84-.1 8.48 4.19 14.13 12.88 16.75z" fill="#f0f0f0"/><path d="m180.5 120.86c-2.52 3.14-4.6 4.5-6.18 3.77l1.47-5.03c.2-.42.42-.42.83 0l1.05.94a1.04 1.04 0 0 0 1.05.1 1.05 1.05 0 0 0 .73-.62c.31-1.47.94-2.3 1.78-2.72.52-.21.84 0 .84.52a3.6 3.6 0 0 1 -1.57 3.14z" fill="#565555"/><path d="m67.95 126.4c-1.57.84-3.14 2.1-4.4 3.46-.63.73-.73.63-.52-.2a10.86 10.86 0 0 1 5.76-6.4c9-4.7 16.75-2.61 23.24 6.18a.62.62 0 0 1 0 .63l-.42.31h-.1c-7.02-7.11-14.87-8.37-23.56-3.97z" fill="#f0f0f0"/><path d="m180.5 120.86-1.15 6.28c0 .31-.32.63-.53.94l-1.88 1.47c-.32.2-.53.52-.53 1.04-.1 4.4-1.57 8.28-4.18 11.52-1.26 1.47-1.36 3.04-1.89 4.71-.07.4-.25.76-.52 1.05l-2.1 1.15c-2.09 1.05-2.61.52-1.78-1.47l.63-1.98c.25-.4.62-.69 1.05-.84.31 0 .63-.1.84-.52.83-1.05.42-3.15.42-4.2 0-.52.2-.73.62-.83l3.15-1.05c.41-.1.62-.31.83-.73 1.15-2.93 1.47-5.65.84-8.17-.42-2.1-.42-3.56 0-4.6 1.57.73 3.66-.53 6.28-3.77z" fill="#c9cace"/><path d="m136.42 135.41a10.47 10.47 0 0 0 12.88 7.22 10.47 10.47 0 0 0 6.8-13.08 10.46 10.46 0 0 0 -12.88-7.33 10.47 10.47 0 0 0 -6.8 13.19z" fill="#fdfdfd"/><path d="m30.26 132.48 7.22.84c.42 0 .63.31.42.83-.73 2.41-2.1 3.67-3.87 3.67-10.26.84-16.34-2.72-18.22-10.78-.2-.53 0-1.05.21-1.58.31-.31.52-.31.63 0 3.35 5.97 7.85 8.38 13.6 7.02z" fill="#c9cace"/><path d="m116.32 137.6c-.42.64-.84.85-1.26.74-.52-.31-.63-1.05-.2-2.51l-1.05.63a.62.62 0 0 1 -.53.2c-.52 0-.73-.3-.52-.83a45 45 0 0 0 6.8-8.38 7.38 7.38 0 0 1 2.94-2.3c.41 0 .41 0 .31.42l-6.5 12.04z" fill="#7e7b7d"/><path d="m60.3 137.3c-3.55-.32-6.9-1.68-10.25-3.98-.32-.21-.63-.21-.84 0a8.27 8.27 0 0 0 -1.89 5.75 88.36 88.36 0 0 0 3.77 16.76c2.93 9.42 7.54 21.46 13.93 36.01 3.77 8.8 9.1 17.8 16.12 27.01h-.94l-1.36-.73c-8.38-7.33-14.87-15.28-19.37-23.87a294.24 294.24 0 0 1 -11.73-25.76c-1.04-2.5-1.46-2.5-1.25.21a90.57 90.57 0 0 0 11.93 38.32 61.1 61.1 0 0 0 15.92 18.01c9 6.8 19.89 11 32.45 12.46-7.12 1.36-14.55 0-22.3-4.19a68.88 68.88 0 0 1 -36.01-45.54 178.82 178.82 0 0 1 -5.76-46.49 27.54 27.54 0 0 1 3.98-14.45.73.73 0 0 1 1.04.22 23.16 23.16 0 0 0 2.93 4.18c.95 1.05 2.3 2.1 4.2 3.04 1.88.84 3.66 1.78 5.44 2.93v.1z" fill="#f0f0f0"/><path d="m86.58 131.75c-1.36-.1-3.03-.74-5.02-1.89-1.26-.63-3.25-.84-5.86-.42l-5.34.74c5.23-4.5 10.57-3.98 16.02 1.57z" fill="#c9cace"/><path d="m86.58 131.75c1.05 1.78-.3 3.45-3.76 4.92-4.4 2.1-9.11 1.46-14.35-1.78-1.25-.84-1.36-1.78-.2-2.93l2.09-1.89c1.78-.1 3.56-.31 5.23-.63 2.72-.42 4.6-.31 5.86.42 2.1 1.05 3.77 1.78 4.93 1.89z" fill="#fdfdfd"/><path d="m102.29 137.92c.31 10.9 0 21.99-.73 33.09 0 .73-.21.73-.63 0l-1.15-3.25c0-.42-.32-.63-.74-.63h-2.5c1.04-2.1.83-3.35-.43-3.87a42.3 42.3 0 0 0 .42-18.85 5.76 5.76 0 0 0 -1.57-2.93l-2.51-2.1c.84-1.14 1.88-1.46 3.24-.83 1.68.84 2.1 2.3 1.47 4.5-.1.63 0 .74.42.21.42-.63.63-1.15.63-1.78.28-2.95.74-5.89 1.36-8.8a.63.63 0 0 1 .42-.1h.31l.31.32c.63.42.84 1.04.74 1.67-.1 1.89.2 3.04.94 3.35z" fill="#f0f0f0"/><path d="m60.3 137.3c1.05.2 2.73 1.25 5.14 3.14.42 1.67 1.25 2.61 2.3 2.82.31 0 .63.21 1.05.53 1.04.73 1.46 1.15 2.82 1.36 4.92.52 8.8.52 11.52 0 1.88-.32 3.56-1.47 5.03-3.46a9.42 9.42 0 0 0 4.18-2.3l2.62 2.3c.8.75 1.36 1.75 1.57 2.83a43.96 43.96 0 0 1 -.42 18.84c-7.75 7.12-8.16 14.14-1.25 20.94l5.65 6.28c-4.19 1.05-7.12 2.62-9.1 4.82l-.74.53c-.63 0-.84-.22-.73-.63 0-.42-.21-.84-.63-1.26l-.95-.2a3.45 3.45 0 0 0 -3.14 2.71c0 .42 0 .84.32 1.26l2.1 3.35c.1.42.52.42.93 0 2.94-2.83 7.54-3.87 13.82-3.14 1.36.2 2.62.73 3.67 1.67a1.36 1.36 0 0 1 .52.95l.21 4.92a.73.73 0 0 1 -.63.73c-4.34.87-8.84.36-12.87-1.47a.42.42 0 0 0 -.42.32l.1.31c0 .21.1.32.42.53-.52.52-.84.83-.84 1.25.32 2.62 1.89 4.82 4.92 6.8a14.27 14.27 0 0 1 8.59-1.35c.31 0 .52.2.52.62v16.44a29.84 29.84 0 0 1 -25.44-10.89 130.42 130.42 0 0 1 -16.12-27c-6.28-14.67-11-26.6-13.93-36.13a79.47 79.47 0 0 1 -3.77-16.75 7.7 7.7 0 0 1 1.89-5.44c.2-.42.52-.42.84-.21 3.35 2.3 6.7 3.66 10.26 3.97z" fill="#fdfdfd"/><path d="m112.76 135.72c-.21.53 0 .84.52 1.05l.32-.1.31-.21.84-.74.1.1c-.42 1.37-.31 2.2.42 2.52.21.1.63-.1 1.15-.73.6 5.05.52 10.15-.2 15.18a5.94 5.94 0 0 1 -2.52-3.56c0-.63-.31-.73-.84-.42-.2.21-.52.21-1.04.1v-12.87c.42 0 .73 0 .94-.32z" fill="#c9cace"/><path d="m88.26 141.7a9.21 9.21 0 0 1 -5.03 3.55c-2.82.53-6.7.53-11.62 0-1.36-.31-1.78-.73-2.82-1.46a2.82 2.82 0 0 0 -1.16-.53c-1.04-.2-1.77-1.15-2.2-2.72l-1.25-2.51c-1.05-2.1-.52-2.52 1.57-1.47 7.64 4.09 15.08 4.19 22.3.42 3.35-1.67 3.98-1.05 1.68 2.1l-1.47 2.61z" fill="#f0f0f0"/><path d="m124.59 138.66.31.62c0 .42.32.63.84.74 2.51.63 5.45.83 6.39 3.87a10.63 10.63 0 0 1 -1.78 4.3.63.63 0 0 0 0 .73l.2.42a.26.26 0 0 0 .45.18.26.26 0 0 0 .08-.19l2.1-4.18a4.2 4.2 0 0 1 1.04 3.87c0 .42 0 .84.32 1.05.31.31.73.31 1.25 0a1.25 1.25 0 0 1 1.47 0c.2.2.31.31.31.52.32 1.05 0 2.1-.73 2.93-.1.21-.42.32-.73.21-2-.2-2.41 1.78-3.98 2.3a5.18 5.18 0 0 1 -.21-2.93 1.05 1.05 0 0 0 -.63-1.15l-.42-.31a.63.63 0 0 0 -.94.52l-.42 3.46c0 .41-.31.63-.84.73a4.92 4.92 0 0 1 -3.66-.21c-.53-.31-.84-.1-1.05.31a3.64 3.64 0 0 0 .21 3.98c.52 1.05 1.68 1.26 3.35.63-.42 3.88-1.88 6.7-4.19 8.38v-30.37c0-.41.21-.62.74-.62l.52.1v.1zm1.88 12.56a20.85 20.85 0 0 1 2.52-7.01 1.05 1.05 0 0 0 0-1.05v-.32c-.32-.31-.63-.31-1.05 0-1.67 1.37-1.05 2.62-1.36 4.5l-1.15 5.56a.52.52 0 0 0 .31.62c.21 0 .42 0 .63-.2.2-.22.42-.42.42-.63l-.21-.63v-.84h-.1zm63.24 5.44-.52-15.28c1.78.63 3.97.31 6.6-.73a.83.83 0 0 1 1.04.41c.1.1.2.32.1.42-.2 1.57-.31 3.14-.2 4.71 0 1.47-.42 2.83-1.37 4.2a35.3 35.3 0 0 1 -5.65 6.27zm-161.23-.63.31-.94c0-.42-.2-.63-.63-.73a12.05 12.05 0 0 1 -8.48-8.27c-.1-.42-.41-.52-.83-.21l-.32.73a8.17 8.17 0 0 1 0-3.45c0-.42.32-.63.84-.63 1.57.1 2.83.94 3.77 2.2a96.05 96.05 0 0 0 9.56 10.62.52.52 0 0 1 -.77.69h-3.56.1z" fill="#c9cace"/><path d="m126.58 152.06v.63a.84.84 0 0 1 -.84.83.52.52 0 0 1 -.52-.42v-.2c.52-1.68.94-3.56 1.25-5.55.53-1.89-.2-3.14 1.47-4.61.42-.21.73-.21 1.05.1v1.47a20.3 20.3 0 0 0 -2.52 6.9v.85h.1z" fill="#7e7b7d"/><path d="m132.13 144 1.05 1.04-2.1 4.19v.21a.2.2 0 0 1 -.2.2.21.21 0 0 1 -.16-.05.21.21 0 0 1 -.06-.15v-.1l-.31-.42a.63.63 0 0 1 0-.74 13.35 13.35 0 0 0 1.88-4.29v.1h-.1z" fill="#565555"/><path d="m28.37 156.03c-5.44-1.46-8.69-4.6-9.84-9.42l.32-.73c.42-.31.73-.2.83.2 1.37 4.3 4.2 7.02 8.59 8.38.31 0 .52.21.52.63 0 .32-.1.63-.42.94z" fill="#f0f0f0"/><path d="m116.21 152.79c0 .52 0 1.05.21 1.68-1.04 0-1.67-.21-1.78-.84a5.86 5.86 0 0 0 -2.72-3.35c.42 0 .42-.42 0-1.26.42 0 .73 0 1.05-.2.42-.32.73-.22.94.41.42 1.78 1.15 2.93 2.4 3.56z" fill="#565555"/><path d="m152.65 161.58a48.37 48.37 0 0 1 -16.44 8.17c-.31.1-.63 0-.73-.42l-.73-2.4a1.05 1.05 0 0 1 0-1.26 1.05 1.05 0 0 1 1.04-.42c2.1.31 4.19.31 6.28 0 .42 0 .84-.31 1.05-.63a15.7 15.7 0 0 0 3.14-10.36l.32-.63.83-1.89c.1-.31 0-.52-.31-.84-.31-.2-.31-.52 0-.83l.52-.21c.74 0 1.15.2 1.26.73v.63c-.84 2.3-1.47 4.6-1.99 6.8-.21.42 0 .84.42 1.05l4.19 2.51c.41.21.73.1 1.04-.31.42-.52.63-1.15.63-1.88 0-.42.21-.74.53-.84.48-.12.98-.12 1.46 0 .42 0 .84-.21 1.05-.42l5.86-6.5c.1-.1.21-.1.42 0v.43l-2.2 3.66c-.42.84-.2 1.05.63.63h.73c.42.2.42.42 0 .73a9.95 9.95 0 0 0 -3.14 5.34 3.45 3.45 0 0 1 -2.1 2.52c-.73.2-.94 0-.52-.53.32-.52.53-1.05.42-1.57 0-.52-.31-.73-.84-.63-1.15.21-2.09 0-3.03-.63h.2zm-40.73-11.4a5.99 5.99 0 0 1 2.51 3.34c.32.63.95 1.05 1.89.84.63 3.14.63 6.18 0 8.9 0 .2 0 .31-.21.31s-.42-.1-.52-.41l-.21-1.05c-.21-.63-.53-.84-1.26-.74-.84.11-1.68 0-2.4-.52l.2-10.68z" fill="#c9cace"/><path d="m176.41 171.74c-2.18 9.7-4.8 19.32-7.85 28.8a1.05 1.05 0 0 1 -.84.3 33.07 33.07 0 0 1 -10.15-8.9v-.73l3.56-16.75c.2-1.25.84-2.4 1.67-3.45 6.8-7.23 13.4-13.82 19.9-19.69.73-.73 1.15-.52 1.15.63v9.84c0 1.05-.32 1.78-1.05 2.52l-5.65 6.07zm-6.9-4.5a30.91 30.91 0 0 1 -3.77 3.45c-1.16.84-1.89 1.57-2.1 2.2a3.77 3.77 0 0 0 0 3.35c-1.15 1.26-1.36 2.41-.42 3.35.21.32.21.73 0 1.05l-1.46 2.1a4.53 4.53 0 0 0 -1.26 3.97c0 .31.31.63.73.73 1.16 0 2.3-.2 3.35-.52.95.63 1.68.94 2.3.84 2.73-.84 4.3-2.41 4.82-4.71.1-.53 0-.84-.52-.84a5.11 5.11 0 0 1 -2.4-1.36c-.22-.21-.32-.53-.22-1.05a9.43 9.43 0 0 1 5.03-7.33.73.73 0 0 0 .31-.84l-.31-.3a4.51 4.51 0 0 1 -2.41-2.73c.2-1.68 1.05-3.14 2.51-4.6 1.05-.84 1.05-1.06-.31-.74-1.78.63-3.04 1.88-3.88 3.98z" fill="#f0f0f0"/><path d="m132.13 156.03-4.6 4.93c-1.68.73-2.84.52-3.36-.53a3.76 3.76 0 0 1 -.31-3.98c.31-.41.73-.62 1.25-.31 1.05.52 2.3.63 3.77.21.32 0 .53-.31.63-.73l.42-3.46a.63.63 0 0 1 .63-.52h.31l.42.31a1.05 1.05 0 0 1 .63 1.15c-.21 1.26-.1 2.2.31 2.94h-.1z" fill="#7e7b7d"/><path d="m31.72 160.96a96.34 96.34 0 0 1 5.34 12.56 4.6 4.6 0 0 0 3.56 3.14c.32.52.32.94.21 1.26a.52.52 0 0 1 -.7.4.52.52 0 0 1 -.24-.2 14.86 14.86 0 0 1 -5.23-5.96 39.58 39.58 0 0 1 -2.94-11.2z" fill="#f0f0f0"/><path d="m31.72 160.96c4.72 1.46 7.33 3.45 7.54 6.07l1.26 9.63a4.83 4.83 0 0 1 -3.46-3.14c-1.67-4.4-3.45-8.59-5.23-12.56h-.1z" fill="#c9cace"/><path d="m152.65 161.58c-.84 1.68-2.41 3.14-5.03 4.4-3.6 1.98-7.3 3.76-11.1 5.34-.52.31-.73.94-.62 1.78-.84.73-1.47 1.99-2 3.46-.2.62-.62 1.04-1.04 1.46-.52.32-.73.21-.52-.42a14.39 14.39 0 0 1 2.4-4.92c.21-.42.11-.73 0-1.05a2.1 2.1 0 0 0 -2.2 0l-2.5 1.26c0 .21-.11.21-.22 0l-.1-.42v-.31l3.56-2.4c.31-.43.42-.95.42-1.47l1.05-1.37.73 2.41c.1.42.42.52.73.42a45.66 45.66 0 0 0 16.23-8.17h.2z" fill="#565555"/><path d="m171.18 168.6c-.84.42-1.47 0-1.78-1.36.94-2.1 2.2-3.35 3.98-3.98 1.25-.42 1.46-.21.31.73a8.06 8.06 0 0 0 -2.72 4.6h.2z" fill="#7e7b7d"/><path d="m147.62 165.98c0 1.26.84 1.78 2.72 1.47.84 0 .84.2.1.42a5.23 5.23 0 0 0 -2.92 2.72.73.73 0 0 1 -.74.42h-.2c-2.73-1.47-4.5-.84-5.24 1.88a21.24 21.24 0 0 0 -.73 3.88v.1h-.32l-.31-3.46v-.2h-.21l-3.87-.1c0-.85.2-1.48.73-1.79a219.2 219.2 0 0 0 11.1-5.23l-.1-.1zm-66.48 52.87c6.18 7.54 14.66 11.2 25.55 10.9v7.74a62.19 62.19 0 0 1 -48.16-30.36 88.78 88.78 0 0 1 -12.04-38.43c-.21-2.72.1-2.72 1.25-.2a252.6 252.6 0 0 0 11.73 25.75 81.77 81.77 0 0 0 19.37 23.87c.42.31.94.52 1.36.52zm88.36-51.61c.32 1.36.74 1.78 1.47 1.36a5.02 5.02 0 0 0 2.51 2.72.75.75 0 0 1 .4.45.73.73 0 0 1 -.08.6l-.21.2a9.32 9.32 0 0 0 -5.03 7.34c0 .41 0 .73.21.94a3.15 3.15 0 0 0 2.51 1.25c.42 0 .53.42.42 1.05-.52 2.2-2.1 3.77-4.92 4.6-.42-1.04-.63-2.09-.31-2.82.1-.42.42-.52.84-.52.83 0 1.36-.32 1.78-1.05v-.31a.64.64 0 0 0 -.32-.42h-.2c-2.73.1-4.1 1.57-3.99 4.19-1.04.42-2.1.52-3.35.42-.42 0-.63-.22-.73-.53a4.53 4.53 0 0 1 1.26-3.98c1.04 0 1.88-.42 2.4-1.04.42-.42.53-.84.53-1.37 0-1.04.63-1.98 1.78-2.61.84-.32.84-.74 0-1.05h-.53c-.62-.2-.62-.63-.2-1.05l4.92-3.14h.1c.21-.31 0-.52-.2-.63a1.04 1.04 0 0 0 -.74-.1c-2.52.8-4.72 2.38-6.28 4.5a3.99 3.99 0 0 1 0-3.35 6.52 6.52 0 0 1 2.09-2.1 24.7 24.7 0 0 0 3.77-3.55zm-35.8 1.04c0 .53 0 1.05-.42 1.37l-3.46 2.5c-.2.11-.2.22-.1.32l.1.42c0 .21.1.21.42 0a7.65 7.65 0 0 1 2.41-1.36c.73-.31 1.26-.2 1.89.21.31.2.41.52.2 1.05a14.87 14.87 0 0 0 -2.4 4.81c-.21.63 0 .74.42.42a2.9 2.9 0 0 0 1.25-1.46c.53 2.4.1 4.7-1.25 6.8-.1.21-.42.31-.74.21l-.2-.1a.42.42 0 0 1 0-.53l.1-.52c0-.31-.1-.52-.32-.73l-1.04-.42a23.67 23.67 0 0 0 -7.12 5.44 7.85 7.85 0 0 0 -2.41 4.4c-.73.94-1.05 1.78-.73 2.51l-4.92-.1c.52-.74.31-1.36-.63-2.1-.42-.31-.42-.63 0-.94a24.28 24.28 0 0 1 3.14-2.72c2.62-1.57 3.87-4.6 5.23-7.33.95-2.1 2.73-3.14 3.67-5.55.1-.42 0-.84-.42-1.15-.84-.52-1.26-1.36-1.26-2.51 0-.63.42-.74.84-.21l.63.52c.2.21.42.21.52.21.21 0 .42 0 .63-.21z" fill="#c9cace"/><path d="m161.76 182.63 1.46-1.89c.21-.42.21-.73 0-1.04-.84-1.05-.73-2.1.42-3.46a11.52 11.52 0 0 1 6.18-4.5h.73c.31.2.42.42.21.73h-.1a32.9 32.9 0 0 0 -4.92 3.14c-.42.42-.42.74.2.95h.42c.84.41.84.83 0 1.25a3.15 3.15 0 0 0 -1.67 2.62l-.32 1.26a3.4 3.4 0 0 1 -2.5 1.04h-.11z" fill="#565555"/><path d="m106.8 176.03v1.89c-.22.42-.43.52-.85.31-2.5-1.47-4.7-3.35-7.64-2.83-1.67.21-3.35.74-5.13 1.57 2.83-4.6 7.33-4.92 13.61-.94z" fill="#c9cace"/><path d="m130.66 181.27a47.1 47.1 0 0 1 -9.63 9.84 8.38 8.38 0 0 1 2.4-4.6c2.31-2.31 4.72-4.2 7.13-5.24zm36.23 6.49c-.63.2-1.36-.1-2.3-.84 0-2.72 1.35-4.19 3.97-4.3.16.02.31.1.42.22a.64.64 0 0 1 0 .52c-.31.84-.84 1.15-1.67 1.05-.42 0-.74.2-.84.63-.32.73-.1 1.67.42 2.72z" fill="#7e7b7d"/><path d="m94.75 184.2h7.33c.31 0 .63.2.84.63l3.45 7.01a11.52 11.52 0 0 0 -5.86-1.36z" fill="#f0f0f0"/><path d="m106.37 191.84c.32.53.42 1.05.21 1.68 0 .41-.31.63-.73.41-2.51-.62-4.3-1.25-6.8-.41a62.34 62.34 0 0 1 -7.65 1.78c1.99-2.1 5.03-3.77 9.1-4.82 2.05-.07 4.07.4 5.87 1.36zm27.96 10.26c.52 1.15 1.15 1.57 1.78 1.26.31-.21.41-.42.52-.74 0-.3.1-.62.42-1.04.2-.32.52-.53.94-.53 1.78-.41 1.88-2.61 2.51-4.18.1-.63.32-.63.63 0 .73 2.3 2.1 4.6.42 6.7a10.25 10.25 0 0 1 -3.35 3.35c-.31.2-.63.2-1.05 0a2.51 2.51 0 0 1 -1.04-1.05c-.32-.42-.74-.73-1.26-.73a2.76 2.76 0 0 1 -1.57-2.1c-.31-2.72 0-5.23 1.26-7.32.83-1.68 1.15-1.57 1.04.3a10.49 10.49 0 0 1 -1.15 4.4 1.97 1.97 0 0 0 -.1 1.68z" fill="#c9cace"/><path d="m134.33 214.88-7.02-6.5c-1.67-1.57-3.45-1.57-5.65-1.57h-9.42c-.32 0-.42-.1-.42-.52v-7.33c0-.31 0-.42.31-.42l9.63.21c3.14 0 5.03 3.14 5.03 5.97a3.14 3.14 0 0 0 1.04 2.72l7.02 6.8a.53.53 0 0 1 .05.42.51.51 0 0 1 -.26.32h-.31zm7.01-1.89 14.34-13.5a1.26 1.26 0 0 1 1.57 0l7.86 6.59a1.25 1.25 0 0 1 .27 1.37c-.06.16-.16.3-.27.41l-22.4 20.63a1.26 1.26 0 0 1 -2-.84l.21-13.61c0-.42.21-.63.42-.94zm1.88 1.26c-.2.15-.36.37-.41.63l-.63 9a1.05 1.05 0 0 0 1.78.84l18.32-16.75a1.05 1.05 0 0 0 .2-1.26c-.03-.16-.1-.3-.2-.42l-5.44-4.19a1.05 1.05 0 0 0 -1.26 0z" fill="#f0f0f0"/><path d="m143.22 214.04 12.36-11.94a1.04 1.04 0 0 1 1.26 0l5.44 4.19a1.04 1.04 0 0 1 .3 1.3c-.06.15-.17.28-.3.38l-18.32 16.75a1.04 1.04 0 0 1 -1.19.2 1.05 1.05 0 0 1 -.6-1.04l.64-9c0-.32.2-.53.41-.74zm-49.83-8.06 4.92 2.72c.31.1.31.42 0 .73a5.34 5.34 0 0 0 -.84 4.6c-3.03-1.98-4.6-4.18-4.81-7 0-.22.2-.64.73-1.16v.1zm-20.83 44.7c.41-2.1.31-3.66-.32-4.6a663.72 663.72 0 0 1 -18.63-29.84c-.74-1.26-1.16-1.16-1.37.2l-.94 6.5.21-13.4c0-1.05.21-1.05.63 0 .63 1.25.73 2.5 1.68 3.56l7.32 11.62a101.45 101.45 0 0 0 35.91 34.02c1.47.84 1.37 1.05-.2.84a73.33 73.33 0 0 1 -24.3-8.69v-.2z" fill="#c9cace"/><path d="m119.67 212.68-3.14 3.66c-.21.42-.21.73.2 1.05 1.05.52 1.47 1.88 1.05 3.14-.73 2.4-2.61 3.77-5.34 4.19v-11.52c0-.52.21-.73.74-.73l6.49.2z" fill="#f0f0f0"/><path d="m119.67 212.68h3.45c2.52.2 3.77 1.36 5.34 3.14-.31-.21-.63-.21-.83 0-.32.31-.32.63 0 .73h-.42l-.32.1-.31.32a26.49 26.49 0 0 1 -12.88 11.52c.84.83 1.26 1.56 1.26 2.3 0 .42-.21.63-.73.63-1.05 0-1.79.42-2.1 1.25l.31-8.06c2.73-.31 4.61-1.67 5.34-4.08.42-1.26 0-2.41-1.04-3.14-.42-.32-.42-.63-.1-1.05l3.13-3.66z" fill="#c9cace"/><path d="m155.06 226.81.41.52c.32.32.42.74.42 1.26l.42 10.89c0 1.15.42 1.36 1.26.52l1.15-1.25a4.17 4.17 0 0 0 1.78-3.15l.63-16.54 4.92-5.23c.42-.42.63-.42.73.31.63 4.92.84 10.16.63 15.81-.2 4.08-9.21 11.83-12.35 14.45a.52.52 0 0 1 -.42 0 .53.53 0 0 1 -.32-.31zm-82.5 23.87a63.86 63.86 0 0 1 -19.27-16.65 9.1 9.1 0 0 1 -1.88-4.81v-6.28l.83-6.5c.21-1.36.63-1.46 1.26-.2a578.03 578.03 0 0 0 18.53 29.83c.73.95.84 2.52.53 4.82v-.2zm55.9-34.97 5.97 5.66c.31.41.42.83.42 1.25.42 2.62.52 5.34.2 8.17 0 .42-.2.84-.62 1.25-3.03 2.62-6.7 5.97-11.2 6.29l-10.37.31a.72.72 0 0 1 -.73-.73v-5.24c.31-.83 1.05-1.25 2.1-1.25.41 0 .73-.21.73-.63 0-.84-.42-1.57-1.26-2.3a22 22 0 0 0 9.42-3.98 1.25 1.25 0 0 1 1.05-.21c1.78.52 3.77.63 5.86.2 1.26 1.37 1.37 3.57.42 6.4v.3a.63.63 0 0 0 .53.64h.31c.73 0 1.05-.21 1.36-.74a10.26 10.26 0 0 0 0-8.8 4.4 4.4 0 0 0 -1.67-1.67c-.79-1.6-1.94-3-3.35-4.08-.32-.1-.32-.42 0-.73.2-.21.52-.21.83 0v-.1z" fill="#f0f0f0"/><path d="m127.52 216.55a13.6 13.6 0 0 1 3.46 4.19c-.95 0-1.78.1-2.52.52-.42.31-.52.63-.52 1.05.31 1.25 1.05 1.78 2.1 1.46-.42.84-.42 1.05 0 .74-2.1.42-4.09.42-5.87-.1a1.26 1.26 0 0 0 -1.05.1 22 22 0 0 1 -9.42 3.98 25.86 25.86 0 0 0 13.2-11.84h.73l-.1-.1z" fill="#7e7b7d"/><path d="m161.02 219.06-.62 16.44c0 1.36-.53 2.4-1.47 3.35l-1.26 1.26c-.94.73-1.36.52-1.36-.63l-.42-11c0-.41-.1-.83-.41-1.25l-.42-.42c0-2.62 2.09-5.24 6.07-7.75h-.1z" fill="#c9cace"/><path d="m130.98 220.63 1.67 1.68c-1.25-.42-2.1 0-2.62 1.46-1.04.32-1.78-.2-2.09-1.46 0-.42.2-.74.52-1.05a4.97 4.97 0 0 1 2.52-.63z" fill="#565555"/><path d="m132.76 222.3a10.26 10.26 0 0 1 0 8.8c-.32.53-.74.74-1.36.74h-.42a.63.63 0 0 1 -.52-.94c1.04-2.83.83-5.03-.43-6.4-.31.32-.31 0 0-.73.53-1.36 1.37-1.88 2.52-1.46h.2z" fill="#c9cace"/><path d="m148.98 230.26c-.52 0-.83.21-.94.63l-1.46 17.8c0 .53.31.84.73.84.52 0 .84-.21.84-.63l1.57-17.8c0-.52-.32-.84-.74-.84z" fill="#f0f0f0"/><path d="m561.33 140.33v62h21.34v-9.6l4.4 3.87c12.13 10.67 35.86 8.8 48.93-3.87 7.6-7.46 11.2-17.2 11.73-31.33.67-16.53-1.86-24.93-10.66-34.53-13.2-14.4-36.8-17.07-49.74-5.6l-4.66 4v-46.94h-21.34zm54.67-4.4c6.27 4.27 9.07 8.8 10.53 16.4 3.47 18.67-6.26 32.67-22.53 32.67-9.2 0-15.07-3.47-19.73-11.33-2.54-4.54-2.94-6.8-2.67-16 .4-11.87 3.2-17.34 10.93-22.14 6-3.73 17.74-3.46 23.47.4zm42.67 4.4v62h21.33v-124h-21.33zm37.86-59.2c-3.86 4.27-3.46 15.34.67 18.67 4.53 3.73 12.8 3.33 16.8-.8 4.27-4.13 4.53-12.13.53-17.2-2.26-2.93-3.86-3.47-9.06-3.47-4.8 0-7.07.67-8.94 2.8zm-394.53 35.74a30.76 30.76 0 0 0 -9.07 6.66l-3.6 4.4v-12.26h-21.33v86.66h21.33v-27.73c0-30.27.8-33.87 8.27-39.33 5.33-4 14.67-3.6 19.2.53 6.53 6 7.2 9.6 7.2 39.2v27.33h21.2l.4-29.86.4-30 3.87-4c6.93-7.2 16.66-8.14 23.33-2.27 6.13 5.47 6.8 9.47 6.8 38.8v27.33h21.33v-29.73c0-33.33-1.2-40.27-8.13-48.13-2.13-2.54-6.67-6-10-7.6-12-5.74-31.2-1.2-39.07 9.06-2.66 3.6-2.8 3.6-4.4 1.07-6.66-11.33-24.53-16.13-37.73-10.13zm131.6 0c-9.6 3.33-18.4 12-20.93 20.66-1.07 3.6-2 6.8-2 7.07s4.13.4 9.33.4h9.33l1.87-4.67c2.67-6.13 9.2-10 17.2-10 11.2 0 16.93 4.67 16.93 13.74 0 5.86-1.06 6.26-16.66 6.26-15.34 0-25.2 3.2-31.2 10-10.8 12.27-7.47 32.27 6.66 39.34 11.74 6.13 28.27 4.53 36.54-3.34l4.66-4.26v10.26h21.34v-30.4c0-17.73-.67-32.53-1.47-35.6-2.13-7.6-12.4-17.2-21.33-19.86-9.34-2.8-21.6-2.67-30.27.4zm31.73 51.46c0 5.6-2.4 10.8-7.2 15.2-2.66 2.54-5.33 3.47-11.33 3.87-7.2.53-8.27.27-11.33-2.8-4.14-4.13-4.67-11.2-1.07-15.6 2.93-3.6 8.8-5.07 21.33-5.2l9.6-.13zm282.67-52.8c-6.93 2.27-12 5.6-15.6 10.27-2.93 4-3.73 6.53-4.13 13.73-.8 15.87 6 22.54 26.93 26.4 13.87 2.54 19.47 5.6 19.47 10.67 0 6.67-4.4 9.73-13.6 9.73-7.74 0-11.87-2.4-14.8-8.4l-2.54-4.93h-18.66l.8 4.93c1.6 8.54 7.33 16.4 15.46 20.94 6.8 3.86 8.27 4.13 20 4.13 10.27 0 13.6-.53 18-2.93 10.4-5.47 15.34-13.07 15.34-23.47 0-12-4.94-20.13-14.54-23.87-2.93-1.06-24-5.06-27.06-5.06-.67 0-2.27-1.2-3.74-2.67-9.73-9.73 9.07-20.4 19.87-11.33 2.13 1.86 4.4 4.66 4.8 6 .8 2.26 2.13 2.66 10.27 2.66h9.46l-.8-4.8c-2.13-13.06-14.66-22.13-31.6-22.8-5.46-.13-11.46.14-13.33.8zm90.8.8c-2.4 1.07-6.53 4.27-8.93 6.94l-4.54 4.93v-12.53h-21.33v86.66h21.33v-27.06c0-23.6.4-27.6 2.54-32.54 1.46-3.06 4.13-6.53 6-7.73 4.53-2.93 14.4-3.07 18.8-.13 6.53 4.26 7.33 8.8 7.33 39.46v28h21.33v-27.73c0-30.13.8-33.87 8.14-39.33 4.53-3.34 14.53-3.47 19.2-.4 6.53 4.26 7.33 8.8 7.33 39.46v28h21.33v-31.2c0-34.66-.8-39.33-8.4-47.33-12.13-12.8-32-12.8-45.2-.13-3.6 3.46-6.4 5.73-6.4 5.2 0-2.4-7.73-9.87-12.66-12-6.54-3.07-19.47-3.2-25.87-.54zm-340.13 42.67v43.33h21.06l.54-26.4c.4-22.93.8-26.93 3.06-31.6 4.14-8.13 9.87-11.33 20.8-11.33h9.2v-17.33h-8.66c-10.27 0-14.8 2-20.54 8.93l-4.13 5.07v-14h-21.33zm196 0v43.33h21.33v-86.66h-21.33z" fill="#000"/></g></svg> \ No newline at end of file diff --git a/docs/public/static/sponsors/marblism-rectangular.svg b/docs/public/static/sponsors/marblism-rectangular.svg deleted file mode 100644 index 561a4502c2848b..00000000000000 --- a/docs/public/static/sponsors/marblism-rectangular.svg +++ /dev/null @@ -1 +0,0 @@ -<svg height="211pt" preserveAspectRatio="xMidYMid meet" viewBox="0 0 703 211" width="703pt" xmlns="http://www.w3.org/2000/svg"><g transform="matrix(.1 0 0 -.1 0 211)"><path d="m665 2001c-22-10-49-27-59-37-16-15-35-19-106-19-78 0-91-3-129-28-31-21-49-43-64-78-12-27-29-51-38-54-10-3-34-25-53-48-20-23-54-60-76-82-58-59-100-165-100-252 1-39 7-79 15-93 9-17 12-43 8-85-4-50-2-69 16-103 13-26 21-60 21-93 0-48 3-54 49-98 30-30 55-66 66-97 21-56 39-81 76-99 31-16 49-70 49-146 0-30 3-98 7-151l6-98 59-59c73-73 168-124 279-151 117-28 162-25 287 15 122 39 184 75 259 147l51 51 7 116c9 151 66 365 104 390 14 9 49 41 78 71l53 55v133 132l-45 58-45 57v120 120l-41 75c-61 113-174 219-300 281-125 62-351 88-434 50zm135-21c0-5-17-10-37-10-75 0-143-68-143-143 0-86 57-147 138-147 43 0 43 0 40-32s-4-33-58-36c-48-2-61 1-96 26-51 37-78 92-77 157 0 58 18 97 62 139 40 39 171 74 171 46zm146-18c75-20 194-70 194-82 0-4-9-75-20-156l-19-149-49-46c-44-43-53-47-112-54-36-3-73-9-82-11-17-5-18 12-18 255 0 299-11 274 106 243zm-146-57c0-18-5-25-20-25-11 0-27-11-36-25-23-35-6-75 31-75 24 0 26-3 23-32-3-31-5-33-42-32-55 2-87 37-94 103-4 46-2 53 26 81 24 24 39 30 71 30 37 0 41-2 41-25zm-261-4c10-7 11-13 1-31-9-17-17-20-36-16-15 4-37-1-57-11l-32-18 30-3c56-5 73-12 78-32 5-18 0-20-41-20-49 0-108-27-118-55-11-27-23-15-29 30-14 88 54 165 144 165 25 0 52-4 60-9zm731-130c0-9-7-76-16-150l-15-133 27-54c27-54 27-54 14-139-13-80-21-98-35-75-4 6-61 10-138 10l-132-1-42-63-43-63v-144c0-145-5-169-37-169-10 0-13 24-13 96 0 89 1 95 17 83 15-13 15-12 0 12-15 22-17 52-16 188 0 132 3 161 15 161 8 0 14 5 14 11s-7 9-15 5c-12-4-15 3-15 34 0 44-4 42 113 59 62 9 74 15 120 57 29 26 53 49 55 50s12 62 23 135c29 201 22 186 74 143 25-20 45-44 45-53zm-470 59c0-5-7-10-16-10-8 0-12 5-9 10 3 6 10 10 16 10 5 0 9-4 9-10zm-510-105c0-8-8-15-18-15s-23-5-30-12c-18-18-14 3 5 24 20 22 43 24 43 3zm1080-78c29-59 30-64 30-206v-146l-65 100c-44 66-64 107-60 120 2 11 10 66 17 122 11 99 12 102 30 86 10-9 31-43 48-76zm-839 73c10-6 19-17 19-24 0-28 78-102 122-116 24-7 47-17 51-20 12-11-50-30-94-30s-103 44-113 84c-12 48-76 41-76-8 0-56-68-92-115-62-17 12-25 26-25 46 0 27 2 30 25 24 31-8 51 8 58 45 12 60 90 92 148 61zm-218-58c-29-4-53-38-53-75 0-76 112-117 182-66 32 23 61 24 77 5 17-20 1-47-46-83-71-54-192-31-237 46-49 84 3 204 79 182 19-5 19-6-2-9zm-132-73c-3-49-41-126-55-112-3 4-6 28-6 54 0 40 5 52 31 78 17 17 31 31 32 31s0-23-2-51zm619-429v-381l-21 12c-12 6-34 8-50 5-25-5-29-3-29 18 0 13 7 29 15 36s15 19 15 28c0 12-6 10-25-8-19-17-25-34-25-63 0-49 23-77 61-77 21 0 32-7 44-30 20-38 20-36-17-38-103-3-123-8-123-28s8-21 72-8c51 10 83-2 83-32 0-31-22-40-68-26-36 11-36 10-17-6 11-9 19-24 17-33-2-12 5-14 33-11l35 4v-96-96h-48c-73 0-162 48-247 134-89 90-120 148-152 288-32 143-39 366-11 394 15 15 17 15 27-5 12-22 109-73 113-59 2 5 18 3 36-3 33-11 111-8 146 6 17 7 17 6 6-16l-13-23 28 18c27 18 29 18 42 0 12-16 13-14 13 20 0 22 4 35 10 31s10 10 10 35c0 62-36 94-125 109-48 9-82 10-110 3l-40-10 45-1c69-2 78-15 19-30-32-9-67-27-91-49-37-34-39-34-58-17-15 14-20 31-20 75 0 75 30 120 127 189 59 42 90 57 142 68 36 8 82 22 101 32s38 19 43 20c4 0 7-170 7-379zm-589 298c10-13 18-30 19-38 0-28 23-40 75-40 69 0 81-10 56-42-39-49-132-42-171 11-26 38-28 131-2 131 2 0 12-10 23-22zm-41-143c16-10 2-25-23-25-60 0-100 76-77 146l13 38 38-76c21-42 43-79 49-83zm1189-29c18-28 21-49 21-137v-104l-100-100-99-100-19-98c-19-96-20-100-72-152-50-51-54-53-75-39-13 8-26 27-30 42-12 48-33 62-92 62h-53v41c0 38 3 42 39 57 48 21 51 31 51 198 0 142 4 147 69 89 35-32 43-35 102-35h64l45 52c77 89 80 95 97 177 9 45 19 81 24 81 4 0 17-15 28-34zm104-25c26-37 27-45 27-151 0-105-2-113-26-146-15-19-30-34-35-34s-9 83-9 185 3 185 8 185c4 0 19-18 35-39zm-1129-13c-15-52-63-82-115-71-33 6-56 40-46 67 5 11 12 13 28 8 13-5 36-4 58 4 20 7 46 13 59 14 20 0 22-4 16-22zm-204-18c0-53 61-110 118-110 29 0 37-19 16-35-45-34-117-7-149 55-15 30-20 91-8 103 12 13 23 7 23-13zm493-34c18-7 41-24 52-37l20-23-34 24c-42 29-116 32-155 7-14-10-26-13-26-8 0 11 39 37 65 44 34 8 45 7 78-7zm510-7c30-16 37-28 37-71 0-28-6-42-26-57-36-28-60-26-95 8-34 35-37 68-8 105 22 28 56 34 92 15zm-502-49 24-20-24-20c-26-23-58-25-96-8-31 14-32 31-2 51 31 22 70 21 98-3zm-432-143c28-36 31-43 16-45-26-6-70 31-73 61-5 39 17 33 57-16zm1181-62c0-34-6-52-28-77-16-18-32-46-36-63-26-112-50-185-60-185-7 0-26 15-43 33l-31 32 16 75c16 73 19 77 93 153 43 42 80 77 83 77s6-20 6-45zm-1113-43c16-10 33-57 33-90 0-23-2-24-14-12-24 24-57 110-43 110 7 0 17-4 24-8zm671-284c7-7 12-19 12-27s10-26 23-40l22-26-26 23c-19 17-38 22-77 22-51 0-52 1-52 30s2 30 43 30c24 0 48-5 55-12zm299-45c2-5-36-45-84-87l-88-78-3 58-3 58 57 53 58 52 30-23c16-12 31-27 33-33zm-787-122c67-103 142-181 223-236 57-39 55-42-16-20-79 24-160 73-217 130l-54 54-4 88c-2 48-2 86 1 83s33-47 67-99zm521 48c35-27 39-36 39-74 0-59-35-85-114-85h-56v95 95h46c36 0 54-6 85-31zm288-72c1-33-6-45-50-90l-50-52 3 77c3 75 5 79 43 118l40 41 6-28c4-15 7-45 8-66zm-149-154c-9-14-10-7-6 31 3 27 7 58 8 70s3-3 5-31c2-29-1-61-7-70z"/><path d="m973 1644-28-26 33 22c29 20 39 30 28 30-3 0-18-12-33-26z"/><path d="m1102 1418c-7-7-12-16-12-22 0-5-10-20-22-33s-19-25-16-28c2-3 19 16 37 41 31 43 39 68 13 42z"/><path d="m874 1375c-8-21 6-41 17-24 12 19 11 39-1 39-6 0-13-7-16-15z"/><path d="m984 1368c-15-18-16-20-2-9 10 7 25 11 33 7 9-3 15 0 15 9 0 22-24 18-46-7z"/><path d="m945 1319c-4-6-5-12-2-15 2-3 7 2 10 11 7 17 1 20-8 4z"/><path d="m899 1283c-13-16-12-17 4-4 9 7 17 15 17 17 0 8-8 3-21-13z"/><path d="m870 1115c-7-9-8-15-2-15 5 0 12 7 16 15 3 8 4 15 2 15s-9-7-16-15z"/><path d="m440 1240c-13-9-13-10 0-10 8 0 22 5 30 10 13 9 13 10 0 10-8 0-22-5-30-10z"/><path d="m1331 1204c-13-13-20-24-14-24 5 0 20 11 33 25 30 32 13 31-19-1z"/><path d="m1085 869c-27-16-46-29-42-29 13 0 85 39 92 50 8 13 10 13-50-21z"/><path d="m992 837c-9-11-8-13 6-12 19 1 29 18 14 23-5 1-14-3-20-11z"/><path d="m1258 819c-24-13-46-53-26-47 7 3 13 10 13 16s9 18 20 26c23 17 19 20-7 5z"/><path d="m942 459c-10-16-10-21 4-26 8-3 22 1 30 8 12 12 11 16-4 26-15 9-21 7-30-8z"/><path d="m4210 1065v-465h80 80v36 36l33-29c91-80 269-66 367 29 57 56 84 129 88 235 5 124-14 187-80 259-99 108-276 128-373 42l-35-30v176 176h-80-80zm410 33c47-32 68-66 79-123 26-140-47-245-169-245-69 0-113 26-148 85-19 34-22 51-20 120 3 89 24 130 82 166 45 28 133 26 176-3z"/><path d="m4940 1065v-465h80 80v465 465h-80-80z"/><path d="m5224 1509c-29-32-26-115 5-140 34-28 96-25 126 6 32 31 34 91 4 129-17 22-29 26-68 26-36 0-53-5-67-21z"/><path d="m2265 1241c-23-10-53-33-68-50l-27-33v46 46h-80-80v-325-325h80 80v208c0 227 6 254 62 295 40 30 110 27 144-4 49-45 54-72 54-294v-205h79 80l3 224 3 225 29 30c52 54 125 61 175 17 46-41 51-71 51-291v-205h80 80v223c0 250-9 302-61 361-16 19-50 45-75 57-90 43-234 9-293-68-20-27-21-27-33-8-50 85-184 121-283 76z"/><path d="m3252 1241c-72-25-138-90-157-155-8-27-15-51-15-53s31-3 70-3h70l14 35c20 46 69 75 129 75 84 0 127-35 127-103 0-44-8-47-125-47-115 0-189-24-234-75-81-92-56-242 50-295 88-46 212-34 274 25l35 32v-38-39h80 80v228c0 133-5 244-11 267-16 57-93 129-160 149-70 21-162 20-227-3zm238-386c0-42-18-81-54-114-20-19-40-26-85-29-54-4-62-2-85 21-31 31-35 84-8 117 22 27 66 38 160 39l72 1z"/><path d="m5610 1251c-52-17-90-42-117-77-22-30-28-49-31-103-6-119 45-169 202-198 104-19 146-42 146-80 0-50-33-73-102-73-58 0-89 18-111 63l-19 37h-70-70l6-37c12-64 55-123 116-157 51-29 62-31 150-31 77 0 102 4 135 22 78 41 115 98 115 176 0 90-37 151-109 179-22 8-180 38-203 38-5 0-17 9-28 20-73 73 68 153 149 85 16-14 33-35 36-45 6-17 16-20 77-20h71l-6 36c-16 98-110 166-237 171-41 1-86-1-100-6z"/><path d="m6291 1245c-18-8-49-32-67-52l-34-37v47 47h-80-80v-325-325h80 80v203c0 177 3 207 19 244 11 23 31 49 45 58 34 22 108 23 141 1 49-32 55-66 55-296v-210h80 80v208c0 226 6 254 61 295 34 25 109 26 144 3 49-32 55-66 55-296v-210h80 80v234c0 260-6 295-63 355-91 96-240 96-339 1-27-26-48-43-48-39 0 18-58 74-95 90-49 23-146 24-194 4z"/><path d="m3740 925v-325h79 79l4 198c3 172 6 202 23 237 31 61 74 85 156 85h69v65 65h-65c-77 0-111-15-154-67l-31-38v53 52h-80-80z"/><path d="m5210 925v-325h80 80v325 325h-80-80z"/></g></svg> \ No newline at end of file diff --git a/docs/public/static/sponsors/marblism-square.png b/docs/public/static/sponsors/marblism-square.png deleted file mode 100644 index 15c6e76bd9cf81..00000000000000 Binary files a/docs/public/static/sponsors/marblism-square.png and /dev/null differ diff --git a/docs/public/static/sponsors/marblism-square.svg b/docs/public/static/sponsors/marblism-square.svg deleted file mode 100644 index 219b31806600e3..00000000000000 --- a/docs/public/static/sponsors/marblism-square.svg +++ /dev/null @@ -1 +0,0 @@ -<svg fill="none" height="256" width="256" xmlns="http://www.w3.org/2000/svg"><g stroke-width="2.4"><path d="m117.1 59.2 12.2-.8c.4 0 .6-.2.6-.7l.2-4.7" stroke="#656567"/><path d="m130.2 53-.2-2.3c0-.5-.2-.7-.7-.7-7.7 1.2-15.1-.8-19.4-7.8s-4.1-14.2.6-21.3c4.4-6.7 11.6-8.2 19.1-7.7a.4.4 0 0 0 .4-.4l.2-1a.4.4 0 0 0 0-.2.4.4 0 0 0 -.3-.1c-10.6-1.1-18.8 2-24.6 9.4-1.9 2.3-3.2 3.7-4 6.8-3.7 15 1.6 25.5 16 31.5" stroke="#787878"/><path d="m130.2 53c-11.6 2.4-20.2-1.3-25.6-11l-2.1-3.8c-.3-.5-.4-.5-.4 0 0 3.6.8 6.8 2.5 9.4 3 5 7 8.3 12.2 10 .4.2.6.8.3 1.6" stroke="#dddddf"/><path d="m135 66v2.2" stroke="#656567"/><path d="m135 68.2v9c0 .4.3.6.8.6l18-2.4c1.3-.2 2.5-.7 3.5-1.7 4-3.1 7.5-6.3 10.6-9.4.3-.4.5-.8.5-1.2l5-38.4c0-.4-.2-.7-.5-1-9.5-5-19.5-8.7-30.1-10.8-2.4-.5-4.8-.7-7.1-.8-.4 0-.6.2-.6.6v53.3" stroke="#7f7f7f"/><path d="m135 68.2c2.8.2 5.6 0 8.7-.8.4-.2.7-.4.8-.7l1.7-3.2" stroke="#e3e4e6"/><path d="m146 63.4 1.5-2c3.1-3.2 6.5-6.5 10.1-9.6" stroke="#bebcbd"/><path d="m157.8 51.8 1.1 1.9c.4.4.7.4 1.1 0 2.4-2 4.7-1 6.4-4.4.2-.5.6-.8 1.2-.8.4 0 .7-.1 1-.4.2-.2.4-.5.5-1l.5-5.4v-.4c0-.2-.1-.3-.4-.4s-.5 0-.7.2c-.7 1.6-1.4 3.2-2.8 4-2 1-3.6 2.3-5 3.8-.8.9-1.8 1.2-2.7 1.7" stroke="#e3e4e6"/><path d="m158 50.6c-3.6 1-6.1 2.3-7.7 3.9-1.2 1.3-2.7 4-4.7 8.3" stroke="#bebcbd"/><path d="m145.6 62.8c-1.7.7-3.3 1.6-4.6 2.8-.3.2-.6.3-1 .2-1.7-.1-3.4 0-5 .3" stroke="#e3e4e6"/><path d="m157.8 51.8c.3.2.4-.2.2-1.2m-12 12.8c-.4.1-.6 0-.5-.5" stroke="#a4a3a6"/><path d="m123.7 45.9c2 .3 3.9.2 5.6-.3.4 0 .6-.2.7-.7v-4.7" stroke="#656567"/><path d="m130.1 40.3v-2.7c0-.4-.2-.5-.6-.5h-2.5c-2.5.1-4.2-.7-5-2.4" stroke="#7f7f7f"/><path d="m122 34.7c-1.1-6.1 1-9.4 6.6-10" stroke="#656567"/><path d="m128.6 24.7c1.6.3 2-1.6 1.4-5.5 0-.4-.3-.7-.7-.7-12.3-2.7-20 7-16.2 18.6 1.8 5.3 5.4 8.2 10.6 8.8" stroke="#7f7f7f"/><path d="m128.6 24.7c-3.6-1.5-7.6.5-9 4.2-1 2.4-.2 4.3 2.4 5.8m8.1 5.6c-7.9.5-14-1-16-9.4a.2.2 0 0 0 -.1-.1.2.2 0 0 0 -.2 0c-.6 5.3 1.7 11.9 7.3 13l2.4.4c.4.1.6.4.7.8 0 .4-.1.6-.5.9" stroke="#e3e4e6"/><path d="m70.7 36.4a28 28 0 0 0 1.6 11.4.6.6 0 0 0 .8 0l2.6-3.1c4.5-5.5 10.7-7.5 18.4-5.8" stroke="#656567"/><path d="m94 38.9c.3.2.6.2.8.1.3 0 .5-.2.5-.6.1-3.2-1.4-5.2-4.8-5.9-3-.6-5.7-.8-8.1-.4-.7 0-.8-.2-.2-.6 4.3-4.1 8.7-5 13.3-2.4.4.2.6.1.7-.4.3-2 1-4 2.3-5.6.3-.6.1-.9-.5-1-.5 0-1.3-.2-2.4-.7-1-.4-4-.5-9-.3-2.3 0-4.4.5-6.1 1.6-5.3 3.2-9 7.3-9.8 13.7" stroke="#7f7f7f"/><path d="m94 38.9c0-2-2-3-6-2.7-4.5.2-8.3 1.9-11.3 5a1 1 0 0 1 -1.4-.3l-2.3-4.5c-.3-.6-.6-.6-.9 0l-.4.6c-.3.3-.5.3-.8 0v-.6" stroke="#e3e4e6"/><path d="m135.3 92.8c.2.3.2.7 0 1.1" stroke="#2b2b2b"/><path d="m135.2 94c-.3 2.7-.3 5.4 0 8 0 .3.1.4.4.3" stroke="#656567"/><path d="m135.6 102.3v.6" stroke="#2b2b2b"/><path d="m135.6 103-.5 21.5" stroke="#787878"/><path d="m135 124.5v12.3" stroke="#656567"/><path d="m135 136.8c.4.9.5 1.3.2 1.3" stroke="#2b2b2b"/><path d="m135.2 138.1-.1 10.2" stroke="#656567"/><path d="m135 148.3.6 15.8v.1a38.4 38.4 0 0 0 5.6-3.2l.8-37.8c0-.4.2-.8.4-1.1l9.8-14.3c.2-.4.6-.6 1-.6 9.8-.3 19.8-.4 30-.4 2 0 3.3 1.6 4.6 2.9a1.2 1.2 0 0 0 1.7-.8c.7-6 1.7-12 3.1-17.9.6-2.1.2-4-1-5.8-2.5-3.5-6.2-9.3-5.5-13.8a369.6 369.6 0 0 0 3.5-34.7c0-.2-.2-.4-.3-.5a340.8 340.8 0 0 0 -11.2-9 .3.3 0 0 0 0 .1v.1l-6 38.7c0 .4-.1.8-.5 1.2l-13.4 11.7a200.3 200.3 0 0 1 -22.4 3.4c-.5 0-.7.2-.6.7l.1 9.6" stroke="#787878"/><path d="m135 148.3c.7.5 1.5.6 2.3.5.7 0 1 .2 1.2.7l.2 1.1c0 .3.2.4.5.3.2 0 .3 0 .4-.3.4-2.6.4-5.5-.2-8.5" stroke="#dddddf"/><path d="m139.4 142.1c-.2-.6-.3-1.1-.2-1.6" stroke="#a3a3a3"/><path d="m139.2 140.5c.8-4.8.8-9.7.1-14.5" stroke="#dddddf"/><path d="m139.3 126 6.2-11.5c.1-.3 0-.4-.3-.4a5.6 5.6 0 0 0 -2.7 2.3 42.7 42.7 0 0 1 -6.6 7.8" stroke="#b7b6b7"/><path d="m135.9 124.2c-.2.2-.5.3-.8.3" stroke="#dddddf"/><path d="m135.6 103h4.8a2 2 0 0 0 1.2-.4l5.2-4.3a.7.7 0 0 1 .6-.1c.2 0 .4.1.4.4.3.5.7.5 1.2 0l.6-1" stroke="#a3a3a3"/><path d="m149.5 97.6 5.7.8.6.3c.2 0 .4.3.5.4a9.7 9.7 0 0 1 1.2 5.2.7.7 0 0 0 .6.8c1.4 0 2.4-.7 2.8-2.2 1-2.9 1.5-5.5 1.2-7.8" stroke="#dddddf"/><path d="m162.1 95.1 8.4-10.6a1.4 1.4 0 0 0 .3-1.5c-.6-1.1-.5-2.1.2-3l-.4-.1a.5.5 0 0 0 -.4 0l-3.7 6.5" stroke="#a3a3a3"/><path d="m166.5 86.4-4.7-1c-.4 0-.7-.3-1-.7l-.2-.4c0-.6-.3-.7-.8-.5-.8.4-1.5.9-2 1.5-.6 1-2.2 1.2-3.1 2a5.3 5.3 0 0 1 -4 1.3c-1.3-.1-1.4-.6-.5-1.5a5 5 0 0 0 1.8-3.4.7.7 0 0 0 -.3-.5l-.3-.1c-2.5-.3-4.8-.3-7.1.2" stroke="#dddddf"/><path d="m144.2 83.4c-.8 0-1.6.2-2.3.6" stroke="#a3a3a3"/><path d="m142 84a4 4 0 0 0 -.9 1.7c0 .4-.3.6-.7.6h-.8c-.4 0-.7.1-1 .4a9.8 9.8 0 0 0 -1.8 5.4" stroke="#dddddf"/><path d="m136.8 92c-.4.5-.9.8-1.4.8" stroke="#a3a3a3"/><path d="m139.4 142.1c-1 0-1.6-.2-1.7-.8a5.6 5.6 0 0 0 -2.6-3.2m1.7-46c1.5-.6 2.5-2 3.1-4.2 0-.4.3-.6.7-.8l1.2-.4c.3-.1.6-.4.7-.7 0-.4-.1-.6-.3-.8a.8.8 0 0 1 -.4-.7l.1-.5m20.2 11.1c-.8-1.5 0-3.2 2.3-5a5.9 5.9 0 0 0 2.1-3.8m-17 11.3c1-3.4 3-6 5.9-7.8a1 1 0 0 1 1 0c1 .7 2.2 1.2 3.5 1.5 1 .3 1.2 0 .7-.9a8.9 8.9 0 0 1 -1.5-3.7.7.7 0 0 0 -1-.4c-2.2 1-4.2 1.9-5.5 4.1-1.3 2-2.8 3.6-4.4 5-.3.2-.5.5-.6 1-.2 1-.8 1.6-1.9 1.6-.4 0-.7.1-1 .4l-2.7 2.9c-.3.2-.7.4-1.1.4-1.1.4-2.4.4-3.8.2-.6 0-1 .1-1.5.4" stroke="#909092"/><path d="m135.2 94 2.1 1c.3.2.7.1 1-.1.7-.8.9-1.7.6-2.7-.2-.5 0-.7.5-.6.7 0 1 .3 1.2 1a.4.4 0 0 0 .6 0c1.2-1 1.8-1.8 2-2.5.1-2.3.5-4.5 1-6.8" stroke="#909092"/><path d="m139.3 126c-.4.6-.8.8-1.2.7-.5-.3-.6-1-.2-2.4m0 0-1 .6a.6.6 0 0 1 -.5.2c-.5 0-.7-.3-.5-.8" stroke="#a4a3a6"/><path d="m139.2 140.5c-1-.6-1.9-1.7-2.4-3.4 0-.6-.3-.7-.8-.4-.2.2-.5.2-1 .1" stroke="#909092"/><path d="m126.7 32.5 3.5-.8a.4.4 0 0 0 .2-.5v-.2l-.3-.6-.6-.4a2 2 0 0 0 -.7-.2l-.8.1-.4.1-.6.3a2 2 0 0 0 -.6.5l-.2.6v.9a.3.3 0 0 0 .2.2.4.4 0 0 0 .3 0z" stroke="#656567"/><path d="m206.2 65.4c-.2-7.6-6.3-17.2-11.4-22.6a.4.4 0 0 0 -.3-.1.4.4 0 0 0 -.2.2l-4.3 30.3c0 .4.1.8.3 1.1l15 24c.4.6.7.6.7-.2.4-10.6.4-21.6 0-32.7m-148.3-16.4a11 11 0 0 1 7.6-3.2c.5 0 .8-.3.7-.9l-.4-2.3c0-.3-.2-.4-.5-.5-.9-.1-1.7-.2-2.4.4-2.2 1.5-4 3.4-5.5 5.5-.2.2-.2.4 0 .6v.4a.2.2 0 1 0 .5 0z" stroke="#787878"/><path d="m116.7 67.7c1.7.2 3.3-.6 5-2.3.1-.4 0-.5-.3-.6l-11-3" stroke="#656567"/><path d="m110.4 61.8a28.6 28.6 0 0 1 -11.8-12.6c-1-3.4-3.4-5.3-7.1-5.6-9-.8-14.1 3.1-15.4 11.6-.4 3.5-4.6 5-7.5 3.2a1.5 1.5 0 0 0 -2.4 1.2c-.1 5.5 2.1 8.6 6.9 9.4 6.7 1 11.2-3.9 11.3-10.4.2-4.2 5-5.4 8-3 .3.3.5.7.6 1 2.8 7.1 7.1 11.4 13 13 3.2.8 6.7.2 10.7-1.9" stroke="#7f7f7f"/><path d="m110.4 61.8c-3 1.8-6.3 1.3-9.6-1.5-3.2-2.7-4.7-8-8.7-9.2-4.7-1.6-8.2-.4-10.3 3.5-1.2 2-1.2 4.5-2.7 6.3-3 3.4-6.7 3.5-10.9.3-.4-.3-.6-.2-.6.4.3 3.7 2.2 5.7 6 5.9 5.7.3 8.8-2.7 9.3-9.1a6.1 6.1 0 0 1 5.4-5.6c2.4-.2 5.4 1.5 6.3 4a15.4 15.4 0 0 0 9.4 10.2c2.8 1 7 1.2 12.7.6" stroke="#e3e4e6"/><path d="m94.2 74.8 1.9-2.8a1 1 0 0 0 0-1.2 8.2 8.2 0 0 0 -4.7-3.3" stroke="#656567"/><path d="m91.4 67.5c-2.7-.5-5 1.5-6.8 3-3.2 2.9-8.5 3.4-12.5 2.8a11.8 11.8 0 0 1 -9.8-16.6c1.2-3.1 3.8-4.3 7.8-3.5 1.1.2 1.2 0 .4-.7-2.5-2-5.1-2.4-8-1-4.7 2.4-7 9-6.8 13.9.4 13 12.3 20.4 24.7 18.5 5.7-.8 10.3-3.8 13.8-9" stroke="#787878"/><path d="m91.4 67.5c-6.8 16.5-27.4 13.2-33.1-1.8-1-2.6-1.4-2.5-1.2.4a18 18 0 0 0 18.9 16.5 23 23 0 0 0 17.1-8c.3-.1.5-.2.9-.1.2 0 .3 0 .3.3" stroke="#dddddf"/><path d="m52.2 56.9c.7-1.7.4-2-1.1-1-7.9 5-10 12-6.3 21 .3.7.5.7.7 0 .8-2.5 2.4-4.6 4.6-6.5a1.7 1.7 0 0 0 .6-1.1c.3-3.7-.3-9.4 1.5-12.6" stroke="#787878"/><path d="m82.3 107.4a42.3 42.3 0 0 1 33-2.8 13 13 0 0 1 10 12.5l.6 9.2" stroke="#7f7f7f"/><path d="m125.9 126.3c-.7-.3-1-1.3-.9-3 0-.8-.2-1.4-.7-1.8l-.3-.3a.6.6 0 0 0 -.5 0 .6.6 0 0 0 -.4.3c-.5 2.7-.9 5.5-1.1 8.2 0 .7-.2 1.2-.6 1.7s-.5.4-.4-.1c.6-2 .1-3.5-1.4-4.4-1.2-.6-2.2-.3-3.2.8" stroke="#787878"/><path d="m116.4 127.7a10 10 0 0 1 -3.9 2.2" stroke="#7f7f7f"/><path d="m112.5 129.9 1.4-2.5c2.2-3 1.6-3.6-1.6-2-6.9 3.6-14 3.5-21.3-.4-2-1-2.5-.5-1.5 1.6l1.2 2.3" stroke="#787878"/><path d="m90.7 129c-2.3-2-3.9-3.1-4.8-3.3" stroke="#7f7f7f"/><path d="m85.8 125.7a34.8 34.8 0 0 0 -5.2-3c-1.8-.9-3.1-1.8-4-2.8a23.2 23.2 0 0 1 -3-4.2.7.7 0 0 0 -1 .2c-2.4 4-3.6 8.6-3.6 13.6 0 15.5 1.9 30.3 5.5 44.4 5 19.5 16.5 34 34.4 43.5 7.4 4 14.5 5.3 21.2 4" stroke="#787878"/><path d="m130 221.4v-7.4" stroke="#656567"/><path d="m130.1 214v-15.7c0-.4-.2-.7-.7-.8-2.8-.3-5.6.2-8.3 1.5" stroke="#7f7f7f"/><path d="m121.3 199a5 5 0 0 1 .9-4.4c.2-.3.2-.6-.1-.7l-4.7-2.6" stroke="#656567"/><path d="m117.4 191.3-.4-.5a.4.4 0 0 1 0-.5.4.4 0 0 1 .6 0c3.8 1.6 7.8 2 12 1.3a.7.7 0 0 0 .6-.7l-.2-4.7a1.3 1.3 0 0 0 -.6-1c-1-.7-2-1.2-3.4-1.5-6-.7-10.4.3-13.2 3-.4.4-.8.4-1 0l-2-3.2c-.2-.4-.3-.8-.1-1.2.4-1.6 1.4-2.4 3-2.6.2 0 .5 0 .8.2.4.4.6.8.6 1.2 0 .5.2.7.7.6.2 0 .4-.3.7-.6" stroke="#7f7f7f"/><path d="m115.5 181.2a107 107 0 0 0 7.2-1.8c2.5-.8 4.2-.2 6.5.4.4.2.7 0 .8-.4.2-.6 0-1.1-.2-1.6" stroke="#656567"/><path d="m129.8 177.8-3.3-6.7c-.2-.4-.5-.6-.9-.6h-7" stroke="#787878"/><path d="m118.7 170.5c-6.5-6.5-6-13.2 1.3-20" stroke="#7f7f7f"/><path d="m120 150.5c1.2.5 1.4 1.7.5 3.6" stroke="#787878"/><path d="m120.5 154c-3.1 1.8-4.2 5-3.3 9.6" stroke="#7f7f7f"/><path d="m117.2 163.6c1.8-.7 3.3-1.3 4.8-1.5 3-.5 5 1.3 7.4 2.7.4.2.6 0 .7-.3.2-.7.2-1.3 0-1.8" stroke="#656567"/><path d="m130.2 162.7v-87.5" stroke="#7f7f7f"/><path d="m130.1 75.2-.3-7.5c-.1-.6-.4-.7-.9-.2a18.3 18.3 0 0 1 -6.5 4.1c-5 1.6-9.9 2.8-14.8 3.6-7.3 1.1-10 5.4-16 9-10.3 6.1-16.5 13.8-15.3 26.8.3 3.9 2.2 6.5 5.6 7.8a1 1 0 0 0 1-.3c2.7-3 5.2-6.5 9.2-7.9 4.5-1.7 9-3 13.6-3.9.6 0 .6-.2 0-.5-4-1.5-8-2.1-12.2-1.7-1.1.1-3 .6-5.6 1.5-1.8.7-3.7 1.2-5.6 1.4" stroke="#656567"/><path d="m130.1 75.2c-9.6 2.7-19 5.9-28.2 9.4a46 46 0 0 0 -12.7 7.8 33.7 33.7 0 0 0 -10.1 14 1.4 1.4 0 0 0 .3 1.5c1 1 2 .9 2.9-.6m48 55.4c-6-3.8-10.4-3.5-13 1" stroke="#e3e4e6"/><path d="m120.5 154 2.3.2c.4 0 .6.2.7.6.3 1 .7 2.1 1.2 3 .2.8.4.8.5 0 .7-10.6 1-21 .7-31.5m-6 24.2c1.6-5.8 1.7-11.8.5-18-.2-1-.7-2-1.5-2.8l-2.4-2m-25.8 1.3c.4 1.4 1.2 2.2 2.2 2.4l1 .6c1 .7 1.4 1.1 2.7 1.3 4.7.5 8.4.5 11 0 1.8-.3 3.4-1.4 4.8-3.3m6.3 40.6 5.5 6" stroke="#f7f7f7"/><path d="m124.2 176.5c-4 1-6.8 2.6-8.7 4.7m1.9 10c-.5.6-.8 1-.8 1.3.3 2.5 1.8 4.6 4.7 6.5m8.8 15a28.6 28.6 0 0 1 -24.4-10.4" stroke="#e3e4e6"/><path d="m129.8 177.8a11 11 0 0 0 -5.6-1.3" stroke="#dddddf"/><path d="m85.8 125.7c-3.4-.3-6.6-1.6-9.8-3.8-.3-.2-.6-.2-.8 0a7.9 7.9 0 0 0 -1.8 5.5c.5 4.6 1.7 10 3.6 16 2.8 9 7.2 20.5 13.3 34.4 3.6 8.4 8.7 17 15.4 25.8" stroke="#f7f7f7"/><path d="m105.7 203.6h-.9l-1.3-.7c-8-7-14.2-14.6-18.5-22.8a281 281 0 0 1 -11.2-24.6c-1-2.4-1.4-2.4-1.2.2 1 12.9 4.8 25 11.4 36.6 4 6.8 9 12.5 15.2 17.2 8.6 6.5 19 10.5 31 11.9" stroke="#dddddf"/><path d="m54 94.2c7.3 5.8 19.3 5.5 23-4.4.1-.4 0-.6-.4-.7l-5.7-1" stroke="#656567"/><path d="m71 88.2c-1.5-.3-3.6-.2-6.3.3-3 .6-5.2-.6-6.5-3.4-1.2-2.3-.3-4.1-2.6-6a6.5 6.5 0 0 1 -2-2.5c-.8-2-1.7-2-2.6 0-3 6.1-2 12 3 17.7" stroke="#787878"/><path d="m71 88.2c-1.3 3.6-4.4 5-9.3 4-4.2-.8-7.5-3.1-9.8-7-.5-.8-.7-.7-.7.2a11 11 0 0 0 3.6 7.8c.3.4.3.6 0 .9l-.9.2" stroke="#dddddf"/><path d="m46 100c2 .5 3.6 0 5-1 .3-.3.3-.6 0-1l-4.5-6.2" stroke="#656567"/><path d="m46.5 91.8-7.1-14.5c-.2-.4-.3-.4-.5 0-4.7 8.3-2.9 19.7 7.1 22.7" stroke="#787878"/><path d="m46.5 91.8c-3 1.3-5.4-.1-7.1-4.2-.9-2.3-1.3-2.2-1.4.2-.2 5.4 2.7 9 8.6 11 .2 0 .2.1.2.3v.4a.6.6 0 0 1 -.3.5h-.5" stroke="#dddddf"/><path d="m147.2 127h-.5c-.5-.2-.8 0-.8.5v29" stroke="#656567"/><path d="m146 156.4-.3 6.9a1.9 1.9 0 0 1 -1 1.6l-8.7 4.4a1.4 1.4 0 0 0 -.7 1.2l-.5 8c0 .6.3.9.9.9h2.6" stroke="#787878"/><path d="m138.3 179.4h4.8" stroke="#656567"/><path d="m143.2 179.5 4.8.3c.3 0 .7.2 1 .5a13 13 0 0 1 4.7 9c.2.5.5 1 .9 1.3l4.7 4c.4.3.7.3 1 0 4.2-4.7 8.4-8.8 12.7-12.4.3-.3.5-.7.6-1.2l5-24.8c0-.4.2-.8.5-1.2l24.1-23.1c.4-.3.5-.7.5-1.2v-26a3 3 0 0 0 -.5-1.7l-5.6-8.2a.4.4 0 0 0 -.4-.4.4.4 0 0 0 -.3.4l-4.5 20.6c-.3 1.1-1 2.1-2.3 3-.3.2-.5.4-.7.8-.3 1-.7 2-1.4 2.7a133.3 133.3 0 0 0 -11.5 13.2h-16.5c-.5 0-.9 0-1.2-.4l-4.6-5.5c-1.6-2-4-2.7-7-2.3" stroke="#787878"/><path d="m143.2 179.5c-.3-.7 0-1.5.6-2.4" stroke="#dddddf"/><path d="m143.8 177.1a45 45 0 0 0 9.1-9.4" stroke="#b7b6b7"/><path d="m153 167.7.9.4c.2.2.3.4.3.7l-.1.5a.4.4 0 0 0 0 .4l.3.2c.3 0 .5 0 .6-.2 1.3-2 1.7-4.2 1.2-6.5" stroke="#dddddf"/><path d="m156.2 163.2a6 6 0 0 1 1.7-3.3" stroke="#a3a3a3"/><path d="m157.9 159.9h3.8a.2.2 0 0 1 .2.3l.3 3.3h.3c.1-1.4.4-2.7.7-3.8.7-2.6 2.4-3.2 5-1.8a.7.7 0 0 0 .5 0 .7.7 0 0 0 .4-.4 5 5 0 0 1 2.8-2.6c.8-.3.8-.4 0-.4-1.9.3-2.7-.2-2.6-1.4" stroke="#dddddf"/><path d="m169.2 153.1c2.5-1.2 4-2.6 4.7-4.2" stroke="#a3a3a3"/><path d="m174 148.9c.6.6 1.6.8 2.7.6.4-.1.7 0 .8.6 0 .5 0 1-.4 1.5s-.2.7.5.5c1-.4 1.7-1.2 2-2.4.5-2 1.5-3.7 3-5 .4-.4.4-.6 0-.8a.6.6 0 0 0 -.7 0c-.8.3-1 .1-.6-.6l2-3.5c.2-.2.2-.3 0-.5h-.3l-5.5 6.3c-.3.3-.7.4-1 .3h-1.5c-.4.2-.5.5-.5.8 0 .8-.1 1.5-.5 2-.4.3-.7.4-1.1.2l-4-2.4c-.4-.2-.5-.6-.4-1l2-6.5v-.6c-.2-.6-.6-.8-1.3-.7-.1 0-.3 0-.4.2-.4.3-.4.6 0 .8.3.3.4.5.2.8l-.8 1.8-.3.6c0 3.4-.6 7.3-3 10-.2.2-.6.5-1 .5-2 .3-4 .3-5.9 0a1 1 0 0 0 -1 .5c-.2.3-.2.7 0 1" stroke="#dddddf"/><path d="m157 154-1.1 1.1" stroke="#a3a3a3"/><path d="m155.9 155.3-5.6 3.1a1 1 0 0 1 -.6.2.8.8 0 0 1 -.6-.3l-.4-.6c-.5-.4-.8-.3-.9.4 0 1 .4 1.8 1.2 2.4.4.2.5.6.4 1.1-.9 2-2.6 3.1-3.6 5.2-1.2 2.6-2.3 5.5-4.7 7-1.2.8-2.2 1.7-3.2 2.6-.4.3-.4.6 0 .8 1 .8 1.1 1.5.5 2m7.5-22.8c2.4-1.6 3.7-4.3 4-8" stroke="#dddddf"/><path d="m150 148.4 4.4-4.7" stroke="#b7b6b7"/><path d="m154.4 143.6c1.6-.5 2-2.4 3.8-2.2.3 0 .6 0 .7-.2.7-.8 1-1.7.7-2.8a1.2 1.2 0 0 0 -1.8-.5c-.4.3-.8.3-1.1 0-.2-.2-.3-.6-.2-1a4 4 0 0 0 -1.1-3.7" stroke="#dddddf"/><path d="m155.4 133.2-1-1.2" stroke="#a3a3a3"/><path d="m154.4 132.1c-.9-3-3.7-3.2-6.2-3.8a.8.8 0 0 1 -.7-.7l-.3-.7" stroke="#dddddf"/><path d="m154.4 132.1c-.3 1.5-.9 2.9-1.7 4.1a.6.6 0 0 0 0 .6l.2.4a.2.2 0 0 0 .4.1v-.1l2-4" stroke="#909092"/><path d="m154.4 143.6c-.3-.7-.4-1.6-.2-2.8a1 1 0 0 0 -.6-1.1l-.4-.3a.6.6 0 0 0 -.9.5l-.4 3.3c0 .4-.3.6-.8.7-1.2.4-2.4.3-3.5-.2-.5-.3-.8-.1-1 .3-.7 1.4-.6 2.6.2 3.8.6 1 1.7 1.2 3.2.6m3 19.3a23.4 23.4 0 0 0 -7 5 8 8 0 0 0 -2.2 4.4" stroke="#a4a3a6"/><path d="m174 148.9c-5 3.7-10.1 6.3-15.7 7.8-.3.1-.6 0-.7-.4l-.7-2.3m12.3-.9a111 111 0 0 1 -10.6 5.1c-.5.3-.7.9-.6 1.7m-1.8 3.3c-.4.6-.8 1-1.2 1.3-.4.4-.6.3-.4-.3.5-1.8 1.3-3.4 2.3-4.7.2-.4.1-.7 0-1a2 2 0 0 0 -2.1 0l-2.4 1.2c0 .2-.1.2-.2 0l-.1-.4v-.3l3.4-2.3c.3-.4.4-.9.4-1.4" stroke="#909092"/><path d="m209.4 99-.5 10.7" stroke="#656567"/><path d="m209 109.7v20" stroke="#7f7f7f"/><path d="m209 129.6.4 14.6" stroke="#656567"/><path d="m209.4 144.2c-.3.6-.3 1.2 0 1.8.1.5.4.5.7 0l6.8-8.1a3 3 0 0 0 .7-1.9v-26.5c0-.8-.3-1.6-.8-2.3l-7-9.7c-.4-.4-.6-.4-.8.1 0 .5 0 1 .3 1.4" stroke="#7f7f7f"/><path d="m209.4 144.2c2.1-1.9 4-3.8 5.4-6a6.6 6.6 0 0 0 1.2-4 40.8 40.8 0 0 1 .2-4.9.8.8 0 0 0 -1.2-.4c-2.3 1-4.4 1.3-6 .7m0-20c.7-3.4.8-7 .3-10.6" stroke="#e3e4e6"/><path d="m71 101.4-8.7 1.5" stroke="#656567"/><path d="m62.3 103-4.7 2.3c-.4.3-.8.3-1.2.1l-3.5-1.3a2.1 2.1 0 0 0 -3 1.8c-.5 5.2 2.5 8.1 7.6 8.6a12 12 0 0 0 12.5-6.6c1.6-3 2-5 1-6.5" stroke="#7f7f7f"/><path d="m62.3 103c1.2 0 2 .4 2.4 1 .4.5.5 1 .2 1.5a7.6 7.6 0 0 1 -8.3 4c-1.8-.3-3.3-1.3-4.7-2a.6.6 0 0 0 -1 .6 4.7 4.7 0 0 0 3.6 4c8.6 2.7 14.1-.9 16.6-10.7" stroke="#e3e4e6"/><path d="m60.7 126.2c1.6 0 2.9-1.2 3.7-3.5.2-.4 0-.7-.4-.8l-6.9-.8" stroke="#656567"/><path d="m57.1 121.1c-8.3-2.5-12.4-7.9-12.3-16 0-.5-.2-.8-.7-.8-.7 0-1.3.2-1.9.5-.3.3-.5.6-.6 1-1.8 8.5.5 15.1 6.8 20 4 3 8 3 12.3.4" stroke="#787878"/><path d="m57.1 121.1c-5.5 1.3-9.8-1-13-6.7-.1-.3-.3-.3-.6 0-.3.5-.4 1-.2 1.5 1.8 7.7 7.6 11 17.4 10.3" stroke="#dddddf"/><path d="m93.1 115.3c8.3-4.2 15.8-3 22.5 3.8h.1l.4-.3a.6.6 0 0 0 0-.8c-6.2-8.2-13.6-10.2-22.4-5.9a11 11 0 0 0 -5.3 6.3c-.2.8 0 .9.5.2 1.3-1.4 2.7-2.5 4.2-3.3z" stroke="#787878"/><path d="m95.4 118.9-2 1.7c-1.1 1-1 2 .2 2.8 5 3.1 9.6 3.7 13.8 1.7 3.2-1.4 4.3-3 3.5-4.7m60 10.3a9.6 9.6 0 0 0 5.7-4.9 10.4 10.4 0 0 0 -4.2-13.6 9.6 9.6 0 0 0 -7.4-.9 9.6 9.6 0 0 0 -5.8 4.9 10.3 10.3 0 0 0 4.2 13.6c2.3 1.3 5 1.6 7.5.9z" stroke="#7f7f7f"/><path d="m110.9 120.4c-5.3-5.3-10.4-5.8-15.4-1.5" stroke="#656567"/><path d="m110.9 120.4c-1.3-.1-2.9-.7-4.8-1.8-1.2-.6-3.1-.8-5.6-.4l-5.1.7" stroke="#e3e4e6"/><path d="m45.9 134.6c1.1 4.6 4.2 7.6 9.4 9" stroke="#787878"/><path d="m55.3 143.6h3.4a.5.5 0 0 0 .6-.7l-.3-.3a82.6 82.6 0 0 1 -8.6-9.8 5 5 0 0 0 -3.7-2.1c-.5 0-.7.2-.8.6-.2 1-.2 2.1 0 3.3" stroke="#656567"/><path d="m55.3 143.6c.3-.3.4-.6.4-.9 0-.4-.2-.6-.6-.7-4-1.2-6.8-3.8-8.1-7.9-.1-.4-.4-.5-.8-.2l-.3.7" stroke="#dddddf"/><path d="m197.6 157.3 5.3-5.8c.6-.7 1-1.4 1-2.4v-9.4c0-1.1-.5-1.3-1.3-.6-6.1 5.6-12.4 12-18.9 18.9-.8 1-1.4 2-1.6 3.2l-3.4 16v.7a33.1 33.1 0 0 0 9.8 8.6 1 1 0 0 0 1-.8c2.6-8.3 5-17.4 7.2-27.1.2-.5.4-1 .7-1.3" stroke="#787878"/><path d="m67 163.3-1.3-9.2c-.3-2.4-2.7-4.4-7.2-6" stroke="#656567"/><path d="m58.5 148.3c.5 4 1.5 7.5 2.9 10.6a13.8 13.8 0 0 0 5.2 6 .5.5 0 0 0 .6-.4c.1-.3 0-.7-.2-1.2" stroke="#787878"/><path d="m58.5 148.3c2 3.8 3.6 7.8 5.1 12a4.4 4.4 0 0 0 3.4 3" stroke="#dddddf"/><path d="m77.2 207.5.1 6c.2 1.7.8 3.3 1.8 4.6 5 6.5 11 11.8 18.4 16m59.5-34.9c-2-2.1-4.2-4.3-6.7-6.5a3.6 3.6 0 0 1 -1.2-2.6c.2-2.7-1.6-5.5-4.6-5.7l-9.2-.2c-.2 0-.3.1-.3.4v7c0 .4.1.5.4.5h9c2.1 0 3.8 0 5.4 1.5l6.7 6.3a.5.5 0 0 0 .5-.1.5.5 0 0 0 0-.6zm6.2-1.2c-.2.2-.4.5-.4.8l-.2 13a1.2 1.2 0 0 0 1.9.9l21.5-19.7a1.2 1.2 0 0 0 0-1.7l-7.6-6.3a1.2 1.2 0 0 0 -1.5 0z" stroke="#787878"/><path d="m97.5 234c7.2 4.2 14.9 7 23.2 8.5 1.5.4 1.6 0 .2-.8-14-7.8-25.7-19-34.3-32.5l-7-11c-.9-1.2-1-2.4-1.6-3.6-.4-.9-.6-.8-.6.1l-.2 12.8" stroke="#656567"/><path d="m97.5 234c.4-2 .3-3.5-.3-4.4-6.3-9.5-12.2-19-17.8-28.5-.7-1.2-1.1-1.1-1.3.2l-.9 6.2" stroke="#dddddf"/><path d="m135.6 209.1-.3 7.7" stroke="#656567"/><path d="m135.3 216.8v5c0 .4.3.7.7.7 3.2 0 6.5-.2 10-.4 4.2-.2 7.7-3.4 10.7-5.9l.5-1.2c.3-2.7.3-5.3 0-7.8l-.6-1.2-5.7-5.4" stroke="#787878"/><path d="m151 200.6c-1.6-1.6-2.8-2.7-5.2-3h-3.3" stroke="#656567"/><path d="m142.5 197.7-6.2-.2c-.4 0-.6.2-.6.6v11" stroke="#787878"/><path d="m142.5 197.7-3 3.5c-.2.4-.2.7.2 1 1 .5 1.4 1.8 1 3-.7 2.3-2.5 3.6-5.1 4m15.3-8.6c-.3-.1-.6-.1-.8.1-.3.3-.3.6 0 .7" stroke="#dddddf"/><path d="m150 201.4h-.3l-.3.1-.3.3a25.3 25.3 0 0 1 -12.3 11" stroke="#a4a3a6"/><path d="m136.8 212.8c.8.8 1.2 1.5 1.2 2.2 0 .4-.2.6-.7.6-1 0-1.7.4-2 1.2" stroke="#dddddf"/><path d="m153.3 205.3c-.9 0-1.7.2-2.4.6-.4.3-.5.6-.5 1 .3 1.2 1 1.7 2 1.4" stroke="#6a6869"/><path d="m152.4 208.3c-.4.8-.4 1 0 .7" stroke="#a4a3a6"/><path d="m136.8 212.8a21 21 0 0 0 9-3.8 1.2 1.2 0 0 1 1-.2c1.7.5 3.6.6 5.6.2" stroke="#b7b6b7"/><path d="m152.4 209c1.2 1.3 1.3 3.4.4 6.1v.3a.6.6 0 0 0 .5.6h.3c.7 0 1-.2 1.3-.7a9.8 9.8 0 0 0 0-8.4" stroke="#dddddf"/><path d="m155 206.9a4.2 4.2 0 0 0 -1.7-1.6" stroke="#a3a3a3"/><path d="m153.3 205.3a11 11 0 0 0 -3.2-3.9" stroke="#b7b6b7"/><path d="m155 206.9c-1.3-.4-2 0-2.6 1.4" stroke="#909092"/><path d="m182 203.8c-3.7 2.4-5.7 4.8-5.8 7.4" stroke="#656567"/><path d="m176.3 211.2-.7 16.5a.5.5 0 0 0 .3.4h.5c2.9-2.4 11.5-10 11.7-13.9.2-5.4 0-10.4-.6-15.1 0-.7-.2-.7-.7-.3l-4.7 5" stroke="#787878"/><path d="m176.3 211.2.4.5c.3.3.4.7.4 1.2l.4 10.4c0 1.1.4 1.3 1.2.5l1.1-1.2a4 4 0 0 0 1.7-3l.6-15.8" stroke="#dddddf"/><path d="m171.2 215.1a.7.7 0 0 0 -.7-.7h-.3a.7.7 0 0 0 -.5.7l-1.4 17a.7.7 0 0 0 .7.8.7.7 0 0 0 .8-.7l1.4-17z" stroke="#787878"/><path d="m156.6 21.4c.8-.3 1.6-.8 2.3-1.4a.7.7 0 0 0 0-1c-.4-.3-.9-.4-1.5-.4-.4 0-.6.2-.7.7 0 .5-.4.9-.8 1.2a10 10 0 0 0 -4.4 5.9c-.2.8 0 1 .7.5 1.7-1.3 3-2.9 3.7-4.8.1-.4.4-.6.7-.7zm-12.8 5.2 8-3.9a.5.5 0 0 0 .2-.4.5.5 0 0 0 -.1-.4l-.3-.4c-.4-.5-.9-.6-1.5-.3-2.7 1.5-6 2.7-8 5.4a50.8 50.8 0 0 1 -4.7 5.7l.3.2a40.4 40.4 0 0 0 6.1-5.9z" stroke="#e3e4e6"/><path d="m178.4 54.7v1" stroke="#b7b6b7"/><path d="m178.3 55.7c-.8.3-1.5.8-2.1 1.4-.5.5-.4.7.3.8h1.1c.8.4 1 .8.5 1.2-.3.3-.4.6-.1 1 .4.8.4 1.7 0 2.5a16.8 16.8 0 0 0 -1 8.4" stroke="#dddddf"/><path d="m177 71a64.4 64.4 0 0 1 -4.1 5.3c-.4.4-.3.6.2.5.6-.5 1.1-.6 1.7-.5.7.2.8.6.2 1.1l-3.3 3.6.1.4c.2.2.4.2.6 0 2.3-1.5 4.2-3.4 5.7-5.6" stroke="#b7b6b7"/><path d="m178 75.8c2.2-1.6 3-3.6 5.7-4 .4 0 .7-.2.8-.6.1-1 0-1.9-.3-2.6" stroke="#dddddf"/><path d="m184.2 68.6c.3-.3.4-.6.4-.9" stroke="#b7b6b7"/><path d="m184.6 67.7c.4 0 .6 0 .8-.3a.4.4 0 0 0 -.1-.6h-.8c-.5 0-.8-.2-1-.6a9 9 0 0 1 -.8-5.8 2 2 0 0 1 1.2-1.4c1.6-.7 2.8-2.6 2.4-4.4-.1-.9 0-1.7.4-2.5.2-.4.2-1 0-1.4-.6-1-.5-2 .4-3a.6.6 0 0 0 -.1-.7l-.2-.2-.2-.1c-.4-.2-.7-.2-.8.2-.6 1-1.3 1.8-2 2.4l-1 .5c-1.8.2-3.5.8-5.2 1.6a.8.8 0 0 0 -.5.7c0 .6.3 1 .9 1.2a1.2 1.2 0 0 1 .5 1v.4" stroke="#dddddf"/><path d="m184.6 67.7-.4-.3a1 1 0 0 0 -1-.1c-.9.3-2.2.2-2.6-.8-.3-.3-.4-.8-.5-1.3 0-.3-.2-.4-.6-.3h-.5c-.2 0-.3.2-.3.5.4 2.3-.2 4.2-1.7 5.5m1.3-15.2c.2.5.5.9 1 1a1.2 1.2 0 0 0 1.5-1.1l-.1-.9a1 1 0 0 0 -.9-.6c-.6 0-1 .2-1.3.6" stroke="#a4a3a6"/><path d="m184.2 68.6h-3.6c-.4 0-.7.1-.8.4l-1.7 6.8" stroke="#a4a3a6"/><path d="m179.4 103.9-.3.3c-.4.3-.3.6.2.7h.8c.4-.1.6-.4.7-.8l.6-2.7c.1-.6 0-.7-.5-.2-.7.7-1.2 1.6-1.4 2.4v.3" stroke="#b7b6b7"/><path d="m185.4 54c.3-.2.3-.5 0-.8a.8.8 0 0 0 -1-.1l-.2.2-1.8 2.1c-.3.4-.2.6.3.6 1.2 0 2-.6 2.5-1.7 0-.1 0-.2.2-.3z" stroke="#a4a3a6"/><path d="m194.8 113.6c-.4 1-.4 2.4 0 4.3.5 2.5.2 5.1-.9 8a1 1 0 0 1 -.7.5l-3 1.1c-.5 0-.7.3-.7.8 0 1 .4 3-.4 4-.3.3-.6.4-.9.5a2 2 0 0 0 -1 .8l-.5 1.8c-.8 2-.2 2.5 1.7 1.7l2-1.3.5-1c.5-1.6.8-3.2 1.8-4.5 2.5-3.1 3.9-6.8 4-11 0-.5.2-.8.5-1.1l1.7-1.3c.3-.3.5-.6.6-1l1.1-5.9" stroke="#dddddf"/><path d="m200.6 110c1-.8 1.5-1.8 1.5-3 0-.4-.3-.6-.8-.4-.8.4-1.4 1.2-1.7 2.6a1 1 0 0 1 -.7.6 1 1 0 0 1 -1-.1l-1-1c-.4-.4-.6-.3-.8.3l-1.3 4.6" stroke="#a3a3a3"/><path d="m200.6 110c-2.4 3-4.4 4.3-5.9 3.6" stroke="#909092"/><path d="m156.5 187.6a1.9 1.9 0 0 1 0-1.6 8 8 0 0 0 1.1-4.2c.2-1.8-.2-1.9-1-.3-1 2-1.4 4.4-1 7 0 1 .6 1.6 1.4 2 .6 0 1 .3 1.2.8l1 1h1c1.3-1 2.4-2 3.2-3.1 1.6-2.2.3-4.4-.4-6.5-.3-.7-.5-.7-.8 0-.4 1.4-.5 3.5-2.3 3.9-.4 0-.6.3-.8.5-.3.4-.4.7-.4 1s-.2.5-.5.7c-.6.3-1.2 0-1.7-1.2z" stroke="#dddddf"/><path d="m149.1 139c.3-2.4 1.1-4.6 2.3-6.7a1 1 0 0 0 0-1v-.3c-.3-.3-.6-.3-1 0-1.6 1.3-1 2.5-1.3 4.3l-1.1 5.3a.5.5 0 0 0 .3.6c.2 0 .4 0 .6-.2s.4-.4.4-.6l-.2-.6z" stroke="#a4a3a6"/><path d="m190.1 154.3a29.5 29.5 0 0 1 -3.6 3.3c-1.1.8-1.8 1.5-2 2.1-.5 1-.5 2.1 0 3.2" stroke="#dddddf"/><path d="m184.5 163c-1.1 1.1-1.3 2.2-.4 3.1.2.3.2.7 0 1l-1.4 2" stroke="#a3a3a3"/><path d="m182.7 169c-1 1.1-1.4 2.4-1.2 3.9 0 .3.3.6.7.7 1.1 0 2.2-.2 3.2-.5" stroke="#dddddf"/><path d="m185.4 173c.9.7 1.6 1 2.2 1" stroke="#b7b6b7"/><path d="m187.6 174c2.6-.9 4.1-2.4 4.6-4.6.1-.5 0-.8-.5-.8-.8-.2-1.6-.6-2.3-1.3-.2-.2-.3-.5-.2-1a9 9 0 0 1 4.8-7 .7.7 0 0 0 .3-.8l-.3-.3a4.3 4.3 0 0 1 -2.3-2.6" stroke="#dddddf"/><path d="m191.7 155.6c.2-1.6 1-3 2.4-4.4 1-.8 1-1-.3-.7-1.7.6-3 1.8-3.8 3.8" stroke="#b7b6b7"/><path d="m191.7 155.6c-.8.4-1.4 0-1.7-1.3m-2.4 19.6c-.5-1-.7-1.9-.4-2.6.1-.5.4-.7.8-.6.8 0 1.3-.3 1.7-1v-.3a.6.6 0 0 0 -.3-.4h-.2c-2.6.1-3.9 1.5-3.8 4" stroke="#a4a3a6"/><path d="m182.7 169c1 0 1.8-.3 2.3-1 .4-.3.5-.7.5-1.2 0-1 .6-1.9 1.7-2.5.8-.3.8-.7 0-1h-.5c-.6-.2-.6-.6-.2-1l4.7-3h.1c.2-.3 0-.5-.2-.6a1 1 0 0 0 -.7-.1 12 12 0 0 0 -6 4.3" stroke="#909092"/><path d="m165 199a1 1 0 0 0 -.4.8l-.6 8.6a1 1 0 0 0 1.7.8l17.5-16a1 1 0 0 0 .2-1.2 1 1 0 0 0 -.2-.4l-5.2-4a1 1 0 0 0 -1.2 0l-11.8 11.5z" stroke="#dddddf"/></g><path d="m67.7 171.7c-4.3-2-9-5.5-10.6-10.2a70.8 70.8 0 0 0 -5.7-13.2c-9-4.7-12.4-11.9-10.2-21.6 0-.5 0-1-.4-1.4-5.3-7.1-6.3-15-3-23.6.1-.3 0-.7-.3-1-5.4-5.8-5-16-3.7-23.9.6-4.5 3.6-7.5 4.8-11.8a21.7 21.7 0 0 1 11.7-14.2c.4-.3.6-.7.8-1.1 1.2-4 4-7.8 8.6-11.5 1.6-1.2 3.3-1.3 5-2 .4-.2.6-.4.7-.8 3.5-17.4 20-22.7 35.7-18.2a1.4 1.4 0 0 0 1.5-.4c2.6-3 5.7-6 9.4-7.3 2.9-1 5.6-2.4 8.5-2.4 19.8-.8 39.4 2.3 55 12.5 5.3 3.6 11.2 8.2 17.7 13.9 3.9 3.4 7 7.2 9.7 11.5 3.9 6.7 8.6 14.1 8.7 21.4.2 7.9.2 16 .1 24.2a4 4 0 0 0 1 2.5l9.8 12.5.5 1.2a348 348 0 0 1 0 31.4c0 .5-.2 1-.6 1.2l-10.4 12.9a3 3 0 0 1 -1.2.7c-2.2.8-4.3 2.1-6.4 4a11 11 0 0 0 -2.8 5.3c-2 7.7-4.3 15.8-6.9 24.3-.7 2.2-1.4 4.7-1.5 7 0 8.4-.3 16.5-.7 24.3 0 .5-.2 1-.6 1.5a67 67 0 0 1 -28.6 22.2c-8.7 3.5-16.8 6-24.3 7.6a63.3 63.3 0 0 1 -28-3.2 68.7 68.7 0 0 1 -38-26.7c-.3-.5-.5-1-.5-1.6-.4-10.7-.6-21.6-.7-32.4 0-2.2-.4-4.3-1.2-6.3s-1.4-4-1.9-6c-.1-.7-.5-1-1-1.2zm49.5-112.5 12.2-.8c.4 0 .6-.2.6-.7l.2-4.7v-2.4c0-.4-.3-.6-.8-.5-7.7 1-15.1-1-19.4-7.9-4.3-7-4.1-14.2.6-21.3 4.4-6.7 11.6-8.2 19.2-7.7a.4.4 0 0 0 .3-.4l.3-.8a.3.3 0 0 0 -.1-.4.4.4 0 0 0 -.3-.1c-10.6-1.1-18.7 2-24.6 9.4-1.9 2.3-3.2 3.7-4 6.8-3.8 15 1.5 25.5 15.8 31.5zm17.9 6.9v11.1c0 .4.3.6.8.6l18-2.4c1.3-.2 2.5-.7 3.5-1.7 4-3.1 7.6-6.3 10.6-9.4.3-.4.5-.8.5-1.2l5-38.4c0-.4-.2-.7-.5-1-9.5-5-19.5-8.7-30.1-10.8-2.4-.5-4.8-.7-7.1-.8-.4 0-.6.2-.6.6l-.2 53.3zm-11.2-20.2c2 .3 3.8.2 5.5-.1.4-.2.6-.5.7-.9v-4.7l.1-2.6c0-.3-.2-.5-.6-.5h-2.4c-2.6.1-4.3-.7-5.2-2.4-1-6.1 1.2-9.4 6.7-10 1.6.3 2-1.6 1.4-5.5 0-.4-.3-.7-.7-.7-12.3-2.7-20 7-16.2 18.6 1.8 5.3 5.4 8.2 10.7 8.8zm-53-9.5a28 28 0 0 0 1.5 11.4.6.6 0 0 0 .8 0l2.6-3.1c4.5-5.5 10.7-7.5 18.4-5.8.2.2.5.2.7.1.3 0 .5-.2.5-.6.1-3.2-1.4-5.2-4.7-5.9-3-.6-5.7-.8-8.2-.4-.7 0-.8-.2-.2-.6 4.3-4 8.8-4.8 13.3-2.4.4.2.7.1.7-.4.3-2 1.1-4 2.3-5.6.4-.6.2-.9-.5-1-.4 0-1.2-.2-2.4-.7-1-.4-4-.5-9-.3-2.3 0-4.3.5-6 1.6-5.4 3.2-9.2 7.3-9.9 13.7zm64.7 56.4-.3 1.1c-.3 2.8-.3 5.5 0 8.2 0 .2.1.3.4.2v.7l-.5 21.5v12.3c.4.9.4 1.3 0 1.3v10.2l.5 15.8v.1a38.4 38.4 0 0 0 5.6-3.2l.9-37.8c0-.4 0-.8.3-1.1l9.8-14.3c.3-.4.6-.6 1-.6 9.9-.3 19.8-.4 30-.4 2 0 3.3 1.6 4.6 2.9a1.2 1.2 0 0 0 1.8-.8c.6-6 1.6-12 3-17.9.6-2.1.3-4-1-5.8-2.5-3.5-6.2-9.3-5.5-13.8a370 370 0 0 0 3.5-34.7 340.8 340.8 0 0 0 -11.5-9.6.3.3 0 0 0 0 .2v.1l-6 38.7c0 .4-.1.8-.5 1.2l-13.4 11.7a200.3 200.3 0 0 1 -22.4 3.4c-.5 0-.7.2-.6.7l.3 9.6zm-8.8-60.3 3.6-.8a.4.4 0 0 0 0-.5v-.2c0-.2 0-.4-.2-.6l-.6-.4a2 2 0 0 0 -.7-.2l-.8.1-.3.1-.7.3a2 2 0 0 0 -.5.5l-.3.6v.9a.3.3 0 0 0 .2.2.3.3 0 0 0 .3 0zm-69 16.6c2.2-2 4.7-3.1 7.6-3.2.5 0 .8-.3.7-.9l-.4-2.3c0-.3-.2-.4-.4-.5-1-.1-1.8-.2-2.5.4-2.1 1.5-4 3.4-5.4 5.5-.3.2-.3.4 0 .6v.4a.2.2 0 1 0 .4 0zm148.5 16.3c-.2-7.6-6.3-17.2-11.3-22.6a.4.4 0 0 0 -.6.1l-4.2 30.3c0 .4.1.8.3 1.1l15 24c.5.6.7.6.7-.2a453 453 0 0 0 0-32.7zm-89.5 2.3c1.7.2 3.4-.6 5-2.3.2-.4 0-.5-.3-.6l-11-3a30.4 30.4 0 0 1 -11.7-12.6 7.5 7.5 0 0 0 -7-5.6c-9.1-.8-14.2 3.1-15.4 11.6-.6 3.5-4.8 5-7.7 3.2a1.5 1.5 0 0 0 -2.4 1.2c-.1 5.5 2.2 8.6 6.9 9.4 6.7 1 11.2-3.9 11.3-10.4.3-4.2 5-5.4 8-3 .3.3.5.7.6 1 2.8 7.1 7.1 11.4 13 13 3.2.8 6.7.2 10.7-1.9zm-22.5 7.1 2-2.8a1 1 0 0 0 0-1.2 8.2 8.2 0 0 0 -4.8-3.3c-2.7-.5-5 1.5-6.7 3-3.2 2.9-8.5 3.4-12.6 2.8a11.8 11.8 0 0 1 -9.8-16.6c1.2-3.1 3.8-4.3 7.8-3.5 1.1.2 1.2 0 .4-.7-2.5-2-5.1-2.4-8-1-4.7 2.4-7 9-6.8 13.9.4 13 12.3 20.4 24.7 18.5 5.7-.8 10.3-3.8 13.8-9zm-42-18c.8-1.6.4-2-1-.9-8 5-10 12-6.4 21 .3.7.5.7.8 0 .7-2.5 2.3-4.6 4.6-6.5a1.7 1.7 0 0 0 .6-1.1c.2-3.7-.4-9.4 1.4-12.6zm30 50.5a42.6 42.6 0 0 1 33.2-2.7 13 13 0 0 1 9.9 12.5l.6 9.2c-.7-.3-1-1.3-.8-3 0-.8-.3-1.4-.8-1.8l-.3-.3a.6.6 0 0 0 -.7 0l-.1.3c-.6 2.7-1 5.5-1.2 8.2 0 .7-.2 1.2-.6 1.7s-.5.4-.4-.1c.6-2 .1-3.5-1.4-4.4-1.2-.6-2.2-.3-3.2.8a10 10 0 0 1 -3.9 2.2l1.5-2.5c2-3 1.5-3.6-1.7-2-6.9 3.6-14 3.5-21.3-.4-2-1-2.5-.5-1.5 1.6l1.2 2.3c-2.3-2-3.9-3-4.7-3.2a40.3 40.3 0 0 0 -5.4-3 12 12 0 0 1 -4-2.8 23.2 23.2 0 0 1 -3-4.2.7.7 0 0 0 -1 .2c-2.4 4-3.5 8.6-3.5 13.6 0 15.5 1.8 30.3 5.4 44.4 5 19.5 16.5 34 34.4 43.5 7.5 4 14.5 5.3 21.2 4.1v-23.2c0-.4-.2-.6-.7-.6a15 15 0 0 0 -8.2 1.1 5 5 0 0 1 1-4.2c.3-.3.2-.6-.1-.7l-4.7-2.6-.4-.5a.4.4 0 0 1 .4-.6l.2.1c3.8 1.6 7.8 2 12 1.3a.7.7 0 0 0 .7-.7l-.3-4.7a1.3 1.3 0 0 0 -.6-1c-1-.7-2-1.2-3.4-1.5-6-.7-10.4.3-13.2 3-.4.4-.7.4-1 0l-2-3.2c-.2-.4-.3-.8-.1-1.2.4-1.6 1.4-2.4 3-2.6.3 0 .5 0 .8.2.4.4.6.8.6 1.2 0 .5.2.7.7.6l.7-.5 7.2-1.8c2.5-.8 4.2-.2 6.5.4.5.2.7 0 .8-.4.2-.6 0-1.1-.2-1.6l-3.3-6.7c-.2-.4-.5-.6-.9-.6h-7c-6.4-6.5-6-13.2 1.4-20 1.2.5 1.4 1.7.6 3.6-3.2 1.7-4.3 4.9-3.3 9.5 1.7-.7 3.3-1.3 4.7-1.5 3-.5 5 1.4 7.4 2.7.4.2.7 0 .7-.3.2-.7.2-1.3 0-1.8v-87.5l-.4-7.5c0-.6-.3-.7-.7-.2a18.3 18.3 0 0 1 -6.5 4.1c-5 1.6-10 2.8-15 3.6-7.1 1.1-10 5.4-15.9 9-10.4 6.1-16.5 13.8-15.3 26.8.4 3.9 2.3 6.5 5.6 7.8a1 1 0 0 0 1-.3c2.7-3 5.2-6.5 9.2-7.9 4.6-1.7 9-3 13.6-3.9.6 0 .6-.2 0-.5-4-1.5-8-2.1-12.2-1.7-1 .1-3 .6-5.5 1.5-2 .7-3.8 1.2-5.7 1.4v-.1zm-28.3-13c7.4 5.7 19.4 5.4 23-4.5.2-.4.1-.6-.3-.7l-5.6-1c-1.5-.2-3.5 0-6.3.4-3 .6-5.2-.6-6.5-3.4-1.2-2.3-.2-4.1-2.6-6a6.5 6.5 0 0 1 -1.9-2.5c-.9-2-1.8-2-2.7 0-3 6.1-2 12 3 17.7zm-7.9 5.8c2 .4 3.7 0 5-1.2.3-.2.3-.5 0-1l-4.5-6-7-14.6c-.2-.4-.4-.4-.6 0-4.7 8.3-3 19.7 7.1 22.8zm101.3 27-.6-.3c-.5 0-.7.2-.7.6v29l-.3 6.9a1.9 1.9 0 0 1 -1 1.6l-8.7 4.4a1.4 1.4 0 0 0 -.7 1.2l-.4 8c0 .6.2.9.8.9h7.4l4.8.4c.4 0 .8.2 1.1.5a13 13 0 0 1 4.8 9c.1.5.4 1 .8 1.3l4.7 4c.4.3.8.3 1 0 4.2-4.7 8.4-8.8 12.7-12.4.3-.3.5-.7.6-1.2l5-24.8c0-.4.2-.8.6-1.2l24-23.1c.4-.3.5-.7.5-1.2v-26a3 3 0 0 0 -.4-1.7l-5.7-8.2a.4.4 0 0 0 -.4-.4.4.4 0 0 0 -.3.4l-4.5 20.6c-.3 1.1-1 2.1-2.3 3-.3.2-.5.4-.7.8-.3 1-.7 2-1.4 2.7a133.3 133.3 0 0 0 -11.5 13.2h-16.5c-.5 0-.8 0-1.2-.4l-4.6-5.5c-1.6-2-4-2.7-7-2.3v.1zm62-28-.4 10.6v20l.5 14.5c-.2.6-.2 1.2 0 1.8.2.5.4.5.7 0l6.9-8.1a3 3 0 0 0 .7-1.9v-26.5c0-.8-.3-1.6-.9-2.3l-7-9.7c-.4-.4-.6-.4-.8.1 0 .5 0 1 .3 1.4zm-138.2 2.3-8.8 1.5-4.7 2.4c-.4.3-.8.3-1.2.1l-3.5-1.3a2.1 2.1 0 0 0 -3 1.8c-.4 5.2 2.5 8.1 7.6 8.6a12 12 0 0 0 12.5-6.6c1.6-3 2-5 1-6.5zm-10.4 24.8c1.6 0 2.9-1.2 3.8-3.5.1-.4 0-.7-.5-.8l-6.9-.8c-8.3-2.5-12.4-7.9-12.3-16 0-.5-.2-.8-.7-.8-.7 0-1.3.2-1.8.5-.4.3-.6.6-.6 1-1.9 8.5.4 15.1 6.8 20 4 3 8 3 12.2.4zm32.5-10.9c8.2-4.2 15.7-3 22.4 3.8h.1l.4-.3a.6.6 0 0 0 0-.8c-6.2-8.2-13.6-10.2-22.2-5.9a11 11 0 0 0 -5.5 6.3c-.2.8 0 .9.5.2 1.3-1.4 2.7-2.5 4.3-3.3zm77.7 15.4a9.6 9.6 0 0 0 5.7-4.9 10.4 10.4 0 0 0 -4.2-13.6 9.6 9.6 0 0 0 -7.4-.9 9.6 9.6 0 0 0 -5.7 4.9 10.4 10.4 0 0 0 4.1 13.6c2.3 1.3 5 1.6 7.5.9zm-75.5-11.8-2 1.7c-1.1 1-1 2 .2 2.8 5 3.1 9.6 3.7 13.9 1.7 3.1-1.4 4.2-3 3.4-4.7-5.3-5.3-10.4-5.8-15.4-1.5zm-49.5 15.7c1.1 4.6 4.3 7.6 9.5 9h3.3a.5.5 0 0 0 .6-.7l-.3-.3a82.6 82.6 0 0 1 -8.6-9.8 5 5 0 0 0 -3.7-2.1c-.4 0-.7.2-.8.6-.2 1-.2 2.1 0 3.3zm151.6 22.7 5.4-5.8c.6-.7 1-1.4 1-2.4v-9.4c0-1.1-.4-1.3-1.2-.6-6.2 5.6-12.5 12-19 18.9-.8 1-1.4 2-1.6 3.2l-3.4 16v.7a31.6 31.6 0 0 0 9.7 8.5 1 1 0 0 0 1-.7c2.7-8.3 5.2-17.4 7.4-27.1.1-.5.3-1 .7-1.3zm-130.4 6-1.3-9.2c-.4-2.4-2.8-4.4-7.2-6 .4 4 1.4 7.6 2.8 11a14.1 14.1 0 0 0 5.2 5.8h.2a.5.5 0 0 0 .4-.4c.1-.3 0-.7-.1-1.2zm90 35.9c-2-2.1-4.3-4.3-6.8-6.5a3.6 3.6 0 0 1 -1.1-2.6c.2-2.7-1.6-5.5-4.7-5.7l-9.2-.2c-.2 0-.3.1-.3.4v7c0 .4.1.5.5.5h9c2 0 3.7 0 5.4 1.5l6.6 6.3a.5.5 0 0 0 .6-.1.5.5 0 0 0 0-.6zm6.1-1.2c-.2.2-.3.5-.3.8l-.3 13a1.2 1.2 0 0 0 1.3 1l.6-.1 21.5-19.6a1.2 1.2 0 0 0 0-1.7l-7.6-6.3a1.2 1.2 0 0 0 -1.5 0l-13.7 13zm-86 9.5.1 6c.2 1.7.8 3.3 1.8 4.6 5 6.5 11.1 11.8 18.4 16 7.2 4.2 15 7 23.2 8.3 1.6.4 1.6.2.2-.7-13.9-7.8-25.7-19-34.2-32.5l-7.1-11c-.8-1.2-1-2.4-1.6-3.6-.4-.9-.5-.8-.5.1zm58.4 1.6-.3 7.7v5c0 .4.3.7.7.7 3.2 0 6.5-.2 10-.4 4.2-.2 7.8-3.4 10.7-5.9l.5-1.2c.3-2.7.3-5.3 0-7.8 0-.4-.3-.8-.6-1.2l-5.7-5.4c-1.5-1.6-2.7-2.7-5-3h-9.6c-.4 0-.6.1-.6.5zm46.5-5.3c-3.8 2.4-5.7 4.8-5.9 7.4l-.6 16.5a.5.5 0 0 0 .3.4h.5c2.9-2.4 11.5-10 11.7-13.9.2-5.4 0-10.4-.6-15.1 0-.7-.2-.7-.7-.3zm-10.9 11.5a.7.7 0 0 0 -.1-.6.7.7 0 0 0 -.6-.3.7.7 0 0 0 -.5.2.7.7 0 0 0 -.3.5l-1.4 17a.7.7 0 0 0 .7.8.7.7 0 0 0 .8-.4v-.3l1.4-17z" fill="#000"/><path d="m130.2 53c-11.6 2.4-20.2-1.3-25.6-11l-2.1-3.8c-.3-.5-.4-.5-.4 0 0 3.6.8 6.8 2.5 9.4 3 5 7 8.3 12.2 10 .4.2.6.8.3 1.6-14.2-6-19.4-16.5-15.8-31.5.8-3 2.1-4.5 4-6.9 5.8-7.3 14-10.4 24.6-9.4a.4.4 0 0 1 .3.5v.9a.4.4 0 0 1 -.6.4c-7.5-.5-14.7 1.1-19 7.6-4.8 7.1-5 14.2-.7 21.4 4.3 7 11.7 9 19.4 7.8.5 0 .7.2.7.7l.2 2.4z" fill="#f0f0f0"/><path d="m135 68.2c2.8.2 5.6 0 8.7-.8.4-.2.7-.4.8-.7l1.7-3.2c.3-.8.7-1.5 1.3-2a135 135 0 0 1 10.3-9.7l1.1 1.9c.4.4.7.4 1.1 0 2.4-2 4.7-1 6.4-4.4.2-.5.6-.8 1.2-.8.4 0 .7-.1 1-.4.2-.2.4-.5.5-1l.5-5.4v-.4c0-.2-.1-.3-.4-.4s-.5 0-.7.2c-.7 1.6-1.4 3.2-2.8 4-2 1-3.6 2.3-5 3.8-.8.9-1.8 1.2-2.7 1.7-3.6 1-6.1 2.3-7.7 3.9-1.2 1.3-2.7 4-4.7 8.3-1.7.7-3.3 1.6-4.6 2.8-.3.2-.6.3-1 .2-1.7-.1-3.4 0-5 .3v-53.4c0-.4.2-.6.7-.6 2.3 0 4.7.3 7 .8 10.8 2.1 20.8 5.8 30.2 10.9.3.2.4.5.4 1l-5 38.2c0 .5-.1.9-.5 1.2-3 3.1-6.5 6.3-10.4 9.5a6.8 6.8 0 0 1 -3.7 1.7l-18 2.4c-.4 0-.6-.2-.6-.6v-9zm21.6-46.8c.8-.3 1.6-.8 2.3-1.4a.7.7 0 0 0 0-1c-.4-.3-.9-.4-1.5-.4-.4 0-.6.2-.7.7 0 .5-.4.9-.8 1.2a10 10 0 0 0 -4.4 5.9c-.2.8 0 1 .7.5 1.7-1.3 3-2.9 3.7-4.8.1-.4.4-.6.7-.7zm-12.8 5.2 8-3.9a.5.5 0 0 0 .2-.4.5.5 0 0 0 -.1-.4l-.3-.4c-.4-.5-.9-.6-1.5-.3-2.7 1.5-6 2.7-8 5.4a39 39 0 0 1 -4.7 5.7l.3.2c2.2-1.7 4.2-3.6 5.9-5.6zm-15.2-1.9c-3.6-1.5-7.6.5-9 4.2-1 2.4-.2 4.3 2.4 5.8.8 1.7 2.4 2.5 5 2.4h2.5c.4 0 .6.2.6.5v2.7c-7.9.5-14-1-16-9.4a.2.2 0 0 0 -.1-.1.2.2 0 0 0 -.2 0c-.6 5.3 1.7 11.9 7.3 13l2.4.4c.4.1.6.4.7.8 0 .4-.1.6-.5.9-5.2-.6-8.8-3.5-10.6-8.9-3.9-11.6 3.9-21.2 16.2-18.7.4.1.6.4.7.8.6 4 .2 5.9-1.4 5.6z" fill="#fdfdfd"/><path d="m155.9 22c-.7 2-2 3.6-3.7 4.7-.8.6-1 .4-.7-.4a11 11 0 0 1 4.4-6c.4-.2.7-.6.8-1.1 0-.3.3-.5.7-.6.6 0 1.1.1 1.4.5a.7.7 0 0 1 0 .9c-.7.6-1.4 1.1-2.2 1.4a1 1 0 0 0 -.7.6z" fill="#c9cace"/><path d="m94 38.9c0-2-2-3-6-2.7-4.5.2-8.3 1.9-11.3 5a1 1 0 0 1 -1.4-.3l-2.3-4.5c-.3-.6-.6-.6-.9 0l-.4.6c-.3.3-.5.3-.8 0v-.6c.6-6.4 4.4-10.5 9.7-13.7 1.8-1 3.9-1.6 6.1-1.6 5-.2 8 0 9.1.3l2.3.7c.7.1.9.4.5 1-1.2 1.6-2 3.5-2.3 5.6 0 .5-.2.6-.7.4-4.6-2.4-9-1.7-13.3 2.4-.6.4-.5.6.2.6 2.4-.4 5.1-.2 8.3.4 3.2.7 4.8 2.7 4.7 6 0 .2-.2.4-.6.5l-.7-.1z" fill="#fdfdfd"/><path d="m143.8 26.6-.2.3c-1.8 2-3.7 3.9-6 5.6l-.2-.2v-.3c1.8-1.8 3.3-3.6 4.8-5.5 2-2.7 5.2-3.9 8-5.4.5-.3 1-.2 1.4.3l.3.4a.5.5 0 0 1 -.2.8zm-15.2-1.9c-5.5.6-7.7 3.9-6.6 10-2.5-1.5-3.3-3.4-2.4-6 1.4-3.5 5.3-5.5 9-4z" fill="#c9cace"/><path d="m135 148.3c.7.5 1.5.6 2.3.5.7 0 1 .2 1.2.7l.2 1.1c0 .3.2.4.5.3.2 0 .3 0 .4-.3.4-2.6.4-5.5-.2-8.5-.2-.6-.3-1.1-.2-1.6.8-4.8.8-9.7.1-14.5l6.2-11.5c.1-.3 0-.4-.3-.4a6.3 6.3 0 0 0 -2.8 2.3 43 43 0 0 1 -6.5 8l-.8.1.5-21.5h4.8c.5 0 .9-.1 1.2-.4l5.2-4.3a.7.7 0 0 1 .6-.1c.2 0 .4.1.4.4.3.5.7.5 1.2 0 .3-.3.5-.6.5-1l5.7.8.6.3c.2 0 .4.3.5.4a9.7 9.7 0 0 1 1.2 5.2.7.7 0 0 0 .6.8c1.4 0 2.4-.7 2.8-2.2 1-2.9 1.5-5.5 1.2-7.8l8.4-10.6a1.4 1.4 0 0 0 .3-1.5c-.6-1.1-.5-2.1.2-3l-.4-.1a.5.5 0 0 0 -.4 0l-3.7 6.5-4.7-.9c-.4 0-.7-.3-1-.7l-.2-.4c0-.6-.3-.7-.8-.5-.8.4-1.5.9-2 1.5-.6 1-2.2 1.2-3.1 2a5.3 5.3 0 0 1 -4 1.3c-1.3 0-1.4-.6-.5-1.5a5 5 0 0 0 1.8-3.4.7.7 0 0 0 -.3-.5l-.3-.1c-2.5-.3-4.8-.2-7.1.3-.9 0-1.7.2-2.4.6a4 4 0 0 0 -.8 1.7c0 .4-.3.6-.7.6h-.8c-.4 0-.7.1-1 .4a9.3 9.3 0 0 0 -1.9 5.4c-.4.4-.8.7-1.4.7l-.1-9.5c0-.5.2-.7.6-.8 7.3-.6 14.4-1.6 21.2-3 .5 0 1-.2 1.2-.6l13.4-11.4c.3-.4.5-.8.6-1.3l5.9-38.6v-.1a.3.3 0 0 1 0-.2.3.3 0 0 1 .3-.1l.1.1a218 218 0 0 1 11 9.6l.2.6c-.8 11.9-2 23.2-3.6 34-.7 4.5 3 10.3 5.4 13.8 1.2 1.8 1.7 3.7 1.2 6a126.8 126.8 0 0 0 -3.4 18.2 1.2 1.2 0 0 1 -1.5.3c-1.3-1.2-2.6-2.9-4.6-2.9-10.3 0-20.2.2-30 .4-.4 0-.8.2-1.1.6l-9.7 14.2c-.2.4-.4.8-.4 1.1l-.8 37.8c0 .3 0 .4-.2.5a38.4 38.4 0 0 1 -5.4 2.8l-.6-16zm43.7-93.6-.3 1c-.8.3-1.5.7-2.1 1.3-.5.4-.4.8.4 1h.4c.2-.2.4-.2.6 0 .8.3 1 .7.5 1.1-.3.3-.4.6-.1 1 .4.8.4 1.7 0 2.5a16.8 16.8 0 0 0 -1 8.3 69 69 0 0 1 -4.1 5.4c-.4.4-.3.6.2.5.6-.5 1.1-.6 1.7-.5.7.2.8.6.2 1.1l-3.3 3.6.1.4c.2.2.4.2.6 0 2.3-1.5 4.2-3.4 5.7-5.6 2-1.6 3-3.6 5.7-4 .4 0 .6-.2.7-.6.1-1 0-1.9-.3-2.6.3-.3.4-.6.4-.9.4 0 .7 0 .8-.3a.4.4 0 0 0 -.1-.6h-.8c-.5 0-.8-.2-1-.6a9 9 0 0 1 -.8-5.8 2 2 0 0 1 1.2-1.4c1.6-.7 2.8-2.6 2.5-4.4-.2-.9 0-1.7.3-2.5.2-.4.2-1 0-1.4-.6-1-.5-2 .4-3a.6.6 0 0 0 0-.7l-.3-.2-.2-.1c-.4-.2-.7-.2-.8.2-.6 1-1.3 1.8-2 2.4l-1 .5c-1.8.2-3.5.8-5.2 1.6a.8.8 0 0 0 -.5.7c0 .6.3 1 .9 1.2a1.2 1.2 0 0 1 .6 1zm.8 49.2-.2.3c-.4.3-.4.6 0 .7h.9c.4-.1.6-.4.7-.8l.6-2.7c.2-.6 0-.7-.5-.2-.7.7-1.2 1.6-1.4 2.4v.3z" fill="#f0f0f0"/><path d="m126.7 32.5a.4.4 0 0 1 -.5-.2v-.9l.2-.6.6-.5.6-.3h.5l1.4.1c.4.2.7.5.9.9v.2a.3.3 0 0 1 0 .3.4.4 0 0 1 -.3.2zm3.4 7.8-.1 4.7c0 .4-.2.6-.7.6a13 13 0 0 1 -5.6.3c.4-.3.5-.5.5-.9s-.2-.7-.7-.8l-2.4-.3c-5.6-1.2-7.9-7.8-7.3-13a.2.2 0 0 1 .2-.1h.2c2 8.5 8 10 16 9.5zm-36-1.4c-7.7-1.7-13.9.3-18.4 6l-2.7 2.8a.6.6 0 0 1 -1-.2 28 28 0 0 1 -1.4-11.2v.5c.3.4.6.4 1 .1l.3-.5c.3-.7.6-.7 1 0l2.3 4.4a1 1 0 0 0 1.4.2c3-3 6.8-4.7 11.4-5 3.9-.1 6 .8 6 2.8zm36.1 14.2-.3 4.7c0 .4-.2.6-.6.6l-12.2.8c.2-.8 0-1.3-.3-1.5a22.4 22.4 0 0 1 -12.2-10 18.3 18.3 0 0 1 -2.4-9.5c0-.5.1-.5.3 0l2.1 3.8c5.5 9.8 14 13.5 25.5 11h.1zm27.6-1.3c.3.2.4-.2.2-1.2 1-.6 1.9-.8 2.7-1.7 1.4-1.5 3-2.8 5-3.9 1.4-.7 2.1-2.3 2.8-3.9.2-.3.4-.3.7-.2l.4.4v.4l-.5 5.5c0 .4-.2.7-.6 1-.2.2-.5.3-1 .3s-.9.2-1.1.8c-1.7 3.5-4 2.5-6.4 4.5-.4.3-.7.3-1-.1l-1.2-2z" fill="#c9cace"/><path d="m65.3 45.9a10.7 10.7 0 0 0 -7.7 3.2.2.2 0 0 1 -.2 0l-.3-.4v-.6c1.6-2.1 3.4-4 5.6-5.5.7-.6 1.5-.5 2.3-.4.3 0 .5.2.6.5l.4 2.3c0 .6-.3.9-.7.9zm129.5-3.2c5.1 5.5 11.2 15.1 11.4 22.7.3 11.1.3 22-.1 32.7 0 .8-.3.8-.7.2l-15-23.8c-.2-.4-.2-.8-.2-1.2l4.2-30.4a.4.4 0 0 1 .2-.2.4.4 0 0 1 .4.1z" fill="#f0f0f0"/><path d="m110.4 61.8c-3 1.8-6.3 1.3-9.6-1.5-3.2-2.7-4.7-8-8.7-9.2-4.7-1.6-8.2-.4-10.3 3.5-1.2 2-1.2 4.5-2.7 6.3-3 3.4-6.7 3.5-10.9.3-.4-.3-.6-.2-.6.4.3 3.7 2.2 5.7 6 5.9 5.7.3 8.8-2.7 9.3-9.1a6.1 6.1 0 0 1 5.4-5.6c2.4-.2 5.4 1.5 6.3 4a15.4 15.4 0 0 0 9.4 10.2c2.8 1 7 1.2 12.7.6-4 2-7.5 2.7-10.7 1.8-5.9-1.6-10.2-6-13-13-.1-.3-.3-.6-.6-.8-3-2.5-7.8-1.3-8 3-.1 6.4-4.7 11.3-11.3 10.2-4.8-.7-7-3.8-6.9-9.3a1.5 1.5 0 0 1 2.4-1.2c3 1.8 7 .5 7.7-3.2 1.1-8.6 6.3-12.4 15.3-11.6 3.6.3 6 2.2 7.1 5.6a27.5 27.5 0 0 0 11.7 12.5v.1z" fill="#fdfdfd"/><path d="m184.6 67.7-.4-.3a1 1 0 0 0 -1-.1c-.9.3-2.2.2-2.6-.8-.3-.3-.4-.8-.5-1.3 0-.3-.2-.4-.6-.3h-.5c-.2 0-.3.2-.3.5.4 2.3-.2 4.2-1.7 5.5-.4-2.7 0-5.5 1.2-8.3.2-.8.2-1.7-.2-2.4-.3-.4-.3-.8 0-1.1.4-.4.3-.8-.4-1.2h-1.1c-.7 0-.8-.3-.3-.8a5 5 0 0 1 2.1-1.3c.2.5.5.8 1 1a1.2 1.2 0 0 0 1.5-1.2l-.1-.9a1 1 0 0 0 -.9-.6c-.6 0-1 .2-1.3.6v-.4a1.2 1.2 0 0 0 -.5-.9c-.6-.3-.9-.7-.9-1.3a.8.8 0 0 1 .5-.7c1.7-.8 3.4-1.4 5.2-1.6.3 0 .7-.2 1-.4l2-2.3c.1-.5.4-.6.8-.4l.2.1a.6.6 0 0 1 .3.8c-.8 1-1 2-.5 3.1.2.5.2 1 0 1.4a6 6 0 0 0 -.3 2.4c.4 1.9-.8 3.8-2.3 4.5a2 2 0 0 0 -1.2 1.4c-.4 1.8-.2 3.7.7 5.8.2.4.5.6 1 .6h.5a.4.4 0 0 1 .5.1.4.4 0 0 1 -.1.5zm.8-13.7c.3-.2.3-.5 0-.8a.8.8 0 0 0 -1-.1l-.2.2-1.8 2.1c-.3.4-.2.6.3.6 1.2 0 2-.6 2.5-1.7 0-.1 0-.2.2-.3zm-75 7.8 11 3c.4 0 .4.2.2.6-1.6 1.7-3.2 2.5-5 2.3-5.5.6-9.8.4-12.6-.6a15.4 15.4 0 0 1 -9.4-10.4c-.9-2.3-4-4-6.3-3.9a6.1 6.1 0 0 0 -5.4 5.7c-.5 6.3-3.7 9.3-9.5 9-3.6-.2-5.6-2.2-5.9-6 0-.5.2-.6.7-.3 4.2 3.2 7.8 3.1 10.9-.2 1.6-1.8 1.5-4.4 2.7-6.5 2.1-4 5.6-5.1 10.3-3.5 4 1.4 5.5 6.4 8.7 9.2 3.3 2.9 6.5 3.4 9.6 1.5z" fill="#c9cace"/><path d="m91.4 67.5c-6.8 16.5-27.4 13.2-33.1-1.8-1-2.6-1.4-2.5-1.2.4a18 18 0 0 0 18.9 16.5 23 23 0 0 0 17.1-8c.3-.1.5-.2.9-.1.2 0 .3 0 .3.3a20 20 0 0 1 -13.9 9.2c-12.4 1.7-24.2-5.5-24.8-18.6 0-4.8 2.3-11.5 7-13.9 2.8-1.4 5.4-1 7.9 1 .8.8.7 1-.4.7-4-.8-6.5.4-7.8 3.5a11.8 11.8 0 0 0 9.8 16.6c4 .6 9.5 0 12.5-2.7 1.8-1.6 4-3.6 6.8-3.1z" fill="#f0f0f0"/><path d="m158 50.6c.2 1 0 1.4-.2 1.2a135 135 0 0 0 -10.3 9.7c-.6.5-1 1.1-1.3 1.9-.6.1-.8 0-.7-.5 2-4.3 3.6-7.1 4.8-8.4 1.6-1.6 4.1-2.9 7.7-3.9zm27.2 3.7c-.5 1-1.3 1.7-2.4 1.7-.6 0-.7-.2-.4-.6l1.8-2a.8.8 0 0 1 1.2 0c.3.2.3.4 0 .6zm-6.9 1.4.2-1c.3-.4.7-.6 1.2-.6a1 1 0 0 1 1 .6v.7a1.2 1.2 0 0 1 -1.4 1.2c-.5 0-.8-.3-1-.8z" fill="#7e7b7d"/><path d="m52.2 56.9c-1.8 3-1.2 8.7-1.5 12.2a1.7 1.7 0 0 1 -.7 1.2c-2.2 1.8-3.7 4-4.5 6.6-.2.7-.4.7-.7 0-3.7-9-1.6-16 6.3-21 1.6-1 2-.7 1 .8v.2z" fill="#f0f0f0"/><path d="m145.6 62.8c-.2.5 0 .8.6.7l-1.7 3.2c-.1.3-.4.5-.8.7-3 .8-6 1-8.6.8v-2.1c1.6-.3 3.2-.4 5-.1.3 0 .6-.2.9-.4 1.3-1.2 2.8-2 4.5-2.7v-.1zm-54.2 4.7a8 8 0 0 1 4.7 3.4c.2.3.2.7 0 1l-1.9 3c0-.3-.1-.4-.3-.4-.4-.1-.6 0-.9.2a23.7 23.7 0 0 1 -17.1 8 17.9 17.9 0 0 1 -18.7-16.6c-.3-2.9 0-3 1.1-.4 5.7 15.1 26.3 18.3 33 1.8z" fill="#c9cace"/><path d="m184.6 67.7c0 .3-.1.6-.4.9h-3.6c-.4 0-.7.1-.8.4l-1.7 6.8c-1.5 2.2-3.4 4-5.7 5.6-.2.2-.4.2-.6 0l-.1-.3v-.1l3.3-3.6c.6-.5.5-1-.2-1.2-.6 0-1.1.1-1.6.5-.6.2-.7 0-.3-.4a55 55 0 0 0 4.1-5.3c1.5-1.3 2-3.2 1.7-5.5 0-.3 0-.4.3-.4l.5-.1c.3 0 .5 0 .6.3l.5 1.3c.4 1 1.7 1.2 2.6.8.3-.3.7-.2 1 0l.4.4z" fill="#7e7b7d"/><path d="m130.1 75.2c-9.6 2.7-19 5.9-28.2 9.4a46 46 0 0 0 -12.7 7.8 33.7 33.7 0 0 0 -10.1 14 1.4 1.4 0 0 0 .3 1.5c1 1 2 .9 2.9-.6 1.9-.2 3.8-.6 5.6-1.2 2.6-1 4.5-1.5 5.6-1.6 4-.4 8.2.2 12.3 1.7.5.3.5.4 0 .5a69 69 0 0 0 -13.7 3.9c-4 1.4-6.5 4.8-9.2 8a1 1 0 0 1 -1 .2c-3.4-1.2-5.2-3.8-5.5-7.8-1.2-13 4.8-20.6 15.3-26.9 5.8-3.5 8.6-7.9 15.9-9 5-.8 9.9-2 14.8-3.5 1.8-.5 4-2 6.5-4.2.5-.4.7-.3.7.3zm54.1-6.6c.3.7.4 1.6.3 2.6-.1.3-.4.6-.8.7-2.7.3-3.5 2.3-5.6 3.9l1.7-6.8c.1-.3.4-.4.8-.4z" fill="#c9cace"/><path d="m71 88.2c-1.3 3.6-4.4 5-9.3 4-4.2-.8-7.5-3.1-9.8-7-.5-.8-.7-.7-.7.2a11 11 0 0 0 3.6 7.8c.3.4.3.6 0 .9l-.9.2c-5-5.5-6-11.4-3-17.7 1-2 2-2 2.8.1.5 1.1 1 2 1.9 2.6 2.3 1.8 1.4 3.7 2.6 6 1.3 2.7 3.5 4 6.5 3.5 2.7-.6 4.8-.8 6.2-.5v-.1z" fill="#f0f0f0"/><path d="m130.1 75.2v87.4c-5.9-3.7-10.2-3.3-13 1.2-.8-4.8.4-8 3.4-9.7h2.3c.4 0 .6.3.7.7.3 1 .7 2.1 1.2 3 .2.8.4.8.5 0 .7-10.6 1-21 .7-31.5l-.6-9.2a12.9 12.9 0 0 0 -10-12.5 42.3 42.3 0 0 0 -33 2.8c-.8 1.4-1.8 1.6-2.9.5a1.4 1.4 0 0 1 -.3-1.5 33.7 33.7 0 0 1 10.1-14 46 46 0 0 1 12.7-7.7 313 313 0 0 1 28.2-9.5z" fill="#fdfdfd"/><path d="m46.5 91.8c-3 1.3-5.4-.1-7.1-4.2-.9-2.3-1.3-2.2-1.4.2-.2 5.4 2.7 9 8.6 11 .2 0 .2.1.2.3v.4a.6.6 0 0 1 -.3.5h-.5c-10-3-11.8-14.3-7-22.7 0-.4.2-.4.4 0l7 14.5z" fill="#f0f0f0"/><path d="m162.1 95.1c-.8-1.5 0-3.2 2.3-5a5.9 5.9 0 0 0 2.1-3.8l3.5-6.4a.5.5 0 0 1 .6-.1h.4c-.8 1-.9 2-.2 3.2a1.4 1.4 0 0 1 -.3 1.5z" fill="#565555"/><path d="m166.5 86.4a5.5 5.5 0 0 1 -2.1 3.8c-2.2 1.7-3 3.4-2.2 5 .2 2.3-.2 4.9-1.1 7.7-.6 1.6-1.6 2.3-3 2.2a.7.7 0 0 1 -.7-.8c.2-1.8-.2-3.6-1.2-5.2l-.4-.4-.6-.3-5.6-.8c1-3.4 3-6 5.8-7.8a1 1 0 0 1 1 0c1 .7 2.2 1.2 3.5 1.5 1 .3 1.2 0 .7-.9a8.9 8.9 0 0 1 -1.5-3.7.7.7 0 0 0 -1-.4c-2.2 1-4.2 1.9-5.5 4.1-1.3 2-2.8 3.6-4.4 5-.3.2-.5.5-.6 1-.2 1-.8 1.6-1.9 1.6-.4 0-.7.1-1 .4l-2.7 2.9c-.3.2-.7.4-1.1.4-1.1.4-2.4.4-3.8.2-.6 0-1 .1-1.5.4-.2 0-.3 0-.4-.3-.3-2.6-.3-5.3 0-8l2.1 1c.3.2.7.1 1-.1.7-.8.9-1.7.6-2.7-.1-.5 0-.7.5-.6.7 0 1 .3 1.2 1a.4.4 0 0 0 .6 0c1.2-1 1.8-1.8 2-2.5.1-2.3.5-4.5 1-6.8a21.3 21.3 0 0 1 7.5-.2.7.7 0 0 1 .4 1c-.3 1.1-1 2.1-1.8 3-1 .9-.9 1.4.5 1.5 1.4 0 2.7-.4 3.9-1.4 1-.8 2.5-1 3.2-1.9.4-.6 1-1.1 1.9-1.5.5-.2.8 0 .8.5l.2.4c.3.4.6.5 1 .6l4.7 1z" fill="#c9cace"/><path d="m144.2 83.4-1.2 6.7c0 .7-.6 1.6-1.8 2.7a.4.4 0 0 1 -.3 0 .4.4 0 0 1 -.3-.2c-.1-.6-.5-1-1.2-1.1-.5 0-.7.2-.5.7.3 1 0 2-.6 2.7-.3.2-.7.2-1 0l-2.1-1c.2-.4.3-.8.2-1.1.5 0 1-.3 1.4-.7 1.5-.6 2.5-2 3.1-4.2 0-.4.3-.6.7-.8l1.2-.4c.3-.1.6-.4.7-.7 0-.4-.1-.6-.3-.8a.8.8 0 0 1 -.4-.7l.1-.5c.7-.4 1.5-.7 2.4-.7z" fill="#565555"/><path d="m142 84v.5c-.2.3 0 .6.2.7.3.2.4.4.3.8-.1.3-.4.6-.7.7l-1.2.4c-.4.2-.6.4-.8.8-.5 2.2-1.6 3.6-3 4.2 0-2 .6-3.8 1.8-5.4.3-.3.6-.4 1-.4h.8c.4 0 .6-.2.7-.6a4 4 0 0 1 .8-1.7zm-71 4.2 5.6 1c.4 0 .5.2.4.6-3.6 10-15.7 10.2-23 4.4l.6-.3c.5-.2.5-.5.2-.8a11 11 0 0 1 -3.6-7.8c0-.8.2-.9.7 0 2.3 3.7 5.6 6 9.8 6.9 5 1 8-.4 9.2-4zm-24.5 3.6 4.5 6.2c.2.4.2.7-.1 1a5.5 5.5 0 0 1 -5 1h.5a.6.6 0 0 0 .3-.5v-.4c0-.1 0-.2-.2-.3-5.9-2-8.8-5.6-8.6-11 0-2.4.5-2.4 1.5-.2 1.7 4 4 5.5 7 4.2z" fill="#c9cace"/><path d="m149.5 97.6c0 .3-.2.7-.5 1-.5.5-.8.5-1.2 0l-.4-.5a.7.7 0 0 0 -.6.1l-5.2 4.4c-.3.3-.7.4-1.2.4h-4.7l-.1-.7c.4-.4.9-.5 1.4-.4 1.5.2 2.8.2 4 0l1-.6 2.6-2.9c.4-.3.7-.4 1.1-.4 1.1 0 1.7-.5 1.9-1.7 0-.4.2-.7.6-1 1.6-1.3 3.1-3 4.4-4.9 1.3-2.2 3.3-3.2 5.5-4.1a.7.7 0 0 1 1 .4c.2 1.4.7 2.6 1.5 3.8.5.8.2 1-.7.8-1.3-.3-2.5-.8-3.6-1.5a1 1 0 0 0 -1 0 14.1 14.1 0 0 0 -5.8 7.8z" fill="#565555"/><path d="m143.2 179.5c-.3-.7 0-1.5.6-2.4a45 45 0 0 0 9.1-9.4l1 .4c.2.2.3.4.3.7l-.1.5a.4.4 0 0 0 0 .4l.3.2c.3 0 .5 0 .6-.2 1.3-2 1.7-4.2 1.2-6.5a6 6 0 0 1 1.7-3.3h3.8a.2.2 0 0 1 .1.1v.2l.4 3.3h.3c.1-1.4.4-2.7.7-3.8.7-2.6 2.4-3.2 5-1.8a.7.7 0 0 0 .5 0 .7.7 0 0 0 .4-.4 5 5 0 0 1 2.8-2.6c.8-.3.8-.4 0-.4-1.9.3-2.7-.2-2.6-1.4 2.4-1.2 3.9-2.6 4.5-4.2.8.6 1.8.8 2.9.6.4-.1.7 0 .8.6 0 .5 0 1-.4 1.5s-.2.7.5.5c1-.4 1.7-1.2 2-2.4.5-2 1.5-3.7 3-5 .4-.4.4-.6 0-.8a.6.6 0 0 0 -.7 0c-.8.3-1 .1-.6-.6l2-3.5c.2-.2.2-.3 0-.5h-.3l-5.5 6.3c-.3.3-.7.4-1 .3h-1.5c-.4.2-.5.5-.5.8 0 .8-.1 1.5-.5 2-.4.3-.7.4-1.1.2l-4-2.4c-.4-.2-.5-.6-.4-1l2-6.5v-.6c-.2-.6-.6-.8-1.3-.7-.1 0-.3 0-.4.2-.4.3-.4.6 0 .8.3.3.4.5.2.8l-.8 1.8-.3.6c0 3.4-.6 7.3-3 10-.2.2-.6.5-1 .5-2 .3-4 .3-5.9 0a1 1 0 0 0 -1 .5c-.2.3-.2.7 0 1l-1.1 1.2-5.7 3.5a1 1 0 0 1 -.6.1.8.8 0 0 1 -.6-.3l-.4-.5c-.5-.5-.8-.4-.9.3 0 1 .4 1.8 1.2 2.4.4.2.5.6.3 1.2-.8 2-2.4 3-3.5 5.1-1.2 2.6-2.3 5.5-4.7 7-1.2.8-2.2 1.7-3.2 2.6-.4.3-.4.6 0 .8 1 .8 1.1 1.5.5 2h-2.6c-.6 0-1-.2-.8-.8l.4-8.1a1.4 1.4 0 0 1 .7-1.2l8.7-4.3a1.9 1.9 0 0 0 1.1-1.6v-6.9c2.4-1.6 3.8-4.3 4.2-8l4.5-4.7c1.5-.6 1.9-2.4 3.7-2.3.4 0 .6 0 .8-.2.7-.8.9-1.7.7-2.8a1.2 1.2 0 0 0 -2-.6c-.3.4-.7.4-1 0-.2-.1-.3-.5-.2-.9a4 4 0 0 0 -1-3.7l-1-1.2c-1-2.8-3.8-3-6.2-3.7-.4 0-.7-.3-.8-.7l-.2-.7c3-.4 5.3.4 7 2.3l4.7 5.5c.2.3.5.5 1 .5h16a1.3 1.3 0 0 0 1-.5c3.5-4.5 7.2-8.7 11-12.8.7-.8 1.2-1.7 1.4-2.7.2-.4.4-.6.7-.8a5 5 0 0 0 2.4-3l4.5-20.4a.4.4 0 1 1 .7-.1l5.7 8.2c.3.5.5 1 .5 1.7v26c0 .5-.2.9-.5 1.2l-24.1 23c-.4.4-.6.8-.6 1.2l-5 24.8c0 .4-.2.8-.6 1-4.3 3.7-8.5 7.8-12.6 12.5-.3.3-.7.3-1 0l-4.8-4a2 2 0 0 1 -.7-1.3c-.4-3.6-2-6.6-4.9-9l-1.1-.5-4.8-.3zm51.6-66c-.4 1-.4 2.5 0 4.4.5 2.5.2 5.1-.9 8a1 1 0 0 1 -.7.5l-3 1.1c-.5 0-.7.3-.7.8 0 1 .4 3-.4 4-.3.3-.6.4-.9.5a2 2 0 0 0 -1 .8l-.5 1.8c-.8 2-.2 2.5 1.7 1.7l2-1.3.5-1c.5-1.6.8-3.2 1.8-4.5 2.5-3.1 3.9-6.8 4-11 0-.5.2-.8.5-1.1l1.7-1.3c.3-.3.5-.6.6-1l1.1-5.9c1-.8 1.5-1.8 1.5-3 0-.4-.3-.6-.8-.4-.8.4-1.4 1.2-1.7 2.5a1 1 0 0 1 -1.2.8 1 1 0 0 1 -.5-.2l-1-1c-.4-.4-.6-.3-.8.3l-1.3 4.6zm-38.3 74.1a1.9 1.9 0 0 1 0-1.6 8 8 0 0 0 1.1-4.2c.2-1.8-.2-1.9-1-.3-1 2-1.4 4.4-1 7 0 1 .6 1.6 1.4 2 .6 0 1 .3 1.2.8l1 1h1c1.3-1 2.4-2 3.2-3.1 1.6-2.2.3-4.4-.4-6.5-.3-.7-.5-.7-.8 0-.4 1.4-.5 3.5-2.3 3.9-.4 0-.6.3-.8.5-.3.4-.4.7-.4 1s-.2.5-.5.7c-.6.3-1.2 0-1.7-1.2z" fill="#f0f0f0"/><path d="m209.4 144.2c2.1-1.9 4-3.8 5.4-6a6.6 6.6 0 0 0 1.2-4 40.8 40.8 0 0 1 .2-4.9.8.8 0 0 0 -1.2-.4c-2.3 1-4.4 1.3-6 .7v-20a28.2 28.2 0 0 0 .1-12c.1-.5.3-.5.6-.1l7.1 9.7c.5.7.8 1.5.8 2.3v26.5a3 3 0 0 1 -.7 1.9l-6.8 8.3c-.3.4-.6.3-.8-.2-.2-.6-.2-1.2 0-1.8z" fill="#fdfdfd"/><path d="m209.4 99a30 30 0 0 1 -.5 10.7z" fill="#c9cace"/><path d="m179.5 103.8c.2-1 .7-2 1.4-2.6.5-.5.6-.4.5.2l-.6 2.7c0 .4-.2.7-.7.8h-.8c-.5-.1-.6-.4-.2-.7l.3-.3v-.1z" fill="#7e7b7d"/><path d="m62.3 103c1.2 0 2 .4 2.4 1 .4.5.5 1 .2 1.5a7.6 7.6 0 0 1 -8.3 4c-1.8-.3-3.3-1.3-4.7-2a.6.6 0 0 0 -1 .6 4.7 4.7 0 0 0 3.6 4c8.6 2.7 14.1-.9 16.6-10.7.9 1.4.5 3.6-1.2 6.5-2.8 5-7 7.2-12.4 6.6-5.1-.5-8-3.5-7.6-8.6a2.1 2.1 0 0 1 3-1.8l3.5 1.3c.4.2.8.2 1.2 0l4.7-2.5z" fill="#fdfdfd"/><path d="m71 101.4c-2.4 9.8-7.9 13.4-16.5 10.7a4.7 4.7 0 0 1 -3.5-4.3.6.6 0 0 1 .8-.4c1.5.7 3 1.8 4.7 2 3.7.6 6.5-.7 8.3-3.9.4-.5.4-1 0-1.5-.5-.6-1.3-1-2.5-1.2l8.8-1.4z" fill="#c9cace"/><path d="m57.1 121.1c-5.5 1.3-9.8-1-13-6.7-.1-.3-.3-.3-.6 0-.3.5-.4 1-.2 1.5 1.8 7.7 7.6 11 17.4 10.3a10 10 0 0 1 -12.3-.5c-6.3-4.8-8.6-11.5-6.8-20 0-.4.2-.6.6-.9.6-.3 1.2-.5 2-.5.4 0 .6.3.6.8-.1 8.1 4 13.5 12.3 16z" fill="#f0f0f0"/><path d="m200.6 110c-2.4 3-4.4 4.3-5.9 3.6l1.4-4.8c.2-.4.4-.4.8 0l1 .9a1 1 0 0 0 1 .1 1 1 0 0 0 .7-.6c.3-1.4.9-2.2 1.7-2.6.5-.2.8 0 .8.5 0 1.2-.4 2.2-1.5 3z" fill="#565555"/><path d="m93.1 115.3c-1.5.8-3 2-4.2 3.3-.6.7-.7.6-.5-.2 1-2.8 2.9-4.9 5.5-6.1 8.6-4.5 16-2.5 22.2 5.9a.6.6 0 0 1 0 .6l-.4.3h-.1c-6.7-6.8-14.2-8-22.5-3.8z" fill="#f0f0f0"/><path d="m200.6 110-1.1 6c0 .3-.3.6-.5.9l-1.8 1.4c-.3.2-.5.5-.5 1-.1 4.2-1.5 7.9-4 11-1.2 1.4-1.3 2.9-1.8 4.5a2 2 0 0 1 -.5 1l-2 1.1c-2 1-2.5.5-1.7-1.4l.6-1.9a2 2 0 0 1 1-.8c.3 0 .6-.1.8-.5.8-1 .4-3 .4-4 0-.5.2-.7.6-.8l3-1c.4-.1.6-.3.8-.7 1.1-2.8 1.4-5.4.8-7.8-.4-2-.4-3.4 0-4.4 1.5.7 3.5-.5 6-3.6z" fill="#c9cace"/><path d="m158.5 123.9a10 10 0 0 0 12.3 6.9 10 10 0 0 0 6.5-12.5 10 10 0 0 0 -12.3-7 10 10 0 0 0 -6.5 12.6z" fill="#fdfdfd"/><path d="m57.1 121.1 6.9.8c.4 0 .6.3.4.8-.7 2.3-2 3.5-3.7 3.5-9.8.8-15.6-2.6-17.4-10.3-.2-.5 0-1 .2-1.5.3-.3.5-.3.6 0 3.2 5.7 7.5 8 13 6.7z" fill="#c9cace"/><path d="m139.3 126c-.4.6-.8.8-1.2.7-.5-.3-.6-1-.2-2.4l-1 .6a.6.6 0 0 1 -.5.2c-.5 0-.7-.3-.5-.8a43 43 0 0 0 6.5-8c.6-.9 1.6-1.6 2.8-2.2.4 0 .4 0 .3.4z" fill="#7e7b7d"/><path d="m85.8 125.7c-3.4-.3-6.6-1.6-9.8-3.8-.3-.2-.6-.2-.8 0a7.9 7.9 0 0 0 -1.8 5.5c.5 4.6 1.7 10 3.6 16 2.8 9 7.2 20.5 13.3 34.4 3.6 8.4 8.7 17 15.4 25.8h-.9l-1.3-.7c-8-7-14.2-14.6-18.5-22.8a281 281 0 0 1 -11.2-24.6c-1-2.4-1.4-2.4-1.2.2 1 12.9 4.8 25 11.4 36.6 4 6.8 9 12.5 15.2 17.2 8.6 6.5 19 10.5 31 11.9-6.8 1.3-13.9 0-21.3-4a65.8 65.8 0 0 1 -34.4-43.5 170.8 170.8 0 0 1 -5.5-44.4 26.3 26.3 0 0 1 3.8-13.8.7.7 0 0 1 1 .2c.8 1.4 1.7 2.8 2.8 4 .9 1 2.2 2 4 2.9 1.8.8 3.5 1.7 5.2 2.8z" fill="#f0f0f0"/><path d="m110.9 120.4c-1.3-.1-2.9-.7-4.8-1.8-1.2-.6-3.1-.8-5.6-.4l-5.1.7c5-4.3 10.1-3.8 15.3 1.5z" fill="#c9cace"/><path d="m110.9 120.4c1 1.7-.3 3.3-3.6 4.7-4.2 2-8.7 1.4-13.7-1.7-1.2-.8-1.3-1.7-.2-2.8l2-1.8c1.7-.1 3.4-.3 5-.6 2.6-.4 4.4-.3 5.6.4 2 1 3.6 1.7 4.7 1.8z" fill="#fdfdfd"/><path d="m125.9 126.3c.3 10.4 0 21-.7 31.6 0 .7-.2.7-.6 0l-1.1-3.1c0-.4-.3-.6-.7-.6h-2.4c1-2 .8-3.2-.4-3.7 1.5-5.8 1.6-11.8.4-18-.2-1-.7-2-1.5-2.8l-2.4-2c.8-1.1 1.8-1.4 3.1-.8 1.6.8 2 2.2 1.4 4.3-.1.6 0 .7.4.2.4-.6.6-1.1.6-1.7a74.6 74.6 0 0 1 1.3-8.4.6.6 0 0 1 .4-.1h.3l.3.3c.6.4.8 1 .7 1.6-.1 1.8.2 2.9.9 3.2z" fill="#f0f0f0"/><path d="m85.8 125.7c1 .2 2.6 1.2 4.9 3 .4 1.6 1.2 2.5 2.2 2.7.3 0 .6.2 1 .5 1 .7 1.4 1.1 2.7 1.3 4.7.5 8.4.5 11 0 1.8-.3 3.4-1.4 4.8-3.3a9 9 0 0 0 4-2.2l2.5 2.2a5 5 0 0 1 1.5 2.7c1.2 6.1 1 12.1-.4 18-7.4 6.8-7.8 13.5-1.2 20l5.4 6c-4 1-6.8 2.5-8.7 4.6l-.7.5c-.6 0-.8-.2-.7-.6 0-.4-.2-.8-.6-1.2l-.9-.2a3.3 3.3 0 0 0 -3 2.6c0 .4 0 .8.3 1.2l2 3.2c.1.4.5.4.9 0 2.8-2.7 7.2-3.7 13.2-3 1.3.2 2.5.7 3.5 1.6a1.3 1.3 0 0 1 .5.9l.2 4.7a.7.7 0 0 1 -.6.7 20.2 20.2 0 0 1 -12.3-1.4.4.4 0 0 0 -.4.3l.1.3c0 .2.1.3.4.5-.5.5-.8.8-.8 1.2.3 2.5 1.8 4.6 4.7 6.5 2.6-1.3 5.3-1.7 8.2-1.3.3 0 .5.2.5.6v15.7a28.5 28.5 0 0 1 -24.3-10.4 124.6 124.6 0 0 1 -15.4-25.8c-6-14-10.5-25.4-13.3-34.5-2-6-3.1-11.3-3.6-16-.1-1.7.4-3.5 1.8-5.2.2-.4.5-.4.8-.2 3.2 2.2 6.4 3.5 9.8 3.8z" fill="#fdfdfd"/><path d="m135.9 124.2c-.2.5 0 .8.5 1l.3-.1.3-.2.8-.7.1.1c-.4 1.3-.3 2.1.4 2.4.2.1.6-.1 1.1-.7a56 56 0 0 1 -.2 14.5c-1-.6-1.9-1.7-2.4-3.4 0-.6-.3-.7-.8-.4-.2.2-.5.2-1 .1v-12.3c.4 0 .7 0 .9-.3z" fill="#c9cace"/><path d="m112.5 129.9a8.8 8.8 0 0 1 -4.8 3.4c-2.7.5-6.4.5-11.1 0-1.3-.3-1.7-.7-2.7-1.4-.4-.3-.7-.4-1.1-.5-1-.2-1.7-1.1-2.1-2.6l-1.2-2.4c-1-2-.5-2.4 1.5-1.4 7.3 3.9 14.4 4 21.3.4 3.2-1.6 3.8-1 1.6 2z" fill="#f0f0f0"/><path d="m147.2 127 .3.6c0 .4.3.6.8.7 2.4.6 5.2.8 6.1 3.7-.3 1.6-.9 3-1.7 4.1a.6.6 0 0 0 0 .7l.2.4a.2.2 0 1 0 .5 0l2-4a4 4 0 0 1 1 3.7c0 .4 0 .8.3 1 .3.3.7.3 1.2 0a1.2 1.2 0 0 1 1.4 0c.2.2.3.3.3.5.3 1 0 2-.7 2.8-.1.2-.4.3-.7.2-1.9-.2-2.3 1.7-3.8 2.2-.3-.7-.4-1.6-.2-2.8a1 1 0 0 0 -.6-1.1l-.4-.3a.6.6 0 0 0 -.9.5l-.4 3.3c0 .4-.3.6-.8.7-1.2.4-2.4.3-3.5-.2-.5-.3-.8-.1-1 .3-.7 1.4-.6 2.6.2 3.8.5 1 1.6 1.2 3.2.6-.4 3.7-1.8 6.4-4 8v-29c0-.4.2-.6.7-.6l.5.1zm1.8 12c.4-2.4 1.2-4.6 2.4-6.7a1 1 0 0 0 0-1v-.3c-.3-.3-.6-.3-1 0-1.6 1.3-1 2.5-1.3 4.3l-1.1 5.3a.5.5 0 0 0 .3.6c.2 0 .4 0 .6-.2s.4-.4.4-.6l-.2-.6v-.8zm60.4 5.2-.5-14.6c1.7.6 3.8.3 6.3-.7a.8.8 0 0 1 1 .4c.1.1.2.3.1.4-.2 1.5-.3 3-.2 4.5 0 1.4-.4 2.7-1.3 4-1.5 2.2-3.3 4.1-5.4 6zm-154-.6.3-.9c0-.4-.2-.6-.6-.7-4-1.2-6.8-3.8-8.1-7.9-.1-.4-.4-.5-.8-.2l-.3.7a7.8 7.8 0 0 1 0-3.3c0-.4.3-.6.8-.6 1.5.1 2.7.9 3.6 2.1a91.7 91.7 0 0 0 9 10 .5.5 0 0 1 -.6.8h-3.4z" fill="#c9cace"/><path d="m149.1 139.8v.6a.8.8 0 0 1 -.8.8.5.5 0 0 1 -.5-.4v-.2c.5-1.6.9-3.4 1.2-5.3.5-1.8-.2-3 1.4-4.4.4-.2.7-.2 1 .1v1.4c-1.2 2-2 4.3-2.4 6.6v.8z" fill="#7e7b7d"/><path d="m154.4 132.1 1 1-2 4v.2a.2.2 0 0 1 -.4 0v-.1l-.3-.4a.6.6 0 0 1 0-.7c.8-1.2 1.4-2.5 1.8-4.1v.1z" fill="#565555"/><path d="m55.3 143.6c-5.2-1.4-8.3-4.4-9.4-9l.3-.7c.4-.3.7-.2.8.2 1.3 4.1 4 6.7 8.2 8 .3 0 .5.2.5.6 0 .3-.1.6-.4.9z" fill="#f0f0f0"/><path d="m139.2 140.5c0 .5 0 1 .2 1.6-1 0-1.6-.2-1.7-.8a5.6 5.6 0 0 0 -2.6-3.2c.4 0 .4-.4 0-1.2.4 0 .7 0 1-.2.4-.3.7-.2.9.4.4 1.7 1.1 2.8 2.3 3.4z" fill="#565555"/><path d="m174 148.9c-5 3.7-10.1 6.3-15.7 7.8-.3.1-.6 0-.7-.4l-.7-2.3a1 1 0 0 1 0-1.2 1 1 0 0 1 1-.4c2 .3 4 .3 6 0 .4 0 .8-.3 1-.6a15 15 0 0 0 3-9.9l.3-.6.8-1.8c.1-.3 0-.5-.3-.8-.3-.2-.3-.5 0-.8l.5-.2c.7 0 1.1.2 1.2.7v.6c-.8 2.2-1.4 4.4-1.9 6.5-.2.4 0 .8.4 1l4 2.4c.4.2.7.1 1-.3.4-.5.6-1.1.6-1.8 0-.4.2-.7.5-.8a3 3 0 0 1 1.4 0c.4 0 .8-.2 1-.4l5.6-6.2c.1-.1.2-.1.4 0v.4l-2.1 3.5c-.4.8-.2 1 .6.6h.7c.4.2.4.4 0 .7a9.5 9.5 0 0 0 -3 5.1c-.3 1.2-1 2-2 2.4-.7.2-.9 0-.5-.5.3-.5.5-1 .4-1.5 0-.5-.3-.7-.8-.6-1.1.2-2 0-2.9-.6h.1zm-38.9-10.9c1.1.7 1.9 1.7 2.4 3.2.3.6.9 1 1.8.8.6 3 .6 5.9 0 8.5 0 .2 0 .3-.2.3s-.4-.1-.5-.4l-.2-1c-.2-.6-.5-.8-1.2-.7-.8.1-1.6 0-2.3-.5z" fill="#c9cace"/><path d="m196.7 158.6a319.5 319.5 0 0 1 -7.5 27.5 1 1 0 0 1 -.8.3 31.6 31.6 0 0 1 -9.7-8.5v-.7l3.4-16c.2-1.2.8-2.3 1.6-3.3 6.5-6.9 12.8-13.2 19-18.8.7-.7 1.1-.5 1.1.6v9.4c0 1-.3 1.7-1 2.4l-5.4 5.8zm-6.6-4.3a29.5 29.5 0 0 1 -3.6 3.3c-1.1.8-1.8 1.5-2 2.1-.5 1-.5 2.1 0 3.2-1.1 1.2-1.3 2.3-.4 3.2.2.3.2.7 0 1l-1.4 2c-1 1-1.4 2.3-1.2 3.8 0 .3.3.6.7.7 1.1 0 2.2-.2 3.2-.5.9.6 1.6.9 2.2.8 2.6-.8 4.1-2.3 4.6-4.5.1-.5 0-.8-.5-.8-.8-.2-1.6-.6-2.3-1.3-.2-.2-.3-.5-.2-1a9 9 0 0 1 4.8-7 .7.7 0 0 0 .3-.8l-.3-.3a4.3 4.3 0 0 1 -2.3-2.6c.2-1.6 1-3 2.4-4.4 1-.8 1-1-.3-.7-1.7.6-2.9 1.8-3.7 3.8z" fill="#f0f0f0"/><path d="m154.4 143.6-4.4 4.7c-1.6.7-2.7.5-3.2-.5a3.6 3.6 0 0 1 -.3-3.8c.3-.4.7-.6 1.2-.3 1 .5 2.2.6 3.6.2.3 0 .5-.3.6-.7l.4-3.3a.6.6 0 0 1 .6-.5h.3l.4.3a1 1 0 0 1 .6 1.1c-.2 1.2-.1 2.1.3 2.8z" fill="#7e7b7d"/><path d="m58.5 148.3c2 3.8 3.6 7.8 5.1 12a4.4 4.4 0 0 0 3.4 3c.3.5.3.9.2 1.2a.5.5 0 0 1 -.9.2c-2.3-1.6-4-3.5-5-5.7a37.8 37.8 0 0 1 -2.8-10.7z" fill="#f0f0f0"/><path d="m58.5 148.3c4.5 1.4 7 3.3 7.2 5.8l1.2 9.2a4.6 4.6 0 0 1 -3.3-3c-1.6-4.2-3.3-8.2-5-12z" fill="#c9cace"/><path d="m174 148.9c-.8 1.6-2.3 3-4.8 4.2a111 111 0 0 1 -10.6 5.1c-.5.3-.7.9-.6 1.7-.8.7-1.4 1.9-1.9 3.3-.2.6-.6 1-1 1.4-.5.3-.7.2-.5-.4.5-1.8 1.3-3.4 2.3-4.7.2-.4.1-.7 0-1a2 2 0 0 0 -2.1 0l-2.4 1.2c0 .2-.1.2-.2 0l-.1-.4v-.3l3.4-2.3c.3-.4.4-.9.4-1.4l1-1.3.7 2.3c.1.4.4.5.7.4 5.6-1.5 10.7-4.1 15.5-7.8h.1z" fill="#565555"/><path d="m191.7 155.6c-.8.4-1.4 0-1.7-1.3.9-2 2.1-3.2 3.8-3.8 1.2-.4 1.4-.2.3.7a7.7 7.7 0 0 0 -2.6 4.4z" fill="#7e7b7d"/><path d="m169.2 153.1c0 1.2.8 1.7 2.6 1.4.8 0 .8.2.1.4a5 5 0 0 0 -2.8 2.6.7.7 0 0 1 -.7.4h-.2c-2.6-1.4-4.3-.8-5 1.8-.3 1.1-.6 2.4-.7 3.7v.1h-.3l-.3-3.3v-.2h-.2l-3.7-.1c0-.8.2-1.4.7-1.7 3.7-1.6 7.2-3.3 10.6-5zm-63.5 50.5c5.9 7.2 14 10.7 24.4 10.4v7.4a59.4 59.4 0 0 1 -46-29 84.8 84.8 0 0 1 -11.5-36.7c-.2-2.6.1-2.6 1.2-.2 3.1 8.1 6.9 16.3 11.2 24.6a78.1 78.1 0 0 0 18.5 22.8c.4.3.9.5 1.3.5zm84.4-49.3c.3 1.3.7 1.7 1.4 1.3a4.8 4.8 0 0 0 2.4 2.6.7.7 0 0 1 .3 1l-.2.2a8.9 8.9 0 0 0 -4.8 7c0 .4 0 .7.2.9a3 3 0 0 0 2.4 1.2c.4 0 .5.4.4 1-.5 2.1-2 3.6-4.7 4.4-.4-1-.6-2-.3-2.7.1-.4.4-.5.8-.5.8 0 1.3-.3 1.7-1v-.3a.6.6 0 0 0 -.3-.4h-.2c-2.6.1-3.9 1.5-3.8 4-1 .4-2 .5-3.2.4-.4 0-.6-.2-.7-.5-.2-1.5.2-2.8 1.2-3.8 1 0 1.8-.4 2.3-1 .4-.4.5-.8.5-1.3 0-1 .6-1.9 1.7-2.5.8-.3.8-.7 0-1h-.5c-.6-.2-.6-.6-.2-1l4.7-3h.1c.2-.3 0-.5-.2-.6a1 1 0 0 0 -.7-.1 12 12 0 0 0 -6 4.3 3.8 3.8 0 0 1 0-3.2c.3-.6 1-1.3 2-2 1.4-1.1 2.6-2.2 3.6-3.4zm-34.2 1c0 .5 0 1-.4 1.3l-3.3 2.4c-.2.1-.2.2-.1.3l.1.4c0 .2.1.2.4 0 .6-.5 1.4-1 2.3-1.3.7-.3 1.2-.2 1.8.2.3.2.4.5.2 1-1 1.3-1.8 2.9-2.3 4.6-.2.6 0 .7.4.4.5-.3 1-.8 1.2-1.4.5 2.3.1 4.5-1.2 6.5-.1.2-.4.3-.7.2l-.2-.1a.4.4 0 0 1 0-.5l.1-.5c0-.3-.1-.5-.3-.7l-1-.4a22.6 22.6 0 0 0 -6.8 5.2 7.5 7.5 0 0 0 -2.3 4.2c-.7.9-1 1.7-.7 2.4l-4.7-.1c.5-.7.3-1.3-.6-2-.4-.3-.4-.6 0-.9 1-1 2-1.9 3-2.6 2.5-1.5 3.7-4.4 5-7 .9-2 2.6-3 3.5-5.3.1-.4 0-.8-.4-1.1-.8-.5-1.2-1.3-1.2-2.4 0-.6.4-.7.8-.2l.6.5c.2.2.4.2.5.2.2 0 .4 0 .6-.2z" fill="#c9cace"/><path d="m182.7 169 1.4-1.8c.2-.4.2-.7 0-1-.8-1-.7-2 .4-3.3a11 11 0 0 1 5.9-4.3h.7c.3.2.4.4.2.7h-.1c-1.7.9-3.3 1.9-4.7 3-.4.4-.4.7.2.9h.4c.8.4.8.8 0 1.2a3 3 0 0 0 -1.6 2.5l-.3 1.2c-.7.7-1.5 1-2.4 1h-.1z" fill="#565555"/><path d="m130.2 162.7v1.8c-.2.4-.4.5-.8.3-2.4-1.4-4.5-3.2-7.3-2.7-1.6.2-3.2.7-4.9 1.5 2.7-4.4 7-4.7 13-.9z" fill="#c9cace"/><path d="m153 167.7a45 45 0 0 1 -9.2 9.4 8 8 0 0 1 2.3-4.4c2.2-2.2 4.5-4 6.8-5zm34.6 6.2c-.6.2-1.3-.1-2.2-.8 0-2.6 1.3-4 3.8-4.1a.6.6 0 0 1 .4.2.6.6 0 0 1 0 .5c-.3.8-.8 1.1-1.6 1-.4 0-.7.2-.8.6-.3.7-.1 1.6.4 2.6z" fill="#7e7b7d"/><path d="m118.7 170.5h7c.3 0 .6.2.8.6l3.3 6.7a11 11 0 0 0 -5.6-1.3z" fill="#f0f0f0"/><path d="m129.8 177.8c.3.5.4 1 .2 1.6 0 .4-.3.6-.7.4-2.4-.6-4.1-1.2-6.5-.4-2.4.7-4.8 1.3-7.3 1.7 1.9-2 4.8-3.6 8.7-4.6a11 11 0 0 1 5.6 1.3zm26.7 9.8c.5 1.1 1.1 1.5 1.7 1.2.3-.2.4-.4.5-.7 0-.3.1-.6.4-1 .2-.3.5-.5.9-.5 1.7-.4 1.8-2.5 2.4-4 .1-.6.3-.6.6 0 .7 2.2 2 4.4.4 6.4-.8 1.3-1.9 2.4-3.2 3.2-.3.2-.6.2-1 0s-.7-.5-1-1c-.3-.4-.7-.7-1.2-.7-.8-.4-1.3-1-1.5-2-.3-2.6 0-5 1.2-7 .8-1.6 1.1-1.5 1 .3a10 10 0 0 1 -1.1 4.2 1.9 1.9 0 0 0 -.1 1.6z" fill="#c9cace"/><path d="m156.5 199.8-6.7-6.2c-1.6-1.5-3.3-1.5-5.4-1.5h-9c-.3 0-.4-.1-.4-.5v-7c0-.3 0-.4.3-.4l9.2.2c3 0 4.8 3 4.8 5.7a3 3 0 0 0 1 2.6l6.7 6.5a.5.5 0 0 1 -.2.7h-.3zm6.7-1.8 13.7-12.9a1.2 1.2 0 0 1 1.5 0l7.5 6.3a1.2 1.2 0 0 1 0 1.7l-21.4 19.7a1.2 1.2 0 0 1 -1.9-.8l.2-13c0-.4.2-.6.4-.9zm1.8 1.2a1 1 0 0 0 -.4.6l-.6 8.6a1 1 0 0 0 1.7.8l17.5-16a1 1 0 0 0 .2-1.2 1 1 0 0 0 -.2-.4l-5.2-4a1 1 0 0 0 -1.2 0z" fill="#f0f0f0"/><path d="m165 199 11.8-11.4a1 1 0 0 1 1.2 0l5.2 4a1 1 0 0 1 0 1.6l-17.5 16a1 1 0 0 1 -1.7-.8l.6-8.6c0-.3.2-.5.4-.7zm-47.6-7.7 4.7 2.6c.3.1.3.4 0 .7a5.1 5.1 0 0 0 -.8 4.4c-2.9-1.9-4.4-4-4.6-6.7 0-.2.2-.6.7-1.1zm-19.9 42.7c.4-2 .3-3.5-.3-4.4-6.3-9.5-12.2-19-17.8-28.5-.7-1.2-1.1-1.1-1.3.2l-.9 6.2.2-12.8c0-1 .2-1 .6 0 .6 1.2.7 2.4 1.6 3.4l7 11.1a96.9 96.9 0 0 0 34.3 32.5c1.4.8 1.3 1-.2.8-8.3-1.4-16-4.2-23.2-8.3z" fill="#c9cace"/><path d="m142.5 197.7-3 3.5c-.2.4-.2.7.2 1 1 .5 1.4 1.8 1 3-.7 2.3-2.5 3.6-5.1 4v-11c0-.5.2-.7.7-.7z" fill="#f0f0f0"/><path d="m142.5 197.7h3.3c2.4.2 3.6 1.3 5.1 3-.3-.2-.6-.2-.8 0-.3.3-.3.6 0 .7h-.4l-.3.1-.3.3a25.3 25.3 0 0 1 -12.3 11c.8.8 1.2 1.5 1.2 2.2 0 .4-.2.6-.7.6-1 0-1.7.4-2 1.2l.3-7.7c2.6-.3 4.4-1.6 5.1-3.9.4-1.2 0-2.3-1-3-.4-.3-.4-.6-.1-1l3-3.5z" fill="#c9cace"/><path d="m176.3 211.2.4.5c.3.3.4.7.4 1.2l.4 10.4c0 1.1.4 1.3 1.2.5l1.1-1.2a4 4 0 0 0 1.7-3l.6-15.8 4.7-5c.4-.4.6-.4.7.3.6 4.7.8 9.7.6 15.1-.2 3.9-8.8 11.3-11.8 13.8a.5.5 0 0 1 -.4 0 .5.5 0 0 1 -.3-.3zm-78.8 22.8a61 61 0 0 1 -18.4-15.9 8.7 8.7 0 0 1 -1.8-4.6v-6l.8-6.2c.2-1.3.6-1.4 1.2-.2 5.5 9.5 11.4 19 17.7 28.5.7.9.8 2.4.5 4.6zm53.4-33.4 5.7 5.4c.3.4.4.8.4 1.2.4 2.5.5 5.1.2 7.8 0 .4-.2.8-.6 1.2-2.9 2.5-6.4 5.7-10.7 6l-9.9.3c-.4 0-.7-.3-.7-.7v-5c.3-.8 1-1.2 2-1.2.4 0 .7-.2.7-.6 0-.8-.4-1.5-1.2-2.2a21 21 0 0 0 9-3.8 1.2 1.2 0 0 1 1-.2c1.7.5 3.6.6 5.6.2 1.2 1.3 1.3 3.4.4 6.1v.3a.6.6 0 0 0 .5.6h.3c.7 0 1-.2 1.3-.7a9.8 9.8 0 0 0 0-8.4 4.2 4.2 0 0 0 -1.6-1.6 11 11 0 0 0 -3.2-3.9c-.3-.1-.3-.4 0-.7.2-.2.5-.2.8 0z" fill="#f0f0f0"/><path d="m150 201.4a13 13 0 0 1 3.3 4c-.9 0-1.7.1-2.4.5-.4.3-.5.6-.5 1 .3 1.2 1 1.7 2 1.4-.4.8-.4 1 0 .7-2 .4-3.9.4-5.6-.1a1.2 1.2 0 0 0 -1 .1 21 21 0 0 1 -9 3.8 24.7 24.7 0 0 0 12.6-11.3h.7z" fill="#7e7b7d"/><path d="m182 203.8-.6 15.7c0 1.3-.5 2.3-1.4 3.2l-1.2 1.2c-.9.7-1.3.5-1.3-.6l-.4-10.5c0-.4-.1-.8-.4-1.2l-.4-.4c0-2.5 2-5 5.8-7.4z" fill="#c9cace"/><path d="m153.3 205.3 1.6 1.6c-1.2-.4-2 0-2.5 1.4-1 .3-1.7-.2-2-1.4 0-.4.2-.7.5-1 .7-.4 1.5-.6 2.4-.6z" fill="#565555"/><path d="m155 206.9a9.8 9.8 0 0 1 0 8.4c-.3.5-.7.7-1.3.7h-.4a.6.6 0 0 1 -.5-.3.6.6 0 0 1 0-.6c1-2.7.8-4.8-.4-6.1-.3.3-.3 0 0-.7.5-1.3 1.3-1.8 2.4-1.4h.1z" fill="#c9cace"/><path d="m170.5 214.5c-.5 0-.8.2-.9.6l-1.4 17c0 .5.3.8.7.8.5 0 .8-.2.8-.6l1.5-17c0-.5-.3-.8-.7-.8z" fill="#f0f0f0"/></svg> \ No newline at end of file diff --git a/docs/scripts/generateTemplateScreenshots.ts b/docs/scripts/generateTemplateScreenshots.ts index a7799d9d3333e3..fa93891715874a 100644 --- a/docs/scripts/generateTemplateScreenshots.ts +++ b/docs/scripts/generateTemplateScreenshots.ts @@ -24,6 +24,14 @@ import { chromium } from 'playwright'; * - Set `chromium.launch({ headless: false })` in line:50 to see the browser */ +function sleep(duration: number): Promise<void> { + return new Promise<void>((resolve) => { + setTimeout(() => { + resolve(); + }, duration); + }); +} + const host = process.env.DEPLOY_PREVIEW || 'http://localhost:3000'; /** @@ -33,7 +41,7 @@ const projects = { 'material-ui': { input: path.join(process.cwd(), 'docs/pages/material-ui/getting-started/templates'), output: 'docs/public/static/screenshots', - viewport: { width: 1680, height: 1092 }, + viewport: { width: 813 * 2, height: 457 * 2 }, }, 'joy-ui': { input: path.join(process.cwd(), 'docs/pages/joy-ui/getting-started/templates'), @@ -71,46 +79,47 @@ const names = new Set(process.argv.slice(2)); (file) => `/${project}/getting-started/templates/${file.replace(/\.(js|tsx)$/, '/')}`, ); + async function toggleMode() { + await page.locator('css=[data-screenshot="toggle-mode"]').locator('visible=true').click(); + } + async function captureDarkMode(outputPath: string) { const btn = await page.$('[data-screenshot="toggle-mode"]'); if (btn) { if ((await btn.getAttribute('aria-haspopup')) === 'true') { - await page.click('[data-screenshot="toggle-mode"]'); + await toggleMode(); await page.getByRole('menuitem').filter({ hasText: /dark/i }).click(); await page.waitForLoadState('networkidle'); // changing to dark mode might trigger image loading - await page.screenshot({ - path: outputPath, - animations: 'disabled', - }); + await sleep(100); // give time for image decoding, resizing, rendering - await page.click('[data-screenshot="toggle-mode"]'); + await page.screenshot({ path: outputPath, animations: 'disabled' }); + + await toggleMode(); await page .getByRole('menuitem') .filter({ hasText: /system/i }) .click(); // switch back to light } else if ((await btn.getAttribute('aria-haspopup')) === 'listbox') { - await page.click('[data-screenshot="toggle-mode"]'); + await toggleMode(); await page.getByRole('option').filter({ hasText: /dark/i }).click(); await page.waitForLoadState('networkidle'); // changing to dark mode might trigger image loading - await page.screenshot({ - path: outputPath, - animations: 'disabled', - }); + await sleep(100); // give time for image decoding, resizing, rendering + + await page.screenshot({ path: outputPath, animations: 'disabled' }); - await page.click('[data-screenshot="toggle-mode"]'); + await toggleMode(); await page .getByRole('option') .filter({ hasText: /system/i }) .click(); // switch back to light } else { - await page.click('[data-screenshot="toggle-mode"]'); + await toggleMode(); await page.waitForLoadState('networkidle'); // changing to dark mode might trigger image loading - await page.screenshot({ - path: outputPath, - animations: 'disabled', - }); + await sleep(100); // give time for image decoding, resizing, rendering + + await page.screenshot({ path: outputPath, animations: 'disabled' }); - await page.click('[data-screenshot="toggle-mode"]'); // switch back to light + await toggleMode(); // switch back to light } } } diff --git a/docs/scripts/updateIconSynonyms.js b/docs/scripts/updateIconSynonyms.js index 6b3cc0f1f6c152..22deec1e057f22 100644 --- a/docs/scripts/updateIconSynonyms.js +++ b/docs/scripts/updateIconSynonyms.js @@ -4,6 +4,7 @@ import fetch from 'cross-fetch'; import fse from 'fs-extra'; import * as mui from '@mui/icons-material'; import synonyms from 'docs/data/material/components/material-icons/synonyms'; +// eslint-disable-next-line import/no-relative-packages import myDestRewriter from '../../packages/mui-icons-material/renameFilters/material-design-icons'; function not(a, b) { diff --git a/docs/src/components/banner/AppFrameBanner.tsx b/docs/src/components/banner/AppFrameBanner.tsx index e8e90d92895765..277ecb24644d15 100644 --- a/docs/src/components/banner/AppFrameBanner.tsx +++ b/docs/src/components/banner/AppFrameBanner.tsx @@ -5,16 +5,45 @@ import FEATURE_TOGGLE from 'docs/src/featureToggle'; import PageContext from 'docs/src/modules/components/PageContext'; import { convertProductIdToName } from 'docs/src/modules/components/AppSearch'; +const showSurveyMessage = false; + +function isBlackFriday() { + const today = Date.now(); + const start = new Date('2024-11-25').getTime(); + const end = new Date('2024-12-07T23:59:59Z').getTime(); + return today > start && today < end; +} + +let hadHydrated = false; + export default function AppFrameBanner() { if (!FEATURE_TOGGLE.enable_docsnav_banner) { return null; } + // eslint-disable-next-line react-hooks/rules-of-hooks + const [mounted, setMounted] = React.useState(hadHydrated); + // eslint-disable-next-line react-hooks/rules-of-hooks + React.useEffect(() => { + hadHydrated = true; + setMounted(true); + }, []); + // TODO: uncomment once we enable eslint-plugin-react-compiler // eslint-disable-next-line react-compiler/react-compiler // eslint-disable-next-line react-hooks/rules-of-hooks -- FEATURE_TOGGLE never changes const pageContext = React.useContext(PageContext); const productName = convertProductIdToName(pageContext) || 'MUI'; - const message = `Influence ${productName}'s 2024 roadmap! Participate in the latest Developer Survey`; + + let message = ''; + let href = ''; + + if (showSurveyMessage) { + message = `Influence ${productName}'s 2024 roadmap! Participate in the latest Developer Survey`; + href = 'https://tally.so/r/3Ex4PN?source=website'; + } else if (mounted && isBlackFriday()) { + message = `Black Friday is here! Don't miss out on the best offers of the year.`; + href = 'https://mui.com/store/bundles/?deal=black-friday&from=docs'; + } if (process.env.NODE_ENV !== 'production') { if (message.length > 100) { @@ -24,14 +53,18 @@ export default function AppFrameBanner() { } } + if (message === '' || href === '') { + return null; + } + return ( <Link - href="https://tally.so/r/3Ex4PN?source=docs-banner" + href={href} target="_blank" variant="caption" sx={[ (theme) => ({ - padding: theme.spacing('7px', 1.5, '8px', 1.5), + padding: theme.spacing('6px', 1.5), display: { xs: 'none', md: 'block' }, fontWeight: 'medium', textWrap: 'nowrap', diff --git a/docs/src/components/home/DiamondSponsors.tsx b/docs/src/components/home/DiamondSponsors.tsx index 35b4052f081fe2..6ccdc1348f6563 100644 --- a/docs/src/components/home/DiamondSponsors.tsx +++ b/docs/src/components/home/DiamondSponsors.tsx @@ -21,12 +21,6 @@ const DIAMONDs = [ description: 'Technology and cloud expertise to buy, optimize and manage public cloud.', href: 'https://www.doit.com/?utm_source=mui.com&utm_medium=referral&utm_content=homepage', }, - { - src: '/static/sponsors/marblism-square.svg', - name: 'Marblism', - description: 'Generate fully functional web apps using AI.', - href: 'https://www.marblism.com/?utm_source=mui', - }, ]; export default function DiamondSponsors() { diff --git a/docs/src/components/home/GoldSponsors.tsx b/docs/src/components/home/GoldSponsors.tsx index d4191312cdfb26..252ccbc6f7f6ab 100644 --- a/docs/src/components/home/GoldSponsors.tsx +++ b/docs/src/components/home/GoldSponsors.tsx @@ -92,6 +92,11 @@ const BACKLINKs = [ description: 'Social media growth services.', href: 'https://views4you.com/?utm_source=mui.com&utm_medium=referral&utm_content=homepage', }, + { + name: 'Poprey', + description: 'Buy Instagram likes with crypto.', + href: 'https://poprey.com/?utm_source=mui.com&utm_medium=referral&utm_content=homepage', + }, ]; export default function GoldSponsors() { diff --git a/docs/src/components/pricing/PricingTable.tsx b/docs/src/components/pricing/PricingTable.tsx index 6dd607e3477de8..5afc2add270c1b 100644 --- a/docs/src/components/pricing/PricingTable.tsx +++ b/docs/src/components/pricing/PricingTable.tsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import { alpha, styled } from '@mui/material/styles'; +import { alpha, styled, ThemeProvider } from '@mui/material/styles'; import Box, { BoxProps } from '@mui/material/Box'; import Button from '@mui/material/Button'; import Container from '@mui/material/Container'; @@ -42,6 +42,24 @@ function formatCurrency(value: number) { return `$${formatter.format(value)}`; } +// TODO: Collapse should expose an API to customize the duration based on the height. +function transitionTheme(theme: any) { + return { + ...theme, + transitions: { + ...theme.transitions, + getAutoHeightDuration: (height: number) => { + if (!height) { + return 0; + } + + const constant = height / 80; + return Math.round((4 + 15 * constant ** 0.1 + constant / 6) * 10); + }, + }, + }; +} + export function PlanName({ plan, disableDescription = false, @@ -1307,404 +1325,408 @@ export default function PricingTable({ const renderNestedRow = (key: string) => renderMasterRow(key, nestedGridSx, plans); return ( - <Box ref={tableRef} {...props} sx={{ pt: 8, ...props.sx }}> - <StickyHead container={tableRef} disableCalculation={columnHeaderHidden} /> - {!columnHeaderHidden && ( - <Box sx={gridSx}> - <Typography variant="body2" sx={{ fontWeight: 'bold', p: 2 }}> - Plans - </Typography> - <Box sx={{ display: 'flex', flexDirection: 'column', p: 2, pt: 1.5 }}> - <PlanName plan="community" /> - <PlanPrice plan="community" /> - <Button - component={Link} - noLinkStyle - href="/material-ui/getting-started/usage/" - variant="outlined" - fullWidth - endIcon={<KeyboardArrowRightRounded />} - sx={{ py: 1, mt: 'auto' }} - > - Get started - </Button> - </Box> - <ColumnHeadHighlight> - <div> - <PlanName plan="pro" /> - <PlanPrice plan="pro" /> - </div> - <PricingTableBuyPro /> - </ColumnHeadHighlight> - <Box sx={{ display: 'flex', flexDirection: 'column', p: 2, pt: 1.5 }}> - <PlanName plan="premium" /> - <PlanPrice plan="premium" /> - <PricingTableBuyPremium /> + <ThemeProvider theme={transitionTheme}> + <Box ref={tableRef} {...props} sx={{ pt: 8, ...props.sx }}> + <StickyHead container={tableRef} disableCalculation={columnHeaderHidden} /> + {!columnHeaderHidden && ( + <Box sx={gridSx}> + <Typography variant="body2" sx={{ fontWeight: 'bold', p: 2 }}> + Plans + </Typography> + <Box sx={{ display: 'flex', flexDirection: 'column', p: 2, pt: 1.5 }}> + <PlanName plan="community" /> + <PlanPrice plan="community" /> + <Button + component={Link} + noLinkStyle + href="/material-ui/getting-started/usage/" + variant="outlined" + fullWidth + endIcon={<KeyboardArrowRightRounded />} + sx={{ py: 1, mt: 'auto' }} + > + Get started + </Button> + </Box> + <ColumnHeadHighlight> + <div> + <PlanName plan="pro" /> + <PlanPrice plan="pro" /> + </div> + <PricingTableBuyPro /> + </ColumnHeadHighlight> + <Box sx={{ display: 'flex', flexDirection: 'column', p: 2, pt: 1.5 }}> + <PlanName plan="premium" /> + <PlanPrice plan="premium" /> + <PricingTableBuyPremium /> + </Box> </Box> - </Box> - )} - <RowHead startIcon={<IconImage name="product-core" width={28} height={28} />}> - MUI Core (open-source) - </RowHead> - {renderRow('Material UI')} - {divider} - {renderRow('Joy UI')} - {divider} - {renderRow('Base UI')} - {divider} - {renderRow('MUI System')} - <RowHead startIcon={<IconImage name="product-advanced" width={28} height={28} />}> - MUI X (open-core) - </RowHead> - <Box - sx={{ - position: 'relative', - minHeight: 58, - '& svg': { transition: '0.3s' }, - '&:hover svg': { color: 'primary.main' }, - ...gridSx, - }} - > - <Cell /> - <Cell sx={{ minHeight: 60 }}>{dataGridUnfoldMore}</Cell> - <Cell highlighted sx={{ display: { xs: 'none', md: 'flex' }, minHeight: 60 }}> - {dataGridUnfoldMore} - </Cell> - <Cell sx={{ display: { xs: 'none', md: 'flex' }, minHeight: 60 }}> - {dataGridUnfoldMore} - </Cell> - <Button - fullWidth - onClick={() => setDataGridCollapsed((bool) => !bool)} - endIcon={ - <KeyboardArrowRightRounded - color="primary" - sx={{ transform: dataGridCollapsed ? 'rotate(-90deg)' : 'rotate(90deg)' }} - /> - } - sx={[ - (theme) => ({ - px: 1, - justifyContent: 'flex-start', - fontSize: '0.875rem', - fontWeight: 'medium', - borderRadius: '0px', - position: 'absolute', - left: 0, - top: 0, - width: '100%', - height: '100%', - '&:hover': { - bgcolor: alpha(theme.palette.primary.main, 0.06), - '@media (hover: none)': { - bgcolor: 'initial', - }, - }, - }), - (theme) => - theme.applyDarkStyles({ + )} + <RowHead startIcon={<IconImage name="product-core" width={28} height={28} />}> + MUI Core (open-source) + </RowHead> + {renderRow('Material UI')} + {divider} + {renderRow('Joy UI')} + {divider} + {renderRow('Base UI')} + {divider} + {renderRow('MUI System')} + <RowHead startIcon={<IconImage name="product-advanced" width={28} height={28} />}> + MUI X (open-core) + </RowHead> + <Box + sx={{ + position: 'relative', + minHeight: 58, + '& svg': { transition: '0.3s' }, + '&:hover svg': { color: 'primary.main' }, + ...gridSx, + }} + > + <Cell /> + <Cell sx={{ minHeight: 60 }}>{dataGridUnfoldMore}</Cell> + <Cell highlighted sx={{ display: { xs: 'none', md: 'flex' }, minHeight: 60 }}> + {dataGridUnfoldMore} + </Cell> + <Cell sx={{ display: { xs: 'none', md: 'flex' }, minHeight: 60 }}> + {dataGridUnfoldMore} + </Cell> + <Button + fullWidth + onClick={() => setDataGridCollapsed((bool) => !bool)} + endIcon={ + <KeyboardArrowRightRounded + color="primary" + sx={{ transform: dataGridCollapsed ? 'rotate(-90deg)' : 'rotate(90deg)' }} + /> + } + sx={[ + (theme) => ({ + px: 1, + justifyContent: 'flex-start', + fontSize: '0.875rem', + fontWeight: 'medium', + borderRadius: '0px', + position: 'absolute', + left: 0, + top: 0, + width: '100%', + height: '100%', '&:hover': { bgcolor: alpha(theme.palette.primary.main, 0.06), + '@media (hover: none)': { + bgcolor: 'initial', + }, }, }), - ]} - > - Data Grid - </Button> - </Box> - <StyledCollapse in={dataGridCollapsed} timeout={700}> - <RowCategory>Column features</RowCategory> - {renderNestedRow('data-grid/column-groups')} - {divider} - {renderNestedRow('data-grid/column-spanning')} - {divider} - {renderNestedRow('data-grid/column-resizing')} - {divider} - {renderNestedRow('data-grid/column-autosizing')} - {divider} - {renderNestedRow('data-grid/column-reorder')} - {divider} - {renderNestedRow('data-grid/column-pinning')} - {divider} - <RowCategory>Row features</RowCategory> - {renderNestedRow('data-grid/row-height')} - {divider} - {renderNestedRow('data-grid/row-spanning')} - {divider} - {renderNestedRow('data-grid/row-reordering')} - {divider} - {renderNestedRow('data-grid/row-pinning')} - {divider} - <RowCategory>Selection features</RowCategory> - {renderNestedRow('data-grid/row-selection')} - {divider} - {renderNestedRow('data-grid/row-multiselection')} - {divider} - {renderNestedRow('data-grid/row-cell-selection')} - {divider} - <RowCategory>Filtering features</RowCategory> - {renderNestedRow('data-grid/filter-column')} - {divider} - {renderNestedRow('data-grid/filter-quick')} - {divider} - {renderNestedRow('data-grid/header-filters')} - {divider} - {renderNestedRow('data-grid/filter-multicolumn')} - {divider} - <RowCategory>Sorting</RowCategory> - {renderNestedRow('data-grid/column-sorting')} - {divider} - {renderNestedRow('data-grid/multi-column-sorting')} - {divider} - <RowCategory>Pagination features</RowCategory> - {renderNestedRow('data-grid/pagination')} - {divider} - {renderNestedRow('data-grid/pagination-large')} - {divider} - <RowCategory>Editing features</RowCategory> - {renderNestedRow('data-grid/edit-row')} - {divider} - {renderNestedRow('data-grid/edit-cell')} - {divider} - <RowCategory>Import & export</RowCategory> - {renderNestedRow('data-grid/file-csv')} - {divider} - {renderNestedRow('data-grid/file-print')} - {divider} - {renderNestedRow('data-grid/file-clipboard-copy')} - {divider} - {renderNestedRow('data-grid/file-clipboard-paste')} - {divider} - {renderNestedRow('data-grid/file-excel')} - {divider} - <RowCategory>Rendering features</RowCategory> - {renderNestedRow('data-grid/customizable-components')} - {divider} - {renderNestedRow('data-grid/virtualize-column')} - {divider} - {renderNestedRow('data-grid/virtualize-row')} - {divider} - <RowCategory>Group & pivot</RowCategory> - {renderNestedRow('data-grid/tree-data')} - {divider} - {renderNestedRow('data-grid/master-detail')} - {divider} - {renderNestedRow('data-grid/grouping')} - {divider} - {renderNestedRow('data-grid/aggregation')} - {divider} - {renderNestedRow('data-grid/pivoting')} - {divider} - <RowCategory>Miscellaneous</RowCategory> - {renderNestedRow('data-grid/accessibility')} - {divider} - {renderNestedRow('data-grid/keyboard-nav')} + (theme) => + theme.applyDarkStyles({ + '&:hover': { + bgcolor: alpha(theme.palette.primary.main, 0.06), + }, + }), + ]} + > + Data Grid + </Button> + </Box> + <StyledCollapse in={dataGridCollapsed}> + <RowCategory>Column features</RowCategory> + {renderNestedRow('data-grid/column-groups')} + {divider} + {renderNestedRow('data-grid/column-spanning')} + {divider} + {renderNestedRow('data-grid/column-resizing')} + {divider} + {renderNestedRow('data-grid/column-autosizing')} + {divider} + {renderNestedRow('data-grid/column-reorder')} + {divider} + {renderNestedRow('data-grid/column-pinning')} + {divider} + <RowCategory>Row features</RowCategory> + {renderNestedRow('data-grid/row-height')} + {divider} + {renderNestedRow('data-grid/row-spanning')} + {divider} + {renderNestedRow('data-grid/row-reordering')} + {divider} + {renderNestedRow('data-grid/row-pinning')} + {divider} + <RowCategory>Selection features</RowCategory> + {renderNestedRow('data-grid/row-selection')} + {divider} + {renderNestedRow('data-grid/row-multiselection')} + {divider} + {renderNestedRow('data-grid/row-cell-selection')} + {divider} + <RowCategory>Filtering features</RowCategory> + {renderNestedRow('data-grid/filter-column')} + {divider} + {renderNestedRow('data-grid/filter-quick')} + {divider} + {renderNestedRow('data-grid/header-filters')} + {divider} + {renderNestedRow('data-grid/filter-multicolumn')} + {divider} + <RowCategory>Sorting</RowCategory> + {renderNestedRow('data-grid/column-sorting')} + {divider} + {renderNestedRow('data-grid/multi-column-sorting')} + {divider} + <RowCategory>Pagination features</RowCategory> + {renderNestedRow('data-grid/pagination')} + {divider} + {renderNestedRow('data-grid/pagination-large')} + {divider} + <RowCategory>Editing features</RowCategory> + {renderNestedRow('data-grid/edit-row')} + {divider} + {renderNestedRow('data-grid/edit-cell')} + {divider} + <RowCategory>Import & export</RowCategory> + {renderNestedRow('data-grid/file-csv')} + {divider} + {renderNestedRow('data-grid/file-print')} + {divider} + {renderNestedRow('data-grid/file-clipboard-copy')} + {divider} + {renderNestedRow('data-grid/file-clipboard-paste')} + {divider} + {renderNestedRow('data-grid/file-excel')} + {divider} + <RowCategory>Rendering features</RowCategory> + {renderNestedRow('data-grid/customizable-components')} + {divider} + {renderNestedRow('data-grid/virtualize-column')} + {divider} + {renderNestedRow('data-grid/virtualize-row')} + {divider} + <RowCategory>Group & pivot</RowCategory> + {renderNestedRow('data-grid/tree-data')} + {divider} + {renderNestedRow('data-grid/master-detail')} + {divider} + {renderNestedRow('data-grid/grouping')} + {divider} + {renderNestedRow('data-grid/aggregation')} + {divider} + {renderNestedRow('data-grid/pivoting')} + {divider} + <RowCategory>Miscellaneous</RowCategory> + {renderNestedRow('data-grid/accessibility')} + {divider} + {renderNestedRow('data-grid/keyboard-nav')} + {divider} + {renderNestedRow('data-grid/localization')} + </StyledCollapse> + {divider} + {renderRow('date-picker/simple')} + {divider} + {renderRow('date-picker/range')} {divider} - {renderNestedRow('data-grid/localization')} - </StyledCollapse> - {divider} - {renderRow('date-picker/simple')} - {divider} - {renderRow('date-picker/range')} - {divider} - <Box - sx={{ - position: 'relative', - minHeight: 58, - '& svg': { transition: '0.3s' }, - '&:hover svg': { color: 'primary.main' }, - ...gridSx, - }} - > - <Cell /> - <Cell sx={{ minHeight: 60 }}>{chartsUnfoldMore}</Cell> - <Cell highlighted sx={{ display: { xs: 'none', md: 'flex' }, minHeight: 60 }}> - {chartsUnfoldMore} - </Cell> - <Cell sx={{ display: { xs: 'none', md: 'flex' }, minHeight: 60 }}>{chartsUnfoldMore}</Cell> - <Button - fullWidth - onClick={() => setChartsCollapsed((bool) => !bool)} - endIcon={ - <KeyboardArrowRightRounded - color="primary" - sx={{ transform: chartsCollapsed ? 'rotate(-90deg)' : 'rotate(90deg)' }} - /> - } - sx={[ - (theme) => ({ - px: 1, - justifyContent: 'flex-start', - fontSize: '0.875rem', - fontWeight: 'medium', - borderRadius: '0px', - position: 'absolute', - left: 0, - top: 0, - width: '100%', - height: '100%', - '&:hover': { - bgcolor: alpha(theme.palette.primary.main, 0.06), - '@media (hover: none)': { - bgcolor: 'initial', - }, - }, - }), - (theme) => - theme.applyDarkStyles({ + <Box + sx={{ + position: 'relative', + minHeight: 58, + '& svg': { transition: '0.3s' }, + '&:hover svg': { color: 'primary.main' }, + ...gridSx, + }} + > + <Cell /> + <Cell sx={{ minHeight: 60 }}>{chartsUnfoldMore}</Cell> + <Cell highlighted sx={{ display: { xs: 'none', md: 'flex' }, minHeight: 60 }}> + {chartsUnfoldMore} + </Cell> + <Cell sx={{ display: { xs: 'none', md: 'flex' }, minHeight: 60 }}> + {chartsUnfoldMore} + </Cell> + <Button + fullWidth + onClick={() => setChartsCollapsed((bool) => !bool)} + endIcon={ + <KeyboardArrowRightRounded + color="primary" + sx={{ transform: chartsCollapsed ? 'rotate(-90deg)' : 'rotate(90deg)' }} + /> + } + sx={[ + (theme) => ({ + px: 1, + justifyContent: 'flex-start', + fontSize: '0.875rem', + fontWeight: 'medium', + borderRadius: '0px', + position: 'absolute', + left: 0, + top: 0, + width: '100%', + height: '100%', '&:hover': { bgcolor: alpha(theme.palette.primary.main, 0.06), + '@media (hover: none)': { + bgcolor: 'initial', + }, }, }), - ]} - > - Charts - </Button> - </Box> - <StyledCollapse in={chartsCollapsed} timeout={700}> - <RowCategory>Components</RowCategory> - {renderNestedRow('charts/line')} - {divider} - {renderNestedRow('charts/bar')} - {divider} - {renderNestedRow('charts/scatter')} - {divider} - {renderNestedRow('charts/pie')} - {divider} - {renderNestedRow('charts/sparkline')} - {divider} - {renderNestedRow('charts/gauge')} - {divider} - {renderNestedRow('charts/heatmap')} - {divider} - {renderNestedRow('charts/treemap')} - {divider} - {renderNestedRow('charts/radar')} - {divider} - {renderNestedRow('charts/funnel')} - {divider} - {renderNestedRow('charts/sankey')} - {divider} - {renderNestedRow('charts/gantt')} - {divider} - {renderNestedRow('charts/gantt-advanced')} - {divider} - {renderNestedRow('charts/candlestick')} - {divider} - {renderNestedRow('charts/large-dataset')} - {divider} - <RowCategory>Interactions</RowCategory> - {renderNestedRow('charts/legend')} - {divider} - {renderNestedRow('charts/tooltip')} - {divider} - {renderNestedRow('charts/zoom-and-pan')} - {divider} - {renderNestedRow('charts/export')} - {divider} - <RowCategory>Data Grid Integration</RowCategory> - {renderNestedRow('charts/cell-with-charts')} - {divider} - {renderNestedRow('charts/filter-interaction')} + (theme) => + theme.applyDarkStyles({ + '&:hover': { + bgcolor: alpha(theme.palette.primary.main, 0.06), + }, + }), + ]} + > + Charts + </Button> + </Box> + <StyledCollapse in={chartsCollapsed}> + <RowCategory>Components</RowCategory> + {renderNestedRow('charts/line')} + {divider} + {renderNestedRow('charts/bar')} + {divider} + {renderNestedRow('charts/scatter')} + {divider} + {renderNestedRow('charts/pie')} + {divider} + {renderNestedRow('charts/sparkline')} + {divider} + {renderNestedRow('charts/gauge')} + {divider} + {renderNestedRow('charts/heatmap')} + {divider} + {renderNestedRow('charts/treemap')} + {divider} + {renderNestedRow('charts/radar')} + {divider} + {renderNestedRow('charts/funnel')} + {divider} + {renderNestedRow('charts/sankey')} + {divider} + {renderNestedRow('charts/gantt')} + {divider} + {renderNestedRow('charts/gantt-advanced')} + {divider} + {renderNestedRow('charts/candlestick')} + {divider} + {renderNestedRow('charts/large-dataset')} + {divider} + <RowCategory>Interactions</RowCategory> + {renderNestedRow('charts/legend')} + {divider} + {renderNestedRow('charts/tooltip')} + {divider} + {renderNestedRow('charts/zoom-and-pan')} + {divider} + {renderNestedRow('charts/export')} + {divider} + <RowCategory>Data Grid Integration</RowCategory> + {renderNestedRow('charts/cell-with-charts')} + {divider} + {renderNestedRow('charts/filter-interaction')} + {divider} + {renderNestedRow('charts/selection-interaction')} + </StyledCollapse> {divider} - {renderNestedRow('charts/selection-interaction')} - </StyledCollapse> - {divider} - <Box - sx={{ - position: 'relative', - minHeight: 58, - '& svg': { transition: '0.3s' }, - '&:hover svg': { color: 'primary.main' }, - ...gridSx, - }} - > - <Cell /> - <Cell sx={{ minHeight: 60 }}>{treeViewUnfoldMore}</Cell> - <Cell highlighted sx={{ display: { xs: 'none', md: 'flex' }, minHeight: 60 }}> - {treeViewUnfoldMore} - </Cell> - <Cell sx={{ display: { xs: 'none', md: 'flex' }, minHeight: 60 }}> - {treeViewUnfoldMore} - </Cell> - <Button - fullWidth - onClick={() => setTreeViewCollapsed((bool) => !bool)} - endIcon={ - <KeyboardArrowRightRounded - color="primary" - sx={{ transform: treeViewCollapsed ? 'rotate(-90deg)' : 'rotate(90deg)' }} - /> - } - sx={[ - (theme) => ({ - px: 1, - justifyContent: 'flex-start', - fontSize: '0.875rem', - fontWeight: 'medium', - borderRadius: '0px', - position: 'absolute', - left: 0, - top: 0, - width: '100%', - height: '100%', - '&:hover': { - bgcolor: alpha(theme.palette.primary.main, 0.06), - '@media (hover: none)': { - bgcolor: 'initial', - }, - }, - }), - (theme) => - theme.applyDarkStyles({ + <Box + sx={{ + position: 'relative', + minHeight: 58, + '& svg': { transition: '0.3s' }, + '&:hover svg': { color: 'primary.main' }, + ...gridSx, + }} + > + <Cell /> + <Cell sx={{ minHeight: 60 }}>{treeViewUnfoldMore}</Cell> + <Cell highlighted sx={{ display: { xs: 'none', md: 'flex' }, minHeight: 60 }}> + {treeViewUnfoldMore} + </Cell> + <Cell sx={{ display: { xs: 'none', md: 'flex' }, minHeight: 60 }}> + {treeViewUnfoldMore} + </Cell> + <Button + fullWidth + onClick={() => setTreeViewCollapsed((bool) => !bool)} + endIcon={ + <KeyboardArrowRightRounded + color="primary" + sx={{ transform: treeViewCollapsed ? 'rotate(-90deg)' : 'rotate(90deg)' }} + /> + } + sx={[ + (theme) => ({ + px: 1, + justifyContent: 'flex-start', + fontSize: '0.875rem', + fontWeight: 'medium', + borderRadius: '0px', + position: 'absolute', + left: 0, + top: 0, + width: '100%', + height: '100%', '&:hover': { bgcolor: alpha(theme.palette.primary.main, 0.06), + '@media (hover: none)': { + bgcolor: 'initial', + }, }, }), - ]} - > - TreeView - </Button> - </Box> - <StyledCollapse in={treeViewCollapsed} timeout={700}> - <RowCategory>Components</RowCategory> - {renderNestedRow('tree-view/simple-tree-view')} + (theme) => + theme.applyDarkStyles({ + '&:hover': { + bgcolor: alpha(theme.palette.primary.main, 0.06), + }, + }), + ]} + > + TreeView + </Button> + </Box> + <StyledCollapse in={treeViewCollapsed}> + <RowCategory>Components</RowCategory> + {renderNestedRow('tree-view/simple-tree-view')} + {divider} + {renderNestedRow('tree-view/rich-tree-view')} + {divider} + <RowCategory>Advanced features</RowCategory> + {renderNestedRow('tree-view/selection')} + {divider} + {renderNestedRow('tree-view/multi-selection')} + {divider} + {renderNestedRow('tree-view/inline-editing')} + {divider} + {renderNestedRow('tree-view/drag-to-reorder')} + {divider} + {renderNestedRow('tree-view/virtualization')} + {divider} + </StyledCollapse> {divider} - {renderNestedRow('tree-view/rich-tree-view')} + {renderRow('mui-x-production')} {divider} - <RowCategory>Advanced features</RowCategory> - {renderNestedRow('tree-view/selection')} + <PricingTableDevelopment renderRow={renderRow} /> {divider} - {renderNestedRow('tree-view/multi-selection')} + {renderRow('mui-x-updates')} + <RowHead>Support</RowHead> + {renderRow('core-support')} {divider} - {renderNestedRow('tree-view/inline-editing')} + {renderRow('x-support')} {divider} - {renderNestedRow('tree-view/drag-to-reorder')} + {renderRow('support-duration')} {divider} - {renderNestedRow('tree-view/virtualization')} + {renderRow('response-time')} {divider} - </StyledCollapse> - {divider} - {renderRow('mui-x-production')} - {divider} - <PricingTableDevelopment renderRow={renderRow} /> - {divider} - {renderRow('mui-x-updates')} - <RowHead>Support</RowHead> - {renderRow('core-support')} - {divider} - {renderRow('x-support')} - {divider} - {renderRow('support-duration')} - {divider} - {renderRow('response-time')} - {divider} - {renderRow('pre-screening')} - {divider} - {renderRow('issue-escalation')} - {divider} - {renderRow('security-questionnaire')} - {divider} - </Box> + {renderRow('pre-screening')} + {divider} + {renderRow('issue-escalation')} + {divider} + {renderRow('security-questionnaire')} + {divider} + </Box> + </ThemeProvider> ); } diff --git a/docs/src/components/productBaseUI/BaseUIThemesDemo.tsx b/docs/src/components/productBaseUI/BaseUIThemesDemo.tsx index f19367b906b78b..5d970f332f47c1 100644 --- a/docs/src/components/productBaseUI/BaseUIThemesDemo.tsx +++ b/docs/src/components/productBaseUI/BaseUIThemesDemo.tsx @@ -581,6 +581,7 @@ const StyledBadge = styled(Badge)( & .${badgeClasses.badge} { --_scale: 1.5em; + z-index: auto; position: absolute; top: 0; diff --git a/docs/src/featureToggle.js b/docs/src/featureToggle.js index 54a28c6732bffb..69e0ce67160627 100644 --- a/docs/src/featureToggle.js +++ b/docs/src/featureToggle.js @@ -2,6 +2,6 @@ module.exports = { enable_website_banner: false, enable_toc_banner: true, - enable_docsnav_banner: false, + enable_docsnav_banner: true, enable_job_banner: false, }; diff --git a/docs/src/modules/components/ApiPage/list/ClassesList.tsx b/docs/src/modules/components/ApiPage/list/ClassesList.tsx index bce18f61354667..b3ea79b64cbd11 100644 --- a/docs/src/modules/components/ApiPage/list/ClassesList.tsx +++ b/docs/src/modules/components/ApiPage/list/ClassesList.tsx @@ -87,6 +87,7 @@ export default function ClassesList(props: ClassesListProps) { {description && <p dangerouslySetInnerHTML={{ __html: description }} />} {displayClassKeys && !isGlobal && ( <p className="prop-list-class"> + {/* eslint-disable-next-line material-ui/no-hardcoded-labels */} <span className="prop-list-title">{'Rule name'}:</span> <code className="Api-code">{key}</code> </p> diff --git a/docs/src/modules/components/ApiPage/list/PropertiesList.tsx b/docs/src/modules/components/ApiPage/list/PropertiesList.tsx index cd406c29d2ec30..85f73c32c3b7fa 100644 --- a/docs/src/modules/components/ApiPage/list/PropertiesList.tsx +++ b/docs/src/modules/components/ApiPage/list/PropertiesList.tsx @@ -157,11 +157,13 @@ export default function PropertiesList(props: PropertiesListProps) { <React.Fragment> {propName} {isProPlan && ( + // eslint-disable-next-line material-ui/no-hardcoded-labels <a href="/x/introduction/licensing/#pro-plan" aria-label="Pro plan"> <span className="plan-pro" /> </a> )} {isPremiumPlan && ( + // eslint-disable-next-line material-ui/no-hardcoded-labels <a href="/x/introduction/licensing/#premium-plan" aria-label="Premium plan"> <span className="plan-premium" /> </a> diff --git a/docs/src/modules/components/ApiPage/sections/ToggleDisplayOption.tsx b/docs/src/modules/components/ApiPage/sections/ToggleDisplayOption.tsx index 353805e3039281..12839405f03d59 100644 --- a/docs/src/modules/components/ApiPage/sections/ToggleDisplayOption.tsx +++ b/docs/src/modules/components/ApiPage/sections/ToggleDisplayOption.tsx @@ -117,7 +117,8 @@ export default function ToggleDisplayOption(props: ToggleDisplayOptionProps) { sx={{ height: '1.875rem', p: '6px 4px 6px 8px', textTransform: 'capitalize' }} > <Box component="span" sx={{ fontWeight: 'medium', mr: 0.5 }}> - View: + {/* eslint-disable-next-line material-ui/no-hardcoded-labels */} + {'View:'} </Box> {displayOption} </Button> @@ -136,7 +137,8 @@ export default function ToggleDisplayOption(props: ToggleDisplayOptionProps) { data-ga-event-action={sectionType} data-ga-event-label="table" > - Table + {/* eslint-disable-next-line material-ui/no-hardcoded-labels */} + {'Table'} <CheckIcon sx={{ fontSize: '0.85rem', ml: 'auto', opacity: displayOption === 'table' ? 1 : 0 }} /> @@ -149,7 +151,8 @@ export default function ToggleDisplayOption(props: ToggleDisplayOptionProps) { data-ga-event-action={sectionType} data-ga-event-label="expanded" > - Expanded list + {/* eslint-disable-next-line material-ui/no-hardcoded-labels */} + {'Expanded list'} <CheckIcon sx={{ fontSize: '0.85rem', ml: 'auto', opacity: displayOption === 'expanded' ? 1 : 0 }} /> @@ -162,7 +165,8 @@ export default function ToggleDisplayOption(props: ToggleDisplayOptionProps) { data-ga-event-action={sectionType} data-ga-event-label="collapsed" > - Collapsed list + {/* eslint-disable-next-line material-ui/no-hardcoded-labels */} + {'Collapsed list'} <CheckIcon sx={{ fontSize: '0.85rem', ml: 'auto', opacity: displayOption === 'collapsed' ? 1 : 0 }} /> diff --git a/docs/src/modules/components/ApiPage/table/ClassesTable.tsx b/docs/src/modules/components/ApiPage/table/ClassesTable.tsx index 025c6e4b242682..463e7aa2685f59 100644 --- a/docs/src/modules/components/ApiPage/table/ClassesTable.tsx +++ b/docs/src/modules/components/ApiPage/table/ClassesTable.tsx @@ -65,9 +65,11 @@ export default function ClassesTable(props: ClassesTableProps) { <StyledTable> <thead> <tr> - <th>Class name</th> - {displayClassKeys && <th>Rule name</th>} - <th>Description</th> + {/* eslint-disable material-ui/no-hardcoded-labels */} + <th>{'Class name'}</th> + {displayClassKeys && <th>{'Rule name'}</th>} + <th>{'Description'}</th> + {/* eslint-enable material-ui/no-hardcoded-labels */} </tr> </thead> <tbody> diff --git a/docs/src/modules/components/ApiPage/table/PropertiesTable.tsx b/docs/src/modules/components/ApiPage/table/PropertiesTable.tsx index c08aff256245d7..356f62187cef06 100644 --- a/docs/src/modules/components/ApiPage/table/PropertiesTable.tsx +++ b/docs/src/modules/components/ApiPage/table/PropertiesTable.tsx @@ -133,10 +133,12 @@ export default function PropertiesTable(props: PropertiesTableProps) { <StyledTable> <thead> <tr> - <th>Name</th> - <th>Type</th> - {hasDefaultColumn && <th>Default</th>} - <th>Description</th> + {/* eslint-disable material-ui/no-hardcoded-labels */} + <th>{'Name'}</th> + <th>{'Type'}</th> + {hasDefaultColumn && <th>{'Default'}</th>} + <th>{'Description'}</th> + {/* eslint-enable material-ui/no-hardcoded-labels */} </tr> </thead> <tbody> @@ -168,11 +170,13 @@ export default function PropertiesTable(props: PropertiesTableProps) { {isRequired ? '*' : ''} {isOptional ? '?' : ''} {isProPlan && ( + // eslint-disable-next-line material-ui/no-hardcoded-labels <a href="/x/introduction/licensing/#pro-plan" aria-label="Pro plan"> <span className="plan-pro" /> </a> )} {isPremiumPlan && ( + // eslint-disable-next-line material-ui/no-hardcoded-labels <a href="/x/introduction/licensing/#premium-plan" aria-label="Premium plan"> <span className="plan-premium" /> </a> diff --git a/docs/src/modules/components/ApiPage/table/SlotsTable.tsx b/docs/src/modules/components/ApiPage/table/SlotsTable.tsx index de1e6ee7889888..ae82b75331ae3c 100644 --- a/docs/src/modules/components/ApiPage/table/SlotsTable.tsx +++ b/docs/src/modules/components/ApiPage/table/SlotsTable.tsx @@ -97,6 +97,7 @@ export default function SlotsTable(props: SlotsTableProps) { {name} </td> <td className="MuiApi-table-class-name"> + {/* eslint-disable-next-line material-ui/no-hardcoded-labels */} {className && <span className="class-name">{`.${className}`}</span>} </td> <td>{defaultValue && <code className="item-default">{defaultValue}</code>}</td> diff --git a/docs/src/modules/components/AppFrame.js b/docs/src/modules/components/AppFrame.js index 293906e03f12c2..b3cd3a7dcdd6d2 100644 --- a/docs/src/modules/components/AppFrame.js +++ b/docs/src/modules/components/AppFrame.js @@ -65,24 +65,22 @@ export function NextNProgressBar() { const sx = { minWidth: { sm: 160 } }; const AppSearch = React.lazy(() => import('docs/src/modules/components/AppSearch')); +let hadHydrated = false; export function DeferredAppSearch() { - const [mounted, setMounted] = React.useState(false); + const [mounted, setMounted] = React.useState(hadHydrated); React.useEffect(() => { + hadHydrated = true; setMounted(true); }, []); - return ( - <React.Fragment> - {/* Suspense isn't supported for SSR yet */} - {mounted ? ( - <React.Suspense fallback={<Box sx={sx} />}> - <AppSearch sx={sx} /> - </React.Suspense> - ) : ( - <Box sx={sx} /> - )} - </React.Fragment> + /* Suspense isn't supported for SSR yet */ + return mounted ? ( + <React.Suspense fallback={<Box sx={sx} />}> + <AppSearch sx={sx} /> + </React.Suspense> + ) : ( + <Box sx={sx} /> ); } diff --git a/docs/src/modules/components/AppLayoutDocsFooter.js b/docs/src/modules/components/AppLayoutDocsFooter.js index 2ce58acb5c5e48..e7c2b6a28831b0 100644 --- a/docs/src/modules/components/AppLayoutDocsFooter.js +++ b/docs/src/modules/components/AppLayoutDocsFooter.js @@ -57,6 +57,8 @@ const FooterLink = styled(Link)(({ theme }) => { */ /** + * This function is flattening the pages tree and extracts all the leaves that are internal pages. + * To extract the leaves, it skips all the nodes that have at least one child. * @param {MuiPage[]} pages * @param {MuiPage[]} [current] * @returns {OrderedMuiPage[]} @@ -64,10 +66,10 @@ const FooterLink = styled(Link)(({ theme }) => { function orderedPages(pages, current = []) { return pages .reduce((items, item) => { - if (item.children && item.children.length > 1) { + if (item.children && item.children.length > 0) { items = orderedPages(item.children, items); } else { - items.push(item.children && item.children.length === 1 ? item.children[0] : item); + items.push(item); } return items; }, current) diff --git a/docs/src/modules/components/AppTableOfContents.js b/docs/src/modules/components/AppTableOfContents.js index 5ee730cd054da9..8cfa63458e9d55 100644 --- a/docs/src/modules/components/AppTableOfContents.js +++ b/docs/src/modules/components/AppTableOfContents.js @@ -45,8 +45,7 @@ const NavList = styled(Typography)({ }); const NavItem = styled(Link, { - shouldForwardProp: (prop) => - prop !== 'active' && prop !== 'secondary' && prop !== 'secondarySubItem', + shouldForwardProp: (prop) => prop !== 'active' && prop !== 'level', })(({ theme }) => { const activeStyles = { borderLeftColor: (theme.vars || theme).palette.primary[200], @@ -67,9 +66,8 @@ const NavItem = styled(Link, { return [ { - '--_padding-left': '12px', boxSizing: 'border-box', - padding: theme.spacing('6px', 0, '6px', 'var(--_padding-left)'), + padding: '6px 0 6px 12px', borderLeft: `1px solid transparent`, display: 'block', fontSize: theme.typography.pxToRem(13), @@ -93,15 +91,15 @@ const NavItem = styled(Link, { }, }, { - props: ({ secondary }) => secondary, + props: ({ level }) => level === 2, style: { - '--_padding-left': theme.spacing(3), + padding: `6px 0 6px ${theme.spacing(3)}`, }, }, { - props: ({ secondarySubItem }) => secondarySubItem, + props: ({ level }) => level === 3, style: { - '--_padding-left': theme.spacing(4.5), + padding: `6px 0 6px ${theme.spacing(4.5)}`, }, }, ], @@ -250,15 +248,14 @@ export default function AppTableOfContents(props) { [], ); - const itemLink = (item, secondary, secondarySubItem) => ( + const itemLink = (item, level) => ( <NavItem display="block" href={`#${item.hash}`} underline="none" onClick={handleClick(item.hash)} active={activeState === item.hash} - secondary={secondary} - secondarySubItem={secondarySubItem} + level={level} > <span dangerouslySetInnerHTML={{ __html: item.text }} /> </NavItem> @@ -324,18 +321,16 @@ export default function AppTableOfContents(props) { <NavList component="ul"> {toc.map((item) => ( <li key={item.text}> - {itemLink(item)} + {itemLink(item, 1)} {item.children.length > 0 ? ( <NavList as="ul"> {item.children.map((subitem) => ( <li key={subitem.text}> - {itemLink(subitem, true)} + {itemLink(subitem, 2)} {subitem.children?.length > 0 ? ( <NavList as="ul"> {subitem.children.map((nestedSubItem) => ( - <li key={nestedSubItem.text}> - {itemLink(nestedSubItem, false, true)} - </li> + <li key={nestedSubItem.text}>{itemLink(nestedSubItem, 3)}</li> ))} </NavList> ) : null} diff --git a/docs/src/modules/components/DiamondSponsors.js b/docs/src/modules/components/DiamondSponsors.js index cf308ce1623c5b..f78dba135fb0ac 100644 --- a/docs/src/modules/components/DiamondSponsors.js +++ b/docs/src/modules/components/DiamondSponsors.js @@ -98,33 +98,6 @@ export default function DiamondSponsors() { ]} /> </NativeLink> - <Divider /> - <NativeLink - data-ga-event-category="sponsor" - data-ga-event-action="docs-premium" - data-ga-event-label="marblism.com" - href="https://www.marblism.com/?utm_source=mui.com&utm_medium=referral" - rel="noopener sponsored" - target="_blank" - > - <Box - component="img" - src="/static/sponsors/marblism-light.svg" - alt="marblism" - title="AI web app generation" - loading="lazy" - sx={[ - { - height: '27px', - width: '90px', - }, - (theme) => - theme.applyDarkStyles({ - content: `url(/static/sponsors/marblism-dark.svg)`, - }), - ]} - /> - </NativeLink> <Link href="/material-ui/discover-more/backers/#diamond-sponsors" sx={(theme) => ({ diff --git a/docs/src/modules/components/JoyThemeBuilder.tsx b/docs/src/modules/components/JoyThemeBuilder.tsx index 834d439b77594d..67753753411c4b 100644 --- a/docs/src/modules/components/JoyThemeBuilder.tsx +++ b/docs/src/modules/components/JoyThemeBuilder.tsx @@ -1,3 +1,4 @@ +/* eslint-disable material-ui/no-hardcoded-labels */ import * as React from 'react'; import TypeScriptIcon from '@mui/docs/svgIcons/TypeScript'; import startCase from 'lodash/startCase'; @@ -1267,7 +1268,15 @@ function getAvailableTokens(colorSchemes: any, colorMode: 'light' | 'dark') { return tokens; } -function TemplatesDialog({ children, data }: { children: React.ReactElement<any>; data: any }) { +function TemplatesDialog({ + children, + data, +}: { + children: React.ReactElement<{ + onClick?: React.MouseEventHandler; + }>; + data: any; +}) { const [open, setOpen] = React.useState(false); const { map: templateMap } = sourceJoyTemplates(); const renderItem = (name: string, item: TemplateData) => { @@ -1338,9 +1347,9 @@ function TemplatesDialog({ children, data }: { children: React.ReactElement<any> return ( <React.Fragment> {React.cloneElement(children, { - onClick: () => { + onClick: (event: React.MouseEvent) => { setOpen(true); - children.props.onClick?.(); + children.props.onClick?.(event); }, })} <Modal open={open} onClose={() => setOpen(false)}> diff --git a/docs/src/modules/components/JoyUsageDemo.tsx b/docs/src/modules/components/JoyUsageDemo.tsx index 98804104e7b016..cd62b187277655 100644 --- a/docs/src/modules/components/JoyUsageDemo.tsx +++ b/docs/src/modules/components/JoyUsageDemo.tsx @@ -1,3 +1,4 @@ +/* eslint-disable material-ui/no-hardcoded-labels */ import * as React from 'react'; import Check from '@mui/icons-material/Check'; import CheckRounded from '@mui/icons-material/CheckRounded'; diff --git a/docs/src/modules/components/JoyVariablesDemo.tsx b/docs/src/modules/components/JoyVariablesDemo.tsx index a691cc654f9112..f350f110fe3531 100644 --- a/docs/src/modules/components/JoyVariablesDemo.tsx +++ b/docs/src/modules/components/JoyVariablesDemo.tsx @@ -1,3 +1,4 @@ +/* eslint-disable material-ui/no-hardcoded-labels */ import * as React from 'react'; import Box from '@mui/joy/Box'; import Divider from '@mui/joy/Divider'; diff --git a/docs/src/modules/components/MaterialFreeTemplatesCollection.js b/docs/src/modules/components/MaterialFreeTemplatesCollection.js index 9e340696713b8f..8cf569bf2a9eb3 100644 --- a/docs/src/modules/components/MaterialFreeTemplatesCollection.js +++ b/docs/src/modules/components/MaterialFreeTemplatesCollection.js @@ -74,12 +74,12 @@ function layouts(translatation) { ]; } -export default function Templates() { +export default function MaterialFreeTemplatesCollection() { const translatation = useTranslate(); const materialTemplates = sourceMaterialTemplates(); return ( <Box sx={{ display: 'flex', flexDirection: 'column', gap: 4, mb: 4 }}> - {layouts(translatation).map((layout) => { + {layouts(translatation).map((layout, index) => { const templateId = layout.source.split('/').pop(); const templateName = pascalCase(templateId); const item = materialTemplates.map.get(templateId); @@ -100,7 +100,8 @@ export default function Templates() { borderColor: 'divider', }} > - <Box + <Link + href={layout.href} sx={{ position: 'relative', '&:hover > .MuiCardMedia-root': { @@ -115,7 +116,8 @@ export default function Templates() { component="img" // The image source is generated from `pnpm template:screenshot material-ui`, do not modify the image manually. image={`/static/screenshots${layout.href.replace(/\/$/, '')}.jpg`} - title={layout.title} + alt={layout.title} + fetchPriority={index === 0 ? 'high' : undefined} sx={(theme) => ({ aspectRatio: '16 / 9', objectPosition: 'top', @@ -133,11 +135,12 @@ export default function Templates() { <Button variant="text" endIcon={<OpenInNewRoundedIcon />} - component={Link} - href={layout.href} + component="div" data-ga-event-category="material-ui-template" data-ga-event-label={layout.title} data-ga-event-action="preview-img" + tabIndex={null} + role="none" sx={{ position: 'absolute', top: '50%', @@ -153,7 +156,7 @@ export default function Templates() { > See live preview </Button> - </Box> + </Link> <Box sx={{ display: 'flex', diff --git a/docs/src/modules/components/MaterialShowcase.js b/docs/src/modules/components/MaterialShowcase.js index 14834e14b466e9..eee7f2ce5dafe4 100644 --- a/docs/src/modules/components/MaterialShowcase.js +++ b/docs/src/modules/components/MaterialShowcase.js @@ -437,7 +437,7 @@ const sortFunctions = { stars: sortFactory('stars'), }; -export default function Showcase() { +export default function MaterialShowcase() { const [sortFunctionName, setSortFunctionName] = React.useState('similarWebVisits'); const sortFunction = sortFunctions[sortFunctionName]; const t = useTranslate(); diff --git a/docs/src/modules/components/MuiProductSelector.tsx b/docs/src/modules/components/MuiProductSelector.tsx index c6f3f9980b5088..af9370110bd50d 100644 --- a/docs/src/modules/components/MuiProductSelector.tsx +++ b/docs/src/modules/components/MuiProductSelector.tsx @@ -260,6 +260,7 @@ const MuiProductSelector = React.forwardRef(function MuiProductSelector( }, }} > + {/* eslint-disable-next-line material-ui/no-hardcoded-labels */} <NavLabel>MUI X Components</NavLabel> </Box> {advancedProducts.map((product) => ( @@ -292,6 +293,7 @@ const MuiProductSelector = React.forwardRef(function MuiProductSelector( }} > <Box sx={{ display: 'flex', alignItems: 'center', gap: '1px' }}> + {/* eslint-disable-next-line material-ui/no-hardcoded-labels */} <NavLabel> Toolpad </NavLabel> <Chip label="Beta" diff --git a/docs/src/modules/components/ThemeViewer.tsx b/docs/src/modules/components/ThemeViewer.tsx index 8d8b9629ebc548..3638e4d2534e4d 100644 --- a/docs/src/modules/components/ThemeViewer.tsx +++ b/docs/src/modules/components/ThemeViewer.tsx @@ -81,6 +81,7 @@ function ObjectEntryLabel(props: { objectKey: string; objectValue: any }) { return ( <React.Fragment> + {/* eslint-disable-next-line material-ui/no-hardcoded-labels */} {`${objectKey}: `} {type === 'color' ? ( <Color style={{ borderColor: lighten(label, 0.7) }}> diff --git a/docs/translations/api-docs/grid-2/grid-2.json b/docs/translations/api-docs/grid-2/grid-2.json index ef2a4d9cb8bba9..65a9cda1b84578 100644 --- a/docs/translations/api-docs/grid-2/grid-2.json +++ b/docs/translations/api-docs/grid-2/grid-2.json @@ -26,5 +26,12 @@ "description": "Defines the <code>flex-wrap</code> style property. It's applied for all screen sizes." } }, - "classDescriptions": {} + "classDescriptions": { + "container": { + "description": "Styles applied to {{nodeName}} if {{conditions}}.", + "nodeName": "the root element", + "conditions": "<code>container={true}</code>" + }, + "root": { "description": "Styles applied to the root element." } + } } diff --git a/docs/translations/api-docs/tooltip/tooltip.json b/docs/translations/api-docs/tooltip/tooltip.json index 27477d14a534a5..4b8e1c89648827 100644 --- a/docs/translations/api-docs/tooltip/tooltip.json +++ b/docs/translations/api-docs/tooltip/tooltip.json @@ -52,12 +52,8 @@ "PopperProps": { "description": "Props applied to the <a href=\"https://mui.com/material-ui/api/popper/\"><code>Popper</code></a> element." }, - "slotProps": { - "description": "The extra props for the slot components. You can override the existing props or add new ones.<br>This prop is an alias for the <code>componentsProps</code> prop, which will be deprecated in the future." - }, - "slots": { - "description": "The components used for each slot inside.<br>This prop is an alias for the <code>components</code> prop, which will be deprecated in the future." - }, + "slotProps": { "description": "The props used for each slot inside." }, + "slots": { "description": "The components used for each slot inside." }, "sx": { "description": "The system prop that allows defining system overrides as well as additional CSS styles." }, @@ -72,11 +68,6 @@ } }, "classDescriptions": { - "arrow": { "description": "Styles applied to {{nodeName}}.", "nodeName": "the arrow element" }, - "popper": { - "description": "Styles applied to {{nodeName}}.", - "nodeName": "the Popper component" - }, "popperArrow": { "description": "Styles applied to {{nodeName}} if {{conditions}}.", "nodeName": "the Popper component", @@ -92,10 +83,6 @@ "nodeName": "the Popper component", "conditions": "<code>disableInteractive={true}</code>" }, - "tooltip": { - "description": "Styles applied to {{nodeName}}.", - "nodeName": "the tooltip (label wrapper) element" - }, "tooltipArrow": { "description": "Styles applied to {{nodeName}} if {{conditions}}.", "nodeName": "the tooltip (label wrapper) element", @@ -126,5 +113,11 @@ "nodeName": "the tooltip (label wrapper) element", "conditions": "the tooltip is opened by touch" } + }, + "slotDescriptions": { + "arrow": "The component used for the arrow.", + "popper": "The component used for the popper.", + "tooltip": "The component used for the tooltip.", + "transition": "The component used for the transition. <a href=\"https://mui.com/material-ui/transitions/#transitioncomponent-prop\">Follow this guide</a> to learn more about the requirements for this component." } } diff --git a/examples/material-ui-nextjs-pages-router-ts/README.md b/examples/material-ui-nextjs-pages-router-ts/README.md index 25e32aa803cfd2..37b40bcf662263 100644 --- a/examples/material-ui-nextjs-pages-router-ts/README.md +++ b/examples/material-ui-nextjs-pages-router-ts/README.md @@ -41,6 +41,11 @@ If you prefer, you can [use styled-components instead](https://mui.com/material- The [example folder](https://github.com/mui/material-ui/tree/HEAD/examples/material-ui-nextjs-pages-router-ts) provides an adapter for the use of [Next.js's Link component](https://nextjs.org/docs/pages/api-reference/components/link) with Material UI. More information [in the documentation](https://mui.com/material-ui/integrations/routing/#next-js-pages-router). +## Upgrading to Next.js 15 + +This example uses Next.js 14. +To upgrade to version 15, please follow the [official upgrade guide](https://nextjs.org/docs/app/building-your-application/upgrading/version-15) in the Next.js docs. + ## What's next? <!-- #default-branch-switch --> diff --git a/examples/material-ui-nextjs-pages-router-ts/package.json b/examples/material-ui-nextjs-pages-router-ts/package.json index a8e8c86ca0508b..11d9ab9a44fddf 100644 --- a/examples/material-ui-nextjs-pages-router-ts/package.json +++ b/examples/material-ui-nextjs-pages-router-ts/package.json @@ -18,15 +18,15 @@ "@mui/material": "latest", "@mui/material-nextjs": "latest", "clsx": "latest", - "next": "latest", - "react": "latest", - "react-dom": "latest" + "next": "^14.0.0", + "react": "^18.0.0", + "react-dom": "^18.0.0" }, "devDependencies": { "@types/node": "latest", "@types/react": "latest", "eslint": "latest", - "eslint-config-next": "latest", + "eslint-config-next": "^14.0.0", "typescript": "latest" } } diff --git a/examples/material-ui-nextjs-pages-router/README.md b/examples/material-ui-nextjs-pages-router/README.md index 50453acf21f548..80e1b7d32a2ed9 100644 --- a/examples/material-ui-nextjs-pages-router/README.md +++ b/examples/material-ui-nextjs-pages-router/README.md @@ -41,6 +41,11 @@ If you prefer, you can [use styled-components instead](https://mui.com/material- The [example folder](https://github.com/mui/material-ui/tree/HEAD/examples/material-ui-nextjs-pages-router) provides an adapter for the use of [Next.js's Link component](https://nextjs.org/docs/pages/api-reference/components/link) with Material UI. More information [in the documentation](https://mui.com/material-ui/integrations/routing/#next-js-pages-router). +## Upgrading to Next.js 15 + +This example uses Next.js 14. +To upgrade to version 15, please follow the [official upgrade guide](https://nextjs.org/docs/app/building-your-application/upgrading/version-15) in the Next.js docs. + ## What's next? <!-- #default-branch-switch --> diff --git a/examples/material-ui-nextjs-pages-router/package.json b/examples/material-ui-nextjs-pages-router/package.json index 55b0d43a77d553..11a24ea893d60c 100644 --- a/examples/material-ui-nextjs-pages-router/package.json +++ b/examples/material-ui-nextjs-pages-router/package.json @@ -18,13 +18,13 @@ "@mui/material": "latest", "@mui/material-nextjs": "latest", "clsx": "latest", - "next": "latest", + "next": "^14.0.0", "prop-types": "latest", - "react": "latest", - "react-dom": "latest" + "react": "^18.0.0", + "react-dom": "^18.0.0" }, "devDependencies": { "eslint": "latest", - "eslint-config-next": "latest" + "eslint-config-next": "^14.0.0" } } diff --git a/examples/material-ui-nextjs-ts/README.md b/examples/material-ui-nextjs-ts/README.md index df5d86c065a2a4..13f386515d7cb7 100644 --- a/examples/material-ui-nextjs-ts/README.md +++ b/examples/material-ui-nextjs-ts/README.md @@ -30,6 +30,11 @@ or: [![Edit on CodeSandbox](https://codesandbox.io/static/img/play-codesandbox.svg)](https://codesandbox.io/p/sandbox/github/mui/material-ui/tree/master/examples/material-ui-nextjs-ts) +## Upgrading to Next.js 15 + +This example uses Next.js 14. +To upgrade to version 15, please follow the [official upgrade guide](https://nextjs.org/docs/app/building-your-application/upgrading/version-15) in the Next.js docs. + ## Learn more To learn more about this example: diff --git a/examples/material-ui-nextjs-ts/package.json b/examples/material-ui-nextjs-ts/package.json index 429d960765034e..55181969226f21 100644 --- a/examples/material-ui-nextjs-ts/package.json +++ b/examples/material-ui-nextjs-ts/package.json @@ -16,16 +16,16 @@ "@mui/icons-material": "latest", "@mui/material": "latest", "@mui/material-nextjs": "latest", - "next": "latest", - "react": "latest", - "react-dom": "latest" + "next": "^14.0.0", + "react": "^18.0.0", + "react-dom": "^18.0.0" }, "devDependencies": { "@types/node": "latest", "@types/react": "latest", "@types/react-dom": "latest", "eslint": "latest", - "eslint-config-next": "latest", + "eslint-config-next": "^14.0.0", "typescript": "latest" } } diff --git a/examples/material-ui-nextjs/README.md b/examples/material-ui-nextjs/README.md index 98ea0fabe4fc94..0d7600e101a3f6 100644 --- a/examples/material-ui-nextjs/README.md +++ b/examples/material-ui-nextjs/README.md @@ -30,6 +30,11 @@ or: [![Edit on CodeSandbox](https://codesandbox.io/static/img/play-codesandbox.svg)](https://codesandbox.io/p/sandbox/github/mui/material-ui/tree/master/examples/material-ui-nextjs) +## Upgrading to Next.js 15 + +This example uses Next.js 14. +To upgrade to version 15, please follow the [official upgrade guide](https://nextjs.org/docs/app/building-your-application/upgrading/version-15) in the Next.js docs. + ## Learn more To learn more about this example: diff --git a/examples/material-ui-nextjs/package.json b/examples/material-ui-nextjs/package.json index af1228ce229f01..5e931b115a9c6a 100644 --- a/examples/material-ui-nextjs/package.json +++ b/examples/material-ui-nextjs/package.json @@ -16,9 +16,9 @@ "@mui/material": "latest", "@mui/material-nextjs": "latest", "eslint": "latest", - "eslint-config-next": "latest", - "next": "latest", - "react": "latest", - "react-dom": "latest" + "eslint-config-next": "^14.0.0", + "next": "^14.0.0", + "react": "^18.0.0", + "react-dom": "^18.0.0" } } diff --git a/examples/material-ui-pigment-css-nextjs-ts/next-env.d.ts b/examples/material-ui-pigment-css-nextjs-ts/next-env.d.ts index a4a7b3f5cfa2f9..40c3d68096c270 100644 --- a/examples/material-ui-pigment-css-nextjs-ts/next-env.d.ts +++ b/examples/material-ui-pigment-css-nextjs-ts/next-env.d.ts @@ -2,4 +2,4 @@ /// <reference types="next/image-types/global" /> // NOTE: This file should not be edited -// see https://nextjs.org/docs/pages/building-your-application/configuring/typescript for more information. +// see https://nextjs.org/docs/app/building-your-application/configuring/typescript for more information. diff --git a/examples/material-ui-pigment-css-nextjs-ts/next.config.mjs b/examples/material-ui-pigment-css-nextjs-ts/next.config.mjs index 064c4bfb543ef2..5bc722ac72e0b6 100644 --- a/examples/material-ui-pigment-css-nextjs-ts/next.config.mjs +++ b/examples/material-ui-pigment-css-nextjs-ts/next.config.mjs @@ -6,7 +6,9 @@ const nextConfig = {}; export default withPigment(nextConfig, { theme: createTheme({ - cssVariables: true, + cssVariables: { + colorSchemeSelector: 'class', + }, colorSchemes: { light: true, dark: true }, typography: { fontFamily: 'var(--font-roboto)', diff --git a/examples/material-ui-pigment-css-nextjs-ts/package.json b/examples/material-ui-pigment-css-nextjs-ts/package.json index e1e5929ece8d83..f1b6103ef7a9d1 100644 --- a/examples/material-ui-pigment-css-nextjs-ts/package.json +++ b/examples/material-ui-pigment-css-nextjs-ts/package.json @@ -11,6 +11,7 @@ "dependencies": { "@mui/material": "latest", "@mui/material-pigment-css": "latest", + "@pigment-css/react": "latest", "next": "latest", "react": "latest", "react-dom": "latest" diff --git a/examples/material-ui-pigment-css-nextjs-ts/src/app/layout.tsx b/examples/material-ui-pigment-css-nextjs-ts/src/app/layout.tsx index f98f4082fb09b0..ab2f3e59d177ab 100644 --- a/examples/material-ui-pigment-css-nextjs-ts/src/app/layout.tsx +++ b/examples/material-ui-pigment-css-nextjs-ts/src/app/layout.tsx @@ -1,28 +1,26 @@ import * as React from 'react'; import type { Metadata } from 'next'; -import { Roboto } from 'next/font/google'; +import { cookies } from 'next/headers'; import '@mui/material-pigment-css/styles.css'; - -const roboto = Roboto({ - subsets: ['latin'], - weight: ['400', '500', '700'], - display: 'swap', - variable: '--font-roboto', -}); +import { ColorSchemeProvider } from '../components/ColorSchemeProvider'; +import App from '../components/App'; export const metadata: Metadata = { title: 'Material UI x Pigment CSS', description: 'Generated by create next app', }; - -export default function RootLayout({ +export default async function RootLayout({ children, }: Readonly<{ children: React.ReactNode; }>) { + const cookieStore = await cookies(); + const { value: colorScheme = 'light' } = cookieStore.get('colorScheme') ?? {}; return ( <html lang="en"> - <body className={roboto.variable}>{children}</body> + <ColorSchemeProvider colorScheme={colorScheme}> + <App>{children}</App> + </ColorSchemeProvider> </html> ); } diff --git a/examples/material-ui-pigment-css-nextjs-ts/src/app/page.tsx b/examples/material-ui-pigment-css-nextjs-ts/src/app/page.tsx index 8e4da13a0cdadd..8bd74d2db8e1de 100644 --- a/examples/material-ui-pigment-css-nextjs-ts/src/app/page.tsx +++ b/examples/material-ui-pigment-css-nextjs-ts/src/app/page.tsx @@ -1,12 +1,15 @@ +'use client'; import * as React from 'react'; import DefaultPropsProvider from '@mui/material/DefaultPropsProvider'; import CssBaseline from '@mui/material/CssBaseline'; +import IconButton from '@mui/material/IconButton'; import Container from '@mui/material-pigment-css/Container'; import Grid from '@mui/material-pigment-css/Grid'; import Stack from '@mui/material-pigment-css/Stack'; import Typography from '@mui/material/Typography'; import Chip from '@mui/material/Chip'; import { styled } from '@mui/material-pigment-css'; +import { useColorScheme } from '../components/ColorSchemeProvider'; const Title = styled('div')(({ theme }) => ({ color: theme.vars.palette.text.primary, @@ -16,6 +19,12 @@ const Title = styled('div')(({ theme }) => ({ })); export default function Home() { + const { colorScheme, setColorScheme } = useColorScheme(); + + const toggleColorScheme = () => { + setColorScheme(colorScheme === 'dark' ? 'light' : 'dark'); + }; + return ( <main sx={{ minHeight: '100lvh', display: 'grid', placeItems: 'center' }}> <DefaultPropsProvider @@ -27,6 +36,11 @@ export default function Home() { > <CssBaseline /> <Container> + <div sx={{ position: 'absolute', top: 10, right: 10 }}> + <IconButton sx={{ fontSize: 20, px: 1.5 }} onClick={toggleColorScheme}> + {colorScheme === 'light' ? '🌙' : '🔆'} + </IconButton> + </div> <Grid container spacing={{ xs: 2, sm: 3, md: 4 }}> <Grid size={{ xs: 12, md: 6 }} sx={{ pl: 4.5 }}> <Chip diff --git a/examples/material-ui-pigment-css-nextjs-ts/src/components/App.tsx b/examples/material-ui-pigment-css-nextjs-ts/src/components/App.tsx new file mode 100644 index 00000000000000..75aa9850778bf5 --- /dev/null +++ b/examples/material-ui-pigment-css-nextjs-ts/src/components/App.tsx @@ -0,0 +1,18 @@ +'use client'; +import * as React from 'react'; +import { Roboto } from 'next/font/google'; +import { useColorScheme } from './ColorSchemeProvider'; + +const roboto = Roboto({ + subsets: ['latin'], + weight: ['400', '500', '700'], + display: 'swap', + variable: '--font-roboto', +}); + +function App({ className, ...other }: React.PropsWithChildren<{ className?: string }>) { + const { colorScheme } = useColorScheme(); + return <body {...other} className={`${roboto.variable} ${colorScheme}`} />; +} + +export default App; diff --git a/examples/material-ui-pigment-css-nextjs-ts/src/components/ColorSchemeProvider.tsx b/examples/material-ui-pigment-css-nextjs-ts/src/components/ColorSchemeProvider.tsx new file mode 100644 index 00000000000000..ffd4f25ba29e05 --- /dev/null +++ b/examples/material-ui-pigment-css-nextjs-ts/src/components/ColorSchemeProvider.tsx @@ -0,0 +1,63 @@ +'use client'; +import * as React from 'react'; + +const ColorSchemeContext = React.createContext<{ + colorScheme: string; + setColorScheme: React.Dispatch<React.SetStateAction<string>>; +}>({ + colorScheme: 'dark', + setColorScheme: () => '', +}); + +function setCookie(name: string, value: string, days: number = 100) { + let expires = ''; + if (days) { + const date = new Date(); + date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000); + expires = `; expires=${date.toUTCString()}`; + } + document.cookie = `${name}=${value || ''}${expires}; path=/`; +} + +export function ColorSchemeProvider({ + colorScheme: initialColorScheme, + children, +}: React.PropsWithChildren<{ colorScheme: string }>) { + const [colorScheme, setColorScheme] = React.useState<string>(initialColorScheme); + + const contextValue = React.useMemo( + () => ({ colorScheme, setColorScheme }), + [colorScheme, setColorScheme], + ); + + // Set the colorScheme in localStorage + React.useEffect(() => { + setCookie('colorScheme', colorScheme); + localStorage.setItem('colorScheme', colorScheme); + }, [colorScheme]); + + // Handle when localStorage has changed + React.useEffect(() => { + const handleStorage = (event: StorageEvent) => { + const value = event.newValue; + if ( + typeof event.key === 'string' && + event.key === 'colorScheme' && + typeof value === 'string' + ) { + setColorScheme(value); + } + }; + // For syncing color-scheme changes between iframes + window.addEventListener('storage', handleStorage); + return () => { + window.removeEventListener('storage', handleStorage); + }; + }, [setColorScheme]); + + return <ColorSchemeContext.Provider value={contextValue}>{children}</ColorSchemeContext.Provider>; +} + +export const useColorScheme = () => { + return React.useContext(ColorSchemeContext); +}; diff --git a/examples/material-ui-pigment-css-nextjs-ts/tsconfig.json b/examples/material-ui-pigment-css-nextjs-ts/tsconfig.json index 264ef7bbd1ef91..ffbaaf135fb346 100644 --- a/examples/material-ui-pigment-css-nextjs-ts/tsconfig.json +++ b/examples/material-ui-pigment-css-nextjs-ts/tsconfig.json @@ -19,7 +19,8 @@ ], "paths": { "@/*": ["./src/*"] - } + }, + "target": "ES2017" }, "include": [ "next-env.d.ts", diff --git a/examples/material-ui-pigment-css-vite-ts/package.json b/examples/material-ui-pigment-css-vite-ts/package.json index a44124f0d952e0..fe853d4f5d03a3 100644 --- a/examples/material-ui-pigment-css-vite-ts/package.json +++ b/examples/material-ui-pigment-css-vite-ts/package.json @@ -12,6 +12,7 @@ "dependencies": { "@mui/material": "latest", "@mui/material-pigment-css": "latest", + "@pigment-css/react": "latest", "react": "latest", "react-dom": "latest" }, diff --git a/package.json b/package.json index aae5fcb9897a71..d62d49c7451ad8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@mui/monorepo", - "version": "6.1.6", + "version": "6.1.10", "private": true, "scripts": { "preinstall": "npx only-allow pnpm", @@ -100,12 +100,12 @@ "dependencies": { "@googleapis/sheets": "^9.3.1", "@netlify/functions": "^2.8.2", - "@slack/bolt": "^4.1.0", + "@slack/bolt": "^4.1.1", "execa": "^9.5.1", - "google-auth-library": "^9.14.2" + "google-auth-library": "^9.15.0" }, "devDependencies": { - "@argos-ci/core": "^2.10.0", + "@argos-ci/core": "^2.11.0", "@babel/cli": "^7.25.9", "@babel/core": "^7.26.0", "@babel/node": "^7.26.0", @@ -125,19 +125,19 @@ "@mui/utils": "workspace:^", "@next/eslint-plugin-next": "^15.0.3", "@octokit/rest": "^21.0.2", - "@pigment-css/react": "0.0.26", + "@pigment-css/react": "0.0.28", "@playwright/test": "1.48.2", "@types/babel__core": "^7.20.5", "@types/fs-extra": "^11.0.4", "@types/lodash": "^4.17.13", - "@types/mocha": "^10.0.9", - "@types/node": "^20.17.6", + "@types/mocha": "^10.0.10", + "@types/node": "^20.17.9", "@types/react": "^18.3.12", "@types/yargs": "^17.0.33", "@typescript-eslint/eslint-plugin": "^7.18.0", "@typescript-eslint/parser": "^7.18.0", - "@vitest/browser": "^2.1.4", - "@vitest/coverage-v8": "^2.1.4", + "@vitest/browser": "^2.1.8", + "@vitest/coverage-v8": "^2.1.6", "babel-loader": "^9.2.1", "babel-plugin-istanbul": "^7.0.0", "babel-plugin-module-resolver": "^5.0.2", @@ -180,30 +180,30 @@ "lodash": "^4.17.21", "markdownlint-cli2": "^0.15.0", "mocha": "^10.8.2", - "nx": "^20.0.12", + "nx": "^20.1.4", "nyc": "^17.1.0", "piscina": "^4.7.0", - "postcss-styled-syntax": "^0.6.4", - "prettier": "^3.3.3", + "postcss-styled-syntax": "^0.7.0", + "prettier": "^3.4.1", "pretty-quick": "^4.0.0", "process": "^0.11.10", "rimraf": "^6.0.1", "serve": "^14.2.4", - "stylelint": "^15.11.0", - "stylelint-config-standard": "^34.0.0", + "stylelint": "^16.11.0", + "stylelint-config-standard": "^36.0.1", "terser-webpack-plugin": "^5.3.10", "tsx": "^4.19.2", - "typescript": "^5.6.3", - "vitest": "^2.1.4", + "typescript": "^5.7.2", + "vitest": "^2.1.6", "vitest-fail-on-console": "^0.7.1", "webpack": "^5.96.1", "webpack-bundle-analyzer": "^4.10.2", "webpack-cli": "^5.1.4", "yargs": "^17.7.2" }, - "packageManager": "pnpm@9.12.3", + "packageManager": "pnpm@9.14.4", "engines": { - "pnpm": "9.12.3" + "pnpm": "9.14.4" }, "resolutions": { "@babel/core": "^7.26.0", @@ -213,17 +213,17 @@ "@babel/preset-typescript": "^7.26.0", "@babel/runtime": "^7.26.0", "@babel/types": "^7.26.0", - "@definitelytyped/header-parser": "^0.2.15", - "@definitelytyped/typescript-versions": "^0.1.5", + "@definitelytyped/header-parser": "^0.2.16", + "@definitelytyped/typescript-versions": "^0.1.6", "@definitelytyped/utils": "^0.1.8", - "@types/node": "^20.17.6", + "@types/node": "^20.17.9", "@types/react": "^18.3.12", "@types/react-dom": "18.3.1", "cross-fetch": "^4.0.0", - "@pigment-css/react": "0.0.26", - "@pigment-css/unplugin": "0.0.26", - "@pigment-css/nextjs-plugin": "0.0.26", - "@pigment-css/vite-plugin": "0.0.26" + "@pigment-css/react": "0.0.28", + "@pigment-css/unplugin": "0.0.28", + "@pigment-css/nextjs-plugin": "0.0.28", + "@pigment-css/vite-plugin": "0.0.28" }, "nyc": { "include": [ diff --git a/packages-internal/docs-utils/package.json b/packages-internal/docs-utils/package.json index 691c99bcfcf619..afe2157543788e 100644 --- a/packages-internal/docs-utils/package.json +++ b/packages-internal/docs-utils/package.json @@ -1,6 +1,6 @@ { "name": "@mui/internal-docs-utils", - "version": "1.0.15", + "version": "1.0.16", "author": "MUI Team", "description": "Utilities for MUI docs. This is an internal package not meant for general use.", "main": "./build/index.js", @@ -22,7 +22,7 @@ }, "dependencies": { "rimraf": "^6.0.1", - "typescript": "^5.6.3" + "typescript": "^5.7.2" }, "publishConfig": { "access": "public" diff --git a/packages-internal/docs-utils/src/getPropsFromComponentNode.ts b/packages-internal/docs-utils/src/getPropsFromComponentNode.ts index 0c04dcd987c2f7..d6af8aa4274a41 100644 --- a/packages-internal/docs-utils/src/getPropsFromComponentNode.ts +++ b/packages-internal/docs-utils/src/getPropsFromComponentNode.ts @@ -4,7 +4,7 @@ import { TypeScriptProject } from './createTypeScriptProject'; export interface ParsedProp { /** * If `true`, some signatures do not contain this property. - * e.g: `id` in `{ id: number, value: string } | { value: string }` + * For example: `id` in `{ id: number, value: string } | { value: string }` */ onlyUsedInSomeSignatures: boolean; signatures: { symbol: ts.Symbol; componentType: ts.Type }[]; diff --git a/packages-internal/scripts/package.json b/packages-internal/scripts/package.json index 35e867cb611ed6..4148cab2d72482 100644 --- a/packages-internal/scripts/package.json +++ b/packages-internal/scripts/package.json @@ -1,6 +1,6 @@ { "name": "@mui/internal-scripts", - "version": "1.0.26", + "version": "1.0.29", "author": "MUI Team", "description": "Utilities supporting MUI libraries build and docs generation. This is an internal package not meant for general use.", "main": "build/index.js", @@ -33,8 +33,8 @@ "@mui/internal-docs-utils": "workspace:^", "doctrine": "^3.0.0", "lodash": "^4.17.21", - "typescript": "^5.6.3", - "uuid": "^9.0.1" + "typescript": "^5.7.2", + "uuid": "^11.0.3" }, "devDependencies": { "@babel/register": "^7.25.9", @@ -42,12 +42,12 @@ "@types/chai": "^4.3.20", "@types/doctrine": "^0.0.9", "@types/lodash": "^4.17.13", - "@types/node": "^20.17.6", + "@types/node": "^20.17.9", "@types/react": "^18.3.12", "@types/uuid": "^10.0.0", "chai": "^4.5.0", "fast-glob": "^3.3.2", - "prettier": "^3.3.3", + "prettier": "^3.4.1", "rimraf": "^6.0.1" }, "publishConfig": { diff --git a/packages-internal/test-utils/package.json b/packages-internal/test-utils/package.json index d418be995965ed..b0d1253aa5791b 100644 --- a/packages-internal/test-utils/package.json +++ b/packages-internal/test-utils/package.json @@ -1,6 +1,6 @@ { "name": "@mui/internal-test-utils", - "version": "1.0.19", + "version": "1.0.22", "author": "MUI Team", "description": "Utilities for MUI tests. This is an internal package not meant for general use.", "main": "./build/index.js", @@ -37,8 +37,8 @@ "@babel/preset-typescript": "^7.26.0", "@babel/register": "^7.25.9", "@babel/runtime": "^7.26.0", - "@emotion/cache": "^11.13.1", - "@emotion/react": "^11.13.3", + "@emotion/cache": "^11.13.5", + "@emotion/react": "^11.13.5", "@testing-library/dom": "^10.4.0", "@testing-library/react": "^16.0.1", "@testing-library/user-event": "^14.5.2", @@ -47,7 +47,7 @@ "dom-accessibility-api": "^0.7.0", "format-util": "^1.0.5", "fs-extra": "^11.2.0", - "jsdom": "^24.0.0", + "jsdom": "^25.0.1", "lodash": "^4.17.21", "mocha": "^10.8.2", "playwright": "^1.48.2", @@ -62,7 +62,7 @@ "@types/react": "^18.3.12", "@types/react-dom": "^18.3.1", "@types/sinon": "^17.0.3", - "typescript": "^5.6.3" + "typescript": "^5.7.2" }, "peerDependencies": { "react": "^18.2.0", diff --git a/packages-internal/test-utils/src/describeConformance.tsx b/packages-internal/test-utils/src/describeConformance.tsx index e3625ea577ff73..2cd9d11010c56b 100644 --- a/packages-internal/test-utils/src/describeConformance.tsx +++ b/packages-internal/test-utils/src/describeConformance.tsx @@ -8,6 +8,10 @@ function capitalize(string: string): string { return string.charAt(0).toUpperCase() + string.slice(1); } +interface DataProps { + [key: `data-${string}`]: string; +} + export interface SlotTestingOptions { /** * A custom React component to test if the receiving props are correct. @@ -41,7 +45,7 @@ export interface ConformanceOptions { refInstanceof: any; after?: () => void; inheritComponent?: React.ElementType; - render: (node: React.ReactElement<any>) => MuiRenderResult | Promise<MuiRenderResult>; + render: (node: React.ReactElement<DataProps>) => MuiRenderResult | Promise<MuiRenderResult>; only?: Array<keyof typeof fullSuite>; skip?: Array<keyof typeof fullSuite | 'classesRoot'>; testComponentsRootPropWith?: string; @@ -95,7 +99,11 @@ function throwMissingPropError(field: string): never { * the root component. */ export function testClassName( - element: React.ReactElement<any>, + element: React.ReactElement< + DataProps & { + className: string; + } + >, getOptions: () => ConformanceOptions, ) { it('applies the className to the root component', async () => { @@ -121,7 +129,12 @@ export function testClassName( * Component from @inheritComponent */ export function testComponentProp( - element: React.ReactElement<any>, + element: React.ReactElement< + DataProps & { + className: string; + component?: string | React.ElementType; + } + >, getOptions: () => ConformanceOptions, ) { describe('prop: component', () => { @@ -157,7 +170,13 @@ export function testComponentProp( * MUI components spread additional props to its root. */ export function testPropsSpread( - element: React.ReactElement<any>, + element: React.ReactElement< + DataProps & { + className: string; + component: string | React.ElementType; + } + >, + getOptions: () => ConformanceOptions, ) { it(`spreads props to the root component`, async () => { @@ -187,7 +206,9 @@ export function testPropsSpread( * components that forward their ref and attach it to a host component. */ export function describeRef( - element: React.ReactElement<any>, + element: React.ReactElement<{ + ref: React.RefObject<any>; + }>, getOptions: () => ConformanceOptions, ) { describe('ref', () => { @@ -212,7 +233,10 @@ export function describeRef( * Tests that the root component has the root class */ export function testRootClass( - element: React.ReactElement<any>, + element: React.ReactElement<{ + className: string; + classes: Record<string, string>; + }>, getOptions: () => ConformanceOptions, ) { it('applies the root class to the root component if it has this class', async () => { @@ -264,7 +288,39 @@ function forEachSlot( }); } -function testSlotsProp(element: React.ReactElement<any>, getOptions: () => ConformanceOptions) { +function testSlotsProp( + element: React.ReactElement<{ + className: string; + classes: Record<string, string>; + slots: { + [x: string]: + | SlotTestingOptions['testWithComponent'] + | keyof React.JSX.IntrinsicElements + | React.ForwardRefExoticComponent< + { + children: React.ReactNode; + } & React.RefAttributes<HTMLDivElement> + >; + }; + components?: { + [x: string]: + | SlotTestingOptions['testWithComponent'] + | keyof React.JSX.IntrinsicElements + | React.ForwardRefExoticComponent< + { + children: React.ReactNode; + } & React.RefAttributes<HTMLDivElement> + >; + }; + slotProps: { + [x: string]: DataProps; + }; + componentsProps?: { + [x: string]: DataProps; + }; + }>, + getOptions: () => ConformanceOptions, +) { const { render, slots, testLegacyComponentsProp } = getOptions(); const CustomComponent = React.forwardRef< @@ -321,7 +377,9 @@ function testSlotsProp(element: React.ReactElement<any>, getOptions: () => Confo const renderedElement = queryByTestId('customized'); expect(renderedElement).not.to.equal(null); - expect(renderedElement!.nodeName.toLowerCase()).to.equal(slotElement); + if (typeof slotElement === 'string') { + expect(renderedElement!.nodeName.toLowerCase()).to.equal(slotElement); + } if (slotOptions.expectedClassName) { expect(renderedElement).to.have.class(slotOptions.expectedClassName); } @@ -425,7 +483,9 @@ function testSlotsProp(element: React.ReactElement<any>, getOptions: () => Confo const renderedElement = queryByTestId('customized'); expect(renderedElement).not.to.equal(null); - expect(renderedElement!.nodeName.toLowerCase()).to.equal(slotElement); + if (typeof slotElement === 'string') { + expect(renderedElement!.nodeName.toLowerCase()).to.equal(slotElement); + } if (slotOptions.expectedClassName) { expect(renderedElement).to.have.class(slotOptions.expectedClassName); } @@ -435,7 +495,13 @@ function testSlotsProp(element: React.ReactElement<any>, getOptions: () => Confo }); } -function testSlotPropsProp(element: React.ReactElement<any>, getOptions: () => ConformanceOptions) { +function testSlotPropsProp( + element: React.ReactElement<{ + componentsProps?: Record<string, DataProps>; + slotProps: Record<string, DataProps>; + }>, + getOptions: () => ConformanceOptions, +) { const { render, slots, testLegacyComponentsProp } = getOptions(); if (!render) { @@ -519,7 +585,10 @@ function testSlotPropsProp(element: React.ReactElement<any>, getOptions: () => C } function testSlotPropsCallback( - element: React.ReactElement<any>, + element: React.ReactElement<{ + slotProps: Record<string, () => DataProps>; + className: string; + }>, getOptions: () => ConformanceOptions, ) { const { render, slots } = getOptions(); @@ -530,6 +599,36 @@ function testSlotPropsCallback( forEachSlot(slots, (slotName) => { it(`sets custom properties on the ${slotName} slot's element with the slotProps.${slotName} callback`, async () => { + const slotProps = { + [slotName]: () => ({ + 'data-testid': 'custom', + }), + }; + + const { queryByTestId } = await render( + React.cloneElement(element, { slotProps, className: 'custom' }), + ); + const slotComponent = queryByTestId('custom'); + expect(slotComponent).not.to.equal(null); + }); + }); +} + +function testSlotPropsCallbackWithPropsAsOwnerState( + element: React.ReactElement<{ + slotProps: Record<string, (ownerState: Record<string, any>) => DataProps>; + className: string; + }>, + getOptions: () => ConformanceOptions, +) { + const { render, slots } = getOptions(); + + if (!render) { + throwMissingPropError('render'); + } + + forEachSlot(slots, (slotName) => { + it(`sets custom properties on the ${slotName} slot's element with the slotProps.${slotName} callback using the ownerState`, async () => { const slotProps = { [slotName]: (ownerState: Record<string, any>) => ({ 'data-testid': ownerState.className, @@ -550,7 +649,11 @@ function testSlotPropsCallback( * Components from @inheritComponent */ function testComponentsProp( - element: React.ReactElement<any>, + element: React.ReactElement< + { + components?: Record<string, string>; + } & DataProps + >, getOptions: () => ConformanceOptions, ) { describe('prop components:', () => { @@ -576,7 +679,7 @@ function testComponentsProp( * Components from @inheritComponent */ function testThemeDefaultProps( - element: React.ReactElement<any>, + element: React.ReactElement<unknown>, getOptions: () => ConformanceOptions, ) { describe('theme default components:', () => { @@ -617,12 +720,14 @@ function testThemeDefaultProps( }); describe('default props provider:', () => { - it('respect custom default props', async function test() { + it('respect custom default props', async function test(t = {}) { const testProp = 'data-id'; const { muiName, render, DefaultPropsProvider } = getOptions(); if (!DefaultPropsProvider) { - this.skip(); + // @ts-ignore + // eslint-disable-next-line @typescript-eslint/no-unused-expressions + this?.skip?.() ?? t?.skip(); } if (!muiName) { @@ -634,6 +739,7 @@ function testThemeDefaultProps( } const { container } = await render( + // @ts-expect-error we skip it above. <DefaultPropsProvider value={{ [muiName]: { @@ -657,7 +763,7 @@ function testThemeDefaultProps( * Components from @inheritComponent */ function testThemeStyleOverrides( - element: React.ReactElement<any>, + element: React.ReactElement<unknown>, getOptions: () => ConformanceOptions, ) { describe('theme style overrides:', () => { @@ -909,7 +1015,10 @@ function testThemeStyleOverrides( * MUI theme has a components section that allows specifying custom variants. * Components from @inheritComponent */ -function testThemeVariants(element: React.ReactElement<any>, getOptions: () => ConformanceOptions) { +function testThemeVariants( + element: React.ReactElement<DataProps & { variant: string }>, + getOptions: () => ConformanceOptions, +) { describe('theme variants:', () => { it("respect theme's variants", async function test(t = {}) { if (/jsdom/.test(window.navigator.userAgent)) { @@ -1019,7 +1128,7 @@ function testThemeVariants(element: React.ReactElement<any>, getOptions: () => C * The components that iterate over the palette via `variants` should be able to render with or without applying the custom palette styles. */ function testThemeCustomPalette( - element: React.ReactElement<any>, + element: React.ReactElement<unknown>, getOptions: () => ConformanceOptions, ) { describe('theme extended palette:', () => { @@ -1061,6 +1170,7 @@ const fullSuite = { rootClass: testRootClass, slotPropsProp: testSlotPropsProp, slotPropsCallback: testSlotPropsCallback, + slotPropsCallbackWithPropsAsOwnerState: testSlotPropsCallbackWithPropsAsOwnerState, slotsProp: testSlotsProp, themeDefaultProps: testThemeDefaultProps, themeStyleOverrides: testThemeStyleOverrides, @@ -1113,7 +1223,12 @@ function describeConformance( (testKey) => only.includes(testKey) && !skip.includes(testKey as keyof typeof fullSuite), ) as (keyof typeof fullSuite)[]; - const slotBasedTests = ['slotsProp', 'slotPropsProp', 'slotPropsCallback']; + const slotBasedTests = [ + 'slotsProp', + 'slotPropsProp', + 'slotPropsCallback', + 'slotPropsCallbackWithPropsAsOwnerState', + ]; if (!slots) { // if `slots` are not defined, do not run tests that depend on them diff --git a/packages/api-docs-builder-core/package.json b/packages/api-docs-builder-core/package.json index e6c8cf15cc2abd..177e9eb8f8ae10 100644 --- a/packages/api-docs-builder-core/package.json +++ b/packages/api-docs-builder-core/package.json @@ -16,11 +16,11 @@ }, "devDependencies": { "@types/chai": "^4.3.20", - "@types/mocha": "^10.0.9", - "@types/node": "^20.17.6", + "@types/mocha": "^10.0.10", + "@types/node": "^20.17.9", "@types/sinon": "^17.0.3", "chai": "^4.5.0", "sinon": "^19.0.2", - "typescript": "^5.6.3" + "typescript": "^5.7.2" } } diff --git a/packages/api-docs-builder/ApiBuilders/ComponentApiBuilder.ts b/packages/api-docs-builder/ApiBuilders/ComponentApiBuilder.ts index 5446662321a161..ba1a6dddea7e2d 100644 --- a/packages/api-docs-builder/ApiBuilders/ComponentApiBuilder.ts +++ b/packages/api-docs-builder/ApiBuilders/ComponentApiBuilder.ts @@ -9,8 +9,8 @@ import { remark } from 'remark'; import { visit as remarkVisit } from 'unist-util-visit'; import type { Link } from 'mdast'; import { defaultHandlers, parse as docgenParse } from 'react-docgen'; -import { renderMarkdown } from '@mui/internal-markdown'; import { parse as parseDoctrine, Annotation } from 'doctrine'; +import { renderCodeTags, renderMarkdown } from '../buildApi'; import { ProjectSettings, SortingStrategiesType } from '../ProjectSettings'; import { toGitHubPath, writePrettifiedFile } from '../buildApiUtils'; import muiDefaultPropsHandler from '../utils/defaultPropsHandler'; @@ -29,8 +29,10 @@ import { AdditionalPropsInfo, ComponentApiContent, ComponentReactApi, + ParsedProperty, } from '../types/ApiBuilder.types'; import { Slot, ComponentInfo } from '../types/utils.types'; +import extractInfoFromEnum from '../utils/extractInfoFromEnum'; const cssComponents = ['Box', 'Grid', 'Typography', 'Stack']; @@ -279,7 +281,7 @@ function extractClassCondition(description: string) { description.replace(stylesRegex, '$1{{nodeName}}$5{{conditions}}.'), ), nodeName: renderMarkdown(conditions[3]), - conditions: renderMarkdown(conditions[6].replace(/`(.*?)`/g, '<code>$1</code>')), + conditions: renderMarkdown(renderCodeTags(conditions[6])), }; } @@ -321,6 +323,7 @@ const generateApiPage = async ( name: reactApi.name, imports: reactApi.imports, ...(reactApi.slots?.length > 0 && { slots: reactApi.slots }), + ...(Object.keys(reactApi.cssVariables).length > 0 && { cssVariables: reactApi.cssVariables }), classes: reactApi.classes, spread: reactApi.spread, themeDefaultProps: reactApi.themeDefaultProps, @@ -460,6 +463,20 @@ const attachTranslations = ( delete reactApi.classes[index].deprecationInfo; // store deprecation info in translations only }); + /** + * CSS variables descriptions. + */ + if (Object.keys(reactApi.cssVariables).length > 0) { + translations.cssVariablesDescriptions = {}; + [...Object.keys(reactApi.cssVariables)] + .sort() // Sort to ensure consistency of object key order + .forEach((cssVariableName: string) => { + const cssVariable = reactApi.cssVariables[cssVariableName]; + const { description } = cssVariable; + translations.cssVariablesDescriptions![cssVariableName] = renderMarkdown(description); + }); + } + reactApi.translations = translations; }; @@ -607,6 +624,58 @@ const defaultGetComponentImports = (name: string, filename: string) => { return [subpathImport, rootImport]; }; +const attachCssVariables = (reactApi: ComponentReactApi, params: ParsedProperty[]) => { + const cssVarsErrors: Array<[propName: string, error: Error]> = []; + const cssVariables: ComponentReactApi['cssVariables'] = params + .map((p) => { + const { name: propName, ...propDescriptor } = p; + let prop: Omit<ParsedProperty, 'name'> | null; + try { + prop = propDescriptor; + } catch (error) { + cssVarsErrors.push([propName, error as Error]); + prop = null; + } + if (prop === null) { + // have to delete `componentProps.undefined` later + return [] as any; + } + + const deprecationTag = propDescriptor.tags?.deprecated; + const deprecation = deprecationTag?.text?.[0]?.text; + + const typeTag = propDescriptor.tags?.type; + const type = (typeTag?.text?.[0]?.text ?? 'string').replace(/{|}/g, ''); + + return { + name: propName, + description: propDescriptor.description, + type, + deprecated: !!deprecation || undefined, + deprecationInfo: renderMarkdown(deprecation || '').trim() || undefined, + }; + }) + .reduce((acc, cssVarDefinition) => { + const { name, ...rest } = cssVarDefinition; + return { + ...acc, + [name]: rest, + }; + }, {}); + + if (cssVarsErrors.length > 0) { + throw new Error( + `There were errors creating CSS variable descriptions:\n${cssVarsErrors + .map(([cssVarName, error]) => { + return ` - ${cssVarName}: ${error}`; + }) + .join('\n')}`, + ); + } + + reactApi.cssVariables = cssVariables; +}; + /** * - Build react component (specified filename) api by lookup at its definition (.d.ts or ts) * and then generate the API page + json data @@ -628,13 +697,26 @@ export default async function generateComponentApi( const filename = componentInfo.filename; let reactApi: ComponentReactApi; - if (componentInfo.isSystemComponent || componentInfo.name === 'Grid2') { - try { + try { + reactApi = docgenParse(src, null, defaultHandlers.concat(muiDefaultPropsHandler), { + filename, + }); + } catch (error) { + // fallback to default logic if there is no `create*` definition. + if ((error as Error).message === 'No suitable component definition found.') { reactApi = docgenParse( src, (ast) => { let node; + // TODO migrate to react-docgen v6, using Babel AST now astTypes.visit(ast, { + visitFunctionDeclaration: (functionPath) => { + // @ts-ignore + if (functionPath.node.params[0].name === 'props') { + node = functionPath; + } + return false; + }, visitVariableDeclaration: (variablePath) => { const definitions: any[] = []; if (variablePath.node.declarations) { @@ -642,7 +724,6 @@ export default async function generateComponentApi( .get('declarations') .each((declarator: any) => definitions.push(declarator.get('init'))); } - definitions.forEach((definition) => { // definition.value.expression is defined when the source is in TypeScript. const expression = definition.value?.expression @@ -650,36 +731,25 @@ export default async function generateComponentApi( : definition; if (expression.value?.callee) { const definitionName = expression.value.callee.name; - if (definitionName === `create${componentInfo.name}`) { node = expression; } } }); - return false; }, }); return node; }, - defaultHandlers, - { filename }, - ); - } catch (error) { - // fallback to default logic if there is no `create*` definition. - if ((error as Error).message === 'No suitable component definition found.') { - reactApi = docgenParse(src, null, defaultHandlers.concat(muiDefaultPropsHandler), { + defaultHandlers.concat(muiDefaultPropsHandler), + { filename, - }); - } else { - throw error; - } + }, + ); + } else { + throw error; } - } else { - reactApi = docgenParse(src, null, defaultHandlers.concat(muiDefaultPropsHandler), { - filename, - }); } if (!reactApi.props) { @@ -750,7 +820,14 @@ export default async function generateComponentApi( reactApi.deprecated = !!deprecation || undefined; + const cssVars = await extractInfoFromEnum( + `${componentInfo.name}CssVars`, + new RegExp(`${componentInfo.name}(CssVars|Classes)?.tsx?$`, 'i'), + project, + ); + attachPropsTable(reactApi, projectSettings.propsSettings); + attachCssVariables(reactApi, cssVars); attachTranslations(reactApi, deprecationInfo, projectSettings.propsSettings); // eslint-disable-next-line no-console diff --git a/packages/api-docs-builder/ApiBuilders/HookApiBuilder.ts b/packages/api-docs-builder/ApiBuilders/HookApiBuilder.ts index 9ac15d20e9f83c..e57edd26502925 100644 --- a/packages/api-docs-builder/ApiBuilders/HookApiBuilder.ts +++ b/packages/api-docs-builder/ApiBuilders/HookApiBuilder.ts @@ -1,6 +1,5 @@ import { readFileSync, writeFileSync } from 'fs'; import path from 'path'; -import { Symbol, isPropertySignature } from 'typescript'; import * as astTypes from 'ast-types'; import * as _ from 'lodash'; import * as babel from '@babel/core'; @@ -9,31 +8,15 @@ import { defaultHandlers, parse as docgenParse } from 'react-docgen'; import kebabCase from 'lodash/kebabCase'; import upperFirst from 'lodash/upperFirst'; import { parse as parseDoctrine, Annotation } from 'doctrine'; -import { renderMarkdown } from '@mui/internal-markdown'; +import { escapeEntities, renderMarkdown } from '../buildApi'; import { ProjectSettings } from '../ProjectSettings'; import { computeApiDescription } from './ComponentApiBuilder'; -import { - getSymbolDescription, - getSymbolJSDocTags, - stringifySymbol, - toGitHubPath, - writePrettifiedFile, -} from '../buildApiUtils'; +import { toGitHubPath, writePrettifiedFile } from '../buildApiUtils'; import { TypeScriptProject } from '../utils/createTypeScriptProject'; import generateApiTranslations from '../utils/generateApiTranslation'; import { HookApiContent, HookReactApi, ParsedProperty } from '../types/ApiBuilder.types'; import { HookInfo } from '../types/utils.types'; - -const parseProperty = async ( - propertySymbol: Symbol, - project: TypeScriptProject, -): Promise<ParsedProperty> => ({ - name: propertySymbol.name, - description: getSymbolDescription(propertySymbol, project), - tags: getSymbolJSDocTags(propertySymbol), - required: !propertySymbol.declarations?.find(isPropertySignature)?.questionToken, - typeStr: await stringifySymbol(propertySymbol, project), -}); +import extractInfoFromType from '../utils/extractInfoFromType'; /** * Add demos & API comment block to type definitions, e.g.: @@ -268,12 +251,7 @@ const attachTable = ( const requiredProp = prop.required; const deprecation = (propDescriptor.description || '').match(/@deprecated(\s+(?<info>.*))?/); - const typeDescription = (propDescriptor.typeStr ?? '') - .replace(/&/g, '&') - .replace(/</g, '<') - .replace(/>/g, '>') - .replace(/"/g, '"') - .replace(/'/g, '''); + const typeDescription = escapeEntities(propDescriptor.typeStr ?? ''); return { [propName]: { type: { @@ -391,43 +369,6 @@ const generateApiJson = async (outputDirectory: string, reactApi: HookReactApi) ); }; -const extractInfoFromType = async ( - typeName: string, - project: TypeScriptProject, -): Promise<ParsedProperty[]> => { - // Generate the params - let result: ParsedProperty[] = []; - - try { - const exportedSymbol = project.exports[typeName]; - const type = project.checker.getDeclaredTypeOfSymbol(exportedSymbol); - // @ts-ignore - const typeDeclaration = type?.symbol?.declarations?.[0]; - if (!typeDeclaration) { - return []; - } - - const properties: Record<string, ParsedProperty> = {}; - // @ts-ignore - const propertiesOnProject = type.getProperties(); - - // @ts-ignore - await Promise.all( - propertiesOnProject.map(async (propertySymbol) => { - properties[propertySymbol.name] = await parseProperty(propertySymbol, project); - }), - ); - - result = Object.values(properties) - .filter((property) => !property.tags.ignore) - .sort((a, b) => a.name.localeCompare(b.name)); - } catch { - console.error(`No declaration for ${typeName}`); - } - - return result; -}; - /** * Helper to get the import options * @param name The name of the hook diff --git a/packages/api-docs-builder/buildApi.ts b/packages/api-docs-builder/buildApi.ts index 538338e7008dc1..04a9e9ab602d83 100644 --- a/packages/api-docs-builder/buildApi.ts +++ b/packages/api-docs-builder/buildApi.ts @@ -1,6 +1,7 @@ import { mkdirSync } from 'fs'; import path from 'path'; import * as fse from 'fs-extra'; +import { renderMarkdown as _renderMarkdown } from '@mui/internal-markdown'; import findComponents from './utils/findComponents'; import findHooks from './utils/findHooks'; import { writePrettifiedFile } from './buildApiUtils'; @@ -13,6 +14,8 @@ import { } from './utils/createTypeScriptProject'; import { ProjectSettings } from './ProjectSettings'; import { ComponentReactApi } from './types/ApiBuilder.types'; +import _escapeCell from './utils/escapeCell'; +import _escapeEntities from './utils/escapeEntities'; async function removeOutdatedApiDocsTranslations( components: readonly ComponentReactApi[], @@ -64,7 +67,14 @@ async function removeOutdatedApiDocsTranslations( ); } -export async function buildApi(projectsSettings: ProjectSettings[], grep: RegExp | null = null) { +let rawDescriptionsCurrent = false; + +export async function buildApi( + projectsSettings: ProjectSettings[], + grep: RegExp | null = null, + rawDescriptions = false, +) { + rawDescriptionsCurrent = rawDescriptions; const allTypeScriptProjects = projectsSettings .flatMap((setting) => setting.typeScriptProjects) .reduce( @@ -118,7 +128,6 @@ async function buildSingleProject( if (manifestDir) { mkdirSync(manifestDir, { recursive: true }); } - const apiBuilds = tsProjects.flatMap((project) => { const projectComponents = findComponents(path.join(project.rootPath, 'src')).filter( (component) => { @@ -202,3 +211,20 @@ async function buildSingleProject( await projectSettings.onCompleted?.(); return builds; } + +export function renderMarkdown(markdown: string) { + return rawDescriptionsCurrent ? markdown : _renderMarkdown(markdown); +} +export function renderCodeTags(value: string) { + return rawDescriptionsCurrent ? value : value.replace(/`(.*?)`/g, '<code>$1</code>'); +} +export function escapeEntities(value: string) { + return rawDescriptionsCurrent ? value : _escapeEntities(value); +} +export function escapeCell(value: string) { + return rawDescriptionsCurrent ? value : _escapeCell(value); +} +export function joinUnionTypes(value: string[]) { + // Use unopinionated formatting for raw descriptions + return rawDescriptionsCurrent ? value.join(' | ') : value.join('<br>| '); +} diff --git a/packages/api-docs-builder/package.json b/packages/api-docs-builder/package.json index 12f74e6e7de2e3..15b2260275ab33 100644 --- a/packages/api-docs-builder/package.json +++ b/packages/api-docs-builder/package.json @@ -18,11 +18,11 @@ "fast-glob": "^3.3.2", "fs-extra": "^11.2.0", "lodash": "^4.17.21", - "prettier": "^3.3.3", + "prettier": "^3.4.1", "react-docgen": "^5.4.3", "recast": "^0.23.9", "remark": "^15.0.1", - "typescript": "^5.6.3", + "typescript": "^5.7.2", "unist-util-visit": "^5.0.0" }, "devDependencies": { @@ -31,8 +31,8 @@ "@types/chai": "^4.3.20", "@types/doctrine": "^0.0.9", "@types/mdast": "4.0.4", - "@types/mocha": "^10.0.9", - "@types/node": "^20.17.6", + "@types/mocha": "^10.0.10", + "@types/node": "^20.17.9", "@types/react-docgen": "workspace:*", "@types/sinon": "^17.0.3", "chai": "^4.5.0", diff --git a/packages/api-docs-builder/types/ApiBuilder.types.ts b/packages/api-docs-builder/types/ApiBuilder.types.ts index c80847ec6b093f..7b7f692c40e851 100644 --- a/packages/api-docs-builder/types/ApiBuilder.types.ts +++ b/packages/api-docs-builder/types/ApiBuilder.types.ts @@ -1,6 +1,6 @@ import { ReactDocgenApi } from 'react-docgen'; import { JSDocTagInfo } from 'typescript'; -import { ComponentInfo, Slot, HookInfo, SeeMore } from './utils.types'; +import { ComponentInfo, Slot, HookInfo, SeeMore, CssVariable } from './utils.types'; export type AdditionalPropsInfo = { cssApi?: boolean; @@ -56,6 +56,7 @@ export interface PropsTranslations { [key: string]: ClassDescription; }; slotDescriptions?: { [key: string]: string }; + cssVariablesDescriptions?: { [key: string]: string }; } interface PropDescription { @@ -91,6 +92,7 @@ export interface ComponentReactApi extends CommonReactApi { themeDefaultProps: boolean | undefined | null; classes: ComponentClassDefinition[]; slots: Slot[]; + cssVariables: { [key: string]: CssVariable }; propsTable: _.Dictionary<PropsTableItem>; translations: PropsTranslations; } @@ -100,6 +102,7 @@ export interface ComponentApiContent { name: string; imports: string[]; slots?: Slot[]; + cssVariables?: { [key: string]: CssVariable }; classes: ComponentClassDefinition[]; spread: boolean | undefined; themeDefaultProps: boolean | null | undefined; diff --git a/packages/api-docs-builder/types/utils.types.ts b/packages/api-docs-builder/types/utils.types.ts index 5af05c3cb52752..f0d1b30d39a97e 100644 --- a/packages/api-docs-builder/types/utils.types.ts +++ b/packages/api-docs-builder/types/utils.types.ts @@ -7,6 +7,11 @@ export interface Slot { default?: string; } +export interface CssVariable { + name: string; + description: string; +} + export type ComponentInfo = { /** * Full path to the source file. diff --git a/packages/api-docs-builder/utils/defaultPropsHandler.ts b/packages/api-docs-builder/utils/defaultPropsHandler.ts index 9b49c019f1af88..6836e85cb677ec 100644 --- a/packages/api-docs-builder/utils/defaultPropsHandler.ts +++ b/packages/api-docs-builder/utils/defaultPropsHandler.ts @@ -131,6 +131,11 @@ function getExplicitPropsDeclaration( ): NodePath | undefined { const functionNode = getRenderBody(componentDefinition, importer); + // No function body available to inspect. + if (!functionNode.value) { + return undefined; + } + let propsPath: NodePath | undefined; // visitVariableDeclarator, can't use visit body.node since it looses scope information functionNode diff --git a/packages/api-docs-builder/utils/escapeEntities.ts b/packages/api-docs-builder/utils/escapeEntities.ts new file mode 100644 index 00000000000000..e132c82f8f3a23 --- /dev/null +++ b/packages/api-docs-builder/utils/escapeEntities.ts @@ -0,0 +1,8 @@ +export default function escapeEntities(value: string): string { + return value + .replace(/&/g, '&') + .replace(/</g, '<') + .replace(/>/g, '>') + .replace(/"/g, '"') + .replace(/'/g, '''); +} diff --git a/packages/api-docs-builder/utils/extractInfoFromEnum.ts b/packages/api-docs-builder/utils/extractInfoFromEnum.ts new file mode 100644 index 00000000000000..77449c527a3de0 --- /dev/null +++ b/packages/api-docs-builder/utils/extractInfoFromEnum.ts @@ -0,0 +1,71 @@ +import { Symbol, isPropertySignature, isEnumDeclaration, forEachChild, Node } from 'typescript'; +import { TypeScriptProject } from './createTypeScriptProject'; +import { ParsedProperty } from '../types/ApiBuilder.types'; +import { getSymbolDescription, getSymbolJSDocTags, stringifySymbol } from '../buildApiUtils'; + +const parseProperty = async ( + propertySymbol: Symbol, + project: TypeScriptProject, + name: string, +): Promise<ParsedProperty> => ({ + name, + description: getSymbolDescription(propertySymbol, project), + tags: getSymbolJSDocTags(propertySymbol), + required: !propertySymbol.declarations?.find(isPropertySignature)?.questionToken, + typeStr: await stringifySymbol(propertySymbol, project), +}); + +const extractInfoFromEnum = async ( + typeName: string, + sourceFileNamePattern: RegExp, + project: TypeScriptProject, +): Promise<ParsedProperty[]> => { + // Generate the params + let result: ParsedProperty[] = []; + + try { + const cssVarDeclarationCandidates = project.program + .getSourceFiles() + .filter((file) => sourceFileNamePattern.test(file.fileName)); + + let enumSymbol: Symbol | null = null; + cssVarDeclarationCandidates.forEach((file) => { + forEachChild(file, (node: Node) => { + if (isEnumDeclaration(node) && node.name.getText() === typeName) { + enumSymbol = project.checker.getSymbolAtLocation(node.name)!; + } + }); + }); + + if (!enumSymbol) { + return []; + } + + const type = project.checker.getDeclaredTypeOfSymbol(enumSymbol!); + + // @ts-ignore + const typeDeclaration = type?.types ?? [type]; + if (!typeDeclaration) { + return []; + } + const properties: Record<string, ParsedProperty> = {}; + + // @ts-ignore + await Promise.all( + typeDeclaration.map(async (t: any) => { + const propertySymbol = t.symbol; + properties[t.value] = await parseProperty(propertySymbol, project, t.value); + }), + ); + + result = Object.values(properties) + .filter((property) => !property.tags.ignore) + .sort((a, b) => a.name.localeCompare(b.name)); + } catch { + console.error(`No declaration for ${typeName}`); + } + + return result; +}; + +export default extractInfoFromEnum; diff --git a/packages/api-docs-builder/utils/extractInfoFromType.ts b/packages/api-docs-builder/utils/extractInfoFromType.ts new file mode 100644 index 00000000000000..8979579d5a77b8 --- /dev/null +++ b/packages/api-docs-builder/utils/extractInfoFromType.ts @@ -0,0 +1,54 @@ +import { Symbol, isPropertySignature } from 'typescript'; +import { TypeScriptProject } from './createTypeScriptProject'; +import { ParsedProperty } from '../types/ApiBuilder.types'; +import { getSymbolDescription, getSymbolJSDocTags, stringifySymbol } from '../buildApiUtils'; + +const parseProperty = async ( + propertySymbol: Symbol, + project: TypeScriptProject, +): Promise<ParsedProperty> => ({ + name: propertySymbol.name, + description: getSymbolDescription(propertySymbol, project), + tags: getSymbolJSDocTags(propertySymbol), + required: !propertySymbol.declarations?.find(isPropertySignature)?.questionToken, + typeStr: await stringifySymbol(propertySymbol, project), +}); + +const extractInfoFromType = async ( + typeName: string, + project: TypeScriptProject, +): Promise<ParsedProperty[]> => { + // Generate the params + let result: ParsedProperty[] = []; + + try { + const exportedSymbol = project.exports[typeName]; + const type = project.checker.getDeclaredTypeOfSymbol(exportedSymbol); + // @ts-ignore + const typeDeclaration = type?.symbol?.declarations?.[0]; + if (!typeDeclaration) { + return []; + } + + const properties: Record<string, ParsedProperty> = {}; + // @ts-ignore + const propertiesOnProject = type.getProperties(); + + // @ts-ignore + await Promise.all( + propertiesOnProject.map(async (propertySymbol) => { + properties[propertySymbol.name] = await parseProperty(propertySymbol, project); + }), + ); + + result = Object.values(properties) + .filter((property) => !property.tags.ignore) + .sort((a, b) => a.name.localeCompare(b.name)); + } catch { + console.error(`No declaration for ${typeName}`); + } + + return result; +}; + +export default extractInfoFromType; diff --git a/packages/api-docs-builder/utils/generatePropDescription.ts b/packages/api-docs-builder/utils/generatePropDescription.ts index e8214e67f31d7e..d8f65d57736060 100644 --- a/packages/api-docs-builder/utils/generatePropDescription.ts +++ b/packages/api-docs-builder/utils/generatePropDescription.ts @@ -1,12 +1,12 @@ import * as doctrine from 'doctrine'; import * as recast from 'recast'; import { PropTypeDescriptor } from 'react-docgen'; +import { escapeCell } from '../buildApi'; import { isElementTypeAcceptingRefProp, isElementAcceptingRefProp, } from './generatePropTypeDescription'; import { DescribeablePropDescriptor } from './createDescribeableProp'; -import escapeCell from './escapeCell'; import { SeeMore } from '../types/utils.types'; function resolveType(type: NonNullable<doctrine.Tag['type']>): string { diff --git a/packages/api-docs-builder/utils/generatePropTypeDescription.ts b/packages/api-docs-builder/utils/generatePropTypeDescription.ts index 66fdf8335e078a..0728176ba4577f 100644 --- a/packages/api-docs-builder/utils/generatePropTypeDescription.ts +++ b/packages/api-docs-builder/utils/generatePropTypeDescription.ts @@ -1,6 +1,6 @@ import * as recast from 'recast'; import { parse as docgenParse, PropTypeDescriptor } from 'react-docgen'; -import escapeCell from './escapeCell'; +import { escapeCell, escapeEntities, joinUnionTypes } from '../buildApi'; function getDeprecatedInfo(type: PropTypeDescriptor) { const marker = /deprecatedPropType\((\r*\n)*\s*PropTypes\./g; @@ -113,26 +113,20 @@ export default function generatePropTypeDescription(type: PropTypeDescriptor): s .join(', ')} }`; case 'union': - return ( - type.value - .map((type2) => { - return generatePropTypeDescription(type2); - }) - // Display one value per line as it's better for visibility. - .join('<br>| ') + return joinUnionTypes( + type.value.map((type2) => { + return generatePropTypeDescription(type2) ?? ''; + }), ); case 'enum': - return ( - type.value - .map((type2) => { - return escapeCell(type2.value); - }) - // Display one value per line as it's better for visibility. - .join('<br>| ') + return joinUnionTypes( + type.value.map((type2) => { + return escapeCell(type2.value); + }), ); case 'arrayOf': { - return `Array<${generatePropTypeDescription(type.value)}>`; + return `Array${escapeEntities('<')}${generatePropTypeDescription(type.value)}${escapeEntities('>')}`; } case 'instanceOf': { diff --git a/packages/api-docs-builder/utils/getPropsFromComponentNode.ts b/packages/api-docs-builder/utils/getPropsFromComponentNode.ts index 0c04dcd987c2f7..f3e1c63e3d4eb6 100644 --- a/packages/api-docs-builder/utils/getPropsFromComponentNode.ts +++ b/packages/api-docs-builder/utils/getPropsFromComponentNode.ts @@ -4,7 +4,7 @@ import { TypeScriptProject } from './createTypeScriptProject'; export interface ParsedProp { /** * If `true`, some signatures do not contain this property. - * e.g: `id` in `{ id: number, value: string } | { value: string }` + * For example: `id` in `{ id: number, value: string } | { value: string }` */ onlyUsedInSomeSignatures: boolean; signatures: { symbol: ts.Symbol; componentType: ts.Type }[]; @@ -51,6 +51,7 @@ function isStyledFunction(node: ts.VariableDeclaration): boolean { ); } +// TODO update to reflect https://github.com/DefinitelyTyped/DefinitelyTyped/pull/65135 function getJSXLikeReturnValueFromFunction(type: ts.Type, project: TypeScriptProject) { return type .getCallSignatures() diff --git a/packages/api-docs-builder/utils/parseSlotsAndClasses.ts b/packages/api-docs-builder/utils/parseSlotsAndClasses.ts index 880fbc9bffb9cc..df88e12315bc3b 100644 --- a/packages/api-docs-builder/utils/parseSlotsAndClasses.ts +++ b/packages/api-docs-builder/utils/parseSlotsAndClasses.ts @@ -1,6 +1,6 @@ import * as ts from 'typescript'; import { ComponentClassDefinition } from '@mui-internal/api-docs-builder'; -import { renderMarkdown } from '@mui/internal-markdown'; +import { renderMarkdown } from '../buildApi'; import { getSymbolDescription, getSymbolJSDocTags } from '../buildApiUtils'; import { TypeScriptProject } from './createTypeScriptProject'; import { getPropsFromComponentNode } from './getPropsFromComponentNode'; diff --git a/packages/feedback/package.json b/packages/feedback/package.json index 6c3081a3838c44..5f382fcac2b23a 100644 --- a/packages/feedback/package.json +++ b/packages/feedback/package.json @@ -19,7 +19,7 @@ }, "dependencies": { "claudia-api-builder": "^4.1.2", - "uuid": "^9.0.1" + "uuid": "^11.0.3" }, "devDependencies": { "claudia": "^5.14.1" diff --git a/packages/markdown/package.json b/packages/markdown/package.json index e09dbbdb4b31ed..f2e45089977636 100644 --- a/packages/markdown/package.json +++ b/packages/markdown/package.json @@ -1,6 +1,6 @@ { "name": "@mui/internal-markdown", - "version": "1.0.19", + "version": "1.0.22", "author": "MUI Team", "description": "MUI markdown parser. This is an internal package not meant for general use.", "main": "./index.js", @@ -22,7 +22,7 @@ "dependencies": { "@babel/runtime": "^7.26.0", "lodash": "^4.17.21", - "marked": "^14.1.4", + "marked": "^15.0.3", "prismjs": "^1.29.0" }, "devDependencies": { diff --git a/packages/markdown/prepareMarkdown.js b/packages/markdown/prepareMarkdown.js index 75254c2800bfa8..20c1b55a5420a5 100644 --- a/packages/markdown/prepareMarkdown.js +++ b/packages/markdown/prepareMarkdown.js @@ -181,66 +181,59 @@ ${headers.hooks }); // fragment link symbol - rendered.unshift( - `<svg style="display: none;" xmlns="http://www.w3.org/2000/svg"> - <symbol id="comment-link-icon" viewBox="0 0 24 24"> - <path d="M22.8481 4C22.8481 2.9 21.9481 2 20.8481 2H4.84814C3.74814 2 2.84814 2.9 2.84814 4V16C2.84814 17.1 3.74814 18 4.84814 18H18.8481L22.8481 22V4ZM16.8481 11H13.8481V14C13.8481 14.55 13.3981 15 12.8481 15C12.2981 15 11.8481 14.55 11.8481 14V11H8.84814C8.29814 11 7.84814 10.55 7.84814 10C7.84814 9.45 8.29814 9 8.84814 9H11.8481V6C11.8481 5.45 12.2981 5 12.8481 5C13.3981 5 13.8481 5.45 13.8481 6V9H16.8481C17.3981 9 17.8481 9.45 17.8481 10C17.8481 10.55 17.3981 11 16.8481 11Z" /> - </symbol> - </svg>`, - ); - - rendered.unshift( - `<svg style="display: none;" xmlns="http://www.w3.org/2000/svg"> - <symbol id="anchor-link-icon" viewBox="0 0 12 6"> - <path d="M8.9176 0.083252H7.1676C6.84677 0.083252 6.58427 0.345752 6.58427 0.666585C6.58427 0.987419 6.84677 1.24992 7.1676 1.24992H8.9176C9.8801 1.24992 10.6676 2.03742 10.6676 2.99992C10.6676 3.96242 9.8801 4.74992 8.9176 4.74992H7.1676C6.84677 4.74992 6.58427 5.01242 6.58427 5.33325C6.58427 5.65409 6.84677 5.91659 7.1676 5.91659H8.9176C10.5276 5.91659 11.8343 4.60992 11.8343 2.99992C11.8343 1.38992 10.5276 0.083252 8.9176 0.083252ZM3.6676 2.99992C3.6676 3.32075 3.9301 3.58325 4.25094 3.58325H7.75094C8.07177 3.58325 8.33427 3.32075 8.33427 2.99992C8.33427 2.67909 8.07177 2.41659 7.75094 2.41659H4.25094C3.9301 2.41659 3.6676 2.67909 3.6676 2.99992ZM4.83427 4.74992H3.08427C2.12177 4.74992 1.33427 3.96242 1.33427 2.99992C1.33427 2.03742 2.12177 1.24992 3.08427 1.24992H4.83427C5.1551 1.24992 5.4176 0.987419 5.4176 0.666585C5.4176 0.345752 5.1551 0.083252 4.83427 0.083252H3.08427C1.47427 0.083252 0.167603 1.38992 0.167603 2.99992C0.167603 4.60992 1.47427 5.91659 3.08427 5.91659H4.83427C5.1551 5.91659 5.4176 5.65409 5.4176 5.33325C5.4176 5.01242 5.1551 4.74992 4.83427 4.74992Z" /> - </symbol> - </svg>`, - ); - - rendered.unshift( - `<svg style="display: none;" xmlns="http://www.w3.org/2000/svg"> - <symbol id="copy-icon" viewBox="0 0 24 24"> - <path d="M15 20H5V7c0-.55-.45-1-1-1s-1 .45-1 1v13c0 1.1.9 2 2 2h10c.55 0 1-.45 1-1s-.45-1-1-1zm5-4V4c0-1.1-.9-2-2-2H9c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h9c1.1 0 2-.9 2-2zm-2 0H9V4h9v12z" /> - +</symbol> - </svg>`, - ); - - rendered.unshift(` - <svg style="display: none;" xmlns="http://www.w3.org/2000/svg"> - <symbol id="copied-icon" viewBox="0 0 24 24"> - <path d="M20 2H8c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-8.24 11.28L9.69 11.2c-.38-.39-.38-1.01 0-1.4.39-.39 1.02-.39 1.41 0l1.36 1.37 4.42-4.46c.39-.39 1.02-.39 1.41 0 .38.39.38 1.01 0 1.4l-5.13 5.17c-.37.4-1.01.4-1.4 0zM3 6c-.55 0-1 .45-1 1v13c0 1.1.9 2 2 2h13c.55 0 1-.45 1-1s-.45-1-1-1H5c-.55 0-1-.45-1-1V7c0-.55-.45-1-1-1z" /> - </symbol> - </svg>`); + rendered.unshift(`<svg style="display: none;" xmlns="http://www.w3.org/2000/svg"> +<symbol id="comment-link-icon" viewBox="0 0 24 24"> +<path d="M22.8481 4C22.8481 2.9 21.9481 2 20.8481 2H4.84814C3.74814 2 2.84814 2.9 2.84814 4V16C2.84814 17.1 3.74814 18 4.84814 18H18.8481L22.8481 22V4ZM16.8481 11H13.8481V14C13.8481 14.55 13.3981 15 12.8481 15C12.2981 15 11.8481 14.55 11.8481 14V11H8.84814C8.29814 11 7.84814 10.55 7.84814 10C7.84814 9.45 8.29814 9 8.84814 9H11.8481V6C11.8481 5.45 12.2981 5 12.8481 5C13.3981 5 13.8481 5.45 13.8481 6V9H16.8481C17.3981 9 17.8481 9.45 17.8481 10C17.8481 10.55 17.3981 11 16.8481 11Z" /> +</symbol> +</svg>`); + + rendered.unshift(`<svg style="display: none;" xmlns="http://www.w3.org/2000/svg"> +<symbol id="anchor-link-icon" viewBox="0 0 12 6"> +<path d="M8.9176 0.083252H7.1676C6.84677 0.083252 6.58427 0.345752 6.58427 0.666585C6.58427 0.987419 6.84677 1.24992 7.1676 1.24992H8.9176C9.8801 1.24992 10.6676 2.03742 10.6676 2.99992C10.6676 3.96242 9.8801 4.74992 8.9176 4.74992H7.1676C6.84677 4.74992 6.58427 5.01242 6.58427 5.33325C6.58427 5.65409 6.84677 5.91659 7.1676 5.91659H8.9176C10.5276 5.91659 11.8343 4.60992 11.8343 2.99992C11.8343 1.38992 10.5276 0.083252 8.9176 0.083252ZM3.6676 2.99992C3.6676 3.32075 3.9301 3.58325 4.25094 3.58325H7.75094C8.07177 3.58325 8.33427 3.32075 8.33427 2.99992C8.33427 2.67909 8.07177 2.41659 7.75094 2.41659H4.25094C3.9301 2.41659 3.6676 2.67909 3.6676 2.99992ZM4.83427 4.74992H3.08427C2.12177 4.74992 1.33427 3.96242 1.33427 2.99992C1.33427 2.03742 2.12177 1.24992 3.08427 1.24992H4.83427C5.1551 1.24992 5.4176 0.987419 5.4176 0.666585C5.4176 0.345752 5.1551 0.083252 4.83427 0.083252H3.08427C1.47427 0.083252 0.167603 1.38992 0.167603 2.99992C0.167603 4.60992 1.47427 5.91659 3.08427 5.91659H4.83427C5.1551 5.91659 5.4176 5.65409 5.4176 5.33325C5.4176 5.01242 5.1551 4.74992 4.83427 4.74992Z" /> +</symbol> +</svg>`); + + rendered.unshift(`<svg style="display: none;" xmlns="http://www.w3.org/2000/svg"> +<symbol id="copy-icon" viewBox="0 0 24 24"> +<path d="M15 20H5V7c0-.55-.45-1-1-1s-1 .45-1 1v13c0 1.1.9 2 2 2h10c.55 0 1-.45 1-1s-.45-1-1-1zm5-4V4c0-1.1-.9-2-2-2H9c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h9c1.1 0 2-.9 2-2zm-2 0H9V4h9v12z" /> ++</symbol> +</svg>`); + + rendered.unshift(`<svg style="display: none;" xmlns="http://www.w3.org/2000/svg"> +<symbol id="copied-icon" viewBox="0 0 24 24"> +<path d="M20 2H8c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-8.24 11.28L9.69 11.2c-.38-.39-.38-1.01 0-1.4.39-.39 1.02-.39 1.41 0l1.36 1.37 4.42-4.46c.39-.39 1.02-.39 1.41 0 .38.39.38 1.01 0 1.4l-5.13 5.17c-.37.4-1.01.4-1.4 0zM3 6c-.55 0-1 .45-1 1v13c0 1.1.9 2 2 2h13c.55 0 1-.45 1-1s-.45-1-1-1H5c-.55 0-1-.45-1-1V7c0-.55-.45-1-1-1z" /> +</symbol> +</svg>`); // icons for callout (info, success, warning, error) rendered.unshift( `<svg style="display: none;" xmlns="http://www.w3.org/2000/svg"> - <symbol id="info-icon" viewBox="0 0 20 20"> - <path d="M9.996 14c.21 0 .39-.072.535-.216a.72.72 0 0 0 .219-.534v-3.5a.728.728 0 0 0-.214-.534.72.72 0 0 0-.532-.216.734.734 0 0 0-.535.216.72.72 0 0 0-.219.534v3.5c0 .213.071.39.214.534a.72.72 0 0 0 .532.216Zm0-6.5c.21 0 .39-.071.535-.214a.714.714 0 0 0 .219-.532.736.736 0 0 0-.214-.535.714.714 0 0 0-.532-.219.736.736 0 0 0-.535.214.714.714 0 0 0-.219.532c0 .21.071.39.214.535.143.146.32.219.532.219Zm.01 10.5a7.81 7.81 0 0 1-3.11-.625 8.065 8.065 0 0 1-2.552-1.719 8.066 8.066 0 0 1-1.719-2.551A7.818 7.818 0 0 1 2 9.99c0-1.104.208-2.14.625-3.105a8.066 8.066 0 0 1 4.27-4.26A7.818 7.818 0 0 1 10.009 2a7.75 7.75 0 0 1 3.106.625 8.083 8.083 0 0 1 4.26 4.265A7.77 7.77 0 0 1 18 9.994a7.81 7.81 0 0 1-.625 3.11 8.066 8.066 0 0 1-1.719 2.552 8.083 8.083 0 0 1-2.546 1.719 7.77 7.77 0 0 1-3.104.625Z"/> - </symbol> - </svg>`, +<symbol id="info-icon" viewBox="0 0 20 20"> +<path d="M9.996 14c.21 0 .39-.072.535-.216a.72.72 0 0 0 .219-.534v-3.5a.728.728 0 0 0-.214-.534.72.72 0 0 0-.532-.216.734.734 0 0 0-.535.216.72.72 0 0 0-.219.534v3.5c0 .213.071.39.214.534a.72.72 0 0 0 .532.216Zm0-6.5c.21 0 .39-.071.535-.214a.714.714 0 0 0 .219-.532.736.736 0 0 0-.214-.535.714.714 0 0 0-.532-.219.736.736 0 0 0-.535.214.714.714 0 0 0-.219.532c0 .21.071.39.214.535.143.146.32.219.532.219Zm.01 10.5a7.81 7.81 0 0 1-3.11-.625 8.065 8.065 0 0 1-2.552-1.719 8.066 8.066 0 0 1-1.719-2.551A7.818 7.818 0 0 1 2 9.99c0-1.104.208-2.14.625-3.105a8.066 8.066 0 0 1 4.27-4.26A7.818 7.818 0 0 1 10.009 2a7.75 7.75 0 0 1 3.106.625 8.083 8.083 0 0 1 4.26 4.265A7.77 7.77 0 0 1 18 9.994a7.81 7.81 0 0 1-.625 3.11 8.066 8.066 0 0 1-1.719 2.552 8.083 8.083 0 0 1-2.546 1.719 7.77 7.77 0 0 1-3.104.625Z"/> +</symbol> +</svg>`, ); rendered.unshift( `<svg style="display: none;" xmlns="http://www.w3.org/2000/svg"> - <symbol id="success-icon" viewBox="0 0 20 20"> - <path d="m8.938 10.875-1.25-1.23a.718.718 0 0 0-.521-.228.718.718 0 0 0-.521.229.73.73 0 0 0 0 1.062l1.77 1.771c.153.153.327.23.521.23a.718.718 0 0 0 .521-.23l3.896-3.896a.73.73 0 0 0 0-1.062.718.718 0 0 0-.52-.23.718.718 0 0 0-.521.23l-3.376 3.354ZM10 18a7.796 7.796 0 0 1-3.104-.625 8.065 8.065 0 0 1-2.552-1.719 8.064 8.064 0 0 1-1.719-2.552A7.797 7.797 0 0 1 2 10c0-1.111.208-2.15.625-3.115a8.064 8.064 0 0 1 4.27-4.26A7.797 7.797 0 0 1 10 2c1.111 0 2.15.208 3.115.625a8.096 8.096 0 0 1 4.26 4.26C17.792 7.851 18 8.89 18 10a7.797 7.797 0 0 1-.625 3.104 8.066 8.066 0 0 1-4.26 4.271A7.774 7.774 0 0 1 10 18Z"/> - </symbol> - </svg>`, +<symbol id="success-icon" viewBox="0 0 20 20"> +<path d="m8.938 10.875-1.25-1.23a.718.718 0 0 0-.521-.228.718.718 0 0 0-.521.229.73.73 0 0 0 0 1.062l1.77 1.771c.153.153.327.23.521.23a.718.718 0 0 0 .521-.23l3.896-3.896a.73.73 0 0 0 0-1.062.718.718 0 0 0-.52-.23.718.718 0 0 0-.521.23l-3.376 3.354ZM10 18a7.796 7.796 0 0 1-3.104-.625 8.065 8.065 0 0 1-2.552-1.719 8.064 8.064 0 0 1-1.719-2.552A7.797 7.797 0 0 1 2 10c0-1.111.208-2.15.625-3.115a8.064 8.064 0 0 1 4.27-4.26A7.797 7.797 0 0 1 10 2c1.111 0 2.15.208 3.115.625a8.096 8.096 0 0 1 4.26 4.26C17.792 7.851 18 8.89 18 10a7.797 7.797 0 0 1-.625 3.104 8.066 8.066 0 0 1-4.26 4.271A7.774 7.774 0 0 1 10 18Z"/> +</symbol> +</svg>`, ); rendered.unshift( `<svg style="display: none;" xmlns="http://www.w3.org/2000/svg"> - <symbol id="warning-icon" viewBox="0 0 20 20"> - <path d="M2.33 17a.735.735 0 0 1-.665-.375.631.631 0 0 1-.094-.375.898.898 0 0 1 .115-.396L9.353 3.062a.621.621 0 0 1 .281-.27.85.85 0 0 1 .729 0 .622.622 0 0 1 .281.27l7.667 12.792c.07.125.108.257.114.396a.63.63 0 0 1-.093.375.842.842 0 0 1-.271.27.728.728 0 0 1-.394.105H2.33Zm7.664-2.5c.211 0 .39-.072.536-.214a.714.714 0 0 0 .218-.532.736.736 0 0 0-.214-.535.714.714 0 0 0-.531-.22.736.736 0 0 0-.536.215.714.714 0 0 0-.219.531c0 .212.072.39.215.536.143.146.32.219.531.219Zm0-2.5c.211 0 .39-.072.536-.216a.72.72 0 0 0 .218-.534v-2.5a.728.728 0 0 0-.214-.534.72.72 0 0 0-.531-.216.734.734 0 0 0-.536.216.72.72 0 0 0-.219.534v2.5c0 .212.072.39.215.534a.72.72 0 0 0 .531.216Z"/> - </symbol> - </svg>`, +<symbol id="warning-icon" viewBox="0 0 20 20"> +<path d="M2.33 17a.735.735 0 0 1-.665-.375.631.631 0 0 1-.094-.375.898.898 0 0 1 .115-.396L9.353 3.062a.621.621 0 0 1 .281-.27.85.85 0 0 1 .729 0 .622.622 0 0 1 .281.27l7.667 12.792c.07.125.108.257.114.396a.63.63 0 0 1-.093.375.842.842 0 0 1-.271.27.728.728 0 0 1-.394.105H2.33Zm7.664-2.5c.211 0 .39-.072.536-.214a.714.714 0 0 0 .218-.532.736.736 0 0 0-.214-.535.714.714 0 0 0-.531-.22.736.736 0 0 0-.536.215.714.714 0 0 0-.219.531c0 .212.072.39.215.536.143.146.32.219.531.219Zm0-2.5c.211 0 .39-.072.536-.216a.72.72 0 0 0 .218-.534v-2.5a.728.728 0 0 0-.214-.534.72.72 0 0 0-.531-.216.734.734 0 0 0-.536.216.72.72 0 0 0-.219.534v2.5c0 .212.072.39.215.534a.72.72 0 0 0 .531.216Z"/> +</symbol> +</svg>`, ); rendered.unshift( `<svg style="display: none;" xmlns="http://www.w3.org/2000/svg"> - <symbol id="error-icon" viewBox="0 0 20 20"> - <path fill-rule="evenodd" d="M2 7.4v5.2a2 2 0 0 0 .586 1.414l3.4 3.4A2 2 0 0 0 7.4 18h5.2a2 2 0 0 0 1.414-.586l3.4-3.4A2 2 0 0 0 18 12.6V7.4a2 2 0 0 0-.586-1.414l-3.4-3.4A2 2 0 0 0 12.6 2H7.4a2 2 0 0 0-1.414.586l-3.4 3.4A2 2 0 0 0 2 7.4Zm11.03-.43a.75.75 0 0 1 0 1.06L11.06 10l1.97 1.97a.75.75 0 1 1-1.06 1.06L10 11.06l-1.97 1.97a.75.75 0 0 1-1.06-1.06L8.94 10 6.97 8.03a.75.75 0 0 1 1.06-1.06L10 8.94l1.97-1.97a.75.75 0 0 1 1.06 0Z" clip-rule="evenodd"/> - </symbol> - </svg>`, +<symbol id="error-icon" viewBox="0 0 20 20"> +<path fill-rule="evenodd" d="M2 7.4v5.2a2 2 0 0 0 .586 1.414l3.4 3.4A2 2 0 0 0 7.4 18h5.2a2 2 0 0 0 1.414-.586l3.4-3.4A2 2 0 0 0 18 12.6V7.4a2 2 0 0 0-.586-1.414l-3.4-3.4A2 2 0 0 0 12.6 2H7.4a2 2 0 0 0-1.414.586l-3.4 3.4A2 2 0 0 0 2 7.4Zm11.03-.43a.75.75 0 0 1 0 1.06L11.06 10l1.97 1.97a.75.75 0 1 1-1.06 1.06L10 11.06l-1.97 1.97a.75.75 0 0 1-1.06-1.06L8.94 10 6.97 8.03a.75.75 0 0 1 1.06-1.06L10 8.94l1.97-1.97a.75.75 0 0 1 1.06 0Z" clip-rule="evenodd"/> +</symbol> +</svg>`, ); docs[userLanguage] = { description, diff --git a/packages/mui-base/package.json b/packages/mui-base/package.json index ec3aa82edb3f45..5d26fe2ec05920 100644 --- a/packages/mui-base/package.json +++ b/packages/mui-base/package.json @@ -1,6 +1,6 @@ { "name": "@mui/base", - "version": "5.0.0-beta.61", + "version": "5.0.0-beta.64", "private": false, "author": "MUI Team", "description": "Base UI is a library of headless ('unstyled') React components and low-level hooks. You gain complete control over your app's CSS and accessibility features.", diff --git a/packages/mui-base/src/ClickAwayListener/ClickAwayListener.tsx b/packages/mui-base/src/ClickAwayListener/ClickAwayListener.tsx index e84ca9b1382b42..5f8f4da604c046 100644 --- a/packages/mui-base/src/ClickAwayListener/ClickAwayListener.tsx +++ b/packages/mui-base/src/ClickAwayListener/ClickAwayListener.tsx @@ -209,7 +209,7 @@ function ClickAwayListener(props: ClickAwayListenerProps): React.JSX.Element { return undefined; }, [handleClickAway, mouseEvent]); - return <React.Fragment>{React.cloneElement(children, childrenProps)}</React.Fragment>; + return React.cloneElement(children, childrenProps); } ClickAwayListener.propTypes /* remove-proptypes */ = { diff --git a/packages/mui-base/src/NoSsr/NoSsr.tsx b/packages/mui-base/src/NoSsr/NoSsr.tsx index c637df94e70b61..8468d401c64a86 100644 --- a/packages/mui-base/src/NoSsr/NoSsr.tsx +++ b/packages/mui-base/src/NoSsr/NoSsr.tsx @@ -38,8 +38,8 @@ function NoSsr(props: NoSsrProps): React.JSX.Element { } }, [defer]); - // We need the Fragment here to force react-docgen to recognise NoSsr as a component. - return <React.Fragment>{mountedState ? children : fallback}</React.Fragment>; + // TODO casting won't be needed at one point https://github.com/DefinitelyTyped/DefinitelyTyped/pull/65135 + return (mountedState ? children : fallback) as React.JSX.Element; } NoSsr.propTypes /* remove-proptypes */ = { diff --git a/packages/mui-base/src/Portal/Portal.tsx b/packages/mui-base/src/Portal/Portal.tsx index 830b229d8eb175..af607b51532adc 100644 --- a/packages/mui-base/src/Portal/Portal.tsx +++ b/packages/mui-base/src/Portal/Portal.tsx @@ -64,14 +64,10 @@ const Portal = React.forwardRef(function Portal( }; return React.cloneElement(children, newProps); } - return <React.Fragment>{children}</React.Fragment>; + return children; } - return ( - <React.Fragment> - {mountNode ? ReactDOM.createPortal(children, mountNode) : mountNode} - </React.Fragment> - ); + return mountNode ? ReactDOM.createPortal(children, mountNode) : mountNode; }) as React.ForwardRefExoticComponent<PortalProps & React.RefAttributes<Element>>; Portal.propTypes /* remove-proptypes */ = { diff --git a/packages/mui-base/src/Select/Select.tsx b/packages/mui-base/src/Select/Select.tsx index 6d1828324bf65f..5f99b7b47022c0 100644 --- a/packages/mui-base/src/Select/Select.tsx +++ b/packages/mui-base/src/Select/Select.tsx @@ -216,7 +216,9 @@ const Select = React.forwardRef(function Select< {renderValue(selectedOptionsMetadata) ?? placeholder ?? ( // fall back to a zero-width space to prevent layout shift // from https://github.com/mui/material-ui/pull/24563 - <span className="notranslate">​</span> + <span className="notranslate" aria-hidden> + ​ + </span> )} </Button> {buttonDefined && ( diff --git a/packages/mui-codemod/README.md b/packages/mui-codemod/README.md index 77c2dd3f137d77..5e8ea82cd475f6 100644 --- a/packages/mui-codemod/README.md +++ b/packages/mui-codemod/README.md @@ -275,12 +275,14 @@ npx @mui/codemod@latest deprecations/alert-props <path> - }} + slots={{ + paper: CustomPaper, -+ popper: CustomPopper, -+ listbox: CustomListbox, ++ popper: CustomPopper + }} + slotProps={{ + chip: { height: 10 }, -+ listbox: { height: 12 }, ++ listbox: { ++ component: CustomListbox, ++ ...{ height: 12 }, ++ }, + clearIndicator: { width: 10 }, + paper: { width: 12 }, + popper: { width: 14 }, @@ -306,11 +308,13 @@ npx @mui/codemod@latest deprecations/alert-props <path> + slots: { + paper: CustomPaper, + popper: CustomPopper, -+ listbox: CustomListbox, + }, + slotProps: { + chip: { height: 10 }, -+ listbox: { height: 12 }, ++ listbox: { ++ component: CustomListbox, ++ ...{ height: 12 }, ++ }, + clearIndicator: { width: 10 }, + paper: { width: 12 }, + popper: { width: 14 }, @@ -1408,19 +1412,43 @@ npx @mui/codemod@latest deprecations/slider-props <path> <Tooltip - components={{ Arrow: CustomArrow }} - componentsProps={{ arrow: { testid: 'test-id' } }} -+ slots={{ arrow: CustomArrow }} -+ slotProps={{ arrow: { testid: 'test-id' } }} +- PopperComponent={CustomPopperComponent} +- TransitionComponent={CustomTransitionComponent} +- PopperProps={CustomPopperProps} +- TransitionProps={CustomTransitionProps} ++ slots={{ ++ arrow: CustomArrow, ++ popper: CustomPopperComponent, ++ transition: CustomTransitionComponent, ++ }} ++ slotProps={{ ++ arrow: { testid: 'test-id' }, ++ popper: CustomPopperProps, ++ transition: CustomTransitionProps, ++ }} /> ``` ```diff MuiTooltip: { defaultProps: { +- PopperComponent: CustomPopperComponent, +- TransitionComponent: CustomTransitionComponent, +- PopperProps: CustomPopperProps, +- TransitionProps: CustomTransitionProps, - components: { Arrow: CustomArrow } -+ slots: { arrow: CustomArrow }, ++ slots: { ++ arrow: CustomArrow, ++ popper: CustomPopperComponent, ++ transition: CustomTransitionComponent, ++ }, - componentsProps: { arrow: { testid: 'test-id' }} -+ slotProps: { arrow: { testid: 'test-id' } }, - }, ++ slotProps: { ++ arrow: { testid: 'test-id' }, ++ popper: CustomPopperProps, ++ transition: CustomTransitionProps, ++ }, + }, }, ``` @@ -1451,6 +1479,10 @@ JS transforms: }, ``` +```bash +npx @mui/codemod@next deprecations/step-connector-classes <path> +``` + #### `step-label-props` ```diff @@ -1637,6 +1669,13 @@ npx @mui/codemod@latest deprecations/table-sort-label-classes <path> /> ``` +```diff + <Typography +- paragraph={isTypographyParagraph} ++ sx={isTypographyParagraph ? { marginBottom: '16px' } : undefined} + /> +``` + ```diff MuiTypography: { defaultProps: { diff --git a/packages/mui-codemod/package.json b/packages/mui-codemod/package.json index 46dd475e80ee89..ac2870093ccb27 100644 --- a/packages/mui-codemod/package.json +++ b/packages/mui-codemod/package.json @@ -1,6 +1,6 @@ { "name": "@mui/codemod", - "version": "6.1.6", + "version": "6.1.9", "bin": "./codemod.js", "private": false, "author": "MUI Team", @@ -35,7 +35,7 @@ "@babel/traverse": "^7.25.9", "jscodeshift": "^17.1.1", "jscodeshift-add-imports": "^1.0.11", - "postcss": "^8.4.47", + "postcss": "^8.4.49", "postcss-cli": "^11.0.0", "yargs": "^17.7.2" }, diff --git a/packages/mui-codemod/src/deprecations/all/deprecations-all.js b/packages/mui-codemod/src/deprecations/all/deprecations-all.js index c1dd70ef2392c4..1dcd1d225d378e 100644 --- a/packages/mui-codemod/src/deprecations/all/deprecations-all.js +++ b/packages/mui-codemod/src/deprecations/all/deprecations-all.js @@ -1,7 +1,9 @@ import transformAccordionClasses from '../accordion-summary-classes'; +import transformAccordionProps from '../accordion-props'; import transformAlertClasses from '../alert-classes'; import transformAvatarGroupProps from '../avatar-group-props'; import transformAutocompleteProps from '../autocomplete-props'; +import transformAvatarProps from '../avatar-props'; import transformBackdropProps from '../backdrop-props'; import transformButtonClasses from '../button-classes'; import transformButtonGroupClasses from '../button-group-classes'; @@ -16,12 +18,14 @@ import transformInputProps from '../input-props'; import transformModalProps from '../modal-props'; import transformOutlinedInputProps from '../outlined-input-props'; import transformPaginationItemClasses from '../pagination-item-classes'; +import transformSpeedDialProps from '../speed-dial-props'; import transformTableSortLabelClasses from '../table-sort-label-classes'; import transformStepConnectorClasses from '../step-connector-classes'; import transformStepLabelProps from '../step-label-props'; import transformTextFieldProps from '../text-field-props'; import transformTabClasses from '../tab-classes'; import transformToggleButtonGroupClasses from '../toggle-button-group-classes'; +import transformTooltipProps from '../tooltip-props'; /** * @param {import('jscodeshift').FileInfo} file @@ -29,9 +33,11 @@ import transformToggleButtonGroupClasses from '../toggle-button-group-classes'; */ export default function deprecationsAll(file, api, options) { file.source = transformAccordionClasses(file, api, options); + file.source = transformAccordionProps(file, api, options); file.source = transformAlertClasses(file, api, options); file.source = transformAvatarGroupProps(file, api, options); file.source = transformAutocompleteProps(file, api, options); + file.source = transformAvatarProps(file, api, options); file.source = transformBackdropProps(file, api, options); file.source = transformButtonClasses(file, api, options); file.source = transformButtonGroupClasses(file, api, options); @@ -46,12 +52,14 @@ export default function deprecationsAll(file, api, options) { file.source = transformModalProps(file, api, options); file.source = transformOutlinedInputProps(file, api, options); file.source = transformPaginationItemClasses(file, api, options); + file.source = transformSpeedDialProps(file, api, options); file.source = transformStepConnectorClasses(file, api, options); file.source = transformStepLabelProps(file, api, options); file.source = transformTableSortLabelClasses(file, api, options); file.source = transformTextFieldProps(file, api, options); file.source = transformTabClasses(file, api, options); file.source = transformToggleButtonGroupClasses(file, api, options); + file.source = transformTooltipProps(file, api, options); return file.source; } diff --git a/packages/mui-codemod/src/deprecations/autocomplete-props/autocomplete-props.js b/packages/mui-codemod/src/deprecations/autocomplete-props/autocomplete-props.js index 540bc4fa306a9e..6c43fb44c03306 100644 --- a/packages/mui-codemod/src/deprecations/autocomplete-props/autocomplete-props.js +++ b/packages/mui-codemod/src/deprecations/autocomplete-props/autocomplete-props.js @@ -1,4 +1,10 @@ +import movePropIntoSlots from '../utils/movePropIntoSlots'; +import movePropIntoSlotProps from '../utils/movePropIntoSlotProps'; import replaceComponentsWithSlots from '../utils/replaceComponentsWithSlots'; +import findComponentJSX from '../../util/findComponentJSX'; +import findComponentDefaultProps from '../../util/findComponentDefaultProps'; +import assignObject from '../../util/assignObject'; +import appendAttribute from '../../util/appendAttribute'; /** * @param {import('jscodeshift').FileInfo} file @@ -9,7 +15,146 @@ export default function transformer(file, api, options) { const root = j(file.source); const printOptions = options.printOptions; + movePropIntoSlots(j, { + root, + componentName: 'Autocomplete', + propName: 'PaperComponent', + slotName: 'paper', + }); + + movePropIntoSlots(j, { + root, + componentName: 'Autocomplete', + propName: 'PopperComponent', + slotName: 'popper', + }); + + movePropIntoSlotProps(j, { + root, + componentName: 'Autocomplete', + propName: 'ListboxProps', + slotName: 'listbox', + }); + + movePropIntoSlotProps(j, { + root, + componentName: 'Autocomplete', + propName: 'ChipProps', + slotName: 'chip', + }); + replaceComponentsWithSlots(j, { root, componentName: 'Autocomplete' }); + // Move ListboxComponent JSX prop into slotProps.listbox.component + findComponentJSX(j, { root, componentName: 'Autocomplete' }, (elementPath) => { + const element = elementPath.node; + const propIndex = element.openingElement.attributes.findIndex( + (attr) => attr.type === 'JSXAttribute' && attr.name.name === 'ListboxComponent', + ); + + if (propIndex !== -1) { + const removedValue = element.openingElement.attributes.splice(propIndex, 1)[0].value + .expression; + let hasSlotProps = false; + element.openingElement.attributes.forEach((attr) => { + if (attr.name?.name === 'slotProps') { + hasSlotProps = true; + const slots = attr.value.expression; + const slotIndex = slots.properties.findIndex((prop) => prop?.key?.name === 'listbox'); + if (slotIndex === -1) { + assignObject(j, { + target: attr, + key: 'listbox', + expression: j.objectExpression([ + j.objectProperty(j.identifier('component'), removedValue), + ]), + }); + } else { + const slotPropsSlotValue = slots.properties.splice(slotIndex, 1)[0].value; + assignObject(j, { + target: attr, + key: 'listbox', + expression: j.objectExpression([ + j.objectProperty(j.identifier('component'), removedValue), + j.spreadElement(slotPropsSlotValue), + ]), + }); + } + } + }); + + if (!hasSlotProps) { + appendAttribute(j, { + target: element, + attributeName: 'slotProps', + expression: j.objectExpression([ + j.objectProperty( + j.identifier('listbox'), + j.objectExpression([j.objectProperty(j.identifier('component'), removedValue)]), + ), + ]), + }); + } + } + }); + + // Move ListboxComponent default prop into slotProps.listbox.component + const defaultPropsPathCollection = findComponentDefaultProps(j, { + root, + componentName: 'Autocomplete', + }); + + defaultPropsPathCollection + .find(j.ObjectProperty, { key: { name: 'ListboxComponent' } }) + .forEach((path) => { + const removedValue = path.value.value; + const defaultProps = path.parent.value; + + let hasSlotProps = false; + defaultProps.properties.forEach((property) => { + if (property.key?.name === 'slotProps') { + hasSlotProps = true; + const slotIndex = property.value.properties.findIndex( + (prop) => prop?.key?.name === 'listbox', + ); + if (slotIndex === -1) { + property.value.properties.push( + j.objectProperty( + j.identifier('listbox'), + j.objectExpression([j.objectProperty(j.identifier('component'), removedValue)]), + ), + ); + } else { + const slotPropsSlotValue = property.value.properties.splice(slotIndex, 1)[0].value; + property.value.properties.push( + j.objectProperty( + j.identifier('listbox'), + j.objectExpression([ + j.objectProperty(j.identifier('component'), removedValue), + j.spreadElement(slotPropsSlotValue), + ]), + ), + ); + } + } + }); + + if (!hasSlotProps) { + defaultProps.properties.push( + j.objectProperty( + j.identifier('slotProps'), + j.objectExpression([ + j.objectProperty( + j.identifier('listbox'), + j.objectExpression([j.objectProperty(j.identifier('component'), removedValue)]), + ), + ]), + ), + ); + } + + path.prune(); + }); + return root.toSource(printOptions); } diff --git a/packages/mui-codemod/src/deprecations/autocomplete-props/test-cases/actual.js b/packages/mui-codemod/src/deprecations/autocomplete-props/test-cases/actual.js index 91256850d51b37..76a939df4f9629 100644 --- a/packages/mui-codemod/src/deprecations/autocomplete-props/test-cases/actual.js +++ b/packages/mui-codemod/src/deprecations/autocomplete-props/test-cases/actual.js @@ -2,6 +2,11 @@ import Autocomplete from '@mui/material/Autocomplete'; import {Autocomplete as MyAutocomplete} from '@mui/material'; <Autocomplete + ChipProps={{ height: 10 }} + PaperComponent={CustomPaper} + PopperComponent={CustomPopper} + ListboxComponent={CustomListbox} + ListboxProps={{ height: 12 }} componentsProps={{ clearIndicator: { width: 10 }, paper: { width: 12 }, @@ -11,6 +16,11 @@ import {Autocomplete as MyAutocomplete} from '@mui/material'; />; <Autocomplete + ChipProps={{ height: 10 }} + PaperComponent={CustomPaper} + PopperComponent={CustomPopper} + ListboxComponent={CustomListbox} + ListboxProps={{ height: 12 }} slotProps={{ popupIndicator: { width: 20 } }} @@ -23,6 +33,11 @@ import {Autocomplete as MyAutocomplete} from '@mui/material'; />; <MyAutocomplete + ChipProps={{ height: 10 }} + PaperComponent={CustomPaper} + PopperComponent={CustomPopper} + ListboxComponent={CustomListbox} + ListboxProps={{ height: 12 }} componentsProps={{ clearIndicator: { width: 10 }, paper: { width: 12 }, @@ -38,4 +53,12 @@ import {Autocomplete as MyAutocomplete} from '@mui/material'; popper: { width: 14 }, popupIndicator: { width: 16 }, }} +/>; + +<CustomAutocomplete + ChipProps={{ height: 10 }} + PaperComponent={CustomPaper} + PopperComponent={CustomPopper} + ListboxComponent={CustomListbox} + ListboxProps={{ height: 12 }} /> diff --git a/packages/mui-codemod/src/deprecations/autocomplete-props/test-cases/expected.js b/packages/mui-codemod/src/deprecations/autocomplete-props/test-cases/expected.js index ca1cc8744cb73a..f18d47190402d5 100644 --- a/packages/mui-codemod/src/deprecations/autocomplete-props/test-cases/expected.js +++ b/packages/mui-codemod/src/deprecations/autocomplete-props/test-cases/expected.js @@ -2,16 +2,26 @@ import Autocomplete from '@mui/material/Autocomplete'; import {Autocomplete as MyAutocomplete} from '@mui/material'; <Autocomplete + slots={{ + paper: CustomPaper, + popper: CustomPopper + }} slotProps={{ + chip: { height: 10 }, clearIndicator: { width: 10 }, paper: { width: 12 }, popper: { width: 14 }, popupIndicator: { width: 16 }, - }} -/>; + + listbox: { + component: CustomListbox, + ...{ height: 12 } + } + }} />; <Autocomplete slotProps={{ + chip: { height: 10 }, clearIndicator: { width: 10 }, paper: { width: 12 }, popper: { width: 14 }, @@ -19,17 +29,35 @@ import {Autocomplete as MyAutocomplete} from '@mui/material'; popupIndicator: { ...{ width: 16 }, ...{ width: 20 } + }, + + listbox: { + component: CustomListbox, + ...{ height: 12 } } + }} + slots={{ + paper: CustomPaper, + popper: CustomPopper }} />; <MyAutocomplete + slots={{ + paper: CustomPaper, + popper: CustomPopper + }} slotProps={{ + chip: { height: 10 }, clearIndicator: { width: 10 }, paper: { width: 12 }, popper: { width: 14 }, popupIndicator: { width: 16 }, - }} -/>; + + listbox: { + component: CustomListbox, + ...{ height: 12 } + } + }} />; <CustomAutocomplete componentsProps={{ @@ -38,4 +66,12 @@ import {Autocomplete as MyAutocomplete} from '@mui/material'; popper: { width: 14 }, popupIndicator: { width: 16 }, }} +/>; + +<CustomAutocomplete + ChipProps={{ height: 10 }} + PaperComponent={CustomPaper} + PopperComponent={CustomPopper} + ListboxComponent={CustomListbox} + ListboxProps={{ height: 12 }} /> diff --git a/packages/mui-codemod/src/deprecations/autocomplete-props/test-cases/theme.actual.js b/packages/mui-codemod/src/deprecations/autocomplete-props/test-cases/theme.actual.js index b2a362ab99a596..5b144b5440188b 100644 --- a/packages/mui-codemod/src/deprecations/autocomplete-props/test-cases/theme.actual.js +++ b/packages/mui-codemod/src/deprecations/autocomplete-props/test-cases/theme.actual.js @@ -1,6 +1,11 @@ fn({ MuiAutocomplete: { defaultProps: { + ChipProps: { height: 10 }, + PaperComponent: CustomPaper, + PopperComponent: CustomPopper, + ListboxComponent: CustomListbox, + ListboxProps: { height: 12 }, componentsProps: { clearIndicator: { width: 10 }, paper: { width: 12 }, @@ -14,6 +19,11 @@ fn({ fn({ MuiAutocomplete: { defaultProps: { + ChipProps: { height: 10 }, + PaperComponent: CustomPaper, + PopperComponent: CustomPopper, + ListboxComponent: CustomListbox, + ListboxProps: { height: 12 }, slotProps: { popupIndicator: { width: 20 } }, diff --git a/packages/mui-codemod/src/deprecations/autocomplete-props/test-cases/theme.expected.js b/packages/mui-codemod/src/deprecations/autocomplete-props/test-cases/theme.expected.js index 06c6da749b8bf6..93e6dcda392428 100644 --- a/packages/mui-codemod/src/deprecations/autocomplete-props/test-cases/theme.expected.js +++ b/packages/mui-codemod/src/deprecations/autocomplete-props/test-cases/theme.expected.js @@ -1,11 +1,22 @@ fn({ MuiAutocomplete: { defaultProps: { + slots: { + paper: CustomPaper, + popper: CustomPopper + }, + slotProps: { clearIndicator: { width: 10 }, paper: { width: 12 }, popper: { width: 14 }, - popupIndicator: { width: 16 } + popupIndicator: { width: 16 }, + chip: { height: 10 }, + + listbox: { + component: CustomListbox, + ...{ height: 12 } + } } }, }, @@ -22,7 +33,19 @@ fn({ popupIndicator: { ...{ width: 16 }, ...{ width: 20 } + }, + + chip: { height: 10 }, + + listbox: { + component: CustomListbox, + ...{ height: 12 } } + }, + + slots: { + paper: CustomPaper, + popper: CustomPopper } }, }, diff --git a/packages/mui-codemod/src/deprecations/backdrop-props/backdrop-props.js b/packages/mui-codemod/src/deprecations/backdrop-props/backdrop-props.js index 1654904706db6b..0d831486177b84 100644 --- a/packages/mui-codemod/src/deprecations/backdrop-props/backdrop-props.js +++ b/packages/mui-codemod/src/deprecations/backdrop-props/backdrop-props.js @@ -1,3 +1,4 @@ +import movePropIntoSlots from '../utils/movePropIntoSlots'; import replaceComponentsWithSlots from '../utils/replaceComponentsWithSlots'; /** @@ -11,5 +12,12 @@ export default function transformer(file, api, options) { replaceComponentsWithSlots(j, { root, componentName: 'Backdrop' }); + movePropIntoSlots(j, { + root, + componentName: 'Backdrop', + propName: 'TransitionComponent', + slotName: 'transition', + }); + return root.toSource(printOptions); } diff --git a/packages/mui-codemod/src/deprecations/backdrop-props/test-cases/actual.js b/packages/mui-codemod/src/deprecations/backdrop-props/test-cases/actual.js index 3107ff6d22d408..f2df3ef6a74e10 100644 --- a/packages/mui-codemod/src/deprecations/backdrop-props/test-cases/actual.js +++ b/packages/mui-codemod/src/deprecations/backdrop-props/test-cases/actual.js @@ -1,6 +1,31 @@ import Backdrop from '@mui/material/Backdrop'; import { Backdrop as MyBackdrop } from '@mui/material'; +<Backdrop TransitionComponent={CustomTransition} />; +<MyBackdrop TransitionComponent={CustomTransition} />; +<Backdrop + TransitionComponent={CustomTransition} + slots={{ + root: 'div', + }} +/>; +<MyBackdrop + TransitionComponent={CustomTransition} + slots={{ + ...outerSlots, + }} +/>; +<Backdrop + TransitionComponent={ComponentTransition} + slots={{ + root: 'div', + transition: SlotTransition, + }} +/>; + +// should skip non MUI components +<NonMuiBackdrop TransitionComponent={CustomTransition} />; + <Backdrop components={{ Root: ComponentsRoot }} componentsProps={{ root: componentsRootProps }} />; <MyBackdrop components={{ Root: ComponentsRoot }} slotProps={{ root: slotsRootProps }} />; <Backdrop slots={{ root: SlotsRoot }} componentsProps={{ root: componentsRootProps }} />; diff --git a/packages/mui-codemod/src/deprecations/backdrop-props/test-cases/expected.js b/packages/mui-codemod/src/deprecations/backdrop-props/test-cases/expected.js index e1a26591a40b7f..a81133b9babe6d 100644 --- a/packages/mui-codemod/src/deprecations/backdrop-props/test-cases/expected.js +++ b/packages/mui-codemod/src/deprecations/backdrop-props/test-cases/expected.js @@ -1,6 +1,31 @@ import Backdrop from '@mui/material/Backdrop'; import { Backdrop as MyBackdrop } from '@mui/material'; +<Backdrop slots={{ + transition: CustomTransition +}} />; +<MyBackdrop slots={{ + transition: CustomTransition +}} />; +<Backdrop + slots={{ + root: 'div', + transition: CustomTransition + }} />; +<MyBackdrop + slots={{ + ...outerSlots, + transition: CustomTransition + }} />; +<Backdrop + slots={{ + root: 'div', + transition: SlotTransition, + }} />; + +// should skip non MUI components +<NonMuiBackdrop TransitionComponent={CustomTransition} />; + <Backdrop slots={{ root: ComponentsRoot }} slotProps={{ root: componentsRootProps }} />; diff --git a/packages/mui-codemod/src/deprecations/backdrop-props/test-cases/theme.actual.js b/packages/mui-codemod/src/deprecations/backdrop-props/test-cases/theme.actual.js index 47551ec725be36..bfb2da0b7c4393 100644 --- a/packages/mui-codemod/src/deprecations/backdrop-props/test-cases/theme.actual.js +++ b/packages/mui-codemod/src/deprecations/backdrop-props/test-cases/theme.actual.js @@ -1,3 +1,34 @@ +fn({ + MuiBackdrop: { + defaultProps: { + TransitionComponent: CustomTransition, + }, + }, +}); + +fn({ + MuiBackdrop: { + defaultProps: { + TransitionComponent: CustomTransition, + slots: { + root: 'div', + }, + }, + }, +}); + +fn({ + MuiBackdrop: { + defaultProps: { + TransitionComponent: ComponentTransition, + slots: { + root: 'div', + transition: SlotTransition + }, + }, + }, +}); + fn({ MuiBackdrop: { defaultProps: { diff --git a/packages/mui-codemod/src/deprecations/backdrop-props/test-cases/theme.expected.js b/packages/mui-codemod/src/deprecations/backdrop-props/test-cases/theme.expected.js index ddb91a2cde9ee6..fb75b1ec670c19 100644 --- a/packages/mui-codemod/src/deprecations/backdrop-props/test-cases/theme.expected.js +++ b/packages/mui-codemod/src/deprecations/backdrop-props/test-cases/theme.expected.js @@ -1,3 +1,35 @@ +fn({ + MuiBackdrop: { + defaultProps: { + slots: { + transition: CustomTransition + } + }, + }, +}); + +fn({ + MuiBackdrop: { + defaultProps: { + slots: { + root: 'div', + transition: CustomTransition + } + }, + }, +}); + +fn({ + MuiBackdrop: { + defaultProps: { + slots: { + root: 'div', + transition: SlotTransition + } + }, + }, +}); + fn({ MuiBackdrop: { defaultProps: { diff --git a/packages/mui-codemod/src/deprecations/step-label-props/step-label-props.js b/packages/mui-codemod/src/deprecations/step-label-props/step-label-props.js index d71fbba3a84810..b2fec09fa3b826 100644 --- a/packages/mui-codemod/src/deprecations/step-label-props/step-label-props.js +++ b/packages/mui-codemod/src/deprecations/step-label-props/step-label-props.js @@ -1,4 +1,6 @@ import replaceComponentsWithSlots from '../utils/replaceComponentsWithSlots'; +import movePropIntoSlots from '../utils/movePropIntoSlots'; +import movePropIntoSlotProps from '../utils/movePropIntoSlotProps'; /** * @param {import('jscodeshift').FileInfo} file @@ -11,5 +13,19 @@ export default function transformer(file, api, options) { replaceComponentsWithSlots(j, { root, componentName: 'StepLabel' }); + movePropIntoSlots(j, { + root, + componentName: 'StepLabel', + propName: 'StepIconComponent', + slotName: 'stepIcon', + }); + + movePropIntoSlotProps(j, { + root, + componentName: 'StepLabel', + propName: 'StepIconProps', + slotName: 'stepIcon', + }); + return root.toSource(printOptions); } diff --git a/packages/mui-codemod/src/deprecations/step-label-props/test-cases/actual.js b/packages/mui-codemod/src/deprecations/step-label-props/test-cases/actual.js index 9caf4e5a411080..20a1428f7b1598 100644 --- a/packages/mui-codemod/src/deprecations/step-label-props/test-cases/actual.js +++ b/packages/mui-codemod/src/deprecations/step-label-props/test-cases/actual.js @@ -6,3 +6,15 @@ import StepLabel from '@mui/material/StepLabel'; slotProps={{ label: slotLabelProps }} componentsProps={{ label: componentsLabelProps }} />; +<StepLabel componentsProps={{ label: componentsLabelProps }} StepIconProps={StepIconProps} />; +<StepLabel + slots={{ label: SlotsLabel }} + slotProps={{ label: slotLabelProps }} + componentsProps={{ label: componentsLabelProps }} + StepIconComponent={StepIconComponent} + StepIconProps={StepIconProps} +/>; +<StepLabel + StepIconComponent={StepIconComponent} + StepIconProps={StepIconProps} +/>; diff --git a/packages/mui-codemod/src/deprecations/step-label-props/test-cases/expected.js b/packages/mui-codemod/src/deprecations/step-label-props/test-cases/expected.js index b26c217086b36d..3dfec474599baf 100644 --- a/packages/mui-codemod/src/deprecations/step-label-props/test-cases/expected.js +++ b/packages/mui-codemod/src/deprecations/step-label-props/test-cases/expected.js @@ -7,3 +7,29 @@ import StepLabel from '@mui/material/StepLabel'; ...componentsLabelProps, ...slotLabelProps } }} />; +<StepLabel + slotProps={{ + label: componentsLabelProps, + stepIcon: StepIconProps + }} />; +<StepLabel + slots={{ + label: SlotsLabel, + stepIcon: StepIconComponent + }} + slotProps={{ + label: { + ...componentsLabelProps, + ...slotLabelProps + }, + + stepIcon: StepIconProps + }} />; +<StepLabel + slots={{ + stepIcon: StepIconComponent + }} + slotProps={{ + stepIcon: StepIconProps + }} +/>; diff --git a/packages/mui-codemod/src/deprecations/step-label-props/test-cases/theme.actual.js b/packages/mui-codemod/src/deprecations/step-label-props/test-cases/theme.actual.js index 4f68c1fe687871..68624f70881f49 100644 --- a/packages/mui-codemod/src/deprecations/step-label-props/test-cases/theme.actual.js +++ b/packages/mui-codemod/src/deprecations/step-label-props/test-cases/theme.actual.js @@ -14,3 +14,23 @@ fn({ }, }, }); + +fn({ + MuiStepLabel: { + defaultProps: { + StepIconComponent: StepIconComponent, + StepIconProps: StepIconProps, + }, + }, +}); + +fn({ + MuiStepLabel: { + defaultProps: { + componentsProps: { label: componentsLabelProps }, + slotProps: { label: slotLabelProps }, + StepIconComponent: StepIconComponent, + StepIconProps: StepIconProps, + }, + }, +}); diff --git a/packages/mui-codemod/src/deprecations/step-label-props/test-cases/theme.expected.js b/packages/mui-codemod/src/deprecations/step-label-props/test-cases/theme.expected.js index c8874c72137cab..3919652d47b97d 100644 --- a/packages/mui-codemod/src/deprecations/step-label-props/test-cases/theme.expected.js +++ b/packages/mui-codemod/src/deprecations/step-label-props/test-cases/theme.expected.js @@ -20,3 +20,36 @@ fn({ }, }, }); + +fn({ + MuiStepLabel: { + defaultProps: { + slots: { + stepIcon: StepIconComponent + }, + + slotProps: { + stepIcon: StepIconProps + } + }, + }, +}); + +fn({ + MuiStepLabel: { + defaultProps: { + slotProps: { + label: { + ...componentsLabelProps, + ...slotLabelProps + }, + + stepIcon: StepIconProps + }, + + slots: { + stepIcon: StepIconComponent + } + }, + }, +}); diff --git a/packages/mui-codemod/src/deprecations/tooltip-props/test-cases/actual.js b/packages/mui-codemod/src/deprecations/tooltip-props/test-cases/actual.js index a02495c65013ca..94c937c0584b78 100644 --- a/packages/mui-codemod/src/deprecations/tooltip-props/test-cases/actual.js +++ b/packages/mui-codemod/src/deprecations/tooltip-props/test-cases/actual.js @@ -1,4 +1,5 @@ import Tooltip from '@mui/material/Tooltip'; +import { Tooltip as MyTooltip } from '@mui/material'; <Tooltip components={{ @@ -58,3 +59,37 @@ import Tooltip from '@mui/material/Tooltip'; transition: componentsTransitionProps }} />; + +<Tooltip + PopperComponent={CustomPopper} + TransitionComponent={CustomTransition} + PopperProps={{ disablePortal: true }} + TransitionProps={{ timeout: 200 }} +/>; + +<Tooltip + PopperComponent={CustomPopper} + TransitionComponent={CustomTransition} + PopperProps={{ disablePortal: true }} + TransitionProps={{ timeout: 200 }} + slotProps={{ + tooltip: { height: 20 } + }} + slots={{ + tooltip: "div", + }} +/>; + +<MyTooltip + PopperComponent={CustomPopper} + TransitionComponent={CustomTransition} + PopperProps={{ disablePortal: true }} + TransitionProps={{ timeout: 200 }} +/>; + +<CustomTooltip + PopperComponent={CustomPopper} + TransitionComponent={CustomTransition} + PopperProps={{ disablePortal: true }} + TransitionProps={{ timeout: 200 }} +/> diff --git a/packages/mui-codemod/src/deprecations/tooltip-props/test-cases/expected.js b/packages/mui-codemod/src/deprecations/tooltip-props/test-cases/expected.js index a6e62ef6c7d73f..eba838e727c3f2 100644 --- a/packages/mui-codemod/src/deprecations/tooltip-props/test-cases/expected.js +++ b/packages/mui-codemod/src/deprecations/tooltip-props/test-cases/expected.js @@ -1,4 +1,5 @@ import Tooltip from '@mui/material/Tooltip'; +import { Tooltip as MyTooltip } from '@mui/material'; <Tooltip slots={{ @@ -63,3 +64,42 @@ import Tooltip from '@mui/material/Tooltip'; ...slotsTransitionProps } }} />; + +<Tooltip + slots={{ + popper: CustomPopper, + transition: CustomTransition + }} + slotProps={{ + popper: { disablePortal: true }, + transition: { timeout: 200 } + }} />; + +<Tooltip + slotProps={{ + tooltip: { height: 20 }, + popper: { disablePortal: true }, + transition: { timeout: 200 } + }} + slots={{ + tooltip: "div", + popper: CustomPopper, + transition: CustomTransition + }} />; + +<MyTooltip + slots={{ + popper: CustomPopper, + transition: CustomTransition + }} + slotProps={{ + popper: { disablePortal: true }, + transition: { timeout: 200 } + }} />; + +<CustomTooltip + PopperComponent={CustomPopper} + TransitionComponent={CustomTransition} + PopperProps={{ disablePortal: true }} + TransitionProps={{ timeout: 200 }} +/> diff --git a/packages/mui-codemod/src/deprecations/tooltip-props/test-cases/theme.actual.js b/packages/mui-codemod/src/deprecations/tooltip-props/test-cases/theme.actual.js index d6933e8bc29102..6fd591c423774d 100644 --- a/packages/mui-codemod/src/deprecations/tooltip-props/test-cases/theme.actual.js +++ b/packages/mui-codemod/src/deprecations/tooltip-props/test-cases/theme.actual.js @@ -39,3 +39,30 @@ fn({ }, }, }); +fn({ + MuiTooltip: { + defaultProps: { + PopperComponent: CustomPopper, + TransitionComponent: CustomTransition, + PopperProps: { disablePortal: true }, + TransitionProps: { timeout: 200 }, + }, + }, +}); + +fn({ + MuiTooltip: { + defaultProps: { + PopperComponent: CustomPopper, + TransitionComponent: CustomTransition, + PopperProps: { disablePortal: true }, + TransitionProps: { timeout: 200 }, + slotProps: { + tooltip: { height: 20 } + }, + slots: { + tooltip: "div", + }, + }, + }, +}); diff --git a/packages/mui-codemod/src/deprecations/tooltip-props/test-cases/theme.expected.js b/packages/mui-codemod/src/deprecations/tooltip-props/test-cases/theme.expected.js index ad6b795e2c4d53..8d077ba5aa033d 100644 --- a/packages/mui-codemod/src/deprecations/tooltip-props/test-cases/theme.expected.js +++ b/packages/mui-codemod/src/deprecations/tooltip-props/test-cases/theme.expected.js @@ -70,3 +70,36 @@ fn({ }, }, }); +fn({ + MuiTooltip: { + defaultProps: { + slots: { + popper: CustomPopper, + transition: CustomTransition + }, + + slotProps: { + popper: { disablePortal: true }, + transition: { timeout: 200 } + } + }, + }, +}); + +fn({ + MuiTooltip: { + defaultProps: { + slotProps: { + tooltip: { height: 20 }, + popper: { disablePortal: true }, + transition: { timeout: 200 } + }, + + slots: { + tooltip: "div", + popper: CustomPopper, + transition: CustomTransition + } + }, + }, +}); diff --git a/packages/mui-codemod/src/deprecations/tooltip-props/tooltip-props.js b/packages/mui-codemod/src/deprecations/tooltip-props/tooltip-props.js index feb7e35348d69b..fc9af0dcd84939 100644 --- a/packages/mui-codemod/src/deprecations/tooltip-props/tooltip-props.js +++ b/packages/mui-codemod/src/deprecations/tooltip-props/tooltip-props.js @@ -1,4 +1,6 @@ import replaceComponentsWithSlots from '../utils/replaceComponentsWithSlots'; +import movePropIntoSlots from '../utils/movePropIntoSlots'; +import movePropIntoSlotProps from '../utils/movePropIntoSlotProps'; /** * @param {import('jscodeshift').FileInfo} file @@ -11,5 +13,33 @@ export default function transformer(file, api, options) { replaceComponentsWithSlots(j, { root, componentName: 'Tooltip' }); + movePropIntoSlots(j, { + root, + componentName: 'Tooltip', + propName: 'PopperComponent', + slotName: 'popper', + }); + + movePropIntoSlotProps(j, { + root, + componentName: 'Tooltip', + propName: 'PopperProps', + slotName: 'popper', + }); + + movePropIntoSlots(j, { + root, + componentName: 'Tooltip', + propName: 'TransitionComponent', + slotName: 'transition', + }); + + movePropIntoSlotProps(j, { + root, + componentName: 'Tooltip', + propName: 'TransitionProps', + slotName: 'transition', + }); + return root.toSource(printOptions); } diff --git a/packages/mui-codemod/src/deprecations/typography-props/test-cases/actual.js b/packages/mui-codemod/src/deprecations/typography-props/test-cases/actual.js index a5263bdb240e8e..5848d49bd63308 100644 --- a/packages/mui-codemod/src/deprecations/typography-props/test-cases/actual.js +++ b/packages/mui-codemod/src/deprecations/typography-props/test-cases/actual.js @@ -11,6 +11,8 @@ import { Typography as MyTypography } from '@mui/material'; <MyTypography paragraph className="my-class" />; <Typography paragraph={false} className="my-class" />; <MyTypography paragraph={false} className="my-class" />; +<Typography paragraph={true} className="my-class" />; +<MyTypography paragraph={true} className="my-class" />; <Typography paragraph={paragraph} className="my-class" />; <MyTypography paragraph={paragraph} className="my-class" />; <Typography paragraph sx={{ marginBottom: "32px" }} />; diff --git a/packages/mui-codemod/src/deprecations/typography-props/test-cases/expected.js b/packages/mui-codemod/src/deprecations/typography-props/test-cases/expected.js index b078bb27c92dad..539d508318ba93 100644 --- a/packages/mui-codemod/src/deprecations/typography-props/test-cases/expected.js +++ b/packages/mui-codemod/src/deprecations/typography-props/test-cases/expected.js @@ -25,6 +25,12 @@ import { Typography as MyTypography } from '@mui/material'; <MyTypography className="my-class" sx={{ marginBottom: "16px" }} />; +<Typography className="my-class" sx={paragraph ? { + marginBottom: "16px" +} : undefined} />; +<MyTypography className="my-class" sx={paragraph ? { + marginBottom: "16px" +} : undefined} />; <Typography sx={{ marginBottom: "32px" }} />; <MyTypography sx={{ marginBottom: "32px" }} />; <Typography sx={{ mb: "32px" }} />; diff --git a/packages/mui-codemod/src/deprecations/typography-props/typography-props.js b/packages/mui-codemod/src/deprecations/typography-props/typography-props.js index 9968cc366038b4..170f0a8d8a22ce 100644 --- a/packages/mui-codemod/src/deprecations/typography-props/typography-props.js +++ b/packages/mui-codemod/src/deprecations/typography-props/typography-props.js @@ -29,12 +29,23 @@ export default function transformer(file, api, options) { }, ); - const isParagraphPropTruthy = paragraphProp.value?.expression.value !== false; + const isParagraphPropPresent = paragraphProp.value?.expression.value !== false; - if (!isParagraphPropTruthy) { + if (!isParagraphPropPresent) { return; } + const isParagraphPropTrue = + paragraphProp.value == null || paragraphProp.value.expression.value === true; + const paragraphExpression = (expression) => + isParagraphPropTrue + ? expression + : j.conditionalExpression( + paragraphProp.value.expression, + expression, + j.identifier('undefined'), + ); + const sxIndex = elementPath.node.openingElement.attributes.findIndex( (attr) => attr.type === 'JSXAttribute' && attr.name.name === 'sx', ); @@ -42,9 +53,9 @@ export default function transformer(file, api, options) { appendAttribute(j, { target: elementPath.node, attributeName: 'sx', - expression: j.objectExpression([ - j.objectProperty(j.identifier('marginBottom'), j.literal('16px')), - ]), + expression: paragraphExpression( + j.objectExpression([j.objectProperty(j.identifier('marginBottom'), j.literal('16px'))]), + ), }); } else { const hasMarginBottom = elementPath.node.openingElement.attributes[ @@ -57,7 +68,7 @@ export default function transformer(file, api, options) { assignObject(j, { target: elementPath.node.openingElement.attributes[sxIndex], key: 'marginBottom', - expression: j.literal('16px'), + expression: paragraphExpression(j.literal('16px')), }); } } diff --git a/packages/mui-core-downloads-tracker/package.json b/packages/mui-core-downloads-tracker/package.json index d0ef724dd25fcc..847931bca2b3f4 100644 --- a/packages/mui-core-downloads-tracker/package.json +++ b/packages/mui-core-downloads-tracker/package.json @@ -1,6 +1,6 @@ { "name": "@mui/core-downloads-tracker", - "version": "6.1.6", + "version": "6.1.10", "private": false, "author": "MUI Team", "description": "Internal package to track number of downloads of our design system libraries", diff --git a/packages/mui-docs/package.json b/packages/mui-docs/package.json index e299d86624bce7..600a0db5870ff1 100644 --- a/packages/mui-docs/package.json +++ b/packages/mui-docs/package.json @@ -1,6 +1,6 @@ { "name": "@mui/docs", - "version": "6.1.6", + "version": "6.1.10", "private": false, "author": "MUI Team", "description": "MUI Docs - Documentation building blocks.", @@ -45,10 +45,10 @@ "@mui/icons-material": "workspace:*", "@mui/material": "workspace:*", "@types/gtag.js": "^0.0.20", - "@types/node": "^20.17.6", + "@types/node": "^20.17.9", "@types/prop-types": "^15.7.13", "@types/react": "^18.3.12", - "next": "^14.2.17", + "next": "^14.2.18", "react": "^18.3.1" }, "peerDependencies": { diff --git a/packages/mui-docs/src/Ad/Ad.tsx b/packages/mui-docs/src/Ad/Ad.tsx index 9b47adcc8d6ed6..53e04e73840bbb 100644 --- a/packages/mui-docs/src/Ad/Ad.tsx +++ b/packages/mui-docs/src/Ad/Ad.tsx @@ -232,7 +232,6 @@ export function Ad() { data-ga-event-category="ad" data-ga-event-action="click" data-ga-event-label={eventLabel} - className="Ad-root" > <AdErrorBoundary eventLabel={eventLabel}>{children}</AdErrorBoundary> </Box> diff --git a/packages/mui-docs/src/ComponentLinkHeader/ComponentLinkHeader.tsx b/packages/mui-docs/src/ComponentLinkHeader/ComponentLinkHeader.tsx index f432a3214c3588..aab2e456104af2 100644 --- a/packages/mui-docs/src/ComponentLinkHeader/ComponentLinkHeader.tsx +++ b/packages/mui-docs/src/ComponentLinkHeader/ComponentLinkHeader.tsx @@ -13,8 +13,9 @@ import W3CIcon from '../svgIcons/W3CIcon'; import MaterialDesignIcon from '../svgIcons/MaterialDesignIcon'; import { useTranslate } from '../i18n'; -const Root = styled('ul')({ +const Root = styled('ul')(({ theme }) => ({ margin: 0, + marginTop: theme.spacing(2), padding: 0, listStyle: 'none', display: 'flex', @@ -30,7 +31,7 @@ const Root = styled('ul')({ fontSize: 14, }, }, -}); +})); const defaultPackageNames: Record<string, string | undefined> = { 'material-ui': '@mui/material', diff --git a/packages/mui-docs/src/MarkdownElement/MarkdownElement.tsx b/packages/mui-docs/src/MarkdownElement/MarkdownElement.tsx index a561b6641bba72..fb25e65d73515e 100644 --- a/packages/mui-docs/src/MarkdownElement/MarkdownElement.tsx +++ b/packages/mui-docs/src/MarkdownElement/MarkdownElement.tsx @@ -137,7 +137,7 @@ const Root = styled('div')( // Allows to remove link arrows for images display: 'none', }, - '& .Ad-root a::after': { + '& .ad.description a::after': { // Remove link arrow for ads display: 'none', }, diff --git a/packages/mui-docs/src/branding/brandingTheme.ts b/packages/mui-docs/src/branding/brandingTheme.ts index daf54b626dadeb..985ba20cfe046e 100644 --- a/packages/mui-docs/src/branding/brandingTheme.ts +++ b/packages/mui-docs/src/branding/brandingTheme.ts @@ -514,7 +514,7 @@ export function getThemedComponents(): ThemeOptions { transition: 'all 100ms ease-in', '&:focus-visible': { outline: `3px solid ${alpha(theme.palette.primary[500], 0.5)}`, - outlineOffset: '2px', + outlineOffset: 2, }, }), }, @@ -1051,7 +1051,7 @@ export function getThemedComponents(): ThemeOptions { }, '&:focus-visible': { outline: `3px solid ${alpha(theme.palette.primary[500], 0.5)}`, - outlineOffset: '2px', + outlineOffset: 2, }, }), }, @@ -1340,7 +1340,7 @@ export function getThemedComponents(): ThemeOptions { }, '&:focus-visible': { outline: `3px solid ${alpha(theme.palette.primary[500], 0.5)}`, - outlineOffset: '2px', + outlineOffset: 2, }, }, ':is(a&), :is(button&)': { @@ -1454,17 +1454,22 @@ export function getThemedComponents(): ThemeOptions { }, MuiSwitch: { styleOverrides: { - root: { + root: ({ theme }) => ({ width: 32, height: 20, padding: 0, + borderRadius: 10, + '&:has(input:focus-visible)': { + outline: `3px solid ${alpha(theme.palette.primary[500], 0.5)}`, + outlineOffset: 2, + }, '& .MuiSwitch-switchBase': { '&.Mui-checked': { transform: 'translateX(12px)', color: '#fff', }, }, - }, + }), switchBase: { height: 20, width: 20, diff --git a/packages/mui-docs/src/translations/translations.json b/packages/mui-docs/src/translations/translations.json index b12d0d96fdaf77..b59f7a6c77dfda 100644 --- a/packages/mui-docs/src/translations/translations.json +++ b/packages/mui-docs/src/translations/translations.json @@ -66,7 +66,7 @@ "joy-variant": "To learn how to add your own variants, check out <a href='/joy-ui/customization/themed-components/#extend-variants'>Themed components—Extend variants</a>." } }, - "marketingPageDescr": "A responsive marketing page layout with common sections found in marketing pages.", + "marketingPageDescr": "A responsive marketing page layout with sections for product features, testimonials, pricing, and FAQs.", "marketingPageTitle": "Marketing page", "searchButton": "Search…", "algoliaSearch": "What are you looking for?", @@ -80,13 +80,13 @@ }, "backToTop": "Scroll back to top", "backToOpenRoles": "Back to open roles", - "blogDescr": "A polished blog page layout. Markdown support is courtesy of markdown-to-jsx.", + "blogDescr": "A sleek, modern blog homepage layout with Markdown support via markdown-to-jsx.", "blogTitle": "Blog", "bundleSize": "Bundle size", "bundleSizeTooltip": "Scroll down to 'Exports Analysis' for a more detailed report.", "cancel": "Cancel", "cdn": "or use a CDN.", - "checkoutDescr": "A step-by-step checkout flow with an adaptable (or optional) number of steps.", + "checkoutDescr": "A sophisticated checkout flow with fully customizable steps.", "checkoutTitle": "Checkout", "clickToCopy": "Click to copy", "close": "Close", @@ -97,7 +97,7 @@ "copySource": "Copy the source", "copySourceLinkJS": "Copy link to JavaScript source", "copySourceLinkTS": "Copy link to TypeScript source", - "dashboardDescr": "A collection of charts and complex components in a responsive dashboard layout.", + "dashboardDescr": "A complex data visualization dashboard featuring the MUI X Data Grid and Charts.", "dashboardTitle": "Dashboard", "decreaseSpacing": "decrease spacing", "demoToolbarLabel": "demo source", @@ -180,11 +180,11 @@ "showJSSource": "Show JavaScript source", "showSource": "Show code", "showTSSource": "Show TypeScript source", - "signInDescr": "A simple sign-in page using text fields, buttons, checkboxes, links, and more.", - "signInSideDescr": "A sign-in page with a two-column layout using text fields, buttons, and more.", + "signInDescr": "A clean and efficient sign-in page, ready for your favorite auth provider.", + "signInSideDescr": "A responsive, two-column sign-in page for adding content alongside the form.", "signInSideTitle": "Sign-in side", "signInTitle": "Sign-in", - "signUpDescr": "A simple sign-up page using text fields, buttons, checkboxes, links, and more.", + "signUpDescr": "A clean and efficient sign-up page, perfect for pairing with a sign-in template.", "signUpTitle": "Sign-up", "sourceCode": "Source code", "spacingUnit": "Spacing unit", diff --git a/packages/mui-envinfo/package.json b/packages/mui-envinfo/package.json index 11f59f166e0d78..379d7e21327aed 100644 --- a/packages/mui-envinfo/package.json +++ b/packages/mui-envinfo/package.json @@ -1,6 +1,6 @@ { "name": "@mui/envinfo", - "version": "2.0.29", + "version": "2.0.30", "private": false, "author": "MUI Team", "description": "Logs infos about the environment relevant to @mui/*", diff --git a/packages/mui-envinfo/test/package.json b/packages/mui-envinfo/test/package.json index 8f5aa659b73dfa..ba47dcd4d0fb51 100644 --- a/packages/mui-envinfo/test/package.json +++ b/packages/mui-envinfo/test/package.json @@ -3,8 +3,8 @@ "version": "1.0.0", "private": true, "dependencies": { - "@emotion/react": "^11.13.3", - "@emotion/styled": "^11.13.0", + "@emotion/react": "^11.13.5", + "@emotion/styled": "^11.13.5", "@mui/base": "5.0.0-beta.30", "@mui/joy": "5.0.0-beta.22", "@mui/material": "5.15.4", diff --git a/packages/mui-icons-material/package.json b/packages/mui-icons-material/package.json index 6d90d434367b2a..19a916791f9c86 100644 --- a/packages/mui-icons-material/package.json +++ b/packages/mui-icons-material/package.json @@ -1,6 +1,6 @@ { "name": "@mui/icons-material", - "version": "6.1.6", + "version": "6.1.10", "private": false, "author": "MUI Team", "description": "Material Design icons distributed as SVG React components.", diff --git a/packages/mui-joy/package.json b/packages/mui-joy/package.json index 3b3efe22ed6b07..def7385d918343 100644 --- a/packages/mui-joy/package.json +++ b/packages/mui-joy/package.json @@ -58,7 +58,7 @@ "chai": "^4.5.0", "fast-glob": "^3.3.2", "lodash": "^4.17.21", - "next": "^14.2.17", + "next": "^14.2.18", "react": "^18.3.1", "react-dom": "^18.3.1", "sinon": "^19.0.2" diff --git a/packages/mui-lab/package.json b/packages/mui-lab/package.json index 14f45946d6d5c2..137951f59d24a1 100644 --- a/packages/mui-lab/package.json +++ b/packages/mui-lab/package.json @@ -1,6 +1,6 @@ { "name": "@mui/lab", - "version": "6.0.0-beta.14", + "version": "6.0.0-beta.18", "private": false, "author": "MUI Team", "description": "Laboratory for new MUI modules.", diff --git a/packages/mui-material-nextjs/package.json b/packages/mui-material-nextjs/package.json index 658b03638b9f1b..991087f1fc5706 100644 --- a/packages/mui-material-nextjs/package.json +++ b/packages/mui-material-nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@mui/material-nextjs", - "version": "6.1.6", + "version": "6.1.9", "private": false, "author": "MUI Team", "description": "Collection of utilities for integration between Material UI and Next.js.", @@ -39,11 +39,11 @@ "@babel/runtime": "^7.26.0" }, "devDependencies": { - "@emotion/cache": "^11.13.1", - "@emotion/react": "^11.13.3", + "@emotion/cache": "^11.13.5", + "@emotion/react": "^11.13.5", "@emotion/server": "^11.11.0", "@types/react": "^18.3.12", - "next": "^14.2.17", + "next": "^14.2.18", "react": "^18.3.1" }, "peerDependencies": { diff --git a/packages/mui-material-pigment-css/package.json b/packages/mui-material-pigment-css/package.json index f92c62d8ae3dab..0909f3e167ecd7 100644 --- a/packages/mui-material-pigment-css/package.json +++ b/packages/mui-material-pigment-css/package.json @@ -1,6 +1,6 @@ { "name": "@mui/material-pigment-css", - "version": "6.1.6", + "version": "6.1.10", "author": "MUI Team", "description": "A wrapper over Pigment CSS that provides the same styled and theming APIs as Material UI.", "main": "./src/index.ts", @@ -40,8 +40,10 @@ }, "dependencies": { "@babel/runtime": "^7.26.0", - "@mui/system": "workspace:*", - "@pigment-css/react": "0.0.26" + "@mui/system": "workspace:*" + }, + "peerDependencies": { + "@pigment-css/react": "^0.0.27 || ^0.0.28" }, "sideEffects": false, "publishConfig": { diff --git a/packages/mui-material/package.json b/packages/mui-material/package.json index 1b903d6982fb86..8d6884a8b33bc7 100644 --- a/packages/mui-material/package.json +++ b/packages/mui-material/package.json @@ -1,6 +1,6 @@ { "name": "@mui/material", - "version": "6.1.6", + "version": "6.1.10", "private": false, "author": "MUI Team", "description": "Material UI is an open-source React component library that implements Google's Material Design. It's comprehensive and can be used in production out of the box.", @@ -70,7 +70,7 @@ "playwright": "^1.48.2", "react": "^18.3.1", "react-dom": "^18.3.1", - "react-router-dom": "^6.28.0", + "react-router": "^7.0.1", "sinon": "^19.0.2" }, "peerDependencies": { diff --git a/packages/mui-material/src/Accordion/Accordion.d.ts b/packages/mui-material/src/Accordion/Accordion.d.ts index 0956a67a00f033..283032d6133d64 100644 --- a/packages/mui-material/src/Accordion/Accordion.d.ts +++ b/packages/mui-material/src/Accordion/Accordion.d.ts @@ -90,6 +90,7 @@ export type AccordionTypeMap< /** * The component used for the transition. * [Follow this guide](https://mui.com/material-ui/transitions/#transitioncomponent-prop) to learn more about the requirements for this component. + * @deprecated Use `slots.transition` instead. This prop will be removed in v7. See [Migrating from deprecated APIs](/material-ui/migration/migrating-from-deprecated-apis/) for more details. */ TransitionComponent?: React.JSXElementConstructor< TransitionProps & { children?: React.ReactElement<unknown, any> } @@ -97,6 +98,7 @@ export type AccordionTypeMap< /** * Props applied to the transition element. * By default, the element is based on this [`Transition`](https://reactcommunity.org/react-transition-group/transition/) component. + * @deprecated Use `slotProps.transition` instead. This prop will be removed in v7. See [Migrating from deprecated APIs](/material-ui/migration/migrating-from-deprecated-apis/) for more details. */ TransitionProps?: TransitionProps; } & AccordionSlotsAndSlotProps; diff --git a/packages/mui-material/src/Accordion/Accordion.js b/packages/mui-material/src/Accordion/Accordion.js index fd74ca6f342d29..2b37deea04ee27 100644 --- a/packages/mui-material/src/Accordion/Accordion.js +++ b/packages/mui-material/src/Accordion/Accordion.js @@ -322,11 +322,13 @@ Accordion.propTypes /* remove-proptypes */ = { /** * The component used for the transition. * [Follow this guide](https://mui.com/material-ui/transitions/#transitioncomponent-prop) to learn more about the requirements for this component. + * @deprecated Use `slots.transition` instead. This prop will be removed in v7. See [Migrating from deprecated APIs](/material-ui/migration/migrating-from-deprecated-apis/) for more details. */ TransitionComponent: PropTypes.elementType, /** * Props applied to the transition element. * By default, the element is based on this [`Transition`](https://reactcommunity.org/react-transition-group/transition/) component. + * @deprecated Use `slotProps.transition` instead. This prop will be removed in v7. See [Migrating from deprecated APIs](/material-ui/migration/migrating-from-deprecated-apis/) for more details. */ TransitionProps: PropTypes.object, }; diff --git a/packages/mui-material/src/Autocomplete/Autocomplete.d.ts b/packages/mui-material/src/Autocomplete/Autocomplete.d.ts index 91028debe19ad3..48eac3e2ba5d5f 100644 --- a/packages/mui-material/src/Autocomplete/Autocomplete.d.ts +++ b/packages/mui-material/src/Autocomplete/Autocomplete.d.ts @@ -167,6 +167,7 @@ export interface AutocompleteProps< AutocompleteSlotsAndSlotProps<Value, Multiple, DisableClearable, FreeSolo, ChipComponent> { /** * Props applied to the [`Chip`](https://mui.com/material-ui/api/chip/) element. + * @deprecated Use `slotProps.chip` instead. This prop will be removed in v7. See [Migrating from deprecated APIs](/material-ui/migration/migrating-from-deprecated-apis/) for more details. */ ChipProps?: ChipProps<ChipComponent>; /** @@ -233,10 +234,12 @@ export interface AutocompleteProps< /** * The component used to render the listbox. * @default 'ul' + * @deprecated Use `slotProps.listbox.component` instead. This prop will be removed in v7. See [Migrating from deprecated APIs](/material-ui/migration/migrating-from-deprecated-apis/) for more details. */ ListboxComponent?: React.JSXElementConstructor<React.HTMLAttributes<HTMLElement>>; /** * Props applied to the Listbox element. + * @deprecated Use `slotProps.listbox` instead. This prop will be removed in v7. See [Migrating from deprecated APIs](/material-ui/migration/migrating-from-deprecated-apis/) for more details. */ ListboxProps?: ReturnType<ReturnType<typeof useAutocomplete>['getListboxProps']> & { sx?: SxProps<Theme>; @@ -281,11 +284,13 @@ export interface AutocompleteProps< /** * The component used to render the body of the popup. * @default Paper + * @deprecated Use `slots.paper` instead. This prop will be removed in v7. See [Migrating from deprecated APIs](/material-ui/migration/migrating-from-deprecated-apis/) for more details. */ PaperComponent?: React.JSXElementConstructor<React.HTMLAttributes<HTMLElement>>; /** * The component used to position the popup. * @default Popper + * @deprecated Use `slots.popper` instead. This prop will be removed in v7. See [Migrating from deprecated APIs](/material-ui/migration/migrating-from-deprecated-apis/) for more details. */ PopperComponent?: React.JSXElementConstructor<PopperProps>; /** diff --git a/packages/mui-material/src/Autocomplete/Autocomplete.js b/packages/mui-material/src/Autocomplete/Autocomplete.js index f249219d26da5e..555ec43bb213c1 100644 --- a/packages/mui-material/src/Autocomplete/Autocomplete.js +++ b/packages/mui-material/src/Autocomplete/Autocomplete.js @@ -326,7 +326,7 @@ const AutocompleteNoOptions = styled('div', { })), ); -const AutocompleteListbox = styled('div', { +const AutocompleteListbox = styled('ul', { name: 'MuiAutocomplete', slot: 'Listbox', overridesResolver: (props, styles) => styles.listbox, @@ -828,6 +828,7 @@ Autocomplete.propTypes /* remove-proptypes */ = { blurOnSelect: PropTypes.oneOfType([PropTypes.oneOf(['mouse', 'touch']), PropTypes.bool]), /** * Props applied to the [`Chip`](https://mui.com/material-ui/api/chip/) element. + * @deprecated Use `slotProps.chip` instead. This prop will be removed in v7. See [Migrating from deprecated APIs](/material-ui/migration/migrating-from-deprecated-apis/) for more details. */ ChipProps: PropTypes.object, /** @@ -1035,10 +1036,12 @@ Autocomplete.propTypes /* remove-proptypes */ = { /** * The component used to render the listbox. * @default 'ul' + * @deprecated Use `slotProps.listbox.component` instead. This prop will be removed in v7. See [Migrating from deprecated APIs](/material-ui/migration/migrating-from-deprecated-apis/) for more details. */ ListboxComponent: PropTypes.elementType, /** * Props applied to the Listbox element. + * @deprecated Use `slotProps.listbox` instead. This prop will be removed in v7. See [Migrating from deprecated APIs](/material-ui/migration/migrating-from-deprecated-apis/) for more details. */ ListboxProps: PropTypes.object, /** @@ -1133,11 +1136,13 @@ Autocomplete.propTypes /* remove-proptypes */ = { /** * The component used to render the body of the popup. * @default Paper + * @deprecated Use `slots.paper` instead. This prop will be removed in v7. See [Migrating from deprecated APIs](/material-ui/migration/migrating-from-deprecated-apis/) for more details. */ PaperComponent: PropTypes.elementType, /** * The component used to position the popup. * @default Popper + * @deprecated Use `slots.popper` instead. This prop will be removed in v7. See [Migrating from deprecated APIs](/material-ui/migration/migrating-from-deprecated-apis/) for more details. */ PopperComponent: PropTypes.elementType, /** diff --git a/packages/mui-material/src/Autocomplete/Autocomplete.test.js b/packages/mui-material/src/Autocomplete/Autocomplete.test.js index 97099aa953faee..181fdf378d2bc9 100644 --- a/packages/mui-material/src/Autocomplete/Autocomplete.test.js +++ b/packages/mui-material/src/Autocomplete/Autocomplete.test.js @@ -1069,6 +1069,7 @@ describe('<Autocomplete />', () => { expect(textbox).to.have.attribute('aria-expanded', 'true'); const listbox = getByRole('listbox'); + expect(listbox.tagName.toLowerCase()).to.equal('ul'); expect(textbox).to.have.attribute('aria-controls', listbox.getAttribute('id')); expect(textbox, 'no option is focused when opened').not.to.have.attribute( 'aria-activedescendant', diff --git a/packages/mui-material/src/Avatar/Avatar.d.ts b/packages/mui-material/src/Avatar/Avatar.d.ts index 804b4c6c7656db..ba60904d7c5b60 100644 --- a/packages/mui-material/src/Avatar/Avatar.d.ts +++ b/packages/mui-material/src/Avatar/Avatar.d.ts @@ -46,6 +46,7 @@ export interface AvatarOwnProps { /** * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#attributes) applied to the `img` element if the component is used to display an image. * It can be used to listen for the loading error event. + * @deprecated Use `slotProps.img` instead. This prop will be removed in v7. See [Migrating from deprecated APIs](/material-ui/migration/migrating-from-deprecated-apis/) for more details. */ imgProps?: React.ImgHTMLAttributes<HTMLImageElement> & { sx?: SxProps<Theme>; diff --git a/packages/mui-material/src/Avatar/Avatar.js b/packages/mui-material/src/Avatar/Avatar.js index 0ba9e1cf8ee8e2..fbf36c82d5fa3a 100644 --- a/packages/mui-material/src/Avatar/Avatar.js +++ b/packages/mui-material/src/Avatar/Avatar.js @@ -163,17 +163,23 @@ const Avatar = React.forwardRef(function Avatar(inProps, ref) { let children = null; - // Use a hook instead of onError on the img element to support server-side rendering. - const loaded = useLoaded({ ...imgProps, src, srcSet }); - const hasImg = src || srcSet; - const hasImgNotFailing = hasImg && loaded !== 'error'; - const ownerState = { ...props, - colorDefault: !hasImgNotFailing, component, variant, }; + + // Use a hook instead of onError on the img element to support server-side rendering. + const loaded = useLoaded({ + ...imgProps, + ...(typeof slotProps.img === 'function' ? slotProps.img(ownerState) : slotProps.img), + src, + srcSet, + }); + const hasImg = src || srcSet; + const hasImgNotFailing = hasImg && loaded !== 'error'; + + ownerState.colorDefault = !hasImgNotFailing; // This issue explains why this is required: https://github.com/mui/material-ui/issues/42184 delete ownerState.ownerState; @@ -246,6 +252,7 @@ Avatar.propTypes /* remove-proptypes */ = { /** * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#attributes) applied to the `img` element if the component is used to display an image. * It can be used to listen for the loading error event. + * @deprecated Use `slotProps.img` instead. This prop will be removed in v7. See [Migrating from deprecated APIs](/material-ui/migration/migrating-from-deprecated-apis/) for more details. */ imgProps: PropTypes.object, /** diff --git a/packages/mui-material/src/Avatar/Avatar.test.js b/packages/mui-material/src/Avatar/Avatar.test.js index 5f3fb5796106ee..7feddbbd36731a 100644 --- a/packages/mui-material/src/Avatar/Avatar.test.js +++ b/packages/mui-material/src/Avatar/Avatar.test.js @@ -62,6 +62,20 @@ describe('<Avatar />', () => { fireEvent.error(img); expect(onError.callCount).to.equal(1); }); + + it('should pass slots.img to `useLoaded` hook', () => { + const originalImage = global.Image; + const image = {}; + global.Image = function Image() { + return image; + }; + + render(<Avatar src="/fake.png" slotProps={{ img: { crossOrigin: 'anonymous' } }} />); + + expect(image.crossOrigin).to.equal('anonymous'); + + global.Image = originalImage; + }); }); describe('image avatar with unrendered children', () => { diff --git a/packages/mui-material/src/Backdrop/Backdrop.d.ts b/packages/mui-material/src/Backdrop/Backdrop.d.ts index 54c522613c0a47..e4ef50ac1de928 100644 --- a/packages/mui-material/src/Backdrop/Backdrop.d.ts +++ b/packages/mui-material/src/Backdrop/Backdrop.d.ts @@ -97,6 +97,7 @@ export interface BackdropOwnProps * The component used for the transition. * [Follow this guide](https://mui.com/material-ui/transitions/#transitioncomponent-prop) to learn more about the requirements for this component. * @default Fade + * @deprecated Use `slots.transition` instead. This prop will be removed in v7. See [Migrating from deprecated APIs](/material-ui/migration/migrating-from-deprecated-apis/) for more details. */ TransitionComponent?: React.JSXElementConstructor< TransitionProps & { diff --git a/packages/mui-material/src/Backdrop/Backdrop.js b/packages/mui-material/src/Backdrop/Backdrop.js index 1c906c65260986..7e4f6e1a5b6591 100644 --- a/packages/mui-material/src/Backdrop/Backdrop.js +++ b/packages/mui-material/src/Backdrop/Backdrop.js @@ -193,6 +193,7 @@ Backdrop.propTypes /* remove-proptypes */ = { * The component used for the transition. * [Follow this guide](https://mui.com/material-ui/transitions/#transitioncomponent-prop) to learn more about the requirements for this component. * @default Fade + * @deprecated Use `slots.transition` instead. This prop will be removed in v7. See [Migrating from deprecated APIs](/material-ui/migration/migrating-from-deprecated-apis/) for more details. */ TransitionComponent: PropTypes.elementType, /** diff --git a/packages/mui-material/src/Button/Button.spec.tsx b/packages/mui-material/src/Button/Button.spec.tsx index 832d79dd0599cf..1c84611741a3cb 100644 --- a/packages/mui-material/src/Button/Button.spec.tsx +++ b/packages/mui-material/src/Button/Button.spec.tsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import { Link as ReactRouterLink, LinkProps } from 'react-router-dom'; +import { Link as ReactRouterLink, LinkProps } from 'react-router'; import { expectType } from '@mui/types'; import Button, { ButtonProps } from '@mui/material/Button'; import MaterialUiLink, { LinkProps as MaterialUiLinkProps } from '@mui/material/Link'; diff --git a/packages/mui-material/src/ButtonBase/ButtonBase.js b/packages/mui-material/src/ButtonBase/ButtonBase.js index bff7de56039ff2..ae7ef243fe4508 100644 --- a/packages/mui-material/src/ButtonBase/ButtonBase.js +++ b/packages/mui-material/src/ButtonBase/ButtonBase.js @@ -137,38 +137,29 @@ const ButtonBase = React.forwardRef(function ButtonBase(inProps, ref) { } }, [disableRipple, focusRipple, focusVisible, ripple]); - function useRippleHandler(rippleAction, eventCallback, skipRippleAction = disableTouchRipple) { - return useEventCallback((event) => { - if (eventCallback) { - eventCallback(event); + const handleMouseDown = useRippleHandler(ripple, 'start', onMouseDown, disableTouchRipple); + const handleContextMenu = useRippleHandler(ripple, 'stop', onContextMenu, disableTouchRipple); + const handleDragLeave = useRippleHandler(ripple, 'stop', onDragLeave, disableTouchRipple); + const handleMouseUp = useRippleHandler(ripple, 'stop', onMouseUp, disableTouchRipple); + const handleMouseLeave = useRippleHandler( + ripple, + 'stop', + (event) => { + if (focusVisible) { + event.preventDefault(); } - - const ignore = skipRippleAction; - if (!ignore) { - ripple[rippleAction](event); + if (onMouseLeave) { + onMouseLeave(event); } - - return true; - }); - } - - const handleMouseDown = useRippleHandler('start', onMouseDown); - const handleContextMenu = useRippleHandler('stop', onContextMenu); - const handleDragLeave = useRippleHandler('stop', onDragLeave); - const handleMouseUp = useRippleHandler('stop', onMouseUp); - const handleMouseLeave = useRippleHandler('stop', (event) => { - if (focusVisible) { - event.preventDefault(); - } - if (onMouseLeave) { - onMouseLeave(event); - } - }); - const handleTouchStart = useRippleHandler('start', onTouchStart); - const handleTouchEnd = useRippleHandler('stop', onTouchEnd); - const handleTouchMove = useRippleHandler('stop', onTouchMove); + }, + disableTouchRipple, + ); + const handleTouchStart = useRippleHandler(ripple, 'start', onTouchStart, disableTouchRipple); + const handleTouchEnd = useRippleHandler(ripple, 'stop', onTouchEnd, disableTouchRipple); + const handleTouchMove = useRippleHandler(ripple, 'stop', onTouchMove, disableTouchRipple); const handleBlur = useRippleHandler( + ripple, 'stop', (event) => { if (!isFocusVisible(event.target)) { @@ -326,6 +317,20 @@ const ButtonBase = React.forwardRef(function ButtonBase(inProps, ref) { ); }); +function useRippleHandler(ripple, rippleAction, eventCallback, skipRippleAction = false) { + return useEventCallback((event) => { + if (eventCallback) { + eventCallback(event); + } + + if (!skipRippleAction) { + ripple[rippleAction](event); + } + + return true; + }); +} + ButtonBase.propTypes /* remove-proptypes */ = { // ┌────────────────────────────── Warning ──────────────────────────────┐ // │ These PropTypes are generated from the TypeScript type definitions. │ diff --git a/packages/mui-material/src/ClickAwayListener/ClickAwayListener.tsx b/packages/mui-material/src/ClickAwayListener/ClickAwayListener.tsx index 6a695e84f78352..5987a8f04dc1c8 100644 --- a/packages/mui-material/src/ClickAwayListener/ClickAwayListener.tsx +++ b/packages/mui-material/src/ClickAwayListener/ClickAwayListener.tsx @@ -210,7 +210,7 @@ function ClickAwayListener(props: ClickAwayListenerProps): React.JSX.Element { return undefined; }, [handleClickAway, mouseEvent]); - return <React.Fragment>{React.cloneElement(children, childrenProps)}</React.Fragment>; + return React.cloneElement(children, childrenProps); } ClickAwayListener.propTypes /* remove-proptypes */ = { diff --git a/packages/mui-material/src/FilledInput/FilledInput.js b/packages/mui-material/src/FilledInput/FilledInput.js index 7e0d90740b1309..fcb381ce103ef4 100644 --- a/packages/mui-material/src/FilledInput/FilledInput.js +++ b/packages/mui-material/src/FilledInput/FilledInput.js @@ -316,7 +316,7 @@ const FilledInput = React.forwardRef(function FilledInput(inProps, ref) { return ( <InputBase slots={{ root: RootSlot, input: InputSlot }} - componentsProps={componentsProps} + slotProps={componentsProps} fullWidth={fullWidth} inputComponent={inputComponent} multiline={multiline} diff --git a/packages/mui-material/src/FilledInput/FilledInput.test.js b/packages/mui-material/src/FilledInput/FilledInput.test.js index 06671ea1686a46..dac7996df24514 100644 --- a/packages/mui-material/src/FilledInput/FilledInput.test.js +++ b/packages/mui-material/src/FilledInput/FilledInput.test.js @@ -28,6 +28,7 @@ describe('<FilledInput />', () => { 'componentProp', 'componentsProp', 'slotPropsCallback', // not supported yet + 'slotPropsCallbackWithPropsAsOwnerState', // not supported yet ], })); diff --git a/packages/mui-material/src/FormHelperText/FormHelperText.js b/packages/mui-material/src/FormHelperText/FormHelperText.js index 14cad8a81fff28..118d43be9d4fa3 100644 --- a/packages/mui-material/src/FormHelperText/FormHelperText.js +++ b/packages/mui-material/src/FormHelperText/FormHelperText.js @@ -128,7 +128,9 @@ const FormHelperText = React.forwardRef(function FormHelperText(inProps, ref) { > {children === ' ' ? ( // notranslate needed while Google Translate will not fix zero-width space issue - <span className="notranslate">​</span> + <span className="notranslate" aria-hidden> + ​ + </span> ) : ( children )} diff --git a/packages/mui-material/src/Grid/Grid.js b/packages/mui-material/src/Grid/Grid.js index 4968b320d73537..7aa3c302748f61 100644 --- a/packages/mui-material/src/Grid/Grid.js +++ b/packages/mui-material/src/Grid/Grid.js @@ -170,7 +170,7 @@ export function generateRowGap({ theme, ownerState }) { if (themeSpacing !== '0px') { return { - marginTop: theme.spacing(-propValue), + marginTop: `-${themeSpacing}`, [`& > .${gridClasses.item}`]: { paddingTop: themeSpacing, }, @@ -214,7 +214,7 @@ export function generateColumnGap({ theme, ownerState }) { styles = handleBreakpoints({ theme }, columnSpacingValues, (propValue, breakpoint) => { const themeSpacing = theme.spacing(propValue); if (themeSpacing !== '0px') { - const negativeValue = theme.spacing(-propValue); + const negativeValue = `-${themeSpacing}`; return { width: `calc(100% + ${themeSpacing})`, marginLeft: negativeValue, diff --git a/packages/mui-material/src/Grid/Grid.test.js b/packages/mui-material/src/Grid/Grid.test.js index dd2c069b9ff9da..92d4e970b9cb98 100644 --- a/packages/mui-material/src/Grid/Grid.test.js +++ b/packages/mui-material/src/Grid/Grid.test.js @@ -746,7 +746,7 @@ describe('Material UI <Grid />', () => { generateRowGap({ ownerState: { container: true, - rowSpacing: { xs: 1, sm: 2 }, + rowSpacing: { xs: 1, sm: 2, md: '16px' }, }, theme, }), @@ -763,13 +763,19 @@ describe('Material UI <Grid />', () => { }, marginTop: '-16px', }, + [`@media (min-width:${defaultTheme.breakpoints.values.md}px)`]: { + '& > .MuiGrid-item': { + paddingTop: '16px', + }, + marginTop: '-16px', + }, }); expect( generateColumnGap({ ownerState: { container: true, - columnSpacing: { xs: 1, sm: 2 }, + columnSpacing: { xs: 1, sm: 2, md: '16px' }, }, theme, }), @@ -788,6 +794,13 @@ describe('Material UI <Grid />', () => { marginLeft: '-16px', width: 'calc(100% + 16px)', }, + [`@media (min-width:${defaultTheme.breakpoints.values.md}px)`]: { + '& > .MuiGrid-item': { + paddingLeft: '16px', + }, + marginLeft: '-16px', + width: 'calc(100% + 16px)', + }, }); }); diff --git a/packages/mui-material/src/Grid2/Grid2.test.js b/packages/mui-material/src/Grid2/Grid2.test.js index 87c952bca83cd7..eb0ea4c5f82255 100644 --- a/packages/mui-material/src/Grid2/Grid2.test.js +++ b/packages/mui-material/src/Grid2/Grid2.test.js @@ -1,6 +1,8 @@ import * as React from 'react'; -import { createRenderer } from '@mui/internal-test-utils'; +import { createRenderer, screen } from '@mui/internal-test-utils'; import Grid2, { grid2Classes as classes } from '@mui/material/Grid2'; +import { createTheme, ThemeProvider, THEME_ID } from '@mui/material/styles'; +import { expect } from 'chai'; import describeConformance from '../../test/describeConformance'; // The main tests are in mui-system Grid folder @@ -20,4 +22,44 @@ describe('<Grid2 />', () => { testVariantProps: { container: true, spacing: 5 }, skip: ['componentsProp', 'classesRoot'], })); + + it('should not crash with theme scoping', () => { + expect(() => + render( + <ThemeProvider theme={{ [THEME_ID]: createTheme() }}> + <Grid2 container spacing={2}> + <Grid2 size={{ xs: 12, md: 6 }}>6</Grid2> + <Grid2 size={{ xs: 12, md: 6 }}>6</Grid2> + </Grid2> + </ThemeProvider>, + ), + ).not.throw(); + }); + + it('should render with the container class', () => { + render(<Grid2 data-testid="grid" container />); + expect(screen.getByTestId('grid')).to.have.class(classes.container); + }); + + it('should have container styles passed from theme', () => { + const theme = createTheme({ + components: { + MuiGrid2: { + styleOverrides: { + container: { + padding: '11px', + }, + }, + }, + }, + }); + render( + <ThemeProvider theme={theme}> + <Grid2 data-testid="grid" container> + hello + </Grid2> + </ThemeProvider>, + ); + expect(screen.getByTestId('grid')).to.have.style('padding', '11px'); + }); }); diff --git a/packages/mui-material/src/Grid2/Grid2.tsx b/packages/mui-material/src/Grid2/Grid2.tsx index d3d2a873bb52a7..1bf737c13e3af5 100644 --- a/packages/mui-material/src/Grid2/Grid2.tsx +++ b/packages/mui-material/src/Grid2/Grid2.tsx @@ -6,8 +6,7 @@ import { OverridableComponent, OverrideProps } from '@mui/types'; import requirePropFactory from '../utils/requirePropFactory'; import { Theme, styled, Breakpoint } from '../styles'; import { useDefaultProps } from '../DefaultPropsProvider'; - -export type Grid2Slot = 'root'; +import useTheme from '../styles/useTheme'; type ResponsiveStyleValue<T> = T | Array<T | null> | { [key in Breakpoint]?: T | null }; @@ -129,10 +128,14 @@ const Grid2 = createGrid2({ createStyledComponent: styled('div', { name: 'MuiGrid2', slot: 'Root', - overridesResolver: (props, styles) => styles.root, + overridesResolver: (props, styles) => { + const { ownerState } = props; + return [styles.root, ownerState.container && styles.container]; + }, }), componentName: 'MuiGrid2', useThemeProps: (inProps) => useDefaultProps({ props: inProps, name: 'MuiGrid2' }), + useTheme, }) as OverridableComponent<Grid2TypeMap>; Grid2.propTypes /* remove-proptypes */ = { diff --git a/packages/mui-material/src/Grid2/grid2Classes.ts b/packages/mui-material/src/Grid2/grid2Classes.ts index eb26cc4f1a3567..86c936bc30bb61 100644 --- a/packages/mui-material/src/Grid2/grid2Classes.ts +++ b/packages/mui-material/src/Grid2/grid2Classes.ts @@ -1,8 +1,14 @@ -import { GridClasses } from '@mui/system/Grid'; import generateUtilityClasses from '@mui/utils/generateUtilityClasses'; import generateUtilityClass from '@mui/utils/generateUtilityClass'; -export type Grid2ClassKey = keyof GridClasses; +export interface Grid2Classes { + /** Styles applied to the root element. */ + root: string; + /** Styles applied to the root element if `container={true}`. */ + container: string; +} + +export type Grid2ClassKey = keyof Grid2Classes; export function getGrid2UtilityClass(slot: string): string { return generateUtilityClass('MuiGrid2', slot); @@ -13,11 +19,9 @@ const DIRECTIONS = ['column-reverse', 'column', 'row-reverse', 'row'] as const; const WRAPS = ['nowrap', 'wrap-reverse', 'wrap'] as const; const GRID_SIZES = ['auto', true, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] as const; -const grid2Classes: GridClasses = generateUtilityClasses('MuiGrid2', [ +const grid2Classes: Grid2Classes = generateUtilityClasses('MuiGrid2', [ 'root', 'container', - 'item', - 'zeroMinWidth', // spacings ...SPACINGS.map((spacing) => `spacing-xs-${spacing}` as const), diff --git a/packages/mui-material/src/Hidden/HiddenJs.js b/packages/mui-material/src/Hidden/HiddenJs.js index b591452cef6299..a9ab0d0a965ee2 100644 --- a/packages/mui-material/src/Hidden/HiddenJs.js +++ b/packages/mui-material/src/Hidden/HiddenJs.js @@ -1,5 +1,4 @@ 'use client'; -import * as React from 'react'; import PropTypes from 'prop-types'; import exactProp from '@mui/utils/exactProp'; import withWidth, { isWidthDown, isWidthUp } from './withWidth'; @@ -50,7 +49,7 @@ function HiddenJs(props) { return null; } - return <React.Fragment>{children}</React.Fragment>; + return children; } HiddenJs.propTypes = { diff --git a/packages/mui-material/src/Input/Input.test.js b/packages/mui-material/src/Input/Input.test.js index 3774a38f5821c9..329a657e71e059 100644 --- a/packages/mui-material/src/Input/Input.test.js +++ b/packages/mui-material/src/Input/Input.test.js @@ -27,6 +27,7 @@ describe('<Input />', () => { 'componentProp', 'componentsProp', 'slotPropsCallback', // not supported yet + 'slotPropsCallbackWithPropsAsOwnerState', // not supported yet ], })); diff --git a/packages/mui-material/src/InputAdornment/InputAdornment.js b/packages/mui-material/src/InputAdornment/InputAdornment.js index 4d0b4df0e73b1d..abb06efb23735f 100644 --- a/packages/mui-material/src/InputAdornment/InputAdornment.js +++ b/packages/mui-material/src/InputAdornment/InputAdornment.js @@ -149,7 +149,9 @@ const InputAdornment = React.forwardRef(function InputAdornment(inProps, ref) { {/* To have the correct vertical alignment baseline */} {position === 'start' ? ( /* notranslate needed while Google Translate will not fix zero-width space issue */ - <span className="notranslate">​</span> + <span className="notranslate" aria-hidden> + ​ + </span> ) : null} {children} </React.Fragment> diff --git a/packages/mui-material/src/InputBase/InputBase.test.js b/packages/mui-material/src/InputBase/InputBase.test.js index 404c5b089b0b25..f89f452661bc4c 100644 --- a/packages/mui-material/src/InputBase/InputBase.test.js +++ b/packages/mui-material/src/InputBase/InputBase.test.js @@ -31,6 +31,7 @@ describe('<InputBase />', () => { skip: [ 'componentProp', 'slotPropsCallback', // not supported yet + 'slotPropsCallbackWithPropsAsOwnerState', // not supported yet ], })); diff --git a/packages/mui-material/src/ListItem/ListItem.test.js b/packages/mui-material/src/ListItem/ListItem.test.js index 8df90d7167c584..623316636b59bc 100644 --- a/packages/mui-material/src/ListItem/ListItem.test.js +++ b/packages/mui-material/src/ListItem/ListItem.test.js @@ -26,6 +26,7 @@ describe('<ListItem />', () => { skip: [ 'componentsProp', 'slotPropsCallback', // not supported yet + 'slotPropsCallbackWithPropsAsOwnerState', // not supported yet ], })); diff --git a/packages/mui-material/src/Modal/useModal.ts b/packages/mui-material/src/Modal/useModal.ts index 4cb2b992beae60..6a14ec7b7eb9c7 100644 --- a/packages/mui-material/src/Modal/useModal.ts +++ b/packages/mui-material/src/Modal/useModal.ts @@ -24,6 +24,8 @@ function getHasTransition(children: UseModalParameters['children']) { return children ? children.props.hasOwnProperty('in') : false; } +const noop = () => {}; + // A modal manager used to track and manage the state of open Modals. // Modals don't open on the server so this won't conflict with concurrent requests. const manager = new ModalManager(); @@ -227,8 +229,8 @@ function useModal(parameters: UseModalParameters): UseModalReturnValue { }; return { - onEnter: createChainedFunction(handleEnter, children?.props.onEnter), - onExited: createChainedFunction(handleExited, children?.props.onExited), + onEnter: createChainedFunction(handleEnter, children?.props.onEnter ?? noop), + onExited: createChainedFunction(handleExited, children?.props.onExited ?? noop), }; }; diff --git a/packages/mui-material/src/Modal/useModal.types.ts b/packages/mui-material/src/Modal/useModal.types.ts index a67b240a9c5708..9b384f7688f70f 100644 --- a/packages/mui-material/src/Modal/useModal.types.ts +++ b/packages/mui-material/src/Modal/useModal.types.ts @@ -22,7 +22,14 @@ export type UseModalParameters = { /** * A single child content element. */ - children: React.ReactElement<any> | undefined | null; + children: + | React.ReactElement<{ + in?: boolean; + onEnter?: (this: unknown) => void; + onExited?: (this: unknown) => void; + }> + | undefined + | null; /** * When set to true the Modal waits until a nested Transition is completed before closing. * @default false diff --git a/packages/mui-material/src/NoSsr/NoSsr.tsx b/packages/mui-material/src/NoSsr/NoSsr.tsx index c7e2dfbc191a6e..0b18a597a751ae 100644 --- a/packages/mui-material/src/NoSsr/NoSsr.tsx +++ b/packages/mui-material/src/NoSsr/NoSsr.tsx @@ -38,8 +38,8 @@ function NoSsr(props: NoSsrProps): React.JSX.Element { } }, [defer]); - // We need the Fragment here to force react-docgen to recognise NoSsr as a component. - return <React.Fragment>{mountedState ? children : fallback}</React.Fragment>; + // TODO casting won't be needed at one point https://github.com/DefinitelyTyped/DefinitelyTyped/pull/65135 + return (mountedState ? children : fallback) as React.JSX.Element; } NoSsr.propTypes /* remove-proptypes */ = { diff --git a/packages/mui-material/src/OutlinedInput/NotchedOutline.js b/packages/mui-material/src/OutlinedInput/NotchedOutline.js index 0dabd05e27b542..0fff01342a45ff 100644 --- a/packages/mui-material/src/OutlinedInput/NotchedOutline.js +++ b/packages/mui-material/src/OutlinedInput/NotchedOutline.js @@ -96,7 +96,9 @@ export default function NotchedOutline(props) { <span>{label}</span> ) : ( // notranslate needed while Google Translate will not fix zero-width space issue - <span className="notranslate">​</span> + <span className="notranslate" aria-hidden> + ​ + </span> )} </NotchedOutlineLegend> </NotchedOutlineRoot> diff --git a/packages/mui-material/src/OutlinedInput/OutlinedInput.test.js b/packages/mui-material/src/OutlinedInput/OutlinedInput.test.js index 145bc5d8b15f90..24e2dc25b8711b 100644 --- a/packages/mui-material/src/OutlinedInput/OutlinedInput.test.js +++ b/packages/mui-material/src/OutlinedInput/OutlinedInput.test.js @@ -28,6 +28,7 @@ describe('<OutlinedInput />', () => { 'componentProp', 'componentsProp', 'slotPropsCallback', // not supported yet + 'slotPropsCallbackWithPropsAsOwnerState', // not supported yet ], })); diff --git a/packages/mui-material/src/PaginationItem/PaginationItem.test.js b/packages/mui-material/src/PaginationItem/PaginationItem.test.js index 593037012dc26b..4c299203c11ebd 100644 --- a/packages/mui-material/src/PaginationItem/PaginationItem.test.js +++ b/packages/mui-material/src/PaginationItem/PaginationItem.test.js @@ -34,6 +34,7 @@ describe('<PaginationItem />', () => { 'slotsProp', 'slotPropsProp', 'slotPropsCallback', // not supported yet + 'slotPropsCallbackWithPropsAsOwnerState', // not supported yet ], })); diff --git a/packages/mui-material/src/Popper/Popper.test.js b/packages/mui-material/src/Popper/Popper.test.js index 326b95b2df39ec..9c6c0c11b9c1f0 100644 --- a/packages/mui-material/src/Popper/Popper.test.js +++ b/packages/mui-material/src/Popper/Popper.test.js @@ -38,6 +38,7 @@ describe('<Popper />', () => { 'themeStyleOverrides', 'themeVariants', 'slotPropsCallback', // not supported yet + 'slotPropsCallbackWithPropsAsOwnerState', // not supported yet ], })); diff --git a/packages/mui-material/src/Portal/Portal.tsx b/packages/mui-material/src/Portal/Portal.tsx index 8bd141d8a5f858..a028eb856836e0 100644 --- a/packages/mui-material/src/Portal/Portal.tsx +++ b/packages/mui-material/src/Portal/Portal.tsx @@ -64,14 +64,10 @@ const Portal = React.forwardRef(function Portal( }; return React.cloneElement(children, newProps); } - return <React.Fragment>{children}</React.Fragment>; + return children; } - return ( - <React.Fragment> - {mountNode ? ReactDOM.createPortal(children, mountNode) : mountNode} - </React.Fragment> - ); + return mountNode ? ReactDOM.createPortal(children, mountNode) : mountNode; }) as React.ForwardRefExoticComponent<PortalProps & React.RefAttributes<Element>>; Portal.propTypes /* remove-proptypes */ = { diff --git a/packages/mui-material/src/Select/Select.d.ts b/packages/mui-material/src/Select/Select.d.ts index 6e7d1ebd5b8544..63efd5d898fd20 100644 --- a/packages/mui-material/src/Select/Select.d.ts +++ b/packages/mui-material/src/Select/Select.d.ts @@ -11,7 +11,7 @@ import { FilledInputProps } from '../FilledInput'; export { SelectChangeEvent }; export interface BaseSelectProps<Value = unknown> - extends StandardProps<InputProps, 'value' | 'onChange'> { + extends StandardProps<InputProps, 'value' | 'onChange' | 'placeholder'> { /** * If `true`, the width of the popover will automatically be set according to the items inside the * menu, otherwise it will be at least the width of the select input. @@ -152,7 +152,10 @@ export interface BaseSelectProps<Value = unknown> } export interface FilledSelectProps - extends Omit<FilledInputProps, 'value' | 'onChange' | 'id' | 'classes' | 'inputProps'> { + extends Omit< + FilledInputProps, + 'value' | 'onChange' | 'id' | 'classes' | 'inputProps' | 'placeholder' + > { /** * The variant to use. * @default 'outlined' @@ -161,7 +164,7 @@ export interface FilledSelectProps } export interface StandardSelectProps - extends Omit<InputProps, 'value' | 'onChange' | 'id' | 'classes' | 'inputProps'> { + extends Omit<InputProps, 'value' | 'onChange' | 'id' | 'classes' | 'inputProps' | 'placeholder'> { /** * The variant to use. * @default 'outlined' @@ -170,7 +173,10 @@ export interface StandardSelectProps } export interface OutlinedSelectProps - extends Omit<OutlinedInputProps, 'value' | 'onChange' | 'id' | 'classes' | 'inputProps'> { + extends Omit< + OutlinedInputProps, + 'value' | 'onChange' | 'id' | 'classes' | 'inputProps' | 'placeholder' + > { /** * The variant to use. * @default 'outlined' diff --git a/packages/mui-material/src/Select/SelectInput.js b/packages/mui-material/src/Select/SelectInput.js index e8e7dc989c6808..c38b326cd13d21 100644 --- a/packages/mui-material/src/Select/SelectInput.js +++ b/packages/mui-material/src/Select/SelectInput.js @@ -516,7 +516,9 @@ const SelectInput = React.forwardRef(function SelectInput(props, ref) { {/* So the vertical align positioning algorithm kicks in. */} {isEmpty(display) ? ( // notranslate needed while Google Translate will not fix zero-width space issue - <span className="notranslate">​</span> + <span className="notranslate" aria-hidden> + ​ + </span> ) : ( display )} diff --git a/packages/mui-material/src/Slider/Slider.test.js b/packages/mui-material/src/Slider/Slider.test.js index 07e62bf1bd03a6..8b8d868434dbbd 100644 --- a/packages/mui-material/src/Slider/Slider.test.js +++ b/packages/mui-material/src/Slider/Slider.test.js @@ -66,6 +66,7 @@ describe('<Slider />', () => { }, skip: [ 'slotPropsCallback', // not supported yet + 'slotPropsCallbackWithPropsAsOwnerState', // not supported yet ], }), ); diff --git a/packages/mui-material/src/Slider/SliderValueLabel.types.ts b/packages/mui-material/src/Slider/SliderValueLabel.types.ts index 8fac93f872dcb8..378930f97e345e 100644 --- a/packages/mui-material/src/Slider/SliderValueLabel.types.ts +++ b/packages/mui-material/src/Slider/SliderValueLabel.types.ts @@ -1,5 +1,5 @@ export interface SliderValueLabelProps { - children?: React.ReactElement<any>; + children?: React.ReactElement<{ className?: string; children?: React.ReactNode }>; className?: string; style?: React.CSSProperties; /** diff --git a/packages/mui-material/src/SpeedDial/SpeedDial.d.ts b/packages/mui-material/src/SpeedDial/SpeedDial.d.ts index c3076ce770175f..d255e40019d9b4 100644 --- a/packages/mui-material/src/SpeedDial/SpeedDial.d.ts +++ b/packages/mui-material/src/SpeedDial/SpeedDial.d.ts @@ -97,6 +97,7 @@ export interface SpeedDialProps * The component used for the transition. * [Follow this guide](https://mui.com/material-ui/transitions/#transitioncomponent-prop) to learn more about the requirements for this component. * @default Zoom + * * @deprecated Use `slots.transition` instead. This prop will be removed in v7. [How to migrate](/material-ui/migration/migrating-from-deprecated-apis/) */ TransitionComponent?: React.JSXElementConstructor<TransitionProps>; /** @@ -111,6 +112,7 @@ export interface SpeedDialProps /** * Props applied to the transition element. * By default, the element is based on this [`Transition`](https://reactcommunity.org/react-transition-group/transition/) component. + * @deprecated Use `slotProps.transition` instead. This prop will be removed in v7. [How to migrate](/material-ui/migration/migrating-from-deprecated-apis/) */ TransitionProps?: TransitionProps; } diff --git a/packages/mui-material/src/SpeedDial/SpeedDial.js b/packages/mui-material/src/SpeedDial/SpeedDial.js index 8d9d9fdbe4197e..96c97c6b58cad2 100644 --- a/packages/mui-material/src/SpeedDial/SpeedDial.js +++ b/packages/mui-material/src/SpeedDial/SpeedDial.js @@ -555,6 +555,7 @@ SpeedDial.propTypes /* remove-proptypes */ = { * The component used for the transition. * [Follow this guide](https://mui.com/material-ui/transitions/#transitioncomponent-prop) to learn more about the requirements for this component. * @default Zoom + * * @deprecated Use `slots.transition` instead. This prop will be removed in v7. [How to migrate](/material-ui/migration/migrating-from-deprecated-apis/) */ TransitionComponent: PropTypes.elementType, /** @@ -576,6 +577,7 @@ SpeedDial.propTypes /* remove-proptypes */ = { /** * Props applied to the transition element. * By default, the element is based on this [`Transition`](https://reactcommunity.org/react-transition-group/transition/) component. + * @deprecated Use `slotProps.transition` instead. This prop will be removed in v7. [How to migrate](/material-ui/migration/migrating-from-deprecated-apis/) */ TransitionProps: PropTypes.object, }; diff --git a/packages/mui-material/src/StepIcon/StepIcon.d.ts b/packages/mui-material/src/StepIcon/StepIcon.d.ts index d71906a033977e..eae78f0f3fcc14 100644 --- a/packages/mui-material/src/StepIcon/StepIcon.d.ts +++ b/packages/mui-material/src/StepIcon/StepIcon.d.ts @@ -1,11 +1,13 @@ import * as React from 'react'; import { SxProps } from '@mui/system'; -import { InternalStandardProps as StandardProps } from '..'; +import { InternalStandardProps as StandardProps, SvgIconOwnProps } from '..'; import { Theme } from '../styles'; import { StepIconClasses } from './stepIconClasses'; export interface StepIconProps - extends StandardProps<React.HTMLAttributes<HTMLDivElement>, 'children'> { + // TODO v7: extend React.HTMLAttributes<SVGSVGElement> as svg is root component of StepIcon not div + extends StandardProps<React.HTMLAttributes<HTMLDivElement>, 'color' | 'children'>, + Omit<SvgIconOwnProps, 'children'> { /** * Whether this step is active. * @default false @@ -46,5 +48,6 @@ export type StepIconClasskey = keyof NonNullable<StepIconProps['classes']>; * API: * * - [StepIcon API](https://mui.com/material-ui/api/step-icon/) + * - inherits [SvgIcon API](https://mui.com/material-ui/api/svg-icon/) */ export default function StepIcon(props: StepIconProps): React.JSX.Element; diff --git a/packages/mui-material/src/StepIcon/StepIcon.spec.tsx b/packages/mui-material/src/StepIcon/StepIcon.spec.tsx new file mode 100644 index 00000000000000..3a43cba9d79655 --- /dev/null +++ b/packages/mui-material/src/StepIcon/StepIcon.spec.tsx @@ -0,0 +1,5 @@ +import * as React from 'react'; +import StepIcon from '@mui/material/StepIcon'; + +<StepIcon icon={<div>icon</div>} />; +<StepIcon icon={<div>icon</div>} titleAccess="title" />; diff --git a/packages/mui-material/src/StepIcon/StepIcon.test.js b/packages/mui-material/src/StepIcon/StepIcon.test.js index 1469588b5bba7c..e4e0f7202545e4 100644 --- a/packages/mui-material/src/StepIcon/StepIcon.test.js +++ b/packages/mui-material/src/StepIcon/StepIcon.test.js @@ -2,6 +2,7 @@ import * as React from 'react'; import { expect } from 'chai'; import { createRenderer } from '@mui/internal-test-utils'; import StepIcon, { stepIconClasses as classes } from '@mui/material/StepIcon'; +import SvgIcon from '@mui/material/SvgIcon'; import describeConformance from '../../test/describeConformance'; describe('<StepIcon />', () => { @@ -9,7 +10,7 @@ describe('<StepIcon />', () => { describeConformance(<StepIcon icon={1} />, () => ({ classes, - inheritComponent: 'svg', + inheritComponent: SvgIcon, render, muiName: 'MuiStepIcon', testVariantProps: { completed: true }, diff --git a/packages/mui-material/src/StepLabel/StepLabel.d.ts b/packages/mui-material/src/StepLabel/StepLabel.d.ts index 7e4d8850401508..4139cc91998ad9 100644 --- a/packages/mui-material/src/StepLabel/StepLabel.d.ts +++ b/packages/mui-material/src/StepLabel/StepLabel.d.ts @@ -66,10 +66,12 @@ export interface StepLabelProps optional?: React.ReactNode; /** * The component to render in place of the [`StepIcon`](https://mui.com/material-ui/api/step-icon/). + * @deprecated Use `slots.stepIcon` instead. This prop will be removed in v7. See [Migrating from deprecated APIs](/material-ui/migration/migrating-from-deprecated-apis/) for more details. */ StepIconComponent?: React.ElementType<StepIconProps>; /** * Props applied to the [`StepIcon`](https://mui.com/material-ui/api/step-icon/) element. + * @deprecated Use `slotProps.stepIcon` instead. This prop will be removed in v7. See [Migrating from deprecated APIs](/material-ui/migration/migrating-from-deprecated-apis/) for more details. */ StepIconProps?: Partial<StepIconProps>; /** diff --git a/packages/mui-material/src/StepLabel/StepLabel.js b/packages/mui-material/src/StepLabel/StepLabel.js index fc590de90098a2..4567f3bac0fbd6 100644 --- a/packages/mui-material/src/StepLabel/StepLabel.js +++ b/packages/mui-material/src/StepLabel/StepLabel.js @@ -273,10 +273,12 @@ StepLabel.propTypes /* remove-proptypes */ = { }), /** * The component to render in place of the [`StepIcon`](https://mui.com/material-ui/api/step-icon/). + * @deprecated Use `slots.stepIcon` instead. This prop will be removed in v7. See [Migrating from deprecated APIs](/material-ui/migration/migrating-from-deprecated-apis/) for more details. */ StepIconComponent: PropTypes.elementType, /** * Props applied to the [`StepIcon`](https://mui.com/material-ui/api/step-icon/) element. + * @deprecated Use `slotProps.stepIcon` instead. This prop will be removed in v7. See [Migrating from deprecated APIs](/material-ui/migration/migrating-from-deprecated-apis/) for more details. */ StepIconProps: PropTypes.object, /** diff --git a/packages/mui-material/src/Tabs/ScrollbarSize.js b/packages/mui-material/src/Tabs/ScrollbarSize.js index da7ec73c0c741b..4f5676cc428d13 100644 --- a/packages/mui-material/src/Tabs/ScrollbarSize.js +++ b/packages/mui-material/src/Tabs/ScrollbarSize.js @@ -49,7 +49,7 @@ export default function ScrollbarSize(props) { onChange(scrollbarHeight.current); }, [onChange]); - return <div style={styles} ref={nodeRef} {...other} />; + return <div style={styles} {...other} ref={nodeRef} />; } ScrollbarSize.propTypes = { diff --git a/packages/mui-material/src/TextField/TextField.test.js b/packages/mui-material/src/TextField/TextField.test.js index fef0e80b808ea1..e1392563a0d5d7 100644 --- a/packages/mui-material/src/TextField/TextField.test.js +++ b/packages/mui-material/src/TextField/TextField.test.js @@ -60,7 +60,12 @@ describe('<TextField />', () => { testWithElement: null, }, }, - only: ['slotsProp', 'slotPropsProp', 'slotPropsCallback'], + only: [ + 'slotsProp', + 'slotPropsProp', + 'slotPropsCallback', // not supported yet + 'slotPropsCallbackWithPropsAsOwnerState', // not supported yet + ], }), ); diff --git a/packages/mui-material/src/Tooltip/Tooltip.d.ts b/packages/mui-material/src/Tooltip/Tooltip.d.ts index fab6531ac41d63..ea3d996befec52 100644 --- a/packages/mui-material/src/Tooltip/Tooltip.d.ts +++ b/packages/mui-material/src/Tooltip/Tooltip.d.ts @@ -2,12 +2,71 @@ import * as React from 'react'; import { MUIStyledCommonProps, SxProps } from '@mui/system'; import { PopperProps } from '@mui/material/Popper'; import { InternalStandardProps as StandardProps, Theme } from '..'; +import { CreateSlotsAndSlotProps, SlotProps } from '../utils/types'; import { TransitionProps } from '../transitions/transition'; import { TooltipClasses } from './tooltipClasses'; export interface TooltipComponentsPropsOverrides {} -export interface TooltipProps extends StandardProps<React.HTMLAttributes<HTMLDivElement>, 'title'> { +export interface TooltipPopperSlotPropsOverrides {} + +export interface TooltipTransitionSlotPropsOverrides {} + +export interface TooltipTooltipSlotPropsOverrides {} + +export interface TooltipArrowSlotPropsOverrides {} + +export interface TooltipSlots { + /** + * The component used for the popper. + * @default Popper + */ + popper: React.ElementType<PopperProps>; + /** + * The component used for the transition. + * [Follow this guide](https://mui.com/material-ui/transitions/#transitioncomponent-prop) to learn more about the requirements for this component. + * @default Grow + */ + transition: React.ElementType; + /** + * The component used for the tooltip. + */ + tooltip: React.ElementType; + /** + * The component used for the arrow. + */ + arrow: React.ElementType; +} + +export type TooltipSlotsAndSlotProps = CreateSlotsAndSlotProps< + TooltipSlots, + { + popper: SlotProps< + React.ElementType<PopperProps>, + TooltipPopperSlotPropsOverrides, + TooltipOwnerState + >; + transition: SlotProps< + React.ElementType<TransitionProps>, + TooltipTransitionSlotPropsOverrides, + TooltipOwnerState + >; + tooltip: SlotProps< + React.ElementType<React.HTMLProps<HTMLDivElement>>, + TooltipTooltipSlotPropsOverrides, + TooltipOwnerState + >; + arrow: SlotProps< + React.ElementType<React.HTMLProps<HTMLSpanElement>>, + TooltipArrowSlotPropsOverrides, + TooltipOwnerState + >; + } +>; + +export interface TooltipProps + extends StandardProps<React.HTMLAttributes<HTMLDivElement>, 'title'>, + TooltipSlotsAndSlotProps { /** * If `true`, adds an arrow to the tooltip. * @default false @@ -24,7 +83,7 @@ export interface TooltipProps extends StandardProps<React.HTMLAttributes<HTMLDiv /** * The components used for each slot inside. * - * @deprecated use the `slots` prop instead. This prop will be removed in v7. [How to migrate](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/). + * @deprecated use the `slots` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details. * * @default {} */ @@ -38,7 +97,7 @@ export interface TooltipProps extends StandardProps<React.HTMLAttributes<HTMLDiv * The extra props for the slot components. * You can override the existing props or add new ones. * - * @deprecated use the `slotProps` prop instead. This prop will be removed in v7. [How to migrate](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/). + * @deprecated use the `slotProps` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details. * * @default {} */ @@ -151,45 +210,15 @@ export interface TooltipProps extends StandardProps<React.HTMLAttributes<HTMLDiv | 'top'; /** * The component used for the popper. - * @default Popper + * @deprecated use the `slots.popper` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details. */ PopperComponent?: React.JSXElementConstructor<PopperProps>; /** * Props applied to the [`Popper`](https://mui.com/material-ui/api/popper/) element. + * @deprecated use the `slotProps.popper` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details. * @default {} */ PopperProps?: Partial<PopperProps>; - /** - * The extra props for the slot components. - * You can override the existing props or add new ones. - * - * This prop is an alias for the `componentsProps` prop, which will be deprecated in the future. - * - * @default {} - */ - slotProps?: { - popper?: Partial<PopperProps> & TooltipComponentsPropsOverrides; - transition?: TransitionProps & TooltipComponentsPropsOverrides; - tooltip?: React.HTMLProps<HTMLDivElement> & - MUIStyledCommonProps<Theme> & - TooltipComponentsPropsOverrides; - arrow?: React.HTMLProps<HTMLSpanElement> & - MUIStyledCommonProps<Theme> & - TooltipComponentsPropsOverrides; - }; - /** - * The components used for each slot inside. - * - * This prop is an alias for the `components` prop, which will be deprecated in the future. - * - * @default {} - */ - slots?: { - popper?: React.ElementType<PopperProps>; - transition?: React.ElementType; - tooltip?: React.ElementType; - arrow?: React.ElementType; - }; /** * The system prop that allows defining system overrides as well as additional CSS styles. */ @@ -201,7 +230,7 @@ export interface TooltipProps extends StandardProps<React.HTMLAttributes<HTMLDiv /** * The component used for the transition. * [Follow this guide](https://mui.com/material-ui/transitions/#transitioncomponent-prop) to learn more about the requirements for this component. - * @default Grow + * @deprecated use the `slots.transition` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details. */ TransitionComponent?: React.JSXElementConstructor< TransitionProps & { children: React.ReactElement<unknown, any> } @@ -209,10 +238,14 @@ export interface TooltipProps extends StandardProps<React.HTMLAttributes<HTMLDiv /** * Props applied to the transition element. * By default, the element is based on this [`Transition`](https://reactcommunity.org/react-transition-group/transition/) component. + * @deprecated use the `slotProps.transition` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details. + * @default {} */ TransitionProps?: TransitionProps; } +export interface TooltipOwnerState extends TooltipProps {} + /** * * Demos: diff --git a/packages/mui-material/src/Tooltip/Tooltip.js b/packages/mui-material/src/Tooltip/Tooltip.js index fa067ab0558c9c..289bf8a0a47f07 100644 --- a/packages/mui-material/src/Tooltip/Tooltip.js +++ b/packages/mui-material/src/Tooltip/Tooltip.js @@ -8,7 +8,6 @@ import composeClasses from '@mui/utils/composeClasses'; import { alpha } from '@mui/system/colorManipulator'; import { useRtl } from '@mui/system/RtlProvider'; import isFocusVisible from '@mui/utils/isFocusVisible'; -import appendOwnerState from '@mui/utils/appendOwnerState'; import getReactElementRef from '@mui/utils/getReactElementRef'; import { styled, useTheme } from '../zero-styled'; import memoTheme from '../utils/memoTheme'; @@ -20,6 +19,7 @@ import useEventCallback from '../utils/useEventCallback'; import useForkRef from '../utils/useForkRef'; import useId from '../utils/useId'; import useControlled from '../utils/useControlled'; +import useSlot from '../utils/useSlot'; import tooltipClasses, { getTooltipUtilityClass } from './tooltipClasses'; function round(value) { @@ -340,7 +340,7 @@ const Tooltip = React.forwardRef(function Tooltip(inProps, ref) { slotProps = {}, slots = {}, title, - TransitionComponent: TransitionComponentProp = Grow, + TransitionComponent: TransitionComponentProp, TransitionProps, ...other } = props; @@ -653,6 +653,18 @@ const Tooltip = React.forwardRef(function Tooltip(inProps, ref) { } } + const ownerState = { + ...props, + isRtl, + arrow, + disableInteractive, + placement, + PopperComponentProp, + touch: ignoreNonTouchEvents.current, + }; + + const resolvedPopperProps = + typeof slotProps.popper === 'function' ? slotProps.popper(ownerState) : slotProps.popper; const popperOptions = React.useMemo(() => { let tooltipModifiers = [ { @@ -669,72 +681,73 @@ const Tooltip = React.forwardRef(function Tooltip(inProps, ref) { tooltipModifiers = tooltipModifiers.concat(PopperProps.popperOptions.modifiers); } + if (resolvedPopperProps?.popperOptions?.modifiers) { + tooltipModifiers = tooltipModifiers.concat(resolvedPopperProps.popperOptions.modifiers); + } + return { ...PopperProps.popperOptions, + ...resolvedPopperProps?.popperOptions, modifiers: tooltipModifiers, }; - }, [arrowRef, PopperProps]); - - const ownerState = { - ...props, - isRtl, - arrow, - disableInteractive, - placement, - PopperComponentProp, - touch: ignoreNonTouchEvents.current, - }; + }, [arrowRef, PopperProps.popperOptions, resolvedPopperProps?.popperOptions]); const classes = useUtilityClasses(ownerState); - - const PopperComponent = slots.popper ?? components.Popper ?? TooltipPopper; - const TransitionComponent = - slots.transition ?? components.Transition ?? TransitionComponentProp ?? Grow; - const TooltipComponent = slots.tooltip ?? components.Tooltip ?? TooltipTooltip; - const ArrowComponent = slots.arrow ?? components.Arrow ?? TooltipArrow; - - const popperProps = appendOwnerState( - PopperComponent, - { - ...PopperProps, - ...(slotProps.popper ?? componentsProps.popper), - className: clsx( - classes.popper, - PopperProps?.className, - (slotProps.popper ?? componentsProps.popper)?.className, - ), + const resolvedTransitionProps = + typeof slotProps.transition === 'function' + ? slotProps.transition(ownerState) + : slotProps.transition; + const externalForwardedProps = { + slots: { + popper: components.Popper, + transition: components.Transition ?? TransitionComponentProp, + tooltip: components.Tooltip, + arrow: components.Arrow, + ...slots, + }, + slotProps: { + arrow: slotProps.arrow ?? componentsProps.arrow, + popper: { ...PopperProps, ...(resolvedPopperProps ?? componentsProps.popper) }, // resolvedPopperProps can be spread because it's already an object + tooltip: slotProps.tooltip ?? componentsProps.tooltip, + transition: { + ...TransitionProps, + ...(resolvedTransitionProps ?? componentsProps.transition), + }, }, + }; + + const [PopperSlot, popperSlotProps] = useSlot('popper', { + elementType: TooltipPopper, + externalForwardedProps, ownerState, - ); + className: clsx(classes.popper, PopperProps?.className), + }); - const transitionProps = appendOwnerState( - TransitionComponent, - { ...TransitionProps, ...(slotProps.transition ?? componentsProps.transition) }, + const [TransitionSlot, transitionSlotProps] = useSlot('transition', { + elementType: Grow, + externalForwardedProps, ownerState, - ); + }); - const tooltipProps = appendOwnerState( - TooltipComponent, - { - ...(slotProps.tooltip ?? componentsProps.tooltip), - className: clsx(classes.tooltip, (slotProps.tooltip ?? componentsProps.tooltip)?.className), - }, + const [TooltipSlot, tooltipSlotProps] = useSlot('tooltip', { + elementType: TooltipTooltip, + className: classes.tooltip, + externalForwardedProps, ownerState, - ); + }); - const tooltipArrowProps = appendOwnerState( - ArrowComponent, - { - ...(slotProps.arrow ?? componentsProps.arrow), - className: clsx(classes.arrow, (slotProps.arrow ?? componentsProps.arrow)?.className), - }, + const [ArrowSlot, arrowSlotProps] = useSlot('arrow', { + elementType: TooltipArrow, + className: classes.arrow, + externalForwardedProps, ownerState, - ); + ref: setArrowRef, + }); return ( <React.Fragment> {React.cloneElement(children, childrenProps)} - <PopperComponent + <PopperSlot as={PopperComponentProp ?? Popper} placement={placement} anchorEl={ @@ -756,22 +769,22 @@ const Tooltip = React.forwardRef(function Tooltip(inProps, ref) { id={id} transition {...interactiveWrapperListeners} - {...popperProps} + {...popperSlotProps} popperOptions={popperOptions} > {({ TransitionProps: TransitionPropsInner }) => ( - <TransitionComponent + <TransitionSlot timeout={theme.transitions.duration.shorter} {...TransitionPropsInner} - {...transitionProps} + {...transitionSlotProps} > - <TooltipComponent {...tooltipProps}> + <TooltipSlot {...tooltipSlotProps}> {title} - {arrow ? <ArrowComponent {...tooltipArrowProps} ref={setArrowRef} /> : null} - </TooltipComponent> - </TransitionComponent> + {arrow ? <ArrowSlot {...arrowSlotProps} /> : null} + </TooltipSlot> + </TransitionSlot> )} - </PopperComponent> + </PopperSlot> </React.Fragment> ); }); @@ -801,7 +814,7 @@ Tooltip.propTypes /* remove-proptypes */ = { /** * The components used for each slot inside. * - * @deprecated use the `slots` prop instead. This prop will be removed in v7. [How to migrate](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/). + * @deprecated use the `slots` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details. * * @default {} */ @@ -815,7 +828,7 @@ Tooltip.propTypes /* remove-proptypes */ = { * The extra props for the slot components. * You can override the existing props or add new ones. * - * @deprecated use the `slotProps` prop instead. This prop will be removed in v7. [How to migrate](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/). + * @deprecated use the `slotProps` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details. * * @default {} */ @@ -925,33 +938,27 @@ Tooltip.propTypes /* remove-proptypes */ = { ]), /** * The component used for the popper. - * @default Popper + * @deprecated use the `slots.popper` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details. */ PopperComponent: PropTypes.elementType, /** * Props applied to the [`Popper`](https://mui.com/material-ui/api/popper/) element. + * @deprecated use the `slotProps.popper` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details. * @default {} */ PopperProps: PropTypes.object, /** - * The extra props for the slot components. - * You can override the existing props or add new ones. - * - * This prop is an alias for the `componentsProps` prop, which will be deprecated in the future. - * + * The props used for each slot inside. * @default {} */ slotProps: PropTypes.shape({ - arrow: PropTypes.object, - popper: PropTypes.object, - tooltip: PropTypes.object, - transition: PropTypes.object, + arrow: PropTypes.oneOfType([PropTypes.func, PropTypes.object]), + popper: PropTypes.oneOfType([PropTypes.func, PropTypes.object]), + tooltip: PropTypes.oneOfType([PropTypes.func, PropTypes.object]), + transition: PropTypes.oneOfType([PropTypes.func, PropTypes.object]), }), /** * The components used for each slot inside. - * - * This prop is an alias for the `components` prop, which will be deprecated in the future. - * * @default {} */ slots: PropTypes.shape({ @@ -975,12 +982,14 @@ Tooltip.propTypes /* remove-proptypes */ = { /** * The component used for the transition. * [Follow this guide](https://mui.com/material-ui/transitions/#transitioncomponent-prop) to learn more about the requirements for this component. - * @default Grow + * @deprecated use the `slots.transition` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details. */ TransitionComponent: PropTypes.elementType, /** * Props applied to the transition element. * By default, the element is based on this [`Transition`](https://reactcommunity.org/react-transition-group/transition/) component. + * @deprecated use the `slotProps.transition` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details. + * @default {} */ TransitionProps: PropTypes.object, }; diff --git a/packages/mui-material/src/Tooltip/Tooltip.spec.tsx b/packages/mui-material/src/Tooltip/Tooltip.spec.tsx new file mode 100644 index 00000000000000..1611f1b1ef5b63 --- /dev/null +++ b/packages/mui-material/src/Tooltip/Tooltip.spec.tsx @@ -0,0 +1,38 @@ +import * as React from 'react'; +import Tooltip from '@mui/material/Tooltip'; +import Popper from '@mui/material/Popper'; + +<Tooltip title="Hello"> + <button type="button">Hover or touch me</button> +</Tooltip>; + +<Tooltip + title="Hello" + slots={{ + popper: Popper, + arrow: 'span', + tooltip: 'div', + transition: 'div', + }} + slotProps={{ + popper: { + modifiers: [ + { + name: 'offset', + options: { + offset: [0, 8], + }, + }, + ], + }, + arrow: { + 'aria-hidden': true, + }, + tooltip: {}, + transition: { + timeout: 500, + }, + }} +> + <button type="button">Hover or touch me</button> +</Tooltip>; diff --git a/packages/mui-material/src/Tooltip/Tooltip.test.js b/packages/mui-material/src/Tooltip/Tooltip.test.js index 0a4d51d7a2fa39..4092e11be4b885 100644 --- a/packages/mui-material/src/Tooltip/Tooltip.test.js +++ b/packages/mui-material/src/Tooltip/Tooltip.test.js @@ -32,6 +32,10 @@ describe('<Tooltip />', () => { ); } + const TestTooltipSlot = React.forwardRef(function TestTooltipSlot({ ownerState, ...props }, ref) { + return <div data-testid="custom" ref={ref} {...props} />; + }); + describeConformance( <Tooltip title="Hello World" arrow open> <button type="submit">Hello World</button> @@ -52,15 +56,14 @@ describe('<Tooltip />', () => { testWithElement: null, }, transition: { testWithElement: null }, - tooltip: { expectedClassName: classes.tooltip, testWithElement: null }, + tooltip: { + expectedClassName: classes.tooltip, + testWithComponent: TestTooltipSlot, + testWithElement: TestTooltipSlot, + }, arrow: { expectedClassName: classes.arrow }, }, - skip: [ - 'componentProp', - 'componentsProp', - 'themeVariants', - 'slotPropsCallback', // not supported yet - ], + skip: ['componentProp', 'componentsProp', 'themeVariants'], }), ); @@ -862,6 +865,82 @@ describe('<Tooltip />', () => { }); }); + describe('prop: slotProps.popper', () => { + it('should merge popperOptions with arrow modifier', () => { + const popperRef = React.createRef(); + render( + <Tooltip + title="Hello World" + open + arrow + slotProps={{ + popper: { + popperRef, + popperOptions: { + modifiers: [ + { + name: 'arrow', + options: { + padding: 8, + }, + }, + ], + }, + }, + }} + > + <button id="testChild" type="submit"> + Hello World + </button> + </Tooltip>, + ); + + const appliedArrowModifier = popperRef.current.state.orderedModifiers.find( + (modifier) => modifier.name === 'arrow', + ); + + expect(appliedArrowModifier).not.to.equal(undefined); + expect(appliedArrowModifier.enabled).to.equal(true); + expect(appliedArrowModifier.options.padding).to.equal(8); + }); + + it('should merge popperOptions with custom modifier', () => { + const popperRef = React.createRef(); + render( + <Tooltip + title="Hello World" + open + arrow + slotProps={{ + popper: { + popperRef, + popperOptions: { + modifiers: [ + { + name: 'foo', + enabled: true, + phase: 'main', + fn: () => {}, + }, + ], + }, + }, + }} + > + <button id="testChild" type="submit"> + Hello World + </button> + </Tooltip>, + ); + + const appliedComputeStylesModifier = popperRef.current.state.orderedModifiers.find( + (modifier) => modifier.name === 'foo', + ); + + expect(appliedComputeStylesModifier).not.to.equal(undefined); + }); + }); + describe('prop forwarding', () => { it('should forward props to the child element', () => { const { getByText } = render( @@ -1247,6 +1326,50 @@ describe('<Tooltip />', () => { }); }); + describe('prop: slots', () => { + it('can render a different Popper component', () => { + function CustomPopper() { + return <div data-testid="CustomPopper" />; + } + render( + <Tooltip title="Hello World" open slots={{ popper: CustomPopper }}> + <button id="testChild" type="submit"> + Hello World + </button> + </Tooltip>, + ); + expect(screen.getByTestId('CustomPopper')).toBeVisible(); + }); + + it('can render a different Tooltip component', () => { + const CustomTooltip = React.forwardRef((props, ref) => ( + <div data-testid="CustomTooltip" ref={ref} /> + )); + render( + <Tooltip title="Hello World" open slots={{ tooltip: CustomTooltip }}> + <button id="testChild" type="submit"> + Hello World + </button> + </Tooltip>, + ); + expect(screen.getByTestId('CustomTooltip')).toBeVisible(); + }); + + it('can render a different Arrow component', () => { + const CustomArrow = React.forwardRef((props, ref) => ( + <div data-testid="CustomArrow" ref={ref} /> + )); + render( + <Tooltip title="Hello World" open arrow slots={{ arrow: CustomArrow }}> + <button id="testChild" type="submit"> + Hello World + </button> + </Tooltip>, + ); + expect(screen.getByTestId('CustomArrow')).toBeVisible(); + }); + }); + describe('user-select state', () => { let prevWebkitUserSelect; diff --git a/packages/mui-material/src/Unstable_TrapFocus/FocusTrap.tsx b/packages/mui-material/src/Unstable_TrapFocus/FocusTrap.tsx index 0f6085f5b9f1d9..398a7b37421019 100644 --- a/packages/mui-material/src/Unstable_TrapFocus/FocusTrap.tsx +++ b/packages/mui-material/src/Unstable_TrapFocus/FocusTrap.tsx @@ -324,7 +324,7 @@ function FocusTrap(props: FocusTrapProps): React.JSX.Element { }; }, [disableAutoFocus, disableEnforceFocus, disableRestoreFocus, isEnabled, open, getTabbable]); - const onFocus = (event: FocusEvent) => { + const onFocus = (event: React.FocusEvent<Element, Element>) => { if (nodeToRestore.current === null) { nodeToRestore.current = event.relatedTarget; } diff --git a/packages/mui-material/src/Unstable_TrapFocus/FocusTrap.types.ts b/packages/mui-material/src/Unstable_TrapFocus/FocusTrap.types.ts index 462100ec696479..399ddd84ea210a 100644 --- a/packages/mui-material/src/Unstable_TrapFocus/FocusTrap.types.ts +++ b/packages/mui-material/src/Unstable_TrapFocus/FocusTrap.types.ts @@ -24,7 +24,10 @@ export interface FocusTrapProps { /** * A single child content element. */ - children: React.ReactElement<any>; + children: React.ReactElement<{ + onFocus?: React.FocusEventHandler; + ref?: React.RefCallback<any> | null; + }>; /** * If `true`, the focus trap will not automatically shift focus to itself when it opens, and * replace it to the last focused element when it closes. diff --git a/packages/mui-material/src/styles/ThemeProvider.tsx b/packages/mui-material/src/styles/ThemeProvider.tsx index ffdab139176ea9..e9e0dc5fb94c82 100644 --- a/packages/mui-material/src/styles/ThemeProvider.tsx +++ b/packages/mui-material/src/styles/ThemeProvider.tsx @@ -57,6 +57,12 @@ export interface ThemeProviderProps<Theme = DefaultTheme> extends ThemeProviderC * @default 'mui-color-scheme' */ colorSchemeStorageKey?: string; + /* + * If `true`, ThemeProvider will not rerender and the initial value of `mode` comes from the local storage. + * For SSR applications, you must ensure that the server render output must match the initial render output on the client. + * @default false + */ + noSsr?: boolean; /** * Disable CSS transitions when switching between modes or color schemes * @default false diff --git a/packages/mui-material/src/styles/ThemeProviderWithVars.test.js b/packages/mui-material/src/styles/ThemeProviderWithVars.test.js index 6311728b415ca3..e06a6d304d63dd 100644 --- a/packages/mui-material/src/styles/ThemeProviderWithVars.test.js +++ b/packages/mui-material/src/styles/ThemeProviderWithVars.test.js @@ -1,8 +1,15 @@ import * as React from 'react'; import { expect } from 'chai'; -import { createRenderer, screen } from '@mui/internal-test-utils'; +import { createRenderer, screen, fireEvent } from '@mui/internal-test-utils'; import Box from '@mui/material/Box'; -import { CssVarsProvider, extendTheme, useTheme } from '@mui/material/styles'; +import { + CssVarsProvider, + extendTheme, + useTheme, + ThemeProvider, + createTheme, + useColorScheme, +} from '@mui/material/styles'; describe('[Material UI] ThemeProviderWithVars', () => { let originalMatchmedia; @@ -360,4 +367,76 @@ describe('[Material UI] ThemeProviderWithVars', () => { borderBottomRightRadius: '16px', }); }); + + it('warns when using `setMode` without configuring `colorSchemeSelector`', () => { + function Test() { + const { setMode } = useColorScheme(); + return <button onClick={() => setMode('dark')}>Dark</button>; + } + render( + <ThemeProvider + theme={createTheme({ cssVariables: true, colorSchemes: { light: true, dark: true } })} + > + <Test /> + </ThemeProvider>, + ); + + expect(() => { + fireEvent.click(screen.getByText('Dark')); + }).toErrorDev([ + 'MUI: The `setMode` function has no effect if `colorSchemeSelector` is `media` (`media` is the default value).\nTo toggle the mode manually, please configure `colorSchemeSelector` to use a class or data attribute.\nTo learn more, visit https://mui.com/material-ui/customization/css-theme-variables/configuration/#toggling-dark-mode-manually', + ]); + }); + + it('do not warn when using `setMode` with `colorSchemeSelector` that is not `media`', () => { + function Test() { + const { setMode } = useColorScheme(); + return <button onClick={() => setMode('dark')}>Dark</button>; + } + render( + <ThemeProvider + theme={createTheme({ + cssVariables: { colorSchemeSelector: 'class' }, + colorSchemes: { light: true, dark: true }, + })} + > + <Test /> + </ThemeProvider>, + ); + + expect(() => { + fireEvent.click(screen.getByText('Dark')); + }).not.toErrorDev(); + }); + + it('theme should remain the same when ThemeProvider rerenders', () => { + const theme = createTheme({ cssVariables: true }); + + function Inner() { + const upperTheme = useTheme(); + const themeRef = React.useRef(upperTheme); + const [changed, setChanged] = React.useState(false); + React.useEffect(() => { + if (themeRef.current !== upperTheme) { + setChanged(true); + } + }, [upperTheme]); + return changed ? <div data-testid="theme-changed" /> : null; + } + function App() { + const [, setState] = React.useState({}); + const rerender = () => setState({}); + return ( + <ThemeProvider theme={theme}> + <button onClick={() => rerender()}>rerender</button> + <Inner /> + </ThemeProvider> + ); + } + render(<App />); + + fireEvent.click(screen.getByRole('button')); + + expect(screen.queryByTestId('theme-changed')).to.equal(null); + }); }); diff --git a/packages/mui-material/src/styles/createTheme.spec.ts b/packages/mui-material/src/styles/createTheme.spec.ts index e9616276ef22fe..2f21e1ff6bab57 100644 --- a/packages/mui-material/src/styles/createTheme.spec.ts +++ b/packages/mui-material/src/styles/createTheme.spec.ts @@ -155,6 +155,16 @@ const theme = createTheme(); }, }, }, + MuiGrid2: { + styleOverrides: { + root: { + justifyContent: 'space-between', + }, + container: { + justifyContent: 'space-between', + }, + }, + }, }, }); } diff --git a/packages/mui-material/src/styles/createTheme.test.js b/packages/mui-material/src/styles/createTheme.test.js index 26df7f1fdf6398..e4351045dffa8f 100644 --- a/packages/mui-material/src/styles/createTheme.test.js +++ b/packages/mui-material/src/styles/createTheme.test.js @@ -221,6 +221,22 @@ describe('createTheme', () => { expect(theme.colorSchemes.dark).to.not.equal(undefined); }); + it('should be able to customize tonal offset', () => { + const theme = createTheme({ + cssVariables: true, + palette: { + primary: { + main: green[500], + }, + tonalOffset: { + light: 0.1, + dark: 0.9, + }, + }, + }); + expect(theme.palette.primary.main).to.equal('#4caf50'); + }); + describe('spacing', () => { it('should provide the default spacing', () => { const theme = createTheme({ cssVariables: true }); diff --git a/packages/mui-material/src/styles/createThemeWithVars.js b/packages/mui-material/src/styles/createThemeWithVars.js index 9e1fd9f76707e9..fde30948676edf 100644 --- a/packages/mui-material/src/styles/createThemeWithVars.js +++ b/packages/mui-material/src/styles/createThemeWithVars.js @@ -40,7 +40,7 @@ function setColor(obj, key, defaultValue) { } function toRgb(color) { - if (!color || !color.startsWith('hsl')) { + if (typeof color !== 'string' || !color.startsWith('hsl')) { return color; } return hslToRgb(color); @@ -421,7 +421,7 @@ export default function createThemeWithVars(options = {}, ...args) { // The default palettes (primary, secondary, error, info, success, and warning) errors are handled by the above `createTheme(...)`. - if (colors && typeof colors === 'object') { + if (color !== 'tonalOffset' && colors && typeof colors === 'object') { // Silent the error for custom palettes. if (colors.main) { setColor(palette[color], 'mainChannel', safeColorChannel(toRgb(colors.main))); diff --git a/packages/mui-material/src/styles/overrides.d.ts b/packages/mui-material/src/styles/overrides.d.ts index 4228da8c3e8f33..4f5e53a43a28c0 100644 --- a/packages/mui-material/src/styles/overrides.d.ts +++ b/packages/mui-material/src/styles/overrides.d.ts @@ -45,7 +45,7 @@ import { FormGroupClassKey } from '../FormGroup'; import { FormHelperTextClassKey } from '../FormHelperText'; import { FormLabelClassKey } from '../FormLabel'; import { GridClassKey } from '../Grid'; -import { Grid2Slot } from '../Grid2'; +import { Grid2ClassKey } from '../Grid2'; import { IconButtonClassKey } from '../IconButton'; import { IconClassKey } from '../Icon'; import { ImageListClassKey } from '../ImageList'; @@ -190,7 +190,7 @@ export interface ComponentNameToClassKey { MuiFormHelperText: FormHelperTextClassKey; MuiFormLabel: FormLabelClassKey; MuiGrid: GridClassKey; - MuiGrid2: Grid2Slot; + MuiGrid2: Grid2ClassKey; MuiIcon: IconClassKey; MuiIconButton: IconButtonClassKey; MuiImageList: ImageListClassKey; diff --git a/packages/mui-material/src/useMediaQuery/index.d.ts b/packages/mui-material/src/useMediaQuery/index.d.ts index 534d0663384e7f..8ce15a6118cb17 100644 --- a/packages/mui-material/src/useMediaQuery/index.d.ts +++ b/packages/mui-material/src/useMediaQuery/index.d.ts @@ -3,8 +3,9 @@ import { Theme } from '../styles/createTheme'; export * from '@mui/system/useMediaQuery'; -declare function useMediaQuery( - queryInput: string | ((theme: Theme) => string), +// TODO v7: remove the generic. It's only used to prevent a breaking change in v6 from system's useMediaQuery in https://github.com/mui/material-ui/pull/44339. +declare function useMediaQuery<T = Theme>( + queryInput: string | ((theme: T) => string), options?: UseMediaQueryOptions, ): boolean; diff --git a/packages/mui-material/src/utils/useSlot.test.tsx b/packages/mui-material/src/utils/useSlot.test.tsx index 62b0b3ea9a7356..8a6caaecc1e586 100644 --- a/packages/mui-material/src/utils/useSlot.test.tsx +++ b/packages/mui-material/src/utils/useSlot.test.tsx @@ -64,16 +64,10 @@ describe('useSlot', () => { elementType: ItemDecorator, externalForwardedProps: props, ownerState: {}, - getSlotOwnerState: (mergedProps) => ({ - size: mergedProps.size ?? 'md', - }), }); return ( <SlotRoot {...rootProps}> - <SlotDecorator - {...decoratorProps} - className={`${decoratorProps.className} size-${decoratorProps.ownerState.size}`} - /> + <SlotDecorator {...decoratorProps} /> </SlotRoot> ); }); @@ -100,16 +94,6 @@ describe('useSlot', () => { expect(getByRole('button').firstChild).to.have.class('foo-bar'); }); - it('slot has default size `md`', () => { - const { getByRole } = render(<Item />); - expect(getByRole('button').firstChild).to.have.class('size-md'); - }); - - it('slot ownerstate should be overridable', () => { - const { getByRole } = render(<Item slotProps={{ decorator: { size: 'sm' } }} />); - expect(getByRole('button').firstChild).to.have.class('size-sm'); - }); - it('slotProps has higher priority', () => { const { getByRole } = render( <Item data-item="foo" slotProps={{ root: { 'data-item': 'bar' } }} />, diff --git a/packages/mui-material/src/utils/useSlot.ts b/packages/mui-material/src/utils/useSlot.ts index 94203e7356a431..c3ac14e91956d5 100644 --- a/packages/mui-material/src/utils/useSlot.ts +++ b/packages/mui-material/src/utils/useSlot.ts @@ -77,22 +77,6 @@ export default function useSlot< externalForwardedProps: ExternalForwardedProps; getSlotProps?: (other: EventHandlers) => WithCommonProps<SlotProps>; additionalProps?: WithCommonProps<AdditionalProps>; - - // Material UI specifics - /** - * For overriding the component's ownerState for the slot. - * This is required for some components that need styling via `ownerState`. - * - * It is a function because `slotProps.{slot}` can be a function which has to be resolved first. - */ - getSlotOwnerState?: ( - mergedProps: AdditionalProps & - SlotProps & - ExternalSlotProps & - ExtractComponentProps< - Exclude<Exclude<ExternalForwardedProps['slotProps'], undefined>[T], undefined> - >, - ) => SlotOwnerState; /** * props forward to `T` only if the `slotProps.*.component` is not provided. * e.g. Autocomplete's listbox uses Popper + StyledComponent @@ -105,7 +89,6 @@ export default function useSlot< elementType: initialElementType, ownerState, externalForwardedProps, - getSlotOwnerState, internalForwardedProps, ...useSlotPropsParams } = parameters; @@ -134,9 +117,6 @@ export default function useSlot< const ref = useForkRef(internalRef, resolvedComponentsProps?.ref, parameters.ref); - const slotOwnerState = getSlotOwnerState ? getSlotOwnerState(mergedProps as any) : {}; - const finalOwnerState = { ...ownerState, ...slotOwnerState } as any; - const LeafComponent = (name === 'root' ? slotComponent || rootComponent : slotComponent) as | React.ElementType | undefined; @@ -152,13 +132,9 @@ export default function useSlot< }), ref, }, - finalOwnerState, + ownerState, ); - Object.keys(slotOwnerState).forEach((propName) => { - delete props[propName]; - }); - return [elementType, props] as [ ElementType, { diff --git a/packages/mui-material/test/integration/MenuList.test.js b/packages/mui-material/test/integration/MenuList.test.js index 8e362f22c3168e..957b23c2fe8a2e 100644 --- a/packages/mui-material/test/integration/MenuList.test.js +++ b/packages/mui-material/test/integration/MenuList.test.js @@ -528,7 +528,12 @@ describe('<MenuList> integration', () => { expect(getByText('Arcansas')).toHaveFocus(); }); - it('should not get focusVisible class on click', async () => { + it('should not get focusVisible class on click', async function test() { + if (/jsdom/.test(window.navigator.userAgent)) { + // JSDOM doesn't support :focus-visible + this.skip(); + } + const { user, getByText } = render( <MenuList> <MenuItem focusVisibleClassName="focus-visible">Arizona</MenuItem> diff --git a/packages/mui-private-theming/package.json b/packages/mui-private-theming/package.json index 42140082d25586..d481bb48b8dd57 100644 --- a/packages/mui-private-theming/package.json +++ b/packages/mui-private-theming/package.json @@ -1,6 +1,6 @@ { "name": "@mui/private-theming", - "version": "6.1.6", + "version": "6.1.10", "private": false, "author": "MUI Team", "description": "Private - The React theme context to be shared between `@mui/styles` and `@mui/material`.", diff --git a/packages/mui-styled-engine-sc/package.json b/packages/mui-styled-engine-sc/package.json index 503bddbe4e3519..e0070e82f0a200 100644 --- a/packages/mui-styled-engine-sc/package.json +++ b/packages/mui-styled-engine-sc/package.json @@ -1,6 +1,6 @@ { "name": "@mui/styled-engine-sc", - "version": "6.1.6", + "version": "6.1.10", "private": false, "author": "MUI Team", "description": "styled() API wrapper package for styled-components.", @@ -38,6 +38,7 @@ }, "dependencies": { "@babel/runtime": "^7.26.0", + "@types/hoist-non-react-statics": "^3.3.5", "csstype": "^3.1.3", "hoist-non-react-statics": "^3.3.2", "prop-types": "^15.8.1" @@ -45,7 +46,6 @@ "devDependencies": { "@mui/internal-test-utils": "workspace:^", "@types/chai": "^4.3.20", - "@types/hoist-non-react-statics": "^3.3.5", "@types/react": "^18.3.12", "chai": "^4.5.0", "react": "^18.3.1", diff --git a/packages/mui-styled-engine-sc/src/index.d.ts b/packages/mui-styled-engine-sc/src/index.d.ts index 9b1de0cdb5b650..594f7b84acddc2 100644 --- a/packages/mui-styled-engine-sc/src/index.d.ts +++ b/packages/mui-styled-engine-sc/src/index.d.ts @@ -81,6 +81,14 @@ export function internal_mutateStyles( processor: (styles: any) => any, ): void; +// Not needed anymore, but fixes https://github.com/mui/material-ui/issues/44112 +// TODO: Remove it in v7 +// eslint-disable-next-line @typescript-eslint/naming-convention +export function internal_processStyles( + tag: React.ElementType, + processor: (styles: any) => any, +): void; + // eslint-disable-next-line @typescript-eslint/naming-convention export function internal_serializeStyles<P>(styles: Interpolation<P>): object; diff --git a/packages/mui-styled-engine-sc/src/index.js b/packages/mui-styled-engine-sc/src/index.js index 435e22b95d07e4..ef12d36e310751 100644 --- a/packages/mui-styled-engine-sc/src/index.js +++ b/packages/mui-styled-engine-sc/src/index.js @@ -48,6 +48,13 @@ export function internal_mutateStyles(tag, processor) { } } +// Not needed anymore, but fixes https://github.com/mui/material-ui/issues/44112 +// TODO: Remove it in v7 +// eslint-disable-next-line @typescript-eslint/naming-convention +export function internal_processStyles(tag, processor) { + return internal_mutateStyles(tag, processor); +} + // eslint-disable-next-line @typescript-eslint/naming-convention export function internal_serializeStyles(styles) { return styles; diff --git a/packages/mui-styled-engine/package.json b/packages/mui-styled-engine/package.json index 683cb5a010f24a..5e5ef02705fd6c 100644 --- a/packages/mui-styled-engine/package.json +++ b/packages/mui-styled-engine/package.json @@ -1,6 +1,6 @@ { "name": "@mui/styled-engine", - "version": "6.1.6", + "version": "6.1.10", "private": false, "author": "MUI Team", "description": "styled() API wrapper package for emotion.", @@ -38,15 +38,15 @@ }, "dependencies": { "@babel/runtime": "^7.26.0", - "@emotion/cache": "^11.13.1", - "@emotion/serialize": "^1.3.2", + "@emotion/cache": "^11.13.5", + "@emotion/serialize": "^1.3.3", "@emotion/sheet": "^1.4.0", "csstype": "^3.1.3", "prop-types": "^15.8.1" }, "devDependencies": { - "@emotion/react": "^11.13.3", - "@emotion/styled": "^11.13.0", + "@emotion/react": "^11.13.5", + "@emotion/styled": "^11.13.5", "@mui/internal-test-utils": "workspace:^", "@mui/styled-engine": "workspace:*", "@types/chai": "^4.3.20", diff --git a/packages/mui-styles/package.json b/packages/mui-styles/package.json index d435a29f87c812..aa42c9b06da2bd 100644 --- a/packages/mui-styles/package.json +++ b/packages/mui-styles/package.json @@ -1,6 +1,6 @@ { "name": "@mui/styles", - "version": "6.1.6", + "version": "6.1.10", "private": false, "author": "MUI Team", "description": "MUI Styles - The legacy JSS-based styling solution of Material UI.", diff --git a/packages/mui-styles/test/styles.spec.tsx b/packages/mui-styles/test/styles.spec.tsx index 8ed6a1d215f263..34ab5cac0f3711 100644 --- a/packages/mui-styles/test/styles.spec.tsx +++ b/packages/mui-styles/test/styles.spec.tsx @@ -215,7 +215,7 @@ withStyles((theme) => }); interface ListItemContentProps extends WithStyles<typeof styles> { - children?: React.ReactElement<any>; + children?: React.ReactElement<unknown>; inset?: boolean; row?: boolean; } diff --git a/packages/mui-system/package.json b/packages/mui-system/package.json index cfe670943e7987..8fd9cc9df599aa 100644 --- a/packages/mui-system/package.json +++ b/packages/mui-system/package.json @@ -1,6 +1,6 @@ { "name": "@mui/system", - "version": "6.1.6", + "version": "6.1.10", "private": false, "author": "MUI Team", "description": "MUI System is a set of CSS utilities to help you build custom designs more efficiently. It makes it possible to rapidly lay out custom designs.", @@ -49,8 +49,8 @@ "prop-types": "^15.8.1" }, "devDependencies": { - "@emotion/react": "^11.13.3", - "@emotion/styled": "^11.13.0", + "@emotion/react": "^11.13.5", + "@emotion/styled": "^11.13.5", "@mui/internal-test-utils": "workspace:^", "@mui/system": "workspace:*", "@types/chai": "^4.3.20", diff --git a/packages/mui-system/src/Grid/createGrid.tsx b/packages/mui-system/src/Grid/createGrid.tsx index 790e0f55026c75..f0125b286af0c2 100644 --- a/packages/mui-system/src/Grid/createGrid.tsx +++ b/packages/mui-system/src/Grid/createGrid.tsx @@ -7,7 +7,7 @@ import generateUtilityClass from '@mui/utils/generateUtilityClass'; import composeClasses from '@mui/utils/composeClasses'; import systemStyled from '../styled'; import useThemePropsSystem from '../useThemeProps'; -import useTheme from '../useTheme'; +import useThemeSystem from '../useTheme'; import { extendSxProp } from '../styleFunctionSx'; import createTheme, { Breakpoint, Breakpoints } from '../createTheme'; import { @@ -46,6 +46,7 @@ export default function createGrid( options: { createStyledComponent?: typeof defaultCreateStyledComponent; useThemeProps?: typeof useThemePropsDefault; + useTheme?: typeof useThemeSystem; componentName?: string; } = {}, ) { @@ -53,6 +54,7 @@ export default function createGrid( // This will allow adding custom styled fn (for example for custom sx style function) createStyledComponent = defaultCreateStyledComponent, useThemeProps = useThemePropsDefault, + useTheme = useThemeSystem, componentName = 'MuiGrid', } = options; diff --git a/packages/mui-system/src/createTheme/createSpacing.test.ts b/packages/mui-system/src/createTheme/createSpacing.test.ts index 41f917b4c881bf..e11f7193d5ca37 100644 --- a/packages/mui-system/src/createTheme/createSpacing.test.ts +++ b/packages/mui-system/src/createTheme/createSpacing.test.ts @@ -51,6 +51,12 @@ describe('createSpacing', () => { expect(spacing(1, 'auto', 2, 3)).to.equal('0.25rem auto 0.5rem 0.75rem'); }); + it('should support valid CSS unit', () => { + const spacing = createSpacing(); + expect(spacing('16px')).to.equal('16px'); + expect(spacing('1rem')).to.equal('1rem'); + }); + describe('warnings', () => { it('should warn for wrong input', () => { expect(() => { diff --git a/packages/mui-system/src/cssVars/createCssVarsProvider.js b/packages/mui-system/src/cssVars/createCssVarsProvider.js index 9b521128ec13ab..64ed9f9fc4037d 100644 --- a/packages/mui-system/src/cssVars/createCssVarsProvider.js +++ b/packages/mui-system/src/cssVars/createCssVarsProvider.js @@ -48,6 +48,9 @@ export default function createCssVarsProvider(options) { const useColorScheme = () => React.useContext(ColorSchemeContext) || defaultContext; + const defaultColorSchemes = {}; + const defaultComponents = {}; + function CssVarsProvider(props) { const { children, @@ -61,6 +64,7 @@ export default function createCssVarsProvider(options) { disableNestedContext = false, disableStyleSheetGeneration = false, defaultMode: initialMode = 'system', + noSsr, } = props; const hasMounted = React.useRef(false); const upperTheme = muiUseTheme(); @@ -74,12 +78,12 @@ export default function createCssVarsProvider(options) { return typeof defaultTheme === 'function' ? defaultTheme() : defaultTheme; }, [themeProp]); const scopedTheme = initialTheme[themeId]; + const restThemeProp = scopedTheme || initialTheme; const { - colorSchemes = {}, - components = {}, + colorSchemes = defaultColorSchemes, + components = defaultComponents, cssVarPrefix, - ...restThemeProp - } = scopedTheme || initialTheme; + } = restThemeProp; const joinedColorSchemes = Object.keys(colorSchemes) .filter((k) => !!colorSchemes[k]) .join(','); @@ -114,6 +118,7 @@ export default function createCssVarsProvider(options) { colorSchemeStorageKey, defaultMode, storageWindow, + noSsr, }); let mode = stateMode; @@ -124,42 +129,46 @@ export default function createCssVarsProvider(options) { colorScheme = ctx.colorScheme; } - // `colorScheme` is undefined on the server and hydration phase - const calculatedColorScheme = colorScheme || restThemeProp.defaultColorScheme; + const memoTheme = React.useMemo(() => { + // `colorScheme` is undefined on the server and hydration phase + const calculatedColorScheme = colorScheme || restThemeProp.defaultColorScheme; - // 2. get the `vars` object that refers to the CSS custom properties - const themeVars = restThemeProp.generateThemeVars?.() || restThemeProp.vars; + // 2. get the `vars` object that refers to the CSS custom properties + const themeVars = restThemeProp.generateThemeVars?.() || restThemeProp.vars; - // 3. Start composing the theme object - const theme = { - ...restThemeProp, - components, - colorSchemes, - cssVarPrefix, - vars: themeVars, - }; - if (typeof theme.generateSpacing === 'function') { - theme.spacing = theme.generateSpacing(); - } + // 3. Start composing the theme object + const theme = { + ...restThemeProp, + components, + colorSchemes, + cssVarPrefix, + vars: themeVars, + }; + if (typeof theme.generateSpacing === 'function') { + theme.spacing = theme.generateSpacing(); + } - // 4. Resolve the color scheme and merge it to the theme - if (calculatedColorScheme) { - const scheme = colorSchemes[calculatedColorScheme]; - if (scheme && typeof scheme === 'object') { - // 4.1 Merge the selected color scheme to the theme - Object.keys(scheme).forEach((schemeKey) => { - if (scheme[schemeKey] && typeof scheme[schemeKey] === 'object') { - // shallow merge the 1st level structure of the theme. - theme[schemeKey] = { - ...theme[schemeKey], - ...scheme[schemeKey], - }; - } else { - theme[schemeKey] = scheme[schemeKey]; - } - }); + // 4. Resolve the color scheme and merge it to the theme + if (calculatedColorScheme) { + const scheme = colorSchemes[calculatedColorScheme]; + if (scheme && typeof scheme === 'object') { + // 4.1 Merge the selected color scheme to the theme + Object.keys(scheme).forEach((schemeKey) => { + if (scheme[schemeKey] && typeof scheme[schemeKey] === 'object') { + // shallow merge the 1st level structure of the theme. + theme[schemeKey] = { + ...theme[schemeKey], + ...scheme[schemeKey], + }; + } else { + theme[schemeKey] = scheme[schemeKey]; + } + }); + } } - } + + return resolveTheme ? resolveTheme(theme) : theme; + }, [restThemeProp, colorScheme, components, colorSchemes, cssVarPrefix]); // 5. Declaring effects // 5.1 Updates the selector value to use the current color scheme which tells CSS to use the proper stylesheet. @@ -242,7 +251,21 @@ export default function createCssVarsProvider(options) { lightColorScheme, mode, setColorScheme, - setMode, + setMode: + process.env.NODE_ENV === 'production' + ? setMode + : (newMode) => { + if (memoTheme.colorSchemeSelector === 'media') { + console.error( + [ + 'MUI: The `setMode` function has no effect if `colorSchemeSelector` is `media` (`media` is the default value).', + 'To toggle the mode manually, please configure `colorSchemeSelector` to use a class or data attribute.', + 'To learn more, visit https://mui.com/material-ui/customization/css-theme-variables/configuration/#toggling-dark-mode-manually', + ].join('\n'), + ); + } + setMode(newMode); + }, systemMode, }), [ @@ -254,6 +277,7 @@ export default function createCssVarsProvider(options) { setColorScheme, setMode, systemMode, + memoTheme.colorSchemeSelector, ], ); @@ -268,13 +292,12 @@ export default function createCssVarsProvider(options) { const element = ( <React.Fragment> - <ThemeProvider - themeId={scopedTheme ? themeId : undefined} - theme={resolveTheme ? resolveTheme(theme) : theme} - > + <ThemeProvider themeId={scopedTheme ? themeId : undefined} theme={memoTheme}> {children} </ThemeProvider> - {shouldGenerateStyleSheet && <GlobalStyles styles={theme.generateStyleSheets?.() || []} />} + {shouldGenerateStyleSheet && ( + <GlobalStyles styles={memoTheme.generateStyleSheets?.() || []} /> + )} </React.Fragment> ); @@ -327,6 +350,11 @@ export default function createCssVarsProvider(options) { * The key in the local storage used to store current color scheme. */ modeStorageKey: PropTypes.string, + /** + * If `true`, the mode will be the same value as the storage without an extra rerendering after the hydration. + * You should use this option in conjuction with `InitColorSchemeScript` component. + */ + noSsr: PropTypes.bool, /** * The window that attaches the 'storage' event listener. * @default window diff --git a/packages/mui-system/src/cssVars/useCurrentColorScheme.test.js b/packages/mui-system/src/cssVars/useCurrentColorScheme.test.js index a0d75139ea55e6..6d25274aa6ff3e 100644 --- a/packages/mui-system/src/cssVars/useCurrentColorScheme.test.js +++ b/packages/mui-system/src/cssVars/useCurrentColorScheme.test.js @@ -84,6 +84,50 @@ describe('useCurrentColorScheme', () => { expect(container.firstChild.textContent).to.equal('dark:0'); }); + it('trigger a re-render for a multi color schemes', () => { + function Data() { + const { mode } = useCurrentColorScheme({ + supportedColorSchemes: ['light', 'dark'], + defaultLightColorScheme: 'light', + defaultDarkColorScheme: 'dark', + }); + const count = React.useRef(0); + React.useEffect(() => { + count.current += 1; + }); + return ( + <div> + {mode}:{count.current} + </div> + ); + } + const { container } = render(<Data />); + + expect(container.firstChild.textContent).to.equal('light:2'); // 2 because of double render within strict mode + }); + + it('[noSsr] does not trigger a re-render', () => { + function Data() { + const { mode } = useCurrentColorScheme({ + defaultMode: 'dark', + supportedColorSchemes: ['light', 'dark'], + noSsr: true, + }); + const count = React.useRef(0); + React.useEffect(() => { + count.current += 1; + }); + return ( + <div> + {mode}:{count.current} + </div> + ); + } + const { container } = render(<Data />); + + expect(container.firstChild.textContent).to.equal('dark:0'); + }); + describe('getColorScheme', () => { it('use lightColorScheme given mode=light', () => { expect(getColorScheme({ mode: 'light', lightColorScheme: 'light' })).to.equal('light'); diff --git a/packages/mui-system/src/cssVars/useCurrentColorScheme.ts b/packages/mui-system/src/cssVars/useCurrentColorScheme.ts index a318b1119d6a3b..f504172a6e2807 100644 --- a/packages/mui-system/src/cssVars/useCurrentColorScheme.ts +++ b/packages/mui-system/src/cssVars/useCurrentColorScheme.ts @@ -120,6 +120,7 @@ interface UseCurrentColoSchemeOptions<SupportedColorScheme extends string> { modeStorageKey?: string; colorSchemeStorageKey?: string; storageWindow?: Window | null; + noSsr?: boolean; } export default function useCurrentColorScheme<SupportedColorScheme extends string>( @@ -133,6 +134,7 @@ export default function useCurrentColorScheme<SupportedColorScheme extends strin modeStorageKey = DEFAULT_MODE_STORAGE_KEY, colorSchemeStorageKey = DEFAULT_COLOR_SCHEME_STORAGE_KEY, storageWindow = typeof window === 'undefined' ? undefined : window, + noSsr = false, } = options; const joinedColorSchemes = supportedColorSchemes.join(','); @@ -155,15 +157,10 @@ export default function useCurrentColorScheme<SupportedColorScheme extends strin darkColorScheme, } as State<SupportedColorScheme>; }); - // This could be improved with `React.useSyncExternalStore` in the future. - const [, setHasMounted] = React.useState(false); - const hasMounted = React.useRef(false); + const [isClient, setIsClient] = React.useState(noSsr || !isMultiSchemes); React.useEffect(() => { - if (isMultiSchemes) { - setHasMounted(true); // to rerender the component after hydration - } - hasMounted.current = true; - }, [isMultiSchemes]); + setIsClient(true); // to rerender the component after hydration + }, []); const colorScheme = getColorScheme(state); @@ -350,9 +347,9 @@ export default function useCurrentColorScheme<SupportedColorScheme extends strin return { ...state, - mode: hasMounted.current || !isMultiSchemes ? state.mode : undefined, - systemMode: hasMounted.current || !isMultiSchemes ? state.systemMode : undefined, - colorScheme: hasMounted.current || !isMultiSchemes ? colorScheme : undefined, + mode: isClient ? state.mode : undefined, + systemMode: isClient ? state.systemMode : undefined, + colorScheme: isClient ? colorScheme : undefined, setMode, setColorScheme, }; diff --git a/packages/mui-utils/package.json b/packages/mui-utils/package.json index 8a578ef23d190f..93460470e24fb5 100644 --- a/packages/mui-utils/package.json +++ b/packages/mui-utils/package.json @@ -1,6 +1,6 @@ { "name": "@mui/utils", - "version": "6.1.6", + "version": "6.1.10", "private": false, "author": "MUI Team", "description": "Utility functions for React components.", @@ -49,8 +49,8 @@ "@mui/internal-test-utils": "workspace:^", "@mui/types": "workspace:^", "@types/chai": "^4.3.20", - "@types/mocha": "^10.0.9", - "@types/node": "^20.17.6", + "@types/mocha": "^10.0.10", + "@types/node": "^20.17.9", "@types/react": "^18.3.12", "@types/react-dom": "^18.3.1", "@types/react-is": "^18.3.0", diff --git a/packages/mui-utils/src/deepmerge/deepmerge.test.ts b/packages/mui-utils/src/deepmerge/deepmerge.test.ts index 9cb09790761553..74f2d625b65a83 100644 --- a/packages/mui-utils/src/deepmerge/deepmerge.test.ts +++ b/packages/mui-utils/src/deepmerge/deepmerge.test.ts @@ -1,3 +1,4 @@ +import * as React from 'react'; import { expect } from 'chai'; import { runInNewContext } from 'vm'; import deepmerge from './deepmerge'; @@ -122,4 +123,12 @@ describe('deepmerge', () => { expect(result).to.deep.equal({ foo: { baz: 'new test' } }); expect(foo).to.deep.equal({ foo: { baz: 'test' } }); }); + + it('should not deep clone React element', () => { + const element = React.createElement('div', {}, React.createElement('span')); + const element2 = React.createElement('a'); + const result = deepmerge({ element }, { element: element2 }); + + expect(result.element).to.equal(element2); + }); }); diff --git a/packages/mui-utils/src/deepmerge/deepmerge.ts b/packages/mui-utils/src/deepmerge/deepmerge.ts index e04e90a7851d7e..07929f357beafc 100644 --- a/packages/mui-utils/src/deepmerge/deepmerge.ts +++ b/packages/mui-utils/src/deepmerge/deepmerge.ts @@ -1,3 +1,5 @@ +import * as React from 'react'; + // https://github.com/sindresorhus/is-plain-obj/blob/main/index.js export function isPlainObject(item: unknown): item is Record<keyof any, unknown> { if (typeof item !== 'object' || item === null) { @@ -19,7 +21,7 @@ export interface DeepmergeOptions { } function deepClone<T>(source: T): T | Record<keyof any, unknown> { - if (!isPlainObject(source)) { + if (React.isValidElement(source) || !isPlainObject(source)) { return source; } @@ -41,7 +43,9 @@ export default function deepmerge<T>( if (isPlainObject(target) && isPlainObject(source)) { Object.keys(source).forEach((key) => { - if ( + if (React.isValidElement(source[key])) { + (output as Record<keyof any, unknown>)[key] = source[key]; + } else if ( isPlainObject(source[key]) && // Avoid prototype pollution Object.prototype.hasOwnProperty.call(target, key) && diff --git a/packages/mui-utils/src/useForkRef/useForkRef.ts b/packages/mui-utils/src/useForkRef/useForkRef.ts index f2a3c4e74abc4c..521c97d3f93d85 100644 --- a/packages/mui-utils/src/useForkRef/useForkRef.ts +++ b/packages/mui-utils/src/useForkRef/useForkRef.ts @@ -2,6 +2,22 @@ import * as React from 'react'; import setRef from '../setRef'; +/** + * Takes an array of refs and returns a new ref which will apply any modification to all of the refs. + * This is useful when you want to have the ref used in multiple places. + * + * ```tsx + * const rootRef = React.useRef<Instance>(null); + * const refFork = useForkRef(rootRef, props.ref); + * + * return ( + * <Root {...props} ref={refFork} /> + * ); + * ``` + * + * @param {Array<React.Ref<Instance> | undefined>} refs The ref array. + * @returns {React.RefCallback<Instance> | null} The new ref callback. + */ export default function useForkRef<Instance>( ...refs: Array<React.Ref<Instance> | undefined> ): React.RefCallback<Instance> | null { diff --git a/packages/mui-utils/src/useIsFocusVisible/useIsFocusVisible.test.js b/packages/mui-utils/src/useIsFocusVisible/useIsFocusVisible.test.js index d0c9350a1e0ad8..f33d36d25e7b14 100644 --- a/packages/mui-utils/src/useIsFocusVisible/useIsFocusVisible.test.js +++ b/packages/mui-utils/src/useIsFocusVisible/useIsFocusVisible.test.js @@ -60,8 +60,7 @@ describe('useIsFocusVisible', () => { describe('focus inside shadowRoot', () => { before(function beforeHook() { // Only run on HeadlessChrome which has native shadowRoot support. - // And jsdom which has limited support for shadowRoot (^12.0.0). - if (!/HeadlessChrome|jsdom/.test(window.navigator.userAgent)) { + if (!/HeadlessChrome/.test(window.navigator.userAgent)) { this.skip(); } }); diff --git a/packages/rsc-builder/buildRsc.ts b/packages/rsc-builder/buildRsc.ts index b8f78490bcada1..72211bac33a6d2 100644 --- a/packages/rsc-builder/buildRsc.ts +++ b/packages/rsc-builder/buildRsc.ts @@ -1,8 +1,8 @@ import path from 'path'; import * as yargs from 'yargs'; import * as fse from 'fs-extra'; -import findComponents from '../api-docs-builder/utils/findComponents'; -import findHooks from '../api-docs-builder/utils/findHooks'; +import findComponents from '@mui-internal/api-docs-builder/utils/findComponents'; +import findHooks from '@mui-internal/api-docs-builder/utils/findHooks'; type CommandOptions = { grep?: string }; diff --git a/packages/rsc-builder/package.json b/packages/rsc-builder/package.json index 84bffc3bad89db..7a3f8464143656 100644 --- a/packages/rsc-builder/package.json +++ b/packages/rsc-builder/package.json @@ -8,7 +8,7 @@ "yargs": "^17.7.2" }, "devDependencies": { - "@types/mocha": "^10.0.9", - "@types/node": "^20.17.6" + "@types/mocha": "^10.0.10", + "@types/node": "^20.17.9" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8c323c142234fe..d5b325c5e95a06 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,17 +12,17 @@ overrides: '@babel/preset-typescript': ^7.26.0 '@babel/runtime': ^7.26.0 '@babel/types': ^7.26.0 - '@definitelytyped/header-parser': ^0.2.15 - '@definitelytyped/typescript-versions': ^0.1.5 + '@definitelytyped/header-parser': ^0.2.16 + '@definitelytyped/typescript-versions': ^0.1.6 '@definitelytyped/utils': ^0.1.8 - '@types/node': ^20.17.6 + '@types/node': ^20.17.9 '@types/react': ^18.3.12 '@types/react-dom': 18.3.1 cross-fetch: ^4.0.0 - '@pigment-css/react': 0.0.26 - '@pigment-css/unplugin': 0.0.26 - '@pigment-css/nextjs-plugin': 0.0.26 - '@pigment-css/vite-plugin': 0.0.26 + '@pigment-css/react': 0.0.28 + '@pigment-css/unplugin': 0.0.28 + '@pigment-css/nextjs-plugin': 0.0.28 + '@pigment-css/vite-plugin': 0.0.28 importers: @@ -35,17 +35,17 @@ importers: specifier: ^2.8.2 version: 2.8.2 '@slack/bolt': - specifier: ^4.1.0 + specifier: ^4.1.1 version: 4.1.1 execa: specifier: ^9.5.1 version: 9.5.1 google-auth-library: - specifier: ^9.14.2 + specifier: ^9.15.0 version: 9.15.0(encoding@0.1.13) devDependencies: '@argos-ci/core': - specifier: ^2.10.0 + specifier: ^2.11.0 version: 2.11.0 '@babel/cli': specifier: ^7.25.9 @@ -105,8 +105,8 @@ importers: specifier: ^21.0.2 version: 21.0.2 '@pigment-css/react': - specifier: 0.0.26 - version: 0.0.26(@types/react@18.3.12)(react@18.3.1) + specifier: 0.0.28 + version: 0.0.28(@types/react@18.3.12)(react@18.3.1) '@playwright/test': specifier: 1.48.2 version: 1.48.2 @@ -120,10 +120,10 @@ importers: specifier: ^4.17.13 version: 4.17.13 '@types/mocha': - specifier: ^10.0.9 + specifier: ^10.0.10 version: 10.0.10 '@types/node': - specifier: ^20.17.6 + specifier: ^20.17.9 version: 20.17.9 '@types/react': specifier: ^18.3.12 @@ -138,10 +138,10 @@ importers: specifier: ^7.18.0 version: 7.18.0(eslint@8.57.1)(typescript@5.7.2) '@vitest/browser': - specifier: ^2.1.4 - version: 2.1.8(@types/node@20.17.9)(playwright@1.48.2)(typescript@5.7.2)(vite@5.4.10(@types/node@20.17.9)(terser@5.29.2))(vitest@2.1.6) + specifier: ^2.1.8 + version: 2.1.8(@types/node@20.17.9)(playwright@1.48.2)(typescript@5.7.2)(vite@5.4.11(@types/node@20.17.9)(terser@5.29.2))(vitest@2.1.6) '@vitest/coverage-v8': - specifier: ^2.1.4 + specifier: ^2.1.6 version: 2.1.6(@vitest/browser@2.1.8)(vitest@2.1.6) babel-loader: specifier: ^9.2.1 @@ -270,7 +270,7 @@ importers: specifier: ^10.8.2 version: 10.8.2 nx: - specifier: ^20.0.12 + specifier: ^20.1.4 version: 20.1.4 nyc: specifier: ^17.1.0 @@ -279,10 +279,10 @@ importers: specifier: ^4.7.0 version: 4.7.0 postcss-styled-syntax: - specifier: ^0.6.4 - version: 0.6.4(postcss@8.4.49) + specifier: ^0.7.0 + version: 0.7.0(postcss@8.4.49) prettier: - specifier: ^3.3.3 + specifier: ^3.4.1 version: 3.4.1 pretty-quick: specifier: ^4.0.0 @@ -297,11 +297,11 @@ importers: specifier: ^14.2.4 version: 14.2.4 stylelint: - specifier: ^15.11.0 - version: 15.11.0 + specifier: ^16.11.0 + version: 16.11.0(typescript@5.7.2) stylelint-config-standard: - specifier: ^34.0.0 - version: 34.0.0(stylelint@15.11.0) + specifier: ^36.0.1 + version: 36.0.1(stylelint@16.11.0(typescript@5.7.2)) terser-webpack-plugin: specifier: ^5.3.10 version: 5.3.10(webpack@5.96.1(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.96.1))) @@ -309,14 +309,14 @@ importers: specifier: ^4.19.2 version: 4.19.2 typescript: - specifier: ^5.6.3 + specifier: ^5.7.2 version: 5.7.2 vitest: - specifier: ^2.1.4 + specifier: ^2.1.6 version: 2.1.6(@types/node@20.17.9)(@vitest/browser@2.1.8)(happy-dom@15.11.6)(jsdom@25.0.1)(msw@2.6.5(@types/node@20.17.9)(typescript@5.7.2))(terser@5.29.2) vitest-fail-on-console: specifier: ^0.7.1 - version: 0.7.1(vite@5.4.10(@types/node@20.17.9)(terser@5.29.2))(vitest@2.1.6) + version: 0.7.1(vite@5.4.11(@types/node@20.17.9)(terser@5.29.2))(vitest@2.1.6) webpack: specifier: ^5.96.1 version: 5.96.1(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.96.1)) @@ -370,10 +370,10 @@ importers: version: 18.3.1(react@18.3.1) devDependencies: '@pigment-css/nextjs-plugin': - specifier: 0.0.26 - version: 0.0.26(@types/react@18.3.12)(next@15.0.3(@babel/core@7.26.0)(@opentelemetry/api@1.8.0)(@playwright/test@1.48.2)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(webpack-sources@3.2.3) + specifier: 0.0.28 + version: 0.0.28(@types/react@18.3.12)(next@15.0.3(@babel/core@7.26.0)(@opentelemetry/api@1.8.0)(@playwright/test@1.48.2)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(webpack-sources@3.2.3) '@types/node': - specifier: ^20.17.6 + specifier: ^20.17.9 version: 20.17.9 '@types/react': specifier: ^18.3.12 @@ -385,7 +385,7 @@ importers: specifier: ^8.57.1 version: 8.57.1 typescript: - specifier: ^5.6.3 + specifier: ^5.7.2 version: 5.7.2 apps/pigment-css-vite-app: @@ -440,8 +440,8 @@ importers: specifier: ^7.26.0 version: 7.26.0(@babel/core@7.26.0) '@pigment-css/vite-plugin': - specifier: 0.0.26 - version: 0.0.26(@types/react@18.3.12)(react@18.3.1)(vite@5.4.10(@types/node@20.17.9)(terser@5.29.2)) + specifier: 0.0.28 + version: 0.0.28(@types/react@18.3.12)(react@18.3.1)(vite@5.4.11(@types/node@20.17.9)(terser@5.29.2)) '@types/react': specifier: ^18.3.12 version: 18.3.12 @@ -452,23 +452,23 @@ importers: specifier: ^1.6.38 version: 1.6.38 '@vitejs/plugin-react': - specifier: ^4.3.3 - version: 4.3.4(vite@5.4.10(@types/node@20.17.9)(terser@5.29.2)) + specifier: ^4.3.4 + version: 4.3.4(vite@5.4.11(@types/node@20.17.9)(terser@5.29.2)) postcss: - specifier: ^8.4.47 + specifier: ^8.4.49 version: 8.4.49 postcss-combine-media-query: specifier: ^1.0.1 version: 1.0.1 vite: - specifier: 5.4.10 - version: 5.4.10(@types/node@20.17.9)(terser@5.29.2) + specifier: 5.4.11 + version: 5.4.11(@types/node@20.17.9)(terser@5.29.2) vite-plugin-node-polyfills: specifier: 0.22.0 - version: 0.22.0(rollup@4.21.1)(vite@5.4.10(@types/node@20.17.9)(terser@5.29.2)) + version: 0.22.0(rollup@4.21.1)(vite@5.4.11(@types/node@20.17.9)(terser@5.29.2)) vite-plugin-pages: - specifier: ^0.32.3 - version: 0.32.4(vite@5.4.10(@types/node@20.17.9)(terser@5.29.2)) + specifier: ^0.32.4 + version: 0.32.4(vite@5.4.11(@types/node@20.17.9)(terser@5.29.2)) benchmark: dependencies: @@ -479,13 +479,13 @@ importers: specifier: ^2.6.2 version: 2.6.2(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) '@emotion/react': - specifier: ^11.13.3 + specifier: ^11.13.5 version: 11.13.5(@types/react@18.3.12)(react@18.3.1) '@emotion/server': specifier: ^11.11.0 version: 11.11.0(@emotion/css@11.13.4) '@emotion/styled': - specifier: ^11.13.0 + specifier: ^11.13.5 version: 11.13.5(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1) '@mui/material': specifier: workspace:^ @@ -566,25 +566,25 @@ importers: specifier: ^7.26.0 version: 7.26.0 '@docsearch/react': - specifier: ^3.7.0 + specifier: ^3.8.0 version: 3.8.0(@algolia/client-search@5.13.0)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.13.0) '@emotion/cache': - specifier: ^11.13.1 + specifier: ^11.13.5 version: 11.13.5 '@emotion/react': - specifier: ^11.13.3 + specifier: ^11.13.5 version: 11.13.5(@types/react@18.3.12)(react@18.3.1) '@emotion/server': specifier: ^11.11.0 version: 11.11.0(@emotion/css@11.13.4) '@emotion/styled': - specifier: ^11.13.0 + specifier: ^11.13.5 version: 11.13.5(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1) '@fortawesome/fontawesome-svg-core': - specifier: ^6.6.0 + specifier: ^6.7.1 version: 6.7.1 '@fortawesome/free-solid-svg-icons': - specifier: ^6.6.0 + specifier: ^6.7.1 version: 6.7.1 '@fortawesome/react-fontawesome': specifier: ^0.2.2 @@ -629,32 +629,32 @@ importers: specifier: workspace:^ version: link:../packages/mui-utils/build '@mui/x-charts': - specifier: 7.22.2 - version: 7.22.2(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1))(@mui/material@packages+mui-material+build)(@mui/system@packages+mui-system+build)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: 7.23.0 + version: 7.23.0(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1))(@mui/material@packages+mui-material+build)(@mui/system@packages+mui-system+build)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/x-data-grid': - specifier: 7.22.2 - version: 7.22.2(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1))(@mui/material@packages+mui-material+build)(@mui/system@packages+mui-system+build)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: 7.23.0 + version: 7.23.0(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1))(@mui/material@packages+mui-material+build)(@mui/system@packages+mui-system+build)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/x-data-grid-generator': - specifier: 7.22.2 - version: 7.22.2(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1))(@mui/icons-material@packages+mui-icons-material+build)(@mui/material@packages+mui-material+build)(@mui/system@packages+mui-system+build)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: 7.23.0 + version: 7.23.0(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1))(@mui/icons-material@packages+mui-icons-material+build)(@mui/material@packages+mui-material+build)(@mui/system@packages+mui-system+build)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/x-data-grid-premium': - specifier: 7.22.2 - version: 7.22.2(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1))(@mui/material@packages+mui-material+build)(@mui/system@packages+mui-system+build)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: 7.23.0 + version: 7.23.0(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1))(@mui/material@packages+mui-material+build)(@mui/system@packages+mui-system+build)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/x-data-grid-pro': - specifier: 7.22.2 - version: 7.22.2(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1))(@mui/material@packages+mui-material+build)(@mui/system@packages+mui-system+build)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: 7.23.0 + version: 7.23.0(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1))(@mui/material@packages+mui-material+build)(@mui/system@packages+mui-system+build)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/x-date-pickers': - specifier: 7.22.2 - version: 7.22.2(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1))(@mui/material@packages+mui-material+build)(@mui/system@packages+mui-system+build)(@types/react@18.3.12)(date-fns@2.30.0)(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: 7.23.0 + version: 7.23.0(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1))(@mui/material@packages+mui-material+build)(@mui/system@packages+mui-system+build)(@types/react@18.3.12)(date-fns@2.30.0)(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/x-date-pickers-pro': - specifier: 7.22.2 - version: 7.22.2(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1))(@mui/material@packages+mui-material+build)(@mui/system@packages+mui-system+build)(@types/react@18.3.12)(date-fns@2.30.0)(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: 7.23.0 + version: 7.23.0(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1))(@mui/material@packages+mui-material+build)(@mui/system@packages+mui-system+build)(@types/react@18.3.12)(date-fns@2.30.0)(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/x-license': - specifier: 7.21.0 - version: 7.21.0(@types/react@18.3.12)(react@18.3.1) + specifier: 7.23.0 + version: 7.23.0(@types/react@18.3.12)(react@18.3.1) '@mui/x-tree-view': - specifier: 7.22.1 - version: 7.22.1(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1))(@mui/material@packages+mui-material+build)(@mui/system@packages+mui-system+build)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: 7.23.0 + version: 7.23.0(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1))(@mui/material@packages+mui-material+build)(@mui/system@packages+mui-system+build)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@popperjs/core': specifier: ^2.11.8 version: 2.11.8 @@ -662,8 +662,8 @@ importers: specifier: ^9.7.5 version: 9.7.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@toolpad/core': - specifier: ^0.9.0 - version: 0.9.0(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1))(@mui/icons-material@packages+mui-icons-material+build)(@mui/material-pigment-css@6.1.6(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1))(@mui/material@packages+mui-material+build)(@types/react@18.3.12)(next@14.2.18(@babel/core@7.26.0)(@opentelemetry/api@1.8.0)(@playwright/test@1.48.2)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.28.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(vite@5.4.11(@types/node@20.17.9)(terser@5.29.2)) + specifier: ^0.10.0 + version: 0.10.0(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1))(@mui/icons-material@packages+mui-icons-material+build)(@mui/material@packages+mui-material+build)(@types/react@18.3.12)(next@14.2.18(@babel/core@7.26.0)(@opentelemetry/api@1.8.0)(@playwright/test@1.48.2)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.28.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(vite@5.4.11(@types/node@20.17.9)(terser@5.29.2)) autoprefixer: specifier: ^10.4.20 version: 10.4.20(postcss@8.4.49) @@ -740,13 +740,13 @@ importers: specifier: ^1.5.0 version: 1.5.0 markdown-to-jsx: - specifier: ^7.5.0 + specifier: ^7.7.0 version: 7.7.0(react@18.3.1) material-ui-popup-state: specifier: ^5.3.1 version: 5.3.1(@mui/material@packages+mui-material+build)(react@18.3.1) next: - specifier: ^14.2.17 + specifier: ^14.2.18 version: 14.2.18(@babel/core@7.26.0)(@opentelemetry/api@1.8.0)(@playwright/test@1.48.2)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) notistack: specifier: 3.0.1 @@ -755,7 +755,7 @@ importers: specifier: ^0.2.0 version: 0.2.0 postcss: - specifier: ^8.4.47 + specifier: ^8.4.49 version: 8.4.49 postcss-import: specifier: ^16.1.0 @@ -787,9 +787,9 @@ importers: react-number-format: specifier: ^5.4.2 version: 5.4.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react-router-dom: - specifier: ^6.28.0 - version: 6.28.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-router: + specifier: ^7.0.1 + version: 7.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react-runner: specifier: ^1.0.5 version: 1.0.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -806,7 +806,7 @@ importers: specifier: ^4.4.5 version: 4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react-virtuoso: - specifier: ^4.12.0 + specifier: ^4.12.2 version: 4.12.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react-window: specifier: ^1.8.10 @@ -867,7 +867,7 @@ importers: specifier: ^0.2.2 version: 0.2.2 '@types/node': - specifier: ^20.17.6 + specifier: ^20.17.9 version: 20.17.9 '@types/prop-types': specifier: ^15.7.13 @@ -900,16 +900,16 @@ importers: specifier: ^1.25.0 version: 1.25.0 marked: - specifier: ^14.1.4 - version: 14.1.4 + specifier: ^15.0.3 + version: 15.0.3 playwright: specifier: ^1.48.2 version: 1.48.2 prettier: - specifier: ^3.3.3 + specifier: ^3.4.1 version: 3.4.1 tailwindcss: - specifier: ^3.4.14 + specifier: ^3.4.15 version: 3.4.15 yargs: specifier: ^17.7.2 @@ -953,7 +953,7 @@ importers: specifier: ^6.0.1 version: 6.0.1 typescript: - specifier: ^5.6.3 + specifier: ^5.7.2 version: 5.7.2 packages-internal/scripts: @@ -983,11 +983,11 @@ importers: specifier: ^4.17.21 version: 4.17.21 typescript: - specifier: ^5.6.3 + specifier: ^5.7.2 version: 5.7.2 uuid: - specifier: ^9.0.1 - version: 9.0.1 + specifier: ^11.0.3 + version: 11.0.3 devDependencies: '@babel/register': specifier: ^7.25.9 @@ -1005,7 +1005,7 @@ importers: specifier: ^4.17.13 version: 4.17.13 '@types/node': - specifier: ^20.17.6 + specifier: ^20.17.9 version: 20.17.9 '@types/react': specifier: ^18.3.12 @@ -1020,7 +1020,7 @@ importers: specifier: ^3.3.2 version: 3.3.2 prettier: - specifier: ^3.3.3 + specifier: ^3.4.1 version: 3.4.1 rimraf: specifier: ^6.0.1 @@ -1041,10 +1041,10 @@ importers: specifier: ^7.26.0 version: 7.26.0 '@emotion/cache': - specifier: ^11.13.1 + specifier: ^11.13.5 version: 11.13.5 '@emotion/react': - specifier: ^11.13.3 + specifier: ^11.13.5 version: 11.13.5(@types/react@18.3.12)(react@18.3.1) '@testing-library/dom': specifier: ^10.4.0 @@ -1071,8 +1071,8 @@ importers: specifier: ^11.2.0 version: 11.2.0 jsdom: - specifier: ^24.0.0 - version: 24.1.3 + specifier: ^25.0.1 + version: 25.0.1 lodash: specifier: ^4.17.21 version: 4.17.21 @@ -1117,7 +1117,7 @@ importers: specifier: ^17.0.3 version: 17.0.3 typescript: - specifier: ^5.6.3 + specifier: ^5.7.2 version: 5.7.2 packages/api-docs-builder: @@ -1153,7 +1153,7 @@ importers: specifier: ^4.17.21 version: 4.17.21 prettier: - specifier: ^3.3.3 + specifier: ^3.4.1 version: 3.4.1 react-docgen: specifier: ^5.4.3 @@ -1165,7 +1165,7 @@ importers: specifier: ^15.0.1 version: 15.0.1 typescript: - specifier: ^5.6.3 + specifier: ^5.7.2 version: 5.7.2 unist-util-visit: specifier: ^5.0.0 @@ -1187,10 +1187,10 @@ importers: specifier: 4.0.4 version: 4.0.4 '@types/mocha': - specifier: ^10.0.9 + specifier: ^10.0.10 version: 10.0.10 '@types/node': - specifier: ^20.17.6 + specifier: ^20.17.9 version: 20.17.9 '@types/react-docgen': specifier: workspace:* @@ -1224,10 +1224,10 @@ importers: specifier: ^4.3.20 version: 4.3.20 '@types/mocha': - specifier: ^10.0.9 + specifier: ^10.0.10 version: 10.0.10 '@types/node': - specifier: ^20.17.6 + specifier: ^20.17.9 version: 20.17.9 '@types/sinon': specifier: ^17.0.3 @@ -1239,7 +1239,7 @@ importers: specifier: ^19.0.2 version: 19.0.2 typescript: - specifier: ^5.6.3 + specifier: ^5.7.2 version: 5.7.2 packages/eslint-plugin-material-ui: @@ -1264,8 +1264,8 @@ importers: specifier: ^4.1.2 version: 4.1.2 uuid: - specifier: ^9.0.1 - version: 9.0.1 + specifier: ^11.0.3 + version: 11.0.3 optionalDependencies: aws-sdk: specifier: ^2.1692.0 @@ -1284,8 +1284,8 @@ importers: specifier: ^4.17.21 version: 4.17.21 marked: - specifier: ^14.1.4 - version: 14.1.4 + specifier: ^15.0.3 + version: 15.0.3 prismjs: specifier: ^1.29.0 version: 1.29.0 @@ -1383,7 +1383,7 @@ importers: specifier: ^1.0.11 version: 1.0.11(jscodeshift@17.1.1(@babel/preset-env@7.26.0(@babel/core@7.26.0))) postcss: - specifier: ^8.4.47 + specifier: ^8.4.49 version: 8.4.49 postcss-cli: specifier: ^11.0.0 @@ -1413,7 +1413,7 @@ importers: version: 7.26.0 '@mui/base': specifier: '*' - version: 5.0.0-beta.64(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 5.0.0-beta.63(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/internal-markdown': specifier: workspace:^ version: link:../markdown @@ -1449,7 +1449,7 @@ importers: specifier: ^0.0.20 version: 0.0.20 '@types/node': - specifier: ^20.17.6 + specifier: ^20.17.9 version: 20.17.9 '@types/prop-types': specifier: ^15.7.13 @@ -1458,7 +1458,7 @@ importers: specifier: ^18.3.12 version: 18.3.12 next: - specifier: ^14.2.17 + specifier: ^14.2.18 version: 14.2.18(@babel/core@7.26.0)(@opentelemetry/api@1.8.0)(@playwright/test@1.48.2)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: specifier: ^18.3.1 @@ -1484,10 +1484,10 @@ importers: packages/mui-envinfo/test: dependencies: '@emotion/react': - specifier: ^11.13.3 + specifier: ^11.13.5 version: 11.13.5(@types/react@18.3.12)(react@18.3.1) '@emotion/styled': - specifier: ^11.13.0 + specifier: ^11.13.5 version: 11.13.5(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1) '@mui/base': specifier: 5.0.0-beta.30 @@ -1632,7 +1632,7 @@ importers: specifier: ^4.17.21 version: 4.17.21 next: - specifier: ^14.2.17 + specifier: ^14.2.18 version: 14.2.18(@babel/core@7.26.0)(@opentelemetry/api@1.8.0)(@playwright/test@1.48.2)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: specifier: ^18.3.1 @@ -1809,9 +1809,9 @@ importers: react-dom: specifier: ^18.3.1 version: 18.3.1(react@18.3.1) - react-router-dom: - specifier: ^6.28.0 - version: 6.28.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-router: + specifier: ^7.0.1 + version: 7.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) sinon: specifier: ^19.0.2 version: 19.0.2 @@ -1824,10 +1824,10 @@ importers: version: 7.26.0 devDependencies: '@emotion/cache': - specifier: ^11.13.1 + specifier: ^11.13.5 version: 11.13.5 '@emotion/react': - specifier: ^11.13.3 + specifier: ^11.13.5 version: 11.13.5(@types/react@18.3.12)(react@18.3.1) '@emotion/server': specifier: ^11.11.0 @@ -1836,7 +1836,7 @@ importers: specifier: ^18.3.12 version: 18.3.12 next: - specifier: ^14.2.17 + specifier: ^14.2.18 version: 14.2.18(@babel/core@7.26.0)(@opentelemetry/api@1.8.0)(@playwright/test@1.48.2)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: specifier: ^18.3.1 @@ -1852,8 +1852,8 @@ importers: specifier: workspace:* version: link:../mui-system/build '@pigment-css/react': - specifier: 0.0.26 - version: 0.0.26(@types/react@18.3.12)(react@18.3.1) + specifier: 0.0.28 + version: 0.0.28(@types/react@18.3.12)(react@18.3.1) publishDirectory: build packages/mui-private-theming: @@ -1894,10 +1894,10 @@ importers: specifier: ^7.26.0 version: 7.26.0 '@emotion/cache': - specifier: ^11.13.1 + specifier: ^11.13.5 version: 11.13.5 '@emotion/serialize': - specifier: ^1.3.2 + specifier: ^1.3.3 version: 1.3.3 '@emotion/sheet': specifier: ^1.4.0 @@ -1910,10 +1910,10 @@ importers: version: 15.8.1 devDependencies: '@emotion/react': - specifier: ^11.13.3 + specifier: ^11.13.5 version: 11.13.5(@types/react@18.3.12)(react@18.3.1) '@emotion/styled': - specifier: ^11.13.0 + specifier: ^11.13.5 version: 11.13.5(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1) '@mui/internal-test-utils': specifier: workspace:^ @@ -1940,6 +1940,9 @@ importers: '@babel/runtime': specifier: ^7.26.0 version: 7.26.0 + '@types/hoist-non-react-statics': + specifier: ^3.3.5 + version: 3.3.5 csstype: specifier: ^3.1.3 version: 3.1.3 @@ -1956,9 +1959,6 @@ importers: '@types/chai': specifier: ^4.3.20 version: 4.3.20 - '@types/hoist-non-react-statics': - specifier: ^3.3.5 - version: 3.3.5 '@types/react': specifier: ^18.3.12 version: 18.3.12 @@ -2087,10 +2087,10 @@ importers: version: 15.8.1 devDependencies: '@emotion/react': - specifier: ^11.13.3 + specifier: ^11.13.5 version: 11.13.5(@types/react@18.3.12)(react@18.3.1) '@emotion/styled': - specifier: ^11.13.0 + specifier: ^11.13.5 version: 11.13.5(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1) '@mui/internal-test-utils': specifier: workspace:^ @@ -2168,10 +2168,10 @@ importers: specifier: ^4.3.20 version: 4.3.20 '@types/mocha': - specifier: ^10.0.9 + specifier: ^10.0.10 version: 10.0.10 '@types/node': - specifier: ^20.17.6 + specifier: ^20.17.9 version: 20.17.9 '@types/react': specifier: ^18.3.12 @@ -2221,10 +2221,10 @@ importers: version: 17.7.2 devDependencies: '@types/mocha': - specifier: ^10.0.9 + specifier: ^10.0.10 version: 10.0.10 '@types/node': - specifier: ^20.17.6 + specifier: ^20.17.9 version: 20.17.9 packages/waterfall: {} @@ -2266,10 +2266,10 @@ importers: specifier: ^7.26.0 version: 7.26.0 '@emotion/cache': - specifier: ^11.13.1 + specifier: ^11.13.5 version: 11.13.5 '@emotion/react': - specifier: ^11.13.3 + specifier: ^11.13.5 version: 11.13.5(@types/react@18.3.12)(react@18.3.1) '@mui/base': specifier: workspace:* @@ -2346,9 +2346,12 @@ importers: react-is: specifier: ^18.3.1 version: 18.3.1 - react-router-dom: - specifier: ^6.28.0 - version: 6.28.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-router: + specifier: ^7.0.1 + version: 7.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-window: + specifier: ^1.8.10 + version: 1.8.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1) sinon: specifier: ^19.0.2 version: 19.0.2 @@ -2361,9 +2364,6 @@ importers: stylis-plugin-rtl: specifier: ^2.1.1 version: 2.1.1(stylis@4.2.0) - stylis-plugin-rtl-sc: - specifier: npm:stylis-plugin-rtl@^1.1.0 - version: stylis-plugin-rtl@1.1.0(stylis@4.2.0) webfontloader: specifier: ^1.6.28 version: 1.6.28 @@ -3215,28 +3215,28 @@ packages: resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} engines: {node: '>=0.1.90'} - '@csstools/css-parser-algorithms@2.7.1': - resolution: {integrity: sha512-2SJS42gxmACHgikc1WGesXLIT8d/q2l0UFM7TaEeIzdFCE/FPMtTiizcPGGJtlPo2xuQzY09OhrLTzRxqJqwGw==} - engines: {node: ^14 || ^16 || >=18} + '@csstools/css-parser-algorithms@3.0.4': + resolution: {integrity: sha512-Up7rBoV77rv29d3uKHUIVubz1BTcgyUK72IvCQAbfbMv584xHcGKCKbWh7i8hPrRJ7qU4Y8IO3IY9m+iTB7P3A==} + engines: {node: '>=18'} peerDependencies: - '@csstools/css-tokenizer': ^2.4.1 + '@csstools/css-tokenizer': ^3.0.3 - '@csstools/css-tokenizer@2.4.1': - resolution: {integrity: sha512-eQ9DIktFJBhGjioABJRtUucoWR2mwllurfnM8LuNGAqX3ViZXaUchqk+1s7jjtkFiT9ySdACsFEA3etErkALUg==} - engines: {node: ^14 || ^16 || >=18} + '@csstools/css-tokenizer@3.0.3': + resolution: {integrity: sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw==} + engines: {node: '>=18'} - '@csstools/media-query-list-parser@2.1.13': - resolution: {integrity: sha512-XaHr+16KRU9Gf8XLi3q8kDlI18d5vzKSKCY510Vrtc9iNR0NJzbY9hhTmwhzYZj/ZwGL4VmB3TA9hJW0Um2qFA==} - engines: {node: ^14 || ^16 || >=18} + '@csstools/media-query-list-parser@4.0.2': + resolution: {integrity: sha512-EUos465uvVvMJehckATTlNqGj4UJWkTmdWuDMjqvSUkjGpmOyFZBVwb4knxCm/k2GMTXY+c/5RkdndzFYWeX5A==} + engines: {node: '>=18'} peerDependencies: - '@csstools/css-parser-algorithms': ^2.7.1 - '@csstools/css-tokenizer': ^2.4.1 + '@csstools/css-parser-algorithms': ^3.0.4 + '@csstools/css-tokenizer': ^3.0.3 - '@csstools/selector-specificity@3.1.1': - resolution: {integrity: sha512-a7cxGcJ2wIlMFLlh8z2ONm+715QkPHiyJcxwQlKOz/03GPw1COpfhcmC9wm4xlZfp//jWHNNMwzjtqHXVWU9KA==} - engines: {node: ^14 || ^16 || >=18} + '@csstools/selector-specificity@5.0.0': + resolution: {integrity: sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==} + engines: {node: '>=18'} peerDependencies: - postcss-selector-parser: ^6.0.13 + postcss-selector-parser: ^7.0.0 '@discoveryjs/json-ext@0.5.7': resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} @@ -3262,6 +3262,9 @@ packages: search-insights: optional: true + '@dual-bundle/import-meta-resolve@4.1.0': + resolution: {integrity: sha512-+nxncfwHM5SgAtrVzgpzJOI1ol0PkumhVo469KCf9lUi21IGcY90G98VuHm9VRrUypmAzawAHO9bs6hqeADaVg==} + '@emnapi/core@1.2.0': resolution: {integrity: sha512-E7Vgw78I93we4ZWdYCb4DGAwRROGkMIXk7/y87UmANR+J6qsWusmC3gLt0H+O0KOt5e6O38U8oJamgbudrES/w==} @@ -3847,7 +3850,7 @@ packages: resolution: {integrity: sha512-6ycMm7k7NUApiMGfVc32yIPp28iPKxhGRMqoNDiUjq2RyTAkbs5Fx0TdzBqhabcKvniDdAAvHCmsRjnNfTsogw==} engines: {node: '>=18'} peerDependencies: - '@types/node': ^20.17.6 + '@types/node': ^20.17.9 '@inquirer/core@10.0.1': resolution: {integrity: sha512-KKTgjViBQUi3AAssqjUFMnMO3CM3qwCHvePV9EW+zTKGKafFGFF01sc1yOIYjLJ7QU52G/FbzKc+c01WLzXmVQ==} @@ -3861,7 +3864,7 @@ packages: resolution: {integrity: sha512-YYykfbw/lefC7yKj7nanzQXILM7r3suIvyFlCcMskc99axmsSewXWkAfXKwMbgxL76iAFVmRwmYdwNZNc8gjog==} engines: {node: '>=18'} peerDependencies: - '@types/node': ^20.17.6 + '@types/node': ^20.17.9 '@isaacs/cliui@8.0.2': resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} @@ -3957,8 +3960,8 @@ packages: '@types/react': optional: true - '@mui/base@5.0.0-beta.61': - resolution: {integrity: sha512-YaMOTXS3ecDNGsPKa6UdlJ8loFLvcL9+VbpCK3hfk71OaNauZRp4Yf7KeXDYr7Ms3M/XBD3SaiR6JMr6vYtfDg==} + '@mui/base@5.0.0-beta.62': + resolution: {integrity: sha512-TzJLCNlrMkSU4bTCdTT+TVUiGx4sjZLhH673UV6YN+rNNP8wJpkWfRSvjDB5HcbH2T0lUamnz643ZnV+8IiMjw==} engines: {node: '>=14.0.0'} peerDependencies: '@types/react': ^18.3.12 @@ -3968,8 +3971,8 @@ packages: '@types/react': optional: true - '@mui/base@5.0.0-beta.64': - resolution: {integrity: sha512-nu663PoZs/Pee0fkPYkjUADfT+AAi2QWvvHghDhLeSx8sa3i+GGaOoUsFmB4CPlyYqWfq9hRGA7H1T3d6VrGgw==} + '@mui/base@5.0.0-beta.63': + resolution: {integrity: sha512-W6aIqKP9X8VUX0KhSnYWo2+5C7MnKV1IhYVd517L/apvfkVq5KaTdlnxSBVwnaWt46whayVgQ/9KXwUVCXp6+w==} engines: {node: '>=14.0.0'} peerDependencies: '@types/react': ^18.3.12 @@ -3999,14 +4002,14 @@ packages: '@types/react': optional: true - '@mui/lab@6.0.0-beta.14': - resolution: {integrity: sha512-l+g8z6QGcr7HdfCXhVaYcEp9TijH/G4h0lNaDaBL+qDFQ087ipNHC+XozE7mXOmBwtEAWmTJB4E5GwDboi9oxA==} + '@mui/lab@6.0.0-beta.16': + resolution: {integrity: sha512-YFeKREMMCiUhp4dGXd6Y/7N3BLepys9bM6xi4aF0WTZOvfl1ksDXPzuXPGiiiIuMgQFJeyN5iUnS1iPu3wH+kQ==} engines: {node: '>=14.0.0'} peerDependencies: '@emotion/react': ^11.5.0 '@emotion/styled': ^11.3.0 - '@mui/material': ^6.1.6 - '@mui/material-pigment-css': ^6.1.6 + '@mui/material': ^6.1.8 + '@mui/material-pigment-css': ^6.1.8 '@types/react': ^18.3.12 react: ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0 @@ -4020,10 +4023,6 @@ packages: '@types/react': optional: true - '@mui/material-pigment-css@6.1.6': - resolution: {integrity: sha512-NMw6CD/RzLvpM5KVlq01+Zs4IsW0/h4mlxwQB4FNxv+sIHiEFr4vezBfcpL2lkC+UhCcvY2gZWOnkPlPcCqb1w==} - engines: {node: '>=14.0.0'} - '@mui/material@5.15.4': resolution: {integrity: sha512-T/LGRAC+M0c+D3+y67eHwIN5bSje0TxbcJCWR0esNvU11T0QwrX3jedXItPNBwMupF2F5VWCDHBVLlFnN3+ABA==} engines: {node: '>=12.0.0'} @@ -4103,22 +4102,6 @@ packages: '@types/react': optional: true - '@mui/system@6.1.6': - resolution: {integrity: sha512-qOf1VUE9wK8syiB0BBCp82oNBAVPYdj4Trh+G1s+L+ImYiKlubWhhqlnvWt3xqMevR+D2h1CXzA1vhX2FvA+VQ==} - engines: {node: '>=14.0.0'} - peerDependencies: - '@emotion/react': ^11.5.0 - '@emotion/styled': ^11.3.0 - '@types/react': ^18.3.12 - react: ^17.0.0 || ^18.0.0 || ^19.0.0 - peerDependenciesMeta: - '@emotion/react': - optional: true - '@emotion/styled': - optional: true - '@types/react': - optional: true - '@mui/system@6.1.9': resolution: {integrity: sha512-8x+RucnNp21gfFYsklCaZf0COXbv3+v0lrVuXONxvPEkESi2rwLlOi8UPJfcz6LxZOAX3v3oQ7qw18vnpgueRg==} engines: {node: '>=14.0.0'} @@ -4153,18 +4136,8 @@ packages: '@types/react': optional: true - '@mui/utils@6.1.10': - resolution: {integrity: sha512-1ETuwswGjUiAf2dP9TkBy8p49qrw2wXa+RuAjNTRE5+91vtXJ1HKrs7H9s8CZd1zDlQVzUcUAPm9lpQwF5ogTw==} - engines: {node: '>=14.0.0'} - peerDependencies: - '@types/react': ^18.3.12 - react: ^17.0.0 || ^18.0.0 || ^19.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@mui/utils@6.1.6': - resolution: {integrity: sha512-sBS6D9mJECtELASLM+18WUcXF6RH3zNxBRFeyCRg8wad6NbyNrdxLuwK+Ikvc38sTZwBzAz691HmSofLqHd9sQ==} + '@mui/utils@6.1.8': + resolution: {integrity: sha512-O2DWb1kz8hiANVcR7Z4gOB3SvPPsSQGUmStpyBDzde6dJIfBzgV9PbEQOBZd3EBsd1pB+Uv1z5LAJAbymmawrA==} engines: {node: '>=14.0.0'} peerDependencies: '@types/react': ^18.3.12 @@ -4186,87 +4159,87 @@ packages: '@mui/x-charts-vendor@7.20.0': resolution: {integrity: sha512-pzlh7z/7KKs5o0Kk0oPcB+sY0+Dg7Q7RzqQowDQjpy5Slz6qqGsgOB5YUzn0L+2yRmvASc4Pe0914Ao3tMBogg==} - '@mui/x-charts@7.22.2': - resolution: {integrity: sha512-0Y2du4Ed7gOT53l8vVJ4vKT+Jz4Dh/iHnLy8TtL3+XhbPH9Ndu9Q30WwyyzOn84yt37hSUru/njQ1BWaSvVPHw==} + '@mui/x-charts@7.23.0': + resolution: {integrity: sha512-lXG+vRMFvisFaj93LlglZij7e5NEHptXQG0x9EshSI8uIm8HN9Xp77qIdE95xLyltImakuFCeJaEk9oaRMBTpA==} engines: {node: '>=14.0.0'} peerDependencies: '@emotion/react': ^11.9.0 '@emotion/styled': ^11.8.1 '@mui/material': ^5.15.14 || ^6.0.0 '@mui/system': ^5.15.14 || ^6.0.0 - react: ^17.0.0 || ^18.0.0 - react-dom: ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0 peerDependenciesMeta: '@emotion/react': optional: true '@emotion/styled': optional: true - '@mui/x-data-grid-generator@7.22.2': - resolution: {integrity: sha512-ag0Huc+a7Uy4K7dPkMjw6MPcHqRq6P5j1QKYLl+OxH2opjiJzpAwq6BrbYfU7why2w0lsYjUO5uuaLrqEI0t8g==} + '@mui/x-data-grid-generator@7.23.0': + resolution: {integrity: sha512-DLcOLVTO/yOZpbQivpi6fzXZJbDXqIRa5UeXuVNahO3zf750NMAYYiwInK8SJC1Jinm/Aqo8PLaUNeq6Q3EbCw==} engines: {node: '>=14.0.0'} peerDependencies: '@emotion/react': ^11.9.0 '@emotion/styled': ^11.8.1 '@mui/icons-material': ^5.4.1 || ^6.0.0 '@mui/material': ^5.15.14 || ^6.0.0 - react: ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 || ^19.0.0 peerDependenciesMeta: '@emotion/react': optional: true '@emotion/styled': optional: true - '@mui/x-data-grid-premium@7.22.2': - resolution: {integrity: sha512-HgofS4yodKXhFeiC/JwEG60KneNRiVI29piBsDcYLTsmn6kE1n9n48tPESKls6uYyqcM4upWc2WepizlNUIryw==} + '@mui/x-data-grid-premium@7.23.0': + resolution: {integrity: sha512-OOIeqyAkNEKCilfAwNKaRE8W+t/0MCYsDvxVPcif0HnbWZw3Dh2Z5Ol8G670hX+uNSfSuiEEP5+7/4JkMdm4aA==} engines: {node: '>=14.0.0'} peerDependencies: '@emotion/react': ^11.9.0 '@emotion/styled': ^11.8.1 '@mui/material': ^5.15.14 || ^6.0.0 '@mui/system': ^5.15.14 || ^6.0.0 - react: ^17.0.0 || ^18.0.0 - react-dom: ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0 peerDependenciesMeta: '@emotion/react': optional: true '@emotion/styled': optional: true - '@mui/x-data-grid-pro@7.22.2': - resolution: {integrity: sha512-i6GlRDzP0ySqKUxuPo3rw3L8AZkXUvU3xuoHd+Cpi5OJoQWyrOG2IkTjj3weyemFkUcaJZU5r8hDBD5WjEyguQ==} + '@mui/x-data-grid-pro@7.23.0': + resolution: {integrity: sha512-vun3EdjUPJp+Jwds9QBjJ6AYjlOK9Up+xgB22yucpivzh91ChENp3gxmXtDzMDDBMR6w8h6eVtco60/t2N1Svg==} engines: {node: '>=14.0.0'} peerDependencies: '@emotion/react': ^11.9.0 '@emotion/styled': ^11.8.1 '@mui/material': ^5.15.14 || ^6.0.0 '@mui/system': ^5.15.14 || ^6.0.0 - react: ^17.0.0 || ^18.0.0 - react-dom: ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0 peerDependenciesMeta: '@emotion/react': optional: true '@emotion/styled': optional: true - '@mui/x-data-grid@7.22.2': - resolution: {integrity: sha512-yfy2s5A6tbajQZiEdsba49T4FYb9F0WPrzbbG30dl1+sIiX4ZRX7ma44UIDGPZrsZv8xkkE+p8qeJxZ7OaMteA==} + '@mui/x-data-grid@7.23.0': + resolution: {integrity: sha512-nypSz/7j0HPvW7tRPcZAlQADOiRAE4jTIcxwwJUPLtU17EPJOiw1iB29SRYtUThw4f3aXETPAeT4fzgagpuiKg==} engines: {node: '>=14.0.0'} peerDependencies: '@emotion/react': ^11.9.0 '@emotion/styled': ^11.8.1 '@mui/material': ^5.15.14 || ^6.0.0 '@mui/system': ^5.15.14 || ^6.0.0 - react: ^17.0.0 || ^18.0.0 - react-dom: ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0 peerDependenciesMeta: '@emotion/react': optional: true '@emotion/styled': optional: true - '@mui/x-date-pickers-pro@7.22.2': - resolution: {integrity: sha512-nyCdTYqYTU+QiVLeBIpzuMvAXAH49Pobj+8Gb2GwG4M0lHbUr2uJVh0QYIzxg6Ah2eeJhOj9pjB4nJ1K5k+FIw==} + '@mui/x-date-pickers-pro@7.23.0': + resolution: {integrity: sha512-M5qK2qhrAqrjMc1MrHlcHJFX+3ywj8s+eazpX873Vdhvhthu+Z/adtsgM48eVfiA3NOxOabTyGBcC//LoWI0BA==} engines: {node: '>=14.0.0'} peerDependencies: '@emotion/react': ^11.9.0 @@ -4280,8 +4253,8 @@ packages: moment: ^2.29.4 moment-hijri: ^2.1.2 || ^3.0.0 moment-jalaali: ^0.7.4 || ^0.8.0 || ^0.9.0 || ^0.10.0 - react: ^17.0.0 || ^18.0.0 - react-dom: ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0 peerDependenciesMeta: '@emotion/react': optional: true @@ -4302,8 +4275,8 @@ packages: moment-jalaali: optional: true - '@mui/x-date-pickers@7.22.2': - resolution: {integrity: sha512-1KHSlIlnSoY3oHm820By8X344pIdGYqPvCCvfVHrEeeIQ/pHdxDD8tjZFWkFl4Jgm9oVFK90fMcqNZAzc+WaCw==} + '@mui/x-date-pickers@7.23.0': + resolution: {integrity: sha512-Db9ElibVYHluXLVsRLfFwlYkL6/3NNE5AosSZiTx+Gw7uix/Z3pdjyHeA3ab65fU1tCk08XHY0PU6LQFifYB2g==} engines: {node: '>=14.0.0'} peerDependencies: '@emotion/react': ^11.9.0 @@ -4317,8 +4290,8 @@ packages: moment: ^2.29.4 moment-hijri: ^2.1.2 || ^3.0.0 moment-jalaali: ^0.7.4 || ^0.8.0 || ^0.9.0 || ^0.10.0 - react: ^17.0.0 || ^18.0.0 - react-dom: ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0 peerDependenciesMeta: '@emotion/react': optional: true @@ -4339,28 +4312,28 @@ packages: moment-jalaali: optional: true - '@mui/x-internals@7.21.0': - resolution: {integrity: sha512-94YNyZ0BhK5Z+Tkr90RKf47IVCW8R/1MvdUhh6MCQg6sZa74jsX+x+gEZ4kzuCqOsuyTyxikeQ8vVuCIQiP7UQ==} + '@mui/x-internals@7.23.0': + resolution: {integrity: sha512-bPclKpqUiJYIHqmTxSzMVZi6MH51cQsn5U+8jskaTlo3J4QiMeCYJn/gn7YbeR9GOZFp8hetyHjoQoVHKRXCig==} engines: {node: '>=14.0.0'} peerDependencies: - react: ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 || ^19.0.0 - '@mui/x-license@7.21.0': - resolution: {integrity: sha512-w48L2XQxlSdvld4E5s6pjZ5HPjtqERNun21FQtQJlodLB0JUt8pigseyC8N3X40j+Mw0Atg7UKNhf6OK/MbQ1A==} + '@mui/x-license@7.23.0': + resolution: {integrity: sha512-fIWODBg7qZDKD9R/gmZNywa7O4amyt4fczeLul9G37ahj3zOvdJ6B/RPaMlv9ZzFsuxKYRKMbhkz1+9Gks56QQ==} engines: {node: '>=14.0.0'} peerDependencies: - react: ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 || ^19.0.0 - '@mui/x-tree-view@7.22.1': - resolution: {integrity: sha512-EdFuzAgHn+/b++oNbm8JuXiF4MbRW+Dg70+MNbp2fQi8U1J38kg1hwvIFQ6Wi2AEt3Dv9euaPMFJM+a/4pk5Ng==} + '@mui/x-tree-view@7.23.0': + resolution: {integrity: sha512-67e+FCVMD2A5IaNettHFLUg09j+mMOWlN9f0Uw+LGePA9vLCAMFBdPZIFa18J9F3hTurNLrFzjVA0O4QfHlvrQ==} engines: {node: '>=14.0.0'} peerDependencies: '@emotion/react': ^11.9.0 '@emotion/styled': ^11.8.1 '@mui/material': ^5.15.14 || ^6.0.0 '@mui/system': ^5.15.14 || ^6.0.0 - react: ^17.0.0 || ^18.0.0 - react-dom: ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0 peerDependenciesMeta: '@emotion/react': optional: true @@ -4902,24 +4875,24 @@ packages: resolution: {integrity: sha512-I/s6F7yKUDdtMsoBWXJe8Qz40Tui5vsuKCWJEWVL+5q9sSWRzzx6v2KeNsOBEwd94j0eWkpWCH4yB6rZg9Mf0w==} engines: {node: '>=8.0.0'} - '@pigment-css/nextjs-plugin@0.0.26': - resolution: {integrity: sha512-TYzoMyEuoV5r+y7A0jxNJUH19zo8ay6C5XvaehjZbyP/2PZ458eNV+Ui6b9SNzoh7mWUavn80B1u5fnmuwhrAQ==} + '@pigment-css/nextjs-plugin@0.0.28': + resolution: {integrity: sha512-Ps9EXpul5Evrj24fda8Nr0XNRAlzeInROapThZs7zTanP/e0EMqw9aKn0VAzFA3Q1bazb5oIqg9VhOZIhPut1Q==} engines: {node: '>=14.0.0'} peerDependencies: next: ^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0 - '@pigment-css/react@0.0.26': - resolution: {integrity: sha512-K2vTiGL0hOQwvbpPiMDCc9N6Dvv1uFCFujd9EoshOZ13kBWQ8c/X47jAbk65dCr6JdVscrwLH2950j42kdVgbw==} + '@pigment-css/react@0.0.28': + resolution: {integrity: sha512-i0ws/+mhzKQrHj/TCniYZdPNS62cqXBF0NzGVs59G9AE/cuSUPL+nQNNjLMI43uvo3IgNtavidHVuNQ8uOBr9A==} engines: {node: '>=14.0.0'} peerDependencies: react: ^17.0.0 || ^18.0.0 - '@pigment-css/unplugin@0.0.26': - resolution: {integrity: sha512-3yKiJO5TvT0Y2h/CokBeBdJFbIIg3unAk95TX/vKmFBv5IB10r8Lyrwh6jT1sEUvE8V7k02ku4cMpVl2QjG2BA==} + '@pigment-css/unplugin@0.0.28': + resolution: {integrity: sha512-jLDxGbNQsXclMem1JJsTNN7Q7RvUUXQHXYqkmhYs0YfGLdUiy1UOqKlcKMGhDAFkSEBL35gpVT54wYEouXrq1g==} engines: {node: '>=14.0.0'} - '@pigment-css/vite-plugin@0.0.26': - resolution: {integrity: sha512-ttMqhtRMgFsXIEVnc8dbtfUaLQq3aJxwpPvGzu1EoE4w7zJAPEQWQ1jHDBjYuaCWm7ieE2Y7LWG3gnUOHt/Z7A==} + '@pigment-css/vite-plugin@0.0.28': + resolution: {integrity: sha512-C3un7ab6mw7gLoTMnlTjPO4cfwCn7z75JRrj9t8BAOQ8ZQPUPAf/wsN8HRVlxrwzB4HXEtRWs/vVK0UTRzrcZw==} engines: {node: '>=14.0.0'} peerDependencies: vite: ^4.0.0 || ^5.0.0 @@ -5420,13 +5393,13 @@ packages: '@emotion/react': ^11.13.3 react: '>=18' - '@toolpad/core@0.9.0': - resolution: {integrity: sha512-zR3+ED6mGfw8hJlIVb58m2dMAZBBG4VBXsit1Eqy5yhFdGM1hiDIPaU/xUK+Bq3XrukSWge+c9OVRrTeap83vQ==} + '@toolpad/core@0.10.0': + resolution: {integrity: sha512-pVBSWLeKNd2UIrw+UIBXbkjoRGA0A+TTn9IJ7QQVTQf3YSTLtVkSo0lySIlfUwU5HAMhfNYbRD/KtA4msNXghQ==} engines: {node: '>=14.0.0'} peerDependencies: '@mui/icons-material': 5 - 6 '@mui/material': 5 - 6 - next: ^14 + next: ^14 || ^15 react: ^18 react-router-dom: ^6 peerDependenciesMeta: @@ -5435,8 +5408,8 @@ packages: react-router-dom: optional: true - '@toolpad/utils@0.9.0': - resolution: {integrity: sha512-xOyAgeGL6Hdl/LeqsO0WthC22BeCOAYi7Ln5mVGsUgMzLd1lgOW12tvoAl3QiJAzpQO3Yi5glYbJsDUUN5FQWg==} + '@toolpad/utils@0.10.0': + resolution: {integrity: sha512-Yf8euPX8/Cj7kBqKd8rLvcDahSJ9Y6mpy2YqWBrTBQW73xHCt7Phr6szZlOaBEav5H1TjT0nGAhlChMa8dAJQA==} peerDependencies: react: ^18.0.0 @@ -6603,10 +6576,6 @@ packages: resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} engines: {node: '>=8'} - camelcase-keys@7.0.2: - resolution: {integrity: sha512-Rjs1H+A9R+Ig+4E/9oyB66UC5Mj9Xq3N//vcLf2WzgdTi/3gUu3Z9KoqmlrEG4VuuLK8wJHofxzdQXz/knhiYg==} - engines: {node: '>=12'} - camelcase@5.3.1: resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} engines: {node: '>=6'} @@ -7029,6 +6998,10 @@ packages: resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} engines: {node: '>= 0.6'} + cookie@1.0.2: + resolution: {integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==} + engines: {node: '>=18'} + core-js-compat@3.38.1: resolution: {integrity: sha512-JRH6gfXxGmrzF3tZ57lFx97YARxCXPaMzPo6jELZhv88pBH5VXpQ+y0znKGlFnzuaihqhLbefxSJxWJMPtfDzw==} @@ -7166,6 +7139,10 @@ packages: resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + css-tree@3.0.1: + resolution: {integrity: sha512-8Fxxv+tGhORlshCdCwnNJytvlvq46sOLSYEx2ZIGurahWvMucSRnyjPA3AmrMq4VPRYbHVpWj5VkiVasrM2H4Q==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + css-vendor@2.0.8: resolution: {integrity: sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ==} @@ -7178,10 +7155,6 @@ packages: engines: {node: '>=4'} hasBin: true - cssjanus@1.3.2: - resolution: {integrity: sha512-5pM/C1MIfoqhXa7k9PqSnrjj1SSZDakfyB1DZhdYyJoDUH+evGbsUg6/bpQapTJeSnYaj0rdzPUMeM33CvB0vw==} - engines: {node: '>=6.0.0'} - cssjanus@2.1.0: resolution: {integrity: sha512-kAijbny3GmdOi9k+QT6DGIXqFvL96aksNlGr4Rhk9qXDZYWUojU4bRc3IHWxdaLNOqgEZHuXoe5Wl2l7dxLW5g==} engines: {node: '>=10.0.0'} @@ -7343,10 +7316,6 @@ packages: resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==} engines: {node: '>=10'} - decamelize@5.0.1: - resolution: {integrity: sha512-VfxadyCECXgQlkoEAjeghAr5gY3Hf+IKjKb+X8tGVDtveCjN+USwprd2q3QXBR9T1+x2DG0XZF5/w+7HAtSaXA==} - engines: {node: '>=10'} - decimal.js@10.4.3: resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} @@ -8054,9 +8023,9 @@ packages: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} - file-entry-cache@7.0.2: - resolution: {integrity: sha512-TfW7/1iI4Cy7Y8L6iqNdZQVvdXn0f8B4QcIXmkIbtTIe/Okm/nSlHb4IwGzRVOd3WfSieCgvf5cMzEfySAIl0g==} - engines: {node: '>=12.0.0'} + file-entry-cache@9.1.0: + resolution: {integrity: sha512-/pqPFG+FdxWQj+/WSuzXSDaNzxgTLr/OrR1QuqfEZzDakpdYE70PwUxL7BPUa8hpjbvY1+qvCl8k+8Tq34xJgg==} + engines: {node: '>=18'} filelist@1.0.4: resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} @@ -8123,6 +8092,10 @@ packages: resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} engines: {node: ^10.12.0 || >=12.0.0} + flat-cache@5.0.0: + resolution: {integrity: sha512-JrqFmyUl2PnPi1OvLyTVHnQvwQ0S+e6lGSwu8OkAZlSaNIZciTY2H/cOOROxsBA1m/LZNHDsqAgDZt6akWcjsQ==} + engines: {node: '>=18'} + flat@5.0.2: resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} hasBin: true @@ -8674,6 +8647,10 @@ packages: resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} engines: {node: '>= 4'} + ignore@6.0.2: + resolution: {integrity: sha512-InwqeHHN2XpumIkMvpl/DCJVrAHgCsG5+cn1XlnLWGwtZBm8QJfSusItfrwx81CTp5agNZqpKU2J/ccC5nGT4A==} + engines: {node: '>= 4'} + image-size@1.1.1: resolution: {integrity: sha512-541xKlUw6jr/6gGuk92F+mYM5zaFAc5ahphvkqvNe2bQ6gVBkd6bfrmVJ2t4KDAfikAYZyIqTnktX3i6/aQDrQ==} engines: {node: '>=16.x'} @@ -8694,10 +8671,6 @@ packages: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} engines: {node: '>=6'} - import-lazy@4.0.0: - resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} - engines: {node: '>=8'} - import-local@3.1.0: resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} engines: {node: '>=8'} @@ -9187,15 +9160,6 @@ packages: '@babel/preset-env': optional: true - jsdom@24.1.3: - resolution: {integrity: sha512-MyL55p3Ut3cXbeBEG7Hcv0mVM8pp8PBNWxRqchZnSfAiES1v1mRnMeFfaHWIPULpwsYfvO+ZmMZz5tGCnjzDUQ==} - engines: {node: '>=18'} - peerDependencies: - canvas: ^2.11.2 - peerDependenciesMeta: - canvas: - optional: true - jsdom@25.0.1: resolution: {integrity: sha512-8i7LzZj7BF8uplX+ZyOlIz86V6TAsSs+np6m1kpW9u0JWi4z/1t+FzcK1aek+ybTnAC4KhBL4uXCNT0wcUIeCw==} engines: {node: '>=18'} @@ -9401,8 +9365,8 @@ packages: resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} engines: {node: '>=6'} - known-css-properties@0.29.0: - resolution: {integrity: sha512-Ne7wqW7/9Cz54PDt4I3tcV+hAyat8ypyOGzYRJQfdxnnjeWsTxt1cy8pjvvKeI5kfXuyvULyeeAvwvvtAX3ayQ==} + known-css-properties@0.35.0: + resolution: {integrity: sha512-a/RAk2BfKk+WFGhhOCAYqSiFLc34k8Mt/6NWRI4joER0EYUzXIcFivjjnoD3+XU1DggLn/tZc3DOAgke7l8a4A==} konva@9.3.6: resolution: {integrity: sha512-dqR8EbcM0hjuilZCBP6xauQ5V3kH3m9kBcsDkqPypQuRgsXbcXUrxqYxhNbdvKZpYNW8Amq94jAD/C0NY3qfBQ==} @@ -9716,8 +9680,8 @@ packages: resolution: {integrity: sha512-s73fU2CQN7WCgjhaQUQ8wYESQNzGRNOKDd+3xgVqu8kuTEhmwepd/mxOv1LR2oV046ONrTLBFsM7IoKWNvmy5g==} engines: {node: '>=18'} - marked@14.1.4: - resolution: {integrity: sha512-vkVZ8ONmUdPnjCKc5uTRvmkRbx4EAi2OkTOXmfTDhZz3OFqMNBM1oTTWwTr4HY4uAEojhzPf+Fy8F1DWa3Sndg==} + marked@15.0.3: + resolution: {integrity: sha512-Ai0cepvl2NHnTcO9jYDtcOEtVBNVYR31XnEA3BndO7f5As1wzpcOceSUM8FDkNLJNIODcLpDTWay/qQhqbuMvg==} engines: {node: '>= 18'} hasBin: true @@ -9755,6 +9719,9 @@ packages: mdn-data@2.0.30: resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} + mdn-data@2.12.1: + resolution: {integrity: sha512-rsfnCbOHjqrhWxwt5/wtSLzpoKTzW7OXdT5lLOIH1OTYhWu9rRJveGq0sKvDZODABH7RX+uoR+DYcpFnq4Tf6Q==} + mdurl@2.0.0: resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} @@ -9775,14 +9742,14 @@ packages: memory-fs@0.2.0: resolution: {integrity: sha512-+y4mDxU4rvXXu5UDSGCGNiesFmwCHuefGMoPCO1WYucNYj7DsLqrFaa2fXVI0H+NNiPTwwzKwspn9yTZqUGqng==} - meow@10.1.5: - resolution: {integrity: sha512-/d+PQ4GKmGvM9Bee/DPa8z3mXs/pkvJE2KEThngVNOqtmljC6K7NMPxtc2JeZYTmpWb9k/TmxjeL18ez3h7vCw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - meow@12.1.0: resolution: {integrity: sha512-SvSqzS5ktjGoySdCwxQI16iO/ID1LtxM03QvJ4FF2H5cCtXLN7YbfKBCL9btqXSSuJ5TNG4UH6wvWtXZuvgvrw==} engines: {node: '>=16.10'} + meow@13.2.0: + resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==} + engines: {node: '>=18'} + meow@8.1.2: resolution: {integrity: sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==} engines: {node: '>=10'} @@ -10925,18 +10892,22 @@ packages: postcss-resolve-nested-selector@0.1.6: resolution: {integrity: sha512-0sglIs9Wmkzbr8lQwEyIzlDOOC9bGmfVKcJTaxv3vMmd3uo4o4DerC3En0bnmgceeql9BfC8hRkp7cg0fjdVqw==} - postcss-safe-parser@6.0.0: - resolution: {integrity: sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==} - engines: {node: '>=12.0'} + postcss-safe-parser@7.0.1: + resolution: {integrity: sha512-0AioNCJZ2DPYz5ABT6bddIqlhgwhpHZ/l65YAYo0BCIn0xiDpsnTHz0gnoTGk0OXZW0JRs+cDwL8u/teRdz+8A==} + engines: {node: '>=18.0'} peerDependencies: - postcss: ^8.3.3 + postcss: ^8.4.31 postcss-selector-parser@6.1.2: resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} engines: {node: '>=4'} - postcss-styled-syntax@0.6.4: - resolution: {integrity: sha512-uWiLn+9rKgIghUYmTHvXMR6MnyPULMe9Gv3bV537Fg4FH6CA6cn21WMjKss2Qb98LUhT847tKfnRGG3FhSOgUQ==} + postcss-selector-parser@7.0.0: + resolution: {integrity: sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ==} + engines: {node: '>=4'} + + postcss-styled-syntax@0.7.0: + resolution: {integrity: sha512-OeStzPkHJ1/WDGRKm/JuVK8UdJbjt3U7AFC+zUc9omJ79SaXSxWoy+PXxJz7t8vOO8HcUgCLndNEQfLvZ74TuQ==} engines: {node: '>=14.17'} peerDependencies: postcss: ^8.4.21 @@ -11157,10 +11128,6 @@ packages: resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} engines: {node: '>=8'} - quick-lru@5.1.1: - resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} - engines: {node: '>=10'} - rambda@7.5.0: resolution: {integrity: sha512-y/M9weqWAH4iopRd7EHDEQQvpFPHj1AA3oHozE9tfITHUtTR7Z9PSlIRRG2l1GuW7sefC1cXFfIcF+cgnShdBA==} @@ -11325,6 +11292,16 @@ packages: peerDependencies: react: '>=16.8' + react-router@7.0.1: + resolution: {integrity: sha512-WVAhv9oWCNsja5AkK6KLpXJDSJCQizOIyOd4vvB/+eHGbYx5vkhcmcmwWjQ9yqkRClogi+xjEg9fNEOd5EX/tw==} + engines: {node: '>=20.0.0'} + peerDependencies: + react: '>=18' + react-dom: '>=18' + peerDependenciesMeta: + react-dom: + optional: true + react-runner@1.0.5: resolution: {integrity: sha512-eCIybRpssp6ffjqXqId024esO9UP2lV838Lvm3fC7VgMQ/dQHhR0jJwOY2IPrYD3AaM/bcvMikmASIRZqNUHsw==} peerDependencies: @@ -11409,10 +11386,6 @@ packages: resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} engines: {node: '>=8'} - read-pkg-up@8.0.0: - resolution: {integrity: sha512-snVCqPczksT0HS2EC+SxUndvSzn6LRCwpfSvLrIfR5BKDQQZMaI6jPRC9dYvYFDRAuFEAnkwww8kBBNE/3VvzQ==} - engines: {node: '>=12'} - read-pkg@3.0.0: resolution: {integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==} engines: {node: '>=4'} @@ -11421,10 +11394,6 @@ packages: resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} engines: {node: '>=8'} - read-pkg@6.0.0: - resolution: {integrity: sha512-X1Fu3dPuk/8ZLsMhEj5f4wFAF0DWoK7qhGJvgaijocXxBmSToKfbFtqbxMO7bVjNA1dmE5huAzjXj/ey86iw9Q==} - engines: {node: '>=12'} - read@2.1.0: resolution: {integrity: sha512-bvxi1QLJHcaywCAEsAk4DG3nVoqiY2Csps3qzWalhj5hFqRn1d/OixkFXtLO1PrgHUcAP0FNaSY/5GYNfENFFQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -11481,10 +11450,6 @@ packages: resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} engines: {node: '>=8'} - redent@4.0.0: - resolution: {integrity: sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==} - engines: {node: '>=12'} - redux@5.0.1: resolution: {integrity: sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==} @@ -11793,6 +11758,9 @@ packages: set-blocking@2.0.0: resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + set-cookie-parser@2.7.1: + resolution: {integrity: sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==} + set-function-length@1.2.1: resolution: {integrity: sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==} engines: {node: '>= 0.4'} @@ -12113,10 +12081,6 @@ packages: resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} engines: {node: '>=8'} - strip-indent@4.0.0: - resolution: {integrity: sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==} - engines: {node: '>=12'} - strip-json-comments@2.0.1: resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} engines: {node: '>=0.10.0'} @@ -12133,9 +12097,6 @@ packages: engines: {node: '>=4'} hasBin: true - style-search@0.1.0: - resolution: {integrity: sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==} - styled-components@6.1.13: resolution: {integrity: sha512-M0+N2xSnAtwcVAQeFEsGWFFxXDftHUD7XrKla06QbpUMmbmtFBMMTcKWvFXtWxuD5qQkB8iU5gk6QASlx2ZRMw==} engines: {node: '>= 16'} @@ -12172,28 +12133,23 @@ packages: styled-system@5.1.5: resolution: {integrity: sha512-7VoD0o2R3RKzOzPK0jYrVnS8iJdfkKsQJNiLRDjikOpQVqQHns/DXWaPZOH4tIKkhAT7I6wIsy9FWTWh2X3q+A==} - stylelint-config-recommended@13.0.0: - resolution: {integrity: sha512-EH+yRj6h3GAe/fRiyaoO2F9l9Tgg50AOFhaszyfov9v6ayXJ1IkSHwTxd7lB48FmOeSGDPLjatjO11fJpmarkQ==} - engines: {node: ^14.13.1 || >=16.0.0} + stylelint-config-recommended@14.0.1: + resolution: {integrity: sha512-bLvc1WOz/14aPImu/cufKAZYfXs/A/owZfSMZ4N+16WGXLoX5lOir53M6odBxvhgmgdxCVnNySJmZKx73T93cg==} + engines: {node: '>=18.12.0'} peerDependencies: - stylelint: ^15.10.0 + stylelint: ^16.1.0 - stylelint-config-standard@34.0.0: - resolution: {integrity: sha512-u0VSZnVyW9VSryBG2LSO+OQTjN7zF9XJaAJRX/4EwkmU0R2jYwmBSN10acqZisDitS0CLiEiGjX7+Hrq8TAhfQ==} - engines: {node: ^14.13.1 || >=16.0.0} + stylelint-config-standard@36.0.1: + resolution: {integrity: sha512-8aX8mTzJ6cuO8mmD5yon61CWuIM4UD8Q5aBcWKGSf6kg+EC3uhB+iOywpTK4ca6ZL7B49en8yanOFtUW0qNzyw==} + engines: {node: '>=18.12.0'} peerDependencies: - stylelint: ^15.10.0 + stylelint: ^16.1.0 - stylelint@15.11.0: - resolution: {integrity: sha512-78O4c6IswZ9TzpcIiQJIN49K3qNoXTM8zEJzhaTE/xRTCZswaovSEVIa/uwbOltZrk16X4jAxjaOhzz/hTm1Kw==} - engines: {node: ^14.13.1 || >=16.0.0} + stylelint@16.11.0: + resolution: {integrity: sha512-zrl4IrKmjJQ+h9FoMp69UMCq5SxeHk0URhxUBj4d3ISzo/DplOFBJZc7t7Dr6otB+1bfbbKNLOmCDpzKSlW+Nw==} + engines: {node: '>=18.12.0'} hasBin: true - stylis-plugin-rtl@1.1.0: - resolution: {integrity: sha512-FPoSxP+gbBLJRUXDRDFNBhqy/eToquDLn7ZrjIVBRfXaZ9bunwNnDtDm2qW1EoU0c93krm1Dy+8iVmJpjRGsKw==} - peerDependencies: - stylis: 3.x - stylis-plugin-rtl@2.1.1: resolution: {integrity: sha512-q6xIkri6fBufIO/sV55md2CbgS5c6gg9EhSVATtHHCdOnbN/jcI0u3lYhNVeuI65c4lQPo67g8xmq5jrREvzlg==} peerDependencies: @@ -12473,10 +12429,6 @@ packages: resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} engines: {node: '>=8'} - trim-newlines@4.1.1: - resolution: {integrity: sha512-jRKj0n0jXWo6kh62nA5TEh3+4igKDXLvzBJcPpiizP7oOolUrYIxmVBG9TOtHYFHoddUk6YvAkGeGoSVTXfQXQ==} - engines: {node: '>=12'} - trough@2.2.0: resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} @@ -12522,6 +12474,9 @@ packages: resolution: {integrity: sha512-GwIJau9XaA8nLVbUXsN3IlFi7WmQ48gBUrl3FTkkL/XLu/POhBzfmX9hd33FNMX1qAsfl6ozO1iMmW9NC8YniA==} engines: {node: ^16.14.0 || >=18.0.0} + turbo-stream@2.4.0: + resolution: {integrity: sha512-FHncC10WpBd2eOmGwpmQsWLDoK4cqsA/UT/GqNoaKOQnT8uzhtCbg3EoUDMvqpOSAI0S26mr0rkjzbOO6S3v1g==} + type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} @@ -12562,10 +12517,6 @@ packages: resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} engines: {node: '>=8'} - type-fest@1.4.0: - resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} - engines: {node: '>=10'} - type-fest@2.19.0: resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} engines: {node: '>=12.20'} @@ -12774,6 +12725,10 @@ packages: resolution: {integrity: sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==} hasBin: true + uuid@11.0.3: + resolution: {integrity: sha512-d0z310fCWv5dJwnX1Y/MncBAqGMKEzlBb1AOf7z9K8ALnd0utBX/msg/fA0+sbyN1ihbMsLhrBlnl1ak7Wa0rg==} + hasBin: true + uuid@8.0.0: resolution: {integrity: sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw==} hasBin: true @@ -12839,43 +12794,12 @@ packages: vue-router: optional: true - vite@5.4.10: - resolution: {integrity: sha512-1hvaPshuPUtxeQ0hsVH3Mud0ZanOLwVTneA1EgbAM5LhaZEqyPWGRQ7BtaMvUrTDeEaC8pxtj6a6jku3x4z6SQ==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@types/node': ^20.17.6 - less: '*' - lightningcss: ^1.21.0 - sass: '*' - sass-embedded: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - sass-embedded: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - vite@5.4.11: resolution: {integrity: sha512-c7jFQRklXua0mTzneGW9QVyxFjUgwcihC4bXEtujIo2ouWCe1Ajt/amn2PCxYnhYfd5k09JX3SB7OYWFKYqj8Q==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: - '@types/node': ^20.17.6 + '@types/node': ^20.17.9 less: '*' lightningcss: ^1.21.0 sass: '*' @@ -12913,7 +12837,7 @@ packages: hasBin: true peerDependencies: '@edge-runtime/vm': '*' - '@types/node': ^20.17.6 + '@types/node': ^20.17.9 '@vitest/browser': 2.1.6 '@vitest/ui': 2.1.6 happy-dom: '*' @@ -14420,20 +14344,20 @@ snapshots: '@colors/colors@1.5.0': {} - '@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1)': + '@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3)': dependencies: - '@csstools/css-tokenizer': 2.4.1 + '@csstools/css-tokenizer': 3.0.3 - '@csstools/css-tokenizer@2.4.1': {} + '@csstools/css-tokenizer@3.0.3': {} - '@csstools/media-query-list-parser@2.1.13(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1)': + '@csstools/media-query-list-parser@4.0.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)': dependencies: - '@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1) - '@csstools/css-tokenizer': 2.4.1 + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 - '@csstools/selector-specificity@3.1.1(postcss-selector-parser@6.1.2)': + '@csstools/selector-specificity@5.0.0(postcss-selector-parser@7.0.0)': dependencies: - postcss-selector-parser: 6.1.2 + postcss-selector-parser: 7.0.0 '@discoveryjs/json-ext@0.5.7': {} @@ -14453,6 +14377,8 @@ snapshots: transitivePeerDependencies: - '@algolia/client-search' + '@dual-bundle/import-meta-resolve@4.1.0': {} + '@emnapi/core@1.2.0': dependencies: '@emnapi/wasi-threads': 1.0.1 @@ -15156,7 +15082,7 @@ snapshots: optionalDependencies: '@types/react': 18.3.12 - '@mui/base@5.0.0-beta.61(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@mui/base@5.0.0-beta.62(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.26.0 '@floating-ui/react-dom': 2.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -15170,12 +15096,12 @@ snapshots: optionalDependencies: '@types/react': 18.3.12 - '@mui/base@5.0.0-beta.64(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@mui/base@5.0.0-beta.63(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.26.0 '@floating-ui/react-dom': 2.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/types': 7.2.19(@types/react@18.3.12) - '@mui/utils': 6.1.10(@types/react@18.3.12)(react@18.3.1) + '@mui/utils': 6.1.9(@types/react@18.3.12)(react@18.3.1) '@popperjs/core': 2.11.8 clsx: 2.1.1 prop-types: 15.8.1 @@ -15203,10 +15129,10 @@ snapshots: '@emotion/styled': 11.13.5(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1) '@types/react': 18.3.12 - '@mui/lab@6.0.0-beta.14(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1))(@mui/material-pigment-css@6.1.6(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1))(@mui/material@packages+mui-material+build)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@mui/lab@6.0.0-beta.16(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1))(@mui/material@packages+mui-material+build)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.26.0 - '@mui/base': 5.0.0-beta.61(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mui/base': 5.0.0-beta.62(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/material': link:packages/mui-material/build '@mui/system': 6.1.9(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1) '@mui/types': 7.2.19(@types/react@18.3.12) @@ -15218,22 +15144,8 @@ snapshots: optionalDependencies: '@emotion/react': 11.13.5(@types/react@18.3.12)(react@18.3.1) '@emotion/styled': 11.13.5(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1) - '@mui/material-pigment-css': 6.1.6(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1) '@types/react': 18.3.12 - '@mui/material-pigment-css@6.1.6(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1)': - dependencies: - '@babel/runtime': 7.26.0 - '@mui/system': 6.1.6(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1) - '@pigment-css/react': 0.0.26(@types/react@18.3.12)(react@18.3.1) - transitivePeerDependencies: - - '@emotion/react' - - '@emotion/styled' - - '@types/react' - - react - - supports-color - optional: true - '@mui/material@5.15.4(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.26.0 @@ -15313,23 +15225,6 @@ snapshots: '@emotion/styled': 11.13.5(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1) '@types/react': 18.3.12 - '@mui/system@6.1.6(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1)': - dependencies: - '@babel/runtime': 7.26.0 - '@mui/private-theming': 6.1.9(@types/react@18.3.12)(react@18.3.1) - '@mui/styled-engine': 6.1.9(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) - '@mui/types': 7.2.19(@types/react@18.3.12) - '@mui/utils': 6.1.9(@types/react@18.3.12)(react@18.3.1) - clsx: 2.1.1 - csstype: 3.1.3 - prop-types: 15.8.1 - react: 18.3.1 - optionalDependencies: - '@emotion/react': 11.13.5(@types/react@18.3.12)(react@18.3.1) - '@emotion/styled': 11.13.5(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1) - '@types/react': 18.3.12 - optional: true - '@mui/system@6.1.9(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1)': dependencies: '@babel/runtime': 7.26.0 @@ -15362,19 +15257,7 @@ snapshots: optionalDependencies: '@types/react': 18.3.12 - '@mui/utils@6.1.10(@types/react@18.3.12)(react@18.3.1)': - dependencies: - '@babel/runtime': 7.26.0 - '@mui/types': 7.2.19(@types/react@18.3.12) - '@types/prop-types': 15.7.13 - clsx: 2.1.1 - prop-types: 15.8.1 - react: 18.3.1 - react-is: 18.3.1 - optionalDependencies: - '@types/react': 18.3.12 - - '@mui/utils@6.1.6(@types/react@18.3.12)(react@18.3.1)': + '@mui/utils@6.1.8(@types/react@18.3.12)(react@18.3.1)': dependencies: '@babel/runtime': 7.26.0 '@mui/types': 7.2.19(@types/react@18.3.12) @@ -15416,14 +15299,14 @@ snapshots: delaunator: 5.0.1 robust-predicates: 3.0.2 - '@mui/x-charts@7.22.2(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1))(@mui/material@packages+mui-material+build)(@mui/system@packages+mui-system+build)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@mui/x-charts@7.23.0(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1))(@mui/material@packages+mui-material+build)(@mui/system@packages+mui-system+build)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.26.0 '@mui/material': link:packages/mui-material/build '@mui/system': link:packages/mui-system/build '@mui/utils': 6.1.9(@types/react@18.3.12)(react@18.3.1) '@mui/x-charts-vendor': 7.20.0 - '@mui/x-internals': 7.21.0(@types/react@18.3.12)(react@18.3.1) + '@mui/x-internals': 7.23.0(@types/react@18.3.12)(react@18.3.1) '@react-spring/rafz': 9.7.5 '@react-spring/web': 9.7.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) clsx: 2.1.1 @@ -15436,12 +15319,12 @@ snapshots: transitivePeerDependencies: - '@types/react' - '@mui/x-data-grid-generator@7.22.2(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1))(@mui/icons-material@packages+mui-icons-material+build)(@mui/material@packages+mui-material+build)(@mui/system@packages+mui-system+build)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@mui/x-data-grid-generator@7.23.0(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1))(@mui/icons-material@packages+mui-icons-material+build)(@mui/material@packages+mui-material+build)(@mui/system@packages+mui-system+build)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.26.0 '@mui/icons-material': link:packages/mui-icons-material/build '@mui/material': link:packages/mui-material/build - '@mui/x-data-grid-premium': 7.22.2(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1))(@mui/material@packages+mui-material+build)(@mui/system@packages+mui-system+build)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mui/x-data-grid-premium': 7.23.0(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1))(@mui/material@packages+mui-material+build)(@mui/system@packages+mui-system+build)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) chance: 1.1.12 clsx: 2.1.1 lru-cache: 11.0.1 @@ -15454,16 +15337,16 @@ snapshots: - '@types/react' - react-dom - '@mui/x-data-grid-premium@7.22.2(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1))(@mui/material@packages+mui-material+build)(@mui/system@packages+mui-system+build)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@mui/x-data-grid-premium@7.23.0(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1))(@mui/material@packages+mui-material+build)(@mui/system@packages+mui-system+build)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.26.0 '@mui/material': link:packages/mui-material/build '@mui/system': link:packages/mui-system/build '@mui/utils': 6.1.9(@types/react@18.3.12)(react@18.3.1) - '@mui/x-data-grid': 7.22.2(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1))(@mui/material@packages+mui-material+build)(@mui/system@packages+mui-system+build)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@mui/x-data-grid-pro': 7.22.2(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1))(@mui/material@packages+mui-material+build)(@mui/system@packages+mui-system+build)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@mui/x-internals': 7.21.0(@types/react@18.3.12)(react@18.3.1) - '@mui/x-license': 7.21.0(@types/react@18.3.12)(react@18.3.1) + '@mui/x-data-grid': 7.23.0(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1))(@mui/material@packages+mui-material+build)(@mui/system@packages+mui-system+build)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mui/x-data-grid-pro': 7.23.0(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1))(@mui/material@packages+mui-material+build)(@mui/system@packages+mui-system+build)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mui/x-internals': 7.23.0(@types/react@18.3.12)(react@18.3.1) + '@mui/x-license': 7.23.0(@types/react@18.3.12)(react@18.3.1) '@types/format-util': 1.0.4 clsx: 2.1.1 exceljs: 4.4.0 @@ -15477,15 +15360,15 @@ snapshots: transitivePeerDependencies: - '@types/react' - '@mui/x-data-grid-pro@7.22.2(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1))(@mui/material@packages+mui-material+build)(@mui/system@packages+mui-system+build)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@mui/x-data-grid-pro@7.23.0(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1))(@mui/material@packages+mui-material+build)(@mui/system@packages+mui-system+build)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.26.0 '@mui/material': link:packages/mui-material/build '@mui/system': link:packages/mui-system/build '@mui/utils': 6.1.9(@types/react@18.3.12)(react@18.3.1) - '@mui/x-data-grid': 7.22.2(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1))(@mui/material@packages+mui-material+build)(@mui/system@packages+mui-system+build)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@mui/x-internals': 7.21.0(@types/react@18.3.12)(react@18.3.1) - '@mui/x-license': 7.21.0(@types/react@18.3.12)(react@18.3.1) + '@mui/x-data-grid': 7.23.0(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1))(@mui/material@packages+mui-material+build)(@mui/system@packages+mui-system+build)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mui/x-internals': 7.23.0(@types/react@18.3.12)(react@18.3.1) + '@mui/x-license': 7.23.0(@types/react@18.3.12)(react@18.3.1) '@types/format-util': 1.0.4 clsx: 2.1.1 prop-types: 15.8.1 @@ -15498,13 +15381,13 @@ snapshots: transitivePeerDependencies: - '@types/react' - '@mui/x-data-grid@7.22.2(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1))(@mui/material@packages+mui-material+build)(@mui/system@packages+mui-system+build)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@mui/x-data-grid@7.23.0(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1))(@mui/material@packages+mui-material+build)(@mui/system@packages+mui-system+build)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.26.0 '@mui/material': link:packages/mui-material/build '@mui/system': link:packages/mui-system/build '@mui/utils': 6.1.9(@types/react@18.3.12)(react@18.3.1) - '@mui/x-internals': 7.21.0(@types/react@18.3.12)(react@18.3.1) + '@mui/x-internals': 7.23.0(@types/react@18.3.12)(react@18.3.1) clsx: 2.1.1 prop-types: 15.8.1 react: 18.3.1 @@ -15516,15 +15399,15 @@ snapshots: transitivePeerDependencies: - '@types/react' - '@mui/x-date-pickers-pro@7.22.2(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1))(@mui/material@packages+mui-material+build)(@mui/system@packages+mui-system+build)(@types/react@18.3.12)(date-fns@2.30.0)(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@mui/x-date-pickers-pro@7.23.0(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1))(@mui/material@packages+mui-material+build)(@mui/system@packages+mui-system+build)(@types/react@18.3.12)(date-fns@2.30.0)(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.26.0 '@mui/material': link:packages/mui-material/build '@mui/system': link:packages/mui-system/build '@mui/utils': 6.1.9(@types/react@18.3.12)(react@18.3.1) - '@mui/x-date-pickers': 7.22.2(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1))(@mui/material@packages+mui-material+build)(@mui/system@packages+mui-system+build)(@types/react@18.3.12)(date-fns@2.30.0)(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@mui/x-internals': 7.21.0(@types/react@18.3.12)(react@18.3.1) - '@mui/x-license': 7.21.0(@types/react@18.3.12)(react@18.3.1) + '@mui/x-date-pickers': 7.23.0(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1))(@mui/material@packages+mui-material+build)(@mui/system@packages+mui-system+build)(@types/react@18.3.12)(date-fns@2.30.0)(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mui/x-internals': 7.23.0(@types/react@18.3.12)(react@18.3.1) + '@mui/x-license': 7.23.0(@types/react@18.3.12)(react@18.3.1) clsx: 2.1.1 prop-types: 15.8.1 react: 18.3.1 @@ -15538,13 +15421,13 @@ snapshots: transitivePeerDependencies: - '@types/react' - '@mui/x-date-pickers@7.22.2(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1))(@mui/material@packages+mui-material+build)(@mui/system@packages+mui-system+build)(@types/react@18.3.12)(date-fns@2.30.0)(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@mui/x-date-pickers@7.23.0(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1))(@mui/material@packages+mui-material+build)(@mui/system@packages+mui-system+build)(@types/react@18.3.12)(date-fns@2.30.0)(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.26.0 '@mui/material': link:packages/mui-material/build '@mui/system': link:packages/mui-system/build '@mui/utils': 6.1.9(@types/react@18.3.12)(react@18.3.1) - '@mui/x-internals': 7.21.0(@types/react@18.3.12)(react@18.3.1) + '@mui/x-internals': 7.23.0(@types/react@18.3.12)(react@18.3.1) '@types/react-transition-group': 4.4.11 clsx: 2.1.1 prop-types: 15.8.1 @@ -15559,7 +15442,7 @@ snapshots: transitivePeerDependencies: - '@types/react' - '@mui/x-internals@7.21.0(@types/react@18.3.12)(react@18.3.1)': + '@mui/x-internals@7.23.0(@types/react@18.3.12)(react@18.3.1)': dependencies: '@babel/runtime': 7.26.0 '@mui/utils': 6.1.9(@types/react@18.3.12)(react@18.3.1) @@ -15567,7 +15450,7 @@ snapshots: transitivePeerDependencies: - '@types/react' - '@mui/x-license@7.21.0(@types/react@18.3.12)(react@18.3.1)': + '@mui/x-license@7.23.0(@types/react@18.3.12)(react@18.3.1)': dependencies: '@babel/runtime': 7.26.0 '@mui/utils': 6.1.9(@types/react@18.3.12)(react@18.3.1) @@ -15575,13 +15458,13 @@ snapshots: transitivePeerDependencies: - '@types/react' - '@mui/x-tree-view@7.22.1(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1))(@mui/material@packages+mui-material+build)(@mui/system@packages+mui-system+build)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@mui/x-tree-view@7.23.0(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1))(@mui/material@packages+mui-material+build)(@mui/system@packages+mui-system+build)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.26.0 '@mui/material': link:packages/mui-material/build '@mui/system': link:packages/mui-system/build '@mui/utils': 6.1.9(@types/react@18.3.12)(react@18.3.1) - '@mui/x-internals': 7.21.0(@types/react@18.3.12)(react@18.3.1) + '@mui/x-internals': 7.23.0(@types/react@18.3.12)(react@18.3.1) '@types/react-transition-group': 4.4.11 clsx: 2.1.1 prop-types: 15.8.1 @@ -16170,9 +16053,9 @@ snapshots: '@opentelemetry/api@1.8.0': optional: true - '@pigment-css/nextjs-plugin@0.0.26(@types/react@18.3.12)(next@15.0.3(@babel/core@7.26.0)(@opentelemetry/api@1.8.0)(@playwright/test@1.48.2)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(webpack-sources@3.2.3)': + '@pigment-css/nextjs-plugin@0.0.28(@types/react@18.3.12)(next@15.0.3(@babel/core@7.26.0)(@opentelemetry/api@1.8.0)(@playwright/test@1.48.2)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(webpack-sources@3.2.3)': dependencies: - '@pigment-css/unplugin': 0.0.26(@types/react@18.3.12)(react@18.3.1)(webpack-sources@3.2.3) + '@pigment-css/unplugin': 0.0.28(@types/react@18.3.12)(react@18.3.1)(webpack-sources@3.2.3) next: 15.0.3(@babel/core@7.26.0)(@opentelemetry/api@1.8.0)(@playwright/test@1.48.2)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) transitivePeerDependencies: - '@types/react' @@ -16180,7 +16063,7 @@ snapshots: - supports-color - webpack-sources - '@pigment-css/react@0.0.26(@types/react@18.3.12)(react@18.3.1)': + '@pigment-css/react@0.0.28(@types/react@18.3.12)(react@18.3.1)': dependencies: '@babel/core': 7.26.0 '@babel/helper-module-imports': 7.25.9 @@ -16201,6 +16084,7 @@ snapshots: cssesc: 3.0.0 csstype: 3.1.3 lodash: 4.17.21 + prop-types: 15.8.1 react: 18.3.1 stylis: 4.3.4 stylis-plugin-rtl: 2.1.1(stylis@4.3.4) @@ -16208,10 +16092,10 @@ snapshots: - '@types/react' - supports-color - '@pigment-css/unplugin@0.0.26(@types/react@18.3.12)(react@18.3.1)(webpack-sources@3.2.3)': + '@pigment-css/unplugin@0.0.28(@types/react@18.3.12)(react@18.3.1)(webpack-sources@3.2.3)': dependencies: '@babel/core': 7.26.0 - '@pigment-css/react': 0.0.26(@types/react@18.3.12)(react@18.3.1) + '@pigment-css/react': 0.0.28(@types/react@18.3.12)(react@18.3.1) '@wyw-in-js/shared': 0.5.5 '@wyw-in-js/transform': 0.5.5 babel-plugin-define-var: 0.1.0 @@ -16222,15 +16106,15 @@ snapshots: - supports-color - webpack-sources - '@pigment-css/vite-plugin@0.0.26(@types/react@18.3.12)(react@18.3.1)(vite@5.4.10(@types/node@20.17.9)(terser@5.29.2))': + '@pigment-css/vite-plugin@0.0.28(@types/react@18.3.12)(react@18.3.1)(vite@5.4.11(@types/node@20.17.9)(terser@5.29.2))': dependencies: '@babel/core': 7.26.0 '@babel/preset-typescript': 7.26.0(@babel/core@7.26.0) - '@pigment-css/react': 0.0.26(@types/react@18.3.12)(react@18.3.1) + '@pigment-css/react': 0.0.28(@types/react@18.3.12)(react@18.3.1) '@wyw-in-js/shared': 0.5.5 '@wyw-in-js/transform': 0.5.5 babel-plugin-define-var: 0.1.0 - vite: 5.4.10(@types/node@20.17.9)(terser@5.29.2) + vite: 5.4.11(@types/node@20.17.9)(terser@5.29.2) transitivePeerDependencies: - '@types/react' - react @@ -16948,14 +16832,14 @@ snapshots: '@theme-ui/css': 0.17.1(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1)) react: 18.3.1 - '@toolpad/core@0.9.0(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1))(@mui/icons-material@packages+mui-icons-material+build)(@mui/material-pigment-css@6.1.6(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1))(@mui/material@packages+mui-material+build)(@types/react@18.3.12)(next@14.2.18(@babel/core@7.26.0)(@opentelemetry/api@1.8.0)(@playwright/test@1.48.2)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.28.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(vite@5.4.11(@types/node@20.17.9)(terser@5.29.2))': + '@toolpad/core@0.10.0(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1))(@mui/icons-material@packages+mui-icons-material+build)(@mui/material@packages+mui-material+build)(@types/react@18.3.12)(next@14.2.18(@babel/core@7.26.0)(@opentelemetry/api@1.8.0)(@playwright/test@1.48.2)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.28.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(vite@5.4.11(@types/node@20.17.9)(terser@5.29.2))': dependencies: '@babel/runtime': 7.26.0 '@mui/icons-material': link:packages/mui-icons-material/build - '@mui/lab': 6.0.0-beta.14(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1))(@mui/material-pigment-css@6.1.6(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1))(@mui/material@packages+mui-material+build)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mui/lab': 6.0.0-beta.16(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1))(@mui/material@packages+mui-material+build)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/material': link:packages/mui-material/build - '@mui/utils': 6.1.6(@types/react@18.3.12)(react@18.3.1) - '@toolpad/utils': 0.9.0(react@18.3.1) + '@mui/utils': 6.1.8(@types/react@18.3.12)(react@18.3.1) + '@toolpad/utils': 0.10.0(react@18.3.1) '@vitejs/plugin-react': 4.3.3(vite@5.4.11(@types/node@20.17.9)(terser@5.29.2)) client-only: 0.0.1 invariant: 2.2.4 @@ -16974,7 +16858,7 @@ snapshots: - supports-color - vite - '@toolpad/utils@0.9.0(react@18.3.1)': + '@toolpad/utils@0.10.0(react@18.3.1)': dependencies: invariant: 2.2.4 prettier: 3.3.3 @@ -17379,22 +17263,22 @@ snapshots: transitivePeerDependencies: - supports-color - '@vitejs/plugin-react@4.3.4(vite@5.4.10(@types/node@20.17.9)(terser@5.29.2))': + '@vitejs/plugin-react@4.3.4(vite@5.4.11(@types/node@20.17.9)(terser@5.29.2))': dependencies: '@babel/core': 7.26.0 '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.0) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 5.4.10(@types/node@20.17.9)(terser@5.29.2) + vite: 5.4.11(@types/node@20.17.9)(terser@5.29.2) transitivePeerDependencies: - supports-color - '@vitest/browser@2.1.8(@types/node@20.17.9)(playwright@1.48.2)(typescript@5.7.2)(vite@5.4.10(@types/node@20.17.9)(terser@5.29.2))(vitest@2.1.6)': + '@vitest/browser@2.1.8(@types/node@20.17.9)(playwright@1.48.2)(typescript@5.7.2)(vite@5.4.11(@types/node@20.17.9)(terser@5.29.2))(vitest@2.1.6)': dependencies: '@testing-library/dom': 10.4.0 '@testing-library/user-event': 14.5.2(@testing-library/dom@10.4.0) - '@vitest/mocker': 2.1.8(msw@2.6.5(@types/node@20.17.9)(typescript@5.7.2))(vite@5.4.10(@types/node@20.17.9)(terser@5.29.2)) + '@vitest/mocker': 2.1.8(msw@2.6.5(@types/node@20.17.9)(typescript@5.7.2))(vite@5.4.11(@types/node@20.17.9)(terser@5.29.2)) '@vitest/utils': 2.1.8 magic-string: 0.30.12 msw: 2.6.5(@types/node@20.17.9)(typescript@5.7.2) @@ -17427,7 +17311,7 @@ snapshots: tinyrainbow: 1.2.0 vitest: 2.1.6(@types/node@20.17.9)(@vitest/browser@2.1.8)(happy-dom@15.11.6)(jsdom@25.0.1)(msw@2.6.5(@types/node@20.17.9)(typescript@5.7.2))(terser@5.29.2) optionalDependencies: - '@vitest/browser': 2.1.8(@types/node@20.17.9)(playwright@1.48.2)(typescript@5.7.2)(vite@5.4.10(@types/node@20.17.9)(terser@5.29.2))(vitest@2.1.6) + '@vitest/browser': 2.1.8(@types/node@20.17.9)(playwright@1.48.2)(typescript@5.7.2)(vite@5.4.11(@types/node@20.17.9)(terser@5.29.2))(vitest@2.1.6) transitivePeerDependencies: - supports-color @@ -17438,23 +17322,23 @@ snapshots: chai: 5.1.2 tinyrainbow: 1.2.0 - '@vitest/mocker@2.1.6(msw@2.6.5(@types/node@20.17.9)(typescript@5.7.2))(vite@5.4.10(@types/node@20.17.9)(terser@5.29.2))': + '@vitest/mocker@2.1.6(msw@2.6.5(@types/node@20.17.9)(typescript@5.7.2))(vite@5.4.11(@types/node@20.17.9)(terser@5.29.2))': dependencies: '@vitest/spy': 2.1.6 estree-walker: 3.0.3 magic-string: 0.30.12 optionalDependencies: msw: 2.6.5(@types/node@20.17.9)(typescript@5.7.2) - vite: 5.4.10(@types/node@20.17.9)(terser@5.29.2) + vite: 5.4.11(@types/node@20.17.9)(terser@5.29.2) - '@vitest/mocker@2.1.8(msw@2.6.5(@types/node@20.17.9)(typescript@5.7.2))(vite@5.4.10(@types/node@20.17.9)(terser@5.29.2))': + '@vitest/mocker@2.1.8(msw@2.6.5(@types/node@20.17.9)(typescript@5.7.2))(vite@5.4.11(@types/node@20.17.9)(terser@5.29.2))': dependencies: '@vitest/spy': 2.1.8 estree-walker: 3.0.3 magic-string: 0.30.12 optionalDependencies: msw: 2.6.5(@types/node@20.17.9)(typescript@5.7.2) - vite: 5.4.10(@types/node@20.17.9)(terser@5.29.2) + vite: 5.4.11(@types/node@20.17.9)(terser@5.29.2) '@vitest/pretty-format@2.1.6': dependencies: @@ -18433,13 +18317,6 @@ snapshots: map-obj: 4.3.0 quick-lru: 4.0.1 - camelcase-keys@7.0.2: - dependencies: - camelcase: 6.3.0 - map-obj: 4.3.0 - quick-lru: 5.1.1 - type-fest: 1.4.0 - camelcase@5.3.1: {} camelcase@6.3.0: {} @@ -18887,6 +18764,8 @@ snapshots: cookie@0.7.2: {} + cookie@1.0.2: {} + core-js-compat@3.38.1: dependencies: browserslist: 4.24.0 @@ -19086,6 +18965,11 @@ snapshots: mdn-data: 2.0.30 source-map-js: 1.2.1 + css-tree@3.0.1: + dependencies: + mdn-data: 2.12.1 + source-map-js: 1.2.1 + css-vendor@2.0.8: dependencies: '@babel/runtime': 7.26.0 @@ -19095,8 +18979,6 @@ snapshots: cssesc@3.0.0: {} - cssjanus@1.3.2: {} - cssjanus@2.1.0: {} csso@5.0.5: @@ -19271,8 +19153,6 @@ snapshots: decamelize@4.0.0: {} - decamelize@5.0.1: {} - decimal.js@10.4.3: {} decode-named-character-reference@1.0.2: @@ -20264,9 +20144,9 @@ snapshots: dependencies: flat-cache: 3.2.0 - file-entry-cache@7.0.2: + file-entry-cache@9.1.0: dependencies: - flat-cache: 3.2.0 + flat-cache: 5.0.0 filelist@1.0.4: dependencies: @@ -20369,6 +20249,11 @@ snapshots: keyv: 4.5.4 rimraf: 3.0.2 + flat-cache@5.0.0: + dependencies: + flatted: 3.3.2 + keyv: 4.5.4 + flat@5.0.2: {} flatted@3.3.2: {} @@ -20992,6 +20877,8 @@ snapshots: ignore@5.3.1: {} + ignore@6.0.2: {} + image-size@1.1.1: dependencies: queue: 6.0.2 @@ -21012,8 +20899,6 @@ snapshots: parent-module: 1.0.1 resolve-from: 4.0.0 - import-lazy@4.0.0: {} - import-local@3.1.0: dependencies: pkg-dir: 4.2.0 @@ -21546,34 +21431,6 @@ snapshots: transitivePeerDependencies: - supports-color - jsdom@24.1.3: - dependencies: - cssstyle: 4.1.0 - data-urls: 5.0.0 - decimal.js: 10.4.3 - form-data: 4.0.0 - html-encoding-sniffer: 4.0.0 - http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.5 - is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.13 - parse5: 7.1.2 - rrweb-cssom: 0.7.1 - saxes: 6.0.0 - symbol-tree: 3.2.4 - tough-cookie: 4.1.4 - w3c-xmlserializer: 5.0.0 - webidl-conversions: 7.0.0 - whatwg-encoding: 3.1.1 - whatwg-mimetype: 4.0.0 - whatwg-url: 14.0.0 - ws: 8.18.0 - xml-name-validator: 5.0.0 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - jsdom@25.0.1: dependencies: cssstyle: 4.1.0 @@ -21601,7 +21458,6 @@ snapshots: - bufferutil - supports-color - utf-8-validate - optional: true jsesc@3.0.2: {} @@ -21886,7 +21742,7 @@ snapshots: kleur@3.0.3: {} - known-css-properties@0.29.0: {} + known-css-properties@0.35.0: {} konva@9.3.6: {} @@ -22294,7 +22150,7 @@ snapshots: markdown-it: 14.1.0 markdownlint-micromark: 0.1.12 - marked@14.1.4: {} + marked@15.0.3: {} marky@1.2.5: {} @@ -22357,6 +22213,8 @@ snapshots: mdn-data@2.0.30: {} + mdn-data@2.12.1: {} + mdurl@2.0.0: {} media-typer@0.3.0: {} @@ -22373,23 +22231,10 @@ snapshots: memory-fs@0.2.0: {} - meow@10.1.5: - dependencies: - '@types/minimist': 1.2.2 - camelcase-keys: 7.0.2 - decamelize: 5.0.1 - decamelize-keys: 1.1.0 - hard-rejection: 2.1.0 - minimist-options: 4.1.0 - normalize-package-data: 3.0.3 - read-pkg-up: 8.0.0 - redent: 4.0.0 - trim-newlines: 4.1.1 - type-fest: 1.4.0 - yargs-parser: 20.2.9 - meow@12.1.0: {} + meow@13.2.0: {} + meow@8.1.2: dependencies: '@types/minimist': 1.2.2 @@ -23832,7 +23677,7 @@ snapshots: postcss-resolve-nested-selector@0.1.6: {} - postcss-safe-parser@6.0.0(postcss@8.4.49): + postcss-safe-parser@7.0.1(postcss@8.4.49): dependencies: postcss: 8.4.49 @@ -23841,7 +23686,12 @@ snapshots: cssesc: 3.0.0 util-deprecate: 1.0.2 - postcss-styled-syntax@0.6.4(postcss@8.4.49): + postcss-selector-parser@7.0.0: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-styled-syntax@0.7.0(postcss@8.4.49): dependencies: postcss: 8.4.49 typescript: 5.7.2 @@ -24043,8 +23893,6 @@ snapshots: quick-lru@4.0.1: {} - quick-lru@5.1.1: {} - rambda@7.5.0: {} randombytes@2.1.0: @@ -24275,6 +24123,16 @@ snapshots: '@remix-run/router': 1.21.0 react: 18.3.1 + react-router@7.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@types/cookie': 0.6.0 + cookie: 1.0.2 + react: 18.3.1 + set-cookie-parser: 2.7.1 + turbo-stream: 2.4.0 + optionalDependencies: + react-dom: 18.3.1(react@18.3.1) + react-runner@1.0.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: react: 18.3.1 @@ -24389,12 +24247,6 @@ snapshots: read-pkg: 5.2.0 type-fest: 0.8.1 - read-pkg-up@8.0.0: - dependencies: - find-up: 5.0.0 - read-pkg: 6.0.0 - type-fest: 1.4.0 - read-pkg@3.0.0: dependencies: load-json-file: 4.0.0 @@ -24408,13 +24260,6 @@ snapshots: parse-json: 5.2.0 type-fest: 0.6.0 - read-pkg@6.0.0: - dependencies: - '@types/normalize-package-data': 2.4.1 - normalize-package-data: 3.0.3 - parse-json: 5.2.0 - type-fest: 1.4.0 - read@2.1.0: dependencies: mute-stream: 1.0.0 @@ -24493,11 +24338,6 @@ snapshots: indent-string: 4.0.0 strip-indent: 3.0.0 - redent@4.0.0: - dependencies: - indent-string: 5.0.0 - strip-indent: 4.0.0 - redux@5.0.1: {} reflect.getprototypeof@1.0.4: @@ -24887,6 +24727,8 @@ snapshots: set-blocking@2.0.0: {} + set-cookie-parser@2.7.1: {} + set-function-length@1.2.1: dependencies: define-data-property: 1.1.4 @@ -25282,10 +25124,6 @@ snapshots: dependencies: min-indent: 1.0.1 - strip-indent@4.0.0: - dependencies: - min-indent: 1.0.1 - strip-json-comments@2.0.1: {} strip-json-comments@3.1.1: {} @@ -25298,8 +25136,6 @@ snapshots: minimist: 1.2.6 through: 2.3.8 - style-search@0.1.0: {} - styled-components@6.1.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: '@emotion/is-prop-valid': 1.2.2 @@ -25346,64 +25182,58 @@ snapshots: '@styled-system/variant': 5.1.5 object-assign: 4.1.1 - stylelint-config-recommended@13.0.0(stylelint@15.11.0): + stylelint-config-recommended@14.0.1(stylelint@16.11.0(typescript@5.7.2)): dependencies: - stylelint: 15.11.0 + stylelint: 16.11.0(typescript@5.7.2) - stylelint-config-standard@34.0.0(stylelint@15.11.0): + stylelint-config-standard@36.0.1(stylelint@16.11.0(typescript@5.7.2)): dependencies: - stylelint: 15.11.0 - stylelint-config-recommended: 13.0.0(stylelint@15.11.0) + stylelint: 16.11.0(typescript@5.7.2) + stylelint-config-recommended: 14.0.1(stylelint@16.11.0(typescript@5.7.2)) - stylelint@15.11.0: + stylelint@16.11.0(typescript@5.7.2): dependencies: - '@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1) - '@csstools/css-tokenizer': 2.4.1 - '@csstools/media-query-list-parser': 2.1.13(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1) - '@csstools/selector-specificity': 3.1.1(postcss-selector-parser@6.1.2) + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 + '@csstools/media-query-list-parser': 4.0.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.0.0) + '@dual-bundle/import-meta-resolve': 4.1.0 balanced-match: 2.0.0 colord: 2.9.3 - cosmiconfig: 8.2.0 + cosmiconfig: 9.0.0(typescript@5.7.2) css-functions-list: 3.2.3 - css-tree: 2.3.1 + css-tree: 3.0.1 debug: 4.3.7(supports-color@8.1.1) fast-glob: 3.3.2 fastest-levenshtein: 1.0.16 - file-entry-cache: 7.0.2 + file-entry-cache: 9.1.0 global-modules: 2.0.0 globby: 11.1.0 globjoin: 0.1.4 html-tags: 3.3.1 - ignore: 5.3.1 - import-lazy: 4.0.0 + ignore: 6.0.2 imurmurhash: 0.1.4 is-plain-object: 5.0.0 - known-css-properties: 0.29.0 + known-css-properties: 0.35.0 mathml-tag-names: 2.1.3 - meow: 10.1.5 + meow: 13.2.0 micromatch: 4.0.8 normalize-path: 3.0.0 picocolors: 1.1.1 postcss: 8.4.49 postcss-resolve-nested-selector: 0.1.6 - postcss-safe-parser: 6.0.0(postcss@8.4.49) - postcss-selector-parser: 6.1.2 + postcss-safe-parser: 7.0.1(postcss@8.4.49) + postcss-selector-parser: 7.0.0 postcss-value-parser: 4.2.0 resolve-from: 5.0.0 string-width: 4.2.3 - strip-ansi: 6.0.1 - style-search: 0.1.0 supports-hyperlinks: 3.1.0 svg-tags: 1.0.0 table: 6.8.2 write-file-atomic: 5.0.1 transitivePeerDependencies: - supports-color - - stylis-plugin-rtl@1.1.0(stylis@4.2.0): - dependencies: - cssjanus: 1.3.2 - stylis: 4.2.0 + - typescript stylis-plugin-rtl@2.1.1(stylis@4.2.0): dependencies: @@ -25658,13 +25488,11 @@ snapshots: titleize@1.0.0: {} - tldts-core@6.1.61: - optional: true + tldts-core@6.1.61: {} tldts@6.1.61: dependencies: tldts-core: 6.1.61 - optional: true tmp@0.0.33: dependencies: @@ -25692,7 +25520,6 @@ snapshots: tough-cookie@5.0.0: dependencies: tldts: 6.1.61 - optional: true tr46@0.0.3: {} @@ -25708,8 +25535,6 @@ snapshots: trim-newlines@3.0.1: {} - trim-newlines@4.1.1: {} - trough@2.2.0: {} ts-api-utils@1.3.0(typescript@5.7.2): @@ -25758,6 +25583,8 @@ snapshots: transitivePeerDependencies: - supports-color + turbo-stream@2.4.0: {} + type-check@0.4.0: dependencies: prelude-ls: 1.2.1 @@ -25780,8 +25607,6 @@ snapshots: type-fest@0.8.1: {} - type-fest@1.4.0: {} - type-fest@2.19.0: {} type-fest@4.26.1: {} @@ -26004,6 +25829,8 @@ snapshots: uuid@10.0.0: {} + uuid@11.0.3: {} + uuid@8.0.0: {} uuid@8.3.2: {} @@ -26045,7 +25872,7 @@ snapshots: debug: 4.3.7(supports-color@8.1.1) es-module-lexer: 1.5.4 pathe: 1.1.2 - vite: 5.4.10(@types/node@20.17.9)(terser@5.29.2) + vite: 5.4.11(@types/node@20.17.9)(terser@5.29.2) transitivePeerDependencies: - '@types/node' - less @@ -26057,15 +25884,15 @@ snapshots: - supports-color - terser - vite-plugin-node-polyfills@0.22.0(rollup@4.21.1)(vite@5.4.10(@types/node@20.17.9)(terser@5.29.2)): + vite-plugin-node-polyfills@0.22.0(rollup@4.21.1)(vite@5.4.11(@types/node@20.17.9)(terser@5.29.2)): dependencies: '@rollup/plugin-inject': 5.0.5(rollup@4.21.1) node-stdlib-browser: 1.2.0 - vite: 5.4.10(@types/node@20.17.9)(terser@5.29.2) + vite: 5.4.11(@types/node@20.17.9)(terser@5.29.2) transitivePeerDependencies: - rollup - vite-plugin-pages@0.32.4(vite@5.4.10(@types/node@20.17.9)(terser@5.29.2)): + vite-plugin-pages@0.32.4(vite@5.4.11(@types/node@20.17.9)(terser@5.29.2)): dependencies: '@types/debug': 4.1.12 debug: 4.3.7(supports-color@8.1.1) @@ -26075,21 +25902,11 @@ snapshots: json5: 2.2.3 local-pkg: 0.5.1 picocolors: 1.1.1 - vite: 5.4.10(@types/node@20.17.9)(terser@5.29.2) + vite: 5.4.11(@types/node@20.17.9)(terser@5.29.2) yaml: 2.6.1 transitivePeerDependencies: - supports-color - vite@5.4.10(@types/node@20.17.9)(terser@5.29.2): - dependencies: - esbuild: 0.21.5 - postcss: 8.4.49 - rollup: 4.21.1 - optionalDependencies: - '@types/node': 20.17.9 - fsevents: 2.3.3 - terser: 5.29.2 - vite@5.4.11(@types/node@20.17.9)(terser@5.29.2): dependencies: esbuild: 0.21.5 @@ -26100,16 +25917,16 @@ snapshots: fsevents: 2.3.3 terser: 5.29.2 - vitest-fail-on-console@0.7.1(vite@5.4.10(@types/node@20.17.9)(terser@5.29.2))(vitest@2.1.6): + vitest-fail-on-console@0.7.1(vite@5.4.11(@types/node@20.17.9)(terser@5.29.2))(vitest@2.1.6): dependencies: chalk: 5.3.0 - vite: 5.4.10(@types/node@20.17.9)(terser@5.29.2) + vite: 5.4.11(@types/node@20.17.9)(terser@5.29.2) vitest: 2.1.6(@types/node@20.17.9)(@vitest/browser@2.1.8)(happy-dom@15.11.6)(jsdom@25.0.1)(msw@2.6.5(@types/node@20.17.9)(typescript@5.7.2))(terser@5.29.2) vitest@2.1.6(@types/node@20.17.9)(@vitest/browser@2.1.8)(happy-dom@15.11.6)(jsdom@25.0.1)(msw@2.6.5(@types/node@20.17.9)(typescript@5.7.2))(terser@5.29.2): dependencies: '@vitest/expect': 2.1.6 - '@vitest/mocker': 2.1.6(msw@2.6.5(@types/node@20.17.9)(typescript@5.7.2))(vite@5.4.10(@types/node@20.17.9)(terser@5.29.2)) + '@vitest/mocker': 2.1.6(msw@2.6.5(@types/node@20.17.9)(typescript@5.7.2))(vite@5.4.11(@types/node@20.17.9)(terser@5.29.2)) '@vitest/pretty-format': 2.1.8 '@vitest/runner': 2.1.6 '@vitest/snapshot': 2.1.6 @@ -26125,12 +25942,12 @@ snapshots: tinyexec: 0.3.1 tinypool: 1.0.1 tinyrainbow: 1.2.0 - vite: 5.4.10(@types/node@20.17.9)(terser@5.29.2) + vite: 5.4.11(@types/node@20.17.9)(terser@5.29.2) vite-node: 2.1.6(@types/node@20.17.9)(terser@5.29.2) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 20.17.9 - '@vitest/browser': 2.1.8(@types/node@20.17.9)(playwright@1.48.2)(typescript@5.7.2)(vite@5.4.10(@types/node@20.17.9)(terser@5.29.2))(vitest@2.1.6) + '@vitest/browser': 2.1.8(@types/node@20.17.9)(playwright@1.48.2)(typescript@5.7.2)(vite@5.4.11(@types/node@20.17.9)(terser@5.29.2))(vitest@2.1.6) happy-dom: 15.11.6 jsdom: 25.0.1 transitivePeerDependencies: diff --git a/scripts/buidApiDocs/index.ts b/scripts/buidApiDocs/index.ts index b146e0e4da31d6..c923806dfcf675 100644 --- a/scripts/buidApiDocs/index.ts +++ b/scripts/buidApiDocs/index.ts @@ -14,11 +14,12 @@ const projectSettings: ProjectSettings[] = [ muiSystemProjectSettings, ]; -type CommandOptions = { grep?: string }; +type CommandOptions = { grep?: string; rawDescriptions?: boolean }; async function run(argv: ArgumentsCamelCase<CommandOptions>) { const grep = argv.grep == null ? null : new RegExp(argv.grep); - return buildApi(projectSettings, grep); + const rawDescriptions = argv.rawDescriptions === true; + return buildApi(projectSettings, grep, rawDescriptions); } yargs(process.argv.slice(2)) @@ -26,11 +27,17 @@ yargs(process.argv.slice(2)) command: '$0', describe: 'Generates API documentation for the MUI packages.', builder: (command) => { - return command.option('grep', { - description: - 'Only generate files for component filenames matching the pattern. The string is treated as a RegExp.', - type: 'string', - }); + return command + .option('grep', { + description: + 'Only generate files for component filenames matching the pattern. The string is treated as a RegExp.', + type: 'string', + }) + .option('rawDescriptions', { + description: 'Whether to output raw JSDoc descriptions or process them as markdown.', + type: 'boolean', + default: false, + }); }, handler: run, }) diff --git a/test/e2e/index.js b/test/e2e/index.js index e0c3ff8a1a9924..21d5fb9a5d85e6 100644 --- a/test/e2e/index.js +++ b/test/e2e/index.js @@ -1,7 +1,7 @@ import * as React from 'react'; import * as ReactDOM from 'react-dom'; import * as ReactDOMClient from 'react-dom/client'; -import { BrowserRouter as Router, Routes, Route, Link } from 'react-router-dom'; +import { BrowserRouter as Router, Routes, Route, Link } from 'react-router'; import * as DomTestingLibrary from '@testing-library/dom'; import TestViewer from './TestViewer'; diff --git a/test/integration/material-ui/components.spec.tsx b/test/integration/material-ui/components.spec.tsx index acd340e2353d7e..295bb3046c8efe 100644 --- a/test/integration/material-ui/components.spec.tsx +++ b/test/integration/material-ui/components.spec.tsx @@ -1,6 +1,6 @@ import * as React from 'react'; import { createStyles } from '@mui/styles'; -import { Link as ReactRouterLink, LinkProps as ReactRouterLinkProps } from 'react-router-dom'; +import { Link as ReactRouterLink, LinkProps as ReactRouterLinkProps } from 'react-router'; import { expectType } from '@mui/types'; import { AppBar, diff --git a/test/package.json b/test/package.json index 7e0ca66fbfd11a..ab211677293940 100644 --- a/test/package.json +++ b/test/package.json @@ -7,8 +7,8 @@ }, "devDependencies": { "@babel/runtime": "^7.26.0", - "@emotion/cache": "^11.13.1", - "@emotion/react": "^11.13.3", + "@emotion/cache": "^11.13.5", + "@emotion/react": "^11.13.5", "@mui/base": "workspace:*", "@mui/icons-material": "workspace:^", "@mui/internal-test-utils": "workspace:^", @@ -34,12 +34,12 @@ "react": "^18.3.1", "react-dom": "^18.3.1", "react-is": "^18.3.1", - "react-router-dom": "^6.28.0", + "react-router": "^7.0.1", + "react-window": "^1.8.10", "sinon": "^19.0.2", "styled-components": "^6.1.13", "stylis": "4.2.0", "stylis-plugin-rtl": "^2.1.1", - "stylis-plugin-rtl-sc": "npm:stylis-plugin-rtl@^1.1.0", "webfontloader": "^1.6.28", "webpack": "^5.96.1", "yargs": "^17.7.2" diff --git a/test/regressions/fixtures/Autocomplete/Virtualize.js b/test/regressions/fixtures/Autocomplete/Virtualize.js new file mode 100644 index 00000000000000..baf454ba573c07 --- /dev/null +++ b/test/regressions/fixtures/Autocomplete/Virtualize.js @@ -0,0 +1,156 @@ +import * as React from 'react'; +import PropTypes from 'prop-types'; +import TextField from '@mui/material/TextField'; +import Autocomplete, { autocompleteClasses } from '@mui/material/Autocomplete'; +import useMediaQuery from '@mui/material/useMediaQuery'; +import ListSubheader from '@mui/material/ListSubheader'; +import Popper from '@mui/material/Popper'; +import { useTheme, styled } from '@mui/material/styles'; +import { VariableSizeList } from 'react-window'; +import Typography from '@mui/material/Typography'; + +const LISTBOX_PADDING = 8; // px + +function renderRow(props) { + const { data, index, style } = props; + const dataSet = data[index]; + const inlineStyle = { + ...style, + top: style.top + LISTBOX_PADDING, + }; + + if (dataSet.hasOwnProperty('group')) { + return ( + <ListSubheader key={dataSet.key} component="div" style={inlineStyle}> + {dataSet.group} + </ListSubheader> + ); + } + + const { key, ...optionProps } = dataSet[0]; + + return ( + <Typography key={key} component="li" {...optionProps} noWrap style={inlineStyle}> + {`#${dataSet[2] + 1} - ${dataSet[1]}`} + </Typography> + ); +} + +const OuterElementContext = React.createContext({}); + +const OuterElementType = React.forwardRef((props, ref) => { + const outerProps = React.useContext(OuterElementContext); + return <div ref={ref} {...props} {...outerProps} />; +}); + +function useResetCache(data) { + const ref = React.useRef(null); + React.useEffect(() => { + if (ref.current != null) { + ref.current.resetAfterIndex(0, true); + } + }, [data]); + return ref; +} + +// Adapter for react-window +const ListboxComponent = React.forwardRef(function ListboxComponent(props, ref) { + const { children, ...other } = props; + const itemData = []; + children.forEach((item) => { + itemData.push(item); + itemData.push(...(item.children || [])); + }); + + const theme = useTheme(); + const smUp = useMediaQuery(theme.breakpoints.up('sm'), { + noSsr: true, + }); + const itemCount = itemData.length; + const itemSize = smUp ? 36 : 48; + + const getChildSize = (child) => { + if (child.hasOwnProperty('group')) { + return 48; + } + + return itemSize; + }; + + const getHeight = () => { + if (itemCount > 8) { + return 8 * itemSize; + } + return itemData.map(getChildSize).reduce((a, b) => a + b, 0); + }; + + const gridRef = useResetCache(itemCount); + + return ( + <div ref={ref}> + <OuterElementContext.Provider value={other}> + <VariableSizeList + itemData={itemData} + height={getHeight() + 2 * LISTBOX_PADDING} + width="100%" + ref={gridRef} + outerElementType={OuterElementType} + innerElementType="ul" + itemSize={(index) => getChildSize(itemData[index])} + overscanCount={5} + itemCount={itemCount} + > + {renderRow} + </VariableSizeList> + </OuterElementContext.Provider> + </div> + ); +}); + +ListboxComponent.propTypes = { + children: PropTypes.node, +}; + +const StyledPopper = styled(Popper)({ + [`& .${autocompleteClasses.listbox}`]: { + boxSizing: 'border-box', + '& ul': { + padding: 0, + margin: 0, + }, + }, +}); + +const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; + +const OPTIONS = [...Array(100).keys()] + .map( + (number) => + `${characters[number % characters.length].repeat(10)}${Math.floor(number / characters.length)}`, + ) + .sort((a, b) => a.toUpperCase().localeCompare(b.toUpperCase())); + +export default function Virtualize() { + return ( + <div style={{ height: 400 }}> + <Autocomplete + disableCloseOnSelect + sx={{ width: 300 }} + disableListWrap + options={OPTIONS} + groupBy={(option) => option[0].toUpperCase()} + renderInput={(params) => <TextField {...params} label="10,000 options" />} + renderOption={(props, option, state) => [props, option, state.index]} + renderGroup={(params) => params} + slots={{ + popper: StyledPopper, + }} + slotProps={{ + listbox: { + component: ListboxComponent, + }, + }} + /> + </div> + ); +} diff --git a/test/regressions/fixtures/Snackbar/PositionedSnackbarRtl.js b/test/regressions/fixtures/Snackbar/PositionedSnackbarRtl.js index c3c7a0772bdf2d..679c340cd56b16 100644 --- a/test/regressions/fixtures/Snackbar/PositionedSnackbarRtl.js +++ b/test/regressions/fixtures/Snackbar/PositionedSnackbarRtl.js @@ -2,7 +2,6 @@ import * as React from 'react'; import Box from '@mui/material/Box'; import { prefixer } from 'stylis'; import rtlPlugin from 'stylis-plugin-rtl'; -import rtlPluginSc from 'stylis-plugin-rtl-sc'; import { StyleSheetManager } from 'styled-components'; import { CacheProvider } from '@emotion/react'; import { createTheme, ThemeProvider } from '@mui/material/styles'; @@ -19,7 +18,7 @@ const theme = createTheme({ direction: 'rtl' }); export default function PositionedSnackbar() { return ( - <StyleSheetManager stylisPlugins={[rtlPluginSc]}> + <StyleSheetManager stylisPlugins={[rtlPlugin]}> <CacheProvider value={cacheRtl}> <ThemeProvider theme={theme}> <Box dir="rtl" sx={{ width: window?.innerWidth, height: '100vh' }}> diff --git a/test/regressions/fixtures/Tabs/RTLVerticalTabs.js b/test/regressions/fixtures/Tabs/RTLVerticalTabs.js index 428a2ecd6581e6..5676770bcb0b43 100644 --- a/test/regressions/fixtures/Tabs/RTLVerticalTabs.js +++ b/test/regressions/fixtures/Tabs/RTLVerticalTabs.js @@ -1,7 +1,6 @@ import * as React from 'react'; import { prefixer } from 'stylis'; import rtlPlugin from 'stylis-plugin-rtl'; -import rtlPluginSc from 'stylis-plugin-rtl-sc'; import { CacheProvider } from '@emotion/react'; import createCache from '@emotion/cache'; import { StyleSheetManager } from 'styled-components'; @@ -18,7 +17,7 @@ const cacheRtl = createCache({ export default function RTLVerticalTabs() { return ( - <StyleSheetManager stylisPlugins={[rtlPluginSc]}> + <StyleSheetManager stylisPlugins={[rtlPlugin]}> <CacheProvider value={cacheRtl}> <ThemeProvider theme={createTheme({ direction: 'rtl' })}> <Box dir="rtl" sx={{ height: 200, display: 'flex' }}> diff --git a/test/regressions/fixtures/Tooltip/PositionedTooltipsRtl.js b/test/regressions/fixtures/Tooltip/PositionedTooltipsRtl.js index f1b4293c87f626..e3baff72b5c927 100644 --- a/test/regressions/fixtures/Tooltip/PositionedTooltipsRtl.js +++ b/test/regressions/fixtures/Tooltip/PositionedTooltipsRtl.js @@ -5,7 +5,6 @@ import Button from '@mui/material/Button'; import Tooltip from '@mui/material/Tooltip'; import { prefixer } from 'stylis'; import rtlPlugin from 'stylis-plugin-rtl'; -import rtlPluginSc from 'stylis-plugin-rtl-sc'; import { StyleSheetManager } from 'styled-components'; import { CacheProvider } from '@emotion/react'; import { createTheme, ThemeProvider } from '@mui/material/styles'; @@ -21,7 +20,7 @@ const theme = createTheme({ direction: 'rtl' }); export default function PositionedTooltips() { return ( - <StyleSheetManager stylisPlugins={[rtlPluginSc]}> + <StyleSheetManager stylisPlugins={[rtlPlugin]}> <CacheProvider value={cacheRtl}> <ThemeProvider theme={theme}> <Box sx={{ width: 500, margin: 10 }} dir="rtl"> diff --git a/test/regressions/index.js b/test/regressions/index.js index 8d377681dfb032..1f069dc1bd703f 100644 --- a/test/regressions/index.js +++ b/test/regressions/index.js @@ -1,7 +1,7 @@ import * as React from 'react'; import PropTypes from 'prop-types'; import * as ReactDOMClient from 'react-dom/client'; -import { BrowserRouter as Router, Routes, Route, Link, useNavigate } from 'react-router-dom'; +import { BrowserRouter as Router, Routes, Route, Link, useNavigate } from 'react-router'; import webfontloader from 'webfontloader'; import { Globals } from '@react-spring/web'; import TestViewer from './TestViewer'; diff --git a/test/regressions/index.test.js b/test/regressions/index.test.js index 290b89661556b1..7eb53f2887632d 100644 --- a/test/regressions/index.test.js +++ b/test/regressions/index.test.js @@ -144,6 +144,16 @@ async function main() { route: '/regression-Autocomplete/TextboxExpandsOnListboxOpen2', }); }); + + it('should style virtualized listbox correctly', async () => { + const testcase = await renderFixture('/regression-Autocomplete/Virtualize'); + await page.getByRole('combobox').click(); + await takeScreenshot({ testcase, route: '/regression-Autocomplete/Virtualize2' }); + await page.hover('[role="option"]'); + await takeScreenshot({ testcase, route: '/regression-Autocomplete/Virtualize3' }); + await page.click('[role="option"]'); + await takeScreenshot({ testcase, route: '/regression-Autocomplete/Virtualize4' }); + }); }); });