diff --git a/docs/pages/about.tsx b/docs/pages/about.tsx index bbd7b21bb005cd..e79759b64383a8 100644 --- a/docs/pages/about.tsx +++ b/docs/pages/about.tsx @@ -1,716 +1,37 @@ import * as React from 'react'; -import Avatar from '@mui/material/Avatar'; -import Box from '@mui/material/Box'; -import Button from '@mui/material/Button'; -import Container from '@mui/material/Container'; import Divider from '@mui/material/Divider'; -import IconButton from '@mui/material/IconButton'; -import Grid from '@mui/material/Grid'; -import Paper, { PaperProps } from '@mui/material/Paper'; -import Typography from '@mui/material/Typography'; -import Tooltip from '@mui/material/Tooltip'; -import KeyboardArrowRightRounded from '@mui/icons-material/KeyboardArrowRightRounded'; -import TwitterIcon from '@mui/icons-material/Twitter'; -import GitHubIcon from '@mui/icons-material/GitHub'; -import ForumRoundedIcon from '@mui/icons-material/ForumRounded'; -import PeopleRoundedIcon from '@mui/icons-material/PeopleRounded'; -import LocalAtmRoundedIcon from '@mui/icons-material/LocalAtmRounded'; -import Link from 'docs/src/modules/components/Link'; import AppHeader from 'docs/src/layouts/AppHeader'; -import References, { CORE_CUSTOMERS } from 'docs/src/components/home/References'; -import HeroEnd from 'docs/src/components/home/HeroEnd'; import AppFooter from 'docs/src/layouts/AppFooter'; -import MuiStatistics from 'docs/src/components/home/MuiStatistics'; -import GradientText from 'docs/src/components/typography/GradientText'; -import ROUTES from 'docs/src/route'; -import Section from 'docs/src/layouts/Section'; -import IconImage from 'docs/src/components/icon/IconImage'; +import AboutHero from 'docs/src/components/about/AboutHero'; +import OurValues from 'docs/src/components/about/OurValues'; +import Team from 'docs/src/components/about/Team'; +import HowToSupport from 'docs/src/components/about/HowToSupport'; +import AboutEnd from 'docs/src/components/about/AboutEnd'; import Head from 'docs/src/modules/components/Head'; import BrandingCssVarsProvider from 'docs/src/BrandingCssVarsProvider'; import AppHeaderBanner from 'docs/src/components/banner/AppHeaderBanner'; -import teamMembers from 'docs/data/about/teamMembers.json'; -/** - * Import data from: https://tools-public.mui.com/prod/pages/nSwYn51 - -curl 'https://tools-public.mui.com/prod/api/data/muicomabout/queryAbout' \ - -H 'content-type: application/json' \ - --data-raw '{}' \ - --compressed -*/ - -interface Profile { - name: string; - /** - * Role, what are you working on? - */ - title: string; - /** - * Country where you live in, ISO 3166-1. - */ - locationCountry: string; // https://flagpedia.net/download/api - /** - * Image URL. - */ - src?: string; - /** - * Lives in. - */ - location?: string; - /** - * Short summary about you. - */ - about?: string; - github?: string; - twitter?: string; -} - -function Person(props: Profile & { sx?: PaperProps['sx'] }) { - return ( - - div': { minWidth: 'clamp(0px, (150px - 100%) * 999 ,100%)' }, - }} - > - - - ({ - width: 70, - height: 70, - borderRadius: 1, - backgroundColor: 'primary.100', - ...theme.applyDarkStyles({ - backgroundColor: 'primary.900', - }), - })} - /> - - - - - - - - {props.github && ( - - - - )} - {props.twitter && ( - - - - )} - - - - {props.name} - - - {props.title} - - {props.about && ( - ({ - my: 1, - borderColor: 'grey.100', - ...theme.applyDarkStyles({ - borderColor: 'primaryDark.400', - }), - })} - /> - )} - {props.about && ( - - {props.about} - - )} - - ); -} - -function Widget({ - children, - title, - icon, -}: { - children: React.ReactNode; - title: string; - icon: React.ReactElement; -}) { - return ( - ({ - p: 4, - height: '100%', - position: 'relative', - borderRadius: '12px', - border: '1px solid', - borderColor: 'grey.100', - background: `${(theme.vars || theme).palette.gradients.linearSubtle}`, - - ...theme.applyDarkStyles({ - bgcolor: 'primaryDark.900', - borderColor: 'primaryDark.700', - background: `${(theme.vars || theme).palette.gradients.linearSubtle}`, - }), - })} - > - ({ - width: 40, - height: 40, - display: 'flex', - justifyContent: 'center', - alignItems: 'center', - borderRadius: 1, - border: '1px solid', - borderColor: 'primary.200', - bgcolor: 'primary.50', - boxShadow: - '0px 1px 6px 0px rgba(194, 224, 255, 1), 0px 2px 30px 0px rgba(234, 237, 241, 0.3) inset', - ...theme.applyDarkStyles({ - borderColor: 'primary.400', - bgcolor: 'primary.900', - boxShadow: - '0px 1px 6px 0px rgba(0, 89, 178, 1), 0px 2px 30px 0px rgba(0, 0, 0, 0.25) inset', - }), - })} - > - {icon} - - - {title} - - {children} - - ); -} - -const contributors = [ - { - name: 'Sebastian Silbermann', - github: 'eps1lon', - title: 'MUI Core, everything Open Source', - location: 'Berlin, Germany', - locationCountry: 'de', - src: 'https://avatars.githubusercontent.com/u/12292047', - twitter: 'sebsilbermann', - }, - { - name: 'Ryan Cogswell', - github: 'ryancogswell', - title: 'Stack Overflow top contributor', - location: 'Minnesota, United States', - locationCountry: 'us', - src: 'https://avatars.githubusercontent.com/u/287804', - }, - { - name: 'Yan Lee', - github: 'AGDholo', - title: 'Chinese docs', - location: 'China', - locationCountry: 'cn', - src: 'https://avatars.githubusercontent.com/u/13300332', - }, - { - name: 'Jairon Alves Lima', - github: 'jaironalves', - title: 'Brazilian Portuguese docs', - location: 'São Paulo, Brazil', - locationCountry: 'br', - src: 'https://avatars.githubusercontent.com/u/29267813', - }, - { - name: 'Danica Shen', - github: 'DDDDDanica', - title: 'Chinese docs', - location: 'Ireland', - locationCountry: 'ie', - src: 'https://avatars.githubusercontent.com/u/12678455', - }, -]; - -const emeriti = [ - { - name: 'Hai Nguyen', - github: 'hai-cea', - twitter: 'haicea', - title: 'MUI Core, v0.x creator', - location: 'Dallas, US', - locationCountry: 'us', - src: 'https://avatars.githubusercontent.com/u/2007468', - }, - { - name: 'Nathan Marks', - github: 'nathanmarks', - title: 'MUI Core, v1.x co-creator', - location: 'Toronto, CA', - locationCountry: 'ca', - src: 'https://avatars.githubusercontent.com/u/4420103', - }, - { - name: 'Kevin Ross', - github: 'rosskevin', - twitter: 'rosskevin', - title: 'MUI Core, flow', - location: 'Franklin, US', - locationCountry: 'us', - src: 'https://avatars.githubusercontent.com/u/136564', - }, - { - name: 'Sebastian Sebald', - github: 'sebald', - twitter: 'sebastiansebald', - title: 'MUI Core', - location: 'Freiburg, Germany', - locationCountry: 'de', - src: 'https://avatars.githubusercontent.com/u/985701', - }, - { - name: 'Ken Gregory', - github: 'kgregory', - title: 'MUI Core', - location: 'New Jersey, US', - locationCountry: 'us', - src: 'https://avatars.githubusercontent.com/u/3155127', - }, - { - name: 'Tom Crockett', - github: 'pelotom', - twitter: 'pelotom', - title: 'MUI Core', - location: 'Los Angeles, US', - locationCountry: 'us', - src: 'https://avatars.githubusercontent.com/u/128019', - }, - { - name: 'Maik Marschner', - github: 'leMaik', - twitter: 'leMaikOfficial', - title: 'MUI Core', - location: 'Hannover, Germany', - locationCountry: 'de', - src: 'https://avatars.githubusercontent.com/u/5544859', - }, - { - name: 'Oleg Slobodskoi', - github: 'kof', - twitter: 'oleg008', - title: 'MUI Core, JSS', - location: 'Berlin, Germany', - locationCountry: 'de', - src: 'https://avatars.githubusercontent.com/u/52824', - }, - { - name: 'Dmitriy Kovalenko', - github: 'dmtrKovalenko', - twitter: 'goose_plus_plus', - title: 'MUI X, date pickers', - location: 'Kharkiv, Ukraine', - locationCountry: 'ua', - src: 'https://avatars.githubusercontent.com/u/16926049', - }, - { - name: 'Josh Wooding', - github: 'joshwooding', - twitter: 'JoshWooding_', - title: 'MUI Core, J.P. Morgan', - location: 'London, UK', - locationCountry: 'gb', - src: 'https://avatars.githubusercontent.com/u/12938082', - }, -]; - -function AboutContent() { - return ( - - - - - About us - - - We're on a mission to make
building UIs more{' '} - accessible -
- - Our mission is to empower anyone to build UIs, faster. We're reducing the entry - barrier, making design skills accessible. - -
- -
- -
- - - - Our ultimate goal - - - We aim high trying to design the most effective and efficient tool for building UIs, - for developers and designers. MUI started back in 2014, to unify React and Material - Design. Since then, we've become a community of over 2M developers from every - corner of the world. - - - We plan on doing all that cultivating our values: - - {[ - 'Customer obsessed. We put our customers front & center.', - 'Transparency. Most of our work is public.', - 'Freedom. We work from anywhere in the world.', - 'Autonomy. We want to create a safe, high-trust team.', - "Excellence. We're aiming high, and we know it.", - ].map((text) => ( - - - - {text} - - - ))} - - - -
- - - -
- - Team - - - MUI is maintained by a group of invaluable core contributors, with the massive support - and involvement of the community. - - -
-
- - - Company - - - The development of the project and its ecosystem is guided by an international team. - - - - {(teamMembers as Array).map((profileJson) => { - const profile = { - src: `/static/branding/about/${profileJson.name - .split(' ') - .map((x) => x.toLowerCase()) - .join('-')}.png`, - ...profileJson, - }; - return ( - - - - ); - })} - - -
- - - - - Community contributors - - - Some members of the community have so enriched it, that they deserve special mention. - - - - {contributors.map((profile) => ( - - - - ))} - - - - Community emeriti - - - We honor some no-longer-active core team members who have made valuable contributions in - the past. They advise us from time to time. - - - - {emeriti.map((profile) => ( - - - - ))} - - - - - - - - How can you support us? - - - - } - title="Give feedback" - > - - Tell us what and where we can improve or share your happy moments with us! You can - also up or downvote any page on our documentation.
-
And lastly, from time to time, we send our community a survey for more - structured feedback, you're always invited to participate to share your - thoughts. -
- -
-
- - } - title="Join the community" - > - - Become a member of a huge community of developers supporting MUI. You can: - - -
  • - Add new features by{' '} - - submitting a pull request - - . -
  • -
  • - Fix bugs or{' '} - - improve our documentation - - . -
  • -
  • - Help others by reviewing and commenting on existing{' '} - PRs and{' '} - issues. -
  • -
  • - Help translate{' '} - the documentation. -
  • -
  • - Answer questions on{' '} - - Stack Overflow - - . -
  • -
    - -
    -
    - - } - title="Support us financially" - > - - If you use MUI in a commercial project and would like to support its continued - development by becoming a Sponsor, or in a side or hobby project and would like to - become a Backer, you can do so through {'Open Collective'}. -
    -
    - All funds donated are managed transparently, and Sponsors receive recognition in the - README and on the MUI home page. -
    - -
    -
    -
    -
    - - - -
    - ); -} export default function About() { return (
    - + + + + + + + + + +
    diff --git a/docs/pages/careers.tsx b/docs/pages/careers.tsx index 97a32575e1d465..3af136634824f4 100644 --- a/docs/pages/careers.tsx +++ b/docs/pages/careers.tsx @@ -1,26 +1,27 @@ import * as React from 'react'; import { styled } from '@mui/material/styles'; import Box from '@mui/material/Box'; -import Container from '@mui/material/Container'; import Divider from '@mui/material/Divider'; import Grid from '@mui/material/Grid'; import Stack from '@mui/material/Stack'; import Paper from '@mui/material/Paper'; import Button from '@mui/material/Button'; +import Badge from '@mui/material/Badge'; import Typography from '@mui/material/Typography'; import KeyboardArrowRightRounded from '@mui/icons-material/KeyboardArrowRightRounded'; import KeyboardArrowDownRounded from '@mui/icons-material/KeyboardArrowDownRounded'; import MuiAccordion from '@mui/material/Accordion'; import MuiAccordionSummary from '@mui/material/AccordionSummary'; import MuiAccordionDetail from '@mui/material/AccordionDetails'; +import OurValues from 'docs/src/components/about/OurValues'; import Link from 'docs/src/modules/components/Link'; import AppHeader from 'docs/src/layouts/AppHeader'; import AppFooter from 'docs/src/layouts/AppFooter'; -import MuiStatistics from 'docs/src/components/home/MuiStatistics'; import GradientText from 'docs/src/components/typography/GradientText'; import IconImage from 'docs/src/components/icon/IconImage'; import BrandingCssVarsProvider from 'docs/src/BrandingCssVarsProvider'; import Section from 'docs/src/layouts/Section'; +import SectionHeadline from 'docs/src/components/typography/SectionHeadline'; import Head from 'docs/src/modules/components/Head'; import ROUTES from 'docs/src/route'; import AppHeaderBanner from 'docs/src/components/banner/AppHeaderBanner'; @@ -44,20 +45,10 @@ function Role(props: RoleProps) { }} > - + {props.title} - + {props.description} @@ -80,7 +71,7 @@ function Role(props: RoleProps) { {props.title} - + {props.description} @@ -92,7 +83,7 @@ const Accordion = styled(MuiAccordion)(({ theme }) => ({ transition: theme.transitions.create('box-shadow'), borderRadius: theme.shape.borderRadius, '&:hover': { - boxShadow: '1px 1px 20px 0 rgb(90 105 120 / 20%)', + boxShadow: '0 4px 8px 0 rgb(90 105 120 / 20%)', }, '&:not(:last-of-type)': { marginBottom: theme.spacing(2), @@ -280,103 +271,40 @@ function CareersContent() { return ( {/* Hero */} - - - - Careers - - - Build the next generation of tools for UI development - - - Our mission is to enable developers at every level of ability -
    to build great UIs, faster. -
    -
    -
    - {/* Our ultimate goal */} +
    + + Build the next generation +
    of tools for UI development + + } + description="Together, we are enabling developers & designers to bring stunning UIs to life with unrivalled speed and ease." + /> +
    - ({ - bgcolor: 'grey.50', - ...theme.applyDarkStyles({ - bgcolor: 'primaryDark.900', - }), - })} - > -
    - - - - Our ultimate goal - - - We aim high trying to design the most effective and efficient tool for building UIs, - for developers and designers. MUI started back in 2014, to unify React and Material - Design. Since then, we've become a community of over 2M developers from every - corner of the world. - - - We plan on doing all that cultivating our values: - - {[ - 'Customer obsessed. We put our customers front & center.', - "Excellence. We're aiming high, and we know it.", - 'Transparency. Most of our work is public.', - 'Freedom. We work from anywhere in the world.', - 'Autonomy. We want to create a safe, high-trust team.', - ].map((text) => ( - - - - {text} - - - ))} - - - -
    -
    + {/* Perks & benefits */} -
    - - - - {'Perks & benefits'} - - - To help you go above and beyond with us, we provide: - +
    + + + Perks & benefits} + description="To help you go above and beyond with us, we provide:" + /> {[ - ['Remote work:', 'Our entire company is distributed.'], + ['100% remote work:', 'Our entire company is globally distributed.'], [ 'Retreats:', - 'We meet up every eight months for a week of working and having fun together!', + 'We meet up every 8 months for a week of working & having fun together!', ], [ 'Equipment:', - 'We will provide the hardware of your choice (initial grant of $2,500 USD).', + 'We provide the hardware of your choice (initial grant of $2,500 USD).', ], ['Time off:', 'We provide 33 days of paid time off globally.'], ].map((textArray) => ( @@ -389,60 +317,85 @@ function CareersContent() { ))} - - - - Blog - - - Check behind the scenes and news from the company. - - ({ - color: 'primary.600', - ...theme.applyDarkStyles({ - color: 'primary.400', - }), - })} - variant="body2" - fontWeight="bold" + + + - Learn more{' '} - - - + + Handbook + + + Learn everything about how MUI as a company is run. + + ({ + color: 'primary.600', + ...theme.applyDarkStyles({ + color: 'primary.400', + }), + })} + variant="body2" + fontWeight="bold" + > + Learn more{' '} + + + + + + Blog + + + Check behind the scenes and news from the company. + + ({ + color: 'primary.600', + ...theme.applyDarkStyles({ + color: 'primary.400', + }), + })} + variant="body2" + fontWeight="bold" + > + Learn more{' '} + + + +
    - {/* Open roles */} - -
    - - {`Open roles (${openRolesData.reduce((acc, item) => acc + item.roles.length, 0)})`} - - - The company is bootstrapped (so far). It was incorporated in mid-2019 and is growing - fast (x2 YoY). We doubled the team in 2020 (6), accelerated in 2021 (15), kept a similar - pace in 2022 (25), and we plan to double it in 2023 (50). We're looking for help to - grow in the following areas: - -
    - ({ - my: { xs: 2, sm: 4 }, - borderColor: 'grey.100', - ...theme.applyDarkStyles({ - borderColor: 'primaryDark.600', - }), - })} + {/* Open roles */} +
    + + Open roles + acc + item.roles.length, 0)} + color="success" + showZero + sx={{ ml: 3 }} + /> + + } + description="The company is bootstrapped (so far). It was incorporated in mid-2019 and is growing fast (x2 YoY). We doubled the team in 2020 (6), accelerated in 2021 (15), kept a similar pace in 2022 (25), and we plan to double it in 2023 (50). We're looking for help to + grow in the following areas:" /> + - - {/* Next roles */} +
    - {nextRolesData.length > 0 ? ( + {/* Next roles */} + {nextRolesData.length > 0 && ( - - -
    - +
    + Next roles - + } + description={ + We hire in batches, we collect applications a few months before we actively aim to - fill the roles. If none of these roles fit with what you are looking for, you can - apply to the{' '} + fill the roles. If none of them fit with what you are looking for, apply to the{' '} Dream job {' '} role. - -
    -
    - - } - > + + } + /> + + }> {nextRolesData.map((category) => { const roles = category.roles; return ( @@ -536,9 +481,9 @@ function CareersContent() { ); })} -
    +
    - ) : null} + )} {/* Frequently asked questions */}
    @@ -557,10 +502,9 @@ function CareersContent() { sx={(theme) => ({ p: 2, borderStyle: 'dashed', - borderColor: 'grey.300', + borderColor: 'divider', bgcolor: 'white', ...theme.applyDarkStyles({ - borderColor: 'primaryDark.600', bgcolor: 'primaryDark.800', }), })} @@ -570,11 +514,11 @@ function CareersContent() { Got any questions unanswered or need more help? - + We're to help you with any other question you have about our hiring process. - Contact us + Contact us diff --git a/docs/public/static/branding/about/group-photo/group-photo.jpg b/docs/public/static/branding/about/group-photo/group-photo.jpg new file mode 100644 index 00000000000000..2d9aaa544a58c6 Binary files /dev/null and b/docs/public/static/branding/about/group-photo/group-photo.jpg differ diff --git a/docs/public/static/branding/about/group-photo/group-photo.png b/docs/public/static/branding/about/group-photo/group-photo.png new file mode 100644 index 00000000000000..a516c7900d9312 Binary files /dev/null and b/docs/public/static/branding/about/group-photo/group-photo.png differ diff --git a/docs/public/static/branding/about/group-photo/outdoor-focus-group.png b/docs/public/static/branding/about/group-photo/outdoor-focus-group.png new file mode 100644 index 00000000000000..f88f881524aeb3 Binary files /dev/null and b/docs/public/static/branding/about/group-photo/outdoor-focus-group.png differ diff --git a/docs/public/static/branding/about/group-photo/portugal-sight-seeing.png b/docs/public/static/branding/about/group-photo/portugal-sight-seeing.png new file mode 100644 index 00000000000000..47303a569ae941 Binary files /dev/null and b/docs/public/static/branding/about/group-photo/portugal-sight-seeing.png differ diff --git a/docs/public/static/branding/about/group-photo/scuba-gear.png b/docs/public/static/branding/about/group-photo/scuba-gear.png new file mode 100644 index 00000000000000..634d8c5887881c Binary files /dev/null and b/docs/public/static/branding/about/group-photo/scuba-gear.png differ diff --git a/docs/public/static/branding/about/group-photo/skiers.jpg b/docs/public/static/branding/about/group-photo/skiers.jpg new file mode 100644 index 00000000000000..b47c9846c447c2 Binary files /dev/null and b/docs/public/static/branding/about/group-photo/skiers.jpg differ diff --git a/docs/public/static/branding/about/group-photo/skiers.png b/docs/public/static/branding/about/group-photo/skiers.png new file mode 100644 index 00000000000000..d1441fd9a6a7c6 Binary files /dev/null and b/docs/public/static/branding/about/group-photo/skiers.png differ diff --git a/docs/public/static/branding/about/group-photo/snow-tea.png b/docs/public/static/branding/about/group-photo/snow-tea.png new file mode 100644 index 00000000000000..194e79fa673505 Binary files /dev/null and b/docs/public/static/branding/about/group-photo/snow-tea.png differ diff --git a/docs/public/static/branding/about/group-photo/team-dinner.png b/docs/public/static/branding/about/group-photo/team-dinner.png new file mode 100644 index 00000000000000..5e4e669425ad5f Binary files /dev/null and b/docs/public/static/branding/about/group-photo/team-dinner.png differ diff --git a/docs/public/static/branding/about/group-photo/teide-group.jpg b/docs/public/static/branding/about/group-photo/teide-group.jpg new file mode 100644 index 00000000000000..959aa192a083f5 Binary files /dev/null and b/docs/public/static/branding/about/group-photo/teide-group.jpg differ diff --git a/docs/public/static/branding/about/group-photo/teide-group.png b/docs/public/static/branding/about/group-photo/teide-group.png new file mode 100644 index 00000000000000..e16a0c1a16e5e4 Binary files /dev/null and b/docs/public/static/branding/about/group-photo/teide-group.png differ diff --git a/docs/public/static/branding/about/group-photo/working-table-portugal.png b/docs/public/static/branding/about/group-photo/working-table-portugal.png new file mode 100644 index 00000000000000..2e7747a8958a82 Binary files /dev/null and b/docs/public/static/branding/about/group-photo/working-table-portugal.png differ diff --git a/docs/public/static/branding/about/group-photo/working-table-tenerife.png b/docs/public/static/branding/about/group-photo/working-table-tenerife.png new file mode 100644 index 00000000000000..eaac20aace7060 Binary files /dev/null and b/docs/public/static/branding/about/group-photo/working-table-tenerife.png differ diff --git a/docs/public/static/branding/about/illustrations/better-dark.svg b/docs/public/static/branding/about/illustrations/better-dark.svg new file mode 100644 index 00000000000000..ff3b4b8508114a --- /dev/null +++ b/docs/public/static/branding/about/illustrations/better-dark.svg @@ -0,0 +1 @@ + diff --git a/docs/public/static/branding/about/illustrations/better-light.svg b/docs/public/static/branding/about/illustrations/better-light.svg new file mode 100644 index 00000000000000..ebb328d791569b --- /dev/null +++ b/docs/public/static/branding/about/illustrations/better-light.svg @@ -0,0 +1 @@ + diff --git a/docs/public/static/branding/about/illustrations/bureaucracy-dark.svg b/docs/public/static/branding/about/illustrations/bureaucracy-dark.svg new file mode 100644 index 00000000000000..6ab8a241602561 --- /dev/null +++ b/docs/public/static/branding/about/illustrations/bureaucracy-dark.svg @@ -0,0 +1 @@ + diff --git a/docs/public/static/branding/about/illustrations/bureaucracy-light.svg b/docs/public/static/branding/about/illustrations/bureaucracy-light.svg new file mode 100644 index 00000000000000..3658d933271e2d --- /dev/null +++ b/docs/public/static/branding/about/illustrations/bureaucracy-light.svg @@ -0,0 +1 @@ + diff --git a/docs/public/static/branding/about/illustrations/community-dark.svg b/docs/public/static/branding/about/illustrations/community-dark.svg new file mode 100644 index 00000000000000..beba4ba00ef5ac --- /dev/null +++ b/docs/public/static/branding/about/illustrations/community-dark.svg @@ -0,0 +1 @@ + diff --git a/docs/public/static/branding/about/illustrations/community-light.svg b/docs/public/static/branding/about/illustrations/community-light.svg new file mode 100644 index 00000000000000..b9274520db9fdf --- /dev/null +++ b/docs/public/static/branding/about/illustrations/community-light.svg @@ -0,0 +1 @@ + diff --git a/docs/public/static/branding/about/illustrations/team-globe-distribution-dark.png b/docs/public/static/branding/about/illustrations/team-globe-distribution-dark.png new file mode 100644 index 00000000000000..8b59dc339963b1 Binary files /dev/null and b/docs/public/static/branding/about/illustrations/team-globe-distribution-dark.png differ diff --git a/docs/public/static/branding/about/illustrations/team-globe-distribution-light.png b/docs/public/static/branding/about/illustrations/team-globe-distribution-light.png new file mode 100644 index 00000000000000..57efc00531a072 Binary files /dev/null and b/docs/public/static/branding/about/illustrations/team-globe-distribution-light.png differ diff --git a/docs/public/static/branding/about/illustrations/trust-dark.svg b/docs/public/static/branding/about/illustrations/trust-dark.svg new file mode 100644 index 00000000000000..893b09521d0b8a --- /dev/null +++ b/docs/public/static/branding/about/illustrations/trust-dark.svg @@ -0,0 +1 @@ + diff --git a/docs/public/static/branding/about/illustrations/trust-light.svg b/docs/public/static/branding/about/illustrations/trust-light.svg new file mode 100644 index 00000000000000..45464f8c9851d3 --- /dev/null +++ b/docs/public/static/branding/about/illustrations/trust-light.svg @@ -0,0 +1 @@ + diff --git a/docs/src/components/about/AboutEnd.tsx b/docs/src/components/about/AboutEnd.tsx new file mode 100644 index 00000000000000..77757e62292bcd --- /dev/null +++ b/docs/src/components/about/AboutEnd.tsx @@ -0,0 +1,63 @@ +import * as React from 'react'; +import Box from '@mui/material/Box'; +import Button from '@mui/material/Button'; +import Typography from '@mui/material/Typography'; +import KeyboardArrowRightRounded from '@mui/icons-material/KeyboardArrowRightRounded'; +import Link from 'docs/src/modules/components/Link'; +import GradientText from 'docs/src/components/typography/GradientText'; +import ROUTES from 'docs/src/route'; +import Section from 'docs/src/layouts/Section'; +import SectionHeadline from 'docs/src/components/typography/SectionHeadline'; + +export default function AboutEnd() { + return ( +
    + + + Build the next generation +
    of tools for UI development + + } + description="Together, we are enabling developers & designers to bring stunning UIs to life with unrivalled speed and ease." + /> + +
    + ({ + mt: -8, + display: { xs: 'none', sm: 'block' }, + width: { sm: '100%' }, + ...theme.applyDarkStyles({ + content: 'url(/static/branding/about/illustrations/team-globe-distribution-dark.png)', + }), + })} + /> +
    + ); +} diff --git a/docs/src/components/about/AboutHero.tsx b/docs/src/components/about/AboutHero.tsx new file mode 100644 index 00000000000000..d5ff899ceb7eea --- /dev/null +++ b/docs/src/components/about/AboutHero.tsx @@ -0,0 +1,167 @@ +import * as React from 'react'; +import Box from '@mui/material/Box'; +import Typography from '@mui/material/Typography'; +import { styled, keyframes } from '@mui/material/styles'; +import Section from 'docs/src/layouts/Section'; +import GradientText from 'docs/src/components/typography/GradientText'; +import TeamStatistics from 'docs/src/components/about/TeamStatistics'; +import SectionHeadline from 'docs/src/components/typography/SectionHeadline'; + +const teamPhotos = [ + { + img: '/static/branding/about/group-photo/teide-group.jpg', + title: + 'A group photo of the MUI crew posing near the base of Mount Teide at the start of the hike.', + }, + { + img: '/static/branding/about/group-photo/skiers.jpg', + title: 'MUI team members standing lined-up in the snow with their skigear.', + }, + { + img: '/static/branding/about/group-photo/group-photo.jpg', + title: 'Photo of the MUI team in front of the pool at our accommodations in Tenerife', + }, + { + img: '/static/branding/about/group-photo/team-dinner.png', + title: 'Members of the MUI team sitting around a large wooden dining table.', + }, + { + img: '/static/branding/about/group-photo/working-table-tenerife.png', + title: 'The Toolpad team working together on a heads-down moment in Tenerife.', + }, + { + img: '/static/branding/about/group-photo/scuba-gear.png', + title: + 'MUI team members and their diving instructors pose in scuba gear before a successful scuba diving lesson.', + }, + { + img: '/static/branding/about/group-photo/outdoor-focus-group.png', + title: + 'An impromptu focus group gathered next to the pool with laptops to discuss cross-team marketing strategies.', + }, + { + img: '/static/branding/about/group-photo/working-table-portugal.png', + title: 'MUI team members working together on a heads-down moment in Portugal.', + }, + { + img: '/static/branding/about/group-photo/snow-tea.png', + title: 'The team shares a cup of tea up in the mountains of Chamonix, France.', + }, + { + img: '/static/branding/about/group-photo/portugal-sight-seeing.png', + title: 'MUI team selfie while sightseeing in Lisbon, Portugal.', + }, +]; + +const ImageContainer = styled('div')(() => ({ + display: 'flex', + gap: 16, + justifyContent: 'center', +})); + +const Image = styled('img')(({ theme }) => ({ + width: 400, + height: 300, + boxSizing: 'content-box', + objectFit: 'cover', + borderRadius: theme.shape.borderRadius, + border: '1px solid', + borderColor: (theme.vars || theme).palette.divider, + boxShadow: `0px 2px 8px ${(theme.vars || theme).palette.grey[200]}`, + transition: 'all 100ms ease', + ...theme.applyDarkStyles({ + borderColor: (theme.vars || theme).palette.primaryDark[600], + boxShadow: `0px 2px 8px ${(theme.vars || theme).palette.common.black}`, + }), +})); + +const scroll = keyframes` + 0% { + transform: translateX(0); + } + 100% { + transform: translateX(-100%) + } +`; + +function PhotoGallery() { + return ( + ({ + borderRadius: 1, + overflow: 'hidden', + position: 'relative', + minWidth: '100%', + display: 'flex', + gap: 2, + my: 5, + '& > div': { + animation: `${scroll} 120s linear infinite`, + }, + '&::before, &::after': { + background: `linear-gradient(to right, #FFF 0%, rgba(255, 255, 255, 0) 100%)`, + content: "''", + height: '100%', + position: 'absolute', + width: 200, + zIndex: 1, + pointerEvents: 'none', + }, + '&::before': { + right: { xs: -64, sm: -20 }, + top: 0, + transform: 'rotateZ(180deg)', + }, + '&::after': { + left: { xs: -64, sm: -20 }, + top: 0, + }, + ...theme.applyDarkStyles({ + '&::before, &::after': { + background: `linear-gradient(to right, ${ + (theme.vars || theme).palette.primaryDark[900] + } 0%, rgba(0, 0, 0, 0) 100%)`, + }, + }), + })} + > + + {teamPhotos.map((item, index) => ( + {item.title} 2 ? 'lazy' : undefined} + fetchPriority={index > 2 ? undefined : 'high'} + /> + ))} + + + + ); +} + +export default function AboutHero() { + return ( +
    + + We're on a mission to make
    {' '} + building better UIs effortless + + } + description="Together, we are enabling developers & designers to bring stunning UIs to life with unrivalled speed and ease." + /> + + +
    + ); +} diff --git a/docs/src/components/about/HowToSupport.tsx b/docs/src/components/about/HowToSupport.tsx new file mode 100644 index 00000000000000..e3346a64a40177 --- /dev/null +++ b/docs/src/components/about/HowToSupport.tsx @@ -0,0 +1,190 @@ +import * as React from 'react'; +import Box from '@mui/material/Box'; +import Button from '@mui/material/Button'; +import Grid from '@mui/material/Grid'; +import Paper from '@mui/material/Paper'; +import Typography from '@mui/material/Typography'; +import KeyboardArrowRightRounded from '@mui/icons-material/KeyboardArrowRightRounded'; +import ForumRoundedIcon from '@mui/icons-material/ForumRounded'; +import PeopleRoundedIcon from '@mui/icons-material/PeopleRounded'; +import LocalAtmRoundedIcon from '@mui/icons-material/LocalAtmRounded'; +import GradientText from 'docs/src/components/typography/GradientText'; +import Link from 'docs/src/modules/components/Link'; +import Section from 'docs/src/layouts/Section'; +import SectionHeadline from 'docs/src/components/typography/SectionHeadline'; +import { GlowingIconContainer } from 'docs/src/components/action/InfoCard'; + +function Widget({ + children, + title, + icon, +}: { + children: React.ReactNode; + title: string; + icon: React.ReactElement; +}) { + return ( + ({ + p: 4, + height: '100%', + display: 'flex', + flexDirection: 'column', + borderRadius: '12px', + border: '1px solid', + borderColor: 'grey.100', + background: `${(theme.vars || theme).palette.gradients.linearSubtle}`, + ...theme.applyDarkStyles({ + bgcolor: 'primaryDark.900', + borderColor: 'primaryDark.700', + background: `${(theme.vars || theme).palette.gradients.linearSubtle}`, + }), + })} + > + + + {title} + + {children} + + ); +} + +export default function HowToSupport() { + return ( +
    + + Learn how to support +
    MUI's growth + + } + description="" + /> + + + } + title="Give feedback" + > + + Tell us what and where we can improve or share your happy moments with us! You can + also up or downvote any page on our documentation.
    +
    And lastly, from time to time, we send our community a survey for more + structured feedback, you're always invited to participate to share your thoughts. +
    + +
    +
    + + } + title="Join the community" + > + + Become a member of a huge community of developers supporting MUI. You can: + + +
  • + Add new features by{' '} + + submitting a pull request + + . +
  • +
  • + Fix bugs or{' '} + + improve our documentation + + . +
  • +
  • + Help others by reviewing and commenting on existing{' '} + PRs and{' '} + issues. +
  • +
  • + Help translate the + documentation. +
  • +
  • + Answer questions on{' '} + + Stack Overflow + + . +
  • +
    + +
    +
    + + } + title="Support us financially" + > + + If you use MUI in a commercial project and would like to support its continued + development by becoming a Sponsor, or in a side or hobby project and would like to + become a Backer, you can do so through {'Open Collective'}. +
    +
    + All funds donated are managed transparently, and Sponsors receive recognition in the + README and on the MUI home page. +
    + +
    +
    +
    +
    + ); +} diff --git a/docs/src/components/about/OurValues.tsx b/docs/src/components/about/OurValues.tsx new file mode 100644 index 00000000000000..40b58370b82d19 --- /dev/null +++ b/docs/src/components/about/OurValues.tsx @@ -0,0 +1,140 @@ +import * as React from 'react'; +import Box from '@mui/material/Box'; +import Button from '@mui/material/Button'; +import Grid from '@mui/material/Grid'; +import Paper from '@mui/material/Paper'; +import Typography from '@mui/material/Typography'; +import KeyboardArrowRightRounded from '@mui/icons-material/KeyboardArrowRightRounded'; +import Link from 'docs/src/modules/components/Link'; +import GradientText from 'docs/src/components/typography/GradientText'; +import ROUTES from 'docs/src/route'; +import Section from 'docs/src/layouts/Section'; +import SectionHeadline from 'docs/src/components/typography/SectionHeadline'; + +const values = [ + { + title: 'Put community first 💙', + description: 'We never lose sight of who we’re serving and why.', + lightIcon: 'url(/static/branding/about/illustrations/community-light.svg)', + darkIcon: 'url(/static/branding/about/illustrations/community-dark.svg)', + width: 92, + height: 84, + }, + { + title: 'Avoid bureaucracy 🚫', + description: 'We’re so not corporate — and we like it that way.', + lightIcon: 'url(/static/branding/about/illustrations/bureaucracy-light.svg)', + darkIcon: 'url(/static/branding/about/illustrations/bureaucracy-dark.svg)', + width: 81, + height: 94, + }, + { + title: 'Chase “better” 🌱', + description: 'We’re driven by an unending desire to improve.', + lightIcon: 'url(/static/branding/about/illustrations/better-light.svg)', + darkIcon: 'url(/static/branding/about/illustrations/better-dark.svg)', + width: 89, + height: 89, + }, + { + title: 'Trust and deliver together 🚀', + description: 'We choose to cultivate unity as the core of achievement.', + lightIcon: 'url(/static/branding/about/illustrations/trust-light.svg)', + darkIcon: 'url(/static/branding/about/illustrations/trust-dark.svg)', + width: 75, + height: 92, + }, +]; + +export default function OurValues() { + return ( +
    + + + The MUI team pact + + } + description="They explain the behaviors and mindsets we actively encourage, discourage, and why. They serve as a guide toward better decision-making, results, and experiences at work." + /> + + + + {values.map(({ title, description, darkIcon, lightIcon, height, width }) => ( + + ({ + p: 4, + height: '100%', + display: 'flex', + flexDirection: 'column', + alignItems: 'space-between', + gap: 1.5, + background: `${(theme.vars || theme).palette.gradients.linearSubtle}`, + ...theme.applyDarkStyles({ + bgcolor: 'primaryDark.900', + background: `${(theme.vars || theme).palette.gradients.linearSubtle}`, + borderColor: 'primaryDark.700', + }), + })} + > + ({ + background: `${lightIcon}`, + ...theme.applyDarkStyles({ + background: `${darkIcon}`, + }), + })} + width={width} + height={height} + /> + + ({ + mb: 0.5, + color: (theme.vars || theme).palette.text.primary, + '&::first-letter': { + mr: 0.1, + fontSize: theme.typography.pxToRem(16), + color: (theme.vars || theme).palette.primary.main, + }, + ...theme.applyDarkStyles({ + '&::first-letter': { + color: (theme.vars || theme).palette.primary[400], + }, + }), + })} + > + {title} + + + {description} + + + + + ))} + +
    + ); +} diff --git a/docs/src/components/about/Team.tsx b/docs/src/components/about/Team.tsx new file mode 100644 index 00000000000000..a361923e50d58b --- /dev/null +++ b/docs/src/components/about/Team.tsx @@ -0,0 +1,395 @@ +import * as React from 'react'; +import Avatar from '@mui/material/Avatar'; +import Box from '@mui/material/Box'; +import Button from '@mui/material/Button'; +import Container from '@mui/material/Container'; +import Divider from '@mui/material/Divider'; +import IconButton from '@mui/material/IconButton'; +import Grid from '@mui/material/Grid'; +import Paper, { PaperProps } from '@mui/material/Paper'; +import Typography from '@mui/material/Typography'; +import Tooltip from '@mui/material/Tooltip'; +import KeyboardArrowRightRounded from '@mui/icons-material/KeyboardArrowRightRounded'; +import TwitterIcon from '@mui/icons-material/Twitter'; +import GitHubIcon from '@mui/icons-material/GitHub'; +import Link from 'docs/src/modules/components/Link'; +import ROUTES from 'docs/src/route'; +import Section from 'docs/src/layouts/Section'; +import SectionHeadline from 'docs/src/components/typography/SectionHeadline'; +import GradientText from 'docs/src/components/typography/GradientText'; +import teamMembers from 'docs/data/about/teamMembers.json'; + +interface Profile { + name: string; + /** + * Role, what are you working on? + */ + title: string; + /** + * Country where you live in, ISO 3166-1. + */ + locationCountry: string; // https://flagpedia.net/download/api + /** + * Image URL. + */ + src?: string; + /** + * Lives in. + */ + location?: string; + /** + * Short summary about you. + */ + about?: string; + github?: string; + twitter?: string; +} + +function Person(props: Profile & { sx?: PaperProps['sx'] }) { + return ( + + div': { minWidth: 'clamp(0px, (150px - 100%) * 999 ,100%)' }, + }} + > + + + ({ + width: 70, + height: 70, + borderRadius: 1, + border: '1px solid', + borderColor: 'grey.100', + backgroundColor: 'primary.50', + ...theme.applyDarkStyles({ + backgroundColor: 'primary.900', + borderColor: 'primaryDark.500', + }), + })} + /> + ({ + width: 24, + height: 24, + display: 'flex', + justifyContent: 'center', + position: 'absolute', + bottom: 0, + right: 0, + backgroundColor: '#FFF', + borderRadius: 40, + border: '2px solid', + borderColor: 'primary.50', + boxShadow: '0px 2px 8px rgba(0, 0, 0, 0.15)', + transform: 'translateX(50%)', + overflow: 'hidden', + ...theme.applyDarkStyles({ + borderColor: 'primary.200', + }), + })} + > + + + + + + {props.github && ( + + + + )} + {props.twitter && ( + + + + )} + + + + {props.name} + + + {props.title} + + {props.about && } + {props.about && ( + + {props.about} + + )} + + ); +} + +const contributors = [ + { + name: 'Sebastian Silbermann', + github: 'eps1lon', + title: 'MUI Core, everything Open Source', + location: 'Berlin, Germany', + locationCountry: 'de', + src: 'https://avatars.githubusercontent.com/u/12292047', + twitter: 'sebsilbermann', + }, + { + name: 'Ryan Cogswell', + github: 'ryancogswell', + title: 'Stack Overflow top contributor', + location: 'Minnesota, United States', + locationCountry: 'us', + src: 'https://avatars.githubusercontent.com/u/287804', + }, + { + name: 'Yan Lee', + github: 'AGDholo', + title: 'Chinese docs', + location: 'China', + locationCountry: 'cn', + src: 'https://avatars.githubusercontent.com/u/13300332', + }, + { + name: 'Jairon Alves Lima', + github: 'jaironalves', + title: 'Brazilian Portuguese docs', + location: 'São Paulo, Brazil', + locationCountry: 'br', + src: 'https://avatars.githubusercontent.com/u/29267813', + }, + { + name: 'Danica Shen', + github: 'DDDDDanica', + title: 'Chinese docs', + location: 'Ireland', + locationCountry: 'ie', + src: 'https://avatars.githubusercontent.com/u/12678455', + }, +]; + +const emeriti = [ + { + name: 'Hai Nguyen', + github: 'hai-cea', + twitter: 'haicea', + title: 'MUI Core, v0.x creator', + location: 'Dallas, US', + locationCountry: 'us', + src: 'https://avatars.githubusercontent.com/u/2007468', + }, + { + name: 'Nathan Marks', + github: 'nathanmarks', + title: 'MUI Core, v1.x co-creator', + location: 'Toronto, CA', + locationCountry: 'ca', + src: 'https://avatars.githubusercontent.com/u/4420103', + }, + { + name: 'Kevin Ross', + github: 'rosskevin', + twitter: 'rosskevin', + title: 'MUI Core, flow', + location: 'Franklin, US', + locationCountry: 'us', + src: 'https://avatars.githubusercontent.com/u/136564', + }, + { + name: 'Sebastian Sebald', + github: 'sebald', + twitter: 'sebastiansebald', + title: 'MUI Core', + location: 'Freiburg, Germany', + locationCountry: 'de', + src: 'https://avatars.githubusercontent.com/u/985701', + }, + { + name: 'Ken Gregory', + github: 'kgregory', + title: 'MUI Core', + location: 'New Jersey, US', + locationCountry: 'us', + src: 'https://avatars.githubusercontent.com/u/3155127', + }, + { + name: 'Tom Crockett', + github: 'pelotom', + twitter: 'pelotom', + title: 'MUI Core', + location: 'Los Angeles, US', + locationCountry: 'us', + src: 'https://avatars.githubusercontent.com/u/128019', + }, + { + name: 'Maik Marschner', + github: 'leMaik', + twitter: 'leMaikOfficial', + title: 'MUI Core', + location: 'Hannover, Germany', + locationCountry: 'de', + src: 'https://avatars.githubusercontent.com/u/5544859', + }, + { + name: 'Oleg Slobodskoi', + github: 'kof', + twitter: 'oleg008', + title: 'MUI Core, JSS', + location: 'Berlin, Germany', + locationCountry: 'de', + src: 'https://avatars.githubusercontent.com/u/52824', + }, + { + name: 'Dmitriy Kovalenko', + github: 'dmtrKovalenko', + twitter: 'goose_plus_plus', + title: 'MUI X, date pickers', + location: 'Kharkiv, Ukraine', + locationCountry: 'ua', + src: 'https://avatars.githubusercontent.com/u/16926049', + }, + { + name: 'Josh Wooding', + github: 'joshwooding', + twitter: 'JoshWooding_', + title: 'MUI Core, J.P. Morgan', + location: 'London, UK', + locationCountry: 'gb', + src: 'https://avatars.githubusercontent.com/u/12938082', + }, +]; + +export default function Team() { + return ( + +
    + + + Meet the MUIers + + } + description="Contributing from all corners of the world, MUI is a global, fully-remote team & community." + /> + + + + {(teamMembers as Array).map((profileJson) => { + const profile = { + src: `/static/branding/about/${profileJson.name + .split(' ') + .map((x) => x.toLowerCase()) + .join('-')}.png`, + ...profileJson, + }; + return ( + + + + ); + })} + +
    + + {/* Community contributors */} + + + + Community contributors + + + Special members of the community deserve a shout-out for their ever-lasting impact on + MUI's products. + + + {contributors.map((profile) => ( + + + + ))} + + + + Community emeriti + + + We honor some no-longer-active core team members who have made valuable contributions in + the past. They advise us from time to time. + + + {emeriti.map((profile) => ( + + + + ))} + + + +
    + ); +} diff --git a/docs/src/components/about/TeamStatistics.tsx b/docs/src/components/about/TeamStatistics.tsx new file mode 100644 index 00000000000000..a05ccc95f87984 --- /dev/null +++ b/docs/src/components/about/TeamStatistics.tsx @@ -0,0 +1,37 @@ +import * as React from 'react'; +import Box from '@mui/material/Box'; +import Typography from '@mui/material/Typography'; + +const data = [ + { number: '2014', metadata: 'The starting year' }, + { number: '100%', metadata: 'Remote global team' }, + { number: '20+', metadata: 'Countries represented' }, +]; + +export default function TeamStatistics() { + return ( + + {data.map((item) => ( + + ({ + textAlign: { xs: 'left', sm: 'center' }, + color: 'primary.main', + ...theme.applyDarkStyles({ + color: 'primary.200', + }), + })} + > + {item.number} + + + {item.metadata} + + + ))} + + ); +} diff --git a/docs/src/components/action/InfoCard.tsx b/docs/src/components/action/InfoCard.tsx index 9e702aab1f592c..dfe90ba4ef635a 100644 --- a/docs/src/components/action/InfoCard.tsx +++ b/docs/src/components/action/InfoCard.tsx @@ -4,6 +4,38 @@ import Paper from '@mui/material/Paper'; import Typography from '@mui/material/Typography'; import Link from 'docs/src/modules/components/Link'; +interface GlowingIconContainerProps { + icon: React.ReactNode; +} + +export function GlowingIconContainer({ icon }: GlowingIconContainerProps) { + return ( + ({ + width: 40, + height: 40, + display: 'flex', + justifyContent: 'center', + alignItems: 'center', + borderRadius: 1, + border: '1px solid', + borderColor: 'primary.200', + bgcolor: 'primary.50', + boxShadow: + '0px 1px 6px 0px rgba(194, 224, 255, 1), 0px 2px 30px 0px rgba(234, 237, 241, 0.3) inset', + ...theme.applyDarkStyles({ + borderColor: 'primary.400', + bgcolor: 'primary.900', + boxShadow: + '0px 1px 6px 0px rgba(0, 89, 178, 1), 0px 2px 30px 0px rgba(0, 0, 0, 0.25) inset', + }), + })} + > + {icon} + + ); +} + interface InfoCardProps { icon: React.ReactNode; title: string; @@ -29,29 +61,7 @@ export default function InfoCard({ icon, title, description, link }: InfoCardPro }), })} > - ({ - width: 40, - height: 40, - display: 'flex', - justifyContent: 'center', - alignItems: 'center', - borderRadius: 1, - border: '1px solid', - borderColor: 'primary.200', - bgcolor: 'primary.50', - boxShadow: - '0px 1px 6px 0px rgba(194, 224, 255, 1), 0px 2px 30px 0px rgba(234, 237, 241, 0.3) inset', - ...theme.applyDarkStyles({ - borderColor: 'primary.400', - bgcolor: 'primary.900', - boxShadow: - '0px 1px 6px 0px rgba(0, 89, 178, 1), 0px 2px 30px 0px rgba(0, 0, 0, 0.25) inset', - }), - })} - > - {icon} - + - ({ - mb: 1, - color: 'primary.600', - ...theme.applyDarkStyles({ - color: 'primary.300', - }), - ...(alwaysCenter && { - textAlign: 'center', - }), - })} - > - {overline} - + {overline && ( + + {overline} + + )} {typeof title === 'string' ? ( span': { transition: '0.2s', marginLeft: 4 }, '&:hover > span': { transform: 'translateX(2px)' }, }), + ...(ownerState.size === 'medium' && { + padding: theme.spacing('8px', '12px'), + '& > span': { transition: '0.2s', marginLeft: 4 }, + '&:hover > span': { transform: 'translateX(2px)' }, + }), + ...(ownerState.size === 'small' && { + padding: theme.spacing(0.5, 1), + fontFamily: theme.typography.fontFamily, + fontSize: defaultTheme.typography.pxToRem(13), + fontWeight: theme.typography.fontWeightSemiBold, + borderRadius: 8, + '& > span': { transition: '0.2s', marginLeft: 4 }, + '&:hover > span': { transform: 'translateX(2px)' }, + }), ...(ownerState.variant === 'outlined' && ownerState.color === 'secondary' && { color: (theme.vars || theme).palette.text.secondary, @@ -522,13 +536,6 @@ export function getThemedComponents(): ThemeOptions { }, }), }), - ...(ownerState.size === 'small' && { - padding: theme.spacing(0.5, 1), - fontFamily: theme.typography.fontFamily, - fontSize: '0.75rem', - fontWeight: theme.typography.fontWeightSemiBold, - borderRadius: '6px', - }), ...(ownerState.variant === 'contained' && ownerState.color === 'primary' && { color: '#FFF', @@ -683,16 +690,19 @@ export function getThemedComponents(): ThemeOptions { // @ts-ignore internal repo module augmentation issue props: { variant: 'link' }, style: ({ theme }) => ({ + marginBottom: 1, fontSize: theme.typography.pxToRem(14), - fontWeight: 700, + fontWeight: theme.typography.fontWeightBold, color: (theme.vars || theme).palette.primary[600], + '&:hover': { + backgroundColor: (theme.vars || theme).palette.primary[50], + }, ...theme.applyDarkStyles({ color: (theme.vars || theme).palette.primary[300], + '&:hover': { + backgroundColor: alpha(theme.palette.primary[800], 0.3), + }, }), - mb: 1, - '& svg': { - ml: -0.5, - }, }), }, ],