@cladd-ui/react 0.8.1 → 0.10.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 (166) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/calendar/Calendar.d.ts +21 -0
  3. package/calendar/Calendar.d.ts.map +1 -0
  4. package/calendar/Calendar.js +158 -0
  5. package/calendar/Calendar.js.map +1 -0
  6. package/calendar/CalendarIcon.d.ts +2 -0
  7. package/calendar/CalendarIcon.d.ts.map +1 -0
  8. package/calendar/CalendarIcon.js +5 -0
  9. package/calendar/CalendarIcon.js.map +1 -0
  10. package/calendar/DatePicker.d.ts +91 -0
  11. package/calendar/DatePicker.d.ts.map +1 -0
  12. package/calendar/DatePicker.js +79 -0
  13. package/calendar/DatePicker.js.map +1 -0
  14. package/calendar/index.d.ts +4 -0
  15. package/calendar/index.d.ts.map +1 -0
  16. package/calendar/index.js +3 -0
  17. package/calendar/index.js.map +1 -0
  18. package/components/AccordionContext.d.ts +22 -0
  19. package/components/AccordionContext.d.ts.map +1 -0
  20. package/components/AccordionContext.js +14 -0
  21. package/components/AccordionContext.js.map +1 -0
  22. package/components/AccordionItem.d.ts +27 -0
  23. package/components/AccordionItem.d.ts.map +1 -0
  24. package/components/AccordionItem.js +36 -0
  25. package/components/AccordionItem.js.map +1 -0
  26. package/components/AccordionRoot.d.ts +47 -0
  27. package/components/AccordionRoot.d.ts.map +1 -0
  28. package/components/AccordionRoot.js +53 -0
  29. package/components/AccordionRoot.js.map +1 -0
  30. package/components/Button.js +2 -2
  31. package/components/Button.js.map +1 -1
  32. package/components/Checkbox.js +2 -2
  33. package/components/Checkbox.js.map +1 -1
  34. package/components/CollapsibleContext.d.ts +36 -0
  35. package/components/CollapsibleContext.d.ts.map +1 -0
  36. package/components/CollapsibleContext.js +24 -0
  37. package/components/CollapsibleContext.js.map +1 -0
  38. package/components/CollapsibleIndicator.d.ts +45 -0
  39. package/components/CollapsibleIndicator.d.ts.map +1 -0
  40. package/components/CollapsibleIndicator.js +34 -0
  41. package/components/CollapsibleIndicator.js.map +1 -0
  42. package/components/CollapsiblePanel.d.ts +35 -0
  43. package/components/CollapsiblePanel.d.ts.map +1 -0
  44. package/components/CollapsiblePanel.js +104 -0
  45. package/components/CollapsiblePanel.js.map +1 -0
  46. package/components/CollapsibleRoot.d.ts +35 -0
  47. package/components/CollapsibleRoot.d.ts.map +1 -0
  48. package/components/CollapsibleRoot.js +43 -0
  49. package/components/CollapsibleRoot.js.map +1 -0
  50. package/components/CollapsibleTrigger.d.ts +21 -0
  51. package/components/CollapsibleTrigger.d.ts.map +1 -0
  52. package/components/CollapsibleTrigger.js +36 -0
  53. package/components/CollapsibleTrigger.js.map +1 -0
  54. package/components/ColorEditor.d.ts +84 -0
  55. package/components/ColorEditor.d.ts.map +1 -0
  56. package/components/ColorEditor.js +517 -0
  57. package/components/ColorEditor.js.map +1 -0
  58. package/components/ColorPicker.d.ts +127 -0
  59. package/components/ColorPicker.d.ts.map +1 -0
  60. package/components/ColorPicker.js +136 -0
  61. package/components/ColorPicker.js.map +1 -0
  62. package/components/{FocusableLayer.d.ts → FocusRing.d.ts} +2 -2
  63. package/components/FocusRing.d.ts.map +1 -0
  64. package/components/{FocusableLayer.js → FocusRing.js} +2 -2
  65. package/components/FocusRing.js.map +1 -0
  66. package/components/Input.d.ts +2 -0
  67. package/components/Input.d.ts.map +1 -1
  68. package/components/Input.js +4 -4
  69. package/components/Input.js.map +1 -1
  70. package/components/Link.js +2 -2
  71. package/components/Link.js.map +1 -1
  72. package/components/NumberScrubber.d.ts +2 -0
  73. package/components/NumberScrubber.d.ts.map +1 -1
  74. package/components/NumberScrubber.js +3 -3
  75. package/components/NumberScrubber.js.map +1 -1
  76. package/components/OTPField.d.ts.map +1 -1
  77. package/components/OTPField.js +2 -2
  78. package/components/OTPField.js.map +1 -1
  79. package/components/Popover.d.ts.map +1 -1
  80. package/components/Popover.js +8 -2
  81. package/components/Popover.js.map +1 -1
  82. package/components/Radio.js +2 -2
  83. package/components/Radio.js.map +1 -1
  84. package/components/Segmented.js +2 -2
  85. package/components/Segmented.js.map +1 -1
  86. package/components/Select.d.ts +2 -0
  87. package/components/Select.d.ts.map +1 -1
  88. package/components/Select.js +5 -5
  89. package/components/Select.js.map +1 -1
  90. package/components/Slider.d.ts +34 -3
  91. package/components/Slider.d.ts.map +1 -1
  92. package/components/Slider.js +27 -14
  93. package/components/Slider.js.map +1 -1
  94. package/components/Switch.js +2 -2
  95. package/components/Switch.js.map +1 -1
  96. package/components/Tab.d.ts +19 -0
  97. package/components/Tab.d.ts.map +1 -0
  98. package/components/Tab.js +22 -0
  99. package/components/Tab.js.map +1 -0
  100. package/components/TabPanel.d.ts +31 -0
  101. package/components/TabPanel.d.ts.map +1 -0
  102. package/components/TabPanel.js +19 -0
  103. package/components/TabPanel.js.map +1 -0
  104. package/components/Tabs.d.ts +33 -0
  105. package/components/Tabs.d.ts.map +1 -0
  106. package/components/Tabs.js +36 -0
  107. package/components/Tabs.js.map +1 -0
  108. package/components/TabsContext.d.ts +25 -0
  109. package/components/TabsContext.d.ts.map +1 -0
  110. package/components/TabsContext.js +18 -0
  111. package/components/TabsContext.js.map +1 -0
  112. package/components/TabsList.d.ts +12 -0
  113. package/components/TabsList.d.ts.map +1 -0
  114. package/components/TabsList.js +52 -0
  115. package/components/TabsList.js.map +1 -0
  116. package/components/Textarea.d.ts +2 -0
  117. package/components/Textarea.d.ts.map +1 -1
  118. package/components/Textarea.js +3 -3
  119. package/components/Textarea.js.map +1 -1
  120. package/components/ThemeContext.d.ts +26 -0
  121. package/components/ThemeContext.d.ts.map +1 -1
  122. package/components/ThemeContext.js.map +1 -1
  123. package/components/ToggleButton.d.ts +44 -0
  124. package/components/ToggleButton.d.ts.map +1 -0
  125. package/components/ToggleButton.js +66 -0
  126. package/components/ToggleButton.js.map +1 -0
  127. package/components/ToggleGroup.d.ts +50 -0
  128. package/components/ToggleGroup.d.ts.map +1 -0
  129. package/components/ToggleGroup.js +57 -0
  130. package/components/ToggleGroup.js.map +1 -0
  131. package/components/ToggleGroupContext.d.ts +31 -0
  132. package/components/ToggleGroupContext.d.ts.map +1 -0
  133. package/components/ToggleGroupContext.js +14 -0
  134. package/components/ToggleGroupContext.js.map +1 -0
  135. package/components/icons/ArrowLeftIcon.d.ts +2 -0
  136. package/components/icons/ArrowLeftIcon.d.ts.map +1 -0
  137. package/components/icons/ArrowLeftIcon.js +5 -0
  138. package/components/icons/ArrowLeftIcon.js.map +1 -0
  139. package/components/icons/ChevronLeftIcon.d.ts +2 -0
  140. package/components/icons/ChevronLeftIcon.d.ts.map +1 -0
  141. package/components/icons/ChevronLeftIcon.js +5 -0
  142. package/components/icons/ChevronLeftIcon.js.map +1 -0
  143. package/components/icons/FlipIcon.d.ts +2 -0
  144. package/components/icons/FlipIcon.d.ts.map +1 -0
  145. package/components/icons/FlipIcon.js +5 -0
  146. package/components/icons/FlipIcon.js.map +1 -0
  147. package/components/icons/GradientColorIcon.d.ts +2 -0
  148. package/components/icons/GradientColorIcon.d.ts.map +1 -0
  149. package/components/icons/GradientColorIcon.js +5 -0
  150. package/components/icons/GradientColorIcon.js.map +1 -0
  151. package/components/icons/SolidColorIcon.d.ts +2 -0
  152. package/components/icons/SolidColorIcon.d.ts.map +1 -0
  153. package/components/icons/SolidColorIcon.js +5 -0
  154. package/components/icons/SolidColorIcon.js.map +1 -0
  155. package/index.d.ts +20 -1
  156. package/index.d.ts.map +1 -1
  157. package/index.js +18 -0
  158. package/index.js.map +1 -1
  159. package/package.json +11 -1
  160. package/shared/color.d.ts +122 -0
  161. package/shared/color.d.ts.map +1 -0
  162. package/shared/color.js +319 -0
  163. package/shared/color.js.map +1 -0
  164. package/styles/colors.css +4 -4
  165. package/components/FocusableLayer.d.ts.map +0 -1
  166. package/components/FocusableLayer.js.map +0 -1
