mirror of
				https://github.com/lingble/twenty.git
				synced 2025-10-31 04:37:56 +00:00 
			
		
		
		
	[UI] Remove theme constants from twenty-front and use the ones exported from twenty-ui. (#5558)
Some parts of the Frontend used theme constants exported from `modules/ui` while other parts used theme constants exported from `twenty-ui`. This PR centralizes theme constants by removing them from `modules/ui` completely.
This commit is contained in:
		| @@ -1,7 +1,6 @@ | |||||||
| import { useInView } from 'react-intersection-observer'; | import { useInView } from 'react-intersection-observer'; | ||||||
| import styled from '@emotion/styled'; | import styled from '@emotion/styled'; | ||||||
|  | import { GRAY_SCALE } from 'twenty-ui'; | ||||||
| import { GRAY_SCALE } from '@/ui/theme/constants/GrayScale'; |  | ||||||
|  |  | ||||||
| type FetchMoreLoaderProps = { | type FetchMoreLoaderProps = { | ||||||
|   loading: boolean; |   loading: boolean; | ||||||
|   | |||||||
| @@ -1,14 +1,13 @@ | |||||||
| import { useRef } from 'react'; | import { useRef } from 'react'; | ||||||
| import styled from '@emotion/styled'; | import styled from '@emotion/styled'; | ||||||
| import { useRecoilCallback } from 'recoil'; | import { useRecoilCallback } from 'recoil'; | ||||||
| import { Avatar } from 'twenty-ui'; | import { Avatar, GRAY_SCALE } from 'twenty-ui'; | ||||||
|  |  | ||||||
| import { EmailThreadNotShared } from '@/activities/emails/components/EmailThreadNotShared'; | import { EmailThreadNotShared } from '@/activities/emails/components/EmailThreadNotShared'; | ||||||
| import { useEmailThread } from '@/activities/emails/hooks/useEmailThread'; | import { useEmailThread } from '@/activities/emails/hooks/useEmailThread'; | ||||||
| import { emailThreadIdWhenEmailThreadWasClosedState } from '@/activities/emails/states/lastViewableEmailThreadIdState'; | import { emailThreadIdWhenEmailThreadWasClosedState } from '@/activities/emails/states/lastViewableEmailThreadIdState'; | ||||||
| import { CardContent } from '@/ui/layout/card/components/CardContent'; | import { CardContent } from '@/ui/layout/card/components/CardContent'; | ||||||
| import { useRightDrawer } from '@/ui/layout/right-drawer/hooks/useRightDrawer'; | import { useRightDrawer } from '@/ui/layout/right-drawer/hooks/useRightDrawer'; | ||||||
| import { GRAY_SCALE } from '@/ui/theme/constants/GrayScale'; |  | ||||||
| import { TimelineThread } from '~/generated/graphql'; | import { TimelineThread } from '~/generated/graphql'; | ||||||
| import { formatToHumanReadableDate } from '~/utils'; | import { formatToHumanReadableDate } from '~/utils'; | ||||||
| import { getImageAbsoluteURIOrBase64 } from '~/utils/image/getImageAbsoluteURIOrBase64'; | import { getImageAbsoluteURIOrBase64 } from '~/utils/image/getImageAbsoluteURIOrBase64'; | ||||||
|   | |||||||
| @@ -1,4 +1,5 @@ | |||||||
| import { ThemeColor } from '@/ui/theme/constants/MainColorNames'; | import { ThemeColor } from 'twenty-ui'; | ||||||
|  |  | ||||||
| import { | import { | ||||||
|   Field, |   Field, | ||||||
|   Object as MetadataObject, |   Object as MetadataObject, | ||||||
|   | |||||||
| @@ -1,8 +1,8 @@ | |||||||
|  | import { themeColorSchema } from 'twenty-ui'; | ||||||
| import { z } from 'zod'; | import { z } from 'zod'; | ||||||
|  |  | ||||||
| import { FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; | import { FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; | ||||||
| import { metadataLabelSchema } from '@/object-metadata/validation-schemas/metadataLabelSchema'; | import { metadataLabelSchema } from '@/object-metadata/validation-schemas/metadataLabelSchema'; | ||||||
| import { themeColorSchema } from '@/ui/theme/utils/themeColorSchema'; |  | ||||||
| import { | import { | ||||||
|   FieldMetadataType, |   FieldMetadataType, | ||||||
|   RelationDefinitionType, |   RelationDefinitionType, | ||||||
|   | |||||||
| @@ -1,8 +1,8 @@ | |||||||
|  | import { themeColorSchema } from 'twenty-ui'; | ||||||
| import { z } from 'zod'; | import { z } from 'zod'; | ||||||
|  |  | ||||||
| import { FieldMetadataItemOption } from '@/object-metadata/types/FieldMetadataItem'; | import { FieldMetadataItemOption } from '@/object-metadata/types/FieldMetadataItem'; | ||||||
| import { getOptionValueFromLabel } from '@/settings/data-model/fields/forms/select/utils/getOptionValueFromLabel'; | import { getOptionValueFromLabel } from '@/settings/data-model/fields/forms/select/utils/getOptionValueFromLabel'; | ||||||
| import { themeColorSchema } from '@/ui/theme/utils/themeColorSchema'; |  | ||||||
| import { computeOptionValueFromLabelOrThrow } from '~/pages/settings/data-model/utils/compute-option-value-from-label.utils'; | import { computeOptionValueFromLabelOrThrow } from '~/pages/settings/data-model/utils/compute-option-value-from-label.utils'; | ||||||
|  |  | ||||||
| const selectOptionSchema = z | const selectOptionSchema = z | ||||||
|   | |||||||
| @@ -2,10 +2,10 @@ import { useContext, useEffect } from 'react'; | |||||||
| import { useInView } from 'react-intersection-observer'; | import { useInView } from 'react-intersection-observer'; | ||||||
| import styled from '@emotion/styled'; | import styled from '@emotion/styled'; | ||||||
| import { useRecoilValue, useSetRecoilState } from 'recoil'; | import { useRecoilValue, useSetRecoilState } from 'recoil'; | ||||||
|  | import { GRAY_SCALE } from 'twenty-ui'; | ||||||
|  |  | ||||||
| import { useRecordBoardStates } from '@/object-record/record-board/hooks/internal/useRecordBoardStates'; | import { useRecordBoardStates } from '@/object-record/record-board/hooks/internal/useRecordBoardStates'; | ||||||
| import { RecordBoardColumnContext } from '@/object-record/record-board/record-board-column/contexts/RecordBoardColumnContext'; | import { RecordBoardColumnContext } from '@/object-record/record-board/record-board-column/contexts/RecordBoardColumnContext'; | ||||||
| import { GRAY_SCALE } from '@/ui/theme/constants/GrayScale'; |  | ||||||
|  |  | ||||||
| const StyledText = styled.div` | const StyledText = styled.div` | ||||||
|   align-items: center; |   align-items: center; | ||||||
|   | |||||||
| @@ -1,5 +1,6 @@ | |||||||
|  | import { ThemeColor } from 'twenty-ui'; | ||||||
|  |  | ||||||
| import { RecordBoardColumnAction } from '@/object-record/record-board/types/RecordBoardColumnAction'; | import { RecordBoardColumnAction } from '@/object-record/record-board/types/RecordBoardColumnAction'; | ||||||
| import { ThemeColor } from '@/ui/theme/constants/MainColorNames'; |  | ||||||
|  |  | ||||||
| export type RecordBoardColumnDefinition = { | export type RecordBoardColumnDefinition = { | ||||||
|   id: string; |   id: string; | ||||||
|   | |||||||
| @@ -1,6 +1,7 @@ | |||||||
|  | import { ThemeColor } from 'twenty-ui'; | ||||||
|  |  | ||||||
| import { RATING_VALUES } from '@/object-record/record-field/meta-types/constants/RatingValues'; | import { RATING_VALUES } from '@/object-record/record-field/meta-types/constants/RatingValues'; | ||||||
| import { EntityForSelect } from '@/object-record/relation-picker/types/EntityForSelect'; | import { EntityForSelect } from '@/object-record/relation-picker/types/EntityForSelect'; | ||||||
| import { ThemeColor } from '@/ui/theme/constants/MainColorNames'; |  | ||||||
|  |  | ||||||
| import { CurrencyCode } from './CurrencyCode'; | import { CurrencyCode } from './CurrencyCode'; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,10 +1,9 @@ | |||||||
| import { css, useTheme } from '@emotion/react'; | import { css, useTheme } from '@emotion/react'; | ||||||
| import styled from '@emotion/styled'; | import styled from '@emotion/styled'; | ||||||
| import { useRecoilValue } from 'recoil'; | import { useRecoilValue } from 'recoil'; | ||||||
| import { useIcons } from 'twenty-ui'; | import { MOBILE_VIEWPORT, useIcons } from 'twenty-ui'; | ||||||
|  |  | ||||||
| import { FieldMetadata } from '@/object-record/record-field/types/FieldMetadata'; | import { FieldMetadata } from '@/object-record/record-field/types/FieldMetadata'; | ||||||
| import { MOBILE_VIEWPORT } from '@/ui/theme/constants/MobileViewport'; |  | ||||||
| import { scrollLeftState } from '@/ui/utilities/scroll/states/scrollLeftState'; | import { scrollLeftState } from '@/ui/utilities/scroll/states/scrollLeftState'; | ||||||
|  |  | ||||||
| import { ColumnDefinition } from '../types/ColumnDefinition'; | import { ColumnDefinition } from '../types/ColumnDefinition'; | ||||||
|   | |||||||
| @@ -1,6 +1,7 @@ | |||||||
| import { css } from '@emotion/react'; | import { css } from '@emotion/react'; | ||||||
| import styled from '@emotion/styled'; | import styled from '@emotion/styled'; | ||||||
| import { useRecoilValue } from 'recoil'; | import { useRecoilValue } from 'recoil'; | ||||||
|  | import { MOBILE_VIEWPORT, RGBA } from 'twenty-ui'; | ||||||
|  |  | ||||||
| import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem'; | import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem'; | ||||||
| import { RecordTableBody } from '@/object-record/record-table/components/RecordTableBody'; | import { RecordTableBody } from '@/object-record/record-table/components/RecordTableBody'; | ||||||
| @@ -21,8 +22,6 @@ import { useUpsertRecordV2 } from '@/object-record/record-table/record-table-cel | |||||||
| import { RecordTableScope } from '@/object-record/record-table/scopes/RecordTableScope'; | import { RecordTableScope } from '@/object-record/record-table/scopes/RecordTableScope'; | ||||||
| import { MoveFocusDirection } from '@/object-record/record-table/types/MoveFocusDirection'; | import { MoveFocusDirection } from '@/object-record/record-table/types/MoveFocusDirection'; | ||||||
| import { TableCellPosition } from '@/object-record/record-table/types/TableCellPosition'; | import { TableCellPosition } from '@/object-record/record-table/types/TableCellPosition'; | ||||||
| import { MOBILE_VIEWPORT } from '@/ui/theme/constants/MobileViewport'; |  | ||||||
| import { RGBA } from '@/ui/theme/constants/Rgba'; |  | ||||||
|  |  | ||||||
| const StyledTable = styled.table<{ | const StyledTable = styled.table<{ | ||||||
|   freezeFirstColumns?: boolean; |   freezeFirstColumns?: boolean; | ||||||
|   | |||||||
| @@ -2,11 +2,11 @@ import { useContext } from 'react'; | |||||||
| import { useInView } from 'react-intersection-observer'; | import { useInView } from 'react-intersection-observer'; | ||||||
| import styled from '@emotion/styled'; | import styled from '@emotion/styled'; | ||||||
| import { useRecoilCallback, useRecoilValue } from 'recoil'; | import { useRecoilCallback, useRecoilValue } from 'recoil'; | ||||||
|  | import { GRAY_SCALE } from 'twenty-ui'; | ||||||
|  |  | ||||||
| import { useLoadRecordIndexTable } from '@/object-record/record-index/hooks/useLoadRecordIndexTable'; | import { useLoadRecordIndexTable } from '@/object-record/record-index/hooks/useLoadRecordIndexTable'; | ||||||
| import { useRecordTable } from '@/object-record/record-table/hooks/useRecordTable'; | import { useRecordTable } from '@/object-record/record-table/hooks/useRecordTable'; | ||||||
| import { isFetchingMoreRecordsFamilyState } from '@/object-record/states/isFetchingMoreRecordsFamilyState'; | import { isFetchingMoreRecordsFamilyState } from '@/object-record/states/isFetchingMoreRecordsFamilyState'; | ||||||
| import { GRAY_SCALE } from '@/ui/theme/constants/GrayScale'; |  | ||||||
| import { ScrollWrapperContext } from '@/ui/utilities/scroll/components/ScrollWrapper'; | import { ScrollWrapperContext } from '@/ui/utilities/scroll/components/ScrollWrapper'; | ||||||
|  |  | ||||||
| type RecordTableBodyFetchMoreLoaderProps = { | type RecordTableBodyFetchMoreLoaderProps = { | ||||||
|   | |||||||
| @@ -8,6 +8,7 @@ import { | |||||||
|   IconGripVertical, |   IconGripVertical, | ||||||
|   IconTrash, |   IconTrash, | ||||||
|   IconX, |   IconX, | ||||||
|  |   MAIN_COLOR_NAMES, | ||||||
| } from 'twenty-ui'; | } from 'twenty-ui'; | ||||||
| import { v4 } from 'uuid'; | import { v4 } from 'uuid'; | ||||||
|  |  | ||||||
| @@ -21,7 +22,6 @@ import { DropdownMenuItemsContainer } from '@/ui/layout/dropdown/components/Drop | |||||||
| import { useDropdown } from '@/ui/layout/dropdown/hooks/useDropdown'; | import { useDropdown } from '@/ui/layout/dropdown/hooks/useDropdown'; | ||||||
| import { MenuItem } from '@/ui/navigation/menu-item/components/MenuItem'; | import { MenuItem } from '@/ui/navigation/menu-item/components/MenuItem'; | ||||||
| import { MenuItemSelectColor } from '@/ui/navigation/menu-item/components/MenuItemSelectColor'; | import { MenuItemSelectColor } from '@/ui/navigation/menu-item/components/MenuItemSelectColor'; | ||||||
| import { MAIN_COLOR_NAMES } from '@/ui/theme/constants/MainColorNames'; |  | ||||||
|  |  | ||||||
| type SettingsDataModelFieldSelectFormOptionRowProps = { | type SettingsDataModelFieldSelectFormOptionRowProps = { | ||||||
|   className?: string; |   className?: string; | ||||||
|   | |||||||
| @@ -1,8 +1,8 @@ | |||||||
| import styled from '@emotion/styled'; | import styled from '@emotion/styled'; | ||||||
|  | import { MOBILE_VIEWPORT } from 'twenty-ui'; | ||||||
|  |  | ||||||
| import { useSpreadsheetImportInternal } from '@/spreadsheet-import/hooks/useSpreadsheetImportInternal'; | import { useSpreadsheetImportInternal } from '@/spreadsheet-import/hooks/useSpreadsheetImportInternal'; | ||||||
| import { Modal } from '@/ui/layout/modal/components/Modal'; | import { Modal } from '@/ui/layout/modal/components/Modal'; | ||||||
| import { MOBILE_VIEWPORT } from '@/ui/theme/constants/MobileViewport'; |  | ||||||
|  |  | ||||||
| import { ModalCloseButton } from './ModalCloseButton'; | import { ModalCloseButton } from './ModalCloseButton'; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,9 +1,9 @@ | |||||||
| // @ts-expect-error // Todo: remove usage of react-data-grid | // @ts-expect-error // Todo: remove usage of react-data-grid | ||||||
| import DataGrid, { DataGridProps } from 'react-data-grid'; | import DataGrid, { DataGridProps } from 'react-data-grid'; | ||||||
| import styled from '@emotion/styled'; | import styled from '@emotion/styled'; | ||||||
|  | import { RGBA } from 'twenty-ui'; | ||||||
|  |  | ||||||
| import { useSpreadsheetImportInternal } from '@/spreadsheet-import/hooks/useSpreadsheetImportInternal'; | import { useSpreadsheetImportInternal } from '@/spreadsheet-import/hooks/useSpreadsheetImportInternal'; | ||||||
| import { RGBA } from '@/ui/theme/constants/Rgba'; |  | ||||||
|  |  | ||||||
| const StyledDataGrid = styled(DataGrid)` | const StyledDataGrid = styled(DataGrid)` | ||||||
|   --rdg-background-color: ${({ theme }) => theme.background.primary}; |   --rdg-background-color: ${({ theme }) => theme.background.primary}; | ||||||
|   | |||||||
| @@ -1,11 +1,11 @@ | |||||||
| import styled from '@emotion/styled'; | import styled from '@emotion/styled'; | ||||||
|  | import { MOBILE_VIEWPORT } from 'twenty-ui'; | ||||||
|  |  | ||||||
| import { useSpreadsheetImportInitialStep } from '@/spreadsheet-import/hooks/useSpreadsheetImportInitialStep'; | import { useSpreadsheetImportInitialStep } from '@/spreadsheet-import/hooks/useSpreadsheetImportInitialStep'; | ||||||
| import { useSpreadsheetImportInternal } from '@/spreadsheet-import/hooks/useSpreadsheetImportInternal'; | import { useSpreadsheetImportInternal } from '@/spreadsheet-import/hooks/useSpreadsheetImportInternal'; | ||||||
| import { Modal } from '@/ui/layout/modal/components/Modal'; | import { Modal } from '@/ui/layout/modal/components/Modal'; | ||||||
| import { StepBar } from '@/ui/navigation/step-bar/components/StepBar'; | import { StepBar } from '@/ui/navigation/step-bar/components/StepBar'; | ||||||
| import { useStepBar } from '@/ui/navigation/step-bar/hooks/useStepBar'; | import { useStepBar } from '@/ui/navigation/step-bar/hooks/useStepBar'; | ||||||
| import { MOBILE_VIEWPORT } from '@/ui/theme/constants/MobileViewport'; |  | ||||||
|  |  | ||||||
| import { UploadFlow } from './UploadFlow'; | import { UploadFlow } from './UploadFlow'; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,8 +1,7 @@ | |||||||
| import styled from '@emotion/styled'; | import styled from '@emotion/styled'; | ||||||
|  | import { ThemeColor, themeColorSchema } from 'twenty-ui'; | ||||||
|  |  | ||||||
| import { Loader } from '@/ui/feedback/loader/components/Loader'; | import { Loader } from '@/ui/feedback/loader/components/Loader'; | ||||||
| import { ThemeColor } from '@/ui/theme/constants/MainColorNames'; |  | ||||||
| import { themeColorSchema } from '@/ui/theme/utils/themeColorSchema'; |  | ||||||
|  |  | ||||||
| const StyledStatus = styled.h3<{ | const StyledStatus = styled.h3<{ | ||||||
|   color: ThemeColor; |   color: ThemeColor; | ||||||
|   | |||||||
| @@ -1,11 +1,12 @@ | |||||||
| import { Meta, StoryObj } from '@storybook/react'; | import { Meta, StoryObj } from '@storybook/react'; | ||||||
| import { expect, fn, userEvent, within } from '@storybook/test'; | import { expect, fn, userEvent, within } from '@storybook/test'; | ||||||
| import { CatalogDecorator, CatalogStory, ComponentDecorator } from 'twenty-ui'; |  | ||||||
|  |  | ||||||
| import { | import { | ||||||
|  |   CatalogDecorator, | ||||||
|  |   CatalogStory, | ||||||
|  |   ComponentDecorator, | ||||||
|   MAIN_COLOR_NAMES, |   MAIN_COLOR_NAMES, | ||||||
|   ThemeColor, |   ThemeColor, | ||||||
| } from '@/ui/theme/constants/MainColorNames'; | } from 'twenty-ui'; | ||||||
|  |  | ||||||
| import { Status } from '../Status'; | import { Status } from '../Status'; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,7 +1,6 @@ | |||||||
| import styled from '@emotion/styled'; | import styled from '@emotion/styled'; | ||||||
| import { motion } from 'framer-motion'; | import { motion } from 'framer-motion'; | ||||||
|  | import { ThemeColor } from 'twenty-ui'; | ||||||
| import { ThemeColor } from '@/ui/theme/constants/MainColorNames'; |  | ||||||
|  |  | ||||||
| const StyledLoaderContainer = styled.div<{ | const StyledLoaderContainer = styled.div<{ | ||||||
|   color?: ThemeColor; |   color?: ThemeColor; | ||||||
|   | |||||||
| @@ -2,12 +2,11 @@ import { useEffect, useMemo, useRef, useState } from 'react'; | |||||||
| import { IMaskInput, IMaskInputProps } from 'react-imask'; | import { IMaskInput, IMaskInputProps } from 'react-imask'; | ||||||
| import { useTheme } from '@emotion/react'; | import { useTheme } from '@emotion/react'; | ||||||
| import styled from '@emotion/styled'; | import styled from '@emotion/styled'; | ||||||
| import { IconComponent } from 'twenty-ui'; | import { IconComponent, TEXT_INPUT_STYLE } from 'twenty-ui'; | ||||||
|  |  | ||||||
| import { useRegisterInputEvents } from '@/object-record/record-field/meta-types/input/hooks/useRegisterInputEvents'; | import { useRegisterInputEvents } from '@/object-record/record-field/meta-types/input/hooks/useRegisterInputEvents'; | ||||||
| import { SETTINGS_FIELD_CURRENCY_CODES } from '@/settings/data-model/constants/SettingsFieldCurrencyCodes'; | import { SETTINGS_FIELD_CURRENCY_CODES } from '@/settings/data-model/constants/SettingsFieldCurrencyCodes'; | ||||||
| import { CurrencyPickerDropdownButton } from '@/ui/input/components/internal/currency/components/CurrencyPickerDropdownButton'; | import { CurrencyPickerDropdownButton } from '@/ui/input/components/internal/currency/components/CurrencyPickerDropdownButton'; | ||||||
| import { TEXT_INPUT_STYLE } from '@/ui/theme/constants/TextInputStyle'; |  | ||||||
|  |  | ||||||
| type StyledInputProps = React.ComponentProps<'input'> & | type StyledInputProps = React.ComponentProps<'input'> & | ||||||
|   IMaskInputProps<HTMLInputElement>; |   IMaskInputProps<HTMLInputElement>; | ||||||
|   | |||||||
| @@ -1,6 +1,5 @@ | |||||||
| import styled from '@emotion/styled'; | import styled from '@emotion/styled'; | ||||||
|  | import { OVERLAY_BACKGROUND } from 'twenty-ui'; | ||||||
| import { OVERLAY_BACKGROUND } from '@/ui/theme/constants/OverlayBackground'; |  | ||||||
|  |  | ||||||
| const StyledFieldInputOverlay = styled.div` | const StyledFieldInputOverlay = styled.div` | ||||||
|   align-items: center; |   align-items: center; | ||||||
|   | |||||||
| @@ -1,10 +1,10 @@ | |||||||
| import { ChangeEvent, useEffect, useRef, useState } from 'react'; | import { ChangeEvent, useEffect, useRef, useState } from 'react'; | ||||||
| import TextareaAutosize from 'react-textarea-autosize'; | import TextareaAutosize from 'react-textarea-autosize'; | ||||||
| import styled from '@emotion/styled'; | import styled from '@emotion/styled'; | ||||||
|  | import { TEXT_INPUT_STYLE } from 'twenty-ui'; | ||||||
|  |  | ||||||
| import { LightCopyIconButton } from '@/object-record/record-field/components/LightCopyIconButton'; | import { LightCopyIconButton } from '@/object-record/record-field/components/LightCopyIconButton'; | ||||||
| import { useRegisterInputEvents } from '@/object-record/record-field/meta-types/input/hooks/useRegisterInputEvents'; | import { useRegisterInputEvents } from '@/object-record/record-field/meta-types/input/hooks/useRegisterInputEvents'; | ||||||
| import { TEXT_INPUT_STYLE } from '@/ui/theme/constants/TextInputStyle'; |  | ||||||
| import { isDefined } from '~/utils/isDefined'; | import { isDefined } from '~/utils/isDefined'; | ||||||
|  |  | ||||||
| export type TextAreaInputProps = { | export type TextAreaInputProps = { | ||||||
|   | |||||||
| @@ -1,9 +1,9 @@ | |||||||
| import { ChangeEvent, useEffect, useRef, useState } from 'react'; | import { ChangeEvent, useEffect, useRef, useState } from 'react'; | ||||||
| import styled from '@emotion/styled'; | import styled from '@emotion/styled'; | ||||||
|  | import { TEXT_INPUT_STYLE } from 'twenty-ui'; | ||||||
|  |  | ||||||
| import { LightCopyIconButton } from '@/object-record/record-field/components/LightCopyIconButton'; | import { LightCopyIconButton } from '@/object-record/record-field/components/LightCopyIconButton'; | ||||||
| import { useRegisterInputEvents } from '@/object-record/record-field/meta-types/input/hooks/useRegisterInputEvents'; | import { useRegisterInputEvents } from '@/object-record/record-field/meta-types/input/hooks/useRegisterInputEvents'; | ||||||
| import { TEXT_INPUT_STYLE } from '@/ui/theme/constants/TextInputStyle'; |  | ||||||
|  |  | ||||||
| export const StyledTextInput = styled.input` | export const StyledTextInput = styled.input` | ||||||
|   margin: 0; |   margin: 0; | ||||||
|   | |||||||
| @@ -1,8 +1,7 @@ | |||||||
| import * as React from 'react'; | import * as React from 'react'; | ||||||
| import styled from '@emotion/styled'; | import styled from '@emotion/styled'; | ||||||
| import { motion } from 'framer-motion'; | import { motion } from 'framer-motion'; | ||||||
|  | import { RGBA } from 'twenty-ui'; | ||||||
| import { RGBA } from '@/ui/theme/constants/Rgba'; |  | ||||||
|  |  | ||||||
| import { RadioGroup } from './RadioGroup'; | import { RadioGroup } from './RadioGroup'; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,7 +2,12 @@ import ReactDatePicker from 'react-datepicker'; | |||||||
| import styled from '@emotion/styled'; | import styled from '@emotion/styled'; | ||||||
| import { DateTime } from 'luxon'; | import { DateTime } from 'luxon'; | ||||||
| import { Key } from 'ts-key-enum'; | import { Key } from 'ts-key-enum'; | ||||||
| import { IconCalendarX, IconChevronLeft, IconChevronRight } from 'twenty-ui'; | import { | ||||||
|  |   IconCalendarX, | ||||||
|  |   IconChevronLeft, | ||||||
|  |   IconChevronRight, | ||||||
|  |   OVERLAY_BACKGROUND, | ||||||
|  | } from 'twenty-ui'; | ||||||
|  |  | ||||||
| import { LightIconButton } from '@/ui/input/button/components/LightIconButton'; | import { LightIconButton } from '@/ui/input/button/components/LightIconButton'; | ||||||
| import { DateTimeInput } from '@/ui/input/components/internal/date/components/DateTimeInput'; | import { DateTimeInput } from '@/ui/input/components/internal/date/components/DateTimeInput'; | ||||||
| @@ -10,7 +15,6 @@ import { Select } from '@/ui/input/components/Select'; | |||||||
| import { useDropdown } from '@/ui/layout/dropdown/hooks/useDropdown'; | import { useDropdown } from '@/ui/layout/dropdown/hooks/useDropdown'; | ||||||
| import { MenuItemLeftContent } from '@/ui/navigation/menu-item/internals/components/MenuItemLeftContent'; | import { MenuItemLeftContent } from '@/ui/navigation/menu-item/internals/components/MenuItemLeftContent'; | ||||||
| import { StyledHoverableMenuItemBase } from '@/ui/navigation/menu-item/internals/components/StyledMenuItemBase'; | import { StyledHoverableMenuItemBase } from '@/ui/navigation/menu-item/internals/components/StyledMenuItemBase'; | ||||||
| import { OVERLAY_BACKGROUND } from '@/ui/theme/constants/OverlayBackground'; |  | ||||||
| import { isDefined } from '~/utils/isDefined'; | import { isDefined } from '~/utils/isDefined'; | ||||||
|  |  | ||||||
| import 'react-datepicker/dist/react-datepicker.css'; | import 'react-datepicker/dist/react-datepicker.css'; | ||||||
|   | |||||||
| @@ -1,10 +1,9 @@ | |||||||
| import { forwardRef, InputHTMLAttributes, ReactNode, useRef } from 'react'; | import { forwardRef, InputHTMLAttributes, ReactNode, useRef } from 'react'; | ||||||
| import { css } from '@emotion/react'; | import { css } from '@emotion/react'; | ||||||
| import styled from '@emotion/styled'; | import styled from '@emotion/styled'; | ||||||
|  | import { RGBA, TEXT_INPUT_STYLE } from 'twenty-ui'; | ||||||
|  |  | ||||||
| import { useRegisterInputEvents } from '@/object-record/record-field/meta-types/input/hooks/useRegisterInputEvents'; | import { useRegisterInputEvents } from '@/object-record/record-field/meta-types/input/hooks/useRegisterInputEvents'; | ||||||
| import { RGBA } from '@/ui/theme/constants/Rgba'; |  | ||||||
| import { TEXT_INPUT_STYLE } from '@/ui/theme/constants/TextInputStyle'; |  | ||||||
| import { useCombinedRefs } from '~/hooks/useCombinedRefs'; | import { useCombinedRefs } from '~/hooks/useCombinedRefs'; | ||||||
|  |  | ||||||
| const StyledInput = styled.input<{ withRightComponent?: boolean }>` | const StyledInput = styled.input<{ withRightComponent?: boolean }>` | ||||||
|   | |||||||
| @@ -1,7 +1,6 @@ | |||||||
| import { forwardRef, InputHTMLAttributes } from 'react'; | import { forwardRef, InputHTMLAttributes } from 'react'; | ||||||
| import styled from '@emotion/styled'; | import styled from '@emotion/styled'; | ||||||
|  | import { TEXT_INPUT_STYLE } from 'twenty-ui'; | ||||||
| import { TEXT_INPUT_STYLE } from '@/ui/theme/constants/TextInputStyle'; |  | ||||||
|  |  | ||||||
| const StyledDropdownMenuSearchInputContainer = styled.div` | const StyledDropdownMenuSearchInputContainer = styled.div` | ||||||
|   --vertical-padding: ${({ theme }) => theme.spacing(1)}; |   --vertical-padding: ${({ theme }) => theme.spacing(1)}; | ||||||
|   | |||||||
| @@ -2,10 +2,9 @@ import styled from '@emotion/styled'; | |||||||
| import { expect } from '@storybook/jest'; | import { expect } from '@storybook/jest'; | ||||||
| import { Meta, StoryObj } from '@storybook/react'; | import { Meta, StoryObj } from '@storybook/react'; | ||||||
| import { userEvent, within } from '@storybook/test'; | import { userEvent, within } from '@storybook/test'; | ||||||
| import { ComponentDecorator, Tag } from 'twenty-ui'; | import { ComponentDecorator, MAIN_COLOR_NAMES, Tag } from 'twenty-ui'; | ||||||
|  |  | ||||||
| import { ExpandableList } from '@/ui/layout/expandable-list/components/ExpandableList'; | import { ExpandableList } from '@/ui/layout/expandable-list/components/ExpandableList'; | ||||||
| import { MAIN_COLOR_NAMES } from '@/ui/theme/constants/MainColorNames'; |  | ||||||
|  |  | ||||||
| const StyledContainer = styled.div` | const StyledContainer = styled.div` | ||||||
|   padding: ${({ theme }) => theme.spacing(1)}; |   padding: ${({ theme }) => theme.spacing(1)}; | ||||||
|   | |||||||
| @@ -7,13 +7,13 @@ import { useRecoilValue } from 'recoil'; | |||||||
| import { | import { | ||||||
|   IconChevronLeft, |   IconChevronLeft, | ||||||
|   IconComponent, |   IconComponent, | ||||||
|  |   MOBILE_VIEWPORT, | ||||||
|   OverflowingTextWithTooltip, |   OverflowingTextWithTooltip, | ||||||
| } from 'twenty-ui'; | } from 'twenty-ui'; | ||||||
|  |  | ||||||
| import { IconButton } from '@/ui/input/button/components/IconButton'; | import { IconButton } from '@/ui/input/button/components/IconButton'; | ||||||
| import { NavigationDrawerCollapseButton } from '@/ui/navigation/navigation-drawer/components/NavigationDrawerCollapseButton'; | import { NavigationDrawerCollapseButton } from '@/ui/navigation/navigation-drawer/components/NavigationDrawerCollapseButton'; | ||||||
| import { isNavigationDrawerOpenState } from '@/ui/navigation/states/isNavigationDrawerOpenState'; | import { isNavigationDrawerOpenState } from '@/ui/navigation/states/isNavigationDrawerOpenState'; | ||||||
| import { MOBILE_VIEWPORT } from '@/ui/theme/constants/MobileViewport'; |  | ||||||
| import { useIsMobile } from '@/ui/utilities/responsive/hooks/useIsMobile'; | import { useIsMobile } from '@/ui/utilities/responsive/hooks/useIsMobile'; | ||||||
|  |  | ||||||
| export const PAGE_BAR_MIN_HEIGHT = 40; | export const PAGE_BAR_MIN_HEIGHT = 40; | ||||||
|   | |||||||
| @@ -1,8 +1,8 @@ | |||||||
| import { ReactNode } from 'react'; | import { ReactNode } from 'react'; | ||||||
| import styled from '@emotion/styled'; | import styled from '@emotion/styled'; | ||||||
|  | import { MOBILE_VIEWPORT } from 'twenty-ui'; | ||||||
|  |  | ||||||
| import { RightDrawer } from '@/ui/layout/right-drawer/components/RightDrawer'; | import { RightDrawer } from '@/ui/layout/right-drawer/components/RightDrawer'; | ||||||
| import { MOBILE_VIEWPORT } from '@/ui/theme/constants/MobileViewport'; |  | ||||||
|  |  | ||||||
| import { PagePanel } from './PagePanel'; | import { PagePanel } from './PagePanel'; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,9 +1,8 @@ | |||||||
| import styled from '@emotion/styled'; | import styled from '@emotion/styled'; | ||||||
| import { IconComponent, Tag } from 'twenty-ui'; | import { IconComponent, Tag, ThemeColor } from 'twenty-ui'; | ||||||
|  |  | ||||||
| import { Checkbox } from '@/ui/input/components/Checkbox'; | import { Checkbox } from '@/ui/input/components/Checkbox'; | ||||||
| import { MenuItemLeftContent } from '@/ui/navigation/menu-item/internals/components/MenuItemLeftContent'; | import { MenuItemLeftContent } from '@/ui/navigation/menu-item/internals/components/MenuItemLeftContent'; | ||||||
| import { ThemeColor } from '@/ui/theme/constants/MainColorNames'; |  | ||||||
|  |  | ||||||
| import { StyledMenuItemBase } from '../internals/components/StyledMenuItemBase'; | import { StyledMenuItemBase } from '../internals/components/StyledMenuItemBase'; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,11 +1,10 @@ | |||||||
| import { Tag } from 'twenty-ui'; | import { Tag, ThemeColor } from 'twenty-ui'; | ||||||
|  |  | ||||||
| import { | import { | ||||||
|   Checkbox, |   Checkbox, | ||||||
|   CheckboxShape, |   CheckboxShape, | ||||||
|   CheckboxSize, |   CheckboxSize, | ||||||
| } from '@/ui/input/components/Checkbox'; | } from '@/ui/input/components/Checkbox'; | ||||||
| import { ThemeColor } from '@/ui/theme/constants/MainColorNames'; |  | ||||||
|  |  | ||||||
| import { | import { | ||||||
|   StyledMenuItemBase, |   StyledMenuItemBase, | ||||||
|   | |||||||
| @@ -1,7 +1,10 @@ | |||||||
| import { useTheme } from '@emotion/react'; | import { useTheme } from '@emotion/react'; | ||||||
| import { ColorSample, ColorSampleVariant, IconCheck } from 'twenty-ui'; | import { | ||||||
|  |   ColorSample, | ||||||
| import { ThemeColor } from '@/ui/theme/constants/MainColorNames'; |   ColorSampleVariant, | ||||||
|  |   IconCheck, | ||||||
|  |   ThemeColor, | ||||||
|  | } from 'twenty-ui'; | ||||||
|  |  | ||||||
| import { | import { | ||||||
|   StyledMenuItemLabel, |   StyledMenuItemLabel, | ||||||
|   | |||||||
| @@ -1,7 +1,5 @@ | |||||||
| import { useTheme } from '@emotion/react'; | import { useTheme } from '@emotion/react'; | ||||||
| import { IconCheck, Tag } from 'twenty-ui'; | import { IconCheck, Tag, ThemeColor } from 'twenty-ui'; | ||||||
|  |  | ||||||
| import { ThemeColor } from '@/ui/theme/constants/MainColorNames'; |  | ||||||
|  |  | ||||||
| import { StyledMenuItemLeftContent } from '../internals/components/StyledMenuItemBase'; | import { StyledMenuItemLeftContent } from '../internals/components/StyledMenuItemBase'; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,8 +1,6 @@ | |||||||
| import { MouseEvent } from 'react'; | import { MouseEvent } from 'react'; | ||||||
| import styled from '@emotion/styled'; | import styled from '@emotion/styled'; | ||||||
| import { IconComponent } from 'twenty-ui'; | import { HOVER_BACKGROUND, IconComponent } from 'twenty-ui'; | ||||||
|  |  | ||||||
| import { HOVER_BACKGROUND } from '@/ui/theme/constants/HoverBackground'; |  | ||||||
|  |  | ||||||
| import { MenuItemLeftContent } from '../internals/components/MenuItemLeftContent'; | import { MenuItemLeftContent } from '../internals/components/MenuItemLeftContent'; | ||||||
| import { StyledMenuItemLeftContent } from '../internals/components/StyledMenuItemBase'; | import { StyledMenuItemLeftContent } from '../internals/components/StyledMenuItemBase'; | ||||||
|   | |||||||
| @@ -6,12 +6,9 @@ import { | |||||||
|   CatalogStory, |   CatalogStory, | ||||||
|   ColorSampleVariant, |   ColorSampleVariant, | ||||||
|   ComponentDecorator, |   ComponentDecorator, | ||||||
| } from 'twenty-ui'; |  | ||||||
|  |  | ||||||
| import { |  | ||||||
|   MAIN_COLOR_NAMES, |   MAIN_COLOR_NAMES, | ||||||
|   ThemeColor, |   ThemeColor, | ||||||
| } from '@/ui/theme/constants/MainColorNames'; | } from 'twenty-ui'; | ||||||
|  |  | ||||||
| import { MenuItemSelectColor } from '../MenuItemSelectColor'; | import { MenuItemSelectColor } from '../MenuItemSelectColor'; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,7 +1,6 @@ | |||||||
| import { css } from '@emotion/react'; | import { css } from '@emotion/react'; | ||||||
| import styled from '@emotion/styled'; | import styled from '@emotion/styled'; | ||||||
|  | import { HOVER_BACKGROUND } from 'twenty-ui'; | ||||||
| import { HOVER_BACKGROUND } from '@/ui/theme/constants/HoverBackground'; |  | ||||||
|  |  | ||||||
| import { MenuItemAccent } from '../../types/MenuItemAccent'; | import { MenuItemAccent } from '../../types/MenuItemAccent'; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -3,9 +3,9 @@ import { css, useTheme } from '@emotion/react'; | |||||||
| import styled from '@emotion/styled'; | import styled from '@emotion/styled'; | ||||||
| import { motion } from 'framer-motion'; | import { motion } from 'framer-motion'; | ||||||
| import { useRecoilValue } from 'recoil'; | import { useRecoilValue } from 'recoil'; | ||||||
|  | import { MOBILE_VIEWPORT } from 'twenty-ui'; | ||||||
|  |  | ||||||
| import { isNavigationDrawerOpenState } from '@/ui/navigation/states/isNavigationDrawerOpenState'; | import { isNavigationDrawerOpenState } from '@/ui/navigation/states/isNavigationDrawerOpenState'; | ||||||
| import { MOBILE_VIEWPORT } from '@/ui/theme/constants/MobileViewport'; |  | ||||||
| import { useIsMobile } from '@/ui/utilities/responsive/hooks/useIsMobile'; | import { useIsMobile } from '@/ui/utilities/responsive/hooks/useIsMobile'; | ||||||
|  |  | ||||||
| import { DESKTOP_NAV_DRAWER_WIDTHS } from '../constants/DesktopNavDrawerWidths'; | import { DESKTOP_NAV_DRAWER_WIDTHS } from '../constants/DesktopNavDrawerWidths'; | ||||||
|   | |||||||
| @@ -4,10 +4,9 @@ import { useTheme } from '@emotion/react'; | |||||||
| import styled from '@emotion/styled'; | import styled from '@emotion/styled'; | ||||||
| import { isNonEmptyString } from '@sniptt/guards'; | import { isNonEmptyString } from '@sniptt/guards'; | ||||||
| import { useSetRecoilState } from 'recoil'; | import { useSetRecoilState } from 'recoil'; | ||||||
| import { IconComponent, Pill } from 'twenty-ui'; | import { IconComponent, MOBILE_VIEWPORT, Pill } from 'twenty-ui'; | ||||||
|  |  | ||||||
| import { isNavigationDrawerOpenState } from '@/ui/navigation/states/isNavigationDrawerOpenState'; | import { isNavigationDrawerOpenState } from '@/ui/navigation/states/isNavigationDrawerOpenState'; | ||||||
| import { MOBILE_VIEWPORT } from '@/ui/theme/constants/MobileViewport'; |  | ||||||
| import { useIsMobile } from '@/ui/utilities/responsive/hooks/useIsMobile'; | import { useIsMobile } from '@/ui/utilities/responsive/hooks/useIsMobile'; | ||||||
| import { isDefined } from '~/utils/isDefined'; | import { isDefined } from '~/utils/isDefined'; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,6 +1,5 @@ | |||||||
| import { atom } from 'recoil'; | import { atom } from 'recoil'; | ||||||
|  | import { MOBILE_VIEWPORT } from 'twenty-ui'; | ||||||
| import { MOBILE_VIEWPORT } from '@/ui/theme/constants/MobileViewport'; |  | ||||||
|  |  | ||||||
| const isMobile = window.innerWidth <= MOBILE_VIEWPORT; | const isMobile = window.innerWidth <= MOBILE_VIEWPORT; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,9 +1,8 @@ | |||||||
| import { useTheme } from '@emotion/react'; | import { useTheme } from '@emotion/react'; | ||||||
| import styled from '@emotion/styled'; | import styled from '@emotion/styled'; | ||||||
| import { motion } from 'framer-motion'; | import { motion } from 'framer-motion'; | ||||||
| import { AnimatedCheckmark } from 'twenty-ui'; | import { AnimatedCheckmark, MOBILE_VIEWPORT } from 'twenty-ui'; | ||||||
|  |  | ||||||
| import { MOBILE_VIEWPORT } from '@/ui/theme/constants/MobileViewport'; |  | ||||||
| import { useIsMobile } from '@/ui/utilities/responsive/hooks/useIsMobile'; | import { useIsMobile } from '@/ui/utilities/responsive/hooks/useIsMobile'; | ||||||
|  |  | ||||||
| const StyledContainer = styled.div<{ isLast: boolean }>` | const StyledContainer = styled.div<{ isLast: boolean }>` | ||||||
|   | |||||||
| @@ -1,7 +1,7 @@ | |||||||
| import React from 'react'; | import React from 'react'; | ||||||
| import styled from '@emotion/styled'; | import styled from '@emotion/styled'; | ||||||
|  | import { MOBILE_VIEWPORT } from 'twenty-ui'; | ||||||
|  |  | ||||||
| import { MOBILE_VIEWPORT } from '@/ui/theme/constants/MobileViewport'; |  | ||||||
| import { useIsMobile } from '@/ui/utilities/responsive/hooks/useIsMobile'; | import { useIsMobile } from '@/ui/utilities/responsive/hooks/useIsMobile'; | ||||||
|  |  | ||||||
| import { Step, StepProps } from './Step'; | import { Step, StepProps } from './Step'; | ||||||
|   | |||||||
										
											Binary file not shown.
										
									
								
							| Before Width: | Height: | Size: 25 KiB | 
										
											Binary file not shown.
										
									
								
							| Before Width: | Height: | Size: 9.4 KiB | 
| @@ -1,10 +0,0 @@ | |||||||
| import { COLOR } from './Colors'; |  | ||||||
|  |  | ||||||
| export const ACCENT_DARK = { |  | ||||||
|   primary: COLOR.blueAccent75, |  | ||||||
|   secondary: COLOR.blueAccent80, |  | ||||||
|   tertiary: COLOR.blueAccent85, |  | ||||||
|   quaternary: COLOR.blueAccent90, |  | ||||||
|   accent3570: COLOR.blueAccent70, |  | ||||||
|   accent4060: COLOR.blueAccent60, |  | ||||||
| }; |  | ||||||
| @@ -1,10 +0,0 @@ | |||||||
| import { COLOR } from './Colors'; |  | ||||||
|  |  | ||||||
| export const ACCENT_LIGHT = { |  | ||||||
|   primary: COLOR.blueAccent25, |  | ||||||
|   secondary: COLOR.blueAccent20, |  | ||||||
|   tertiary: COLOR.blueAccent15, |  | ||||||
|   quaternary: COLOR.blueAccent10, |  | ||||||
|   accent3570: COLOR.blueAccent35, |  | ||||||
|   accent4060: COLOR.blueAccent40, |  | ||||||
| }; |  | ||||||
| @@ -1,9 +0,0 @@ | |||||||
| export const ANIMATION = { |  | ||||||
|   duration: { |  | ||||||
|     instant: 0.075, |  | ||||||
|     fast: 0.15, |  | ||||||
|     normal: 0.3, |  | ||||||
|   }, |  | ||||||
| }; |  | ||||||
|  |  | ||||||
| export type AnimationDuration = 'instant' | 'fast' | 'normal'; |  | ||||||
| @@ -1,29 +0,0 @@ | |||||||
| /* eslint-disable @nx/workspace-no-hardcoded-colors */ |  | ||||||
| import { COLOR } from '@/ui/theme/constants/Colors'; |  | ||||||
| import { GRAY_SCALE } from '@/ui/theme/constants/GrayScale'; |  | ||||||
| import { RGBA } from '@/ui/theme/constants/Rgba'; |  | ||||||
|  |  | ||||||
| import DarkNoise from '../assets/dark-noise.jpg'; |  | ||||||
|  |  | ||||||
| export const BACKGROUND_DARK = { |  | ||||||
|   noisy: `url(${DarkNoise.toString()});`, |  | ||||||
|   primary: GRAY_SCALE.gray85, |  | ||||||
|   secondary: GRAY_SCALE.gray80, |  | ||||||
|   tertiary: GRAY_SCALE.gray75, |  | ||||||
|   quaternary: GRAY_SCALE.gray70, |  | ||||||
|   danger: COLOR.red80, |  | ||||||
|   transparent: { |  | ||||||
|     primary: RGBA(GRAY_SCALE.gray85, 0.5), |  | ||||||
|     secondary: RGBA(GRAY_SCALE.gray80, 0.5), |  | ||||||
|     strong: RGBA(GRAY_SCALE.gray0, 0.14), |  | ||||||
|     medium: RGBA(GRAY_SCALE.gray0, 0.1), |  | ||||||
|     light: RGBA(GRAY_SCALE.gray0, 0.06), |  | ||||||
|     lighter: RGBA(GRAY_SCALE.gray0, 0.03), |  | ||||||
|     danger: RGBA(COLOR.red, 0.08), |  | ||||||
|   }, |  | ||||||
|   overlay: RGBA(GRAY_SCALE.gray80, 0.8), |  | ||||||
|   radialGradient: `radial-gradient(50% 62.62% at 50% 0%, #505050 0%, ${GRAY_SCALE.gray60} 100%)`, |  | ||||||
|   radialGradientHover: `radial-gradient(76.32% 95.59% at 50% 0%, #505050 0%, ${GRAY_SCALE.gray60} 100%)`, |  | ||||||
|   primaryInverted: GRAY_SCALE.gray20, |  | ||||||
|   primaryInvertedHover: GRAY_SCALE.gray15, |  | ||||||
| }; |  | ||||||
| @@ -1,29 +0,0 @@ | |||||||
| /* eslint-disable @nx/workspace-no-hardcoded-colors */ |  | ||||||
| import { COLOR } from '@/ui/theme/constants/Colors'; |  | ||||||
| import { GRAY_SCALE } from '@/ui/theme/constants/GrayScale'; |  | ||||||
| import { RGBA } from '@/ui/theme/constants/Rgba'; |  | ||||||
|  |  | ||||||
| import LightNoise from '../assets/light-noise.png'; |  | ||||||
|  |  | ||||||
| export const BACKGROUND_LIGHT = { |  | ||||||
|   noisy: `url(${LightNoise.toString()});`, |  | ||||||
|   primary: GRAY_SCALE.gray0, |  | ||||||
|   secondary: GRAY_SCALE.gray10, |  | ||||||
|   tertiary: GRAY_SCALE.gray15, |  | ||||||
|   quaternary: GRAY_SCALE.gray20, |  | ||||||
|   danger: COLOR.red10, |  | ||||||
|   transparent: { |  | ||||||
|     primary: RGBA(GRAY_SCALE.gray0, 0.5), |  | ||||||
|     secondary: RGBA(GRAY_SCALE.gray10, 0.5), |  | ||||||
|     strong: RGBA(GRAY_SCALE.gray100, 0.16), |  | ||||||
|     medium: RGBA(GRAY_SCALE.gray100, 0.08), |  | ||||||
|     light: RGBA(GRAY_SCALE.gray100, 0.04), |  | ||||||
|     lighter: RGBA(GRAY_SCALE.gray100, 0.02), |  | ||||||
|     danger: RGBA(COLOR.red, 0.08), |  | ||||||
|   }, |  | ||||||
|   overlay: RGBA(GRAY_SCALE.gray80, 0.8), |  | ||||||
|   radialGradient: `radial-gradient(50% 62.62% at 50% 0%, #505050 0%, ${GRAY_SCALE.gray60} 100%)`, |  | ||||||
|   radialGradientHover: `radial-gradient(76.32% 95.59% at 50% 0%, #505050 0%, ${GRAY_SCALE.gray60} 100%)`, |  | ||||||
|   primaryInverted: GRAY_SCALE.gray60, |  | ||||||
|   primaryInvertedHover: GRAY_SCALE.gray55, |  | ||||||
| }; |  | ||||||
| @@ -1,4 +0,0 @@ | |||||||
| export const BLUR = { |  | ||||||
|   light: 'blur(6px)', |  | ||||||
|   strong: 'blur(20px)', |  | ||||||
| }; |  | ||||||
| @@ -1,10 +0,0 @@ | |||||||
| export const BORDER_COMMON = { |  | ||||||
|   radius: { |  | ||||||
|     xs: '2px', |  | ||||||
|     sm: '4px', |  | ||||||
|     md: '8px', |  | ||||||
|     xl: '20px', |  | ||||||
|     pill: '999px', |  | ||||||
|     rounded: '100%', |  | ||||||
|   }, |  | ||||||
| }; |  | ||||||
| @@ -1,15 +0,0 @@ | |||||||
| import { BORDER_COMMON } from '@/ui/theme/constants/BorderCommon'; |  | ||||||
| import { COLOR } from '@/ui/theme/constants/Colors'; |  | ||||||
| import { GRAY_SCALE } from '@/ui/theme/constants/GrayScale'; |  | ||||||
|  |  | ||||||
| export const BORDER_DARK = { |  | ||||||
|   color: { |  | ||||||
|     strong: GRAY_SCALE.gray55, |  | ||||||
|     medium: GRAY_SCALE.gray65, |  | ||||||
|     light: GRAY_SCALE.gray70, |  | ||||||
|     secondaryInverted: GRAY_SCALE.gray35, |  | ||||||
|     inverted: GRAY_SCALE.gray20, |  | ||||||
|     danger: COLOR.red70, |  | ||||||
|   }, |  | ||||||
|   ...BORDER_COMMON, |  | ||||||
| }; |  | ||||||
| @@ -1,15 +0,0 @@ | |||||||
| import { BORDER_COMMON } from '@/ui/theme/constants/BorderCommon'; |  | ||||||
| import { COLOR } from '@/ui/theme/constants/Colors'; |  | ||||||
| import { GRAY_SCALE } from '@/ui/theme/constants/GrayScale'; |  | ||||||
|  |  | ||||||
| export const BORDER_LIGHT = { |  | ||||||
|   color: { |  | ||||||
|     strong: GRAY_SCALE.gray25, |  | ||||||
|     medium: GRAY_SCALE.gray20, |  | ||||||
|     light: GRAY_SCALE.gray15, |  | ||||||
|     secondaryInverted: GRAY_SCALE.gray50, |  | ||||||
|     inverted: GRAY_SCALE.gray60, |  | ||||||
|     danger: COLOR.red20, |  | ||||||
|   }, |  | ||||||
|   ...BORDER_COMMON, |  | ||||||
| }; |  | ||||||
| @@ -1,18 +0,0 @@ | |||||||
| import { GRAY_SCALE } from '@/ui/theme/constants/GrayScale'; |  | ||||||
| import { RGBA } from '@/ui/theme/constants/Rgba'; |  | ||||||
|  |  | ||||||
| export const BOX_SHADOW_DARK = { |  | ||||||
|   light: `0px 2px 4px 0px ${RGBA( |  | ||||||
|     GRAY_SCALE.gray100, |  | ||||||
|     0.04, |  | ||||||
|   )}, 0px 0px 4px 0px ${RGBA(GRAY_SCALE.gray100, 0.08)}`, |  | ||||||
|   strong: `2px 4px 16px 0px ${RGBA( |  | ||||||
|     GRAY_SCALE.gray100, |  | ||||||
|     0.16, |  | ||||||
|   )}, 0px 2px 4px 0px ${RGBA(GRAY_SCALE.gray100, 0.08)}`, |  | ||||||
|   underline: `0px 1px 0px 0px ${RGBA(GRAY_SCALE.gray100, 0.32)}`, |  | ||||||
|   superHeavy: `2px 4px 16px 0px ${RGBA( |  | ||||||
|     GRAY_SCALE.gray100, |  | ||||||
|     0.12, |  | ||||||
|   )}, 0px 2px 4px 0px ${RGBA(GRAY_SCALE.gray100, 0.04)}`, |  | ||||||
| }; |  | ||||||
| @@ -1,21 +0,0 @@ | |||||||
| import { GRAY_SCALE } from '@/ui/theme/constants/GrayScale'; |  | ||||||
| import { RGBA } from '@/ui/theme/constants/Rgba'; |  | ||||||
|  |  | ||||||
| export const BOX_SHADOW_LIGHT = { |  | ||||||
|   light: `0px 2px 4px 0px ${RGBA( |  | ||||||
|     GRAY_SCALE.gray100, |  | ||||||
|     0.04, |  | ||||||
|   )}, 0px 0px 4px 0px ${RGBA(GRAY_SCALE.gray100, 0.08)}`, |  | ||||||
|   strong: `2px 4px 16px 0px ${RGBA( |  | ||||||
|     GRAY_SCALE.gray100, |  | ||||||
|     0.12, |  | ||||||
|   )}, 0px 2px 4px 0px ${RGBA(GRAY_SCALE.gray100, 0.04)}`, |  | ||||||
|   underline: `0px 1px 0px 0px ${RGBA(GRAY_SCALE.gray100, 0.32)}`, |  | ||||||
|   superHeavy: `0px 0px 8px 0px ${RGBA( |  | ||||||
|     GRAY_SCALE.gray100, |  | ||||||
|     0.16, |  | ||||||
|   )}, 0px 8px 64px -16px ${RGBA( |  | ||||||
|     GRAY_SCALE.gray100, |  | ||||||
|     0.48, |  | ||||||
|   )}, 0px 24px 56px -16px ${RGBA(GRAY_SCALE.gray100, 0.08)}`, |  | ||||||
| }; |  | ||||||
| @@ -1,8 +0,0 @@ | |||||||
| import { MAIN_COLORS } from 'twenty-ui'; |  | ||||||
|  |  | ||||||
| import { SECONDARY_COLORS } from '@/ui/theme/constants/SecondaryColors'; |  | ||||||
|  |  | ||||||
| export const COLOR = { |  | ||||||
|   ...MAIN_COLORS, |  | ||||||
|   ...SECONDARY_COLORS, |  | ||||||
| }; |  | ||||||
| @@ -1,17 +0,0 @@ | |||||||
| export const FONT_COMMON = { |  | ||||||
|   size: { |  | ||||||
|     xxs: '0.625rem', |  | ||||||
|     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', |  | ||||||
| }; |  | ||||||
| @@ -1,16 +0,0 @@ | |||||||
| import { COLOR } from '@/ui/theme/constants/Colors'; |  | ||||||
| import { FONT_COMMON } from '@/ui/theme/constants/FontCommon'; |  | ||||||
| import { GRAY_SCALE } from '@/ui/theme/constants/GrayScale'; |  | ||||||
|  |  | ||||||
| export const FONT_DARK = { |  | ||||||
|   color: { |  | ||||||
|     primary: GRAY_SCALE.gray20, |  | ||||||
|     secondary: GRAY_SCALE.gray35, |  | ||||||
|     tertiary: GRAY_SCALE.gray45, |  | ||||||
|     light: GRAY_SCALE.gray50, |  | ||||||
|     extraLight: GRAY_SCALE.gray55, |  | ||||||
|     inverted: GRAY_SCALE.gray100, |  | ||||||
|     danger: COLOR.red, |  | ||||||
|   }, |  | ||||||
|   ...FONT_COMMON, |  | ||||||
| }; |  | ||||||
| @@ -1,16 +0,0 @@ | |||||||
| import { COLOR } from '@/ui/theme/constants/Colors'; |  | ||||||
| import { FONT_COMMON } from '@/ui/theme/constants/FontCommon'; |  | ||||||
| import { GRAY_SCALE } from '@/ui/theme/constants/GrayScale'; |  | ||||||
|  |  | ||||||
| export const FONT_LIGHT = { |  | ||||||
|   color: { |  | ||||||
|     primary: GRAY_SCALE.gray60, |  | ||||||
|     secondary: GRAY_SCALE.gray50, |  | ||||||
|     tertiary: GRAY_SCALE.gray40, |  | ||||||
|     light: GRAY_SCALE.gray35, |  | ||||||
|     extraLight: GRAY_SCALE.gray30, |  | ||||||
|     inverted: GRAY_SCALE.gray0, |  | ||||||
|     danger: COLOR.red, |  | ||||||
|   }, |  | ||||||
|   ...FONT_COMMON, |  | ||||||
| }; |  | ||||||
| @@ -1,22 +0,0 @@ | |||||||
| /* eslint-disable @nx/workspace-no-hardcoded-colors */ |  | ||||||
| export const GRAY_SCALE = { |  | ||||||
|   gray100: '#000000', |  | ||||||
|   gray90: '#141414', |  | ||||||
|   gray85: '#171717', |  | ||||||
|   gray80: '#1b1b1b', |  | ||||||
|   gray75: '#1d1d1d', |  | ||||||
|   gray70: '#222222', |  | ||||||
|   gray65: '#292929', |  | ||||||
|   gray60: '#333333', |  | ||||||
|   gray55: '#4c4c4c', |  | ||||||
|   gray50: '#666666', |  | ||||||
|   gray45: '#818181', |  | ||||||
|   gray40: '#999999', |  | ||||||
|   gray35: '#b3b3b3', |  | ||||||
|   gray30: '#cccccc', |  | ||||||
|   gray25: '#d6d6d6', |  | ||||||
|   gray20: '#ebebeb', |  | ||||||
|   gray15: '#f1f1f1', |  | ||||||
|   gray10: '#fcfcfc', |  | ||||||
|   gray0: '#ffffff', |  | ||||||
| }; |  | ||||||
| @@ -1,8 +0,0 @@ | |||||||
| import { css } from '@emotion/react'; |  | ||||||
|  |  | ||||||
| export const HOVER_BACKGROUND = (props: any) => css` |  | ||||||
|   transition: background 0.1s ease; |  | ||||||
|   &:hover { |  | ||||||
|     background: ${props.theme.background.transparent.light}; |  | ||||||
|   } |  | ||||||
| `; |  | ||||||
| @@ -1,13 +0,0 @@ | |||||||
| export const ICON = { |  | ||||||
|   size: { |  | ||||||
|     sm: 14, |  | ||||||
|     md: 16, |  | ||||||
|     lg: 20, |  | ||||||
|     xl: 40, |  | ||||||
|   }, |  | ||||||
|   stroke: { |  | ||||||
|     sm: 1.6, |  | ||||||
|     md: 2, |  | ||||||
|     lg: 2.5, |  | ||||||
|   }, |  | ||||||
| }; |  | ||||||
| @@ -1,5 +0,0 @@ | |||||||
| import { MAIN_COLORS } from 'twenty-ui'; |  | ||||||
|  |  | ||||||
| export const MAIN_COLOR_NAMES = Object.keys(MAIN_COLORS) as ThemeColor[]; |  | ||||||
|  |  | ||||||
| export type ThemeColor = keyof typeof MAIN_COLORS; |  | ||||||
| @@ -1 +0,0 @@ | |||||||
| export const MOBILE_VIEWPORT = 768; |  | ||||||
| @@ -1,7 +0,0 @@ | |||||||
| export const MODAL = { |  | ||||||
|   size: { |  | ||||||
|     sm: '300px', |  | ||||||
|     md: '400px', |  | ||||||
|     lg: '53%', |  | ||||||
|   }, |  | ||||||
| }; |  | ||||||
| @@ -1,8 +0,0 @@ | |||||||
| import { css } from '@emotion/react'; |  | ||||||
| import { ThemeType } from 'twenty-ui'; |  | ||||||
|  |  | ||||||
| export const OVERLAY_BACKGROUND = (props: { theme: ThemeType }) => css` |  | ||||||
|   backdrop-filter: blur(12px) saturate(200%) contrast(50%) brightness(130%); |  | ||||||
|   background: ${props.theme.background.transparent.secondary}; |  | ||||||
|   box-shadow: ${props.theme.boxShadow.strong}; |  | ||||||
| `; |  | ||||||
| @@ -1,8 +0,0 @@ | |||||||
| /* eslint-disable @nx/workspace-no-hardcoded-colors */ |  | ||||||
| import hexRgb from 'hex-rgb'; |  | ||||||
|  |  | ||||||
| export const RGBA = (hex: string, alpha: number) => { |  | ||||||
|   return `rgba(${hexRgb(hex, { format: 'array' }) |  | ||||||
|     .slice(0, -1) |  | ||||||
|     .join(',')},${alpha})`; |  | ||||||
| }; |  | ||||||
| @@ -1,106 +0,0 @@ | |||||||
| /* eslint-disable @nx/workspace-no-hardcoded-colors */ |  | ||||||
| import { GRAY_SCALE } from '@/ui/theme/constants/GrayScale'; |  | ||||||
|  |  | ||||||
| export const SECONDARY_COLORS = { |  | ||||||
|   yellow80: '#2e2a1a', |  | ||||||
|   yellow70: '#453d1e', |  | ||||||
|   yellow60: '#746224', |  | ||||||
|   yellow50: '#b99b2e', |  | ||||||
|   yellow40: '#ffe074', |  | ||||||
|   yellow30: '#ffedaf', |  | ||||||
|   yellow20: '#fff6d7', |  | ||||||
|   yellow10: '#fffbeb', |  | ||||||
|  |  | ||||||
|   green80: '#1d2d1b', |  | ||||||
|   green70: '#23421e', |  | ||||||
|   green60: '#2a5822', |  | ||||||
|   green50: '#42ae31', |  | ||||||
|   green40: '#88f477', |  | ||||||
|   green30: '#ccfac5', |  | ||||||
|   green20: '#ddfcd8', |  | ||||||
|   green10: '#eefdec', |  | ||||||
|  |  | ||||||
|   turquoise80: '#172b23', |  | ||||||
|   turquoise70: '#173f2f', |  | ||||||
|   turquoise60: '#166747', |  | ||||||
|   turquoise50: '#16a26b', |  | ||||||
|   turquoise40: '#5be8b1', |  | ||||||
|   turquoise30: '#a1f2d2', |  | ||||||
|   turquoise20: '#d0f8e9', |  | ||||||
|   turquoise10: '#e8fcf4', |  | ||||||
|  |  | ||||||
|   sky80: '#152b2e', |  | ||||||
|   sky70: '#123f45', |  | ||||||
|   sky60: '#0e6874', |  | ||||||
|   sky50: '#07a4b9', |  | ||||||
|   sky40: '#4de9ff', |  | ||||||
|   sky30: '#99f3ff', |  | ||||||
|   sky20: '#ccf9ff', |  | ||||||
|   sky10: '#e5fcff', |  | ||||||
|  |  | ||||||
|   blue80: '#171e2c', |  | ||||||
|   blue70: '#172642', |  | ||||||
|   blue60: '#18356d', |  | ||||||
|   blue50: '#184bad', |  | ||||||
|   blue40: '#5e90f2', |  | ||||||
|   blue30: '#a3c0f8', |  | ||||||
|   blue20: '#d1dffb', |  | ||||||
|   blue10: '#e8effd', |  | ||||||
|  |  | ||||||
|   purple80: '#231e2e', |  | ||||||
|   purple70: '#2f2545', |  | ||||||
|   purple60: '#483473', |  | ||||||
|   purple50: '#6c49b8', |  | ||||||
|   purple40: '#b28ffe', |  | ||||||
|   purple30: '#d3bffe', |  | ||||||
|   purple20: '#e9dfff', |  | ||||||
|   purple10: '#f4efff', |  | ||||||
|  |  | ||||||
|   pink80: '#2d1c29', |  | ||||||
|   pink70: '#43213c', |  | ||||||
|   pink60: '#702c61', |  | ||||||
|   pink50: '#b23b98', |  | ||||||
|   pink40: '#f881de', |  | ||||||
|   pink30: '#fbb7ec', |  | ||||||
|   pink20: '#fddbf6', |  | ||||||
|   pink10: '#feedfa', |  | ||||||
|  |  | ||||||
|   red80: '#2d1b1b', |  | ||||||
|   red70: '#441f1f', |  | ||||||
|   red60: '#712727', |  | ||||||
|   red50: '#b43232', |  | ||||||
|   red40: '#fa7878', |  | ||||||
|   red30: '#fcb2b2', |  | ||||||
|   red20: '#fed8d8', |  | ||||||
|   red10: '#feecec', |  | ||||||
|  |  | ||||||
|   orange80: '#2e2018', |  | ||||||
|   orange70: '#452919', |  | ||||||
|   orange60: '#743b1b', |  | ||||||
|   orange50: '#b9571f', |  | ||||||
|   orange40: '#ff9c64', |  | ||||||
|   orange30: '#ffc7a7', |  | ||||||
|   orange20: '#ffe3d3', |  | ||||||
|   orange10: '#fff1e9', |  | ||||||
|  |  | ||||||
|   gray80: GRAY_SCALE.gray70, |  | ||||||
|   gray70: GRAY_SCALE.gray65, |  | ||||||
|   gray60: GRAY_SCALE.gray55, |  | ||||||
|   gray50: GRAY_SCALE.gray40, |  | ||||||
|   gray40: GRAY_SCALE.gray25, |  | ||||||
|   gray30: GRAY_SCALE.gray20, |  | ||||||
|   gray20: GRAY_SCALE.gray15, |  | ||||||
|   gray10: GRAY_SCALE.gray10, |  | ||||||
|   blueAccent90: '#141a25', |  | ||||||
|   blueAccent85: '#151d2e', |  | ||||||
|   blueAccent80: '#152037', |  | ||||||
|   blueAccent75: '#16233f', |  | ||||||
|   blueAccent70: '#17294a', |  | ||||||
|   blueAccent60: '#18356d', |  | ||||||
|   blueAccent40: '#a3c0f8', |  | ||||||
|   blueAccent35: '#c8d9fb', |  | ||||||
|   blueAccent25: '#dae6fc', |  | ||||||
|   blueAccent20: '#e2ecfd', |  | ||||||
|   blueAccent15: '#edf2fe', |  | ||||||
|   blueAccent10: '#f5f9fd', |  | ||||||
| }; |  | ||||||
| @@ -1,28 +0,0 @@ | |||||||
| import { COLOR } from '@/ui/theme/constants/Colors'; |  | ||||||
|  |  | ||||||
| export const TAG_DARK = { |  | ||||||
|   text: { |  | ||||||
|     green: COLOR.green10, |  | ||||||
|     turquoise: COLOR.turquoise10, |  | ||||||
|     sky: COLOR.sky10, |  | ||||||
|     blue: COLOR.blue10, |  | ||||||
|     purple: COLOR.purple10, |  | ||||||
|     pink: COLOR.pink10, |  | ||||||
|     red: COLOR.red10, |  | ||||||
|     orange: COLOR.orange10, |  | ||||||
|     yellow: COLOR.yellow10, |  | ||||||
|     gray: COLOR.gray10, |  | ||||||
|   }, |  | ||||||
|   background: { |  | ||||||
|     green: COLOR.green60, |  | ||||||
|     turquoise: COLOR.turquoise60, |  | ||||||
|     sky: COLOR.sky60, |  | ||||||
|     blue: COLOR.blue60, |  | ||||||
|     purple: COLOR.purple60, |  | ||||||
|     pink: COLOR.pink60, |  | ||||||
|     red: COLOR.red60, |  | ||||||
|     orange: COLOR.orange60, |  | ||||||
|     yellow: COLOR.yellow60, |  | ||||||
|     gray: COLOR.gray60, |  | ||||||
|   }, |  | ||||||
| }; |  | ||||||
| @@ -1,28 +0,0 @@ | |||||||
| import { COLOR } from './Colors'; |  | ||||||
|  |  | ||||||
| export const TAG_LIGHT = { |  | ||||||
|   text: { |  | ||||||
|     green: COLOR.green60, |  | ||||||
|     turquoise: COLOR.turquoise60, |  | ||||||
|     sky: COLOR.sky60, |  | ||||||
|     blue: COLOR.blue60, |  | ||||||
|     purple: COLOR.purple60, |  | ||||||
|     pink: COLOR.pink60, |  | ||||||
|     red: COLOR.red60, |  | ||||||
|     orange: COLOR.orange60, |  | ||||||
|     yellow: COLOR.yellow60, |  | ||||||
|     gray: COLOR.gray60, |  | ||||||
|   }, |  | ||||||
|   background: { |  | ||||||
|     green: COLOR.green20, |  | ||||||
|     turquoise: COLOR.turquoise20, |  | ||||||
|     sky: COLOR.sky20, |  | ||||||
|     blue: COLOR.blue20, |  | ||||||
|     purple: COLOR.purple20, |  | ||||||
|     pink: COLOR.pink20, |  | ||||||
|     red: COLOR.red20, |  | ||||||
|     orange: COLOR.orange20, |  | ||||||
|     yellow: COLOR.yellow20, |  | ||||||
|     gray: COLOR.gray20, |  | ||||||
|   }, |  | ||||||
| }; |  | ||||||
| @@ -1,13 +0,0 @@ | |||||||
| export const TEXT = { |  | ||||||
|   lineHeight: { |  | ||||||
|     lg: 1.5, |  | ||||||
|     md: 1.2, |  | ||||||
|   }, |  | ||||||
|  |  | ||||||
|   iconSizeMedium: 16, |  | ||||||
|   iconSizeSmall: 14, |  | ||||||
|  |  | ||||||
|   iconStrikeLight: 1.6, |  | ||||||
|   iconStrikeMedium: 2, |  | ||||||
|   iconStrikeBold: 2.5, |  | ||||||
| }; |  | ||||||
| @@ -1,20 +0,0 @@ | |||||||
| import { css } from '@emotion/react'; |  | ||||||
| import { ThemeType } from 'twenty-ui'; |  | ||||||
|  |  | ||||||
| export const TEXT_INPUT_STYLE = (props: { theme: ThemeType }) => css` |  | ||||||
|   background-color: transparent; |  | ||||||
|   border: none; |  | ||||||
|   color: ${props.theme.font.color.primary}; |  | ||||||
|   font-family: ${props.theme.font.family}; |  | ||||||
|   font-size: inherit; |  | ||||||
|   font-weight: inherit; |  | ||||||
|   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}; |  | ||||||
|   } |  | ||||||
| `; |  | ||||||
| @@ -1,44 +0,0 @@ | |||||||
| /* eslint-disable @nx/workspace-no-hardcoded-colors */ |  | ||||||
| import { ANIMATION } from '@/ui/theme/constants/Animation'; |  | ||||||
| import { BLUR } from '@/ui/theme/constants/Blur'; |  | ||||||
| import { COLOR } from '@/ui/theme/constants/Colors'; |  | ||||||
| import { GRAY_SCALE } from '@/ui/theme/constants/GrayScale'; |  | ||||||
| import { ICON } from '@/ui/theme/constants/Icon'; |  | ||||||
| import { MODAL } from '@/ui/theme/constants/Modal'; |  | ||||||
| import { TEXT } from '@/ui/theme/constants/Text'; |  | ||||||
|  |  | ||||||
| export const THEME_COMMON = { |  | ||||||
|   color: COLOR, |  | ||||||
|   grayScale: GRAY_SCALE, |  | ||||||
|   icon: ICON, |  | ||||||
|   modal: MODAL, |  | ||||||
|   text: TEXT, |  | ||||||
|   blur: BLUR, |  | ||||||
|   animation: ANIMATION, |  | ||||||
|   snackBar: { |  | ||||||
|     success: { |  | ||||||
|       background: '#16A26B', |  | ||||||
|       color: '#D0F8E9', |  | ||||||
|     }, |  | ||||||
|     error: { |  | ||||||
|       background: '#B43232', |  | ||||||
|       color: '#FED8D8', |  | ||||||
|     }, |  | ||||||
|     info: { |  | ||||||
|       background: COLOR.gray80, |  | ||||||
|       color: GRAY_SCALE.gray0, |  | ||||||
|     }, |  | ||||||
|   }, |  | ||||||
|   spacingMultiplicator: 4, |  | ||||||
|   spacing: (...args: number[]) => |  | ||||||
|     args.map((multiplicator) => `${multiplicator * 4}px`).join(' '), |  | ||||||
|   betweenSiblingsGap: `2px`, |  | ||||||
|   table: { |  | ||||||
|     horizontalCellMargin: '8px', |  | ||||||
|     checkboxColumnWidth: '32px', |  | ||||||
|     horizontalCellPadding: '8px', |  | ||||||
|   }, |  | ||||||
|   rightDrawerWidth: '500px', |  | ||||||
|   clickableElementBackgroundTransition: 'background 0.1s ease', |  | ||||||
|   lastLayerZIndex: 2147483647, |  | ||||||
| }; |  | ||||||
| @@ -1,10 +0,0 @@ | |||||||
| import { z } from 'zod'; |  | ||||||
|  |  | ||||||
| import { |  | ||||||
|   MAIN_COLOR_NAMES, |  | ||||||
|   ThemeColor, |  | ||||||
| } from '@/ui/theme/constants/MainColorNames'; |  | ||||||
|  |  | ||||||
| export const themeColorSchema = z.enum( |  | ||||||
|   MAIN_COLOR_NAMES as [ThemeColor, ...ThemeColor[]], |  | ||||||
| ); |  | ||||||
| @@ -1,7 +1,6 @@ | |||||||
| import { useTheme } from '@emotion/react'; | import { useTheme } from '@emotion/react'; | ||||||
| import { motion } from 'framer-motion'; | import { motion } from 'framer-motion'; | ||||||
|  | import { AnimationDuration } from 'twenty-ui'; | ||||||
| import { AnimationDuration } from '@/ui/theme/constants/Animation'; |  | ||||||
|  |  | ||||||
| type AnimatedEaseInProps = Omit< | type AnimatedEaseInProps = Omit< | ||||||
|   React.ComponentProps<typeof motion.div>, |   React.ComponentProps<typeof motion.div>, | ||||||
|   | |||||||
| @@ -1,7 +1,6 @@ | |||||||
| import { useTheme } from '@emotion/react'; | import { useTheme } from '@emotion/react'; | ||||||
| import { AnimatePresence, motion } from 'framer-motion'; | import { AnimatePresence, motion } from 'framer-motion'; | ||||||
|  | import { AnimationDuration } from 'twenty-ui'; | ||||||
| import { AnimationDuration } from '@/ui/theme/constants/Animation'; |  | ||||||
|  |  | ||||||
| type AnimatedEaseInOutProps = { | type AnimatedEaseInOutProps = { | ||||||
|   isOpen: boolean; |   isOpen: boolean; | ||||||
|   | |||||||
| @@ -1,7 +1,6 @@ | |||||||
| import { useTheme } from '@emotion/react'; | import { useTheme } from '@emotion/react'; | ||||||
| import { AnimatePresence, motion } from 'framer-motion'; | import { AnimatePresence, motion } from 'framer-motion'; | ||||||
|  | import { AnimationDuration } from 'twenty-ui'; | ||||||
| import { AnimationDuration } from '@/ui/theme/constants/Animation'; |  | ||||||
|  |  | ||||||
| type AnimatedFadeOutProps = { | type AnimatedFadeOutProps = { | ||||||
|   isOpen: boolean; |   isOpen: boolean; | ||||||
|   | |||||||
| @@ -4,8 +4,7 @@ import { | |||||||
|   useSelectionContainer, |   useSelectionContainer, | ||||||
| } from '@air/react-drag-to-select'; | } from '@air/react-drag-to-select'; | ||||||
| import { useTheme } from '@emotion/react'; | import { useTheme } from '@emotion/react'; | ||||||
|  | import { RGBA } from 'twenty-ui'; | ||||||
| import { RGBA } from '@/ui/theme/constants/Rgba'; |  | ||||||
|  |  | ||||||
| import { useDragSelect } from '../hooks/useDragSelect'; | import { useDragSelect } from '../hooks/useDragSelect'; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,6 +1,5 @@ | |||||||
| import { useMediaQuery } from 'react-responsive'; | import { useMediaQuery } from 'react-responsive'; | ||||||
|  | import { MOBILE_VIEWPORT } from 'twenty-ui'; | ||||||
| import { MOBILE_VIEWPORT } from '@/ui/theme/constants/MobileViewport'; |  | ||||||
|  |  | ||||||
| export const useIsMobile = () => | export const useIsMobile = () => | ||||||
|   useMediaQuery({ query: `(max-width: ${MOBILE_VIEWPORT}px)` }); |   useMediaQuery({ query: `(max-width: ${MOBILE_VIEWPORT}px)` }); | ||||||
|   | |||||||
| @@ -1,12 +1,16 @@ | |||||||
| import { useTheme } from '@emotion/react'; | import { useTheme } from '@emotion/react'; | ||||||
| import styled from '@emotion/styled'; | import styled from '@emotion/styled'; | ||||||
| import { useRecoilValue } from 'recoil'; | import { useRecoilValue } from 'recoil'; | ||||||
| import { IconChevronDown, IconList, useIcons } from 'twenty-ui'; | import { | ||||||
|  |   IconChevronDown, | ||||||
|  |   IconList, | ||||||
|  |   MOBILE_VIEWPORT, | ||||||
|  |   useIcons, | ||||||
|  | } from 'twenty-ui'; | ||||||
|  |  | ||||||
| import { Dropdown } from '@/ui/layout/dropdown/components/Dropdown'; | import { Dropdown } from '@/ui/layout/dropdown/components/Dropdown'; | ||||||
| import { StyledDropdownButtonContainer } from '@/ui/layout/dropdown/components/StyledDropdownButtonContainer'; | import { StyledDropdownButtonContainer } from '@/ui/layout/dropdown/components/StyledDropdownButtonContainer'; | ||||||
| import { useDropdown } from '@/ui/layout/dropdown/hooks/useDropdown'; | import { useDropdown } from '@/ui/layout/dropdown/hooks/useDropdown'; | ||||||
| import { MOBILE_VIEWPORT } from '@/ui/theme/constants/MobileViewport'; |  | ||||||
| import { useGetCurrentView } from '@/views/hooks/useGetCurrentView'; | import { useGetCurrentView } from '@/views/hooks/useGetCurrentView'; | ||||||
| import { ViewsHotkeyScope } from '@/views/types/ViewsHotkeyScope'; | import { ViewsHotkeyScope } from '@/views/types/ViewsHotkeyScope'; | ||||||
| import { ViewPickerCreateOrEditContent } from '@/views/view-picker/components/ViewPickerCreateOrEditContent'; | import { ViewPickerCreateOrEditContent } from '@/views/view-picker/components/ViewPickerCreateOrEditContent'; | ||||||
|   | |||||||
| @@ -2,13 +2,12 @@ import React from 'react'; | |||||||
| import { useNavigate } from 'react-router-dom'; | import { useNavigate } from 'react-router-dom'; | ||||||
| import { useTheme } from '@emotion/react'; | import { useTheme } from '@emotion/react'; | ||||||
| import styled from '@emotion/styled'; | import styled from '@emotion/styled'; | ||||||
| import { IconCheck } from 'twenty-ui'; | import { IconCheck, RGBA } from 'twenty-ui'; | ||||||
|  |  | ||||||
| import { SubTitle } from '@/auth/components/SubTitle'; | import { SubTitle } from '@/auth/components/SubTitle'; | ||||||
| import { Title } from '@/auth/components/Title'; | import { Title } from '@/auth/components/Title'; | ||||||
| import { AppPath } from '@/types/AppPath'; | import { AppPath } from '@/types/AppPath'; | ||||||
| import { MainButton } from '@/ui/input/button/components/MainButton'; | import { MainButton } from '@/ui/input/button/components/MainButton'; | ||||||
| import { RGBA } from '@/ui/theme/constants/Rgba'; |  | ||||||
| import { AnimatedEaseIn } from '@/ui/utilities/animation/components/AnimatedEaseIn'; | import { AnimatedEaseIn } from '@/ui/utilities/animation/components/AnimatedEaseIn'; | ||||||
|  |  | ||||||
| const StyledCheckContainer = styled.div` | const StyledCheckContainer = styled.div` | ||||||
|   | |||||||
| @@ -1,3 +1,4 @@ | |||||||
|  | /* eslint-disable @nx/workspace-no-hardcoded-colors */ | ||||||
| import { ANIMATION } from './Animation'; | import { ANIMATION } from './Animation'; | ||||||
| import { BLUR } from './Blur'; | import { BLUR } from './Blur'; | ||||||
| import { COLOR } from './Colors'; | import { COLOR } from './Colors'; | ||||||
| @@ -14,6 +15,20 @@ export const THEME_COMMON = { | |||||||
|   text: TEXT, |   text: TEXT, | ||||||
|   blur: BLUR, |   blur: BLUR, | ||||||
|   animation: ANIMATION, |   animation: ANIMATION, | ||||||
|  |   snackBar: { | ||||||
|  |     success: { | ||||||
|  |       background: '#16A26B', | ||||||
|  |       color: '#D0F8E9', | ||||||
|  |     }, | ||||||
|  |     error: { | ||||||
|  |       background: '#B43232', | ||||||
|  |       color: '#FED8D8', | ||||||
|  |     }, | ||||||
|  |     info: { | ||||||
|  |       background: COLOR.gray80, | ||||||
|  |       color: GRAY_SCALE.gray0, | ||||||
|  |     }, | ||||||
|  |   }, | ||||||
|   spacingMultiplicator: 4, |   spacingMultiplicator: 4, | ||||||
|   spacing: (...args: number[]) => |   spacing: (...args: number[]) => | ||||||
|     args.map((multiplicator) => `${multiplicator * 4}px`).join(' '), |     args.map((multiplicator) => `${multiplicator * 4}px`).join(' '), | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Abdullah
					Abdullah