{"version":3,"sources":["../src/utils/flag.ts","../src/api/geocoded.ts","../src/cache/query-cache.ts","../src/hooks/use-cities.ts","../src/theme.ts","../src/hooks/use-picker-theme.ts","../src/hooks/use-click-outside.ts","../src/labels.ts","../src/hooks/use-debounce.ts","../src/utils/search.ts","../src/components/picker-dropdown.tsx","../src/components/spinner-style.ts","../src/components/picker-trigger.tsx","../src/components/city-picker.tsx","../src/hooks/use-countries.ts","../src/components/country-picker.tsx","../src/hooks/use-states.ts","../src/components/state-picker.tsx","../src/components/country-state-city-picker.tsx","../src/hooks/use-preset-selection.ts"],"names":["useState","useEffect","useRef","useId","useMemo","jsxs","jsx","createPortal","Fragment"],"mappings":"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","file":"index.cjs","sourcesContent":["// Converts a 2-letter ISO country code to a flag emoji.\n// \"US\" → \"🇺🇸\" by offsetting each char into the Regional Indicator Symbol block.\nexport function isoToFlag(isoCode: string): string {\n\treturn isoCode\n\t\t.toUpperCase()\n\t\t.split('')\n\t\t.map((char) => String.fromCodePoint(0x1f1e6 + char.charCodeAt(0) - 65))\n\t\t.join('')\n}\n","import type { City, Country, State } from '../types'\nimport { isoToFlag } from '../utils/flag'\n\nconst BASE_URL = 'https://api.geocoded.me'\n\ntype ApiEnvelope<T> = {\n\tdata: T[]\n\tmeta: {\n\t\ttotal: number\n\t\tlimit: number\n\t\toffset: number\n\t\thasMore: boolean\n\t\tcursor: string | null\n\t}\n}\n\nasync function withRetry<T>(\n\tfn: () => Promise<T>,\n\tmaxAttempts = 3,\n\tbaseDelayMs = 300\n): Promise<T> {\n\tlet lastError: unknown\n\tfor (let attempt = 0; attempt < maxAttempts; attempt++) {\n\t\ttry {\n\t\t\treturn await fn()\n\t\t} catch (err) {\n\t\t\tlastError = err\n\t\t\tif (attempt < maxAttempts - 1) {\n\t\t\t\tawait new Promise<void>((resolve) =>\n\t\t\t\t\tsetTimeout(resolve, baseDelayMs * 2 ** attempt)\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\t}\n\tthrow lastError\n}\n\nasync function apiFetch<T>(url: string): Promise<T> {\n\tconst res = await fetch(url)\n\tif (!res.ok) {\n\t\tthrow new Error(`geocoded.me ${res.status} ${res.statusText}`)\n\t}\n\treturn res.json() as Promise<T>\n}\n\nconst PAGE_LIMIT = 500\n\nasync function fetchAllPages<T>(baseUrl: string): Promise<T[]> {\n\tconst results: T[] = []\n\tlet offset = 0\n\n\twhile (true) {\n\t\tconst sep = baseUrl.includes('?') ? '&' : '?'\n\t\tconst url = `${baseUrl}${sep}limit=${PAGE_LIMIT}&offset=${offset}`\n\t\tconst envelope = await withRetry(() => apiFetch<ApiEnvelope<T>>(url))\n\t\tresults.push(...envelope.data)\n\t\tif (!envelope.meta.hasMore) break\n\t\toffset += PAGE_LIMIT\n\t}\n\n\treturn results\n}\n\ntype RawCountry = {\n\tname: string\n\tiso2: string\n\temoji: string\n\tcurrency: string\n}\n\ntype RawState = {\n\tname: string\n\tiso2: string\n\tcountryCode: string\n}\n\ntype RawCity = {\n\tname: string\n\tstateCode: string\n\tcountryCode: string\n}\n\nexport async function fetchCountries(): Promise<Country[]> {\n\tconst raw = await fetchAllPages<RawCountry>(`${BASE_URL}/countries`)\n\treturn raw.map((c) => ({\n\t\tname: c.name,\n\t\tisoCode: c.iso2,\n\t\tflag: c.emoji ?? isoToFlag(c.iso2),\n\t\tcurrency: c.currency,\n\t}))\n}\n\nexport async function fetchStates(countryCode: string): Promise<State[]> {\n\tconst raw = await fetchAllPages<RawState>(\n\t\t`${BASE_URL}/countries/${encodeURIComponent(countryCode)}/states`\n\t)\n\treturn raw.map((s) => ({\n\t\tname: s.name,\n\t\tisoCode: s.iso2,\n\t\tcountryCode: s.countryCode,\n\t}))\n}\n\nexport async function fetchCities(\n\tcountryCode: string,\n\tstateCode: string\n): Promise<City[]> {\n\tconst raw = await fetchAllPages<RawCity>(\n\t\t`${BASE_URL}/countries/${encodeURIComponent(countryCode)}/states/${encodeURIComponent(stateCode)}/cities`\n\t)\n\treturn raw.map((c) => ({\n\t\tname: c.name,\n\t\tstateCode: c.stateCode,\n\t\tcountryCode: c.countryCode,\n\t}))\n}\n","import type { City, Country, State } from '../types'\n\nclass LRUCache<T> {\n\tprivate readonly map = new Map<string, T>()\n\n\tconstructor(private readonly maxSize: number) {}\n\n\tget(key: string): T | undefined {\n\t\tconst value = this.map.get(key)\n\t\tif (value === undefined) return undefined\n\t\tthis.map.delete(key)\n\t\tthis.map.set(key, value)\n\t\treturn value\n\t}\n\n\tset(key: string, value: T): void {\n\t\tif (this.map.has(key)) {\n\t\t\tthis.map.delete(key)\n\t\t} else if (this.map.size >= this.maxSize) {\n\t\t\tconst lruKey = this.map.keys().next().value\n\t\t\tif (lruKey !== undefined) this.map.delete(lruKey)\n\t\t}\n\t\tthis.map.set(key, value)\n\t}\n\n\thas(key: string): boolean {\n\t\treturn this.map.has(key)\n\t}\n}\n\nexport const countriesCache = new LRUCache<Country[]>(1)\nexport const statesCache = new LRUCache<State[]>(20)\nexport const citiesCache = new LRUCache<City[]>(10)\n\nconst pending = new Map<string, Promise<unknown>>()\n\nexport function cachedFetch<T>(\n\tcache: LRUCache<T>,\n\tkey: string,\n\tfetcher: () => Promise<T>\n): Promise<T> {\n\tconst hit = cache.get(key)\n\tif (hit !== undefined) return Promise.resolve(hit)\n\n\tconst inflight = pending.get(key) as Promise<T> | undefined\n\tif (inflight !== undefined) return inflight\n\n\tconst promise = fetcher()\n\t\t.then((data) => {\n\t\t\tcache.set(key, data)\n\t\t\tpending.delete(key)\n\t\t\treturn data\n\t\t})\n\t\t.catch((err: unknown) => {\n\t\t\tpending.delete(key)\n\t\t\tthrow err\n\t\t})\n\n\tpending.set(key, promise)\n\treturn promise\n}\n","import { useEffect, useState } from 'react'\nimport { fetchCities } from '../api/geocoded'\nimport { cachedFetch, citiesCache } from '../cache/query-cache'\nimport type { City } from '../types'\n\ntype UseCitiesResult = {\n\tdata: City[]\n\tisLoading: boolean\n\terror: Error | null\n}\n\ntype InternalState = UseCitiesResult & { key: string | null }\n\nfunction cacheKey(countryCode: string, stateCode: string): string {\n\treturn `${countryCode}:${stateCode}`\n}\n\nexport function useCities(\n\tcountryCode: string | null | undefined,\n\tstateCode: string | null | undefined\n): UseCitiesResult {\n\tconst key =\n\t\tcountryCode && stateCode ? cacheKey(countryCode, stateCode) : null\n\n\tconst [state, setState] = useState<InternalState>(() => {\n\t\tif (!key) return { data: [], isLoading: false, error: null, key: null }\n\t\tconst cached = citiesCache.get(key)\n\t\treturn cached\n\t\t\t? { data: cached, isLoading: false, error: null, key }\n\t\t\t: { data: [], isLoading: true, error: null, key }\n\t})\n\n\tuseEffect(() => {\n\t\tif (!key || !countryCode || !stateCode) {\n\t\t\tsetState({ data: [], isLoading: false, error: null, key: null })\n\t\t\treturn\n\t\t}\n\n\t\tif (citiesCache.has(key)) {\n\t\t\tconst cached = citiesCache.get(key)!\n\t\t\tsetState({ data: cached, isLoading: false, error: null, key })\n\t\t\treturn\n\t\t}\n\n\t\tsetState({ data: [], isLoading: true, error: null, key })\n\n\t\tlet cancelled = false\n\n\t\tcachedFetch(citiesCache, key, () => fetchCities(countryCode, stateCode))\n\t\t\t.then((data) => {\n\t\t\t\tif (!cancelled) setState({ data, isLoading: false, error: null, key })\n\t\t\t})\n\t\t\t.catch((err: unknown) => {\n\t\t\t\tif (!cancelled)\n\t\t\t\t\tsetState({\n\t\t\t\t\t\tdata: [],\n\t\t\t\t\t\tisLoading: false,\n\t\t\t\t\t\terror: err instanceof Error ? err : new Error(String(err)),\n\t\t\t\t\t\tkey,\n\t\t\t\t\t})\n\t\t\t})\n\n\t\treturn () => {\n\t\t\tcancelled = true\n\t\t}\n\t}, [key])\n\n\t// Derive isLoading synchronously: if the key changed but the stored\n\t// result is still for the previous key, report loading immediately.\n\t// This eliminates the false-positive render where isLoading=false\n\t// with empty data for a new, not-yet-fetched key.\n\tif (state.key !== key) {\n\t\treturn { data: [], isLoading: key !== null, error: null }\n\t}\n\n\treturn { data: state.data, isLoading: state.isLoading, error: state.error }\n}\n","export type PickerTheme = {\n\t// Dropdown panel\n\tdropdownBackground: string\n\ttitleColor: string\n\t// Search input\n\tsearchBackground: string\n\tsearchTextColor: string\n\tsearchPlaceholderColor: string\n\t// List rows\n\trowTextColor: string\n\trowSubTextColor: string\n\trowHoverBackground: string\n\tseparatorColor: string\n\temptyTextColor: string\n\t// Trigger\n\tlabelColor: string\n\tborderColor: string\n\ttriggerBackground: string\n\tdisabledBackground: string\n\tdisabledBorderColor: string\n\thoverBackground: string\n\tfocusRingColor: string\n\tvalueTextColor: string\n\tplaceholderColor: string\n\tchevronColor: string\n\tchevronDisabledColor: string\n\tloadingColor: string\n}\n\nexport const DEFAULT_THEME: PickerTheme = {\n\tdropdownBackground: '#ffffff',\n\ttitleColor: '#111827',\n\tsearchBackground: '#f3f4f6',\n\tsearchTextColor: '#111827',\n\tsearchPlaceholderColor: '#9ca3af',\n\trowTextColor: '#111827',\n\trowSubTextColor: '#6b7280',\n\trowHoverBackground: '#f9fafb',\n\tseparatorColor: '#e5e7eb',\n\temptyTextColor: '#9ca3af',\n\tlabelColor: '#374151',\n\tborderColor: '#d1d5db',\n\ttriggerBackground: '#ffffff',\n\tdisabledBackground: '#f9fafb',\n\tdisabledBorderColor: '#e5e7eb',\n\thoverBackground: '#f3f4f6',\n\tfocusRingColor: '#6366f1',\n\tvalueTextColor: '#111827',\n\tplaceholderColor: '#9ca3af',\n\tchevronColor: '#6b7280',\n\tchevronDisabledColor: '#d1d5db',\n\tloadingColor: '#6b7280',\n}\n\nexport const DARK_THEME: PickerTheme = {\n\tdropdownBackground: '#1c1c1e',\n\ttitleColor: '#f2f2f7',\n\tsearchBackground: '#2c2c2e',\n\tsearchTextColor: '#f2f2f7',\n\tsearchPlaceholderColor: '#636366',\n\trowTextColor: '#f2f2f7',\n\trowSubTextColor: '#8e8e93',\n\trowHoverBackground: '#2c2c2e',\n\tseparatorColor: '#3a3a3c',\n\temptyTextColor: '#636366',\n\tlabelColor: '#ebebf5',\n\tborderColor: '#3a3a3c',\n\ttriggerBackground: '#1c1c1e',\n\tdisabledBackground: '#141414',\n\tdisabledBorderColor: '#2c2c2e',\n\thoverBackground: '#2c2c2e',\n\tfocusRingColor: '#818cf8',\n\tvalueTextColor: '#f2f2f7',\n\tplaceholderColor: '#636366',\n\tchevronColor: '#8e8e93',\n\tchevronDisabledColor: '#3a3a3c',\n\tloadingColor: '#8e8e93',\n}\n\nexport function resolveTheme(\n\tcolorScheme: 'dark' | 'light' | null,\n\toverride?: Partial<PickerTheme>\n): PickerTheme {\n\tconst base = colorScheme === 'dark' ? DARK_THEME : DEFAULT_THEME\n\tif (!override) return base\n\treturn { ...base, ...override }\n}\n","import { useEffect, useState } from 'react'\nimport { resolveTheme } from '../theme'\nimport type { PickerTheme } from '../theme'\n\nexport function usePickerTheme(override?: Partial<PickerTheme>): PickerTheme {\n\tconst [isDark, setIsDark] = useState(() =>\n\t\ttypeof window !== 'undefined'\n\t\t\t? window.matchMedia('(prefers-color-scheme: dark)').matches\n\t\t\t: false\n\t)\n\n\tuseEffect(() => {\n\t\tif (typeof window === 'undefined') return\n\t\tconst mq = window.matchMedia('(prefers-color-scheme: dark)')\n\t\tconst handler = (e: MediaQueryListEvent) => setIsDark(e.matches)\n\t\tmq.addEventListener('change', handler)\n\t\treturn () => mq.removeEventListener('change', handler)\n\t}, [])\n\n\treturn resolveTheme(isDark ? 'dark' : 'light', override)\n}\n","import { useEffect } from 'react'\nimport type { RefObject } from 'react'\n\nexport function useClickOutside(\n\trefs: RefObject<HTMLElement | null>[],\n\thandler: () => void,\n\tenabled: boolean\n): void {\n\tuseEffect(() => {\n\t\tif (!enabled) return\n\t\tfunction onPointerDown(e: PointerEvent) {\n\t\t\tconst target = e.target as Node\n\t\t\tif (refs.every((ref) => !ref.current?.contains(target))) {\n\t\t\t\thandler()\n\t\t\t}\n\t\t}\n\t\tdocument.addEventListener('pointerdown', onPointerDown)\n\t\treturn () => document.removeEventListener('pointerdown', onPointerDown)\n\t}, [refs, handler, enabled])\n}\n","export type PickerLabels = {\n\tcountryLabel: string\n\tstateLabel: string\n\tcityLabel: string\n\tcountryTitle: string\n\tstateTitle: string\n\tcityTitle: string\n\tcountryPlaceholder: string\n\tstatePlaceholder: string\n\tcityPlaceholder: string\n\tstateDisabledPlaceholder: string\n\tcityDisabledPlaceholder: string\n\tstateNotApplicable: string\n\tcityNotApplicable: string\n\tstateDisabledHint: string\n\tcityDisabledHint: string\n\tloadingLabel: (label: string) => string\n\terrorLabel: (label: string) => string\n\tsearchPlaceholder: string\n\tnoResults: string\n\tfallbackPlaceholder: (label: string) => string\n\tcloseDropdown: (title: string) => string\n\tsearchAccessibilityLabel: (title: string) => string\n\topenPickerHint: (label: string) => string\n\tselectedValueLabel: (label: string, value: string) => string\n\tfallbackInputLabel: (label: string) => string\n\tfallbackInputHint: (label: string) => string\n}\n\nexport const DEFAULT_LABELS: PickerLabels = {\n\tcountryLabel: 'Country',\n\tstateLabel: 'State / Province',\n\tcityLabel: 'City',\n\tcountryTitle: 'Select Country',\n\tstateTitle: 'Select State / Province',\n\tcityTitle: 'Select City',\n\tcountryPlaceholder: 'Select country',\n\tstatePlaceholder: 'Select state',\n\tcityPlaceholder: 'Select city',\n\tstateDisabledPlaceholder: 'Select a country first',\n\tcityDisabledPlaceholder: 'Select a state first',\n\tstateNotApplicable: 'Not applicable',\n\tcityNotApplicable: 'Not applicable',\n\tstateDisabledHint: 'Select a country to enable state picker',\n\tcityDisabledHint: 'Select a state to enable city picker',\n\tloadingLabel: (label) => `Loading ${label.toLocaleLowerCase()} options`,\n\terrorLabel: (label) =>\n\t\t`Failed to load ${label.toLocaleLowerCase()} options. Enter manually.`,\n\tsearchPlaceholder: 'Search…',\n\tnoResults: 'No results',\n\tfallbackPlaceholder: (label) => `Enter ${label.toLocaleLowerCase()} manually`,\n\tcloseDropdown: (title) => `Close ${title}`,\n\tsearchAccessibilityLabel: (title) => `Search ${title}`,\n\topenPickerHint: (label) => `Opens ${label.toLocaleLowerCase()} picker`,\n\tselectedValueLabel: (label, value) => `${label}: ${value}`,\n\tfallbackInputLabel: (label) => `${label} text input`,\n\tfallbackInputHint: (label) =>\n\t\t`Type a ${label.toLocaleLowerCase()} name manually`,\n}\n\nexport function resolveLabels(override?: Partial<PickerLabels>): PickerLabels {\n\tif (!override) return DEFAULT_LABELS\n\treturn { ...DEFAULT_LABELS, ...override }\n}\n","import { useEffect, useState } from 'react'\n\nexport function useDebounce<T>(value: T, delayMs: number): T {\n\tconst [debounced, setDebounced] = useState(value)\n\n\tuseEffect(() => {\n\t\tconst timer = setTimeout(() => setDebounced(value), delayMs)\n\t\treturn () => clearTimeout(timer)\n\t}, [value, delayMs])\n\n\treturn debounced\n}\n","// Strips combining diacritical marks from a string after NFD decomposition.\n// \"café\" → \"cafe\", \"São Paulo\" → \"Sao Paulo\", \"Zürich\" → \"Zurich\"\nfunction normalize(str: string): string {\n\treturn str\n\t\t.normalize('NFD')\n\t\t.replace(/\\p{Mn}/gu, '')\n\t\t.toLocaleLowerCase()\n}\n\n// Returns true if `text` contains `query`, ignoring diacritics and case.\n// Locale-safe: uses toLocaleLowerCase so Turkish İ/ı are handled correctly.\nexport function matchesSearch(text: string, query: string): boolean {\n\tconst q = query.trim()\n\tif (!q) return true\n\treturn normalize(text).includes(normalize(q))\n}\n","import { createPortal } from 'react-dom'\nimport {\n\tuseEffect,\n\tuseRef,\n\tuseState,\n\tuseMemo,\n\tuseId,\n\ttype CSSProperties,\n} from 'react'\nimport type { PickerLabels } from '../labels'\nimport type {\n\tEmptyRenderProps,\n\tItemRenderProps,\n\tSearchRenderProps,\n} from '../render-props'\nimport type { PickerTheme } from '../theme'\nimport { useDebounce } from '../hooks/use-debounce'\nimport { matchesSearch } from '../utils/search'\n\ntype Item = {\n\tlabel: string\n\tsubLabel?: string\n\tvalue: string\n}\n\ntype PickerDropdownProps = {\n\topen: boolean\n\tanchorRef: React.RefObject<HTMLElement | null>\n\titems: Item[]\n\ttitle: string\n\ttheme: PickerTheme\n\tlabels: PickerLabels\n\ttestID?: string | undefined\n\trenderItem?: ((props: ItemRenderProps) => React.ReactNode) | undefined\n\trenderSearch?: ((props: SearchRenderProps) => React.ReactNode) | undefined\n\trenderEmpty?: ((props: EmptyRenderProps) => React.ReactNode) | undefined\n\tonSelect: (value: string) => void\n\tonClose: () => void\n}\n\nexport function PickerDropdown({\n\topen,\n\tanchorRef,\n\titems,\n\ttitle,\n\ttheme,\n\tlabels,\n\ttestID,\n\trenderItem,\n\trenderSearch,\n\trenderEmpty,\n\tonSelect,\n\tonClose,\n}: PickerDropdownProps) {\n\tconst [search, setSearch] = useState('')\n\tconst [activeIndex, setActiveIndex] = useState(0)\n\tconst [position, setPosition] = useState<{\n\t\ttop: number\n\t\tleft: number\n\t\twidth: number\n\t\tflipUp: boolean\n\t}>({\n\t\ttop: 0,\n\t\tleft: 0,\n\t\twidth: 240,\n\t\tflipUp: false,\n\t})\n\n\tconst searchRef = useRef<HTMLInputElement>(null)\n\tconst listRef = useRef<HTMLUListElement>(null)\n\tconst panelRef = useRef<HTMLDivElement>(null)\n\tconst listboxId = useId()\n\n\tconst debouncedSearch = useDebounce(search, 150)\n\tconst filtered = useMemo(\n\t\t() => items.filter((item) => matchesSearch(item.label, debouncedSearch)),\n\t\t[items, debouncedSearch]\n\t)\n\n\t// Reset state on open\n\tuseEffect(() => {\n\t\tif (open) {\n\t\t\tsetSearch('')\n\t\t\tsetActiveIndex(0)\n\t\t\t// Position after mount\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tif (!anchorRef.current) return\n\t\t\t\tconst rect = anchorRef.current.getBoundingClientRect()\n\t\t\t\tconst panelHeight = 360\n\t\t\t\tconst spaceBelow = window.innerHeight - rect.bottom\n\t\t\t\tconst flipUp = spaceBelow < panelHeight && rect.top > panelHeight\n\t\t\t\tsetPosition({\n\t\t\t\t\ttop: flipUp\n\t\t\t\t\t\t? rect.top + window.scrollY - panelHeight - 4\n\t\t\t\t\t\t: rect.bottom + window.scrollY + 4,\n\t\t\t\t\tleft: rect.left + window.scrollX,\n\t\t\t\t\twidth: rect.width,\n\t\t\t\t\tflipUp,\n\t\t\t\t})\n\t\t\t\trequestAnimationFrame(() => searchRef.current?.focus())\n\t\t\t})\n\t\t}\n\t}, [open, anchorRef])\n\n\t// Reset active index when filtered list changes\n\tuseEffect(() => {\n\t\tsetActiveIndex(0)\n\t}, [debouncedSearch])\n\n\t// Scroll active item into view\n\tuseEffect(() => {\n\t\tconst list = listRef.current\n\t\tif (!list) return\n\t\tconst active = list.children[activeIndex] as HTMLElement | undefined\n\t\tactive?.scrollIntoView({ block: 'nearest' })\n\t}, [activeIndex])\n\n\tfunction handleKeyDown(e: React.KeyboardEvent) {\n\t\tif (e.key === 'ArrowDown') {\n\t\t\te.preventDefault()\n\t\t\tsetActiveIndex((i) => Math.min(i + 1, filtered.length - 1))\n\t\t} else if (e.key === 'ArrowUp') {\n\t\t\te.preventDefault()\n\t\t\tsetActiveIndex((i) => Math.max(i - 1, 0))\n\t\t} else if (e.key === 'Enter') {\n\t\t\te.preventDefault()\n\t\t\tconst item = filtered[activeIndex]\n\t\t\tif (item) handleSelect(item.value)\n\t\t} else if (e.key === 'Escape') {\n\t\t\te.preventDefault()\n\t\t\tonClose()\n\t\t}\n\t}\n\n\tfunction handleSelect(value: string) {\n\t\tonSelect(value)\n\t\tonClose()\n\t}\n\n\tif (!open) return null\n\n\tconst PANEL_HEIGHT = 360\n\n\tconst panelStyle: CSSProperties = {\n\t\tposition: 'absolute',\n\t\ttop: position.top,\n\t\tleft: position.left,\n\t\twidth: position.width,\n\t\tmaxHeight: PANEL_HEIGHT,\n\t\tzIndex: 9999,\n\t\tbackgroundColor: theme.dropdownBackground,\n\t\tborderRadius: 12,\n\t\tboxShadow: '0 8px 24px rgba(0,0,0,0.12), 0 2px 8px rgba(0,0,0,0.08)',\n\t\tborder: `1px solid ${theme.separatorColor}`,\n\t\tdisplay: 'flex',\n\t\tflexDirection: 'column',\n\t\toverflow: 'hidden',\n\t}\n\n\tconst titleStyle: CSSProperties = {\n\t\tfontSize: 14,\n\t\tfontWeight: 600,\n\t\tcolor: theme.titleColor,\n\t\tpadding: '12px 16px 8px',\n\t\tborderBottom: `1px solid ${theme.separatorColor}`,\n\t\tflexShrink: 0,\n\t}\n\n\tconst searchStyle: CSSProperties = {\n\t\tmargin: '8px 12px',\n\t\tpadding: '7px 10px',\n\t\tborderRadius: 8,\n\t\tborder: 'none',\n\t\toutline: 'none',\n\t\tbackgroundColor: theme.searchBackground,\n\t\tcolor: theme.searchTextColor,\n\t\tfontSize: 14,\n\t\tflexShrink: 0,\n\t}\n\n\tconst listStyle: CSSProperties = {\n\t\toverflowY: 'auto',\n\t\tflex: 1,\n\t\tlistStyle: 'none',\n\t\tmargin: 0,\n\t\tpadding: 0,\n\t}\n\n\tconst emptyStyle: CSSProperties = {\n\t\ttextAlign: 'center',\n\t\tpadding: '24px 16px',\n\t\tcolor: theme.emptyTextColor,\n\t\tfontSize: 14,\n\t}\n\n\tconst content = (\n\t\t<div\n\t\t\tref={panelRef}\n\t\t\tstyle={panelStyle}\n\t\t\trole=\"dialog\"\n\t\t\taria-label={title}\n\t\t\tonKeyDown={handleKeyDown}\n\t\t\tdata-testid={testID ? `${testID}-dropdown` : undefined}\n\t\t>\n\t\t\t<div style={titleStyle}>{title}</div>\n\n\t\t\t{renderSearch ? (\n\t\t\t\trenderSearch({\n\t\t\t\t\tvalue: search,\n\t\t\t\t\tplaceholder: labels.searchPlaceholder,\n\t\t\t\t\tonChange: setSearch,\n\t\t\t\t})\n\t\t\t) : (\n\t\t\t\t<input\n\t\t\t\t\tref={searchRef}\n\t\t\t\t\tstyle={searchStyle}\n\t\t\t\t\ttype=\"search\"\n\t\t\t\t\tvalue={search}\n\t\t\t\t\tonChange={(e) => setSearch(e.target.value)}\n\t\t\t\t\tplaceholder={labels.searchPlaceholder}\n\t\t\t\t\taria-label={labels.searchAccessibilityLabel(title)}\n\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\tdata-testid={testID ? `${testID}-search` : undefined}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t<ul\n\t\t\t\tref={listRef}\n\t\t\t\tstyle={listStyle}\n\t\t\t\trole=\"listbox\"\n\t\t\t\tid={listboxId}\n\t\t\t\taria-label={title}\n\t\t\t>\n\t\t\t\t{filtered.length === 0 ? (\n\t\t\t\t\trenderEmpty ? (\n\t\t\t\t\t\trenderEmpty({ query: search })\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<li style={emptyStyle} role=\"status\" aria-live=\"polite\">\n\t\t\t\t\t\t\t{labels.noResults}\n\t\t\t\t\t\t</li>\n\t\t\t\t\t)\n\t\t\t\t) : (\n\t\t\t\t\tfiltered.map((item, index) => {\n\t\t\t\t\t\tconst isActive = index === activeIndex\n\t\t\t\t\t\tconst rowStyle: CSSProperties = {\n\t\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\t\talignItems: 'center',\n\t\t\t\t\t\t\tjustifyContent: 'space-between',\n\t\t\t\t\t\t\tpadding: '10px 16px',\n\t\t\t\t\t\t\tcursor: 'pointer',\n\t\t\t\t\t\t\tbackgroundColor: isActive\n\t\t\t\t\t\t\t\t? theme.rowHoverBackground\n\t\t\t\t\t\t\t\t: 'transparent',\n\t\t\t\t\t\t\tborderBottom:\n\t\t\t\t\t\t\t\tindex < filtered.length - 1\n\t\t\t\t\t\t\t\t\t? `1px solid ${theme.separatorColor}`\n\t\t\t\t\t\t\t\t\t: 'none',\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn renderItem ? (\n\t\t\t\t\t\t\t<li key={item.value} role=\"option\" aria-selected={isActive}>\n\t\t\t\t\t\t\t\t{renderItem({\n\t\t\t\t\t\t\t\t\tlabel: item.label,\n\t\t\t\t\t\t\t\t\tvalue: item.value,\n\t\t\t\t\t\t\t\t\tonSelect: () => handleSelect(item.value),\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<li\n\t\t\t\t\t\t\t\tkey={item.value}\n\t\t\t\t\t\t\t\trole=\"option\"\n\t\t\t\t\t\t\t\taria-selected={isActive}\n\t\t\t\t\t\t\t\tstyle={rowStyle}\n\t\t\t\t\t\t\t\tonPointerEnter={() => setActiveIndex(index)}\n\t\t\t\t\t\t\t\tonPointerDown={(e) => {\n\t\t\t\t\t\t\t\t\te.preventDefault()\n\t\t\t\t\t\t\t\t\thandleSelect(item.value)\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tdata-testid={\n\t\t\t\t\t\t\t\t\ttestID ? `${testID}-option-${item.value}` : undefined\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\tfontSize: 14,\n\t\t\t\t\t\t\t\t\t\tcolor: theme.rowTextColor,\n\t\t\t\t\t\t\t\t\t\tflex: 1,\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{item.label}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t{item.subLabel ? (\n\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\t\tfontSize: 12,\n\t\t\t\t\t\t\t\t\t\t\tcolor: theme.rowSubTextColor,\n\t\t\t\t\t\t\t\t\t\t\tmarginLeft: 8,\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{item.subLabel}\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t)\n\t\t\t\t\t})\n\t\t\t\t)}\n\t\t\t</ul>\n\t\t</div>\n\t)\n\n\treturn createPortal(content, document.body)\n}\n","// Injects the @keyframes spin rule once into the document head.\n// Called lazily so it only fires in browser environments.\nlet injected = false\n\nexport function injectSpinnerStyle(): void {\n\tif (injected || typeof document === 'undefined') return\n\tinjected = true\n\tconst style = document.createElement('style')\n\tstyle.textContent = '@keyframes spin { to { transform: rotate(360deg) } }'\n\tdocument.head.appendChild(style)\n}\n","import type { CSSProperties } from 'react'\nimport type { PickerLabels } from '../labels'\nimport type { TriggerRenderProps } from '../render-props'\nimport type { PickerTheme } from '../theme'\nimport { injectSpinnerStyle } from './spinner-style'\n\ninjectSpinnerStyle()\n\ntype PickerTriggerProps = {\n\tlabel: string\n\tvalue: string | null\n\tplaceholder: string\n\tisLoading: boolean\n\tisDisabled: boolean\n\tdisabledHint?: string\n\thasError: boolean\n\tfallbackValue: string\n\ttheme: PickerTheme\n\tlabels: PickerLabels\n\ttestID?: string | undefined\n\tid?: string | undefined\n\trenderTrigger?: ((props: TriggerRenderProps) => React.ReactNode) | undefined\n\tonFallbackChange: (text: string) => void\n\tonPress: () => void\n\tstyle?: CSSProperties\n\tclassName?: string | undefined\n}\n\nexport function PickerTrigger({\n\tlabel,\n\tvalue,\n\tplaceholder,\n\tisLoading,\n\tisDisabled,\n\tdisabledHint,\n\thasError,\n\tfallbackValue,\n\ttheme,\n\tlabels,\n\ttestID,\n\tid,\n\trenderTrigger,\n\tonFallbackChange,\n\tonPress,\n\tstyle,\n\tclassName,\n}: PickerTriggerProps) {\n\tif (renderTrigger) {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{renderTrigger({\n\t\t\t\t\tlabel,\n\t\t\t\t\tdisplayValue: value,\n\t\t\t\t\tplaceholder,\n\t\t\t\t\tisLoading,\n\t\t\t\t\tisDisabled,\n\t\t\t\t\thasError,\n\t\t\t\t\tonPress,\n\t\t\t\t})}\n\t\t\t</>\n\t\t)\n\t}\n\n\tconst containerStyle: CSSProperties = {\n\t\tdisplay: 'flex',\n\t\tflexDirection: 'column',\n\t\tgap: 6,\n\t\t...style,\n\t}\n\n\tconst labelStyle: CSSProperties = {\n\t\tfontSize: 13,\n\t\tfontWeight: 500,\n\t\tcolor: theme.labelColor,\n\t}\n\n\tconst inputBaseStyle: CSSProperties = {\n\t\tdisplay: 'flex',\n\t\talignItems: 'center',\n\t\tjustifyContent: 'space-between',\n\t\theight: 40,\n\t\tborderRadius: 8,\n\t\tborder: `1px solid ${isDisabled ? theme.disabledBorderColor : theme.borderColor}`,\n\t\tbackgroundColor: isDisabled ? theme.disabledBackground : theme.triggerBackground,\n\t\tpaddingInline: 12,\n\t\tfontSize: 14,\n\t\tcursor: isDisabled ? 'default' : 'pointer',\n\t\twidth: '100%',\n\t\tboxSizing: 'border-box',\n\t\toutline: 'none',\n\t\tfontFamily: 'inherit',\n\t\ttransition: 'border-color 0.15s, background-color 0.15s',\n\t}\n\n\tconst triggerAccessibilityLabel = isLoading\n\t\t? labels.loadingLabel(label)\n\t\t: value\n\t\t\t? labels.selectedValueLabel(label, value)\n\t\t\t: placeholder\n\n\treturn (\n\t\t<div style={containerStyle} className={className}>\n\t\t\t<label htmlFor={id} style={labelStyle}>\n\t\t\t\t{label}\n\t\t\t</label>\n\n\t\t\t{/* Visually hidden live region for screen reader announcements */}\n\t\t\t{(isLoading || hasError) && (\n\t\t\t\t<span\n\t\t\t\t\taria-live=\"polite\"\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\t\twidth: 1,\n\t\t\t\t\t\theight: 1,\n\t\t\t\t\t\toverflow: 'hidden',\n\t\t\t\t\t\tclip: 'rect(0,0,0,0)',\n\t\t\t\t\t\twhiteSpace: 'nowrap',\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t{isLoading ? labels.loadingLabel(label) : labels.errorLabel(label)}\n\t\t\t\t</span>\n\t\t\t)}\n\n\t\t\t{hasError ? (\n\t\t\t\t<input\n\t\t\t\t\tid={id}\n\t\t\t\t\tstyle={{ ...inputBaseStyle, cursor: 'text' }}\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\tvalue={fallbackValue}\n\t\t\t\t\tonChange={(e) => onFallbackChange(e.target.value)}\n\t\t\t\t\tplaceholder={labels.fallbackPlaceholder(label)}\n\t\t\t\t\taria-label={labels.fallbackInputLabel(label)}\n\t\t\t\t\taria-description={labels.fallbackInputHint(label)}\n\t\t\t\t\tautoCapitalize=\"words\"\n\t\t\t\t\tdata-testid={testID ? `${testID}-fallback-input` : undefined}\n\t\t\t\t/>\n\t\t\t) : (\n\t\t\t\t<button\n\t\t\t\t\tid={id}\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tstyle={inputBaseStyle}\n\t\t\t\t\tonClick={onPress}\n\t\t\t\t\tdisabled={isDisabled || isLoading}\n\t\t\t\t\taria-label={triggerAccessibilityLabel}\n\t\t\t\t\taria-haspopup=\"listbox\"\n\t\t\t\t\taria-expanded={false}\n\t\t\t\t\ttitle={isDisabled ? disabledHint : labels.openPickerHint(label)}\n\t\t\t\t\tdata-testid={testID ? `${testID}-trigger` : undefined}\n\t\t\t\t>\n\t\t\t\t\t<span\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\tflex: 1,\n\t\t\t\t\t\t\ttextAlign: 'left',\n\t\t\t\t\t\t\tcolor: value ? theme.valueTextColor : theme.placeholderColor,\n\t\t\t\t\t\t\toverflow: 'hidden',\n\t\t\t\t\t\t\ttextOverflow: 'ellipsis',\n\t\t\t\t\t\t\twhiteSpace: 'nowrap',\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{value ?? placeholder}\n\t\t\t\t\t</span>\n\n\t\t\t\t\t{isLoading ? (\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\twidth: 14,\n\t\t\t\t\t\t\t\theight: 14,\n\t\t\t\t\t\t\t\tborderRadius: '50%',\n\t\t\t\t\t\t\t\tborder: `2px solid ${theme.loadingColor}`,\n\t\t\t\t\t\t\t\tborderTopColor: 'transparent',\n\t\t\t\t\t\t\t\tdisplay: 'inline-block',\n\t\t\t\t\t\t\t\tanimation: 'spin 0.7s linear infinite',\n\t\t\t\t\t\t\t\tflexShrink: 0,\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\taria-hidden\n\t\t\t\t\t\t/>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\tcolor: isDisabled ? theme.chevronDisabledColor : theme.chevronColor,\n\t\t\t\t\t\t\t\tfontSize: 12,\n\t\t\t\t\t\t\t\tflexShrink: 0,\n\t\t\t\t\t\t\t\tmarginLeft: 4,\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\taria-hidden\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t▾\n\t\t\t\t\t\t</span>\n\t\t\t\t\t)}\n\t\t\t\t</button>\n\t\t\t)}\n\t\t</div>\n\t)\n}\n","import { useId, useMemo, useRef, useState } from 'react'\nimport type { CSSProperties } from 'react'\nimport { useCities } from '../hooks/use-cities'\nimport { usePickerTheme } from '../hooks/use-picker-theme'\nimport { useClickOutside } from '../hooks/use-click-outside'\nimport type { PickerLabels } from '../labels'\nimport { resolveLabels } from '../labels'\nimport type { PickerRenderProps } from '../render-props'\nimport type { PickerTheme } from '../theme'\nimport type { City } from '../types'\nimport { PickerDropdown } from './picker-dropdown'\nimport { PickerTrigger } from './picker-trigger'\n\ntype CityPickerProps = PickerRenderProps & {\n\tcountryCode: string | null | undefined\n\tstateCode: string | null | undefined\n\tvalue: City | null\n\tonChange: (city: City) => void\n\tnotApplicable?: boolean | undefined\n\tplaceholder?: string | undefined\n\ttheme?: Partial<PickerTheme> | undefined\n\tlabels?: Partial<PickerLabels> | undefined\n\ttestID?: string | undefined\n\tstyle?: CSSProperties | undefined\n\tclassName?: string | undefined\n}\n\nexport function CityPicker({\n\tcountryCode,\n\tstateCode,\n\tvalue,\n\tonChange,\n\tnotApplicable = false,\n\tplaceholder,\n\ttheme: themeOverride,\n\tlabels: labelsOverride,\n\ttestID,\n\trenderTrigger,\n\trenderItem,\n\trenderSearch,\n\trenderEmpty,\n\tstyle,\n\tclassName,\n}: CityPickerProps) {\n\tconst [open, setOpen] = useState(false)\n\tconst [fallback, setFallback] = useState('')\n\tconst { data, isLoading, error } = useCities(countryCode, stateCode)\n\tconst resolvedTheme = usePickerTheme(themeOverride)\n\tconst resolvedLabels = resolveLabels(labelsOverride)\n\tconst triggerRef = useRef<HTMLDivElement>(null)\n\tconst dropdownRef = useRef<HTMLDivElement>(null)\n\tconst id = useId()\n\n\tconst isDisabled = !countryCode || !stateCode\n\tconst isNotApplicable =\n\t\tnotApplicable || (!isLoading && !error && !!stateCode && data.length === 0)\n\n\tuseClickOutside([triggerRef, dropdownRef], () => setOpen(false), open)\n\n\tconst items = useMemo(\n\t\t() =>\n\t\t\tdata.map((c) => ({\n\t\t\t\tlabel: c.name,\n\t\t\t\tvalue: c.name,\n\t\t\t})),\n\t\t[data]\n\t)\n\n\tfunction handleSelect(name: string) {\n\t\tconst city = data.find((c) => c.name === name)\n\t\tif (city) onChange(city)\n\t}\n\n\treturn (\n\t\t<div ref={triggerRef} style={style} className={className}>\n\t\t\t<PickerTrigger\n\t\t\t\tid={id}\n\t\t\t\tlabel={resolvedLabels.cityLabel}\n\t\t\t\tvalue={isNotApplicable ? null : (value?.name ?? null)}\n\t\t\t\tplaceholder={\n\t\t\t\t\tisNotApplicable\n\t\t\t\t\t\t? resolvedLabels.cityNotApplicable\n\t\t\t\t\t\t: isDisabled\n\t\t\t\t\t\t\t? resolvedLabels.cityDisabledPlaceholder\n\t\t\t\t\t\t\t: (placeholder ?? resolvedLabels.cityPlaceholder)\n\t\t\t\t}\n\t\t\t\tisLoading={isLoading}\n\t\t\t\tisDisabled={isDisabled || isNotApplicable}\n\t\t\t\tdisabledHint={resolvedLabels.cityDisabledHint}\n\t\t\t\thasError={!!error}\n\t\t\t\tfallbackValue={fallback}\n\t\t\t\ttheme={resolvedTheme}\n\t\t\t\tlabels={resolvedLabels}\n\t\t\t\ttestID={testID}\n\t\t\t\trenderTrigger={renderTrigger}\n\t\t\t\tonFallbackChange={setFallback}\n\t\t\t\tonPress={() => setOpen(true)}\n\t\t\t/>\n\n\t\t\t<PickerDropdown\n\t\t\t\topen={open}\n\t\t\t\tanchorRef={triggerRef}\n\t\t\t\titems={items}\n\t\t\t\ttitle={resolvedLabels.cityTitle}\n\t\t\t\ttheme={resolvedTheme}\n\t\t\t\tlabels={resolvedLabels}\n\t\t\t\ttestID={testID}\n\t\t\t\trenderItem={renderItem}\n\t\t\t\trenderSearch={renderSearch}\n\t\t\t\trenderEmpty={renderEmpty}\n\t\t\t\tonSelect={handleSelect}\n\t\t\t\tonClose={() => setOpen(false)}\n\t\t\t/>\n\t\t</div>\n\t)\n}\n","import { useEffect, useState } from 'react'\nimport { fetchCountries } from '../api/geocoded'\nimport { cachedFetch, countriesCache } from '../cache/query-cache'\nimport type { Country } from '../types'\n\ntype UseCountriesResult = {\n\tdata: Country[]\n\tisLoading: boolean\n\terror: Error | null\n}\n\nconst CACHE_KEY = 'countries'\n\nexport function useCountries(): UseCountriesResult {\n\tconst [state, setState] = useState<UseCountriesResult>(() => {\n\t\tconst cached = countriesCache.get(CACHE_KEY)\n\t\treturn cached\n\t\t\t? { data: cached, isLoading: false, error: null }\n\t\t\t: { data: [], isLoading: true, error: null }\n\t})\n\n\tuseEffect(() => {\n\t\t// Already hydrated from cache in initial state\n\t\tif (countriesCache.has(CACHE_KEY)) return\n\n\t\tcachedFetch(countriesCache, CACHE_KEY, fetchCountries)\n\t\t\t.then((data) => setState({ data, isLoading: false, error: null }))\n\t\t\t.catch((err: unknown) =>\n\t\t\t\tsetState({\n\t\t\t\t\tdata: [],\n\t\t\t\t\tisLoading: false,\n\t\t\t\t\terror: err instanceof Error ? err : new Error(String(err)),\n\t\t\t\t})\n\t\t\t)\n\t}, [])\n\n\treturn state\n}\n","import { useId, useRef, useState } from 'react'\nimport type { CSSProperties } from 'react'\nimport { resolveLabels } from '../labels'\nimport type { PickerLabels } from '../labels'\nimport type { PickerRenderProps } from '../render-props'\nimport type { PickerTheme } from '../theme'\nimport type { Country } from '../types'\nimport { useCountries } from '../hooks/use-countries'\nimport { usePickerTheme } from '../hooks/use-picker-theme'\nimport { useClickOutside } from '../hooks/use-click-outside'\nimport { PickerDropdown } from './picker-dropdown'\nimport { PickerTrigger } from './picker-trigger'\n\ntype CountryPickerProps = PickerRenderProps & {\n\tvalue: Country | null\n\tonChange: (country: Country) => void\n\ttheme?: Partial<PickerTheme> | undefined\n\tlabels?: Partial<PickerLabels> | undefined\n\ttestID?: string | undefined\n\tstyle?: CSSProperties | undefined\n\tclassName?: string | undefined\n}\n\nexport function CountryPicker({\n\tvalue,\n\tonChange,\n\ttheme: themeOverride,\n\tlabels: labelsOverride,\n\ttestID,\n\trenderTrigger,\n\trenderItem,\n\trenderSearch,\n\trenderEmpty,\n\tstyle,\n\tclassName,\n}: CountryPickerProps) {\n\tconst [open, setOpen] = useState(false)\n\tconst [fallbackValue, setFallbackValue] = useState('')\n\tconst theme = usePickerTheme(themeOverride)\n\tconst labels = resolveLabels(labelsOverride)\n\tconst { data: countries, isLoading, error } = useCountries()\n\tconst triggerRef = useRef<HTMLDivElement>(null)\n\tconst dropdownRef = useRef<HTMLDivElement>(null)\n\tconst id = useId()\n\n\tuseClickOutside([triggerRef, dropdownRef], () => setOpen(false), open)\n\n\tconst items = countries.map((c) => ({\n\t\tlabel: `${c.flag} ${c.name}`,\n\t\tsubLabel: c.isoCode,\n\t\tvalue: c.isoCode,\n\t}))\n\n\tfunction handleSelect(isoCode: string) {\n\t\tconst country = countries.find((c) => c.isoCode === isoCode)\n\t\tif (country) onChange(country)\n\t}\n\n\treturn (\n\t\t<div ref={triggerRef} style={style} className={className}>\n\t\t\t<PickerTrigger\n\t\t\t\tid={id}\n\t\t\t\tlabel={labels.countryLabel}\n\t\t\t\tvalue={value ? `${value.flag} ${value.name}` : null}\n\t\t\t\tplaceholder={labels.countryPlaceholder}\n\t\t\t\tisLoading={isLoading}\n\t\t\t\tisDisabled={false}\n\t\t\t\thasError={!!error}\n\t\t\t\tfallbackValue={fallbackValue}\n\t\t\t\ttheme={theme}\n\t\t\t\tlabels={labels}\n\t\t\t\ttestID={testID}\n\t\t\t\trenderTrigger={renderTrigger}\n\t\t\t\tonFallbackChange={setFallbackValue}\n\t\t\t\tonPress={() => setOpen(true)}\n\t\t\t/>\n\t\t\t<PickerDropdown\n\t\t\t\topen={open}\n\t\t\t\tanchorRef={triggerRef}\n\t\t\t\titems={items}\n\t\t\t\ttitle={labels.countryTitle}\n\t\t\t\ttheme={theme}\n\t\t\t\tlabels={labels}\n\t\t\t\ttestID={testID}\n\t\t\t\trenderItem={renderItem}\n\t\t\t\trenderSearch={renderSearch}\n\t\t\t\trenderEmpty={renderEmpty}\n\t\t\t\tonSelect={handleSelect}\n\t\t\t\tonClose={() => setOpen(false)}\n\t\t\t/>\n\t\t</div>\n\t)\n}\n","import { useEffect, useState } from 'react'\nimport { fetchStates } from '../api/geocoded'\nimport { cachedFetch, statesCache } from '../cache/query-cache'\nimport type { State } from '../types'\n\ntype UseStatesResult = {\n\tdata: State[]\n\tisLoading: boolean\n\terror: Error | null\n}\n\ntype InternalState = UseStatesResult & { key: string | null }\n\nexport function useStates(\n\tcountryCode: string | null | undefined\n): UseStatesResult {\n\tconst key = countryCode ?? null\n\n\tconst [state, setState] = useState<InternalState>(() => {\n\t\tif (!key) return { data: [], isLoading: false, error: null, key: null }\n\t\tconst cached = statesCache.get(key)\n\t\treturn cached\n\t\t\t? { data: cached, isLoading: false, error: null, key }\n\t\t\t: { data: [], isLoading: true, error: null, key }\n\t})\n\n\tuseEffect(() => {\n\t\tif (!key) {\n\t\t\tsetState({ data: [], isLoading: false, error: null, key: null })\n\t\t\treturn\n\t\t}\n\n\t\tif (statesCache.has(key)) {\n\t\t\tconst cached = statesCache.get(key)!\n\t\t\tsetState({ data: cached, isLoading: false, error: null, key })\n\t\t\treturn\n\t\t}\n\n\t\tsetState({ data: [], isLoading: true, error: null, key })\n\n\t\tlet cancelled = false\n\n\t\tcachedFetch(statesCache, key, () => fetchStates(key))\n\t\t\t.then((data) => {\n\t\t\t\tif (!cancelled) setState({ data, isLoading: false, error: null, key })\n\t\t\t})\n\t\t\t.catch((err: unknown) => {\n\t\t\t\tif (!cancelled)\n\t\t\t\t\tsetState({\n\t\t\t\t\t\tdata: [],\n\t\t\t\t\t\tisLoading: false,\n\t\t\t\t\t\terror: err instanceof Error ? err : new Error(String(err)),\n\t\t\t\t\t\tkey,\n\t\t\t\t\t})\n\t\t\t})\n\n\t\treturn () => {\n\t\t\tcancelled = true\n\t\t}\n\t}, [key])\n\n\t// Derive isLoading synchronously: if the key changed but the stored\n\t// result is still for the previous key, report loading immediately.\n\t// This eliminates the false-positive render where isLoading=false\n\t// with empty data for a new, not-yet-fetched key.\n\tif (state.key !== key) {\n\t\treturn { data: [], isLoading: key !== null, error: null }\n\t}\n\n\treturn { data: state.data, isLoading: state.isLoading, error: state.error }\n}\n","import { useEffect, useId, useMemo, useRef, useState } from 'react'\nimport type { CSSProperties } from 'react'\nimport { useStates } from '../hooks/use-states'\nimport { usePickerTheme } from '../hooks/use-picker-theme'\nimport { useClickOutside } from '../hooks/use-click-outside'\nimport type { PickerLabels } from '../labels'\nimport { resolveLabels } from '../labels'\nimport type { PickerRenderProps } from '../render-props'\nimport type { PickerTheme } from '../theme'\nimport type { State } from '../types'\nimport { PickerDropdown } from './picker-dropdown'\nimport { PickerTrigger } from './picker-trigger'\n\ntype StatePickerProps = PickerRenderProps & {\n\tcountryCode: string | null | undefined\n\tvalue: State | null\n\tonChange: (state: State) => void\n\tonNoStates?: (() => void) | undefined\n\tplaceholder?: string | undefined\n\ttheme?: Partial<PickerTheme> | undefined\n\tlabels?: Partial<PickerLabels> | undefined\n\ttestID?: string | undefined\n\tstyle?: CSSProperties | undefined\n\tclassName?: string | undefined\n}\n\nexport function StatePicker({\n\tcountryCode,\n\tvalue,\n\tonChange,\n\tonNoStates,\n\tplaceholder,\n\ttheme: themeOverride,\n\tlabels: labelsOverride,\n\ttestID,\n\trenderTrigger,\n\trenderItem,\n\trenderSearch,\n\trenderEmpty,\n\tstyle,\n\tclassName,\n}: StatePickerProps) {\n\tconst [open, setOpen] = useState(false)\n\tconst [fallback, setFallback] = useState('')\n\tconst { data, isLoading, error } = useStates(countryCode)\n\tconst resolvedTheme = usePickerTheme(themeOverride)\n\tconst resolvedLabels = resolveLabels(labelsOverride)\n\tconst triggerRef = useRef<HTMLDivElement>(null)\n\tconst dropdownRef = useRef<HTMLDivElement>(null)\n\tconst id = useId()\n\n\tconst isDisabled = !countryCode\n\tconst isNotApplicable =\n\t\t!isLoading && !error && !!countryCode && data.length === 0\n\n\tconst onNoStatesRef = useRef(onNoStates)\n\tuseEffect(() => {\n\t\tonNoStatesRef.current = onNoStates\n\t})\n\n\tuseEffect(() => {\n\t\tif (isNotApplicable) onNoStatesRef.current?.()\n\t}, [isNotApplicable])\n\n\tuseClickOutside([triggerRef, dropdownRef], () => setOpen(false), open)\n\n\tconst items = useMemo(\n\t\t() =>\n\t\t\tdata.map((s) => ({\n\t\t\t\tlabel: s.name,\n\t\t\t\tvalue: s.isoCode,\n\t\t\t})),\n\t\t[data]\n\t)\n\n\tfunction handleSelect(isoCode: string) {\n\t\tconst state = data.find((s) => s.isoCode === isoCode)\n\t\tif (state) onChange(state)\n\t}\n\n\treturn (\n\t\t<div ref={triggerRef} style={style} className={className}>\n\t\t\t<PickerTrigger\n\t\t\t\tid={id}\n\t\t\t\tlabel={resolvedLabels.stateLabel}\n\t\t\t\tvalue={isNotApplicable ? null : (value?.name ?? null)}\n\t\t\t\tplaceholder={\n\t\t\t\t\tisNotApplicable\n\t\t\t\t\t\t? resolvedLabels.stateNotApplicable\n\t\t\t\t\t\t: isDisabled\n\t\t\t\t\t\t\t? resolvedLabels.stateDisabledPlaceholder\n\t\t\t\t\t\t\t: (placeholder ?? resolvedLabels.statePlaceholder)\n\t\t\t\t}\n\t\t\t\tisLoading={isLoading}\n\t\t\t\tisDisabled={isDisabled || isNotApplicable}\n\t\t\t\tdisabledHint={resolvedLabels.stateDisabledHint}\n\t\t\t\thasError={!!error}\n\t\t\t\tfallbackValue={fallback}\n\t\t\t\ttheme={resolvedTheme}\n\t\t\t\tlabels={resolvedLabels}\n\t\t\t\ttestID={testID}\n\t\t\t\trenderTrigger={renderTrigger}\n\t\t\t\tonFallbackChange={setFallback}\n\t\t\t\tonPress={() => setOpen(true)}\n\t\t\t/>\n\n\t\t\t<PickerDropdown\n\t\t\t\topen={open}\n\t\t\t\tanchorRef={triggerRef}\n\t\t\t\titems={items}\n\t\t\t\ttitle={resolvedLabels.stateTitle}\n\t\t\t\ttheme={resolvedTheme}\n\t\t\t\tlabels={resolvedLabels}\n\t\t\t\ttestID={testID}\n\t\t\t\trenderItem={renderItem}\n\t\t\t\trenderSearch={renderSearch}\n\t\t\t\trenderEmpty={renderEmpty}\n\t\t\t\tonSelect={handleSelect}\n\t\t\t\tonClose={() => setOpen(false)}\n\t\t\t/>\n\t\t</div>\n\t)\n}\n","import { useState } from 'react'\nimport type { CSSProperties } from 'react'\nimport type { PickerLabels } from '../labels'\nimport type { PickerRenderProps } from '../render-props'\nimport type { PickerTheme } from '../theme'\nimport type { City, Country, PickerSelection, State } from '../types'\nimport { CityPicker } from './city-picker'\nimport { CountryPicker } from './country-picker'\nimport { StatePicker } from './state-picker'\n\ntype CountryStateCityPickerProps = PickerRenderProps & {\n\tonSelect: (selection: Partial<PickerSelection>) => void\n\tdefaultValue?: Partial<PickerSelection> | undefined\n\ttheme?: Partial<PickerTheme> | undefined\n\tlabels?: Partial<PickerLabels> | undefined\n\ttestID?: string | undefined\n\tstyle?: CSSProperties | undefined\n\tclassName?: string | undefined\n}\n\nexport function CountryStateCityPicker({\n\tonSelect,\n\tdefaultValue,\n\ttheme,\n\tlabels,\n\ttestID,\n\trenderTrigger,\n\trenderItem,\n\trenderSearch,\n\trenderEmpty,\n\tstyle,\n\tclassName,\n}: CountryStateCityPickerProps) {\n\tconst [country, setCountry] = useState<Country | null>(\n\t\tdefaultValue?.country ?? null\n\t)\n\tconst [state, setState] = useState<State | null>(defaultValue?.state ?? null)\n\tconst [city, setCity] = useState<City | null>(defaultValue?.city ?? null)\n\tconst [countryHasNoStates, setCountryHasNoStates] = useState(false)\n\n\tfunction handleCountryChange(selected: Country) {\n\t\tsetCountry(selected)\n\t\tsetState(null)\n\t\tsetCity(null)\n\t\tsetCountryHasNoStates(false)\n\t\tonSelect({ country: selected, state: null, city: null })\n\t}\n\n\tfunction handleStateChange(selected: State) {\n\t\tsetState(selected)\n\t\tsetCity(null)\n\t\tonSelect({ country, state: selected, city: null })\n\t}\n\n\tfunction handleCityChange(selected: City) {\n\t\tsetCity(selected)\n\t\tonSelect({ country, state, city: selected })\n\t}\n\n\tconst containerStyle: CSSProperties = {\n\t\tdisplay: 'flex',\n\t\tflexDirection: 'column',\n\t\tgap: 16,\n\t\t...style,\n\t}\n\n\treturn (\n\t\t<div style={containerStyle} className={className}>\n\t\t\t<CountryPicker\n\t\t\t\tvalue={country}\n\t\t\t\tonChange={handleCountryChange}\n\t\t\t\ttheme={theme}\n\t\t\t\tlabels={labels}\n\t\t\t\ttestID={testID ? `${testID}-country` : undefined}\n\t\t\t\trenderTrigger={renderTrigger}\n\t\t\t\trenderItem={renderItem}\n\t\t\t\trenderSearch={renderSearch}\n\t\t\t\trenderEmpty={renderEmpty}\n\t\t\t/>\n\n\t\t\t<StatePicker\n\t\t\t\tcountryCode={country?.isoCode}\n\t\t\t\tvalue={state}\n\t\t\t\tonChange={handleStateChange}\n\t\t\t\tonNoStates={() => setCountryHasNoStates(true)}\n\t\t\t\ttheme={theme}\n\t\t\t\tlabels={labels}\n\t\t\t\ttestID={testID ? `${testID}-state` : undefined}\n\t\t\t\trenderTrigger={renderTrigger}\n\t\t\t\trenderItem={renderItem}\n\t\t\t\trenderSearch={renderSearch}\n\t\t\t\trenderEmpty={renderEmpty}\n\t\t\t/>\n\n\t\t\t<CityPicker\n\t\t\t\tcountryCode={country?.isoCode}\n\t\t\t\tstateCode={state?.isoCode}\n\t\t\t\tvalue={city}\n\t\t\t\tonChange={handleCityChange}\n\t\t\t\tnotApplicable={countryHasNoStates}\n\t\t\t\ttheme={theme}\n\t\t\t\tlabels={labels}\n\t\t\t\ttestID={testID ? `${testID}-city` : undefined}\n\t\t\t\trenderTrigger={renderTrigger}\n\t\t\t\trenderItem={renderItem}\n\t\t\t\trenderSearch={renderSearch}\n\t\t\t\trenderEmpty={renderEmpty}\n\t\t\t/>\n\t\t</div>\n\t)\n}\n","import { useEffect, useState } from 'react'\nimport { fetchCities, fetchCountries, fetchStates } from '../api/geocoded'\nimport {\n\tcachedFetch,\n\tcitiesCache,\n\tcountriesCache,\n\tstatesCache,\n} from '../cache/query-cache'\nimport type { PickerSelection } from '../types'\n\ntype PresetInput = {\n\tcountry?: string | null\n\tstate?: string | null\n\tcity?: string | null\n}\n\ntype UsePresetSelectionResult = {\n\tselection: Partial<PickerSelection>\n\tisLoading: boolean\n\terror: Error | null\n}\n\nfunction matchInsensitive(value: string, target: string): boolean {\n\treturn value.toLowerCase() === target.toLowerCase()\n}\n\n/**\n * Resolves string identifiers from a backend into full Country/State/City\n * objects suitable for passing as `defaultValue` to CountryStateCityPicker.\n *\n * Each field accepts either a name or ISO code, matched case-insensitively.\n * City accepts name only (cities have no ISO code in the dataset).\n *\n * @example\n * const { selection, isLoading } = usePresetSelection({\n *   country: 'IN',   // or 'India'\n *   state: 'MH',     // or 'Maharashtra'\n *   city: 'Mumbai',\n * })\n *\n * if (!isLoading) {\n *   return <CountryStateCityPicker defaultValue={selection} ... />\n * }\n */\nexport function usePresetSelection(\n\tinput: PresetInput\n): UsePresetSelectionResult {\n\tconst [result, setResult] = useState<UsePresetSelectionResult>({\n\t\tselection: {},\n\t\tisLoading: !!(input.country || input.state || input.city),\n\t\terror: null,\n\t})\n\n\tconst countryKey = input.country ?? null\n\tconst stateKey = input.state ?? null\n\tconst cityKey = input.city ?? null\n\n\tuseEffect(() => {\n\t\tif (!countryKey && !stateKey && !cityKey) {\n\t\t\tsetResult({ selection: {}, isLoading: false, error: null })\n\t\t\treturn\n\t\t}\n\n\t\tlet cancelled = false\n\n\t\tasync function resolve() {\n\t\t\ttry {\n\t\t\t\t// --- Country ---\n\t\t\t\tconst countries = await cachedFetch(\n\t\t\t\t\tcountriesCache,\n\t\t\t\t\t'countries',\n\t\t\t\t\tfetchCountries\n\t\t\t\t)\n\t\t\t\tif (cancelled) return\n\n\t\t\t\tif (!countryKey) {\n\t\t\t\t\tsetResult({ selection: {}, isLoading: false, error: null })\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tconst resolvedCountry =\n\t\t\t\t\tcountries.find(\n\t\t\t\t\t\t(c) =>\n\t\t\t\t\t\t\tmatchInsensitive(c.isoCode, countryKey) ||\n\t\t\t\t\t\t\tmatchInsensitive(c.name, countryKey)\n\t\t\t\t\t) ?? null\n\n\t\t\t\tif (!resolvedCountry || !stateKey) {\n\t\t\t\t\tsetResult({\n\t\t\t\t\t\tselection: { country: resolvedCountry, state: null, city: null },\n\t\t\t\t\t\tisLoading: false,\n\t\t\t\t\t\terror: null,\n\t\t\t\t\t})\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\t// --- State ---\n\t\t\t\tconst states = await cachedFetch(\n\t\t\t\t\tstatesCache,\n\t\t\t\t\tresolvedCountry.isoCode,\n\t\t\t\t\t() => fetchStates(resolvedCountry.isoCode)\n\t\t\t\t)\n\t\t\t\tif (cancelled) return\n\n\t\t\t\tconst resolvedState =\n\t\t\t\t\tstates.find(\n\t\t\t\t\t\t(s) =>\n\t\t\t\t\t\t\tmatchInsensitive(s.isoCode, stateKey) ||\n\t\t\t\t\t\t\tmatchInsensitive(s.name, stateKey)\n\t\t\t\t\t) ?? null\n\n\t\t\t\tif (!resolvedState || !cityKey) {\n\t\t\t\t\tsetResult({\n\t\t\t\t\t\tselection: {\n\t\t\t\t\t\t\tcountry: resolvedCountry,\n\t\t\t\t\t\t\tstate: resolvedState,\n\t\t\t\t\t\t\tcity: null,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tisLoading: false,\n\t\t\t\t\t\terror: null,\n\t\t\t\t\t})\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\t// --- City ---\n\t\t\t\tconst key = `${resolvedCountry.isoCode}:${resolvedState.isoCode}`\n\t\t\t\tconst cities = await cachedFetch(citiesCache, key, () =>\n\t\t\t\t\tfetchCities(resolvedCountry.isoCode, resolvedState.isoCode)\n\t\t\t\t)\n\t\t\t\tif (cancelled) return\n\n\t\t\t\tconst resolvedCity =\n\t\t\t\t\tcities.find((c) => matchInsensitive(c.name, cityKey)) ?? null\n\n\t\t\t\tsetResult({\n\t\t\t\t\tselection: {\n\t\t\t\t\t\tcountry: resolvedCountry,\n\t\t\t\t\t\tstate: resolvedState,\n\t\t\t\t\t\tcity: resolvedCity,\n\t\t\t\t\t},\n\t\t\t\t\tisLoading: false,\n\t\t\t\t\terror: null,\n\t\t\t\t})\n\t\t\t} catch (err) {\n\t\t\t\tif (!cancelled) {\n\t\t\t\t\tsetResult({\n\t\t\t\t\t\tselection: {},\n\t\t\t\t\t\tisLoading: false,\n\t\t\t\t\t\terror: err instanceof Error ? err : new Error(String(err)),\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tresolve()\n\t\treturn () => {\n\t\t\tcancelled = true\n\t\t}\n\t}, [countryKey, stateKey, cityKey])\n\n\treturn result\n}\n"]}