@@ -0,0 +1,122 @@
1
+ /**
2
+ * Color conversion + parsing for `ColorEditor` / `ColorPicker`.
3
+ *
4
+ * Internally everything is HSV(A) (`Hsva`) so hue and saturation survive at the
5
+ * extremes (black / white) where a hex round-trip would otherwise drop them.
6
+ * Conversion to the public {@link ColorValue} (hex / rgb / hsl / hsb / css)
7
+ * happens only on the way out.
8
+ */
9
+ export type RGB = {
10
+ r: number;
11
+ g: number;
12
+ b: number;
13
+ a: number;
14
+ };
15
+ export type HSL = {
16
+ h: number;
17
+ s: number;
18
+ l: number;
19
+ a: number;
20
+ };
21
+ export type HSB = {
22
+ h: number;
23
+ s: number;
24
+ b: number;
25
+ a: number;
26
+ };
27
+ /** Emitted color. Every channel set is self-contained (carries its own alpha). */
28
+ export type ColorValue = {
29
+ /** `#rrggbb`, or `#rrggbbaa` when alpha < 1. */
30
+ hex: string;
31
+ /** r,g,b 0–255 · a 0–1. */
32
+ rgb: RGB;
33
+ /** h 0–360 · s,l 0–100 · a 0–1. */
34
+ hsl: HSL;
35
+ /** h 0–360 · s,b 0–100 · a 0–1. */
36
+ hsb: HSB;
37
+ /** Ready for `style={{ background }}` — `#rrggbb` when opaque, `rgba(...)` otherwise. */
38
+ css: string;
39
+ };
40
+ /** Accepted by `value` / `defaultValue` — a CSS color string or any one channel set (alpha optional). */
41
+ export type ColorInput = string | {
42
+ r: number;
43
+ g: number;
44
+ b: number;
45
+ a?: number;
46
+ } | {
47
+ h: number;
48
+ s: number;
49
+ l: number;
50
+ a?: number;
51
+ } | {
52
+ h: number;
53
+ s: number;
54
+ b: number;
55
+ a?: number;
56
+ };
57
+ export type GradientStop = {
58
+ color: ColorValue;
59
+ position: number;
60
+ };
61
+ export type GradientValue = {
62
+ type: 'linear';
63
+ /** Degrees, 0–360. */
64
+ angle: number;
65
+ /** Two or more stops, sorted by `position` (0–100). */
66
+ stops: GradientStop[];
67
+ /** Ready for `style={{ background }}` — `linear-gradient(...)`. */
68
+ css: string;
69
+ };
70
+ /** Solid value when gradient is enabled (tagged so it discriminates against {@link GradientValue}). */
71
+ export type SolidValue = ColorValue & {
72
+ type: 'solid';
73
+ };
74
+ /** Union emitted by `ColorEditor` / `ColorPicker` when `gradient` is enabled. */
75
+ export type ColorEditorValue = SolidValue | GradientValue;
76
+ export type GradientStopInput = {
77
+ color: ColorInput;
78
+ position: number;
79
+ };
80
+ export type GradientInput = string | {
81
+ type?: 'linear';
82
+ angle?: number;
83
+ stops: GradientStopInput[];
84
+ };
85
+ /** Internal working color. h 0–360 · s,v 0–100 · a 0–1. */
86
+ export type Hsva = {
87
+ h: number;
88
+ s: number;
89
+ v: number;
90
+ a: number;
91
+ };
92
+ export declare const BLACK: Hsva;
93
+ export declare const hsvToRgb: ({ h, s, v, a }: Hsva) => RGB;
94
+ export declare const rgbToHsv: ({ r, g, b, a }: RGB) => Hsva;
95
+ export declare const hsvToHsl: ({ h, s, v, a }: Hsva) => HSL;
96
+ export declare const hslToHsv: (h: number, s: number, l: number, a: number) => Hsva;
97
+ export declare const buildColorValue: (hsva: Hsva) => ColorValue;
98
+ /** Parse any {@link ColorInput} into the internal `Hsva`. Falls back to black. */
99
+ export declare const parseColor: (input: ColorInput | undefined | null) => Hsva;
100
+ export declare const isGradientInput: (input: ColorInput | GradientInput | undefined | null) => input is GradientInput;
101
+ type ParsedGradient = {
102
+ angle: number;
103
+ stops: {
104
+ hsva: Hsva;
105
+ position: number;
106
+ }[];
107
+ };
108
+ export declare const parseGradient: (input: GradientInput) => ParsedGradient | null;
109
+ export declare const gradientCss: (angle: number, stops: GradientStop[]) => string;
110
+ /**
111
+ * Two-tone checkerboard background for surfaces that can show transparency
112
+ * (swatches, alpha tracks). Spread into a `style` prop: `style={CHECKER}`.
113
+ */
114
+ export declare const CHECKER: {
115
+ background: string;
116
+ };
117
+ /** Horizontal preview gradient for the stop bar (ignores `angle`, like Sketch). */
118
+ export declare const gradientPreviewCss: (stops: GradientStop[]) => string;
119
+ /** Stable signature used to detect *external* controlled-value changes. */
120
+ export declare const colorSignature: (hsva: Hsva) => string;
121
+ export {};
122
+ //# sourceMappingURL=color.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"color.d.ts","sourceRoot":"","sources":["../../../src/shared/color.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,319 @@
1
+ /**
2
+ * Color conversion + parsing for `ColorEditor` / `ColorPicker`.
3
+ *
4
+ * Internally everything is HSV(A) (`Hsva`) so hue and saturation survive at the
5
+ * extremes (black / white) where a hex round-trip would otherwise drop them.
6
+ * Conversion to the public {@link ColorValue} (hex / rgb / hsl / hsb / css)
7
+ * happens only on the way out.
8
+ */
9
+ export const BLACK = { h: 0, s: 0, v: 0, a: 1 };
10
+ const clamp = (n, min, max) => Math.min(max, Math.max(min, n));
11
+ const round = (n, precision = 0) => {
12
+ const f = 10 ** precision;
13
+ return Math.round(n * f) / f;
14
+ };
15
+ const hex2 = (n) => clamp(Math.round(n), 0, 255).toString(16).padStart(2, '0');
16
+ // ── conversions ────────────────────────────────────────────────────────────
17
+ export const hsvToRgb = ({ h, s, v, a }) => {
18
+ const S = s / 100;
19
+ const V = v / 100;
20
+ const c = V * S;
21
+ const hh = (((h % 360) + 360) % 360) / 60;
22
+ const x = c * (1 - Math.abs((hh % 2) - 1));
23
+ let r = 0;
24
+ let g = 0;
25
+ let b = 0;
26
+ if (hh < 1)
27
+ [r, g, b] = [c, x, 0];
28
+ else if (hh < 2)
29
+ [r, g, b] = [x, c, 0];
30
+ else if (hh < 3)
31
+ [r, g, b] = [0, c, x];
32
+ else if (hh < 4)
33
+ [r, g, b] = [0, x, c];
34
+ else if (hh < 5)
35
+ [r, g, b] = [x, 0, c];
36
+ else
37
+ [r, g, b] = [c, 0, x];
38
+ const m = V - c;
39
+ return {
40
+ r: Math.round((r + m) * 255),
41
+ g: Math.round((g + m) * 255),
42
+ b: Math.round((b + m) * 255),
43
+ a,
44
+ };
45
+ };
46
+ export const rgbToHsv = ({ r, g, b, a }) => {
47
+ const R = r / 255;
48
+ const G = g / 255;
49
+ const B = b / 255;
50
+ const max = Math.max(R, G, B);
51
+ const min = Math.min(R, G, B);
52
+ const d = max - min;
53
+ let h = 0;
54
+ if (d !== 0) {
55
+ if (max === R)
56
+ h = ((G - B) / d) % 6;
57
+ else if (max === G)
58
+ h = (B - R) / d + 2;
59
+ else
60
+ h = (R - G) / d + 4;
61
+ h *= 60;
62
+ if (h < 0)
63
+ h += 360;
64
+ }
65
+ return {
66
+ h,
67
+ s: max === 0 ? 0 : (d / max) * 100,
68
+ v: max * 100,
69
+ a,
70
+ };
71
+ };
72
+ export const hsvToHsl = ({ h, s, v, a }) => {
73
+ const S = s / 100;
74
+ const V = v / 100;
75
+ const l = V * (1 - S / 2);
76
+ const sl = l === 0 || l === 1 ? 0 : (V - l) / Math.min(l, 1 - l);
77
+ return { h: round(h), s: round(sl * 100), l: round(l * 100), a };
78
+ };
79
+ export const hslToHsv = (h, s, l, a) => {
80
+ const S = s / 100;
81
+ const L = l / 100;
82
+ const v = L + S * Math.min(L, 1 - L);
83
+ const sv = v === 0 ? 0 : 2 * (1 - L / v);
84
+ return { h, s: sv * 100, v: v * 100, a };
85
+ };
86
+ // ── building the public value ───────────────────────────────────────────────
87
+ const rgbToCss = ({ r, g, b, a }) => a >= 1 ? `#${hex2(r)}${hex2(g)}${hex2(b)}` : `rgba(${r}, ${g}, ${b}, ${a})`;
88
+ const rgbToHex = ({ r, g, b, a }) => a >= 1
89
+ ? `#${hex2(r)}${hex2(g)}${hex2(b)}`
90
+ : `#${hex2(r)}${hex2(g)}${hex2(b)}${hex2(a * 255)}`;
91
+ export const buildColorValue = (hsva) => {
92
+ const a = round(hsva.a, 2);
93
+ const norm = { ...hsva, a };
94
+ const rgb = hsvToRgb(norm);
95
+ return {
96
+ hex: rgbToHex(rgb),
97
+ rgb,
98
+ hsl: hsvToHsl(norm),
99
+ hsb: { h: round(norm.h), s: round(norm.s), b: round(norm.v), a },
100
+ css: rgbToCss(rgb),
101
+ };
102
+ };
103
+ // ── parsing ──────────────────────────────────────────────────────────────────
104
+ const NAMED = {
105
+ transparent: '#00000000',
106
+ black: '#000000',
107
+ white: '#ffffff',
108
+ gray: '#808080',
109
+ grey: '#808080',
110
+ silver: '#c0c0c0',
111
+ red: '#ff0000',
112
+ maroon: '#800000',
113
+ orange: '#ffa500',
114
+ yellow: '#ffff00',
115
+ olive: '#808000',
116
+ lime: '#00ff00',
117
+ green: '#008000',
118
+ aqua: '#00ffff',
119
+ cyan: '#00ffff',
120
+ teal: '#008080',
121
+ blue: '#0000ff',
122
+ navy: '#000080',
123
+ fuchsia: '#ff00ff',
124
+ magenta: '#ff00ff',
125
+ purple: '#800080',
126
+ pink: '#ffc0cb',
127
+ };
128
+ const parseHex = (hex) => {
129
+ let h = hex.slice(1);
130
+ if (h.length === 3 || h.length === 4) {
131
+ h = h
132
+ .split('')
133
+ .map((c) => c + c)
134
+ .join('');
135
+ }
136
+ if (h.length !== 6 && h.length !== 8)
137
+ return null;
138
+ const r = parseInt(h.slice(0, 2), 16);
139
+ const g = parseInt(h.slice(2, 4), 16);
140
+ const b = parseInt(h.slice(4, 6), 16);
141
+ const a = h.length === 8 ? parseInt(h.slice(6, 8), 16) / 255 : 1;
142
+ if ([r, g, b].some(Number.isNaN))
143
+ return null;
144
+ return rgbToHsv({ r, g, b, a });
145
+ };
146
+ const channels = (str) => (str.match(/-?[\d.]+%?/g) ?? []).map((token) => token.endsWith('%') ? parseFloat(token) / 100 : parseFloat(token));
147
+ const parseCssString = (input) => {
148
+ const str = input.trim().toLowerCase();
149
+ if (str in NAMED)
150
+ return parseHex(NAMED[str]);
151
+ if (str.startsWith('#'))
152
+ return parseHex(str);
153
+ if (str.startsWith('rgb')) {
154
+ const [r, g, b, a] = channels(str);
155
+ if ([r, g, b].some((n) => n === undefined || Number.isNaN(n)))
156
+ return null;
157
+ // `channels` divides any `%` value by 100, so percent channels land in 0–1.
158
+ const to255 = (n) => (n <= 1 && /%/.test(str) ? n * 255 : n);
159
+ return rgbToHsv({
160
+ r: clamp(to255(r), 0, 255),
161
+ g: clamp(to255(g), 0, 255),
162
+ b: clamp(to255(b), 0, 255),
163
+ a: a === undefined ? 1 : clamp(a, 0, 1),
164
+ });
165
+ }
166
+ if (str.startsWith('hsl')) {
167
+ const nums = str.match(/-?[\d.]+/g)?.map(Number) ?? [];
168
+ const [h, s, l, a] = nums;
169
+ if ([h, s, l].some((n) => n === undefined || Number.isNaN(n)))
170
+ return null;
171
+ return hslToHsv(h, s, l, a === undefined ? 1 : clamp(a > 1 ? a / 100 : a, 0, 1));
172
+ }
173
+ return null;
174
+ };
175
+ const isHslInput = (o) => 'l' in o;
176
+ const isHsbInput = (o) => 'h' in o && 'b' in o;
177
+ /** Parse any {@link ColorInput} into the internal `Hsva`. Falls back to black. */
178
+ export const parseColor = (input) => {
179
+ if (input == null)
180
+ return { ...BLACK };
181
+ if (typeof input === 'string')
182
+ return parseCssString(input) ?? { ...BLACK };
183
+ if ('r' in input) {
184
+ return rgbToHsv({
185
+ r: clamp(input.r, 0, 255),
186
+ g: clamp(input.g, 0, 255),
187
+ b: clamp(input.b, 0, 255),
188
+ a: clamp(input.a ?? 1, 0, 1),
189
+ });
190
+ }
191
+ if (isHslInput(input)) {
192
+ return hslToHsv(input.h, input.s, input.l, clamp(input.a ?? 1, 0, 1));
193
+ }
194
+ if (isHsbInput(input)) {
195
+ return {
196
+ h: input.h,
197
+ s: clamp(input.s, 0, 100),
198
+ v: clamp(input.b, 0, 100),
199
+ a: clamp(input.a ?? 1, 0, 1),
200
+ };
201
+ }
202
+ return { ...BLACK };
203
+ };
204
+ // ── gradients ─────────────────────────────────────────────────────────────────
205
+ export const isGradientInput = (input) => {
206
+ if (input == null)
207
+ return false;
208
+ if (typeof input === 'string')
209
+ return input.trim().startsWith('linear-gradient');
210
+ return 'stops' in input;
211
+ };
212
+ const SIDE_ANGLES = {
213
+ 'to top': 0,
214
+ 'to right': 90,
215
+ 'to bottom': 180,
216
+ 'to left': 270,
217
+ 'to top right': 45,
218
+ 'to right top': 45,
219
+ 'to bottom right': 135,
220
+ 'to right bottom': 135,
221
+ 'to bottom left': 225,
222
+ 'to left bottom': 225,
223
+ 'to top left': 315,
224
+ 'to left top': 315,
225
+ };
226
+ /** Split on top-level commas, ignoring commas inside `rgb(...)` / `hsl(...)`. */
227
+ const splitTopLevel = (str) => {
228
+ const out = [];
229
+ let depth = 0;
230
+ let token = '';
231
+ for (const ch of str) {
232
+ if (ch === '(')
233
+ depth++;
234
+ if (ch === ')')
235
+ depth--;
236
+ if (ch === ',' && depth === 0) {
237
+ out.push(token.trim());
238
+ token = '';
239
+ }
240
+ else {
241
+ token += ch;
242
+ }
243
+ }
244
+ if (token.trim())
245
+ out.push(token.trim());
246
+ return out;
247
+ };
248
+ const parseGradientString = (input) => {
249
+ const open = input.indexOf('(');
250
+ const close = input.lastIndexOf(')');
251
+ if (open === -1 || close === -1)
252
+ return null;
253
+ const parts = splitTopLevel(input.slice(open + 1, close));
254
+ if (!parts.length)
255
+ return null;
256
+ let angle = 90;
257
+ let start = 0;
258
+ const first = parts[0].toLowerCase();
259
+ if (first.endsWith('deg')) {
260
+ angle = parseFloat(first);
261
+ start = 1;
262
+ }
263
+ else if (first.startsWith('to ')) {
264
+ angle = SIDE_ANGLES[first] ?? 90;
265
+ start = 1;
266
+ }
267
+ const stops = [];
268
+ for (const part of parts.slice(start)) {
269
+ const pos = part.match(/(-?[\d.]+)%\s*$/);
270
+ const colorStr = pos ? part.slice(0, pos.index).trim() : part;
271
+ const hsva = parseCssString(colorStr);
272
+ if (!hsva)
273
+ continue;
274
+ stops.push({ hsva, position: pos ? parseFloat(pos[1]) : NaN });
275
+ }
276
+ if (stops.length < 2)
277
+ return null;
278
+ const last = stops.length - 1;
279
+ stops.forEach((stop, i) => {
280
+ if (Number.isNaN(stop.position)) {
281
+ stop.position = (i / last) * 100;
282
+ }
283
+ });
284
+ return { angle, stops };
285
+ };
286
+ export const parseGradient = (input) => {
287
+ if (typeof input === 'string')
288
+ return parseGradientString(input);
289
+ if (!input.stops?.length)
290
+ return null;
291
+ const last = input.stops.length - 1;
292
+ return {
293
+ angle: input.angle ?? 90,
294
+ stops: input.stops.map((stop, i) => ({
295
+ hsva: parseColor(stop.color),
296
+ position: stop.position ?? (i / last) * 100,
297
+ })),
298
+ };
299
+ };
300
+ export const gradientCss = (angle, stops) => `linear-gradient(${angle}deg, ${stops
301
+ .map((stop) => `${stop.color.css} ${stop.position}%`)
302
+ .join(', ')})`;
303
+ /**
304
+ * Two-tone checkerboard background for surfaces that can show transparency
305
+ * (swatches, alpha tracks). Spread into a `style` prop: `style={CHECKER}`.
306
+ */
307
+ export const CHECKER = {
308
+ background: 'repeating-conic-gradient(#9a9a9a 0% 25%, #6f6f6f 0% 50%) 50% / 12px 12px',
309
+ };
310
+ /** Horizontal preview gradient for the stop bar (ignores `angle`, like Sketch). */
311
+ export const gradientPreviewCss = (stops) => `linear-gradient(to right, ${stops
312
+ .map((stop) => `${stop.color.css} ${stop.position}%`)
313
+ .join(', ')})`;
314
+ /** Stable signature used to detect *external* controlled-value changes. */
315
+ export const colorSignature = (hsva) => {
316
+ const { r, g, b, a } = hsvToRgb({ ...hsva, a: round(hsva.a, 2) });
317
+ return `${r},${g},${b},${round(a, 2)}`;
318
+ };
319
+ //# sourceMappingURL=color.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"color.js","sourceRoot":"","sources":["../../../src/shared/color.ts"],"names":[],"mappings":"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"}
package/styles/colors.css CHANGED
@@ -139,10 +139,10 @@
139
139
  --cladd-on-primary: oklch(from var(--cladd-theme) 0.2 0.05 h);
