9.1.2 • Published 6 months ago

@primer/primitives v9.1.2

Weekly downloads
3,619
License
MIT
Repository
github
Last release
6 months ago

Primer Primitives

npm package Storybook A11y contrast check

This repo contains values for color, spacing, and typography primitives for use with Primer, GitHub's design system.

primer primitives diagram showing how the package connects with other primer libraries primer primitives diagram showing how the package connects with other primer libraries

Install

This repository is distributed on npm. After installing npm, you can install @primer/primitives with this command.

npm install --save @primer/primitives

Usage

Storybook | Docs

See Primitives documentation for more information on theming and using CSS variables.

Data is served from the dist/ folder:

  • dist/css contains CSS files with values available as CSS variables

All available imports:

/* size/typography */
@import '@primer/primitives/dist/css/base/size/size.css';
@import '@primer/primitives/dist/css/base/typography/typography.css';
@import '@primer/primitives/dist/css/functional/size/border.css';
@import '@primer/primitives/dist/css/functional/size/breakpoints.css';
@import '@primer/primitives/dist/css/functional/size/size.css';
@import '@primer/primitives/dist/css/functional/size/viewport.css';
@import '@primer/primitives/dist/css/functional/typography/typography.css';

/* color */
@import '@primer/primitives/dist/css/functional/themes/light.css';
@import '@primer/primitives/dist/css/functional/themes/light-tritanopia.css';
@import '@primer/primitives/dist/css/functional/themes/light-high-contrast.css';
@import '@primer/primitives/dist/css/functional/themes/light-colorblind.css';
@import '@primer/primitives/dist/css/functional/themes/dark.css';
@import '@primer/primitives/dist/css/functional/themes/dark-colorblind.css';
@import '@primer/primitives/dist/css/functional/themes/dark-dimmed.css';
@import '@primer/primitives/dist/css/functional/themes/dark-high-contrast.css';
@import '@primer/primitives/dist/css/functional/themes/dark-tritanopia.css';

Design token data

Design token data is stored in the src/tokens directory. These tokens are compiled with style dictionary in scripts/buildTokens.ts.

To make working with tokens easier, we added some additional functionality on top of what style dictionary comes with:

Extending and Overwriting

We have two main color modes: light and dark. Additionally we have specific accessibility modes based on those, such as light high contrast.

We added a way to create a mode by only including the changes from the main mode. We call this overrides. Overrides are cerated in src/tokens/functional/color/[light|dark]/overrides/ and have to be added to themes.config.ts to work. In the individual files, e.g. light.high-contrast.json5 you can now add tokens in the same structure as in any main file, e.g. primitives-light.json5 to replace them.

Transforming Colors with Alpha and Mix

Alpha

You can create color tokens that inherit a color but have a different alpha value by adding the alpha property. Note: The original alpha value will be replaced by your value. If you add alpha: 0.4 to a color, it doesn't matter if the color you reference has no alpha or alpha: 0.7, the new token will always have newly the defined value of alpha: 0.4.

{
  muted: {
    $value: '{base.color.blue.3}',
    alpha: 0.4, // the opacity value of the color === 40% opaque
    $type: 'color',
  },
}

Mix

In rare cases, you may need to create a color between two steps in the color scale, e.g. between gray.4 and gray.5. A common example are interactive states, like hover where a full step on the color scale would be to much. For those cases you can use the mix property.

The mix proeprty mixes the color it gets into the main color from the $value attribute. The amount added is controlled by the weight. A weight of 0.1 adds 10% of the color, and a weight of 0.75 adds 75%.

A mix proprty must always have a color and a weight child. color can be a hex value or a reference to a valid color. The weight property must receive a value between 0.0 and 1.

{
  control: {
    $value: '{base.color.gray.4}', // main color
    $type: 'color',
    mix: {
      color: '{base.color.gray.5}', // color to mix into the main color
      weight: 0.2, // amount of the mix color that is added === 20% of gray.5 is mix into gray.4
    },
  },
}

Extensions property

According to the w3c design token specs, the $extensions property is used for additional meta data.

