Discover how to create and use your tokens with @nuxtjs/design-tokens API.
tokens
are a Design Tokens format compatible object definition that gets processed by Style Dictionary.
This allows the options defined by the theme author in his designTokens.tokens
key to be type-safe for the theme user that will configure his theme via the same key or a tokens.config
file.
There is two ways to define theme tokens:
designTokens.tokens
key in the nuxt.config
file.tokens.config.{js|ts}
file at the root of your project.Both of these options will be merged in the end.
These two ways will both work for theme authors and theme users as they will get processed in order of priority (user configuration > theme defaults).
import { defineTokens } from '@nuxtjs/design-tokens'export default defineTokens({ colors: { primary: { value: 'green' }, secondary: { value: 'yellow' }, }})
Theme tokens gets processed by Style Dictionary and generates build targets that are globally accessible in your Nuxt project.
.nuxt/theme/
tokens.css
global CSS variables injected to your Nuxt <head>
.tokens.scss
for scss
contexts.tokens.json
if you want to import it from a JSON context.index.ts
to import it from runtime or from any TypeScript context.index.js
to import it from runtime or from any JavaScript context.types.d.ts
for global type inference ($dt()
, $tokens()
, useTokens()
, defineTokens
, nuxt.config.designTokens.tokens
).const { $dt } = useTokens()const primaryColor = $dt('colors.primary')
<template>
usage<template><div :style="{ backgroundColor: $dt('colors.primary') }"> Hello World</div></template>
<style
usage<style lang="postcss" scoped>.header { background-color: v-bind($dt('colors.primary'));}</style>
import
usageimport { $dt } from '@nuxtjs/design-tokens'export default { theme: { extend: { colors: { primary: $dt('colors.primary') } } }}
server
usageimport { $dt } from '#design-tokens'export default defineHandler(() => { return $tokens('colors.base')})