export interface SelectOption { value: string | number; label: string; disabled?: boolean; } export const CustomSelectProps = { // Vue2 compatible: use 'value' instead of 'modelValue' value: { type: [String, Number], default: '', }, options: { type: Array as () => SelectOption[], default: () => [], }, placeholder: { type: String, default: 'Please select', }, disabled: { type: Boolean, default: false, }, clearable: { type: Boolean, default: false, }, size: { type: String, values: ['small', 'medium', 'large'], default: 'medium', }, width: { type: String, default: '100%', }, }; export const CustomSelectEmits = { // Vue2 compatible: use 'input' instead of 'update:modelValue' 'input': (value: string | number) => true, 'change': (value: string | number) => true, 'clear': () => true, };