diff --git a/src/components/color-picker-panel/PickerSlider.vue b/src/components/color-picker-panel/PickerSlider.vue
deleted file mode 100644
index 2b01bb774..000000000
--- a/src/components/color-picker-panel/PickerSlider.vue
+++ /dev/null
@@ -1,91 +0,0 @@
-
-
-
-
-
diff --git a/src/components/color-picker-panel/StandardColorSlider.vue b/src/components/color-picker-panel/StandardColorSlider.vue
new file mode 100644
index 000000000..7080df110
--- /dev/null
+++ b/src/components/color-picker-panel/StandardColorSlider.vue
@@ -0,0 +1,79 @@
+
+
+
+
+ {{ label }}
+
+
+
+
+
+
+
diff --git a/src/components/color-picker-panel/ui.ts b/src/components/color-picker-panel/ui.ts
new file mode 100644
index 000000000..030fd1785
--- /dev/null
+++ b/src/components/color-picker-panel/ui.ts
@@ -0,0 +1,19 @@
+import { tv } from 'tailwind-variants'
+import { computed } from 'vue'
+
+import type { ComponentUI } from '@/components/ui/types'
+import theme from '@/theme/color-slider'
+
+export type ColorSliderUI = ComponentUI
+
+export function useColorSliderUI(checkerboard: () => boolean, ui: () => ColorSliderUI | undefined) {
+ const styles = computed(() => tv(theme)({ checkerboard: checkerboard() }))
+ return {
+ root: computed(() => styles.value.root({ class: ui()?.root })),
+ label: computed(() => styles.value.label({ class: ui()?.label })),
+ slider: computed(() => styles.value.slider({ class: ui()?.slider })),
+ track: computed(() => styles.value.track({ class: ui()?.track })),
+ thumb: computed(() => styles.value.thumb({ class: ui()?.thumb })),
+ input: computed(() => styles.value.input({ class: ui()?.input }))
+ }
+}
diff --git a/src/components/fill-picker/FillPicker.vue b/src/components/fill-picker/FillPicker.vue
index f7b97a15f..296489707 100644
--- a/src/components/fill-picker/FillPicker.vue
+++ b/src/components/fill-picker/FillPicker.vue
@@ -1,11 +1,13 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
-
-
+
+
+
+
+
+
+
diff --git a/src/components/fill-picker/GradientEditor.vue b/src/components/fill-picker/GradientEditor.vue
index a7503654c..ed899128a 100644
--- a/src/components/fill-picker/GradientEditor.vue
+++ b/src/components/fill-picker/GradientEditor.vue
@@ -40,12 +40,20 @@ const { panels } = useI18n()
@drag-stop="root.actions.dragStop"
v-slot="bar"
>
-
@@ -69,6 +77,9 @@ const { panels } = useI18n()
:stop="stop"
:index="idx"
:active="idx === root.activeStopIndex"
+ :removable="root.stops.length > 2"
+ :interactive="false"
+ class="flex items-center gap-1 py-0.5 data-[selected]:rounded data-[selected]:bg-hover/50"
@select="root.actions.selectStop"
@update-position="root.actions.updateStopPosition"
@update-color="root.actions.updateStopColor"
@@ -76,49 +87,44 @@ const { panels } = useI18n()
@remove="root.actions.removeStop"
v-slot="s"
>
-
+
+
+
+