0.3.6 • Published 2 years ago

@salesforce-ux/design-system-primitive-tokens v0.3.6

Weekly downloads
180
License
SEE LICENSE IN RE...
Repository
-
Last release
2 years ago

Salesforce Lightning Design System Primitive Tokens

Welcome to the Salesforce Lightning Design System Primitive Tokens brought to you by Salesforce UX.

Build Status Dependabot Status

  • Primitive tokens are an abstraction of Salesforce's UI into name and value design properties.

Quick start

  1. Clone the project with git clone https://github.com/salesforce-ux/design-system-primitive-tokens.git
  2. Run npm install in the root design-system-primitive-tokens folder.

Build Tokens

Generate Tokens

npm run build

Lint Tokens

npm run lint

Tests

npm run test

Add new aliases

Within the design-tokens folder you will find an aliases folder. This is where re-usable aliases will reside. Aliases can be imported into any token YAML file and referenced as a value with {!ALIAS_NAME} syntax. Note Aliases cannot be consumed outside of a tokens YAML file.

Importing aliases

imports:
- ../aliases/colors.yml

Using an alias

props:
  COLOR_BACKGROUND:
    value: '{!PALETTE_NEUTRAL_95}'

Adding a new token

Within the design-tokens folder you will find a primitive folder. This is where consumable named tokens reside. They can either reference an alias as its value or a string value.

## primitive/background-color.yml
global:
  type: color
  category: background-color
  cssProperties:
  - 'background*'
  - 'border*'
  - box-shadow
imports:
- ../aliases/colors.yml
props:
  COLOR_BACKGROUND:
    value: '{!PALETTE_NEUTRAL_95}'
    comment: Default background color for the whole app.

Naming your token

The naming convention for a primitive token is:

CATEGORY_PROPERTY_ATTRIBUTE_RELATIONSHIP_STATE

  • Categoryrequired Indicates the category of the token.
  • Propertyoptional Semantic UI property being described. By negating a property declaration, token is valid as a generic UI property.
  • Attributeoptional Semantic characteristic of a property.
  • Relationshipoptional If necessary, a relational name that is relative to other tokens of similar types. E.g. primary vs secondary
  • Stateoptional If necessary, the state of a token when used in the context of interaction design. E.g. hover, focus, selected

Usage combinations

## Category + Property
COLOR_BACKGROUND
## Category + Property + Attribute 
SIZING_WIDTH_SMALL
## Category + Property + State 
COLOR_BACKGROUND_SELECTED
## Category + Property + Theme
COLOR_BACKGROUND_INVERSE
## Category + Property + Attribute + State
COLOR_BORDER_DESTRUCTIVE_HOVER
## Category + Property + Attribute + Relationship 
COLOR_TEXT_LINK_WEAK_SECONDARY
## Category + Property + Attribute + Relationship + State 
COLOR_TEXT_LINK_WEAK_SECONDAY_HOVER

Categories

Categories => PropertiesToken PrefixUsage Description
ColorCOLORGeneric UI color
└── BrandCOLOR_BRANDBrand color associated to theming algorithm
└── BackgroundCOLOR_BACKGROUNDGeneric UI background colors
└── BorderCOLOR_BORDERGeneric UI border colors
└── GradientCOLOR_GRADIENTGeneric UI gradient colors
└── LinkCOLOR_LINKGeneric UI text link colors
FontFONTSalesforce font family declarations
└── StyleFONT_STYLESupported font family styles
└── SizeFONT_SIZEGeneric typographic scale for fonts
└── WeightFONT_WEIGHTSupported font family weights
OpacityOPACITYGeneric opacity levels
Line-heightLINE-HEIGHTRelative line-height declarations
SpacingSPACINGBox-model spacing declarations, padding and margin
RadiusRADIUSGeneric UI radius values
SizingSIZINGGeneric UI sizing, can be used on box-model
└── BorderSIZING_BORDERGeneric UI border widths
└── SquareSIZING_SQUAREGeneric UI dimensions to output a 1:1 square
└── WidthSIZING_WIDTHGeneric UI widths
ShadowSHADOWGeneric shadows used for depth
DurationDURATIONGeneric timing durations for animations
TouchTOUCHTouch specific values
Media QueryMQSupported media queries
DepthDEPTHZ-index declarations for stacking context
VariableVARDynamic values that change based on user prefs
└── SpacingVAR_SPACINGDynamic box-model spacing declarations
└── Font-sizeVAR_FONT_SIZEDynamic font-size declarations

Adding a new category

If you need to add a new token category that does not currently exist, create a YAML file associated with the category you'd like to have a reference to.

primitive/
└── new_category.yml

Once the file is created, you will need to import its reference into base.yml inside of the primitive folder. After the file and its content have been created, it would be a good idea to run npm run test -- -u to update tests to reflect your additions.

## primitive/base.yml
imports:
- ./new_category.yml

Licenses

0.3.6

2 years ago

0.3.5

2 years ago

0.3.4

3 years ago

0.3.3

3 years ago

0.3.2

3 years ago

0.3.0

3 years ago

0.3.1

3 years ago

0.2.3

3 years ago

0.2.2

3 years ago

0.2.1

3 years ago

0.2.0

3 years ago

0.1.1

3 years ago

0.1.0

3 years ago

0.0.9

4 years ago

0.0.8

4 years ago

0.0.7

4 years ago

0.0.6

5 years ago

0.0.5

5 years ago

0.0.4

5 years ago

0.0.3

5 years ago

0.0.2

5 years ago

0.0.1

5 years ago