140
140
  --cladd-surface: oklch(from var(--cladd-theme) 0.23 0.027 h);
141
141
  --cladd-surface-cut: oklch(from var(--cladd-theme) 0.19 0.027 h);
142
- --cladd-fg: oklch(from var(--cladd-theme) 0.9 0.03 h);
143
- --cladd-fg-soft: oklch(from var(--cladd-theme) 0.65 0.03 h);
144
- --cladd-fg-softer: oklch(from var(--cladd-theme) 0.5 0.03 h);
145
- --cladd-fg-softest: oklch(from var(--cladd-theme) 0.4 0.03 h);
142
+ --cladd-fg: oklch(from var(--cladd-theme) 0.9 0.04 h);
143
+ --cladd-fg-soft: oklch(from var(--cladd-theme) 0.65 0.04 h);
144
+ --cladd-fg-softer: oklch(from var(--cladd-theme) 0.5 0.04 h);
145
+ --cladd-fg-softest: oklch(from var(--cladd-theme) 0.4 0.04 h);
146
146
  --cladd-surface-white: oklch(from var(--cladd-theme) 0.92 0.05 h);
147
147
  --cladd-surface-black: oklch(from var(--cladd-theme) 0.08 0.02 h);
148
148
  --cladd-bg-outline: oklch(from var(--cladd-theme) 0.25 0.02 h);
