@aginies/tokens 0.1.0
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.
- package/README.md +47 -0
- package/dist/index.cjs +416 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +203 -0
- package/dist/index.d.ts +203 -0
- package/dist/index.js +365 -0
- package/dist/index.js.map +1 -0
- package/dist/legacy-bridge.css +147 -0
- package/dist/preset.cjs +239 -0
- package/dist/preset.cjs.map +1 -0
- package/dist/preset.d.cts +306 -0
- package/dist/preset.d.ts +306 -0
- package/dist/preset.js +214 -0
- package/dist/preset.js.map +1 -0
- package/dist/tokens.css +1002 -0
- package/dist/tokens.json +357 -0
- package/package.json +67 -0
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Aginies design tokens — the single source of truth.
|
|
3
|
+
*
|
|
4
|
+
* Values mirror the aginies.com design system ("Control Room", dark-first, one signal
|
|
5
|
+
* colour) and extend it with what an application UI needs on top of a marketing site:
|
|
6
|
+
* a third panel level, a strong border, status inks and soft washes, canvas tokens,
|
|
7
|
+
* a data palette for charts, a spacing scale and dense UI type sizes.
|
|
8
|
+
*
|
|
9
|
+
* Everything under `dist/` is generated from this file by `src/build.ts`.
|
|
10
|
+
*/
|
|
11
|
+
type ThemeName = 'dark' | 'light';
|
|
12
|
+
/** Theme-dependent colour values. Hex unless noted. */
|
|
13
|
+
interface Palette {
|
|
14
|
+
/** Page ground. */
|
|
15
|
+
bg: string;
|
|
16
|
+
/** Secondary ground: inputs, inside screens. */
|
|
17
|
+
'bg-2': string;
|
|
18
|
+
/** Card / panel. */
|
|
19
|
+
panel: string;
|
|
20
|
+
/** Raised panel: popovers, active rows. */
|
|
21
|
+
'panel-2': string;
|
|
22
|
+
/** Hover / pressed surface on a panel. */
|
|
23
|
+
'panel-3': string;
|
|
24
|
+
/** Divider. */
|
|
25
|
+
line: string;
|
|
26
|
+
/** Border. */
|
|
27
|
+
'line-2': string;
|
|
28
|
+
/** Strong border: focused or selected outlines that are not the signal colour. */
|
|
29
|
+
'line-3': string;
|
|
30
|
+
/** Primary text. */
|
|
31
|
+
text: string;
|
|
32
|
+
/** Secondary text. */
|
|
33
|
+
'text-2': string;
|
|
34
|
+
/** Labels, quiet text. */
|
|
35
|
+
mute: string;
|
|
36
|
+
/** The single accent. */
|
|
37
|
+
signal: string;
|
|
38
|
+
/** Signal hover / pressed. */
|
|
39
|
+
'signal-2': string;
|
|
40
|
+
/** Ink on a signal fill. */
|
|
41
|
+
'signal-ink': string;
|
|
42
|
+
/** Soft signal wash (rgba). */
|
|
43
|
+
'signal-soft': string;
|
|
44
|
+
ok: string;
|
|
45
|
+
'ok-ink': string;
|
|
46
|
+
'ok-soft': string;
|
|
47
|
+
warn: string;
|
|
48
|
+
'warn-ink': string;
|
|
49
|
+
'warn-soft': string;
|
|
50
|
+
bad: string;
|
|
51
|
+
'bad-ink': string;
|
|
52
|
+
'bad-soft': string;
|
|
53
|
+
/** The one large shadow: floating shells. */
|
|
54
|
+
shadow: string;
|
|
55
|
+
/** Popovers and menus. */
|
|
56
|
+
'shadow-sm': string;
|
|
57
|
+
/** Modal scrim (rgba). */
|
|
58
|
+
overlay: string;
|
|
59
|
+
}
|
|
60
|
+
declare const palettes: Record<ThemeName, Palette>;
|
|
61
|
+
/** Status colours that get a generated 50–950 ramp per theme. */
|
|
62
|
+
declare const rampedColors: readonly ["signal", "ok", "warn", "bad"];
|
|
63
|
+
type RampedColor = (typeof rampedColors)[number];
|
|
64
|
+
declare const rampSteps: readonly [50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 950];
|
|
65
|
+
type RampStep = (typeof rampSteps)[number];
|
|
66
|
+
/**
|
|
67
|
+
* Lightness targets (OKLCH L) and chroma factors for each ramp step. The hue is taken
|
|
68
|
+
* from the theme's base colour; chroma peaks around the middle and falls off at the ends
|
|
69
|
+
* so tints and shades stay in gamut and read as the same colour.
|
|
70
|
+
*/
|
|
71
|
+
declare const rampShape: Record<RampStep, {
|
|
72
|
+
l: number;
|
|
73
|
+
c: number;
|
|
74
|
+
}>;
|
|
75
|
+
/**
|
|
76
|
+
* Fixed neutral ramp, identical in both themes. It is the site's own set of surfaces and
|
|
77
|
+
* text colours laid out as a scale, so `neutral-*` utilities always land on a real token.
|
|
78
|
+
*/
|
|
79
|
+
declare const neutral: Record<RampStep, string>;
|
|
80
|
+
/** Chart / category palette. References semantic tokens so it follows the theme. */
|
|
81
|
+
declare const data: readonly ["signal", "ok", "warn", "bad", "text-2", "mute"];
|
|
82
|
+
/** Workflow canvas tokens, expressed as references to semantic tokens. */
|
|
83
|
+
declare const canvas: {
|
|
84
|
+
readonly 'canvas-bg': "bg";
|
|
85
|
+
readonly 'canvas-grid': "line";
|
|
86
|
+
readonly 'canvas-node': "panel";
|
|
87
|
+
readonly 'canvas-node-line': "line-2";
|
|
88
|
+
readonly edge: "line-2";
|
|
89
|
+
readonly 'edge-hover': "text-2";
|
|
90
|
+
readonly 'edge-active': "signal";
|
|
91
|
+
readonly execution: "ok";
|
|
92
|
+
};
|
|
93
|
+
declare const fonts: {
|
|
94
|
+
readonly display: "'Bricolage Grotesque Variable', 'Instrument Sans Variable', ui-sans-serif, system-ui, sans-serif";
|
|
95
|
+
readonly body: "'Instrument Sans Variable', ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Helvetica, Arial, sans-serif";
|
|
96
|
+
readonly mono: "'JetBrains Mono Variable', ui-monospace, SFMono-Regular, Menlo, Consolas, monospace";
|
|
97
|
+
};
|
|
98
|
+
declare const radius: {
|
|
99
|
+
readonly sm: "4px";
|
|
100
|
+
readonly md: "6px";
|
|
101
|
+
readonly lg: "10px";
|
|
102
|
+
readonly xl: "14px";
|
|
103
|
+
readonly '2xl': "20px";
|
|
104
|
+
readonly full: "9999px";
|
|
105
|
+
};
|
|
106
|
+
/** 4-point spacing scale. */
|
|
107
|
+
declare const space: {
|
|
108
|
+
readonly 1: "4px";
|
|
109
|
+
readonly 2: "8px";
|
|
110
|
+
readonly 3: "12px";
|
|
111
|
+
readonly 4: "16px";
|
|
112
|
+
readonly 5: "24px";
|
|
113
|
+
readonly 6: "32px";
|
|
114
|
+
readonly 7: "48px";
|
|
115
|
+
readonly 8: "64px";
|
|
116
|
+
};
|
|
117
|
+
interface TypeStyle {
|
|
118
|
+
size: string;
|
|
119
|
+
lineHeight: string;
|
|
120
|
+
letterSpacing?: string;
|
|
121
|
+
family?: keyof typeof fonts;
|
|
122
|
+
weight?: number;
|
|
123
|
+
transform?: 'uppercase';
|
|
124
|
+
/** Bricolage optical size axis. */
|
|
125
|
+
opsz?: number;
|
|
126
|
+
}
|
|
127
|
+
/** The type scale. Marketing sizes come from the site; `ui-*` are the dense app sizes. */
|
|
128
|
+
declare const type: Record<string, TypeStyle>;
|
|
129
|
+
declare const motion: {
|
|
130
|
+
readonly 'duration-fast': "150ms";
|
|
131
|
+
readonly 'duration-base': "200ms";
|
|
132
|
+
readonly 'duration-slow': "300ms";
|
|
133
|
+
readonly 'duration-enter': "600ms";
|
|
134
|
+
readonly 'ease-enter': "cubic-bezier(0.2, 0.7, 0.2, 1)";
|
|
135
|
+
};
|
|
136
|
+
declare const layout: {
|
|
137
|
+
readonly max: "1200px";
|
|
138
|
+
readonly gutter: "clamp(20px, 4vw, 40px)";
|
|
139
|
+
readonly 'section-y': "clamp(64px, 9vw, 128px)";
|
|
140
|
+
readonly 'section-y-tight': "clamp(40px, 6vw, 80px)";
|
|
141
|
+
};
|
|
142
|
+
declare const breakpoints: {
|
|
143
|
+
readonly sm: "640px";
|
|
144
|
+
readonly md: "768px";
|
|
145
|
+
readonly lg: "1024px";
|
|
146
|
+
readonly xl: "1280px";
|
|
147
|
+
readonly '2xl': "1536px";
|
|
148
|
+
/** Site nav collapses here. */
|
|
149
|
+
readonly nav: "1180px";
|
|
150
|
+
readonly wide: "1340px";
|
|
151
|
+
};
|
|
152
|
+
declare const z: {
|
|
153
|
+
readonly base: 0;
|
|
154
|
+
readonly raised: 10;
|
|
155
|
+
readonly sticky: 50;
|
|
156
|
+
readonly dropdown: 100;
|
|
157
|
+
readonly modal: 200;
|
|
158
|
+
readonly toast: 300;
|
|
159
|
+
};
|
|
160
|
+
declare const focus: {
|
|
161
|
+
/** Keyboard focus ring on any element. */
|
|
162
|
+
readonly ring: "2px solid var(--signal)";
|
|
163
|
+
readonly 'ring-offset': "3px";
|
|
164
|
+
/** Form controls: soft halo instead of an outline. */
|
|
165
|
+
readonly 'field-ring': "0 0 0 3px var(--signal-soft)";
|
|
166
|
+
};
|
|
167
|
+
|
|
168
|
+
type Ramp = Record<RampStep, string>;
|
|
169
|
+
/** Derives the 50–950 ramp for a base colour: hue from the base, lightness from the shape. */
|
|
170
|
+
declare function buildRamp(baseHex: string): Ramp;
|
|
171
|
+
|
|
172
|
+
/**
|
|
173
|
+
* Small colour utilities: sRGB ⇄ OKLCH, hex parsing, HSL triplets.
|
|
174
|
+
* Dependency-free so the token build can run under plain Node.
|
|
175
|
+
*/
|
|
176
|
+
interface Rgb {
|
|
177
|
+
r: number;
|
|
178
|
+
g: number;
|
|
179
|
+
b: number;
|
|
180
|
+
}
|
|
181
|
+
interface Oklch {
|
|
182
|
+
l: number;
|
|
183
|
+
c: number;
|
|
184
|
+
h: number;
|
|
185
|
+
}
|
|
186
|
+
declare function hexToRgb(hex: string): Rgb;
|
|
187
|
+
declare function rgbToHex({ r, g, b }: Rgb): string;
|
|
188
|
+
/** "95 200 255" — the channel form Tailwind's `<alpha-value>` colours need. */
|
|
189
|
+
declare function rgbChannels(hex: string): string;
|
|
190
|
+
/** "204 100% 68.6%" — the HSL triplet form the shadcn-era variables used. */
|
|
191
|
+
declare function hslTriplet(hex: string): string;
|
|
192
|
+
declare function rgbToOklch(rgb: Rgb): Oklch;
|
|
193
|
+
/**
|
|
194
|
+
* OKLCH → sRGB hex. If the colour is out of gamut the chroma is reduced until it fits,
|
|
195
|
+
* which keeps lightness and hue (what the eye keys on) intact.
|
|
196
|
+
*/
|
|
197
|
+
declare function oklchToHex(color: Oklch): string;
|
|
198
|
+
/** Relative luminance (WCAG). */
|
|
199
|
+
declare function luminance(hex: string): number;
|
|
200
|
+
/** WCAG contrast ratio between two hex colours. */
|
|
201
|
+
declare function contrast(a: string, b: string): number;
|
|
202
|
+
|
|
203
|
+
export { type Palette, type RampStep, type RampedColor, type ThemeName, type TypeStyle, breakpoints, buildRamp, canvas, contrast, data, focus, fonts, hexToRgb, hslTriplet, layout, luminance, motion, neutral, oklchToHex, palettes, radius, rampShape, rampSteps, rampedColors, rgbChannels, rgbToHex, rgbToOklch, space, type, z };
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Aginies design tokens — the single source of truth.
|
|
3
|
+
*
|
|
4
|
+
* Values mirror the aginies.com design system ("Control Room", dark-first, one signal
|
|
5
|
+
* colour) and extend it with what an application UI needs on top of a marketing site:
|
|
6
|
+
* a third panel level, a strong border, status inks and soft washes, canvas tokens,
|
|
7
|
+
* a data palette for charts, a spacing scale and dense UI type sizes.
|
|
8
|
+
*
|
|
9
|
+
* Everything under `dist/` is generated from this file by `src/build.ts`.
|
|
10
|
+
*/
|
|
11
|
+
type ThemeName = 'dark' | 'light';
|
|
12
|
+
/** Theme-dependent colour values. Hex unless noted. */
|
|
13
|
+
interface Palette {
|
|
14
|
+
/** Page ground. */
|
|
15
|
+
bg: string;
|
|
16
|
+
/** Secondary ground: inputs, inside screens. */
|
|
17
|
+
'bg-2': string;
|
|
18
|
+
/** Card / panel. */
|
|
19
|
+
panel: string;
|
|
20
|
+
/** Raised panel: popovers, active rows. */
|
|
21
|
+
'panel-2': string;
|
|
22
|
+
/** Hover / pressed surface on a panel. */
|
|
23
|
+
'panel-3': string;
|
|
24
|
+
/** Divider. */
|
|
25
|
+
line: string;
|
|
26
|
+
/** Border. */
|
|
27
|
+
'line-2': string;
|
|
28
|
+
/** Strong border: focused or selected outlines that are not the signal colour. */
|
|
29
|
+
'line-3': string;
|
|
30
|
+
/** Primary text. */
|
|
31
|
+
text: string;
|
|
32
|
+
/** Secondary text. */
|
|
33
|
+
'text-2': string;
|
|
34
|
+
/** Labels, quiet text. */
|
|
35
|
+
mute: string;
|
|
36
|
+
/** The single accent. */
|
|
37
|
+
signal: string;
|
|
38
|
+
/** Signal hover / pressed. */
|
|
39
|
+
'signal-2': string;
|
|
40
|
+
/** Ink on a signal fill. */
|
|
41
|
+
'signal-ink': string;
|
|
42
|
+
/** Soft signal wash (rgba). */
|
|
43
|
+
'signal-soft': string;
|
|
44
|
+
ok: string;
|
|
45
|
+
'ok-ink': string;
|
|
46
|
+
'ok-soft': string;
|
|
47
|
+
warn: string;
|
|
48
|
+
'warn-ink': string;
|
|
49
|
+
'warn-soft': string;
|
|
50
|
+
bad: string;
|
|
51
|
+
'bad-ink': string;
|
|
52
|
+
'bad-soft': string;
|
|
53
|
+
/** The one large shadow: floating shells. */
|
|
54
|
+
shadow: string;
|
|
55
|
+
/** Popovers and menus. */
|
|
56
|
+
'shadow-sm': string;
|
|
57
|
+
/** Modal scrim (rgba). */
|
|
58
|
+
overlay: string;
|
|
59
|
+
}
|
|
60
|
+
declare const palettes: Record<ThemeName, Palette>;
|
|
61
|
+
/** Status colours that get a generated 50–950 ramp per theme. */
|
|
62
|
+
declare const rampedColors: readonly ["signal", "ok", "warn", "bad"];
|
|
63
|
+
type RampedColor = (typeof rampedColors)[number];
|
|
64
|
+
declare const rampSteps: readonly [50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 950];
|
|
65
|
+
type RampStep = (typeof rampSteps)[number];
|
|
66
|
+
/**
|
|
67
|
+
* Lightness targets (OKLCH L) and chroma factors for each ramp step. The hue is taken
|
|
68
|
+
* from the theme's base colour; chroma peaks around the middle and falls off at the ends
|
|
69
|
+
* so tints and shades stay in gamut and read as the same colour.
|
|
70
|
+
*/
|
|
71
|
+
declare const rampShape: Record<RampStep, {
|
|
72
|
+
l: number;
|
|
73
|
+
c: number;
|
|
74
|
+
}>;
|
|
75
|
+
/**
|
|
76
|
+
* Fixed neutral ramp, identical in both themes. It is the site's own set of surfaces and
|
|
77
|
+
* text colours laid out as a scale, so `neutral-*` utilities always land on a real token.
|
|
78
|
+
*/
|
|
79
|
+
declare const neutral: Record<RampStep, string>;
|
|
80
|
+
/** Chart / category palette. References semantic tokens so it follows the theme. */
|
|
81
|
+
declare const data: readonly ["signal", "ok", "warn", "bad", "text-2", "mute"];
|
|
82
|
+
/** Workflow canvas tokens, expressed as references to semantic tokens. */
|
|
83
|
+
declare const canvas: {
|
|
84
|
+
readonly 'canvas-bg': "bg";
|
|
85
|
+
readonly 'canvas-grid': "line";
|
|
86
|
+
readonly 'canvas-node': "panel";
|
|
87
|
+
readonly 'canvas-node-line': "line-2";
|
|
88
|
+
readonly edge: "line-2";
|
|
89
|
+
readonly 'edge-hover': "text-2";
|
|
90
|
+
readonly 'edge-active': "signal";
|
|
91
|
+
readonly execution: "ok";
|
|
92
|
+
};
|
|
93
|
+
declare const fonts: {
|
|
94
|
+
readonly display: "'Bricolage Grotesque Variable', 'Instrument Sans Variable', ui-sans-serif, system-ui, sans-serif";
|
|
95
|
+
readonly body: "'Instrument Sans Variable', ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Helvetica, Arial, sans-serif";
|
|
96
|
+
readonly mono: "'JetBrains Mono Variable', ui-monospace, SFMono-Regular, Menlo, Consolas, monospace";
|
|
97
|
+
};
|
|
98
|
+
declare const radius: {
|
|
99
|
+
readonly sm: "4px";
|
|
100
|
+
readonly md: "6px";
|
|
101
|
+
readonly lg: "10px";
|
|
102
|
+
readonly xl: "14px";
|
|
103
|
+
readonly '2xl': "20px";
|
|
104
|
+
readonly full: "9999px";
|
|
105
|
+
};
|
|
106
|
+
/** 4-point spacing scale. */
|
|
107
|
+
declare const space: {
|
|
108
|
+
readonly 1: "4px";
|
|
109
|
+
readonly 2: "8px";
|
|
110
|
+
readonly 3: "12px";
|
|
111
|
+
readonly 4: "16px";
|
|
112
|
+
readonly 5: "24px";
|
|
113
|
+
readonly 6: "32px";
|
|
114
|
+
readonly 7: "48px";
|
|
115
|
+
readonly 8: "64px";
|
|
116
|
+
};
|
|
117
|
+
interface TypeStyle {
|
|
118
|
+
size: string;
|
|
119
|
+
lineHeight: string;
|
|
120
|
+
letterSpacing?: string;
|
|
121
|
+
family?: keyof typeof fonts;
|
|
122
|
+
weight?: number;
|
|
123
|
+
transform?: 'uppercase';
|
|
124
|
+
/** Bricolage optical size axis. */
|
|
125
|
+
opsz?: number;
|
|
126
|
+
}
|
|
127
|
+
/** The type scale. Marketing sizes come from the site; `ui-*` are the dense app sizes. */
|
|
128
|
+
declare const type: Record<string, TypeStyle>;
|
|
129
|
+
declare const motion: {
|
|
130
|
+
readonly 'duration-fast': "150ms";
|
|
131
|
+
readonly 'duration-base': "200ms";
|
|
132
|
+
readonly 'duration-slow': "300ms";
|
|
133
|
+
readonly 'duration-enter': "600ms";
|
|
134
|
+
readonly 'ease-enter': "cubic-bezier(0.2, 0.7, 0.2, 1)";
|
|
135
|
+
};
|
|
136
|
+
declare const layout: {
|
|
137
|
+
readonly max: "1200px";
|
|
138
|
+
readonly gutter: "clamp(20px, 4vw, 40px)";
|
|
139
|
+
readonly 'section-y': "clamp(64px, 9vw, 128px)";
|
|
140
|
+
readonly 'section-y-tight': "clamp(40px, 6vw, 80px)";
|
|
141
|
+
};
|
|
142
|
+
declare const breakpoints: {
|
|
143
|
+
readonly sm: "640px";
|
|
144
|
+
readonly md: "768px";
|
|
145
|
+
readonly lg: "1024px";
|
|
146
|
+
readonly xl: "1280px";
|
|
147
|
+
readonly '2xl': "1536px";
|
|
148
|
+
/** Site nav collapses here. */
|
|
149
|
+
readonly nav: "1180px";
|
|
150
|
+
readonly wide: "1340px";
|
|
151
|
+
};
|
|
152
|
+
declare const z: {
|
|
153
|
+
readonly base: 0;
|
|
154
|
+
readonly raised: 10;
|
|
155
|
+
readonly sticky: 50;
|
|
156
|
+
readonly dropdown: 100;
|
|
157
|
+
readonly modal: 200;
|
|
158
|
+
readonly toast: 300;
|
|
159
|
+
};
|
|
160
|
+
declare const focus: {
|
|
161
|
+
/** Keyboard focus ring on any element. */
|
|
162
|
+
readonly ring: "2px solid var(--signal)";
|
|
163
|
+
readonly 'ring-offset': "3px";
|
|
164
|
+
/** Form controls: soft halo instead of an outline. */
|
|
165
|
+
readonly 'field-ring': "0 0 0 3px var(--signal-soft)";
|
|
166
|
+
};
|
|
167
|
+
|
|
168
|
+
type Ramp = Record<RampStep, string>;
|
|
169
|
+
/** Derives the 50–950 ramp for a base colour: hue from the base, lightness from the shape. */
|
|
170
|
+
declare function buildRamp(baseHex: string): Ramp;
|
|
171
|
+
|
|
172
|
+
/**
|
|
173
|
+
* Small colour utilities: sRGB ⇄ OKLCH, hex parsing, HSL triplets.
|
|
174
|
+
* Dependency-free so the token build can run under plain Node.
|
|
175
|
+
*/
|
|
176
|
+
interface Rgb {
|
|
177
|
+
r: number;
|
|
178
|
+
g: number;
|
|
179
|
+
b: number;
|
|
180
|
+
}
|
|
181
|
+
interface Oklch {
|
|
182
|
+
l: number;
|
|
183
|
+
c: number;
|
|
184
|
+
h: number;
|
|
185
|
+
}
|
|
186
|
+
declare function hexToRgb(hex: string): Rgb;
|
|
187
|
+
declare function rgbToHex({ r, g, b }: Rgb): string;
|
|
188
|
+
/** "95 200 255" — the channel form Tailwind's `<alpha-value>` colours need. */
|
|
189
|
+
declare function rgbChannels(hex: string): string;
|
|
190
|
+
/** "204 100% 68.6%" — the HSL triplet form the shadcn-era variables used. */
|
|
191
|
+
declare function hslTriplet(hex: string): string;
|
|
192
|
+
declare function rgbToOklch(rgb: Rgb): Oklch;
|
|
193
|
+
/**
|
|
194
|
+
* OKLCH → sRGB hex. If the colour is out of gamut the chroma is reduced until it fits,
|
|
195
|
+
* which keeps lightness and hue (what the eye keys on) intact.
|
|
196
|
+
*/
|
|
197
|
+
declare function oklchToHex(color: Oklch): string;
|
|
198
|
+
/** Relative luminance (WCAG). */
|
|
199
|
+
declare function luminance(hex: string): number;
|
|
200
|
+
/** WCAG contrast ratio between two hex colours. */
|
|
201
|
+
declare function contrast(a: string, b: string): number;
|
|
202
|
+
|
|
203
|
+
export { type Palette, type RampStep, type RampedColor, type ThemeName, type TypeStyle, breakpoints, buildRamp, canvas, contrast, data, focus, fonts, hexToRgb, hslTriplet, layout, luminance, motion, neutral, oklchToHex, palettes, radius, rampShape, rampSteps, rampedColors, rgbChannels, rgbToHex, rgbToOklch, space, type, z };
|