UNPKG

monday-ui-react-core

Version:

Official monday.com UI resources for application development in React.js

282 lines (269 loc) • 9.87 kB
export const colorsMap = [ { color: "--primary-color", description: "Use to emphasise main ui components" }, { color: "--primary-on-secondary-color", description: "Use to emphasise main ui components on secondary background color" }, { color: "--primary-hover-color", description: "Use only as a hover on primary color" }, { color: "--primary-hover-on-secondary-color", description: "Use only as a hover on primary color on secondary background color" }, { color: "--primary-selected-color", description: "Use to indicate selected state of primary items" }, { color: "--primary-selected-hover-color", description: "Use to indicate hover state on a primary-selected-color items" }, { color: "--primary-highlighted-color", description: "Use this to indicate highlighted components of primary items" }, { color: "--primary-surface-color", description: "Use this as the surface of the main layout appearance" }, { color: "--primary-selected-on-secondary-color", description: "Use to indicate selected state of primary items on secondary background color" }, { color: "--primary-text-color", description: "Use for default text color" }, { color: "--primary-text-on-secondary-color", description: "Use for default text color on secondary background color" }, { color: "--secondary-text-color", description: "Use when you need text with lesser importance" }, { color: "--secondary-text-on-secondary-color", description: "Use when you need text with lesser importance (on secondary background color)" }, { color: "--primary-background-hover-color", description: "Use as hover color" }, { color: "--primary-background-hover-on-secondary-color", description: "Use as hover color on secondary color" }, { color: "--inverted-color-background", description: "Inverted background color (opposite of primary background color)" }, { color: "--text-color-on-inverted", description: "Inverted text color (opposite of primary text color)" }, { color: "--text-color-on-primary", description: "Use for text on primary color" }, { color: "--fixed-light-color", description: "Use as color that should remain light in all themes" }, { color: "--fixed-dark-color", description: "Use as color that should remain dark in all themes" }, // states { color: "--positive-color", description: "Use to indicate a positive action/state (success, completion, approval...)" }, { color: "--positive-color-hover", description: "Use only as hover color on positive color" }, { color: "--positive-color-selected", description: "Use only as selected indication for a positive colors" }, { color: "--positive-color-selected-hover", description: "Use to indicate hover state on a positive-color-selected items" }, { color: "--negative-color", description: "Use to indicate a negative action/state (delete, error...)" }, { color: "--negative-color-hover", description: "Use only as hover color on negative color" }, { color: "--negative-color-selected", description: "Use as selected indication for negative colors" }, { color: "--negative-color-selected-hover", description: "Use to indicate hover state on a negative-selected items" }, { color: "--private-color", description: "Use to indicate that something is private (board, icons...)" }, { color: "--shareable-color", description: "Use to indicate that something is shareable (board, dashboard...)" }, { color: "--warning-color", description: "Use to indicate a warning action/state (severity, alert, caution...)" }, { color: "--warning-color-hover", description: "Use only as hover color on warning color" }, { color: "--warning-color-selected", description: "Use as selected indication for warning colors" }, { color: "--warning-color-selected-hover", description: "Use to indicate hover state on a warning-selected items" }, // borders { color: "--ui-border-color", description: "Border color for ui elements and components (Button, Input...)" }, { color: "--ui-border-on-secondary-color", description: "Border color for ui elements on secondary color" }, { color: "--layout-border-color", description: "Border color for general layout and separators (Leftpane, Menu Divider...)" }, { color: "--layout-border-on-secondary-color", description: "Border color for general layout on secondary background color" }, { color: "--placeholder-color", description: "Use for placeholder text in inputs fields" }, { color: "--placeholder-on-secondary-color", description: "Use for placeholder text in inputs fields on secondary background color" }, { color: "--icon-color", description: "Default color for icons" }, { color: "--icon-on-secondary-color", description: "Default color for icons on secondary background color" }, // disabled { color: "--disabled-background-color", description: "Use as background for disabled elements (ui hovers or elements)" }, { color: "--disabled-text-color", description: "Use as text in disabled components" }, { color: "--disabled-background-on-secondary-color", description: "Use as background for disabled elements on secondary background" }, { color: "--disabled-text-on-secondary-color", description: "Use as text in disabled components on secondary background color" }, // Link { color: "--link-color", description: "Use only for links" }, { color: "--link-on-secondary-color", description: "Use only for links on secondary colors" }, // Backgrounds { color: "--primary-background-color", description: "Primary background color" }, { color: "--secondary-background-color", description: "Secondary background color" }, { color: "--grey-background-color", description: "Grey background color" }, { color: "--allgrey-background-color", description: "Grey background color, stays grey in dark and black themes" }, { color: "--ui-background-color", description: "Background color for UI elements and components" } ]; export const colorsHashMap = colorsMap.reduce((map, current) => { const newColorName = current.color.substring(2); map.set(newColorName, current.description); return map; }, new Map()); export const contentColors = [ "grass_green", "done-green", "bright-green", "saladish", "egg_yolk", "working_orange", "dark-orange", "peach", "sunset", "stuck-red", "dark-red", "sofia_pink", "lipstick", "bubble", "purple", "dark_purple", "berry", "dark_indigo", "indigo", "navy", "bright-blue", "dark-blue", "aquamarine", "chili-blue", "river", "winter", "explosive", "american_gray", "blackish", "brown", "orchid", "tan", "sky", "coffee", "royal", "teal", "lavender", "steel", "lilac", "pecan" ] as const; export type CONTENT_COLORS_VALUES = (typeof contentColors)[number]; export enum ColorStyle { REGULAR = "regular", HOVER = "hover", SELECTED = "selected" } export enum ContentColorByName { GRASS_GREEN = "grass_green", DONE_GREEN = "done-green", BRIGHT_GREEN = "bright-green", SALADISH = "saladish", EGG_YOLK = "egg_yolk", WORKING_ORANGE = "working_orange", DARK_ORANGE = "dark-orange", PEACH = "peach", SUNSET = "sunset", STUCK_RED = "stuck-red", DARK_RED = "dark-red", SOFIA_PINK = "sofia_pink", LIPSTICK = "lipstick", BUBBLE = "bubble", PURPLE = "purple", DARK_PURPLE = "dark_purple", BERRY = "berry", DARK_INDIGO = "dark_indigo", INDIGO = "indigo", NAVY = "navy", BRIGHT_BLUE = "bright-blue", DARK_BLUE = "dark-blue", AQUAMARINE = "aquamarine", CHILI_BLUE = "chili-blue", RIVER = "river", WINTER = "winter", EXPLOSIVE = "explosive", AMERICAN_GRAY = "american_gray", BLACKISH = "blackish", BROWN = "brown", ORCHID = "orchid", TAN = "tan", SKY = "sky", COFFEE = "coffee", ROYAL = "royal", TEAL = "teal", LAVENDER = "lavender", STEEL = "steel", LILAC = "lilac", PECAN = "pecan" } export enum StateSelectedColor { POSITIVE = "--positive-color-selected", NEGATIVE = "--negative-color-selected", PRIMARY = "--primary-selected-color", WARNING = "--warning-color-selected" } export enum StateSelectedHoverColor { POSITIVE = "--positive-color-selected-hover", NEGATIVE = "--negative-color-selected-hover", PRIMARY = "--primary-selected-hover-color" } export const ElementAllowedColor = { ...ContentColorByName, ...StateSelectedColor, ...StateSelectedHoverColor }; export type ElementColor = (typeof ElementAllowedColor)[keyof typeof ElementAllowedColor] | string; export const elementColorsNames = Object.values(ElementAllowedColor).reduce((acc: Record<string, string>, key) => { acc[key] = key; return acc; }, {}); const getColorKeyByValue = (colorValue: string, colors: Record<string, string>) => { return Object.keys(colors)[Object.values(colors).indexOf(colorValue)]; }; export function getElementColor( colorValue: keyof typeof ElementAllowedColor | string, isSelectedPalette = false, isSelectedHoverPalette = false ): string { const colorKey = getColorKeyByValue(colorValue, ElementAllowedColor); if (!colorKey) { return colorValue; } if (ContentColorByName[colorKey as keyof typeof ContentColorByName]) { return `var(--color-${ContentColorByName[colorKey as keyof typeof ContentColorByName]}${ isSelectedPalette ? "-selected" : "" })`; } if (StateSelectedHoverColor[colorKey as keyof typeof StateSelectedHoverColor] && isSelectedHoverPalette) { return `var(${StateSelectedHoverColor[colorKey as keyof typeof StateSelectedHoverColor]})`; } if (StateSelectedColor[colorKey as keyof typeof StateSelectedColor] && isSelectedPalette) { return `var(${StateSelectedColor[colorKey as keyof typeof StateSelectedColor]})`; } }