haze-ui 1.22.0 → 1.24.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 (78) hide show
  1. package/README.md +7 -0
  2. package/dist/components/BottomSheet/BottomSheet.js +33 -16
  3. package/dist/components/Collapsible/Collapsible.js +34 -27
  4. package/dist/components/Combobox/Combobox.js +2 -1
  5. package/dist/components/ConfirmDialog/ConfirmDialog.js +60 -42
  6. package/dist/components/ContextMenu/ContextMenu.js +2 -1
  7. package/dist/components/ContextMenu/ContextMenuContent.js +33 -23
  8. package/dist/components/Datepicker/DatepickerCore.js +2 -1
  9. package/dist/components/Dialog/Dialog.js +40 -21
  10. package/dist/components/Drawer/Drawer.js +37 -18
  11. package/dist/components/DropdownMenu/DropdownMenu.js +27 -25
  12. package/dist/components/DropdownMenu/DropdownMenuContent.js +2 -2
  13. package/dist/components/Menu/Menu.js +43 -35
  14. package/dist/components/Popover/Popover.js +27 -25
  15. package/dist/components/Toast/Toast.js +25 -20
  16. package/dist/components/Toast/ToastContainer.js +31 -24
  17. package/dist/components/Tooltip/Tooltip.js +37 -34
  18. package/dist/css/alert.css +1 -1
  19. package/dist/css/approval-card.css +1 -1
  20. package/dist/css/async-section.css +1 -1
  21. package/dist/css/badge.css +1 -1
  22. package/dist/css/banner.css +1 -1
  23. package/dist/css/bottom-sheet.css +1 -1
  24. package/dist/css/chat-message.css +1 -1
  25. package/dist/css/code-block.css +1 -1
  26. package/dist/css/collapsible.css +1 -1
  27. package/dist/css/combobox.css +1 -1
  28. package/dist/css/confirm-dialog.css +1 -1
  29. package/dist/css/context-menu.css +2 -2
  30. package/dist/css/conversation-list.css +1 -1
  31. package/dist/css/datepicker.css +1 -1
  32. package/dist/css/dialog.css +1 -1
  33. package/dist/css/diff-viewer.css +1 -1
  34. package/dist/css/drawer.css +1 -1
  35. package/dist/css/dropdown-menu.css +2 -2
  36. package/dist/css/inline-edit.css +1 -1
  37. package/dist/css/log-viewer.css +1 -1
  38. package/dist/css/markdown-renderer.css +1 -1
  39. package/dist/css/menu.css +1 -1
  40. package/dist/css/navigation-bar.css +1 -1
  41. package/dist/css/popover.css +1 -1
  42. package/dist/css/step-timeline.css +1 -1
  43. package/dist/css/tag-group.css +1 -1
  44. package/dist/css/tag-input.css +1 -1
  45. package/dist/css/tag.css +1 -1
  46. package/dist/css/toast.css +1 -1
  47. package/dist/css/token-counter.css +1 -1
  48. package/dist/css/tokens.css +2 -1
  49. package/dist/css/tool-call-card.css +1 -1
  50. package/dist/css/tooltip.css +1 -1
  51. package/dist/haze-ui.css +36 -35
  52. package/dist/tokens/index.js +4 -1
  53. package/dist/tokens/motion.js +6 -0
  54. package/dist/tokens/oklch.js +117 -0
  55. package/dist/tokens/palette.js +327 -0
  56. package/dist/tokens/registry.js +154 -145
  57. package/dist/types/components/BottomSheet/BottomSheet.d.ts +3 -3
  58. package/dist/types/components/Collapsible/Collapsible.d.ts +1 -1
  59. package/dist/types/components/ConfirmDialog/ConfirmDialog.d.ts +3 -3
  60. package/dist/types/components/DropdownMenu/DropdownMenu.d.ts +7 -1
  61. package/dist/types/components/Popover/Popover.d.ts +7 -1
  62. package/dist/types/components/Toast/Toast.d.ts +3 -3
  63. package/dist/types/components/Tooltip/Tooltip.d.ts +4 -1
  64. package/dist/types/tokens/index.d.ts +5 -0
  65. package/dist/types/tokens/motion.d.ts +1 -0
  66. package/dist/types/tokens/oklch.d.ts +35 -0
  67. package/dist/types/tokens/palette.d.ts +28 -0
  68. package/dist/types/utils/collision.d.ts +62 -0
  69. package/dist/types/utils/floating.d.ts +95 -19
  70. package/dist/types/utils/focus-scope.d.ts +25 -0
  71. package/dist/types/utils/focus.d.ts +23 -0
  72. package/dist/types/utils/presence.d.ts +22 -0
  73. package/dist/utils/collision.js +73 -0
  74. package/dist/utils/floating.js +195 -150
  75. package/dist/utils/focus-scope.js +63 -0
  76. package/dist/utils/focus.js +34 -0
  77. package/dist/utils/presence.js +72 -0
  78. package/package.json +4 -2
