Skip to content

feat: add 5 new color functions from graph-engine#10

Open
mck wants to merge 5 commits into
mainfrom
feat/add-color-functions
Open

feat: add 5 new color functions from graph-engine#10
mck wants to merge 5 commits into
mainfrom
feat/add-color-functions

Conversation

@mck

@mck mck commented Jan 19, 2026

Copy link
Copy Markdown
Collaborator

Add the following functions ported from graph-engine:

  • distance: Calculate Euclidean distance between colors in OKLab/Lab
  • match_alpha: Find alpha that blends fg over bg to produce a reference color
  • contrasting_alpha: Find minimum alpha for target contrast (binary search)
  • contrasting_from_array: Find first color meeting contrast threshold
  • sort_by_distance: Sort colors by distance/contrast/hue/lightness/chroma

All functions are pure TokenScript with no external dependencies. Tests validated against graph-engine test cases where available.

mck added 5 commits January 19, 2026 14:50
Add the following functions ported from graph-engine:

- distance: Calculate Euclidean distance between colors in OKLab/Lab
- match_alpha: Find alpha that blends fg over bg to produce a reference color
- contrasting_alpha: Find minimum alpha for target contrast (binary search)
- contrasting_from_array: Find first color meeting contrast threshold
- sort_by_distance: Sort colors by distance/contrast/hue/lightness/chroma

All functions are pure TokenScript with no external dependencies.
Tests validated against graph-engine test cases where available.
Add the following functions ported from graph-engine:

- distance: Calculate Euclidean distance between colors in OKLab/Lab
- match_alpha: Find alpha that blends fg over bg to produce a reference color
- contrasting_alpha: Find minimum alpha for target contrast (binary search)
- contrasting_from_array: Find first color meeting contrast threshold
- sort_by_distance: Sort colors by distance/contrast/hue/lightness/chroma

All functions are pure TokenScript with no external dependencies.
Tests validated against graph-engine test cases where available.
Updated contrasting_alpha, contrasting_from_array, match_alpha, and sort_by_distance functions to use XYZ-D65 for internal luminance/contrast calculations while returning the original input color(s) unchanged. Adjusted schema descriptions, requirements, and tests to clarify that output colors remain in the same color space as input, improving gamut-agnostic accuracy and user flexibility.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant