okchroma 0.1.1 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -30,7 +30,9 @@ __export(index_exports, {
30
30
  PAPER_100: () => PAPER_100,
31
31
  RESOLVER_ID: () => RESOLVER_ID,
32
32
  SCALE_STOP_COUNT: () => SCALE_STOP_COUNT,
33
+ SCRIM_ALPHA: () => SCRIM_ALPHA,
33
34
  SECONDARY_DISTINCT_DELTA_E: () => SECONDARY_DISTINCT_DELTA_E,
35
+ SHADOW_ALPHAS: () => SHADOW_ALPHAS,
34
36
  SIGNALS: () => SIGNALS2,
35
37
  SIGNAL_EMIT_NAME: () => SIGNAL_EMIT_NAME,
36
38
  SIGNAL_SCALES: () => SIGNAL_SCALES,
@@ -42,6 +44,8 @@ __export(index_exports, {
42
44
  STAMP_STATE_LEAVES: () => STAMP_STATE_LEAVES,
43
45
  SUBTLE_PASTEL_K: () => SUBTLE_PASTEL_K,
44
46
  SUBTLE_TINT_MULT: () => SUBTLE_TINT_MULT,
47
+ SURFACE_PLANE_LAW: () => SURFACE_PLANE_LAW,
48
+ SYSTEM_LEAF: () => SYSTEM_LEAF,
45
49
  brandCss: () => brandCss,
46
50
  checkAllCollisions: () => checkAllCollisions,
47
51
  checkCollision: () => checkCollision,
@@ -3406,6 +3410,33 @@ var STAMP_LEAF = {
3406
3410
  EDGE: STAMP_STATE_LEAVES[STAMP_EDGE],
3407
3411
  ON: STAMP_STATE_LEAVES[STAMP_ON]
3408
3412
  };
3413
+ var SYSTEM_LEAF = {
3414
+ ABS_BLACK: "system/abs-black",
3415
+ ABS_WHITE: "system/abs-white",
3416
+ SURFACE: {
3417
+ DIM: "system/surface/dim",
3418
+ LOW: "system/surface/low",
3419
+ MID: "system/surface/mid",
3420
+ HIGH: "system/surface/high"
3421
+ },
3422
+ ALPHA: {
3423
+ TRANSPARENT: "system/alpha/transparent",
3424
+ SCRIM: "system/alpha/abs-black-060",
3425
+ INK: "system/alpha/ink",
3426
+ OFFSET_006: "system/alpha/006",
3427
+ OFFSET_008: "system/alpha/008",
3428
+ OFFSET_016: "system/alpha/016",
3429
+ SHADOW_04: "system/alpha/shadow-04",
3430
+ SHADOW_08: "system/alpha/shadow-08",
3431
+ SHADOW_12: "system/alpha/shadow-12"
3432
+ }
3433
+ };
3434
+ var SURFACE_PLANE_LAW = {
3435
+ [SYSTEM_LEAF.SURFACE.DIM]: { light: SHARED_NAMES[3], dark: PAPER_100 },
3436
+ [SYSTEM_LEAF.SURFACE.LOW]: { light: SHARED_NAMES[2], dark: SHARED_NAMES[1] },
3437
+ [SYSTEM_LEAF.SURFACE.MID]: { light: SHARED_NAMES[1], dark: SHARED_NAMES[2] },
3438
+ [SYSTEM_LEAF.SURFACE.HIGH]: { light: PAPER_100, dark: SHARED_NAMES[3] }
3439
+ };
3409
3440
  var TOKEN_ORDER = [
3410
3441
  ...Object.values(SHARED_NAMES),
3411
3442
  STAMP_FILL,
@@ -3451,6 +3482,12 @@ var OFFSET_ALPHAS = { 6: 0.06, 8: 0.08, 16: 0.16 };
3451
3482
  var ctaBorderRung = (prefix) => prefix === CSS_NEUTRAL ? 8 : prefix === CSS_SECONDARY ? 6 : 16;
3452
3483
  var offsetLeafName = (rung) => String(rung).padStart(3, "0");
3453
3484
  var offsetVarName = (rung) => `--alpha-${offsetLeafName(rung)}`;
3485
+ var SHADOW_ALPHAS = {
3486
+ 4: { light: 0.04, dark: 0.32 },
3487
+ 8: { light: 0.08, dark: 0.48 },
3488
+ 12: { light: 0.12, dark: 0.64 }
3489
+ };
3490
+ var SCRIM_ALPHA = 0.6;
3454
3491
  var TRANSPARENT_VAR = "--alpha-transparent";
3455
3492
  var offsetRgba = (rung, mode) => mode === "light" ? `rgba(0, 0, 0, ${OFFSET_ALPHAS[rung]})` : `rgba(255, 255, 255, ${OFFSET_ALPHAS[rung]})`;
3456
3493
  var alphaRootVars = (mode) => [
@@ -3868,6 +3905,28 @@ function themeToFigma(r, input) {
3868
3905
  ctaFamily(sig.scale, mode, sig.name)
3869
3906
  );
3870
3907
  }
3908
+ const pole = (white, alpha) => {
3909
+ const c = white ? 1 : 0;
3910
+ return {
3911
+ $type: "color",
3912
+ $value: { colorSpace: "srgb", components: [c, c, c], alpha, hex: white ? "#ffffff" : "#000000" }
3913
+ };
3914
+ };
3915
+ putLeaf(g2, SYSTEM_LEAF.ABS_BLACK, colorFromHex(false));
3916
+ putLeaf(g2, SYSTEM_LEAF.ABS_WHITE, colorFromHex(true));
3917
+ for (const [path, law] of Object.entries(SURFACE_PLANE_LAW)) {
3918
+ const tok = neutralGroup[law[mode]];
3919
+ if (tok && "$type" in tok) putLeaf(g2, path, tok);
3920
+ }
3921
+ putLeaf(g2, SYSTEM_LEAF.ALPHA.TRANSPARENT, pole(true, 0));
3922
+ putLeaf(g2, SYSTEM_LEAF.ALPHA.SCRIM, pole(false, SCRIM_ALPHA));
3923
+ putLeaf(g2, SYSTEM_LEAF.ALPHA.INK, pole(mode === "dark", SOFT_ON_CTA_ALPHA[mode]));
3924
+ putLeaf(g2, SYSTEM_LEAF.ALPHA.OFFSET_006, OFFSET_TOKEN(6, mode));
3925
+ putLeaf(g2, SYSTEM_LEAF.ALPHA.OFFSET_008, OFFSET_TOKEN(8, mode));
3926
+ putLeaf(g2, SYSTEM_LEAF.ALPHA.OFFSET_016, OFFSET_TOKEN(16, mode));
3927
+ putLeaf(g2, SYSTEM_LEAF.ALPHA.SHADOW_04, pole(false, SHADOW_ALPHAS[4][mode]));
3928
+ putLeaf(g2, SYSTEM_LEAF.ALPHA.SHADOW_08, pole(false, SHADOW_ALPHAS[8][mode]));
3929
+ putLeaf(g2, SYSTEM_LEAF.ALPHA.SHADOW_12, pole(false, SHADOW_ALPHAS[12][mode]));
3871
3930
  return g2;
3872
3931
  };
3873
3932
  return { light: build("light"), dark: build("dark") };
@@ -3332,6 +3332,33 @@ var STAMP_LEAF = {
3332
3332
  EDGE: STAMP_STATE_LEAVES[STAMP_EDGE],
3333
3333
  ON: STAMP_STATE_LEAVES[STAMP_ON]
3334
3334
  };
3335
+ var SYSTEM_LEAF = {
3336
+ ABS_BLACK: "system/abs-black",
3337
+ ABS_WHITE: "system/abs-white",
3338
+ SURFACE: {
3339
+ DIM: "system/surface/dim",
3340
+ LOW: "system/surface/low",
3341
+ MID: "system/surface/mid",
3342
+ HIGH: "system/surface/high"
3343
+ },
3344
+ ALPHA: {
3345
+ TRANSPARENT: "system/alpha/transparent",
3346
+ SCRIM: "system/alpha/abs-black-060",
3347
+ INK: "system/alpha/ink",
3348
+ OFFSET_006: "system/alpha/006",
3349
+ OFFSET_008: "system/alpha/008",
3350
+ OFFSET_016: "system/alpha/016",
3351
+ SHADOW_04: "system/alpha/shadow-04",
3352
+ SHADOW_08: "system/alpha/shadow-08",
3353
+ SHADOW_12: "system/alpha/shadow-12"
3354
+ }
3355
+ };
3356
+ var SURFACE_PLANE_LAW = {
3357
+ [SYSTEM_LEAF.SURFACE.DIM]: { light: SHARED_NAMES[3], dark: PAPER_100 },
3358
+ [SYSTEM_LEAF.SURFACE.LOW]: { light: SHARED_NAMES[2], dark: SHARED_NAMES[1] },
3359
+ [SYSTEM_LEAF.SURFACE.MID]: { light: SHARED_NAMES[1], dark: SHARED_NAMES[2] },
3360
+ [SYSTEM_LEAF.SURFACE.HIGH]: { light: PAPER_100, dark: SHARED_NAMES[3] }
3361
+ };
3335
3362
  var TOKEN_ORDER = [
3336
3363
  ...Object.values(SHARED_NAMES),
3337
3364
  STAMP_FILL,
@@ -3377,6 +3404,12 @@ var OFFSET_ALPHAS = { 6: 0.06, 8: 0.08, 16: 0.16 };
3377
3404
  var ctaBorderRung = (prefix) => prefix === CSS_NEUTRAL ? 8 : prefix === CSS_SECONDARY ? 6 : 16;
3378
3405
  var offsetLeafName = (rung) => String(rung).padStart(3, "0");
3379
3406
  var offsetVarName = (rung) => `--alpha-${offsetLeafName(rung)}`;
3407
+ var SHADOW_ALPHAS = {
3408
+ 4: { light: 0.04, dark: 0.32 },
3409
+ 8: { light: 0.08, dark: 0.48 },
3410
+ 12: { light: 0.12, dark: 0.64 }
3411
+ };
3412
+ var SCRIM_ALPHA = 0.6;
3380
3413
  var TRANSPARENT_VAR = "--alpha-transparent";
3381
3414
  var offsetRgba = (rung, mode) => mode === "light" ? `rgba(0, 0, 0, ${OFFSET_ALPHAS[rung]})` : `rgba(255, 255, 255, ${OFFSET_ALPHAS[rung]})`;
3382
3415
  var alphaRootVars = (mode) => [
@@ -3794,6 +3827,28 @@ function themeToFigma(r, input) {
3794
3827
  ctaFamily(sig.scale, mode, sig.name)
3795
3828
  );
3796
3829
  }
3830
+ const pole = (white, alpha) => {
3831
+ const c = white ? 1 : 0;
3832
+ return {
3833
+ $type: "color",
3834
+ $value: { colorSpace: "srgb", components: [c, c, c], alpha, hex: white ? "#ffffff" : "#000000" }
3835
+ };
3836
+ };
3837
+ putLeaf(g2, SYSTEM_LEAF.ABS_BLACK, colorFromHex(false));
3838
+ putLeaf(g2, SYSTEM_LEAF.ABS_WHITE, colorFromHex(true));
3839
+ for (const [path, law] of Object.entries(SURFACE_PLANE_LAW)) {
3840
+ const tok = neutralGroup[law[mode]];
3841
+ if (tok && "$type" in tok) putLeaf(g2, path, tok);
3842
+ }
3843
+ putLeaf(g2, SYSTEM_LEAF.ALPHA.TRANSPARENT, pole(true, 0));
3844
+ putLeaf(g2, SYSTEM_LEAF.ALPHA.SCRIM, pole(false, SCRIM_ALPHA));
3845
+ putLeaf(g2, SYSTEM_LEAF.ALPHA.INK, pole(mode === "dark", SOFT_ON_CTA_ALPHA[mode]));
3846
+ putLeaf(g2, SYSTEM_LEAF.ALPHA.OFFSET_006, OFFSET_TOKEN(6, mode));
3847
+ putLeaf(g2, SYSTEM_LEAF.ALPHA.OFFSET_008, OFFSET_TOKEN(8, mode));
3848
+ putLeaf(g2, SYSTEM_LEAF.ALPHA.OFFSET_016, OFFSET_TOKEN(16, mode));
3849
+ putLeaf(g2, SYSTEM_LEAF.ALPHA.SHADOW_04, pole(false, SHADOW_ALPHAS[4][mode]));
3850
+ putLeaf(g2, SYSTEM_LEAF.ALPHA.SHADOW_08, pole(false, SHADOW_ALPHAS[8][mode]));
3851
+ putLeaf(g2, SYSTEM_LEAF.ALPHA.SHADOW_12, pole(false, SHADOW_ALPHAS[12][mode]));
3797
3852
  return g2;
3798
3853
  };
3799
3854
  return { light: build("light"), dark: build("dark") };
@@ -3872,7 +3927,9 @@ export {
3872
3927
  PAPER_100,
3873
3928
  RESOLVER_ID,
3874
3929
  SCALE_STOP_COUNT,
3930
+ SCRIM_ALPHA,
3875
3931
  SECONDARY_DISTINCT_DELTA_E,
3932
+ SHADOW_ALPHAS,
3876
3933
  SIGNALS2 as SIGNALS,
3877
3934
  SIGNAL_EMIT_NAME,
3878
3935
  SIGNAL_SCALES,
@@ -3884,6 +3941,8 @@ export {
3884
3941
  STAMP_STATE_LEAVES,
3885
3942
  SUBTLE_PASTEL_K,
3886
3943
  SUBTLE_TINT_MULT,
3944
+ SURFACE_PLANE_LAW,
3945
+ SYSTEM_LEAF,
3887
3946
  brandCss,
3888
3947
  checkAllCollisions,
3889
3948
  checkCollision,
@@ -17,6 +17,22 @@ export declare const ctaBorderRung: (prefix: string) => OffsetRung;
17
17
  export declare const offsetLeafName: (rung: OffsetRung) => string;
18
18
  export declare const offsetVarName: (rung: OffsetRung) => string;
19
19
  export declare const offsetTokenPath: (rung: OffsetRung) => string;
20
+ export declare const SHADOW_ALPHAS: {
21
+ readonly 4: {
22
+ readonly light: 0.04;
23
+ readonly dark: 0.32;
24
+ };
25
+ readonly 8: {
26
+ readonly light: 0.08;
27
+ readonly dark: 0.48;
28
+ };
29
+ readonly 12: {
30
+ readonly light: 0.12;
31
+ readonly dark: 0.64;
32
+ };
33
+ };
34
+ export type ShadowRung = keyof typeof SHADOW_ALPHAS;
35
+ export declare const SCRIM_ALPHA = 0.6;
20
36
  export declare const TRANSPARENT_VAR = "--alpha-transparent";
21
37
  export declare const offsetRgba: (rung: OffsetRung, mode: "light" | "dark") => string;
22
38
  export declare const alphaRootVars: (mode: "light" | "dark") => string[];
@@ -15,6 +15,31 @@ export declare const STAMP_LEAF: {
15
15
  readonly EDGE: string;
16
16
  readonly ON: string;
17
17
  };
18
+ export declare const SYSTEM_LEAF: {
19
+ readonly ABS_BLACK: "system/abs-black";
20
+ readonly ABS_WHITE: "system/abs-white";
21
+ readonly SURFACE: {
22
+ readonly DIM: "system/surface/dim";
23
+ readonly LOW: "system/surface/low";
24
+ readonly MID: "system/surface/mid";
25
+ readonly HIGH: "system/surface/high";
26
+ };
27
+ readonly ALPHA: {
28
+ readonly TRANSPARENT: "system/alpha/transparent";
29
+ readonly SCRIM: "system/alpha/abs-black-060";
30
+ readonly INK: "system/alpha/ink";
31
+ readonly OFFSET_006: "system/alpha/006";
32
+ readonly OFFSET_008: "system/alpha/008";
33
+ readonly OFFSET_016: "system/alpha/016";
34
+ readonly SHADOW_04: "system/alpha/shadow-04";
35
+ readonly SHADOW_08: "system/alpha/shadow-08";
36
+ readonly SHADOW_12: "system/alpha/shadow-12";
37
+ };
38
+ };
39
+ export declare const SURFACE_PLANE_LAW: Record<string, {
40
+ light: string;
41
+ dark: string;
42
+ }>;
18
43
  export declare const CONTRACT_INVARIANT_ROWS: ReadonlySet<string>;
19
44
  export declare const EXT_NON_OVERRIDABLE: (p: string) => boolean;
20
45
  export declare const EXT_OVERRIDABLE_SYSTEM: (p: string) => boolean;
@@ -1,11 +1,11 @@
1
1
  export { generateScale, generateNeutralScale, generateSubtleSecondary, type GeneratedScale, type ColorStop, type GenerateOptions, type NeutralLevel, type ContrastProfile, } from './engine/colorEngine';
2
2
  export { resolveBrand, resolveTheme, resolveLinkTrio, resolveLinkInverseTrio, DEFAULT_LINK_HEX, SIGNAL_SCALES, signalScalesFor, SECONDARY_DISTINCT_DELTA_E, SUBTLE_TINT_MULT, SUBTLE_PASTEL_K, OUTLINE_HOVER_ALPHA, type ResolvedBrand, type ResolvedTheme, type ResolvedSecondary, type SecondaryLevel, type SecondaryStyle, type SignalOverride, } from './engine/resolve';
3
- export { brandCss, neutralCss, signalsCss, stopsToVars, toHex, stopHex, OFFSET_ALPHAS, ctaNeedsBorder, ctaBorderRung, pageStopFor, } from './engine/cssRender';
3
+ export { brandCss, neutralCss, signalsCss, stopsToVars, toHex, stopHex, OFFSET_ALPHAS, SHADOW_ALPHAS, SCRIM_ALPHA, type ShadowRung, ctaNeedsBorder, ctaBorderRung, pageStopFor, } from './engine/cssRender';
4
4
  export { CSS_FAMILY } from './engine/tokenDescriptions';
5
5
  export { themeToFigma, type FigmaGroup, type FigmaColorToken, type ThemeInput, } from './engine/figmaRender';
6
6
  export { emitDtcgRamp, resolveDtcgRamp, parseToken, EXT_KEY, RESOLVER_ID, type DtcgRampGroup, type DtcgRequirementToken, type DtcgSeedToken, type DtcgColorValue, } from './engine/requirements/dtcg';
7
7
  export { MODE_SPECS, type ModeSpec } from './engine/requirements/spec';
8
- export { stopTokenName, tokenOrder, SCALE_STOP_COUNT, PAPER_100, INK_0, STAMP_FILL, STAMP_FILL_HOVER, STAMP_FILL_PRESSED, STAMP_EDGE, STAMP_ON, STAMP_STATE_LEAVES, } from './engine/tokenNames';
8
+ export { stopTokenName, tokenOrder, SCALE_STOP_COUNT, PAPER_100, INK_0, STAMP_FILL, STAMP_FILL_HOVER, STAMP_FILL_PRESSED, STAMP_EDGE, STAMP_ON, STAMP_STATE_LEAVES, SYSTEM_LEAF, SURFACE_PLANE_LAW, } from './engine/tokenNames';
9
9
  export { SIGNAL_EMIT_NAME } from './engine/signals';
10
10
  export { classifyArchetype, type Archetype } from './engine/archetypes';
11
11
  export { SIGNALS, type SignalDef } from './engine/signals';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "okchroma",
3
- "version": "0.1.1",
3
+ "version": "0.1.2",
4
4
  "license": "MIT",
5
5
  "description": "Color token engine: one brand hex in, a full WCAG-enforced light+dark token system out (CSS variables, DTCG JSON, Figma variables)",
6
6
  "repository": {