ropav 0.0.8 → 0.0.9

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 (146) hide show
  1. package/dist/accordion.css +10 -10
  2. package/dist/accordion.js +2 -2
  3. package/dist/alert.css +109 -0
  4. package/dist/alert.js +168 -0
  5. package/dist/aspect-ratio.css +17 -0
  6. package/dist/aspect-ratio.js +26 -0
  7. package/dist/avatar.css +97 -0
  8. package/dist/avatar.js +161 -0
  9. package/dist/badge.css +40 -115
  10. package/dist/badge.js +19 -16
  11. package/dist/base.css +609 -180
  12. package/dist/button-link.css +161 -0
  13. package/dist/button-link.js +108 -0
  14. package/dist/button.css +50 -229
  15. package/dist/button.js +7 -9
  16. package/dist/card.css +12 -12
  17. package/dist/check.js +12 -0
  18. package/dist/checkbox.css +16 -57
  19. package/dist/checkbox.js +14 -31
  20. package/dist/collapse.css +2 -2
  21. package/dist/collapse.js +1 -1
  22. package/dist/color-input.css +108 -0
  23. package/dist/color-input.js +344 -0
  24. package/dist/color-picker.css +304 -0
  25. package/dist/color-picker.js +717 -0
  26. package/dist/color-picker2.js +18 -0
  27. package/dist/color-swatch.css +50 -0
  28. package/dist/color-swatch.js +73 -0
  29. package/dist/color.js +190 -0
  30. package/dist/componentColors.js +206 -13
  31. package/dist/components/alert/alert.d.ts +30 -0
  32. package/dist/components/alert/index.d.ts +3 -0
  33. package/dist/components/alert/index.js +2 -0
  34. package/dist/components/alert/types.d.ts +20 -0
  35. package/dist/components/alert/useAlertColor.d.ts +3 -0
  36. package/dist/components/aspect-ratio/aspect-ratio.d.ts +21 -0
  37. package/dist/components/aspect-ratio/index.d.ts +2 -0
  38. package/dist/components/aspect-ratio/index.js +2 -0
  39. package/dist/components/aspect-ratio/types.d.ts +3 -0
  40. package/dist/components/avatar/avatar.d.ts +24 -0
  41. package/dist/components/avatar/index.d.ts +3 -0
  42. package/dist/components/avatar/index.js +2 -0
  43. package/dist/components/avatar/types.d.ts +20 -0
  44. package/dist/components/avatar/useAvatarColor.d.ts +3 -0
  45. package/dist/components/badge/types.d.ts +2 -1
  46. package/dist/components/badge/useBadgeColor.d.ts +3 -8
  47. package/dist/components/button/types.d.ts +1 -0
  48. package/dist/components/button/useButtonColor.d.ts +3 -13
  49. package/dist/components/button-link/button-link.d.ts +27 -0
  50. package/dist/components/button-link/index.d.ts +2 -0
  51. package/dist/components/button-link/index.js +2 -0
  52. package/dist/components/button-link/types.d.ts +20 -0
  53. package/dist/components/checkbox/types.d.ts +1 -0
  54. package/dist/components/checkbox/useCheckbox.d.ts +2 -4
  55. package/dist/components/color-input/color-input.d.ts +29 -0
  56. package/dist/components/color-input/index.d.ts +2 -0
  57. package/dist/components/color-input/index.js +2 -0
  58. package/dist/components/color-input/types.d.ts +34 -0
  59. package/dist/components/color-input/useColorInput.d.ts +27 -0
  60. package/dist/components/color-input/useColorInputEyeDropper.d.ts +13 -0
  61. package/dist/components/color-input/useColorInputPopover.d.ts +11 -0
  62. package/dist/components/color-input/useColorInputValue.d.ts +8 -0
  63. package/dist/components/color-picker/color-picker-saturation.d.ts +21 -0
  64. package/dist/components/color-picker/color-picker-slider.d.ts +21 -0
  65. package/dist/components/color-picker/color-picker-utils.d.ts +23 -0
  66. package/dist/components/color-picker/color-picker.d.ts +23 -0
  67. package/dist/components/color-picker/index.d.ts +3 -0
  68. package/dist/components/color-picker/index.js +3 -0
  69. package/dist/components/color-picker/types.d.ts +39 -0
  70. package/dist/components/color-picker/useColorPickerDrag.d.ts +11 -0
  71. package/dist/components/color-picker/useColorPickerSwatches.d.ts +21 -0
  72. package/dist/components/color-picker/useColorPickerValue.d.ts +15 -0
  73. package/dist/components/color-swatch/color-swatch.d.ts +21 -0
  74. package/dist/components/color-swatch/index.d.ts +2 -0
  75. package/dist/components/color-swatch/index.js +2 -0
  76. package/dist/components/color-swatch/types.d.ts +6 -0
  77. package/dist/components/color-swatch/useColorSwatchColor.d.ts +5 -0
  78. package/dist/components/dropdown-menu/dropdown-menu.d.ts +2 -2
  79. package/dist/components/dropdown-menu/useDropdownMenu.d.ts +1 -1
  80. package/dist/components/dropdown-menu/useDropdownMenuNavigation.d.ts +1 -1
  81. package/dist/components/dropdown-menu/useDropdownSubmenus.d.ts +1 -1
  82. package/dist/components/field/types.d.ts +0 -2
  83. package/dist/components/field/useField.d.ts +0 -2
  84. package/dist/components/icon-button/types.d.ts +1 -0
  85. package/dist/components/input/types.d.ts +3 -0
  86. package/dist/components/number-input/index.d.ts +2 -0
  87. package/dist/components/number-input/index.js +2 -0
  88. package/dist/components/number-input/number-input.d.ts +29 -0
  89. package/dist/components/number-input/types.d.ts +34 -0
  90. package/dist/components/number-input/useNumberInput.d.ts +31 -0
  91. package/dist/components/popover/index.d.ts +1 -0
  92. package/dist/components/popover/index.js +2 -1
  93. package/dist/components/popover/types.d.ts +2 -1
  94. package/dist/components/progress/types.d.ts +1 -1
  95. package/dist/components/radio/types.d.ts +3 -0
  96. package/dist/components/radio/useRadio.d.ts +2 -4
  97. package/dist/components/select/index.d.ts +1 -1
  98. package/dist/components/select/types.d.ts +3 -0
  99. package/dist/components/slider/index.d.ts +2 -1
  100. package/dist/components/slider/index.js +2 -2
  101. package/dist/components/slider/range-slider.d.ts +45 -0
  102. package/dist/components/slider/types.d.ts +14 -2
  103. package/dist/components/slider/useRangeSlider.d.ts +59 -0
  104. package/dist/components/slider/useRangeSliderTooltipCollision.d.ts +7 -0
  105. package/dist/components/slider/useRangeSliderTooltipTransition.d.ts +4 -0
  106. package/dist/components/switch/useSwitch.d.ts +2 -3
  107. package/dist/components/tooltip/types.d.ts +1 -0
  108. package/dist/dropdown-menu.css +17 -17
  109. package/dist/field.css +15 -18
  110. package/dist/field.js +17 -35
  111. package/dist/icon-button.css +57 -236
  112. package/dist/icon-button.js +5 -6
  113. package/dist/index.d.ts +8 -0
  114. package/dist/index.js +16 -4
  115. package/dist/input.css +40 -46
  116. package/dist/input.js +39 -21
  117. package/dist/minus.js +12 -0
  118. package/dist/modal.css +9 -9
  119. package/dist/modal.js +1 -1
  120. package/dist/number-input.css +86 -0
  121. package/dist/number-input.js +350 -0
  122. package/dist/overlay.css +5 -5
  123. package/dist/overlay.js +3 -3
  124. package/dist/popover.css +54 -21
  125. package/dist/popover.js +8 -5
  126. package/dist/popover2.js +17 -0
  127. package/dist/progress.css +9 -30
  128. package/dist/progress.js +3 -6
  129. package/dist/radio.css +34 -62
  130. package/dist/radio.js +28 -16
  131. package/dist/select.css +105 -61
  132. package/dist/select.js +12 -8
  133. package/dist/slider.css +508 -41
  134. package/dist/slider.js +1122 -48
  135. package/dist/switch.css +19 -44
  136. package/dist/switch.js +4 -5
  137. package/dist/tabs.css +36 -36
  138. package/dist/tabs.js +1 -1
  139. package/dist/textarea.css +33 -25
  140. package/dist/tooltip.css +7 -35
  141. package/dist/tooltip.js +13 -8
  142. package/dist/useButtonColor.js +16 -14
  143. package/package.json +40 -8
  144. package/src/styles/_mixins.scss +25 -41
  145. package/src/styles/_tokens.scss +615 -182
  146. package/src/styles/_variables.scss +177 -49
