UNPKG

bd-geo-info

Version:

A comprehensive Bangladesh geographical data package with hierarchical selection and address form components

212 lines (211 loc) 5.62 kB
export interface Division { id: string; name: string; bn_name: string; lat: string; long: string; } export interface District { id: string; division_id: string; name: string; bn_name: string; lat: string; long: string; url?: string; } export interface Upazila { id: string; district_id: string; name: string; bn_name: string; } export interface UnionData { id: string; upazilla_id: string; name: string; bn_name: string; url: string; } export interface Union { type: string; name?: string; database?: string; data?: UnionData[]; } export interface PostCode { district?: string; division_id: string; district_id?: string; upazila: string; postOffice: string; postCode: string; } export interface AddressFormProps { onSubmit?: (data: AddressFormData) => void; onChange?: (data: AddressFormData) => void; defaultValues?: Partial<AddressFormData>; errors?: AddressFormErrors; className?: string; showPostCode?: boolean; showStreet?: boolean; showUnion?: boolean; showLabels?: boolean; labels?: { division?: string | React.ReactNode; district?: string | React.ReactNode; upazila?: string | React.ReactNode; union?: string | React.ReactNode; postCode?: string | React.ReactNode; street?: string | React.ReactNode; submit?: string | React.ReactNode; }; placeholders?: { division?: string; district?: string; upazila?: string; union?: string; postCode?: string; street?: string; }; disabled?: boolean; submitButtonProps?: { className?: string; disabled?: boolean; }; children?: React.ReactNode; theme?: Theme; validation?: AddressFormValidation; customLabels?: AddressFormLabels; customErrors?: AddressFormErrors; containerClassName?: string; labelClassName?: string; errorClassName?: string; inputContainerClassName?: string; language?: 'en' | 'bn'; } export interface AddressFormData { division?: string; district?: string; upazila?: string; union?: string; postCode?: string; street?: string; } export interface AddressFormErrors { division?: string | React.ReactNode; district?: string | React.ReactNode; upazila?: string | React.ReactNode; union?: string | React.ReactNode; postCode?: string | React.ReactNode; street?: string | React.ReactNode; } export interface AddressFormValidation { division?: ValidationRules; district?: ValidationRules; upazila?: ValidationRules; union?: ValidationRules; postCode?: ValidationRules; street?: ValidationRules; } export interface SelectProps<T = string> { value?: T; onChange?: (value: T) => void; language?: 'en' | 'bn'; className?: string; placeholder?: string; disabled?: boolean; theme?: Theme; validation?: ValidationRules; errorClassName?: string; labelClassName?: string; containerClassName?: string; customLabel?: string | React.ReactNode; customError?: string | React.ReactNode; } export interface PostOfficeSelectProps { division?: Division; district?: District; upazila?: Upazila; value?: PostCode; onChange?: (postOffice: PostCode) => void; language?: 'en' | 'bn'; className?: string; placeholder?: string; customLabel?: string | React.ReactNode; customError?: string | React.ReactNode; theme?: Theme; errorClassName?: string; labelClassName?: string; containerClassName?: string; } export interface ValidationRules { required?: boolean; customValidation?: (value: any) => string | true; } export interface AddressFormLabels { division?: string | React.ReactNode; district?: string | React.ReactNode; upazila?: string | React.ReactNode; union?: string | React.ReactNode; postCode?: string | React.ReactNode; street?: string | React.ReactNode; } export interface Theme { colors?: { primary?: string; background?: string; border?: string; }; borderRadius?: string; fontSize?: { input?: string; }; spacing?: { input?: string; label?: string; }; } export interface AddressFormProps { language?: 'en' | 'bn'; onChange?: (address: AddressFormData) => void; onSubmit?: (data: AddressFormData) => void; defaultValues?: Partial<AddressFormData>; errors?: AddressFormErrors; className?: string; children?: React.ReactNode; theme?: Theme; validation?: AddressFormValidation; showPostCode?: boolean; showStreet?: boolean; showUnion?: boolean; showLabels?: boolean; labels?: { division?: string | React.ReactNode; district?: string | React.ReactNode; upazila?: string | React.ReactNode; union?: string | React.ReactNode; postCode?: string | React.ReactNode; street?: string | React.ReactNode; submit?: string | React.ReactNode; }; placeholders?: { division?: string; district?: string; upazila?: string; union?: string; postCode?: string; street?: string; }; customLabels?: AddressFormLabels; customErrors?: AddressFormErrors; containerClassName?: string; labelClassName?: string; errorClassName?: string; inputContainerClassName?: string; disabled?: boolean; submitButtonProps?: { className?: string; disabled?: boolean; }; }