1.0.0 • Published 8 months ago

tailwindcss-radix-ui-primitives v1.0.0

Weekly downloads
-
License
MIT
Repository
github
Last release
8 months ago

tailwindcss-radix-ui-primitives

CI npm Tailwind License

A plugin for Tailwind CSS v3.2+ that generates data attribute as well as CSS variable utilities for Radix UI.

Features

Installation

Install the plugin with your favourite package manager:

npm install tailwindcss-radix-ui-primitives
yarn add tailwindcss-radix-ui-primitives
pnpm install tailwindcss-radix-ui-primitives
bun add tailwindcss-radix-ui-primitives

Then add the plugin to your tailwind.config.js file:

// tailwind.config.js
module.exports = {
  theme: {
    // ...
  },
  plugins: [
    require('tailwindcss-radix-ui-primitives')({
      themeKey: 'radix', // Defaults to "radix"
    }),
    // ...
  ],
}

Usage

This plugin simplifies the use of Radix's data attribute selectors by injecting shortcuts directly into your theme.data section of your Tailwind config. You can write Radix's state variants with the benefit of IntelliSense. For example:

- class="data-[state=open]:..."
+ class="data-state-open:..."

In addition to data attributes, Radix's CSS Variables are added to your theme.${themeKey} section of your Tailwind config. These variables are then distributed to their respective keys where it makes sense, allowing you to create utilities like w-radix-accordion-content-height.

VariableKey
*-width and *-heightspacing
*-transform-origintransform-origin
*-x and *-ytranslate

Additionally, Radix's CSS Variables can be referenced using the theme() function.

