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":"ui.cjs.js","sources":["../src/ui/lib/utils.ts","../src/ui/components/primitives.tsx","../src/ui/components/CountryPicker.tsx","../src/ui/components/CurrencyPicker.tsx","../src/ui/components/TimezonePicker.tsx","../src/ui/components/LanguagePicker.tsx","../src/ui/components/DivisionPicker.tsx","../src/ui/components/PhoneInput.tsx","../src/ui/components/CountryMultiSelect.tsx","../src/ui/components/CurrencyMultiSelect.tsx"],"sourcesContent":["import { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\n/**\n * Merges Tailwind CSS classes safely, resolving conflicts.\n * Re-exported from react-country-kit/ui for consumer convenience.\n */\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import React from 'react';\nimport * as PopoverPrimitive from '@radix-ui/react-popover';\nimport { cn } from '../lib/utils';\n\n// ─── Re-exported Radix primitives ────────────────────────────────────────────\nexport const Popover = PopoverPrimitive.Root;\nexport const PopoverTrigger = PopoverPrimitive.Trigger;\n\n// ─── Utility Primitives ──────────────────────────────────────────────────────\nexport const CheckIcon = ({ className }: { className?: string }) => (\n <svg\n className={cn('h-4 w-4 text-primary', className)}\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <polyline points=\"4 10 8 14 16 6\" />\n </svg>\n);\nCheckIcon.displayName = 'CheckIcon';\n\nexport const FieldLabel = ({\n children,\n className,\n}: {\n children: React.ReactNode;\n className?: string;\n}) => (\n <label\n className={cn(\n 'text-[0.65rem] font-bold uppercase tracking-[0.12em] text-muted-foreground/80 ml-1 mb-1.5 block',\n className\n )}\n >\n {children}\n </label>\n);\nFieldLabel.displayName = 'FieldLabel';\n\nexport const Badge = ({ children, className }: { children: React.ReactNode; className?: string }) => (\n <span\n className={cn(\n 'inline-flex items-center rounded-full bg-primary/20 px-2.5 py-0.5 text-[0.7rem] font-bold text-primary tracking-tight',\n className\n )}\n >\n {children}\n </span>\n);\nBadge.displayName = 'Badge';\n\nexport interface PopoverContentProps\n extends React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content> { }\n\nexport const PopoverContent = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Content>,\n PopoverContentProps\n>(({ className, align = 'start', sideOffset = 6, onCloseAutoFocus, ...props }, ref) => (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n onCloseAutoFocus={(e) => {\n // Prevent Radix from returning focus to the trigger after close.\n // Without this, the focus restoration can re-trigger DismissableLayer\n // logic and cause the picker to close before selection completes.\n e.preventDefault();\n onCloseAutoFocus?.(e);\n }}\n className={cn(\n 'z-50 w-[var(--radix-popover-trigger-width)] rounded-xl border border-border bg-popover p-0 shadow-lg',\n 'data-[state=open]:animate-in data-[state=closed]:animate-out',\n 'data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n 'data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95',\n 'data-[side=bottom]:slide-in-from-top-2 data-[side=top]:slide-in-from-bottom-2',\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n));\nPopoverContent.displayName = 'PopoverContent';\n\n// ─── Search / list primitives (no external dependency) ───────────────────────\n\n/** Wrapper that groups search input + scrollable list. */\nexport const CommandRoot = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n 'flex h-full w-full flex-col overflow-hidden rounded-xl bg-popover text-popover-foreground',\n className\n )}\n {...props}\n />\n));\nCommandRoot.displayName = 'CommandRoot';\n\nexport interface CommandInputProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'onChange'> {\n onValueChange?: (value: string) => void;\n}\n\nexport const CommandInput = React.forwardRef<HTMLInputElement, CommandInputProps>(\n ({ className, onValueChange, ...props }, ref) => (\n <div className=\"px-3 pt-3 pb-2 border-b border-border\">\n <div className={cn(\n 'flex items-center gap-2 px-3 py-1.5 rounded-lg border border-border bg-muted/40 transition-colors',\n 'focus-within:border-primary/50 focus-within:ring-2 focus-within:ring-primary/10'\n )}>\n <svg\n className=\"h-3.5 w-3.5 shrink-0 text-muted-foreground\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n >\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={ref}\n type=\"text\"\n autoComplete=\"off\"\n autoCorrect=\"off\"\n spellCheck={false}\n className={cn(\n 'flex h-8 w-full bg-transparent text-sm outline-none',\n 'placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50',\n className\n )}\n onChange={(e) => onValueChange?.(e.target.value)}\n {...props}\n />\n </div>\n </div>\n )\n);\nCommandInput.displayName = 'CommandInput';\n\nexport const CommandList = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n role=\"listbox\"\n className={cn('max-h-72 overflow-y-auto overflow-x-hidden p-1', className)}\n {...props}\n />\n));\nCommandList.displayName = 'CommandList';\n\nexport const CommandEmpty = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>((props, ref) => (\n <div\n ref={ref}\n className=\"flex flex-col items-center justify-center gap-1 py-8 text-sm text-muted-foreground\"\n {...props}\n />\n));\nCommandEmpty.displayName = 'CommandEmpty';\n\nexport interface CommandItemProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Called when the item is clicked or activated via keyboard Enter. */\n onSelect?: () => void;\n disabled?: boolean;\n selected?: boolean;\n /** Kept for API compatibility; not used internally. */\n value?: string;\n}\n\nexport const CommandItem = React.forwardRef<HTMLDivElement, CommandItemProps>(\n ({ className, onSelect, onMouseDown, onKeyDown, disabled, selected, value: _value, ...props }, ref) => (\n <div\n ref={ref}\n role=\"option\"\n aria-disabled={disabled || undefined}\n aria-selected={selected}\n data-disabled={disabled || undefined}\n data-selected={selected || undefined}\n tabIndex={disabled ? undefined : 0}\n className={cn(\n 'relative flex cursor-pointer select-none items-center gap-2 rounded-lg px-2 py-2 text-sm outline-none',\n 'focus:bg-accent focus:text-accent-foreground',\n 'data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n 'hover:bg-accent/50 transition-colors',\n selected && 'bg-accent text-accent-foreground font-semibold',\n className\n )}\n onMouseDown={(e) => {\n // Prevent the browser from moving focus on mousedown so Radix's\n // DismissableLayer doesn't detect a \"focus outside\" and close the\n // popover before the click event fires.\n e.preventDefault();\n onMouseDown?.(e);\n }}\n onClick={disabled ? undefined : () => onSelect?.()}\n onKeyDown={(e) => {\n if (!disabled && e.key === 'Enter') {\n e.preventDefault();\n onSelect?.();\n }\n onKeyDown?.(e);\n }}\n {...props}\n />\n )\n);\nCommandItem.displayName = 'CommandItem';\n\n// ─── Trigger button ───────────────────────────────────────────────────────────\nexport interface PickerTriggerProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n isOpen?: boolean;\n hasValue?: boolean;\n placeholder?: string;\n}\n\nexport const PickerTrigger = React.forwardRef<HTMLButtonElement, PickerTriggerProps>(\n ({ className, isOpen, children, placeholder, hasValue, ...props }, ref) => (\n <button\n ref={ref}\n type=\"button\"\n role=\"combobox\"\n aria-expanded={isOpen}\n aria-haspopup=\"listbox\"\n className={cn(\n 'flex h-12 w-full items-center justify-between gap-3 rounded-xl border border-input bg-background px-4 py-2 text-sm ring-offset-background',\n 'placeholder:text-muted-foreground',\n 'focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n 'hover:bg-accent/10 transition-all',\n !hasValue && 'text-muted-foreground',\n className\n )}\n {...props}\n >\n <span className=\"flex min-w-0 flex-1 items-center gap-2 truncate\">\n {children || <span>{placeholder}</span>}\n </span>\n <svg\n className={cn(\n 'h-4 w-4 shrink-0 text-muted-foreground/60 transition-transform duration-200',\n isOpen && 'rotate-180'\n )}\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <polyline points=\"6 8 10 12 14 8\" />\n </svg>\n </button>\n )\n);\nPickerTrigger.displayName = 'PickerTrigger';\n\n// ─── Base Picker ─────────────────────────────────────────────────────────────\nexport interface BasePickerProps {\n label?: string;\n trigger: React.ReactNode;\n children: React.ReactNode;\n open: boolean;\n onOpenChange: (open: boolean) => void;\n className?: string;\n}\n\nexport const BasePicker = React.forwardRef<HTMLDivElement, BasePickerProps>(\n ({ label, trigger, children, open, onOpenChange, className }, ref) => (\n <div ref={ref} className={cn('flex flex-col gap-0', className)}>\n {label && <FieldLabel>{label}</FieldLabel>}\n <Popover open={open} onOpenChange={onOpenChange}>\n <PopoverTrigger asChild>{trigger}</PopoverTrigger>\n <PopoverContent className=\"p-0\">{children}</PopoverContent>\n </Popover>\n </div>\n )\n);\nBasePicker.displayName = 'BasePicker';\n\n// ─── Multi-Select Trigger ─────────────────────────────────────────────────────\nexport interface MultiSelectTriggerProps<T>\n extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'value'> {\n value: T[];\n onRemove: (item: T, e: React.MouseEvent) => void;\n onClear: (e: React.MouseEvent) => void;\n isOpen: boolean;\n placeholder?: string;\n renderChip: (item: T) => React.ReactNode;\n maxVisible?: number;\n}\n\nexport const MultiSelectTrigger = React.forwardRef(\n <T,>(\n {\n value,\n onRemove,\n onClear,\n isOpen,\n placeholder,\n renderChip,\n maxVisible = 3,\n className,\n disabled,\n ...props\n }: MultiSelectTriggerProps<T>,\n ref: React.ForwardedRef<HTMLButtonElement>\n ) => {\n const visible = value.slice(0, maxVisible);\n const overflow = value.length - maxVisible;\n\n return (\n <button\n ref={ref}\n type=\"button\"\n aria-haspopup=\"listbox\"\n aria-expanded={isOpen}\n disabled={disabled}\n className={cn(\n 'flex min-h-[3rem] w-full items-center gap-3 rounded-xl border border-input bg-background px-4 py-2',\n 'text-sm ring-offset-background focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2',\n 'disabled:cursor-not-allowed disabled:opacity-50 hover:bg-accent/10 transition-all text-start',\n isOpen && 'ring-2 ring-ring ring-offset-2',\n className\n )}\n {...props}\n >\n <div className=\"flex flex-1 flex-wrap gap-1.5 min-w-0 items-center\">\n {value.length === 0 ? (\n <span className=\"text-muted-foreground\">{placeholder}</span>\n ) : (\n <>\n {visible.map((item, idx) => (\n <span\n key={idx}\n className=\"inline-flex items-center gap-1 rounded-full bg-primary/10 px-2 py-0.5 text-[0.75rem] font-semibold text-primary\"\n >\n {renderChip(item)}\n <span\n role=\"button\"\n tabIndex={disabled ? -1 : 0}\n onClick={(e) => {\n e.stopPropagation();\n if (!disabled) onRemove(item, e);\n }}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n e.stopPropagation();\n if (!disabled) onRemove(item, e as any);\n }\n }}\n className=\"ml-0.5 rounded-full text-primary/60 hover:text-primary transition-colors cursor-pointer\"\n aria-label=\"Remove\"\n >\n <svg width=\"9\" height=\"9\" 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 </span>\n </span>\n ))}\n {overflow > 0 && (\n <Badge className=\"bg-muted text-muted-foreground/80 px-2\">+{overflow}</Badge>\n )}\n </>\n )}\n </div>\n <div className=\"flex shrink-0 items-center gap-1 ml-auto\">\n {value.length > 0 && (\n <span\n role=\"button\"\n tabIndex={disabled ? -1 : 0}\n onClick={(e) => {\n e.stopPropagation();\n if (!disabled) onClear(e);\n }}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n e.stopPropagation();\n if (!disabled) onClear(e as any);\n }\n }}\n className=\"rounded p-0.5 text-muted-foreground hover:text-foreground hover:bg-accent/30 transition-colors cursor-pointer\"\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 </span>\n )}\n <svg\n className={cn('h-4 w-4 text-muted-foreground/60 transition-transform duration-200', isOpen && 'rotate-180')}\n viewBox=\"0 0 20 20\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\"\n >\n <polyline points=\"6 8 10 12 14 8\" />\n </svg>\n </div>\n </button>\n );\n }\n) as (<T>(props: MultiSelectTriggerProps<T> & { ref?: React.Ref<HTMLButtonElement> }) => React.ReactElement) & {\n displayName?: string;\n};\nMultiSelectTrigger.displayName = 'MultiSelectTrigger';\n","import React, { useState } from 'react';\nimport {\n CommandRoot,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandItem,\n PickerTrigger,\n CheckIcon,\n Badge,\n BasePicker,\n} from './primitives';\nimport { cn } from '../lib/utils';\nimport type { CountryPickerProps } from '../../types';\nimport { getAllCountries, searchCountries } from '../../utils/countries';\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 [open, setOpen] = useState(false);\n const [query, setQuery] = useState('');\n\n const items = query ? searchCountries(query) : getAllCountries();\n\n const handleSelect = (iso2: string) => {\n const country = getAllCountries().find(\n (c) => c.iso2.toLowerCase() === iso2.toLowerCase()\n );\n if (country) {\n onChange(country);\n setOpen(false);\n setQuery('');\n }\n };\n\n return (\n <BasePicker\n label={label}\n className={className}\n open={open}\n onOpenChange={setOpen}\n trigger={\n <PickerTrigger\n isOpen={open}\n hasValue={!!value}\n placeholder={placeholder}\n disabled={disabled}\n >\n {value && (\n <>\n {showFlag && <span className=\"text-lg leading-none\">{value.flag}</span>}\n <span className=\"flex-1 text-start truncate\">{value.name}</span>\n {showPhoneCode && <Badge>+{value.phone_code}</Badge>}\n </>\n )}\n </PickerTrigger>\n }\n >\n <CommandRoot>\n {searchable && (\n <CommandInput\n placeholder=\"Search country...\"\n value={query}\n onValueChange={setQuery}\n />\n )}\n <CommandList>\n {items.length === 0 && (\n <CommandEmpty>\n <span className=\"text-2xl opacity-40\">🌍</span>\n <span>No countries found</span>\n </CommandEmpty>\n )}\n {items.map((country) => {\n const isSelected = value?.iso2 === country.iso2;\n return (\n <CommandItem\n key={country.iso2}\n onSelect={() => handleSelect(country.iso2)}\n selected={isSelected}\n >\n {showFlag && <span className=\"text-lg leading-none\">{country.flag}</span>}\n <div className=\"flex flex-1 flex-col gap-0 min-w-0\">\n <span className=\"truncate font-medium\">{country.name}</span>\n <span className=\"text-[0.7rem] text-muted-foreground\">\n {country.iso3} · {country.division_type}\n </span>\n </div>\n <div className=\"flex items-center gap-1.5 ml-auto shrink-0\">\n {showPhoneCode && (\n <span className=\"text-[0.7rem] text-muted-foreground tabular-nums bg-muted px-1.5 py-0.5 rounded\">\n +{country.phone_code}\n </span>\n )}\n {isSelected && <CheckIcon />}\n </div>\n </CommandItem>\n );\n })}\n </CommandList>\n </CommandRoot>\n </BasePicker>\n );\n}\n","import React, { useState, useEffect } from 'react';\nimport {\n CommandRoot,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandItem,\n PickerTrigger,\n CheckIcon,\n BasePicker,\n} from './primitives';\nimport { cn } from '../lib/utils';\nimport type { CurrencyPickerProps } from '../../types';\nimport { getAllCurrencies, searchCurrencies } from '../../utils/currencies';\nimport { getCurrencyByCountry } from '../../utils/countries';\n\nexport function CurrencyPicker({\n value,\n onChange,\n placeholder = 'Select a currency...',\n searchable = true,\n showSymbol = true,\n countryIso2,\n autoSelect = true,\n disabled = false,\n className,\n label,\n}: CurrencyPickerProps) {\n const [open, setOpen] = useState(false);\n const [query, setQuery] = useState('');\n\n useEffect(() => {\n if (countryIso2 && autoSelect && !value) {\n const currency = getCurrencyByCountry(countryIso2);\n if (currency) {\n onChange(currency);\n }\n }\n }, [countryIso2, autoSelect, value, onChange]);\n\n const getInitialPool = () => {\n if (countryIso2) {\n const countryCurrency = getCurrencyByCountry(countryIso2);\n return countryCurrency ? [countryCurrency] : [];\n }\n return getAllCurrencies();\n };\n\n const items = query ? searchCurrencies(query, countryIso2) : getInitialPool();\n\n const handleSelect = (code: string) => {\n const currency = getAllCurrencies().find(\n (c) => c.code.toLowerCase() === code.toLowerCase()\n );\n if (currency) {\n onChange(currency);\n setOpen(false);\n setQuery('');\n }\n };\n\n return (\n <BasePicker\n label={label}\n className={className}\n open={open}\n onOpenChange={setOpen}\n trigger={\n <PickerTrigger\n isOpen={open}\n hasValue={!!value}\n placeholder={placeholder}\n disabled={disabled}\n >\n {value && (\n <>\n {showSymbol && (\n <span className=\"min-w-[1.5rem] text-center font-bold text-primary text-base\">\n {value.symbol}\n </span>\n )}\n <span className=\"flex-1 text-start truncate\">\n {value.code} — {value.name}\n </span>\n </>\n )}\n </PickerTrigger>\n }\n >\n <CommandRoot>\n {searchable && (\n <CommandInput\n placeholder=\"Search currency...\"\n value={query}\n onValueChange={setQuery}\n />\n )}\n <CommandList>\n {items.length === 0 && (\n <CommandEmpty>\n <span className=\"text-2xl opacity-40\">💰</span>\n <span>No currencies found</span>\n </CommandEmpty>\n )}\n {items.map((currency) => {\n const isSelected = value?.code === currency.code;\n return (\n <CommandItem\n key={currency.code}\n onSelect={() => handleSelect(currency.code)}\n selected={isSelected}\n >\n {showSymbol && (\n <span className=\"min-w-[1.5rem] text-center font-bold text-primary\">\n {currency.symbol}\n </span>\n )}\n <div className=\"flex flex-1 flex-col gap-0 min-w-0\">\n <span className=\"truncate font-medium\">{currency.name}</span>\n <span className=\"text-[0.7rem] text-muted-foreground\">{currency.code}</span>\n </div>\n {isSelected && <CheckIcon className=\"ml-auto shrink-0\" />}\n </CommandItem>\n );\n })}\n </CommandList>\n </CommandRoot>\n </BasePicker>\n );\n}\n","import React, { useState, useEffect } from 'react';\nimport {\n CommandRoot,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandItem,\n PickerTrigger,\n CheckIcon,\n Badge,\n BasePicker,\n} from './primitives';\nimport { cn } from '../lib/utils';\nimport type { TimezonePickerProps } from '../../types';\nimport { getAllTimezones, searchTimezones } from '../../utils/timezones';\nimport { getTimezonesByCountry } from '../../utils/countries';\n\nexport function TimezonePicker({\n value,\n onChange,\n placeholder = 'Select a timezone...',\n searchable = true,\n countryIso2,\n autoSelect = true,\n disabled = false,\n className,\n label,\n}: TimezonePickerProps) {\n const [open, setOpen] = useState(false);\n const [query, setQuery] = useState('');\n\n useEffect(() => {\n if (countryIso2 && autoSelect && !value) {\n const tzs = getTimezonesByCountry(countryIso2);\n if (tzs && tzs.length > 0) {\n onChange(tzs[0]);\n }\n }\n }, [countryIso2, autoSelect, value, onChange]);\n\n const pool = countryIso2 ? getTimezonesByCountry(countryIso2) : getAllTimezones();\n const items = query ? searchTimezones(query, countryIso2) : pool;\n\n const handleSelect = (name: string) => {\n const tz = pool.find((t) => t.name === name);\n if (tz) {\n onChange(tz);\n setOpen(false);\n setQuery('');\n }\n };\n\n return (\n <BasePicker\n label={label}\n className={className}\n open={open}\n onOpenChange={setOpen}\n trigger={\n <PickerTrigger\n isOpen={open}\n hasValue={!!value}\n placeholder={placeholder}\n disabled={disabled}\n >\n {value && (\n <>\n <span className=\"flex-1 text-start truncate\">{value.name}</span>\n <Badge>{value.offset_name}</Badge>\n </>\n )}\n </PickerTrigger>\n }\n >\n <CommandRoot>\n {searchable && (\n <CommandInput\n placeholder=\"Search timezone...\"\n value={query}\n onValueChange={setQuery}\n />\n )}\n <CommandList>\n {items.length === 0 && (\n <CommandEmpty>\n <span className=\"text-2xl opacity-40\">🕐</span>\n <span>No timezones found</span>\n </CommandEmpty>\n )}\n {items.map((tz) => {\n const isSelected = value?.name === tz.name;\n return (\n <CommandItem\n key={tz.name}\n onSelect={() => handleSelect(tz.name)}\n selected={isSelected}\n >\n <div className=\"flex flex-1 flex-col gap-0 min-w-0\">\n <span className=\"truncate font-medium\">{tz.name}</span>\n <span className=\"text-[0.7rem] text-muted-foreground\">\n {tz.tzName} · {tz.abbreviation}\n </span>\n </div>\n <div className=\"flex items-center gap-1.5 ml-auto shrink-0\">\n <Badge className=\"tabular-nums text-[0.65rem]\">{tz.offset_name}</Badge>\n {isSelected && <CheckIcon />}\n </div>\n </CommandItem>\n );\n })}\n </CommandList>\n </CommandRoot>\n </BasePicker>\n );\n}\n","import React, { useState } from 'react';\nimport {\n CommandRoot,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandItem,\n PickerTrigger,\n CheckIcon,\n Badge,\n BasePicker,\n} from './primitives';\nimport { cn } from '../lib/utils';\nimport type { LanguagePickerProps } from '../../types';\nimport { getAllLanguages, searchLanguages } from '../../utils/languages';\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 [open, setOpen] = useState(false);\n const [query, setQuery] = useState('');\n\n const items = query ? searchLanguages(query) : getAllLanguages();\n\n const handleSelect = (code: string) => {\n const lang = getAllLanguages().find(\n (l) => l.code.toLowerCase() === code.toLowerCase()\n );\n if (lang) {\n onChange(lang);\n setOpen(false);\n setQuery('');\n }\n };\n\n return (\n <BasePicker\n label={label}\n className={className}\n open={open}\n onOpenChange={setOpen}\n trigger={\n <PickerTrigger\n isOpen={open}\n hasValue={!!value}\n placeholder={placeholder}\n disabled={disabled}\n >\n {value && (\n <>\n <span className=\"flex-1 text-start truncate\">{value.english_name}</span>\n {showNativeName && value.native_name !== value.english_name && (\n <span className=\"text-xs italic text-muted-foreground shrink-0\">\n {value.native_name}\n </span>\n )}\n </>\n )}\n </PickerTrigger>\n }\n >\n <CommandRoot>\n {searchable && (\n <CommandInput\n placeholder=\"Search language...\"\n value={query}\n onValueChange={setQuery}\n />\n )}\n <CommandList>\n {items.length === 0 && (\n <CommandEmpty>\n <span className=\"text-2xl opacity-40\">🌐</span>\n <span>No languages found</span>\n </CommandEmpty>\n )}\n {items.map((lang) => {\n const isSelected = value?.code === lang.code;\n return (\n <CommandItem\n key={lang.code}\n onSelect={() => handleSelect(lang.code)}\n selected={isSelected}\n >\n <div className=\"flex flex-1 flex-col gap-0 min-w-0\">\n <span className=\"truncate font-medium\">{lang.english_name}</span>\n {showNativeName && lang.native_name !== lang.english_name && (\n <span className=\"text-[0.7rem] text-muted-foreground italic\">\n {lang.native_name}\n </span>\n )}\n </div>\n <div className=\"flex items-center gap-1.5 ml-auto shrink-0\">\n <Badge className=\"text-[0.6rem]\">{lang.code}</Badge>\n {isSelected && <CheckIcon />}\n </div>\n </CommandItem>\n );\n })}\n </CommandList>\n </CommandRoot>\n </BasePicker>\n );\n}\n","import React, { useState } from 'react';\nimport {\n CommandRoot,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandItem,\n PickerTrigger,\n CheckIcon,\n Badge,\n BasePicker,\n} from './primitives';\nimport { cn } from '../lib/utils';\nimport type { DivisionPickerProps } from '../../types';\nimport { getDivisionsByCountry } from '../../utils/countries';\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 [open, setOpen] = useState(false);\n const [query, setQuery] = useState('');\n\n const allDivisions = getDivisionsByCountry(countryIso2);\n const items = query\n ? allDivisions.filter(\n (d) =>\n d.name.toLowerCase().includes(query.toLowerCase()) ||\n d.iso2.toLowerCase().includes(query.toLowerCase()) ||\n d.timezone.toLowerCase().includes(query.toLowerCase())\n )\n : allDivisions;\n\n const isDisabled = disabled || !countryIso2 || allDivisions.length === 0;\n\n const handleSelect = (name: string) => {\n const division = allDivisions.find((d) => d.name === name);\n if (division) {\n onChange(division);\n setOpen(false);\n setQuery('');\n }\n };\n\n return (\n <BasePicker\n label={label}\n className={className}\n open={open}\n onOpenChange={(o) => !isDisabled && setOpen(o)}\n trigger={\n <PickerTrigger\n isOpen={open}\n hasValue={!!value}\n placeholder={\n !countryIso2\n ? 'Select a country first'\n : placeholder\n }\n disabled={isDisabled}\n >\n {value && (\n <>\n <span className=\"flex-1 text-start truncate\">{value.name}</span>\n <Badge>{value.iso2}</Badge>\n </>\n )}\n </PickerTrigger>\n }\n >\n <CommandRoot>\n {searchable && (\n <CommandInput\n placeholder=\"Search division...\"\n value={query}\n onValueChange={setQuery}\n />\n )}\n <CommandList>\n {items.length === 0 && (\n <CommandEmpty>\n <span className=\"text-2xl opacity-40\">🗺️</span>\n <span>No divisions found</span>\n </CommandEmpty>\n )}\n {items.map((division) => {\n const isSelected =\n value?.iso2 === division.iso2 && value?.name === division.name;\n return (\n <CommandItem\n key={`${division.iso2}-${division.name}`}\n onSelect={() => handleSelect(division.name)}\n selected={isSelected}\n >\n <div className=\"flex flex-1 flex-col gap-0 min-w-0\">\n <span className=\"truncate font-medium\">{division.name}</span>\n <span className=\"text-[0.7rem] text-muted-foreground truncate\">\n {division.timezone}\n </span>\n </div>\n <div className=\"flex items-center gap-1.5 ml-auto shrink-0\">\n <Badge>{division.iso2}</Badge>\n {isSelected && <CheckIcon />}\n </div>\n </CommandItem>\n );\n })}\n </CommandList>\n </CommandRoot>\n </BasePicker>\n );\n}\n","import React from 'react';\nimport {\n CommandRoot,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandItem,\n PickerTrigger,\n CheckIcon,\n Badge,\n BasePicker,\n FieldLabel,\n Popover,\n PopoverTrigger,\n PopoverContent,\n} from './primitives';\nimport { cn } from '../lib/utils';\nimport type { PhoneInputProps } from '../../types';\nimport { usePhoneInput } from '../../hooks/usePhoneInput';\n\nexport const PhoneInput = React.forwardRef<HTMLDivElement, PhoneInputProps>(\n (\n {\n value,\n onChange,\n defaultCountryIso2 = 'US',\n placeholder = 'Phone number',\n showFlag = true,\n disabled = false,\n className,\n label,\n },\n ref\n ) => {\n const phone = usePhoneInput(value, onChange, defaultCountryIso2);\n\n return (\n <div ref={ref} className={cn('flex flex-col gap-0', className)}>\n {label && <FieldLabel>{label}</FieldLabel>}\n\n <div\n className={cn(\n 'flex h-12 items-stretch overflow-hidden rounded-xl border border-input bg-background ring-offset-background',\n 'focus-within:ring-2 focus-within:ring-ring focus-within:ring-offset-2',\n 'transition-shadow',\n disabled && 'opacity-50 pointer-events-none'\n )}\n >\n {/* Country dial button */}\n <Popover\n open={phone.isOpen}\n onOpenChange={(o) => (o ? phone.toggle() : phone.close())}\n >\n <PopoverTrigger asChild>\n <button\n type=\"button\"\n disabled={disabled}\n className={cn(\n 'flex h-full shrink-0 items-center gap-1.5 border-r border-input bg-muted px-3',\n 'text-sm font-semibold text-foreground transition-colors outline-none',\n 'hover:bg-accent/30 focus-visible:bg-accent/30'\n )}\n >\n {showFlag && phone.country && (\n <span className=\"text-lg leading-none\">{phone.country.flag}</span>\n )}\n <span className=\"tabular-nums text-primary\">\n {phone.country ? `+${phone.country.phone_code}` : '+?'}\n </span>\n <svg\n className={cn(\n 'h-3.5 w-3.5 shrink-0 text-muted-foreground transition-transform duration-200',\n phone.isOpen && 'rotate-180'\n )}\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n >\n <polyline points=\"5 8 10 13 15 8\" />\n </svg>\n </button>\n </PopoverTrigger>\n\n <PopoverContent\n align=\"start\"\n side=\"bottom\"\n sideOffset={4}\n className=\"w-72\"\n >\n <CommandRoot>\n <CommandInput\n placeholder=\"Search country or code...\"\n value={phone.searchQuery}\n onValueChange={phone.setSearchQuery}\n />\n <CommandList>\n {phone.filteredCountries.length === 0 && (\n <CommandEmpty>\n <span className=\"text-2xl opacity-40\">🌍</span>\n <span>No countries found</span>\n </CommandEmpty>\n )}\n {phone.filteredCountries.map((country) => {\n const isSelected = phone.country?.iso2 === country.iso2;\n return (\n <CommandItem\n key={country.iso2}\n onSelect={() => phone.selectCountry(country)}\n selected={isSelected}\n >\n <span className=\"text-lg leading-none\">{country.flag}</span>\n <div className=\"flex flex-1 flex-col min-w-0\">\n <span className=\"truncate font-medium text-sm\">\n {country.name}\n </span>\n </div>\n <Badge className=\"ml-auto tabular-nums text-[0.7rem]\">\n +{country.phone_code}\n </Badge>\n </CommandItem>\n );\n })}\n </CommandList>\n </CommandRoot>\n </PopoverContent>\n </Popover>\n\n {/* Phone number text input */}\n <input\n type=\"tel\"\n value={phone.number}\n onChange={(e) => phone.setNumber(e.target.value)}\n placeholder={placeholder}\n disabled={disabled}\n minLength={phone.minLength}\n maxLength={phone.maxLength}\n inputMode=\"numeric\"\n autoComplete=\"tel-national\"\n className={cn(\n 'flex-1 min-w-0 bg-transparent px-3 text-sm text-foreground',\n 'placeholder:text-muted-foreground',\n 'focus:outline-none'\n )}\n />\n </div>\n\n {/* Value preview */}\n {phone.value && (\n <p className=\"text-[0.7rem] text-muted-foreground tabular-nums pl-0.5\">\n Full:{' '}\n <span className=\"font-mono text-primary\">{phone.value.full}</span>\n </p>\n )}\n </div>\n );\n }\n);\nPhoneInput.displayName = 'PhoneInput';\n\n","import React, { useState } from 'react';\nimport {\n CommandRoot,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandItem,\n BasePicker,\n MultiSelectTrigger,\n} from './primitives';\nimport { cn } from '../lib/utils';\nimport type { CountryMultiSelectProps, Country } from '../../types';\nimport { getAllCountries, searchCountries } from '../../utils/countries';\n\nconst MAX_VISIBLE = 3;\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 [open, setOpen] = useState(false);\n const [query, setQuery] = useState('');\n\n const items = query ? searchCountries(query) : getAllCountries();\n\n const isSelected = (c: Country) => value.some((s) => s.iso2 === c.iso2);\n\n const toggle = (country: Country) => {\n if (isSelected(country)) {\n onChange(value.filter((c) => c.iso2 !== country.iso2));\n } else {\n if (maxItems !== undefined && value.length >= maxItems) return;\n onChange([...value, country]);\n }\n };\n\n const remove = (country: Country, e: React.MouseEvent) => {\n e.stopPropagation();\n onChange(value.filter((c) => c.iso2 !== country.iso2));\n };\n\n const clearAll = (e: React.MouseEvent) => {\n e.stopPropagation();\n onChange([]);\n };\n\n const visibleChips = value.slice(0, MAX_VISIBLE);\n const overflow = value.length - MAX_VISIBLE;\n\n return (\n <BasePicker\n label={label}\n className={className}\n open={open}\n onOpenChange={setOpen}\n trigger={\n <MultiSelectTrigger\n value={value}\n onRemove={remove}\n onClear={clearAll}\n isOpen={open}\n placeholder={placeholder}\n disabled={disabled}\n renderChip={(c) => (\n <>\n {showFlags && <span>{c.flag}</span>}\n <span className=\"max-w-[80px] truncate\">{c.name}</span>\n </>\n )}\n />\n }\n >\n <CommandRoot>\n {searchable && (\n <CommandInput placeholder=\"Search countries...\" value={query} onValueChange={setQuery} />\n )}\n <CommandList>\n {items.length === 0 && (\n <CommandEmpty>\n <span className=\"text-2xl opacity-40\">🌍</span><span>No countries found</span>\n </CommandEmpty>\n )}\n {items.map((country) => {\n const selected = isSelected(country);\n return (\n <CommandItem\n key={country.iso2}\n onSelect={() => toggle(country)}\n selected={selected}\n >\n {/* Checkbox indicator */}\n <div className={cn(\n 'h-4 w-4 shrink-0 rounded-full border border-border flex items-center justify-center',\n selected && 'bg-primary border-primary'\n )}>\n {selected && (\n <svg className=\"h-2.5 w-2.5 stroke-white\" viewBox=\"0 0 20 20\" fill=\"none\" strokeWidth=\"3\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <polyline points=\"4 10 8 14 16 6\" />\n </svg>\n )}\n </div>\n {showFlags && <span className=\"text-lg leading-none\">{country.flag}</span>}\n <div className=\"flex flex-1 flex-col min-w-0\">\n <span className=\"truncate font-medium\">{country.name}</span>\n <span className=\"text-[0.7rem] text-muted-foreground\">{country.iso3} · +{country.phone_code}</span>\n </div>\n </CommandItem>\n );\n })}\n </CommandList>\n </CommandRoot>\n {value.length > 0 && (\n <div className=\"flex items-center justify-between border-t border-border px-3 py-2 text-xs text-muted-foreground\">\n <span>{value.length} selected{maxItems ? ` / ${maxItems}` : ''}</span>\n <button\n type=\"button\"\n onClick={() => { onChange([]); setOpen(false); }}\n className=\"text-destructive hover:underline font-medium\"\n >\n Clear all\n </button>\n </div>\n )}\n </BasePicker>\n );\n}\n","import React, { useState } from 'react';\nimport {\n CommandRoot,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandItem,\n BasePicker,\n MultiSelectTrigger,\n} from './primitives';\nimport { cn } from '../lib/utils';\nimport type { CurrencyMultiSelectProps, Currency } from '../../types';\nimport { getAllCurrencies, searchCurrencies } from '../../utils/currencies';\n\nconst MAX_VISIBLE = 3;\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 [open, setOpen] = useState(false);\n const [query, setQuery] = useState('');\n\n const items = query ? searchCurrencies(query) : getAllCurrencies();\n const isSelected = (c: Currency) => value.some((s) => s.code === c.code);\n\n const toggle = (currency: Currency) => {\n if (isSelected(currency)) {\n onChange(value.filter((c) => c.code !== currency.code));\n } else {\n if (maxItems !== undefined && value.length >= maxItems) return;\n onChange([...value, currency]);\n }\n };\n\n const remove = (currency: Currency, e: React.MouseEvent) => {\n e.stopPropagation();\n onChange(value.filter((c) => c.code !== currency.code));\n };\n\n const clearAll = (e: React.MouseEvent) => {\n e.stopPropagation();\n onChange([]);\n };\n\n const visibleChips = value.slice(0, MAX_VISIBLE);\n const overflow = value.length - MAX_VISIBLE;\n\n return (\n <BasePicker\n label={label}\n className={className}\n open={open}\n onOpenChange={setOpen}\n trigger={\n <MultiSelectTrigger\n value={value}\n onRemove={remove}\n onClear={clearAll}\n isOpen={open}\n placeholder={placeholder}\n disabled={disabled}\n renderChip={(c) => (\n <>\n {showSymbol && <span className=\"font-bold\">{c.symbol}</span>}\n <span>{c.code}</span>\n </>\n )}\n />\n }\n >\n <CommandRoot>\n {searchable && (\n <CommandInput placeholder=\"Search currencies...\" value={query} onValueChange={setQuery} />\n )}\n <CommandList>\n {items.length === 0 && (\n <CommandEmpty>\n <span className=\"text-2xl opacity-40\">💰</span><span>No currencies found</span>\n </CommandEmpty>\n )}\n {items.map((currency) => {\n const selected = isSelected(currency);\n return (\n <CommandItem\n key={currency.code}\n onSelect={() => toggle(currency)}\n selected={selected}\n >\n <div className={cn(\n 'h-4 w-4 shrink-0 rounded-full border border-border flex items-center justify-center',\n selected && 'bg-primary border-primary'\n )}>\n {selected && (\n <svg className=\"h-2.5 w-2.5 stroke-white\" viewBox=\"0 0 20 20\" fill=\"none\" strokeWidth=\"3\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <polyline points=\"4 10 8 14 16 6\" />\n </svg>\n )}\n </div>\n {showSymbol && (\n <span className=\"min-w-[1.5rem] text-center font-bold text-primary\">{currency.symbol}</span>\n )}\n <div className=\"flex flex-1 flex-col min-w-0\">\n <span className=\"truncate font-medium\">{currency.name}</span>\n <span className=\"text-[0.7rem] text-muted-foreground\">{currency.code}</span>\n </div>\n </CommandItem>\n );\n })}\n </CommandList>\n </CommandRoot>\n {value.length > 0 && (\n <div className=\"flex items-center justify-between border-t border-border px-3 py-2 text-xs text-muted-foreground\">\n <span>{value.length} selected{maxItems ? ` / ${maxItems}` : ''}</span>\n <button\n type=\"button\"\n onClick={() => { onChange([]); setOpen(false); }}\n className=\"text-destructive hover:underline font-medium\"\n >\n Clear all\n </button>\n </div>\n )}\n </BasePicker>\n );\n}\n"],"names":["cn","inputs","twMerge","clsx","Popover","PopoverPrimitive","PopoverTrigger","CheckIcon","className","jsx","FieldLabel","children","Badge","PopoverContent","React","align","sideOffset","onCloseAutoFocus","props","ref","e","CommandRoot","CommandInput","onValueChange","jsxs","CommandList","CommandEmpty","CommandItem","onSelect","onMouseDown","onKeyDown","disabled","selected","_value","PickerTrigger","isOpen","placeholder","hasValue","BasePicker","label","trigger","open","onOpenChange","MultiSelectTrigger","value","onRemove","onClear","renderChip","maxVisible","visible","overflow","Fragment","item","idx","CountryPicker","onChange","searchable","showFlag","showPhoneCode","setOpen","useState","query","setQuery","items","searchCountries","getAllCountries","handleSelect","iso2","country","c","isSelected","CurrencyPicker","showSymbol","countryIso2","autoSelect","useEffect","currency","getCurrencyByCountry","searchCurrencies","countryCurrency","getAllCurrencies","code","TimezonePicker","tzs","getTimezonesByCountry","pool","getAllTimezones","searchTimezones","name","tz","t","LanguagePicker","showNativeName","searchLanguages","getAllLanguages","lang","l","DivisionPicker","allDivisions","getDivisionsByCountry","d","isDisabled","division","o","PhoneInput","defaultCountryIso2","phone","usePhoneInput","_a","MAX_VISIBLE","CountryMultiSelect","maxItems","showFlags","s","toggle","remove","clearAll","CurrencyMultiSelect"],"mappings":"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"}
package/dist/ui.d.ts ADDED
@@ -0,0 +1,413 @@
1
+ import { ClassValue } from 'clsx';
2
+ import { default as default_2 } from 'react';
3
+ import { JSX as JSX_2 } from 'react/jsx-runtime';
4
+ import * as PopoverPrimitive from '@radix-ui/react-popover';
5
+
6
+ export declare const Badge: {
7
+ ({ children, className }: {
8
+ children: default_2.ReactNode;
9
+ className?: string;
10
+ }): JSX_2.Element;
11
+ displayName: string;
12
+ };
13
+
14
+ export declare const CheckIcon: {
15
+ ({ className }: {
16
+ className?: string;
17
+ }): JSX_2.Element;
18
+ displayName: string;
19
+ };
20
+
21
+ /**
22
+ * Merges Tailwind CSS classes safely, resolving conflicts.
23
+ * Re-exported from react-country-kit/ui for consumer convenience.
24
+ */
25
+ export declare function cn(...inputs: ClassValue[]): string;
26
+
27
+ export declare const CommandEmpty: default_2.ForwardRefExoticComponent<default_2.HTMLAttributes<HTMLDivElement> & default_2.RefAttributes<HTMLDivElement>>;
28
+
29
+ export declare const CommandInput: default_2.ForwardRefExoticComponent<CommandInputProps & default_2.RefAttributes<HTMLInputElement>>;
30
+
31
+ declare interface CommandInputProps extends Omit<default_2.InputHTMLAttributes<HTMLInputElement>, 'onChange'> {
32
+ onValueChange?: (value: string) => void;
33
+ }
34
+
35
+ export declare const CommandItem: default_2.ForwardRefExoticComponent<CommandItemProps & default_2.RefAttributes<HTMLDivElement>>;
36
+
37
+ declare interface CommandItemProps extends default_2.HTMLAttributes<HTMLDivElement> {
38
+ /** Called when the item is clicked or activated via keyboard Enter. */
39
+ onSelect?: () => void;
40
+ disabled?: boolean;
41
+ selected?: boolean;
42
+ /** Kept for API compatibility; not used internally. */
43
+ value?: string;
44
+ }
45
+
46
+ export declare const CommandList: default_2.ForwardRefExoticComponent<default_2.HTMLAttributes<HTMLDivElement> & default_2.RefAttributes<HTMLDivElement>>;
47
+
48
+ /** Wrapper that groups search input + scrollable list. */
49
+ export declare const CommandRoot: default_2.ForwardRefExoticComponent<default_2.HTMLAttributes<HTMLDivElement> & default_2.RefAttributes<HTMLDivElement>>;
50
+
51
+ export declare interface Country {
52
+ name: string;
53
+ iso2: string;
54
+ iso3: string;
55
+ phone_code: string;
56
+ phone_format: PhoneFormat;
57
+ currency: Currency;
58
+ division_type: string;
59
+ divisions: Division[];
60
+ timezones: Timezone[];
61
+ /** Emoji flag computed from iso2 */
62
+ flag: string;
63
+ }
64
+
65
+ export declare function CountryMultiSelect({ value, onChange, placeholder, maxItems, showFlags, searchable, disabled, className, label, }: CountryMultiSelectProps): JSX_2.Element;
66
+
67
+ export declare interface CountryMultiSelectProps {
68
+ value: Country[];
69
+ onChange: (countries: Country[]) => void;
70
+ placeholder?: string;
71
+ /** Maximum number of selections (undefined = unlimited) */
72
+ maxItems?: number;
73
+ showFlags?: boolean;
74
+ searchable?: boolean;
75
+ disabled?: boolean;
76
+ className?: string;
77
+ label?: string;
78
+ }
79
+
80
+ export declare function CountryPicker({ value, onChange, placeholder, searchable, showFlag, showPhoneCode, disabled, className, label, }: CountryPickerProps): JSX_2.Element;
81
+
82
+ export declare interface CountryPickerProps {
83
+ /** Currently selected country */
84
+ value?: Country | null;
85
+ /** Callback when user selects a country */
86
+ onChange: (country: Country) => void;
87
+ placeholder?: string;
88
+ /** Enable search input */
89
+ searchable?: boolean;
90
+ /** Show emoji flag next to country name */
91
+ showFlag?: boolean;
92
+ /** Show phone dial code */
93
+ showPhoneCode?: boolean;
94
+ /** Disable the picker */
95
+ disabled?: boolean;
96
+ /** Additional wrapper class */
97
+ className?: string;
98
+ /** aria-label */
99
+ label?: string;
100
+ }
101
+
102
+ export declare interface Currency {
103
+ code: string;
104
+ name: string;
105
+ symbol: string;
106
+ }
107
+
108
+ export declare function CurrencyMultiSelect({ value, onChange, placeholder, maxItems, showSymbol, searchable, disabled, className, label, }: CurrencyMultiSelectProps): JSX_2.Element;
109
+
110
+ export declare interface CurrencyMultiSelectProps {
111
+ value: Currency[];
112
+ onChange: (currencies: Currency[]) => void;
113
+ placeholder?: string;
114
+ maxItems?: number;
115
+ showSymbol?: boolean;
116
+ searchable?: boolean;
117
+ disabled?: boolean;
118
+ className?: string;
119
+ label?: string;
120
+ }
121
+
122
+ export declare function CurrencyPicker({ value, onChange, placeholder, searchable, showSymbol, countryIso2, autoSelect, disabled, className, label, }: CurrencyPickerProps): JSX_2.Element;
123
+
124
+ export declare interface CurrencyPickerProps {
125
+ value?: Currency | null;
126
+ onChange: (currency: Currency) => void;
127
+ placeholder?: string;
128
+ searchable?: boolean;
129
+ /** Filter currencies to a specific country (iso2) and enable auto-selection */
130
+ countryIso2?: string;
131
+ /** Auto-select the first currency if countryIso2 is provided. Defaults to true if countryIso2 is present and value is empty. */
132
+ autoSelect?: boolean;
133
+ /** Show currency symbol alongside code */
134
+ showSymbol?: boolean;
135
+ disabled?: boolean;
136
+ className?: string;
137
+ label?: string;
138
+ }
139
+
140
+ export declare interface Division {
141
+ name: string;
142
+ iso2: string;
143
+ timezone: string;
144
+ }
145
+
146
+ export declare function DivisionPicker({ countryIso2, value, onChange, placeholder, searchable, disabled, className, label, }: DivisionPickerProps): JSX_2.Element;
147
+
148
+ export declare interface DivisionPickerProps {
149
+ /** ISO2 code of the parent country (required) */
150
+ countryIso2: string;
151
+ value?: Division | null;
152
+ onChange: (division: Division) => void;
153
+ placeholder?: string;
154
+ searchable?: boolean;
155
+ disabled?: boolean;
156
+ className?: string;
157
+ label?: string;
158
+ }
159
+
160
+ /**
161
+ * Returns all countries
162
+ */
163
+ export declare function getAllCountries(): Country[];
164
+
165
+ /**
166
+ * Returns all unique currencies across all countries
167
+ */
168
+ export declare function getAllCurrencies(): Currency[];
169
+
170
+ /**
171
+ * Returns all languages
172
+ */
173
+ export declare function getAllLanguages(): Language[];
174
+
175
+ /**
176
+ * Returns all unique timezones across all countries
177
+ */
178
+ export declare function getAllTimezones(): Timezone[];
179
+
180
+ /**
181
+ * Find a country by its ISO2 code (case-insensitive)
182
+ */
183
+ export declare function getCountryByIso2(iso2: string): Country | undefined;
184
+
185
+ /**
186
+ * Find a country by its ISO3 code (case-insensitive)
187
+ */
188
+ export declare function getCountryByIso3(iso3: string): Country | undefined;
189
+
190
+ /**
191
+ * Find a country by its name (partial, case-insensitive)
192
+ */
193
+ export declare function getCountryByName(name: string): Country | undefined;
194
+
195
+ /**
196
+ * Find a currency by its code (e.g. "USD")
197
+ */
198
+ export declare function getCurrencyByCode(code: string): Currency | undefined;
199
+
200
+ /**
201
+ * Get the currency of a country
202
+ */
203
+ export declare function getCurrencyByCountry(iso2: string): Currency | undefined;
204
+
205
+ /**
206
+ * Get all divisions for a country
207
+ */
208
+ export declare function getDivisionsByCountry(iso2: string): Division[];
209
+
210
+ /**
211
+ * Find a language by its BCP-47 code
212
+ */
213
+ export declare function getLanguageByCode(code: string): Language | undefined;
214
+
215
+ /**
216
+ * Find a timezone by its IANA name (e.g. "America/New_York")
217
+ */
218
+ export declare function getTimezoneByName(name: string): Timezone | undefined;
219
+
220
+ /**
221
+ * Get all timezones for a country
222
+ */
223
+ export declare function getTimezonesByCountry(iso2: string): Timezone[];
224
+
225
+ /**
226
+ * Auto-generated country dataset — DO NOT EDIT MANUALLY.
227
+ * Source: https://raw.githubusercontent.com/kishormainali/country_division_database/refs/heads/main/countries.json
228
+ * Generated: 2026-04-19T05:48:30.758Z
229
+ * Countries: 250
230
+ */
231
+ export declare function iso2ToFlag(iso2: string): string;
232
+
233
+ export declare interface Language {
234
+ code: string;
235
+ english_name: string;
236
+ native_name: string;
237
+ }
238
+
239
+ export declare function LanguagePicker({ value, onChange, placeholder, searchable, showNativeName, disabled, className, label, }: LanguagePickerProps): JSX_2.Element;
240
+
241
+ export declare interface LanguagePickerProps {
242
+ value?: Language | null;
243
+ onChange: (language: Language) => void;
244
+ placeholder?: string;
245
+ searchable?: boolean;
246
+ /** Show native language name alongside english name */
247
+ showNativeName?: boolean;
248
+ disabled?: boolean;
249
+ className?: string;
250
+ label?: string;
251
+ }
252
+
253
+ export declare interface PhoneFormat {
254
+ countryCode?: string;
255
+ iso2: string;
256
+ dialCode: string;
257
+ patterns: string;
258
+ possibleLengths: string;
259
+ example: string | number;
260
+ }
261
+
262
+ export declare const PhoneInput: default_2.ForwardRefExoticComponent<PhoneInputProps & default_2.RefAttributes<HTMLDivElement>>;
263
+
264
+ export declare interface PhoneInputProps {
265
+ value?: PhoneValue | null;
266
+ onChange: (value: PhoneValue) => void;
267
+ /** Pre-select a country by ISO2 on first render */
268
+ defaultCountryIso2?: string;
269
+ placeholder?: string;
270
+ showFlag?: boolean;
271
+ disabled?: boolean;
272
+ className?: string;
273
+ label?: string;
274
+ }
275
+
276
+ /**
277
+ * Value object returned by PhoneInput.
278
+ */
279
+ export declare interface PhoneValue {
280
+ /** Full Country object of the selected country */
281
+ country: Country;
282
+ /** Dial code with + prefix, e.g. "+1" */
283
+ dialCode: string;
284
+ /** Raw phone number without dial code, e.g. "4155551234" */
285
+ number: string;
286
+ /** Full number with dial code, e.g. "+14155551234" */
287
+ full: string;
288
+ }
289
+
290
+ export declare const PickerTrigger: default_2.ForwardRefExoticComponent<PickerTriggerProps & default_2.RefAttributes<HTMLButtonElement>>;
291
+
292
+ declare interface PickerTriggerProps extends default_2.ButtonHTMLAttributes<HTMLButtonElement> {
293
+ isOpen?: boolean;
294
+ hasValue?: boolean;
295
+ placeholder?: string;
296
+ }
297
+
298
+ export declare const Popover: default_2.FC<PopoverPrimitive.PopoverProps>;
299
+
300
+ export declare const PopoverContent: default_2.ForwardRefExoticComponent<PopoverContentProps & default_2.RefAttributes<HTMLDivElement>>;
301
+
302
+ declare interface PopoverContentProps extends default_2.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content> {
303
+ }
304
+
305
+ export declare const PopoverTrigger: default_2.ForwardRefExoticComponent<PopoverPrimitive.PopoverTriggerProps & default_2.RefAttributes<HTMLButtonElement>>;
306
+
307
+ /**
308
+ * Search countries by name, iso2, iso3 or phone code
309
+ */
310
+ export declare function searchCountries(query: string): Country[];
311
+
312
+ /**
313
+ * Search currencies by code, name, or symbol
314
+ */
315
+ export declare function searchCurrencies(query: string, countryIso2?: string): Currency[];
316
+
317
+ /**
318
+ * Search languages by english name, native name, or code
319
+ */
320
+ export declare function searchLanguages(query: string): Language[];
321
+
322
+ /**
323
+ * Search timezones by name, abbreviation, or offset string
324
+ */
325
+ export declare function searchTimezones(query: string, countryIso2?: string): Timezone[];
326
+
327
+ export declare interface Timezone {
328
+ name: string;
329
+ offset: number;
330
+ offset_name: string;
331
+ abbreviation: string;
332
+ tzName: string;
333
+ }
334
+
335
+ export declare function TimezonePicker({ value, onChange, placeholder, searchable, countryIso2, autoSelect, disabled, className, label, }: TimezonePickerProps): JSX_2.Element;
336
+
337
+ export declare interface TimezonePickerProps {
338
+ value?: Timezone | null;
339
+ onChange: (timezone: Timezone) => void;
340
+ placeholder?: string;
341
+ searchable?: boolean;
342
+ /** Filter timezones to a specific country (iso2) and enable auto-selection */
343
+ countryIso2?: string;
344
+ /** Auto-select the first timezone if countryIso2 is provided. Defaults to true if countryIso2 is present and value is empty. */
345
+ autoSelect?: boolean;
346
+ disabled?: boolean;
347
+ className?: string;
348
+ label?: string;
349
+ }
350
+
351
+ export declare function useCountryPicker(initialValue?: Country | null, onChange?: (country: Country) => void): UsePickerReturn<Country>;
352
+
353
+ export declare function useCurrencyPicker(initialValue?: Currency | null, onChange?: (currency: Currency) => void): UsePickerReturn<Currency>;
354
+
355
+ export declare function useDivisionPicker(countryIso2: string, initialValue?: Division | null, onChange?: (division: Division) => void): UsePickerReturn<Division>;
356
+
357
+ export declare function useLanguagePicker(initialValue?: Language | null, onChange?: (language: Language) => void): UsePickerReturn<Language>;
358
+
359
+ /**
360
+ * Generic multi-selection hook.
361
+ * Handles open/close, search, and toggle-selection of multiple items.
362
+ */
363
+ 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>;
364
+
365
+ export declare interface UseMultiSelectReturn<T> {
366
+ isOpen: boolean;
367
+ searchQuery: string;
368
+ filteredItems: T[];
369
+ selectedItems: T[];
370
+ open: () => void;
371
+ close: () => void;
372
+ toggle: () => void;
373
+ setSearchQuery: (query: string) => void;
374
+ toggleItem: (item: T) => void;
375
+ isSelected: (item: T) => boolean;
376
+ removeItem: (item: T) => void;
377
+ clearAll: () => void;
378
+ }
379
+
380
+ export declare function usePhoneInput(initialValue?: PhoneValue | null, onChange?: (value: PhoneValue) => void, defaultCountryIso2?: string): UsePhoneInputReturn;
381
+
382
+ declare interface UsePhoneInputReturn {
383
+ country: Country | null;
384
+ number: string;
385
+ value: PhoneValue | null;
386
+ isOpen: boolean;
387
+ searchQuery: string;
388
+ filteredCountries: Country[];
389
+ minLength?: number;
390
+ maxLength?: number;
391
+ setSearchQuery: (q: string) => void;
392
+ selectCountry: (country: Country) => void;
393
+ setNumber: (num: string) => void;
394
+ toggle: () => void;
395
+ close: () => void;
396
+ }
397
+
398
+ export declare interface UsePickerReturn<T> {
399
+ isOpen: boolean;
400
+ searchQuery: string;
401
+ filteredItems: T[];
402
+ selectedItem: T | null;
403
+ open: () => void;
404
+ close: () => void;
405
+ toggle: () => void;
406
+ setSearchQuery: (query: string) => void;
407
+ selectItem: (item: T) => void;
408
+ clearSelection: () => void;
409
+ }
410
+
411
+ export declare function useTimezonePicker(initialValue?: Timezone | null, onChange?: (timezone: Timezone) => void, countryIso2?: string): UsePickerReturn<Timezone>;
412
+
413
+ export { }