/** * Emoji Domain - Barrel Export * * Global infrastructure domain for emoji selection and display * * Features: * - Universal emoji picker component * - Category-based emoji selection (smileys, animals, food, etc.) * - Search functionality * - Recently used emojis tracking * - React hook for state management * - Theme-aware styling * - Validation utilities * * Dependencies: * - rn-emoji-keyboard (emoji picker UI library) * * USAGE: * ```typescript * // Method 1: Using hook (recommended) * import { useEmojiPicker, EmojiPicker } from '@umituz/react-native-emoji'; * * const MyComponent = () => { * const { * isOpen, * selectedEmoji, * openPicker, * closePicker, * handleEmojiSelect, * } = useEmojiPicker(); * * return ( * * * * {selectedEmoji || 'Select Emoji'} * * * * * * ); * }; * * // Method 2: Manual state management * import { EmojiPicker, type EmojiObject } from '@umituz/react-native-emoji'; * * const MyComponent = () => { * const [isOpen, setIsOpen] = useState(false); * const [emoji, setEmoji] = useState(''); * * const handleSelect = (emojiObject: EmojiObject) => { * setEmoji(emojiObject.emoji); * setIsOpen(false); * }; * * return ( * * setIsOpen(true)}> * {emoji || 'Select'} * * * setIsOpen(false)} * onEmojiSelected={handleSelect} * /> * * ); * }; * * // Validation utilities * import { EmojiUtils } from '@umituz/react-native-emoji'; * * const isValid = EmojiUtils.isEmoji('๐Ÿ˜€'); // true * const first = EmojiUtils.extractFirstEmoji('Hello ๐Ÿ˜€ World ๐ŸŒ'); // '๐Ÿ˜€' * const length = EmojiUtils.getEmojiLength('๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ'); // 1 (handles multi-byte) * ``` * * REAL-WORLD EXAMPLE (Category Creation): * ```typescript * import { useEmojiPicker, EmojiPicker } from '@umituz/react-native-emoji'; * import { AtomicInput, AtomicText } from '@umituz/react-native-design-system'; * * const AddCategoryScreen = () => { * const [name, setName] = useState(''); * const { * selectedEmoji, * isOpen, * openPicker, * closePicker, * handleEmojiSelect, * } = useEmojiPicker(); * * const handleSubmit = () => { * if (!name.trim() || !selectedEmoji) { * alert('Please fill all fields'); * return; * } * * // Save category with emoji * saveCategory({ name, emoji: selectedEmoji }); * }; * * return ( * * * * * * {selectedEmoji || 'Tap to select emoji'} * * * * * Create Category * * * * * ); * }; * ``` * * EMOJI CATEGORIES: * - ๐Ÿ˜€ Smileys & Emotion * - ๐Ÿ‘จ People & Body * - ๐Ÿถ Animals & Nature * - ๐Ÿ” Food & Drink * - โœˆ๏ธ Travel & Places * - โšฝ Activities * - ๐Ÿ’ก Objects * - โค๏ธ Symbols * - ๐Ÿ Flags * * FEATURES: * - 3600+ emojis across 9 categories * - Full Unicode 15.0 support * - Search by name or keywords * - Recently used tracking (persisted) * - Category change animations * - Smooth scrolling and gestures * - Theme-aware (light/dark mode) * - Localization support */ export type { EmojiObject, EmojiPickerConfig, EmojiSelectCallback, EmojiPickerState, } from './domain/entities/Emoji'; export { EmojiCategory, EmojiUtils } from './domain/entities/Emoji'; export { useEmojiPicker } from './presentation/hooks/useEmojiPicker'; export type { UseEmojiPickerOptions, UseEmojiPickerReturn, } from './presentation/hooks/useEmojiPicker';