@puzzle-ui/ui 0.2.0 → 0.4.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 (100) hide show
  1. package/README.md +71 -70
  2. package/dist/components/data-display/empty-state/empty-state.css +128 -0
  3. package/dist/components/data-display/empty-state/empty-state.utils.cjs +6 -0
  4. package/dist/components/data-display/empty-state/empty-state.utils.cjs.map +1 -0
  5. package/dist/components/data-display/empty-state/empty-state.utils.js +6 -0
  6. package/dist/components/data-display/empty-state/empty-state.utils.js.map +1 -0
  7. package/dist/components/data-display/empty-state/index.cjs +49 -0
  8. package/dist/components/data-display/empty-state/index.cjs.map +1 -0
  9. package/dist/components/data-display/empty-state/index.d.cts +19 -0
  10. package/dist/components/data-display/empty-state/index.d.ts +19 -0
  11. package/dist/components/data-display/empty-state/index.js +44 -0
  12. package/dist/components/data-display/empty-state/index.js.map +1 -0
  13. package/dist/components/editors/text-editor/editor.cjs.map +1 -1
  14. package/dist/components/editors/text-editor/editor.js.map +1 -1
  15. package/dist/components/editors/text-editor/text-document.cjs.map +1 -1
  16. package/dist/components/editors/text-editor/text-document.js.map +1 -1
  17. package/dist/components/editors/text-editor/text-parser.cjs.map +1 -1
  18. package/dist/components/editors/text-editor/text-parser.js.map +1 -1
  19. package/dist/components/editors/text-editor/text-renderer.cjs.map +1 -1
  20. package/dist/components/editors/text-editor/text-renderer.js.map +1 -1
  21. package/dist/components/forms/autocomplete/index.cjs.map +1 -1
  22. package/dist/components/forms/autocomplete/index.js.map +1 -1
  23. package/dist/components/forms/color-picker/color-picker.css +351 -0
  24. package/dist/components/forms/color-picker/color-picker.types.d.cts +25 -0
  25. package/dist/components/forms/color-picker/color-picker.types.d.ts +25 -0
  26. package/dist/components/forms/color-picker/color-picker.utils.cjs +116 -0
  27. package/dist/components/forms/color-picker/color-picker.utils.cjs.map +1 -0
  28. package/dist/components/forms/color-picker/color-picker.utils.js +109 -0
  29. package/dist/components/forms/color-picker/color-picker.utils.js.map +1 -0
  30. package/dist/components/forms/color-picker/index.cjs +340 -0
  31. package/dist/components/forms/color-picker/index.cjs.map +1 -0
  32. package/dist/components/forms/color-picker/index.d.cts +3 -0
  33. package/dist/components/forms/color-picker/index.d.ts +3 -0
  34. package/dist/components/forms/color-picker/index.js +340 -0
  35. package/dist/components/forms/color-picker/index.js.map +1 -0
  36. package/dist/components/forms/file-upload/file-upload.utils.cjs.map +1 -1
  37. package/dist/components/forms/file-upload/file-upload.utils.js.map +1 -1
  38. package/dist/components/forms/input/number-input.js +5 -5
  39. package/dist/components/forms/input/number-input.js.map +1 -1
  40. package/dist/components/forms/input-group/index.d.cts +3 -0
  41. package/dist/components/forms/input-group/index.d.ts +3 -0
  42. package/dist/components/forms/input-group/input-group.cjs +18 -0
  43. package/dist/components/forms/input-group/input-group.cjs.map +1 -0
  44. package/dist/components/forms/input-group/input-group.css +62 -0
  45. package/dist/components/forms/input-group/input-group.d.cts +5 -0
  46. package/dist/components/forms/input-group/input-group.d.ts +5 -0
  47. package/dist/components/forms/input-group/input-group.js +18 -0
  48. package/dist/components/forms/input-group/input-group.js.map +1 -0
  49. package/dist/components/forms/input-group/input-group.types.d.cts +7 -0
  50. package/dist/components/forms/input-group/input-group.types.d.ts +7 -0
  51. package/dist/components/forms/input-group/input-group.utils.cjs +5 -0
  52. package/dist/components/forms/input-group/input-group.utils.cjs.map +1 -0
  53. package/dist/components/forms/input-group/input-group.utils.js +5 -0
  54. package/dist/components/forms/input-group/input-group.utils.js.map +1 -0
  55. package/dist/components/forms/select/index.cjs.map +1 -1
  56. package/dist/components/forms/select/index.js.map +1 -1
  57. package/dist/components/forms/slider/index.cjs +1 -1
  58. package/dist/components/forms/slider/index.cjs.map +1 -1
  59. package/dist/components/forms/slider/index.js +1 -1
  60. package/dist/components/forms/slider/index.js.map +1 -1
  61. package/dist/components/layout/resizable-panels/index.cjs +1 -1
  62. package/dist/components/layout/resizable-panels/index.cjs.map +1 -1
  63. package/dist/components/layout/resizable-panels/index.js +1 -1
  64. package/dist/components/layout/resizable-panels/index.js.map +1 -1
  65. package/dist/components/layout/resizable-panels/resizable-panels.utils.cjs.map +1 -1
  66. package/dist/components/layout/resizable-panels/resizable-panels.utils.js.map +1 -1
  67. package/dist/components/navigation/accordion/index.cjs.map +1 -1
  68. package/dist/components/navigation/accordion/index.js.map +1 -1
  69. package/dist/components/navigation/carousel/index.cjs +1 -1
  70. package/dist/components/navigation/carousel/index.cjs.map +1 -1
  71. package/dist/components/navigation/carousel/index.js +1 -1
  72. package/dist/components/navigation/carousel/index.js.map +1 -1
  73. package/dist/components/navigation/pagination/index.cjs +146 -0
  74. package/dist/components/navigation/pagination/index.cjs.map +1 -0
  75. package/dist/components/navigation/pagination/index.d.cts +3 -0
  76. package/dist/components/navigation/pagination/index.d.ts +3 -0
  77. package/dist/components/navigation/pagination/index.js +146 -0
  78. package/dist/components/navigation/pagination/index.js.map +1 -0
  79. package/dist/components/navigation/pagination/pagination.css +134 -0
  80. package/dist/components/navigation/pagination/pagination.types.d.cts +38 -0
  81. package/dist/components/navigation/pagination/pagination.types.d.ts +38 -0
  82. package/dist/components/navigation/pagination/pagination.utils.cjs +54 -0
  83. package/dist/components/navigation/pagination/pagination.utils.cjs.map +1 -0
  84. package/dist/components/navigation/pagination/pagination.utils.js +53 -0
  85. package/dist/components/navigation/pagination/pagination.utils.js.map +1 -0
  86. package/dist/components/navigation/tree-view/index.cjs.map +1 -1
  87. package/dist/components/navigation/tree-view/index.js.map +1 -1
  88. package/dist/components/overlays/dropdown-menu/dropdown-menu-content.cjs.map +1 -1
  89. package/dist/components/overlays/dropdown-menu/dropdown-menu-content.js.map +1 -1
  90. package/dist/components/overlays/dropdown-menu/dropdown-menu.utils.cjs.map +1 -1
  91. package/dist/components/overlays/dropdown-menu/dropdown-menu.utils.js.map +1 -1
  92. package/dist/components/utilities/preview/index.cjs +1 -1
  93. package/dist/components/utilities/preview/index.cjs.map +1 -1
  94. package/dist/components/utilities/preview/index.js +1 -1
  95. package/dist/components/utilities/preview/index.js.map +1 -1
  96. package/dist/index.cjs +110 -97
  97. package/dist/index.d.cts +9 -1
  98. package/dist/index.d.ts +9 -1
  99. package/dist/index.js +5 -1
  100. package/package.json +7 -6
