From d6364a9fddf838f9b21a636573285460013a7bfc Mon Sep 17 00:00:00 2001 From: Charles Bochet Date: Mon, 26 Jun 2023 19:13:04 -0700 Subject: [PATCH] Apply new theme (#449) * Apply new theme * Fix storybook * Fixes * Fix regressions --- front/.storybook/preview.ts | 2 +- front/package.json | 1 + front/src/AppNavbar.tsx | 12 +- front/src/__stories__/shared.tsx | 2 +- front/src/index.tsx | 3 +- .../modules/auth/components/ui/FooterNote.tsx | 4 +- .../components/ui/HorizontalSeparator.tsx | 6 +- .../modules/auth/components/ui/InputLabel.tsx | 2 +- .../modules/auth/components/ui/SubTitle.tsx | 2 +- .../src/modules/auth/components/ui/Title.tsx | 4 +- .../components/CommandMenuStyles.tsx | 78 +++++------ .../comments/components/CommentChip.tsx | 12 +- .../comments/components/CommentHeader.tsx | 20 +-- .../comments/components/CommentThread.tsx | 6 +- .../components/CommentThreadCreateMode.tsx | 6 +- .../comments/components/CommentThreadItem.tsx | 8 +- .../CommentThreadRelationPicker.tsx | 24 ++-- .../__stories__/CommentChip.stories.tsx | 2 +- .../companies/components/CompanyChip.tsx | 12 +- .../components/CompanyBoardCard.tsx | 38 +++--- .../modules/people/components/PersonChip.tsx | 10 +- .../pipelines/components/PipelineChip.tsx | 10 +- .../components/SingleEntitySelect.tsx | 2 +- .../settings/components/SettingsNavbar.tsx | 8 +- .../ui/components/board/BoardColumn.tsx | 8 +- .../modules/ui/components/board/NewButton.tsx | 12 +- .../ui/components/buttons/IconButton.tsx | 8 +- .../ui/components/buttons/PrimaryButton.tsx | 15 ++- .../ui/components/buttons/SecondaryButton.tsx | 15 ++- .../editable-cell/EditableCellDisplayMode.tsx | 16 ++- .../editable-cell/EditableCellEditMode.tsx | 6 +- .../editable-cell/HoverableMenuItem.tsx | 4 +- .../editable-cell/types/EditableChip.tsx | 2 +- .../editable-cell/types/EditableDate.tsx | 8 +- .../types/EditableDoubleText.tsx | 6 +- .../editable-cell/types/EditablePhone.tsx | 2 +- .../types/EditableRelationCreateButton.tsx | 10 +- .../editable-cell/types/EditableText.tsx | 2 +- .../modules/ui/components/form/Checkbox.tsx | 8 +- .../modules/ui/components/form/DatePicker.tsx | 56 ++++---- .../components/inputs/AutosizeTextInput.tsx | 6 +- .../ui/components/inputs/DoubleTextInput.tsx | 8 +- .../ui/components/inputs/TextInput.tsx | 12 +- .../ui/components/links/PrimaryLink.tsx | 4 +- .../ui/components/menu/DropdownMenu.tsx | 8 +- .../ui/components/menu/DropdownMenuButton.tsx | 14 +- .../menu/DropdownMenuCheckableItem.tsx | 6 +- .../ui/components/menu/DropdownMenuItem.tsx | 12 +- .../menu/DropdownMenuItemContainer.tsx | 2 +- .../ui/components/menu/DropdownMenuSearch.tsx | 8 +- .../menu/DropdownMenuSelectableItem.tsx | 8 +- .../components/menu/DropdownMenuSeparator.tsx | 2 +- .../src/modules/ui/components/modal/Modal.tsx | 2 +- .../section-titles/MainSectionTitle.tsx | 6 +- .../section-titles/SubSectionTitle.tsx | 6 +- .../ui/components/table/ColumnHead.tsx | 6 +- .../ui/components/table/EntityTable.tsx | 16 +-- .../table/action-bar/EntityTableActionBar.tsx | 10 +- .../action-bar/EntityTableActionBarButton.tsx | 10 +- .../table/table-header/DropdownButton.tsx | 55 ++++---- .../table/table-header/SortAndFilterBar.tsx | 18 +-- .../table/table-header/SortOrFilterChip.tsx | 22 ++-- .../table/table-header/TableHeader.tsx | 10 +- front/src/modules/ui/layout/DefaultLayout.tsx | 5 +- front/src/modules/ui/layout/Panel.tsx | 4 +- .../ui/layout/containers/ContentContainer.tsx | 10 +- .../layout/containers/NoTopBarContainer.tsx | 2 +- .../ui/layout/navbar/NavCollapseButton.tsx | 4 +- .../src/modules/ui/layout/navbar/NavItem.tsx | 40 +++--- .../src/modules/ui/layout/navbar/NavTitle.tsx | 10 +- .../ui/layout/navbar/NavWorkspaceButton.tsx | 12 +- .../ui/layout/navbar/NavbarContainer.tsx | 5 +- .../navbar/sub-navbar/NavBackButton.tsx | 10 +- .../navbar/sub-navbar/SubNavBarContainer.tsx | 2 +- .../right-drawer/components/RightDrawer.tsx | 2 +- .../components/RightDrawerTopBar.tsx | 6 +- .../RightDrawerTopBarCloseButton.tsx | 8 +- .../ui/layout/states/isNavbarOpenedState.ts | 2 +- .../ui/layout/styles/assets/dark-noise.jpg | Bin 18269 -> 0 bytes .../ui/layout/styles/colors/background.ts | 18 --- .../modules/ui/layout/styles/colors/border.ts | 11 -- .../modules/ui/layout/styles/colors/index.ts | 25 ---- .../modules/ui/layout/styles/colors/modal.ts | 3 - .../ui/layout/styles/colors/palette.ts | 1 - .../modules/ui/layout/styles/colors/text.ts | 19 --- .../ui/layout/styles/colors/transparent.ts | 19 --- front/src/modules/ui/layout/styles/effects.ts | 32 ----- front/src/modules/ui/layout/styles/texts.ts | 21 --- front/src/modules/ui/layout/styles/themes.ts | 67 ---------- .../src/modules/ui/layout/top-bar/TopBar.tsx | 12 +- .../modules/ui/layout/top-bar/TopTitle.tsx | 4 +- .../modules/ui/themes/assets/dark-noise.png | Bin 0 -> 208324 bytes .../styles => themes}/assets/light-noise.jpg | Bin front/src/modules/ui/themes/background.ts | 37 ++++++ front/src/modules/ui/themes/blur.ts | 4 + front/src/modules/ui/themes/border.ts | 28 ++++ front/src/modules/ui/themes/boxShadow.ts | 23 ++++ front/src/modules/ui/themes/colors.ts | 121 ++++++++++++++++++ front/src/modules/ui/themes/effects.ts | 34 +++++ front/src/modules/ui/themes/font.ts | 42 ++++++ front/src/modules/ui/themes/icon.ts | 12 ++ front/src/modules/ui/themes/text.ts | 13 ++ front/src/modules/ui/themes/themes.ts | 47 +++++++ front/src/modules/users/components/Avatar.tsx | 8 +- front/src/pages/auth/Index.tsx | 2 +- front/src/pages/auth/PasswordLogin.tsx | 2 +- front/src/pages/companies/Companies.tsx | 2 +- .../src/pages/companies/companies-filters.tsx | 44 +------ .../src/pages/opportunities/Opportunities.tsx | 2 +- front/src/pages/people/People.tsx | 4 +- front/src/pages/people/people-filters.tsx | 44 +------ front/src/pages/settings/SettingsProfile.tsx | 2 +- .../src/providers/theme/AppThemeProvider.tsx | 2 +- .../src/testing/ComponentStorybookLayout.tsx | 4 +- front/yarn.lock | 5 + 115 files changed, 818 insertions(+), 721 deletions(-) delete mode 100644 front/src/modules/ui/layout/styles/assets/dark-noise.jpg delete mode 100644 front/src/modules/ui/layout/styles/colors/background.ts delete mode 100644 front/src/modules/ui/layout/styles/colors/border.ts delete mode 100644 front/src/modules/ui/layout/styles/colors/index.ts delete mode 100644 front/src/modules/ui/layout/styles/colors/modal.ts delete mode 100644 front/src/modules/ui/layout/styles/colors/palette.ts delete mode 100644 front/src/modules/ui/layout/styles/colors/text.ts delete mode 100644 front/src/modules/ui/layout/styles/colors/transparent.ts delete mode 100644 front/src/modules/ui/layout/styles/effects.ts delete mode 100644 front/src/modules/ui/layout/styles/texts.ts delete mode 100644 front/src/modules/ui/layout/styles/themes.ts create mode 100644 front/src/modules/ui/themes/assets/dark-noise.png rename front/src/modules/ui/{layout/styles => themes}/assets/light-noise.jpg (100%) create mode 100644 front/src/modules/ui/themes/background.ts create mode 100644 front/src/modules/ui/themes/blur.ts create mode 100644 front/src/modules/ui/themes/border.ts create mode 100644 front/src/modules/ui/themes/boxShadow.ts create mode 100644 front/src/modules/ui/themes/colors.ts create mode 100644 front/src/modules/ui/themes/effects.ts create mode 100644 front/src/modules/ui/themes/font.ts create mode 100644 front/src/modules/ui/themes/icon.ts create mode 100644 front/src/modules/ui/themes/text.ts create mode 100644 front/src/modules/ui/themes/themes.ts diff --git a/front/.storybook/preview.ts b/front/.storybook/preview.ts index 80b20ded8..0a39fad8a 100644 --- a/front/.storybook/preview.ts +++ b/front/.storybook/preview.ts @@ -2,7 +2,7 @@ import { initialize, mswDecorator } from 'msw-storybook-addon'; import { Preview } from '@storybook/react'; import { ThemeProvider } from '@emotion/react'; 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(); diff --git a/front/package.json b/front/package.json index 818067298..a7c7e5359 100644 --- a/front/package.json +++ b/front/package.json @@ -19,6 +19,7 @@ "cmdk": "^0.2.0", "date-fns": "^2.30.0", "graphql": "^16.6.0", + "hex-rgb": "^5.0.0", "js-cookie": "^3.0.5", "jwt-decode": "^3.1.2", "libphonenumber-js": "^1.10.26", diff --git a/front/src/AppNavbar.tsx b/front/src/AppNavbar.tsx index 206ce3a2b..eae338d8c 100644 --- a/front/src/AppNavbar.tsx +++ b/front/src/AppNavbar.tsx @@ -31,37 +31,37 @@ export function AppNavbar() { } + icon={} soon={true} /> } + icon={} soon={true} /> } + icon={} /> } + icon={} active={currentPath === '/people'} /> } + icon={} active={currentPath === '/companies'} /> } + icon={} active={currentPath === '/opportunities'} /> diff --git a/front/src/__stories__/shared.tsx b/front/src/__stories__/shared.tsx index 679667744..9b3093ec9 100644 --- a/front/src/__stories__/shared.tsx +++ b/front/src/__stories__/shared.tsx @@ -5,7 +5,7 @@ import { RecoilRoot, useRecoilState } from 'recoil'; import { currentUserState } from '@/auth/states/currentUserState'; import { isAuthenticatingState } from '@/auth/states/isAuthenticatingState'; -import { darkTheme } from '@/ui/layout/styles/themes'; +import { darkTheme } from '@/ui/themes/themes'; import { App } from '~/App'; import { FullHeightStorybookLayout } from '~/testing/FullHeightStorybookLayout'; import { mockedUsersData } from '~/testing/mock-data/users'; diff --git a/front/src/index.tsx b/front/src/index.tsx index 7f180162f..70090c80f 100644 --- a/front/src/index.tsx +++ b/front/src/index.tsx @@ -2,9 +2,10 @@ import React from 'react'; import ReactDOM from 'react-dom/client'; import { RecoilRoot } from 'recoil'; +import { ThemeType } from '@/ui/themes/themes'; + import '@emotion/react'; -import { ThemeType } from './modules/ui/layout/styles/themes'; import { AppWrapper } from './AppWrapper'; import './index.css'; diff --git a/front/src/modules/auth/components/ui/FooterNote.tsx b/front/src/modules/auth/components/ui/FooterNote.tsx index d95015b96..026ed6695 100644 --- a/front/src/modules/auth/components/ui/FooterNote.tsx +++ b/front/src/modules/auth/components/ui/FooterNote.tsx @@ -7,9 +7,9 @@ type OwnProps = { const StyledContainer = styled.div` align-items: center; - color: ${({ theme }) => theme.text40}; + color: ${({ theme }) => theme.font.color.tertiary}; display: flex; - font-size: ${({ theme }) => theme.fontSizeSmall}px; + font-size: ${({ theme }) => theme.font.size.sm}px; padding-left: ${({ theme }) => theme.spacing(14)}; padding-right: ${({ theme }) => theme.spacing(14)}; text-align: center; diff --git a/front/src/modules/auth/components/ui/HorizontalSeparator.tsx b/front/src/modules/auth/components/ui/HorizontalSeparator.tsx index 1e0463029..d86c656fb 100644 --- a/front/src/modules/auth/components/ui/HorizontalSeparator.tsx +++ b/front/src/modules/auth/components/ui/HorizontalSeparator.tsx @@ -1,10 +1,10 @@ import styled from '@emotion/styled'; const Separator = styled.div` - background-color: ${(props) => props.theme.mediumBorder}; + background-color: ${({ theme }) => theme.border.color.medium}; height: 1px; - margin-bottom: ${(props) => props.theme.spacing(3)}; - margin-top: ${(props) => props.theme.spacing(3)}; + margin-bottom: ${({ theme }) => theme.spacing(3)}; + margin-top: ${({ theme }) => theme.spacing(3)}; width: 100%; `; diff --git a/front/src/modules/auth/components/ui/InputLabel.tsx b/front/src/modules/auth/components/ui/InputLabel.tsx index b03f0a921..39d8a0b70 100644 --- a/front/src/modules/auth/components/ui/InputLabel.tsx +++ b/front/src/modules/auth/components/ui/InputLabel.tsx @@ -6,7 +6,7 @@ type OwnProps = { }; const StyledContainer = styled.div` - font-weight: ${({ theme }) => theme.fontWeightMedium}; + font-weight: ${({ theme }) => theme.font.weight.medium}; margin-bottom: ${({ theme }) => theme.spacing(4)}; margin-top: ${({ theme }) => theme.spacing(4)}; `; diff --git a/front/src/modules/auth/components/ui/SubTitle.tsx b/front/src/modules/auth/components/ui/SubTitle.tsx index 4d52a2baf..013a40b54 100644 --- a/front/src/modules/auth/components/ui/SubTitle.tsx +++ b/front/src/modules/auth/components/ui/SubTitle.tsx @@ -6,7 +6,7 @@ type OwnProps = { }; const StyledSubTitle = styled.div` - color: ${({ theme }) => theme.text60}; + color: ${({ theme }) => theme.font.color.secondary}; margin-top: ${({ theme }) => theme.spacing(2)}; `; diff --git a/front/src/modules/auth/components/ui/Title.tsx b/front/src/modules/auth/components/ui/Title.tsx index 097af7b18..b32861632 100644 --- a/front/src/modules/auth/components/ui/Title.tsx +++ b/front/src/modules/auth/components/ui/Title.tsx @@ -6,8 +6,8 @@ type OwnProps = { }; const StyledTitle = styled.div` - font-size: ${({ theme }) => theme.fontSizeExtraLarge}; - font-weight: ${({ theme }) => theme.fontWeightSemibold}; + font-size: ${({ theme }) => theme.font.size.xl}; + font-weight: ${({ theme }) => theme.font.weight.semiBold}; margin-top: ${({ theme }) => theme.spacing(10)}; `; diff --git a/front/src/modules/command-menu/components/CommandMenuStyles.tsx b/front/src/modules/command-menu/components/CommandMenuStyles.tsx index 88909f42c..35a525536 100644 --- a/front/src/modules/command-menu/components/CommandMenuStyles.tsx +++ b/front/src/modules/command-menu/components/CommandMenuStyles.tsx @@ -2,10 +2,10 @@ import styled from '@emotion/styled'; import { Command } from 'cmdk'; export const StyledDialog = styled(Command.Dialog)` - background: ${(props) => props.theme.primaryBackground}; - border-radius: ${(props) => props.theme.borderRadius}; - box-shadow: ${(props) => props.theme.heavyBoxShadow}; - font-family: ${(props) => props.theme.fontFamily}; + background: ${({ theme }) => theme.background.primary}; + border-radius: ${({ theme }) => theme.border.radius.md}; + box-shadow: ${({ theme }) => theme.boxShadow.strong}; + font-family: ${({ theme }) => theme.font.family}; left: 50%; max-width: 640px; overflow: hidden; @@ -17,51 +17,51 @@ export const StyledDialog = styled(Command.Dialog)` `; export const StyledInput = styled(Command.Input)` - background: ${(props) => props.theme.primaryBackground}; + background: ${({ theme }) => theme.background.primary}; border: none; - border-bottom: 1px solid ${(props) => props.theme.primaryBorder}; + border-bottom: 1px solid ${({ theme }) => theme.border.color.light}; border-radius: 0; - color: ${(props) => props.theme.text100}; - font-size: ${(props) => props.theme.fontSizeLarge}; + color: ${({ theme }) => theme.font.color.primary}; + font-size: ${({ theme }) => theme.font.size.lg}; margin: 0; outline: none; - padding: ${(props) => props.theme.spacing(5)}; + padding: ${({ theme }) => theme.spacing(5)}; width: 100%; `; export const StyledMenuItem = styled(Command.Item)` align-items: center; - color: ${(props) => props.theme.text80}; + color: ${({ theme }) => theme.font.color.primary}; cursor: pointer; display: flex; - font-size: ${(props) => props.theme.fontSizeMedium}; - gap: ${(props) => props.theme.spacing(3)}; + font-size: ${({ theme }) => theme.font.size.md}; + gap: ${({ theme }) => theme.spacing(3)}; height: 40px; justify-content: space-between; - padding: 0 ${(props) => props.theme.spacing(4)}; + padding: 0 ${({ theme }) => theme.spacing(4)}; position: relative; transition: all 150ms ease; transition-property: none; user-select: none; &:hover { - background: ${(props) => props.theme.lightBackgroundTransparent}; + background: ${({ theme }) => theme.background.transparent.light}; } &[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 But it needs to be consistend with other picker dropdown (e.g. company) &:after { - background: ${(props) => props.theme.quaternaryBackground}; + background: ${({ theme }) => theme.background.quaternary}; content: ''; height: 100%; left: 0; position: absolute; width: 3px; - z-index: ${(props) => props.theme.lastLayerZIndex}; + z-index: ${({ theme }) => theme.lastLayerZIndex}; } */ } &[data-disabled='true'] { - color: ${(props) => props.theme.text30}; + color: ${({ theme }) => theme.font.color.light}; cursor: not-allowed; } svg { @@ -71,7 +71,7 @@ export const StyledMenuItem = styled(Command.Item)` `; export const StyledList = styled(Command.List)` - background: ${(props) => props.theme.secondaryBackground}; + background: ${({ theme }) => theme.background.secondary}; height: min(300px, var(--cmdk-list-height)); max-height: 400px; overflow: auto; @@ -83,14 +83,14 @@ export const StyledList = styled(Command.List)` export const StyledGroup = styled(Command.Group)` [cmdk-group-heading] { align-items: center; - color: ${(props) => props.theme.text30}; + color: ${({ theme }) => theme.font.color.light}; display: flex; - font-size: ${(props) => props.theme.fontSizeExtraSmall}; - font-weight: ${(props) => props.theme.fontWeightBold}; - padding-bottom: ${(props) => props.theme.spacing(2)}; - padding-left: ${(props) => props.theme.spacing(4)}; - padding-right: ${(props) => props.theme.spacing(4)}; - padding-top: ${(props) => props.theme.spacing(2)}; + font-size: ${({ theme }) => theme.font.size.xs}; + font-weight: ${({ theme }) => theme.font.weight.semiBold}; + padding-bottom: ${({ theme }) => theme.spacing(2)}; + padding-left: ${({ theme }) => theme.spacing(4)}; + padding-right: ${({ theme }) => theme.spacing(4)}; + padding-top: ${({ theme }) => theme.spacing(2)}; text-transform: uppercase; user-select: none; } @@ -98,9 +98,9 @@ export const StyledGroup = styled(Command.Group)` export const StyledEmpty = styled(Command.Empty)` align-items: center; - color: ${(props) => props.theme.text30}; + color: ${({ theme }) => theme.font.color.light}; display: flex; - font-size: ${(props) => props.theme.fontSizeMedium}; + font-size: ${({ theme }) => theme.font.size.md}; height: 64px; justify-content: center; white-space: pre-wrap; @@ -111,28 +111,28 @@ export const StyledSeparator = styled(Command.Separator)``; export const StyledIconAndLabelContainer = styled.div` align-items: center; display: flex; - gap: ${(props) => props.theme.spacing(2)}; + gap: ${({ theme }) => theme.spacing(2)}; `; export const StyledIconContainer = styled.div` align-items: center; - background: ${(props) => props.theme.lightBackgroundTransparent}; + background: ${({ theme }) => theme.background.transparent.light}; border-radius: 4px; - color: ${(props) => props.theme.text60}; + color: ${({ theme }) => theme.font.color.secondary}; display: flex; - padding: ${(props) => props.theme.spacing(1)}; + padding: ${({ theme }) => theme.spacing(1)}; `; export const StyledShortCut = styled.div` - background-color: ${(props) => props.theme.lightBackgroundTransparent}; + background-color: ${({ theme }) => theme.background.transparent.light}; border-radius: 4px; - color: ${(props) => props.theme.text30}; - margin-left: ${(props) => props.theme.spacing(1)}; - margin-right: ${(props) => props.theme.spacing(1)}; - padding: ${(props) => props.theme.spacing(1)}; + color: ${({ theme }) => theme.font.color.light}; + margin-left: ${({ theme }) => theme.spacing(1)}; + margin-right: ${({ theme }) => theme.spacing(1)}; + padding: ${({ theme }) => theme.spacing(1)}; `; export const StyledShortcutsContainer = styled.div` align-items: center; - color: ${(props) => props.theme.text30}; + color: ${({ theme }) => theme.font.color.light}; display: flex; - font-size: ${(props) => props.theme.fontSizeSmall}; + font-size: ${({ theme }) => theme.font.size.sm}; `; diff --git a/front/src/modules/comments/components/CommentChip.tsx b/front/src/modules/comments/components/CommentChip.tsx index 3b5dd6029..d40e01c34 100644 --- a/front/src/modules/comments/components/CommentChip.tsx +++ b/front/src/modules/comments/components/CommentChip.tsx @@ -12,10 +12,10 @@ const StyledChip = styled.div` align-items: center; backdrop-filter: blur(6px); - background: ${(props) => props.theme.primaryBackgroundTransparent}; - border-radius: ${(props) => props.theme.borderRadius}; + background: ${({ theme }) => theme.background.transparent.primary}; + border-radius: ${({ theme }) => theme.border.radius.md}; - color: ${(props) => props.theme.text30}; + color: ${({ theme }) => theme.font.color.light}; cursor: pointer; display: flex; flex-direction: row; @@ -31,8 +31,8 @@ const StyledChip = styled.div` padding-right: 4px; &:hover { - background: ${(props) => props.theme.tertiaryBackground}; - color: ${(props) => props.theme.text40}; + background: ${({ theme }) => theme.background.tertiary}; + color: ${({ theme }) => theme.font.color.tertiary}; } user-select: none; @@ -56,7 +56,7 @@ export function CommentChip({ count, onClick }: CommentChipProps) { return ( {formattedCount} - + ); } diff --git a/front/src/modules/comments/components/CommentHeader.tsx b/front/src/modules/comments/components/CommentHeader.tsx index c2690390a..bdbfba74b 100644 --- a/front/src/modules/comments/components/CommentHeader.tsx +++ b/front/src/modules/comments/components/CommentHeader.tsx @@ -20,15 +20,15 @@ const StyledContainer = styled.div` flex-direction: row; - gap: ${(props) => props.theme.spacing(1)}; + gap: ${({ theme }) => theme.spacing(1)}; justify-content: flex-start; - padding: ${(props) => props.theme.spacing(1)}; + padding: ${({ theme }) => theme.spacing(1)}; `; const StyledName = styled.div` - color: ${(props) => props.theme.text80}; + color: ${({ theme }) => theme.font.color.primary}; font-size: 13px; font-weight: 400; max-width: 160px; @@ -38,25 +38,25 @@ const StyledName = styled.div` `; const StyledDate = styled.div` - color: ${(props) => props.theme.text30}; + color: ${({ theme }) => theme.font.color.light}; font-size: 12px; font-weight: 400; - margin-left: ${(props) => props.theme.spacing(1)}; + margin-left: ${({ theme }) => theme.spacing(1)}; padding-top: 1.5px; `; const StyledTooltip = styled(Tooltip)` - background-color: ${(props) => props.theme.primaryBackground}; + background-color: ${({ theme }) => theme.background.primary}; box-shadow: 0px 2px 4px 3px - ${(props) => props.theme.lightBackgroundTransparent}; + ${({ theme }) => theme.background.transparent.light}; 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; padding: 8px; @@ -81,7 +81,7 @@ export function CommentHeader({ comment }: OwnProps) { {authorName} diff --git a/front/src/modules/comments/components/CommentThread.tsx b/front/src/modules/comments/components/CommentThread.tsx index 328391e9e..1a0de664b 100644 --- a/front/src/modules/comments/components/CommentThread.tsx +++ b/front/src/modules/comments/components/CommentThread.tsx @@ -28,10 +28,10 @@ const StyledContainer = styled.div` flex-direction: column; - gap: ${(props) => props.theme.spacing(4)}; + gap: ${({ theme }) => theme.spacing(4)}; justify-content: flex-start; - padding: ${(props) => props.theme.spacing(2)}; + padding: ${({ theme }) => theme.spacing(2)}; `; const StyledThreadItemListContainer = styled.div` @@ -39,7 +39,7 @@ const StyledThreadItemListContainer = styled.div` display: flex; flex-direction: column-reverse; - gap: ${(props) => props.theme.spacing(4)}; + gap: ${({ theme }) => theme.spacing(4)}; justify-content: flex-start; diff --git a/front/src/modules/comments/components/CommentThreadCreateMode.tsx b/front/src/modules/comments/components/CommentThreadCreateMode.tsx index f5d82665c..98ba4c611 100644 --- a/front/src/modules/comments/components/CommentThreadCreateMode.tsx +++ b/front/src/modules/comments/components/CommentThreadCreateMode.tsx @@ -27,12 +27,12 @@ const StyledContainer = styled.div` align-items: flex-start; display: flex; flex-direction: column; - gap: ${(props) => props.theme.spacing(4)}; + gap: ${({ theme }) => theme.spacing(4)}; justify-content: flex-start; max-height: calc(100% - 16px); - padding: ${(props) => props.theme.spacing(2)}; + padding: ${({ theme }) => theme.spacing(2)}; `; const StyledThreadItemListContainer = styled.div` @@ -40,7 +40,7 @@ const StyledThreadItemListContainer = styled.div` display: flex; flex-direction: column-reverse; - gap: ${(props) => props.theme.spacing(4)}; + gap: ${({ theme }) => theme.spacing(4)}; justify-content: flex-start; overflow: auto; diff --git a/front/src/modules/comments/components/CommentThreadItem.tsx b/front/src/modules/comments/components/CommentThreadItem.tsx index 67f423e8a..f4c40d27f 100644 --- a/front/src/modules/comments/components/CommentThreadItem.tsx +++ b/front/src/modules/comments/components/CommentThreadItem.tsx @@ -12,15 +12,15 @@ const StyledContainer = styled.div` align-items: flex-start; display: flex; flex-direction: column; - gap: ${(props) => props.theme.spacing(1)}; + gap: ${({ theme }) => theme.spacing(1)}; justify-content: flex-start; `; const StyledCommentBody = styled.div` - color: ${(props) => props.theme.text60}; - font-size: ${(props) => props.theme.fontSizeMedium}; + color: ${({ theme }) => theme.font.color.secondary}; + font-size: ${({ theme }) => theme.font.size.md}; - line-height: ${(props) => props.theme.lineHeight}; + line-height: ${({ theme }) => theme.text.lineHeight}; overflow-wrap: anywhere; padding-left: 24px; diff --git a/front/src/modules/comments/components/CommentThreadRelationPicker.tsx b/front/src/modules/comments/components/CommentThreadRelationPicker.tsx index 71bafc81f..475d4903a 100644 --- a/front/src/modules/comments/components/CommentThreadRelationPicker.tsx +++ b/front/src/modules/comments/components/CommentThreadRelationPicker.tsx @@ -36,7 +36,7 @@ const StyledContainer = styled.div` align-items: flex-start; display: flex; flex-direction: row; - gap: ${(props) => props.theme.spacing(2)}; + gap: ${({ theme }) => theme.spacing(2)}; justify-content: flex-start; width: 100%; @@ -47,14 +47,14 @@ const StyledLabelContainer = styled.div` display: flex; flex-direction: row; - gap: ${(props) => props.theme.spacing(2)}; + gap: ${({ theme }) => theme.spacing(2)}; - padding-bottom: ${(props) => props.theme.spacing(2)}; - padding-top: ${(props) => props.theme.spacing(2)}; + padding-bottom: ${({ theme }) => theme.spacing(2)}; + padding-top: ${({ theme }) => theme.spacing(2)}; `; const StyledRelationLabel = styled.div` - color: ${(props) => props.theme.text60}; + color: ${({ theme }) => theme.font.color.secondary}; display: flex; flex-direction: row; @@ -62,8 +62,8 @@ const StyledRelationLabel = styled.div` `; const StyledRelationContainer = styled.div` - --horizontal-padding: ${(props) => props.theme.spacing(1)}; - --vertical-padding: ${(props) => props.theme.spacing(1.5)}; + --horizontal-padding: ${({ theme }) => theme.spacing(1)}; + --vertical-padding: ${({ theme }) => theme.spacing(1.5)}; border: 1px solid transparent; @@ -72,11 +72,11 @@ const StyledRelationContainer = styled.div` display: flex; flex-wrap: wrap; - gap: ${(props) => props.theme.spacing(2)}; + gap: ${({ theme }) => theme.spacing(2)}; &:hover { - background-color: ${(props) => props.theme.secondaryBackground}; - border: 1px solid ${(props) => props.theme.lightBorder}; + background-color: ${({ theme }) => theme.background.secondary}; + border: 1px solid ${({ theme }) => theme.border.color.light}; } min-height: calc(32px - 2 * var(--vertical-padding)); @@ -88,7 +88,7 @@ const StyledRelationContainer = styled.div` `; const StyledMenuWrapper = styled.div` - z-index: ${(props) => props.theme.lastLayerZIndex}; + z-index: ${({ theme }) => theme.lastLayerZIndex}; `; export function CommentThreadRelationPicker({ commentThread }: OwnProps) { @@ -205,7 +205,7 @@ export function CommentThreadRelationPicker({ commentThread }: OwnProps) { return ( - + Relations ; const TestCellContainer = styled.div` align-items: center; - background: ${(props) => props.theme.primaryBackground}; + background: ${({ theme }) => theme.background.primary}; display: flex; height: fit-content; diff --git a/front/src/modules/companies/components/CompanyChip.tsx b/front/src/modules/companies/components/CompanyChip.tsx index fc8ff3a6a..6bcf45f69 100644 --- a/front/src/modules/companies/components/CompanyChip.tsx +++ b/front/src/modules/companies/components/CompanyChip.tsx @@ -9,14 +9,14 @@ export type CompanyChipPropsType = { const StyledContainer = styled.span` align-items: center; - background-color: ${(props) => props.theme.tertiaryBackground}; - border-radius: ${(props) => props.theme.spacing(1)}; - color: ${(props) => props.theme.text80}; + background-color: ${({ theme }) => theme.background.tertiary}; + border-radius: ${({ theme }) => theme.spacing(1)}; + color: ${({ theme }) => theme.font.color.primary}; display: inline-flex; - gap: ${(props) => props.theme.spacing(1)}; - height: calc(20px - 2 * ${(props) => props.theme.spacing(1)}); + gap: ${({ theme }) => 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; diff --git a/front/src/modules/opportunities/components/CompanyBoardCard.tsx b/front/src/modules/opportunities/components/CompanyBoardCard.tsx index 0ce27c162..ac779a4a5 100644 --- a/front/src/modules/opportunities/components/CompanyBoardCard.tsx +++ b/front/src/modules/opportunities/components/CompanyBoardCard.tsx @@ -7,46 +7,46 @@ import { IconCalendarEvent, IconUser, IconUsers } from '../../ui/icons'; import { getLogoUrlFromDomainName, humanReadableDate } from '../../utils/utils'; const StyledBoardCard = styled.div` - background: ${({ theme }) => theme.secondaryBackground}; - border: 1px solid ${({ theme }) => theme.mediumBorder}; + background: ${({ theme }) => theme.background.secondary}; + border: 1px solid ${({ theme }) => theme.border.color.medium}; border-radius: 4px; - box-shadow: ${({ theme }) => theme.lightBoxShadow}; - color: ${({ theme }) => theme.text80}; + box-shadow: ${({ theme }) => theme.boxShadow.light}; + color: ${({ theme }) => theme.font.color.primary}; cursor: pointer; `; const StyledBoardCardWrapper = styled.div` - padding-bottom: ${(props) => props.theme.spacing(2)}; + padding-bottom: ${({ theme }) => theme.spacing(2)}; `; const StyledBoardCardHeader = styled.div` align-items: center; display: flex; flex-direction: row; - font-weight: ${(props) => props.theme.fontWeightBold}; + font-weight: ${({ theme }) => theme.font.weight.semiBold}; height: 24px; - padding-left: ${(props) => props.theme.spacing(2)}; - padding-right: ${(props) => props.theme.spacing(2)}; - padding-top: ${(props) => props.theme.spacing(2)}; + padding-left: ${({ theme }) => theme.spacing(2)}; + padding-right: ${({ theme }) => theme.spacing(2)}; + padding-top: ${({ theme }) => theme.spacing(2)}; img { - height: ${(props) => props.theme.iconSizeMedium}px; - margin-right: ${(props) => props.theme.spacing(2)}; + height: ${({ theme }) => theme.icon.size.md}px; + margin-right: ${({ theme }) => theme.spacing(2)}; object-fit: cover; - width: ${(props) => props.theme.iconSizeMedium}px; + width: ${({ theme }) => theme.icon.size.md}px; } `; const StyledBoardCardBody = styled.div` display: flex; flex-direction: column; - gap: ${(props) => props.theme.spacing(2)}; - padding: ${(props) => props.theme.spacing(2)}; + gap: ${({ theme }) => theme.spacing(2)}; + padding: ${({ theme }) => theme.spacing(2)}; span { align-items: center; display: flex; flex-direction: row; svg { - color: ${(props) => props.theme.text40}; - margin-right: ${(props) => props.theme.spacing(2)}; + color: ${({ theme }) => theme.font.color.tertiary}; + margin-right: ${({ theme }) => theme.spacing(2)}; } } `; @@ -70,14 +70,14 @@ export function CompanyBoardCard({ company }: { company: CompanyProp }) { - + - {company.employees} + {company.employees} - + {humanReadableDate(new Date(company.createdAt as string))} diff --git a/front/src/modules/people/components/PersonChip.tsx b/front/src/modules/people/components/PersonChip.tsx index 558e9d331..f4fb80f21 100644 --- a/front/src/modules/people/components/PersonChip.tsx +++ b/front/src/modules/people/components/PersonChip.tsx @@ -10,15 +10,15 @@ export type PersonChipPropsType = { const StyledContainer = styled.span` align-items: center; - background-color: ${(props) => props.theme.tertiaryBackground}; - border-radius: ${(props) => props.theme.spacing(1)}; - color: ${(props) => props.theme.text80}; + background-color: ${({ theme }) => theme.background.tertiary}; + border-radius: ${({ theme }) => theme.spacing(1)}; + color: ${({ theme }) => theme.font.color.primary}; display: inline-flex; - gap: ${(props) => props.theme.spacing(1)}; + gap: ${({ theme }) => theme.spacing(1)}; height: 12px; overflow: hidden; - padding: ${(props) => props.theme.spacing(1)}; + padding: ${({ theme }) => theme.spacing(1)}; :hover { filter: brightness(95%); diff --git a/front/src/modules/pipelines/components/PipelineChip.tsx b/front/src/modules/pipelines/components/PipelineChip.tsx index 47bfdd777..630f46e42 100644 --- a/front/src/modules/pipelines/components/PipelineChip.tsx +++ b/front/src/modules/pipelines/components/PipelineChip.tsx @@ -9,12 +9,12 @@ type OwnProps = { const StyledContainer = styled.span` align-items: center; - background-color: ${(props) => props.theme.tertiaryBackground}; - border-radius: ${(props) => props.theme.spacing(1)}; - color: ${(props) => props.theme.text80}; + background-color: ${({ theme }) => theme.background.tertiary}; + border-radius: ${({ theme }) => theme.spacing(1)}; + color: ${({ theme }) => theme.font.color.primary}; display: inline-flex; - gap: ${(props) => props.theme.spacing(1)}; - padding: ${(props) => props.theme.spacing(1)}; + gap: ${({ theme }) => theme.spacing(1)}; + padding: ${({ theme }) => theme.spacing(1)}; :hover { filter: brightness(95%); diff --git a/front/src/modules/relation-picker/components/SingleEntitySelect.tsx b/front/src/modules/relation-picker/components/SingleEntitySelect.tsx index 2b76f7a79..c4e39bff6 100644 --- a/front/src/modules/relation-picker/components/SingleEntitySelect.tsx +++ b/front/src/modules/relation-picker/components/SingleEntitySelect.tsx @@ -72,7 +72,7 @@ export function SingleEntitySelect< <> - + Create new diff --git a/front/src/modules/settings/components/SettingsNavbar.tsx b/front/src/modules/settings/components/SettingsNavbar.tsx index e67961aa5..a0ff6b609 100644 --- a/front/src/modules/settings/components/SettingsNavbar.tsx +++ b/front/src/modules/settings/components/SettingsNavbar.tsx @@ -31,7 +31,7 @@ export function SettingsNavbar() { } + icon={} active={ !!useMatch({ path: useResolvedPath('/people').pathname, @@ -42,7 +42,7 @@ export function SettingsNavbar() { } + icon={} soon={true} active={ !!useMatch({ @@ -55,7 +55,7 @@ export function SettingsNavbar() { } + icon={} soon={true} active={ !!useMatch({ @@ -68,7 +68,7 @@ export function SettingsNavbar() { } + icon={} danger={true} /> diff --git a/front/src/modules/ui/components/board/BoardColumn.tsx b/front/src/modules/ui/components/board/BoardColumn.tsx index 37f81f345..63ce17e9d 100644 --- a/front/src/modules/ui/components/board/BoardColumn.tsx +++ b/front/src/modules/ui/components/board/BoardColumn.tsx @@ -2,7 +2,7 @@ import React from 'react'; import styled from '@emotion/styled'; export const StyledColumn = styled.div` - background-color: ${({ theme }) => theme.primaryBackground}; + background-color: ${({ theme }) => theme.background.primary}; display: flex; flex-direction: column; min-width: 200px; @@ -12,10 +12,10 @@ export const StyledColumn = styled.div` export const StyledColumnTitle = styled.h3` color: ${({ color }) => color}; font-family: 'Inter'; - font-size: ${({ theme }) => theme.fontSizeMedium}; + font-size: ${({ theme }) => theme.font.size.md}; font-style: normal; - font-weight: ${({ theme }) => theme.fontWeightMedium}; - line-height: ${({ theme }) => theme.lineHeight}; + font-weight: ${({ theme }) => theme.font.weight.medium}; + line-height: ${({ theme }) => theme.text.lineHeight}; margin: 0; margin-bottom: ${({ theme }) => theme.spacing(2)}; `; diff --git a/front/src/modules/ui/components/board/NewButton.tsx b/front/src/modules/ui/components/board/NewButton.tsx index a7d0a79b2..21abc911f 100644 --- a/front/src/modules/ui/components/board/NewButton.tsx +++ b/front/src/modules/ui/components/board/NewButton.tsx @@ -6,18 +6,18 @@ import { IconPlus } from '@/ui/icons/index'; const StyledButton = styled.button` align-items: center; align-self: baseline; - background-color: ${({ theme }) => theme.primaryBackground}; + background-color: ${({ theme }) => theme.background.primary}; border: none; - border-radius: ${({ theme }) => theme.borderRadius}; - color: ${({ theme }) => theme.text40}; + border-radius: ${({ theme }) => theme.border.radius.md}; + color: ${({ theme }) => theme.font.color.tertiary}; cursor: pointer; display: flex; gap: ${({ theme }) => theme.spacing(1)}; justify-content: center; - padding: ${(props) => props.theme.spacing(1)}; + padding: ${({ theme }) => theme.spacing(1)}; &:hover { - background-color: ${({ theme }) => theme.secondaryBackground}; + background-color: ${({ theme }) => theme.background.secondary}; } `; @@ -30,7 +30,7 @@ export function NewButton({ onClick }: OwnProps) { return ( - + New ); diff --git a/front/src/modules/ui/components/buttons/IconButton.tsx b/front/src/modules/ui/components/buttons/IconButton.tsx index 75daa114c..70b79c90d 100644 --- a/front/src/modules/ui/components/buttons/IconButton.tsx +++ b/front/src/modules/ui/components/buttons/IconButton.tsx @@ -2,11 +2,11 @@ import styled from '@emotion/styled'; const StyledIconButton = styled.button` align-items: center; - background: ${(props) => props.theme.blue}; + background: ${({ theme }) => theme.color.blue}; border: none; border-radius: 50%; - color: ${(props) => props.theme.text0}; + color: ${({ theme }) => theme.font.color.inverted}; cursor: pointer; display: flex; @@ -19,8 +19,8 @@ const StyledIconButton = styled.button` width: 20px; &:disabled { - background: ${(props) => props.theme.quaternaryBackground}; - color: ${(props) => props.theme.text40}; + background: ${({ theme }) => theme.background.quaternary}; + color: ${({ theme }) => theme.font.color.tertiary}; cursor: default; } `; diff --git a/front/src/modules/ui/components/buttons/PrimaryButton.tsx b/front/src/modules/ui/components/buttons/PrimaryButton.tsx index 58922fb9b..beabf0b57 100644 --- a/front/src/modules/ui/components/buttons/PrimaryButton.tsx +++ b/front/src/modules/ui/components/buttons/PrimaryButton.tsx @@ -10,18 +10,19 @@ const StyledButton = styled.button<{ fullWidth: boolean }>` align-items: center; background: radial-gradient( 50% 62.62% at 50% 0%, - ${({ theme }) => theme.text60} 0%, - ${({ theme }) => theme.text80} 100% + ${({ theme }) => theme.font.color.secondary} 0%, + ${({ theme }) => theme.font.color.primary} 100% ); - border: 1px solid ${({ theme }) => theme.primaryBorder}; + border: 1px solid ${({ theme }) => theme.border.color.light}; border-radius: 8px; - box-shadow: 0px 0px 4px ${({ theme }) => theme.mediumBackgroundTransparent} 0%, - 0px 2px 4px ${({ theme }) => theme.lightBackgroundTransparent} 0%; - color: ${(props) => props.theme.text0}; + box-shadow: 0px 0px 4px ${({ theme }) => theme.background.transparent.medium} + 0%, + 0px 2px 4px ${({ theme }) => theme.background.transparent.light} 0%; + color: ${({ theme }) => theme.font.color.inverted}; cursor: pointer; display: flex; flex-direction: row; - font-weight: ${({ theme }) => theme.fontWeightBold}; + font-weight: ${({ theme }) => theme.font.weight.semiBold}; gap: ${({ theme }) => theme.spacing(2)}; justify-content: center; padding: ${({ theme }) => theme.spacing(2)} ${({ theme }) => theme.spacing(3)}; diff --git a/front/src/modules/ui/components/buttons/SecondaryButton.tsx b/front/src/modules/ui/components/buttons/SecondaryButton.tsx index 9c7caf000..45cdb7fb8 100644 --- a/front/src/modules/ui/components/buttons/SecondaryButton.tsx +++ b/front/src/modules/ui/components/buttons/SecondaryButton.tsx @@ -8,16 +8,17 @@ type OwnProps = { const StyledButton = styled.button<{ fullWidth: boolean }>` align-items: center; - background: ${({ theme }) => theme.primaryBackground}; - border: 1px solid ${({ theme }) => theme.primaryBorder}; + background: ${({ theme }) => theme.background.primary}; + border: 1px solid ${({ theme }) => theme.border.color.light}; border-radius: 8px; - box-shadow: 0px 0px 4px ${({ theme }) => theme.mediumBackgroundTransparent} 0%, - 0px 2px 4px ${({ theme }) => theme.lightBackgroundTransparent} 0%; - color: ${(props) => props.theme.text80}; + box-shadow: 0px 0px 4px ${({ theme }) => theme.background.transparent.medium} + 0%, + 0px 2px 4px ${({ theme }) => theme.background.transparent.light} 0%; + color: ${({ theme }) => theme.font.color.primary}; cursor: pointer; display: flex; flex-direction: row; - font-weight: ${({ theme }) => theme.fontWeightBold}; + font-weight: ${({ theme }) => theme.font.weight.semiBold}; gap: 8px; justify-content: center; padding: ${({ theme }) => theme.spacing(2)} ${({ theme }) => theme.spacing(3)}; @@ -25,7 +26,7 @@ const StyledButton = styled.button<{ fullWidth: boolean }>` width: ${({ fullWidth }) => (fullWidth ? '100%' : 'auto')}; &:hover { - background: ${({ theme }) => theme.tertiaryBackground}; + background: ${({ theme }) => theme.background.tertiary}; } `; diff --git a/front/src/modules/ui/components/editable-cell/EditableCellDisplayMode.tsx b/front/src/modules/ui/components/editable-cell/EditableCellDisplayMode.tsx index c802f07ba..12879e791 100644 --- a/front/src/modules/ui/components/editable-cell/EditableCellDisplayMode.tsx +++ b/front/src/modules/ui/components/editable-cell/EditableCellDisplayMode.tsx @@ -6,19 +6,21 @@ export const EditableCellNormalModeOuterContainer = styled.div` display: flex; height: 100%; 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%; &: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}; - background: ${(props) => props.theme.secondaryBackgroundTransparent}; - border-radius: ${(props) => props.theme.borderRadius}; + -webkit-box-shadow: inset 0 0 0 1px + ${({ theme }) => theme.font.color.extraLight}; + 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}; } `; diff --git a/front/src/modules/ui/components/editable-cell/EditableCellEditMode.tsx b/front/src/modules/ui/components/editable-cell/EditableCellEditMode.tsx index 496327ee9..13d781726 100644 --- a/front/src/modules/ui/components/editable-cell/EditableCellEditMode.tsx +++ b/front/src/modules/ui/components/editable-cell/EditableCellEditMode.tsx @@ -3,16 +3,16 @@ import { useHotkeys } from 'react-hotkeys-hook'; import styled from '@emotion/styled'; import { useRecoilState } from 'recoil'; +import { overlayBackground } from '@/ui/themes/effects'; import { debounce } from '@/utils/debounce'; import { useListenClickOutsideArrayOfRef } from '../../hooks/useListenClickOutsideArrayOfRef'; -import { overlayBackground } from '../../layout/styles/themes'; import { isSomeInputInEditModeState } from '../../tables/states/isSomeInputInEditModeState'; export const EditableCellEditModeContainer = styled.div` align-items: center; - border: 1px solid ${(props) => props.theme.primaryBorder}; - border-radius: 4px; + border: 1px solid ${({ theme }) => theme.border.color.light}; + border-radius: ${({ theme }) => theme.border.radius.sm}; display: flex; left: ${(props) => props.editModeHorizontalAlign === 'right' ? 'auto' : '0'}; diff --git a/front/src/modules/ui/components/editable-cell/HoverableMenuItem.tsx b/front/src/modules/ui/components/editable-cell/HoverableMenuItem.tsx index 7e3207fc9..b753f80d8 100644 --- a/front/src/modules/ui/components/editable-cell/HoverableMenuItem.tsx +++ b/front/src/modules/ui/components/editable-cell/HoverableMenuItem.tsx @@ -2,7 +2,7 @@ import styled from '@emotion/styled'; export const HoverableMenuItem = styled.div` align-items: center; - background: ${(props) => props.theme.primaryBackground}; + background: ${({ theme }) => theme.background.primary}; border-radius: 4px; box-sizing: border-box; cursor: pointer; @@ -14,6 +14,6 @@ export const HoverableMenuItem = styled.div` width: 100%; &:hover { - background: ${(props) => props.theme.lightBackgroundTransparent}; + background: ${({ theme }) => theme.background.transparent.light}; } `; diff --git a/front/src/modules/ui/components/editable-cell/types/EditableChip.tsx b/front/src/modules/ui/components/editable-cell/types/EditableChip.tsx index 19febec63..f37ebcbe8 100644 --- a/front/src/modules/ui/components/editable-cell/types/EditableChip.tsx +++ b/front/src/modules/ui/components/editable-cell/types/EditableChip.tsx @@ -1,7 +1,7 @@ import { ChangeEvent, ComponentType, ReactNode, useRef, useState } from 'react'; import styled from '@emotion/styled'; -import { textInputStyle } from '@/ui/layout/styles/themes'; +import { textInputStyle } from '@/ui/themes/effects'; import { EditableCell } from '../EditableCell'; diff --git a/front/src/modules/ui/components/editable-cell/types/EditableDate.tsx b/front/src/modules/ui/components/editable-cell/types/EditableDate.tsx index 8e659d991..be2de36f5 100644 --- a/front/src/modules/ui/components/editable-cell/types/EditableDate.tsx +++ b/front/src/modules/ui/components/editable-cell/types/EditableDate.tsx @@ -15,7 +15,7 @@ export type EditableDateProps = { const StyledContainer = styled.div` align-items: center; display: flex; - margin: 0px ${(props) => props.theme.spacing(2)}; + margin: 0px ${({ theme }) => theme.spacing(2)}; `; export type StyledCalendarContainerProps = { @@ -23,10 +23,10 @@ export type StyledCalendarContainerProps = { }; const StyledCalendarContainer = styled.div` - background: ${(props) => props.theme.secondaryBackground}; - border: 1px solid ${(props) => props.theme.primaryBorder}; + background: ${({ theme }) => theme.background.secondary}; + border: 1px solid ${({ theme }) => theme.border.color.light}; border-radius: 8px; - box-shadow: ${(props) => props.theme.modalBoxShadow}; + box-shadow: ${({ theme }) => theme.boxShadow.strong}; left: -10px; position: absolute; top: 10px; diff --git a/front/src/modules/ui/components/editable-cell/types/EditableDoubleText.tsx b/front/src/modules/ui/components/editable-cell/types/EditableDoubleText.tsx index 12e821f08..42d47ceab 100644 --- a/front/src/modules/ui/components/editable-cell/types/EditableDoubleText.tsx +++ b/front/src/modules/ui/components/editable-cell/types/EditableDoubleText.tsx @@ -1,7 +1,7 @@ import { ChangeEvent, ReactElement, useRef, useState } from 'react'; import styled from '@emotion/styled'; -import { textInputStyle } from '@/ui/layout/styles/themes'; +import { textInputStyle } from '@/ui/themes/effects'; import { EditableCell } from '../EditableCell'; @@ -20,8 +20,8 @@ const StyledContainer = styled.div` justify-content: space-between; & > input:last-child { - border-left: 1px solid ${(props) => props.theme.primaryBorder}; - padding-left: ${(props) => props.theme.spacing(2)}; + border-left: 1px solid ${({ theme }) => theme.border.color.medium}; + padding-left: ${({ theme }) => theme.spacing(2)}; } `; diff --git a/front/src/modules/ui/components/editable-cell/types/EditablePhone.tsx b/front/src/modules/ui/components/editable-cell/types/EditablePhone.tsx index 9d3a7c7dc..7772bfda1 100644 --- a/front/src/modules/ui/components/editable-cell/types/EditablePhone.tsx +++ b/front/src/modules/ui/components/editable-cell/types/EditablePhone.tsx @@ -2,7 +2,7 @@ import { ChangeEvent, MouseEvent, useRef, useState } from 'react'; import styled from '@emotion/styled'; 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 { EditableCell } from '../EditableCell'; diff --git a/front/src/modules/ui/components/editable-cell/types/EditableRelationCreateButton.tsx b/front/src/modules/ui/components/editable-cell/types/EditableRelationCreateButton.tsx index 0954e6a69..f1ce9a4bd 100644 --- a/front/src/modules/ui/components/editable-cell/types/EditableRelationCreateButton.tsx +++ b/front/src/modules/ui/components/editable-cell/types/EditableRelationCreateButton.tsx @@ -8,12 +8,12 @@ export const EditableRelationCreateButton = styled.button` cursor: pointer; display: flex; font-family: 'Inter'; - font-size: ${(props) => props.theme.fontSizeMedium}; - gap: ${(props) => props.theme.spacing(2)}; + font-size: ${({ theme }) => theme.font.size.md}; + gap: ${({ theme }) => theme.spacing(2)}; height: 31px; - padding-bottom: ${(props) => props.theme.spacing(1)}; - padding-left: ${(props) => props.theme.spacing(1)}; - padding-top: ${(props) => props.theme.spacing(1)}; + padding-bottom: ${({ theme }) => theme.spacing(1)}; + padding-left: ${({ theme }) => theme.spacing(1)}; + padding-top: ${({ theme }) => theme.spacing(1)}; user-select: none; width: 100%; `; diff --git a/front/src/modules/ui/components/editable-cell/types/EditableText.tsx b/front/src/modules/ui/components/editable-cell/types/EditableText.tsx index 38a6e3c9b..a287240fe 100644 --- a/front/src/modules/ui/components/editable-cell/types/EditableText.tsx +++ b/front/src/modules/ui/components/editable-cell/types/EditableText.tsx @@ -1,7 +1,7 @@ import { ChangeEvent, useRef, useState } from 'react'; import styled from '@emotion/styled'; -import { textInputStyle } from '@/ui/layout/styles/themes'; +import { textInputStyle } from '@/ui/themes/effects'; import { EditableCell } from '../EditableCell'; diff --git a/front/src/modules/ui/components/form/Checkbox.tsx b/front/src/modules/ui/components/form/Checkbox.tsx index 955792755..04bcf4a5d 100644 --- a/front/src/modules/ui/components/form/Checkbox.tsx +++ b/front/src/modules/ui/components/form/Checkbox.tsx @@ -15,7 +15,7 @@ const StyledContainer = styled.div` justify-content: center; input[type='checkbox'] { - accent-color: ${(props) => props.theme.blue}; + accent-color: ${({ theme }) => theme.color.blue}; cursor: pointer; height: 14px; margin: 2px; @@ -24,7 +24,7 @@ const StyledContainer = styled.div` } input[type='checkbox']::before { - border: 1px solid ${(props) => props.theme.text40}; + border: 1px solid ${({ theme }) => theme.font.color.tertiary}; border-radius: 2px; content: ''; display: block; @@ -33,11 +33,11 @@ const StyledContainer = styled.div` } 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 { - border: 1px solid ${(props) => props.theme.blue}; + border: 1px solid ${({ theme }) => theme.color.blue}; } `; diff --git a/front/src/modules/ui/components/form/DatePicker.tsx b/front/src/modules/ui/components/form/DatePicker.tsx index b36b6cf2b..a9cbf801b 100644 --- a/front/src/modules/ui/components/form/DatePicker.tsx +++ b/front/src/modules/ui/components/form/DatePicker.tsx @@ -2,7 +2,7 @@ import React, { forwardRef, ReactElement, useState } from 'react'; import ReactDatePicker, { CalendarContainerProps } from 'react-datepicker'; import styled from '@emotion/styled'; -import { overlayBackground } from '../../layout/styles/themes'; +import { overlayBackground } from '@/ui/themes/effects'; import 'react-datepicker/dist/react-datepicker.css'; @@ -16,10 +16,10 @@ export type DatePickerProps = { const StyledContainer = styled.div` & .react-datepicker { - border-color: ${(props) => props.theme.primaryBorder}; + border-color: ${({ theme }) => theme.border.color.light}; background: transparent; font-family: 'Inter'; - font-size: ${(props) => props.theme.fontSizeMedium}; + font-size: ${({ theme }) => theme.font.size.md}; border: none; display: block; font-weight: 400; @@ -49,19 +49,19 @@ const StyledContainer = styled.div` & .react-datepicker__header__dropdown { display: flex; - margin-left: ${(props) => props.theme.spacing(1)}; - margin-bottom: ${(props) => props.theme.spacing(1)}; + margin-left: ${({ theme }) => theme.spacing(1)}; + margin-bottom: ${({ theme }) => theme.spacing(1)}; } & .react-datepicker__month-dropdown-container, & .react-datepicker__year-dropdown-container { text-align: left; border-radius: 4px; - margin-left: ${(props) => props.theme.spacing(1)}; + margin-left: ${({ theme }) => theme.spacing(1)}; margin-right: 0; - padding: ${(props) => props.theme.spacing(2)}; - padding-right: ${(props) => props.theme.spacing(4)}; - background-color: ${(props) => props.theme.tertiaryBackground}; + padding: ${({ theme }) => theme.spacing(2)}; + padding-right: ${({ theme }) => theme.spacing(4)}; + background-color: ${({ theme }) => theme.background.tertiary}; } & .react-datepicker__month-read-view--down-arrow, @@ -69,14 +69,14 @@ const StyledContainer = styled.div` height: 5px; width: 5px; border-width: 1px 1px 0 0; - border-color: ${(props) => props.theme.text40}; + border-color: ${({ theme }) => theme.border.color.light}; top: 3px; right: -6px; } & .react-datepicker__year-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 { @@ -89,19 +89,19 @@ const StyledContainer = styled.div` & .react-datepicker__month-dropdown, & .react-datepicker__year-dropdown { - border: ${(props) => props.theme.primaryBorder}; + border: ${({ theme }) => theme.border.color.light}; ${overlayBackground} overflow-y: scroll; - top: ${(props) => props.theme.spacing(2)}; + top: ${({ theme }) => theme.spacing(2)}; } & .react-datepicker__month-dropdown { - left: ${(props) => props.theme.spacing(2)}; + left: ${({ theme }) => theme.spacing(2)}; width: 160px; height: 260px; } & .react-datepicker__year-dropdown { - left: calc(${(props) => props.theme.spacing(9)} + 80px); + left: calc(${({ theme }) => theme.spacing(9)} + 80px); width: 100px; height: 260px; } @@ -118,16 +118,16 @@ const StyledContainer = styled.div` & .react-datepicker__year-option, & .react-datepicker__month-option { text-align: left; - padding: ${(props) => props.theme.spacing(2)} - calc(${(props) => props.theme.spacing(2)} - 2px); - width: calc(100% - ${(props) => props.theme.spacing(4)}); + padding: ${({ theme }) => theme.spacing(2)} + calc(${({ theme }) => theme.spacing(2)} - 2px); + width: calc(100% - ${({ theme }) => theme.spacing(4)}); border-radius: 2px; - color: ${(props) => props.theme.text60}; + color: ${({ theme }) => theme.font.color.secondary}; cursor: pointer; margin: 2px; &:hover { - background: ${(props) => props.theme.lightBackgroundTransparent}; + background: ${({ theme }) => theme.background.transparent.light}; } &:first-of-type { @@ -144,7 +144,7 @@ const StyledContainer = styled.div` } & .react-datepicker__day-name { - color: ${(props) => props.theme.text60}; + color: ${({ theme }) => theme.font.color.secondary}; width: 34px; height: 40px; line-height: 40px; @@ -172,7 +172,7 @@ const StyledContainer = styled.div` border-radius: 4px; padding-top: 6px; &:hover { - background: ${(props) => props.theme.lightBackgroundTransparent}; + background: ${({ theme }) => theme.background.transparent.light}; } } & .react-datepicker__navigation--previous { @@ -198,7 +198,7 @@ const StyledContainer = styled.div` height: 7px; width: 7px; border-width: 1px 1px 0 0; - border-color: ${(props) => props.theme.text40}; + border-color: ${({ theme }) => theme.font.color.tertiary}; } & .react-datepicker__day--keyboard-selected { @@ -207,20 +207,20 @@ const StyledContainer = styled.div` & .react-datepicker__day, .react-datepicker__time-name { - color: ${(props) => props.theme.text80}; + color: ${({ theme }) => theme.font.color.primary}; } & .react-datepicker__day--selected { - background-color: ${(props) => props.theme.blue}; - color: ${(props) => props.theme.text0}; + background-color: ${({ theme }) => theme.color.blue}; + color: ${({ theme }) => theme.font.color.inverted}; } & .react-datepicker__day--outside-month { - color: ${(props) => props.theme.text40}; + color: ${({ theme }) => theme.font.color.tertiary}; } & .react-datepicker__day:hover { - color: ${(props) => props.theme.text40}; + color: ${({ theme }) => theme.font.color.tertiary}; } `; diff --git a/front/src/modules/ui/components/inputs/AutosizeTextInput.tsx b/front/src/modules/ui/components/inputs/AutosizeTextInput.tsx index 12864cb49..546f260bc 100644 --- a/front/src/modules/ui/components/inputs/AutosizeTextInput.tsx +++ b/front/src/modules/ui/components/inputs/AutosizeTextInput.tsx @@ -22,10 +22,10 @@ const StyledContainer = styled.div` `; const StyledTextArea = styled(TextareaAutosize)` - background: ${(props) => props.theme.tertiaryBackground}; + background: ${({ theme }) => theme.background.tertiary}; border: none; border-radius: 5px; - color: ${(props) => props.theme.text80}; + color: ${({ theme }) => theme.font.color.primary}; font-family: inherit; font-size: 13px; font-weight: 400; @@ -41,7 +41,7 @@ const StyledTextArea = styled(TextareaAutosize)` } &::placeholder { - color: ${(props) => props.theme.text30}; + color: ${({ theme }) => theme.font.color.light}; font-weight: 400; } `; diff --git a/front/src/modules/ui/components/inputs/DoubleTextInput.tsx b/front/src/modules/ui/components/inputs/DoubleTextInput.tsx index 9dfedab0d..995e190a7 100644 --- a/front/src/modules/ui/components/inputs/DoubleTextInput.tsx +++ b/front/src/modules/ui/components/inputs/DoubleTextInput.tsx @@ -1,8 +1,6 @@ import { ChangeEvent, useRef } from 'react'; import styled from '@emotion/styled'; -import { textInputStyle } from '../../layout/styles/themes'; - type OwnProps = { leftValue: string; rightValue: string; @@ -17,16 +15,14 @@ const StyledContainer = styled.div` justify-content: space-between; & > input:last-child { - border-left: 1px solid ${(props) => props.theme.primaryBorder}; - padding-left: ${(props) => props.theme.spacing(2)}; + border-left: 1px solid ${({ theme }) => theme.border.color.light}; + padding-left: ${({ theme }) => theme.spacing(2)}; } `; const StyledEditInplaceInput = styled.input` height: 18px; width: 45%; - - ${textInputStyle} `; export function DoubleTextInput({ diff --git a/front/src/modules/ui/components/inputs/TextInput.tsx b/front/src/modules/ui/components/inputs/TextInput.tsx index 30a259824..c1c4e9a59 100644 --- a/front/src/modules/ui/components/inputs/TextInput.tsx +++ b/front/src/modules/ui/components/inputs/TextInput.tsx @@ -10,22 +10,22 @@ type OwnProps = Omit< }; const StyledInput = styled.input<{ fullWidth: boolean }>` - background-color: ${({ theme }) => theme.lighterBackgroundTransparent}; - border: 1px solid ${({ theme }) => theme.lightBorder}; + background-color: ${({ theme }) => theme.background.transparent.lighter}; + border: 1px solid ${({ theme }) => theme.border.color.light}; border-radius: 4px; padding: ${({ theme }) => theme.spacing(2)} ${({ theme }) => theme.spacing(3)}; - color: ${({ theme }) => theme.text80}; + color: ${({ theme }) => theme.font.color.primary}; outline: none; width: ${({ fullWidth, theme }) => fullWidth ? `calc(100% - ${theme.spacing(6)})` : 'auto'}; &::placeholder, &::-webkit-input-placeholder { - color: ${({ theme }) => theme.text30} - font-family: ${({ theme }) => theme.fontFamily};; - font-weight: ${({ theme }) => theme.fontWeightMedium}; + color: ${({ theme }) => theme.font.color.light} + font-family: ${({ theme }) => theme.font.family};; + font-weight: ${({ theme }) => theme.font.weight.medium}; } margin-bottom: ${({ theme }) => theme.spacing(3)}; `; diff --git a/front/src/modules/ui/components/links/PrimaryLink.tsx b/front/src/modules/ui/components/links/PrimaryLink.tsx index da65cdea6..4a8e3ee65 100644 --- a/front/src/modules/ui/components/links/PrimaryLink.tsx +++ b/front/src/modules/ui/components/links/PrimaryLink.tsx @@ -12,8 +12,8 @@ type OwnProps = { const StyledClickable = styled.div` display: flex; a { - color: ${({ theme }) => theme.text40}; - font-size: ${({ theme }) => theme.fontSizeSmall}; + color: ${({ theme }) => theme.font.color.tertiary}; + font-size: ${({ theme }) => theme.font.size.sm}; text-decoration: none; } `; diff --git a/front/src/modules/ui/components/menu/DropdownMenu.tsx b/front/src/modules/ui/components/menu/DropdownMenu.tsx index 1b83a562e..b76405196 100644 --- a/front/src/modules/ui/components/menu/DropdownMenu.tsx +++ b/front/src/modules/ui/components/menu/DropdownMenu.tsx @@ -4,11 +4,11 @@ export const DropdownMenu = styled.div` align-items: center; backdrop-filter: blur(20px); - background: ${(props) => props.theme.secondaryBackgroundTransparent}; - border: 1px solid ${(props) => props.theme.lightBorder}; - border-radius: calc(${(props) => props.theme.borderRadius} * 2); + background: ${({ theme }) => theme.background.transparent.secondary}; + border: 1px solid ${({ theme }) => theme.border.color.light}; + border-radius: ${({ theme }) => theme.border.radius.md}; - box-shadow: ${(props) => props.theme.modalBoxShadow}; + box-shadow: ${({ theme }) => theme.boxShadow.strong}; display: flex; diff --git a/front/src/modules/ui/components/menu/DropdownMenuButton.tsx b/front/src/modules/ui/components/menu/DropdownMenuButton.tsx index 382bd8cc4..3da1a16e3 100644 --- a/front/src/modules/ui/components/menu/DropdownMenuButton.tsx +++ b/front/src/modules/ui/components/menu/DropdownMenuButton.tsx @@ -1,23 +1,23 @@ import styled from '@emotion/styled'; -import { hoverBackground } from '@/ui/layout/styles/themes'; +import { hoverBackground } from '@/ui/themes/effects'; export const DropdownMenuButton = styled.div` - --horizontal-padding: ${(props) => props.theme.spacing(1.5)}; - --vertical-padding: ${(props) => props.theme.spacing(2)}; + --horizontal-padding: ${({ theme }) => theme.spacing(1.5)}; + --vertical-padding: ${({ theme }) => theme.spacing(2)}; align-items: center; - border-radius: ${(props) => props.theme.borderRadius}; - color: ${(props) => props.theme.text60}; + border-radius: ${({ theme }) => theme.border.radius.md}; + color: ${({ theme }) => theme.font.color.secondary}; cursor: pointer; display: flex; 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)); diff --git a/front/src/modules/ui/components/menu/DropdownMenuCheckableItem.tsx b/front/src/modules/ui/components/menu/DropdownMenuCheckableItem.tsx index 03fbfaaf2..75b68588e 100644 --- a/front/src/modules/ui/components/menu/DropdownMenuCheckableItem.tsx +++ b/front/src/modules/ui/components/menu/DropdownMenuCheckableItem.tsx @@ -21,15 +21,15 @@ const StyledLeftContainer = styled.div` align-items: center; display: flex; - gap: ${(props) => props.theme.spacing(2)}; + gap: ${({ theme }) => theme.spacing(2)}; `; const StyledChildrenContainer = styled.div` align-items: center; display: flex; - font-size: ${(props) => props.theme.fontSizeSmall}; - gap: ${(props) => props.theme.spacing(2)}; + font-size: ${({ theme }) => theme.font.size.sm}; + gap: ${({ theme }) => theme.spacing(2)}; `; export function DropdownMenuCheckableItem({ diff --git a/front/src/modules/ui/components/menu/DropdownMenuItem.tsx b/front/src/modules/ui/components/menu/DropdownMenuItem.tsx index 5d28a421a..5ac1dbf56 100644 --- a/front/src/modules/ui/components/menu/DropdownMenuItem.tsx +++ b/front/src/modules/ui/components/menu/DropdownMenuItem.tsx @@ -1,19 +1,19 @@ import styled from '@emotion/styled'; export const DropdownMenuItem = styled.div` - --horizontal-padding: ${(props) => props.theme.spacing(1.5)}; - --vertical-padding: ${(props) => props.theme.spacing(2)}; + --horizontal-padding: ${({ theme }) => theme.spacing(1.5)}; + --vertical-padding: ${({ theme }) => theme.spacing(2)}; align-items: center; - border-radius: ${(props) => props.theme.borderRadius}; - color: ${(props) => props.theme.text60}; + border-radius: ${({ theme }) => theme.border.radius.sm}; + color: ${({ theme }) => theme.font.color.secondary}; display: flex; 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)); diff --git a/front/src/modules/ui/components/menu/DropdownMenuItemContainer.tsx b/front/src/modules/ui/components/menu/DropdownMenuItemContainer.tsx index c923c868c..d3644127c 100644 --- a/front/src/modules/ui/components/menu/DropdownMenuItemContainer.tsx +++ b/front/src/modules/ui/components/menu/DropdownMenuItemContainer.tsx @@ -1,7 +1,7 @@ import styled from '@emotion/styled'; export const DropdownMenuItemContainer = styled.div` - --padding: ${(props) => props.theme.spacing(1 / 2)}; + --padding: ${({ theme }) => theme.spacing(1 / 2)}; align-items: flex-start; display: flex; diff --git a/front/src/modules/ui/components/menu/DropdownMenuSearch.tsx b/front/src/modules/ui/components/menu/DropdownMenuSearch.tsx index cbe65b125..31c46801f 100644 --- a/front/src/modules/ui/components/menu/DropdownMenuSearch.tsx +++ b/front/src/modules/ui/components/menu/DropdownMenuSearch.tsx @@ -1,13 +1,13 @@ import { InputHTMLAttributes } from 'react'; import styled from '@emotion/styled'; -import { textInputStyle } from '@/ui/layout/styles/themes'; +import { textInputStyle } from '@/ui/themes/effects'; export const DropdownMenuSearchContainer = styled.div` - --vertical-padding: ${(props) => props.theme.spacing(1)}; + --vertical-padding: ${({ theme }) => theme.spacing(1)}; align-items: center; - border-bottom: 1px solid ${(props) => props.theme.lightBorder}; + border-bottom: 1px solid ${({ theme }) => theme.border.color.light}; display: flex; flex-direction: row; @@ -18,7 +18,7 @@ export const DropdownMenuSearchContainer = styled.div` `; const StyledEditModeSearchInput = styled.input` - font-size: ${(props) => props.theme.fontSizeSmall}; + font-size: ${({ theme }) => theme.font.size.sm}; ${textInputStyle} diff --git a/front/src/modules/ui/components/menu/DropdownMenuSelectableItem.tsx b/front/src/modules/ui/components/menu/DropdownMenuSelectableItem.tsx index b94637323..836fd2782 100644 --- a/front/src/modules/ui/components/menu/DropdownMenuSelectableItem.tsx +++ b/front/src/modules/ui/components/menu/DropdownMenuSelectableItem.tsx @@ -3,7 +3,7 @@ import { useTheme } from '@emotion/react'; import styled from '@emotion/styled'; import { IconCheck } from '@/ui/icons/index'; -import { hoverBackground } from '@/ui/layout/styles/themes'; +import { hoverBackground } from '@/ui/themes/effects'; import { DropdownMenuButton } from './DropdownMenuButton'; @@ -19,7 +19,7 @@ const DropdownMenuSelectableItemContainer = styled(DropdownMenuButton)` align-items: center; background: ${(props) => - props.hovered ? props.theme.lightBackgroundTransparent : 'transparent'}; + props.hovered ? props.theme.background.transparent.light : 'transparent'}; display: flex; justify-content: space-between; @@ -29,7 +29,7 @@ const StyledLeftContainer = styled.div` align-items: center; display: flex; - gap: ${(props) => props.theme.spacing(2)}; + gap: ${({ theme }) => theme.spacing(2)}; `; const StyledRightIcon = styled.div` @@ -61,7 +61,7 @@ export function DropdownMenuSelectableItem({ > {children} - {selected && } + {selected && } ); diff --git a/front/src/modules/ui/components/menu/DropdownMenuSeparator.tsx b/front/src/modules/ui/components/menu/DropdownMenuSeparator.tsx index 7f8695d4e..3a31294b0 100644 --- a/front/src/modules/ui/components/menu/DropdownMenuSeparator.tsx +++ b/front/src/modules/ui/components/menu/DropdownMenuSeparator.tsx @@ -1,7 +1,7 @@ import styled from '@emotion/styled'; export const DropdownMenuSeparator = styled.div` - background-color: ${(props) => props.theme.lightBorder}; + background-color: ${({ theme }) => theme.border.color.light}; height: 1px; width: 100%; diff --git a/front/src/modules/ui/components/modal/Modal.tsx b/front/src/modules/ui/components/modal/Modal.tsx index 925f11a59..caa5826a2 100644 --- a/front/src/modules/ui/components/modal/Modal.tsx +++ b/front/src/modules/ui/components/modal/Modal.tsx @@ -10,7 +10,7 @@ export function Modal({ children }: { children: React.ReactNode }) { ariaHideApp={false} style={{ overlay: { - backgroundColor: theme.modalBackgroundTransparent, + backgroundColor: theme.background.overlay, zIndex: 2, display: 'flex', justifyContent: 'center', diff --git a/front/src/modules/ui/components/section-titles/MainSectionTitle.tsx b/front/src/modules/ui/components/section-titles/MainSectionTitle.tsx index 78a357654..1065cd368 100644 --- a/front/src/modules/ui/components/section-titles/MainSectionTitle.tsx +++ b/front/src/modules/ui/components/section-titles/MainSectionTitle.tsx @@ -6,9 +6,9 @@ type OwnProps = { }; const StyledMainSectionTitle = styled.h2` - color: ${({ theme }) => theme.text80}; - font-size: ${({ theme }) => theme.fontSizeExtraLarge}; - font-weight: ${({ theme }) => theme.fontWeightBold}; + color: ${({ theme }) => theme.font.color.primary}; + font-size: ${({ theme }) => theme.font.size.xl}; + font-weight: ${({ theme }) => theme.font.weight.semiBold}; line-height: 1.5; `; diff --git a/front/src/modules/ui/components/section-titles/SubSectionTitle.tsx b/front/src/modules/ui/components/section-titles/SubSectionTitle.tsx index d850f3b25..18a194057 100644 --- a/front/src/modules/ui/components/section-titles/SubSectionTitle.tsx +++ b/front/src/modules/ui/components/section-titles/SubSectionTitle.tsx @@ -6,9 +6,9 @@ type OwnProps = { }; const StyledSubSectionTitle = styled.h2` - color: ${({ theme }) => theme.text80}; - font-size: ${({ theme }) => theme.fontSizeMedium}; - font-weight: ${({ theme }) => theme.fontWeightBold}; + color: ${({ theme }) => theme.font.color.primary}; + font-size: ${({ theme }) => theme.font.size.md}; + font-weight: ${({ theme }) => theme.font.weight.semiBold}; line-height: 1.5; `; diff --git a/front/src/modules/ui/components/table/ColumnHead.tsx b/front/src/modules/ui/components/table/ColumnHead.tsx index ed8fd0e07..667e6f605 100644 --- a/front/src/modules/ui/components/table/ColumnHead.tsx +++ b/front/src/modules/ui/components/table/ColumnHead.tsx @@ -11,13 +11,13 @@ const StyledTitle = styled.div` display: flex; flex-direction: row; font-weight: 500; - height: ${(props) => props.theme.spacing(8)}; - padding-left: ${(props) => props.theme.spacing(2)}; + height: ${({ theme }) => theme.spacing(8)}; + padding-left: ${({ theme }) => theme.spacing(2)}; `; const StyledIcon = styled.div` display: flex; - margin-right: ${(props) => props.theme.spacing(1)}; + margin-right: ${({ theme }) => theme.spacing(1)}; `; export function ColumnHead({ viewName, viewIcon }: OwnProps) { diff --git a/front/src/modules/ui/components/table/EntityTable.tsx b/front/src/modules/ui/components/table/EntityTable.tsx index 324d9da53..fc4ca3a24 100644 --- a/front/src/modules/ui/components/table/EntityTable.tsx +++ b/front/src/modules/ui/components/table/EntityTable.tsx @@ -40,15 +40,15 @@ const StyledTable = styled.table` border-radius: 4px; border-spacing: 0; - margin-left: ${(props) => props.theme.table.horizontalCellMargin}; - margin-right: ${(props) => props.theme.table.horizontalCellMargin}; + margin-left: ${({ theme }) => theme.table.horizontalCellMargin}; + margin-right: ${({ theme }) => theme.table.horizontalCellMargin}; table-layout: fixed; - width: calc(100% - ${(props) => props.theme.table.horizontalCellMargin} * 2); + width: calc(100% - ${({ theme }) => theme.table.horizontalCellMargin} * 2); th { - border: 1px solid ${(props) => props.theme.tertiaryBackground}; + border: 1px solid ${({ theme }) => theme.background.tertiary}; border-collapse: collapse; - color: ${(props) => props.theme.text40}; + color: ${({ theme }) => theme.font.color.tertiary}; padding: 0; text-align: left; @@ -66,9 +66,9 @@ const StyledTable = styled.table` } td { - border: 1px solid ${(props) => props.theme.tertiaryBackground}; + border: 1px solid ${({ theme }) => theme.background.tertiary}; border-collapse: collapse; - color: ${(props) => props.theme.text80}; + color: ${({ theme }) => theme.font.color.primary}; padding: 0; text-align: left; @@ -102,7 +102,7 @@ const StyledTableScrollableContainer = styled.div` const StyledRow = styled.tr<{ selected: boolean }>` background: ${(props) => - props.selected ? props.theme.secondaryBackground : 'none'}; + props.selected ? props.theme.background.secondary : 'none'}; `; export function EntityTable({ diff --git a/front/src/modules/ui/components/table/action-bar/EntityTableActionBar.tsx b/front/src/modules/ui/components/table/action-bar/EntityTableActionBar.tsx index 42cab9add..a51725ce3 100644 --- a/front/src/modules/ui/components/table/action-bar/EntityTableActionBar.tsx +++ b/front/src/modules/ui/components/table/action-bar/EntityTableActionBar.tsx @@ -16,17 +16,17 @@ type StyledContainerProps = { const StyledContainer = styled.div` align-items: center; - background: ${(props) => props.theme.secondaryBackground}; - border: 1px solid ${(props) => props.theme.primaryBorder}; + background: ${({ theme }) => theme.background.secondary}; + border: 1px solid ${({ theme }) => theme.border.color.light}; border-radius: 8px; bottom: ${(props) => (props.position.x ? 'auto' : '38px')}; - box-shadow: ${(props) => props.theme.modalBoxShadow}; + box-shadow: ${({ theme }) => theme.boxShadow.strong}; display: flex; height: 48px; left: ${(props) => (props.position.x ? `${props.position.x}px` : '50%')}; - padding-left: ${(props) => props.theme.spacing(2)}; - padding-right: ${(props) => props.theme.spacing(2)}; + padding-left: ${({ theme }) => theme.spacing(2)}; + padding-right: ${({ theme }) => theme.spacing(2)}; position: ${(props) => (props.position.x ? 'fixed' : 'absolute')}; top: ${(props) => (props.position.y ? `${props.position.y}px` : 'auto')}; diff --git a/front/src/modules/ui/components/table/action-bar/EntityTableActionBarButton.tsx b/front/src/modules/ui/components/table/action-bar/EntityTableActionBarButton.tsx index 1d44108c6..98b8e9cbc 100644 --- a/front/src/modules/ui/components/table/action-bar/EntityTableActionBarButton.tsx +++ b/front/src/modules/ui/components/table/action-bar/EntityTableActionBarButton.tsx @@ -15,23 +15,25 @@ type StyledButtonProps = { const StyledButton = styled.div` border-radius: 4px; 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; display: flex; justify-content: center; - padding: ${(props) => props.theme.spacing(2)}; + padding: ${({ theme }) => theme.spacing(2)}; transition: background 0.1s ease; user-select: none; &:hover { - background: ${(props) => props.theme.tertiaryBackground}; + background: ${({ theme }) => theme.background.tertiary}; } `; const StyledButtonLabel = styled.div` font-weight: 500; - margin-left: ${(props) => props.theme.spacing(2)}; + margin-left: ${({ theme }) => theme.spacing(2)}; `; export function EntityTableActionBarButton({ diff --git a/front/src/modules/ui/components/table/table-header/DropdownButton.tsx b/front/src/modules/ui/components/table/table-header/DropdownButton.tsx index d5d373b47..517277469 100644 --- a/front/src/modules/ui/components/table/table-header/DropdownButton.tsx +++ b/front/src/modules/ui/components/table/table-header/DropdownButton.tsx @@ -2,12 +2,9 @@ import { ReactNode, useRef } from 'react'; import styled from '@emotion/styled'; import { IconChevronDown } from '@/ui/icons/index'; +import { overlayBackground, textInputStyle } from '@/ui/themes/effects'; import { useOutsideAlerter } from '../../../hooks/useOutsideAlerter'; -import { - overlayBackground, - textInputStyle, -} from '../../../layout/styles/themes'; type OwnProps = { label: string; @@ -31,17 +28,17 @@ type StyledDropdownButtonProps = { }; const StyledDropdownButton = styled.div` - background: ${(props) => props.theme.primaryBackground}; + background: ${({ theme }) => theme.background.primary}; border-radius: 4px; - color: ${(props) => (props.isActive ? props.theme.blue : 'none')}; + color: ${(props) => (props.isActive ? props.theme.color.blue : 'none')}; cursor: pointer; display: flex; filter: ${(props) => (props.isUnfolded ? 'brightness(0.95)' : 'none')}; - padding: ${(props) => props.theme.spacing(1)}; - padding-left: ${(props) => props.theme.spacing(2)}; + padding: ${({ theme }) => theme.spacing(1)}; + padding-left: ${({ theme }) => theme.spacing(2)}; - padding-right: ${(props) => props.theme.spacing(2)}; + padding-right: ${({ theme }) => theme.spacing(2)}; user-select: none; &:hover { @@ -54,7 +51,7 @@ const StyledDropdown = styled.ul` --wraper-border: 1px; --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); display: flex; flex-direction: column; @@ -80,17 +77,17 @@ const StyledDropdown = styled.ul` const StyledDropdownItem = styled.li` align-items: center; border-radius: 2px; - color: ${(props) => props.theme.text60}; + color: ${({ theme }) => theme.font.color.secondary}; cursor: pointer; display: flex; margin: 2px; - padding: ${(props) => props.theme.spacing(2)} - calc(${(props) => props.theme.spacing(2)} - 2px); + padding: ${({ theme }) => theme.spacing(2)} + calc(${({ theme }) => theme.spacing(2)} - 2px); user-select: none; - width: calc(160px - ${(props) => props.theme.spacing(4)}); + width: calc(160px - ${({ theme }) => theme.spacing(4)}); &:hover { - background: ${(props) => props.theme.lightBackgroundTransparent}; + background: ${({ theme }) => theme.background.transparent.light}; } `; @@ -102,18 +99,18 @@ const StyledDropdownItemClipped = styled.span` const StyledDropdownTopOption = styled.li` align-items: center; - border-bottom: 1px solid ${(props) => props.theme.lightBorder}; - color: ${(props) => props.theme.text80}; + border-bottom: 1px solid ${({ theme }) => theme.border.color.light}; + color: ${({ theme }) => theme.font.color.primary}; cursor: pointer; display: flex; - font-size: ${(props) => props.theme.fontSizeSmall}; - font-weight: ${(props) => props.theme.fontWeightMedium}; + font-size: ${({ theme }) => theme.font.size.sm}; + font-weight: ${({ theme }) => theme.font.weight.medium}; justify-content: space-between; - padding: calc(${(props) => props.theme.spacing(2)}) - calc(${(props) => props.theme.spacing(2)}); + padding: calc(${({ theme }) => theme.spacing(2)}) + calc(${({ theme }) => theme.spacing(2)}); &:hover { - background: ${(props) => props.theme.lightBackgroundTransparent}; + background: ${({ theme }) => theme.background.transparent.light}; } user-select: none; `; @@ -121,19 +118,19 @@ const StyledDropdownTopOption = styled.li` const StyledIcon = styled.div` display: flex; justify-content: center; - margin-right: ${(props) => props.theme.spacing(1)}; - min-width: ${(props) => props.theme.spacing(4)}; + margin-right: ${({ theme }) => theme.spacing(1)}; + min-width: ${({ theme }) => theme.spacing(4)}; `; const StyledSearchField = styled.li` align-items: center; border-bottom: var(--wraper-border) solid - ${(props) => props.theme.primaryBorder}; - color: ${(props) => props.theme.text60}; + ${({ theme }) => theme.border.color.light}; + color: ${({ theme }) => theme.font.color.secondary}; cursor: pointer; display: flex; - font-weight: ${(props) => props.theme.fontWeightMedium}; + font-weight: ${({ theme }) => theme.font.weight.medium}; justify-content: space-between; overflow: hidden; @@ -141,7 +138,7 @@ const StyledSearchField = styled.li` input { border-radius: 8px; box-sizing: border-box; - font-family: ${(props) => props.theme.fontFamily}; + font-family: ${({ theme }) => theme.font.family}; height: 36px; padding: 8px; width: 100%; @@ -192,7 +189,7 @@ function DropdownButton({ } const StyleAngleDownContainer = styled.div` - color: ${(props) => props.theme.text40}; + color: ${({ theme }) => theme.font.color.tertiary}; display: flex; height: 100%; justify-content: center; diff --git a/front/src/modules/ui/components/table/table-header/SortAndFilterBar.tsx b/front/src/modules/ui/components/table/table-header/SortAndFilterBar.tsx index cd5cddd5c..347c4b527 100644 --- a/front/src/modules/ui/components/table/table-header/SortAndFilterBar.tsx +++ b/front/src/modules/ui/components/table/table-header/SortAndFilterBar.tsx @@ -20,7 +20,7 @@ type OwnProps = { const StyledBar = styled.div` align-items: center; - border-top: 1px solid ${(props) => props.theme.primaryBorder}; + border-top: 1px solid ${({ theme }) => theme.border.color.light}; display: flex; flex-direction: row; height: 40px; @@ -31,21 +31,21 @@ const StyledChipcontainer = styled.div` align-items: center; display: flex; flex-direction: row; - gap: ${(props) => props.theme.spacing(1)}; + gap: ${({ theme }) => theme.spacing(1)}; height: 40px; justify-content: space-between; - margin-left: ${(props) => props.theme.spacing(2)}; + margin-left: ${({ theme }) => theme.spacing(2)}; overflow-x: auto; `; const StyledCancelButton = styled.button` background-color: inherit; border: none; - color: ${(props) => props.theme.text60}; + color: ${({ theme }) => theme.font.color.secondary}; cursor: pointer; font-weight: 500; margin-left: auto; - margin-right: ${(props) => props.theme.spacing(2)}; + margin-right: ${({ theme }) => theme.spacing(2)}; padding: ${(props) => { const horiz = props.theme.spacing(2); const vert = props.theme.spacing(1); @@ -54,8 +54,8 @@ const StyledCancelButton = styled.button` user-select: none; &:hover { - background-color: ${(props) => props.theme.tertiaryBackground}; - border-radius: ${(props) => props.theme.spacing(1)}; + background-color: ${({ theme }) => theme.background.tertiary}; + border-radius: ${({ theme }) => theme.spacing(1)}; } `; @@ -78,9 +78,9 @@ function SortAndFilterBar({ id={sort.key} icon={ sort.order === 'desc' ? ( - + ) : ( - + ) } onRemove={() => onRemoveSort(sort.key)} diff --git a/front/src/modules/ui/components/table/table-header/SortOrFilterChip.tsx b/front/src/modules/ui/components/table/table-header/SortOrFilterChip.tsx index df7c248be..2ad247624 100644 --- a/front/src/modules/ui/components/table/table-header/SortOrFilterChip.tsx +++ b/front/src/modules/ui/components/table/table-header/SortOrFilterChip.tsx @@ -14,30 +14,34 @@ type OwnProps = { const StyledChip = styled.div` align-items: center; - background-color: ${(props) => props.theme.blueHighTransparency}; - border: 1px solid ${(props) => props.theme.blueLowTransparency}; + background-color: ${({ theme }) => theme.background.secondary}; + border: 1px solid ${({ theme }) => theme.border.color.medium}; border-radius: 50px; - color: ${(props) => props.theme.blue}; + color: ${({ theme }) => theme.color.blue}; display: flex; flex-direction: row; flex-shrink: 0; - font-size: ${(props) => props.theme.fontSizeSmall}; - padding: ${(props) => props.theme.spacing(1) + ' ' + props.theme.spacing(2)}; + font-size: ${({ theme }) => theme.font.size.sm}; + padding: ${({ theme }) => theme.spacing(1) + ' ' + theme.spacing(2)}; `; const StyledIcon = styled.div` align-items: center; display: flex; - margin-right: ${(props) => props.theme.spacing(1)}; + margin-right: ${({ theme }) => theme.spacing(1)}; `; const StyledDelete = styled.div` align-items: center; cursor: pointer; display: flex; - font-size: ${(props) => props.theme.fontSizeSmall}; - margin-left: ${(props) => props.theme.spacing(2)}; + font-size: ${({ theme }) => theme.font.size.sm}; + margin-left: ${({ theme }) => theme.spacing(2)}; margin-top: 1px; user-select: none; + &:hover { + background-color: ${({ theme }) => theme.background.tertiary}; + border-radius: ${({ theme }) => theme.border.radius.sm}; + } `; const StyledLabelKey = styled.div` @@ -58,7 +62,7 @@ function SortOrFilterChip({ {labelKey && {labelKey}: } {labelValue} - + ); diff --git a/front/src/modules/ui/components/table/table-header/TableHeader.tsx b/front/src/modules/ui/components/table/table-header/TableHeader.tsx index bc60e9653..ff3d7974f 100644 --- a/front/src/modules/ui/components/table/table-header/TableHeader.tsx +++ b/front/src/modules/ui/components/table/table-header/TableHeader.tsx @@ -31,22 +31,22 @@ const StyledContainer = styled.div` const StyledTableHeader = styled.div` align-items: center; - color: ${(props) => props.theme.text60}; + color: ${({ theme }) => theme.font.color.secondary}; display: flex; flex-direction: row; font-weight: 500; height: 40px; justify-content: space-between; - padding-left: ${(props) => props.theme.spacing(3)}; - padding-right: ${(props) => props.theme.spacing(2)}; + padding-left: ${({ theme }) => theme.spacing(3)}; + padding-right: ${({ theme }) => theme.spacing(2)}; `; const StyledIcon = styled.div` display: flex; - margin-right: ${(props) => props.theme.spacing(2)}; + margin-right: ${({ theme }) => theme.spacing(2)}; & > svg { - font-size: ${(props) => props.theme.iconSizeSmall}; + font-size: ${({ theme }) => theme.icon.size.sm}; } `; diff --git a/front/src/modules/ui/layout/DefaultLayout.tsx b/front/src/modules/ui/layout/DefaultLayout.tsx index 20b4b7078..db490dca8 100644 --- a/front/src/modules/ui/layout/DefaultLayout.tsx +++ b/front/src/modules/ui/layout/DefaultLayout.tsx @@ -5,12 +5,13 @@ import { currentUserState } from '@/auth/states/currentUserState'; import { CommandMenu } from '@/command-menu/components/CommandMenu'; import { AppNavbar } from '~/AppNavbar'; +import { MOBILE_VIEWPORT } from '../themes/themes'; + import { NavbarContainer } from './navbar/NavbarContainer'; import { isNavbarOpenedState } from './states/isNavbarOpenedState'; -import { MOBILE_VIEWPORT } from './styles/themes'; const StyledLayout = styled.div` - background: ${(props) => props.theme.noisyBackground}; + background: ${({ theme }) => theme.background.noisy}; display: flex; flex-direction: row; height: 100vh; diff --git a/front/src/modules/ui/layout/Panel.tsx b/front/src/modules/ui/layout/Panel.tsx index d953d2fcf..27947b09c 100644 --- a/front/src/modules/ui/layout/Panel.tsx +++ b/front/src/modules/ui/layout/Panel.tsx @@ -2,8 +2,8 @@ import React from 'react'; import styled from '@emotion/styled'; const StyledPanel = styled.div` - background: ${(props) => props.theme.primaryBackground}; - border: 1px solid ${(props) => props.theme.primaryBorder}; + background: ${({ theme }) => theme.background.primary}; + border: 1px solid ${({ theme }) => theme.border.color.light}; border-radius: 8px; display: flex; flex-direction: row; diff --git a/front/src/modules/ui/layout/containers/ContentContainer.tsx b/front/src/modules/ui/layout/containers/ContentContainer.tsx index df7adac7f..4cbb3a0f0 100644 --- a/front/src/modules/ui/layout/containers/ContentContainer.tsx +++ b/front/src/modules/ui/layout/containers/ContentContainer.tsx @@ -11,16 +11,16 @@ type OwnProps = { }; const MainContainer = styled.div<{ topMargin: number }>` - background: ${(props) => props.theme.noisyBackground}; + background: ${({ theme }) => theme.background.noisy}; display: flex; flex-direction: row; - gap: ${(props) => props.theme.spacing(2)}; + gap: ${({ theme }) => theme.spacing(2)}; height: calc(100% - ${(props) => props.topMargin}px); - padding-bottom: ${(props) => props.theme.spacing(3)}; - padding-right: ${(props) => props.theme.spacing(3)}; - width: calc(100% - ${(props) => props.theme.spacing(3)}); + padding-bottom: ${({ theme }) => theme.spacing(3)}; + padding-right: ${({ theme }) => theme.spacing(3)}; + width: calc(100% - ${({ theme }) => theme.spacing(3)}); `; type LeftContainerProps = { diff --git a/front/src/modules/ui/layout/containers/NoTopBarContainer.tsx b/front/src/modules/ui/layout/containers/NoTopBarContainer.tsx index 4cabe87cc..aa9b55ee8 100644 --- a/front/src/modules/ui/layout/containers/NoTopBarContainer.tsx +++ b/front/src/modules/ui/layout/containers/NoTopBarContainer.tsx @@ -8,7 +8,7 @@ type OwnProps = { const StyledContainer = styled.div` display: flex; - padding-top: ${(props) => props.theme.spacing(4)}; + padding-top: ${({ theme }) => theme.spacing(4)}; width: 100%; `; diff --git a/front/src/modules/ui/layout/navbar/NavCollapseButton.tsx b/front/src/modules/ui/layout/navbar/NavCollapseButton.tsx index 5b04d64b6..e2ee8828b 100644 --- a/front/src/modules/ui/layout/navbar/NavCollapseButton.tsx +++ b/front/src/modules/ui/layout/navbar/NavCollapseButton.tsx @@ -5,16 +5,16 @@ import { IconLayoutSidebarLeftCollapse, IconLayoutSidebarRightCollapse, } from '@/ui/icons'; +import { MOBILE_VIEWPORT } from '@/ui/themes/themes'; import { isNavbarOpenedState } from '../states/isNavbarOpenedState'; -import { MOBILE_VIEWPORT } from '../styles/themes'; const CollapseButton = styled.button<{ hideOnDesktop: boolean | undefined }>` align-items: center; background: inherit; border: 0; - color: ${(props) => props.theme.text30}; + color: ${({ theme }) => theme.font.color.light}; cursor: pointer; display: flex; diff --git a/front/src/modules/ui/layout/navbar/NavItem.tsx b/front/src/modules/ui/layout/navbar/NavItem.tsx index 21d9ae0d5..7df6dde21 100644 --- a/front/src/modules/ui/layout/navbar/NavItem.tsx +++ b/front/src/modules/ui/layout/navbar/NavItem.tsx @@ -2,7 +2,7 @@ import { ReactNode } from 'react'; import { useNavigate } from 'react-router-dom'; import styled from '@emotion/styled'; -import { MOBILE_VIEWPORT } from '../styles/themes'; +import { MOBILE_VIEWPORT } from '@/ui/themes/themes'; type OwnProps = { label: string; @@ -23,44 +23,45 @@ type StyledItemProps = { const StyledItem = styled.button` align-items: center; background: ${(props) => - props.active ? props.theme.lightBackgroundTransparent : 'inherit'}; + props.active ? props.theme.background.transparent.light : 'inherit'}; border: none; border-radius: 4px; color: ${(props) => { if (props.active) { - return props.theme.text80; + return props.theme.font.color.primary; } if (props.danger) { - return props.theme.red; + return props.theme.color.red; } 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')}; display: flex; font-family: 'Inter'; - font-size: ${(props) => props.theme.fontSizeMedium}; - margin-bottom: calc(${(props) => props.theme.spacing(1)} / 2); - padding-bottom: ${(props) => props.theme.spacing(1)}; - padding-left: ${(props) => props.theme.spacing(1)}; - padding-top: ${(props) => props.theme.spacing(1)}; + font-size: ${({ theme }) => theme.font.size.md}; + margin-bottom: calc(${({ theme }) => theme.spacing(1)} / 2); + padding-bottom: ${({ theme }) => theme.spacing(1)}; + padding-left: ${({ theme }) => theme.spacing(1)}; + padding-top: ${({ theme }) => theme.spacing(1)}; pointer-events: ${(props) => (props.soon ? 'none' : 'auto')}; :hover { - background: ${(props) => props.theme.lightBackgroundTransparent}; - color: ${(props) => (props.danger ? props.theme.red : props.theme.text80)}; + background: ${({ theme }) => theme.background.transparent.light}; + color: ${(props) => + props.danger ? props.theme.color.red : props.theme.font.color.primary}; } user-select: none; @media (max-width: ${MOBILE_VIEWPORT}px) { - font-size: ${(props) => props.theme.fontSizeLarge}; + font-size: ${({ theme }) => theme.font.size.lg}; } `; const StyledItemLabel = styled.div` display: flex; - margin-left: ${(props) => props.theme.spacing(2)}; + margin-left: ${({ theme }) => theme.spacing(2)}; `; const StyledSoonPill = styled.div` @@ -68,11 +69,10 @@ const StyledSoonPill = styled.div` justify-content: center; align-items: center; border-radius: 50px; - background-color: ${(props) => props.theme.lightBackgroundTransparent}; - font-size: ${(props) => props.theme.fontSizeExtraSmall}; - padding: ${(props) => props.theme.spacing(1)} - ${(props) => props.theme.spacing(2)} ${(props) => props.theme.spacing(1)} - ${(props) => props.theme.spacing(2)}; + background-color: ${({ theme }) => theme.background.transparent.light}; + font-size: ${({ theme }) => theme.font.size.xs}; + padding: ${({ theme }) => theme.spacing(1)} ${({ theme }) => theme.spacing(2)} + ${({ theme }) => theme.spacing(1)} ${({ theme }) => theme.spacing(2)}; margin-left: auto; // this aligns the pill to the right `; diff --git a/front/src/modules/ui/layout/navbar/NavTitle.tsx b/front/src/modules/ui/layout/navbar/NavTitle.tsx index e7128e97c..0f327f7ff 100644 --- a/front/src/modules/ui/layout/navbar/NavTitle.tsx +++ b/front/src/modules/ui/layout/navbar/NavTitle.tsx @@ -5,13 +5,13 @@ type OwnProps = { }; const StyledTitle = styled.div` - color: ${(props) => props.theme.text30}; + color: ${({ theme }) => theme.font.color.light}; display: flex; - font-size: ${(props) => props.theme.fontSizeExtraSmall}; + font-size: ${({ theme }) => theme.font.size.xs}; font-weight: 600; - padding-bottom: ${(props) => props.theme.spacing(2)}; - padding-left: ${(props) => props.theme.spacing(1)}; - padding-top: ${(props) => props.theme.spacing(8)}; + padding-bottom: ${({ theme }) => theme.spacing(2)}; + padding-left: ${({ theme }) => theme.spacing(1)}; + padding-top: ${({ theme }) => theme.spacing(8)}; text-transform: uppercase; `; diff --git a/front/src/modules/ui/layout/navbar/NavWorkspaceButton.tsx b/front/src/modules/ui/layout/navbar/NavWorkspaceButton.tsx index e074dd818..a5d661ac2 100644 --- a/front/src/modules/ui/layout/navbar/NavWorkspaceButton.tsx +++ b/front/src/modules/ui/layout/navbar/NavWorkspaceButton.tsx @@ -13,9 +13,9 @@ const StyledContainer = styled.div` display: flex; height: 34px; justify-content: space-between; - margin-left: ${(props) => props.theme.spacing(1)}; - padding: ${(props) => props.theme.spacing(2)}; - padding-top: ${(props) => props.theme.spacing(1)}; + margin-left: ${({ theme }) => theme.spacing(1)}; + padding: ${({ theme }) => theme.spacing(2)}; + padding-top: ${({ theme }) => theme.spacing(1)}; user-select: none; width: 100%; `; @@ -39,11 +39,11 @@ const StyledLogo = styled.div` `; const StyledName = styled.div` - color: ${(props) => props.theme.text80}; + color: ${({ theme }) => theme.font.color.primary}; font-family: 'Inter'; - font-size: ${(props) => props.theme.fontSizeMedium}; + font-size: ${({ theme }) => theme.font.size.md}; font-weight: 500; - margin-left: ${(props) => props.theme.spacing(1)}; + margin-left: ${({ theme }) => theme.spacing(1)}; `; function NavWorkspaceButton() { diff --git a/front/src/modules/ui/layout/navbar/NavbarContainer.tsx b/front/src/modules/ui/layout/navbar/NavbarContainer.tsx index e38de7f1f..88f8f27b8 100644 --- a/front/src/modules/ui/layout/navbar/NavbarContainer.tsx +++ b/front/src/modules/ui/layout/navbar/NavbarContainer.tsx @@ -1,13 +1,14 @@ import styled from '@emotion/styled'; import { useRecoilValue } from 'recoil'; +import { MOBILE_VIEWPORT } from '@/ui/themes/themes'; + import { isNavbarOpenedState } from '../states/isNavbarOpenedState'; -import { MOBILE_VIEWPORT } from '../styles/themes'; const StyledNavbarContainer = styled.div` flex-direction: column; width: ${(props) => (useRecoilValue(isNavbarOpenedState) ? 'auto' : '0')}; - padding: ${(props) => props.theme.spacing(2)}; + padding: ${({ theme }) => theme.spacing(2)}; flex-shrink: 0; overflow: hidden; diff --git a/front/src/modules/ui/layout/navbar/sub-navbar/NavBackButton.tsx b/front/src/modules/ui/layout/navbar/sub-navbar/NavBackButton.tsx index d540564b7..da97abcbb 100644 --- a/front/src/modules/ui/layout/navbar/sub-navbar/NavBackButton.tsx +++ b/front/src/modules/ui/layout/navbar/sub-navbar/NavBackButton.tsx @@ -13,14 +13,14 @@ const IconAndButtonContainer = styled.button` align-items: center; background: inherit; border: none; - color: ${(props) => props.theme.text60}; + color: ${({ theme }) => theme.font.color.secondary}; cursor: pointer; display: flex; flex-direction: row; - font-size: ${(props) => props.theme.fontSizeLarge}; - font-weight: ${(props) => props.theme.fontWeightSemibold}; - gap: ${(props) => props.theme.spacing(1)}; - padding: ${(props) => props.theme.spacing(1)}; + font-size: ${({ theme }) => theme.font.size.lg}; + font-weight: ${({ theme }) => theme.font.weight.semiBold}; + gap: ${({ theme }) => theme.spacing(1)}; + padding: ${({ theme }) => theme.spacing(1)}; width: 100%; `; diff --git a/front/src/modules/ui/layout/navbar/sub-navbar/SubNavBarContainer.tsx b/front/src/modules/ui/layout/navbar/sub-navbar/SubNavBarContainer.tsx index 9357f1998..9f7e19e94 100644 --- a/front/src/modules/ui/layout/navbar/sub-navbar/SubNavBarContainer.tsx +++ b/front/src/modules/ui/layout/navbar/sub-navbar/SubNavBarContainer.tsx @@ -11,7 +11,7 @@ const StyledContainer = styled.div` display: flex; flex-direction: column; padding-left: 300px; - padding-top: ${(props) => props.theme.spacing(6)}; + padding-top: ${({ theme }) => theme.spacing(6)}; `; const StyledNavItemsContainer = styled.div` diff --git a/front/src/modules/ui/layout/right-drawer/components/RightDrawer.tsx b/front/src/modules/ui/layout/right-drawer/components/RightDrawer.tsx index fd8ca21bb..4589e9d3d 100644 --- a/front/src/modules/ui/layout/right-drawer/components/RightDrawer.tsx +++ b/front/src/modules/ui/layout/right-drawer/components/RightDrawer.tsx @@ -12,7 +12,7 @@ import { RightDrawerRouter } from './RightDrawerRouter'; const StyledRightDrawer = styled.div` display: flex; flex-direction: row; - width: ${(props) => props.theme.rightDrawerWidth}; + width: ${({ theme }) => theme.rightDrawerWidth}; `; export function RightDrawer() { diff --git a/front/src/modules/ui/layout/right-drawer/components/RightDrawerTopBar.tsx b/front/src/modules/ui/layout/right-drawer/components/RightDrawerTopBar.tsx index a6e56628a..2eb4ea650 100644 --- a/front/src/modules/ui/layout/right-drawer/components/RightDrawerTopBar.tsx +++ b/front/src/modules/ui/layout/right-drawer/components/RightDrawerTopBar.tsx @@ -4,8 +4,8 @@ import { RightDrawerTopBarCloseButton } from './RightDrawerTopBarCloseButton'; const StyledRightDrawerTopBar = styled.div` align-items: center; - border-bottom: 1px solid ${(props) => props.theme.lightBorder}; - color: ${(props) => props.theme.text60}; + border-bottom: 1px solid ${({ theme }) => theme.border.color.light}; + color: ${({ theme }) => theme.font.color.secondary}; display: flex; flex-direction: row; font-size: 13px; @@ -18,7 +18,7 @@ const StyledRightDrawerTopBar = styled.div` const StyledTopBarTitle = styled.div` align-items: center; font-weight: 500; - margin-right: ${(props) => props.theme.spacing(1)}; + margin-right: ${({ theme }) => theme.spacing(1)}; `; export function RightDrawerTopBar({ diff --git a/front/src/modules/ui/layout/right-drawer/components/RightDrawerTopBarCloseButton.tsx b/front/src/modules/ui/layout/right-drawer/components/RightDrawerTopBarCloseButton.tsx index 3614323bc..68e063892 100644 --- a/front/src/modules/ui/layout/right-drawer/components/RightDrawerTopBarCloseButton.tsx +++ b/front/src/modules/ui/layout/right-drawer/components/RightDrawerTopBarCloseButton.tsx @@ -8,7 +8,7 @@ import { isRightDrawerOpenState } from '../states/isRightDrawerOpenState'; const StyledButton = styled.button` align-items: center; background: none; - border: 1px solid ${(props) => props.theme.lightBorder}; + border: 1px solid ${({ theme }) => theme.border.color.light}; border-radius: 4px; cursor: pointer; display: flex; @@ -16,14 +16,14 @@ const StyledButton = styled.button` height: 24px; padding: 3px; - transition: ${(props) => props.theme.clickableElementBackgroundTransition}; + transition: ${({ theme }) => theme.clickableElementBackgroundTransition}; width: 24px; &:hover { - background: ${(props) => props.theme.lightBackgroundTransparent}; + background: ${({ theme }) => theme.background.transparent.light}; } svg { - color: ${(props) => props.theme.text40}; + color: ${({ theme }) => theme.font.color.tertiary}; transform: rotate(45deg); } `; diff --git a/front/src/modules/ui/layout/states/isNavbarOpenedState.ts b/front/src/modules/ui/layout/states/isNavbarOpenedState.ts index ed211773c..0c71d0ebb 100644 --- a/front/src/modules/ui/layout/states/isNavbarOpenedState.ts +++ b/front/src/modules/ui/layout/states/isNavbarOpenedState.ts @@ -1,6 +1,6 @@ import { atom } from 'recoil'; -import { MOBILE_VIEWPORT } from '../styles/themes'; +import { MOBILE_VIEWPORT } from '@/ui/themes/themes'; const isMobile = window.innerWidth <= MOBILE_VIEWPORT; diff --git a/front/src/modules/ui/layout/styles/assets/dark-noise.jpg b/front/src/modules/ui/layout/styles/assets/dark-noise.jpg deleted file mode 100644 index e78819ea50c17adb80e9709914dbc9590914ad32..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18269 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 - 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}; - } - `; diff --git a/front/src/modules/ui/layout/styles/texts.ts b/front/src/modules/ui/layout/styles/texts.ts deleted file mode 100644 index 4dc8f3b74..000000000 --- a/front/src/modules/ui/layout/styles/texts.ts +++ /dev/null @@ -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, -}; diff --git a/front/src/modules/ui/layout/styles/themes.ts b/front/src/modules/ui/layout/styles/themes.ts deleted file mode 100644 index fb2b1caf6..000000000 --- a/front/src/modules/ui/layout/styles/themes.ts +++ /dev/null @@ -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; diff --git a/front/src/modules/ui/layout/top-bar/TopBar.tsx b/front/src/modules/ui/layout/top-bar/TopBar.tsx index f5c434098..3601b19a6 100644 --- a/front/src/modules/ui/layout/top-bar/TopBar.tsx +++ b/front/src/modules/ui/layout/top-bar/TopBar.tsx @@ -10,13 +10,13 @@ export const TOP_BAR_MIN_HEIGHT = 40; const TopBarContainer = styled.div` align-items: center; - background: ${(props) => props.theme.noisyBackground}; - color: ${(props) => props.theme.text80}; + background: ${({ theme }) => theme.background.noisy}; + color: ${({ theme }) => theme.font.color.primary}; display: flex; flex-direction: row; font-size: 14px; min-height: ${TOP_BAR_MIN_HEIGHT}px; - padding: ${(props) => props.theme.spacing(2)}; + padding: ${({ theme }) => theme.spacing(2)}; `; const TitleContainer = styled.div` @@ -29,16 +29,16 @@ const TitleContainer = styled.div` const AddButtonContainer = styled.div` align-items: center; - border: 1px solid ${(props) => props.theme.primaryBorder}; + border: 1px solid ${({ theme }) => theme.border.color.medium}; border-radius: 4px; - color: ${(props) => props.theme.text40}; + color: ${({ theme }) => theme.font.color.tertiary}; cursor: pointer; display: flex; flex-shrink: 0; height: 28px; justify-content: center; justify-self: flex-end; - margin-right: ${(props) => props.theme.spacing(1)}; + margin-right: ${({ theme }) => theme.spacing(1)}; user-select: none; width: 28px; `; diff --git a/front/src/modules/ui/layout/top-bar/TopTitle.tsx b/front/src/modules/ui/layout/top-bar/TopTitle.tsx index a72c87dbd..59e7e0827 100644 --- a/front/src/modules/ui/layout/top-bar/TopTitle.tsx +++ b/front/src/modules/ui/layout/top-bar/TopTitle.tsx @@ -10,8 +10,8 @@ const TitleAndCollapseContainer = styled.div` const TitleContainer = styled.div` display: flex; - font-size: ${(props) => props.theme.fontSizeLarge}; - font-weight: ${(props) => props.theme.fontWeightSemibold}; + font-size: ${({ theme }) => theme.font.size.lg}; + font-weight: ${({ theme }) => theme.font.weight.semiBold}; width: 100%; `; diff --git a/front/src/modules/ui/themes/assets/dark-noise.png b/front/src/modules/ui/themes/assets/dark-noise.png new file mode 100644 index 0000000000000000000000000000000000000000..e20f9e601b682405d77a2252b834384170469fc3 GIT binary patch literal 208324 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

YBx;z1xRjL;pe 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 c=m&@P`1_JvR8Z9c;CJyW_ + 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}; + } + `; diff --git a/front/src/modules/ui/themes/font.ts b/front/src/modules/ui/themes/font.ts new file mode 100644 index 000000000..fbd9418a4 --- /dev/null +++ b/front/src/modules/ui/themes/font.ts @@ -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, +}; diff --git a/front/src/modules/ui/themes/icon.ts b/front/src/modules/ui/themes/icon.ts new file mode 100644 index 000000000..b547c1c6c --- /dev/null +++ b/front/src/modules/ui/themes/icon.ts @@ -0,0 +1,12 @@ +export const icon = { + size: { + sm: 14, + md: 16, + lg: 20, + }, + stroke: { + sm: 1.6, + md: 2, + lg: 2.5, + }, +}; diff --git a/front/src/modules/ui/themes/text.ts b/front/src/modules/ui/themes/text.ts new file mode 100644 index 000000000..0f571de7c --- /dev/null +++ b/front/src/modules/ui/themes/text.ts @@ -0,0 +1,13 @@ +export const text = { + lineHeight: { + lg: 1.5, + md: 1.2, + }, + + iconSizeMedium: 16, + iconSizeSmall: 14, + + iconStrikeLight: 1.6, + iconStrikeMedium: 2, + iconStrikeBold: 2.5, +}; diff --git a/front/src/modules/ui/themes/themes.ts b/front/src/modules/ui/themes/themes.ts new file mode 100644 index 000000000..2392d6e8e --- /dev/null +++ b/front/src/modules/ui/themes/themes.ts @@ -0,0 +1,47 @@ +import { backgroundDark, backgroundLight } from './background'; +import { blur } from './blur'; +import { borderDark, borderLight } from './border'; +import { boxShadowDark, boxShadowLight } from './boxShadow'; +import { color, grayScale } from './colors'; +import { fontDark, fontLight } from './font'; +import { icon } from './icon'; +import { text } from './text'; + +const common = { + color: color, + grayScale: grayScale, + icon: icon, + text: text, + blur: blur, + spacing: (multiplicator: number) => `${multiplicator * 4}px`, + table: { + horizontalCellMargin: '8px', + checkboxColumnWidth: '32px', + }, + rightDrawerWidth: '300px', + clickableElementBackgroundTransition: 'background 0.1s ease', + lastLayerZIndex: 2147483647, +}; + +export const lightTheme = { + ...common, + ...{ + background: backgroundLight, + border: borderLight, + boxShadow: boxShadowLight, + font: fontLight, + }, +}; +export type ThemeType = typeof lightTheme; + +export const darkTheme: ThemeType = { + ...common, + ...{ + background: backgroundDark, + border: borderDark, + boxShadow: boxShadowDark, + font: fontDark, + }, +}; + +export const MOBILE_VIEWPORT = 768; diff --git a/front/src/modules/users/components/Avatar.tsx b/front/src/modules/users/components/Avatar.tsx index f92d0d5e9..f821382d3 100644 --- a/front/src/modules/users/components/Avatar.tsx +++ b/front/src/modules/users/components/Avatar.tsx @@ -14,17 +14,17 @@ type OwnProps = { export const StyledAvatar = styled.div>` background-color: ${(props) => !isNonEmptyString(props.avatarUrl) - ? props.theme.tertiaryBackground + ? props.theme.background.tertiary : 'none'}; background-image: url(${(props) => isNonEmptyString(props.avatarUrl) ? props.avatarUrl : 'none'}); background-size: cover; border-radius: ${(props) => (props.type === 'rounded' ? '50%' : '2px')}; - color: ${(props) => props.theme.text80}; + color: ${({ theme }) => theme.font.color.primary}; display: flex; - font-size: ${(props) => props.theme.fontSizeSmall}; - font-weight: ${(props) => props.theme.fontWeightMedium}; + font-size: ${({ theme }) => theme.font.size.sm}; + font-weight: ${({ theme }) => theme.font.weight.medium}; height: ${(props) => props.size}px; justify-content: center; diff --git a/front/src/pages/auth/Index.tsx b/front/src/pages/auth/Index.tsx index 535fd0bd3..43b5de6ed 100644 --- a/front/src/pages/auth/Index.tsx +++ b/front/src/pages/auth/Index.tsx @@ -65,7 +65,7 @@ export function Index() { Welcome to Twenty - + Continue With Google diff --git a/front/src/pages/auth/PasswordLogin.tsx b/front/src/pages/auth/PasswordLogin.tsx index 0ba5ff550..ac6504c23 100644 --- a/front/src/pages/auth/PasswordLogin.tsx +++ b/front/src/pages/auth/PasswordLogin.tsx @@ -31,7 +31,7 @@ const StyledButtonContainer = styled.div` `; const StyledErrorContainer = styled.div` - color: ${({ theme }) => theme.red}; + color: ${({ theme }) => theme.color.red}; `; export function PasswordLogin() { diff --git a/front/src/pages/companies/Companies.tsx b/front/src/pages/companies/Companies.tsx index ce7006bc1..8fc6dcf2e 100644 --- a/front/src/pages/companies/Companies.tsx +++ b/front/src/pages/companies/Companies.tsx @@ -80,7 +80,7 @@ export function Companies() { return ( } + icon={} onAddButtonClick={handleAddButtonClick} > <> diff --git a/front/src/pages/companies/companies-filters.tsx b/front/src/pages/companies/companies-filters.tsx index bfe8724ce..2609edb8e 100644 --- a/front/src/pages/companies/companies-filters.tsx +++ b/front/src/pages/companies/companies-filters.tsx @@ -8,18 +8,13 @@ import { IconUser, IconUsers, } from '@/ui/icons/index'; -import { commonText } from '@/ui/layout/styles/texts'; +import { icon } from '@/ui/themes/icon'; import { QueryMode, User } from '~/generated/graphql'; export const nameFilter = { key: 'name', label: 'Name', - icon: ( - - ), + icon: , type: 'text', operands: [ { @@ -49,12 +44,7 @@ export const nameFilter = { export const employeesFilter = { key: 'employees', label: 'Employees', - icon: ( - - ), + icon: , type: 'text', operands: [ { @@ -81,12 +71,7 @@ export const employeesFilter = { export const urlFilter = { key: 'domainName', label: 'Url', - icon: ( - - ), + icon: , type: 'text', operands: [ { @@ -119,12 +104,7 @@ export const urlFilter = { export const addressFilter = { key: 'address', label: 'Address', - icon: ( - - ), + icon: , type: 'text', operands: [ { @@ -154,12 +134,7 @@ export const addressFilter = { export const ccreatedAtFilter = { key: 'createdAt', label: 'Created At', - icon: ( - - ), + icon: , type: 'date', operands: [ { @@ -186,12 +161,7 @@ export const ccreatedAtFilter = { export const accountOwnerFilter = { key: 'accountOwner', label: 'Account Owner', - icon: ( - - ), + icon: , type: 'relation', searchConfig: { query: SEARCH_USER_QUERY, diff --git a/front/src/pages/opportunities/Opportunities.tsx b/front/src/pages/opportunities/Opportunities.tsx index ddf1181d8..5cbb81b9d 100644 --- a/front/src/pages/opportunities/Opportunities.tsx +++ b/front/src/pages/opportunities/Opportunities.tsx @@ -46,7 +46,7 @@ export function Opportunities() { return ( } + icon={} > {items && pipelineId ? ( } + icon={} onAddButtonClick={handleAddButtonClick} > <> @@ -88,7 +88,7 @@ export function People() { data={people} columns={peopleColumns} viewName="All People" - viewIcon={} + viewIcon={} availableSorts={availableSorts} availableFilters={availableFilters} onSortsUpdate={updateSorts} diff --git a/front/src/pages/people/people-filters.tsx b/front/src/pages/people/people-filters.tsx index 502c0ae53..d73dab1c9 100644 --- a/front/src/pages/people/people-filters.tsx +++ b/front/src/pages/people/people-filters.tsx @@ -8,18 +8,13 @@ import { IconPhone, IconUser, } from '@/ui/icons/index'; -import { commonText } from '@/ui/layout/styles/texts'; +import { icon } from '@/ui/themes/icon'; import { Company, QueryMode } from '~/generated/graphql'; export const fullnameFilter = { key: 'fullname', label: 'People', - icon: ( - - ), + icon: , type: 'text', operands: [ { @@ -72,12 +67,7 @@ export const fullnameFilter = { export const emailFilter = { key: 'email', label: 'Email', - icon: ( - - ), + icon: , type: 'text', operands: [ { @@ -107,12 +97,7 @@ export const emailFilter = { export const companyFilter = { key: 'company_name', label: 'Company', - icon: ( - - ), + icon: , type: 'relation', searchConfig: { query: SEARCH_COMPANY_QUERY, @@ -156,12 +141,7 @@ export const companyFilter = { export const phoneFilter = { key: 'phone', label: 'Phone', - icon: ( - - ), + icon: , type: 'text', operands: [ { @@ -191,12 +171,7 @@ export const phoneFilter = { export const createdAtFilter = { key: 'createdAt', label: 'Created At', - icon: ( - - ), + icon: , type: 'date', operands: [ { @@ -223,12 +198,7 @@ export const createdAtFilter = { export const cityFilter = { key: 'city', label: 'City', - icon: ( - - ), + icon: , type: 'text', operands: [ { diff --git a/front/src/pages/settings/SettingsProfile.tsx b/front/src/pages/settings/SettingsProfile.tsx index dc1f4823f..6f1919524 100644 --- a/front/src/pages/settings/SettingsProfile.tsx +++ b/front/src/pages/settings/SettingsProfile.tsx @@ -10,7 +10,7 @@ import { NoTopBarContainer } from '@/ui/layout/containers/NoTopBarContainer'; const StyledContainer = styled.div` display: flex; flex-direction: column; - padding: ${(props) => props.theme.spacing(8)}; + padding: ${({ theme }) => theme.spacing(8)}; width: 490px; `; export function SettingsProfile() { diff --git a/front/src/providers/theme/AppThemeProvider.tsx b/front/src/providers/theme/AppThemeProvider.tsx index 6efaf1601..dbe6fcea8 100644 --- a/front/src/providers/theme/AppThemeProvider.tsx +++ b/front/src/providers/theme/AppThemeProvider.tsx @@ -1,6 +1,6 @@ import { ThemeProvider } from '@emotion/react'; -import { darkTheme, lightTheme } from '@/ui/layout/styles/themes'; +import { darkTheme, lightTheme } from '@/ui/themes/themes'; import { browserPrefersDarkMode } from '@/utils/utils'; type OwnProps = { diff --git a/front/src/testing/ComponentStorybookLayout.tsx b/front/src/testing/ComponentStorybookLayout.tsx index 0ac897dc7..4ad309339 100644 --- a/front/src/testing/ComponentStorybookLayout.tsx +++ b/front/src/testing/ComponentStorybookLayout.tsx @@ -1,8 +1,8 @@ import styled from '@emotion/styled'; const StyledLayout = styled.div` - background: ${(props) => props.theme.primaryBackground}; - border: 1px solid ${(props) => props.theme.lightBorder}; + background: ${({ theme }) => theme.background.primary}; + border: 1px solid ${({ theme }) => theme.border.color.light}; border-radius: 5px; display: flex; diff --git a/front/yarn.lock b/front/yarn.lock index dc3d5e5b5..730e7fb8e 100644 --- a/front/yarn.lock +++ b/front/yarn.lock @@ -10150,6 +10150,11 @@ headers-polyfill@^3.1.0, headers-polyfill@^3.1.2: resolved "https://registry.yarnpkg.com/headers-polyfill/-/headers-polyfill-3.1.2.tgz#9a4dcb545c5b95d9569592ef7ec0708aab763fbe" integrity sha512-tWCK4biJ6hcLqTviLXVR9DTRfYGQMXEIUj3gwJ2rZ5wO/at3XtkI4g8mCvFdUF9l1KMBNCfmNAdnahm1cgavQA== +hex-rgb@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/hex-rgb/-/hex-rgb-5.0.0.tgz#e2c9eb6a37498d66c5a350a221ed4c2c7d1a92d6" + integrity sha512-NQO+lgVUCtHxZ792FodgW0zflK+ozS9X9dwGp9XvvmPlH7pyxd588cn24TD3rmPm/N0AIRXF10Otah8yKqGw4w== + hoist-non-react-statics@^3.3.0, hoist-non-react-statics@^3.3.1, hoist-non-react-statics@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45"