An agnostic way to store variables such as typography, color, and spacing.
The Royal Navy Design Tokens are available as an NPM package.
// npm
npm install @royalnavy/design-tokens
// pnpm
pnpm add @royalnavy/design-tokens
The reccomended way to access tokens is using the supplied selector functions.
Simply import the selector object and then destructure the selectors you want to use out of this.
import { selectors } from '@royalnavy/design-tokens'
const { color, spacing, mediaQuery } = selectors
// inside a styled-component
const StyledExample = styled.div`
color: ${color('action', '500')};
margin-top: ${spacing('2')};
${mediaQuery({ gte: 'xs', lt: 'xl', media: '' })`
// @media and (min-width:576px) and (max-width:1400px)
color: black;
`}
`
Selector | Alias | Example Return Value | Description |
---|---|---|---|
animation | 0.2s |
Animation timing values. | |
breakpoint | { breakpoint: '768px' } |
Raw object containing breakpoint . |
|
mediaQuery | mq | See usage example above. | Tagged template literal that generates a media query string. |
color | #FFFFFF |
A color value as a hex string. | |
shadow | 0 1px 3px rgba(0, 0, 0, 0.04) |
Preset box-shadow values. |
|
spacing | 0.5rem |
Fixed spacing value in REMs. | |
fontSize | 0.5rem |
Fixed font-size value in REMs. |
|
zIndex | 6001 |
Scoped z-index value with optional modifier. |
The selectors are typed. We reccomend using the hinting in your IDE to see the signatures and available arguments for each selector. Alternatively, you can see the raw tokens here on GitHub.
It's also possible to access the raw underlying tokens.
We consider these to be implementation detail (they may change without notice), as such we recommend using selectors over raw tokens in most instances.
import { ColorNeutral100 } from '@royalnavy/design-tokens'
@use '@royalnavy/design-tokens' as $vars;
The Design System is maintained by a team at the Royal Navy. If you want to know more about the Royal Navy Design System, please email the Design System Team.
The documentation website contains all the information you need to build your application using the Royal Navy Design System.
The contributing guide resource presents information about our development process.
If you have recently updated then read the release notes
The Design System Roadmap Board contains the work that has been prioritised for the next 12 months.
The Royal Navy Design System is licensed under the Apache License 2.0.