npm package: @genart-dev/styles
Description: Art styles, movements, artist profiles, and style recipes for genart.dev
Author: genart.dev
Latest version: 0.1.0

# @genart-dev/styles

Art movements, artist profiles, media types, and style recipes for [genart.dev](https://genart.dev) — a curated knowledge base for AI-driven generative art. Includes 30 art movements, 14 artist profiles, 12 media types, and 26 style recipes with layer stacks, palettes, and agent guidance.

Part of [genart.dev](https://genart.dev) — a generative art platform with an MCP server, desktop app, and IDE extensions.

## Install

```bash
npm install @genart-dev/styles
```

## Usage

```typescript
import {
  // Registry — all data collections
  MOVEMENTS, ARTISTS, MEDIA, RECIPES,
  MOVEMENT_BY_ID, ARTIST_BY_ID, MEDIA_BY_ID, RECIPE_BY_ID,

  // Resolver — typed lookups by ID
  getMovement, getArtist, getMedia, getRecipe,
  resolveStyle, getRecipesForStyle,

  // Search — keyword, tag, era, region filtering
  searchStyles, searchRecipes,

  // Suggest — natural-language style recommendation
  suggestStyles, suggestRecipesFor,

  // Palette — color extraction and utilities
  getRecipePalette, getMovementPalettes, getArtistPalettes,
  mergedPalette, tint, shade, luminance, sortByLuminance,

  // Timeline — chronological view of movements
  getTimeline, getMovementsInRange,
  getContemporaryMovements, getTimelineByEra,
} from "@genart-dev/styles";
```

## Art Movements (30)

Impressionism, Pointillism, Post-Impressionism, Art Nouveau, Expressionism, Fauvism, Cubism, Futurism, Suprematism, Constructivism, De Stijl, Bauhaus, Abstract Expressionism, Color Field, Hard Edge, Pop Art, Op Art, Minimalism, Memphis, Glitch Art, Generative Art, Ukiyo-e, Sumi-e, Islamic Geometric, Baroque, Surrealism, Synthwave, Vaporwave, Wabi-Sabi, Risograph.

Each movement includes era, region, date range, description, characteristics, principles, color/composition character, notable artists, related movements, and tags.

```typescript
const impressionism = getMovement("impressionism");
// → { id, name, era: "modern-early", yearStart: 1860, yearEnd: 1886, ... }
```

## Artist Profiles (14)

Monet, Van Gogh, Seurat, Hokusai, Matisse, Pollock, Rothko, Mondrian, Kandinsky, Warhol, Lichtenstein, Tyler Hobbs, Sol LeWitt, Renoir.

Each profile includes visual signature, subjects, techniques, color tendencies, and linked recipes.

```typescript
const vanGogh = getArtist("van-gogh");
// → { id, name, born: 1853, died: 1890, visualSignature: "...", ... }
```

## Media Types (12)

Oil on Canvas, Watercolor, Gouache, Acrylic, Pastel, Woodcut, Screenprint, Etching, Risograph, Generative Code, Pixel Art, Glitch Digital.

## Style Recipes (26)

Recipes are actionable layer stacks that an AI agent can apply to a sketch. Each recipe includes:

- **Layer stack** — ordered design layers with typeId, blend mode, opacity, and properties
- **Suggested palette** — curated hex colors for the style
- **Recommended renderers** — which genart renderers work best
- **Agent guidance** — natural language instructions for the AI

```typescript
const recipe = getRecipe("impressionism-landscape");
// → { layers: [...], suggestedPalette: ["#8DACD4", ...], agentGuidance: "..." }

// Find all recipes for a movement
const recipes = getRecipesForStyle("movement", "impressionism");
```

### Available Recipes

| Recipe | Style | Renderers |
|--------|-------|-----------|
| `impressionism-landscape` | Impressionism | canvas2d |
| `impressionism-figure` | Impressionism | canvas2d |
| `van-gogh-wheatfield` | Van Gogh | canvas2d |
| `van-gogh-starry-night` | Van Gogh | canvas2d |
| `pointillism-landscape` | Pointillism | canvas2d |
| `pointillism-figure` | Pointillism | canvas2d |
| `pop-art-benday` | Pop Art | canvas2d |
| `pop-art-silkscreen` | Pop Art | canvas2d |
| `op-art-vasarely` | Op Art | canvas2d, webgl |
| `op-art-bridget-riley` | Op Art | canvas2d |
| `bauhaus-composition` | Bauhaus | canvas2d, svg |
| `bauhaus-typographic` | Bauhaus | canvas2d, svg |
| `ukiyo-e-landscape` | Ukiyo-e | canvas2d |
| `ukiyo-e-figure` | Ukiyo-e | canvas2d |
| `sumi-e-bamboo` | Sumi-e | canvas2d |
| `sumi-e-mountain` | Sumi-e | canvas2d |
| `generative-flow-field` | Generative Art | canvas2d, webgl |
| `generative-fibers` | Generative Art | canvas2d |
| `generative-circle-pack` | Generative Art | canvas2d, svg |
| `minimalism-composition` | Minimalism | canvas2d, svg |
| `minimalism-grid` | Minimalism | canvas2d, svg |
| `abex-action-painting` | Abstract Expressionism | canvas2d |
| `abex-color-field` | Abstract Expressionism | canvas2d |
| `de-stijl-composition` | De Stijl | canvas2d, svg |
| `synthwave-grid` | Synthwave | webgl, canvas2d |
| `vaporwave-collage` | Vaporwave | canvas2d |

## Search

```typescript
// Search by keyword
const results = searchStyles({ query: "japanese" });

// Filter by era + kind
const earlyModern = searchStyles({ kind: "movement", era: "modern-early" });

// Search recipes by renderer
const glslRecipes = searchRecipes({ renderer: "webgl" });

// Search recipes by tag
const landscapes = searchRecipes({ tags: ["landscape"] });
```

## Natural-Language Suggestions

```typescript
const suggestions = suggestStyles("dark moody night scene with swirling sky");
// → [{ result: {...}, confidence: 0.85, reason: "..." }, ...]
```

## Palette Utilities

```typescript
import { getRecipePalette, tint, shade, luminance, sortByLuminance } from "@genart-dev/styles";

const palette = getRecipePalette("impressionism-landscape");
// → { colors: ["#8DACD4", ...], source: "recipe" }

const lighter = tint("#804040", 0.5);
const darker = shade("#804040", 0.5);
const sorted = sortByLuminance(["#FFFFFF", "#888888", "#000000"]);
```

## Timeline

```typescript
import { getTimeline, getMovementsInRange, getContemporaryMovements } from "@genart-dev/styles";

// All movements chronologically
const timeline = getTimeline();

// Movements active between 1860-1900
const lateNineteenth = getMovementsInRange(1860, 1900);

// Movements contemporary with Impressionism
const contemporaries = getContemporaryMovements("impressionism");
```

## License

MIT