@gradient-ui/gradient-engine 0.5.0 → 1.0.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.
Files changed (89) hide show
  1. package/README.md +19 -5
  2. package/dist/animation.cjs +13 -13
  3. package/dist/animation.mjs +36 -36
  4. package/dist/core.cjs +1 -1
  5. package/dist/core.mjs +17 -14
  6. package/dist/css-B3xGfmW1.js +17 -0
  7. package/dist/css-CREh0Awz.cjs +1 -0
  8. package/dist/design-tokens.cjs +1 -0
  9. package/dist/design-tokens.mjs +8 -0
  10. package/dist/designTokens-Bw-HZ1f1.js +116 -0
  11. package/dist/designTokens-DsIk5RSi.cjs +1 -0
  12. package/dist/effects.cjs +137 -32
  13. package/dist/effects.mjs +225 -108
  14. package/dist/formatters.cjs +1 -1
  15. package/dist/formatters.mjs +33 -33
  16. package/dist/index.cjs +1 -1
  17. package/dist/index.mjs +63 -43
  18. package/dist/material.cjs +9 -1
  19. package/dist/material.mjs +236 -4
  20. package/dist/presets-DA-6KYJh.cjs +316 -0
  21. package/dist/presets-Du6aTLtD.js +4025 -0
  22. package/dist/svg-B2CaHCLv.js +118 -0
  23. package/dist/svg-BtMrj3fP.cjs +32 -0
  24. package/dist/types/animation/css.d.ts +2 -2
  25. package/dist/types/animation/index.d.ts +1 -1
  26. package/dist/types/color.d.ts +1 -0
  27. package/dist/types/colorSeeds.d.ts +22 -0
  28. package/dist/types/colorSystem.d.ts +20 -0
  29. package/dist/types/core.d.ts +7 -7
  30. package/dist/types/designTokens.d.ts +24 -0
  31. package/dist/types/effects/index.d.ts +2 -2
  32. package/dist/types/effects/morph.d.ts +4 -1
  33. package/dist/types/effects/shadow.d.ts +1 -1
  34. package/dist/types/formatters/canvas.d.ts +1 -1
  35. package/dist/types/formatters/css.d.ts +1 -1
  36. package/dist/types/formatters/index.d.ts +3 -3
  37. package/dist/types/formatters/svg.d.ts +1 -1
  38. package/dist/types/index.d.ts +11 -7
  39. package/dist/types/material.d.ts +1 -1
  40. package/dist/types/model.d.ts +3 -3
  41. package/dist/types/palette.d.ts +8 -1
  42. package/dist/types/presets.d.ts +1 -1
  43. package/dist/types/recipes.d.ts +12 -12
  44. package/dist/types/scheme.d.ts +3 -0
  45. package/dist/types/tokens.d.ts +11 -3
  46. package/dist/types/types.d.ts +11 -1
  47. package/dist/types/utils.d.ts +1 -1
  48. package/dist/types-B0eCazk8.js +22 -0
  49. package/dist/types-BFkUlDkW.cjs +1 -0
  50. package/dist/types-cjs/animation/css.d.cts +12 -0
  51. package/dist/types-cjs/animation/index.d.cts +1 -0
  52. package/dist/types-cjs/color.d.cts +11 -0
  53. package/dist/types-cjs/colorMath.d.cts +3 -0
  54. package/dist/types-cjs/colorSeeds.d.cts +22 -0
  55. package/dist/types-cjs/colorSystem.d.cts +20 -0
  56. package/dist/types-cjs/constants.d.cts +3 -0
  57. package/dist/types-cjs/core.d.cts +9 -0
  58. package/dist/types-cjs/designTokens.d.cts +24 -0
  59. package/dist/types-cjs/effects/index.d.cts +2 -0
  60. package/dist/types-cjs/effects/morph.d.cts +8 -0
  61. package/dist/types-cjs/effects/shadow.d.cts +3 -0
  62. package/dist/types-cjs/formatters/canvas.d.cts +2 -0
  63. package/dist/types-cjs/formatters/css.d.cts +3 -0
  64. package/dist/types-cjs/formatters/index.d.cts +3 -0
  65. package/dist/types-cjs/formatters/svg.d.cts +5 -0
  66. package/dist/types-cjs/index.d.cts +11 -0
  67. package/dist/types-cjs/material.d.cts +1 -0
  68. package/dist/types-cjs/model.d.cts +5 -0
  69. package/dist/types-cjs/package.json +3 -0
  70. package/dist/types-cjs/palette.d.cts +13 -0
  71. package/dist/types-cjs/presets.d.cts +239 -0
  72. package/dist/types-cjs/recipes.d.cts +14 -0
  73. package/dist/types-cjs/scheme.d.cts +3 -0
  74. package/dist/types-cjs/tokens.d.cts +107 -0
  75. package/dist/types-cjs/types.d.cts +127 -0
  76. package/dist/types-cjs/utils.d.cts +10 -0
  77. package/dist/utils-Bry9BTmj.cjs +1 -0
  78. package/dist/utils-VaqPefmS.js +76 -0
  79. package/package.json +64 -20
  80. package/dist/css-CaOuUhfh.js +0 -17
  81. package/dist/css-YuAJQW13.cjs +0 -1
  82. package/dist/presets-55krt4L_.js +0 -354
  83. package/dist/presets-UIJJyagu.cjs +0 -1
  84. package/dist/svg-BVcl24Cf.cjs +0 -32
  85. package/dist/svg-CZThYPKf.js +0 -118
  86. package/dist/tokens-DMGI7_df.cjs +0 -9
  87. package/dist/tokens-OfSofVKl.js +0 -204
  88. package/dist/utils-6iJ6IpZZ.cjs +0 -1
  89. package/dist/utils-B_VQDGMy.js +0 -67
