import { useState } from 'react';
import { Screen, View, Text, Select, Card, Button, Divider } from '../index';
// Mock data for examples
const fruitOptions = [
{ value: 'apple', label: 'Apple' },
{ value: 'banana', label: 'Banana' },
{ value: 'orange', label: 'Orange' },
{ value: 'grape', label: 'Grape' },
{ value: 'strawberry', label: 'Strawberry' },
{ value: 'pineapple', label: 'Pineapple' },
{ value: 'mango', label: 'Mango' },
{ value: 'kiwi', label: 'Kiwi' },
];
const countryOptions = [
{ value: 'us', label: 'United States', icon: 🇺🇸 },
{ value: 'ca', label: 'Canada', icon: 🇨🇦 },
{ value: 'uk', label: 'United Kingdom', icon: 🇬🇧 },
{ value: 'de', label: 'Germany', icon: 🇩🇪 },
{ value: 'fr', label: 'France', icon: 🇫🇷 },
{ value: 'jp', label: 'Japan', icon: 🇯🇵 },
{ value: 'au', label: 'Australia', icon: 🇦🇺 },
{ value: 'in', label: 'India', icon: 🇮🇳 },
];
const priorityOptions = [
{
value: 'low',
label: 'Low Priority',
icon: ●
},
{
value: 'medium',
label: 'Medium Priority',
icon: ●
},
{
value: 'high',
label: 'High Priority',
icon: ●
},
{
value: 'urgent',
label: 'Urgent',
icon: 🔥
},
];
const statusOptions = [
{ value: 'draft', label: 'Draft', disabled: false },
{ value: 'pending', label: 'Pending Review' },
{ value: 'approved', label: 'Approved' },
{ value: 'archived', label: 'Archived (Disabled)', disabled: true },
{ value: 'deleted', label: 'Deleted (Disabled)', disabled: true },
];
export const SelectExamples = () => {
// State for all select examples
const [basicSelect, setBasicSelect] = useState('');
const [countrySelect, setCountrySelect] = useState('');
const [prioritySelect, setPrioritySelect] = useState('medium');
const [statusSelect, setStatusSelect] = useState('draft');
const [searchableSelect, setSearchableSelect] = useState('');
const [formSelect, setFormSelect] = useState('');
const [sizeSmall, setSizeSmall] = useState('');
const [sizeMedium, setSizeMedium] = useState('');
const [sizeLarge, setSizeLarge] = useState('');
const [outlinedSelect, setOutlinedSelect] = useState('');
const [filledSelect, setFilledSelect] = useState('');
const [primarySelect, setPrimarySelect] = useState('');
const [successSelect, setSuccessSelect] = useState('');
const [errorSelect, setErrorSelect] = useState('');
const [warningSelect, setWarningSelect] = useState('');
const [formErrors, setFormErrors] = useState>({});
const validateForm = () => {
const errors: Record = {};
if (!formSelect) {
errors.formSelect = 'Please select a country';
}
setFormErrors(errors);
return Object.keys(errors).length === 0;
};
const handleFormSubmit = () => {
if (validateForm()) {
console.log('Form submitted successfully!', { country: formSelect });
} else {
console.log('Form has validation errors');
}
};
const resetAllSelections = () => {
setBasicSelect('');
setFruitSelect('');
setCountrySelect('');
setPrioritySelect('');
setStatusSelect('');
setSearchableSelect('');
setFormSelect('');
setSizeSmall('');
setSizeMedium('');
setSizeLarge('');
setOutlinedSelect('');
setFilledSelect('');
setPrimarySelect('');
setSuccessSelect('');
setErrorSelect('');
setWarningSelect('');
setFormErrors({});
};
return (
Select Component Examples
{/* Basic Usage */}
Basic Usage
Selected: {basicSelect || 'None'}
{/* With Icons */}
With Icons
Selected: {countrySelect || 'None'}
{/* Custom Icons */}
Custom Icon Components
Selected: {prioritySelect || 'None'}
{/* Disabled Options */}
Disabled Options
Selected: {statusSelect || 'None'}
{/* Searchable */}
Searchable Select
Selected: {searchableSelect || 'None'}
{/* Sizes */}
Sizes
Small
Medium (Default)
Large
{/* Variants */}
Variants
Outlined (Default)
Filled
{/* Intents */}
Intent Colors
Primary
Success
Warning
Error
{/* Form Example */}
Form Integration
{/* Disabled State */}
Disabled State
{/* Platform-specific Features */}
Platform Features
On iOS: Try the ActionSheet presentation mode for native feel
{/* Summary */}
Current Selections Summary
Basic: {basicSelect || 'None'}
Country: {countrySelect || 'None'}
Priority: {prioritySelect || 'None'}
Status: {statusSelect || 'None'}
Searchable: {searchableSelect || 'None'}
Form: {formSelect || 'None'}
);
};