CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/npm-windicss

Next generation utility-first CSS framework with on-demand generation and Tailwind compatibility.

Pending
Overview
Eval results
Files

helpers.mddocs/

Helper Functions

WindiCSS provides helper functions that enhance the developer experience with template literals, configuration utilities, and code transformation tools. These helpers simplify common workflows and improve integration with build tools.

Capabilities

Template Helpers

Template literal function for enhanced WindiCSS class string handling.

/**
 * Tagged template literal for WindiCSS classes with enhanced processing
 * @param strings - Template literal strings
 * @param values - Interpolated values
 * @returns Processed class string
 */
function windi(strings: TemplateStringsArray, ...values: unknown[]): string;

Usage Examples:

import { windi } from "windicss/helpers";

// Basic usage with template literal
const classes = windi`
  bg-blue-500 
  text-white 
  p-4 
  rounded-lg
`;
console.log(classes); // "bg-blue-500 text-white p-4 rounded-lg"

// With interpolated values
const isActive = true;
const size = "lg";

const buttonClasses = windi`
  px-4 py-2 
  rounded-${size}
  ${isActive ? 'bg-blue-500 text-white' : 'bg-gray-200 text-gray-700'}
  hover:opacity-90
  transition-opacity
`;

// Conditional classes
const cardClasses = windi`
  bg-white
  shadow-lg
  rounded-xl
  p-6
  ${process.env.NODE_ENV === 'development' ? 'border-2 border-red-500' : ''}
`;

// Dynamic values
const spacing = 4;
const color = "blue";
const dynamicClasses = windi`
  p-${spacing}
  bg-${color}-500
  text-${color === 'blue' ? 'white' : 'black'}
`;

Configuration Helpers

Type-safe configuration definition helper for WindiCSS configurations.

/**
 * Type-safe configuration definition helper
 * @param config - WindiCSS configuration object
 * @returns Same configuration with enhanced type safety
 */
function defineConfig(config: FullConfig): FullConfig;

interface FullConfig extends Config {
  /** Extended configuration options */
  [key: string]: any;
}

Usage Examples:

import { defineConfig } from "windicss/helpers";
import type { Config } from "windicss";

// Basic configuration
export default defineConfig({
  theme: {
    extend: {
      colors: {
        primary: {
          50: '#eff6ff',
          500: '#3b82f6',
          900: '#1e3a8a'
        }
      },
      fontFamily: {
        'brand': ['Inter', 'system-ui', 'sans-serif']
      }
    }
  },
  plugins: [
    // plugins array
  ]
});

// Advanced configuration with full type safety
export default defineConfig({
  theme: {
    extend: {
      spacing: {
        '18': '4.5rem',
        '88': '22rem'
      },
      animation: {
        'fade-in': 'fadeIn 0.3s ease-in-out',
        'slide-up': 'slideUp 0.5s ease-out'
      },
      keyframes: {
        fadeIn: {
          '0%': { opacity: '0' },
          '100%': { opacity: '1' }
        },
        slideUp: {
          '0%': { transform: 'translateY(100%)', opacity: '0' },
          '100%': { transform: 'translateY(0)', opacity: '1' }
        }
      }
    }
  },
  shortcuts: {
    'btn': 'px-4 py-2 rounded-lg font-medium transition-colors',
    'btn-primary': 'btn bg-primary-500 text-white hover:bg-primary-600',
    'card': 'bg-white shadow-lg rounded-xl p-6'
  },
  plugins: [
    // Type-safe plugin definitions
  ]
});

// Configuration with custom properties
export default defineConfig({
  theme: {
    extend: {
      colors: {
        // CSS custom properties
        primary: 'var(--primary-color)',
        secondary: 'var(--secondary-color)'
      }
    }
  },
  // Custom configuration properties
  customOptions: {
    enableDebug: true,
    buildTarget: 'modern'
  }
} satisfies Config);

Transform Helpers

Code transformation utilities for converting between TailwindCSS and WindiCSS imports.

/**
 * Converts TailwindCSS imports to WindiCSS equivalents
 * @param code - Source code string with TailwindCSS imports
 * @returns Converted code with WindiCSS imports
 */
function convert(code: string): string;

/**
 * Transforms module imports during require/import processing
 * @param path - Module path to transform
 * @returns Transformed module or original if no transformation needed
 */
function transform(path: string): any;

Usage Examples:

import { convert, transform } from "windicss/helpers";

// Convert TailwindCSS imports to WindiCSS
const tailwindCode = `
import { createApp } from 'vue'
import 'tailwindcss/tailwind.css'
import colors from 'tailwindcss/colors'
import { Config } from 'tailwindcss'

const config: Config = {
  theme: {
    extend: {
      colors: colors
    }
  }
}
`;

const windiCode = convert(tailwindCode);
console.log(windiCode);
// Output will have WindiCSS imports instead:
// import 'windicss/windi.css'
// import colors from 'windicss/colors'
// import { Config } from 'windicss'

// Transform individual imports
const transformedColors = transform('tailwindcss/colors');
// Returns windicss/colors equivalent

