Files
ERitors-Scribe-Desktop/components/form/SelectBox.tsx
natreex 64ed90d993 Remove unused components and models for improved maintainability
- Deleted redundant components (`AddActionButton`, `AlertBox`, `AlertStack`, `BackButton`, `CancelButton`, and `CollapsableArea`) and related files.
- Removed unused models (`Book`, `BookSerie`, `BookTables`, `Character`, and `Chapter`) to reduce codebase clutter.
- Updated project structure and references to reflect these removals.
2026-03-22 22:37:31 -04:00

56 lines
1.6 KiB
TypeScript

import React, {ChangeEvent} from "react";
import {useTranslations} from '@/lib/i18n';
export interface SelectBoxProps {
label: string;
value: string;
}
type InputSize = 'sm' | 'md' | 'lg';
const sizeClasses: Record<InputSize, string> = {
sm: 'px-3 py-1.5 text-xs rounded-lg',
md: 'px-4 py-2.5 text-sm rounded-xl',
lg: 'px-5 py-3 text-base rounded-xl',
};
export interface SelectBoxFormProps {
onChangeCallBack: (event: ChangeEvent<HTMLSelectElement>) => void,
data: SelectBoxProps[],
defaultValue: string | null | undefined,
placeholder?: string,
disabled?: boolean,
size?: InputSize,
translate?: boolean
}
export default function SelectBox(
{
onChangeCallBack,
data,
defaultValue,
placeholder,
disabled,
size = 'md',
translate = false
}: SelectBoxFormProps) {
const t = useTranslations();
return (
<select
onChange={onChangeCallBack}
disabled={disabled}
key={defaultValue || 'placeholder'}
defaultValue={defaultValue || '0'}
className={`input-base ${sizeClasses[size]}`}
>
{placeholder && <option value={'0'}>{placeholder}</option>}
{
data.map((item: SelectBoxProps) => (
<option key={item.value} value={item.value} className="bg-tertiary text-text-primary">
{translate ? t(item.label) : item.label}
</option>
))
}
</select>
)
}