Skip to content
This repository has been archived by the owner on Feb 28, 2024. It is now read-only.
/ monday-ui-style Public archive

Official monday.com UI components for application developers

License

Notifications You must be signed in to change notification settings

mondaycom/monday-ui-style

Repository files navigation

monday.com UI styles

Important

This repository is archived, monday-ui-style has been moved to the style package in Vibe's monorepo

This package includes all of the styling foundations of monday.com: Theme definition, colors, shadows, dimensions, icons, etc.

Although we use React in our product this library will try to stay framework agnostic, we expose here the foundations of our design system so they can be used regardless the framework/environment you are using.

Installation

npm install monday-ui-style --save

Usage

Styles: Import the css file in order to have the css variables exposed on the root level

@import "~monday-ui-style/dist/index.min.css";

or if you want to import it in your JS files

import "monday-ui-style/dist/index.min.css";

Icons: We expose each icon's SVG from the dist files so you can use them in your app.

import IconName from "monday-ui-style/src/Icons/IconName.svg";

Mixins and functions: We export multiple scss mixins and function helpers that can be used in your application if you use SASS. All helpers can be imported as demonstrated below.

@import "~monday-ui-style/dist/mixins";
@import "~monday-ui-style/dist/functions";

Icons

Adding a new icon

In order to add a new icon you will need to fork the repo and open a PR

When adding a new icon please make sure that there isn't a similar icon - if so, either replace the icon or make sure that we need another version of it

Metadata file

We maintain a metadata file for each icon, it helps our icon library be more readable and searchable when searching for relevant icons

How to add a new icon? Add the icon in SVG format under the src/Icons folder (size 20x20) then run npm run generate-meta and fill in the relevant information (you can add multiple icons and run the command once)

Icon colors

We want to support the ability for the svg icon to adapt the css color attribute, therefore when adding an icon all of the colors in the SVG should be currentColor.

In some rare occasions when you want to preserve a color within the icon please consider the following:

  • currentColor might change according to position and theming
  • this is an open source library so brand colors might change
  • please be aware that we will add a monochrome version of that icon as well

New icon request

If you want us to create a non existing monday.com style icon open a PR with please see the guidelines

Stylelint rules

It is recommended to extend our Stylelint config in order to ensure proper usage of this library.
To use the supplied config, add monday-ui-style/stylelint-config as a Stylelint config extension:

// Your .stylelintrc
{
  ...
  "extends": "monday-ui-style/stylelint-config",
  ...
}

Functions

The following SCSS functions are exported:

  • camelize: camelcase string
  • capitalize: capitalize string
  • contain: returns whether $value is contained in $list as a Boolean
  • map-collect: merges maps from different scopes into one
  • extract-rgb: returns a comma separated list of rgb values from a color

Mixins

The following SCSS mixins are exported:

  • Common:
    • hidden-element
    • grid-auto-fit($grid-gap, $grid-column-gap, $grid-row-gap. $grid-cell-min-width, $grid-cell-array-calc, $important)
    • scroller($width, $height, $color)
  • States:
    • disabled
    • reset-button
    • focus-style($focus-radius)
  • Typography:
    • vibe-text($type, $weight)
    • vibe-heading($type, $weight)
    • line-clamp($lines)
    • ellipsis