diff --git a/src/components/common/FormItem.vue b/src/components/common/FormItem.vue
index 49805a02d..7acca557a 100644
--- a/src/components/common/FormItem.vue
+++ b/src/components/common/FormItem.vue
@@ -39,6 +39,7 @@ import { type Component, markRaw } from 'vue'
import CustomFormValue from '@/components/common/CustomFormValue.vue'
import FormColorPicker from '@/components/common/FormColorPicker.vue'
import FormImageUpload from '@/components/common/FormImageUpload.vue'
+import InputKnob from '@/components/common/InputKnob.vue'
import InputSlider from '@/components/common/InputSlider.vue'
import UrlInput from '@/components/common/UrlInput.vue'
import { FormItem } from '@/types/settingTypes'
@@ -91,6 +92,8 @@ function getFormComponent(item: FormItem): Component {
return InputNumber
case 'slider':
return InputSlider
+ case 'knob':
+ return InputKnob
case 'combo':
return Select
case 'image':
@@ -111,6 +114,11 @@ function getFormComponent(item: FormItem): Component {
@apply w-20;
}
+.form-input :deep(.input-knob) .p-inputnumber input,
+.form-input :deep(.input-knob) .knob-part {
+ @apply w-32;
+}
+
.form-input :deep(.p-inputtext),
.form-input :deep(.p-select) {
@apply w-44;
diff --git a/src/components/common/InputKnob.vue b/src/components/common/InputKnob.vue
new file mode 100644
index 000000000..60d0ce0cc
--- /dev/null
+++ b/src/components/common/InputKnob.vue
@@ -0,0 +1,89 @@
+
+
+
+
+
+
+
+
diff --git a/src/types/settingTypes.ts b/src/types/settingTypes.ts
index dc6a8c469..e1104943e 100644
--- a/src/types/settingTypes.ts
+++ b/src/types/settingTypes.ts
@@ -4,6 +4,7 @@ export type SettingInputType =
| 'boolean'
| 'number'
| 'slider'
+ | 'knob'
| 'combo'
| 'text'
| 'image'