For our Figma export we use the following meta data:

  • collection the collection that the token is added to within Figma
  • mode the mode that the token is added to within the collection in Figma
  • scopes the scopes that are assigned to the token in Figma, the actual Figma compatible scopes are retreive from an object in the figmaAttributes transformer

Code example

  bgColor: {
    $value: '{borderColor.accent.muted}',
    $type: 'color',
    $extensions: {
      'org.primer.figma': {
        collection: 'pattern/mode',
        mode: 'light',
        scopes: ['bgColor'],
      },
    },
  }

Token names and @-hack

Token names have to be in camelCase or kebab-case and may only include letters, numbers and -. This is enforced by the token validation (npm run lint:tokens). The only acception is the @-hack. This is used when you want to have a default value and sub-values, e.g. bgColor.accent and bgColor.accent.muted. In this case you can create the follwing structure. The @ will be removed from the name and act as the default value.

{
  bgColor: {
    accent: {
      '@': {
        // values for accent (default)
      },
      muted: {
        // values for accent-muted
      },
    },
  },
}

License

MIT © GitHub

10.0.0-rc.740a0f82

6 months ago

10.0.0-rc.6cee60d3

6 months ago

10.0.0-rc.4782a992

6 months ago

10.0.0-rc.1d2317e6

6 months ago

10.0.0-rc.f5f47b7d

6 months ago

10.0.0-rc.c2408369

6 months ago

10.0.0-rc.6c806cf9

6 months ago

10.0.0-rc.b101c164

6 months ago

10.0.0-rc.cc7c2225

7 months ago

10.0.0-rc.d5052313

7 months ago

10.0.0-rc.b65e0a9f

7 months ago

10.0.0-rc.cf022cdb

7 months ago

10.0.0-rc.9f6ad000

7 months ago

10.0.0-rc.e738a704

7 months ago

10.0.0-rc.7806f5e4

7 months ago

10.0.0-rc.e413e85d

7 months ago

10.0.0-rc.d2acd2c0

7 months ago

10.0.0-rc.29e661a3

7 months ago

10.0.0-rc.fd912e08

7 months ago

10.0.0-rc.367a0502

7 months ago

10.0.0-rc.6651a0c1

7 months ago

9.1.2

7 months ago

9.1.2-rc.23d3715a

8 months ago

9.1.1

8 months ago

9.1.1-rc.9b13df02

8 months ago

9.1.1-rc.694a8233

8 months ago

9.1.1-rc.e9c132c9

8 months ago

9.1.0-rc.d29dfbb9

8 months ago

9.1.0-rc.56a8ee48

8 months ago

9.1.0-rc.93e94f6d

8 months ago

9.1.0

8 months ago

9.1.0-rc.e0e1c4b6

8 months ago

9.1.0-rc.73606a1a

8 months ago

9.1.0-rc.c6c17c46

8 months ago

9.1.0-rc.a6a70c5b

8 months ago

9.0.3

8 months ago

9.0.3-rc.d00d3c69

8 months ago

8.1.1-rc.af82f929

12 months ago

8.2.4-rc.304e7694

10 months ago

7.15.15

1 year ago

7.15.14

1 year ago

7.15.13

1 year ago

7.15.12

1 year ago

7.15.10

1 year ago

8.2.4-rc.9b05c9b8

10 months ago

8.2.4-rc.48761ae1

10 months ago

8.1.1-rc.31d9bb87

12 months ago

7.17.0

1 year ago

7.17.1

1 year ago

9.0.2

8 months ago

9.0.1

8 months ago

9.0.0

8 months ago

8.2.0-rc.d4121ebd

12 months ago

8.2.4-rc.8aeeb948

10 months ago

8.2.4-rc.87a5d4aa

10 months ago

8.2.4-rc.790153da

10 months ago

8.1.1-rc.acc880f0

12 months ago

8.2.1-rc.0c78ef35

11 months ago

8.2.4-rc.fba4a4ab

9 months ago

7.16.0

1 year ago

8.2.3-rc.563bec62

10 months ago

8.2.4-rc.f820602a

10 months ago

8.2.4-rc.5093e969

10 months ago

8.2.4-rc.8993a8dc

