@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.
- package/README.md +71 -70
- package/dist/components/data-display/empty-state/empty-state.css +128 -0
- package/dist/components/data-display/empty-state/empty-state.utils.cjs +6 -0
- package/dist/components/data-display/empty-state/empty-state.utils.cjs.map +1 -0
- package/dist/components/data-display/empty-state/empty-state.utils.js +6 -0
- package/dist/components/data-display/empty-state/empty-state.utils.js.map +1 -0
- package/dist/components/data-display/empty-state/index.cjs +49 -0
- package/dist/components/data-display/empty-state/index.cjs.map +1 -0
- package/dist/components/data-display/empty-state/index.d.cts +19 -0
- package/dist/components/data-display/empty-state/index.d.ts +19 -0
- package/dist/components/data-display/empty-state/index.js +44 -0
- package/dist/components/data-display/empty-state/index.js.map +1 -0
- package/dist/components/editors/text-editor/editor.cjs.map +1 -1
- package/dist/components/editors/text-editor/editor.js.map +1 -1
- package/dist/components/editors/text-editor/text-document.cjs.map +1 -1
- package/dist/components/editors/text-editor/text-document.js.map +1 -1
- package/dist/components/editors/text-editor/text-parser.cjs.map +1 -1
- package/dist/components/editors/text-editor/text-parser.js.map +1 -1
- package/dist/components/editors/text-editor/text-renderer.cjs.map +1 -1
- package/dist/components/editors/text-editor/text-renderer.js.map +1 -1
- package/dist/components/forms/autocomplete/index.cjs.map +1 -1
- package/dist/components/forms/autocomplete/index.js.map +1 -1
- package/dist/components/forms/color-picker/color-picker.css +351 -0
- package/dist/components/forms/color-picker/color-picker.types.d.cts +25 -0
- package/dist/components/forms/color-picker/color-picker.types.d.ts +25 -0
- package/dist/components/forms/color-picker/color-picker.utils.cjs +116 -0
- package/dist/components/forms/color-picker/color-picker.utils.cjs.map +1 -0
- package/dist/components/forms/color-picker/color-picker.utils.js +109 -0
- package/dist/components/forms/color-picker/color-picker.utils.js.map +1 -0
- package/dist/components/forms/color-picker/index.cjs +340 -0
- package/dist/components/forms/color-picker/index.cjs.map +1 -0
- package/dist/components/forms/color-picker/index.d.cts +3 -0
- package/dist/components/forms/color-picker/index.d.ts +3 -0
- package/dist/components/forms/color-picker/index.js +340 -0
- package/dist/components/forms/color-picker/index.js.map +1 -0
- package/dist/components/forms/file-upload/file-upload.utils.cjs.map +1 -1
- package/dist/components/forms/file-upload/file-upload.utils.js.map +1 -1
- package/dist/components/forms/input/number-input.js +5 -5
- package/dist/components/forms/input/number-input.js.map +1 -1
- package/dist/components/forms/input-group/index.d.cts +3 -0
- package/dist/components/forms/input-group/index.d.ts +3 -0
- package/dist/components/forms/input-group/input-group.cjs +18 -0
- package/dist/components/forms/input-group/input-group.cjs.map +1 -0
- package/dist/components/forms/input-group/input-group.css +62 -0
- package/dist/components/forms/input-group/input-group.d.cts +5 -0
- package/dist/components/forms/input-group/input-group.d.ts +5 -0
- package/dist/components/forms/input-group/input-group.js +18 -0
- package/dist/components/forms/input-group/input-group.js.map +1 -0
- package/dist/components/forms/input-group/input-group.types.d.cts +7 -0
- package/dist/components/forms/input-group/input-group.types.d.ts +7 -0
- package/dist/components/forms/input-group/input-group.utils.cjs +5 -0
- package/dist/components/forms/input-group/input-group.utils.cjs.map +1 -0
- package/dist/components/forms/input-group/input-group.utils.js +5 -0
- package/dist/components/forms/input-group/input-group.utils.js.map +1 -0
- package/dist/components/forms/select/index.cjs.map +1 -1
- package/dist/components/forms/select/index.js.map +1 -1
- package/dist/components/forms/slider/index.cjs +1 -1
- package/dist/components/forms/slider/index.cjs.map +1 -1
- package/dist/components/forms/slider/index.js +1 -1
- package/dist/components/forms/slider/index.js.map +1 -1
- package/dist/components/layout/resizable-panels/index.cjs +1 -1
- package/dist/components/layout/resizable-panels/index.cjs.map +1 -1
- package/dist/components/layout/resizable-panels/index.js +1 -1
- package/dist/components/layout/resizable-panels/index.js.map +1 -1
- package/dist/components/layout/resizable-panels/resizable-panels.utils.cjs.map +1 -1
- package/dist/components/layout/resizable-panels/resizable-panels.utils.js.map +1 -1
- package/dist/components/navigation/accordion/index.cjs.map +1 -1
- package/dist/components/navigation/accordion/index.js.map +1 -1
- package/dist/components/navigation/carousel/index.cjs +1 -1
- package/dist/components/navigation/carousel/index.cjs.map +1 -1
- package/dist/components/navigation/carousel/index.js +1 -1
- package/dist/components/navigation/carousel/index.js.map +1 -1
- package/dist/components/navigation/pagination/index.cjs +146 -0
- package/dist/components/navigation/pagination/index.cjs.map +1 -0
- package/dist/components/navigation/pagination/index.d.cts +3 -0
- package/dist/components/navigation/pagination/index.d.ts +3 -0
- package/dist/components/navigation/pagination/index.js +146 -0
- package/dist/components/navigation/pagination/index.js.map +1 -0
- package/dist/components/navigation/pagination/pagination.css +134 -0
- package/dist/components/navigation/pagination/pagination.types.d.cts +38 -0
- package/dist/components/navigation/pagination/pagination.types.d.ts +38 -0
- package/dist/components/navigation/pagination/pagination.utils.cjs +54 -0
- package/dist/components/navigation/pagination/pagination.utils.cjs.map +1 -0
- package/dist/components/navigation/pagination/pagination.utils.js +53 -0
- package/dist/components/navigation/pagination/pagination.utils.js.map +1 -0
- package/dist/components/navigation/tree-view/index.cjs.map +1 -1
- package/dist/components/navigation/tree-view/index.js.map +1 -1
- package/dist/components/overlays/dropdown-menu/dropdown-menu-content.cjs.map +1 -1
- package/dist/components/overlays/dropdown-menu/dropdown-menu-content.js.map +1 -1
- package/dist/components/overlays/dropdown-menu/dropdown-menu.utils.cjs.map +1 -1
- package/dist/components/overlays/dropdown-menu/dropdown-menu.utils.js.map +1 -1
- package/dist/components/utilities/preview/index.cjs +1 -1
- package/dist/components/utilities/preview/index.cjs.map +1 -1
- package/dist/components/utilities/preview/index.js +1 -1
- package/dist/components/utilities/preview/index.js.map +1 -1
- package/dist/index.cjs +110 -97
- package/dist/index.d.cts +9 -1
- package/dist/index.d.ts +9 -1
- package/dist/index.js +5 -1
- 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 };
|