ReviewOS

also looking at this

stacks/ts-css

Merge @stacksjs/ts-css into this repo as packages/toolkit

#27
Merged glennmichael123 wants to merge merge/ts-css-toolkit into main
128 files +9797 -201
docs/api-reference.mdmodified+21-21
Changes to docs/api-reference.md
@@ -5,12 +5,12 @@ This document provides a complete reference for ts-css's programmatic API. Use t
55## Installation
66
77```bash
8bun add ts-css
8bun add @ts-css/core
99```## Core Functions
1010
1111### `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
1212
13import { build } from 'ts-css'
13import { build } from '@ts-css/core'
1414
1515const result = await build({
1616 content: ['./src/**/*.{html,js,ts,jsx,tsx}'],
@@ -39,7 +39,7 @@ console.log(`Built ${result.classes.size} classes in ${result.duration}ms`)
3939console.log(`Generated CSS:\n${result.css}`)
4040
4141```###`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
42import { buildAndWrite } from 'ts-css'
42import { buildAndWrite } from '@ts-css/core'
4343
4444const result = await buildAndWrite({
4545 content: ['./src/**/*.tsx'],
@@ -53,13 +53,13 @@ console.log(`File size: ${result.css.length} bytes`)
5353```###`writeCSS(css: string, outputPath: string): Promise<void>`Write CSS string to a file.**Parameters:**-`css`- CSS content to write
5454
5555-`outputPath` - Path to output file**Returns:**`Promise<void>`**Example:**```typescript
56import { build, writeCSS } from 'ts-css'
56import { build, writeCSS } from '@ts-css/core'
5757
5858const result = await build(config)
5959await writeCSS(result.css, './custom/path/output.css')
6060
6161```###`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
62import { build, writeTransformedFiles } from 'ts-css'
62import { build, writeTransformedFiles } from '@ts-css/core'
6363
6464const result = await build({
6565 // ... config with compileClass enabled
@@ -79,7 +79,7 @@ Class responsible for generating CSS from utility classes.**Constructor:**```typ
7979new CSSGenerator(config: TsCssConfig)
8080
8181```**Methods:**#### `generate(className: string): void`Generate CSS for a single utility class.```typescript
82import { CSSGenerator } from 'ts-css'
82import { CSSGenerator } from '@ts-css/core'
8383
8484const generator = new CSSGenerator(config)
8585generator.generate('bg-blue-500')
@@ -96,7 +96,7 @@ const prettyCSS = generator.toCSS(false) // Formatted
9696generator.reset()
9797```**Complete example:**```typescript
9898
99import { CSSGenerator, defaultConfig } from 'ts-css'
99import { CSSGenerator, defaultConfig } from '@ts-css/core'
100100
101101const config = {
102102 ...defaultConfig,
@@ -133,7 +133,7 @@ new Scanner(
133133
134134-`classes`- Set of found utility classes
135135-`transformedFiles` - Map of transformed files (if transformer provided)**Example:**```typescript
136import { Scanner } from 'ts-css'
136import { Scanner } from '@ts-css/core'
137137
138138const scanner = new Scanner(['./src/**/*.tsx'])
139139const { classes, transformedFiles } = await scanner.scan()
@@ -147,7 +147,7 @@ for (const className of classes) {
147147
148148### `parseClass(className: string): ParsedClass`Parse a utility class string into its components.**Parameters:**-`className` - Class name to parse**Returns:**`ParsedClass` object**Example:**```typescript
149149
150import { parseClass } from 'ts-css'
150import { parseClass } from '@ts-css/core'
151151
152152const parsed = parseClass('md:hover:bg-blue-500')
153153
@@ -172,7 +172,7 @@ console.log(arbitrary.value) // '500px'
172172### `defaultConfig`
173173
174174The default ts-css configuration object.**Example:**```typescript
175import { defaultConfig } from 'ts-css'
175import { defaultConfig } from '@ts-css/core'
176176
177177// Extend default config
178178const config = {
@@ -188,7 +188,7 @@ const config = {
188188
189189```###`loadConfig(options): Promise<TsCssConfig>`Load configuration from file (used internally by CLI).**Parameters:**-`options.name`- Config name (default: 'css')
190190-`options.defaultConfig` - Default configuration**Returns:**`Promise<TsCssConfig>`**Example:**```typescript
191import { defaultConfig, loadConfig } from 'ts-css'
191import { defaultConfig, loadConfig } from '@ts-css/core'
192192
193193const config = await loadConfig({
194194 name: 'css',
@@ -208,7 +208,7 @@ new CompileClassTransformer(config?: {
208208```**Methods:**#### `getCompiledClasses(): Map<string, { className: string, utilities: string[] }>`
209209
210210Get all compiled classes.**Example:**```typescript
211import { CompileClassTransformer } from 'ts-css'
211import { CompileClassTransformer } from '@ts-css/core'
212212
213213const transformer = new CompileClassTransformer({
214214 trigger: ':tc:',
@@ -324,7 +324,7 @@ interface VariantConfig {
324324
325325### Custom Build Pipeline```typescript
326326
327import { CSSGenerator, Scanner, writeCSS } from 'ts-css'
327import { CSSGenerator, Scanner, writeCSS } from '@ts-css/core'
328328
329329async function customBuild() {
330330 // 1. Configure
@@ -361,7 +361,7 @@ async function customBuild() {
361361await customBuild()
362362
363363```### Analyze Utility Usage```typescript
364import { parseClass, Scanner } from 'ts-css'
364import { parseClass, Scanner } from '@ts-css/core'
365365
366366async function analyzeUtilities() {
367367 const scanner = new Scanner(['./src/**/*.tsx'])
@@ -389,7 +389,7 @@ await analyzeUtilities()
389389```### Watch Mode Implementation```typescript
390390
391391import { watch } from 'node:fs'
392import { buildAndWrite } from 'ts-css'
392import { buildAndWrite } from '@ts-css/core'
393393
394394async function watchMode(config: TsCssConfig) {
395395 console.log('Watching for changes...')
@@ -419,7 +419,7 @@ async function watchMode(config: TsCssConfig) {
419419await watchMode(config)
420420
421421```### Framework Plugin```typescript
422import { buildAndWrite } from 'ts-css'
422import { buildAndWrite } from '@ts-css/core'
423423
424424// Usage in vite.config.ts
425425import { defineConfig } from 'vite'
@@ -457,7 +457,7 @@ export default defineConfig({
457457})
458458```### Generate Multiple Themes```typescript
459459
460import { build, writeCSS } from 'ts-css'
460import { build, writeCSS } from '@ts-css/core'
461461
462462const baseConfig = {
463463 content: ['./src/**/*.tsx'],
@@ -494,7 +494,7 @@ for (const [name, theme] of Object.entries(themes)) {
494494
495495```### Testing Utilities```typescript
496496import { expect, test } from 'bun:test'
497import { CSSGenerator, defaultConfig, parseClass } from 'ts-css'
497import { CSSGenerator, defaultConfig, parseClass } from '@ts-css/core'
498498
499499test('parses utility class', () => {
500500 const parsed = parseClass('md:hover:bg-blue-500')
@@ -519,7 +519,7 @@ test('handles important modifier', () => {
519519})
520520```## Error Handling```typescript
521521
522import { buildAndWrite } from 'ts-css'
522import { buildAndWrite } from '@ts-css/core'
523523
524524try {
525525 const result = await buildAndWrite(config)
@@ -543,7 +543,7 @@ catch (error) {
543543
544544### Caching Results```typescript
545545
546import { build } from 'ts-css'
546import { build } from '@ts-css/core'
547547
548548const cache = new Map<string, BuildResult>()
549549
@@ -562,7 +562,7 @@ async function buildWithCache(config: TsCssConfig) {
562562}
563563```### Parallel Builds```typescript
564564
565import { build, writeCSS } from 'ts-css'
565import { build, writeCSS } from '@ts-css/core'
566566
567567const configs = [
568568 { output: './dist/app.css', content: ['./src/app/**/*.tsx'] },