@@ -0,0 +1,344 @@
1
+ import './color-input.css';
2
+ import { t as bem } from "./bem.js";
3
+ import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper.js";
4
+ import { t as useControlState } from "./useControlState.js";
5
+ import { t as color_swatch_default } from "./color-swatch.js";
6
+ import { n as formatColorPickerValue, r as parseColorPickerValue, t as color_picker_default } from "./color-picker.js";
7
+ import { t as input_default } from "./input.js";
8
+ import { t as popover_default } from "./popover.js";
9
+ import { child, computed, createComponent, createIf, createSlot, defineVaporComponent, extend, markRaw, nextTick, on, onMounted, ref, renderEffect, setAttr, setInsertionState, setProp, shallowRef, template, unref, withModifiers } from "vue";
10
+ //#region ~icons/lucide/crosshair
11
+ var t0$1 = template("<svg viewBox=\"0 0 24 24\"width=1.2em height=1.2em><g fill=none stroke=currentColor stroke-linecap=round stroke-linejoin=round stroke-width=2><circle cx=12 cy=12 r=10></circle><path d=\"M22 12h-4M6 12H2m10-6V2m0 20v-4\">", 3, 1);
12
+ function render(_ctx) {
13
+ return t0$1();
14
+ }
15
+ var crosshair_default = markRaw(defineVaporComponent({
16
+ name: "lucide-crosshair",
17
+ render
18
+ }));
19
+ //#endregion
20
+ //#region src/components/color-input/useColorInputEyeDropper.ts
21
+ function useColorInputEyeDropper(options) {
22
+ const eyeDropperApi = shallowRef();
23
+ const isPickingColor = ref(false);
24
+ const showEyeDropper = computed(() => options.enabled() && Boolean(eyeDropperApi.value));
25
+ onMounted(() => {
26
+ eyeDropperApi.value = window.EyeDropper;
27
+ });
28
+ async function pickScreenColor(closePicker) {
29
+ const EyeDropperApi = eyeDropperApi.value;
30
+ if (options.disabled() || isPickingColor.value || !EyeDropperApi) return;
31
+ closePicker();
32
+ isPickingColor.value = true;
33
+ try {
34
+ const color = parseColorPickerValue((await new EyeDropperApi().open()).sRGBHex);
35
+ if (!color || options.disabled()) return;
36
+ options.update(formatColorPickerValue(color, options.format()));
37
+ } catch {} finally {
38
+ isPickingColor.value = false;
39
+ }
40
+ }
41
+ return {
42
+ showEyeDropper,
43
+ isPickingColor,
44
+ pickScreenColor
45
+ };
46
+ }
47
+ //#endregion
48
+ //#region src/components/color-input/useColorInputPopover.ts
49
+ function onInputKeydown(event, popover) {
50
+ if (event.key === "ArrowDown") {
51
+ event.preventDefault();
52
+ const trigger = event.currentTarget instanceof HTMLElement ? event.currentTarget : null;
53
+ popover.open();
54
+ nextTick(() => focusPickerFromTrigger(trigger));
55
+ return;
56
+ }
57
+ if (event.key === "Escape") popover.triggerProps.onKeydown(event);
58
+ }
59
+ function focusPickerFromTrigger(trigger) {
60
+ const picker = trigger?.closest(".rp-color-input")?.querySelector(".rp-color-picker");
61
+ if (!picker) return;
62
+ (Boolean(picker.querySelector(".rp-color-picker__saturation")) ? picker.querySelector("input:not(:disabled), button:not(:disabled), [tabindex=\"0\"]") : picker.querySelector("[role=\"radio\"][aria-checked=\"true\"]") ?? picker.querySelector("[role=\"radio\"][tabindex=\"0\"]"))?.focus({ preventScroll: true });
63
+ }
64
+ function onPickerKeydown(event, popover) {
65
+ if (event.key !== "Escape") return;
66
+ const pickerRoot = event.currentTarget;
67
+ const focusTarget = pickerRoot instanceof Element ? pickerRoot.closest(".rp-color-input")?.querySelector(".rp-input__native") : void 0;
68
+ event.stopPropagation();
69
+ focusTarget?.focus({ preventScroll: true });
70
+ popover.close();
71
+ }
72
+ function useColorInputPopover(getInputAttrs) {
73
+ let closePicker;
74
+ function getInputTriggerAttrs(slotProps) {
75
+ const popover = slotProps;
76
+ const trigger = popover.triggerProps;
77
+ const attrs = getInputAttrs() ?? {};
78
+ if (!trigger["aria-haspopup"]) return attrs;
79
+ return {
80
+ ...attrs,
81
+ role: "combobox",
82
+ "aria-autocomplete": "none",
83
+ "aria-controls": trigger["aria-controls"],
84
+ "aria-expanded": trigger["aria-expanded"],
85
+ "aria-haspopup": trigger["aria-haspopup"],
86
+ onFocusin(event) {
87
+ rememberClose(popover);
88
+ popover.open();
89
+ attrs.onFocusin?.(event);
90
+ },
91
+ onClick(event) {
92
+ rememberClose(popover);
93
+ popover.open();
94
+ attrs.onClick?.(event);
95
+ },
96
+ onKeydown(event) {
97
+ onInputKeydown(event, popover);
98
+ attrs.onKeydown?.(event);
99
+ }
100
+ };
101
+ }
102
+ function rememberClose(slotProps) {
103
+ closePicker = slotProps.close;
104
+ }
105
+ function onFocusOut(event) {
106
+ const root = event.currentTarget;
107
+ const nextTarget = event.relatedTarget;
108
+ if (root instanceof HTMLElement && nextTarget instanceof Node && root.contains(nextTarget)) return;
109
+ closePicker?.();
110
+ }
111
+ return {
112
+ getInputTriggerAttrs,
113
+ rememberClose,
114
+ onPickerKeydown,
115
+ onFocusOut
116
+ };
117
+ }
118
+ //#endregion
119
+ //#region src/components/color-input/useColorInputValue.ts
120
+ function useColorInputValue(props, isControlInvalid) {
121
+ const parsedColor = computed(() => parseColorPickerValue(props.modelValue));
122
+ const previewColor = computed(() => parsedColor.value ? props.modelValue : void 0);
123
+ const hasValidSwatches = computed(() => Boolean(props.swatches?.some((swatch) => parseColorPickerValue(swatch))));
124
+ const hasInvalidColor = computed(() => props.validateColor && props.modelValue.trim().length > 0 && !parsedColor.value);
125
+ return {
126
+ previewColor,
127
+ hasValidSwatches,
128
+ hasInvalidColor,
129
+ isInvalid: computed(() => isControlInvalid() || hasInvalidColor.value),
130
+ colorValidationMessage: computed(() => hasInvalidColor.value ? props.invalidColorMessage : void 0)
131
+ };
132
+ }
133
+ //#endregion
134
+ //#region src/components/color-input/useColorInput.ts
135
+ function useColorInput(props, emit) {
136
+ const control = useControlState(props);
137
+ const value = useColorInputValue(props, () => control.invalid);
138
+ const popover = useColorInputPopover(() => props.inputAttrs);
139
+ const popoverDisabled = computed(() => control.disabled || Boolean(props.readonly) || Boolean(props.swatchesOnly) && !value.hasValidSwatches.value);
140
+ const eyeDropper = useColorInputEyeDropper({
141
+ enabled: () => props.withEyeDropper !== false && !props.swatchesOnly,
142
+ disabled: () => control.disabled || Boolean(props.readonly) || Boolean(props.swatchesOnly),
143
+ format: () => props.format ?? "hex",
144
+ update: emit.modelValue
145
+ });
146
+ const rootClass = computed(() => bem("rp-color-input", {
147
+ [`size-${props.size}`]: Boolean(props.size),
148
+ [`radius-${props.radius}`]: Boolean(props.radius),
149
+ disabled: control.disabled,
150
+ invalid: value.isInvalid.value,
151
+ valid: control.valid && !value.isInvalid.value,
152
+ readonly: props.readonly
153
+ }));
154
+ function onInputUpdate(nextValue) {
155
+ if (control.disabled || props.readonly || props.disallowInput || props.swatchesOnly) return;
156
+ emit.modelValue(nextValue);
157
+ }
158
+ function onPickerUpdate(nextValue) {
159
+ if (control.disabled || props.readonly) return;
160
+ emit.modelValue(nextValue);
161
+ }
162
+ function onOpenUpdate(open) {
163
+ emit.open(open);
164
+ }
165
+ return {
166
+ control,
167
+ rootClass,
168
+ popoverDisabled,
169
+ ...value,
170
+ ...popover,
171
+ ...eyeDropper,
172
+ onInputUpdate,
173
+ onPickerUpdate,
174
+ onOpenUpdate
175
+ };
176
+ }
177
+ //#endregion
178
+ //#region src/components/color-input/color-input.vue?vue&type=script&setup=true&vapor=true&lang.ts
179
+ var t0 = template("<span data-v-bae38f91 class=\"rp-color-input__preview rp-color-input__preview--empty\"aria-hidden=true>", 2);
180
+ var t1 = template("<button data-v-bae38f91 class=rp-color-input__eye-dropper type=button><span data-v-bae38f91 class=rp-color-input__eye-dropper-icon aria-hidden=true></button>");
181
+ //#endregion
182
+ //#region src/components/color-input/color-input.vue
183
+ var color_input_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineVaporComponent({
184
+ name: "RpColorInput",
185
+ __name: "color-input",
186
+ props: {
187
+ id: {},
188
+ name: {},
189
+ modelValue: {},
190
+ format: { default: "hex" },
191
+ size: {},
192
+ radius: {},
193
+ placeholder: { default: "" },
194
+ disabled: {
195
+ type: Boolean,
196
+ default: void 0
197
+ },
198
+ readonly: {
199
+ type: Boolean,
200
+ default: false
201
+ },
202
+ disallowInput: {
203
+ type: Boolean,
204
+ default: false
205
+ },
206
+ swatchesOnly: {
207
+ type: Boolean,
208
+ default: false
209
+ },
210
+ required: {
211
+ type: Boolean,
212
+ default: void 0
213
+ },
214
+ invalid: {
215
+ type: Boolean,
216
+ default: void 0
217
+ },
218
+ valid: {
219
+ type: Boolean,
220
+ default: void 0
221
+ },
222
+ ariaLabel: {},
223
+ describedby: {},
224
+ labelledby: {},
225
+ inputAttrs: {},
226
+ validateColor: {
227
+ type: Boolean,
228
+ default: false
229
+ },
230
+ invalidColorMessage: { default: "Enter a valid color." },
231
+ swatches: {},
232
+ swatchesPerRow: {},
233
+ placement: { default: "bottom-start" },
234
+ open: {
235
+ type: Boolean,
236
+ default: void 0
237
+ },
238
+ popoverId: {},
239
+ pickerAriaLabel: { default: "Choose color" },
240
+ withEyeDropper: {
241
+ type: Boolean,
242
+ default: true
243
+ },
244
+ eyeDropperAriaLabel: { default: "Pick color from screen" }
245
+ },
246
+ emits: ["update:modelValue", "update:open"],
247
+ setup(__props, { emit: __emit }) {
248
+ const props = __props;
249
+ const emit = __emit;
250
+ const { control, rootClass, previewColor, isInvalid, colorValidationMessage, popoverDisabled, getInputTriggerAttrs, rememberClose, onPickerKeydown, onFocusOut, showEyeDropper, isPickingColor, pickScreenColor, onInputUpdate, onPickerUpdate, onOpenUpdate } = useColorInput(props, {
251
+ modelValue: (value) => emit("update:modelValue", value),
252
+ open: (value) => emit("update:open", value)
253
+ });
254
+ return createComponent(popover_default, {
255
+ id: () => __props.popoverId,
256
+ class: () => unref(rootClass),
257
+ placement: () => __props.placement,
258
+ open: () => __props.open,
259
+ disabled: () => unref(popoverDisabled),
260
+ "aria-label": () => __props.pickerAriaLabel,
261
+ onFocusout: () => unref(onFocusOut),
262
+ "onUpdate:open": () => unref(onOpenUpdate)
263
+ }, {
264
+ "default": (slotProps) => {
265
+ return createComponent(input_default, {
266
+ id: () => unref(control).id,
267
+ name: () => __props.name,
268
+ "model-value": () => __props.modelValue,
269
+ type: "text",
270
+ size: () => __props.size,
271
+ radius: () => __props.radius,
272
+ placeholder: () => __props.placeholder,
273
+ disabled: () => unref(control).disabled || void 0,
274
+ readonly: () => __props.readonly || __props.disallowInput || __props.swatchesOnly || void 0,
275
+ required: () => unref(control).required || void 0,
276
+ invalid: () => unref(isInvalid) || void 0,
277
+ valid: () => unref(control).valid && !unref(isInvalid) ? true : void 0,
278
+ "aria-label": () => __props.ariaLabel,
279
+ describedby: () => __props.describedby,
280
+ labelledby: () => __props.labelledby,
281
+ "input-attrs": () => unref(getInputTriggerAttrs)(slotProps),
282
+ "validation-message": () => unref(colorValidationMessage),
283
+ "onUpdate:modelValue": () => unref(onInputUpdate)
284
+ }, {
285
+ "left": extend(() => {
286
+ return createSlot("left", {
287
+ color: () => unref(previewColor),
288
+ empty: () => !unref(previewColor)
289
+ }, () => {
290
+ return createIf(() => unref(previewColor), () => {
291
+ return createComponent(color_swatch_default, {
292
+ class: "rp-color-input__preview",
293
+ color: () => unref(previewColor),
294
+ size: "var(--_rp-color-input-preview-size)",
295
+ "aria-hidden": "true"
296
+ });
297
+ }, () => {
298
+ return t0();
299
+ }, 389);
300
+ }, 1);
301
+ }, { _: 8 }),
302
+ $: [() => unref(showEyeDropper) ? {
303
+ name: "right",
304
+ fn: () => {
305
+ const n13 = t1();
306
+ const n12 = child(n13);
307
+ renderEffect(() => {
308
+ const _isPickingColor = unref(isPickingColor);
309
+ setProp(n13, "disabled", unref(control).disabled || __props.readonly || _isPickingColor);
310
+ setAttr(n13, "aria-label", __props.eyeDropperAriaLabel);
311
+ setAttr(n13, "aria-busy", _isPickingColor || void 0);
312
+ });
313
+ setInsertionState(n12, null, 0);
314
+ createSlot("eye-dropper-icon", null, () => {
315
+ return createComponent(unref(crosshair_default));
316
+ }, 1);
317
+ on(n13, "click", withModifiers(() => unref(pickScreenColor)(slotProps.close), ["stop"]));
318
+ return n13;
319
+ }
320
+ } : void 0]
321
+ });
322
+ },
323
+ "content": (slotProps) => {
324
+ const _on_focusin = () => unref(rememberClose)(slotProps);
325
+ const _on_keydown = ($event) => unref(onPickerKeydown)($event, slotProps);
326
+ return createComponent(color_picker_default, {
327
+ "model-value": () => __props.modelValue,
328
+ format: () => __props.format,
329
+ size: () => __props.size,
330
+ readonly: () => __props.readonly,
331
+ "with-picker": () => !__props.swatchesOnly,
332
+ swatches: () => __props.swatches,
333
+ "swatches-per-row": () => __props.swatchesPerRow,
334
+ "aria-label": () => __props.pickerAriaLabel,
335
+ onFocusin: () => _on_focusin,
336
+ onKeydown: () => _on_keydown,
337
+ "onUpdate:modelValue": () => unref(onPickerUpdate)
338
+ });
339
+ }
340
+ }, true);
341
+ }
342
+ }), [["__scopeId", "data-v-bae38f91"]]);
343
+ //#endregion
344
+ export { color_input_default as t };
@@ -0,0 +1,304 @@
1
+ .rp-color-picker__saturation[data-v-0ff88f34] {
2
+ position: relative;
3
+ box-sizing: border-box;
4
+ width: var(--_rp-color-picker-control-width);
5
+ height: var(--_rp-color-picker-saturation-control-height);
6
+ margin-block: var(--_rp-color-picker-thumb-radius);
7
+ margin-inline: var(--_rp-color-picker-thumb-radius);
8
+ overflow: visible;
9
+ touch-action: none;
10
+ cursor: crosshair;
11
+ }
12
+ .rp-color-picker__saturation[data-v-0ff88f34]:focus-visible {
13
+ outline: none;
14
+ }
15
+ .rp-color-picker__saturation[data-readonly=true][data-v-0ff88f34] {
16
+ cursor: default;
17
+ }
18
+ .rp-color-picker__axis-input[data-v-0ff88f34] {
19
+ position: absolute;
20
+ width: 1px;
21
+ height: 1px;
22
+ padding: 0;
23
+ margin: -1px;
24
+ overflow: hidden;
25
+ clip: rect(0, 0, 0, 0);
26
+ white-space: nowrap;
27
+ border-width: 0;
28
+ pointer-events: none;
29
+ }
30
+ .rp-color-picker__axis-input:focus-visible ~ .rp-color-picker__handle[data-v-0ff88f34] {
31
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0.6), 0 0 0 var(--rp-border-width-medium) var(--rp-color-focus-ring);
32
+ }
33
+ .rp-color-picker__surface[data-v-0ff88f34] {
34
+ position: absolute;
35
+ inset: calc(-1 * var(--_rp-color-picker-thumb-radius));
36
+ overflow: hidden;
37
+ border-radius: var(--_rp-color-picker-saturation-radius);
38
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0.3);
39
+ background: linear-gradient(to top, #000 0 var(--_rp-color-picker-thumb-radius), rgba(0, 0, 0, 0) calc(100% - var(--_rp-color-picker-thumb-radius)) 100%), linear-gradient(to right, #fff 0 var(--_rp-color-picker-thumb-radius), rgba(255, 255, 255, 0) calc(100% - var(--_rp-color-picker-thumb-radius)) 100%), hsl(var(--_rp-color-picker-hue), 100%, 50%);
40
+ }
41
+ .rp-color-picker__handle[data-v-0ff88f34] {
42
+ position: absolute;
43
+ top: var(--_rp-color-picker-saturation-y);
44
+ left: var(--_rp-color-picker-saturation-x);
45
+ box-sizing: border-box;
46
+ width: var(--_rp-color-picker-thumb-size);
47
+ height: var(--_rp-color-picker-thumb-size);
48
+ z-index: 1;
49
+ background-color: var(--_rp-color-picker-current);
50
+ border: 2px solid var(--rp-color-white);
51
+ border-radius: var(--rp-radius-full);
52
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0.6);
53
+ pointer-events: none;
54
+ transform: translate(-50%, -50%);
55
+ }.rp-color-picker__hue[data-v-d0c81f73], .rp-color-picker__opacity[data-v-d0c81f73] {
56
+ position: relative;
57
+ box-sizing: border-box;
58
+ width: var(--_rp-color-picker-control-width);
59
+ height: max(var(--_rp-color-picker-target-min-size), var(--_rp-color-picker-hue-height), var(--_rp-color-picker-thumb-size));
60
+ margin-inline: var(--_rp-color-picker-thumb-radius);
61
+ overflow: visible;
62
+ touch-action: none;
63
+ cursor: pointer;
64
+ }
65
+ .rp-color-picker__hue[data-v-d0c81f73]:focus-visible, .rp-color-picker__opacity[data-v-d0c81f73]:focus-visible {
66
+ outline: none;
67
+ }
68
+ .rp-color-picker__hue[data-readonly=true][data-v-d0c81f73], .rp-color-picker__opacity[data-readonly=true][data-v-d0c81f73] {
69
+ cursor: default;
70
+ }
71
+ .rp-color-picker__hue:focus-visible .rp-color-picker__slider-handle[data-v-d0c81f73], .rp-color-picker__opacity:focus-visible .rp-color-picker__slider-handle[data-v-d0c81f73] {
72
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2), 0 0 0 var(--rp-border-width-medium) var(--rp-color-focus-ring);
73
+ }
74
+ .rp-color-picker__hue[data-v-d0c81f73] {
75
+ margin-block-start: var(--_rp-color-picker-saturation-slider-gap);
76
+ }
77
+ .rp-color-picker__opacity[data-v-d0c81f73] {
78
+ margin-block-start: var(--_rp-color-picker-slider-gap);
79
+ }
80
+ .rp-color-picker__slider-surface[data-v-d0c81f73] {
81
+ position: absolute;
82
+ top: 50%;
83
+ right: calc(-1 * var(--_rp-color-picker-thumb-radius));
84
+ left: calc(-1 * var(--_rp-color-picker-thumb-radius));
85
+ height: var(--_rp-color-picker-hue-height);
86
+ overflow: hidden;
87
+ border-radius: var(--rp-radius-full);
88
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0.3);
89
+ transform: translateY(-50%);
90
+ }
91
+ .rp-color-picker__hue-surface[data-v-d0c81f73] {
92
+ background: hsl(0, 100%, 50%);
93
+ }
94
+ .rp-color-picker__hue-surface[data-v-d0c81f73]::before {
95
+ position: absolute;
96
+ inset: 0 var(--_rp-color-picker-thumb-radius);
97
+ content: "";
98
+ background: linear-gradient(to right, hsl(0, 100%, 50%), hsl(60, 100%, 50%), hsl(120, 100%, 50%), hsl(180, 100%, 50%), hsl(240, 100%, 50%), hsl(300, 100%, 50%), hsl(0, 100%, 50%));
99
+ }
100
+ .rp-color-picker__opacity-surface[data-v-d0c81f73] {
101
+ background: linear-gradient(to right, rgba(255, 255, 255, 0), var(--_rp-color-picker-opacity-color)), var(--_rp-color-picker-checkerboard);
102
+ background-size: auto, var(--_rp-color-picker-checkerboard-size);
103
+ }
104
+ .rp-color-picker__slider-handle[data-v-d0c81f73] {
105
+ position: absolute;
106
+ top: 50%;
107
+ left: var(--_rp-color-picker-slider-x);
108
+ box-sizing: border-box;
109
+ width: var(--_rp-color-picker-thumb-size);
110
+ height: var(--_rp-color-picker-thumb-size);
111
+ z-index: 1;
112
+ border: 2px solid var(--rp-color-white);
113
+ border-radius: var(--rp-radius-full);
114
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);
115
+ pointer-events: none;
116
+ transform: translate(-50%, -50%);
117
+ }
118
+ .rp-color-picker__hue-handle[data-v-d0c81f73] {
119
+ background-color: hsl(var(--_rp-color-picker-hue), 100%, 50%);
120
+ }
121
+ .rp-color-picker__opacity-handle[data-v-d0c81f73] {
122
+ background-color: var(--_rp-color-picker-opacity-color);
123
+ }.rp-color-picker[data-v-38eeea2b] {
124
+ --_rp-color-picker-saturation-width: 220px;
125
+ --_rp-color-picker-saturation-height: 160px;
126
+ --_rp-color-picker-hue-height: 14px;
127
+ --_rp-color-picker-saturation-slider-gap: var(--rp-spacing-4);
128
+ --_rp-color-picker-slider-gap: var(--rp-spacing-2);
129
+ --_rp-color-picker-header-gap: var(--rp-spacing-2);
130
+ --_rp-color-picker-swatches-gap: var(--rp-spacing-1);
131
+ --_rp-color-picker-swatches-margin: var(--rp-spacing-3);
132
+ --_rp-color-picker-swatch-size: 24px;
133
+ --_rp-color-picker-thumb-size: 14px;
134
+ --_rp-color-picker-target-min-size: 24px;
135
+ --_rp-color-picker-font-size: var(--rp-font-size-md);
136
+ --_rp-color-picker-thumb-radius: calc(var(--_rp-color-picker-thumb-size) / 2);
137
+ --_rp-color-picker-saturation-radius: var(--_rp-color-picker-thumb-radius);
138
+ --_rp-color-picker-size: var(--_rp-color-picker-saturation-width);
139
+ --_rp-color-picker-control-width: max(0px, calc(100% - var(--_rp-color-picker-thumb-size)));
140
+ --_rp-color-picker-saturation-control-height: max(
141
+ 0px,
142
+ calc(var(--_rp-color-picker-saturation-height) - var(--_rp-color-picker-thumb-size))
143
+ );
144
+ --_rp-color-picker-checkerboard-tile: var(--rp-color-gray-3);
145
+ --_rp-color-picker-checkerboard-tile-alt: var(--rp-color-white);
146
+ --_rp-color-picker-checkerboard: conic-gradient(
147
+ var(--_rp-color-picker-checkerboard-tile) 25%,
148
+ var(--_rp-color-picker-checkerboard-tile-alt) 0 50%,
149
+ var(--_rp-color-picker-checkerboard-tile) 0 75%,
150
+ var(--_rp-color-picker-checkerboard-tile-alt) 0
151
+ );
152
+ --_rp-color-picker-checkerboard-size: var(--_rp-color-picker-hue-height)
153
+ var(--_rp-color-picker-hue-height);
154
+ display: inline-grid;
155
+ box-sizing: border-box;
156
+ width: var(--_rp-color-picker-size);
157
+ max-width: 100%;
158
+ row-gap: 0;
159
+ font-family: var(--rp-font-family);
160
+ font-size: var(--_rp-color-picker-font-size);
161
+ font-weight: var(--rp-font-weight-normal);
162
+ color: var(--rp-color-text);
163
+ user-select: none;
164
+ vertical-align: top;
165
+ }
166
+ html.dark .rp-color-picker[data-v-38eeea2b], [data-rp-color-scheme=dark] .rp-color-picker[data-v-38eeea2b] {
167
+ --_rp-color-picker-checkerboard-tile: var(--rp-color-dark-6);
168
+ --_rp-color-picker-checkerboard-tile-alt: var(--rp-color-dark-4);
169
+ }
170
+ .rp-color-picker--readonly[data-v-38eeea2b] {
171
+ cursor: default;
172
+ }
173
+ .rp-color-picker--size-xs[data-v-38eeea2b] {
174
+ --_rp-color-picker-saturation-width: 160px;
175
+ --_rp-color-picker-saturation-height: 120px;
176
+ --_rp-color-picker-hue-height: 10px;
177
+ --_rp-color-picker-saturation-slider-gap: 8px;
178
+ --_rp-color-picker-slider-gap: 4px;
179
+ --_rp-color-picker-header-gap: 4px;
180
+ --_rp-color-picker-swatches-gap: 2px;
181
+ --_rp-color-picker-swatches-margin: 8px;
182
+ --_rp-color-picker-swatch-size: 16px;
183
+ --_rp-color-picker-thumb-size: 10px;
184
+ --_rp-color-picker-font-size: var(--rp-font-size-xs);
185
+ }
186
+ .rp-color-picker--size-sm[data-v-38eeea2b] {
187
+ --_rp-color-picker-saturation-width: 190px;
188
+ --_rp-color-picker-saturation-height: 140px;
189
+ --_rp-color-picker-hue-height: 12px;
190
+ --_rp-color-picker-saturation-slider-gap: 12px;
191
+ --_rp-color-picker-slider-gap: 6px;
192
+ --_rp-color-picker-header-gap: 6px;
193
+ --_rp-color-picker-swatches-gap: 3px;
194
+ --_rp-color-picker-swatches-margin: 10px;
195
+ --_rp-color-picker-swatch-size: 20px;
196
+ --_rp-color-picker-thumb-size: 12px;
197
+ --_rp-color-picker-font-size: var(--rp-font-size-sm);
198
+ }
199
+ .rp-color-picker--size-md[data-v-38eeea2b] {
200
+ --_rp-color-picker-saturation-width: 220px;
201
+ --_rp-color-picker-saturation-height: 160px;
202
+ --_rp-color-picker-hue-height: 14px;
203
+ --_rp-color-picker-saturation-slider-gap: 16px;
204
+ --_rp-color-picker-slider-gap: 8px;
205
+ --_rp-color-picker-header-gap: 8px;
206
+ --_rp-color-picker-swatches-gap: 4px;
207
+ --_rp-color-picker-swatches-margin: 12px;
208
+ --_rp-color-picker-swatch-size: 24px;
209
+ --_rp-color-picker-thumb-size: 14px;
210
+ --_rp-color-picker-font-size: var(--rp-font-size-md);
211
+ }
212
+ .rp-color-picker--size-lg[data-v-38eeea2b] {
213
+ --_rp-color-picker-saturation-width: 260px;
214
+ --_rp-color-picker-saturation-height: 190px;
215
+ --_rp-color-picker-hue-height: 18px;
216
+ --_rp-color-picker-saturation-slider-gap: 20px;
217
+ --_rp-color-picker-slider-gap: 10px;
218
+ --_rp-color-picker-header-gap: 10px;
219
+ --_rp-color-picker-swatches-gap: 5px;
220
+ --_rp-color-picker-swatches-margin: 16px;
221
+ --_rp-color-picker-swatch-size: 30px;
222
+ --_rp-color-picker-thumb-size: 18px;
223
+ --_rp-color-picker-font-size: var(--rp-font-size-lg);
224
+ }
225
+ .rp-color-picker--size-xl[data-v-38eeea2b] {
226
+ --_rp-color-picker-saturation-width: 300px;
227
+ --_rp-color-picker-saturation-height: 220px;
228
+ --_rp-color-picker-hue-height: 22px;
229
+ --_rp-color-picker-saturation-slider-gap: 24px;
230
+ --_rp-color-picker-slider-gap: 12px;
231
+ --_rp-color-picker-header-gap: 12px;
232
+ --_rp-color-picker-swatches-gap: 6px;
233
+ --_rp-color-picker-swatches-margin: 20px;
234
+ --_rp-color-picker-swatch-size: 36px;
235
+ --_rp-color-picker-thumb-size: 22px;
236
+ --_rp-color-picker-font-size: var(--rp-font-size-xl);
237
+ }
238
+ .rp-color-picker__label[data-v-38eeea2b] {
239
+ display: block;
240
+ overflow: hidden;
241
+ color: var(--rp-color-text);
242
+ line-height: var(--rp-line-height-sm);
243
+ text-overflow: ellipsis;
244
+ white-space: nowrap;
245
+ }
246
+ .rp-color-picker__header[data-v-38eeea2b] {
247
+ margin-block-end: var(--_rp-color-picker-header-gap);
248
+ }
249
+ .rp-color-picker__swatches[data-v-38eeea2b] {
250
+ display: flex;
251
+ flex-wrap: wrap;
252
+ gap: var(--_rp-color-picker-swatches-gap);
253
+ }
254
+ .rp-color-picker__swatches[data-with-picker=true][data-v-38eeea2b] {
255
+ margin-block-start: var(--_rp-color-picker-swatches-margin);
256
+ }
257
+ .rp-color-picker__swatches[data-fill=true][data-v-38eeea2b] {
258
+ display: grid;
259
+ grid-template-columns: repeat(var(--_rp-color-picker-swatches-per-row), minmax(var(--_rp-color-picker-target-min-size), 1fr));
260
+ width: 100%;
261
+ overflow-x: auto;
262
+ }
263
+ .rp-color-picker__swatch[data-v-38eeea2b] {
264
+ position: relative;
265
+ box-sizing: border-box;
266
+ display: inline-flex;
267
+ align-items: center;
268
+ justify-content: center;
269
+ min-width: var(--_rp-color-picker-target-min-size);
270
+ min-height: var(--_rp-color-picker-target-min-size);
271
+ padding: 0;
272
+ flex: 0 0 auto;
273
+ appearance: none;
274
+ cursor: pointer;
275
+ background: transparent;
276
+ border: 0;
277
+ border-radius: var(--rp-radius-sm);
278
+ box-shadow: none;
279
+ line-height: 0;
280
+ }
281
+ .rp-color-picker__swatch[data-v-38eeea2b]:focus-visible {
282
+ outline: none;
283
+ border-color: var(--rp-color-control-border-focus);
284
+ box-shadow: 0 0 0 var(--rp-border-width-medium) var(--rp-color-focus-ring);
285
+ }
286
+ .rp-color-picker__swatch[data-v-38eeea2b]:disabled {
287
+ opacity: var(--rp-opacity-disabled);
288
+ cursor: not-allowed;
289
+ cursor: default;
290
+ }
291
+ .rp-color-picker__swatch[data-v-38eeea2b] > .rp-color-swatch {
292
+ pointer-events: none;
293
+ }
294
+ .rp-color-picker__swatch-check[data-v-38eeea2b] {
295
+ stroke-width: 3;
296
+ }
297
+ .rp-color-picker__swatches[data-fill=true] .rp-color-picker__swatch[data-v-38eeea2b] {
298
+ width: 100%;
299
+ aspect-ratio: 1;
300
+ }
301
+ .rp-color-picker__swatches[data-fill=true] .rp-color-picker__swatch[data-v-38eeea2b] > .rp-color-swatch {
302
+ width: 100%;
303
+ height: 100%;
304
+ }