react-country-kit 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/README.md +258 -0
  2. package/dist/components/CountryMultiSelect/CountryMultiSelect.d.ts +3 -0
  3. package/dist/components/CountryPicker/CountryPicker.d.ts +3 -0
  4. package/dist/components/CurrencyMultiSelect/CurrencyMultiSelect.d.ts +3 -0
  5. package/dist/components/CurrencyPicker/CurrencyPicker.d.ts +3 -0
  6. package/dist/components/DivisionPicker/DivisionPicker.d.ts +3 -0
  7. package/dist/components/LanguagePicker/LanguagePicker.d.ts +3 -0
  8. package/dist/components/PhoneInput/PhoneInput.d.ts +3 -0
  9. package/dist/components/TimezonePicker/TimezonePicker.d.ts +3 -0
  10. package/dist/components/shared/PickerBase.d.ts +14 -0
  11. package/dist/components/shared/SearchInput.d.ts +8 -0
  12. package/dist/data/countries.d.ts +10 -0
  13. package/dist/data/languages.d.ts +3 -0
  14. package/dist/hooks/useBasePicker.d.ts +6 -0
  15. package/dist/hooks/useCountryPicker.d.ts +2 -0
  16. package/dist/hooks/useCurrencyPicker.d.ts +2 -0
  17. package/dist/hooks/useDivisionPicker.d.ts +2 -0
  18. package/dist/hooks/useLanguagePicker.d.ts +2 -0
  19. package/dist/hooks/useMultiSelect.d.ts +6 -0
  20. package/dist/hooks/usePhoneInput.d.ts +17 -0
  21. package/dist/hooks/useTimezonePicker.d.ts +2 -0
  22. package/dist/index.d.ts +21 -0
  23. package/dist/react-country-kit.cjs.js +2 -0
  24. package/dist/react-country-kit.cjs.js.map +1 -0
  25. package/dist/react-country-kit.d.ts +354 -0
  26. package/dist/react-country-kit.es.js +841 -0
  27. package/dist/react-country-kit.es.js.map +1 -0
  28. package/dist/style.css +1 -0
  29. package/dist/types/index.d.ts +185 -0
  30. package/dist/ui/components/CountryMultiSelect.d.ts +2 -0
  31. package/dist/ui/components/CountryPicker.d.ts +2 -0
  32. package/dist/ui/components/CurrencyMultiSelect.d.ts +2 -0
  33. package/dist/ui/components/CurrencyPicker.d.ts +2 -0
  34. package/dist/ui/components/DivisionPicker.d.ts +2 -0
  35. package/dist/ui/components/LanguagePicker.d.ts +2 -0
  36. package/dist/ui/components/PhoneInput.d.ts +3 -0
  37. package/dist/ui/components/TimezonePicker.d.ts +2 -0
  38. package/dist/ui/components/primitives.d.ts +73 -0
  39. package/dist/ui/index.d.ts +38 -0
  40. package/dist/ui/lib/utils.d.ts +6 -0
  41. package/dist/ui.cjs.js +2 -0
  42. package/dist/ui.cjs.js.map +1 -0
  43. package/dist/ui.d.ts +413 -0
  44. package/dist/ui.es.js +1141 -0
  45. package/dist/ui.es.js.map +1 -0
  46. package/dist/useTimezonePicker-BMFPsn3E.mjs +36086 -0
  47. package/dist/useTimezonePicker-BMFPsn3E.mjs.map +1 -0
  48. package/dist/useTimezonePicker-zHCM2pUC.js +2 -0
  49. package/dist/useTimezonePicker-zHCM2pUC.js.map +1 -0
  50. package/dist/utils/countries.d.ts +46 -0
  51. package/dist/utils/currencies.d.ts +13 -0
  52. package/dist/utils/languages.d.ts +13 -0
  53. package/dist/utils/timezones.d.ts +13 -0
  54. package/package.json +88 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react-country-kit.cjs.js","sources":["../src/components/shared/SearchInput.tsx","../src/components/CountryMultiSelect/CountryMultiSelect.tsx","../src/components/shared/PickerBase.tsx","../src/components/CountryPicker/CountryPicker.tsx","../src/components/CurrencyMultiSelect/CurrencyMultiSelect.tsx","../src/components/CurrencyPicker/CurrencyPicker.tsx","../src/components/DivisionPicker/DivisionPicker.tsx","../src/components/LanguagePicker/LanguagePicker.tsx","../src/components/PhoneInput/PhoneInput.tsx","../src/components/TimezonePicker/TimezonePicker.tsx"],"sourcesContent":["import React, { useRef, useEffect } from 'react';\n\ninterface SearchInputProps {\n value: string;\n onChange: (value: string) => void;\n placeholder?: string;\n autoFocus?: boolean;\n}\n\nexport function SearchInput({ value, onChange, placeholder = 'Search...', autoFocus = true }: SearchInputProps) {\n const inputRef = useRef<HTMLInputElement>(null);\n\n useEffect(() => {\n if (autoFocus) {\n setTimeout(() => inputRef.current?.focus(), 50);\n }\n }, [autoFocus]);\n\n return (\n <div className=\"rck-search-wrapper\">\n <div className=\"rck-search\">\n <svg className=\"rck-search-icon\" viewBox=\"0 0 20 20\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <circle cx=\"8.5\" cy=\"8.5\" r=\"5.5\" />\n <path d=\"M17 17l-4-4\" strokeLinecap=\"round\" />\n </svg>\n <input\n ref={inputRef}\n type=\"text\"\n value={value}\n onChange={(e) => onChange(e.target.value)}\n placeholder={placeholder}\n aria-label=\"Search\"\n />\n {value && (\n <button\n style={{ background: 'none', border: 'none', cursor: 'pointer', color: 'var(--rck-text-placeholder)', padding: 0, display: 'flex' }}\n onClick={() => onChange('')}\n aria-label=\"Clear search\"\n type=\"button\"\n >\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n <path d=\"M6 6l8 8M14 6l-8 8\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" fill=\"none\" />\n </svg>\n </button>\n )}\n </div>\n </div>\n );\n}\n","import React, { useRef, useEffect } from 'react';\nimport type { CountryMultiSelectProps, Country } from '../../types';\nimport { useMultiSelect } from '../../hooks/useMultiSelect';\nimport { getAllCountries, searchCountries } from '../../utils/countries';\nimport { SearchInput } from '../shared/SearchInput';\nimport '../../styles/picker.css';\n\nconst MAX_VISIBLE_CHIPS = 3;\n\nfunction ChipCheckIcon() {\n return (\n <svg viewBox=\"0 0 20 20\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <polyline points=\"4 10 8 14 16 6\" />\n </svg>\n );\n}\n\nexport function CountryMultiSelect({\n value,\n onChange,\n placeholder = 'Select countries...',\n maxItems,\n showFlags = true,\n searchable = true,\n disabled = false,\n className,\n label,\n}: CountryMultiSelectProps) {\n const multi = useMultiSelect<Country>(\n getAllCountries(),\n (items, q) => q ? searchCountries(q) : items,\n (c) => c.iso2,\n value,\n onChange,\n maxItems\n );\n\n const wrapperRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (!multi.isOpen) return;\n const handler = (e: MouseEvent) => {\n if (wrapperRef.current && !wrapperRef.current.contains(e.target as Node)) multi.close();\n };\n document.addEventListener('mousedown', handler);\n return () => document.removeEventListener('mousedown', handler);\n }, [multi.isOpen, multi.close]);\n\n useEffect(() => {\n if (!multi.isOpen) return;\n const handler = (e: KeyboardEvent) => { if (e.key === 'Escape') multi.close(); };\n document.addEventListener('keydown', handler);\n return () => document.removeEventListener('keydown', handler);\n }, [multi.isOpen, multi.close]);\n\n const visibleChips = value.slice(0, MAX_VISIBLE_CHIPS);\n const overflow = value.length - MAX_VISIBLE_CHIPS;\n\n return (\n <div ref={wrapperRef} className={`rck-picker${className ? ` ${className}` : ''}`}>\n {label && <span className=\"rck-label\">{label}</span>}\n\n <button\n type=\"button\"\n className={`rck-multiselect-trigger${multi.isOpen ? ' rck-open' : ''}`}\n disabled={disabled}\n onClick={multi.toggle}\n aria-haspopup=\"listbox\"\n aria-expanded={multi.isOpen}\n >\n <div className=\"rck-chips-area\">\n {value.length === 0 ? (\n <span style={{ color: 'var(--rck-text-placeholder)', fontSize: '0.9375rem' }}>{placeholder}</span>\n ) : (\n <>\n {visibleChips.map((c) => (\n <span key={c.iso2} className=\"rck-chip\">\n {showFlags && <span>{c.flag}</span>}\n <span className=\"rck-chip-label\">{c.name}</span>\n <button\n type=\"button\"\n className=\"rck-chip-remove\"\n onClick={(e) => { e.stopPropagation(); multi.removeItem(c); onChange(value.filter((x) => x.iso2 !== c.iso2)); }}\n aria-label={`Remove ${c.name}`}\n >\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 20 20\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.5\" strokeLinecap=\"round\">\n <line x1=\"5\" y1=\"5\" x2=\"15\" y2=\"15\" /><line x1=\"15\" y1=\"5\" x2=\"5\" y2=\"15\" />\n </svg>\n </button>\n </span>\n ))}\n {overflow > 0 && (\n <span className=\"rck-chip-overflow\">+{overflow} more</span>\n )}\n </>\n )}\n </div>\n {value.length > 0 && (\n <button\n type=\"button\"\n className=\"rck-multiselect-clear\"\n onClick={(e) => { e.stopPropagation(); multi.clearAll(); onChange([]); }}\n aria-label=\"Clear all\"\n >\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 20 20\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\">\n <line x1=\"5\" y1=\"5\" x2=\"15\" y2=\"15\" /><line x1=\"15\" y1=\"5\" x2=\"5\" y2=\"15\" />\n </svg>\n </button>\n )}\n <svg className=\"rck-chevron\" viewBox=\"0 0 20 20\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\">\n <polyline points=\"5 8 10 13 15 8\" />\n </svg>\n </button>\n\n {multi.isOpen && (\n <div className=\"rck-dropdown\" role=\"listbox\" aria-multiselectable=\"true\">\n {searchable && (\n <SearchInput value={multi.searchQuery} onChange={multi.setSearchQuery} placeholder=\"Search countries...\" />\n )}\n <ul className=\"rck-list\">\n {multi.filteredItems.length === 0 ? (\n <li className=\"rck-empty\"><span className=\"rck-empty-icon\">🌍</span><span>No countries found</span></li>\n ) : (\n multi.filteredItems.map((country) => {\n const selected = multi.isSelected(country);\n return (\n <li\n key={country.iso2}\n role=\"option\"\n aria-selected={selected}\n className={`rck-item${selected ? ' rck-item-selected' : ''}`}\n onClick={() => multi.toggleItem(country)}\n tabIndex={0}\n onKeyDown={(e) => e.key === 'Enter' && multi.toggleItem(country)}\n >\n <div className={selected ? 'rck-item-check-multi' : 'rck-item-check-empty'}>\n {selected && <ChipCheckIcon />}\n </div>\n {showFlags && <span className=\"rck-item-flag\">{country.flag}</span>}\n <div className=\"rck-item-main\">\n <span className=\"rck-item-name\">{country.name}</span>\n <span className=\"rck-item-sub\">{country.iso3} · +{country.phone_code}</span>\n </div>\n </li>\n );\n })\n )}\n </ul>\n </div>\n )}\n </div>\n );\n}\n","import React, { useEffect, useRef } from 'react';\n\ninterface PickerBaseProps {\n isOpen: boolean;\n onClose: () => void;\n onToggle: () => void;\n label?: string;\n disabled?: boolean;\n className?: string;\n triggerContent: React.ReactNode;\n children: React.ReactNode;\n id?: string;\n}\n\nconst ChevronIcon = () => (\n <svg\n className=\"rck-chevron\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <polyline points=\"5 8 10 13 15 8\" />\n </svg>\n);\n\nexport function PickerBase({\n isOpen,\n onClose,\n onToggle,\n label,\n disabled,\n className,\n triggerContent,\n children,\n id,\n}: PickerBaseProps) {\n const wrapperRef = useRef<HTMLDivElement>(null);\n\n // Close on outside click\n useEffect(() => {\n if (!isOpen) return;\n const handler = (e: MouseEvent) => {\n if (wrapperRef.current && !wrapperRef.current.contains(e.target as Node)) {\n onClose();\n }\n };\n document.addEventListener('mousedown', handler);\n return () => document.removeEventListener('mousedown', handler);\n }, [isOpen, onClose]);\n\n // Close on Escape\n useEffect(() => {\n if (!isOpen) return;\n const handler = (e: KeyboardEvent) => {\n if (e.key === 'Escape') onClose();\n };\n document.addEventListener('keydown', handler);\n return () => document.removeEventListener('keydown', handler);\n }, [isOpen, onClose]);\n\n return (\n <div ref={wrapperRef} className={`rck-picker${className ? ` ${className}` : ''}`}>\n {label && (\n <span className=\"rck-label\" id={id ? `${id}-label` : undefined}>\n {label}\n </span>\n )}\n <button\n type=\"button\"\n className={`rck-trigger${isOpen ? ' rck-open' : ''}`}\n disabled={disabled}\n aria-haspopup=\"listbox\"\n aria-expanded={isOpen}\n aria-labelledby={id && label ? `${id}-label` : undefined}\n id={id}\n onClick={onToggle}\n >\n {triggerContent}\n <ChevronIcon />\n </button>\n\n {isOpen && (\n <div className=\"rck-dropdown\" role=\"listbox\">\n {children}\n </div>\n )}\n </div>\n );\n}\n","import React from 'react';\nimport type { CountryPickerProps } from '../../types';\nimport { useCountryPicker } from '../../hooks/useCountryPicker';\nimport { PickerBase } from '../shared/PickerBase';\nimport { SearchInput } from '../shared/SearchInput';\nimport '../../styles/picker.css';\n\nconst CheckIcon = () => (\n <svg className=\"rck-item-check\" viewBox=\"0 0 20 20\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <polyline points=\"4 10 8 14 16 6\" />\n </svg>\n);\n\nexport function CountryPicker({\n value,\n onChange,\n placeholder = 'Select a country',\n searchable = true,\n showFlag = true,\n showPhoneCode = false,\n disabled = false,\n className,\n label,\n}: CountryPickerProps) {\n const picker = useCountryPicker(value, onChange);\n\n const triggerContent = (\n <div className=\"rck-trigger-content\">\n {value ? (\n <>\n {showFlag && <span className=\"rck-flag\">{value.flag}</span>}\n <span className=\"rck-trigger-text\">{value.name}</span>\n {showPhoneCode && <span className=\"rck-badge\">+{value.phone_code}</span>}\n </>\n ) : (\n <span className=\"rck-trigger-text rck-placeholder\">{placeholder}</span>\n )}\n </div>\n );\n\n return (\n <PickerBase\n isOpen={picker.isOpen}\n onClose={picker.close}\n onToggle={picker.toggle}\n label={label}\n disabled={disabled}\n className={className}\n triggerContent={triggerContent}\n id=\"rck-country-picker\"\n >\n {searchable && (\n <SearchInput\n value={picker.searchQuery}\n onChange={picker.setSearchQuery}\n placeholder=\"Search country...\"\n />\n )}\n <ul className=\"rck-list\" role=\"listbox\" aria-label=\"Countries\">\n {picker.filteredItems.length === 0 ? (\n <li className=\"rck-empty\">\n <span className=\"rck-empty-icon\">🌍</span>\n <span>No countries found</span>\n </li>\n ) : (\n picker.filteredItems.map((country) => {\n const isSelected = value?.iso2 === country.iso2;\n return (\n <li\n key={country.iso2}\n role=\"option\"\n aria-selected={isSelected}\n className={`rck-item${isSelected ? ' rck-item-selected' : ''}`}\n onClick={() => picker.selectItem(country)}\n tabIndex={0}\n onKeyDown={(e) => e.key === 'Enter' && picker.selectItem(country)}\n >\n {showFlag && <span className=\"rck-item-flag\">{country.flag}</span>}\n <div className=\"rck-item-main\">\n <span className=\"rck-item-name\">{country.name}</span>\n <span className=\"rck-item-sub\">{country.iso3} · {country.division_type}</span>\n </div>\n <div className=\"rck-item-right\">\n {showPhoneCode && (\n <span className=\"rck-item-phone\">+{country.phone_code}</span>\n )}\n {isSelected && <CheckIcon />}\n </div>\n </li>\n );\n })\n )}\n </ul>\n </PickerBase>\n );\n}\n","import React, { useRef, useEffect } from 'react';\nimport type { CurrencyMultiSelectProps, Currency } from '../../types';\nimport { useMultiSelect } from '../../hooks/useMultiSelect';\nimport { getAllCurrencies, searchCurrencies } from '../../utils/currencies';\nimport { SearchInput } from '../shared/SearchInput';\nimport '../../styles/picker.css';\n\nconst MAX_VISIBLE_CHIPS = 3;\n\nfunction ChipCheckIcon() {\n return (\n <svg viewBox=\"0 0 20 20\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <polyline points=\"4 10 8 14 16 6\" />\n </svg>\n );\n}\n\nexport function CurrencyMultiSelect({\n value,\n onChange,\n placeholder = 'Select currencies...',\n maxItems,\n showSymbol = true,\n searchable = true,\n disabled = false,\n className,\n label,\n}: CurrencyMultiSelectProps) {\n const multi = useMultiSelect<Currency>(\n getAllCurrencies(),\n (items, q) => q ? searchCurrencies(q) : items,\n (c) => c.code,\n value,\n onChange,\n maxItems\n );\n\n const wrapperRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (!multi.isOpen) return;\n const handler = (e: MouseEvent) => {\n if (wrapperRef.current && !wrapperRef.current.contains(e.target as Node)) multi.close();\n };\n document.addEventListener('mousedown', handler);\n return () => document.removeEventListener('mousedown', handler);\n }, [multi.isOpen, multi.close]);\n\n useEffect(() => {\n if (!multi.isOpen) return;\n const handler = (e: KeyboardEvent) => { if (e.key === 'Escape') multi.close(); };\n document.addEventListener('keydown', handler);\n return () => document.removeEventListener('keydown', handler);\n }, [multi.isOpen, multi.close]);\n\n const visibleChips = value.slice(0, MAX_VISIBLE_CHIPS);\n const overflow = value.length - MAX_VISIBLE_CHIPS;\n\n return (\n <div ref={wrapperRef} className={`rck-picker${className ? ` ${className}` : ''}`}>\n {label && <span className=\"rck-label\">{label}</span>}\n\n <button\n type=\"button\"\n className={`rck-multiselect-trigger${multi.isOpen ? ' rck-open' : ''}`}\n disabled={disabled}\n onClick={multi.toggle}\n aria-haspopup=\"listbox\"\n aria-expanded={multi.isOpen}\n >\n <div className=\"rck-chips-area\">\n {value.length === 0 ? (\n <span style={{ color: 'var(--rck-text-placeholder)', fontSize: '0.9375rem' }}>{placeholder}</span>\n ) : (\n <>\n {visibleChips.map((c) => (\n <span key={c.code} className=\"rck-chip\">\n {showSymbol && <span>{c.symbol}</span>}\n <span className=\"rck-chip-label\">{c.code}</span>\n <button\n type=\"button\"\n className=\"rck-chip-remove\"\n onClick={(e) => { e.stopPropagation(); onChange(value.filter((x) => x.code !== c.code)); }}\n aria-label={`Remove ${c.code}`}\n >\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 20 20\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.5\" strokeLinecap=\"round\">\n <line x1=\"5\" y1=\"5\" x2=\"15\" y2=\"15\" /><line x1=\"15\" y1=\"5\" x2=\"5\" y2=\"15\" />\n </svg>\n </button>\n </span>\n ))}\n {overflow > 0 && <span className=\"rck-chip-overflow\">+{overflow} more</span>}\n </>\n )}\n </div>\n {value.length > 0 && (\n <button\n type=\"button\"\n className=\"rck-multiselect-clear\"\n onClick={(e) => { e.stopPropagation(); multi.clearAll(); onChange([]); }}\n aria-label=\"Clear all\"\n >\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 20 20\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\">\n <line x1=\"5\" y1=\"5\" x2=\"15\" y2=\"15\" /><line x1=\"15\" y1=\"5\" x2=\"5\" y2=\"15\" />\n </svg>\n </button>\n )}\n <svg className=\"rck-chevron\" viewBox=\"0 0 20 20\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\">\n <polyline points=\"5 8 10 13 15 8\" />\n </svg>\n </button>\n\n {multi.isOpen && (\n <div className=\"rck-dropdown\" role=\"listbox\" aria-multiselectable=\"true\">\n {searchable && (\n <SearchInput value={multi.searchQuery} onChange={multi.setSearchQuery} placeholder=\"Search currencies...\" />\n )}\n <ul className=\"rck-list\">\n {multi.filteredItems.length === 0 ? (\n <li className=\"rck-empty\"><span className=\"rck-empty-icon\">💰</span><span>No currencies found</span></li>\n ) : (\n multi.filteredItems.map((currency) => {\n const selected = multi.isSelected(currency);\n return (\n <li\n key={currency.code}\n role=\"option\"\n aria-selected={selected}\n className={`rck-item${selected ? ' rck-item-selected' : ''}`}\n onClick={() => multi.toggleItem(currency)}\n tabIndex={0}\n onKeyDown={(e) => e.key === 'Enter' && multi.toggleItem(currency)}\n >\n <div className={selected ? 'rck-item-check-multi' : 'rck-item-check-empty'}>\n {selected && <ChipCheckIcon />}\n </div>\n {showSymbol && <span className=\"rck-item-symbol\">{currency.symbol}</span>}\n <div className=\"rck-item-main\">\n <span className=\"rck-item-name\">{currency.name}</span>\n <span className=\"rck-item-sub\">{currency.code}</span>\n </div>\n </li>\n );\n })\n )}\n </ul>\n </div>\n )}\n </div>\n );\n}\n","import React from 'react';\nimport type { CurrencyPickerProps } from '../../types';\nimport { useCurrencyPicker } from '../../hooks/useCurrencyPicker';\nimport { PickerBase } from '../shared/PickerBase';\nimport { SearchInput } from '../shared/SearchInput';\nimport '../../styles/picker.css';\n\nconst CheckIcon = () => (\n <svg className=\"rck-item-check\" viewBox=\"0 0 20 20\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <polyline points=\"4 10 8 14 16 6\" />\n </svg>\n);\n\nexport function CurrencyPicker({\n value,\n onChange,\n placeholder = 'Select a currency',\n searchable = true,\n showSymbol = true,\n disabled = false,\n className,\n label,\n}: CurrencyPickerProps) {\n const picker = useCurrencyPicker(value, onChange);\n\n const triggerContent = (\n <div className=\"rck-trigger-content\">\n {value ? (\n <>\n {showSymbol && <span className=\"rck-item-symbol\">{value.symbol}</span>}\n <span className=\"rck-trigger-text\">{value.code} — {value.name}</span>\n </>\n ) : (\n <span className=\"rck-trigger-text rck-placeholder\">{placeholder}</span>\n )}\n </div>\n );\n\n return (\n <PickerBase\n isOpen={picker.isOpen}\n onClose={picker.close}\n onToggle={picker.toggle}\n label={label}\n disabled={disabled}\n className={className}\n triggerContent={triggerContent}\n id=\"rck-currency-picker\"\n >\n {searchable && (\n <SearchInput\n value={picker.searchQuery}\n onChange={picker.setSearchQuery}\n placeholder=\"Search currency...\"\n />\n )}\n <ul className=\"rck-list\" role=\"listbox\" aria-label=\"Currencies\">\n {picker.filteredItems.length === 0 ? (\n <li className=\"rck-empty\">\n <span className=\"rck-empty-icon\">💰</span>\n <span>No currencies found</span>\n </li>\n ) : (\n picker.filteredItems.map((currency) => {\n const isSelected = value?.code === currency.code;\n return (\n <li\n key={currency.code}\n role=\"option\"\n aria-selected={isSelected}\n className={`rck-item${isSelected ? ' rck-item-selected' : ''}`}\n onClick={() => picker.selectItem(currency)}\n tabIndex={0}\n onKeyDown={(e) => e.key === 'Enter' && picker.selectItem(currency)}\n >\n {showSymbol && <span className=\"rck-item-symbol\">{currency.symbol}</span>}\n <div className=\"rck-item-main\">\n <span className=\"rck-item-name\">{currency.name}</span>\n <span className=\"rck-item-sub\">{currency.code}</span>\n </div>\n {isSelected && <CheckIcon />}\n </li>\n );\n })\n )}\n </ul>\n </PickerBase>\n );\n}\n","import React from 'react';\nimport type { DivisionPickerProps } from '../../types';\nimport { useDivisionPicker } from '../../hooks/useDivisionPicker';\nimport { PickerBase } from '../shared/PickerBase';\nimport { SearchInput } from '../shared/SearchInput';\nimport '../../styles/picker.css';\n\nconst CheckIcon = () => (\n <svg className=\"rck-item-check\" viewBox=\"0 0 20 20\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <polyline points=\"4 10 8 14 16 6\" />\n </svg>\n);\n\nexport function DivisionPicker({\n countryIso2,\n value,\n onChange,\n placeholder = 'Select a division',\n searchable = true,\n disabled = false,\n className,\n label,\n}: DivisionPickerProps) {\n const picker = useDivisionPicker(countryIso2, value, onChange);\n\n const triggerContent = (\n <div className=\"rck-trigger-content\">\n {value ? (\n <>\n <span className=\"rck-trigger-text\">{value.name}</span>\n <span className=\"rck-badge\">{value.iso2}</span>\n </>\n ) : (\n <span className=\"rck-trigger-text rck-placeholder\">{placeholder}</span>\n )}\n </div>\n );\n\n const isDisabled = disabled || !countryIso2;\n\n return (\n <PickerBase\n isOpen={picker.isOpen}\n onClose={picker.close}\n onToggle={picker.toggle}\n label={label}\n disabled={isDisabled}\n className={className}\n triggerContent={triggerContent}\n id=\"rck-division-picker\"\n >\n {searchable && (\n <SearchInput\n value={picker.searchQuery}\n onChange={picker.setSearchQuery}\n placeholder=\"Search division...\"\n />\n )}\n <ul className=\"rck-list\" role=\"listbox\" aria-label=\"Divisions\">\n {picker.filteredItems.length === 0 ? (\n <li className=\"rck-empty\">\n <span className=\"rck-empty-icon\">🗺️</span>\n <span>No divisions found</span>\n </li>\n ) : (\n picker.filteredItems.map((division) => {\n const isSelected = value?.iso2 === division.iso2 && value?.name === division.name;\n return (\n <li\n key={`${division.iso2}-${division.name}`}\n role=\"option\"\n aria-selected={isSelected}\n className={`rck-item${isSelected ? ' rck-item-selected' : ''}`}\n onClick={() => picker.selectItem(division)}\n tabIndex={0}\n onKeyDown={(e) => e.key === 'Enter' && picker.selectItem(division)}\n >\n <div className=\"rck-item-main\">\n <span className=\"rck-item-name\">{division.name}</span>\n <span className=\"rck-item-sub\">{division.timezone}</span>\n </div>\n <div className=\"rck-item-right\">\n <span className=\"rck-badge\">{division.iso2}</span>\n {isSelected && <CheckIcon />}\n </div>\n </li>\n );\n })\n )}\n </ul>\n </PickerBase>\n );\n}\n","import React from 'react';\nimport type { LanguagePickerProps } from '../../types';\nimport { useLanguagePicker } from '../../hooks/useLanguagePicker';\nimport { PickerBase } from '../shared/PickerBase';\nimport { SearchInput } from '../shared/SearchInput';\nimport '../../styles/picker.css';\n\nconst CheckIcon = () => (\n <svg className=\"rck-item-check\" viewBox=\"0 0 20 20\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <polyline points=\"4 10 8 14 16 6\" />\n </svg>\n);\n\nexport function LanguagePicker({\n value,\n onChange,\n placeholder = 'Select a language',\n searchable = true,\n showNativeName = true,\n disabled = false,\n className,\n label,\n}: LanguagePickerProps) {\n const picker = useLanguagePicker(value, onChange);\n\n const triggerContent = (\n <div className=\"rck-trigger-content\">\n {value ? (\n <>\n <span className=\"rck-trigger-text\">{value.english_name}</span>\n {showNativeName && value.native_name !== value.english_name && (\n <span className=\"rck-native-name\">{value.native_name}</span>\n )}\n </>\n ) : (\n <span className=\"rck-trigger-text rck-placeholder\">{placeholder}</span>\n )}\n </div>\n );\n\n return (\n <PickerBase\n isOpen={picker.isOpen}\n onClose={picker.close}\n onToggle={picker.toggle}\n label={label}\n disabled={disabled}\n className={className}\n triggerContent={triggerContent}\n id=\"rck-language-picker\"\n >\n {searchable && (\n <SearchInput\n value={picker.searchQuery}\n onChange={picker.setSearchQuery}\n placeholder=\"Search language...\"\n />\n )}\n <ul className=\"rck-list\" role=\"listbox\" aria-label=\"Languages\">\n {picker.filteredItems.length === 0 ? (\n <li className=\"rck-empty\">\n <span className=\"rck-empty-icon\">🌐</span>\n <span>No languages found</span>\n </li>\n ) : (\n picker.filteredItems.map((lang) => {\n const isSelected = value?.code === lang.code;\n return (\n <li\n key={lang.code}\n role=\"option\"\n aria-selected={isSelected}\n className={`rck-item${isSelected ? ' rck-item-selected' : ''}`}\n onClick={() => picker.selectItem(lang)}\n tabIndex={0}\n onKeyDown={(e) => e.key === 'Enter' && picker.selectItem(lang)}\n >\n <div className=\"rck-item-main\">\n <span className=\"rck-item-name\">{lang.english_name}</span>\n {showNativeName && lang.native_name !== lang.english_name && (\n <span className=\"rck-item-sub\">{lang.native_name}</span>\n )}\n </div>\n <div className=\"rck-item-right\">\n <span className=\"rck-badge\" style={{ fontSize: '0.68rem' }}>{lang.code}</span>\n {isSelected && <CheckIcon />}\n </div>\n </li>\n );\n })\n )}\n </ul>\n </PickerBase>\n );\n}\n","import React, { useRef, useEffect } from 'react';\nimport type { PhoneInputProps } from '../../types';\nimport { usePhoneInput } from '../../hooks/usePhoneInput';\nimport { SearchInput } from '../shared/SearchInput';\nimport '../../styles/picker.css';\n\nexport function PhoneInput({\n value,\n onChange,\n defaultCountryIso2 = 'US',\n placeholder = 'Phone number',\n showFlag = true,\n disabled = false,\n className,\n label,\n}: PhoneInputProps) {\n const phone = usePhoneInput(value, onChange, defaultCountryIso2);\n const wrapperRef = useRef<HTMLDivElement>(null);\n\n // Close dropdown on outside click\n useEffect(() => {\n if (!phone.isOpen) return;\n const handler = (e: MouseEvent) => {\n if (wrapperRef.current && !wrapperRef.current.contains(e.target as Node)) {\n phone.close();\n }\n };\n document.addEventListener('mousedown', handler);\n return () => document.removeEventListener('mousedown', handler);\n }, [phone.isOpen, phone.close]);\n\n // Close on Escape\n useEffect(() => {\n if (!phone.isOpen) return;\n const handler = (e: KeyboardEvent) => { if (e.key === 'Escape') phone.close(); };\n document.addEventListener('keydown', handler);\n return () => document.removeEventListener('keydown', handler);\n }, [phone.isOpen, phone.close]);\n\n return (\n <div ref={wrapperRef} className={`rck-phone-wrapper${className ? ` ${className}` : ''}`}>\n {label && <span className=\"rck-label\">{label}</span>}\n\n <div className={`rck-phone-field${disabled ? ' rck-phone-disabled' : ''}`}>\n {/* Country selector */}\n <button\n type=\"button\"\n className=\"rck-phone-country-btn\"\n onClick={phone.toggle}\n aria-expanded={phone.isOpen}\n aria-label=\"Select country code\"\n disabled={disabled}\n >\n {showFlag && phone.country && (\n <span className=\"rck-phone-flag\">{phone.country.flag}</span>\n )}\n <span className=\"rck-phone-dial\">\n {phone.country ? `+${phone.country.phone_code}` : '+?'}\n </span>\n <svg className=\"rck-phone-chevron\" viewBox=\"0 0 20 20\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\">\n <polyline points=\"5 8 10 13 15 8\" />\n </svg>\n </button>\n\n {/* Phone number input */}\n <input\n type=\"tel\"\n className=\"rck-phone-input\"\n value={phone.number}\n onChange={(e) => phone.setNumber(e.target.value)}\n placeholder={placeholder}\n disabled={disabled}\n inputMode=\"numeric\"\n autoComplete=\"tel-national\"\n />\n\n {/* Country dropdown */}\n {phone.isOpen && (\n <div className=\"rck-phone-dropdown\">\n <SearchInput\n value={phone.searchQuery}\n onChange={phone.setSearchQuery}\n placeholder=\"Search country or dial code...\"\n />\n <ul className=\"rck-list\" role=\"listbox\" aria-label=\"Countries\">\n {phone.filteredCountries.length === 0 ? (\n <li className=\"rck-empty\">\n <span className=\"rck-empty-icon\">🌍</span>\n <span>No countries found</span>\n </li>\n ) : (\n phone.filteredCountries.map((country) => {\n const isSelected = phone.country?.iso2 === country.iso2;\n return (\n <li\n key={country.iso2}\n role=\"option\"\n aria-selected={isSelected}\n className={`rck-item${isSelected ? ' rck-item-selected' : ''}`}\n onClick={() => phone.selectCountry(country)}\n tabIndex={0}\n onKeyDown={(e) => e.key === 'Enter' && phone.selectCountry(country)}\n >\n <span className=\"rck-item-flag\">{country.flag}</span>\n <div className=\"rck-item-main\">\n <span className=\"rck-item-name\">{country.name}</span>\n <span className=\"rck-item-sub\">{country.iso2}</span>\n </div>\n <span className=\"rck-item-phone\">+{country.phone_code}</span>\n </li>\n );\n })\n )}\n </ul>\n </div>\n )}\n </div>\n </div>\n );\n}\n","import React from 'react';\nimport type { TimezonePickerProps } from '../../types';\nimport { useTimezonePicker } from '../../hooks/useTimezonePicker';\nimport { PickerBase } from '../shared/PickerBase';\nimport { SearchInput } from '../shared/SearchInput';\nimport '../../styles/picker.css';\n\nconst CheckIcon = () => (\n <svg className=\"rck-item-check\" viewBox=\"0 0 20 20\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <polyline points=\"4 10 8 14 16 6\" />\n </svg>\n);\n\nexport function TimezonePicker({\n value,\n onChange,\n placeholder = 'Select a timezone',\n searchable = true,\n countryIso2,\n disabled = false,\n className,\n label,\n}: TimezonePickerProps) {\n const picker = useTimezonePicker(value, onChange, countryIso2);\n\n const triggerContent = (\n <div className=\"rck-trigger-content\">\n {value ? (\n <>\n <span className=\"rck-trigger-text\">{value.name}</span>\n <span className=\"rck-badge\">{value.offset_name}</span>\n </>\n ) : (\n <span className=\"rck-trigger-text rck-placeholder\">{placeholder}</span>\n )}\n </div>\n );\n\n return (\n <PickerBase\n isOpen={picker.isOpen}\n onClose={picker.close}\n onToggle={picker.toggle}\n label={label}\n disabled={disabled}\n className={className}\n triggerContent={triggerContent}\n id=\"rck-timezone-picker\"\n >\n {searchable && (\n <SearchInput\n value={picker.searchQuery}\n onChange={picker.setSearchQuery}\n placeholder=\"Search timezone...\"\n />\n )}\n <ul className=\"rck-list\" role=\"listbox\" aria-label=\"Timezones\">\n {picker.filteredItems.length === 0 ? (\n <li className=\"rck-empty\">\n <span className=\"rck-empty-icon\">🕐</span>\n <span>No timezones found</span>\n </li>\n ) : (\n picker.filteredItems.map((tz) => {\n const isSelected = value?.name === tz.name;\n return (\n <li\n key={tz.name}\n role=\"option\"\n aria-selected={isSelected}\n className={`rck-item${isSelected ? ' rck-item-selected' : ''}`}\n onClick={() => picker.selectItem(tz)}\n tabIndex={0}\n onKeyDown={(e) => e.key === 'Enter' && picker.selectItem(tz)}\n >\n <div className=\"rck-item-main\">\n <span className=\"rck-item-name\">{tz.name}</span>\n <span className=\"rck-item-sub\">{tz.tzName} · {tz.abbreviation}</span>\n </div>\n <div className=\"rck-item-right\">\n <span className=\"rck-offset-badge\">{tz.offset_name}</span>\n {isSelected && <CheckIcon />}\n </div>\n </li>\n );\n })\n )}\n </ul>\n </PickerBase>\n );\n}\n"],"names":["SearchInput","value","onChange","placeholder","autoFocus","inputRef","useRef","useEffect","_a","jsxs","jsx","e","MAX_VISIBLE_CHIPS","ChipCheckIcon","CountryMultiSelect","maxItems","showFlags","searchable","disabled","className","label","multi","useMultiSelect","getAllCountries","items","q","searchCountries","c","wrapperRef","handler","visibleChips","overflow","Fragment","x","country","selected","ChevronIcon","PickerBase","isOpen","onClose","onToggle","triggerContent","children","id","CheckIcon","CountryPicker","showFlag","showPhoneCode","picker","useCountryPicker","isSelected","CurrencyMultiSelect","showSymbol","getAllCurrencies","searchCurrencies","currency","CurrencyPicker","useCurrencyPicker","DivisionPicker","countryIso2","useDivisionPicker","isDisabled","division","LanguagePicker","showNativeName","useLanguagePicker","lang","PhoneInput","defaultCountryIso2","phone","usePhoneInput","TimezonePicker","useTimezonePicker","tz"],"mappings":"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"}