@@ -0,0 +1,117 @@
1
+ function e(e) {
2
+ return e <= .04045 ? e / 12.92 : ((e + .055) / 1.055) ** 2.4;
3
+ }
4
+ function t(e) {
5
+ return e <= .0031308 ? 12.92 * e : 1.055 * e ** (1 / 2.4) - .055;
6
+ }
7
+ function n({ r: e, g: t, b: n }) {
8
+ let r = Math.cbrt(.4122214708 * e + .5363325363 * t + .0514459929 * n), i = Math.cbrt(.2119034982 * e + .6806995451 * t + .1073969566 * n), a = Math.cbrt(.0883024619 * e + .2817188376 * t + .6299787005 * n);
9
+ return {
10
+ L: .2104542553 * r + .793617785 * i - .0040720468 * a,
11
+ a: 1.9779984951 * r - 2.428592205 * i + .4505937099 * a,
12
+ b: .0259040371 * r + .7827717662 * i - .808675766 * a
13
+ };
14
+ }
15
+ function r({ L: e, a: t, b: n }) {
16
+ let r = e + .3963377774 * t + .2158037573 * n, i = e - .1055613458 * t - .0638541728 * n, a = e - .0894841775 * t - 1.291485548 * n, o = r * r * r, s = i * i * i, c = a * a * a;
17
+ return {
18
+ r: 4.0767416621 * o - 3.3077115913 * s + .2309699292 * c,
19
+ g: -1.2684380046 * o + 2.6097574011 * s - .3413193965 * c,
20
+ b: -.0041960863 * o - .7034186147 * s + 1.707614701 * c
21
+ };
22
+ }
23
+ function i({ l: e, c: t, h: n }) {
24
+ let r = n * Math.PI / 180;
25
+ return {
26
+ L: e,
27
+ a: t * Math.cos(r),
28
+ b: t * Math.sin(r)
29
+ };
30
+ }
31
+ function a({ L: e, a: t, b: n }) {
32
+ let r = Math.atan2(n, t) * 180 / Math.PI;
33
+ return {
34
+ l: e,
35
+ c: Math.sqrt(t * t + n * n),
36
+ h: r < 0 ? r + 360 : r
37
+ };
38
+ }
39
+ function o(e) {
40
+ return e.r >= -1e-5 && e.r <= 1.00001 && e.g >= -1e-5 && e.g <= 1.00001 && e.b >= -1e-5 && e.b <= 1.00001;
41
+ }
42
+ function s(e) {
43
+ return r(i(c(e)));
44
+ }
45
+ function c(e) {
46
+ let t = Math.min(1, Math.max(0, e.l)), n = e.h * Math.PI / 180, i = 0, a = Math.max(e.c, 0);
47
+ for (let e = 0; e < 20; e++) {
48
+ let e = (i + a) / 2;
49
+ o(r({
50
+ L: t,
51
+ a: e * Math.cos(n),
52
+ b: e * Math.sin(n)
53
+ })) ? i = e : a = e;
54
+ }
55
+ return e.alpha === void 0 ? {
56
+ l: t,
57
+ c: i,
58
+ h: e.h
59
+ } : {
60
+ l: t,
61
+ c: i,
62
+ h: e.h,
63
+ alpha: e.alpha
64
+ };
65
+ }
66
+ function l(e) {
67
+ return Math.round(Math.min(1, Math.max(0, e)) * 255).toString(16).padStart(2, "0");
68
+ }
69
+ function u(t) {
70
+ let r = /^#([0-9a-f]{3,8})$/i.exec(t.trim())?.[1];
71
+ if (r === void 0 || r.length !== 3 && r.length !== 4 && r.length !== 6 && r.length !== 8) throw Error(`Invalid hex color: ${t}`);
72
+ let i = r.length === 3 || r.length === 4 ? r.split("").map((e) => e + e).join("") : r, o = i.length === 8 ? parseInt(i.slice(6, 8), 16) / 255 : void 0, s = a(n({
73
+ r: e(parseInt(i.slice(0, 2), 16) / 255),
74
+ g: e(parseInt(i.slice(2, 4), 16) / 255),
75
+ b: e(parseInt(i.slice(4, 6), 16) / 255)
76
+ }));
77
+ return o === void 0 ? s : {
78
+ ...s,
79
+ alpha: o
80
+ };
81
+ }
82
+ function d(e) {
83
+ let t = /^oklch\(\s*(none|[+-]?[\d.]+%?)\s+(none|[+-]?[\d.]+%?)\s+(none|[+-]?[\d.]+(?:deg)?)\s*(?:\/\s*(none|[+-]?[\d.]+%?)\s*)?\)$/i.exec(e.trim());
84
+ if (!t) throw Error(`Invalid oklch color: ${e}`);
85
+ let n = (e, t = 1) => e === void 0 || e.toLowerCase() === "none" ? 0 : e.endsWith("%") ? parseFloat(e) / 100 * t : parseFloat(e), r = Math.min(1, Math.max(0, n(t[1]))), i = Math.max(0, n(t[2])), a = (n(t[3]) % 360 + 360) % 360, o = t[4];
86
+ return o === void 0 ? {
87
+ l: r,
88
+ c: i,
89
+ h: a
90
+ } : {
91
+ l: r,
92
+ c: i,
93
+ h: a,
94
+ alpha: Math.min(1, Math.max(0, n(o)))
95
+ };
96
+ }
97
+ function f(e) {
98
+ let n = s(e), r = `#${l(t(n.r))}${l(t(n.g))}${l(t(n.b))}`;
99
+ return e.alpha === void 0 ? r : r + l(e.alpha);
100
+ }
101
+ function p(e) {
102
+ let t = `${e.l.toFixed(3)} ${e.c.toFixed(3)} ${e.h.toFixed(1)}`;
103
+ return e.alpha === void 0 ? `oklch(${t})` : `oklch(${t} / ${e.alpha.toFixed(3)})`;
104
+ }
105
+ function m(e, t) {
106
+ let n = (e) => {
107
+ let { r: t, g: n, b: a } = r(i(e));
108
+ return .2126 * t + .7152 * n + .0722 * a;
109
+ }, a = n(e), o = n(t), s = Math.max(a, o), c = Math.min(a, o);
110
+ return (s + .05) / (c + .05);
111
+ }
112
+ function h(e, t) {
113
+ let n = i(e), r = i(t);
114
+ return Math.sqrt((n.L - r.L) ** 2 + (n.a - r.a) ** 2 + (n.b - r.b) ** 2);
115
+ }
116
+ //#endregion
117
+ export { c as clampChroma, h as deltaE, p as formatOklch, f as oklchToHex, u as parseHex, d as parseOklch, m as wcagContrast };
@@ -0,0 +1,327 @@
1
+ import { clampChroma as e, formatOklch as t, parseHex as n, parseOklch as r } from "./oklch.js";
2
+ //#region src/lib/tokens/palette.ts
3
+ var i = {
4
+ light: {
5
+ hover: -.045,
6
+ active: -.09,
7
+ borderHover: -.09,
8
+ subtleL: .945,
9
+ subtleC: .2
10
+ },
11
+ dark: {
12
+ hover: .05,
13
+ active: .09,
14
+ borderHover: .08,
15
+ subtleL: .26,
16
+ subtleC: .35
17
+ }
18
+ }, a = .4, o = {
19
+ light: -.008,
20
+ dark: .014
21
+ }, s = {
22
+ light: {
23
+ gray: {
24
+ 1: "#ffffff",
25
+ 2: "#f7f8fa",
26
+ 3: "#eef0f4",
27
+ 4: "#e0e0e0",
28
+ 9: "#8a8a8a",
29
+ 11: "#4a4a4a",
30
+ 12: "#1a1a1a"
31
+ },
32
+ blue: {
33
+ 9: "#0066ff",
34
+ 10: "#2563eb"
35
+ },
36
+ green: { 9: "#15803d" },
37
+ amber: { 9: "#f59e0b" },
38
+ red: { 9: "#dc2626" }
39
+ },
40
+ dark: {
41
+ gray: {
42
+ 1: "#121212",
43
+ 2: "#1e1e1e",
44
+ 3: "#2a2a2a",
45
+ 4: "#333333",
46
+ 9: "#707070",
47
+ 11: "#b0b0b0",
48
+ 12: "#e8e8e8"
49
+ },
50
+ blue: {
51
+ 8: "#3b82f6",
52
+ 9: "#4d94ff"
53
+ },
54
+ green: { 8: "#22c55e" },
55
+ amber: { 8: "#fbbf24" },
56
+ red: { 8: "#ef4444" }
57
+ }
58
+ }, c = {
59
+ light: {
60
+ l1: .982,
61
+ l12: .16,
62
+ c1: .018,
63
+ c12: .045
64
+ },
65
+ dark: {
66
+ l1: .155,
67
+ l12: .982,
68
+ c1: .03,
69
+ c12: .012
70
+ }
71
+ };
72
+ function l(e, t) {
73
+ let n = e[0];
74
+ if (t <= n.x) return n.y;
75
+ for (let n = 1; n < e.length; n++) {
76
+ let r = e[n];
77
+ if (t <= r.x) {
78
+ let i = e[n - 1], a = (t - i.x) / (r.x - i.x);
79
+ return i.y + a * (r.y - i.y);
80
+ }
81
+ }
82
+ return e[e.length - 1].y;
83
+ }
84
+ function u(e, t, r) {
85
+ return Object.entries(e).map(([e, i]) => {
86
+ let a = n(i), s = r && Number(e) === 9 ? a.l + o[t] : a.l;
87
+ return {
88
+ step: Number(e),
89
+ color: r ? {
90
+ l: s,
91
+ c: 0,
92
+ h: 0
93
+ } : a
94
+ };
95
+ }).sort((e, t) => e.step - t.step);
96
+ }
97
+ function d(n, r, i) {
98
+ let a = [];
99
+ for (let o = 1; o <= 12; o++) a.push(t(e({
100
+ l: l(n, o),
101
+ c: r(o),
102
+ h: i(o)
103
+ })));
104
+ return a;
105
+ }
106
+ function f(e, t) {
107
+ return d(u(e, t, !0).map((e) => ({
108
+ x: e.step,
109
+ y: e.color.l
110
+ })), () => 0, () => 0);
111
+ }
112
+ function p(e, t) {
113
+ let n = u(e, t, !1), r = c[t], i = [
114
+ {
115
+ x: 1,
116
+ y: r.l1
117
+ },
118
+ ...n.map((e) => ({
119
+ x: e.step,
120
+ y: e.color.l
121
+ })),
122
+ {
123
+ x: 12,
124
+ y: r.l12
125
+ }
126
+ ], a = [
127
+ {
128
+ x: 1,
129
+ y: r.c1
130
+ },
131
+ ...n.map((e) => ({
132
+ x: e.step,
133
+ y: e.color.c
134
+ })),
135
+ {
136
+ x: 12,
137
+ y: r.c12
138
+ }
139
+ ], o = [
140
+ {
141
+ x: 1,
142
+ y: n[0].color.h
143
+ },
144
+ ...n.map((e) => ({
145
+ x: e.step,
146
+ y: e.color.h
147
+ })),
148
+ {
149
+ x: 12,
150
+ y: n[n.length - 1].color.h
151
+ }
152
+ ];
153
+ return d(i, (e) => l(a, e), (e) => l(o, e));
154
+ }
155
+ var m = {
156
+ light: {
157
+ gray: f(s.light.gray, "light"),
158
+ blue: p(s.light.blue, "light"),
159
+ green: p(s.light.green, "light"),
160
+ amber: p(s.light.amber, "light"),
161
+ red: p(s.light.red, "light")
162
+ },
163
+ dark: {
164
+ gray: f(s.dark.gray, "dark"),
165
+ blue: p(s.dark.blue, "dark"),
166
+ green: p(s.dark.green, "dark"),
167
+ amber: p(s.dark.amber, "dark"),
168
+ red: p(s.dark.red, "dark")
169
+ }
170
+ };
171
+ function h(e, t, n) {
172
+ let r = m[e][t][n - 1];
173
+ if (r === void 0) throw Error(`Missing primitive ${t}-${n} in ${e} mode`);
174
+ return r;
175
+ }
176
+ var g = {
177
+ primary: "blue",
178
+ success: "green",
179
+ warning: "amber",
180
+ danger: "red",
181
+ info: "blue"
182
+ }, _ = {
183
+ light: {
184
+ primary: 9,
185
+ success: 9,
186
+ warning: 9,
187
+ danger: 9,
188
+ info: 10
189
+ },
190
+ dark: {
191
+ primary: 9,
192
+ success: 8,
193
+ warning: 8,
194
+ danger: 8,
195
+ info: 8
196
+ }
197
+ }, v = {
198
+ bg: 1,
199
+ "bg-subtle": 2,
200
+ "bg-muted": 3,
201
+ text: 12,
202
+ "text-secondary": 11,
203
+ "text-muted": 9,
204
+ border: 4
205
+ }, y = (e, t) => `var(--haze-${e}-${t})`, b = (e, t, n) => r(h(e, t, n)), x = (e) => `calc(l ${e < 0 ? "-" : "+"} ${Math.abs(e)})`;
206
+ function S(e, t, n) {
207
+ let r = i[e];
208
+ switch (n) {
209
+ case "hover": return `oklch(from ${t} ${x(r.hover)} c h)`;
210
+ case "active": return `oklch(from ${t} ${x(r.active)} c h)`;
211
+ case "subtle": return `oklch(from ${t} ${r.subtleL} calc(c * ${r.subtleC}) h)`;
212
+ case "border-hover": return `oklch(from ${t} ${x(r.borderHover)} c h)`;
213
+ case "focus-ring": return `oklch(from ${t} l c h / ${a})`;
214
+ }
215
+ }
216
+ function C(t, n, r) {
217
+ let o = i[t];
218
+ switch (r) {
219
+ case "hover": return e({
220
+ l: n.l + o.hover,
221
+ c: n.c,
222
+ h: n.h
223
+ });
224
+ case "active": return e({
225
+ l: n.l + o.active,
226
+ c: n.c,
227
+ h: n.h
228
+ });
229
+ case "subtle": return e({
230
+ l: o.subtleL,
231
+ c: n.c * o.subtleC,
232
+ h: n.h
233
+ });
234
+ case "border-hover": return e({
235
+ l: n.l + o.borderHover,
236
+ c: n.c,
237
+ h: n.h
238
+ });
239
+ case "focus-ring": return {
240
+ l: n.l,
241
+ c: n.c,
242
+ h: n.h,
243
+ alpha: a
244
+ };
245
+ }
246
+ }
247
+ function w(e, t, n, r) {
248
+ return {
249
+ name: e,
250
+ label: t,
251
+ css: {
252
+ light: y(n, r.light),
253
+ dark: y(n, r.dark)
254
+ },
255
+ resolved: {
256
+ light: b("light", n, r.light),
257
+ dark: b("dark", n, r.dark)
258
+ }
259
+ };
260
+ }
261
+ function T(e, t, n, r, i) {
262
+ let a = `var(${n})`;
263
+ return {
264
+ name: e,
265
+ label: t,
266
+ css: {
267
+ light: S("light", a, i),
268
+ dark: S("dark", a, i)
269
+ },
270
+ resolved: {
271
+ light: C("light", r.light, i),
272
+ dark: C("dark", r.dark, i)
273
+ }
274
+ };
275
+ }
276
+ function E(e) {
277
+ let t = w(`--haze-color-${e}`, e[0].toUpperCase() + e.slice(1), g[e], {
278
+ light: _.light[e],
279
+ dark: _.dark[e]
280
+ });
281
+ return [
282
+ t,
283
+ T(`${t.name}-hover`, `${t.label} Hover`, t.name, t.resolved, "hover"),
284
+ T(`${t.name}-active`, `${t.label} Active`, t.name, t.resolved, "active"),
285
+ T(`${t.name}-subtle`, `${t.label} Subtle`, t.name, t.resolved, "subtle")
286
+ ];
287
+ }
288
+ function D(e, t) {
289
+ return w(`--haze-color-${e}`, t, "gray", {
290
+ light: v[e],
291
+ dark: v[e]
292
+ });
293
+ }
294
+ var O = E("primary"), k = O[0], A = {
295
+ name: "--haze-color-text-inverse",
296
+ label: "Text Inverse",
297
+ css: {
298
+ light: "oklch(1 0 0)",
299
+ dark: h("light", "gray", 12)
300
+ },
301
+ resolved: {
302
+ light: {
303
+ l: 1,
304
+ c: 0,
305
+ h: 0
306
+ },
307
+ dark: b("light", "gray", 12)
308
+ }
309
+ }, j = D("border", "Border"), M = [
310
+ ...O,
311
+ D("bg", "Background"),
312
+ D("bg-subtle", "Background Subtle"),
313
+ D("bg-muted", "Background Muted"),
314
+ D("text", "Text"),
315
+ D("text-secondary", "Text Secondary"),
316
+ D("text-muted", "Text Muted"),
317
+ A,
318
+ j,
319
+ T("--haze-color-border-hover", "Border Hover", j.name, j.resolved, "border-hover"),
320
+ ...E("success"),
321
+ ...E("warning"),
322
+ ...E("danger"),
323
+ ...E("info"),
324
+ T("--haze-color-focus-ring", "Focus Ring", k.name, k.resolved, "focus-ring")
325
+ ];
326
+ //#endregion
327
+ export { m as PRIMITIVES, M as SEMANTIC_COLOR_TOKENS };