// tailwind.config.js
module.exports = {
  theme: {
    // ...
-    keyframes: {
+    keyframes: ({ theme }) => ({
      slideDown: {
        from: { height: 0 },
-       to: { height: 'var(--radix-accordion-content-height)' },
+       to: { height: theme('radix.accordion-content-height') },
      },
      slideUp: {
-       from: { height: 'var(--radix-accordion-content-height)' },
+       from: { height: theme('radix.accordion-content-height') },
        to: { height: 0 },
      },
    },
    // ...
  },
}

However, using theme() function may not currently provide any specific benefits.

Documentation

Data Attributes

ClassSelector
data-active[data-active]
data-disabled[data-disabled]
data-highlighted[data-highlighted]
data-invalid[data-invalid]
data-max[data-max]
data-placeholder[data-placeholder]
data-valid[data-valid]
data-value[data-value]
data-align-center[data-align="center"]
data-align-end[data-align="end"]
data-align-start[data-align="start"]
data-motion-from-end[data-motion="from-end"]
data-motion-from-start[data-motion="from-start"]
data-motion-to-end[data-motion="to-end"]
data-motion-to-start[data-motion="to-start"]
data-orientation-[data-orientation="horizontal"]
data-orientation-vertical[data-orientation="vertical"]
data-side-bottom[data-side="bottom"]
data-side-left[data-side="left"]
data-side-right[data-side="right"]
data-side-top[data-side="top"]
data-state-active[data-state="active"]
data-state-checked[data-state="checked"]
data-state-closed[data-state="closed"]
data-state-complete[data-state="complete"]
data-state-delayed-open[data-state="delayed-open"]
data-state-hidden[data-state="hidden"]
data-state-inactive[data-state="inactive"]
data-state-indeterminate[data-state="indeterminate"]
data-state-instant-open[data-state="instant-open"]
data-state-loading[data-state="loading"]
data-state-off[data-state="off"]
data-state-on[data-state="on"]
data-state-open[data-state="open"]
data-state-unchecked[data-state="unchecked"]
data-state-visible[data-state="visible"]
data-swipe-cancel[data-swipe="cancel"]
data-swipe-end[data-swipe="end"]
data-swipe-move[data-swipe="move"]
data-swipe-start[data-swipe="start"]
data-swipe-direction-down[data-swipe-direction="down"]
data-swipe-direction-left[data-swipe-direction="left"]
data-swipe-direction-right[data-swipe-direction="right"]
data-swipe-direction-up[data-swipe-direction="up"]

CSS Variables

VariableInherited Properties
radix-accordion-content-widthpadding,margin,width,height,max-height,gap,inset,space,translate,scroll-margin,scroll-padding
radix-accordion-collapsible-widthpadding,margin,width,height,max-height,gap,inset,space,translate,scroll-margin,scroll-padding
radix-context-menu-trigger-widthpadding,margin,width,height,max-height,gap,inset,space,translate,scroll-margin,scroll-padding
radix-dropdown-menu-trigger-widthpadding,margin,width,height,max-height,gap,inset,space,translate,scroll-margin,scroll-padding
radix-hover-card-trigger-widthpadding,margin,width,height,max-height,gap,inset,space,translate,scroll-margin,scroll-padding
radix-menubar-trigger-widthpadding,margin,width,height,max-height,gap,inset,space,translate,scroll-margin,scroll-padding
radix-navigation-menu-viewport-widthpadding,margin,width,height,max-height,gap,inset,space,translate,scroll-margin,scroll-padding
radix-popover-trigger-widthpadding,margin,width,height,max-height,gap,inset,space,translate,scroll-margin,scroll-padding
radix-select-trigger-widthpadding,margin,width,height,max-height,gap,inset,space,translate,scroll-margin,scroll-padding
radix-tooltip-trigger-widthpadding,margin,width,height,max-height,gap,inset,space,translate,scroll-margin,scroll-padding
radix-context-menu-content-available-widthpadding,margin,width,height,max-height,gap,inset,space,translate,scroll-margin,scroll-padding
radix-dropdown-menu-content-available-widthpadding,margin,width,height,max-height,gap,inset,space,translate,scroll-margin,scroll-padding
radix-hover-card-content-available-widthpadding,margin,width,height,max-height,gap,inset,space,translate,scroll-margin,scroll-padding
radix-menubar-content-available-widthpadding,margin,width,height,max-height,gap,inset,space,translate,scroll-margin,scroll-padding
radix-popover-content-available-widthpadding,margin,width,height,max-height,gap,inset,space,translate,scroll-margin,scroll-padding
radix-select-content-available-widthpadding,margin,width,height,max-height,gap,inset,space,translate,scroll-margin,scroll-padding
radix-tooltip-content-available-widthpadding,margin,width,height,max-height,gap,inset,space,translate,scroll-margin,scroll-padding
radix-accordion-content-heightpadding,margin,width,height,max-height,gap,inset,space,translate,scroll-margin,scroll-padding
radix-accordion-collapsible-heightpadding,margin,width,height,max-height,gap,inset,space,translate,scroll-margin,scroll-padding
radix-context-menu-trigger-heightpadding,margin,width,height,max-height,gap,inset,space,translate,scroll-margin,scroll-padding
radix-dropdown-menu-trigger-heightpadding,margin,width,height,max-height,gap,inset,space,translate,scroll-margin,scroll-padding
radix-hover-card-trigger-heightpadding,margin,width,height,max-height,gap,inset,space,translate,scroll-margin,scroll-padding
radix-menubar-trigger-heightpadding,margin,width,height,max-height,gap,inset,space,translate,scroll-margin,scroll-padding
radix-navigation-menu-viewport-heightpadding,margin,width,height,max-height,gap,inset,space,translate,scroll-margin,scroll-padding
radix-popover-trigger-heightpadding,margin,width,height,max-height,gap,inset,space,translate,scroll-margin,scroll-padding
radix-select-trigger-heightpadding,margin,width,height,max-height,gap,inset,space,translate,scroll-margin,scroll-padding
radix-tooltip-trigger-heightpadding,margin,width,height,max-height,gap,inset,space,translate,scroll-margin,scroll-padding
radix-context-menu-content-available-heightpadding,margin,width,height,max-height,gap,inset,space,translate,scroll-margin,scroll-padding
radix-dropdown-menu-content-available-padding,margin,width,height,max-height,gap,inset,space,translate,scroll-margin,scroll-padding
radix-hover-card-content-available-heightpadding,margin,width,height,max-height,gap,inset,space,translate,scroll-margin,scroll-padding
radix-menubar-content-available-heightpadding,margin,width,height,max-height,gap,inset,space,translate,scroll-margin,scroll-padding
radix-popover-content-available-heightpadding,margin,width,height,max-height,gap,inset,space,translate,scroll-margin,scroll-padding
radix-select-content-available-heightpadding,margin,width,height,max-height,gap,inset,space,translate,scroll-margin,scroll-padding
radix-tooltip-content-available-heightpadding,margin,width,height,max-height,gap,inset,space,translate,scroll-margin,scroll-padding
radix-context-menu-content-transform-origintransform-origin
radix-dropdown-menu-content-transform-transform-origin
radix-hover-card-content-transform-origintransform-origin
radix-menubar-content-transform-origintransform-origin
radix-popover-content-transform-origintransform-origin
radix-select-content-transform-origintransform-origin
radix-tooltip-content-transform-origintransform-origin
radix-toast-swipe-move-xtranslate
radix-toast-swipe-move-ytranslate
radix-toast-swipe-end-xtranslate
radix-toast-swipe-end-ytranslate

License

MIT

1.0.0

8 months ago