// Common transformation patterns
const transformations = [
  'tailwindcss/tailwind.css',    // -> 'windicss/windi.css'
  'tailwindcss/base.css',        // -> 'windicss/base.css'
  'tailwindcss/components.css',  // -> 'windicss/components.css'
  'tailwindcss/utilities.css',   // -> 'windicss/utilities.css'
  'tailwindcss/colors',          // -> 'windicss/colors'
  'tailwindcss/defaultTheme',    // -> 'windicss/defaultTheme'
  'tailwindcss/defaultConfig',   // -> 'windicss/defaultConfig'
  'tailwindcss/plugin',          // -> 'windicss/plugin'
];

transformations.forEach(path => {
  const transformed = transform(path);
  console.log(`${path} -> ${transformed}`);
});

Development Helpers

Additional helpers for development and debugging workflows.

/**
 * Console utilities for debugging and logging
 */
interface Console {
  log(...args: any[]): void;
  warn(...args: any[]): void;
  error(...args: any[]): void;
  info(...args: any[]): void;
}

/**
 * Generates autocomplete suggestions for IDE support
 * @param processor - WindiCSS processor instance
 * @returns Object with completion arrays for different utility types
 */
function generateCompletions(processor: any): {
  static: string[];
  color: string[];
  dynamic: string[];
};

Usage Examples:

import Processor from "windicss";
import { generateCompletions } from "windicss/utils";

// Generate IDE completions
const processor = new Processor({
  theme: {
    extend: {
      colors: {
        brand: '#ff6b6b'
      }
    }
  }
});

const completions = generateCompletions(processor);
console.log(completions.static); // Static utility class names
console.log(completions.color); // Color-based utility variations
console.log(completions.dynamic); // Dynamic utility patterns

// Use completions for IDE integration
const allCompletions = [
  ...completions.static,
  ...completions.color,
  ...completions.dynamic
];

// Export completions for VS Code extension or other IDE tools
export { allCompletions };

Build Integration Helpers

Helpers for integrating WindiCSS with build tools and bundlers.

/**
 * Creates build-time processor configuration
 * @param options - Build options
 * @returns Configured processor for build tools
 */
interface BuildOptions {
  configPath?: string;
  scanPaths?: string[];
  exclude?: RegExp[];
  include?: RegExp[];
  minify?: boolean;
  preflight?: boolean;
}

Usage Example:

import { defineConfig } from "windicss/helpers";

// Configuration for build tools (Vite, Webpack, etc.)
export default defineConfig({
  // Scan paths for class extraction
  extract: {
    include: [
      'src/**/*.{vue,html,jsx,tsx}',
      'pages/**/*.{vue,html,jsx,tsx}',
      'components/**/*.{vue,html,jsx,tsx}'
    ],
    exclude: [
      'node_modules',
      '.git',
      'dist'
    ]
  },
  
  // Production optimizations
  purge: {
    enabled: process.env.NODE_ENV === 'production',
    content: [
      './src/**/*.html',
      './src/**/*.vue',
      './src/**/*.jsx',
      './src/**/*.tsx'
    ]
  },
  
  // Build-specific options
  build: {
    minify: true,
    sourcemap: process.env.NODE_ENV === 'development'
  },
  
  theme: {
    extend: {
      // Theme configuration
    }
  }
});

// Framework-specific helpers
export const viteConfig = defineConfig({
  // Vite-specific WindiCSS configuration
  vite: {
    plugins: ['windicss']
  }
});

export const webpackConfig = defineConfig({
  // Webpack-specific WindiCSS configuration
  webpack: {
    loader: 'windicss-webpack-plugin'
  }
});

Type Helpers

TypeScript type utilities for enhanced type safety in WindiCSS configurations.

/**
 * Utility type for configuration with strict typing
 */
type StrictConfig<T extends Config = Config> = T & {
  theme: Required<T['theme']>;
};

/**
 * Helper for extracting theme types
 */
type ThemeValue<
  T extends Record<string, any>, 
  K extends keyof T
> = T[K];

/**
 * Utility for plugin configuration with options
 */
type PluginConfig<T = any> = {
  plugin: (options: T) => any;
  options: T;
};

Usage Examples:

import { defineConfig } from "windicss/helpers";
import type { Config } from "windicss";

// Strict configuration typing
const strictConfig = defineConfig({
  theme: {
    colors: {
      primary: '#3b82f6',
      secondary: '#10b981'
    },
    spacing: {
      xs: '0.5rem',
      sm: '1rem'
    }
  }
} satisfies Config);

// Extract theme value types
type Colors = ThemeValue<typeof strictConfig.theme, 'colors'>;
type Spacing = ThemeValue<typeof strictConfig.theme, 'spacing'>;

// Plugin with typed options
interface TypographyOptions {
  className?: string;
  modifiers?: string[];
  headings?: boolean;
}

const typographyConfig: PluginConfig<TypographyOptions> = {
  plugin: (options) => {
    // Plugin implementation with typed options
    return {
      className: options.className || 'prose',
      modifiers: options.modifiers || ['sm', 'lg'],
      headings: options.headings ?? true
    };
  },
  options: {
    className: 'prose',
    modifiers: ['sm', 'lg', 'xl'],
    headings: true
  }
};

Install with Tessl CLI

npx tessl i tessl/npm-windicss

docs

built-in-plugins.md

configuration.md

core-processing.md

helpers.md

index.md

parser-system.md

plugin-system.md

style-system.md

utilities.md

tile.json