mirror of
https://github.com/lingble/twenty.git
synced 2025-11-02 05: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