10 months ago

8.2.4-rc.2cab2a39

10 months ago

8.2.4-rc.bad39de4

10 months ago

8.2.4-rc.b28008e7

10 months ago

7.15.1

1 year ago

7.15.2

1 year ago

7.15.0

2 years ago

7.15.9

1 year ago

7.15.7

1 year ago

7.15.8

1 year ago

7.15.5

1 year ago

7.15.6

1 year ago

7.15.3

1 year ago

7.15.4

1 year ago

9.0.0-rc.b273017a

9 months ago

8.2.4-rc.acc4193a

9 months ago

8.2.2-rc.535ae80a

11 months ago

8.2.4-rc.a5404ac4

10 months ago

8.2.4-rc.ea4beb50

9 months ago

9.0.2-rc.758febf5

8 months ago

7.14.0

2 years ago

7.14.1

2 years ago

9.0.0-rc.02c27a21

9 months ago

8.2.0-rc.10c59ac4

12 months ago

8.1.0-rc.313f1fc7

12 months ago

8.2.4-rc.40404c05

10 months ago

8.2.4-rc.b7bbf7a5

10 months ago

8.2.1-rc.8f283c7d

11 months ago

8.2.4-rc.0d0c808c

10 months ago

8.2.4-rc.37bac5be

10 months ago

7.13.1

2 years ago

7.13.0

2 years ago

8.2.4-rc.20f0592f

10 months ago

8.2.4-rc.3eae0804

10 months ago

7.11.14

2 years ago

8.2.3

10 months ago

8.2.2

11 months ago

8.2.4

9 months ago

9.0.0-rc.7502e7f8

9 months ago

8.2.1

11 months ago

8.2.0

12 months ago

8.2.4-rc.eed8be14

9 months ago

9.0.0-rc.23ee6c3f

9 months ago

9.0.0-rc.4b306e81

9 months ago

8.2.4-rc.a3f65a09

10 months ago

8.2.3-rc.a5064407

10 months ago

8.2.4-rc.d955f312

10 months ago

9.0.0-rc.da7438e1

9 months ago

7.12.0

2 years ago

9.0.0-rc.fa8264ac

9 months ago

8.1.1-rc.b2cddccb

12 months ago

8.2.4-rc.67dddfb7

10 months ago

8.1.0

12 months ago

9.0.0-rc.2cba8cbe

9 months ago

8.2.4-rc.8d438bd1

10 months ago

9.0.1-rc.7a1eec5e

8 months ago

8.2.4-rc.e3ccaf09

10 months ago

8.2.4-rc.9292002d

10 months ago

9.0.0-rc.62824cb6

9 months ago

8.2.3-rc.26d0d501

10 months ago

8.2.4-rc.d08fdd34

10 months ago

8.2.1-rc.c20fc9f4

11 months ago

9.0.0-rc.e0216c44

9 months ago

8.0.0

1 year ago

8.2.4-rc.cbbd0a9a

10 months ago

8.1.1-rc.40687c28

12 months ago

8.1.1-rc.29cfc4ea

12 months ago

8.2.4-rc.d0843711

10 months ago

8.2.3-rc.441bfd58

10 months ago

7.11.10

2 years ago

7.11.11

2 years ago

7.11.12

2 years ago

7.11.13

2 years ago

7.11.5

2 years ago

7.11.6

2 years ago

7.11.3

2 years ago

7.11.4

2 years ago

7.11.2

2 years ago

7.11.9

2 years ago

7.11.7

2 years ago

7.11.8

2 years ago

7.11.1

2 years ago

7.11.0

2 years ago

7.11.0-rc.256348

2 years ago

7.10.0

3 years ago

7.8.4

3 years ago

7.9.0-rc.0409f99

3 years ago

7.9.0-rc.5ddc3c4

3 years ago

7.9.0

3 years ago

7.8.4-rc.a135dbf

3 years ago

7.8.3-rc.a61b03e

3 years ago

7.8.1-rc.1ae7ba9

3 years ago

7.8.2-rc.e28231a

3 years ago

7.8.0

3 years ago

7.8.3

3 years ago

7.8.2

