Apply new theme (#449)

* Apply new theme

* Fix storybook

* Fixes

* Fix regressions
This commit is contained in:
Charles Bochet
2023-06-26 19:13:04 -07:00
committed by GitHub
parent 2a42ebb70d
commit d6364a9fdd
115 changed files with 818 additions and 721 deletions
+1 -1
View File
@@ -2,7 +2,7 @@ import { initialize, mswDecorator } from 'msw-storybook-addon';
import { Preview } from '@storybook/react'; import { Preview } from '@storybook/react';
import { ThemeProvider } from '@emotion/react'; import { ThemeProvider } from '@emotion/react';
import { withThemeFromJSXProvider } from "@storybook/addon-styling"; import { withThemeFromJSXProvider } from "@storybook/addon-styling";
import { lightTheme, darkTheme } from '../src/modules/ui/layout/styles/themes'; import { lightTheme, darkTheme } from '../src/modules/ui/themes/themes';
initialize(); initialize();
+1
View File
@@ -19,6 +19,7 @@
"cmdk": "^0.2.0", "cmdk": "^0.2.0",
"date-fns": "^2.30.0", "date-fns": "^2.30.0",
"graphql": "^16.6.0", "graphql": "^16.6.0",
"hex-rgb": "^5.0.0",
"js-cookie": "^3.0.5", "js-cookie": "^3.0.5",
"jwt-decode": "^3.1.2", "jwt-decode": "^3.1.2",
"libphonenumber-js": "^1.10.26", "libphonenumber-js": "^1.10.26",
+6 -6
View File
@@ -31,37 +31,37 @@ export function AppNavbar() {
<NavItem <NavItem
label="Search" label="Search"
to="/search" to="/search"
icon={<IconSearch size={theme.iconSizeMedium} />} icon={<IconSearch size={theme.icon.size.md} />}
soon={true} soon={true}
/> />
<NavItem <NavItem
label="Inbox" label="Inbox"
to="/inbox" to="/inbox"
icon={<IconInbox size={theme.iconSizeMedium} />} icon={<IconInbox size={theme.icon.size.md} />}
soon={true} soon={true}
/> />
<NavItem <NavItem
label="Settings" label="Settings"
to="/settings/profile" to="/settings/profile"
icon={<IconSettings size={theme.iconSizeMedium} />} icon={<IconSettings size={theme.icon.size.md} />}
/> />
<NavTitle label="Workspace" /> <NavTitle label="Workspace" />
<NavItem <NavItem
label="People" label="People"
to="/people" to="/people"
icon={<IconUser size={theme.iconSizeMedium} />} icon={<IconUser size={theme.icon.size.md} />}
active={currentPath === '/people'} active={currentPath === '/people'}
/> />
<NavItem <NavItem
label="Companies" label="Companies"
to="/companies" to="/companies"
icon={<IconBuildingSkyscraper size={theme.iconSizeMedium} />} icon={<IconBuildingSkyscraper size={theme.icon.size.md} />}
active={currentPath === '/companies'} active={currentPath === '/companies'}
/> />
<NavItem <NavItem
label="Opportunities" label="Opportunities"
to="/opportunities" to="/opportunities"
icon={<IconTargetArrow size={theme.iconSizeMedium} />} icon={<IconTargetArrow size={theme.icon.size.md} />}
active={currentPath === '/opportunities'} active={currentPath === '/opportunities'}
/> />
</NavItemsContainer> </NavItemsContainer>
+1 -1
View File
@@ -5,7 +5,7 @@ import { RecoilRoot, useRecoilState } from 'recoil';
import { currentUserState } from '@/auth/states/currentUserState'; import { currentUserState } from '@/auth/states/currentUserState';
import { isAuthenticatingState } from '@/auth/states/isAuthenticatingState'; import { isAuthenticatingState } from '@/auth/states/isAuthenticatingState';
import { darkTheme } from '@/ui/layout/styles/themes'; import { darkTheme } from '@/ui/themes/themes';
import { App } from '~/App'; import { App } from '~/App';
import { FullHeightStorybookLayout } from '~/testing/FullHeightStorybookLayout'; import { FullHeightStorybookLayout } from '~/testing/FullHeightStorybookLayout';
import { mockedUsersData } from '~/testing/mock-data/users'; import { mockedUsersData } from '~/testing/mock-data/users';
+2 -1
View File
@@ -2,9 +2,10 @@ import React from 'react';
import ReactDOM from 'react-dom/client'; import ReactDOM from 'react-dom/client';
import { RecoilRoot } from 'recoil'; import { RecoilRoot } from 'recoil';
import { ThemeType } from '@/ui/themes/themes';
import '@emotion/react'; import '@emotion/react';
import { ThemeType } from './modules/ui/layout/styles/themes';
import { AppWrapper } from './AppWrapper'; import { AppWrapper } from './AppWrapper';
import './index.css'; import './index.css';
@@ -7,9 +7,9 @@ type OwnProps = {
const StyledContainer = styled.div` const StyledContainer = styled.div`
align-items: center; align-items: center;
color: ${({ theme }) => theme.text40}; color: ${({ theme }) => theme.font.color.tertiary};
display: flex; display: flex;
font-size: ${({ theme }) => theme.fontSizeSmall}px; font-size: ${({ theme }) => theme.font.size.sm}px;
padding-left: ${({ theme }) => theme.spacing(14)}; padding-left: ${({ theme }) => theme.spacing(14)};
padding-right: ${({ theme }) => theme.spacing(14)}; padding-right: ${({ theme }) => theme.spacing(14)};
text-align: center; text-align: center;
@@ -1,10 +1,10 @@
import styled from '@emotion/styled'; import styled from '@emotion/styled';
const Separator = styled.div` const Separator = styled.div`
background-color: ${(props) => props.theme.mediumBorder}; background-color: ${({ theme }) => theme.border.color.medium};
height: 1px; height: 1px;
margin-bottom: ${(props) => props.theme.spacing(3)}; margin-bottom: ${({ theme }) => theme.spacing(3)};
margin-top: ${(props) => props.theme.spacing(3)}; margin-top: ${({ theme }) => theme.spacing(3)};
width: 100%; width: 100%;
`; `;
@@ -6,7 +6,7 @@ type OwnProps = {
}; };
const StyledContainer = styled.div` const StyledContainer = styled.div`
font-weight: ${({ theme }) => theme.fontWeightMedium}; font-weight: ${({ theme }) => theme.font.weight.medium};
margin-bottom: ${({ theme }) => theme.spacing(4)}; margin-bottom: ${({ theme }) => theme.spacing(4)};
margin-top: ${({ theme }) => theme.spacing(4)}; margin-top: ${({ theme }) => theme.spacing(4)};
`; `;
@@ -6,7 +6,7 @@ type OwnProps = {
}; };
const StyledSubTitle = styled.div` const StyledSubTitle = styled.div`
color: ${({ theme }) => theme.text60}; color: ${({ theme }) => theme.font.color.secondary};
margin-top: ${({ theme }) => theme.spacing(2)}; margin-top: ${({ theme }) => theme.spacing(2)};
`; `;
@@ -6,8 +6,8 @@ type OwnProps = {
}; };
const StyledTitle = styled.div` const StyledTitle = styled.div`
font-size: ${({ theme }) => theme.fontSizeExtraLarge}; font-size: ${({ theme }) => theme.font.size.xl};
font-weight: ${({ theme }) => theme.fontWeightSemibold}; font-weight: ${({ theme }) => theme.font.weight.semiBold};
margin-top: ${({ theme }) => theme.spacing(10)}; margin-top: ${({ theme }) => theme.spacing(10)};
`; `;
@@ -2,10 +2,10 @@ import styled from '@emotion/styled';
import { Command } from 'cmdk'; import { Command } from 'cmdk';
export const StyledDialog = styled(Command.Dialog)` export const StyledDialog = styled(Command.Dialog)`
background: ${(props) => props.theme.primaryBackground}; background: ${({ theme }) => theme.background.primary};
border-radius: ${(props) => props.theme.borderRadius}; border-radius: ${({ theme }) => theme.border.radius.md};
box-shadow: ${(props) => props.theme.heavyBoxShadow}; box-shadow: ${({ theme }) => theme.boxShadow.strong};
font-family: ${(props) => props.theme.fontFamily}; font-family: ${({ theme }) => theme.font.family};
left: 50%; left: 50%;
max-width: 640px; max-width: 640px;
overflow: hidden; overflow: hidden;
@@ -17,51 +17,51 @@ export const StyledDialog = styled(Command.Dialog)`
`; `;
export const StyledInput = styled(Command.Input)` export const StyledInput = styled(Command.Input)`
background: ${(props) => props.theme.primaryBackground}; background: ${({ theme }) => theme.background.primary};
border: none; border: none;
border-bottom: 1px solid ${(props) => props.theme.primaryBorder}; border-bottom: 1px solid ${({ theme }) => theme.border.color.light};
border-radius: 0; border-radius: 0;
color: ${(props) => props.theme.text100}; color: ${({ theme }) => theme.font.color.primary};
font-size: ${(props) => props.theme.fontSizeLarge}; font-size: ${({ theme }) => theme.font.size.lg};
margin: 0; margin: 0;
outline: none; outline: none;
padding: ${(props) => props.theme.spacing(5)}; padding: ${({ theme }) => theme.spacing(5)};
width: 100%; width: 100%;
`; `;
export const StyledMenuItem = styled(Command.Item)` export const StyledMenuItem = styled(Command.Item)`
align-items: center; align-items: center;
color: ${(props) => props.theme.text80}; color: ${({ theme }) => theme.font.color.primary};
cursor: pointer; cursor: pointer;
display: flex; display: flex;
font-size: ${(props) => props.theme.fontSizeMedium}; font-size: ${({ theme }) => theme.font.size.md};
gap: ${(props) => props.theme.spacing(3)}; gap: ${({ theme }) => theme.spacing(3)};
height: 40px; height: 40px;
justify-content: space-between; justify-content: space-between;
padding: 0 ${(props) => props.theme.spacing(4)}; padding: 0 ${({ theme }) => theme.spacing(4)};
position: relative; position: relative;
transition: all 150ms ease; transition: all 150ms ease;
transition-property: none; transition-property: none;
user-select: none; user-select: none;
&:hover { &:hover {
background: ${(props) => props.theme.lightBackgroundTransparent}; background: ${({ theme }) => theme.background.transparent.light};
} }
&[data-selected='true'] { &[data-selected='true'] {
background: ${(props) => props.theme.tertiaryBackground}; background: ${({ theme }) => theme.background.tertiary};
/* Could be nice to add a caret like this for better accessibility in the future /* Could be nice to add a caret like this for better accessibility in the future
But it needs to be consistend with other picker dropdown (e.g. company) But it needs to be consistend with other picker dropdown (e.g. company)
&:after { &:after {
background: ${(props) => props.theme.quaternaryBackground}; background: ${({ theme }) => theme.background.quaternary};
content: ''; content: '';
height: 100%; height: 100%;
left: 0; left: 0;
position: absolute; position: absolute;
width: 3px; width: 3px;
z-index: ${(props) => props.theme.lastLayerZIndex}; z-index: ${({ theme }) => theme.lastLayerZIndex};
} */ } */
} }
&[data-disabled='true'] { &[data-disabled='true'] {
color: ${(props) => props.theme.text30}; color: ${({ theme }) => theme.font.color.light};
cursor: not-allowed; cursor: not-allowed;
} }
svg { svg {
@@ -71,7 +71,7 @@ export const StyledMenuItem = styled(Command.Item)`
`; `;
export const StyledList = styled(Command.List)` export const StyledList = styled(Command.List)`
background: ${(props) => props.theme.secondaryBackground}; background: ${({ theme }) => theme.background.secondary};
height: min(300px, var(--cmdk-list-height)); height: min(300px, var(--cmdk-list-height));
max-height: 400px; max-height: 400px;
overflow: auto; overflow: auto;
@@ -83,14 +83,14 @@ export const StyledList = styled(Command.List)`
export const StyledGroup = styled(Command.Group)` export const StyledGroup = styled(Command.Group)`
[cmdk-group-heading] { [cmdk-group-heading] {
align-items: center; align-items: center;
color: ${(props) => props.theme.text30}; color: ${({ theme }) => theme.font.color.light};
display: flex; display: flex;
font-size: ${(props) => props.theme.fontSizeExtraSmall}; font-size: ${({ theme }) => theme.font.size.xs};
font-weight: ${(props) => props.theme.fontWeightBold}; font-weight: ${({ theme }) => theme.font.weight.semiBold};
padding-bottom: ${(props) => props.theme.spacing(2)}; padding-bottom: ${({ theme }) => theme.spacing(2)};
padding-left: ${(props) => props.theme.spacing(4)}; padding-left: ${({ theme }) => theme.spacing(4)};
padding-right: ${(props) => props.theme.spacing(4)}; padding-right: ${({ theme }) => theme.spacing(4)};
padding-top: ${(props) => props.theme.spacing(2)}; padding-top: ${({ theme }) => theme.spacing(2)};
text-transform: uppercase; text-transform: uppercase;
user-select: none; user-select: none;
} }
@@ -98,9 +98,9 @@ export const StyledGroup = styled(Command.Group)`
export const StyledEmpty = styled(Command.Empty)` export const StyledEmpty = styled(Command.Empty)`
align-items: center; align-items: center;
color: ${(props) => props.theme.text30}; color: ${({ theme }) => theme.font.color.light};
display: flex; display: flex;
font-size: ${(props) => props.theme.fontSizeMedium}; font-size: ${({ theme }) => theme.font.size.md};
height: 64px; height: 64px;
justify-content: center; justify-content: center;
white-space: pre-wrap; white-space: pre-wrap;
@@ -111,28 +111,28 @@ export const StyledSeparator = styled(Command.Separator)``;
export const StyledIconAndLabelContainer = styled.div` export const StyledIconAndLabelContainer = styled.div`
align-items: center; align-items: center;
display: flex; display: flex;
gap: ${(props) => props.theme.spacing(2)}; gap: ${({ theme }) => theme.spacing(2)};
`; `;
export const StyledIconContainer = styled.div` export const StyledIconContainer = styled.div`
align-items: center; align-items: center;
background: ${(props) => props.theme.lightBackgroundTransparent}; background: ${({ theme }) => theme.background.transparent.light};
border-radius: 4px; border-radius: 4px;
color: ${(props) => props.theme.text60}; color: ${({ theme }) => theme.font.color.secondary};
display: flex; display: flex;
padding: ${(props) => props.theme.spacing(1)}; padding: ${({ theme }) => theme.spacing(1)};
`; `;
export const StyledShortCut = styled.div` export const StyledShortCut = styled.div`
background-color: ${(props) => props.theme.lightBackgroundTransparent}; background-color: ${({ theme }) => theme.background.transparent.light};
border-radius: 4px; border-radius: 4px;
color: ${(props) => props.theme.text30}; color: ${({ theme }) => theme.font.color.light};
margin-left: ${(props) => props.theme.spacing(1)}; margin-left: ${({ theme }) => theme.spacing(1)};
margin-right: ${(props) => props.theme.spacing(1)}; margin-right: ${({ theme }) => theme.spacing(1)};
padding: ${(props) => props.theme.spacing(1)}; padding: ${({ theme }) => theme.spacing(1)};
`; `;
export const StyledShortcutsContainer = styled.div` export const StyledShortcutsContainer = styled.div`
align-items: center; align-items: center;
color: ${(props) => props.theme.text30}; color: ${({ theme }) => theme.font.color.light};
display: flex; display: flex;
font-size: ${(props) => props.theme.fontSizeSmall}; font-size: ${({ theme }) => theme.font.size.sm};
`; `;
@@ -12,10 +12,10 @@ const StyledChip = styled.div`
align-items: center; align-items: center;
backdrop-filter: blur(6px); backdrop-filter: blur(6px);
background: ${(props) => props.theme.primaryBackgroundTransparent}; background: ${({ theme }) => theme.background.transparent.primary};
border-radius: ${(props) => props.theme.borderRadius}; border-radius: ${({ theme }) => theme.border.radius.md};
color: ${(props) => props.theme.text30}; color: ${({ theme }) => theme.font.color.light};
cursor: pointer; cursor: pointer;
display: flex; display: flex;
flex-direction: row; flex-direction: row;
@@ -31,8 +31,8 @@ const StyledChip = styled.div`
padding-right: 4px; padding-right: 4px;
&:hover { &:hover {
background: ${(props) => props.theme.tertiaryBackground}; background: ${({ theme }) => theme.background.tertiary};
color: ${(props) => props.theme.text40}; color: ${({ theme }) => theme.font.color.tertiary};
} }
user-select: none; user-select: none;
@@ -56,7 +56,7 @@ export function CommentChip({ count, onClick }: CommentChipProps) {
return ( return (
<StyledChip data-testid="comment-chip" onClick={onClick}> <StyledChip data-testid="comment-chip" onClick={onClick}>
<StyledCount>{formattedCount}</StyledCount> <StyledCount>{formattedCount}</StyledCount>
<IconComment size={theme.iconSizeMedium} /> <IconComment size={theme.icon.size.md} />
</StyledChip> </StyledChip>
); );
} }
@@ -20,15 +20,15 @@ const StyledContainer = styled.div`
flex-direction: row; flex-direction: row;
gap: ${(props) => props.theme.spacing(1)}; gap: ${({ theme }) => theme.spacing(1)};
justify-content: flex-start; justify-content: flex-start;
padding: ${(props) => props.theme.spacing(1)}; padding: ${({ theme }) => theme.spacing(1)};
`; `;
const StyledName = styled.div` const StyledName = styled.div`
color: ${(props) => props.theme.text80}; color: ${({ theme }) => theme.font.color.primary};
font-size: 13px; font-size: 13px;
font-weight: 400; font-weight: 400;
max-width: 160px; max-width: 160px;
@@ -38,25 +38,25 @@ const StyledName = styled.div`
`; `;
const StyledDate = styled.div` const StyledDate = styled.div`
color: ${(props) => props.theme.text30}; color: ${({ theme }) => theme.font.color.light};
font-size: 12px; font-size: 12px;
font-weight: 400; font-weight: 400;
margin-left: ${(props) => props.theme.spacing(1)}; margin-left: ${({ theme }) => theme.spacing(1)};
padding-top: 1.5px; padding-top: 1.5px;
`; `;
const StyledTooltip = styled(Tooltip)` const StyledTooltip = styled(Tooltip)`
background-color: ${(props) => props.theme.primaryBackground}; background-color: ${({ theme }) => theme.background.primary};
box-shadow: 0px 2px 4px 3px box-shadow: 0px 2px 4px 3px
${(props) => props.theme.lightBackgroundTransparent}; ${({ theme }) => theme.background.transparent.light};
box-shadow: 2px 4px 16px 6px box-shadow: 2px 4px 16px 6px
${(props) => props.theme.lightBackgroundTransparent}; ${({ theme }) => theme.background.transparent.light};
color: ${(props) => props.theme.text80}; color: ${({ theme }) => theme.font.color.primary};
opacity: 1; opacity: 1;
padding: 8px; padding: 8px;
@@ -81,7 +81,7 @@ export function CommentHeader({ comment }: OwnProps) {
<StyledContainer> <StyledContainer>
<Avatar <Avatar
avatarUrl={avatarUrl} avatarUrl={avatarUrl}
size={theme.iconSizeMedium} size={theme.icon.size.md}
placeholder={capitalizedFirstUsernameLetter} placeholder={capitalizedFirstUsernameLetter}
/> />
<StyledName>{authorName}</StyledName> <StyledName>{authorName}</StyledName>
@@ -28,10 +28,10 @@ const StyledContainer = styled.div`
flex-direction: column; flex-direction: column;
gap: ${(props) => props.theme.spacing(4)}; gap: ${({ theme }) => theme.spacing(4)};
justify-content: flex-start; justify-content: flex-start;
padding: ${(props) => props.theme.spacing(2)}; padding: ${({ theme }) => theme.spacing(2)};
`; `;
const StyledThreadItemListContainer = styled.div` const StyledThreadItemListContainer = styled.div`
@@ -39,7 +39,7 @@ const StyledThreadItemListContainer = styled.div`
display: flex; display: flex;
flex-direction: column-reverse; flex-direction: column-reverse;
gap: ${(props) => props.theme.spacing(4)}; gap: ${({ theme }) => theme.spacing(4)};
justify-content: flex-start; justify-content: flex-start;
@@ -27,12 +27,12 @@ const StyledContainer = styled.div`
align-items: flex-start; align-items: flex-start;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
gap: ${(props) => props.theme.spacing(4)}; gap: ${({ theme }) => theme.spacing(4)};
justify-content: flex-start; justify-content: flex-start;
max-height: calc(100% - 16px); max-height: calc(100% - 16px);
padding: ${(props) => props.theme.spacing(2)}; padding: ${({ theme }) => theme.spacing(2)};
`; `;
const StyledThreadItemListContainer = styled.div` const StyledThreadItemListContainer = styled.div`
@@ -40,7 +40,7 @@ const StyledThreadItemListContainer = styled.div`
display: flex; display: flex;
flex-direction: column-reverse; flex-direction: column-reverse;
gap: ${(props) => props.theme.spacing(4)}; gap: ${({ theme }) => theme.spacing(4)};
justify-content: flex-start; justify-content: flex-start;
overflow: auto; overflow: auto;
@@ -12,15 +12,15 @@ const StyledContainer = styled.div`
align-items: flex-start; align-items: flex-start;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
gap: ${(props) => props.theme.spacing(1)}; gap: ${({ theme }) => theme.spacing(1)};
justify-content: flex-start; justify-content: flex-start;
`; `;
const StyledCommentBody = styled.div` const StyledCommentBody = styled.div`
color: ${(props) => props.theme.text60}; color: ${({ theme }) => theme.font.color.secondary};
font-size: ${(props) => props.theme.fontSizeMedium}; font-size: ${({ theme }) => theme.font.size.md};
line-height: ${(props) => props.theme.lineHeight}; line-height: ${({ theme }) => theme.text.lineHeight};
overflow-wrap: anywhere; overflow-wrap: anywhere;
padding-left: 24px; padding-left: 24px;
@@ -36,7 +36,7 @@ const StyledContainer = styled.div`
align-items: flex-start; align-items: flex-start;
display: flex; display: flex;
flex-direction: row; flex-direction: row;
gap: ${(props) => props.theme.spacing(2)}; gap: ${({ theme }) => theme.spacing(2)};
justify-content: flex-start; justify-content: flex-start;
width: 100%; width: 100%;
@@ -47,14 +47,14 @@ const StyledLabelContainer = styled.div`
display: flex; display: flex;
flex-direction: row; flex-direction: row;
gap: ${(props) => props.theme.spacing(2)}; gap: ${({ theme }) => theme.spacing(2)};
padding-bottom: ${(props) => props.theme.spacing(2)}; padding-bottom: ${({ theme }) => theme.spacing(2)};
padding-top: ${(props) => props.theme.spacing(2)}; padding-top: ${({ theme }) => theme.spacing(2)};
`; `;
const StyledRelationLabel = styled.div` const StyledRelationLabel = styled.div`
color: ${(props) => props.theme.text60}; color: ${({ theme }) => theme.font.color.secondary};
display: flex; display: flex;
flex-direction: row; flex-direction: row;
@@ -62,8 +62,8 @@ const StyledRelationLabel = styled.div`
`; `;
const StyledRelationContainer = styled.div` const StyledRelationContainer = styled.div`
--horizontal-padding: ${(props) => props.theme.spacing(1)}; --horizontal-padding: ${({ theme }) => theme.spacing(1)};
--vertical-padding: ${(props) => props.theme.spacing(1.5)}; --vertical-padding: ${({ theme }) => theme.spacing(1.5)};
border: 1px solid transparent; border: 1px solid transparent;
@@ -72,11 +72,11 @@ const StyledRelationContainer = styled.div`
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
gap: ${(props) => props.theme.spacing(2)}; gap: ${({ theme }) => theme.spacing(2)};
&:hover { &:hover {
background-color: ${(props) => props.theme.secondaryBackground}; background-color: ${({ theme }) => theme.background.secondary};
border: 1px solid ${(props) => props.theme.lightBorder}; border: 1px solid ${({ theme }) => theme.border.color.light};
} }
min-height: calc(32px - 2 * var(--vertical-padding)); min-height: calc(32px - 2 * var(--vertical-padding));
@@ -88,7 +88,7 @@ const StyledRelationContainer = styled.div`
`; `;
const StyledMenuWrapper = styled.div` const StyledMenuWrapper = styled.div`
z-index: ${(props) => props.theme.lastLayerZIndex}; z-index: ${({ theme }) => theme.lastLayerZIndex};
`; `;
export function CommentThreadRelationPicker({ commentThread }: OwnProps) { export function CommentThreadRelationPicker({ commentThread }: OwnProps) {
@@ -205,7 +205,7 @@ export function CommentThreadRelationPicker({ commentThread }: OwnProps) {
return ( return (
<StyledContainer> <StyledContainer>
<StyledLabelContainer> <StyledLabelContainer>
<IconArrowUpRight size={16} color={theme.text40} /> <IconArrowUpRight size={16} color={theme.font.color.tertiary} />
<StyledRelationLabel>Relations</StyledRelationLabel> <StyledRelationLabel>Relations</StyledRelationLabel>
</StyledLabelContainer> </StyledLabelContainer>
<StyledRelationContainer <StyledRelationContainer
@@ -16,7 +16,7 @@ type Story = StoryObj<typeof CellCommentChip>;
const TestCellContainer = styled.div` const TestCellContainer = styled.div`
align-items: center; align-items: center;
background: ${(props) => props.theme.primaryBackground}; background: ${({ theme }) => theme.background.primary};
display: flex; display: flex;
height: fit-content; height: fit-content;
@@ -9,14 +9,14 @@ export type CompanyChipPropsType = {
const StyledContainer = styled.span` const StyledContainer = styled.span`
align-items: center; align-items: center;
background-color: ${(props) => props.theme.tertiaryBackground}; background-color: ${({ theme }) => theme.background.tertiary};
border-radius: ${(props) => props.theme.spacing(1)}; border-radius: ${({ theme }) => theme.spacing(1)};
color: ${(props) => props.theme.text80}; color: ${({ theme }) => theme.font.color.primary};
display: inline-flex; display: inline-flex;
gap: ${(props) => props.theme.spacing(1)}; gap: ${({ theme }) => theme.spacing(1)};
height: calc(20px - 2 * ${(props) => props.theme.spacing(1)}); height: calc(20px - 2 * ${({ theme }) => theme.spacing(1)});
padding: ${(props) => props.theme.spacing(1)}; padding: ${({ theme }) => theme.spacing(1)};
user-select: none; user-select: none;
@@ -7,46 +7,46 @@ import { IconCalendarEvent, IconUser, IconUsers } from '../../ui/icons';
import { getLogoUrlFromDomainName, humanReadableDate } from '../../utils/utils'; import { getLogoUrlFromDomainName, humanReadableDate } from '../../utils/utils';
const StyledBoardCard = styled.div` const StyledBoardCard = styled.div`
background: ${({ theme }) => theme.secondaryBackground}; background: ${({ theme }) => theme.background.secondary};
border: 1px solid ${({ theme }) => theme.mediumBorder}; border: 1px solid ${({ theme }) => theme.border.color.medium};
border-radius: 4px; border-radius: 4px;
box-shadow: ${({ theme }) => theme.lightBoxShadow}; box-shadow: ${({ theme }) => theme.boxShadow.light};
color: ${({ theme }) => theme.text80}; color: ${({ theme }) => theme.font.color.primary};
cursor: pointer; cursor: pointer;
`; `;
const StyledBoardCardWrapper = styled.div` const StyledBoardCardWrapper = styled.div`
padding-bottom: ${(props) => props.theme.spacing(2)}; padding-bottom: ${({ theme }) => theme.spacing(2)};
`; `;
const StyledBoardCardHeader = styled.div` const StyledBoardCardHeader = styled.div`
align-items: center; align-items: center;
display: flex; display: flex;
flex-direction: row; flex-direction: row;
font-weight: ${(props) => props.theme.fontWeightBold}; font-weight: ${({ theme }) => theme.font.weight.semiBold};
height: 24px; height: 24px;
padding-left: ${(props) => props.theme.spacing(2)}; padding-left: ${({ theme }) => theme.spacing(2)};
padding-right: ${(props) => props.theme.spacing(2)}; padding-right: ${({ theme }) => theme.spacing(2)};
padding-top: ${(props) => props.theme.spacing(2)}; padding-top: ${({ theme }) => theme.spacing(2)};
img { img {
height: ${(props) => props.theme.iconSizeMedium}px; height: ${({ theme }) => theme.icon.size.md}px;
margin-right: ${(props) => props.theme.spacing(2)}; margin-right: ${({ theme }) => theme.spacing(2)};
object-fit: cover; object-fit: cover;
width: ${(props) => props.theme.iconSizeMedium}px; width: ${({ theme }) => theme.icon.size.md}px;
} }
`; `;
const StyledBoardCardBody = styled.div` const StyledBoardCardBody = styled.div`
display: flex; display: flex;
flex-direction: column; flex-direction: column;
gap: ${(props) => props.theme.spacing(2)}; gap: ${({ theme }) => theme.spacing(2)};
padding: ${(props) => props.theme.spacing(2)}; padding: ${({ theme }) => theme.spacing(2)};
span { span {
align-items: center; align-items: center;
display: flex; display: flex;
flex-direction: row; flex-direction: row;
svg { svg {
color: ${(props) => props.theme.text40}; color: ${({ theme }) => theme.font.color.tertiary};
margin-right: ${(props) => props.theme.spacing(2)}; margin-right: ${({ theme }) => theme.spacing(2)};
} }
} }
`; `;
@@ -70,14 +70,14 @@ export function CompanyBoardCard({ company }: { company: CompanyProp }) {
</StyledBoardCardHeader> </StyledBoardCardHeader>
<StyledBoardCardBody> <StyledBoardCardBody>
<span> <span>
<IconUser size={theme.iconSizeMedium} /> <IconUser size={theme.icon.size.md} />
<PersonChip name={company.accountOwner?.displayName || ''} /> <PersonChip name={company.accountOwner?.displayName || ''} />
</span> </span>
<span> <span>
<IconUsers size={theme.iconSizeMedium} /> {company.employees} <IconUsers size={theme.icon.size.md} /> {company.employees}
</span> </span>
<span> <span>
<IconCalendarEvent size={theme.iconSizeMedium} /> <IconCalendarEvent size={theme.icon.size.md} />
{humanReadableDate(new Date(company.createdAt as string))} {humanReadableDate(new Date(company.createdAt as string))}
</span> </span>
</StyledBoardCardBody> </StyledBoardCardBody>
@@ -10,15 +10,15 @@ export type PersonChipPropsType = {
const StyledContainer = styled.span` const StyledContainer = styled.span`
align-items: center; align-items: center;
background-color: ${(props) => props.theme.tertiaryBackground}; background-color: ${({ theme }) => theme.background.tertiary};
border-radius: ${(props) => props.theme.spacing(1)}; border-radius: ${({ theme }) => theme.spacing(1)};
color: ${(props) => props.theme.text80}; color: ${({ theme }) => theme.font.color.primary};
display: inline-flex; display: inline-flex;
gap: ${(props) => props.theme.spacing(1)}; gap: ${({ theme }) => theme.spacing(1)};
height: 12px; height: 12px;
overflow: hidden; overflow: hidden;
padding: ${(props) => props.theme.spacing(1)}; padding: ${({ theme }) => theme.spacing(1)};
:hover { :hover {
filter: brightness(95%); filter: brightness(95%);
@@ -9,12 +9,12 @@ type OwnProps = {
const StyledContainer = styled.span` const StyledContainer = styled.span`
align-items: center; align-items: center;
background-color: ${(props) => props.theme.tertiaryBackground}; background-color: ${({ theme }) => theme.background.tertiary};
border-radius: ${(props) => props.theme.spacing(1)}; border-radius: ${({ theme }) => theme.spacing(1)};
color: ${(props) => props.theme.text80}; color: ${({ theme }) => theme.font.color.primary};
display: inline-flex; display: inline-flex;
gap: ${(props) => props.theme.spacing(1)}; gap: ${({ theme }) => theme.spacing(1)};
padding: ${(props) => props.theme.spacing(1)}; padding: ${({ theme }) => theme.spacing(1)};
:hover { :hover {
filter: brightness(95%); filter: brightness(95%);
@@ -72,7 +72,7 @@ export function SingleEntitySelect<
<> <>
<DropdownMenuItemContainer> <DropdownMenuItemContainer>
<DropdownMenuButton onClick={onCreate}> <DropdownMenuButton onClick={onCreate}>
<IconPlus size={theme.iconSizeMedium} /> <IconPlus size={theme.icon.size.md} />
Create new Create new
</DropdownMenuButton> </DropdownMenuButton>
</DropdownMenuItemContainer> </DropdownMenuItemContainer>
@@ -31,7 +31,7 @@ export function SettingsNavbar() {
<NavItem <NavItem
label="Profile" label="Profile"
to="/settings/profile" to="/settings/profile"
icon={<IconUser size={theme.iconSizeMedium} />} icon={<IconUser size={theme.icon.size.md} />}
active={ active={
!!useMatch({ !!useMatch({
path: useResolvedPath('/people').pathname, path: useResolvedPath('/people').pathname,
@@ -42,7 +42,7 @@ export function SettingsNavbar() {
<NavItem <NavItem
label="Experience" label="Experience"
to="/settings/profile/experience" to="/settings/profile/experience"
icon={<IconColorSwatch size={theme.iconSizeMedium} />} icon={<IconColorSwatch size={theme.icon.size.md} />}
soon={true} soon={true}
active={ active={
!!useMatch({ !!useMatch({
@@ -55,7 +55,7 @@ export function SettingsNavbar() {
<NavItem <NavItem
label="General" label="General"
to="/settings/workspace" to="/settings/workspace"
icon={<IconSettings size={theme.iconSizeMedium} />} icon={<IconSettings size={theme.icon.size.md} />}
soon={true} soon={true}
active={ active={
!!useMatch({ !!useMatch({
@@ -68,7 +68,7 @@ export function SettingsNavbar() {
<NavItem <NavItem
label="Logout" label="Logout"
onClick={handleLogout} onClick={handleLogout}
icon={<IconLogout size={theme.iconSizeMedium} />} icon={<IconLogout size={theme.icon.size.md} />}
danger={true} danger={true}
/> />
</NavItemsContainer> </NavItemsContainer>
@@ -2,7 +2,7 @@ import React from 'react';
import styled from '@emotion/styled'; import styled from '@emotion/styled';
export const StyledColumn = styled.div` export const StyledColumn = styled.div`
background-color: ${({ theme }) => theme.primaryBackground}; background-color: ${({ theme }) => theme.background.primary};
display: flex; display: flex;
flex-direction: column; flex-direction: column;
min-width: 200px; min-width: 200px;
@@ -12,10 +12,10 @@ export const StyledColumn = styled.div`
export const StyledColumnTitle = styled.h3` export const StyledColumnTitle = styled.h3`
color: ${({ color }) => color}; color: ${({ color }) => color};
font-family: 'Inter'; font-family: 'Inter';
font-size: ${({ theme }) => theme.fontSizeMedium}; font-size: ${({ theme }) => theme.font.size.md};
font-style: normal; font-style: normal;
font-weight: ${({ theme }) => theme.fontWeightMedium}; font-weight: ${({ theme }) => theme.font.weight.medium};
line-height: ${({ theme }) => theme.lineHeight}; line-height: ${({ theme }) => theme.text.lineHeight};
margin: 0; margin: 0;
margin-bottom: ${({ theme }) => theme.spacing(2)}; margin-bottom: ${({ theme }) => theme.spacing(2)};
`; `;
@@ -6,18 +6,18 @@ import { IconPlus } from '@/ui/icons/index';
const StyledButton = styled.button` const StyledButton = styled.button`
align-items: center; align-items: center;
align-self: baseline; align-self: baseline;
background-color: ${({ theme }) => theme.primaryBackground}; background-color: ${({ theme }) => theme.background.primary};
border: none; border: none;
border-radius: ${({ theme }) => theme.borderRadius}; border-radius: ${({ theme }) => theme.border.radius.md};
color: ${({ theme }) => theme.text40}; color: ${({ theme }) => theme.font.color.tertiary};
cursor: pointer; cursor: pointer;
display: flex; display: flex;
gap: ${({ theme }) => theme.spacing(1)}; gap: ${({ theme }) => theme.spacing(1)};
justify-content: center; justify-content: center;
padding: ${(props) => props.theme.spacing(1)}; padding: ${({ theme }) => theme.spacing(1)};
&:hover { &:hover {
background-color: ${({ theme }) => theme.secondaryBackground}; background-color: ${({ theme }) => theme.background.secondary};
} }
`; `;
@@ -30,7 +30,7 @@ export function NewButton({ onClick }: OwnProps) {
return ( return (
<StyledButton onClick={onClick}> <StyledButton onClick={onClick}>
<IconPlus size={theme.iconSizeMedium} /> <IconPlus size={theme.icon.size.md} />
New New
</StyledButton> </StyledButton>
); );
@@ -2,11 +2,11 @@ import styled from '@emotion/styled';
const StyledIconButton = styled.button` const StyledIconButton = styled.button`
align-items: center; align-items: center;
background: ${(props) => props.theme.blue}; background: ${({ theme }) => theme.color.blue};
border: none; border: none;
border-radius: 50%; border-radius: 50%;
color: ${(props) => props.theme.text0}; color: ${({ theme }) => theme.font.color.inverted};
cursor: pointer; cursor: pointer;
display: flex; display: flex;
@@ -19,8 +19,8 @@ const StyledIconButton = styled.button`
width: 20px; width: 20px;
&:disabled { &:disabled {
background: ${(props) => props.theme.quaternaryBackground}; background: ${({ theme }) => theme.background.quaternary};
color: ${(props) => props.theme.text40}; color: ${({ theme }) => theme.font.color.tertiary};
cursor: default; cursor: default;
} }
`; `;
@@ -10,18 +10,19 @@ const StyledButton = styled.button<{ fullWidth: boolean }>`
align-items: center; align-items: center;
background: radial-gradient( background: radial-gradient(
50% 62.62% at 50% 0%, 50% 62.62% at 50% 0%,
${({ theme }) => theme.text60} 0%, ${({ theme }) => theme.font.color.secondary} 0%,
${({ theme }) => theme.text80} 100% ${({ theme }) => theme.font.color.primary} 100%
); );
border: 1px solid ${({ theme }) => theme.primaryBorder}; border: 1px solid ${({ theme }) => theme.border.color.light};
border-radius: 8px; border-radius: 8px;
box-shadow: 0px 0px 4px ${({ theme }) => theme.mediumBackgroundTransparent} 0%, box-shadow: 0px 0px 4px ${({ theme }) => theme.background.transparent.medium}
0px 2px 4px ${({ theme }) => theme.lightBackgroundTransparent} 0%; 0%,
color: ${(props) => props.theme.text0}; 0px 2px 4px ${({ theme }) => theme.background.transparent.light} 0%;
color: ${({ theme }) => theme.font.color.inverted};
cursor: pointer; cursor: pointer;
display: flex; display: flex;
flex-direction: row; flex-direction: row;
font-weight: ${({ theme }) => theme.fontWeightBold}; font-weight: ${({ theme }) => theme.font.weight.semiBold};
gap: ${({ theme }) => theme.spacing(2)}; gap: ${({ theme }) => theme.spacing(2)};
justify-content: center; justify-content: center;
padding: ${({ theme }) => theme.spacing(2)} ${({ theme }) => theme.spacing(3)}; padding: ${({ theme }) => theme.spacing(2)} ${({ theme }) => theme.spacing(3)};
@@ -8,16 +8,17 @@ type OwnProps = {
const StyledButton = styled.button<{ fullWidth: boolean }>` const StyledButton = styled.button<{ fullWidth: boolean }>`
align-items: center; align-items: center;
background: ${({ theme }) => theme.primaryBackground}; background: ${({ theme }) => theme.background.primary};
border: 1px solid ${({ theme }) => theme.primaryBorder}; border: 1px solid ${({ theme }) => theme.border.color.light};
border-radius: 8px; border-radius: 8px;
box-shadow: 0px 0px 4px ${({ theme }) => theme.mediumBackgroundTransparent} 0%, box-shadow: 0px 0px 4px ${({ theme }) => theme.background.transparent.medium}
0px 2px 4px ${({ theme }) => theme.lightBackgroundTransparent} 0%; 0%,
color: ${(props) => props.theme.text80}; 0px 2px 4px ${({ theme }) => theme.background.transparent.light} 0%;
color: ${({ theme }) => theme.font.color.primary};
cursor: pointer; cursor: pointer;
display: flex; display: flex;
flex-direction: row; flex-direction: row;
font-weight: ${({ theme }) => theme.fontWeightBold}; font-weight: ${({ theme }) => theme.font.weight.semiBold};
gap: 8px; gap: 8px;
justify-content: center; justify-content: center;
padding: ${({ theme }) => theme.spacing(2)} ${({ theme }) => theme.spacing(3)}; padding: ${({ theme }) => theme.spacing(2)} ${({ theme }) => theme.spacing(3)};
@@ -25,7 +26,7 @@ const StyledButton = styled.button<{ fullWidth: boolean }>`
width: ${({ fullWidth }) => (fullWidth ? '100%' : 'auto')}; width: ${({ fullWidth }) => (fullWidth ? '100%' : 'auto')};
&:hover { &:hover {
background: ${({ theme }) => theme.tertiaryBackground}; background: ${({ theme }) => theme.background.tertiary};
} }
`; `;
@@ -6,19 +6,21 @@ export const EditableCellNormalModeOuterContainer = styled.div`
display: flex; display: flex;
height: 100%; height: 100%;
overflow: hidden; overflow: hidden;
padding-left: ${(props) => props.theme.spacing(2)}; padding-left: ${({ theme }) => theme.spacing(2)};
padding-right: ${(props) => props.theme.spacing(1)}; padding-right: ${({ theme }) => theme.spacing(1)};
width: 100%; width: 100%;
&:hover { &:hover {
-moz-box-shadow: inset 0 0 0 1px ${(props) => props.theme.text20}; -moz-box-shadow: inset 0 0 0 1px
${({ theme }) => theme.font.color.extraLight};
-webkit-box-shadow: inset 0 0 0 1px ${(props) => props.theme.text20}; -webkit-box-shadow: inset 0 0 0 1px
background: ${(props) => props.theme.secondaryBackgroundTransparent}; ${({ theme }) => theme.font.color.extraLight};
border-radius: ${(props) => props.theme.borderRadius}; background: ${({ theme }) => theme.background.transparent.secondary};
border-radius: ${({ theme }) => theme.border.radius.md};
box-shadow: inset 0 0 0 1px ${(props) => props.theme.text20}; box-shadow: inset 0 0 0 1px ${({ theme }) => theme.font.color.extraLight};
} }
`; `;
@@ -3,16 +3,16 @@ import { useHotkeys } from 'react-hotkeys-hook';
import styled from '@emotion/styled'; import styled from '@emotion/styled';
import { useRecoilState } from 'recoil'; import { useRecoilState } from 'recoil';
import { overlayBackground } from '@/ui/themes/effects';
import { debounce } from '@/utils/debounce'; import { debounce } from '@/utils/debounce';
import { useListenClickOutsideArrayOfRef } from '../../hooks/useListenClickOutsideArrayOfRef'; import { useListenClickOutsideArrayOfRef } from '../../hooks/useListenClickOutsideArrayOfRef';
import { overlayBackground } from '../../layout/styles/themes';
import { isSomeInputInEditModeState } from '../../tables/states/isSomeInputInEditModeState'; import { isSomeInputInEditModeState } from '../../tables/states/isSomeInputInEditModeState';
export const EditableCellEditModeContainer = styled.div<OwnProps>` export const EditableCellEditModeContainer = styled.div<OwnProps>`
align-items: center; align-items: center;
border: 1px solid ${(props) => props.theme.primaryBorder}; border: 1px solid ${({ theme }) => theme.border.color.light};
border-radius: 4px; border-radius: ${({ theme }) => theme.border.radius.sm};
display: flex; display: flex;
left: ${(props) => left: ${(props) =>
props.editModeHorizontalAlign === 'right' ? 'auto' : '0'}; props.editModeHorizontalAlign === 'right' ? 'auto' : '0'};
@@ -2,7 +2,7 @@ import styled from '@emotion/styled';
export const HoverableMenuItem = styled.div` export const HoverableMenuItem = styled.div`
align-items: center; align-items: center;
background: ${(props) => props.theme.primaryBackground}; background: ${({ theme }) => theme.background.primary};
border-radius: 4px; border-radius: 4px;
box-sizing: border-box; box-sizing: border-box;
cursor: pointer; cursor: pointer;
@@ -14,6 +14,6 @@ export const HoverableMenuItem = styled.div`
width: 100%; width: 100%;
&:hover { &:hover {
background: ${(props) => props.theme.lightBackgroundTransparent}; background: ${({ theme }) => theme.background.transparent.light};
} }
`; `;
@@ -1,7 +1,7 @@
import { ChangeEvent, ComponentType, ReactNode, useRef, useState } from 'react'; import { ChangeEvent, ComponentType, ReactNode, useRef, useState } from 'react';
import styled from '@emotion/styled'; import styled from '@emotion/styled';
import { textInputStyle } from '@/ui/layout/styles/themes'; import { textInputStyle } from '@/ui/themes/effects';
import { EditableCell } from '../EditableCell'; import { EditableCell } from '../EditableCell';
@@ -15,7 +15,7 @@ export type EditableDateProps = {
const StyledContainer = styled.div` const StyledContainer = styled.div`
align-items: center; align-items: center;
display: flex; display: flex;
margin: 0px ${(props) => props.theme.spacing(2)}; margin: 0px ${({ theme }) => theme.spacing(2)};
`; `;
export type StyledCalendarContainerProps = { export type StyledCalendarContainerProps = {
@@ -23,10 +23,10 @@ export type StyledCalendarContainerProps = {
}; };
const StyledCalendarContainer = styled.div<StyledCalendarContainerProps>` const StyledCalendarContainer = styled.div<StyledCalendarContainerProps>`
background: ${(props) => props.theme.secondaryBackground}; background: ${({ theme }) => theme.background.secondary};
border: 1px solid ${(props) => props.theme.primaryBorder}; border: 1px solid ${({ theme }) => theme.border.color.light};
border-radius: 8px; border-radius: 8px;
box-shadow: ${(props) => props.theme.modalBoxShadow}; box-shadow: ${({ theme }) => theme.boxShadow.strong};
left: -10px; left: -10px;
position: absolute; position: absolute;
top: 10px; top: 10px;
@@ -1,7 +1,7 @@
import { ChangeEvent, ReactElement, useRef, useState } from 'react'; import { ChangeEvent, ReactElement, useRef, useState } from 'react';
import styled from '@emotion/styled'; import styled from '@emotion/styled';
import { textInputStyle } from '@/ui/layout/styles/themes'; import { textInputStyle } from '@/ui/themes/effects';
import { EditableCell } from '../EditableCell'; import { EditableCell } from '../EditableCell';
@@ -20,8 +20,8 @@ const StyledContainer = styled.div`
justify-content: space-between; justify-content: space-between;
& > input:last-child { & > input:last-child {
border-left: 1px solid ${(props) => props.theme.primaryBorder}; border-left: 1px solid ${({ theme }) => theme.border.color.medium};
padding-left: ${(props) => props.theme.spacing(2)}; padding-left: ${({ theme }) => theme.spacing(2)};
} }
`; `;
@@ -2,7 +2,7 @@ import { ChangeEvent, MouseEvent, useRef, useState } from 'react';
import styled from '@emotion/styled'; import styled from '@emotion/styled';
import { isValidPhoneNumber, parsePhoneNumber } from 'libphonenumber-js'; import { isValidPhoneNumber, parsePhoneNumber } from 'libphonenumber-js';
import { textInputStyle } from '@/ui/layout/styles/themes'; import { textInputStyle } from '@/ui/themes/effects';
import { RawLink } from '../../links/RawLink'; import { RawLink } from '../../links/RawLink';
import { EditableCell } from '../EditableCell'; import { EditableCell } from '../EditableCell';
@@ -8,12 +8,12 @@ export const EditableRelationCreateButton = styled.button`
cursor: pointer; cursor: pointer;
display: flex; display: flex;
font-family: 'Inter'; font-family: 'Inter';
font-size: ${(props) => props.theme.fontSizeMedium}; font-size: ${({ theme }) => theme.font.size.md};
gap: ${(props) => props.theme.spacing(2)}; gap: ${({ theme }) => theme.spacing(2)};
height: 31px; height: 31px;
padding-bottom: ${(props) => props.theme.spacing(1)}; padding-bottom: ${({ theme }) => theme.spacing(1)};
padding-left: ${(props) => props.theme.spacing(1)}; padding-left: ${({ theme }) => theme.spacing(1)};
padding-top: ${(props) => props.theme.spacing(1)}; padding-top: ${({ theme }) => theme.spacing(1)};
user-select: none; user-select: none;
width: 100%; width: 100%;
`; `;
@@ -1,7 +1,7 @@
import { ChangeEvent, useRef, useState } from 'react'; import { ChangeEvent, useRef, useState } from 'react';
import styled from '@emotion/styled'; import styled from '@emotion/styled';
import { textInputStyle } from '@/ui/layout/styles/themes'; import { textInputStyle } from '@/ui/themes/effects';
import { EditableCell } from '../EditableCell'; import { EditableCell } from '../EditableCell';
@@ -15,7 +15,7 @@ const StyledContainer = styled.div`
justify-content: center; justify-content: center;
input[type='checkbox'] { input[type='checkbox'] {
accent-color: ${(props) => props.theme.blue}; accent-color: ${({ theme }) => theme.color.blue};
cursor: pointer; cursor: pointer;
height: 14px; height: 14px;
margin: 2px; margin: 2px;
@@ -24,7 +24,7 @@ const StyledContainer = styled.div`
} }
input[type='checkbox']::before { input[type='checkbox']::before {
border: 1px solid ${(props) => props.theme.text40}; border: 1px solid ${({ theme }) => theme.font.color.tertiary};
border-radius: 2px; border-radius: 2px;
content: ''; content: '';
display: block; display: block;
@@ -33,11 +33,11 @@ const StyledContainer = styled.div`
} }
input[type='checkbox']:hover::before { input[type='checkbox']:hover::before {
border: 1px solid ${(props) => props.theme.text80}; border: 1px solid ${({ theme }) => theme.font.color.primary};
} }
input[type='checkbox']:checked::before { input[type='checkbox']:checked::before {
border: 1px solid ${(props) => props.theme.blue}; border: 1px solid ${({ theme }) => theme.color.blue};
} }
`; `;
@@ -2,7 +2,7 @@ import React, { forwardRef, ReactElement, useState } from 'react';
import ReactDatePicker, { CalendarContainerProps } from 'react-datepicker'; import ReactDatePicker, { CalendarContainerProps } from 'react-datepicker';
import styled from '@emotion/styled'; import styled from '@emotion/styled';
import { overlayBackground } from '../../layout/styles/themes'; import { overlayBackground } from '@/ui/themes/effects';
import 'react-datepicker/dist/react-datepicker.css'; import 'react-datepicker/dist/react-datepicker.css';
@@ -16,10 +16,10 @@ export type DatePickerProps = {
const StyledContainer = styled.div` const StyledContainer = styled.div`
& .react-datepicker { & .react-datepicker {
border-color: ${(props) => props.theme.primaryBorder}; border-color: ${({ theme }) => theme.border.color.light};
background: transparent; background: transparent;
font-family: 'Inter'; font-family: 'Inter';
font-size: ${(props) => props.theme.fontSizeMedium}; font-size: ${({ theme }) => theme.font.size.md};
border: none; border: none;
display: block; display: block;
font-weight: 400; font-weight: 400;
@@ -49,19 +49,19 @@ const StyledContainer = styled.div`
& .react-datepicker__header__dropdown { & .react-datepicker__header__dropdown {
display: flex; display: flex;
margin-left: ${(props) => props.theme.spacing(1)}; margin-left: ${({ theme }) => theme.spacing(1)};
margin-bottom: ${(props) => props.theme.spacing(1)}; margin-bottom: ${({ theme }) => theme.spacing(1)};
} }
& .react-datepicker__month-dropdown-container, & .react-datepicker__month-dropdown-container,
& .react-datepicker__year-dropdown-container { & .react-datepicker__year-dropdown-container {
text-align: left; text-align: left;
border-radius: 4px; border-radius: 4px;
margin-left: ${(props) => props.theme.spacing(1)}; margin-left: ${({ theme }) => theme.spacing(1)};
margin-right: 0; margin-right: 0;
padding: ${(props) => props.theme.spacing(2)}; padding: ${({ theme }) => theme.spacing(2)};
padding-right: ${(props) => props.theme.spacing(4)}; padding-right: ${({ theme }) => theme.spacing(4)};
background-color: ${(props) => props.theme.tertiaryBackground}; background-color: ${({ theme }) => theme.background.tertiary};
} }
& .react-datepicker__month-read-view--down-arrow, & .react-datepicker__month-read-view--down-arrow,
@@ -69,14 +69,14 @@ const StyledContainer = styled.div`
height: 5px; height: 5px;
width: 5px; width: 5px;
border-width: 1px 1px 0 0; border-width: 1px 1px 0 0;
border-color: ${(props) => props.theme.text40}; border-color: ${({ theme }) => theme.border.color.light};
top: 3px; top: 3px;
right: -6px; right: -6px;
} }
& .react-datepicker__year-read-view, & .react-datepicker__year-read-view,
& .react-datepicker__month-read-view { & .react-datepicker__month-read-view {
padding-right: ${(props) => props.theme.spacing(2)}; padding-right: ${({ theme }) => theme.spacing(2)};
} }
& .react-datepicker__month-dropdown-container { & .react-datepicker__month-dropdown-container {
@@ -89,19 +89,19 @@ const StyledContainer = styled.div`
& .react-datepicker__month-dropdown, & .react-datepicker__month-dropdown,
& .react-datepicker__year-dropdown { & .react-datepicker__year-dropdown {
border: ${(props) => props.theme.primaryBorder}; border: ${({ theme }) => theme.border.color.light};
${overlayBackground} ${overlayBackground}
overflow-y: scroll; overflow-y: scroll;
top: ${(props) => props.theme.spacing(2)}; top: ${({ theme }) => theme.spacing(2)};
} }
& .react-datepicker__month-dropdown { & .react-datepicker__month-dropdown {
left: ${(props) => props.theme.spacing(2)}; left: ${({ theme }) => theme.spacing(2)};
width: 160px; width: 160px;
height: 260px; height: 260px;
} }
& .react-datepicker__year-dropdown { & .react-datepicker__year-dropdown {
left: calc(${(props) => props.theme.spacing(9)} + 80px); left: calc(${({ theme }) => theme.spacing(9)} + 80px);
width: 100px; width: 100px;
height: 260px; height: 260px;
} }
@@ -118,16 +118,16 @@ const StyledContainer = styled.div`
& .react-datepicker__year-option, & .react-datepicker__year-option,
& .react-datepicker__month-option { & .react-datepicker__month-option {
text-align: left; text-align: left;
padding: ${(props) => props.theme.spacing(2)} padding: ${({ theme }) => theme.spacing(2)}
calc(${(props) => props.theme.spacing(2)} - 2px); calc(${({ theme }) => theme.spacing(2)} - 2px);
width: calc(100% - ${(props) => props.theme.spacing(4)}); width: calc(100% - ${({ theme }) => theme.spacing(4)});
border-radius: 2px; border-radius: 2px;
color: ${(props) => props.theme.text60}; color: ${({ theme }) => theme.font.color.secondary};
cursor: pointer; cursor: pointer;
margin: 2px; margin: 2px;
&:hover { &:hover {
background: ${(props) => props.theme.lightBackgroundTransparent}; background: ${({ theme }) => theme.background.transparent.light};
} }
&:first-of-type { &:first-of-type {
@@ -144,7 +144,7 @@ const StyledContainer = styled.div`
} }
& .react-datepicker__day-name { & .react-datepicker__day-name {
color: ${(props) => props.theme.text60}; color: ${({ theme }) => theme.font.color.secondary};
width: 34px; width: 34px;
height: 40px; height: 40px;
line-height: 40px; line-height: 40px;
@@ -172,7 +172,7 @@ const StyledContainer = styled.div`
border-radius: 4px; border-radius: 4px;
padding-top: 6px; padding-top: 6px;
&:hover { &:hover {
background: ${(props) => props.theme.lightBackgroundTransparent}; background: ${({ theme }) => theme.background.transparent.light};
} }
} }
& .react-datepicker__navigation--previous { & .react-datepicker__navigation--previous {
@@ -198,7 +198,7 @@ const StyledContainer = styled.div`
height: 7px; height: 7px;
width: 7px; width: 7px;
border-width: 1px 1px 0 0; border-width: 1px 1px 0 0;
border-color: ${(props) => props.theme.text40}; border-color: ${({ theme }) => theme.font.color.tertiary};
} }
& .react-datepicker__day--keyboard-selected { & .react-datepicker__day--keyboard-selected {
@@ -207,20 +207,20 @@ const StyledContainer = styled.div`
& .react-datepicker__day, & .react-datepicker__day,
.react-datepicker__time-name { .react-datepicker__time-name {
color: ${(props) => props.theme.text80}; color: ${({ theme }) => theme.font.color.primary};
} }
& .react-datepicker__day--selected { & .react-datepicker__day--selected {
background-color: ${(props) => props.theme.blue}; background-color: ${({ theme }) => theme.color.blue};
color: ${(props) => props.theme.text0}; color: ${({ theme }) => theme.font.color.inverted};
} }
& .react-datepicker__day--outside-month { & .react-datepicker__day--outside-month {
color: ${(props) => props.theme.text40}; color: ${({ theme }) => theme.font.color.tertiary};
} }
& .react-datepicker__day:hover { & .react-datepicker__day:hover {
color: ${(props) => props.theme.text40}; color: ${({ theme }) => theme.font.color.tertiary};
} }
`; `;
@@ -22,10 +22,10 @@ const StyledContainer = styled.div`
`; `;
const StyledTextArea = styled(TextareaAutosize)` const StyledTextArea = styled(TextareaAutosize)`
background: ${(props) => props.theme.tertiaryBackground}; background: ${({ theme }) => theme.background.tertiary};
border: none; border: none;
border-radius: 5px; border-radius: 5px;
color: ${(props) => props.theme.text80}; color: ${({ theme }) => theme.font.color.primary};
font-family: inherit; font-family: inherit;
font-size: 13px; font-size: 13px;
font-weight: 400; font-weight: 400;
@@ -41,7 +41,7 @@ const StyledTextArea = styled(TextareaAutosize)`
} }
&::placeholder { &::placeholder {
color: ${(props) => props.theme.text30}; color: ${({ theme }) => theme.font.color.light};
font-weight: 400; font-weight: 400;
} }
`; `;
@@ -1,8 +1,6 @@
import { ChangeEvent, useRef } from 'react'; import { ChangeEvent, useRef } from 'react';
import styled from '@emotion/styled'; import styled from '@emotion/styled';
import { textInputStyle } from '../../layout/styles/themes';
type OwnProps = { type OwnProps = {
leftValue: string; leftValue: string;
rightValue: string; rightValue: string;
@@ -17,16 +15,14 @@ const StyledContainer = styled.div`
justify-content: space-between; justify-content: space-between;
& > input:last-child { & > input:last-child {
border-left: 1px solid ${(props) => props.theme.primaryBorder}; border-left: 1px solid ${({ theme }) => theme.border.color.light};
padding-left: ${(props) => props.theme.spacing(2)}; padding-left: ${({ theme }) => theme.spacing(2)};
} }
`; `;
const StyledEditInplaceInput = styled.input` const StyledEditInplaceInput = styled.input`
height: 18px; height: 18px;
width: 45%; width: 45%;
${textInputStyle}
`; `;
export function DoubleTextInput({ export function DoubleTextInput({
@@ -10,22 +10,22 @@ type OwnProps = Omit<
}; };
const StyledInput = styled.input<{ fullWidth: boolean }>` const StyledInput = styled.input<{ fullWidth: boolean }>`
background-color: ${({ theme }) => theme.lighterBackgroundTransparent}; background-color: ${({ theme }) => theme.background.transparent.lighter};
border: 1px solid ${({ theme }) => theme.lightBorder}; border: 1px solid ${({ theme }) => theme.border.color.light};
border-radius: 4px; border-radius: 4px;
padding: ${({ theme }) => theme.spacing(2)} ${({ theme }) => padding: ${({ theme }) => theme.spacing(2)} ${({ theme }) =>
theme.spacing(3)}; theme.spacing(3)};
color: ${({ theme }) => theme.text80}; color: ${({ theme }) => theme.font.color.primary};
outline: none; outline: none;
width: ${({ fullWidth, theme }) => width: ${({ fullWidth, theme }) =>
fullWidth ? `calc(100% - ${theme.spacing(6)})` : 'auto'}; fullWidth ? `calc(100% - ${theme.spacing(6)})` : 'auto'};
&::placeholder, &::placeholder,
&::-webkit-input-placeholder { &::-webkit-input-placeholder {
color: ${({ theme }) => theme.text30} color: ${({ theme }) => theme.font.color.light}
font-family: ${({ theme }) => theme.fontFamily};; font-family: ${({ theme }) => theme.font.family};;
font-weight: ${({ theme }) => theme.fontWeightMedium}; font-weight: ${({ theme }) => theme.font.weight.medium};
} }
margin-bottom: ${({ theme }) => theme.spacing(3)}; margin-bottom: ${({ theme }) => theme.spacing(3)};
`; `;
@@ -12,8 +12,8 @@ type OwnProps = {
const StyledClickable = styled.div` const StyledClickable = styled.div`
display: flex; display: flex;
a { a {
color: ${({ theme }) => theme.text40}; color: ${({ theme }) => theme.font.color.tertiary};
font-size: ${({ theme }) => theme.fontSizeSmall}; font-size: ${({ theme }) => theme.font.size.sm};
text-decoration: none; text-decoration: none;
} }
`; `;
@@ -4,11 +4,11 @@ export const DropdownMenu = styled.div`
align-items: center; align-items: center;
backdrop-filter: blur(20px); backdrop-filter: blur(20px);
background: ${(props) => props.theme.secondaryBackgroundTransparent}; background: ${({ theme }) => theme.background.transparent.secondary};
border: 1px solid ${(props) => props.theme.lightBorder}; border: 1px solid ${({ theme }) => theme.border.color.light};
border-radius: calc(${(props) => props.theme.borderRadius} * 2); border-radius: ${({ theme }) => theme.border.radius.md};
box-shadow: ${(props) => props.theme.modalBoxShadow}; box-shadow: ${({ theme }) => theme.boxShadow.strong};
display: flex; display: flex;
@@ -1,23 +1,23 @@
import styled from '@emotion/styled'; import styled from '@emotion/styled';
import { hoverBackground } from '@/ui/layout/styles/themes'; import { hoverBackground } from '@/ui/themes/effects';
export const DropdownMenuButton = styled.div` export const DropdownMenuButton = styled.div`
--horizontal-padding: ${(props) => props.theme.spacing(1.5)}; --horizontal-padding: ${({ theme }) => theme.spacing(1.5)};
--vertical-padding: ${(props) => props.theme.spacing(2)}; --vertical-padding: ${({ theme }) => theme.spacing(2)};
align-items: center; align-items: center;
border-radius: ${(props) => props.theme.borderRadius}; border-radius: ${({ theme }) => theme.border.radius.md};
color: ${(props) => props.theme.text60}; color: ${({ theme }) => theme.font.color.secondary};
cursor: pointer; cursor: pointer;
display: flex; display: flex;
flex-direction: row; flex-direction: row;
font-size: ${(props) => props.theme.fontSizeSmall}; font-size: ${({ theme }) => theme.font.size.sm};
gap: ${(props) => props.theme.spacing(2)}; gap: ${({ theme }) => theme.spacing(2)};
height: calc(32px - 2 * var(--vertical-padding)); height: calc(32px - 2 * var(--vertical-padding));
@@ -21,15 +21,15 @@ const StyledLeftContainer = styled.div`
align-items: center; align-items: center;
display: flex; display: flex;
gap: ${(props) => props.theme.spacing(2)}; gap: ${({ theme }) => theme.spacing(2)};
`; `;
const StyledChildrenContainer = styled.div` const StyledChildrenContainer = styled.div`
align-items: center; align-items: center;
display: flex; display: flex;
font-size: ${(props) => props.theme.fontSizeSmall}; font-size: ${({ theme }) => theme.font.size.sm};
gap: ${(props) => props.theme.spacing(2)}; gap: ${({ theme }) => theme.spacing(2)};
`; `;
export function DropdownMenuCheckableItem({ export function DropdownMenuCheckableItem({
@@ -1,19 +1,19 @@
import styled from '@emotion/styled'; import styled from '@emotion/styled';
export const DropdownMenuItem = styled.div` export const DropdownMenuItem = styled.div`
--horizontal-padding: ${(props) => props.theme.spacing(1.5)}; --horizontal-padding: ${({ theme }) => theme.spacing(1.5)};
--vertical-padding: ${(props) => props.theme.spacing(2)}; --vertical-padding: ${({ theme }) => theme.spacing(2)};
align-items: center; align-items: center;
border-radius: ${(props) => props.theme.borderRadius}; border-radius: ${({ theme }) => theme.border.radius.sm};
color: ${(props) => props.theme.text60}; color: ${({ theme }) => theme.font.color.secondary};
display: flex; display: flex;
flex-direction: row; flex-direction: row;
font-size: ${(props) => props.theme.fontSizeSmall}; font-size: ${({ theme }) => theme.font.size.sm};
gap: ${(props) => props.theme.spacing(2)}; gap: ${({ theme }) => theme.spacing(2)};
height: calc(32px - 2 * var(--vertical-padding)); height: calc(32px - 2 * var(--vertical-padding));
@@ -1,7 +1,7 @@
import styled from '@emotion/styled'; import styled from '@emotion/styled';
export const DropdownMenuItemContainer = styled.div` export const DropdownMenuItemContainer = styled.div`
--padding: ${(props) => props.theme.spacing(1 / 2)}; --padding: ${({ theme }) => theme.spacing(1 / 2)};
align-items: flex-start; align-items: flex-start;
display: flex; display: flex;
@@ -1,13 +1,13 @@
import { InputHTMLAttributes } from 'react'; import { InputHTMLAttributes } from 'react';
import styled from '@emotion/styled'; import styled from '@emotion/styled';
import { textInputStyle } from '@/ui/layout/styles/themes'; import { textInputStyle } from '@/ui/themes/effects';
export const DropdownMenuSearchContainer = styled.div` export const DropdownMenuSearchContainer = styled.div`
--vertical-padding: ${(props) => props.theme.spacing(1)}; --vertical-padding: ${({ theme }) => theme.spacing(1)};
align-items: center; align-items: center;
border-bottom: 1px solid ${(props) => props.theme.lightBorder}; border-bottom: 1px solid ${({ theme }) => theme.border.color.light};
display: flex; display: flex;
flex-direction: row; flex-direction: row;
@@ -18,7 +18,7 @@ export const DropdownMenuSearchContainer = styled.div`
`; `;
const StyledEditModeSearchInput = styled.input` const StyledEditModeSearchInput = styled.input`
font-size: ${(props) => props.theme.fontSizeSmall}; font-size: ${({ theme }) => theme.font.size.sm};
${textInputStyle} ${textInputStyle}
@@ -3,7 +3,7 @@ import { useTheme } from '@emotion/react';
import styled from '@emotion/styled'; import styled from '@emotion/styled';
import { IconCheck } from '@/ui/icons/index'; import { IconCheck } from '@/ui/icons/index';
import { hoverBackground } from '@/ui/layout/styles/themes'; import { hoverBackground } from '@/ui/themes/effects';
import { DropdownMenuButton } from './DropdownMenuButton'; import { DropdownMenuButton } from './DropdownMenuButton';
@@ -19,7 +19,7 @@ const DropdownMenuSelectableItemContainer = styled(DropdownMenuButton)<Props>`
align-items: center; align-items: center;
background: ${(props) => background: ${(props) =>
props.hovered ? props.theme.lightBackgroundTransparent : 'transparent'}; props.hovered ? props.theme.background.transparent.light : 'transparent'};
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
@@ -29,7 +29,7 @@ const StyledLeftContainer = styled.div`
align-items: center; align-items: center;
display: flex; display: flex;
gap: ${(props) => props.theme.spacing(2)}; gap: ${({ theme }) => theme.spacing(2)};
`; `;
const StyledRightIcon = styled.div` const StyledRightIcon = styled.div`
@@ -61,7 +61,7 @@ export function DropdownMenuSelectableItem({
> >
<StyledLeftContainer>{children}</StyledLeftContainer> <StyledLeftContainer>{children}</StyledLeftContainer>
<StyledRightIcon> <StyledRightIcon>
{selected && <IconCheck size={theme.iconSizeMedium} />} {selected && <IconCheck size={theme.icon.size.md} />}
</StyledRightIcon> </StyledRightIcon>
</DropdownMenuSelectableItemContainer> </DropdownMenuSelectableItemContainer>
); );
@@ -1,7 +1,7 @@
import styled from '@emotion/styled'; import styled from '@emotion/styled';
export const DropdownMenuSeparator = styled.div` export const DropdownMenuSeparator = styled.div`
background-color: ${(props) => props.theme.lightBorder}; background-color: ${({ theme }) => theme.border.color.light};
height: 1px; height: 1px;
width: 100%; width: 100%;
@@ -10,7 +10,7 @@ export function Modal({ children }: { children: React.ReactNode }) {
ariaHideApp={false} ariaHideApp={false}
style={{ style={{
overlay: { overlay: {
backgroundColor: theme.modalBackgroundTransparent, backgroundColor: theme.background.overlay,
zIndex: 2, zIndex: 2,
display: 'flex', display: 'flex',
justifyContent: 'center', justifyContent: 'center',
@@ -6,9 +6,9 @@ type OwnProps = {
}; };
const StyledMainSectionTitle = styled.h2` const StyledMainSectionTitle = styled.h2`
color: ${({ theme }) => theme.text80}; color: ${({ theme }) => theme.font.color.primary};
font-size: ${({ theme }) => theme.fontSizeExtraLarge}; font-size: ${({ theme }) => theme.font.size.xl};
font-weight: ${({ theme }) => theme.fontWeightBold}; font-weight: ${({ theme }) => theme.font.weight.semiBold};
line-height: 1.5; line-height: 1.5;
`; `;
@@ -6,9 +6,9 @@ type OwnProps = {
}; };
const StyledSubSectionTitle = styled.h2` const StyledSubSectionTitle = styled.h2`
color: ${({ theme }) => theme.text80}; color: ${({ theme }) => theme.font.color.primary};
font-size: ${({ theme }) => theme.fontSizeMedium}; font-size: ${({ theme }) => theme.font.size.md};
font-weight: ${({ theme }) => theme.fontWeightBold}; font-weight: ${({ theme }) => theme.font.weight.semiBold};
line-height: 1.5; line-height: 1.5;
`; `;
@@ -11,13 +11,13 @@ const StyledTitle = styled.div`
display: flex; display: flex;
flex-direction: row; flex-direction: row;
font-weight: 500; font-weight: 500;
height: ${(props) => props.theme.spacing(8)}; height: ${({ theme }) => theme.spacing(8)};
padding-left: ${(props) => props.theme.spacing(2)}; padding-left: ${({ theme }) => theme.spacing(2)};
`; `;
const StyledIcon = styled.div` const StyledIcon = styled.div`
display: flex; display: flex;
margin-right: ${(props) => props.theme.spacing(1)}; margin-right: ${({ theme }) => theme.spacing(1)};
`; `;
export function ColumnHead({ viewName, viewIcon }: OwnProps) { export function ColumnHead({ viewName, viewIcon }: OwnProps) {
@@ -40,15 +40,15 @@ const StyledTable = styled.table`
border-radius: 4px; border-radius: 4px;
border-spacing: 0; border-spacing: 0;
margin-left: ${(props) => props.theme.table.horizontalCellMargin}; margin-left: ${({ theme }) => theme.table.horizontalCellMargin};
margin-right: ${(props) => props.theme.table.horizontalCellMargin}; margin-right: ${({ theme }) => theme.table.horizontalCellMargin};
table-layout: fixed; table-layout: fixed;
width: calc(100% - ${(props) => props.theme.table.horizontalCellMargin} * 2); width: calc(100% - ${({ theme }) => theme.table.horizontalCellMargin} * 2);
th { th {
border: 1px solid ${(props) => props.theme.tertiaryBackground}; border: 1px solid ${({ theme }) => theme.background.tertiary};
border-collapse: collapse; border-collapse: collapse;
color: ${(props) => props.theme.text40}; color: ${({ theme }) => theme.font.color.tertiary};
padding: 0; padding: 0;
text-align: left; text-align: left;
@@ -66,9 +66,9 @@ const StyledTable = styled.table`
} }
td { td {
border: 1px solid ${(props) => props.theme.tertiaryBackground}; border: 1px solid ${({ theme }) => theme.background.tertiary};
border-collapse: collapse; border-collapse: collapse;
color: ${(props) => props.theme.text80}; color: ${({ theme }) => theme.font.color.primary};
padding: 0; padding: 0;
text-align: left; text-align: left;
@@ -102,7 +102,7 @@ const StyledTableScrollableContainer = styled.div`
const StyledRow = styled.tr<{ selected: boolean }>` const StyledRow = styled.tr<{ selected: boolean }>`
background: ${(props) => background: ${(props) =>
props.selected ? props.theme.secondaryBackground : 'none'}; props.selected ? props.theme.background.secondary : 'none'};
`; `;
export function EntityTable<TData extends { id: string }, SortField>({ export function EntityTable<TData extends { id: string }, SortField>({
@@ -16,17 +16,17 @@ type StyledContainerProps = {
const StyledContainer = styled.div<StyledContainerProps>` const StyledContainer = styled.div<StyledContainerProps>`
align-items: center; align-items: center;
background: ${(props) => props.theme.secondaryBackground}; background: ${({ theme }) => theme.background.secondary};
border: 1px solid ${(props) => props.theme.primaryBorder}; border: 1px solid ${({ theme }) => theme.border.color.light};
border-radius: 8px; border-radius: 8px;
bottom: ${(props) => (props.position.x ? 'auto' : '38px')}; bottom: ${(props) => (props.position.x ? 'auto' : '38px')};
box-shadow: ${(props) => props.theme.modalBoxShadow}; box-shadow: ${({ theme }) => theme.boxShadow.strong};
display: flex; display: flex;
height: 48px; height: 48px;
left: ${(props) => (props.position.x ? `${props.position.x}px` : '50%')}; left: ${(props) => (props.position.x ? `${props.position.x}px` : '50%')};
padding-left: ${(props) => props.theme.spacing(2)}; padding-left: ${({ theme }) => theme.spacing(2)};
padding-right: ${(props) => props.theme.spacing(2)}; padding-right: ${({ theme }) => theme.spacing(2)};
position: ${(props) => (props.position.x ? 'fixed' : 'absolute')}; position: ${(props) => (props.position.x ? 'fixed' : 'absolute')};
top: ${(props) => (props.position.y ? `${props.position.y}px` : 'auto')}; top: ${(props) => (props.position.y ? `${props.position.y}px` : 'auto')};
@@ -15,23 +15,25 @@ type StyledButtonProps = {
const StyledButton = styled.div<StyledButtonProps>` const StyledButton = styled.div<StyledButtonProps>`
border-radius: 4px; border-radius: 4px;
color: ${(props) => color: ${(props) =>
props.type === 'warning' ? props.theme.red : props.theme.text60}; props.type === 'warning'
? props.theme.color.red
: props.theme.font.color.secondary};
cursor: pointer; cursor: pointer;
display: flex; display: flex;
justify-content: center; justify-content: center;
padding: ${(props) => props.theme.spacing(2)}; padding: ${({ theme }) => theme.spacing(2)};
transition: background 0.1s ease; transition: background 0.1s ease;
user-select: none; user-select: none;
&:hover { &:hover {
background: ${(props) => props.theme.tertiaryBackground}; background: ${({ theme }) => theme.background.tertiary};
} }
`; `;
const StyledButtonLabel = styled.div` const StyledButtonLabel = styled.div`
font-weight: 500; font-weight: 500;
margin-left: ${(props) => props.theme.spacing(2)}; margin-left: ${({ theme }) => theme.spacing(2)};
`; `;
export function EntityTableActionBarButton({ export function EntityTableActionBarButton({
@@ -2,12 +2,9 @@ import { ReactNode, useRef } from 'react';
import styled from '@emotion/styled'; import styled from '@emotion/styled';
import { IconChevronDown } from '@/ui/icons/index'; import { IconChevronDown } from '@/ui/icons/index';
import { overlayBackground, textInputStyle } from '@/ui/themes/effects';
import { useOutsideAlerter } from '../../../hooks/useOutsideAlerter'; import { useOutsideAlerter } from '../../../hooks/useOutsideAlerter';
import {
overlayBackground,
textInputStyle,
} from '../../../layout/styles/themes';
type OwnProps = { type OwnProps = {
label: string; label: string;
@@ -31,17 +28,17 @@ type StyledDropdownButtonProps = {
}; };
const StyledDropdownButton = styled.div<StyledDropdownButtonProps>` const StyledDropdownButton = styled.div<StyledDropdownButtonProps>`
background: ${(props) => props.theme.primaryBackground}; background: ${({ theme }) => theme.background.primary};
border-radius: 4px; border-radius: 4px;
color: ${(props) => (props.isActive ? props.theme.blue : 'none')}; color: ${(props) => (props.isActive ? props.theme.color.blue : 'none')};
cursor: pointer; cursor: pointer;
display: flex; display: flex;
filter: ${(props) => (props.isUnfolded ? 'brightness(0.95)' : 'none')}; filter: ${(props) => (props.isUnfolded ? 'brightness(0.95)' : 'none')};
padding: ${(props) => props.theme.spacing(1)}; padding: ${({ theme }) => theme.spacing(1)};
padding-left: ${(props) => props.theme.spacing(2)}; padding-left: ${({ theme }) => theme.spacing(2)};
padding-right: ${(props) => props.theme.spacing(2)}; padding-right: ${({ theme }) => theme.spacing(2)};
user-select: none; user-select: none;
&:hover { &:hover {
@@ -54,7 +51,7 @@ const StyledDropdown = styled.ul`
--wraper-border: 1px; --wraper-border: 1px;
--wraper-border-radius: 8px; --wraper-border-radius: 8px;
border: var(--wraper-border) solid ${(props) => props.theme.primaryBorder}; border: var(--wraper-border) solid ${({ theme }) => theme.border.color.light};
border-radius: var(--wraper-border-radius); border-radius: var(--wraper-border-radius);
display: flex; display: flex;
flex-direction: column; flex-direction: column;
@@ -80,17 +77,17 @@ const StyledDropdown = styled.ul`
const StyledDropdownItem = styled.li` const StyledDropdownItem = styled.li`
align-items: center; align-items: center;
border-radius: 2px; border-radius: 2px;
color: ${(props) => props.theme.text60}; color: ${({ theme }) => theme.font.color.secondary};
cursor: pointer; cursor: pointer;
display: flex; display: flex;
margin: 2px; margin: 2px;
padding: ${(props) => props.theme.spacing(2)} padding: ${({ theme }) => theme.spacing(2)}
calc(${(props) => props.theme.spacing(2)} - 2px); calc(${({ theme }) => theme.spacing(2)} - 2px);
user-select: none; user-select: none;
width: calc(160px - ${(props) => props.theme.spacing(4)}); width: calc(160px - ${({ theme }) => theme.spacing(4)});
&:hover { &:hover {
background: ${(props) => props.theme.lightBackgroundTransparent}; background: ${({ theme }) => theme.background.transparent.light};
} }
`; `;
@@ -102,18 +99,18 @@ const StyledDropdownItemClipped = styled.span`
const StyledDropdownTopOption = styled.li` const StyledDropdownTopOption = styled.li`
align-items: center; align-items: center;
border-bottom: 1px solid ${(props) => props.theme.lightBorder}; border-bottom: 1px solid ${({ theme }) => theme.border.color.light};
color: ${(props) => props.theme.text80}; color: ${({ theme }) => theme.font.color.primary};
cursor: pointer; cursor: pointer;
display: flex; display: flex;
font-size: ${(props) => props.theme.fontSizeSmall}; font-size: ${({ theme }) => theme.font.size.sm};
font-weight: ${(props) => props.theme.fontWeightMedium}; font-weight: ${({ theme }) => theme.font.weight.medium};
justify-content: space-between; justify-content: space-between;
padding: calc(${(props) => props.theme.spacing(2)}) padding: calc(${({ theme }) => theme.spacing(2)})
calc(${(props) => props.theme.spacing(2)}); calc(${({ theme }) => theme.spacing(2)});
&:hover { &:hover {
background: ${(props) => props.theme.lightBackgroundTransparent}; background: ${({ theme }) => theme.background.transparent.light};
} }
user-select: none; user-select: none;
`; `;
@@ -121,19 +118,19 @@ const StyledDropdownTopOption = styled.li`
const StyledIcon = styled.div` const StyledIcon = styled.div`
display: flex; display: flex;
justify-content: center; justify-content: center;
margin-right: ${(props) => props.theme.spacing(1)}; margin-right: ${({ theme }) => theme.spacing(1)};
min-width: ${(props) => props.theme.spacing(4)}; min-width: ${({ theme }) => theme.spacing(4)};
`; `;
const StyledSearchField = styled.li` const StyledSearchField = styled.li`
align-items: center; align-items: center;
border-bottom: var(--wraper-border) solid border-bottom: var(--wraper-border) solid
${(props) => props.theme.primaryBorder}; ${({ theme }) => theme.border.color.light};
color: ${(props) => props.theme.text60}; color: ${({ theme }) => theme.font.color.secondary};
cursor: pointer; cursor: pointer;
display: flex; display: flex;
font-weight: ${(props) => props.theme.fontWeightMedium}; font-weight: ${({ theme }) => theme.font.weight.medium};
justify-content: space-between; justify-content: space-between;
overflow: hidden; overflow: hidden;
@@ -141,7 +138,7 @@ const StyledSearchField = styled.li`
input { input {
border-radius: 8px; border-radius: 8px;
box-sizing: border-box; box-sizing: border-box;
font-family: ${(props) => props.theme.fontFamily}; font-family: ${({ theme }) => theme.font.family};
height: 36px; height: 36px;
padding: 8px; padding: 8px;
width: 100%; width: 100%;
@@ -192,7 +189,7 @@ function DropdownButton({
} }
const StyleAngleDownContainer = styled.div` const StyleAngleDownContainer = styled.div`
color: ${(props) => props.theme.text40}; color: ${({ theme }) => theme.font.color.tertiary};
display: flex; display: flex;
height: 100%; height: 100%;
justify-content: center; justify-content: center;
@@ -20,7 +20,7 @@ type OwnProps<SortField, TData extends FilterableFieldsType> = {
const StyledBar = styled.div` const StyledBar = styled.div`
align-items: center; align-items: center;
border-top: 1px solid ${(props) => props.theme.primaryBorder}; border-top: 1px solid ${({ theme }) => theme.border.color.light};
display: flex; display: flex;
flex-direction: row; flex-direction: row;
height: 40px; height: 40px;
@@ -31,21 +31,21 @@ const StyledChipcontainer = styled.div`
align-items: center; align-items: center;
display: flex; display: flex;
flex-direction: row; flex-direction: row;
gap: ${(props) => props.theme.spacing(1)}; gap: ${({ theme }) => theme.spacing(1)};
height: 40px; height: 40px;
justify-content: space-between; justify-content: space-between;
margin-left: ${(props) => props.theme.spacing(2)}; margin-left: ${({ theme }) => theme.spacing(2)};
overflow-x: auto; overflow-x: auto;
`; `;
const StyledCancelButton = styled.button` const StyledCancelButton = styled.button`
background-color: inherit; background-color: inherit;
border: none; border: none;
color: ${(props) => props.theme.text60}; color: ${({ theme }) => theme.font.color.secondary};
cursor: pointer; cursor: pointer;
font-weight: 500; font-weight: 500;
margin-left: auto; margin-left: auto;
margin-right: ${(props) => props.theme.spacing(2)}; margin-right: ${({ theme }) => theme.spacing(2)};
padding: ${(props) => { padding: ${(props) => {
const horiz = props.theme.spacing(2); const horiz = props.theme.spacing(2);
const vert = props.theme.spacing(1); const vert = props.theme.spacing(1);
@@ -54,8 +54,8 @@ const StyledCancelButton = styled.button`
user-select: none; user-select: none;
&:hover { &:hover {
background-color: ${(props) => props.theme.tertiaryBackground}; background-color: ${({ theme }) => theme.background.tertiary};
border-radius: ${(props) => props.theme.spacing(1)}; border-radius: ${({ theme }) => theme.spacing(1)};
} }
`; `;
@@ -78,9 +78,9 @@ function SortAndFilterBar<SortField, TData extends FilterableFieldsType>({
id={sort.key} id={sort.key}
icon={ icon={
sort.order === 'desc' ? ( sort.order === 'desc' ? (
<IconArrowNarrowDown size={theme.iconSizeMedium} /> <IconArrowNarrowDown size={theme.icon.size.md} />
) : ( ) : (
<IconArrowNarrowUp size={theme.iconSizeMedium} /> <IconArrowNarrowUp size={theme.icon.size.md} />
) )
} }
onRemove={() => onRemoveSort(sort.key)} onRemove={() => onRemoveSort(sort.key)}
@@ -14,30 +14,34 @@ type OwnProps = {
const StyledChip = styled.div` const StyledChip = styled.div`
align-items: center; align-items: center;
background-color: ${(props) => props.theme.blueHighTransparency}; background-color: ${({ theme }) => theme.background.secondary};
border: 1px solid ${(props) => props.theme.blueLowTransparency}; border: 1px solid ${({ theme }) => theme.border.color.medium};
border-radius: 50px; border-radius: 50px;
color: ${(props) => props.theme.blue}; color: ${({ theme }) => theme.color.blue};
display: flex; display: flex;
flex-direction: row; flex-direction: row;
flex-shrink: 0; flex-shrink: 0;
font-size: ${(props) => props.theme.fontSizeSmall}; font-size: ${({ theme }) => theme.font.size.sm};
padding: ${(props) => props.theme.spacing(1) + ' ' + props.theme.spacing(2)}; padding: ${({ theme }) => theme.spacing(1) + ' ' + theme.spacing(2)};
`; `;
const StyledIcon = styled.div` const StyledIcon = styled.div`
align-items: center; align-items: center;
display: flex; display: flex;
margin-right: ${(props) => props.theme.spacing(1)}; margin-right: ${({ theme }) => theme.spacing(1)};
`; `;
const StyledDelete = styled.div` const StyledDelete = styled.div`
align-items: center; align-items: center;
cursor: pointer; cursor: pointer;
display: flex; display: flex;
font-size: ${(props) => props.theme.fontSizeSmall}; font-size: ${({ theme }) => theme.font.size.sm};
margin-left: ${(props) => props.theme.spacing(2)}; margin-left: ${({ theme }) => theme.spacing(2)};
margin-top: 1px; margin-top: 1px;
user-select: none; user-select: none;
&:hover {
background-color: ${({ theme }) => theme.background.tertiary};
border-radius: ${({ theme }) => theme.border.radius.sm};
}
`; `;
const StyledLabelKey = styled.div` const StyledLabelKey = styled.div`
@@ -58,7 +62,7 @@ function SortOrFilterChip({
{labelKey && <StyledLabelKey>{labelKey}:&nbsp;</StyledLabelKey>} {labelKey && <StyledLabelKey>{labelKey}:&nbsp;</StyledLabelKey>}
{labelValue} {labelValue}
<StyledDelete onClick={onRemove} data-testid={'remove-icon-' + id}> <StyledDelete onClick={onRemove} data-testid={'remove-icon-' + id}>
<IconX size={theme.iconSizeMedium} /> <IconX size={theme.icon.size.sm} stroke={theme.icon.stroke.sm} />
</StyledDelete> </StyledDelete>
</StyledChip> </StyledChip>
); );
@@ -31,22 +31,22 @@ const StyledContainer = styled.div`
const StyledTableHeader = styled.div` const StyledTableHeader = styled.div`
align-items: center; align-items: center;
color: ${(props) => props.theme.text60}; color: ${({ theme }) => theme.font.color.secondary};
display: flex; display: flex;
flex-direction: row; flex-direction: row;
font-weight: 500; font-weight: 500;
height: 40px; height: 40px;
justify-content: space-between; justify-content: space-between;
padding-left: ${(props) => props.theme.spacing(3)}; padding-left: ${({ theme }) => theme.spacing(3)};
padding-right: ${(props) => props.theme.spacing(2)}; padding-right: ${({ theme }) => theme.spacing(2)};
`; `;
const StyledIcon = styled.div` const StyledIcon = styled.div`
display: flex; display: flex;
margin-right: ${(props) => props.theme.spacing(2)}; margin-right: ${({ theme }) => theme.spacing(2)};
& > svg { & > svg {
font-size: ${(props) => props.theme.iconSizeSmall}; font-size: ${({ theme }) => theme.icon.size.sm};
} }
`; `;
@@ -5,12 +5,13 @@ import { currentUserState } from '@/auth/states/currentUserState';
import { CommandMenu } from '@/command-menu/components/CommandMenu'; import { CommandMenu } from '@/command-menu/components/CommandMenu';
import { AppNavbar } from '~/AppNavbar'; import { AppNavbar } from '~/AppNavbar';
import { MOBILE_VIEWPORT } from '../themes/themes';
import { NavbarContainer } from './navbar/NavbarContainer'; import { NavbarContainer } from './navbar/NavbarContainer';
import { isNavbarOpenedState } from './states/isNavbarOpenedState'; import { isNavbarOpenedState } from './states/isNavbarOpenedState';
import { MOBILE_VIEWPORT } from './styles/themes';
const StyledLayout = styled.div` const StyledLayout = styled.div`
background: ${(props) => props.theme.noisyBackground}; background: ${({ theme }) => theme.background.noisy};
display: flex; display: flex;
flex-direction: row; flex-direction: row;
height: 100vh; height: 100vh;
+2 -2
View File
@@ -2,8 +2,8 @@ import React from 'react';
import styled from '@emotion/styled'; import styled from '@emotion/styled';
const StyledPanel = styled.div` const StyledPanel = styled.div`
background: ${(props) => props.theme.primaryBackground}; background: ${({ theme }) => theme.background.primary};
border: 1px solid ${(props) => props.theme.primaryBorder}; border: 1px solid ${({ theme }) => theme.border.color.light};
border-radius: 8px; border-radius: 8px;
display: flex; display: flex;
flex-direction: row; flex-direction: row;
@@ -11,16 +11,16 @@ type OwnProps = {
}; };
const MainContainer = styled.div<{ topMargin: number }>` const MainContainer = styled.div<{ topMargin: number }>`
background: ${(props) => props.theme.noisyBackground}; background: ${({ theme }) => theme.background.noisy};
display: flex; display: flex;
flex-direction: row; flex-direction: row;
gap: ${(props) => props.theme.spacing(2)}; gap: ${({ theme }) => theme.spacing(2)};
height: calc(100% - ${(props) => props.topMargin}px); height: calc(100% - ${(props) => props.topMargin}px);
padding-bottom: ${(props) => props.theme.spacing(3)}; padding-bottom: ${({ theme }) => theme.spacing(3)};
padding-right: ${(props) => props.theme.spacing(3)}; padding-right: ${({ theme }) => theme.spacing(3)};
width: calc(100% - ${(props) => props.theme.spacing(3)}); width: calc(100% - ${({ theme }) => theme.spacing(3)});
`; `;
type LeftContainerProps = { type LeftContainerProps = {
@@ -8,7 +8,7 @@ type OwnProps = {
const StyledContainer = styled.div` const StyledContainer = styled.div`
display: flex; display: flex;
padding-top: ${(props) => props.theme.spacing(4)}; padding-top: ${({ theme }) => theme.spacing(4)};
width: 100%; width: 100%;
`; `;
@@ -5,16 +5,16 @@ import {
IconLayoutSidebarLeftCollapse, IconLayoutSidebarLeftCollapse,
IconLayoutSidebarRightCollapse, IconLayoutSidebarRightCollapse,
} from '@/ui/icons'; } from '@/ui/icons';
import { MOBILE_VIEWPORT } from '@/ui/themes/themes';
import { isNavbarOpenedState } from '../states/isNavbarOpenedState'; import { isNavbarOpenedState } from '../states/isNavbarOpenedState';
import { MOBILE_VIEWPORT } from '../styles/themes';
const CollapseButton = styled.button<{ hideOnDesktop: boolean | undefined }>` const CollapseButton = styled.button<{ hideOnDesktop: boolean | undefined }>`
align-items: center; align-items: center;
background: inherit; background: inherit;
border: 0; border: 0;
color: ${(props) => props.theme.text30}; color: ${({ theme }) => theme.font.color.light};
cursor: pointer; cursor: pointer;
display: flex; display: flex;
+20 -20
View File
@@ -2,7 +2,7 @@ import { ReactNode } from 'react';
import { useNavigate } from 'react-router-dom'; import { useNavigate } from 'react-router-dom';
import styled from '@emotion/styled'; import styled from '@emotion/styled';
import { MOBILE_VIEWPORT } from '../styles/themes'; import { MOBILE_VIEWPORT } from '@/ui/themes/themes';
type OwnProps = { type OwnProps = {
label: string; label: string;
@@ -23,44 +23,45 @@ type StyledItemProps = {
const StyledItem = styled.button<StyledItemProps>` const StyledItem = styled.button<StyledItemProps>`
align-items: center; align-items: center;
background: ${(props) => background: ${(props) =>
props.active ? props.theme.lightBackgroundTransparent : 'inherit'}; props.active ? props.theme.background.transparent.light : 'inherit'};
border: none; border: none;
border-radius: 4px; border-radius: 4px;
color: ${(props) => { color: ${(props) => {
if (props.active) { if (props.active) {
return props.theme.text80; return props.theme.font.color.primary;
} }
if (props.danger) { if (props.danger) {
return props.theme.red; return props.theme.color.red;
} }
if (props.soon) { if (props.soon) {
return props.theme.text20; return props.theme.font.color.extraLight;
} }
return props.theme.text60; return props.theme.font.color.secondary;
}}; }};
cursor: ${(props) => (props.soon ? 'default' : 'pointer')}; cursor: ${(props) => (props.soon ? 'default' : 'pointer')};
display: flex; display: flex;
font-family: 'Inter'; font-family: 'Inter';
font-size: ${(props) => props.theme.fontSizeMedium}; font-size: ${({ theme }) => theme.font.size.md};
margin-bottom: calc(${(props) => props.theme.spacing(1)} / 2); margin-bottom: calc(${({ theme }) => theme.spacing(1)} / 2);
padding-bottom: ${(props) => props.theme.spacing(1)}; padding-bottom: ${({ theme }) => theme.spacing(1)};
padding-left: ${(props) => props.theme.spacing(1)}; padding-left: ${({ theme }) => theme.spacing(1)};
padding-top: ${(props) => props.theme.spacing(1)}; padding-top: ${({ theme }) => theme.spacing(1)};
pointer-events: ${(props) => (props.soon ? 'none' : 'auto')}; pointer-events: ${(props) => (props.soon ? 'none' : 'auto')};
:hover { :hover {
background: ${(props) => props.theme.lightBackgroundTransparent}; background: ${({ theme }) => theme.background.transparent.light};
color: ${(props) => (props.danger ? props.theme.red : props.theme.text80)}; color: ${(props) =>
props.danger ? props.theme.color.red : props.theme.font.color.primary};
} }
user-select: none; user-select: none;
@media (max-width: ${MOBILE_VIEWPORT}px) { @media (max-width: ${MOBILE_VIEWPORT}px) {
font-size: ${(props) => props.theme.fontSizeLarge}; font-size: ${({ theme }) => theme.font.size.lg};
} }
`; `;
const StyledItemLabel = styled.div` const StyledItemLabel = styled.div`
display: flex; display: flex;
margin-left: ${(props) => props.theme.spacing(2)}; margin-left: ${({ theme }) => theme.spacing(2)};
`; `;
const StyledSoonPill = styled.div` const StyledSoonPill = styled.div`
@@ -68,11 +69,10 @@ const StyledSoonPill = styled.div`
justify-content: center; justify-content: center;
align-items: center; align-items: center;
border-radius: 50px; border-radius: 50px;
background-color: ${(props) => props.theme.lightBackgroundTransparent}; background-color: ${({ theme }) => theme.background.transparent.light};
font-size: ${(props) => props.theme.fontSizeExtraSmall}; font-size: ${({ theme }) => theme.font.size.xs};
padding: ${(props) => props.theme.spacing(1)} padding: ${({ theme }) => theme.spacing(1)} ${({ theme }) => theme.spacing(2)}
${(props) => props.theme.spacing(2)} ${(props) => props.theme.spacing(1)} ${({ theme }) => theme.spacing(1)} ${({ theme }) => theme.spacing(2)};
${(props) => props.theme.spacing(2)};
margin-left: auto; // this aligns the pill to the right margin-left: auto; // this aligns the pill to the right
`; `;
@@ -5,13 +5,13 @@ type OwnProps = {
}; };
const StyledTitle = styled.div` const StyledTitle = styled.div`
color: ${(props) => props.theme.text30}; color: ${({ theme }) => theme.font.color.light};
display: flex; display: flex;
font-size: ${(props) => props.theme.fontSizeExtraSmall}; font-size: ${({ theme }) => theme.font.size.xs};
font-weight: 600; font-weight: 600;
padding-bottom: ${(props) => props.theme.spacing(2)}; padding-bottom: ${({ theme }) => theme.spacing(2)};
padding-left: ${(props) => props.theme.spacing(1)}; padding-left: ${({ theme }) => theme.spacing(1)};
padding-top: ${(props) => props.theme.spacing(8)}; padding-top: ${({ theme }) => theme.spacing(8)};
text-transform: uppercase; text-transform: uppercase;
`; `;
@@ -13,9 +13,9 @@ const StyledContainer = styled.div`
display: flex; display: flex;
height: 34px; height: 34px;
justify-content: space-between; justify-content: space-between;
margin-left: ${(props) => props.theme.spacing(1)}; margin-left: ${({ theme }) => theme.spacing(1)};
padding: ${(props) => props.theme.spacing(2)}; padding: ${({ theme }) => theme.spacing(2)};
padding-top: ${(props) => props.theme.spacing(1)}; padding-top: ${({ theme }) => theme.spacing(1)};
user-select: none; user-select: none;
width: 100%; width: 100%;
`; `;
@@ -39,11 +39,11 @@ const StyledLogo = styled.div<StyledLogoProps>`
`; `;
const StyledName = styled.div` const StyledName = styled.div`
color: ${(props) => props.theme.text80}; color: ${({ theme }) => theme.font.color.primary};
font-family: 'Inter'; font-family: 'Inter';
font-size: ${(props) => props.theme.fontSizeMedium}; font-size: ${({ theme }) => theme.font.size.md};
font-weight: 500; font-weight: 500;
margin-left: ${(props) => props.theme.spacing(1)}; margin-left: ${({ theme }) => theme.spacing(1)};
`; `;
function NavWorkspaceButton() { function NavWorkspaceButton() {
@@ -1,13 +1,14 @@
import styled from '@emotion/styled'; import styled from '@emotion/styled';
import { useRecoilValue } from 'recoil'; import { useRecoilValue } from 'recoil';
import { MOBILE_VIEWPORT } from '@/ui/themes/themes';
import { isNavbarOpenedState } from '../states/isNavbarOpenedState'; import { isNavbarOpenedState } from '../states/isNavbarOpenedState';
import { MOBILE_VIEWPORT } from '../styles/themes';
const StyledNavbarContainer = styled.div` const StyledNavbarContainer = styled.div`
flex-direction: column; flex-direction: column;
width: ${(props) => (useRecoilValue(isNavbarOpenedState) ? 'auto' : '0')}; width: ${(props) => (useRecoilValue(isNavbarOpenedState) ? 'auto' : '0')};
padding: ${(props) => props.theme.spacing(2)}; padding: ${({ theme }) => theme.spacing(2)};
flex-shrink: 0; flex-shrink: 0;
overflow: hidden; overflow: hidden;
@@ -13,14 +13,14 @@ const IconAndButtonContainer = styled.button`
align-items: center; align-items: center;
background: inherit; background: inherit;
border: none; border: none;
color: ${(props) => props.theme.text60}; color: ${({ theme }) => theme.font.color.secondary};
cursor: pointer; cursor: pointer;
display: flex; display: flex;
flex-direction: row; flex-direction: row;
font-size: ${(props) => props.theme.fontSizeLarge}; font-size: ${({ theme }) => theme.font.size.lg};
font-weight: ${(props) => props.theme.fontWeightSemibold}; font-weight: ${({ theme }) => theme.font.weight.semiBold};
gap: ${(props) => props.theme.spacing(1)}; gap: ${({ theme }) => theme.spacing(1)};
padding: ${(props) => props.theme.spacing(1)}; padding: ${({ theme }) => theme.spacing(1)};
width: 100%; width: 100%;
`; `;
@@ -11,7 +11,7 @@ const StyledContainer = styled.div`
display: flex; display: flex;
flex-direction: column; flex-direction: column;
padding-left: 300px; padding-left: 300px;
padding-top: ${(props) => props.theme.spacing(6)}; padding-top: ${({ theme }) => theme.spacing(6)};
`; `;
const StyledNavItemsContainer = styled.div` const StyledNavItemsContainer = styled.div`
@@ -12,7 +12,7 @@ import { RightDrawerRouter } from './RightDrawerRouter';
const StyledRightDrawer = styled.div` const StyledRightDrawer = styled.div`
display: flex; display: flex;
flex-direction: row; flex-direction: row;
width: ${(props) => props.theme.rightDrawerWidth}; width: ${({ theme }) => theme.rightDrawerWidth};
`; `;
export function RightDrawer() { export function RightDrawer() {
@@ -4,8 +4,8 @@ import { RightDrawerTopBarCloseButton } from './RightDrawerTopBarCloseButton';
const StyledRightDrawerTopBar = styled.div` const StyledRightDrawerTopBar = styled.div`
align-items: center; align-items: center;
border-bottom: 1px solid ${(props) => props.theme.lightBorder}; border-bottom: 1px solid ${({ theme }) => theme.border.color.light};
color: ${(props) => props.theme.text60}; color: ${({ theme }) => theme.font.color.secondary};
display: flex; display: flex;
flex-direction: row; flex-direction: row;
font-size: 13px; font-size: 13px;
@@ -18,7 +18,7 @@ const StyledRightDrawerTopBar = styled.div`
const StyledTopBarTitle = styled.div` const StyledTopBarTitle = styled.div`
align-items: center; align-items: center;
font-weight: 500; font-weight: 500;
margin-right: ${(props) => props.theme.spacing(1)}; margin-right: ${({ theme }) => theme.spacing(1)};
`; `;
export function RightDrawerTopBar({ export function RightDrawerTopBar({
@@ -8,7 +8,7 @@ import { isRightDrawerOpenState } from '../states/isRightDrawerOpenState';
const StyledButton = styled.button` const StyledButton = styled.button`
align-items: center; align-items: center;
background: none; background: none;
border: 1px solid ${(props) => props.theme.lightBorder}; border: 1px solid ${({ theme }) => theme.border.color.light};
border-radius: 4px; border-radius: 4px;
cursor: pointer; cursor: pointer;
display: flex; display: flex;
@@ -16,14 +16,14 @@ const StyledButton = styled.button`
height: 24px; height: 24px;
padding: 3px; padding: 3px;
transition: ${(props) => props.theme.clickableElementBackgroundTransition}; transition: ${({ theme }) => theme.clickableElementBackgroundTransition};
width: 24px; width: 24px;
&:hover { &:hover {
background: ${(props) => props.theme.lightBackgroundTransparent}; background: ${({ theme }) => theme.background.transparent.light};
} }
svg { svg {
color: ${(props) => props.theme.text40}; color: ${({ theme }) => theme.font.color.tertiary};
transform: rotate(45deg); transform: rotate(45deg);
} }
`; `;
@@ -1,6 +1,6 @@
import { atom } from 'recoil'; import { atom } from 'recoil';
import { MOBILE_VIEWPORT } from '../styles/themes'; import { MOBILE_VIEWPORT } from '@/ui/themes/themes';
const isMobile = window.innerWidth <= MOBILE_VIEWPORT; const isMobile = window.innerWidth <= MOBILE_VIEWPORT;
Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

@@ -1,18 +0,0 @@
import DarkNoise from '../assets/dark-noise.jpg';
import LightNoise from '../assets/light-noise.jpg';
export const backgroundColorsLight = {
noisyBackground: `url(${LightNoise.toString()});`,
primaryBackground: '#fff',
secondaryBackground: '#fcfcfc',
tertiaryBackground: '#f5f5f5',
quaternaryBackground: '#ebebeb',
};
export const backgroundColorsDark = {
noisyBackground: `url(${DarkNoise.toString()});`,
primaryBackground: '#141414',
secondaryBackground: '#171717',
tertiaryBackground: '#1B1B1B',
quaternaryBackground: '#1D1D1D',
};
@@ -1,11 +0,0 @@
export const borderColorsLight = {
primaryBorder: 'rgba(0, 0, 0, 0.08)',
lightBorder: 'rgba(245, 245, 245, 1)',
mediumBorder: '#ebebeb',
};
export const borderColorsDark = {
primaryBorder: 'rgba(255, 255, 255, 0.08)',
lightBorder: '#222222',
mediumBorder: '#141414',
};
@@ -1,25 +0,0 @@
import { backgroundColorsDark, backgroundColorsLight } from './background';
import { borderColorsDark, borderColorsLight } from './border';
import { modalColorsDark, modalColorsLight } from './modal';
import { textColorsDark, textColorsLight } from './text';
import { transparentColorsDark, transparentColorsLight } from './transparent';
export const commonColors = {
...backgroundColorsDark,
};
export const lightThemeColors = {
...backgroundColorsLight,
...borderColorsLight,
...modalColorsLight,
...textColorsLight,
...transparentColorsLight,
};
export const darkThemeColors = {
...backgroundColorsDark,
...borderColorsDark,
...modalColorsDark,
...textColorsDark,
...transparentColorsDark,
};
@@ -1,3 +0,0 @@
export const modalColorsLight = {};
export const modalColorsDark = {};
@@ -1 +0,0 @@
export const paletteColors = {};
@@ -1,19 +0,0 @@
export const textColorsLight = {
text100: '#000',
text80: '#333333',
text60: '#666',
text40: '#999999',
text30: '#b3b3b3',
text20: '#cccccc',
text0: '#fff',
};
export const textColorsDark = {
text100: '#ffffff',
text80: '#cccccc',
text60: '#999',
text40: '#666',
text30: '#4c4c4c',
text20: '#333333',
text0: '#000',
};
@@ -1,19 +0,0 @@
export const transparentColorsLight = {
primaryBackgroundTransparent: 'rgba(255, 255, 255, 0.8)',
secondaryBackgroundTransparent: 'rgba(252, 252, 252, 0.8)',
strongBackgroundTransparent: 'rgba(0, 0, 0, 0.16)',
mediumBackgroundTransparent: 'rgba(0, 0, 0, 0.08)',
lightBackgroundTransparent: 'rgba(0, 0, 0, 0.04)',
lighterBackgroundTransparent: 'rgba(0, 0, 0, 0.02)',
modalBackgroundTransparent: 'rgba(23, 23, 23, 0.8)',
};
export const transparentColorsDark = {
primaryBackgroundTransparent: 'rgba(20, 20, 20, 0.8)',
secondaryBackgroundTransparent: 'rgba(23, 23, 23, 0.8)',
strongBackgroundTransparent: 'rgba(255, 255, 255, 0.09)',
mediumBackgroundTransparent: 'rgba(255, 255, 255, 0.06)',
lightBackgroundTransparent: 'rgba(255, 255, 255, 0.03)',
lighterBackgroundTransparent: 'rgba(255, 255, 255, 0.02)',
modalBackgroundTransparent: 'rgba(23, 23, 23, 0.8)',
};
@@ -1,32 +0,0 @@
import { css } from '@emotion/react';
export const overlayBackground = (props: any) =>
css`
backdrop-filter: blur(8px);
background: ${props.theme.secondaryBackgroundTransparent};
box-shadow: ${props.theme.modalBoxShadow};
`;
export const textInputStyle = (props: any) =>
css`
background-color: transparent;
border: none;
color: ${props.theme.text80};
outline: none;
padding: ${props.theme.spacing(0)} ${props.theme.spacing(2)};
&::placeholder,
&::-webkit-input-placeholder {
color: ${props.theme.text30};
font-family: ${props.theme.fontFamily};
font-weight: ${props.theme.fontWeightMedium};
}
`;
export const hoverBackground = (props: any) =>
css`
transition: background 0.1s ease;
&:hover {
background: ${props.theme.lightBackgroundTransparent};
}
`;
@@ -1,21 +0,0 @@
export const commonText = {
fontSizeExtraSmall: '0.85rem',
fontSizeSmall: '0.92rem',
fontSizeMedium: '1rem',
fontSizeLarge: '1.23rem',
fontSizeExtraLarge: '1.54rem',
fontWeightMedium: 500,
fontWeightSemibold: 600,
fontWeightBold: 700,
fontFamily: 'Inter, sans-serif',
lineHeight: 1.5,
iconSizeMedium: 16,
iconSizeSmall: 14,
iconStrikeLight: 1.6,
iconStrikeMedium: 2,
iconStrikeBold: 2.5,
};
@@ -1,67 +0,0 @@
import { commonColors, darkThemeColors, lightThemeColors } from './colors';
import { commonText } from './texts';
export { hoverBackground, overlayBackground, textInputStyle } from './effects';
const commonTheme = {
...commonText,
...commonColors,
spacing: (multiplicator: number) => `${multiplicator * 4}px`,
table: {
horizontalCellMargin: '8px',
checkboxColumnWidth: '32px',
},
clickableElementBackgroundTransition: 'background 0.1s ease',
borderRadius: '4px',
rightDrawerWidth: '300px',
lastLayerZIndex: 2147483647,
};
const lightThemeSpecific = {
...lightThemeColors,
blue: '#1961ed',
pink: '#cc0078',
green: '#1e7e50',
purple: '#1111b7',
yellow: '#cc660a',
red: '#ff2e3f',
blueHighTransparency: 'rgba(25, 97, 237, 0.03)',
blueLowTransparency: 'rgba(25, 97, 237, 0.32)',
boxShadow: '0px 2px 4px 0px #0F0F0F0A',
modalBoxShadow:
'2px 4px 16px 0px rgba(0, 0, 0, 0.12), 0px 2px 4px 0px rgba(0, 0, 0, 0.04)',
lightBoxShadow:
'0px 2px 4px 0px rgba(0, 0, 0, 0.04), 0px 0px 4px 0px rgba(0, 0, 0, 0.08)',
heavyBoxShadow:
'0px 16px 40px 0px rgba(0, 0, 0, 0.24), 0px 0px 12px 0px rgba(0, 0, 0, 0.24)',
};
const darkThemeSpecific: typeof lightThemeSpecific = {
...darkThemeColors,
blue: '#6895ec',
pink: '#ffe5f4',
green: '#e6fff2',
purple: '#e0e0ff',
yellow: '#fff2e7',
red: '#ff2e3f',
blueHighTransparency: 'rgba(104, 149, 236, 0.03)',
blueLowTransparency: 'rgba(104, 149, 236, 0.32)',
boxShadow: '0px 2px 4px 0px #0F0F0F0A', // TODO change color for dark theme
modalBoxShadow: '0px 3px 12px rgba(0, 0, 0, 0.09)', // TODO change color for dark theme
lightBoxShadow:
'0px 2px 4px 0px rgba(0, 0, 0, 0.04), 0px 0px 4px 0px rgba(0, 0, 0, 0.08)',
heavyBoxShadow:
'box-shadow: 0px 16px 40px 0px rgba(0, 0, 0, 0.24), 0px 0px 12px 0px rgba(0, 0, 0, 0.24)',
};
export const lightTheme = { ...commonTheme, ...lightThemeSpecific };
export const darkTheme = { ...commonTheme, ...darkThemeSpecific };
export const MOBILE_VIEWPORT = 768;
export type ThemeType = typeof lightTheme;
@@ -10,13 +10,13 @@ export const TOP_BAR_MIN_HEIGHT = 40;
const TopBarContainer = styled.div` const TopBarContainer = styled.div`
align-items: center; align-items: center;
background: ${(props) => props.theme.noisyBackground}; background: ${({ theme }) => theme.background.noisy};
color: ${(props) => props.theme.text80}; color: ${({ theme }) => theme.font.color.primary};
display: flex; display: flex;
flex-direction: row; flex-direction: row;
font-size: 14px; font-size: 14px;
min-height: ${TOP_BAR_MIN_HEIGHT}px; min-height: ${TOP_BAR_MIN_HEIGHT}px;
padding: ${(props) => props.theme.spacing(2)}; padding: ${({ theme }) => theme.spacing(2)};
`; `;
const TitleContainer = styled.div` const TitleContainer = styled.div`
@@ -29,16 +29,16 @@ const TitleContainer = styled.div`
const AddButtonContainer = styled.div` const AddButtonContainer = styled.div`
align-items: center; align-items: center;
border: 1px solid ${(props) => props.theme.primaryBorder}; border: 1px solid ${({ theme }) => theme.border.color.medium};
border-radius: 4px; border-radius: 4px;
color: ${(props) => props.theme.text40}; color: ${({ theme }) => theme.font.color.tertiary};
cursor: pointer; cursor: pointer;
display: flex; display: flex;
flex-shrink: 0; flex-shrink: 0;
height: 28px; height: 28px;
justify-content: center; justify-content: center;
justify-self: flex-end; justify-self: flex-end;
margin-right: ${(props) => props.theme.spacing(1)}; margin-right: ${({ theme }) => theme.spacing(1)};
user-select: none; user-select: none;
width: 28px; width: 28px;
`; `;
@@ -10,8 +10,8 @@ const TitleAndCollapseContainer = styled.div`
const TitleContainer = styled.div` const TitleContainer = styled.div`
display: flex; display: flex;
font-size: ${(props) => props.theme.fontSizeLarge}; font-size: ${({ theme }) => theme.font.size.lg};
font-weight: ${(props) => props.theme.fontWeightSemibold}; font-weight: ${({ theme }) => theme.font.weight.semiBold};
width: 100%; width: 100%;
`; `;
Binary file not shown.

After

Width:  |  Height:  |  Size: 203 KiB

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

+37
View File
@@ -0,0 +1,37 @@
import DarkNoise from './assets/dark-noise.png';
import LightNoise from './assets/light-noise.jpg';
import { grayScale, rgba } from './colors';
export const backgroundLight = {
noisy: `url(${LightNoise.toString()});`,
primary: grayScale.gray0,
secondary: grayScale.gray10,
tertiary: grayScale.gray15,
quaternary: grayScale.gray20,
transparent: {
primary: rgba(grayScale.gray0, 0.8),
secondary: rgba(grayScale.gray10, 0.8),
strong: rgba(grayScale.gray100, 0.16),
medium: rgba(grayScale.gray100, 0.08),
light: rgba(grayScale.gray100, 0.04),
lighter: rgba(grayScale.gray100, 0.02),
},
overlay: rgba(grayScale.gray80, 0.8),
};
export const backgroundDark = {
noisy: `url(${DarkNoise.toString()});`,
primary: grayScale.gray85,
secondary: grayScale.gray80,
tertiary: grayScale.gray75,
quaternary: grayScale.gray70,
transparent: {
primary: rgba(grayScale.gray85, 0.8),
secondary: rgba(grayScale.gray80, 0.8),
strong: rgba(grayScale.gray0, 0.09),
medium: rgba(grayScale.gray0, 0.06),
light: rgba(grayScale.gray0, 0.03),
lighter: rgba(grayScale.gray0, 0.02),
},
overlay: rgba(grayScale.gray80, 0.8),
};
+4
View File
@@ -0,0 +1,4 @@
export const blur = {
light: 'blur(6px)',
strong: 'blur(20px)',
};
+28
View File
@@ -0,0 +1,28 @@
import { grayScale } from './colors';
const common = {
radius: {
xs: '2px',
sm: '4px',
md: '8px',
rounded: '100%',
},
};
export const borderLight = {
color: {
strong: grayScale.gray25,
medium: grayScale.gray20,
light: grayScale.gray15,
},
...common,
};
export const borderDark = {
color: {
strong: grayScale.gray60,
medium: grayScale.gray65,
light: grayScale.gray70,
},
...common,
};
+23
View File
@@ -0,0 +1,23 @@
import { grayScale, rgba } from './colors';
export const boxShadowLight = {
light: `0px 2px 4px 0px ${rgba(
grayScale.gray100,
0.04,
)}, 0px 0px 4px 0px ${rgba(grayScale.gray100, 0.08)}`,
strong: `2px 4px 16px 0px ${rgba(
grayScale.gray100,
0.12,
)}, 0px 2px 4px 0px ${rgba(grayScale.gray100, 0.04)}`,
};
export const boxShadowDark = {
light: `0px 2px 4px 0px ${rgba(
grayScale.gray100,
0.04,
)}, 0px 0px 4px 0px ${rgba(grayScale.gray100, 0.08)}`,
strong: `2px 4px 16px 0px ${rgba(
grayScale.gray100,
0.16,
)}, 0px 2px 4px 0px ${rgba(grayScale.gray100, 0.08)}`,
};
+121
View File
@@ -0,0 +1,121 @@
import hexRgb from 'hex-rgb';
export const grayScale = {
gray100: '#000000',
gray90: '#0f0f0f',
gray85: '#141414',
gray80: '#171717',
gray75: '#1b1b1b',
gray70: '#1d1d1d',
gray65: '#222222',
gray60: '#292929',
gray55: '#333333',
gray50: '#4c4c4c',
gray45: '#666666',
gray40: '#999999',
gray35: '#b3b3b3',
gray30: '#cccccc',
gray25: '#d6d6d6',
gray20: '#ebebeb',
gray15: '#f5f5f5',
gray10: '#fcfcfc',
gray0: '#ffffff',
};
export const color = {
yellow: '#ffd338',
yellow80: '#2e2a1a',
yellow70: '#453d1e',
yellow60: '#746224',
yellow50: '#b99b2e',
yellow40: '#ffe074',
yellow30: '#ffedaf',
yellow20: '#fff6d7',
yellow10: '#fffbeb',
green: '#55ef3c',
green80: '#1d2d1b',
green70: '#23421e',
green60: '#2a5822',
green50: '#3f7d2e',
green40: '#7edc6a',
green30: '#b9f5a3',
green20: '#e0fbd1',
green10: '#f3fde9',
turquoise: '#15de8f',
turquoise80: '#1b2d26',
turquoise70: '#1f3f2b',
turquoise60: '#244f30',
turquoise50: '#2e6d3d',
turquoise40: '#5cbf7a',
turquoise30: '#9af0b0',
turquoise20: '#c9fbd9',
turquoise10: '#e8fde9',
sskyky: '#00e0ff',
sky80: '#1a2d2e',
sky70: '#1e3f40',
sky60: '#224f50',
sky50: '#2d6d6d',
sky40: '#5ac0c0',
sky30: '#97f0f0',
sky20: '#c5fbfb',
sky10: '#e4fdfd',
blue: '#1961ed',
blue80: '#1a1d2d',
blue70: '#1e203f',
blue60: '#22244f',
blue50: '#2d2e6d',
blue40: '#5a5ac0',
blue30: '#9797f0',
blue20: '#c5c5fb',
blue10: '#e4e4fd',
purple: '#915ffd',
purple80: '#2d1d2d',
purple70: '#3f203f',
purple60: '#502250',
purple50: '#6d2e6d',
purple40: '#bf5ac0',
purple30: '#f097f0',
purple20: '#fbc5fb',
purple10: '#fde4fd',
pink: '#f54bd0',
pink80: '#2d1a2d',
pink70: '#3f1e3f',
pink60: '#50224f',
pink50: '#6d2d6d',
pink40: '#bf5ac0',
pink30: '#f097f0',
pink20: '#fbc5fb',
pink10: '#fde4fd',
red: '#f83e3e',
red80: '#2d1a1a',
red70: '#3f1e1e',
red60: '#502222',
red50: '#6d2d2d',
red40: '#bf5a5a',
red30: '#f09797',
red20: '#fbc5c5',
red10: '#fde4e4',
orange: '#ff7222',
orange80: '#2d1a16',
orange70: '#3f1e19',
orange60: '#50221c',
orange50: '#6d2d2d',
orange40: '#bf5a5a',
orange30: '#f09797',
orange20: '#fbc5c5',
orange10: '#fde4e4',
gray: grayScale.gray30,
gray80: grayScale.gray65,
gray70: grayScale.gray60,
gray60: grayScale.gray50,
gray50: grayScale.gray40,
gray40: grayScale.gray25,
gray30: grayScale.gray20,
gray20: grayScale.gray15,
gray10: grayScale.gray10,
};
export function rgba(hex: string, alpha: number) {
const rgb = hexRgb(hex, { format: 'array' }).slice(0, -1).join(',');
return `rgba(${rgb},${alpha})`;
}
+34
View File
@@ -0,0 +1,34 @@
import { css } from '@emotion/react';
import { ThemeType } from './themes';
export const overlayBackground = (props: { theme: ThemeType }) =>
css`
backdrop-filter: blur(8px);
background: ${props.theme.background.transparent.secondary};
box-shadow: ${props.theme.boxShadow.strong};
`;
export const textInputStyle = (props: any) =>
css`
background-color: transparent;
border: none;
color: ${props.theme.font.color.primary};
outline: none;
padding: ${props.theme.spacing(0)} ${props.theme.spacing(2)};
&::placeholder,
&::-webkit-input-placeholder {
color: ${props.theme.font.color.light};
font-family: ${props.theme.font.family};
font-weight: ${props.theme.font.weight.medium};
}
`;
export const hoverBackground = (props: any) =>
css`
transition: background 0.1s ease;
&:hover {
background: ${props.theme.background.transparent.light};
}
`;
+42
View File
@@ -0,0 +1,42 @@
import { grayScale } from './colors';
const common = {
size: {
xs: '0.85rem',
sm: '0.92rem',
md: '1rem',
lg: '1.23rem',
xl: '1.54rem',
xxl: '1.85rem',
},
weight: {
regular: 400,
medium: 500,
semiBold: 600,
},
family: 'Inter, sans-serif',
};
export const fontLight = {
color: {
primary: grayScale.gray55,
secondary: grayScale.gray45,
tertiary: grayScale.gray40,
light: grayScale.gray35,
extraLight: grayScale.gray30,
inverted: grayScale.gray0,
},
...common,
};
export const fontDark = {
color: {
primary: grayScale.gray30,
secondary: grayScale.gray40,
tertiary: grayScale.gray45,
light: grayScale.gray50,
extraLight: grayScale.gray55,
inverted: grayScale.gray100,
},
...common,
};

Some files were not shown because too many files have changed in this diff Show More