okchroma 0.1.3 → 0.1.5

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.
@@ -22,6 +22,7 @@ var index_exports = {};
22
22
  __export(index_exports, {
23
23
  CSS_FAMILY: () => CSS_FAMILY,
24
24
  DEFAULT_LINK_HEX: () => DEFAULT_LINK_HEX,
25
+ DISABLED_OPACITY: () => DISABLED_OPACITY,
25
26
  EXT_KEY: () => EXT_KEY,
26
27
  INK_0: () => INK_0,
27
28
  MODE_SPECS: () => MODE_SPECS,
@@ -817,7 +818,7 @@ var LIGHT = {
817
818
  stops: [
818
819
  // paper-100 (paper-0 pre-Stage-B): the resolved ladder extreme — in light it genuinely is white (rootL 1.0, zero chroma)
819
820
  { stop: 0, rootL: 1, group: "paper", produce: { hue: "warm-drift", L: "fixed", chroma: "ladder" }, satFraction: SCALE_C_LIGHT[0].sat, baseC: SCALE_C_LIGHT[0].base },
820
- // paper/wash/mark-74: perceptual ladder/envelope blend on the geometric ROOT_L_LIGHT scaffold. Separation
821
+ // paper/wash/wax-74: perceptual ladder/envelope blend on the geometric ROOT_L_LIGHT scaffold. Separation
821
822
  // falls out of the shape (see above) — no min-separation require. Only stop 8 carries a require: the WCAG
822
823
  // 3:1 vs the resolved paper-97 (paper-2) (re-solves automatically since it references paper-97 (paper-2)).
823
824
  ...[1, 2, 3, 4, 5, 6, 7, 8].map((stop) => ({
@@ -877,7 +878,7 @@ var DARK = {
877
878
  };
878
879
  var MODE_SPECS = { light: LIGHT, dark: DARK };
879
880
 
880
- // node_modules/helmlab/dist/index.js
881
+ // ../../../Users/emilygerrity/okchroma/node_modules/helmlab/dist/index.js
881
882
  function o0(n) {
882
883
  let t = new Float64Array(9);
883
884
  for (let e = 0; e < 3; e++) for (let s = 0; s < 3; s++) t[e * 3 + s] = n[e][s];
@@ -2724,8 +2725,8 @@ var SCALE = {
2724
2725
  "wash-85": WASH,
2725
2726
  "wash-80": WASH,
2726
2727
  // ("icons" KEPT through the 2026-08-28 on-flood strip (owner): an "icon" query
2727
- // landing on the mark rows is worth its ic-ON-s noise — the one surviving body carrier)
2728
- "mark-74": { req: "focus rings, icons, large text", contrast: AA_LARGE, theming: solved, collides: true },
2728
+ // landing on the wax rows is worth its ic-ON-s noise — the one surviving body carrier)
2729
+ "wax-74": { req: "focus rings, icons, large text", contrast: AA_LARGE, theming: solved, collides: true },
2729
2730
  "lead-53": { req: "regular text, inverted backgrounds", contrast: AA_BODY, theming: solved, collides: true },
2730
2731
  "ink-42": { req: "regular text, inverted backgrounds", contrast: AA_BODY, theming: solved, collides: true },
2731
2732
  // ("high-emphasis" reworded 2026-08-12: the surface planes took low/high as label
@@ -3376,7 +3377,7 @@ var SHARED_NAMES = {
3376
3377
  5: "wash-89",
3377
3378
  6: "wash-85",
3378
3379
  7: "wash-80",
3379
- 8: "mark-74",
3380
+ 8: "wax-74",
3380
3381
  // THE INK BAND (C49, owner 2026-08-05): the first text stop + emphasis fill (the
3381
3382
  // 2026-07-29 highlight collapse — the old highlight-9 and on-highlight are
3382
3383
  // deleted; this stop carries both jobs, its on-color a paper token), the between
@@ -3505,6 +3506,7 @@ var SHADOW_ALPHAS = {
3505
3506
  12: { light: 0.12, dark: 0.64 }
3506
3507
  };
3507
3508
  var SCRIM_ALPHA = 0.6;
3509
+ var DISABLED_OPACITY = 0.38;
3508
3510
  var TRANSPARENT_VAR = "--alpha-transparent";
3509
3511
  var offsetRgba = (rung, mode) => mode === "light" ? `rgba(0, 0, 0, ${OFFSET_ALPHAS[rung]})` : `rgba(255, 255, 255, ${OFFSET_ALPHAS[rung]})`;
3510
3512
  var alphaRootVars = (mode) => [
@@ -739,7 +739,7 @@ var LIGHT = {
739
739
  stops: [
740
740
  // paper-100 (paper-0 pre-Stage-B): the resolved ladder extreme — in light it genuinely is white (rootL 1.0, zero chroma)
741
741
  { stop: 0, rootL: 1, group: "paper", produce: { hue: "warm-drift", L: "fixed", chroma: "ladder" }, satFraction: SCALE_C_LIGHT[0].sat, baseC: SCALE_C_LIGHT[0].base },
742
- // paper/wash/mark-74: perceptual ladder/envelope blend on the geometric ROOT_L_LIGHT scaffold. Separation
742
+ // paper/wash/wax-74: perceptual ladder/envelope blend on the geometric ROOT_L_LIGHT scaffold. Separation
743
743
  // falls out of the shape (see above) — no min-separation require. Only stop 8 carries a require: the WCAG
744
744
  // 3:1 vs the resolved paper-97 (paper-2) (re-solves automatically since it references paper-97 (paper-2)).
745
745
  ...[1, 2, 3, 4, 5, 6, 7, 8].map((stop) => ({
@@ -799,7 +799,7 @@ var DARK = {
799
799
  };
800
800
  var MODE_SPECS = { light: LIGHT, dark: DARK };
801
801
 
802
- // node_modules/helmlab/dist/index.js
802
+ // ../../../Users/emilygerrity/okchroma/node_modules/helmlab/dist/index.js
803
803
  function o0(n) {
804
804
  let t = new Float64Array(9);
805
805
  for (let e = 0; e < 3; e++) for (let s = 0; s < 3; s++) t[e * 3 + s] = n[e][s];
@@ -2646,8 +2646,8 @@ var SCALE = {
2646
2646
  "wash-85": WASH,
2647
2647
  "wash-80": WASH,
2648
2648
  // ("icons" KEPT through the 2026-08-28 on-flood strip (owner): an "icon" query
2649
- // landing on the mark rows is worth its ic-ON-s noise — the one surviving body carrier)
2650
- "mark-74": { req: "focus rings, icons, large text", contrast: AA_LARGE, theming: solved, collides: true },
2649
+ // landing on the wax rows is worth its ic-ON-s noise — the one surviving body carrier)
2650
+ "wax-74": { req: "focus rings, icons, large text", contrast: AA_LARGE, theming: solved, collides: true },
2651
2651
  "lead-53": { req: "regular text, inverted backgrounds", contrast: AA_BODY, theming: solved, collides: true },
2652
2652
  "ink-42": { req: "regular text, inverted backgrounds", contrast: AA_BODY, theming: solved, collides: true },
2653
2653
  // ("high-emphasis" reworded 2026-08-12: the surface planes took low/high as label
@@ -3298,7 +3298,7 @@ var SHARED_NAMES = {
3298
3298
  5: "wash-89",
3299
3299
  6: "wash-85",
3300
3300
  7: "wash-80",
3301
- 8: "mark-74",
3301
+ 8: "wax-74",
3302
3302
  // THE INK BAND (C49, owner 2026-08-05): the first text stop + emphasis fill (the
3303
3303
  // 2026-07-29 highlight collapse — the old highlight-9 and on-highlight are
3304
3304
  // deleted; this stop carries both jobs, its on-color a paper token), the between
@@ -3427,6 +3427,7 @@ var SHADOW_ALPHAS = {
3427
3427
  12: { light: 0.12, dark: 0.64 }
3428
3428
  };
3429
3429
  var SCRIM_ALPHA = 0.6;
3430
+ var DISABLED_OPACITY = 0.38;
3430
3431
  var TRANSPARENT_VAR = "--alpha-transparent";
3431
3432
  var offsetRgba = (rung, mode) => mode === "light" ? `rgba(0, 0, 0, ${OFFSET_ALPHAS[rung]})` : `rgba(255, 255, 255, ${OFFSET_ALPHAS[rung]})`;
3432
3433
  var alphaRootVars = (mode) => [
@@ -3945,6 +3946,7 @@ function resolveDtcgRamp(group) {
3945
3946
  export {
3946
3947
  CSS_FAMILY,
3947
3948
  DEFAULT_LINK_HEX,
3949
+ DISABLED_OPACITY,
3948
3950
  EXT_KEY,
3949
3951
  INK_0,
3950
3952
  MODE_SPECS,
@@ -33,6 +33,7 @@ export declare const SHADOW_ALPHAS: {
33
33
  };
34
34
  export type ShadowRung = keyof typeof SHADOW_ALPHAS;
35
35
  export declare const SCRIM_ALPHA = 0.6;
36
+ export declare const DISABLED_OPACITY = 0.38;
36
37
  export declare const TRANSPARENT_VAR = "--alpha-transparent";
37
38
  export declare const offsetRgba: (rung: OffsetRung, mode: "light" | "dark") => string;
38
39
  export declare const alphaRootVars: (mode: "light" | "dark") => string[];
@@ -1,6 +1,6 @@
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, SHADOW_ALPHAS, SCRIM_ALPHA, type ShadowRung, ctaNeedsBorder, ctaBorderRung, pageStopFor, } from './engine/cssRender';
3
+ export { brandCss, neutralCss, signalsCss, stopsToVars, toHex, stopHex, OFFSET_ALPHAS, SHADOW_ALPHAS, SCRIM_ALPHA, DISABLED_OPACITY, 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';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "okchroma",
3
- "version": "0.1.3",
3
+ "version": "0.1.5",
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": {
@@ -26,13 +26,13 @@
26
26
  theme, riding --link — no longer the brand's raw ink pair) */
27
27
 
28
28
  /* --border-default IS THE ACCESSIBILITY BORDER (owner 2026-07-29): a border that has
29
- to be there — inputs and other controls — so it rides mark-74, the stop that
29
+ to be there — inputs and other controls — so it rides wax-74, the stop that
30
30
  carries the WCAG 1.4.11 3:1 non-text require (highlight-8 pre-Stage-B). It sat on
31
- --neutral-highlight-9 until that stop was deleted; mark-74 is where the
31
+ --neutral-highlight-9 until that stop was deleted; wax-74 is where the
32
32
  requirement actually lives, and it is the one stop this round does not move.
33
33
  Decorative borders are --border-subtle (wash-89) and the per-family
34
34
  --*-border-default (wash-85). */
35
- --border-default: var(--neutral-mark-74);
35
+ --border-default: var(--neutral-wax-74);
36
36
  --border-subtle: var(--neutral-wash-89);
37
37
 
38
38
  /* Shadow transparencies (owner 2026-07-27) — pure black, mirrors the plugin's
@@ -43,6 +43,11 @@
43
43
  --shadow-04: rgba(0, 0, 0, 0.04);
44
44
  --shadow-08: rgba(0, 0, 0, 0.08);
45
45
  --shadow-12: rgba(0, 0, 0, 0.12);
46
+
47
+ /* Disabled opacity (owner 2026-08-29): disabled is a COMPONENT-LEVEL opacity —
48
+ colors stay the enabled ones and never swap. Mode-invariant; mirrors the JS
49
+ API's DISABLED_OPACITY constant 1:1. */
50
+ --disabled-opacity: 0.38;
46
51
  }
47
52
 
48
53
  [data-brand][data-theme="dark"] {
@@ -81,7 +86,7 @@
81
86
  --brand-border-subtle: var(--brand-wash-92);
82
87
  --brand-border-subtle-hover: var(--brand-wash-89);
83
88
  --brand-border-default: var(--brand-wash-85);
84
- --brand-border-default-hover: var(--brand-mark-74);
89
+ --brand-border-default-hover: var(--brand-wax-74);
85
90
  --brand-border-emphasis: var(--brand-stamp-fill);
86
91
  --brand-border-emphasis-hover: var(--brand-stamp-fill-hover);
87
92
 
@@ -118,7 +123,7 @@
118
123
  --brand-alt-border-subtle: var(--brand-alt-wash-92);
119
124
  --brand-alt-border-subtle-hover: var(--brand-alt-wash-89);
120
125
  --brand-alt-border-default: var(--brand-alt-wash-85);
121
- --brand-alt-border-default-hover: var(--brand-alt-mark-74);
126
+ --brand-alt-border-default-hover: var(--brand-alt-wax-74);
122
127
  --brand-alt-border-emphasis: var(--brand-alt-stamp-fill);
123
128
  --brand-alt-border-emphasis-hover: var(--brand-alt-stamp-fill-hover);
124
129
  }
@@ -154,7 +159,7 @@
154
159
  --critical-border-subtle: var(--critical-wash-92);
155
160
  --critical-border-subtle-hover: var(--critical-wash-89);
156
161
  --critical-border-default: var(--critical-wash-85);
157
- --critical-border-default-hover: var(--critical-mark-74);
162
+ --critical-border-default-hover: var(--critical-wax-74);
158
163
  --critical-border-emphasis: var(--critical-lead-53);
159
164
 
160
165
  --warning-fg: var(--warning-ink-30);
@@ -169,7 +174,7 @@
169
174
  --warning-border-subtle: var(--warning-wash-92);
170
175
  --warning-border-subtle-hover: var(--warning-wash-89);
171
176
  --warning-border-default: var(--warning-wash-85);
172
- --warning-border-default-hover: var(--warning-mark-74);
177
+ --warning-border-default-hover: var(--warning-wax-74);
173
178
  --warning-border-emphasis: var(--warning-lead-53);
174
179
 
175
180
  --positive-fg: var(--positive-ink-30);
@@ -184,7 +189,7 @@
184
189
  --positive-border-subtle: var(--positive-wash-92);
185
190
  --positive-border-subtle-hover: var(--positive-wash-89);
186
191
  --positive-border-default: var(--positive-wash-85);
187
- --positive-border-default-hover: var(--positive-mark-74);
192
+ --positive-border-default-hover: var(--positive-wax-74);
188
193
  --positive-border-emphasis: var(--positive-lead-53);
189
194
 
190
195
  --info-fg: var(--info-ink-30);
@@ -199,6 +204,6 @@
199
204
  --info-border-subtle: var(--info-wash-92);
200
205
  --info-border-subtle-hover: var(--info-wash-89);
201
206
  --info-border-default: var(--info-wash-85);
202
- --info-border-default-hover: var(--info-mark-74);
207
+ --info-border-default-hover: var(--info-wax-74);
203
208
  --info-border-emphasis: var(--info-lead-53);
204
209
  }