@pathscale/ui 1.1.0 → 1.1.1

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 (38) hide show
  1. package/dist/components/color-area/ColorArea.css +54 -0
  2. package/dist/components/color-area/ColorArea.d.ts +15 -0
  3. package/dist/components/color-area/ColorArea.js +211 -0
  4. package/dist/components/color-area/index.d.ts +3 -0
  5. package/dist/components/color-area/index.js +3 -0
  6. package/dist/components/color-field/ColorField.css +88 -0
  7. package/dist/components/color-field/ColorField.d.ts +15 -0
  8. package/dist/components/color-field/ColorField.js +165 -0
  9. package/dist/components/color-field/index.d.ts +3 -0
  10. package/dist/components/color-field/index.js +3 -0
  11. package/dist/components/color-picker/ColorPicker.css +28 -0
  12. package/dist/components/color-picker/ColorPicker.d.ts +33 -0
  13. package/dist/components/color-picker/ColorPicker.js +369 -0
  14. package/dist/components/color-picker/index.d.ts +2 -0
  15. package/dist/components/color-picker/index.js +8 -0
  16. package/dist/components/color-slider/ColorSlider.css +57 -0
  17. package/dist/components/color-slider/ColorSlider.d.ts +13 -0
  18. package/dist/components/color-slider/ColorSlider.js +178 -0
  19. package/dist/components/color-slider/index.d.ts +3 -0
  20. package/dist/components/color-slider/index.js +3 -0
  21. package/dist/components/color-swatch/ColorSwatch.css +84 -0
  22. package/dist/components/color-swatch/ColorSwatch.d.ts +17 -0
  23. package/dist/components/color-swatch/ColorSwatch.js +143 -0
  24. package/dist/components/color-swatch/index.d.ts +3 -0
  25. package/dist/components/color-swatch/index.js +3 -0
  26. package/dist/components/color-swatch-picker/ColorSwatchPicker.css +12 -0
  27. package/dist/components/color-swatch-picker/ColorSwatchPicker.d.ts +18 -0
  28. package/dist/components/color-swatch-picker/ColorSwatchPicker.js +109 -0
  29. package/dist/components/color-swatch-picker/index.d.ts +3 -0
  30. package/dist/components/color-swatch-picker/index.js +5 -0
  31. package/dist/components/colorpicker/ColorWheelFlower.css +147 -0
  32. package/dist/components/colorpicker/ColorWheelFlower.d.ts +1 -0
  33. package/dist/components/colorpicker/ColorWheelFlower.js +302 -243
  34. package/dist/components/tabs/Tabs.css +1 -0
  35. package/dist/components/theme-color-picker/ThemeColorPicker.js +50 -29
  36. package/dist/index.d.ts +14 -2
  37. package/dist/index.js +14 -2
  38. package/package.json +1 -1