3 years ago

7.8.1

3 years ago

7.8.0-rc.b3d89b6

3 years ago

7.7.0-rc.053d36d

3 years ago

7.7.0

3 years ago

7.5.2-rc.2ae21e0

3 years ago

7.6.0

3 years ago

7.5.1

3 years ago

7.6.0-rc.8feb85c

3 years ago

7.5.0-rc.9e4040c

3 years ago

7.4.1

3 years ago

7.5.1-rc.39f9362

3 years ago

7.5.1-rc.e5be394

3 years ago

7.5.1-rc.79a6143

3 years ago

7.4.1-rc.99dd470

3 years ago

7.5.0

3 years ago

7.4.2-rc.b62f0f4

3 years ago

7.1.0-rc.1ea69ad

3 years ago

7.2.0-rc.84e0df4

3 years ago

7.2.0-rc.9f50886

3 years ago

7.1.1-rc.1dffb1a

3 years ago

7.3.0-rc.7a4770b

3 years ago

7.1.1-rc.b52ea99

3 years ago

7.2.0-rc.a7c862d

3 years ago

7.4.0

3 years ago

7.0.1-rc.2d2c69a

3 years ago

7.0.0

3 years ago

7.0.1

3 years ago

7.2.0

3 years ago

7.1.2-rc.bfbd62f

3 years ago

7.2.0-rc.8d4adcc

3 years ago

7.1.1-rc.71c4e0c

3 years ago

7.3.0

3 years ago

7.0.0-rc.05608c9

3 years ago

7.4.0-rc.4670d6c

3 years ago

7.1.1

3 years ago

7.1.0

3 years ago

7.0.0-rc.fe8d621

3 years ago

6.0.0-rc.95276f7

3 years ago

6.1.0

3 years ago

6.1.0-rc.9f1f534

4 years ago

5.1.0

4 years ago

6.0.0-rc.4a64f38

4 years ago

6.0.0-rc.c5571a8

4 years ago

6.0.0

4 years ago

0.0.0-2021917043

4 years ago

5.0.0

4 years ago

5.1.0-rc.d2da270

4 years ago

5.1.0-rc.50d1b03

4 years ago

0.0.0-2021917547

4 years ago

5.0.0-rc.8de08c0

4 years ago

5.0.0-rc.c8d1c5e

4 years ago

4.8.2-rc.10f6e88

4 years ago

4.8.1

4 years ago

4.8.1-rc.176a732

4 years ago

4.8.1-rc.6934c35

4 years ago

4.8.1-rc.1b4b637

4 years ago

4.8.0

4 years ago

4.8.0-rc.bdc0e17

4 years ago

4.8.0-rc.1848ecd

4 years ago

4.7.1

4 years ago

4.7.1-rc.bd97eab

4 years ago

4.7.0-rc.666a14f

4 years ago

4.7.0-rc.8a5a4ee

4 years ago

4.7.0

4 years ago

0.0.0-2021811886

4 years ago

4.6.8-rc.e967f6b

4 years ago

4.6.9-rc.42857ef

4 years ago

4.6.9

4 years ago

4.6.8

4 years ago

4.6.8-rc.01ea610

4 years ago

4.6.8-rc.7a4b34d

4 years ago

0.0.0-2021824422

4 years ago

4.6.7-rc.5455685

4 years ago

0.0.0-2021726310

4 years ago

4.6.6-rc.c7c97e5

4 years ago

4.6.5-rc.537a730

4 years ago

4.6.7

4 years ago

4.6.6

4 years ago

4.6.5

4 years ago

4.6.5-rc.f4aa732

4 years ago

4.6.2-rc.cfa34d9

4 years ago

4.6.4-rc.7de3ecb

4 years ago

0.0.0-2021718041

4 years ago

4.6.3-rc.c3e41db

4 years ago

4.6.3

4 years ago

4.6.2

4 years ago

4.6.4

4 years ago

4.6.1

4 years ago

4.5.4

4 years ago

4.5.3

4 years ago

0.0.0-2021738454

4 years ago

4.5.2

4 years ago

4.5.1

4 years ago

0.0.0-2021525207