@@ -0,0 +1,24 @@
1
+ import { type ColorInput } from './color.cjs';
2
+ import { type ColorSystem, type ThemeColorExtensions } from './colorSystem.cjs';
3
+ import { type CreatedGradientTokens, type GradientTokenOptions } from './tokens.cjs';
4
+ import { type ThemeMode, type ThemeTokens } from './scheme.cjs';
5
+ export declare const DEFAULT_SEED = "#4e51ff";
6
+ export interface DesignTokenOptions {
7
+ seed?: ColorInput;
8
+ mode?: ThemeMode;
9
+ colors?: ThemeColorExtensions;
10
+ gradientTokens?: GradientTokenOptions;
11
+ }
12
+ export interface CreatedDesignTokens {
13
+ seed: string;
14
+ mode: ThemeMode;
15
+ tokens: {
16
+ theme: ThemeTokens;
17
+ colors: ThemeTokens;
18
+ gradients: ThemeTokens;
19
+ };
20
+ colorSystem: ColorSystem;
21
+ gradientTokens: CreatedGradientTokens;
22
+ }
23
+ export declare const normalizeDesignTokenSeed: (seed?: ColorInput) => string;
24
+ export declare const createDesignTokens: (options?: DesignTokenOptions) => CreatedDesignTokens;
@@ -0,0 +1,2 @@
1
+ export { createGradientMorphBlobs, isGradientMorphBlendMode, resolveGradientMorphBlendMode, toGradientMorphCSS, toGradientMorphFilter, toGradientMorphFilterMarkup, toGradientMorphMarkup } from './morph.cjs';
2
+ export { toGradientBoxShadow, toGradientDropShadow } from './shadow.cjs';
@@ -0,0 +1,8 @@
1
+ import type { GradientModel, GradientMorphBlob, GradientMorphBlendMode, GradientMorphMarkupOptions, GradientMorphOptions } from '../types.cjs';
2
+ export declare const isGradientMorphBlendMode: (value: string) => value is GradientMorphBlendMode;
3
+ export declare const resolveGradientMorphBlendMode: (value: string | undefined) => GradientMorphBlendMode;
4
+ export declare const createGradientMorphBlobs: (model: GradientModel, options?: GradientMorphOptions) => GradientMorphBlob[];
5
+ export declare const toGradientMorphFilter: (options?: GradientMorphOptions) => string;
6
+ export declare const toGradientMorphFilterMarkup: (options?: GradientMorphOptions) => string;
7
+ export declare const toGradientMorphCSS: (model: GradientModel, options?: GradientMorphOptions) => string;
8
+ export declare const toGradientMorphMarkup: (model: GradientModel, options?: GradientMorphMarkupOptions) => string;
@@ -0,0 +1,3 @@
1
+ import type { GradientModel, GradientShadowOptions } from '../types.cjs';
2
+ export declare const toGradientBoxShadow: (model: GradientModel, options?: GradientShadowOptions) => string;
3
+ export declare const toGradientDropShadow: (model: GradientModel, options?: GradientShadowOptions) => string;
@@ -0,0 +1,2 @@
1
+ import type { CanvasGradientOptions, GradientModel } from '../types.cjs';
2
+ export declare const toCanvasGradient: (context: CanvasRenderingContext2D, model: GradientModel, options?: CanvasGradientOptions) => CanvasGradient;
@@ -0,0 +1,3 @@
1
+ import type { GradientDirection, GradientModel } from '../types.cjs';
2
+ export declare const createLinearGradient: (stops: readonly string[], direction?: GradientDirection) => string;
3
+ export declare const toCssGradient: (model: GradientModel) => string;
@@ -0,0 +1,3 @@
1
+ export { createLinearGradient, toCssGradient } from './css.cjs';
2
+ export { toCanvasGradient } from './canvas.cjs';
3
+ export { toSvgGradient, toSvgGradientMarkup, toSvgPathAnimationMarkup, toSvgSourceAnimationMarkup } from './svg.cjs';
@@ -0,0 +1,5 @@
1
+ import type { GradientModel, SvgGradientOptions, SvgPathAnimationOptions, SvgSourceAnimationOptions } from '../types.cjs';
2
+ export declare const toSvgGradient: (model: GradientModel, options?: SvgGradientOptions) => string;
3
+ export declare const toSvgGradientMarkup: (model: GradientModel, options?: SvgGradientOptions) => string;
4
+ export declare const toSvgSourceAnimationMarkup: (sourceSvg: string, model: GradientModel, options?: SvgSourceAnimationOptions) => string;
5
+ export declare const toSvgPathAnimationMarkup: (model: GradientModel, options?: SvgPathAnimationOptions) => string;
@@ -0,0 +1,11 @@
1
+ export * from './core.cjs';
2
+ export * from './color.cjs';
3
+ export * from './colorSeeds.cjs';
4
+ export * from './colorSystem.cjs';
5
+ export * from './palette.cjs';
6
+ export * from './scheme.cjs';
7
+ export * from './formatters/index.cjs';
8
+ export * from './effects/index.cjs';
9
+ export { toGradientAnimationCSS } from './animation/index.cjs';
10
+ export * from './material.cjs';
11
+ export * from './designTokens.cjs';
@@ -0,0 +1 @@
1
+ export { createGradientMaterial, createGradientPreset, createGradientTokens, clearGradientMaterialCache, getGradientMaterialCacheStats, setGradientMaterialCacheLimit, type CreatedGradientMaterial, type CreatedGradientPreset, type CreatedGradientTokens, type GradientAnimationTokenEntry, type GradientEffectTokenEntry, type GradientMaterialOptions, type GradientTokenEntry, type GradientTokenOptions, type GradientTokenRecipe } from './tokens.cjs';
@@ -0,0 +1,5 @@
1
+ import { type ColorPalette } from './palette.cjs';
2
+ import type { GradientModel, GradientOptions } from './types.cjs';
3
+ import type { ColorInput } from './color.cjs';
4
+ export declare const createGradientModel: (palette: ColorPalette, options?: GradientOptions) => GradientModel;
5
+ export declare const createGradientModelFromColor: (color: ColorInput, options?: GradientOptions) => GradientModel;
@@ -0,0 +1,3 @@
1
+ {
2
+ "type": "commonjs"
3
+ }
@@ -0,0 +1,13 @@
1
+ import { type ColorInput } from './color.cjs';
2
+ export declare const COLOR_SHADES: readonly [50, 100, 200, 300, 400, 500, 600, 700, 800, 900];
3
+ export type ColorShade = (typeof COLOR_SHADES)[number];
4
+ export type ColorPalette = Record<ColorShade, string>;
5
+ export interface ColorPalettePair {
6
+ colors: ColorPalette;
7
+ onColors: ColorPalette;
8
+ }
9
+ export declare const SHADE_TONES: Record<ColorShade, number>;
10
+ export declare const ON_SHADE_TONES: Record<ColorShade, number>;
11
+ export declare const createPalette: (seed: ColorInput) => ColorPalette;
12
+ export declare const createOnPalette: (seed: ColorInput) => ColorPalette;
13
+ export declare const createPalettePair: (seed: ColorInput) => ColorPalettePair;
@@ -0,0 +1,239 @@
1
+ import type { GradientAnimationOptions, GradientAnimationPreset, GradientOptions, GradientRecipe, GradientShadowOptions, GradientType } from './types.cjs';
2
+ export interface GradientPreset {
3
+ label: string;
4
+ description?: string;
5
+ gradient: Omit<GradientOptions, 'shade' | 'colors'> & {
6
+ recipe: GradientRecipe;
7
+ type?: GradientType;
8
+ };
9
+ shadow?: GradientShadowOptions;
10
+ dropShadow?: GradientShadowOptions;
11
+ animation?: Omit<GradientAnimationOptions, 'name' | 'selector'> & {
12
+ preset: GradientAnimationPreset;
13
+ };
14
+ }
15
+ export type GradientPresetRegistry = Record<string, GradientPreset>;
16
+ export declare const defineGradientPreset: <T extends GradientPreset>(preset: T) => T;
17
+ export declare const defineGradientPresetRegistry: <T extends GradientPresetRegistry>(presets: T) => T;
18
+ export declare const gradientPresets: {
19
+ materialBorder: {
20
+ label: string;
21
+ description: string;
22
+ gradient: {
23
+ recipe: "glare";
24
+ type: "linear";
25
+ direction: number;
26
+ };
27
+ shadow: {
28
+ layers: number;
29
+ opacity: number;
30
+ blur: number;
31
+ y: number;
32
+ spread: number;
33
+ };
34
+ dropShadow: {
35
+ layers: number;
36
+ opacity: number;
37
+ blur: number;
38
+ y: number;
39
+ };
40
+ animation: {
41
+ preset: "shift";
42
+ duration: number;
43
+ easing: string;
44
+ };
45
+ };
46
+ materialAction: {
47
+ label: string;
48
+ description: string;
49
+ gradient: {
50
+ recipe: "glare";
51
+ type: "linear";
52
+ direction: number;
53
+ };
54
+ shadow: {
55
+ layers: number;
56
+ opacity: number;
57
+ blur: number;
58
+ y: number;
59
+ spread: number;
60
+ };
61
+ dropShadow: {
62
+ layers: number;
63
+ opacity: number;
64
+ blur: number;
65
+ y: number;
66
+ };
67
+ animation: {
68
+ preset: "shift";
69
+ duration: number;
70
+ easing: string;
71
+ };
72
+ };
73
+ materialSurface: {
74
+ label: string;
75
+ description: string;
76
+ gradient: {
77
+ recipe: "monochrome";
78
+ type: "linear";
79
+ direction: number;
80
+ };
81
+ shadow: {
82
+ layers: number;
83
+ opacity: number;
84
+ blur: number;
85
+ y: number;
86
+ spread: number;
87
+ };
88
+ dropShadow: {
89
+ layers: number;
90
+ opacity: number;
91
+ blur: number;
92
+ y: number;
93
+ };
94
+ animation: {
95
+ preset: "pulse";
96
+ duration: number;
97
+ easing: string;
98
+ };
99
+ };
100
+ brandGlare: {
101
+ label: string;
102
+ description: string;
103
+ gradient: {
104
+ recipe: "glare";
105
+ type: "linear";
106
+ direction: number;
107
+ };
108
+ shadow: {
109
+ layers: number;
110
+ opacity: number;
111
+ blur: number;
112
+ y: number;
113
+ spread: number;
114
+ };
115
+ dropShadow: {
116
+ layers: number;
117
+ opacity: number;
118
+ blur: number;
119
+ y: number;
120
+ };
121
+ animation: {
122
+ preset: "shift";
123
+ duration: number;
124
+ easing: string;
125
+ };
126
+ };
127
+ softMono: {
128
+ label: string;
129
+ description: string;
130
+ gradient: {
131
+ recipe: "monochrome";
132
+ type: "linear";
133
+ direction: number;
134
+ };
135
+ shadow: {
136
+ layers: number;
137
+ opacity: number;
138
+ blur: number;
139
+ y: number;
140
+ spread: number;
141
+ };
142
+ dropShadow: {
143
+ layers: number;
144
+ opacity: number;
145
+ blur: number;
146
+ y: number;
147
+ };
148
+ animation: {
149
+ preset: "pulse";
150
+ duration: number;
151
+ easing: string;
152
+ };
153
+ };
154
+ neonDuo: {
155
+ label: string;
156
+ description: string;
157
+ gradient: {
158
+ recipe: "duotone";
159
+ type: "linear";
160
+ direction: number;
161
+ };
162
+ shadow: {
163
+ layers: number;
164
+ opacity: number;
165
+ blur: number;
166
+ y: number;
167
+ spread: number;
168
+ };
169
+ dropShadow: {
170
+ layers: number;
171
+ opacity: number;
172
+ blur: number;
173
+ y: number;
174
+ };
175
+ animation: {
176
+ preset: "shift";
177
+ duration: number;
178
+ easing: string;
179
+ };
180
+ };
181
+ orbitalConic: {
182
+ label: string;
183
+ description: string;
184
+ gradient: {
185
+ recipe: "triadic";
186
+ type: "conic";
187
+ direction: number;
188
+ position: string;
189
+ };
190
+ shadow: {
191
+ layers: number;
192
+ opacity: number;
193
+ blur: number;
194
+ y: number;
195
+ spread: number;
196
+ };
197
+ dropShadow: {
198
+ layers: number;
199
+ opacity: number;
200
+ blur: number;
201
+ y: number;
202
+ };
203
+ animation: {
204
+ preset: "rotate";
205
+ duration: number;
206
+ };
207
+ };
208
+ auroraRadial: {
209
+ label: string;
210
+ description: string;
211
+ gradient: {
212
+ recipe: "analogous";
213
+ type: "radial";
214
+ direction: number;
215
+ position: string;
216
+ shape: "circle";
217
+ };
218
+ shadow: {
219
+ layers: number;
220
+ opacity: number;
221
+ blur: number;
222
+ y: number;
223
+ spread: number;
224
+ };
225
+ dropShadow: {
226
+ layers: number;
227
+ opacity: number;
228
+ blur: number;
229
+ y: number;
230
+ };
231
+ animation: {
232
+ preset: "hue-rotate";
233
+ duration: number;
234
+ easing: string;
235
+ };
236
+ };
237
+ };
238
+ export type GradientPresetName = keyof typeof gradientPresets;
239
+ export declare const getGradientPreset: (name: GradientPresetName | string, registry?: GradientPresetRegistry) => GradientPreset;
@@ -0,0 +1,14 @@
1
+ import type { GradientRecipe } from './types.cjs';
2
+ export declare const gradientRecipes: {
3
+ glare: (base: string) => import("./types.cjs").GradientStop[];
4
+ monochrome: (base: string) => import("./types.cjs").GradientStop[];
5
+ complementary: (base: string) => import("./types.cjs").GradientStop[];
6
+ 'split-complementary': (base: string) => import("./types.cjs").GradientStop[];
7
+ analogous: (base: string) => import("./types.cjs").GradientStop[];
8
+ triadic: (base: string) => import("./types.cjs").GradientStop[];
9
+ tetradic: (base: string) => import("./types.cjs").GradientStop[];
10
+ rectangle: (base: string) => import("./types.cjs").GradientStop[];
11
+ square: (base: string) => import("./types.cjs").GradientStop[];
12
+ duotone: (base: string, colors: readonly string[] | undefined) => import("./types.cjs").GradientStop[];
13
+ };
14
+ export declare const createRecipeStops: (base: string, recipe: GradientRecipe, colors?: readonly string[]) => import("./types.cjs").GradientStop[];
@@ -0,0 +1,3 @@
1
+ export type ThemeMode = 'light' | 'dark';
2
+ export type ThemeTokens = Record<string, string>;
3
+ export declare const createSemanticTokens: (seed: string, mode: ThemeMode) => ThemeTokens;
@@ -0,0 +1,107 @@
1
+ import type { ColorInput } from './color.cjs';
2
+ import { type GradientPresetName, type GradientPresetRegistry } from './presets.cjs';
3
+ import type { GradientAnimationOptions, GradientMorphBlendMode, GradientMorphBlob, GradientMorphOptions, GradientModel, GradientOptions, GradientRecipe, GradientShadowOptions, GradientStop } from './types.cjs';
4
+ export type GradientTokenRecipe = GradientRecipe | GradientPresetName | 'mesh' | 'soft';
5
+ export interface GradientTokenEntry {
6
+ value: string;
7
+ cssVar: string;
8
+ model?: GradientModel;
9
+ layers?: string[];
10
+ stops?: GradientStop[];
11
+ svg?: string;
12
+ }
13
+ export interface GradientEffectTokenEntry {
14
+ boxShadow?: {
15
+ value: string;
16
+ cssVar: string;
17
+ };
18
+ dropShadow?: {
19
+ value: string;
20
+ cssVar: string;
21
+ };
22
+ morph?: {
23
+ value: string;
24
+ cssVar: string;
25
+ svg: string;
26
+ blendMode: GradientMorphBlendMode;
27
+ blendModeCssVar: string;
28
+ };
29
+ }
30
+ export interface GradientAnimationTokenEntry {
31
+ name: string;
32
+ value: string;
33
+ css: string;
34
+ keyframes: string;
35
+ cssVar: string;
36
+ }
37
+ export interface CreatedGradientPreset {
38
+ name: string;
39
+ label: string;
40
+ description?: string;
41
+ gradient: GradientTokenEntry;
42
+ effects?: GradientEffectTokenEntry;
43
+ animation?: GradientAnimationTokenEntry;
44
+ cssVars: Record<string, string>;
45
+ cssText: string;
46
+ keyframes: string;
47
+ }
48
+ export interface GradientTokenOptions {
49
+ recipes?: readonly GradientTokenRecipe[];
50
+ effects?: boolean;
51
+ animations?: boolean;
52
+ morph?: GradientMorphOptions;
53
+ registry?: GradientPresetRegistry;
54
+ prefix?: string;
55
+ }
56
+ export interface CreatedGradientTokens {
57
+ gradients: Record<string, GradientTokenEntry>;
58
+ effects: Record<string, GradientEffectTokenEntry>;
59
+ animations: Record<string, GradientAnimationTokenEntry>;
60
+ cssVars: Record<string, string>;
61
+ cssText: string;
62
+ keyframes: string;
63
+ }
64
+ export interface GradientMaterialOptions extends Omit<GradientOptions, 'recipe'> {
65
+ animation?: GradientAnimationOptions;
66
+ animations?: boolean;
67
+ className?: string;
68
+ dropShadow?: GradientShadowOptions;
69
+ effects?: boolean;
70
+ id?: string;
71
+ morph?: GradientMorphOptions;
72
+ prefix?: string;
73
+ recipe?: GradientTokenRecipe;
74
+ registry?: GradientPresetRegistry;
75
+ shadow?: GradientShadowOptions;
76
+ }
77
+ export interface CreatedGradientMaterial {
78
+ id: string;
79
+ className: string;
80
+ style: Record<string, string>;
81
+ cssVars: Record<string, string>;
82
+ cssText: string;
83
+ keyframes: string;
84
+ preset: CreatedGradientPreset;
85
+ gradient: GradientTokenEntry;
86
+ effects?: GradientEffectTokenEntry;
87
+ animation?: GradientAnimationTokenEntry;
88
+ morphBlobs?: GradientMorphBlob[];
89
+ }
90
+ export declare const clearGradientMaterialCache: () => void;
91
+ export declare const setGradientMaterialCacheLimit: (limit: number) => void;
92
+ export declare const getGradientMaterialCacheStats: () => {
93
+ limit: number;
94
+ size: number;
95
+ };
96
+ export declare const createGradientPreset: (seed: ColorInput, recipe?: GradientTokenRecipe, options?: GradientOptions & {
97
+ animation?: GradientAnimationOptions;
98
+ dropShadow?: GradientShadowOptions;
99
+ effects?: boolean;
100
+ morph?: GradientMorphOptions;
101
+ prefix?: string;
102
+ registry?: GradientPresetRegistry;
103
+ shadow?: GradientShadowOptions;
104
+ animations?: boolean;
105
+ }) => CreatedGradientPreset;
106
+ export declare const createGradientTokens: (seed: ColorInput, options?: GradientTokenOptions) => CreatedGradientTokens;
107
+ export declare const createGradientMaterial: (seed: ColorInput, options?: GradientMaterialOptions) => CreatedGradientMaterial;
@@ -0,0 +1,127 @@
1
+ import type { ColorShade } from './palette.cjs';
2
+ export type GradientDirection = number | string;
3
+ export type GradientType = 'linear' | 'radial' | 'conic';
4
+ export type GradientRecipe = 'glare' | 'monochrome' | 'complementary' | 'split-complementary' | 'analogous' | 'triadic' | 'tetradic' | 'rectangle' | 'square' | 'duotone';
5
+ export type GradientShape = 'circle' | 'ellipse';
6
+ export type GradientAnimationPreset = 'shift' | 'pulse' | 'rotate' | 'hue-rotate';
7
+ export interface GradientStop {
8
+ color: string;
9
+ position: number;
10
+ opacity?: number;
11
+ }
12
+ export interface GradientModel {
13
+ type: GradientType;
14
+ stops: GradientStop[];
15
+ direction: GradientDirection;
16
+ shape?: GradientShape;
17
+ position?: string;
18
+ size?: string;
19
+ }
20
+ export interface GradientOptions {
21
+ direction?: GradientDirection;
22
+ recipe?: GradientRecipe;
23
+ shade?: ColorShade;
24
+ type?: GradientType;
25
+ shape?: GradientShape;
26
+ position?: string;
27
+ size?: string;
28
+ colors?: readonly string[];
29
+ }
30
+ export interface GradientShadowOptions {
31
+ x?: number | string;
32
+ y?: number | string;
33
+ blur?: number | string;
34
+ spread?: number | string;
35
+ opacity?: number;
36
+ layers?: number;
37
+ }
38
+ export type GradientMorphPreset = 'soft' | 'liquid' | 'ripple';
39
+ export declare const GRADIENT_MORPH_BLEND_MODES: readonly ["normal", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "hue", "saturation", "color", "luminosity"];
40
+ export type GradientMorphBlendMode = (typeof GRADIENT_MORPH_BLEND_MODES)[number];
41
+ export declare const DEFAULT_GRADIENT_MORPH_BLEND_MODE = "hard-light";
42
+ export interface GradientMorphOptions {
43
+ id?: string;
44
+ preset?: GradientMorphPreset;
45
+ blendMode?: GradientMorphBlendMode;
46
+ blobCount?: number;
47
+ blobOpacity?: number;
48
+ blur?: number;
49
+ contrast?: number;
50
+ duration?: number | string;
51
+ opacity?: number;
52
+ scale?: number;
53
+ selector?: string;
54
+ }
55
+ export interface GradientMorphMarkupOptions extends GradientMorphOptions {
56
+ width?: number;
57
+ height?: number;
58
+ rx?: number;
59
+ }
60
+ export interface GradientMorphBlob {
61
+ animationName: string;
62
+ blur: number;
63
+ color: string;
64
+ delay: number;
65
+ dx: number;
66
+ dx2: number;
67
+ dy: number;
68
+ dy2: number;
69
+ duration: number | string;
70
+ opacity: number;
71
+ originX: string;
72
+ originY: string;
73
+ rotateMid: number;
74
+ rotateTo: number;
75
+ scaleMid: number;
76
+ scaleTo: number;
77
+ size: number;
78
+ x: number;
79
+ y: number;
80
+ }
81
+ export interface SvgGradientOptions {
82
+ id?: string;
83
+ width?: number;
84
+ height?: number;
85
+ rx?: number;
86
+ x1?: string;
87
+ x2?: string;
88
+ y1?: string;
89
+ y2?: string;
90
+ cx?: string;
91
+ cy?: string;
92
+ r?: string;
93
+ }
94
+ export interface SvgPathAnimationOptions extends SvgGradientOptions {
95
+ path?: string;
96
+ strokeWidth?: number;
97
+ linecap?: 'butt' | 'round' | 'square';
98
+ duration?: number | string;
99
+ repeatCount?: number | string;
100
+ backgroundStroke?: string;
101
+ activeStroke?: string;
102
+ backgroundOpacity?: number;
103
+ }
104
+ export interface SvgSourceAnimationOptions extends SvgPathAnimationOptions {
105
+ normalizeStrokeWidth?: boolean;
106
+ sourceOpacity?: number;
107
+ viewBoxPadding?: number | false;
108
+ strokeWidthBase?: number;
109
+ }
110
+ export interface CanvasGradientOptions {
111
+ x0?: number;
112
+ y0?: number;
113
+ x1?: number;
114
+ y1?: number;
115
+ r0?: number;
116
+ r1?: number;
117
+ startAngle?: number;
118
+ width?: number;
119
+ height?: number;
120
+ }
121
+ export interface GradientAnimationOptions {
122
+ name?: string;
123
+ preset?: GradientAnimationPreset;
124
+ duration?: number | string;
125
+ easing?: string;
126
+ selector?: string;
127
+ }
@@ -0,0 +1,10 @@
1
+ import type { GradientDirection, GradientStop } from './types.cjs';
2
+ export declare const normalizeDirection: (direction?: GradientDirection) => string;
3
+ export declare const toCssLength: (value: number | string) => string;
4
+ export declare const addCssLength: (value: number | string, offset: number) => string;
5
+ export declare const toCssDuration: (value: number | string) => string;
6
+ export declare const clamp: (value: number, min?: number, max?: number) => number;
7
+ export declare const toCssColor: (color: string, opacity?: number) => string;
8
+ export declare const formatStop: ({ color, opacity, position }: GradientStop) => string;
9
+ export declare const createStop: (color: string, position: number, opacity?: number) => GradientStop;
10
+ export declare const getConicStops: (stops: readonly GradientStop[]) => readonly GradientStop[];
@@ -0,0 +1 @@
1
+ "use strict";const clamp$1=(value,min=0,max=1)=>Math.min(max,Math.max(min,value)),toLinear=value=>{const channel=value/255;return channel<=.04045?channel/12.92:((channel+.055)/1.055)**2.4},parseHex=value=>{const hex=value.slice(1),normalized=hex.length===3||hex.length===4?hex.slice(0,3).split("").map(character=>character.repeat(2)).join(""):hex.slice(0,6);return normalized.length!==6||!/^[\da-f]{6}$/i.test(normalized)?null:{r:parseInt(normalized.slice(0,2),16),g:parseInt(normalized.slice(2,4),16),b:parseInt(normalized.slice(4,6),16)}},parseRgb=value=>{const match=value.match(/^rgba?\(\s*([\d.]+)[,\s]+([\d.]+)[,\s]+([\d.]+)(?:\s*[,/]\s*[\d.]+%?)?\s*\)$/i);return match?{r:clamp$1(Number(match[1]),0,255),g:clamp$1(Number(match[2]),0,255),b:clamp$1(Number(match[3]),0,255)}:null},parseColor=input=>{if(typeof input=="number"){const value2=input&16777215;return{r:value2>>16&255,g:value2>>8&255,b:value2&255}}const value=input.trim();return value.startsWith("#")?parseHex(value):value.toLowerCase().startsWith("rgb")?parseRgb(value):null},rgbToHex=({r,g,b})=>`#${[r,g,b].map(channel=>Math.round(channel).toString(16).padStart(2,"0")).join("")}`,rgbToChannels=({r,g,b})=>`${Math.round(r)}, ${Math.round(g)}, ${Math.round(b)}`,colorToHex=(input,fallback)=>{const color=parseColor(input)??parseColor(fallback);if(!color)throw new Error(`Invalid fallback color: ${fallback}`);return rgbToHex(color)},relativeLuminance=color=>.2126*toLinear(color.r)+.7152*toLinear(color.g)+.0722*toLinear(color.b),getContrastingColor=color=>{const parsed=parseColor(color);if(!parsed)return"#ffffff";const luminance=relativeLuminance(parsed),whiteContrast=1.05/(luminance+.05),darkContrast=(luminance+.05)/.055;return whiteContrast>=darkContrast?"#ffffff":"#0d0d12"};const DEFAULT_GRADIENT_POSITION="center",DEFAULT_GRADIENT_SIZE="farthest-corner",normalizeDirection=(direction=135)=>typeof direction=="number"?`${direction}deg`:direction,toCssLength=value=>typeof value=="number"?`${value}px`:value,toCssDuration=value=>typeof value=="number"?`${value}ms`:value,clamp=(value,min=0,max=1)=>Math.min(max,Math.max(min,value)),toCssColor=(color,opacity)=>{if(opacity===void 0)return color;const parsed=parseColor(color);return parsed?`rgb(${rgbToChannels(parsed).replace(/,/g,"")} / ${clamp(opacity)})`:color},formatStop=({color,opacity,position})=>`${toCssColor(color,opacity)} ${position}%`,createStop=(color,position,opacity)=>({color,position}),getConicStops=stops=>{if(stops.length<=1)return stops;const firstHalf=stops.map(stop=>({...stop,position:stop.position/2})),secondHalf=[...stops].reverse().map(stop=>({...stop,position:100-stop.position/2}));return[...firstHalf,...secondHalf]};exports.DEFAULT_GRADIENT_DIRECTION=135;exports.DEFAULT_GRADIENT_POSITION=DEFAULT_GRADIENT_POSITION;exports.DEFAULT_GRADIENT_SIZE=DEFAULT_GRADIENT_SIZE;exports.clamp=clamp;exports.colorToHex=colorToHex;exports.createStop=createStop;exports.formatStop=formatStop;exports.getConicStops=getConicStops;exports.getContrastingColor=getContrastingColor;exports.normalizeDirection=normalizeDirection;exports.parseColor=parseColor;exports.rgbToChannels=rgbToChannels;exports.rgbToHex=rgbToHex;exports.toCssColor=toCssColor;exports.toCssDuration=toCssDuration;exports.toCssLength=toCssLength;