@@ -1 +0,0 @@
1
- {"version":3,"file":"FocusableLayer.d.ts","sourceRoot":"","sources":["../../../src/components/FocusableLayer.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEjC,eAAO,MAAM,cAAc,GAAI,OAAO;IACpC,oGAAoG;IACpG,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wDAAwD;IACxD,KAAK,CAAC,EAAE,KAAK,CAAC;IACd;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,4CAkCA,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"FocusableLayer.js","sourceRoot":"","sources":["../../../src/components/FocusableLayer.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAGlC,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAwB9B,EAAE,EAAE;IACH,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,GAAG,WAAW,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;IAC/D,MAAM,YAAY,GAChB;QACE,IAAI,EAAE,qFAAqF;QAC3F,MAAM,EACJ,yFAAyF;QAC3F,KAAK,EACH,+FAA+F;QACjG,QAAQ,EACN,6HAA6H;QAC/H,QAAQ,EACN,qHAAqH;QACvH,MAAM,EACJ,iHAAiH;QACnH,KAAK,EACH,+GAA+G;QACjH,MAAM,EACJ,iHAAiH;KACpH,CAAC,KAAqC,CAAC,IAAI,EAAE,CAAC;IACjD,OAAO,CACL,4BACY,YAAY,EACtB,SAAS,EAAE,EAAE,CACX,2GAA2G,EAC3G,eAAe,KAAK,EAAE,EAEtB,KAAK,IAAI,uBAAuB,EAChC,CAAC,KAAK,IAAI,YAAY,EACtB,SAAS,CACV,GACD,CACH,CAAC;AACJ,CAAC,CAAC"}