Skip to content

DirectedEdges/anova

Repository files navigation

Anova UI Component Schema

This repository serves as the central hub for documentation, issue tracking, and community support for the Anova UI Component Schema and supporting plugin produced by Nathan Curtis of Directed Edges.

About

Anova (short for "Analysis of variants") is the shared type system and JSON schema that defines the structure of UI component specifications. The schema describes the output of an "analysis of variants" — a deterministic audit of component composition, visual styling, and property configurations drawn from Figma components.

To learn more, read the Analysis of Variants blog post.

NPM Package

The @directededges/anova package exports TypeScript types, JSON schema definitions, and a default configuration object.

import type { Component, Config, AnyProp, Styles } from '@directededges/anova';
import { DEFAULT_CONFIG } from '@directededges/anova';
  • JSON Schema — the canonical schema for component spec output
  • TypeScript Types — complete type definitions for all schema entities (Component, Config, Styles, Element, AnyProp, etc.)
  • DEFAULT_CONFIG — a runtime configuration object controlling output shape (format, token resolution, variant depth, etc.)

Architectural Decision Records

Schema changes are proposed and tracked through ADRs in the adr/ directory. Each ADR documents the context, options considered, and decision for a type or schema modification.

  • ADR Index — summary table of all Draft and Accepted ADRs
  • /anova.adr.create — drafts a new ADR, claims the next number, and reserves it in the index
  • /anova.adr.implement — applies the type and schema changes described in an ADR
  • /anova.adr.accept — validates the implementation, marks the ADR as ACCEPTED, and updates the index

Issue Tracking

Reporting Issues

Found a bug or have a feature request? Please check if it already exists in our Issues before creating a new one.

For Bug Reports, please include:

  • Figma version
  • Operating system
  • Steps to reproduce
  • Expected vs actual behavior
  • Screenshots (if applicable)

For Feature Requests, please include:

  • Clear description of the feature
  • Use case and benefits
  • Any relevant mockups or examples

Community & Support

  • Issues: Use GitHub Issues for bug reports and feature requests
  • Questions: For general questions, please read docs first and then visit our Slack community
  • Updates: Watch the plugin's Figma community page for release updates

License

This repository and the JSON schema are licensed under the Creative Commons Attribution 4.0 International License (CC BY 4.0).

You are free to:

  • Use the schema to validate Anova plugin output
  • Integrate the schema into your own tools and workflows
  • Modify and distribute the schema
  • Use it for commercial purposes

Attribution Requirements: When using this schema, you must:

Example attribution:

"This project uses the Anova UI Component Schema by Nathan Curtis of Directed Edges, licensed under CC BY 4.0."

See the LICENSE file for full terms.


Disclaimer: This is an independent project and is not officially affiliated with Figma Inc.

About

JSON schema and corresponding TS types for defining platform-independent UI components, supported by CLI and Figma Plugin generators

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors