Skip to content

Commit 4363d64

Browse files
rdonigianCarsonF
andauthored
Improve tab scaling styles (#1706)
Co-authored-by: Carson Full <[email protected]>
1 parent 5eaf5b0 commit 4363d64

File tree

5 files changed

+30
-7
lines changed

5 files changed

+30
-7
lines changed

src/components/Tabs/Tab.tsx

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import { Tab as BaseTab, TabProps, TabTypeMap } from '@mui/material';
2+
// eslint-disable-next-line @seedcompany/no-restricted-imports
3+
import { Link, LinkProps } from 'react-router-dom';
4+
5+
export const Tab: typeof BaseTab = (props: TabTypeMap['props']) => (
6+
<BaseTab
7+
{...props}
8+
// Wrap string labels in span so we can scale them when selected (CSS in theme)
9+
label={
10+
typeof props.label === 'string' ? <span>{props.label}</span> : props.label
11+
}
12+
/>
13+
);
14+
15+
export const TabLink = (
16+
props: Omit<TabProps<'a'>, 'component'> & { selected?: boolean } & LinkProps
17+
) => (
18+
<Tab component={Link} {...props} aria-current={props.selected && 'page'} />
19+
);

src/components/Tabs/index.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
1+
export * from './Tab';
12
export * from './TabsContainer';
23
export * from './TabPanelContent';

src/scenes/Partners/Detail/PartnerDetail.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import {
55
Timeline as TimelineIcon,
66
} from '@mui/icons-material';
77
import { TabContext, TabList, TabPanel } from '@mui/lab';
8-
import { Box, Skeleton, Stack, Tab, Tooltip, Typography } from '@mui/material';
8+
import { Box, Skeleton, Stack, Tooltip, Typography } from '@mui/material';
99
import { Many, Nil } from '@seedcompany/common';
1010
import { Helmet } from 'react-helmet-async';
1111
import { useParams } from 'react-router-dom';
@@ -17,7 +17,7 @@ import { Error } from '~/components/Error';
1717
import { FormattedDate, FormattedDateTime } from '~/components/Formatters';
1818
import { IconButton } from '~/components/IconButton';
1919
import { InactiveStatusIcon } from '~/components/Icons/InactiveStatusIcon';
20-
import { TabsContainer } from '~/components/Tabs';
20+
import { Tab, TabsContainer } from '~/components/Tabs';
2121
import { TogglePinButton } from '~/components/TogglePinButton';
2222
import { EnumParam, makeQueryHandler, withDefault } from '~/hooks';
2323
import { useComments } from '../../../components/Comments/CommentsContext';

src/scenes/Projects/List/ProjectList.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,7 @@ import { Stack } from '@mui/material';
33
import { Helmet } from 'react-helmet-async';
44
import { useLocation } from 'react-router-dom';
55
import { ContentContainer } from '~/components/Layout';
6-
import { TabPanelContent, TabsContainer } from '~/components/Tabs';
7-
import { TabLink } from '../../../components/Routing/TabLink';
6+
import { TabLink, TabPanelContent, TabsContainer } from '~/components/Tabs';
87
import { EngagementsPanel } from './EngagementsPanel';
98
import { ProjectsPanel } from './ProjectsPanel';
109

src/theme/overrides.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -207,9 +207,13 @@ export const appComponents = ({
207207
styleOverrides: {
208208
root: ({ theme }) => ({
209209
textTransform: 'none',
210-
transition: theme.transitions.create('transform'),
211-
'&.Mui-selected': {
212-
transform: 'scale(1.43)', // 20px
210+
fontSize: '1.25rem',
211+
'span:not(.MuiTouchRipple-root)': {
212+
transition: theme.transitions.create('transform'),
213+
transform: 'scale(.75)',
214+
},
215+
'&.Mui-selected span:not(.MuiTouchRipple-root)': {
216+
transform: 'scale(1)',
213217
},
214218
}),
215219
},

0 commit comments

Comments
 (0)