4 years ago

4.5.0

4 years ago

0.0.0-2021525251

4 years ago

4.4.3

4 years ago

4.4.4

4 years ago

0.0.0-2021523450

4 years ago

0.0.0-2021515179

4 years ago

4.4.1

4 years ago

4.4.2

4 years ago

4.4.0

4 years ago

0.0.0-2021548596

4 years ago

4.3.9

4 years ago

0.0.0-2021591221

4 years ago

4.3.6

4 years ago

4.3.8

4 years ago

0.0.0-2021590377

4 years ago

4.3.7

4 years ago

0.0.0-2021590366

4 years ago

0.0.0-2021587485

4 years ago

0.0.0-2021427561

4 years ago

4.3.11

4 years ago

4.3.10

4 years ago

4.3.2

4 years ago

4.3.1

4 years ago

4.3.4

4 years ago

4.3.3

4 years ago

4.3.0

4 years ago

4.3.5

4 years ago

4.2.2

4 years ago

4.2.1

4 years ago

0.0.0-2021367182

4 years ago

4.2.0

4 years ago

4.1.0

4 years ago

4.0.1

4 years ago

4.0.2

4 years ago

0.0.0-202121599

4 years ago

4.0.0

4 years ago

0.0.0-fd6a5b3

4 years ago

0.0.0-52c43a6

4 years ago

0.0.0-e267bd0

4 years ago

0.0.0-ae82158

4 years ago

0.0.0-773ac4d

4 years ago

0.0.0-9d55cc8

4 years ago

0.0.0-2893f68

4 years ago

0.0.0-9846881

4 years ago

0.0.0-c3a7cd0

4 years ago

0.0.0-79e5523

4 years ago

0.0.0-1385a06

4 years ago

0.0.0-0d2b1e9

4 years ago

0.0.0-b91f935

4 years ago

0.0.0-c499f58

4 years ago

0.0.0-1a45800

4 years ago

0.0.0-aa92213

4 years ago

0.0.0-9310bf0

4 years ago

0.0.0-724076c

4 years ago

0.0.0-0981f9b

4 years ago

0.0.0-a2fe7c0

4 years ago

0.0.0-2964a5d

4 years ago

0.0.0-3ba6cc5

4 years ago

0.0.0-8527766

5 years ago

0.0.0-422853a

5 years ago

0.0.0-45d093b

5 years ago

0.0.0-6aa92e5

4 years ago

0.0.0-615e41a

4 years ago

0.0.0-b588c8b

5 years ago

0.0.0-a804d1d

5 years ago

0.0.0-60615e1

5 years ago

0.0.0-06b7fa9

5 years ago

0.0.0-c996b75

5 years ago

0.0.0-73d132c

5 years ago

0.0.0-1362186

5 years ago

0.0.0-ebf26d5

5 years ago

0.0.0-9d38696

5 years ago

0.0.0-995139d

5 years ago

0.0.0-da21f4f

5 years ago

0.0.0-2f8f2f6

5 years ago

0.0.0-883cd00

5 years ago

0.0.0-9ef25e1

5 years ago

0.0.0-45f5336

5 years ago

0.0.0-f663df0

5 years ago

0.0.0-cde6eea

5 years ago

0.0.0-3df3a30

5 years ago

0.0.0-a94bc22

5 years ago

0.0.0-20bc3a3

5 years ago

0.0.0-347f74a

5 years ago

0.0.0-1cd410b

5 years ago

0.0.0-90fe697

5 years ago

0.0.0-ab2da57

5 years ago

0.0.0-cacc3de

5 years ago

0.0.0-7e36bc4

5 years ago

0.0.0-d42611e

5 years ago

0.0.0-c7548e4

5 years ago

0.0.0-9ce7e68

5 years ago

0.0.0-a85730b

5 years ago

0.0.0-f9e3c9a

5 years ago

0.0.0-a44acbf

5 years ago

0.0.0-374ae1e

5 years ago

0.0.0-f9355f3

5 years ago

0.0.0-19ef888

5 years ago

0.0.0-a6d51cc

5 years ago

0.0.0-45687a0

