also looking at this
Merge @stacksjs/ts-css into this repo as packages/toolkit
#27
128 files
+9797
-201
| @@ -5,12 +5,12 @@ This document provides a complete reference for ts-css's programmatic API. Use t | ||
| 5 | 5 | ## Installation |
| 6 | 6 | |
| 7 | 7 | ```bash |
| 8 | bun add ts-css | |
| 8 | bun add @ts-css/core | |
| 9 | 9 | ```## Core Functions |
| 10 | 10 | |
| 11 | 11 | ### `build(config: TsCssConfig): Promise<BuildResult>`Build CSS from content files and return the result.**Parameters:**-`config` - Complete ts-css configuration object**Returns:**`Promise<BuildResult>`**Example:**```typescript |
| 12 | 12 | |
| 13 | import { build } from 'ts-css' | |
| 13 | import { build } from '@ts-css/core' | |
| 14 | 14 | |
| 15 | 15 | const result = await build({ |
| 16 | 16 | content: ['./src/**/*.{html,js,ts,jsx,tsx}'], |
| @@ -39,7 +39,7 @@ console.log(`Built ${result.classes.size} classes in ${result.duration}ms`) | ||
| 39 | 39 | console.log(`Generated CSS:\n${result.css}`) |
| 40 | 40 | |
| 41 | 41 | ```###`buildAndWrite(config: TsCssConfig): Promise<BuildResult>`Build CSS and write it to the output file.**Parameters:**-`config` - Complete ts-css configuration object**Returns:**`Promise<BuildResult>`**Example:**```typescript |
| 42 | import { buildAndWrite } from 'ts-css' | |
| 42 | import { buildAndWrite } from '@ts-css/core' | |
| 43 | 43 | |
| 44 | 44 | const result = await buildAndWrite({ |
| 45 | 45 | content: ['./src/**/*.tsx'], |
| @@ -53,13 +53,13 @@ console.log(`File size: ${result.css.length} bytes`) | ||
| 53 | 53 | ```###`writeCSS(css: string, outputPath: string): Promise<void>`Write CSS string to a file.**Parameters:**-`css`- CSS content to write |
| 54 | 54 | |
| 55 | 55 | -`outputPath` - Path to output file**Returns:**`Promise<void>`**Example:**```typescript |
| 56 | import { build, writeCSS } from 'ts-css' | |
| 56 | import { build, writeCSS } from '@ts-css/core' | |
| 57 | 57 | |
| 58 | 58 | const result = await build(config) |
| 59 | 59 | await writeCSS(result.css, './custom/path/output.css') |
| 60 | 60 | |
| 61 | 61 | ```###`writeTransformedFiles(transformedFiles: Map<string, string>): Promise<void>`Write transformed files to disk (used with compile class transformer).**Parameters:**-`transformedFiles` - Map of file paths to transformed content**Returns:**`Promise<void>`**Example:**```typescript |
| 62 | import { build, writeTransformedFiles } from 'ts-css' | |
| 62 | import { build, writeTransformedFiles } from '@ts-css/core' | |
| 63 | 63 | |
| 64 | 64 | const result = await build({ |
| 65 | 65 | // ... config with compileClass enabled |
| @@ -79,7 +79,7 @@ Class responsible for generating CSS from utility classes.**Constructor:**```typ | ||
| 79 | 79 | new CSSGenerator(config: TsCssConfig) |
| 80 | 80 | |
| 81 | 81 | ```**Methods:**#### `generate(className: string): void`Generate CSS for a single utility class.```typescript |
| 82 | import { CSSGenerator } from 'ts-css' | |
| 82 | import { CSSGenerator } from '@ts-css/core' | |
| 83 | 83 | |
| 84 | 84 | const generator = new CSSGenerator(config) |
| 85 | 85 | generator.generate('bg-blue-500') |
| @@ -96,7 +96,7 @@ const prettyCSS = generator.toCSS(false) // Formatted | ||
| 96 | 96 | generator.reset() |
| 97 | 97 | ```**Complete example:**```typescript |
| 98 | 98 | |
| 99 | import { CSSGenerator, defaultConfig } from 'ts-css' | |
| 99 | import { CSSGenerator, defaultConfig } from '@ts-css/core' | |
| 100 | 100 | |
| 101 | 101 | const config = { |
| 102 | 102 | ...defaultConfig, |
| @@ -133,7 +133,7 @@ new Scanner( | ||
| 133 | 133 | |
| 134 | 134 | -`classes`- Set of found utility classes |
| 135 | 135 | -`transformedFiles` - Map of transformed files (if transformer provided)**Example:**```typescript |
| 136 | import { Scanner } from 'ts-css' | |
| 136 | import { Scanner } from '@ts-css/core' | |
| 137 | 137 | |
| 138 | 138 | const scanner = new Scanner(['./src/**/*.tsx']) |
| 139 | 139 | const { classes, transformedFiles } = await scanner.scan() |
| @@ -147,7 +147,7 @@ for (const className of classes) { | ||
| 147 | 147 | |
| 148 | 148 | ### `parseClass(className: string): ParsedClass`Parse a utility class string into its components.**Parameters:**-`className` - Class name to parse**Returns:**`ParsedClass` object**Example:**```typescript |
| 149 | 149 | |
| 150 | import { parseClass } from 'ts-css' | |
| 150 | import { parseClass } from '@ts-css/core' | |
| 151 | 151 | |
| 152 | 152 | const parsed = parseClass('md:hover:bg-blue-500') |
| 153 | 153 | |
| @@ -172,7 +172,7 @@ console.log(arbitrary.value) // '500px' | ||
| 172 | 172 | ### `defaultConfig` |
| 173 | 173 | |
| 174 | 174 | The default ts-css configuration object.**Example:**```typescript |
| 175 | import { defaultConfig } from 'ts-css' | |
| 175 | import { defaultConfig } from '@ts-css/core' | |
| 176 | 176 | |
| 177 | 177 | // Extend default config |
| 178 | 178 | const config = { |
| @@ -188,7 +188,7 @@ const config = { | ||
| 188 | 188 | |
| 189 | 189 | ```###`loadConfig(options): Promise<TsCssConfig>`Load configuration from file (used internally by CLI).**Parameters:**-`options.name`- Config name (default: 'css') |
| 190 | 190 | -`options.defaultConfig` - Default configuration**Returns:**`Promise<TsCssConfig>`**Example:**```typescript |
| 191 | import { defaultConfig, loadConfig } from 'ts-css' | |
| 191 | import { defaultConfig, loadConfig } from '@ts-css/core' | |
| 192 | 192 | |
| 193 | 193 | const config = await loadConfig({ |
| 194 | 194 | name: 'css', |
| @@ -208,7 +208,7 @@ new CompileClassTransformer(config?: { | ||
| 208 | 208 | ```**Methods:**#### `getCompiledClasses(): Map<string, { className: string, utilities: string[] }>` |
| 209 | 209 | |
| 210 | 210 | Get all compiled classes.**Example:**```typescript |
| 211 | import { CompileClassTransformer } from 'ts-css' | |
| 211 | import { CompileClassTransformer } from '@ts-css/core' | |
| 212 | 212 | |
| 213 | 213 | const transformer = new CompileClassTransformer({ |
| 214 | 214 | trigger: ':tc:', |
| @@ -324,7 +324,7 @@ interface VariantConfig { | ||
| 324 | 324 | |
| 325 | 325 | ### Custom Build Pipeline```typescript |
| 326 | 326 | |
| 327 | import { CSSGenerator, Scanner, writeCSS } from 'ts-css' | |
| 327 | import { CSSGenerator, Scanner, writeCSS } from '@ts-css/core' | |
| 328 | 328 | |
| 329 | 329 | async function customBuild() { |
| 330 | 330 | // 1. Configure |
| @@ -361,7 +361,7 @@ async function customBuild() { | ||
| 361 | 361 | await customBuild() |
| 362 | 362 | |
| 363 | 363 | ```### Analyze Utility Usage```typescript |
| 364 | import { parseClass, Scanner } from 'ts-css' | |
| 364 | import { parseClass, Scanner } from '@ts-css/core' | |
| 365 | 365 | |
| 366 | 366 | async function analyzeUtilities() { |
| 367 | 367 | const scanner = new Scanner(['./src/**/*.tsx']) |
| @@ -389,7 +389,7 @@ await analyzeUtilities() | ||
| 389 | 389 | ```### Watch Mode Implementation```typescript |
| 390 | 390 | |
| 391 | 391 | import { watch } from 'node:fs' |
| 392 | import { buildAndWrite } from 'ts-css' | |
| 392 | import { buildAndWrite } from '@ts-css/core' | |
| 393 | 393 | |
| 394 | 394 | async function watchMode(config: TsCssConfig) { |
| 395 | 395 | console.log('Watching for changes...') |
| @@ -419,7 +419,7 @@ async function watchMode(config: TsCssConfig) { | ||
| 419 | 419 | await watchMode(config) |
| 420 | 420 | |
| 421 | 421 | ```### Framework Plugin```typescript |
| 422 | import { buildAndWrite } from 'ts-css' | |
| 422 | import { buildAndWrite } from '@ts-css/core' | |
| 423 | 423 | |
| 424 | 424 | // Usage in vite.config.ts |
| 425 | 425 | import { defineConfig } from 'vite' |
| @@ -457,7 +457,7 @@ export default defineConfig({ | ||
| 457 | 457 | }) |
| 458 | 458 | ```### Generate Multiple Themes```typescript |
| 459 | 459 | |
| 460 | import { build, writeCSS } from 'ts-css' | |
| 460 | import { build, writeCSS } from '@ts-css/core' | |
| 461 | 461 | |
| 462 | 462 | const baseConfig = { |
| 463 | 463 | content: ['./src/**/*.tsx'], |
| @@ -494,7 +494,7 @@ for (const [name, theme] of Object.entries(themes)) { | ||
| 494 | 494 | |
| 495 | 495 | ```### Testing Utilities```typescript |
| 496 | 496 | import { expect, test } from 'bun:test' |
| 497 | import { CSSGenerator, defaultConfig, parseClass } from 'ts-css' | |
| 497 | import { CSSGenerator, defaultConfig, parseClass } from '@ts-css/core' | |
| 498 | 498 | |
| 499 | 499 | test('parses utility class', () => { |
| 500 | 500 | const parsed = parseClass('md:hover:bg-blue-500') |
| @@ -519,7 +519,7 @@ test('handles important modifier', () => { | ||
| 519 | 519 | }) |
| 520 | 520 | ```## Error Handling```typescript |
| 521 | 521 | |
| 522 | import { buildAndWrite } from 'ts-css' | |
| 522 | import { buildAndWrite } from '@ts-css/core' | |
| 523 | 523 | |
| 524 | 524 | try { |
| 525 | 525 | const result = await buildAndWrite(config) |
| @@ -543,7 +543,7 @@ catch (error) { | ||
| 543 | 543 | |
| 544 | 544 | ### Caching Results```typescript |
| 545 | 545 | |
| 546 | import { build } from 'ts-css' | |
| 546 | import { build } from '@ts-css/core' | |
| 547 | 547 | |
| 548 | 548 | const cache = new Map<string, BuildResult>() |
| 549 | 549 | |
| @@ -562,7 +562,7 @@ async function buildWithCache(config: TsCssConfig) { | ||
| 562 | 562 | } |
| 563 | 563 | ```### Parallel Builds```typescript |
| 564 | 564 | |
| 565 | import { build, writeCSS } from 'ts-css' | |
| 565 | import { build, writeCSS } from '@ts-css/core' | |
| 566 | 566 | |
| 567 | 567 | const configs = [ |
| 568 | 568 | { output: './dist/app.css', content: ['./src/app/**/*.tsx'] }, |