Vue color picker component
npm i -S @samatech/vue-color-picker
Displays the picker and updates refs on color/gradient selection. See packages/demo
for a slightly more advanced example.
<template>
<ColorPicker
:color="selectedColor"
:gradient="selectedGradient"
:forceNonGradient="false"
:selectedThemeColors="themeColors"
@selectColor="selectColor"
@update="update"
@applyGradient="applyGradient"
/>
</template>
<script setup lang="ts">
import { ref } from 'vue'
import {
ColorPicker,
getRgbaCss,
IPickerColor,
IThemedGradient,
IThemeColor,
IRgba,
} from '@samatech/vue-color-picker'
import '@samatech/vue-color-picker/dist/style.css'
const selectedColor = ref<string | undefined>()
const selectedGradient = ref()
const themeColors = ref<IThemeColor[]>([])
const update = (color: IPickerColor | IThemedGradient | undefined) => {
if (color && 'raw' in color) {
selectedGradient.value = color.raw
selectedColor.value = undefined
} else {
selectedColor.value = getRgbaCss(color?.rgba)
selectedGradient.value = undefined
}
}
const addThemeColor = (color: string | undefined) => {
if (color && !themeColors.value.find((c) => c.key === color)) {
themeColors.value.push({ key: color, value: color })
}
}
const selectColor = (color: IPickerColor | undefined) => {
selectedColor.value = getRgbaCss(color?.rgba)
selectedGradient.value = undefined
addThemeColor(selectedColor.value)
}
const applyGradient = (gradient: IThemedGradient | undefined) => {
selectedGradient.value = gradient?.raw
selectedColor.value = undefined
}
</script>
We use PNPM workspaces for development
# Clone
git clone git@github.com:samatechtw/vue-color-picker
cd vue-color-picker
# Install dependencies
pnpm install
# Build library
pnpm run build
# Run example site
pnpm run demo
MIT License © 2021 - 2025 SamaTech Limited Company