Plumeria
JavaScript API

API

@plumeria/wind

Tailwind CSS theme values as static tokens for Plumeria.

@plumeria/wind provides Tailwind CSS design values as static tokens. The values are compiled into your styles at build time, so the package adds nothing to your bundle.

Installation

Terminal
npm i -D @plumeria/wind
Terminal
yarn add -D @plumeria/wind
Terminal
pnpm i -D @plumeria/wind

Usage

Button.tsx
import * as css from '@plumeria/core';
import { blue, radius, slate, spacing, text } from '@plumeria/wind';

const styles = css.create({
  button: {
    paddingInline: spacing[4],
    fontSize: text.sm,
    color: slate[50],
    backgroundColor: blue[600],
    borderRadius: radius.md,
  },
});

Animations pair a keyframes export with its timing.

Spinner.tsx
import * as css from '@plumeria/core';
import { animate, spin } from '@plumeria/wind';

const styles = css.create({
  spinner: {
    animation: `${spin} ${animate.spin}`,
  },
});

Colors

50100200300400500600700800900950redorangeamberyellowlimegreenemeraldtealcyanskyblueindigovioletpurplefuchsiapinkroseslategrayzincneutralstonemauveolivemisttaupe

Typography

font

font.sans-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', 'Noto Sans', Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'
font.serifui-serif, Georgia, Cambria, 'Times New Roman', Times, serif
font.monoui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace

text

text.xs0.75rem
text.sm0.875rem
text.base1rem
text.lg1.125rem
text.xl1.25rem
text['2xl']1.5rem
text['3xl']1.875rem
text['4xl']2.25rem
text['5xl']3rem
text['6xl']3.75rem
text['7xl']4.5rem
text['8xl']6rem
text['9xl']8rem

textLineHeight

textLineHeight.xscalc(1 / 0.75)
textLineHeight.smcalc(1.25 / 0.875)
textLineHeight.basecalc(1.5 / 1)
textLineHeight.lgcalc(1.75 / 1.125)
textLineHeight.xlcalc(1.75 / 1.25)
textLineHeight['2xl']calc(2 / 1.5)
textLineHeight['3xl']calc(2.25 / 1.875)
textLineHeight['4xl']calc(2.5 / 2.25)
textLineHeight['5xl']1
textLineHeight['6xl']1
textLineHeight['7xl']1
textLineHeight['8xl']1
textLineHeight['9xl']1

fontWeight

fontWeight.thin100
fontWeight.extralight200
fontWeight.light300
fontWeight.normal400
fontWeight.medium500
fontWeight.semibold600
fontWeight.bold700
fontWeight.extrabold800
fontWeight.black900

tracking

tracking.tighter-0.05em
tracking.tight-0.025em
tracking.normal0em
tracking.wide0.025em
tracking.wider0.05em
tracking.widest0.1em

leading

leading.tight1.25
leading.snug1.375
leading.normal1.5
leading.relaxed1.625
leading.loose2

Spacing

spacing[0]0
spacing[1]0.25rem
spacing[2]0.5rem
spacing[3]0.75rem
spacing[4]1rem
spacing[5]1.25rem
spacing[6]1.5rem
spacing[7]1.75rem
spacing[8]2rem
spacing[9]2.25rem
spacing[10]2.5rem
spacing[11]2.75rem
spacing[12]3rem
spacing[14]3.5rem
spacing[16]4rem
spacing[20]5rem
spacing[24]6rem
spacing[28]7rem
spacing[32]8rem
spacing[36]9rem
spacing[40]10rem
spacing[44]11rem
spacing[48]12rem
spacing[52]13rem
spacing[56]14rem
spacing[60]15rem
spacing[64]16rem
spacing[72]18rem
spacing[80]20rem
spacing[96]24rem
spacing.px1px
spacing['0.5']0.125rem
spacing['1.5']0.375rem
spacing['2.5']0.625rem
spacing['3.5']0.875rem

Borders and Effects

radius

radius.xs0.125rem
radius.sm0.25rem
radius.md0.375rem
radius.lg0.5rem
radius.xl0.75rem
radius['2xl']1rem
radius['3xl']1.5rem
radius['4xl']2rem

shadow

shadow['2xs']0 1px rgb(0 0 0 / 0.05)
shadow.xs0 1px 2px 0 rgb(0 0 0 / 0.05)
shadow.sm0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)
shadow.md0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)
shadow.lg0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)
shadow.xl0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)
shadow['2xl']0 25px 50px -12px rgb(0 0 0 / 0.25)

insetShadow

insetShadow['2xs']inset 0 1px rgb(0 0 0 / 0.05)
insetShadow.xsinset 0 1px 1px rgb(0 0 0 / 0.05)
insetShadow.sminset 0 2px 4px rgb(0 0 0 / 0.05)

dropShadow

dropShadow.xs0 1px 1px rgb(0 0 0 / 0.05)
dropShadow.sm0 1px 2px rgb(0 0 0 / 0.15)
dropShadow.md0 3px 3px rgb(0 0 0 / 0.12)
dropShadow.lg0 4px 4px rgb(0 0 0 / 0.15)
dropShadow.xl0 9px 7px rgb(0 0 0 / 0.1)
dropShadow['2xl']0 25px 25px rgb(0 0 0 / 0.15)

textShadow

textShadow['2xs']0px 1px 0px rgb(0 0 0 / 0.15)
textShadow.xs0px 1px 1px rgb(0 0 0 / 0.2)
textShadow.sm0px 1px 0px rgb(0 0 0 / 0.075), 0px 1px 1px rgb(0 0 0 / 0.075), 0px 2px 2px rgb(0 0 0 / 0.075)
textShadow.md0px 1px 1px rgb(0 0 0 / 0.1), 0px 1px 2px rgb(0 0 0 / 0.1), 0px 2px 4px rgb(0 0 0 / 0.1)
textShadow.lg0px 1px 2px rgb(0 0 0 / 0.1), 0px 3px 2px rgb(0 0 0 / 0.1), 0px 4px 8px rgb(0 0 0 / 0.1)

blur

blur.xs4px
blur.sm8px
blur.md12px
blur.lg16px
blur.xl24px
blur['2xl']40px
blur['3xl']64px

Layout

breakpoint

breakpoint.sm40rem
breakpoint.md48rem
breakpoint.lg64rem
breakpoint.xl80rem
breakpoint['2xl']96rem

container

container['3xs']16rem
container['2xs']18rem
container.xs20rem
container.sm24rem
container.md28rem
container.lg32rem
container.xl36rem
container['2xl']42rem
container['3xl']48rem
container['4xl']56rem
container['5xl']64rem
container['6xl']72rem
container['7xl']80rem

aspect

aspect.video16 / 9

perspective

perspective.dramatic100px
perspective.near300px
perspective.normal500px
perspective.midrange800px
perspective.distant1200px

Motion

ease

ease.incubic-bezier(0.4, 0, 1, 1)
ease.outcubic-bezier(0, 0, 0.2, 1)
ease['in-out']cubic-bezier(0.4, 0, 0.2, 1)

transition

transition.duration150ms
transition.timingFunctioncubic-bezier(0.4, 0, 0.2, 1)

animate

animate.spin1s linear infinite
animate.ping1s cubic-bezier(0, 0, 0.2, 1) infinite
animate.pulse2s cubic-bezier(0.4, 0, 0.6, 1) infinite
animate.bounce1s infinite

Keyframes: spin, ping, pulse, bounce.

Base Colors

color.black#000
color.white#fff

The theme values are taken from Tailwind CSS v4.3.3 and distributed under its MIT license.

Edit on GitHub

On this page