react-country-kit 1.3.0 β 2.1.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.
- package/dist/components/CountryMultiSelect/CountryMultiSelect.d.ts +2 -2
- package/dist/components/CountryMultiSelect.d.ts +2 -0
- package/dist/components/CountryPicker/CountryPicker.d.ts +2 -2
- package/dist/components/CountryPicker.d.ts +2 -0
- package/dist/components/CurrencyMultiSelect/CurrencyMultiSelect.d.ts +2 -2
- package/dist/components/CurrencyMultiSelect.d.ts +2 -0
- package/dist/components/CurrencyPicker/CurrencyPicker.d.ts +2 -2
- package/dist/components/CurrencyPicker.d.ts +2 -0
- package/dist/components/DivisionPicker/DivisionPicker.d.ts +2 -2
- package/dist/components/DivisionPicker.d.ts +2 -0
- package/dist/components/LanguagePicker/LanguagePicker.d.ts +2 -2
- package/dist/components/LanguagePicker.d.ts +2 -0
- package/dist/components/PhoneInput/PhoneInput.d.ts +2 -2
- package/dist/components/PhoneInput.d.ts +3 -0
- package/dist/components/TimezonePicker/TimezonePicker.d.ts +2 -2
- package/dist/components/TimezonePicker.d.ts +2 -0
- package/dist/components/primitives.d.ts +82 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs.map +1 -0
- package/dist/lib/utils.d.ts +6 -0
- package/dist/react-country-kit.cjs.js.map +1 -1
- package/dist/react-country-kit.es.js.map +1 -1
- package/dist/ui.cjs.js +3 -0
- package/dist/ui.d.ts +17 -0
- package/dist/ui.es.js +899 -0
- package/package.json +3 -3
- package/dist/index.d.ts +0 -9
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare function CountryMultiSelect({ value, onChange, placeholder, maxItems, showFlags, searchable, disabled, className, label, }:
|
|
1
|
+
import { ICountryMultiSelectProps } from 'react-country-kit-core';
|
|
2
|
+
export declare function CountryMultiSelect({ value, onChange, placeholder, maxItems, showFlags, searchable, disabled, className, label, }: ICountryMultiSelectProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare function CountryPicker({ value, onChange, placeholder, searchable, showFlag, showPhoneCode, disabled, className, label, }:
|
|
1
|
+
import { ICountryPickerProps } from 'react-country-kit-core';
|
|
2
|
+
export declare function CountryPicker({ value, onChange, placeholder, searchable, showFlag, showPhoneCode, disabled, className, label, }: ICountryPickerProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare function CurrencyMultiSelect({ value, onChange, placeholder, maxItems, showSymbol, searchable, disabled, className, label, }:
|
|
1
|
+
import { ICurrencyMultiSelectProps } from 'react-country-kit-core';
|
|
2
|
+
export declare function CurrencyMultiSelect({ value, onChange, placeholder, maxItems, showSymbol, searchable, disabled, className, label, }: ICurrencyMultiSelectProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { ICurrencyMultiSelectProps } from 'react-country-kit-core';
|
|
2
|
+
export declare function CurrencyMultiSelect({ value, onChange, placeholder, maxItems, showSymbol, searchable, disabled, className, label, }: ICurrencyMultiSelectProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare function CurrencyPicker({ value, onChange, placeholder, searchable, showSymbol, disabled, className, label, }:
|
|
1
|
+
import { ICurrencyPickerProps } from 'react-country-kit-core';
|
|
2
|
+
export declare function CurrencyPicker({ value, onChange, placeholder, searchable, showSymbol, disabled, className, label, }: ICurrencyPickerProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { ICurrencyPickerProps } from 'react-country-kit-core';
|
|
2
|
+
export declare function CurrencyPicker({ value, onChange, placeholder, searchable, showSymbol, countryIso2, autoSelect, disabled, className, label, }: ICurrencyPickerProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare function DivisionPicker({ countryIso2, value, onChange, placeholder, searchable, disabled, className, label, }:
|
|
1
|
+
import { IDivisionPickerProps } from 'react-country-kit-core';
|
|
2
|
+
export declare function DivisionPicker({ countryIso2, value, onChange, placeholder, searchable, disabled, className, label, }: IDivisionPickerProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare function LanguagePicker({ value, onChange, placeholder, searchable, showNativeName, disabled, className, label, }:
|
|
1
|
+
import { ILanguagePickerProps } from 'react-country-kit-core';
|
|
2
|
+
export declare function LanguagePicker({ value, onChange, placeholder, searchable, showNativeName, disabled, className, label, }: ILanguagePickerProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare function PhoneInput({ value, onChange, defaultCountryIso2, placeholder, showFlag, disabled, className, label, }:
|
|
1
|
+
import { IPhoneInputProps } from 'react-country-kit-core';
|
|
2
|
+
export declare function PhoneInput({ value, onChange, defaultCountryIso2, placeholder, showFlag, disabled, className, label, }: IPhoneInputProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare function TimezonePicker({ value, onChange, placeholder, searchable, countryIso2, disabled, className, label, }:
|
|
1
|
+
import { ITimezonePickerProps } from 'react-country-kit-core';
|
|
2
|
+
export declare function TimezonePicker({ value, onChange, placeholder, searchable, countryIso2, disabled, className, label, }: ITimezonePickerProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import * as PopoverPrimitive from '@radix-ui/react-popover';
|
|
3
|
+
export declare const Popover: React.FC<PopoverPrimitive.PopoverProps>;
|
|
4
|
+
export declare const PopoverTrigger: React.ForwardRefExoticComponent<PopoverPrimitive.PopoverTriggerProps & React.RefAttributes<HTMLButtonElement>>;
|
|
5
|
+
export declare const CheckIcon: {
|
|
6
|
+
({ className }: {
|
|
7
|
+
className?: string;
|
|
8
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
displayName: string;
|
|
10
|
+
};
|
|
11
|
+
export declare const FieldLabel: {
|
|
12
|
+
({ children, className, }: {
|
|
13
|
+
children: React.ReactNode;
|
|
14
|
+
className?: string;
|
|
15
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
displayName: string;
|
|
17
|
+
};
|
|
18
|
+
export declare const Badge: {
|
|
19
|
+
({ children, className }: {
|
|
20
|
+
children: React.ReactNode;
|
|
21
|
+
className?: string;
|
|
22
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
23
|
+
displayName: string;
|
|
24
|
+
};
|
|
25
|
+
export declare const Flag: {
|
|
26
|
+
({ iso2, flag, flagUrl, className }: {
|
|
27
|
+
iso2: string;
|
|
28
|
+
flag: string;
|
|
29
|
+
flagUrl: string;
|
|
30
|
+
className?: string;
|
|
31
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
32
|
+
displayName: string;
|
|
33
|
+
};
|
|
34
|
+
export interface PopoverContentProps extends React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content> {
|
|
35
|
+
}
|
|
36
|
+
export declare const PopoverContent: React.ForwardRefExoticComponent<PopoverContentProps & React.RefAttributes<HTMLDivElement>>;
|
|
37
|
+
/** Wrapper that groups search input + scrollable list. */
|
|
38
|
+
export declare const CommandRoot: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
|
|
39
|
+
export interface CommandInputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'onChange'> {
|
|
40
|
+
onValueChange?: (value: string) => void;
|
|
41
|
+
}
|
|
42
|
+
export declare const CommandInput: React.ForwardRefExoticComponent<CommandInputProps & React.RefAttributes<HTMLInputElement>>;
|
|
43
|
+
export declare const CommandList: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
|
|
44
|
+
export declare const CommandEmpty: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
|
|
45
|
+
export interface CommandItemProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
46
|
+
/** Called when the item is clicked or activated via keyboard Enter. */
|
|
47
|
+
onSelect?: () => void;
|
|
48
|
+
disabled?: boolean;
|
|
49
|
+
selected?: boolean;
|
|
50
|
+
/** Kept for API compatibility; not used internally. */
|
|
51
|
+
value?: string;
|
|
52
|
+
}
|
|
53
|
+
export declare const CommandItem: React.ForwardRefExoticComponent<CommandItemProps & React.RefAttributes<HTMLDivElement>>;
|
|
54
|
+
export interface PickerTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
|
|
55
|
+
isOpen?: boolean;
|
|
56
|
+
hasValue?: boolean;
|
|
57
|
+
placeholder?: string;
|
|
58
|
+
}
|
|
59
|
+
export declare const PickerTrigger: React.ForwardRefExoticComponent<PickerTriggerProps & React.RefAttributes<HTMLButtonElement>>;
|
|
60
|
+
export interface BasePickerProps {
|
|
61
|
+
label?: string;
|
|
62
|
+
trigger: React.ReactNode;
|
|
63
|
+
children: React.ReactNode;
|
|
64
|
+
open: boolean;
|
|
65
|
+
onOpenChange: (open: boolean) => void;
|
|
66
|
+
className?: string;
|
|
67
|
+
}
|
|
68
|
+
export declare const BasePicker: React.ForwardRefExoticComponent<BasePickerProps & React.RefAttributes<HTMLDivElement>>;
|
|
69
|
+
export interface MultiSelectTriggerProps<T> extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'value'> {
|
|
70
|
+
value: T[];
|
|
71
|
+
onRemove: (item: T, e: React.MouseEvent) => void;
|
|
72
|
+
onClear: (e: React.MouseEvent) => void;
|
|
73
|
+
isOpen: boolean;
|
|
74
|
+
placeholder?: string;
|
|
75
|
+
renderChip: (item: T) => React.ReactNode;
|
|
76
|
+
maxVisible?: number;
|
|
77
|
+
}
|
|
78
|
+
export declare const MultiSelectTrigger: (<T>(props: MultiSelectTriggerProps<T> & {
|
|
79
|
+
ref?: React.Ref<HTMLButtonElement>;
|
|
80
|
+
}) => React.ReactElement) & {
|
|
81
|
+
displayName?: string;
|
|
82
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../src/lib/utils.ts","../src/components/primitives.tsx","../src/components/CountryMultiSelect.tsx","../src/components/CountryPicker.tsx","../src/components/CurrencyMultiSelect.tsx","../src/components/CurrencyPicker.tsx","../src/components/DivisionPicker.tsx","../src/components/LanguagePicker.tsx","../src/components/PhoneInput.tsx","../src/components/TimezonePicker.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 \n export const Flag = ({ \n iso2, \n flag, \n flagUrl, \n className \n }: { \n iso2: string; \n flag: string; \n flagUrl: string; \n className?: string; \n }) => {\n return (\n <span className={cn('inline-flex items-center justify-center shrink-0 overflow-hidden', className)}>\n {/* Use img as fallback for Windows where emoji flags often fail */}\n <img \n src={flagUrl} \n alt={iso2} \n className=\"h-[1em] w-[1.5em] object-cover rounded-[1px] shadow-[0_0_0_1px_rgba(0,0,0,0.05)]\"\n onError={(e) => {\n // Fallback to emoji if image fails\n (e.target as HTMLImageElement).style.display = 'none';\n if ((e.target as HTMLElement).parentElement) {\n const span = document.createElement('span');\n span.textContent = flag;\n ((e.target as HTMLElement).parentElement!).appendChild(span);\n }\n }}\n />\n </span>\n );\n };\n Flag.displayName = 'Flag';\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 BasePicker,\n MultiSelectTrigger,\n Flag,\n} from './primitives';\nimport { cn } from '../lib/utils';\nimport type { ICountryMultiSelectProps, ICountry } from 'react-country-kit-core';\nimport { getAllCountries, searchCountries } from 'react-country-kit-core';\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}: ICountryMultiSelectProps) {\n const [open, setOpen] = useState(false);\n const [query, setQuery] = useState('');\n\n const items = query ? searchCountries(query) : getAllCountries();\n\n const isSelected = (c: ICountry) => value.some((s) => s.iso2 === c.iso2);\n\n const toggle = (country: ICountry) => {\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: ICountry, 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 && <Flag iso2={c.iso2} flag={c.flag} flagUrl={c.flag_url} />}\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 && <Flag iso2={country.iso2} flag={country.flag} flagUrl={country.flag_url} />}\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 PickerTrigger,\n CheckIcon,\n Badge,\n BasePicker,\n Flag,\n} from './primitives';\nimport { cn } from '../lib/utils';\nimport type { ICountryPickerProps } from 'react-country-kit-core';\nimport { getAllCountries, searchCountries } from 'react-country-kit-core';\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}: ICountryPickerProps) {\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 && <Flag iso2={value.iso2} flag={value.flag} flagUrl={value.flag_url} />}\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 && <Flag iso2={country.iso2} flag={country.flag} flagUrl={country.flag_url} />}\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 } 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 { ICurrencyMultiSelectProps, ICurrency } from 'react-country-kit-core';\nimport { getAllCurrencies, searchCurrencies } from 'react-country-kit-core';\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}: ICurrencyMultiSelectProps) {\n const [open, setOpen] = useState(false);\n const [query, setQuery] = useState('');\n\n const items = query ? searchCurrencies(query) : getAllCurrencies();\n const isSelected = (c: ICurrency) => value.some((s) => s.code === c.code);\n\n const toggle = (currency: ICurrency) => {\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: ICurrency, 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","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 { ICurrencyPickerProps } from 'react-country-kit-core';\nimport { getAllCurrencies, searchCurrencies } from 'react-country-kit-core';\nimport { getCurrencyByCountry } from 'react-country-kit-core';\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}: ICurrencyPickerProps) {\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 } 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 { IDivisionPickerProps } from 'react-country-kit-core';\nimport { getDivisionsByCountry } from 'react-country-kit-core';\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}: IDivisionPickerProps) {\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, { 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 { ILanguagePickerProps } from 'react-country-kit-core';\nimport { getAllLanguages, searchLanguages } from 'react-country-kit-core';\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}: ILanguagePickerProps) {\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 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 Flag,\n} from './primitives';\nimport { cn } from '../lib/utils';\nimport type { IPhoneInputProps } from 'react-country-kit-core';\nimport { usePhoneInput, useCountry } from 'react-country-kit-core';\n\nexport const PhoneInput = React.forwardRef<HTMLDivElement, IPhoneInputProps>(\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 const countryData = useCountry(phone.country?.iso2);\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 <Flag iso2={phone.country.iso2} flag={phone.country.flag} flagUrl={phone.country.flag_url} />\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 <Flag iso2={country.iso2} flag={country.flag} flagUrl={country.flag_url} />\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={countryData.phoneLengths.min}\n maxLength={countryData.phoneLengths.max}\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, 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 { ITimezonePickerProps } from 'react-country-kit-core';\nimport { getAllTimezones, searchTimezones } from 'react-country-kit-core';\nimport { getTimezonesByCountry } from 'react-country-kit-core';\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}: ITimezonePickerProps) {\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"],"mappings":"wuBAOA,SAAgB,KAAM,EAAsB,CAC1C,SAAA,EAAA,YAAA,EAAA,MAAoB,CAAM,CAAC,CAC7B,CCJA,IAAa,EAAU,EAAiB,KAC3B,EAAiB,EAAiB,QAGlC,EAAA,CAAa,CAAE,UAAA,CAAA,OAC1B,EAAA,KAAC,MAAD,CACE,UAAW,EAAG,uBAAwB,CAAS,EAC/C,QAAQ,YACR,KAAK,OACL,OAAO,eACP,YAAY,MACZ,cAAc,QACd,eAAe,oBAEf,EAAA,KAAC,WAAD,CAAU,OAAO,gBAAkB,CAAA,CAChC,CAAA,EAEP,EAAU,YAAc,YAExB,IAAa,EAAA,CAAc,CACzB,SAAA,EACA,UAAA,CAAA,OAKA,EAAA,KAAC,QAAD,CACE,UAAW,EACT,kGACA,CACF,EAEC,SAAA,CACI,CAAA,EAET,EAAW,YAAc,aAEzB,IAAa,EAAA,CAAS,CAAE,SAAA,EAAU,UAAA,CAAA,OAChC,EAAA,KAAC,OAAD,CACE,UAAW,EACT,wHACA,CACF,EAEC,SAAA,CACG,CAAA,EAER,EAAM,YAAc,QAEnB,IAAa,EAAA,CAAQ,CACnB,KAAA,EACA,KAAA,EACA,QAAA,EACA,UAAA,CAAA,OAQE,EAAA,KAAC,OAAD,CAAM,UAAW,EAAG,mEAAoE,CAAS,cAE/F,EAAA,KAAC,MAAD,CACE,IAAK,EACL,IAAK,EACL,UAAU,mFACV,QAAU,GAAM,CAGd,GADA,EAAG,OAA4B,MAAM,QAAU,OAC1C,EAAE,OAAuB,cAAe,CAC3C,MAAM,EAAO,SAAS,cAAc,MAAM,EAC1C,EAAK,YAAc,EACnB,EAAI,OAAuB,cAAgB,YAAY,CAAI,CAC7D,CACF,CACD,CAAA,CACG,CAAA,EAGV,EAAK,YAAc,OAKpB,IAAa,EAAiB,EAAA,QAAM,WAAA,CAGjC,CAAE,UAAA,EAAW,MAAA,EAAQ,QAAS,WAAA,EAAa,EAAG,iBAAA,EAAkB,GAAG,CAAA,EAAS,OAC7E,EAAA,KAAC,EAAiB,OAAlB,CAAA,YACE,EAAA,KAAC,EAAiB,QAAlB,CACO,IAAA,EACE,MAAA,EACK,WAAA,EACZ,iBAAmB,GAAM,CAIvB,EAAE,eAAe,EACjB,IAAmB,CAAC,CACtB,EACA,UAAW,EACT,uGACA,+DACA,6DACA,+DACA,gFACA,CACF,EACA,GAAI,CACL,CAAA,CACsB,CAAA,CAC1B,EACD,EAAe,YAAc,iBAK7B,IAAa,EAAc,EAAA,QAAM,WAAA,CAG9B,CAAE,UAAA,EAAW,GAAG,CAAA,EAAS,OAC1B,EAAA,KAAC,MAAD,CACO,IAAA,EACL,UAAW,EACT,4FACA,CACF,EACA,GAAI,CACL,CAAA,CACF,EACD,EAAY,YAAc,cAO1B,IAAa,EAAe,EAAA,QAAM,WAAA,CAC/B,CAAE,UAAA,EAAW,cAAA,EAAe,GAAG,CAAA,EAAS,OACvC,EAAA,KAAC,MAAD,CAAK,UAAU,oDACb,EAAA,MAAC,MAAD,CAAK,UAAW,EACd,oGACA,iFACF,WAHA,IAIE,EAAA,MAAC,MAAD,CACE,UAAU,6CACV,QAAQ,YACR,KAAK,OACL,OAAO,eACP,YAAY,aALd,IAOE,EAAA,KAAC,SAAD,CAAQ,GAAG,MAAM,GAAG,MAAM,EAAE,KAAO,CAAA,KACnC,EAAA,KAAC,OAAD,CAAM,EAAE,cAAc,cAAc,OAAS,CAAA,CAC1C,OACL,EAAA,KAAC,QAAD,CACO,IAAA,EACL,KAAK,OACL,aAAa,MACb,YAAY,MACZ,WAAY,GACZ,UAAW,EACT,sDACA,oFACA,CACF,EACA,SAAW,GAAM,IAAgB,EAAE,OAAO,KAAK,EAC/C,GAAI,CACL,CAAA,CACE,GACF,CAAA,CAET,EACA,EAAa,YAAc,eAE3B,IAAa,EAAc,EAAA,QAAM,WAAA,CAG9B,CAAE,UAAA,EAAW,GAAG,CAAA,EAAS,OAC1B,EAAA,KAAC,MAAD,CACO,IAAA,EACL,KAAK,UACL,UAAW,EAAG,iDAAkD,CAAS,EACzE,GAAI,CACL,CAAA,CACF,EACD,EAAY,YAAc,cAE1B,IAAa,EAAe,EAAA,QAAM,WAAA,CAG/B,EAAO,OACR,EAAA,KAAC,MAAD,CACO,IAAA,EACL,UAAU,qFACV,GAAI,CACL,CAAA,CACF,EACD,EAAa,YAAc,eAW3B,IAAa,EAAc,EAAA,QAAM,WAAA,CAC9B,CAAE,UAAA,EAAW,SAAA,EAAU,YAAA,EAAa,UAAA,EAAW,SAAA,EAAU,SAAA,EAAU,MAAO,EAAQ,GAAG,CAAA,EAAS,OAC7F,EAAA,KAAC,MAAD,CACO,IAAA,EACL,KAAK,SACL,gBAAe,GAAY,OAC3B,gBAAe,EACf,gBAAe,GAAY,OAC3B,gBAAe,GAAY,OAC3B,SAAU,EAAW,OAAY,EACjC,UAAW,EACT,wGACA,+CACA,iEACA,uCACA,GAAY,iDACZ,CACF,EACA,YAAc,GAAM,CAIlB,EAAE,eAAe,EACjB,IAAc,CAAC,CACjB,EACA,QAAS,EAAW,OAAA,IAAkB,IAAW,EACjD,UAAY,GAAM,CACZ,CAAC,GAAY,EAAE,MAAQ,UACzB,EAAE,eAAe,EACjB,IAAW,GAEb,IAAY,CAAC,CACf,EACA,GAAI,CACL,CAAA,CAEL,EACA,EAAY,YAAc,cAU1B,IAAa,EAAgB,EAAA,QAAM,WAAA,CAChC,CAAE,UAAA,EAAW,OAAA,EAAQ,SAAA,EAAU,YAAA,EAAa,SAAA,EAAU,GAAG,CAAA,EAAS,OACjE,EAAA,MAAC,SAAD,CACO,IAAA,EACL,KAAK,SACL,KAAK,WACL,gBAAe,EACf,gBAAc,UACd,UAAW,EACT,4IACA,oCACA,sEACA,kDACA,oCACA,CAAC,GAAY,wBACb,CACF,EACA,GAAI,WAfN,IAiBE,EAAA,KAAC,OAAD,CAAM,UAAU,2DACb,MAAY,EAAA,KAAC,OAAD,CAAA,SAAO,CAAkB,CAAA,CAClC,CAAA,KACN,EAAA,KAAC,MAAD,CACE,UAAW,EACT,8EACA,GAAU,YACZ,EACA,QAAQ,YACR,KAAK,OACL,OAAO,eACP,YAAY,MACZ,cAAc,QACd,eAAe,oBAEf,EAAA,KAAC,WAAD,CAAU,OAAO,gBAAkB,CAAA,CAChC,CAAA,CACC,GAEZ,EACA,EAAc,YAAc,gBAY5B,IAAa,EAAa,EAAA,QAAM,WAAA,CAC7B,CAAE,MAAA,EAAO,QAAA,EAAS,SAAA,EAAU,KAAA,EAAM,aAAA,EAAc,UAAA,CAAA,EAAa,OAC5D,EAAA,MAAC,MAAD,CAAU,IAAA,EAAK,UAAW,EAAG,sBAAuB,CAAS,WAA7D,CACG,MAAS,EAAA,KAAC,EAAD,CAAA,SAAa,CAAkB,CAAA,KACzC,EAAA,MAAC,EAAD,CAAe,KAAA,EAAoB,aAAA,WAAnC,IACE,EAAA,KAAC,EAAD,CAAgB,QAAA,YAAS,CAAwB,CAAA,KACjD,EAAA,KAAC,EAAD,CAAgB,UAAU,MAAO,SAAA,CAAyB,CAAA,CACnD,GACN,GAET,EACA,EAAW,YAAc,aAczB,IAAa,EAAqB,EAAA,QAAM,WAAA,CAEpC,CACE,MAAA,EACA,SAAA,EACA,QAAA,EACA,OAAA,EACA,YAAA,EACA,WAAA,EACA,WAAA,EAAa,EACb,UAAA,EACA,SAAA,EACA,GAAG,CAAA,EAEL,IACG,CACH,MAAM,EAAU,EAAM,MAAM,EAAG,CAAU,EACnC,EAAW,EAAM,OAAS,EAEhC,SACE,EAAA,MAAC,SAAD,CACO,IAAA,EACL,KAAK,SACL,gBAAc,UACd,gBAAe,EACL,SAAA,EACV,UAAW,EACT,qGACA,qGACA,+FACA,GAAU,iCACV,CACF,EACA,GAAI,WAbN,IAeE,EAAA,KAAC,MAAD,CAAK,UAAU,8DACZ,EAAM,SAAW,KAChB,EAAA,KAAC,OAAD,CAAM,UAAU,iCAAyB,CAAkB,CAAA,KAE3D,EAAA,MAAA,EAAA,SAAA,CAAA,SAAA,CACG,EAAQ,IAAA,CAAK,EAAM,OAClB,EAAA,MAAC,OAAD,CAEE,UAAU,2HAFZ,CAIG,EAAW,CAAI,KAChB,EAAA,KAAC,OAAD,CACE,KAAK,SACL,SAAU,EAAW,GAAK,EAC1B,QAAU,GAAM,CACd,EAAE,gBAAgB,EACb,GAAU,EAAS,EAAM,CAAC,CACjC,EACA,UAAY,GAAM,EACZ,EAAE,MAAQ,SAAW,EAAE,MAAQ,OACjC,EAAE,eAAe,EACjB,EAAE,gBAAgB,EACb,GAAU,EAAS,EAAM,CAAQ,EAE1C,EACA,UAAU,0FACV,aAAW,qBAEX,EAAA,MAAC,MAAD,CAAK,MAAM,IAAI,OAAO,IAAI,QAAQ,YAAY,KAAK,OAAO,OAAO,eAAe,YAAY,MAAM,cAAc,iBAAhH,IACE,EAAA,KAAC,OAAD,CAAM,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,IAAM,CAAA,KAAC,EAAA,KAAC,OAAD,CAAM,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,IAAM,CAAA,CACxE,GACD,CAAA,CACF,GAzBC,CAyBD,CACP,EACA,EAAW,MACV,EAAA,MAAC,EAAD,CAAO,UAAU,kDAAjB,CAA0D,IAAE,CAAgB,GAE9E,CAAA,CAAA,CAED,CAAA,KACL,EAAA,MAAC,MAAD,CAAK,UAAU,oDAAf,CACG,EAAM,OAAS,MACd,EAAA,KAAC,OAAD,CACE,KAAK,SACL,SAAU,EAAW,GAAK,EAC1B,QAAU,GAAM,CACd,EAAE,gBAAgB,EACb,GAAU,EAAQ,CAAC,CAC1B,EACA,UAAY,GAAM,EACZ,EAAE,MAAQ,SAAW,EAAE,MAAQ,OACjC,EAAE,eAAe,EACjB,EAAE,gBAAgB,EACb,GAAU,EAAQ,CAAQ,EAEnC,EACA,UAAU,gHACV,aAAW,wBAEX,EAAA,MAAC,MAAD,CAAK,MAAM,KAAK,OAAO,KAAK,QAAQ,YAAY,KAAK,OAAO,OAAO,eAAe,YAAY,IAAI,cAAc,iBAAhH,IACE,EAAA,KAAC,OAAD,CAAM,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,IAAM,CAAA,KAAC,EAAA,KAAC,OAAD,CAAM,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,IAAM,CAAA,CACxE,GACD,CAAA,KAER,EAAA,KAAC,MAAD,CACE,UAAW,EAAG,qEAAsE,GAAU,YAAY,EAC1G,QAAQ,YAAY,KAAK,OAAO,OAAO,eAAe,YAAY,MAAM,cAAc,QAAQ,eAAe,oBAE7G,EAAA,KAAC,WAAD,CAAU,OAAO,gBAAkB,CAAA,CAChC,CAAA,CACF,GACC,GAEZ,CACF,EAGA,EAAmB,YAAc,qBClbjC,IAAM,EAAc,EAEpB,SAAgB,GAAmB,CACjC,MAAA,EACA,SAAA,EACA,YAAA,EAAc,sBACd,SAAA,EACA,UAAA,EAAY,GACZ,WAAA,EAAa,GACb,SAAA,EAAW,GACX,UAAA,EACA,MAAA,CAAA,EAC2B,CAC3B,KAAM,CAAC,EAAM,CAAA,KAAA,EAAA,UAAoB,EAAK,EAChC,CAAC,EAAO,CAAA,KAAA,EAAA,UAAqB,EAAE,EAE/B,EAAQ,KAAA,EAAA,iBAAwB,CAAK,KAAA,EAAA,iBAAoB,EAEzD,EAAc,GAAgB,EAAM,KAAM,GAAM,EAAE,OAAS,EAAE,IAAI,EAEjE,EAAU,GAAsB,CACpC,GAAI,EAAW,CAAO,EACpB,EAAS,EAAM,OAAQ,GAAM,EAAE,OAAS,EAAQ,IAAI,CAAC,MAChD,CACL,GAAI,IAAa,QAAa,EAAM,QAAU,EAAU,OACxD,EAAS,CAAC,GAAG,EAAO,CAAO,CAAC,CAC9B,CACF,EAEM,EAAA,CAAU,EAAmB,IAAwB,CACzD,EAAE,gBAAgB,EAClB,EAAS,EAAM,OAAQ,GAAM,EAAE,OAAS,EAAQ,IAAI,CAAC,CACvD,EAEM,EAAY,GAAwB,CACxC,EAAE,gBAAgB,EAClB,EAAS,CAAC,CAAC,CACb,EAEqB,OAAA,EAAM,MAAM,EAAG,CAAW,EAC9B,EAAM,OAAS,KAG9B,EAAA,MAAC,EAAD,CACS,MAAA,EACI,UAAA,EACL,KAAA,EACN,aAAc,EACd,WACE,EAAA,KAAC,EAAD,CACS,MAAA,EACP,SAAU,EACV,QAAS,EACT,OAAQ,EACK,YAAA,EACH,SAAA,EACV,WAAa,MACX,EAAA,MAAA,EAAA,SAAA,CAAA,SAAA,CACG,MAAa,EAAA,KAAC,EAAD,CAAM,KAAM,EAAE,KAAM,KAAM,EAAE,KAAM,QAAS,EAAE,QAAW,CAAA,KACtE,EAAA,KAAC,OAAD,CAAM,UAAU,iCAAyB,EAAE,IAAW,CAAA,CACtD,CAAA,CAAA,CAEL,CAAA,WAnBL,IAsBE,EAAA,MAAC,EAAD,CAAA,SAAA,CACG,MACC,EAAA,KAAC,EAAD,CAAc,YAAY,sBAAsB,MAAO,EAAO,cAAe,CAAW,CAAA,KAE1F,EAAA,MAAC,EAAD,CAAA,SAAA,CACG,EAAM,SAAW,MAChB,EAAA,MAAC,EAAD,CAAA,SAAA,IACE,EAAA,KAAC,OAAD,CAAM,UAAU,+BAAsB,IAAQ,CAAA,KAAC,EAAA,KAAC,OAAD,CAAA,SAAM,oBAAwB,CAAA,CACjE,CAAA,CAAA,EAEf,EAAM,IAAK,GAAY,CACtB,MAAM,EAAW,EAAW,CAAO,EACnC,SACE,EAAA,MAAC,EAAD,CAEE,SAAA,IAAgB,EAAO,CAAO,EACpB,SAAA,WAHZ,IAME,EAAA,KAAC,MAAD,CAAK,UAAW,EACd,sFACA,GAAY,2BACd,WACG,MACC,EAAA,KAAC,MAAD,CAAK,UAAU,2BAA2B,QAAQ,YAAY,KAAK,OAAO,YAAY,IAAI,cAAc,QAAQ,eAAe,oBAC7H,EAAA,KAAC,WAAD,CAAU,OAAO,gBAAkB,CAAA,CAChC,CAAA,CAEJ,CAAA,EACJ,MAAa,EAAA,KAAC,EAAD,CAAM,KAAM,EAAQ,KAAM,KAAM,EAAQ,KAAM,QAAS,EAAQ,QAAW,CAAA,KACxF,EAAA,MAAC,MAAD,CAAK,UAAU,wCAAf,IACE,EAAA,KAAC,OAAD,CAAM,UAAU,gCAAwB,EAAQ,IAAW,CAAA,KAC3D,EAAA,MAAC,OAAD,CAAM,UAAU,+CAAhB,CAAuD,EAAQ,KAAK,OAAK,EAAQ,UAAiB,GAC/F,GACM,GApBN,EAAQ,IAoBF,CAEjB,CAAC,CACU,CAAA,CAAA,CACF,CAAA,CAAA,EACZ,EAAM,OAAS,MACd,EAAA,MAAC,MAAD,CAAK,UAAU,4GAAf,IACE,EAAA,MAAC,OAAD,CAAA,SAAA,CAAO,EAAM,OAAO,YAAU,EAAW,MAAM,CAAA,GAAa,EAAS,CAAA,CAAA,KACrE,EAAA,KAAC,SAAD,CACE,KAAK,SACL,QAAA,IAAe,CAAE,EAAS,CAAC,CAAC,EAAG,EAAQ,EAAK,CAAG,EAC/C,UAAU,wDACX,WAEO,CAAA,CACL,GAEG,GAEhB,CCpHA,SAAgB,GAAc,CAC5B,MAAA,EACA,SAAA,EACA,YAAA,EAAc,sBACd,WAAA,EAAa,GACb,SAAA,EAAW,GACX,cAAA,EAAgB,GAChB,SAAA,EAAW,GACX,UAAA,EACA,MAAA,CAAA,EACsB,CACtB,KAAM,CAAC,EAAM,CAAA,KAAA,EAAA,UAAoB,EAAK,EAChC,CAAC,EAAO,CAAA,KAAA,EAAA,UAAqB,EAAE,EAE/B,EAAQ,KAAA,EAAA,iBAAwB,CAAK,KAAA,EAAA,iBAAoB,EAEzD,EAAgB,GAAiB,CACrC,MAAM,KAAA,EAAA,iBAA0B,EAAE,KAC/B,GAAM,EAAE,KAAK,YAAY,IAAM,EAAK,YAAY,CACnD,EACI,IACF,EAAS,CAAO,EAChB,EAAQ,EAAK,EACb,EAAS,EAAE,EAEf,EAEA,SACE,EAAA,KAAC,EAAD,CACS,MAAA,EACI,UAAA,EACL,KAAA,EACN,aAAc,EACd,WACE,EAAA,KAAC,EAAD,CACE,OAAQ,EACR,SAAU,CAAC,CAAC,EACC,YAAA,EACH,SAAA,WAET,MACC,EAAA,MAAA,EAAA,SAAA,CAAA,SAAA,CACG,MAAY,EAAA,KAAC,EAAD,CAAM,KAAM,EAAM,KAAM,KAAM,EAAM,KAAM,QAAS,EAAM,QAAW,CAAA,KACjF,EAAA,KAAC,OAAD,CAAM,UAAU,sCAA8B,EAAM,IAAW,CAAA,EAC9D,MAAiB,EAAA,MAAC,EAAD,CAAA,SAAA,CAAO,IAAE,EAAM,UAAkB,CAAA,CAAA,CACnD,CAAA,CAAA,CAES,CAAA,cAGjB,EAAA,MAAC,EAAD,CAAA,SAAA,CACG,MACC,EAAA,KAAC,EAAD,CACE,YAAY,oBACZ,MAAO,EACP,cAAe,CAChB,CAAA,KAEH,EAAA,MAAC,EAAD,CAAA,SAAA,CACG,EAAM,SAAW,MAChB,EAAA,MAAC,EAAD,CAAA,SAAA,IACE,EAAA,KAAC,OAAD,CAAM,UAAU,+BAAsB,IAAQ,CAAA,KAC9C,EAAA,KAAC,OAAD,CAAA,SAAM,oBAAwB,CAAA,CAClB,CAAA,CAAA,EAEf,EAAM,IAAK,GAAY,CACtB,MAAM,EAAa,GAAO,OAAS,EAAQ,KAC3C,SACE,EAAA,MAAC,EAAD,CAEE,SAAA,IAAgB,EAAa,EAAQ,IAAI,EACzC,SAAU,WAHZ,CAKG,MAAY,EAAA,KAAC,EAAD,CAAM,KAAM,EAAQ,KAAM,KAAM,EAAQ,KAAM,QAAS,EAAQ,QAAW,CAAA,KACvF,EAAA,MAAC,MAAD,CAAK,UAAU,8CAAf,IACE,EAAA,KAAC,OAAD,CAAM,UAAU,gCAAwB,EAAQ,IAAW,CAAA,KAC3D,EAAA,MAAC,OAAD,CAAM,UAAU,+CAAhB,CACG,EAAQ,KAAK,MAAI,EAAQ,aACtB,GACH,OACL,EAAA,MAAC,MAAD,CAAK,UAAU,sDAAf,CACG,MACC,EAAA,MAAC,OAAD,CAAM,UAAU,2FAAhB,CAAkG,IAC9F,EAAQ,UACN,IAEP,MAAc,EAAA,KAAC,EAAD,CAAY,CAAA,CACxB,GACM,GAnBN,EAAQ,IAmBF,CAEjB,CAAC,CACU,CAAA,CAAA,CACF,CAAA,CAAA,CACH,CAAA,CAEhB,CClGA,IAAM,EAAc,EAEpB,SAAgB,GAAoB,CAClC,MAAA,EACA,SAAA,EACA,YAAA,EAAc,uBACd,SAAA,EACA,WAAA,EAAa,GACb,WAAA,EAAa,GACb,SAAA,EAAW,GACX,UAAA,EACA,MAAA,CAAA,EAC4B,CAC5B,KAAM,CAAC,EAAM,CAAA,KAAA,EAAA,UAAoB,EAAK,EAChC,CAAC,EAAO,CAAA,KAAA,EAAA,UAAqB,EAAE,EAE/B,EAAQ,KAAA,EAAA,kBAAyB,CAAK,KAAA,EAAA,kBAAqB,EAC3D,EAAc,GAAiB,EAAM,KAAM,GAAM,EAAE,OAAS,EAAE,IAAI,EAElE,EAAU,GAAwB,CACtC,GAAI,EAAW,CAAQ,EACrB,EAAS,EAAM,OAAQ,GAAM,EAAE,OAAS,EAAS,IAAI,CAAC,MACjD,CACL,GAAI,IAAa,QAAa,EAAM,QAAU,EAAU,OACxD,EAAS,CAAC,GAAG,EAAO,CAAQ,CAAC,CAC/B,CACF,EAEM,EAAA,CAAU,EAAqB,IAAwB,CAC3D,EAAE,gBAAgB,EAClB,EAAS,EAAM,OAAQ,GAAM,EAAE,OAAS,EAAS,IAAI,CAAC,CACxD,EAEM,EAAY,GAAwB,CACxC,EAAE,gBAAgB,EAClB,EAAS,CAAC,CAAC,CACb,EAEqB,OAAA,EAAM,MAAM,EAAG,CAAW,EAC9B,EAAM,OAAS,KAG9B,EAAA,MAAC,EAAD,CACS,MAAA,EACI,UAAA,EACL,KAAA,EACN,aAAc,EACd,WACE,EAAA,KAAC,EAAD,CACS,MAAA,EACP,SAAU,EACV,QAAS,EACT,OAAQ,EACK,YAAA,EACH,SAAA,EACV,WAAa,MACX,EAAA,MAAA,EAAA,SAAA,CAAA,SAAA,CACG,MAAc,EAAA,KAAC,OAAD,CAAM,UAAU,qBAAa,EAAE,MAAa,CAAA,KAC3D,EAAA,KAAC,OAAD,CAAA,SAAO,EAAE,IAAW,CAAA,CACpB,CAAA,CAAA,CAEL,CAAA,WAnBL,IAsBE,EAAA,MAAC,EAAD,CAAA,SAAA,CACG,MACC,EAAA,KAAC,EAAD,CAAc,YAAY,uBAAuB,MAAO,EAAO,cAAe,CAAW,CAAA,KAE3F,EAAA,MAAC,EAAD,CAAA,SAAA,CACG,EAAM,SAAW,MAChB,EAAA,MAAC,EAAD,CAAA,SAAA,IACE,EAAA,KAAC,OAAD,CAAM,UAAU,+BAAsB,IAAQ,CAAA,KAAC,EAAA,KAAC,OAAD,CAAA,SAAM,qBAAyB,CAAA,CAClE,CAAA,CAAA,EAEf,EAAM,IAAK,GAAa,CACvB,MAAM,EAAW,EAAW,CAAQ,EACpC,SACE,EAAA,MAAC,EAAD,CAEE,SAAA,IAAgB,EAAO,CAAQ,EACrB,SAAA,WAHZ,IAKE,EAAA,KAAC,MAAD,CAAK,UAAW,EACd,sFACA,GAAY,2BACd,WACG,MACC,EAAA,KAAC,MAAD,CAAK,UAAU,2BAA2B,QAAQ,YAAY,KAAK,OAAO,YAAY,IAAI,cAAc,QAAQ,eAAe,oBAC7H,EAAA,KAAC,WAAD,CAAU,OAAO,gBAAkB,CAAA,CAChC,CAAA,CAEJ,CAAA,EACJ,MACC,EAAA,KAAC,OAAD,CAAM,UAAU,6DAAqD,EAAS,MAAa,CAAA,KAE7F,EAAA,MAAC,MAAD,CAAK,UAAU,wCAAf,IACE,EAAA,KAAC,OAAD,CAAM,UAAU,gCAAwB,EAAS,IAAW,CAAA,KAC5D,EAAA,KAAC,OAAD,CAAM,UAAU,+CAAuC,EAAS,IAAW,CAAA,CACxE,GACM,GArBN,EAAS,IAqBH,CAEjB,CAAC,CACU,CAAA,CAAA,CACF,CAAA,CAAA,EACZ,EAAM,OAAS,MACd,EAAA,MAAC,MAAD,CAAK,UAAU,4GAAf,IACE,EAAA,MAAC,OAAD,CAAA,SAAA,CAAO,EAAM,OAAO,YAAU,EAAW,MAAM,CAAA,GAAa,EAAS,CAAA,CAAA,KACrE,EAAA,KAAC,SAAD,CACE,KAAK,SACL,QAAA,IAAe,CAAE,EAAS,CAAC,CAAC,EAAG,EAAQ,EAAK,CAAG,EAC/C,UAAU,wDACX,WAEO,CAAA,CACL,GAEG,GAEhB,CCpHA,SAAgB,GAAe,CAC7B,MAAA,EACA,SAAA,EACA,YAAA,EAAc,uBACd,WAAA,EAAa,GACb,WAAA,EAAa,GACb,YAAA,EACA,WAAA,EAAa,GACb,SAAA,EAAW,GACX,UAAA,EACA,MAAA,CAAA,EACuB,CACvB,KAAM,CAAC,EAAM,CAAA,KAAA,EAAA,UAAoB,EAAK,EAChC,CAAC,EAAO,CAAA,KAAA,EAAA,UAAqB,EAAE,KAErC,EAAA,WAAA,IAAgB,CACd,GAAI,GAAe,GAAc,CAAC,EAAO,CACvC,MAAM,KAAA,EAAA,sBAAgC,CAAW,EAC7C,GACF,EAAS,CAAQ,CAErB,CACF,EAAG,CAAC,EAAa,EAAY,EAAO,CAAQ,CAAC,EAU7C,MAAM,EAAQ,KAAA,EAAA,kBAAyB,EAAO,CAAW,GARnD,IAAuB,CAC3B,GAAI,EAAa,CACf,MAAM,KAAA,EAAA,sBAAuC,CAAW,EACxD,OAAO,EAAkB,CAAC,CAAe,EAAI,CAAC,CAChD,CACA,SAAA,EAAA,kBAAwB,CAC1B,GAE4E,EAEtE,EAAgB,GAAiB,CACrC,MAAM,KAAA,EAAA,kBAA4B,EAAE,KACjC,GAAM,EAAE,KAAK,YAAY,IAAM,EAAK,YAAY,CACnD,EACI,IACF,EAAS,CAAQ,EACjB,EAAQ,EAAK,EACb,EAAS,EAAE,EAEf,EAEA,SACE,EAAA,KAAC,EAAD,CACS,MAAA,EACI,UAAA,EACL,KAAA,EACN,aAAc,EACd,WACE,EAAA,KAAC,EAAD,CACE,OAAQ,EACR,SAAU,CAAC,CAAC,EACC,YAAA,EACH,SAAA,WAET,MACC,EAAA,MAAA,EAAA,SAAA,CAAA,SAAA,CACG,MACC,EAAA,KAAC,OAAD,CAAM,UAAU,uEACb,EAAM,MACH,CAAA,KAER,EAAA,MAAC,OAAD,CAAM,UAAU,sCAAhB,CACG,EAAM,KAAK,MAAI,EAAM,IAClB,GACN,CAAA,CAAA,CAES,CAAA,cAGjB,EAAA,MAAC,EAAD,CAAA,SAAA,CACG,MACC,EAAA,KAAC,EAAD,CACE,YAAY,qBACZ,MAAO,EACP,cAAe,CAChB,CAAA,KAEH,EAAA,MAAC,EAAD,CAAA,SAAA,CACG,EAAM,SAAW,MAChB,EAAA,MAAC,EAAD,CAAA,SAAA,IACE,EAAA,KAAC,OAAD,CAAM,UAAU,+BAAsB,IAAQ,CAAA,KAC9C,EAAA,KAAC,OAAD,CAAA,SAAM,qBAAyB,CAAA,CACnB,CAAA,CAAA,EAEf,EAAM,IAAK,GAAa,CACvB,MAAM,EAAa,GAAO,OAAS,EAAS,KAC5C,SACE,EAAA,MAAC,EAAD,CAEE,SAAA,IAAgB,EAAa,EAAS,IAAI,EAC1C,SAAU,WAHZ,CAKG,MACC,EAAA,KAAC,OAAD,CAAM,UAAU,6DACb,EAAS,MACN,CAAA,KAER,EAAA,MAAC,MAAD,CAAK,UAAU,8CAAf,IACE,EAAA,KAAC,OAAD,CAAM,UAAU,gCAAwB,EAAS,IAAW,CAAA,KAC5D,EAAA,KAAC,OAAD,CAAM,UAAU,+CAAuC,EAAS,IAAW,CAAA,CACxE,IACJ,MAAc,EAAA,KAAC,EAAD,CAAW,UAAU,kBAAoB,CAAA,CAC7C,GAdN,EAAS,IAcH,CAEjB,CAAC,CACU,CAAA,CAAA,CACF,CAAA,CAAA,CACH,CAAA,CAEhB,CCjHA,SAAgB,GAAe,CAC7B,YAAA,EACA,MAAA,EACA,SAAA,EACA,YAAA,EAAc,uBACd,WAAA,EAAa,GACb,SAAA,EAAW,GACX,UAAA,EACA,MAAA,CAAA,EACuB,CACvB,KAAM,CAAC,EAAM,CAAA,KAAA,EAAA,UAAoB,EAAK,EAChC,CAAC,EAAO,CAAA,KAAA,EAAA,UAAqB,EAAE,EAE/B,KAAA,EAAA,uBAAqC,CAAW,EAChD,EAAQ,EACV,EAAa,OACV,GACC,EAAE,KAAK,YAAY,EAAE,SAAS,EAAM,YAAY,CAAC,GACjD,EAAE,KAAK,YAAY,EAAE,SAAS,EAAM,YAAY,CAAC,GACjD,EAAE,SAAS,YAAY,EAAE,SAAS,EAAM,YAAY,CAAC,CACzD,EACA,EAEE,EAAa,GAAY,CAAC,GAAe,EAAa,SAAW,EAEjE,EAAgB,GAAiB,CACrC,MAAM,EAAW,EAAa,KAAM,GAAM,EAAE,OAAS,CAAI,EACrD,IACF,EAAS,CAAQ,EACjB,EAAQ,EAAK,EACb,EAAS,EAAE,EAEf,EAEA,SACE,EAAA,KAAC,EAAD,CACS,MAAA,EACI,UAAA,EACL,KAAA,EACN,aAAe,GAAM,CAAC,GAAc,EAAQ,CAAC,EAC7C,WACE,EAAA,KAAC,EAAD,CACE,OAAQ,EACR,SAAU,CAAC,CAAC,EACZ,YACG,EAEG,EADA,yBAGN,SAAU,WAET,MACC,EAAA,MAAA,EAAA,SAAA,CAAA,SAAA,IACE,EAAA,KAAC,OAAD,CAAM,UAAU,sCAA8B,EAAM,IAAW,CAAA,KAC/D,EAAA,KAAC,EAAD,CAAA,SAAQ,EAAM,IAAY,CAAA,CAC1B,CAAA,CAAA,CAES,CAAA,cAGjB,EAAA,MAAC,EAAD,CAAA,SAAA,CACG,MACC,EAAA,KAAC,EAAD,CACE,YAAY,qBACZ,MAAO,EACP,cAAe,CAChB,CAAA,KAEH,EAAA,MAAC,EAAD,CAAA,SAAA,CACG,EAAM,SAAW,MAChB,EAAA,MAAC,EAAD,CAAA,SAAA,IACE,EAAA,KAAC,OAAD,CAAM,UAAU,+BAAsB,KAAS,CAAA,KAC/C,EAAA,KAAC,OAAD,CAAA,SAAM,oBAAwB,CAAA,CAClB,CAAA,CAAA,EAEf,EAAM,IAAK,GAAa,CACvB,MAAM,EACJ,GAAO,OAAS,EAAS,MAAQ,GAAO,OAAS,EAAS,KAC5D,SACE,EAAA,MAAC,EAAD,CAEE,SAAA,IAAgB,EAAa,EAAS,IAAI,EAC1C,SAAU,WAHZ,IAKE,EAAA,MAAC,MAAD,CAAK,UAAU,8CAAf,IACE,EAAA,KAAC,OAAD,CAAM,UAAU,gCAAwB,EAAS,IAAW,CAAA,KAC5D,EAAA,KAAC,OAAD,CAAM,UAAU,wDACb,EAAS,QACN,CAAA,CACH,OACL,EAAA,MAAC,MAAD,CAAK,UAAU,sDAAf,IACE,EAAA,KAAC,EAAD,CAAA,SAAQ,EAAS,IAAY,CAAA,EAC5B,MAAc,EAAA,KAAC,EAAD,CAAY,CAAA,CACxB,GACM,GAdN,GAAG,EAAS,IAAA,IAAQ,EAAS,IAAA,EAcvB,CAEjB,CAAC,CACU,CAAA,CAAA,CACF,CAAA,CAAA,CACH,CAAA,CAEhB,CCrGA,SAAgB,GAAe,CAC7B,MAAA,EACA,SAAA,EACA,YAAA,EAAc,uBACd,WAAA,EAAa,GACb,eAAA,EAAiB,GACjB,SAAA,EAAW,GACX,UAAA,EACA,MAAA,CAAA,EACuB,CACvB,KAAM,CAAC,EAAM,CAAA,KAAA,EAAA,UAAoB,EAAK,EAChC,CAAC,EAAO,CAAA,KAAA,EAAA,UAAqB,EAAE,EAE/B,EAAQ,KAAA,EAAA,iBAAwB,CAAK,KAAA,EAAA,iBAAoB,EAEzD,EAAgB,GAAiB,CACrC,MAAM,KAAA,EAAA,iBAAuB,EAAE,KAC5B,GAAM,EAAE,KAAK,YAAY,IAAM,EAAK,YAAY,CACnD,EACI,IACF,EAAS,CAAI,EACb,EAAQ,EAAK,EACb,EAAS,EAAE,EAEf,EAEA,SACE,EAAA,KAAC,EAAD,CACS,MAAA,EACI,UAAA,EACL,KAAA,EACN,aAAc,EACd,WACE,EAAA,KAAC,EAAD,CACE,OAAQ,EACR,SAAU,CAAC,CAAC,EACC,YAAA,EACH,SAAA,WAET,MACC,EAAA,MAAA,EAAA,SAAA,CAAA,SAAA,IACE,EAAA,KAAC,OAAD,CAAM,UAAU,sCAA8B,EAAM,YAAmB,CAAA,EACtE,GAAkB,EAAM,cAAgB,EAAM,iBAC7C,EAAA,KAAC,OAAD,CAAM,UAAU,yDACb,EAAM,WACH,CAAA,CAER,CAAA,CAAA,CAES,CAAA,cAGjB,EAAA,MAAC,EAAD,CAAA,SAAA,CACG,MACC,EAAA,KAAC,EAAD,CACE,YAAY,qBACZ,MAAO,EACP,cAAe,CAChB,CAAA,KAEH,EAAA,MAAC,EAAD,CAAA,SAAA,CACG,EAAM,SAAW,MAChB,EAAA,MAAC,EAAD,CAAA,SAAA,IACE,EAAA,KAAC,OAAD,CAAM,UAAU,+BAAsB,IAAQ,CAAA,KAC9C,EAAA,KAAC,OAAD,CAAA,SAAM,oBAAwB,CAAA,CAClB,CAAA,CAAA,EAEf,EAAM,IAAK,GAAS,CACnB,MAAM,EAAa,GAAO,OAAS,EAAK,KACxC,SACE,EAAA,MAAC,EAAD,CAEE,SAAA,IAAgB,EAAa,EAAK,IAAI,EACtC,SAAU,WAHZ,IAKE,EAAA,MAAC,MAAD,CAAK,UAAU,8CAAf,IACE,EAAA,KAAC,OAAD,CAAM,UAAU,gCAAwB,EAAK,YAAmB,CAAA,EAC/D,GAAkB,EAAK,cAAgB,EAAK,iBAC3C,EAAA,KAAC,OAAD,CAAM,UAAU,sDACb,EAAK,WACF,CAAA,CAEL,OACL,EAAA,MAAC,MAAD,CAAK,UAAU,sDAAf,IACE,EAAA,KAAC,EAAD,CAAO,UAAU,yBAAiB,EAAK,IAAY,CAAA,EAClD,MAAc,EAAA,KAAC,EAAD,CAAY,CAAA,CACxB,GACM,GAhBN,EAAK,IAgBC,CAEjB,CAAC,CACU,CAAA,CAAA,CACF,CAAA,CAAA,CACH,CAAA,CAEhB,CCzFA,IAAa,EAAa,EAAA,QAAM,WAAA,CAE5B,CACE,MAAA,EACA,SAAA,EACA,mBAAA,EAAqB,KACrB,YAAA,EAAc,eACd,SAAA,EAAW,GACX,SAAA,EAAW,GACX,UAAA,EACA,MAAA,CAAA,EAEF,IACG,CACH,MAAM,KAAA,EAAA,eAAsB,EAAO,EAAU,CAAkB,EACzD,KAAA,EAAA,YAAyB,EAAM,SAAS,IAAI,EAElD,SACE,EAAA,MAAC,MAAD,CAAU,IAAA,EAAK,UAAW,EAAG,sBAAuB,CAAS,WAA7D,CACG,MAAS,EAAA,KAAC,EAAD,CAAA,SAAa,CAAkB,CAAA,KAEzC,EAAA,MAAC,MAAD,CACE,UAAW,EACT,8GACA,wEACA,oBACA,GAAY,gCACd,WANF,IASE,EAAA,MAAC,EAAD,CACE,KAAM,EAAM,OACZ,aAAe,GAAO,EAAI,EAAM,OAAO,EAAI,EAAM,MAAM,WAFzD,IAIE,EAAA,KAAC,EAAD,CAAgB,QAAA,eACd,EAAA,MAAC,SAAD,CACE,KAAK,SACK,SAAA,EACV,UAAW,EACT,gFACA,uEACA,+CACF,WAPF,CASG,GAAY,EAAM,YACjB,EAAA,KAAC,EAAD,CAAM,KAAM,EAAM,QAAQ,KAAM,KAAM,EAAM,QAAQ,KAAM,QAAS,EAAM,QAAQ,QAAW,CAAA,KAE9F,EAAA,KAAC,OAAD,CAAM,UAAU,qCACb,EAAM,QAAU,IAAI,EAAM,QAAQ,UAAA,GAAe,IAC9C,CAAA,KACN,EAAA,KAAC,MAAD,CACE,UAAW,EACT,+EACA,EAAM,QAAU,YAClB,EACA,QAAQ,YACR,KAAK,OACL,OAAO,eACP,YAAY,IACZ,cAAc,oBAEd,EAAA,KAAC,WAAD,CAAU,OAAO,gBAAkB,CAAA,CAChC,CAAA,CACC,GACM,CAAA,KAEhB,EAAA,KAAC,EAAD,CACE,MAAM,QACN,KAAK,SACL,WAAY,EACZ,UAAU,mBAEV,EAAA,MAAC,EAAD,CAAA,SAAA,IACE,EAAA,KAAC,EAAD,CACE,YAAY,4BACZ,MAAO,EAAM,YACb,cAAe,EAAM,cACtB,CAAA,KACD,EAAA,MAAC,EAAD,CAAA,SAAA,CACG,EAAM,kBAAkB,SAAW,MAClC,EAAA,MAAC,EAAD,CAAA,SAAA,IACE,EAAA,KAAC,OAAD,CAAM,UAAU,+BAAsB,IAAQ,CAAA,KAC9C,EAAA,KAAC,OAAD,CAAA,SAAM,oBAAwB,CAAA,CAClB,CAAA,CAAA,EAEf,EAAM,kBAAkB,IAAK,MAG1B,EAAA,MAAC,EAAD,CAEE,SAAA,IAAgB,EAAM,cAAc,CAAO,EAC3C,SALe,EAAM,SAAS,OAAS,EAAQ,cAEjD,IAKE,EAAA,KAAC,EAAD,CAAM,KAAM,EAAQ,KAAM,KAAM,EAAQ,KAAM,QAAS,EAAQ,QAAW,CAAA,KAC1E,EAAA,KAAC,MAAD,CAAK,UAAU,2CACb,EAAA,KAAC,OAAD,CAAM,UAAU,wCACb,EAAQ,IACL,CAAA,CACH,CAAA,KACL,EAAA,MAAC,EAAD,CAAO,UAAU,8CAAjB,CAAsD,IAClD,EAAQ,UACL,GACI,GAbN,EAAQ,IAaF,CAEhB,CACU,CAAA,CAAA,CACF,CAAA,CAAA,CACC,CAAA,CACT,OAGT,EAAA,KAAC,QAAD,CACE,KAAK,MACL,MAAO,EAAM,OACb,SAAW,GAAM,EAAM,UAAU,EAAE,OAAO,KAAK,EAClC,YAAA,EACH,SAAA,EACV,UAAW,EAAY,aAAa,IACpC,UAAW,EAAY,aAAa,IACpC,UAAU,UACV,aAAa,eACb,UAAW,EACT,6DACA,oCACA,oBACF,CACD,CAAA,CACE,IAGJ,EAAM,UACL,EAAA,MAAC,IAAD,CAAG,UAAU,mEAAb,CAAuE,QAC/D,OACN,EAAA,KAAC,OAAD,CAAM,UAAU,kCAA0B,EAAM,MAAM,IAAW,CAAA,CAChE,GAEF,GAET,CACF,EACA,EAAW,YAAc,aChJzB,SAAgB,GAAe,CAC7B,MAAA,EACA,SAAA,EACA,YAAA,EAAc,uBACd,WAAA,EAAa,GACb,YAAA,EACA,WAAA,EAAa,GACb,SAAA,EAAW,GACX,UAAA,EACA,MAAA,CAAA,EACuB,CACvB,KAAM,CAAC,EAAM,CAAA,KAAA,EAAA,UAAoB,EAAK,EAChC,CAAC,EAAO,CAAA,KAAA,EAAA,UAAqB,EAAE,KAErC,EAAA,WAAA,IAAgB,CACd,GAAI,GAAe,GAAc,CAAC,EAAO,CACvC,MAAM,KAAA,EAAA,uBAA4B,CAAW,EACzC,GAAO,EAAI,OAAS,GACtB,EAAS,EAAI,CAAA,CAAE,CAEnB,CACF,EAAG,CAAC,EAAa,EAAY,EAAO,CAAQ,CAAC,EAE7C,MAAM,EAAO,KAAA,EAAA,uBAAoC,CAAW,KAAA,EAAA,iBAAoB,EAC1E,EAAQ,KAAA,EAAA,iBAAwB,EAAO,CAAW,EAAI,EAEtD,EAAgB,GAAiB,CACrC,MAAM,EAAK,EAAK,KAAM,GAAM,EAAE,OAAS,CAAI,EACvC,IACF,EAAS,CAAE,EACX,EAAQ,EAAK,EACb,EAAS,EAAE,EAEf,EAEA,SACE,EAAA,KAAC,EAAD,CACS,MAAA,EACI,UAAA,EACL,KAAA,EACN,aAAc,EACd,WACE,EAAA,KAAC,EAAD,CACE,OAAQ,EACR,SAAU,CAAC,CAAC,EACC,YAAA,EACH,SAAA,WAET,MACC,EAAA,MAAA,EAAA,SAAA,CAAA,SAAA,IACE,EAAA,KAAC,OAAD,CAAM,UAAU,sCAA8B,EAAM,IAAW,CAAA,KAC/D,EAAA,KAAC,EAAD,CAAA,SAAQ,EAAM,WAAmB,CAAA,CACjC,CAAA,CAAA,CAES,CAAA,cAGjB,EAAA,MAAC,EAAD,CAAA,SAAA,CACG,MACC,EAAA,KAAC,EAAD,CACE,YAAY,qBACZ,MAAO,EACP,cAAe,CAChB,CAAA,KAEH,EAAA,MAAC,EAAD,CAAA,SAAA,CACG,EAAM,SAAW,MAChB,EAAA,MAAC,EAAD,CAAA,SAAA,IACE,EAAA,KAAC,OAAD,CAAM,UAAU,+BAAsB,IAAQ,CAAA,KAC9C,EAAA,KAAC,OAAD,CAAA,SAAM,oBAAwB,CAAA,CAClB,CAAA,CAAA,EAEf,EAAM,IAAK,GAAO,CACjB,MAAM,EAAa,GAAO,OAAS,EAAG,KACtC,SACE,EAAA,MAAC,EAAD,CAEE,SAAA,IAAgB,EAAa,EAAG,IAAI,EACpC,SAAU,WAHZ,IAKE,EAAA,MAAC,MAAD,CAAK,UAAU,8CAAf,IACE,EAAA,KAAC,OAAD,CAAM,UAAU,gCAAwB,EAAG,IAAW,CAAA,KACtD,EAAA,MAAC,OAAD,CAAM,UAAU,+CAAhB,CACG,EAAG,OAAO,MAAI,EAAG,YACd,GACH,OACL,EAAA,MAAC,MAAD,CAAK,UAAU,sDAAf,IACE,EAAA,KAAC,EAAD,CAAO,UAAU,uCAA+B,EAAG,WAAmB,CAAA,EACrE,MAAc,EAAA,KAAC,EAAD,CAAY,CAAA,CACxB,GACM,GAdN,EAAG,IAcG,CAEjB,CAAC,CACU,CAAA,CAAA,CACF,CAAA,CAAA,CACH,CAAA,CAEhB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../src/lib/utils.ts","../src/components/primitives.tsx","../src/components/CountryMultiSelect.tsx","../src/components/CountryPicker.tsx","../src/components/CurrencyMultiSelect.tsx","../src/components/CurrencyPicker.tsx","../src/components/DivisionPicker.tsx","../src/components/LanguagePicker.tsx","../src/components/PhoneInput.tsx","../src/components/TimezonePicker.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 \n export const Flag = ({ \n iso2, \n flag, \n flagUrl, \n className \n }: { \n iso2: string; \n flag: string; \n flagUrl: string; \n className?: string; \n }) => {\n return (\n <span className={cn('inline-flex items-center justify-center shrink-0 overflow-hidden', className)}>\n {/* Use img as fallback for Windows where emoji flags often fail */}\n <img \n src={flagUrl} \n alt={iso2} \n className=\"h-[1em] w-[1.5em] object-cover rounded-[1px] shadow-[0_0_0_1px_rgba(0,0,0,0.05)]\"\n onError={(e) => {\n // Fallback to emoji if image fails\n (e.target as HTMLImageElement).style.display = 'none';\n if ((e.target as HTMLElement).parentElement) {\n const span = document.createElement('span');\n span.textContent = flag;\n ((e.target as HTMLElement).parentElement!).appendChild(span);\n }\n }}\n />\n </span>\n );\n };\n Flag.displayName = 'Flag';\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 BasePicker,\n MultiSelectTrigger,\n Flag,\n} from './primitives';\nimport { cn } from '../lib/utils';\nimport type { ICountryMultiSelectProps, ICountry } from 'react-country-kit-core';\nimport { getAllCountries, searchCountries } from 'react-country-kit-core';\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}: ICountryMultiSelectProps) {\n const [open, setOpen] = useState(false);\n const [query, setQuery] = useState('');\n\n const items = query ? searchCountries(query) : getAllCountries();\n\n const isSelected = (c: ICountry) => value.some((s) => s.iso2 === c.iso2);\n\n const toggle = (country: ICountry) => {\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: ICountry, 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 && <Flag iso2={c.iso2} flag={c.flag} flagUrl={c.flag_url} />}\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 && <Flag iso2={country.iso2} flag={country.flag} flagUrl={country.flag_url} />}\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 PickerTrigger,\n CheckIcon,\n Badge,\n BasePicker,\n Flag,\n} from './primitives';\nimport { cn } from '../lib/utils';\nimport type { ICountryPickerProps } from 'react-country-kit-core';\nimport { getAllCountries, searchCountries } from 'react-country-kit-core';\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}: ICountryPickerProps) {\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 && <Flag iso2={value.iso2} flag={value.flag} flagUrl={value.flag_url} />}\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 && <Flag iso2={country.iso2} flag={country.flag} flagUrl={country.flag_url} />}\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 } 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 { ICurrencyMultiSelectProps, ICurrency } from 'react-country-kit-core';\nimport { getAllCurrencies, searchCurrencies } from 'react-country-kit-core';\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}: ICurrencyMultiSelectProps) {\n const [open, setOpen] = useState(false);\n const [query, setQuery] = useState('');\n\n const items = query ? searchCurrencies(query) : getAllCurrencies();\n const isSelected = (c: ICurrency) => value.some((s) => s.code === c.code);\n\n const toggle = (currency: ICurrency) => {\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: ICurrency, 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","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 { ICurrencyPickerProps } from 'react-country-kit-core';\nimport { getAllCurrencies, searchCurrencies } from 'react-country-kit-core';\nimport { getCurrencyByCountry } from 'react-country-kit-core';\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}: ICurrencyPickerProps) {\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 } 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 { IDivisionPickerProps } from 'react-country-kit-core';\nimport { getDivisionsByCountry } from 'react-country-kit-core';\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}: IDivisionPickerProps) {\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, { 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 { ILanguagePickerProps } from 'react-country-kit-core';\nimport { getAllLanguages, searchLanguages } from 'react-country-kit-core';\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}: ILanguagePickerProps) {\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 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 Flag,\n} from './primitives';\nimport { cn } from '../lib/utils';\nimport type { IPhoneInputProps } from 'react-country-kit-core';\nimport { usePhoneInput, useCountry } from 'react-country-kit-core';\n\nexport const PhoneInput = React.forwardRef<HTMLDivElement, IPhoneInputProps>(\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 const countryData = useCountry(phone.country?.iso2);\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 <Flag iso2={phone.country.iso2} flag={phone.country.flag} flagUrl={phone.country.flag_url} />\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 <Flag iso2={country.iso2} flag={country.flag} flagUrl={country.flag_url} />\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={countryData.phoneLengths.min}\n maxLength={countryData.phoneLengths.max}\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, 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 { ITimezonePickerProps } from 'react-country-kit-core';\nimport { getAllTimezones, searchTimezones } from 'react-country-kit-core';\nimport { getTimezonesByCountry } from 'react-country-kit-core';\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}: ITimezonePickerProps) {\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"],"mappings":"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"}
|