@@ -0,0 +1,84 @@
1
+ @layer components {
2
+ .color-swatch {
3
+ position: relative;
4
+ box-sizing: border-box;
5
+ width: 2rem;
6
+ height: 2rem;
7
+ flex-shrink: 0;
8
+ cursor: pointer;
9
+ background:
10
+ linear-gradient(var(--color-swatch-current), var(--color-swatch-current)),
11
+ repeating-conic-gradient(#efefef 0% 25%, #f7f7f7 0% 50%) 50% / 1rem 1rem;
12
+ box-shadow: inset 0 0 0 1px oklch(0% 0 0 / 0.14);
13
+ transition:
14
+ transform 140ms ease,
15
+ box-shadow 140ms ease,
16
+ opacity 140ms ease;
17
+ outline: none;
18
+ }
19
+
20
+ .color-swatch:hover:not([data-disabled="true"]) {
21
+ transform: scale(1.03);
22
+ }
23
+
24
+ .color-swatch[data-selected="true"] {
25
+ box-shadow:
26
+ 0 0 0 2px var(--color-base-100),
27
+ 0 0 0 4px var(--color-accent),
28
+ inset 0 0 0 1px oklch(0% 0 0 / 0.14);
29
+ }
30
+
31
+ .color-swatch:focus-visible,
32
+ .color-swatch[data-focus-visible="true"] {
33
+ box-shadow:
34
+ 0 0 0 3px color-mix(in oklab, var(--color-accent) 24%, transparent),
35
+ inset 0 0 0 1px oklch(0% 0 0 / 0.14);
36
+ }
37
+
38
+ .color-swatch[data-selected="true"]:focus-visible,
39
+ .color-swatch[data-selected="true"][data-focus-visible="true"] {
40
+ box-shadow:
41
+ 0 0 0 2px var(--color-base-100),
42
+ 0 0 0 4px var(--color-accent),
43
+ 0 0 0 7px color-mix(in oklab, var(--color-accent) 24%, transparent),
44
+ inset 0 0 0 1px oklch(0% 0 0 / 0.14);
45
+ }
46
+
47
+ .color-swatch[data-disabled="true"] {
48
+ cursor: not-allowed;
49
+ opacity: 0.45;
50
+ }
51
+
52
+ .color-swatch--circle {
53
+ border-radius: 9999px;
54
+ }
55
+
56
+ .color-swatch--square {
57
+ border-radius: 0.5rem;
58
+ }
59
+
60
+ .color-swatch--xs {
61
+ width: 1rem;
62
+ height: 1rem;
63
+ }
64
+
65
+ .color-swatch--sm {
66
+ width: 1.5rem;
67
+ height: 1.5rem;
68
+ }
69
+
70
+ .color-swatch--md {
71
+ width: 2rem;
72
+ height: 2rem;
73
+ }
74
+
75
+ .color-swatch--lg {
76
+ width: 2.25rem;
77
+ height: 2.25rem;
78
+ }
79
+
80
+ .color-swatch--xl {
81
+ width: 2.5rem;
82
+ height: 2.5rem;
83
+ }
84
+ }
@@ -0,0 +1,17 @@
1
+ import "./ColorSwatch.css";
2
+ import { type Component, type JSX } from "solid-js";
3
+ import type { IComponentBaseProps } from "../types";
4
+ export type ColorSwatchShape = "circle" | "square";
5
+ export type ColorSwatchSize = "xs" | "sm" | "md" | "lg" | "xl";
6
+ export type ColorSwatchProps = Omit<JSX.ButtonHTMLAttributes<HTMLButtonElement>, "onChange" | "onSelect"> & IComponentBaseProps & {
7
+ color: string;
8
+ colorName?: string;
9
+ shape?: ColorSwatchShape;
10
+ size?: ColorSwatchSize;
11
+ isSelected?: boolean;
12
+ isDisabled?: boolean;
13
+ onSelect?: (color: string) => void;
14
+ onChange?: (color: string) => void;
15
+ };
16
+ declare const ColorSwatch: Component<ColorSwatchProps>;
17
+ export default ColorSwatch;
@@ -0,0 +1,143 @@
1
+ import * as __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__ from "solid-js/web";
2
+ import "./ColorSwatch.css";
3
+ import * as __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__ from "solid-js";
4
+ import * as __WEBPACK_EXTERNAL_MODULE_tailwind_merge_e05e3e95__ from "tailwind-merge";
5
+ import * as __WEBPACK_EXTERNAL_MODULE__color_swatch_picker_ColorSwatchPicker_js_8e90244a__ from "../color-swatch-picker/ColorSwatchPicker.js";
6
+ var _tmpl$ = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)("<button>");
7
+ const invokeEventHandler = (handler, event)=>{
8
+ if ("function" == typeof handler) return void handler(event);
9
+ if (Array.isArray(handler) && "function" == typeof handler[0]) handler[0](handler[1], event);
10
+ };
11
+ const shapeClassMap = {
12
+ circle: "color-swatch--circle",
13
+ square: "color-swatch--square"
14
+ };
15
+ const sizeClassMap = {
16
+ xs: "color-swatch--xs",
17
+ sm: "color-swatch--sm",
18
+ md: "color-swatch--md",
19
+ lg: "color-swatch--lg",
20
+ xl: "color-swatch--xl"
21
+ };
22
+ const ColorSwatch = (props)=>{
23
+ const picker = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.useContext)(__WEBPACK_EXTERNAL_MODULE__color_swatch_picker_ColorSwatchPicker_js_8e90244a__.ColorSwatchPickerContext);
24
+ const [local, others] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.splitProps)(props, [
25
+ "class",
26
+ "className",
27
+ "color",
28
+ "colorName",
29
+ "shape",
30
+ "size",
31
+ "isSelected",
32
+ "isDisabled",
33
+ "disabled",
34
+ "onSelect",
35
+ "onChange",
36
+ "onClick",
37
+ "onKeyDown",
38
+ "style",
39
+ "dataTheme",
40
+ "aria-label",
41
+ "role",
42
+ "tabIndex"
43
+ ]);
44
+ const isInsidePicker = ()=>Boolean(picker);
45
+ const hasPickerSelection = ()=>picker ? void 0 !== picker.value() : false;
46
+ const shape = ()=>local.shape ?? "circle";
47
+ const size = ()=>local.size ?? "md";
48
+ const isDisabled = ()=>{
49
+ const localDisabled = Boolean(local.isDisabled) || Boolean(local.disabled);
50
+ const pickerDisabled = picker ? picker.isDisabled() : false;
51
+ return localDisabled || pickerDisabled;
52
+ };
53
+ const isSelected = ()=>{
54
+ if (void 0 !== local.isSelected) return Boolean(local.isSelected);
55
+ if (!picker) return false;
56
+ return picker.value() === local.color;
57
+ };
58
+ const emitSelection = ()=>{
59
+ local.onSelect?.(local.color);
60
+ local.onChange?.(local.color);
61
+ picker?.select(local.color);
62
+ };
63
+ const handleClick = (event)=>{
64
+ invokeEventHandler(local.onClick, event);
65
+ if (event.defaultPrevented || isDisabled()) return;
66
+ emitSelection();
67
+ };
68
+ const handleKeyDown = (event)=>{
69
+ invokeEventHandler(local.onKeyDown, event);
70
+ if (event.defaultPrevented || isDisabled()) return;
71
+ if ("Enter" === event.key || " " === event.key) {
72
+ event.preventDefault();
73
+ emitSelection();
74
+ }
75
+ };
76
+ const style = ()=>{
77
+ const userStyle = local.style;
78
+ return {
79
+ "--color-swatch-current": local.color,
80
+ ...userStyle
81
+ };
82
+ };
83
+ const tabIndex = ()=>{
84
+ if (void 0 !== local.tabIndex) return local.tabIndex;
85
+ if (!isInsidePicker()) return;
86
+ if (!hasPickerSelection()) return 0;
87
+ return isSelected() ? 0 : -1;
88
+ };
89
+ return (()=>{
90
+ var _el$ = _tmpl$();
91
+ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.spread)(_el$, (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.mergeProps)(others, {
92
+ type: "button",
93
+ get ["class"] () {
94
+ return (0, __WEBPACK_EXTERNAL_MODULE_tailwind_merge_e05e3e95__.twMerge)("color-swatch", shapeClassMap[shape()], sizeClassMap[size()], local.class, local.className);
95
+ },
96
+ get ["data-theme"] () {
97
+ return local.dataTheme;
98
+ },
99
+ "data-slot": "color-swatch",
100
+ get ["data-color-value"] () {
101
+ return local.color;
102
+ },
103
+ get ["data-picker-item"] () {
104
+ return isInsidePicker() ? "true" : "false";
105
+ },
106
+ get ["data-selected"] () {
107
+ return isSelected() ? "true" : "false";
108
+ },
109
+ get ["data-disabled"] () {
110
+ return isDisabled() ? "true" : "false";
111
+ },
112
+ get disabled () {
113
+ return isDisabled();
114
+ },
115
+ get role () {
116
+ return local.role ?? (isInsidePicker() ? "radio" : "option");
117
+ },
118
+ get tabIndex () {
119
+ return tabIndex();
120
+ },
121
+ get ["aria-label"] () {
122
+ return local["aria-label"] ?? local.colorName ?? `Color ${local.color}`;
123
+ },
124
+ get ["aria-selected"] () {
125
+ return isSelected() ? "true" : "false";
126
+ },
127
+ get ["aria-checked"] () {
128
+ return (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.memo)(()=>!!isInsidePicker())() ? isSelected() ? "true" : "false" : void 0;
129
+ },
130
+ get ["aria-disabled"] () {
131
+ return isDisabled() ? "true" : "false";
132
+ },
133
+ get style () {
134
+ return style();
135
+ },
136
+ onClick: handleClick,
137
+ onKeyDown: handleKeyDown
138
+ }), false, false);
139
+ return _el$;
140
+ })();
141
+ };
142
+ const color_swatch_ColorSwatch = ColorSwatch;
143
+ export { color_swatch_ColorSwatch as default };
@@ -0,0 +1,3 @@
1
+ import ColorSwatch from "./ColorSwatch";
2
+ export type { ColorSwatchProps, ColorSwatchShape, ColorSwatchSize } from "./ColorSwatch";
3
+ export default ColorSwatch;
@@ -0,0 +1,3 @@
1
+ import * as __WEBPACK_EXTERNAL_MODULE__ColorSwatch_js_d7c5f616__ from "./ColorSwatch.js";
2
+ const color_swatch = __WEBPACK_EXTERNAL_MODULE__ColorSwatch_js_d7c5f616__["default"];
3
+ export { color_swatch as default };
@@ -0,0 +1,12 @@
1
+ @layer components {
2
+ .color-swatch-picker {
3
+ display: inline-flex;
4
+ flex-wrap: wrap;
5
+ align-items: center;
6
+ gap: 0.5rem;
7
+ }
8
+
9
+ .color-swatch-picker[data-disabled="true"] {
10
+ opacity: 0.7;
11
+ }
12
+ }
@@ -0,0 +1,18 @@
1
+ import "./ColorSwatchPicker.css";
2
+ import { type Accessor, type Component, type JSX } from "solid-js";
3
+ import type { IComponentBaseProps } from "../types";
4
+ export type ColorSwatchPickerContextValue = {
5
+ value: Accessor<string | undefined>;
6
+ isDisabled: Accessor<boolean>;
7
+ select: (value: string) => void;
8
+ };
9
+ export declare const ColorSwatchPickerContext: import("solid-js").Context<ColorSwatchPickerContextValue | undefined>;
10
+ export type ColorSwatchPickerProps = Omit<JSX.HTMLAttributes<HTMLDivElement>, "onChange"> & IComponentBaseProps & {
11
+ children: JSX.Element;
12
+ value?: string;
13
+ defaultValue?: string;
14
+ onChange?: (value: string) => void;
15
+ isDisabled?: boolean;
16
+ };
17
+ declare const ColorSwatchPicker: Component<ColorSwatchPickerProps>;
18
+ export { ColorSwatchPicker as default, ColorSwatchPicker };
@@ -0,0 +1,109 @@
1
+ import * as __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__ from "solid-js/web";
2
+ import "./ColorSwatchPicker.css";
3
+ import * as __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__ from "solid-js";
4
+ import * as __WEBPACK_EXTERNAL_MODULE_tailwind_merge_e05e3e95__ from "tailwind-merge";
5
+ var _tmpl$ = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)("<div>");
6
+ const invokeEventHandler = (handler, event)=>{
7
+ if ("function" == typeof handler) return void handler(event);
8
+ if (Array.isArray(handler) && "function" == typeof handler[0]) handler[0](handler[1], event);
9
+ };
10
+ const ColorSwatchPickerContext = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createContext)();
11
+ const ColorSwatchPicker = (props)=>{
12
+ const [local, others] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.splitProps)(props, [
13
+ "class",
14
+ "className",
15
+ "children",
16
+ "value",
17
+ "defaultValue",
18
+ "onChange",
19
+ "isDisabled",
20
+ "dataTheme",
21
+ "role",
22
+ "onKeyDown"
23
+ ]);
24
+ const [internalValue, setInternalValue] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createSignal)(local.defaultValue);
25
+ let rootRef;
26
+ const isControlled = ()=>void 0 !== local.value;
27
+ const currentValue = ()=>isControlled() ? local.value : internalValue();
28
+ const isDisabled = ()=>Boolean(local.isDisabled);
29
+ const setValue = (next)=>{
30
+ if (isDisabled()) return;
31
+ if (!isControlled()) setInternalValue(next);
32
+ local.onChange?.(next);
33
+ };
34
+ const getEnabledItems = ()=>{
35
+ if (!rootRef) return [];
36
+ return Array.from(rootRef.querySelectorAll('[data-picker-item="true"][data-disabled="false"]'));
37
+ };
38
+ const findFocusedOrSelectedIndex = (items)=>{
39
+ if (!items.length) return -1;
40
+ const active = document.activeElement;
41
+ const focusedIndex = items.findIndex((item)=>item === active);
42
+ if (focusedIndex >= 0) return focusedIndex;
43
+ const selected = currentValue();
44
+ if (!selected) return 0;
45
+ const selectedIndex = items.findIndex((item)=>item.dataset.colorValue === selected);
46
+ return selectedIndex >= 0 ? selectedIndex : 0;
47
+ };
48
+ const handleKeyDown = (event)=>{
49
+ invokeEventHandler(local.onKeyDown, event);
50
+ if (event.defaultPrevented || isDisabled()) return;
51
+ const key = event.key;
52
+ const moveNext = "ArrowRight" === key || "ArrowDown" === key;
53
+ const movePrev = "ArrowLeft" === key || "ArrowUp" === key;
54
+ const moveFirst = "Home" === key;
55
+ const moveLast = "End" === key;
56
+ if (!moveNext && !movePrev && !moveFirst && !moveLast) return;
57
+ const items = getEnabledItems();
58
+ if (!items.length) return;
59
+ event.preventDefault();
60
+ const currentIndex = findFocusedOrSelectedIndex(items);
61
+ let nextIndex = currentIndex;
62
+ if (moveFirst) nextIndex = 0;
63
+ else if (moveLast) nextIndex = items.length - 1;
64
+ else if (moveNext) nextIndex = (currentIndex + 1 + items.length) % items.length;
65
+ else if (movePrev) nextIndex = (currentIndex - 1 + items.length) % items.length;
66
+ const nextItem = items[nextIndex];
67
+ if (!nextItem) return;
68
+ nextItem.focus();
69
+ const nextColor = nextItem.dataset.colorValue;
70
+ if (nextColor) setValue(nextColor);
71
+ };
72
+ const context = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createMemo)(()=>({
73
+ value: currentValue,
74
+ isDisabled,
75
+ select: setValue
76
+ }));
77
+ return (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.createComponent)(ColorSwatchPickerContext.Provider, {
78
+ get value () {
79
+ return context();
80
+ },
81
+ get children () {
82
+ var _el$ = _tmpl$();
83
+ var _ref$ = rootRef;
84
+ "function" == typeof _ref$ ? (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.use)(_ref$, _el$) : rootRef = _el$;
85
+ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.spread)(_el$, (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.mergeProps)(others, {
86
+ get ["class"] () {
87
+ return (0, __WEBPACK_EXTERNAL_MODULE_tailwind_merge_e05e3e95__.twMerge)("color-swatch-picker", local.class, local.className);
88
+ },
89
+ get ["data-theme"] () {
90
+ return local.dataTheme;
91
+ },
92
+ "data-slot": "color-swatch-picker",
93
+ get ["data-disabled"] () {
94
+ return isDisabled() ? "true" : "false";
95
+ },
96
+ get role () {
97
+ return local.role ?? "radiogroup";
98
+ },
99
+ get ["aria-disabled"] () {
100
+ return isDisabled() ? "true" : "false";
101
+ },
102
+ onKeyDown: handleKeyDown
103
+ }), false, true);
104
+ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.insert)(_el$, ()=>local.children);
105
+ return _el$;
106
+ }
107
+ });
108
+ };
109
+ export { ColorSwatchPicker, ColorSwatchPickerContext, ColorSwatchPicker as default };
@@ -0,0 +1,3 @@
1
+ export { default, ColorSwatchPicker } from "./ColorSwatchPicker";
2
+ export type { ColorSwatchPickerProps, ColorSwatchPickerContextValue } from "./ColorSwatchPicker";
3
+ export { ColorSwatchPickerContext } from "./ColorSwatchPicker";
@@ -0,0 +1,5 @@
1
+ import * as __WEBPACK_EXTERNAL_MODULE__ColorSwatchPicker_js_02e27c6a__ from "./ColorSwatchPicker.js";
2
+ var __webpack_exports__ColorSwatchPicker = __WEBPACK_EXTERNAL_MODULE__ColorSwatchPicker_js_02e27c6a__.ColorSwatchPicker;
3
+ var __webpack_exports__ColorSwatchPickerContext = __WEBPACK_EXTERNAL_MODULE__ColorSwatchPicker_js_02e27c6a__.ColorSwatchPickerContext;
4
+ var __webpack_exports__default = __WEBPACK_EXTERNAL_MODULE__ColorSwatchPicker_js_02e27c6a__["default"];
5
+ export { __webpack_exports__ColorSwatchPicker as ColorSwatchPicker, __webpack_exports__ColorSwatchPickerContext as ColorSwatchPickerContext, __webpack_exports__default as default };
@@ -0,0 +1,147 @@
1
+ @layer components {
2
+ .color-wheel-flower {
3
+ position: relative;
4
+ width: 190px;
5
+ height: 190px;
6
+ display: flex;
7
+ align-items: center;
8
+ justify-content: center;
9
+ }
10
+
11
+ .color-wheel-flower--disabled {
12
+ opacity: 0.5;
13
+ cursor: not-allowed;
14
+ }
15
+
16
+ .color-wheel-flower__rings {
17
+ position: absolute;
18
+ inset: 0;
19
+ pointer-events: none;
20
+ }
21
+
22
+ .color-wheel-flower__ring-shell {
23
+ position: absolute;
24
+ inset: 0;
25
+ }
26
+
27
+ .color-wheel-flower__ring-shell--outer {
28
+ transform: scale(1.1);
29
+ }
30
+
31
+ .color-wheel-flower__ring-shell--inner {
32
+ transform: scale(0.9);
33
+ }
34
+
35
+ .color-wheel-flower__ring {
36
+ position: absolute;
37
+ inset: 0;
38
+ border-radius: 9999px;
39
+ }
40
+
41
+ .color-wheel-flower__ring--outer {
42
+ will-change: transform, opacity, box-shadow, background;
43
+ }
44
+
45
+ .color-wheel-flower__ring--inner {
46
+ background: #0b1012;
47
+ }
48
+
49
+ .color-wheel-flower__picker {
50
+ position: relative;
51
+ z-index: 10;
52
+ width: calc(100% - 5px);
53
+ height: calc(100% - 5px);
54
+ border-radius: 9999px;
55
+ display: block;
56
+ }
57
+
58
+ .color-wheel-flower__dot {
59
+ position: absolute;
60
+ transform: translate(-50%, -50%);
61
+ }
62
+
63
+ .color-wheel-flower__dot-frame {
64
+ position: relative;
65
+ width: 32px;
66
+ height: 32px;
67
+ }
68
+
69
+ .color-wheel-flower__dot-motion {
70
+ position: relative;
71
+ width: 100%;
72
+ height: 100%;
73
+ will-change: transform, opacity;
74
+ }
75
+
76
+ .color-wheel-flower__halo {
77
+ position: absolute;
78
+ top: -5px;
79
+ left: -5px;
80
+ right: -5px;
81
+ bottom: -5px;
82
+ border-radius: 9999px;
83
+ pointer-events: none;
84
+ background: radial-gradient(
85
+ circle,
86
+ rgb(255 255 255 / 25%) 0%,
87
+ rgb(255 255 255 / 0%) 70%
88
+ );
89
+ }
90
+
91
+ .color-wheel-flower__swatch {
92
+ position: relative !important;
93
+ z-index: 10;
94
+ width: 100% !important;
95
+ height: 100% !important;
96
+ border-radius: 9999px !important;
97
+ background: var(--color-swatch-current) !important;
98
+ transform: none !important;
99
+ box-shadow: 0 2px 8px rgb(0 0 0 / 25%) !important;
100
+ transition: box-shadow 200ms ease-out, opacity 140ms ease-out !important;
101
+ }
102
+
103
+ .color-wheel-flower__swatch:hover:not([data-disabled="true"]) {
104
+ transform: none !important;
105
+ box-shadow: 0 3px 10px rgb(0 0 0 / 25%) !important;
106
+ }
107
+
108
+ .color-wheel-flower__swatch[data-selected="true"] {
109
+ box-shadow:
110
+ 0 0 0 2px rgb(255 255 255 / 55%),
111
+ 0 3px 10px rgb(0 0 0 / 25%) !important;
112
+ }
113
+
114
+ .color-wheel-flower__swatch:focus-visible,
115
+ .color-wheel-flower__swatch[data-focus-visible="true"] {
116
+ box-shadow:
117
+ 0 0 0 2px rgb(255 255 255 / 50%),
118
+ 0 3px 10px rgb(0 0 0 / 25%) !important;
119
+ }
120
+
121
+ .color-wheel-flower__swatch--center {
122
+ box-shadow:
123
+ inset 0 0 0 1px rgb(0 0 0 / 30%),
124
+ 0 2px 8px rgb(0 0 0 / 25%) !important;
125
+ }
126
+
127
+ .color-wheel-flower__highlight {
128
+ position: absolute;
129
+ inset: 0;
130
+ border-radius: 9999px;
131
+ border: 2px solid rgb(255 255 255 / 100%);
132
+ mix-blend-mode: overlay;
133
+ pointer-events: none;
134
+ opacity: 0;
135
+ transition: opacity 300ms ease-out, box-shadow 300ms ease-out;
136
+ }
137
+
138
+ .color-wheel-flower__highlight--hovered {
139
+ opacity: 0.75;
140
+ box-shadow: 0 0 6px rgb(255 255 255 / 45%);
141
+ }
142
+
143
+ .color-wheel-flower__highlight--pulsing {
144
+ opacity: 0.45;
145
+ box-shadow: 0 0 4px rgb(255 255 255 / 35%);
146
+ }
147
+ }
@@ -1,3 +1,4 @@
1
+ import "./ColorWheelFlower.css";
1
2
  import { type JSX } from "solid-js";
2
3
  export interface ColorWheelFlowerProps {
3
4
  class?: string;