5 years ago

0.0.0-0ecefb1

5 years ago

0.0.0-5ca9f4b

5 years ago

0.0.0-8efdc39

5 years ago

0.0.0-abb740a

5 years ago

0.0.0-402d12a

5 years ago

0.0.0-5463300

5 years ago

0.0.0-3dafc1d

5 years ago

0.0.0-10e7afa

5 years ago

0.0.0-4ef22c9

5 years ago

0.0.0-593708c

5 years ago

0.0.0-6096eb4

5 years ago

0.0.0-a59e532

5 years ago

0.0.0-1264a05

5 years ago

0.0.0-54c46a7

5 years ago

0.0.0-0fb8c91

5 years ago

0.0.0-a5f105b

5 years ago

0.0.0-c215e1e

5 years ago

0.0.0-d93cf7b

5 years ago

0.0.0-b577cad

5 years ago

0.0.0-c09bcdc

5 years ago

0.0.0-412212a

5 years ago

0.0.0-91649c4

5 years ago

0.0.0-3d5a7cb

5 years ago

0.0.0-f515e0e

5 years ago

0.0.0-85928e6

5 years ago

0.0.0-2fb44d3

5 years ago

0.0.0-007782e

5 years ago

0.0.0-9a3455a

5 years ago

0.0.0-8446567

5 years ago

0.0.0-ccc5a7a

5 years ago

0.0.0-b882089

5 years ago

0.0.0-ffa88b0

5 years ago

0.0.0-fa9ddb1

5 years ago

0.0.0-af5eae1

5 years ago

0.0.0-9e6def0

5 years ago

0.0.0-10a4ed9

5 years ago

0.0.0-63623fe

5 years ago

0.0.0-94a584e

5 years ago

0.0.0-e8e7cfd

5 years ago

0.0.0-96e5110

5 years ago

0.0.0-289de1a

5 years ago

0.0.0-2aa081e

5 years ago

0.0.0-d525e4d

5 years ago

0.0.0-27b8d20

5 years ago

0.0.0-f150c92

5 years ago

0.0.0-be37ff0

5 years ago

0.0.0-109dae0

5 years ago

0.0.0-54a9dc3

5 years ago

0.0.0-8699963

5 years ago

0.0.0-4813158

5 years ago

0.0.0-e66591e

5 years ago

0.0.0-e6d856b

5 years ago

0.0.0-a800d96

5 years ago

0.0.0-4982aaf

5 years ago

0.0.0-0ca963b

5 years ago

0.0.0-f020b15

5 years ago

0.0.0-991da9a

5 years ago

0.0.0-2d2879b

5 years ago

0.0.0-b8d5846

5 years ago

0.0.0-28a3cba

5 years ago

0.0.0-47e6716

5 years ago

0.0.0-45ed36c

5 years ago

0.0.0-ec289d2

5 years ago

0.0.0-a5223f5

5 years ago

0.0.0-fc5e8c6

5 years ago

0.0.0-671bb45

5 years ago

0.0.0-d095039

5 years ago

0.0.0-3fe9f48

5 years ago

0.0.0-36490c8

5 years ago

0.0.0-176f414

5 years ago

0.0.0-7eb1d66

5 years ago

0.0.0-838f839

5 years ago

0.0.0-2f13178

5 years ago

0.0.0-817da55

5 years ago

0.0.0-d1fda60

5 years ago

0.0.0-acfe9b1

5 years ago

0.0.0-562b929

5 years ago

0.0.0-cae874f

5 years ago

0.0.0-369f06e

5 years ago

0.0.0-575ec39

5 years ago

0.0.0-18b6150

5 years ago

0.0.0-40dbbb1

5 years ago

3.0.0

5 years ago

2.0.1

5 years ago

2.0.0

6 years ago

0.0.0-d009d68

6 years ago

0.0.0-e91ad2a

6 years ago

0.0.0-716bdb9

6 years ago

0.0.0-111865f

6 years ago

0.0.0-412fea4

6 years ago

0.0.0-62e4999

6 years ago

0.0.0-8c0eca3

6 years ago

0.0.0-ea2ae7c

6 years ago