PromucFlow_constructor/app/client/src/constants/DefaultTheme.tsx
Abhinav Jha 4361db4269
feat: Automatic height updates for widgets based on contents (Auto Height) (#18341)
* added multi select back

* (WIP): Complete the dynamc height update logic

* (WIP): Dynamic height logic

* (WIP): Container computation logic, Next steps: Prevent reflow when resize is disabled. Fix logic of widgets randomly changing positions (Debug)

* Fix logic in container computations

* Integrate for PoC

* fixed the no initial load dynamic height updates

* Stop vertical resize and reflow when dynamic height is enabled for a widget

* added another container in text widget

* enabled dynamic height for container widgets

* removed dynamic height feature from list widget

* Fixed Button and Input components height increase

* added an experiment to overflow the content if maxHEight is less

* removed the ref of Textwidget by mistake, added it back

* fixed text widget height overflow problem with a little hack

* added long labels with text

* fixed the table scroll issue

* overflow fixed for json form widget

* added extra 8px height for Switch, Rating and Checkbox Height

* (WIP): Resolve issues

* (WIP): Fix widget padding issue

* added overflow container for Radio and Switch group widgets

* (WIP): Have modals work with dynamic height

* added the overlay and the handles

* added dragging behavior to the dots

* fixed the overlapping with the selection tool

* (WIP): Fix issues reported

* now we can update the property pane values back from overlay handles

* now we can update the property pane values back from overlay handles

* (WIP): Fix table widget

* Fix package.json

* Remove unit tests temporarily

* Fix unit test

* (WIP): Fix modal resize. Fix cursors. Fix border issue on non-resizable widgets

* fetch component heights using the requestAnimationFrame callback

* behavioural changes

* (WIP): Fix issues on the platform

* Update main container size appropriately

* more behavioural changes

* overlay now only be visible when hovering over the dots

* grid showing and widget reselecting

* added onfocus and onblur events to property pane listeners

* added onfocus and onblur events to property pane listeners

* added a range slider for min and max

* added demarcations for slider values

* (WIP): Fix platform workflows for dynamic height

* Fix issues with widgets

* Fix removed import

* - Add missing cypress files

* set the limits

* limit increase on change

* Fix z-index of min max limit indicators. Fix unused-vars warnings

* Fix Table Widget and Text Widget issues

* Fix: all the bugs in the bug master list for DH (#16268)

* changed the zindex for the signifiers

* showing signifiers only when the widget is selected

* made changes suggested by Momcilo

* activate the dots when the fields are active

* created a new centered dot handle

* removed overlays on focus and made the border more like deisgn

* handles on top of other widgets

* hide the overlay when multiple widgets are selected

* added a white border

* added a white border

* bug #15509 resolved

* changed the minDynamicHeightLimit to 2 instead of 4 to fix the Bug #15527

* removed the height auto fix from BaseInputComponent to fix the Bug #15388

* removed the condition to not ccalculate dynamic height when the row difference is less than 2 to fix the bug 15353

* made fixes for the bug #16307

* made fixes for the bug #16308

* made fixes for bug 16310

* made fixes for the bug #16402

* removed some log statements

* made fixes for the bug #16407

* fixed label problem found in the issue #16543

* made fixes for the issue #16547

* made fixes for the bug #16492

* redeploy

* (WIP): Fix to make this branch functional

* imported LabelWithTooltip back from design system

* signifier is now centered

* filled the signifier with primary color

* overlay hidden while dragging

* made the signifier dashed border also draggable

* Fix issue #16590 (#16798)

* set the limits to 4 rows

* replaced the static 40 value

* added signifiers for modal widget

* added signifiers for modal widget

* tried solving the scroll issue for widgets when there are limits

* solved the height problem using ResizeObserver

* (WIP): Fix maxDynamicHeight issue with container widgets:

* made the changes as per the review

* fixed the issue for input widget when label gets out of border

* hide text widget overflow options if auto height is enabled

* (WIP): In view mode, invisible widgets now donot take space (#16920)

* (WIP): In view mode, invisible widgets now donot take space

* (WIP): Enable the feature where invisible widgets in view mode don't take space to all widgets irrespective of the dynamic height feature

* Remove Replay conditional

* removed the scroll container for container type widgets

* removed the scroll container for container type widgets

* updated the hook to set overflow none for text widget

* fixed the should dynamic height logic to respect the min height limit

* Modal widget adheres to dynamic height (#16995)

* Modal widget adheres to dynamic height

* WIP: POC: fix dynamic height issues  (#16996)

Fix height less than 4 issue. Fix JSONForm adherence to min and max height

* POC: Dynamic height undo redo issue (#17085)

* Revert debouce timeout

* (WIP): Fix issue with undo-redo in dynamic height

* fix: Dynamic height issue fixes (#17153)

* Dynamic height issue fixes
==

- Fix issue where nested widgets did not ensure parent dynamic height updates
- Fix issue where Modal widget updates came in subsequent renders
- Fix issue where JSONForm collapses
- Fix performance issue for independent updates

* Use functions to get min and max dynamic height

* Fix issue where variable might have been undefined

* added the dynamic container into the deploy mode as well

* added overflow-x hidden when overflow-y is active in the dynamic height container

* fix: Dynamic height Issue fixes (#17204)

Fix preview mode invisible widgets. Fix Tabs widget dynamic height.

* removed a console.log statement

* removed the slider control file

* imported the LabelWithTooltip from the repo rather than ds

* word-break CSS rules added for Switch and Checkbox widget when Dynamic Height is enabled

* abstracted the check for dynamic height with limits enabled as isDynamicHeightWithLimitsEnabledForWidget

* abstracted the static value of 10 in dynamic height overlay to GridDefaults

* abstracted min and max dynamic height limits to getters

* fix: replaced all the refs for simpler widgets (#17353)

* replaced all the refs for simpler widgets

* removed the updateDynamicHeight from componentDidUpdate in BaseWidget

* added back lifecycle methods back to BaseWidget

* removed the contentRef from SwitchGroup and Table

* updating the height from the auto height with limits as well

* some hacks to make the limits work

* working solution

* used setTimeout to send an update to updateDynamicHeight from overlay update

* removed a log

* added requestanimationframe in settimeout

Co-authored-by: Ankur Singhal <ankursinghal@Ankurs-MacBook-Pro-2.local>
Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com>

* Fix issues caused during merge

* Remove unneeded derived property

* removed more unnecessary code which should have been removed after removing the ref dependency

* fixed the maxDynamicHeight issue

* Fix issue where property configs were not being sent

* fix: Auto Height Feature - add selectors for tests (#17687)

Add selectors for auto height cypress tests

* fix: removed height auto default theme (#17415)

removed height auto css rule from the default theme

Co-authored-by: Ankur Singhal <ankursinghal@Ankurs-MacBook-Pro-2.local>

* fix: Auto Height Feature - Resolve issues and restructure code (#17686)

* Fix issues in dynamic height. Restructure code and reduce abstraction leaks

* Fix typescript issues

* Update based on review comments. Comment migrations, as a cyclic import is causing the jest tests to fail.

* Remove unused imports

* Decrease code nesting

* added the base styles for the overlay like position and z-index in its styled component css

* used the isDynamicHeightEnabled prop to set the height of SwitchGroup and RadioGroup widgets from 32px to 100% in case of inline mode

* fix: Auto Height - Resolve issues (#17737)

* Fix Tabs Widget showTabs toggle based auto height. Revert removal of BaseWidget code. Remove box-intersect and use a bruteforce algorithm. Add base logic for having containers collapse due to hidden child widgets

* Hide scroll contents and overflow property pane controls when dynamic height is enabled

* Removed the class property expectedHeight from BaseWidget as it is not useful in the overlay logic after some changes

* fixed the left alignment issue of label in the rich text editor by adding some styles applied only when the dynamic height is enabled

* fixed the input field stretching issue in case of Dynamic height by adding some CSS styles when isDynamicHeight is true

* Fix failing modal widget cypress tests

* Fix issue with scrollContents and Tabs Widget defaulTab

* added a little bit padding of 4px to the right of scroll container of dynamic height with limit

* Add test locators for resize handles

* removed the dynamic height logic from the table widget

* fix: Auto-Height invisible widgets (#17849)

* Fix issue where invisible widgets were still taking space

* Make sure to collapse only if dynamic height is enabled

* Fix issues with reflow (not the invisible widgets)

* Fix container min height issues

* Fix reflow with original bottom and top values. Testing needed

* Fix invisible widgets

* fix: enabled dynamic height for stat box widget (#17971)

enabled dynamic height for stat box widget

Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com>

* fix: added a min height to rich text editor so that it does not collapse (#17970)

added a min height to rich text editor so that it does not collapse

Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com>

* Fix issue with resizing auto height widget

* Add helper text to educate users regarding the scroll disconnect in WYSIWYG

* fix: Auto Height Fixes (#18111)

AUTO HEIGHT FIXES

- Fix JSONForm height discrepancy
- Fix issue where widgets moved below the other
- Fix droptarget height after parent container resize

* fix: sliced up the DynamicHeightOverlay component a little bit (#18100)

* sliced up the DynamicHeightOverlay component a little bit

* more refactoring

* more refactoring

* used release event emitter and refactored more

Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com>

* fix: rich text editor center alignment issue (#18142)

* removed the center alignment from rich text editor

* dummy commit

Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com>

* fix: old DSL container collapse (#18160)

* Fix issue where old containers from old DSLs used to collapse when auto height was enabled

* Fix issue where old containers don't allow new widgets to be added when auto height is enabled, this is because the shouldScrollContents is undefined

* fix: input widgets issue (#18172)

fixed the auto height not working issue

Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com>

* fix: preview deploy mode (#18174)

fixed the preview and deploy mode

Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com>

* fix: auto height limits label intersection with handle dot (#18186)

fixed the position of the limits label to the right so that it will not intersect with the handle dot

Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com>

* fix: auto height limits rich text editor min height (#18187)

decrease the min height of the RTE so that it does not have the boundary issue with the max limit when auto height with limits is enabled

Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com>

* fix: grammatical error in the help text (#18188)

changed react to reacts in the helpText of the dynamic height property in the proeprty pane

Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com>

* fix: auto height tabs double scroll (#18210)

solved the issue by disabling the scroll for the child canvas widget in the tabs widget

Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com>

* fix: auto height limits resizing (#18213)

* fixed the auto height limits resizing issue

* made the auto height overlay independent of isResizing and used its own property to show the grid

* some more refactoring

Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com>

* dummy commit

* fix: old apps container issue (#18255)

filtered out the widgets which are detached from layout

Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com>

* fix: fixing auto height in childless containers. (#18263)

fixing auto height in childless containers.

* task: Dynamic height reflow fixes in Branch (#18244)

dynamic height reflow fixes

* fix: compact label issue and min and max limits numeric input (#18282)

fixed compact label issue and turned min and max limits to numeric input

Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com>

* fix: LabelWithTooltip help icon fix

* fix: NaN and min limit for min and max (#18284)

* fixed compact label issue and turned min and max limits to numeric input

* fixed NaN and set min to be 4

Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com>

* fix: validation issues for min max (#18286)

* fixed compact label issue and turned min and max limits to numeric input

* fixed NaN and set min to be 4

* validations start working min max

Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com>

* added a full stop to container scroll helper text

* validations start working min max

* dummy commit

* feat: stop resizing auto height widgets vertically because of Drag n Drop Reflow (#18267)

* reflow fixes

* stop resizing auto height widgets vertically because of Drag n Drop Reflow

* feat: Analytics for Dynamic height (#18279)

* Fix canvas min height issue and invisible widgets issue and remove logs and fix issue where widgets overlapped when coming back from preview mode to edit mode

* Fix issue with containers not respecting auto height and decreasing height

* Fix issue with modal widget not hugging contents, and container widgets never become visible after going invisible

* Fix issue where existing containers don't have correct min height for child canvas

* fix: canvasLevelsReducers test (#18301)

fixed the canvasLevelsReducers test

Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com>

* fix: removed auto height min max config from widget features (#18316)

removed auto height min max config from widget features

Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com>

* fix: Fixing Modal Height updates (#18317)

Fixing Modal Height updates

* fix: text widget background auto height (#18319)

added background color of Text widget back to the auto height container

Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com>

* test: cypress tests for auto height (#17676)

* Added tests for dynamic height

* updated tests for another usecase

* moved locators into commonfile

* updated common method

* added tests for some more widgets

* Added tests for jsonForm / Form widget

* Updated the test

* updated test for multiple text widgets

* updated test with few more usecases

* updated the dsl

* updated tests for text change

* updated tests based on new changes

* updated cypress test fixes

* fix: auto height container merge poc wrt release (#18334)

updated the poc wrt PR already merged in the release regarding the auto height container

Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com>

* fix: renamed auto height overlay components and added some tests (#18333)

* renamed auto height overlay components and added some tests

* replaced the 10 value with GridDefaults

* avoiding event to reach drop target

Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com>

* updated tests

* Merge all code into one branch

* Fix failing AutoHeightcontainer test

* fix: Fix reflow computations which were causing widget overlap (#18300)

* Fix reflow computations which were causing widget overlap

* Fix issues with parent container height and overlapping widgets

* Remove console logs

* Revert comment

* Fix issues related to reflow of containers

* feat: Making getEffectedBoxes a Recursive function in autoHeight Reflow (#18336)

Making getEffectedBoxes a Recursive function in autoHeight Reflow

* Return null for invisible widgets from withWidgetProps

* Remove duplicate import

Co-authored-by: rahulramesha <71900764+rahulramesha@users.noreply.github.com>

* Remove missed console log

* fix: Label position gets deselected on selecting already selected option (#18298)

* fix: Label position gets deselected on selecting the already selected value

* Added migration for Currency & Phone input widgets

* simplify migration function using a utility

* combine conditions

* Increments LATEST_PAGE_VERSION

* Update DynamicHeight_Visibility_spec.js

updated a check wrt auto height

* Handling Modals for canvas size calculations

* fix: migrate label position test failing issue (#18365)

fixed migrate label postition test failing issue

Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com>

* removed the two unwanted imports from DSLMigrations to fix client build

* fix: Auto height zero and limits issue (#18366)

fixed the auto height zero and limits issue

Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com>

* fix: Auto height regression issues (#18367)

* Fix auto height regression issues #18367

* feat: auto height migrations (#18368)

Add auto height migrations

* Increase file caching size

* Use manual array for list of auto height enabled widgets

* Fix cypress test dsl versions

* Revert changes to shouldUpdateHeightDynamically

* Update test results based on code changes

* Marginally increase the workbox file size cache

* review comment incorporated for test spec

* Update container auto height property on drop

* added small wait for validation

Co-authored-by: Ankur Singhal <ankur@appsmith.com>
Co-authored-by: rahulramesha <rahul@appsmith.com>
Co-authored-by: Abhinav Jha <zatanna@Abhinavs-iMac.lan>
Co-authored-by: Ankur Singhal <ankursinghal@Ankurs-MacBook-Pro-2.local>
Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com>
Co-authored-by: Ashok Kumar M <35134347+marks0351@users.noreply.github.com>
Co-authored-by: rahulramesha <71900764+rahulramesha@users.noreply.github.com>
Co-authored-by: Albin <albin@appsmith.com>
Co-authored-by: Aswath K <aswath.sana@gmail.com>
Co-authored-by: NandanAnantharamu <67676905+NandanAnantharamu@users.noreply.github.com>
Co-authored-by: Apple <nandan@thinkify.io>
2022-11-23 15:18:23 +05:30

3065 lines
68 KiB
TypeScript

import * as styledComponents from "styled-components";
import { ThemedStyledComponentsModule } from "styled-components";
import { Colors, Color } from "./Colors";
import * as FontFamilies from "./Fonts";
import tinycolor from "tinycolor2";
import { Alignment, Classes } from "@blueprintjs/core";
import { AlertIcons } from "icons/AlertIcons";
import { IconProps } from "constants/IconConstants";
import { JSXElementConstructor } from "react";
import { typography, Typography, TypographyKeys } from "./typography";
import { LabelPosition } from "components/constants";
export type FontFamily = typeof FontFamilies[keyof typeof FontFamilies];
const themedStyled = {
default: styledComponents.default,
css: styledComponents.css,
createGlobalStyle: styledComponents.createGlobalStyle,
keyframes: styledComponents.keyframes,
ThemeProvider: styledComponents.ThemeProvider,
} as ThemedStyledComponentsModule<Theme>;
const {
createGlobalStyle,
css,
default: styled,
keyframes,
ThemeProvider,
} = themedStyled;
export const IntentColors: Record<string, Color> = {
primary: Colors.GREEN,
success: Colors.PURPLE,
secondary: Colors.BLACK_PEARL,
danger: Colors.ERROR_RED,
none: Colors.GEYSER_LIGHT,
warning: Colors.JAFFA,
successLight: Colors.GREEN,
};
export type Intent = typeof IntentColors[keyof typeof IntentColors];
export const IntentIcons: Record<Intent, JSXElementConstructor<IconProps>> = {
primary: AlertIcons.SUCCESS,
success: AlertIcons.SUCCESS,
secondary: AlertIcons.INFO,
danger: AlertIcons.ERROR,
none: AlertIcons.INFO,
warning: AlertIcons.WARNING,
};
export enum Skin {
LIGHT,
DARK,
}
export const truncateTextUsingEllipsis = css`
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
display: block;
`;
export const getTypographyByKey = (
props: Record<string, any>,
key: TypographyKeys,
) => `
font-weight: ${props.theme.typography[key].fontWeight};
font-size: ${props.theme.typography[key].fontSize}px;
line-height: ${props.theme.typography[key].lineHeight}px;
letter-spacing: ${props.theme.typography[key].letterSpacing}px;
`;
export const BlueprintControlTransform = css`
&& {
.${Classes.CONTROL}.${Classes.DISABLED} {
color: ${Colors.GREY_8};
}
.${Classes.CONTROL} {
& input:checked ~ .${Classes.CONTROL_INDICATOR} {
background: ${(props) => props.theme.colors.primaryOld};
box-shadow: none;
border: 1px solid ${(props) => props.theme.colors.primaryOld};
}
&
input:invalid:not(:disabled):not(:checked)
~ .${Classes.CONTROL_INDICATOR} {
border: 1px solid var(--wds-color-border-danger);
}
&:hover
input:invalid:not(:disabled):not(:checked)
~ .${Classes.CONTROL_INDICATOR} {
border: 1px solid var(--wds-color-border-danger-hover) !important;
}
& input:disabled:not(:checked) ~ .${Classes.CONTROL_INDICATOR} {
background-color: var(--wds-color-bg-disabled) !important;
border: 1px solid var(--wds-color-border-disabled) !important;
}
& input:disabled:checked ~ .${Classes.CONTROL_INDICATOR} {
background-color: var(--wds-color-bg-disabled) !important;
border: 1px solid var(--wds-color-border-disabled) !important;
}
&:hover {
& input:not(:checked):not(:disabled) ~ .bp3-control-indicator {
border: 1px solid ${Colors.GREY_6} !important;
}
}
}
.${Classes.SWITCH} {
& input ~ .${Classes.CONTROL_INDICATOR} {
transition: none;
&::before {
box-shadow: none;
}
}
input:checked ~ .${Classes.CONTROL_INDICATOR} {
&::before {
left: calc(105% - 1em);
}
}
input:not(:checked) ~ .${Classes.CONTROL_INDICATOR} {
background: var(--wds-color-bg-strong);
border: 1px solid var(--wds-color-border);
}
input:disabled ~ .${Classes.CONTROL_INDICATOR} {
background: var(--wds-color-bg-disabled) !important;
&::before {
background: var(--wds-color-bg-disabled-strong);
}
}
&:hover {
& input:not(:checked):not(:disabled) ~ .bp3-control-indicator {
background: var(--wds-color-bg-strong-hover);
border: 1px solid var(--wds-color-border-hover) !important;
}
}
}
.${Classes.CONTROL_INDICATOR} {
&::before {
position: absolute;
left: -1px;
top: -1px;
}
}
}
`;
export const invisible = css`
&& > * {
opacity: 0.6;
}
`;
export const disable = css`
& {
cursor: not-allowed;
& > * {
opacity: 0.5;
pointer-events: none;
}
}
`;
export const BlueprintCSSTransform = css`
&&&& {
.${Classes.BUTTON} {
box-shadow: none;
border-radius: 0;
background: white;
}
.${Classes.INTENT_PRIMARY} {
background: ${IntentColors.primary};
}
.${Classes.INTENT_SUCCESS} {
background: ${IntentColors.success};
}
.${Classes.INTENT_DANGER} {
background: ${IntentColors.danger};
}
.${Classes.INTENT_WARNING} {
background: ${IntentColors.warning};
}
}
`;
export const darken = (color: Color, intensity: number) => {
return new tinycolor(color).darken(intensity).toString();
};
export const darkenHover = (color: Color) => {
return darken(color, 8);
};
export const darkenActive = (color: Color) => {
return darken(color, 16);
};
const getButtonHoverAndActiveStyles = (color: Color, filled = true) => {
return css`
background: ${color};
border-color: ${filled ? color : "auto"};
color: ${filled ? Colors.WHITE : "auto"};
&:hover {
background: ${darkenHover(color)};
border-color: ${darkenHover(color)};
box-shadow: none;
}
&:active {
background: ${darkenActive(color)};
border-color: ${darkenActive(color)};
box-shadow: none;
}
`;
};
export const BlueprintButtonIntentsCSS = css`
&&.${Classes.BUTTON} {
box-shadow: none;
display: flex;
border-width: 1px;
border-style: solid;
outline: none;
min-width: 50px;
color: ${IntentColors.secondary};
border-color: ${IntentColors.none};
& span.bp3-icon {
color: ${IntentColors.none};
}
& span {
font-weight: ${(props) => props.theme.fontWeights[3]};
}
background: ${Colors.WHITE};
}
&&&.${Classes.BUTTON}.${Classes.INTENT_PRIMARY}:not(.${Classes.MINIMAL}) {
background: ${IntentColors.primary};
${getButtonHoverAndActiveStyles(IntentColors.primary)}
}
&&&.${Classes.BUTTON}.bp3-intent-secondary:not(.${Classes.MINIMAL}) {
background: ${IntentColors.secondary};
${getButtonHoverAndActiveStyles(IntentColors.secondary)}
}
&&&.${Classes.BUTTON}.${Classes.INTENT_DANGER}:not(.${Classes.MINIMAL}) {
background: ${IntentColors.danger};
${getButtonHoverAndActiveStyles(IntentColors.danger)}
}
&&&.${Classes.BUTTON}.${Classes.INTENT_SUCCESS}:not(.${Classes.MINIMAL}) {
background: ${IntentColors.success};
${getButtonHoverAndActiveStyles(IntentColors.success)}
}
&&&.${Classes.BUTTON}.${Classes.INTENT_WARNING}:not(.${Classes.MINIMAL}) {
background: ${IntentColors.warning};
${getButtonHoverAndActiveStyles(IntentColors.warning)}
}
&&.${Classes.MINIMAL}.${Classes.BUTTON} {
border: none;
border-color: ${IntentColors.none};
& span.bp3-icon {
color: ${IntentColors.none};
}
}
&&&.${Classes.MINIMAL}.${Classes.INTENT_PRIMARY} {
color: ${IntentColors.primary};
border-color: ${IntentColors.primary};
}
&&&.${Classes.MINIMAL}.bp3-intent-secondary {
color: ${IntentColors.secondary};
border-color: ${IntentColors.secondary};
}
&&&.${Classes.MINIMAL}.${Classes.INTENT_DANGER} {
color: ${IntentColors.danger};
border-color: ${IntentColors.danger};
}
&&&.${Classes.MINIMAL}.${Classes.INTENT_WARNING} {
color: ${IntentColors.warning};
border-color: ${IntentColors.warning};
}
&&&.${Classes.MINIMAL}.${Classes.INTENT_SUCCESS} {
color: ${IntentColors.success};
border-color: ${IntentColors.success};
}
&&&&&&.${Classes.DISABLED} {
color: ${Colors.SLATE_GRAY};
background: ${Colors.MERCURY};
border-color: ${Colors.MERCURY};
}
`;
export const BlueprintInputTransform = css`
&& {
.${Classes.INPUT} {
border-radius: ${(props) => props.theme.radii[1]}px;
box-shadow: none;
border: ${(props) => getBorderCSSShorthand(props.theme.borders[2])};
&:focus {
border: ${(props) => getBorderCSSShorthand(props.theme.borders[2])};
box-shadow: none;
}
}
}
`;
export const BlueprintRadioSwitchGroupTransform = css<{
alignment: Alignment;
height?: number;
inline: boolean;
labelPosition?: LabelPosition;
optionCount: number;
}>`
width: 100%;
${({ alignment, inline, optionCount }) => `
display: ${
inline ? "inline-flex" : alignment === Alignment.RIGHT ? "block" : "flex"
};
flex-direction: ${inline ? "row" : "column"};
align-items: ${inline ? "center" : "flex-start"};
${inline && "flex-wrap: wrap"};
justify-content: ${
optionCount > 1 ? `space-between` : inline ? `flex-start` : `center`
};
`}
${BlueprintControlTransform};
.${Classes.CONTROL} {
display: ${({ alignment, inline }) => {
if (alignment === Alignment.RIGHT) {
return inline ? "inline-block" : "block";
}
return "flex";
}};
align-items: center;
border: 1px solid transparent;
color: ${Colors.GREY_10};
line-height: 16px;
min-height: ${({ alignment }) =>
alignment === Alignment.RIGHT ? 23 : 30}px;
margin-top: ${({ alignment }) => (alignment === Alignment.RIGHT ? 7 : 0)}px;
margin-bottom: ${({
alignment,
height,
inline,
labelPosition,
optionCount,
}) => {
if (
alignment === Alignment.RIGHT &&
!inline &&
optionCount > 1 &&
height
) {
return Math.max(
(height -
(labelPosition === LabelPosition.Left ? 0 : 35) -
optionCount * 31) /
(optionCount - 1),
8,
);
} else {
return 0;
}
}}px;
&:last-child {
margin-bottom: 0;
}
.bp3-control-indicator {
margin-top: 0;
border: 1px solid ${Colors.GREY_5};
box-shadow: none;
background-image: none;
background-color: white;
}
}
`;
const iconSizes = {
XXS: 8,
XS: 10,
SMALL: 12,
MEDIUM: 14,
LARGE: 15,
XL: 16,
XXL: 18,
XXXL: 20,
XXXXL: 22,
};
type IconSizeType = typeof iconSizes;
export type ThemeBorder = {
thickness: number;
style: "dashed" | "solid";
color: Color;
};
type PropertyPaneTheme = {
width: number;
height: number;
dividerColor: Color;
titleHeight: number;
connectionsHeight: number;
};
export type NestedObjectOrArray<T> =
| Record<string, T | T[] | Record<string, T | T[]>>
| T
| T[];
export type Theme = {
radii: Array<number>;
fontSizes: Array<number>;
drawerWidth: string;
spaces: Array<number>;
fontWeights: Array<number>;
colors: any;
typography: Typography;
lineHeights: Array<number>;
fonts: {
code: FontFamily;
text: FontFamily;
};
borders: ThemeBorder[];
evaluatedValuePopup: {
width: number;
height: number;
};
propertyPane: PropertyPaneTheme;
headerHeight: string;
smallHeaderHeight: string;
bottomBarHeight: string;
integrationsPageUnusableHeight: string;
backBanner: string;
homePage: any;
sidebarWidth: string;
canvasBottomPadding: number;
navbarMenuHeight: string;
navbarMenuLineHeight: string;
sideNav: {
minWidth: number;
maxWidth: number;
bgColor: Color;
fontColor: Color;
activeItemBGColor: Color;
navItemHeight: number;
};
card: {
minWidth: number;
minHeight: number;
titleHeight: number;
divider: ThemeBorder;
};
dropdown: {
[Skin.LIGHT]: {
hoverBG: ShadeColor;
hoverText: ShadeColor;
inActiveBG: ShadeColor;
inActiveText: ShadeColor;
border: Color;
background: Color;
};
[Skin.DARK]: {
hoverBG: ShadeColor;
hoverText: ShadeColor;
inActiveBG: ShadeColor;
inActiveText: ShadeColor;
border: Color;
background: Color;
};
};
authCard: {
width: number;
dividerSpacing: number;
formMessageWidth: number;
};
shadows: string[];
widgets: {
tableWidget: {
selectHighlightColor: Color;
};
};
pageContentWidth: number;
tabPanelHeight: number;
alert: Record<string, { color: Color }>;
lightningMenu: {
[Skin.DARK]: {
default: {
color: Color;
background: Color;
};
active: {
color: Color;
background: Color;
};
hover: {
color: Color;
background: Color;
};
none: {
color: string;
background: string;
};
};
[Skin.LIGHT]: {
default: {
color: string;
background: string;
};
active: {
color: string;
background: string;
};
hover: {
color: string;
background: string;
};
none: {
color: string;
background: string;
};
};
};
iconSizes: IconSizeType;
actionSidePane: {
width: number;
};
onboarding: {
statusBarHeight: number;
};
settings: {
footerHeight: number;
footerShadow: string;
linkBg: string;
};
};
export const getColorWithOpacity = (color: Color, opacity: number) => {
color = color.slice(1);
const val = parseInt(color, 16);
const r = (val >> 16) & 255;
const g = (val >> 8) & 255;
const b = val & 255;
return `rgba(${r},${g},${b},${opacity})`;
};
export const getBorderCSSShorthand = (border?: ThemeBorder): string => {
const values: string[] = [];
if (border) {
for (const [key, value] of Object.entries(border)) {
values.push(key === "thickness" ? value + "px" : value.toString());
}
}
return values.join(" ");
};
export const labelStyle = css`
font-weight: ${(props) => props.theme.fontWeights[3]};
`;
export const hideScrollbar = css`
scrollbar-width: none;
-ms-overflow-style: none;
&::-webkit-scrollbar {
display: none;
-webkit-appearance: none;
}
`;
export const thinScrollbar = css`
::-webkit-scrollbar {
width: 4px;
}
/* Track */
::-webkit-scrollbar-track {
border-radius: 10px;
}
/* Handle */
::-webkit-scrollbar-thumb {
background: transparent;
border-radius: 10px;
}
&:hover {
::-webkit-scrollbar-thumb {
background: ${getColorWithOpacity(Colors.CHARCOAL, 0.5)};
border-radius: 10px;
}
}
/* Handle on hover */
::-webkit-scrollbar-thumb:hover {
background: ${getColorWithOpacity(Colors.CHARCOAL, 0.5)};
}
`;
// export const adsTheme: any = {
// space: [0, 3, 14, 7, 16, 11, 26, 10, 4, 26, 30, 36, 4, 6, 11],
// };
// 3, 7, 11, 26
export const smallButton = css`
font-size: ${(props) => props.theme.typography.btnSmall.fontSize}px;
font-weight: ${(props) => props.theme.typography.btnSmall.fontWeight};
line-height: ${(props) => props.theme.typography.btnSmall.lineHeight}px;
letter-spacing: ${(props) => props.theme.typography.btnSmall.letterSpacing}px;
`;
export const mediumButton = css`
font-size: ${(props) => props.theme.typography.btnMedium.fontSize}px;
font-weight: ${(props) => props.theme.typography.btnMedium.fontWeight};
line-height: ${(props) => props.theme.typography.btnMedium.lineHeight}px;
letter-spacing: ${(props) =>
props.theme.typography.btnMedium.letterSpacing}px;
`;
export const largeButton = css`
font-size: ${(props) => props.theme.typography.btnLarge.fontSize}px;
font-weight: ${(props) => props.theme.typography.btnLarge.fontWeight};
line-height: ${(props) => props.theme.typography.btnLarge.lineHeight}px;
letter-spacing: ${(props) => props.theme.typography.btnLarge.letterSpacing}px;
`;
export const appColors = [
"#FFEFDB",
"#D9E7FF",
"#FFDEDE",
"#E3DEFF",
"#C7F3E3",
"#F1DEFF",
"#F4FFDE",
"#C7F3F0",
"#C2DAF0",
"#F5D1D1",
"#ECECEC",
"#CCCCCC",
"#F3F1C7",
"#E4D8CC",
"#EAEDFB",
"#D6D1F2",
"#FBF4ED",
"#FFEBFB",
] as const;
export type AppColorCode = typeof appColors[number];
const darkShades = [
"#1A191C",
"#232324",
"#262626",
"#2B2B2B",
"#404040",
"#6D6D6D",
"#9F9F9F",
"#D4D4D4",
"#E9E9E9",
"#FFFFFF",
"#157A96",
"#090707",
"#FFDEDE",
] as const;
const lightShades = [
"#FAFAFA",
"#F7F7F7",
"#F0F0F0",
"#E8E8E8",
"#C5C5C5",
"#A9A7A7",
"#939090",
"#716E6E",
"#4B4848",
"#302D2D",
"#090707",
"#FFFFFF",
"#6A86CE",
"#E0DEDE",
"#EBEBEB",
"#858282",
"#000000",
"#F86A2B",
"#FFDEDE",
"#575757",
"#191919",
"#E7E7E7",
] as const;
type ShadeColor = typeof darkShades[number] | typeof lightShades[number];
type buttonVariant = {
main: string;
light: string;
dark: string;
darker: string;
darkest: string;
};
type ButtonVariantColor = {
primary: {
bgColor?: Color;
borderColor?: Color;
hoverColor: Color;
textColor: Color;
};
secondary: {
bgColor?: Color;
borderColor?: Color;
hoverColor: Color;
textColor: Color;
};
tertiary: {
bgColor?: Color;
borderColor?: Color;
hoverColor: Color;
textColor?: Color;
};
};
type ColorType = {
overlayColor: string;
button: {
disabledText: ShadeColor;
boxShadow: {
default: {
variant1: Color;
variant2: Color;
variant3: Color;
variant4: Color;
variant5: Color;
};
};
disabled: {
bgColor: Color;
textColor: Color;
};
/**
* PRIMARY style
*/
primary: ButtonVariantColor;
/**
* WARNING style
*/
warning: ButtonVariantColor;
/**
* DANGER style
*/
danger: ButtonVariantColor;
/**
* INFO style
*/
info: ButtonVariantColor;
/**
* SECONDARY style
*/
secondary: ButtonVariantColor;
/**
* CUSTOM style
*/
custom: {
solid: {
dark: {
textColor: Color;
};
light: {
textColor: Color;
};
};
};
/**
* LINK button style
*/
link: {
main: Color;
hover: Color;
active: Color;
disabled: Color;
};
};
tertiary: buttonVariant;
info: buttonVariant;
success: buttonVariant;
warning: buttonVariant;
danger: buttonVariant;
homepageBackground: string;
selected: ShadeColor;
card: {
hoverBG: Color;
hoverBGOpacity: number;
hoverBorder: ShadeColor;
iconColor: ShadeColor;
};
text: {
normal: ShadeColor;
heading: ShadeColor;
highlight: ShadeColor;
};
icon: {
normal: ShadeColor;
hover: ShadeColor;
active: ShadeColor;
};
appIcon: {
normal: ShadeColor;
background: ShadeColor;
};
menu: {
background: ShadeColor;
shadow: string;
};
menuItem: {
normalText: ShadeColor;
normalIcon: ShadeColor;
hoverIcon: ShadeColor;
hoverText: ShadeColor;
hoverBg: ShadeColor;
warning: {
color: string;
bg: string;
};
};
navigationMenu: {
contentActive: string;
backgroundActive: string;
contentInactive: string;
backgroundInactive: string;
label: string;
warning: string;
warningBackground: string;
};
colorSelector: {
shadow: ShadeColor;
checkmark: ShadeColor;
};
checkbox: {
disabled: ShadeColor;
unchecked: ShadeColor;
disabledCheck: ShadeColor;
normalCheck: ShadeColor;
labelColor: ShadeColor;
};
dropdown: {
header: {
text: ShadeColor;
disabledText: ShadeColor;
defaultBg: ShadeColor;
bg: ShadeColor;
disabledBg: ShadeColor;
};
menu: {
border: ShadeColor;
bg: ShadeColor;
hover: ShadeColor;
text: ShadeColor;
hoverText: ShadeColor;
subText: ShadeColor;
};
menuShadow: string;
selected: {
text: ShadeColor;
bg: ShadeColor;
icon: ShadeColor;
subtext?: ShadeColor;
};
hovered: {
text: ShadeColor;
bg: ShadeColor;
icon: ShadeColor;
};
icon: ShadeColor;
};
toggle: {
bg: ShadeColor;
hover: {
on: string;
off: string;
};
disable: {
on: string;
off: ShadeColor;
};
disabledSlider: {
on: ShadeColor;
off: ShadeColor;
};
spinner: ShadeColor;
spinnerBg: ShadeColor;
};
textInput: {
disable: {
bg: ShadeColor;
text: ShadeColor;
border: ShadeColor;
};
normal: {
bg: ShadeColor;
text: ShadeColor;
border: ShadeColor;
};
placeholder: ShadeColor;
helper: ShadeColor;
icon: ShadeColor;
readOnly: {
bg: ShadeColor;
border: ShadeColor;
text: ShadeColor;
};
hover: {
bg: ShadeColor;
};
caretColor: string;
};
menuBorder: ShadeColor;
editableText: {
color: ShadeColor;
bg: ShadeColor;
dangerBg: string;
};
radio: {
disable: ShadeColor;
border: ShadeColor;
text: ShadeColor;
};
searchInput: {
placeholder: ShadeColor;
text: ShadeColor;
border: ShadeColor;
bg: ShadeColor;
icon: {
focused: ShadeColor;
normal: ShadeColor;
};
};
spinner: ShadeColor;
tableDropdown: {
bg: ShadeColor;
selectedBg: ShadeColor;
selectedText: ShadeColor;
shadow: string;
};
tabs: {
normal: ShadeColor;
icon: ShadeColor;
hover: ShadeColor;
border: ShadeColor;
countBg: ShadeColor;
selected: string;
};
settingHeading: ShadeColor;
table: {
headerBg: ShadeColor;
headerText: ShadeColor;
rowData: ShadeColor;
rowTitle: ShadeColor;
border: ShadeColor;
hover: {
headerColor: ShadeColor;
rowBg: ShadeColor;
rowTitle: ShadeColor;
rowData: ShadeColor;
};
};
applications: {
bg: ShadeColor;
textColor: ShadeColor;
workspaceColor: ShadeColor;
iconColor: ShadeColor;
hover: {
bg: ShadeColor;
textColor: ShadeColor;
workspaceColor: ShadeColor;
};
cardMenuIcon: ShadeColor;
};
switch: {
border: ShadeColor;
bg: ShadeColor;
hover: {
bg: ShadeColor;
};
lightText: ShadeColor;
darkText: ShadeColor;
};
queryTemplate: {
bg: ShadeColor;
color: ShadeColor;
};
profileDropdown: {
name: ShadeColor;
userName: ShadeColor;
};
modal: {
bg: ShadeColor;
headerText: ShadeColor;
iconColor: string;
iconBg: ShadeColor;
user: {
textColor: ShadeColor;
};
email: {
message: ShadeColor;
desc: ShadeColor;
};
manageUser: ShadeColor;
scrollbar: ShadeColor;
separator: ShadeColor;
title: ShadeColor;
link: string;
hoverState: ShadeColor;
};
tagInput: {
bg: ShadeColor;
tag: {
text: ShadeColor;
};
text: ShadeColor;
placeholder: ShadeColor;
shadow: string;
};
callout: {
info: {
color: string;
bgColor: string;
};
success: {
color: string;
bgColor: string;
};
danger: {
color: string;
bgColor: string;
};
warning: {
color: string;
bgColor: string;
};
};
loader: {
light: ShadeColor;
dark: ShadeColor;
};
filePicker: {
bg: ShadeColor;
color: ShadeColor;
progress: ShadeColor;
shadow: {
from: string;
to: string;
};
};
formFooter: {
cancelBtn: ShadeColor;
};
toast: {
undo: string;
undoRedoColor: string;
warningColor: string;
dangerColor: string;
textColor: string;
bg: ShadeColor;
};
multiSwitch: {
bg: ShadeColor;
selectedBg: ShadeColor;
text: ShadeColor;
border: string;
};
apiPane: {
bg: ShadeColor;
text: ShadeColor;
dividerBg: ShadeColor;
iconHoverBg: ShadeColor;
tabBg: ShadeColor;
requestTree: {
bg: string;
header: {
text: string;
icon: string;
bg: string;
};
row: {
hoverBg: string;
key: string;
value: string;
};
};
closeIcon: ShadeColor;
responseBody: {
bg: ShadeColor;
};
codeEditor: {
placeholderColor: ShadeColor;
};
body: {
text: string;
};
settings: {
textColor: ShadeColor;
};
pagination: {
label: ShadeColor;
description: ShadeColor;
stepTitle: ShadeColor;
numberBg: string;
bindingBg: ShadeColor;
numberColor: ShadeColor;
};
};
codeMirror: {
background: {
defaultState: string;
hoverState: string;
};
text: string;
dataType: {
shortForm: string;
fullForm: string;
};
};
floatingBtn: any;
auth: any;
formMessage: Record<string, Record<Intent, string>>;
header: {
separator: string;
appName: ShadeColor;
background: string;
deployToolTipBackground: string;
deployToolTipText: ShadeColor;
shareBtnHighlight: string;
shareBtn: string;
tabsHorizontalSeparator: string;
tabText: string;
activeTabBorderBottom: string;
activeTabText: string;
};
guidedTour: {
runButton: string;
cancelButton: {
color: string;
borderColor: string;
hoverBackgroundColor: string;
};
endButton: {
backgroundColor: string;
borderColor: string;
hoverBackgroundColor: string;
};
endTourButton: {
color: string;
hoverColor: string;
};
card: {
borderBottom: string;
background: string;
};
stepCountBackground: string;
};
globalSearch: {
containerBackground: string;
activeSearchItemBackground: string;
activeCategory: string;
searchInputText: string;
containerShadow: string;
separator: string;
searchItemHighlight: string;
searchItemAltText: string;
searchItemText: string;
searchItemSubText: string;
highlightedTextUnderline: string;
documentationCtaBackground: string;
documentationCtaText: string;
emptyStateText: string;
navigateUsingEnterSection: string;
codeBackground: string;
documentationCodeBackground: string;
documentLink: string;
helpBarText: string;
helpBarBackground: string;
helpButtonBackground: string;
helpIcon: string;
sectionTitle: string;
navigateToEntityEnterkey: string;
primaryBgColor: string;
primaryTextColor: string;
secondaryTextColor: string;
primaryBorderColor: string;
defaultIconsColor: string;
snippets: {
refinementPillsColor: string;
refinementPillsBg: string;
filterListBackground: string;
filterBtnText: string;
codeContainerBorder: string;
};
searchInputBorder: string;
};
gif: {
overlay: string;
text: string;
iconPath: string;
iconCircle: string;
};
toggleMode: {
activeModeBackground: string;
activeModeIcon: string;
modeIcon: string;
unreadIndicator: string;
modeIconCircleStroke: string;
activeModeIconCircleStroke: string;
};
mentionSuggestion: {
nameText: string;
usernameText: string;
hover: string;
};
reactionsComponent: {
reactionBackground: string;
reactionBackgroundActive: string;
text: string;
textActive: string;
};
treeDropdown: {
targetBg: string;
targetIcon: {
normal: string;
hover: string;
};
menuShadow: string;
menuBg: {
normal: ShadeColor;
hover: ShadeColor;
selected: ShadeColor;
};
menuText: {
normal: ShadeColor;
hover: ShadeColor;
selected: ShadeColor;
};
};
propertyPane: {
title: ShadeColor;
bg: ShadeColor;
label: ShadeColor;
jsIconBg: ShadeColor;
buttonBg: ShadeColor;
buttonText: ShadeColor;
radioGroupBg: ShadeColor;
radioGroupText: ShadeColor;
deleteIconColor: string;
zoomButtonBG: ShadeColor;
activeButtonText: ShadeColor;
jsButtonHoverBG: ShadeColor;
dropdownSelectBg: ShadeColor;
multiDropdownBoxHoverBg: ShadeColor;
iconColor: ShadeColor;
ctaTextColor: string;
ctaBackgroundColor: string;
ctaLearnMoreTextColor: string;
connections: {
error: string;
connectionsCount: ShadeColor;
optionBg: string;
};
};
scrollbar: string;
scrollbarBG: string;
debugger: {
background: string;
messageTextColor: string;
label: string;
entity: string;
entityLink: string;
evalDebugButton: {
hover: string;
active: string;
};
inspectElement: {
color: string;
};
floatingButton: {
background: string;
color: string;
shadow: string;
errorCount: string;
noErrorCount: string;
warningCount: string;
};
blankState: {
shortcut: string;
color: string;
};
info: {
time: string;
borderBottom: string;
};
warning: {
time: string;
borderBottom: string;
backgroundColor: string;
iconColor: string;
hoverIconColor: string;
};
error: {
time: string;
borderBottom: string;
backgroundColor: string;
iconColor: string;
hoverIconColor: string;
};
jsonIcon: string;
message: string;
};
helpModal: {
itemHighlight: string;
background: string;
};
showcaseCarousel: Record<string, string>;
displayImageUpload: Record<string, string>;
widgetGroupingContextMenu: {
border: string;
actionActiveBg: string;
};
actionSidePane: {
noConnections: string;
noConnectionsText: string;
connectionBorder: string;
connectionHover: string;
collapsibleIcon: string;
};
tabItemBackgroundFill: {
highlightBackground: string;
highlightTextColor: string;
textColor: string;
};
pagesEditor: {
iconColor: string;
};
numberedStep: {
line: string;
};
gitSyncModal: GitSyncModalColors;
editorBottomBar: {
background: string;
buttonBackgroundHover: string;
branchBtnText: string;
};
link: string;
welcomePage?: {
text: string;
};
settings: {
link: string;
};
};
const editorBottomBar = {
background: Colors.WHITE,
buttonBackgroundHover: Colors.Gallery,
branchBtnText: Colors.CHARCOAL,
};
const gitSyncModal = {
menuBackgroundColor: Colors.ALABASTER_ALT,
separator: Colors.ALTO2,
closeIcon: Colors.SCORPION,
closeIconHover: Colors.GREY_900,
};
type GitSyncModalColors = typeof gitSyncModal;
const tabItemBackgroundFill = {
highlightBackground: Colors.Gallery,
highlightTextColor: Colors.COD_GRAY,
textColor: Colors.CHARCOAL,
};
const displayImageUpload = {
background: "#AEBAD9",
label: "#457AE6",
};
const showcaseCarousel = {
activeStepDot: "#F86A2B",
inactiveStepDot: "#FEEDE5",
};
const reactionsComponent = {
reactionBackground: lightShades[2],
reactionBackgroundActive: "#FEEDE5",
text: lightShades[7],
textActive: "#BF4109",
borderActive: "#BF4109",
};
const mentionSuggestion = {
nameText: "#090707",
usernameText: "#716E6E",
hover: "#EBEBEB",
};
const pagesEditor = {
iconColor: "#A2A6A8",
};
const toggleMode = {
activeModeBackground: "#EBEBEB",
activeModeIcon: "#4B4848",
modeIcon: "#858282",
modeIconCircleStroke: "#fff",
activeModeIconCircleStroke: "#EBEBEB",
unreadIndicator: "#E00D0D",
};
const auth = {
background: lightShades[11],
cardBackground: lightShades[0],
btnPrimary: Colors.CRUSTA,
inputBackground: lightShades[11],
headingText: darkShades[11],
link: Colors.CRUSTA,
text: "#000",
placeholder: lightShades[8],
socialBtnText: "#000",
socialBtnBorder: lightShades[13],
socialBtnHighlight: lightShades[2],
};
const helpModal = {
itemHighlight: "#231f20",
background: "#262626",
};
const formMessage = {
background: {
danger: "rgba(226,44,44,0.08)",
success: "#172320",
warning: "rgba(224, 179, 14, 0.08)",
lightSuccess: "#EFFFF4",
},
text: {
danger: "#E22C2C",
success: "#03B365",
warning: "#E0B30E",
lightSuccess: "#00693B",
},
};
const globalSearch = {
containerBackground:
"linear-gradient(0deg, rgba(43, 43, 43, 0.9), rgba(43, 43, 43, 0.9)), linear-gradient(119.61deg, rgba(35, 35, 35, 0.01) 0.43%, rgba(49, 49, 49, 0.01) 100.67%);",
activeSearchItemBackground: "#EBEBEB",
activeCategory: "#090707",
searchInputText: "#090707",
searchInputBorder: "#F86A2B",
containerShadow: "0px 0px 32px 8px rgba(0, 0, 0, 0.25)",
separator: "#424242",
searchItemHighlight: "#fff",
searchItemAltText: "#fff",
searchItemText: "#090707",
searchItemSubText: "#4B4848;",
highlightedTextUnderline: "#03B365",
helpBarText: "#C2C2C2",
documentationCtaBackground: "rgba(3, 179, 101, 0.1)",
documentationCtaText: "#03B365",
emptyStateText: "#A9A7A7",
navigateUsingEnterSection: "white",
codeBackground: "#ffffff",
documentationCodeBackground: "#f0f0f0",
documentLink: "#F86A2B",
helpBarBackground: "#000",
helpButtonBackground: "#000",
helpIcon: "#D4D4D4",
sectionTitle: "#716E6E",
navigateToEntityEnterkey: "#090707",
primaryBgColor: "#ffffff",
primaryTextColor: "#090707",
secondaryTextColor: "#4b4848",
primaryBorderColor: "#E0DEDE",
defaultIconsColor: "#716e6e",
snippets: {
refinementPillsColor: "#4b4848",
refinementPillsBg: "white",
filterListBackground: lightShades[0],
filterBtnText: lightShades[8],
filterBtnBg: "#FAFAFA",
codeContainerBorder: "#E0DEDE",
},
};
const actionSidePane = {
noConnections: "#f0f0f0",
noConnectionsText: "#e0dede",
connectionBorder: "rgba(0, 0, 0, 0.5)",
connectionHover: "#6a86ce",
collapsibleIcon: Colors.CODE_GRAY,
};
const navigationMenu = {
contentActive: "#F0F0F0",
backgroundActive: "#222222",
contentInactive: "#858282",
backgroundInactive: "#090707",
label: "#A9A7A7",
warning: "#EABB0C",
warningBackground: "#3A3628",
};
const guidedTour = {
runButton: "#f86a2b",
cancelButton: {
color: "#716e6e",
borderColor: "#716e6e",
hoverBackgroundColor: "#f1f1f1",
},
endButton: {
backgroundColor: "#f22b2b",
borderColor: "#f22b2b",
hoverBackgroundColor: "#f34040",
},
endTourButton: {
color: "#4b4848",
hoverColor: "#928f8f",
},
card: {
borderBottom: "#eeeeee",
background: "#ffefdb",
},
stepCountBackground: "#090707",
};
const numberedStep = {
line: Colors.ALTO2,
number: Colors.BLACK,
};
export const dark: ColorType = {
editorBottomBar,
gitSyncModal,
numberedStep,
tabItemBackgroundFill,
overlayColor: "#090707cc",
displayImageUpload,
showcaseCarousel,
mentionSuggestion,
reactionsComponent,
helpModal,
globalSearch,
toggleMode,
navigationMenu,
selected: darkShades[10],
header: {
separator: darkShades[4],
appName: darkShades[7],
background: darkShades[2],
deployToolTipBackground: lightShades[10],
deployToolTipText: darkShades[7],
shareBtnHighlight: "#F86A2B",
shareBtn: "#fff",
tabsHorizontalSeparator: "#EFEFEF",
tabText: "#6F6D6D",
activeTabBorderBottom: "#FF6D2D",
activeTabText: "#000",
},
button: {
disabledText: darkShades[6],
boxShadow: {
default: {
variant1: Colors.BOX_SHADOW_DEFAULT_VARIANT1,
variant2: Colors.BOX_SHADOW_DEFAULT_VARIANT2,
variant3: Colors.BOX_SHADOW_DEFAULT_VARIANT3,
variant4: Colors.BOX_SHADOW_DEFAULT_VARIANT4,
variant5: Colors.BOX_SHADOW_DEFAULT_VARIANT5,
},
},
disabled: {
bgColor: Colors.GREY_1,
textColor: Colors.GREY_4,
},
primary: {
primary: {
bgColor: Colors.GREEN,
hoverColor: Colors.PRIMARY_SOLID_HOVER,
textColor: Colors.WHITE,
},
secondary: {
borderColor: Colors.GREEN,
hoverColor: Colors.PRIMARY_OUTLINE_HOVER,
textColor: Colors.GREEN,
},
tertiary: {
hoverColor: Colors.PRIMARY_GHOST_HOVER,
},
},
warning: {
primary: {
bgColor: Colors.WARNING_SOLID,
hoverColor: Colors.WARNING_SOLID_HOVER,
textColor: Colors.WHITE,
},
secondary: {
borderColor: Colors.WARNING_SOLID,
hoverColor: Colors.WARNING_OUTLINE_HOVER,
textColor: Colors.WARNING_SOLID,
},
tertiary: {
hoverColor: Colors.WARNING_GHOST_HOVER,
},
},
danger: {
primary: {
bgColor: Colors.DANGER_SOLID,
hoverColor: Colors.DANGER_SOLID_HOVER,
textColor: Colors.WHITE,
},
secondary: {
borderColor: Colors.DANGER_SOLID,
hoverColor: Colors.DANGER_NO_SOLID_HOVER,
textColor: Colors.DANGER_SOLID,
},
tertiary: {
hoverColor: Colors.DANGER_NO_SOLID_HOVER,
},
},
info: {
primary: {
bgColor: Colors.INFO_SOLID,
hoverColor: Colors.INFO_SOLID_HOVER,
textColor: Colors.WHITE,
},
secondary: {
borderColor: Colors.INFO_SOLID,
hoverColor: Colors.INFO_NO_SOLID_HOVER,
textColor: Colors.INFO_SOLID,
},
tertiary: {
hoverColor: Colors.INFO_NO_SOLID_HOVER,
},
},
secondary: {
primary: {
bgColor: Colors.GRAY,
hoverColor: Colors.CHARCOAL,
textColor: Colors.WHITE,
},
secondary: {
borderColor: Colors.GRAY,
hoverColor: Colors.Gallery,
textColor: Colors.GRAY,
},
tertiary: {
hoverColor: Colors.MERCURY,
},
},
custom: {
solid: {
dark: {
textColor: Colors.CUSTOM_SOLID_DARK_TEXT_COLOR,
},
light: {
textColor: Colors.WHITE,
},
},
},
link: {
main: "#D4D4D4",
hover: "#FFFFFF",
active: "#2B2B2B",
disabled: "#202021",
},
},
tertiary: {
main: "#D4D4D4",
light: "#FFFFFF",
dark: "#2B2B2B",
darker: "#202021",
darkest: "#1A191C",
},
info: {
main: "#CB4810",
light: "#F86A2B",
dark: "#8B2E05",
darker: "#A03C12",
darkest: "#2B2B2B",
},
success: {
main: "#218358",
light: "#30CF89",
dark: "#0F4B30",
darker: "#17211E",
darkest: "#293835",
},
warning: {
main: "#EABB0C",
light: "#FFD32E",
dark: "#886B00",
darker: "#2C271A",
darkest: "#2F2A1B",
},
danger: {
main: "#E22C2C",
light: "#FF4D4D",
dark: "#830C0C",
darker: "#2B1A1D",
darkest: "#462F32",
},
homepageBackground: "#1C1C1E",
card: {
hoverBG: Colors.BLACK,
hoverBGOpacity: 0.5,
hoverBorder: darkShades[4],
iconColor: darkShades[9],
},
text: {
normal: darkShades[6],
heading: darkShades[7],
highlight: darkShades[9],
},
icon: {
normal: darkShades[6],
hover: darkShades[8],
active: darkShades[9],
},
appIcon: {
normal: darkShades[9],
background: darkShades[1],
},
menu: {
background: darkShades[3],
shadow: "rgba(0, 0, 0, 0.75)",
},
menuItem: {
normalText: darkShades[7],
normalIcon: darkShades[6],
hoverIcon: darkShades[8],
hoverText: darkShades[9],
hoverBg: darkShades[4],
warning: {
color: "#EABB0C",
bg: "#3A3628",
},
},
colorSelector: {
shadow: darkShades[4],
checkmark: darkShades[9],
},
checkbox: {
disabled: darkShades[3],
unchecked: darkShades[4],
disabledCheck: darkShades[5],
normalCheck: darkShades[9],
labelColor: darkShades[7],
},
dropdown: {
header: {
text: darkShades[7],
disabledText: darkShades[6],
defaultBg: "#090707",
bg: "#090707",
disabledBg: darkShades[2],
},
menu: {
border: darkShades[3],
bg: darkShades[3],
text: darkShades[9],
hover: darkShades[4],
hoverText: darkShades[9],
subText: darkShades[9],
},
menuShadow: "0px 12px 28px -8px rgba(0, 0, 0, 0.75)",
selected: {
text: darkShades[9],
bg: darkShades[4],
icon: darkShades[8],
},
hovered: {
text: darkShades[9],
bg: darkShades[10],
icon: darkShades[8],
},
icon: darkShades[6],
},
toggle: {
bg: darkShades[4],
hover: {
on: "#F56426",
off: "#5E5E5E",
},
disable: {
on: "#3D2219",
off: darkShades[3],
},
disabledSlider: {
on: darkShades[9],
off: darkShades[5],
},
spinner: darkShades[6],
spinnerBg: darkShades[4],
},
textInput: {
disable: {
bg: darkShades[2],
text: darkShades[6],
border: darkShades[2],
},
normal: {
bg: lightShades[10],
border: darkShades[0],
text: darkShades[7],
},
placeholder: darkShades[5],
helper: darkShades[5],
icon: darkShades[7],
readOnly: {
bg: darkShades[0],
border: darkShades[0],
text: darkShades[7],
},
hover: {
bg: darkShades[0],
},
caretColor: Colors.WHITE,
},
menuBorder: darkShades[4],
editableText: {
color: darkShades[9],
bg: darkShades[1],
dangerBg: "rgba(226, 44, 44, 0.08)",
},
radio: {
disable: darkShades[5],
border: darkShades[4],
text: lightShades[11],
},
searchInput: {
placeholder: darkShades[5],
text: darkShades[9],
border: darkShades[4],
bg: darkShades[2],
icon: {
focused: darkShades[7],
normal: darkShades[5],
},
},
spinner: darkShades[6],
tableDropdown: {
bg: darkShades[3],
selectedBg: darkShades[4],
selectedText: darkShades[9],
shadow: "rgba(0, 0, 0, 0.75)",
},
tabs: {
normal: darkShades[6],
icon: darkShades[6],
hover: darkShades[7],
border: darkShades[3],
countBg: darkShades[4],
selected: Colors.CRUSTA,
},
settingHeading: darkShades[9],
table: {
headerBg: darkShades[2],
headerText: darkShades[5],
rowData: darkShades[6],
rowTitle: darkShades[7],
border: darkShades[3],
hover: {
headerColor: darkShades[7],
rowBg: darkShades[4],
rowTitle: darkShades[9],
rowData: darkShades[7],
},
},
applications: {
bg: darkShades[4],
textColor: darkShades[7],
workspaceColor: darkShades[7],
iconColor: darkShades[7],
hover: {
bg: darkShades[5],
textColor: darkShades[8],
workspaceColor: darkShades[9],
},
cardMenuIcon: darkShades[7],
},
switch: {
border: darkShades[5],
bg: darkShades[0],
hover: {
bg: darkShades[0],
},
lightText: darkShades[9],
darkText: darkShades[6],
},
queryTemplate: {
bg: darkShades[3],
color: darkShades[7],
},
profileDropdown: {
name: darkShades[10],
userName: darkShades[7],
},
modal: {
bg: darkShades[1],
headerText: darkShades[9],
iconColor: "#6D6D6D",
iconBg: darkShades[12],
user: {
textColor: darkShades[7],
},
email: {
message: darkShades[8],
desc: darkShades[6],
},
manageUser: darkShades[6],
scrollbar: darkShades[5],
separator: darkShades[4],
title: darkShades[8],
link: "#F86A2B",
hoverState: darkShades[3],
},
tagInput: {
bg: "#090707",
tag: {
text: darkShades[9],
},
text: darkShades[9],
placeholder: darkShades[5],
shadow: "none",
},
callout: {
info: {
color: "#EE5A1A",
bgColor: "#241C1B",
},
success: {
color: "#30CF89",
bgColor: "#17211E",
},
danger: {
color: "#FF4D4D",
bgColor: "#2B1A1D",
},
warning: {
color: "#E0B30E",
bgColor: "#29251A",
},
},
loader: {
light: darkShades[2],
dark: darkShades[4],
},
filePicker: {
bg: darkShades[1],
color: darkShades[7],
progress: darkShades[6],
shadow: {
from: "rgba(21, 17, 17, 0.0001)",
to: "rgba(9, 7, 7, 0.883386)",
},
},
formFooter: {
cancelBtn: darkShades[9],
},
toast: {
undo: "#CB4810",
undoRedoColor: "#F8682B",
warningColor: "#E0B30E",
dangerColor: "#E22C2C",
textColor: "#090707",
bg: darkShades[8],
},
multiSwitch: {
bg: darkShades[2],
selectedBg: lightShades[10],
text: darkShades[8],
border: darkShades[3],
},
apiPane: {
bg: darkShades[0],
tabBg: lightShades[10],
text: darkShades[6],
dividerBg: darkShades[4],
iconHoverBg: darkShades[1],
requestTree: {
bg: lightShades[10],
header: {
text: darkShades[7],
icon: darkShades[7],
bg: darkShades[1],
},
row: {
hoverBg: darkShades[1],
key: darkShades[6],
value: darkShades[7],
},
},
closeIcon: darkShades[9],
responseBody: {
bg: "#090707",
},
codeEditor: {
placeholderColor: darkShades[5],
},
body: {
text: "#6D6D6D",
},
settings: {
textColor: "#FFFFFF",
},
pagination: {
label: darkShades[7],
description: darkShades[5],
stepTitle: darkShades[9],
numberBg: darkShades[3],
bindingBg: darkShades[4],
numberColor: lightShades[11],
},
},
codeMirror: {
background: {
defaultState: "#262626",
hoverState: darkShades[10],
},
text: "#FFFFFF",
dataType: {
shortForm: "#858282",
fullForm: "#6D6D6D",
},
},
floatingBtn: {
tagBackground: "#e22c2c",
backgroundColor: darkShades[3],
iconColor: darkShades[6],
borderColor: darkShades[7],
},
auth,
formMessage,
gif: {
overlay: "#000000",
text: "#d4d4d4",
iconPath: "#2b2b2b",
iconCircle: "#d4d4d4",
},
treeDropdown: {
targetBg: "#090707",
targetIcon: {
normal: "#9F9F9F",
hover: "#9F9F9F",
},
menuShadow: "0px 12px 28px -8px rgba(0, 0, 0, 0.75)",
menuBg: {
normal: darkShades[3],
hover: darkShades[4],
selected: darkShades[4],
},
menuText: {
normal: darkShades[7],
hover: darkShades[9],
selected: darkShades[7],
},
},
propertyPane: {
title: darkShades[11],
bg: darkShades[1],
label: darkShades[7],
jsIconBg: darkShades[5],
buttonBg: darkShades[7],
buttonText: lightShades[10],
radioGroupBg: darkShades[0],
radioGroupText: darkShades[7],
deleteIconColor: "#A3B3BF",
zoomButtonBG: darkShades[3],
activeButtonText: lightShades[12],
jsButtonHoverBG: darkShades[2],
dropdownSelectBg: darkShades[2],
multiDropdownBoxHoverBg: darkShades[0],
iconColor: darkShades[5],
ctaTextColor: "#202223",
ctaBackgroundColor: "rgb(248, 106, 43, 0.1)",
ctaLearnMoreTextColor: "#f86a2b",
connections: {
error: "#f22b2b",
connectionsCount: darkShades[11],
optionBg: "rgba(246,71,71, 0.2)",
},
},
scrollbar: getColorWithOpacity(Colors.LIGHT_GREY, 0.5),
scrollbarBG: getColorWithOpacity(Colors.CODE_GRAY, 0.5),
debugger: {
background: darkShades[11],
messageTextColor: "#D4D4D4",
label: "#D4D4D4",
entity: "rgba(212, 212, 212, 0.5)",
entityLink: "#D4D4D4",
jsonIcon: "#9F9F9F",
message: "#D4D4D4",
evalDebugButton: {
hover: "#fafafaaa",
active: "#fafafaff",
},
floatingButton: {
background: "#2b2b2b",
color: "#d4d4d4",
shadow: "0px 12px 28px -6px rgba(0, 0, 0, 0.32)",
errorCount: "#F22B2B",
noErrorCount: "#03B365",
warningCount: "#DCAD00",
},
inspectElement: {
color: "#D4D4D4",
},
blankState: {
color: "#D4D4D4",
shortcut: "#D4D4D4",
},
info: {
time: "#D4D4D4",
borderBottom: "black",
},
warning: {
time: "#D4D4D4",
iconColor: "#f3cc3e",
hoverIconColor: "#e0b30e",
borderBottom: "black",
backgroundColor: "#29251A",
},
error: {
time: "#D4D4D4",
iconColor: "#f56060",
hoverIconColor: "#F22B2B",
borderBottom: "black",
backgroundColor: "#291B1D",
},
},
guidedTour,
widgetGroupingContextMenu: {
border: "#69b5ff",
actionActiveBg: "#e1e1e1",
},
actionSidePane,
pagesEditor,
link: "#f86a2b",
welcomePage: {
text: lightShades[5],
},
settings: {
link: "#716E6E",
},
};
export const light: ColorType = {
editorBottomBar,
gitSyncModal,
numberedStep,
tabItemBackgroundFill,
overlayColor: "#090707cc",
displayImageUpload,
showcaseCarousel,
mentionSuggestion,
reactionsComponent,
toggleMode,
helpModal: {
itemHighlight: "#EBEBEB",
background: "#FFFFFF",
},
globalSearch: {
...globalSearch,
helpBarBackground: "#F0F0F0",
helpBarText: "#A9A7A7",
helpButtonBackground: "#F0F0F0",
helpIcon: "#939090",
},
navigationMenu: {
contentActive: "#090707",
backgroundActive: "#EBEBEB",
contentInactive: "#4B4848",
backgroundInactive: "#FFFFFF",
label: "#A9A7A7",
warning: "#F22B2B",
warningBackground: "#FFFFFF",
},
selected: lightShades[12],
header: {
separator: "#E0DEDE",
appName: lightShades[8],
background: lightShades[0],
deployToolTipText: lightShades[8],
deployToolTipBackground: "#FFF",
shareBtnHighlight: "#F86A2B",
shareBtn: "#4B4848",
tabsHorizontalSeparator: "#EFEFEF",
tabText: "#6F6D6D",
activeTabBorderBottom: "#FF6D2D",
activeTabText: "#000",
},
button: {
disabledText: lightShades[15],
boxShadow: {
default: {
variant1: Colors.BOX_SHADOW_DEFAULT_VARIANT1,
variant2: Colors.BOX_SHADOW_DEFAULT_VARIANT2,
variant3: Colors.BOX_SHADOW_DEFAULT_VARIANT3,
variant4: Colors.BOX_SHADOW_DEFAULT_VARIANT4,
variant5: Colors.BOX_SHADOW_DEFAULT_VARIANT5,
},
},
disabled: {
bgColor: Colors.GREY_1,
textColor: Colors.GREY_8,
},
primary: {
primary: {
bgColor: Colors.GREEN,
hoverColor: Colors.PRIMARY_SOLID_HOVER,
textColor: Colors.WHITE,
},
secondary: {
borderColor: Colors.GREEN,
hoverColor: Colors.PRIMARY_OUTLINE_HOVER,
textColor: Colors.GREEN,
},
tertiary: {
hoverColor: Colors.PRIMARY_GHOST_HOVER,
},
},
warning: {
primary: {
bgColor: Colors.WARNING_SOLID,
hoverColor: Colors.WARNING_SOLID_HOVER,
textColor: Colors.WHITE,
},
secondary: {
borderColor: Colors.WARNING_SOLID,
hoverColor: Colors.WARNING_OUTLINE_HOVER,
textColor: Colors.WARNING_SOLID,
},
tertiary: {
hoverColor: Colors.WARNING_GHOST_HOVER,
},
},
danger: {
primary: {
bgColor: Colors.DANGER_SOLID,
hoverColor: Colors.DANGER_SOLID_HOVER,
textColor: Colors.WHITE,
},
secondary: {
borderColor: Colors.DANGER_SOLID,
hoverColor: Colors.DANGER_NO_SOLID_HOVER,
textColor: Colors.DANGER_SOLID,
},
tertiary: {
hoverColor: Colors.DANGER_NO_SOLID_HOVER,
},
},
info: {
primary: {
bgColor: Colors.INFO_SOLID,
hoverColor: Colors.INFO_SOLID_HOVER,
textColor: Colors.WHITE,
},
secondary: {
borderColor: Colors.INFO_SOLID,
hoverColor: Colors.INFO_NO_SOLID_HOVER,
textColor: Colors.INFO_SOLID,
},
tertiary: {
hoverColor: Colors.INFO_NO_SOLID_HOVER,
},
},
secondary: {
primary: {
bgColor: Colors.GRAY,
hoverColor: Colors.CHARCOAL,
textColor: Colors.WHITE,
},
secondary: {
borderColor: Colors.GRAY,
hoverColor: Colors.Gallery,
textColor: Colors.GRAY,
},
tertiary: {
hoverColor: Colors.MERCURY,
},
},
custom: {
solid: {
dark: {
textColor: Colors.CUSTOM_SOLID_DARK_TEXT_COLOR,
},
light: {
textColor: Colors.WHITE,
},
},
},
link: {
main: "#716E6E",
hover: "#090707",
active: "#4B4848",
disabled: "#858282",
},
},
tertiary: {
main: "#606065",
light: "#090707",
dark: "#FAFAFA",
darker: "#EDEDED",
darkest: "#A9A7A7",
},
info: {
main: "#F86A2B",
light: "#DC5B21",
dark: "#BF4109",
darker: "#FEEDE5",
darkest: "#F7EBE6",
},
success: {
main: "#03B365",
light: "#007340",
dark: "#00693B",
darker: "#CBF4E2",
darkest: "#D9FDED",
},
warning: {
main: "#FEB811",
light: "#EFA903",
dark: "#EFA903",
darker: "#FBEED0",
darkest: "#FFFAE9",
},
danger: {
main: "#F22B2B",
light: "#B90707",
dark: "#C60707",
darker: "#FDE4E4",
darkest: "#FFE9E9",
},
homepageBackground: "#ffffff",
card: {
hoverBG: Colors.WHITE,
hoverBGOpacity: 0.7,
hoverBorder: lightShades[2],
iconColor: lightShades[11],
},
text: {
normal: lightShades[8],
heading: lightShades[9],
highlight: lightShades[11],
},
icon: {
normal: lightShades[4],
hover: lightShades[8],
active: lightShades[9],
},
appIcon: {
normal: lightShades[7],
background: lightShades[1],
},
menu: {
background: lightShades[11],
shadow: "rgba(0, 0, 0, 0.32)",
},
menuItem: {
normalText: lightShades[8],
normalIcon: lightShades[6],
hoverIcon: lightShades[8],
hoverText: lightShades[10],
hoverBg: lightShades[2],
warning: {
color: "#D2A500",
bg: "#FDFAF2",
},
},
colorSelector: {
shadow: lightShades[3],
checkmark: lightShades[16],
},
checkbox: {
disabled: lightShades[3],
unchecked: lightShades[5],
disabledCheck: lightShades[6],
normalCheck: lightShades[11],
labelColor: lightShades[9],
},
dropdown: {
header: {
text: lightShades[8],
disabledText: darkShades[6],
defaultBg: lightShades[11],
bg: lightShades[14],
disabledBg: lightShades[1],
},
menu: {
border: lightShades[13],
bg: lightShades[11],
text: lightShades[8],
hover: lightShades[21],
hoverText: lightShades[10],
subText: lightShades[15],
},
menuShadow: "0px 6px 20px rgba(0, 0, 0, 0.15)",
selected: {
text: lightShades[10],
bg: lightShades[14],
icon: lightShades[15],
subtext: lightShades[7],
},
hovered: {
text: lightShades[10],
bg: lightShades[14],
icon: lightShades[11],
},
icon: lightShades[7],
},
toggle: {
bg: lightShades[13],
hover: {
on: "#BF4109",
off: lightShades[5],
},
disable: {
on: "#FEEDE5",
off: lightShades[13],
},
disabledSlider: {
off: lightShades[11],
on: lightShades[11],
},
spinner: lightShades[5],
spinnerBg: lightShades[3],
},
textInput: {
disable: {
bg: lightShades[2],
text: darkShades[5],
border: lightShades[2],
},
normal: {
bg: lightShades[11],
text: lightShades[10],
border: lightShades[13],
},
placeholder: lightShades[5],
helper: lightShades[15],
icon: lightShades[7],
readOnly: {
bg: lightShades[2],
border: lightShades[2],
text: lightShades[7],
},
hover: {
bg: lightShades[0],
},
caretColor: Colors.BLACK,
},
menuBorder: lightShades[3],
editableText: {
color: lightShades[8],
bg: lightShades[2],
dangerBg: "rgba(242, 43, 43, 0.06)",
},
radio: {
disable: lightShades[4],
border: lightShades[3],
text: lightShades[10],
},
searchInput: {
placeholder: lightShades[6],
text: lightShades[10],
border: lightShades[13],
bg: lightShades[11],
icon: {
focused: lightShades[10],
normal: lightShades[7],
},
},
spinner: lightShades[6],
tableDropdown: {
bg: lightShades[11],
selectedBg: lightShades[2],
selectedText: lightShades[9],
shadow: "rgba(0, 0, 0, 0.32)",
},
tabs: {
normal: lightShades[15],
icon: lightShades[10],
hover: lightShades[8],
border: lightShades[3],
countBg: lightShades[3],
selected: Colors.CRUSTA,
},
settingHeading: lightShades[16],
table: {
headerBg: lightShades[1],
headerText: lightShades[6],
rowData: lightShades[7],
rowTitle: lightShades[9],
border: lightShades[3],
hover: {
headerColor: lightShades[9],
rowBg: lightShades[2],
rowTitle: lightShades[10],
rowData: lightShades[9],
},
},
applications: {
bg: lightShades[3],
textColor: lightShades[7],
workspaceColor: lightShades[7],
iconColor: lightShades[7],
hover: {
bg: lightShades[5],
textColor: lightShades[8],
workspaceColor: lightShades[9],
},
cardMenuIcon: lightShades[17],
},
switch: {
border: lightShades[5],
bg: lightShades[11],
hover: {
bg: lightShades[11],
},
lightText: lightShades[11],
darkText: lightShades[6],
},
queryTemplate: {
bg: lightShades[11],
color: lightShades[8],
},
profileDropdown: {
name: lightShades[10],
userName: lightShades[7],
},
modal: {
bg: lightShades[11],
headerText: lightShades[20],
iconColor: lightShades[5],
iconBg: lightShades[18],
user: {
textColor: lightShades[9],
},
email: {
message: lightShades[9],
desc: lightShades[7],
},
manageUser: lightShades[19],
scrollbar: lightShades[5],
separator: lightShades[4],
title: lightShades[8],
link: "#F86A2B",
hoverState: lightShades[3],
},
tagInput: {
bg: lightShades[11],
tag: {
text: lightShades[11],
},
text: lightShades[9],
placeholder: darkShades[7],
shadow: "none",
},
callout: {
info: {
color: "#D44100",
bgColor: "#F8F3F0",
},
success: {
color: "#03B365",
bgColor: "#E4F4ED",
},
danger: {
color: "#F22B2B",
bgColor: "#F9E9E9",
},
warning: {
color: "#FEB811",
bgColor: "#FAF3E3",
},
},
loader: {
light: lightShades[2],
dark: lightShades[4],
},
filePicker: {
bg: lightShades[2],
color: lightShades[7],
progress: lightShades[6],
shadow: {
from: "rgba(253, 253, 253, 0.0001)",
to: "rgba(250, 250, 250, 0.898847)",
},
},
formFooter: {
cancelBtn: lightShades[9],
},
toast: {
undo: "#F86A2B",
undoRedoColor: "#F8682B",
warningColor: "#DCAD00",
dangerColor: "#F22B2B",
textColor: "#F7F7F7",
bg: lightShades[10],
},
multiSwitch: {
bg: lightShades[3],
selectedBg: lightShades[11],
text: lightShades[8],
border: "#E0DEDE",
},
apiPane: {
bg: lightShades[11],
tabBg: lightShades[11],
text: lightShades[16],
dividerBg: lightShades[3],
iconHoverBg: lightShades[1],
requestTree: {
bg: lightShades[11],
header: {
text: lightShades[8],
icon: lightShades[8],
bg: lightShades[2],
},
row: {
hoverBg: lightShades[2],
key: lightShades[7],
value: lightShades[8],
},
},
closeIcon: lightShades[10],
responseBody: {
bg: lightShades[11],
},
codeEditor: {
placeholderColor: lightShades[15],
},
body: {
text: "#A9A7A7",
},
settings: {
textColor: lightShades[10],
},
pagination: {
label: lightShades[8],
description: lightShades[5],
stepTitle: lightShades[10],
numberBg: "#E0DEDE",
bindingBg: lightShades[3],
numberColor: lightShades[10],
},
},
codeMirror: {
background: {
defaultState: lightShades[0],
hoverState: lightShades[21],
},
text: "#090707",
dataType: {
shortForm: "#858282",
fullForm: "#6D6D6D",
},
},
floatingBtn: {
tagBackground: "#e22c2c",
backgroundColor: lightShades[0],
iconColor: lightShades[7],
borderColor: lightShades[14],
},
auth,
formMessage,
gif: {
overlay: "#ffffff",
text: "#6f6f6f",
iconPath: "#c4c4c4",
iconCircle: "#090707",
},
treeDropdown: {
targetBg: "#FFFFFF",
targetIcon: {
normal: "#939090",
hover: "#4B4848",
},
menuShadow:
"0px 0px 2px rgba(0, 0, 0, 0.2), 0px 2px 10px rgba(0, 0, 0, 0.1)",
menuBg: {
normal: lightShades[0],
hover: lightShades[12],
selected: lightShades[3],
},
menuText: {
normal: lightShades[8],
hover: lightShades[0],
selected: lightShades[8],
},
},
propertyPane: {
title: darkShades[11],
bg: lightShades[2],
label: lightShades[8],
jsIconBg: lightShades[5],
buttonBg: lightShades[8],
buttonText: lightShades[11],
radioGroupBg: lightShades[0],
radioGroupText: lightShades[8],
deleteIconColor: "#A3B3BF",
zoomButtonBG: lightShades[13],
activeButtonText: lightShades[12],
jsButtonHoverBG: lightShades[2],
dropdownSelectBg: lightShades[14],
multiDropdownBoxHoverBg: lightShades[11],
iconColor: lightShades[5],
ctaTextColor: "#202223",
ctaBackgroundColor: "rgb(248, 106, 43, 0.1)",
ctaLearnMoreTextColor: "#f86a2b",
connections: {
error: "#f22b2b",
connectionsCount: darkShades[11],
optionBg: "rgba(246,71,71, 0.2)",
},
},
scrollbar: getColorWithOpacity(Colors.CHARCOAL, 0.5),
scrollbarBG: "transparent",
debugger: {
background: "#FFFFFF",
messageTextColor: "#716e6e",
label: "#575757",
entity: "rgba(75, 72, 72, 0.7)",
entityLink: "#575757",
jsonIcon: "#a9a7a7",
message: "#4b4848",
evalDebugButton: {
hover: "#fafafaaa",
active: "#fafafaff",
},
floatingButton: {
background: "#2b2b2b",
color: "#d4d4d4",
shadow: "0px 12px 28px -6px rgba(0, 0, 0, 0.32)",
errorCount: "#F22B2B",
noErrorCount: "#03B365",
warningCount: "#DCAD00",
},
inspectElement: {
color: "#090707",
},
blankState: {
color: "#090707",
shortcut: "black",
},
info: {
time: "#939393",
borderBottom: "#E8E8E8",
},
warning: {
time: "#575757",
iconColor: "#f3cc3e",
hoverIconColor: "#e0b30e",
borderBottom: "#E8E8E8",
backgroundColor: "#FFF8E2",
},
error: {
time: "#575757",
iconColor: "#f56060",
hoverIconColor: "#F22B2B",
borderBottom: "#E8E8E8",
backgroundColor: "#F9E9E9",
},
},
guidedTour,
widgetGroupingContextMenu: {
border: "#69b5ff",
actionActiveBg: "#e1e1e1",
},
actionSidePane,
pagesEditor,
link: "#f86a2b",
welcomePage: {
text: lightShades[5],
},
settings: {
link: "#716E6E",
},
};
export const theme: Theme = {
radii: [0, 4, 8, 10, 20, 50],
fontSizes: [0, 10, 12, 14, 16, 18, 24, 28, 32, 48, 64],
spaces: [0, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 30, 36, 38, 40, 42, 44],
fontWeights: [0, 400, 500, 700],
typography: typography,
iconSizes: iconSizes,
propertyPane: {
width: 270,
titleHeight: 40,
connectionsHeight: 30,
height: 600,
dividerColor: Colors.MAKO,
},
evaluatedValuePopup: {
width: 300,
height: 500,
},
drawerWidth: "80%",
colors: {
tooltip: {
lightBg: lightShades[0],
lightText: lightShades[10],
darkBg: lightShades[10],
darkText: lightShades[0],
},
appBackground: "#EDEDED",
artboard: "#F8FAFC",
primaryOld: Colors.GREEN,
primaryDarker: Colors.JUNGLE_GREEN,
primaryDarkest: Colors.JUNGLE_GREEN_DARKER,
secondary: Colors.GEYSER_LIGHT,
secondaryDarker: Colors.CONCRETE,
secondaryDarkest: Colors.MERCURY,
error: Colors.ERROR_RED,
infoOld: Colors.SLATE_GRAY,
errorMessage: Colors.ERROR_RED,
hover: Colors.POLAR,
inputActiveBorder: Colors.HIT_GRAY,
inputInactiveBG: Colors.AQUA_HAZE,
textDefault: Colors.BLACK_PEARL,
textOnDarkBG: Colors.WHITE,
textOnGreyBG: Colors.CHARCOAL,
textOnWhiteBG: Colors.CODE_GRAY,
textAnchor: Colors.PURPLE,
border: Colors.GEYSER,
paneCard: Colors.SHARK,
paneInputBG: Colors.SHARK,
paneBG: Colors.OUTER_SPACE,
paneText: Colors.GRAY_CHATEAU,
paneTextBG: Colors.DEEP_SPACE,
paneTextUnderline: Colors.LIGHT_GREYISH_BLUE,
paneSectionLabel: Colors.CADET_BLUE,
navBG: Colors.SHARK,
grid: Colors.ALTO2,
containerBorder: Colors.FRENCH_PASS,
menuButtonBGInactive: Colors.JUNGLE_MIST,
menuIconColorInactive: Colors.OXFORD_BLUE,
bodyBG: Colors.ATHENS_GRAY,
builderBodyBG: Colors.WHITE,
widgetMultiSelectBorder: Colors.MALIBU,
widgetBorder: Colors.SLATE_GRAY,
widgetLightBorder: Colors.WHITE_SMOKE,
widgetSecondaryBorder: Colors.MERCURY,
messageBG: Colors.CONCRETE,
paneIcon: Colors.TROUT,
bindingTextDark: Colors.BINDING_COLOR,
bindingText: Colors.BINDING_COLOR_LT,
cmBacground: Colors.BLUE_CHARCOAL,
lightningborder: Colors.ALABASTER,
formButtonColor: Colors.WHITE,
appCardColors: appColors,
dataTypeBg: {
function: "#BDB2FF",
object: "#FFD6A5",
unknown: "#4bb",
array: "#CDFFA5",
number: "#FFB2B2",
},
scrollbarLight: getColorWithOpacity(Colors.CHARCOAL, 0.5),
scrollbarLightBG: getColorWithOpacity(Colors.WHITE, 0.5),
scrollbarDark: getColorWithOpacity(Colors.LIGHT_GREY, 0.5),
scrollbarDarkBG: getColorWithOpacity(Colors.CODE_GRAY, 0.5),
dropdownIconBg: Colors.ALTO2,
welcomeTourStickySidebarColor: Colors.WHITE,
welcomeTourStickySidebarBackground: "#F86A2B",
dropdownIconDarkBg: Colors.DARK_GRAY,
dropdownGreyBg: Colors.Gallery,
},
lineHeights: [0, 14, 16, 18, 22, 24, 28, 36, 48, 64, 80],
fonts: {
text: FontFamilies.TextFonts,
code: FontFamilies.CodeFonts,
},
borders: [
{
thickness: 1,
style: "dashed",
color: Colors.FRENCH_PASS,
},
{
thickness: 2,
style: "solid",
color: Colors.FRENCH_PASS,
},
{
thickness: 1,
style: "solid",
color: Colors.GEYSER_LIGHT,
},
{
thickness: 1,
style: "solid",
color: Colors.FRENCH_PASS,
},
{
thickness: 3,
style: "solid",
color: Colors.MYSTIC,
},
],
sidebarWidth: "250px",
homePage: {
header: 48,
leftPane: {
width: 240,
leftPadding: 16,
rightMargin: 12,
},
main: {
marginLeft: 112,
},
search: {
height: 81,
paddingTop: 30,
},
sidebar: 256,
},
headerHeight: "48px",
smallHeaderHeight: "32px",
bottomBarHeight: "34px",
integrationsPageUnusableHeight: "182px",
backBanner: "30px",
canvasBottomPadding: 200,
navbarMenuHeight: "35px",
navbarMenuLineHeight: "25px",
sideNav: {
maxWidth: 220,
minWidth: 50,
bgColor: Colors.OXFORD_BLUE,
fontColor: Colors.WHITE,
activeItemBGColor: Colors.SHARK,
navItemHeight: 42,
},
card: {
minWidth: 228,
minHeight: 124,
titleHeight: 48,
divider: {
thickness: 1,
style: "solid",
color: Colors.GEYSER_LIGHT,
},
},
dropdown: {
[Skin.LIGHT]: {
hoverBG: lightShades[2],
hoverText: lightShades[10],
inActiveBG: lightShades[2],
inActiveText: lightShades[10],
border: Colors.WHITE,
background: Colors.WHITE,
},
[Skin.DARK]: {
hoverBG: darkShades[0],
hoverText: darkShades[9],
inActiveBG: darkShades[2],
inActiveText: darkShades[7],
border: Colors.TROUT_DARK,
background: darkShades[4],
},
},
authCard: {
width: 440,
dividerSpacing: 32,
formMessageWidth: 370,
},
shadows: [
/* 0. tab */
`inset -1px 0px 0px ${Colors.ATHENS_GRAY}, inset 1px 0px 0px ${Colors.ATHENS_GRAY}, inset 0px 4px 0px ${Colors.GREEN}`,
/* 1. first tab */
`inset -1px 0px 0px ${Colors.ATHENS_GRAY}, inset 0px 0px 0px ${Colors.ATHENS_GRAY}, inset 0px 4px 0px ${Colors.GREEN}`,
/* 2. container */
`0 1px 1px 0 rgba(60,75,100,.14) ,0 2px 1px -1px rgba(60,75,100,.12), 0 1px 3px 0 rgba(60,75,100,.2)`,
],
widgets: {
tableWidget: {
selectHighlightColor: Colors.GEYSER_LIGHT,
},
},
pageContentWidth: 1224,
tabPanelHeight: 34,
alert: {
info: {
color: Colors.AZURE_RADIANCE,
},
success: {
color: Colors.OCEAN_GREEN,
},
error: {
color: Colors.ERROR_RED,
},
warning: {
color: Colors.BUTTER_CUP,
},
},
lightningMenu: {
[Skin.DARK]: {
default: {
color: darkShades[7],
background: "transparent",
},
active: {
color: darkShades[9],
background: dark.info.main,
},
hover: {
color: darkShades[9],
background: darkShades[7],
},
none: {
color: "transparent",
background: "transparent",
},
},
[Skin.LIGHT]: {
default: {
color: lightShades[7],
background: "transparent",
},
active: {
color: lightShades[11],
background: dark.info.light,
},
hover: {
color: lightShades[11],
background: lightShades[7],
},
none: {
color: "transparent",
background: "transparent",
},
},
},
actionSidePane: {
width: 265,
},
onboarding: {
statusBarHeight: 92,
},
settings: {
footerHeight: 84,
footerShadow: "0px 0px 18px -6px rgb(0, 0, 0, 0.25)",
linkBg: lightShades[2],
},
};
export { css, createGlobalStyle, keyframes, ThemeProvider };
export default styled;