@@ -0,0 +1,340 @@
1
+ "use client";
2
+ const require_index = require("../../overlays/popout/index.cjs");
3
+ const require_color_picker_utils = require("./color-picker.utils.cjs");
4
+ ;/* empty css */
5
+ let _puzzle_ui_core = require("@puzzle-ui/core");
6
+ let react = require("react");
7
+ let react_jsx_runtime = require("react/jsx-runtime");
8
+ // src/components/forms/color-picker/index.tsx
9
+ const getSwatchValue = (swatch) => typeof swatch === "string" ? swatch : swatch.value;
10
+ const getSwatchLabel = (swatch) => typeof swatch === "string" ? swatch : swatch.label ?? swatch.value;
11
+ const ColorPicker = (props) => {
12
+ const { value, defaultValue, onChange, label, description, placeholder = "Select color", colors = [], format = "hexa", clearable = true, clearLabel = "Clear color", open, defaultOpen = false, onOpenChange, position = "bottom", align = "start", disabled = false, className, style, rootClassName, popoverClassName, id, ref, ...triggerProps } = props;
13
+ const generatedId = (0, react.useId)();
14
+ const triggerId = id ?? generatedId;
15
+ const labelId = `${generatedId}-label`;
16
+ const descriptionId = `${generatedId}-description`;
17
+ const panelId = `${generatedId}-panel`;
18
+ const areaId = `${generatedId}-area`;
19
+ const [internalValue, setInternalValue] = (0, react.useState)(defaultValue);
20
+ const isControlled = Object.prototype.hasOwnProperty.call(props, "value");
21
+ const selectedColor = isControlled ? value : internalValue;
22
+ const [internalOpen, setInternalOpen] = (0, react.useState)(defaultOpen);
23
+ const isOpen = open ?? internalOpen;
24
+ const [hsv, setHsv] = (0, react.useState)(() => (selectedColor ? require_color_picker_utils.parseColorToHsvInBrowser(selectedColor) : null) ?? require_color_picker_utils.DEFAULT_HSV);
25
+ const [inputValue, setInputValue] = (0, react.useState)(selectedColor ?? "");
26
+ const [inputError, setInputError] = (0, react.useState)(false);
27
+ const areaRef = (0, react.useRef)(null);
28
+ const changeOpen = (0, react.useCallback)((nextOpen) => {
29
+ if (open === void 0) setInternalOpen(nextOpen);
30
+ onOpenChange?.(nextOpen);
31
+ }, [open, onOpenChange]);
32
+ const commitColor = (0, react.useCallback)((nextColor) => {
33
+ if (!isControlled) setInternalValue(nextColor);
34
+ onChange?.(nextColor);
35
+ setInputValue(nextColor ?? "");
36
+ setInputError(false);
37
+ }, [isControlled, onChange]);
38
+ const updateHsv = (0, react.useCallback)((next) => {
39
+ const normalized = {
40
+ h: (next.h % 360 + 360) % 360,
41
+ s: (0, _puzzle_ui_core.clamp)(next.s, 0, 100),
42
+ v: (0, _puzzle_ui_core.clamp)(next.v, 0, 100),
43
+ a: (0, _puzzle_ui_core.clamp)(next.a, 0, 1)
44
+ };
45
+ setHsv(normalized);
46
+ commitColor(require_color_picker_utils.hsvToFormat(normalized, format));
47
+ }, [commitColor, format]);
48
+ (0, react.useEffect)(() => {
49
+ if (!selectedColor) {
50
+ setHsv(require_color_picker_utils.DEFAULT_HSV);
51
+ return;
52
+ }
53
+ const parsed = require_color_picker_utils.parseColorToHsvInBrowser(selectedColor);
54
+ if (parsed) setHsv(parsed);
55
+ }, [selectedColor]);
56
+ (0, react.useEffect)(() => {
57
+ if (!isOpen) {
58
+ setInputValue(selectedColor ?? "");
59
+ setInputError(false);
60
+ }
61
+ }, [isOpen, selectedColor]);
62
+ const updateArea = (event) => {
63
+ if (event.type === "pointermove" && event.buttons !== 1) return;
64
+ const rect = event.currentTarget.getBoundingClientRect();
65
+ if (rect.width <= 0 || rect.height <= 0) return;
66
+ const saturation = (0, _puzzle_ui_core.clamp)((event.clientX - rect.left) / rect.width * 100, 0, 100);
67
+ const brightness = (0, _puzzle_ui_core.clamp)((1 - (event.clientY - rect.top) / rect.height) * 100, 0, 100);
68
+ updateHsv({
69
+ ...hsv,
70
+ s: saturation,
71
+ v: brightness
72
+ });
73
+ };
74
+ const handleAreaKeyDown = (event) => {
75
+ const step = event.shiftKey ? 10 : 1;
76
+ let saturation = hsv.s;
77
+ let brightness = hsv.v;
78
+ switch (event.key) {
79
+ case "ArrowLeft":
80
+ saturation -= step;
81
+ break;
82
+ case "ArrowRight":
83
+ saturation += step;
84
+ break;
85
+ case "ArrowUp":
86
+ brightness += step;
87
+ break;
88
+ case "ArrowDown":
89
+ brightness -= step;
90
+ break;
91
+ case "Home":
92
+ saturation = 0;
93
+ break;
94
+ case "End":
95
+ saturation = 100;
96
+ break;
97
+ default: return;
98
+ }
99
+ event.preventDefault();
100
+ updateHsv({
101
+ ...hsv,
102
+ s: saturation,
103
+ v: brightness
104
+ });
105
+ };
106
+ const selectSwatch = (color) => {
107
+ commitColor(color);
108
+ const parsed = require_color_picker_utils.parseColorToHsvInBrowser(color);
109
+ if (parsed) setHsv(parsed);
110
+ };
111
+ const applyInput = () => {
112
+ const color = inputValue.trim();
113
+ const parsed = require_color_picker_utils.parseColorToHsvInBrowser(color);
114
+ if (!parsed) {
115
+ setInputError(true);
116
+ return;
117
+ }
118
+ commitColor(color);
119
+ setHsv(parsed);
120
+ };
121
+ const hueColor = `hsl(${hsv.h}, 100%, 50%)`;
122
+ const colorAreaStyle = { "--puzzle-color-picker-hue": hueColor };
123
+ const triggerSwatchStyle = { background: selectedColor ? require_color_picker_utils.resolveCssColor(selectedColor) ?? selectedColor : void 0 };
124
+ const clearColor = () => {
125
+ commitColor(void 0);
126
+ setHsv(require_color_picker_utils.DEFAULT_HSV);
127
+ };
128
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
129
+ className: (0, _puzzle_ui_core.cn)("puzzle-color-picker", rootClassName),
130
+ "data-disabled": disabled || void 0,
131
+ children: [
132
+ label && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("label", {
133
+ id: labelId,
134
+ className: "puzzle-color-picker__label",
135
+ htmlFor: triggerId,
136
+ children: label
137
+ }),
138
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_index.Popout, {
139
+ position,
140
+ align,
141
+ action: "click",
142
+ open: isOpen,
143
+ onOpenChange: changeOpen,
144
+ closeOnOutsideClick: true,
145
+ closeOnEscape: true,
146
+ contentClassName: (0, _puzzle_ui_core.cn)("puzzle-color-picker__popover", popoverClassName),
147
+ trigger: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
148
+ ...triggerProps,
149
+ ref,
150
+ id: triggerId,
151
+ type: "button",
152
+ className: (0, _puzzle_ui_core.cn)("puzzle-color-picker__trigger", className),
153
+ style,
154
+ disabled,
155
+ "aria-label": label ? void 0 : "Choose color",
156
+ "aria-labelledby": label ? labelId : void 0,
157
+ "aria-describedby": description ? descriptionId : void 0,
158
+ "aria-haspopup": "dialog",
159
+ "aria-expanded": isOpen,
160
+ "aria-controls": isOpen ? panelId : void 0,
161
+ children: [
162
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
163
+ className: "puzzle-color-picker__trigger-swatch",
164
+ style: triggerSwatchStyle,
165
+ "aria-hidden": "true"
166
+ }),
167
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
168
+ className: "puzzle-color-picker__trigger-value",
169
+ children: selectedColor ?? placeholder
170
+ }),
171
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
172
+ className: "puzzle-color-picker__trigger-chevron",
173
+ "aria-hidden": "true",
174
+ children: "▾"
175
+ })
176
+ ]
177
+ }),
178
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
179
+ id: panelId,
180
+ className: "puzzle-color-picker__panel",
181
+ role: "dialog",
182
+ "aria-label": label ? `Choose ${label}` : "Choose color",
183
+ children: [
184
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
185
+ ref: areaRef,
186
+ id: areaId,
187
+ className: "puzzle-color-picker__area",
188
+ style: colorAreaStyle,
189
+ onPointerDown: (event) => {
190
+ event.currentTarget.setPointerCapture(event.pointerId);
191
+ updateArea(event);
192
+ },
193
+ onPointerMove: updateArea,
194
+ onKeyDown: handleAreaKeyDown,
195
+ role: "group",
196
+ "aria-label": "Color saturation and brightness",
197
+ tabIndex: 0,
198
+ children: [
199
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
200
+ className: "puzzle-color-picker__area-saturation",
201
+ "aria-hidden": "true"
202
+ }),
203
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
204
+ className: "puzzle-color-picker__area-brightness",
205
+ "aria-hidden": "true"
206
+ }),
207
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
208
+ className: "puzzle-color-picker__area-indicator",
209
+ style: {
210
+ left: `${hsv.s}%`,
211
+ top: `${100 - hsv.v}%`
212
+ },
213
+ "aria-hidden": "true"
214
+ })
215
+ ]
216
+ }),
217
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
218
+ className: "puzzle-color-picker__sliders",
219
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
220
+ className: "puzzle-color-picker__slider-row",
221
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: "Hue" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
222
+ type: "range",
223
+ min: 0,
224
+ max: 359,
225
+ value: Math.round(hsv.h),
226
+ "aria-label": "Hue",
227
+ onChange: (event) => updateHsv({
228
+ ...hsv,
229
+ h: Number(event.currentTarget.value)
230
+ }),
231
+ className: "puzzle-color-picker__hue-slider"
232
+ })]
233
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
234
+ className: "puzzle-color-picker__slider-row",
235
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: "Opacity" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
236
+ type: "range",
237
+ min: 0,
238
+ max: 100,
239
+ value: Math.round(hsv.a * 100),
240
+ "aria-label": "Opacity",
241
+ onChange: (event) => updateHsv({
242
+ ...hsv,
243
+ a: Number(event.currentTarget.value) / 100
244
+ }),
245
+ className: "puzzle-color-picker__opacity-slider",
246
+ style: { "--puzzle-color-picker-hue": hueColor }
247
+ })]
248
+ })]
249
+ }),
250
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
251
+ className: "puzzle-color-picker__input-section",
252
+ children: [
253
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("label", {
254
+ htmlFor: `${generatedId}-input`,
255
+ className: "puzzle-color-picker__input-label",
256
+ children: "Color value"
257
+ }),
258
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
259
+ className: "puzzle-color-picker__input-row",
260
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
261
+ id: `${generatedId}-input`,
262
+ type: "text",
263
+ value: inputValue,
264
+ spellCheck: false,
265
+ autoComplete: "off",
266
+ "aria-label": "Color value",
267
+ "aria-invalid": inputError || void 0,
268
+ placeholder: "#RRGGBB",
269
+ onChange: (event) => {
270
+ setInputValue(event.currentTarget.value);
271
+ setInputError(false);
272
+ },
273
+ onKeyDown: (event) => {
274
+ if (event.key === "Enter") {
275
+ event.preventDefault();
276
+ applyInput();
277
+ }
278
+ }
279
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
280
+ type: "button",
281
+ className: "puzzle-color-picker__apply",
282
+ onClick: applyInput,
283
+ children: "Apply"
284
+ })]
285
+ }),
286
+ inputError && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
287
+ className: "puzzle-color-picker__error",
288
+ role: "alert",
289
+ children: "Enter a valid CSS color."
290
+ })
291
+ ]
292
+ }),
293
+ (clearable || colors.length > 0) && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
294
+ className: "puzzle-color-picker__swatches-section",
295
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
296
+ className: "puzzle-color-picker__section-label",
297
+ children: "Presets"
298
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
299
+ className: "puzzle-color-picker__swatches",
300
+ role: "group",
301
+ "aria-label": "Preset colors",
302
+ children: [clearable && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
303
+ type: "button",
304
+ className: "puzzle-color-picker__swatch puzzle-color-picker__clear",
305
+ "aria-label": clearLabel,
306
+ "aria-pressed": selectedColor === void 0,
307
+ title: clearLabel,
308
+ onClick: clearColor,
309
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { "aria-hidden": "true" })
310
+ }), colors.map((swatch, index) => {
311
+ const color = getSwatchValue(swatch);
312
+ const swatchLabel = getSwatchLabel(swatch);
313
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
314
+ type: "button",
315
+ className: "puzzle-color-picker__swatch",
316
+ style: { background: require_color_picker_utils.resolveCssColor(color) ?? color },
317
+ "aria-label": swatchLabel,
318
+ "aria-pressed": selectedColor === color,
319
+ title: swatchLabel,
320
+ "data-selected": selectedColor === color || void 0,
321
+ "data-dark": (0, _puzzle_ui_core.isColorDark)(color) || void 0,
322
+ onClick: () => selectSwatch(color)
323
+ }, `${color}-${index}`);
324
+ })]
325
+ })]
326
+ })
327
+ ]
328
+ })
329
+ }),
330
+ description && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
331
+ id: descriptionId,
332
+ className: "puzzle-color-picker__description",
333
+ children: description
334
+ })
335
+ ]
336
+ });
337
+ };
338
+ exports.ColorPicker = ColorPicker;
339
+
340
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","names":["useId","useState","parseColorToHsvInBrowser","DEFAULT_HSV","useRef","useCallback","clamp","hsvToFormat","resolveCssColor","cn","Popout","isColorDark"],"sources":["../../../../src/components/forms/color-picker/index.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n useCallback,\n useEffect,\n useId,\n useRef,\n useState,\n type CSSProperties,\n type KeyboardEvent,\n type PointerEvent,\n} from \"react\";\n\nimport { clamp, cn, isColorDark } from \"@puzzle-ui/core\";\n\nimport { Popout } from \"../../overlays/popout\";\n\nimport {\n DEFAULT_HSV,\n hsvToFormat,\n parseColorToHsvInBrowser,\n resolveCssColor,\n type HSVColor,\n} from \"./color-picker.utils\";\n\nimport type {\n ColorPickerFormat,\n ColorPickerProps,\n ColorPickerSwatch,\n} from \"./color-picker.types\";\n\nimport \"./color-picker.css\";\n\nconst getSwatchValue = (swatch: ColorPickerSwatch): string =>\n typeof swatch === \"string\" ? swatch : swatch.value;\n\nconst getSwatchLabel = (swatch: ColorPickerSwatch): string =>\n typeof swatch === \"string\" ? swatch : (swatch.label ?? swatch.value);\n\nconst ColorPicker = (props: ColorPickerProps) => {\n const {\n value,\n defaultValue,\n onChange,\n label,\n description,\n placeholder = \"Select color\",\n colors = [],\n format = \"hexa\",\n clearable = true,\n clearLabel = \"Clear color\",\n open,\n defaultOpen = false,\n onOpenChange,\n position = \"bottom\",\n align = \"start\",\n disabled = false,\n className,\n style,\n rootClassName,\n popoverClassName,\n id,\n ref,\n ...triggerProps\n } = props;\n\n const generatedId = useId();\n\n const triggerId = id ?? generatedId;\n const labelId = `${generatedId}-label`;\n const descriptionId = `${generatedId}-description`;\n const panelId = `${generatedId}-panel`;\n const areaId = `${generatedId}-area`;\n\n const [internalValue, setInternalValue] = useState<string | undefined>(\n defaultValue,\n );\n\n const isControlled = Object.prototype.hasOwnProperty.call(props, \"value\");\n\n const selectedColor = isControlled ? value : internalValue;\n\n const [internalOpen, setInternalOpen] = useState(defaultOpen);\n const isOpen = open ?? internalOpen;\n\n const [hsv, setHsv] = useState<HSVColor>(\n () =>\n (selectedColor ? parseColorToHsvInBrowser(selectedColor) : null) ??\n DEFAULT_HSV,\n );\n\n const [inputValue, setInputValue] = useState(selectedColor ?? \"\");\n const [inputError, setInputError] = useState(false);\n\n const areaRef = useRef<HTMLDivElement>(null);\n\n const changeOpen = useCallback(\n (nextOpen: boolean) => {\n if (open === undefined) setInternalOpen(nextOpen);\n\n onOpenChange?.(nextOpen);\n },\n [open, onOpenChange],\n );\n\n const commitColor = useCallback(\n (nextColor: string | undefined) => {\n if (!isControlled) {\n setInternalValue(nextColor);\n }\n\n onChange?.(nextColor);\n\n setInputValue(nextColor ?? \"\");\n setInputError(false);\n },\n [isControlled, onChange],\n );\n\n const updateHsv = useCallback(\n (next: HSVColor) => {\n const normalized: HSVColor = {\n h: ((next.h % 360) + 360) % 360,\n s: clamp(next.s, 0, 100),\n v: clamp(next.v, 0, 100),\n a: clamp(next.a, 0, 1),\n };\n\n setHsv(normalized);\n commitColor(hsvToFormat(normalized, format));\n },\n [commitColor, format],\n );\n\n useEffect(() => {\n if (!selectedColor) {\n setHsv(DEFAULT_HSV);\n return;\n }\n\n const parsed = parseColorToHsvInBrowser(selectedColor);\n\n if (parsed) setHsv(parsed);\n }, [selectedColor]);\n\n useEffect(() => {\n if (!isOpen) {\n setInputValue(selectedColor ?? \"\");\n setInputError(false);\n }\n }, [isOpen, selectedColor]);\n\n const updateArea = (event: PointerEvent<HTMLDivElement>) => {\n if (event.type === \"pointermove\" && event.buttons !== 1) return;\n\n const rect = event.currentTarget.getBoundingClientRect();\n\n if (rect.width <= 0 || rect.height <= 0) return;\n\n const saturation = clamp(\n ((event.clientX - rect.left) / rect.width) * 100,\n 0,\n 100,\n );\n\n const brightness = clamp(\n (1 - (event.clientY - rect.top) / rect.height) * 100,\n 0,\n 100,\n );\n\n updateHsv({\n ...hsv,\n s: saturation,\n v: brightness,\n });\n };\n\n const handleAreaKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n const step = event.shiftKey ? 10 : 1;\n\n let saturation = hsv.s;\n let brightness = hsv.v;\n\n switch (event.key) {\n case \"ArrowLeft\":\n saturation -= step;\n break;\n case \"ArrowRight\":\n saturation += step;\n break;\n case \"ArrowUp\":\n brightness += step;\n break;\n case \"ArrowDown\":\n brightness -= step;\n break;\n case \"Home\":\n saturation = 0;\n break;\n case \"End\":\n saturation = 100;\n break;\n default:\n return;\n }\n\n event.preventDefault();\n\n updateHsv({\n ...hsv,\n s: saturation,\n v: brightness,\n });\n };\n\n const selectSwatch = (color: string) => {\n commitColor(color);\n\n const parsed = parseColorToHsvInBrowser(color);\n\n if (parsed) setHsv(parsed);\n };\n\n const applyInput = () => {\n const color = inputValue.trim();\n\n const parsed = parseColorToHsvInBrowser(color);\n\n if (!parsed) {\n setInputError(true);\n return;\n }\n\n commitColor(color);\n setHsv(parsed);\n };\n\n const hueColor = `hsl(${hsv.h}, 100%, 50%)`;\n\n const colorAreaStyle = {\n \"--puzzle-color-picker-hue\": hueColor,\n } as CSSProperties;\n\n const currentColor = selectedColor\n ? (resolveCssColor(selectedColor) ?? selectedColor)\n : undefined;\n\n const triggerSwatchStyle = {\n background: currentColor,\n } as CSSProperties;\n\n const clearColor = () => {\n commitColor(undefined);\n setHsv(DEFAULT_HSV);\n };\n\n return (\n <div\n className={cn(\"puzzle-color-picker\", rootClassName)}\n data-disabled={disabled || undefined}\n >\n {label && (\n <label\n id={labelId}\n className=\"puzzle-color-picker__label\"\n htmlFor={triggerId}\n >\n {label}\n </label>\n )}\n\n <Popout\n position={position}\n align={align}\n action=\"click\"\n open={isOpen}\n onOpenChange={changeOpen}\n closeOnOutsideClick\n closeOnEscape\n contentClassName={cn(\"puzzle-color-picker__popover\", popoverClassName)}\n trigger={\n <button\n {...triggerProps}\n ref={ref}\n id={triggerId}\n type=\"button\"\n className={cn(\"puzzle-color-picker__trigger\", className)}\n style={style}\n disabled={disabled}\n aria-label={label ? undefined : \"Choose color\"}\n aria-labelledby={label ? labelId : undefined}\n aria-describedby={description ? descriptionId : undefined}\n aria-haspopup=\"dialog\"\n aria-expanded={isOpen}\n aria-controls={isOpen ? panelId : undefined}\n >\n <span\n className=\"puzzle-color-picker__trigger-swatch\"\n style={triggerSwatchStyle}\n aria-hidden=\"true\"\n />\n\n <span className=\"puzzle-color-picker__trigger-value\">\n {selectedColor ?? placeholder}\n </span>\n\n <span\n className=\"puzzle-color-picker__trigger-chevron\"\n aria-hidden=\"true\"\n >\n ▾\n </span>\n </button>\n }\n >\n <div\n id={panelId}\n className=\"puzzle-color-picker__panel\"\n role=\"dialog\"\n aria-label={label ? `Choose ${label}` : \"Choose color\"}\n >\n <div\n ref={areaRef}\n id={areaId}\n className=\"puzzle-color-picker__area\"\n style={colorAreaStyle}\n onPointerDown={(event) => {\n event.currentTarget.setPointerCapture(event.pointerId);\n updateArea(event);\n }}\n onPointerMove={updateArea}\n onKeyDown={handleAreaKeyDown}\n role=\"group\"\n aria-label=\"Color saturation and brightness\"\n tabIndex={0}\n >\n <span\n className=\"puzzle-color-picker__area-saturation\"\n aria-hidden=\"true\"\n />\n\n <span\n className=\"puzzle-color-picker__area-brightness\"\n aria-hidden=\"true\"\n />\n\n <span\n className=\"puzzle-color-picker__area-indicator\"\n style={{\n left: `${hsv.s}%`,\n top: `${100 - hsv.v}%`,\n }}\n aria-hidden=\"true\"\n />\n </div>\n\n <div className=\"puzzle-color-picker__sliders\">\n <label className=\"puzzle-color-picker__slider-row\">\n <span>Hue</span>\n\n <input\n type=\"range\"\n min={0}\n max={359}\n value={Math.round(hsv.h)}\n aria-label=\"Hue\"\n onChange={(event) =>\n updateHsv({\n ...hsv,\n h: Number(event.currentTarget.value),\n })\n }\n className=\"puzzle-color-picker__hue-slider\"\n />\n </label>\n\n <label className=\"puzzle-color-picker__slider-row\">\n <span>Opacity</span>\n\n <input\n type=\"range\"\n min={0}\n max={100}\n value={Math.round(hsv.a * 100)}\n aria-label=\"Opacity\"\n onChange={(event) =>\n updateHsv({\n ...hsv,\n a: Number(event.currentTarget.value) / 100,\n })\n }\n className=\"puzzle-color-picker__opacity-slider\"\n style={\n {\n \"--puzzle-color-picker-hue\": hueColor,\n } as CSSProperties\n }\n />\n </label>\n </div>\n\n <div className=\"puzzle-color-picker__input-section\">\n <label\n htmlFor={`${generatedId}-input`}\n className=\"puzzle-color-picker__input-label\"\n >\n Color value\n </label>\n\n <div className=\"puzzle-color-picker__input-row\">\n <input\n id={`${generatedId}-input`}\n type=\"text\"\n value={inputValue}\n spellCheck={false}\n autoComplete=\"off\"\n aria-label=\"Color value\"\n aria-invalid={inputError || undefined}\n placeholder=\"#RRGGBB\"\n onChange={(event) => {\n setInputValue(event.currentTarget.value);\n setInputError(false);\n }}\n onKeyDown={(event) => {\n if (event.key === \"Enter\") {\n event.preventDefault();\n applyInput();\n }\n }}\n />\n\n <button\n type=\"button\"\n className=\"puzzle-color-picker__apply\"\n onClick={applyInput}\n >\n Apply\n </button>\n </div>\n\n {inputError && (\n <p className=\"puzzle-color-picker__error\" role=\"alert\">\n Enter a valid CSS color.\n </p>\n )}\n </div>\n\n {(clearable || colors.length > 0) && (\n <div className=\"puzzle-color-picker__swatches-section\">\n <span className=\"puzzle-color-picker__section-label\">\n Presets\n </span>\n\n <div\n className=\"puzzle-color-picker__swatches\"\n role=\"group\"\n aria-label=\"Preset colors\"\n >\n {clearable && (\n <button\n type=\"button\"\n className=\"puzzle-color-picker__swatch puzzle-color-picker__clear\"\n aria-label={clearLabel}\n aria-pressed={selectedColor === undefined}\n title={clearLabel}\n onClick={clearColor}\n >\n <span aria-hidden=\"true\" />\n </button>\n )}\n\n {colors.map((swatch, index) => {\n const color = getSwatchValue(swatch);\n const swatchLabel = getSwatchLabel(swatch);\n\n return (\n <button\n key={`${color}-${index}`}\n type=\"button\"\n className=\"puzzle-color-picker__swatch\"\n style={{\n background: resolveCssColor(color) ?? color,\n }}\n aria-label={swatchLabel}\n aria-pressed={selectedColor === color}\n title={swatchLabel}\n data-selected={selectedColor === color || undefined}\n data-dark={isColorDark(color) || undefined}\n onClick={() => selectSwatch(color)}\n />\n );\n })}\n </div>\n </div>\n )}\n </div>\n </Popout>\n\n {description && (\n <span id={descriptionId} className=\"puzzle-color-picker__description\">\n {description}\n </span>\n )}\n </div>\n );\n};\n\nexport {\n ColorPicker,\n type ColorPickerProps,\n type ColorPickerFormat,\n type ColorPickerSwatch,\n};\n"],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { ColorPickerFormat, ColorPickerProps, ColorPickerSwatch } from "./color-picker.types.cjs";
2
+ declare const ColorPicker: (props: ColorPickerProps) => import("react").JSX.Element;
3
+ export { ColorPicker, type ColorPickerFormat, type ColorPickerProps, type ColorPickerSwatch };
@@ -0,0 +1,3 @@
1
+ import { ColorPickerFormat, ColorPickerProps, ColorPickerSwatch } from "./color-picker.types.js";
2
+ declare const ColorPicker: (props: ColorPickerProps) => import("react").JSX.Element;
3
+ export { ColorPicker, type ColorPickerFormat, type ColorPickerProps, type ColorPickerSwatch };