@@ -0,0 +1,354 @@
1
+ import { JSX as JSX_2 } from 'react/jsx-runtime';
2
+
3
+ export declare interface Country {
4
+ name: string;
5
+ iso2: string;
6
+ iso3: string;
7
+ phone_code: string;
8
+ phone_format: PhoneFormat;
9
+ currency: Currency;
10
+ division_type: string;
11
+ divisions: Division[];
12
+ timezones: Timezone[];
13
+ /** Emoji flag computed from iso2 */
14
+ flag: string;
15
+ }
16
+
17
+ export declare function CountryMultiSelect({ value, onChange, placeholder, maxItems, showFlags, searchable, disabled, className, label, }: CountryMultiSelectProps): JSX_2.Element;
18
+
19
+ export declare interface CountryMultiSelectProps {
20
+ value: Country[];
21
+ onChange: (countries: Country[]) => void;
22
+ placeholder?: string;
23
+ /** Maximum number of selections (undefined = unlimited) */
24
+ maxItems?: number;
25
+ showFlags?: boolean;
26
+ searchable?: boolean;
27
+ disabled?: boolean;
28
+ className?: string;
29
+ label?: string;
30
+ }
31
+
32
+ export declare function CountryPicker({ value, onChange, placeholder, searchable, showFlag, showPhoneCode, disabled, className, label, }: CountryPickerProps): JSX_2.Element;
33
+
34
+ export declare interface CountryPickerProps {
35
+ /** Currently selected country */
36
+ value?: Country | null;
37
+ /** Callback when user selects a country */
38
+ onChange: (country: Country) => void;
39
+ placeholder?: string;
40
+ /** Enable search input */
41
+ searchable?: boolean;
42
+ /** Show emoji flag next to country name */
43
+ showFlag?: boolean;
44
+ /** Show phone dial code */
45
+ showPhoneCode?: boolean;
46
+ /** Disable the picker */
47
+ disabled?: boolean;
48
+ /** Additional wrapper class */
49
+ className?: string;
50
+ /** aria-label */
51
+ label?: string;
52
+ }
53
+
54
+ export declare interface Currency {
55
+ code: string;
56
+ name: string;
57
+ symbol: string;
58
+ }
59
+
60
+ export declare function CurrencyMultiSelect({ value, onChange, placeholder, maxItems, showSymbol, searchable, disabled, className, label, }: CurrencyMultiSelectProps): JSX_2.Element;
61
+
62
+ export declare interface CurrencyMultiSelectProps {
63
+ value: Currency[];
64
+ onChange: (currencies: Currency[]) => void;
65
+ placeholder?: string;
66
+ maxItems?: number;
67
+ showSymbol?: boolean;
68
+ searchable?: boolean;
69
+ disabled?: boolean;
70
+ className?: string;
71
+ label?: string;
72
+ }
73
+
74
+ export declare function CurrencyPicker({ value, onChange, placeholder, searchable, showSymbol, disabled, className, label, }: CurrencyPickerProps): JSX_2.Element;
75
+
76
+ export declare interface CurrencyPickerProps {
77
+ value?: Currency | null;
78
+ onChange: (currency: Currency) => void;
79
+ placeholder?: string;
80
+ searchable?: boolean;
81
+ /** Filter currencies to a specific country (iso2) and enable auto-selection */
82
+ countryIso2?: string;
83
+ /** Auto-select the first currency if countryIso2 is provided. Defaults to true if countryIso2 is present and value is empty. */
84
+ autoSelect?: boolean;
85
+ /** Show currency symbol alongside code */
86
+ showSymbol?: boolean;
87
+ disabled?: boolean;
88
+ className?: string;
89
+ label?: string;
90
+ }
91
+
92
+ export declare interface Division {
93
+ name: string;
94
+ iso2: string;
95
+ timezone: string;
96
+ }
97
+
98
+ export declare function DivisionPicker({ countryIso2, value, onChange, placeholder, searchable, disabled, className, label, }: DivisionPickerProps): JSX_2.Element;
99
+
100
+ export declare interface DivisionPickerProps {
101
+ /** ISO2 code of the parent country (required) */
102
+ countryIso2: string;
103
+ value?: Division | null;
104
+ onChange: (division: Division) => void;
105
+ placeholder?: string;
106
+ searchable?: boolean;
107
+ disabled?: boolean;
108
+ className?: string;
109
+ label?: string;
110
+ }
111
+
112
+ /**
113
+ * Returns all countries
114
+ */
115
+ export declare function getAllCountries(): Country[];
116
+
117
+ /**
118
+ * Returns all unique currencies across all countries
119
+ */
120
+ export declare function getAllCurrencies(): Currency[];
121
+
122
+ /**
123
+ * Returns all languages
124
+ */
125
+ export declare function getAllLanguages(): Language[];
126
+
127
+ /**
128
+ * Returns all unique timezones across all countries
129
+ */
130
+ export declare function getAllTimezones(): Timezone[];
131
+
132
+ /**
133
+ * Find a country by its ISO2 code (case-insensitive)
134
+ */
135
+ export declare function getCountryByIso2(iso2: string): Country | undefined;
136
+
137
+ /**
138
+ * Find a country by its ISO3 code (case-insensitive)
139
+ */
140
+ export declare function getCountryByIso3(iso3: string): Country | undefined;
141
+
142
+ /**
143
+ * Find a country by its name (partial, case-insensitive)
144
+ */
145
+ export declare function getCountryByName(name: string): Country | undefined;
146
+
147
+ /**
148
+ * Find a currency by its code (e.g. "USD")
149
+ */
150
+ export declare function getCurrencyByCode(code: string): Currency | undefined;
151
+
152
+ /**
153
+ * Get the currency of a country
154
+ */
155
+ export declare function getCurrencyByCountry(iso2: string): Currency | undefined;
156
+
157
+ /**
158
+ * Get all divisions for a country
159
+ */
160
+ export declare function getDivisionsByCountry(iso2: string): Division[];
161
+
162
+ /**
163
+ * Find a language by its BCP-47 code
164
+ */
165
+ export declare function getLanguageByCode(code: string): Language | undefined;
166
+
167
+ /**
168
+ * Find a timezone by its IANA name (e.g. "America/New_York")
169
+ */
170
+ export declare function getTimezoneByName(name: string): Timezone | undefined;
171
+
172
+ /**
173
+ * Get all timezones for a country
174
+ */
175
+ export declare function getTimezonesByCountry(iso2: string): Timezone[];
176
+
177
+ /**
178
+ * Auto-generated country dataset — DO NOT EDIT MANUALLY.
179
+ * Source: https://raw.githubusercontent.com/kishormainali/country_division_database/refs/heads/main/countries.json
180
+ * Generated: 2026-04-19T05:48:30.758Z
181
+ * Countries: 250
182
+ */
183
+ export declare function iso2ToFlag(iso2: string): string;
184
+
185
+ export declare interface Language {
186
+ code: string;
187
+ english_name: string;
188
+ native_name: string;
189
+ }
190
+
191
+ export declare function LanguagePicker({ value, onChange, placeholder, searchable, showNativeName, disabled, className, label, }: LanguagePickerProps): JSX_2.Element;
192
+
193
+ export declare interface LanguagePickerProps {
194
+ value?: Language | null;
195
+ onChange: (language: Language) => void;
196
+ placeholder?: string;
197
+ searchable?: boolean;
198
+ /** Show native language name alongside english name */
199
+ showNativeName?: boolean;
200
+ disabled?: boolean;
201
+ className?: string;
202
+ label?: string;
203
+ }
204
+
205
+ export declare interface PhoneFormat {
206
+ countryCode?: string;
207
+ iso2: string;
208
+ dialCode: string;
209
+ patterns: string;
210
+ possibleLengths: string;
211
+ example: string | number;
212
+ }
213
+
214
+ export declare function PhoneInput({ value, onChange, defaultCountryIso2, placeholder, showFlag, disabled, className, label, }: PhoneInputProps): JSX_2.Element;
215
+
216
+ export declare interface PhoneInputProps {
217
+ value?: PhoneValue | null;
218
+ onChange: (value: PhoneValue) => void;
219
+ /** Pre-select a country by ISO2 on first render */
220
+ defaultCountryIso2?: string;
221
+ placeholder?: string;
222
+ showFlag?: boolean;
223
+ disabled?: boolean;
224
+ className?: string;
225
+ label?: string;
226
+ }
227
+
228
+ /**
229
+ * Value object returned by PhoneInput.
230
+ */
231
+ export declare interface PhoneValue {
232
+ /** Full Country object of the selected country */
233
+ country: Country;
234
+ /** Dial code with + prefix, e.g. "+1" */
235
+ dialCode: string;
236
+ /** Raw phone number without dial code, e.g. "4155551234" */
237
+ number: string;
238
+ /** Full number with dial code, e.g. "+14155551234" */
239
+ full: string;
240
+ }
241
+
242
+ /**
243
+ * Search countries by name, iso2, iso3 or phone code
244
+ */
245
+ export declare function searchCountries(query: string): Country[];
246
+
247
+ /**
248
+ * Search currencies by code, name, or symbol
249
+ */
250
+ export declare function searchCurrencies(query: string, countryIso2?: string): Currency[];
251
+
252
+ /**
253
+ * Search languages by english name, native name, or code
254
+ */
255
+ export declare function searchLanguages(query: string): Language[];
256
+
257
+ /**
258
+ * Search timezones by name, abbreviation, or offset string
259
+ */
260
+ export declare function searchTimezones(query: string, countryIso2?: string): Timezone[];
261
+
262
+ export declare interface Timezone {
263
+ name: string;
264
+ offset: number;
265
+ offset_name: string;
266
+ abbreviation: string;
267
+ tzName: string;
268
+ }
269
+
270
+ export declare function TimezonePicker({ value, onChange, placeholder, searchable, countryIso2, disabled, className, label, }: TimezonePickerProps): JSX_2.Element;
271
+
272
+ export declare interface TimezonePickerProps {
273
+ value?: Timezone | null;
274
+ onChange: (timezone: Timezone) => void;
275
+ placeholder?: string;
276
+ searchable?: boolean;
277
+ /** Filter timezones to a specific country (iso2) and enable auto-selection */
278
+ countryIso2?: string;
279
+ /** Auto-select the first timezone if countryIso2 is provided. Defaults to true if countryIso2 is present and value is empty. */
280
+ autoSelect?: boolean;
281
+ disabled?: boolean;
282
+ className?: string;
283
+ label?: string;
284
+ }
285
+
286
+ /**
287
+ * Generic base hook for all pickers.
288
+ * Handles open/close state, search query, and item selection.
289
+ */
290
+ export declare function useBasePicker<T>(allItems: T[], filterFn: (items: T[], query: string) => T[], initialValue?: T | null, onChange?: (item: T) => void): UsePickerReturn<T>;
291
+
292
+ export declare function useCountryPicker(initialValue?: Country | null, onChange?: (country: Country) => void): UsePickerReturn<Country>;
293
+
294
+ export declare function useCurrencyPicker(initialValue?: Currency | null, onChange?: (currency: Currency) => void): UsePickerReturn<Currency>;
295
+
296
+ export declare function useDivisionPicker(countryIso2: string, initialValue?: Division | null, onChange?: (division: Division) => void): UsePickerReturn<Division>;
297
+
298
+ export declare function useLanguagePicker(initialValue?: Language | null, onChange?: (language: Language) => void): UsePickerReturn<Language>;
299
+
300
+ /**
301
+ * Generic multi-selection hook.
302
+ * Handles open/close, search, and toggle-selection of multiple items.
303
+ */
304
+ export declare function useMultiSelect<T>(allItems: T[], filterFn: (items: T[], query: string) => T[], keyFn: (item: T) => string, initialValue?: T[], onChange?: (items: T[]) => void, maxItems?: number): UseMultiSelectReturn<T>;
305
+
306
+ export declare interface UseMultiSelectReturn<T> {
307
+ isOpen: boolean;
308
+ searchQuery: string;
309
+ filteredItems: T[];
310
+ selectedItems: T[];
311
+ open: () => void;
312
+ close: () => void;
313
+ toggle: () => void;
314
+ setSearchQuery: (query: string) => void;
315
+ toggleItem: (item: T) => void;
316
+ isSelected: (item: T) => boolean;
317
+ removeItem: (item: T) => void;
318
+ clearAll: () => void;
319
+ }
320
+
321
+ export declare function usePhoneInput(initialValue?: PhoneValue | null, onChange?: (value: PhoneValue) => void, defaultCountryIso2?: string): UsePhoneInputReturn;
322
+
323
+ declare interface UsePhoneInputReturn {
324
+ country: Country | null;
325
+ number: string;
326
+ value: PhoneValue | null;
327
+ isOpen: boolean;
328
+ searchQuery: string;
329
+ filteredCountries: Country[];
330
+ minLength?: number;
331
+ maxLength?: number;
332
+ setSearchQuery: (q: string) => void;
333
+ selectCountry: (country: Country) => void;
334
+ setNumber: (num: string) => void;
335
+ toggle: () => void;
336
+ close: () => void;
337
+ }
338
+
339
+ export declare interface UsePickerReturn<T> {
340
+ isOpen: boolean;
341
+ searchQuery: string;
342
+ filteredItems: T[];
343
+ selectedItem: T | null;
344
+ open: () => void;
345
+ close: () => void;
346
+ toggle: () => void;
347
+ setSearchQuery: (query: string) => void;
348
+ selectItem: (item: T) => void;
349
+ clearSelection: () => void;
350
+ }
351
+
352
+ export declare function useTimezonePicker(initialValue?: Timezone | null, onChange?: (timezone: Timezone) => void, countryIso2?: string): UsePickerReturn<Timezone>;
353
+
354
+ export { }