@open-mercato/ui 0.6.7-develop.6661.1.0043ed1d03 → 0.6.7-develop.6670.1.4efa7961c6

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.
@@ -0,0 +1,65 @@
1
+ "use client";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { FieldRegistry } from "./registry.js";
4
+ import { PhoneNumberField, PHONE_COUNTRIES } from "../inputs/PhoneNumberField.js";
5
+ import { useT } from "@open-mercato/shared/lib/i18n/context";
6
+ import {
7
+ Select,
8
+ SelectContent,
9
+ SelectItem,
10
+ SelectItemLeading,
11
+ SelectTrigger,
12
+ SelectValue
13
+ } from "../../primitives/select.js";
14
+ const AUTO_COUNTRY_VALUE = "__om_phone_auto__";
15
+ function PhoneFieldInput({ id, value, setValue, disabled, error, def }) {
16
+ const stringValue = typeof value === "string" ? value : value == null ? "" : String(value);
17
+ return /* @__PURE__ */ jsx(
18
+ PhoneNumberField,
19
+ {
20
+ id,
21
+ value: stringValue,
22
+ onValueChange: (next) => setValue(next ?? void 0),
23
+ disabled,
24
+ externalError: error ?? null,
25
+ defaultCountryIso2: def?.defaultCountryIso2
26
+ }
27
+ );
28
+ }
29
+ function PhoneFieldDefEditor({
30
+ def,
31
+ onChange
32
+ }) {
33
+ const t = useT();
34
+ const selected = typeof def?.configJson?.defaultCountryIso2 === "string" ? def.configJson.defaultCountryIso2 : "";
35
+ return /* @__PURE__ */ jsx("div", { className: "mt-3 space-y-3 rounded border border-dashed border-muted-foreground/40 bg-muted/30 p-3", children: /* @__PURE__ */ jsxs("div", { className: "space-y-1", children: [
36
+ /* @__PURE__ */ jsx("label", { className: "text-xs font-medium text-muted-foreground", children: t("ui.customFields.phone.defaultCountry", "Default country") }),
37
+ /* @__PURE__ */ jsxs(
38
+ Select,
39
+ {
40
+ value: selected || AUTO_COUNTRY_VALUE,
41
+ onValueChange: (next) => onChange({ defaultCountryIso2: next === AUTO_COUNTRY_VALUE ? void 0 : next }),
42
+ children: [
43
+ /* @__PURE__ */ jsx(SelectTrigger, { size: "sm", children: /* @__PURE__ */ jsx(SelectValue, {}) }),
44
+ /* @__PURE__ */ jsxs(SelectContent, { align: "start", children: [
45
+ /* @__PURE__ */ jsx(SelectItem, { value: AUTO_COUNTRY_VALUE, children: t("ui.customFields.phone.defaultCountryAuto", "Auto-detect from value") }),
46
+ PHONE_COUNTRIES.map((country) => /* @__PURE__ */ jsxs(SelectItem, { value: country.iso2, children: [
47
+ /* @__PURE__ */ jsx(SelectItemLeading, { children: /* @__PURE__ */ jsx("span", { className: "text-base leading-none", children: country.flag }) }),
48
+ /* @__PURE__ */ jsx("span", { className: "flex-1 truncate", children: country.label }),
49
+ /* @__PURE__ */ jsx("span", { className: "ml-2 text-xs text-muted-foreground tabular-nums", children: country.dialCode })
50
+ ] }, `${country.iso2}-${country.dialCode}`))
51
+ ] })
52
+ ]
53
+ }
54
+ ),
55
+ /* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground", children: t(
56
+ "ui.customFields.phone.defaultCountryHint",
57
+ "Pre-selects a country in the phone editor when the field is empty."
58
+ ) })
59
+ ] }) });
60
+ }
61
+ FieldRegistry.register("phone", {
62
+ input: (props) => /* @__PURE__ */ jsx(PhoneFieldInput, { ...props }),
63
+ defEditor: (props) => /* @__PURE__ */ jsx(PhoneFieldDefEditor, { ...props })
64
+ });
65
+ //# sourceMappingURL=phone.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/backend/fields/phone.tsx"],
4
+ "sourcesContent": ["\"use client\"\n\nimport * as React from 'react'\nimport type { CrudCustomFieldRenderProps } from '../CrudForm'\nimport { FieldRegistry } from './registry'\nimport { PhoneNumberField, PHONE_COUNTRIES } from '../inputs/PhoneNumberField'\nimport { useT } from '@open-mercato/shared/lib/i18n/context'\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectItemLeading,\n SelectTrigger,\n SelectValue,\n} from '../../primitives/select'\n\ntype PhoneFieldConfig = {\n defaultCountryIso2?: string\n}\n\ntype PhoneFieldDef = PhoneFieldConfig & {\n configJson?: PhoneFieldConfig\n}\n\ntype PhoneFieldInputProps = CrudCustomFieldRenderProps & { def?: PhoneFieldDef }\n\n// Sentinel used by the definition editor to represent \"no fixed default\"\n// because Radix Select cannot use an empty string as an item value.\nconst AUTO_COUNTRY_VALUE = '__om_phone_auto__'\n\nfunction PhoneFieldInput({ id, value, setValue, disabled, error, def }: PhoneFieldInputProps) {\n const stringValue = typeof value === 'string' ? value : value == null ? '' : String(value)\n return (\n <PhoneNumberField\n id={id}\n value={stringValue}\n onValueChange={(next) => setValue(next ?? undefined)}\n disabled={disabled}\n externalError={error ?? null}\n defaultCountryIso2={def?.defaultCountryIso2}\n />\n )\n}\n\nfunction PhoneFieldDefEditor({\n def,\n onChange,\n}: {\n def: { configJson?: PhoneFieldConfig } | undefined\n onChange: (patch: Partial<PhoneFieldConfig>) => void\n}) {\n const t = useT()\n const selected = typeof def?.configJson?.defaultCountryIso2 === 'string' ? def.configJson.defaultCountryIso2 : ''\n return (\n <div className=\"mt-3 space-y-3 rounded border border-dashed border-muted-foreground/40 bg-muted/30 p-3\">\n <div className=\"space-y-1\">\n <label className=\"text-xs font-medium text-muted-foreground\">\n {t('ui.customFields.phone.defaultCountry', 'Default country')}\n </label>\n <Select\n value={selected || AUTO_COUNTRY_VALUE}\n onValueChange={(next) => onChange({ defaultCountryIso2: next === AUTO_COUNTRY_VALUE ? undefined : next })}\n >\n <SelectTrigger size=\"sm\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent align=\"start\">\n <SelectItem value={AUTO_COUNTRY_VALUE}>\n {t('ui.customFields.phone.defaultCountryAuto', 'Auto-detect from value')}\n </SelectItem>\n {PHONE_COUNTRIES.map((country) => (\n <SelectItem key={`${country.iso2}-${country.dialCode}`} value={country.iso2}>\n <SelectItemLeading>\n <span className=\"text-base leading-none\">{country.flag}</span>\n </SelectItemLeading>\n <span className=\"flex-1 truncate\">{country.label}</span>\n <span className=\"ml-2 text-xs text-muted-foreground tabular-nums\">{country.dialCode}</span>\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n <p className=\"text-xs text-muted-foreground\">\n {t(\n 'ui.customFields.phone.defaultCountryHint',\n 'Pre-selects a country in the phone editor when the field is empty.',\n )}\n </p>\n </div>\n </div>\n )\n}\n\nFieldRegistry.register('phone', {\n input: (props) => <PhoneFieldInput {...props} />,\n defEditor: (props) => <PhoneFieldDefEditor {...props} />,\n})\n\nexport {}\n"],
5
+ "mappings": ";AAiCI,cAsCU,YAtCV;AA7BJ,SAAS,qBAAqB;AAC9B,SAAS,kBAAkB,uBAAuB;AAClD,SAAS,YAAY;AACrB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAcP,MAAM,qBAAqB;AAE3B,SAAS,gBAAgB,EAAE,IAAI,OAAO,UAAU,UAAU,OAAO,IAAI,GAAyB;AAC5F,QAAM,cAAc,OAAO,UAAU,WAAW,QAAQ,SAAS,OAAO,KAAK,OAAO,KAAK;AACzF,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,OAAO;AAAA,MACP,eAAe,CAAC,SAAS,SAAS,QAAQ,MAAS;AAAA,MACnD;AAAA,MACA,eAAe,SAAS;AAAA,MACxB,oBAAoB,KAAK;AAAA;AAAA,EAC3B;AAEJ;AAEA,SAAS,oBAAoB;AAAA,EAC3B;AAAA,EACA;AACF,GAGG;AACD,QAAM,IAAI,KAAK;AACf,QAAM,WAAW,OAAO,KAAK,YAAY,uBAAuB,WAAW,IAAI,WAAW,qBAAqB;AAC/G,SACE,oBAAC,SAAI,WAAU,0FACb,+BAAC,SAAI,WAAU,aACb;AAAA,wBAAC,WAAM,WAAU,6CACd,YAAE,wCAAwC,iBAAiB,GAC9D;AAAA,IACA;AAAA,MAAC;AAAA;AAAA,QACC,OAAO,YAAY;AAAA,QACnB,eAAe,CAAC,SAAS,SAAS,EAAE,oBAAoB,SAAS,qBAAqB,SAAY,KAAK,CAAC;AAAA,QAExG;AAAA,8BAAC,iBAAc,MAAK,MAClB,8BAAC,eAAY,GACf;AAAA,UACA,qBAAC,iBAAc,OAAM,SACnB;AAAA,gCAAC,cAAW,OAAO,oBAChB,YAAE,4CAA4C,wBAAwB,GACzE;AAAA,YACC,gBAAgB,IAAI,CAAC,YACpB,qBAAC,cAAuD,OAAO,QAAQ,MACrE;AAAA,kCAAC,qBACC,8BAAC,UAAK,WAAU,0BAA0B,kBAAQ,MAAK,GACzD;AAAA,cACA,oBAAC,UAAK,WAAU,mBAAmB,kBAAQ,OAAM;AAAA,cACjD,oBAAC,UAAK,WAAU,mDAAmD,kBAAQ,UAAS;AAAA,iBALrE,GAAG,QAAQ,IAAI,IAAI,QAAQ,QAAQ,EAMpD,CACD;AAAA,aACH;AAAA;AAAA;AAAA,IACF;AAAA,IACA,oBAAC,OAAE,WAAU,iCACV;AAAA,MACC;AAAA,MACA;AAAA,IACF,GACF;AAAA,KACF,GACF;AAEJ;AAEA,cAAc,SAAS,SAAS;AAAA,EAC9B,OAAO,CAAC,UAAU,oBAAC,mBAAiB,GAAG,OAAO;AAAA,EAC9C,WAAW,CAAC,UAAU,oBAAC,uBAAqB,GAAG,OAAO;AACxD,CAAC;",
6
+ "names": []
7
+ }
@@ -1,5 +1,6 @@
1
1
  import "@open-mercato/core/modules/attachments/fields/attachment";
2
2
  import "@open-mercato/core/modules/dictionaries/fields/dictionary";
3
+ import "./phone.js";
3
4
  function loadAll() {
4
5
  }
5
6
  export {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/backend/fields/registry.generated.ts"],
4
- "sourcesContent": ["// Auto-registered field components loaded at runtime.\n// This file can be regenerated by module generators. Keep imports side-effectful.\nimport '@open-mercato/core/modules/attachments/fields/attachment'\nimport '@open-mercato/core/modules/dictionaries/fields/dictionary'\n\nexport function loadAll() {\n // No-op: imports above perform registration via side effects\n}\n"],
5
- "mappings": "AAEA,OAAO;AACP,OAAO;AAEA,SAAS,UAAU;AAE1B;",
4
+ "sourcesContent": ["// Auto-registered field components loaded at runtime.\n// This file can be regenerated by module generators. Keep imports side-effectful.\nimport '@open-mercato/core/modules/attachments/fields/attachment'\nimport '@open-mercato/core/modules/dictionaries/fields/dictionary'\nimport './phone'\n\nexport function loadAll() {\n // No-op: imports above perform registration via side effects\n}\n"],
5
+ "mappings": "AAEA,OAAO;AACP,OAAO;AACP,OAAO;AAEA,SAAS,UAAU;AAE1B;",
6
6
  "names": []
7
7
  }
@@ -16,6 +16,7 @@ import {
16
16
  Book,
17
17
  Bookmark,
18
18
  Box,
19
+ Boxes,
19
20
  Briefcase,
20
21
  BriefcaseBusiness,
21
22
  Building,
@@ -79,12 +80,14 @@ import {
79
80
  Mail,
80
81
  MailOpen,
81
82
  MapPin,
83
+ MapPinned,
82
84
  MessageCircle,
83
85
  MinusCircle,
84
86
  Notebook,
85
87
  Package,
86
88
  PackageCheck,
87
89
  PackagePlus,
90
+ PackageSearch,
88
91
  PackageX,
89
92
  PauseCircle,
90
93
  Percent,
@@ -136,6 +139,7 @@ import {
136
139
  Users,
137
140
  UserX,
138
141
  Wallet,
142
+ Warehouse,
139
143
  Webhook,
140
144
  Workflow,
141
145
  Wrench,
@@ -159,6 +163,7 @@ const LUCIDE_ICON_REGISTRY = {
159
163
  "book": Book,
160
164
  "bookmark": Bookmark,
161
165
  "box": Box,
166
+ "boxes": Boxes,
162
167
  "briefcase": Briefcase,
163
168
  "briefcase-business": BriefcaseBusiness,
164
169
  "building": Building,
@@ -222,12 +227,14 @@ const LUCIDE_ICON_REGISTRY = {
222
227
  "mail": Mail,
223
228
  "mail-open": MailOpen,
224
229
  "map-pin": MapPin,
230
+ "map-pinned": MapPinned,
225
231
  "message-circle": MessageCircle,
226
232
  "minus-circle": MinusCircle,
227
233
  "notebook": Notebook,
228
234
  "package": Package,
229
235
  "package-check": PackageCheck,
230
236
  "package-plus": PackagePlus,
237
+ "package-search": PackageSearch,
231
238
  "package-x": PackageX,
232
239
  "pause-circle": PauseCircle,
233
240
  "percent": Percent,
@@ -279,6 +286,7 @@ const LUCIDE_ICON_REGISTRY = {
279
286
  "user-x": UserX,
280
287
  "users": Users,
281
288
  "wallet": Wallet,
289
+ "warehouse": Warehouse,
282
290
  "webhook": Webhook,
283
291
  "workflow": Workflow,
284
292
  "wrench": Wrench,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/backend/icons/lucideRegistry.generated.tsx"],
4
- "sourcesContent": ["/* eslint-disable */\n// AUTO-GENERATED by @open-mercato/ui build. Do not edit by hand.\n// Generated from discovered icon string usages across the repo.\n\nimport type * as React from 'react'\nimport type { LucideIcon } from 'lucide-react'\nimport {\n Activity,\n AlertCircle,\n AlertOctagon,\n AlertTriangle,\n Archive,\n Award,\n BadgeCheck,\n Ban,\n Banknote,\n BarChart2,\n BarChart3,\n Bell,\n Bolt,\n Book,\n Bookmark,\n Box,\n Briefcase,\n BriefcaseBusiness,\n Building,\n Building2,\n Calendar,\n CalendarCheck,\n CalendarClock,\n CalendarCog,\n CalendarMinus,\n CalendarOff,\n CalendarX,\n Check,\n CheckCircle,\n CheckCircle2,\n CheckSquare,\n Circle,\n ClipboardCheck,\n ClipboardList,\n Clock,\n Clock3,\n Coins,\n Copy,\n CreditCard,\n Crown,\n Database,\n DollarSign,\n Download,\n ExternalLink,\n Eye,\n FileMinus,\n FilePenLine,\n FileSpreadsheet,\n FileText,\n FilterX,\n Flag,\n Flame,\n FolderTree,\n Gauge,\n GitBranch,\n GitCompareArrows,\n GitPullRequestArrow,\n Globe,\n GraduationCap,\n Hand,\n Handshake,\n Headphones,\n Heart,\n HelpCircle,\n Hourglass,\n Inbox,\n Key,\n KeyRound,\n Layers,\n Lightbulb,\n LineChart,\n Link,\n List,\n Loader,\n Loader2,\n Lock,\n Mail,\n MailOpen,\n MapPin,\n MessageCircle,\n MinusCircle,\n Notebook,\n Package,\n PackageCheck,\n PackagePlus,\n PackageX,\n PauseCircle,\n Percent,\n Phone,\n PhoneCall,\n PieChart,\n PlusSquare,\n Receipt,\n ReceiptText,\n RefreshCcw,\n RefreshCw,\n Reply,\n RotateCcw,\n Ruler,\n Send,\n Settings,\n Shapes,\n Share2,\n Shield,\n ShieldAlert,\n ShieldCheck,\n ShoppingBag,\n ShoppingCart,\n Shuffle,\n Sliders,\n Smartphone,\n Snowflake,\n Sparkles,\n Star,\n StickyNote,\n Store,\n Tag,\n Target,\n ThumbsUp,\n Ticket,\n Timer,\n Trash2,\n TrendingUp,\n TriangleAlert,\n Trophy,\n Truck,\n Undo2,\n Unlock,\n User,\n UserCheck,\n UserMinus,\n UserPlus,\n UserRound,\n Users,\n UserX,\n Wallet,\n Webhook,\n Workflow,\n Wrench,\n X,\n XCircle,\n} from 'lucide-react'\n\nexport const LUCIDE_ICON_REGISTRY: Record<string, LucideIcon> = {\n 'activity': Activity,\n 'alert-circle': AlertCircle,\n 'alert-octagon': AlertOctagon,\n 'alert-triangle': AlertTriangle,\n 'archive': Archive,\n 'award': Award,\n 'badge-check': BadgeCheck,\n 'ban': Ban,\n 'banknote': Banknote,\n 'bar-chart-2': BarChart2,\n 'bar-chart-3': BarChart3,\n 'bell': Bell,\n 'bolt': Bolt,\n 'book': Book,\n 'bookmark': Bookmark,\n 'box': Box,\n 'briefcase': Briefcase,\n 'briefcase-business': BriefcaseBusiness,\n 'building': Building,\n 'building2': Building2,\n 'calendar': Calendar,\n 'calendar-check': CalendarCheck,\n 'calendar-clock': CalendarClock,\n 'calendar-cog': CalendarCog,\n 'calendar-minus': CalendarMinus,\n 'calendar-off': CalendarOff,\n 'calendar-x': CalendarX,\n 'check': Check,\n 'check-circle': CheckCircle,\n 'check-circle-2': CheckCircle2,\n 'check-square': CheckSquare,\n 'circle': Circle,\n 'clipboard-check': ClipboardCheck,\n 'clipboard-list': ClipboardList,\n 'clock': Clock,\n 'clock-3': Clock3,\n 'coins': Coins,\n 'copy': Copy,\n 'credit-card': CreditCard,\n 'crown': Crown,\n 'database': Database,\n 'dollar-sign': DollarSign,\n 'download': Download,\n 'external-link': ExternalLink,\n 'eye': Eye,\n 'file-minus': FileMinus,\n 'file-pen-line': FilePenLine,\n 'file-spreadsheet': FileSpreadsheet,\n 'file-text': FileText,\n 'filter-x': FilterX,\n 'flag': Flag,\n 'flame': Flame,\n 'folder-tree': FolderTree,\n 'gauge': Gauge,\n 'git-branch': GitBranch,\n 'git-compare-arrows': GitCompareArrows,\n 'git-pull-request-arrow': GitPullRequestArrow,\n 'globe': Globe,\n 'graduation-cap': GraduationCap,\n 'hand': Hand,\n 'handshake': Handshake,\n 'headphones': Headphones,\n 'heart': Heart,\n 'help-circle': HelpCircle,\n 'hourglass': Hourglass,\n 'inbox': Inbox,\n 'key': Key,\n 'key-round': KeyRound,\n 'layers': Layers,\n 'lightbulb': Lightbulb,\n 'line-chart': LineChart,\n 'link': Link,\n 'list': List,\n 'loader': Loader,\n 'loader-2': Loader2,\n 'lock': Lock,\n 'mail': Mail,\n 'mail-open': MailOpen,\n 'map-pin': MapPin,\n 'message-circle': MessageCircle,\n 'minus-circle': MinusCircle,\n 'notebook': Notebook,\n 'package': Package,\n 'package-check': PackageCheck,\n 'package-plus': PackagePlus,\n 'package-x': PackageX,\n 'pause-circle': PauseCircle,\n 'percent': Percent,\n 'phone': Phone,\n 'phone-call': PhoneCall,\n 'pie-chart': PieChart,\n 'plus-square': PlusSquare,\n 'receipt': Receipt,\n 'receipt-text': ReceiptText,\n 'refresh-ccw': RefreshCcw,\n 'refresh-cw': RefreshCw,\n 'reply': Reply,\n 'rotate-ccw': RotateCcw,\n 'ruler': Ruler,\n 'send': Send,\n 'settings': Settings,\n 'shapes': Shapes,\n 'share-2': Share2,\n 'shield': Shield,\n 'shield-alert': ShieldAlert,\n 'shield-check': ShieldCheck,\n 'shopping-bag': ShoppingBag,\n 'shopping-cart': ShoppingCart,\n 'shuffle': Shuffle,\n 'sliders': Sliders,\n 'smartphone': Smartphone,\n 'snowflake': Snowflake,\n 'sparkles': Sparkles,\n 'star': Star,\n 'sticky-note': StickyNote,\n 'store': Store,\n 'tag': Tag,\n 'target': Target,\n 'thumbs-up': ThumbsUp,\n 'ticket': Ticket,\n 'timer': Timer,\n 'trash-2': Trash2,\n 'trending-up': TrendingUp,\n 'triangle-alert': TriangleAlert,\n 'trophy': Trophy,\n 'truck': Truck,\n 'undo-2': Undo2,\n 'unlock': Unlock,\n 'user': User,\n 'user-check': UserCheck,\n 'user-minus': UserMinus,\n 'user-plus': UserPlus,\n 'user-round': UserRound,\n 'user-x': UserX,\n 'users': Users,\n 'wallet': Wallet,\n 'webhook': Webhook,\n 'workflow': Workflow,\n 'wrench': Wrench,\n 'x': X,\n 'x-circle': XCircle,\n}\n\nfunction normalizeKebabIconName(input: string): string {\n const trimmed = input.trim()\n if (!trimmed) return ''\n const withoutPrefix = trimmed.startsWith('lucide:') ? trimmed.slice('lucide:'.length) : trimmed\n if (!withoutPrefix) return ''\n if (!withoutPrefix.includes('-') && !withoutPrefix.includes('_') && !withoutPrefix.includes(' ') && /[A-Z]/.test(withoutPrefix)) {\n return withoutPrefix\n .replace(/([a-z0-9])([A-Z])/g, '$1-$2')\n .replace(/([A-Z])([A-Z][a-z])/g, '$1-$2')\n .toLowerCase()\n }\n return withoutPrefix\n .replace(/[_\\s]+/g, '-')\n .replace(/-+/g, '-')\n .toLowerCase()\n}\n\nexport function resolveRegisteredLucideIcon(name: string | undefined): LucideIcon | null {\n if (!name) return null\n const normalized = normalizeKebabIconName(name)\n if (!normalized) return null\n return (LUCIDE_ICON_REGISTRY as Record<string, LucideIcon | undefined>)[normalized] ?? null\n}\n\nexport function resolveRegisteredLucideIconNode(\n name: string | undefined,\n className: string\n): React.ReactNode | null {\n const Icon = resolveRegisteredLucideIcon(name)\n if (!Icon) return null\n return <Icon className={className} />\n}\n"],
5
- "mappings": "AAoUS;AA9TT;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAC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",
4
+ "sourcesContent": ["/* eslint-disable */\n// AUTO-GENERATED by @open-mercato/ui build. Do not edit by hand.\n// Generated from discovered icon string usages across the repo.\n\nimport type * as React from 'react'\nimport type { LucideIcon } from 'lucide-react'\nimport {\n Activity,\n AlertCircle,\n AlertOctagon,\n AlertTriangle,\n Archive,\n Award,\n BadgeCheck,\n Ban,\n Banknote,\n BarChart2,\n BarChart3,\n Bell,\n Bolt,\n Book,\n Bookmark,\n Box,\n Boxes,\n Briefcase,\n BriefcaseBusiness,\n Building,\n Building2,\n Calendar,\n CalendarCheck,\n CalendarClock,\n CalendarCog,\n CalendarMinus,\n CalendarOff,\n CalendarX,\n Check,\n CheckCircle,\n CheckCircle2,\n CheckSquare,\n Circle,\n ClipboardCheck,\n ClipboardList,\n Clock,\n Clock3,\n Coins,\n Copy,\n CreditCard,\n Crown,\n Database,\n DollarSign,\n Download,\n ExternalLink,\n Eye,\n FileMinus,\n FilePenLine,\n FileSpreadsheet,\n FileText,\n FilterX,\n Flag,\n Flame,\n FolderTree,\n Gauge,\n GitBranch,\n GitCompareArrows,\n GitPullRequestArrow,\n Globe,\n GraduationCap,\n Hand,\n Handshake,\n Headphones,\n Heart,\n HelpCircle,\n Hourglass,\n Inbox,\n Key,\n KeyRound,\n Layers,\n Lightbulb,\n LineChart,\n Link,\n List,\n Loader,\n Loader2,\n Lock,\n Mail,\n MailOpen,\n MapPin,\n MapPinned,\n MessageCircle,\n MinusCircle,\n Notebook,\n Package,\n PackageCheck,\n PackagePlus,\n PackageSearch,\n PackageX,\n PauseCircle,\n Percent,\n Phone,\n PhoneCall,\n PieChart,\n PlusSquare,\n Receipt,\n ReceiptText,\n RefreshCcw,\n RefreshCw,\n Reply,\n RotateCcw,\n Ruler,\n Send,\n Settings,\n Shapes,\n Share2,\n Shield,\n ShieldAlert,\n ShieldCheck,\n ShoppingBag,\n ShoppingCart,\n Shuffle,\n Sliders,\n Smartphone,\n Snowflake,\n Sparkles,\n Star,\n StickyNote,\n Store,\n Tag,\n Target,\n ThumbsUp,\n Ticket,\n Timer,\n Trash2,\n TrendingUp,\n TriangleAlert,\n Trophy,\n Truck,\n Undo2,\n Unlock,\n User,\n UserCheck,\n UserMinus,\n UserPlus,\n UserRound,\n Users,\n UserX,\n Wallet,\n Warehouse,\n Webhook,\n Workflow,\n Wrench,\n X,\n XCircle,\n} from 'lucide-react'\n\nexport const LUCIDE_ICON_REGISTRY: Record<string, LucideIcon> = {\n 'activity': Activity,\n 'alert-circle': AlertCircle,\n 'alert-octagon': AlertOctagon,\n 'alert-triangle': AlertTriangle,\n 'archive': Archive,\n 'award': Award,\n 'badge-check': BadgeCheck,\n 'ban': Ban,\n 'banknote': Banknote,\n 'bar-chart-2': BarChart2,\n 'bar-chart-3': BarChart3,\n 'bell': Bell,\n 'bolt': Bolt,\n 'book': Book,\n 'bookmark': Bookmark,\n 'box': Box,\n 'boxes': Boxes,\n 'briefcase': Briefcase,\n 'briefcase-business': BriefcaseBusiness,\n 'building': Building,\n 'building2': Building2,\n 'calendar': Calendar,\n 'calendar-check': CalendarCheck,\n 'calendar-clock': CalendarClock,\n 'calendar-cog': CalendarCog,\n 'calendar-minus': CalendarMinus,\n 'calendar-off': CalendarOff,\n 'calendar-x': CalendarX,\n 'check': Check,\n 'check-circle': CheckCircle,\n 'check-circle-2': CheckCircle2,\n 'check-square': CheckSquare,\n 'circle': Circle,\n 'clipboard-check': ClipboardCheck,\n 'clipboard-list': ClipboardList,\n 'clock': Clock,\n 'clock-3': Clock3,\n 'coins': Coins,\n 'copy': Copy,\n 'credit-card': CreditCard,\n 'crown': Crown,\n 'database': Database,\n 'dollar-sign': DollarSign,\n 'download': Download,\n 'external-link': ExternalLink,\n 'eye': Eye,\n 'file-minus': FileMinus,\n 'file-pen-line': FilePenLine,\n 'file-spreadsheet': FileSpreadsheet,\n 'file-text': FileText,\n 'filter-x': FilterX,\n 'flag': Flag,\n 'flame': Flame,\n 'folder-tree': FolderTree,\n 'gauge': Gauge,\n 'git-branch': GitBranch,\n 'git-compare-arrows': GitCompareArrows,\n 'git-pull-request-arrow': GitPullRequestArrow,\n 'globe': Globe,\n 'graduation-cap': GraduationCap,\n 'hand': Hand,\n 'handshake': Handshake,\n 'headphones': Headphones,\n 'heart': Heart,\n 'help-circle': HelpCircle,\n 'hourglass': Hourglass,\n 'inbox': Inbox,\n 'key': Key,\n 'key-round': KeyRound,\n 'layers': Layers,\n 'lightbulb': Lightbulb,\n 'line-chart': LineChart,\n 'link': Link,\n 'list': List,\n 'loader': Loader,\n 'loader-2': Loader2,\n 'lock': Lock,\n 'mail': Mail,\n 'mail-open': MailOpen,\n 'map-pin': MapPin,\n 'map-pinned': MapPinned,\n 'message-circle': MessageCircle,\n 'minus-circle': MinusCircle,\n 'notebook': Notebook,\n 'package': Package,\n 'package-check': PackageCheck,\n 'package-plus': PackagePlus,\n 'package-search': PackageSearch,\n 'package-x': PackageX,\n 'pause-circle': PauseCircle,\n 'percent': Percent,\n 'phone': Phone,\n 'phone-call': PhoneCall,\n 'pie-chart': PieChart,\n 'plus-square': PlusSquare,\n 'receipt': Receipt,\n 'receipt-text': ReceiptText,\n 'refresh-ccw': RefreshCcw,\n 'refresh-cw': RefreshCw,\n 'reply': Reply,\n 'rotate-ccw': RotateCcw,\n 'ruler': Ruler,\n 'send': Send,\n 'settings': Settings,\n 'shapes': Shapes,\n 'share-2': Share2,\n 'shield': Shield,\n 'shield-alert': ShieldAlert,\n 'shield-check': ShieldCheck,\n 'shopping-bag': ShoppingBag,\n 'shopping-cart': ShoppingCart,\n 'shuffle': Shuffle,\n 'sliders': Sliders,\n 'smartphone': Smartphone,\n 'snowflake': Snowflake,\n 'sparkles': Sparkles,\n 'star': Star,\n 'sticky-note': StickyNote,\n 'store': Store,\n 'tag': Tag,\n 'target': Target,\n 'thumbs-up': ThumbsUp,\n 'ticket': Ticket,\n 'timer': Timer,\n 'trash-2': Trash2,\n 'trending-up': TrendingUp,\n 'triangle-alert': TriangleAlert,\n 'trophy': Trophy,\n 'truck': Truck,\n 'undo-2': Undo2,\n 'unlock': Unlock,\n 'user': User,\n 'user-check': UserCheck,\n 'user-minus': UserMinus,\n 'user-plus': UserPlus,\n 'user-round': UserRound,\n 'user-x': UserX,\n 'users': Users,\n 'wallet': Wallet,\n 'warehouse': Warehouse,\n 'webhook': Webhook,\n 'workflow': Workflow,\n 'wrench': Wrench,\n 'x': X,\n 'x-circle': XCircle,\n}\n\nfunction normalizeKebabIconName(input: string): string {\n const trimmed = input.trim()\n if (!trimmed) return ''\n const withoutPrefix = trimmed.startsWith('lucide:') ? trimmed.slice('lucide:'.length) : trimmed\n if (!withoutPrefix) return ''\n if (!withoutPrefix.includes('-') && !withoutPrefix.includes('_') && !withoutPrefix.includes(' ') && /[A-Z]/.test(withoutPrefix)) {\n return withoutPrefix\n .replace(/([a-z0-9])([A-Z])/g, '$1-$2')\n .replace(/([A-Z])([A-Z][a-z])/g, '$1-$2')\n .toLowerCase()\n }\n return withoutPrefix\n .replace(/[_\\s]+/g, '-')\n .replace(/-+/g, '-')\n .toLowerCase()\n}\n\nexport function resolveRegisteredLucideIcon(name: string | undefined): LucideIcon | null {\n if (!name) return null\n const normalized = normalizeKebabIconName(name)\n if (!normalized) return null\n return (LUCIDE_ICON_REGISTRY as Record<string, LucideIcon | undefined>)[normalized] ?? null\n}\n\nexport function resolveRegisteredLucideIconNode(\n name: string | undefined,\n className: string\n): React.ReactNode | null {\n const Icon = resolveRegisteredLucideIcon(name)\n if (!Icon) return null\n return <Icon className={className} />\n}\n"],
5
+ "mappings": "AA4US;AAtUT;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAC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",
6
6
  "names": []
7
7
  }
@@ -11,28 +11,280 @@ import {
11
11
  SelectItemLeading,
12
12
  SelectTrigger
13
13
  } from "../../primitives/select.js";
14
- const PHONE_COUNTRIES = [
15
- { iso2: "US", dialCode: "+1", label: "United States", flag: "\u{1F1FA}\u{1F1F8}" },
16
- { iso2: "CA", dialCode: "+1", label: "Canada", flag: "\u{1F1E8}\u{1F1E6}" },
17
- { iso2: "GB", dialCode: "+44", label: "United Kingdom", flag: "\u{1F1EC}\u{1F1E7}" },
18
- { iso2: "PL", dialCode: "+48", label: "Poland", flag: "\u{1F1F5}\u{1F1F1}" },
19
- { iso2: "DE", dialCode: "+49", label: "Germany", flag: "\u{1F1E9}\u{1F1EA}" },
20
- { iso2: "FR", dialCode: "+33", label: "France", flag: "\u{1F1EB}\u{1F1F7}" },
21
- { iso2: "ES", dialCode: "+34", label: "Spain", flag: "\u{1F1EA}\u{1F1F8}" },
22
- { iso2: "IT", dialCode: "+39", label: "Italy", flag: "\u{1F1EE}\u{1F1F9}" },
23
- { iso2: "NL", dialCode: "+31", label: "Netherlands", flag: "\u{1F1F3}\u{1F1F1}" },
24
- { iso2: "SE", dialCode: "+46", label: "Sweden", flag: "\u{1F1F8}\u{1F1EA}" },
25
- { iso2: "AT", dialCode: "+43", label: "Austria", flag: "\u{1F1E6}\u{1F1F9}" },
26
- { iso2: "CH", dialCode: "+41", label: "Switzerland", flag: "\u{1F1E8}\u{1F1ED}" },
27
- { iso2: "PT", dialCode: "+351", label: "Portugal", flag: "\u{1F1F5}\u{1F1F9}" },
28
- { iso2: "CZ", dialCode: "+420", label: "Czechia", flag: "\u{1F1E8}\u{1F1FF}" },
29
- { iso2: "RO", dialCode: "+40", label: "Romania", flag: "\u{1F1F7}\u{1F1F4}" },
30
- { iso2: "UA", dialCode: "+380", label: "Ukraine", flag: "\u{1F1FA}\u{1F1E6}" }
14
+ function iso2ToFlagEmoji(iso2) {
15
+ const letters = iso2.toUpperCase().replace(/[^A-Z]/g, "");
16
+ if (letters.length !== 2) return "";
17
+ const base = 127462;
18
+ return String.fromCodePoint(
19
+ base + letters.charCodeAt(0) - 65,
20
+ base + letters.charCodeAt(1) - 65
21
+ );
22
+ }
23
+ const RAW_PHONE_COUNTRIES = [
24
+ { iso2: "US", dialCode: "+1", label: "United States" },
25
+ { iso2: "CA", dialCode: "+1", label: "Canada" },
26
+ { iso2: "AG", dialCode: "+1268", label: "Antigua and Barbuda" },
27
+ { iso2: "AI", dialCode: "+1264", label: "Anguilla" },
28
+ { iso2: "AS", dialCode: "+1684", label: "American Samoa" },
29
+ { iso2: "BB", dialCode: "+1246", label: "Barbados" },
30
+ { iso2: "BM", dialCode: "+1441", label: "Bermuda" },
31
+ { iso2: "BS", dialCode: "+1242", label: "Bahamas" },
32
+ { iso2: "DM", dialCode: "+1767", label: "Dominica" },
33
+ { iso2: "DO", dialCode: "+1809", label: "Dominican Republic" },
34
+ { iso2: "GD", dialCode: "+1473", label: "Grenada" },
35
+ { iso2: "GU", dialCode: "+1671", label: "Guam" },
36
+ { iso2: "JM", dialCode: "+1876", label: "Jamaica" },
37
+ { iso2: "KN", dialCode: "+1869", label: "Saint Kitts and Nevis" },
38
+ { iso2: "KY", dialCode: "+1345", label: "Cayman Islands" },
39
+ { iso2: "LC", dialCode: "+1758", label: "Saint Lucia" },
40
+ { iso2: "MP", dialCode: "+1670", label: "Northern Mariana Islands" },
41
+ { iso2: "MS", dialCode: "+1664", label: "Montserrat" },
42
+ { iso2: "PR", dialCode: "+1787", label: "Puerto Rico" },
43
+ { iso2: "SX", dialCode: "+1721", label: "Sint Maarten" },
44
+ { iso2: "TC", dialCode: "+1649", label: "Turks and Caicos Islands" },
45
+ { iso2: "TT", dialCode: "+1868", label: "Trinidad and Tobago" },
46
+ { iso2: "VC", dialCode: "+1784", label: "Saint Vincent and the Grenadines" },
47
+ { iso2: "VG", dialCode: "+1284", label: "British Virgin Islands" },
48
+ { iso2: "VI", dialCode: "+1340", label: "U.S. Virgin Islands" },
49
+ { iso2: "EG", dialCode: "+20", label: "Egypt" },
50
+ { iso2: "SS", dialCode: "+211", label: "South Sudan" },
51
+ { iso2: "MA", dialCode: "+212", label: "Morocco" },
52
+ { iso2: "EH", dialCode: "+212", label: "Western Sahara" },
53
+ { iso2: "DZ", dialCode: "+213", label: "Algeria" },
54
+ { iso2: "TN", dialCode: "+216", label: "Tunisia" },
55
+ { iso2: "LY", dialCode: "+218", label: "Libya" },
56
+ { iso2: "GM", dialCode: "+220", label: "Gambia" },
57
+ { iso2: "SN", dialCode: "+221", label: "Senegal" },
58
+ { iso2: "MR", dialCode: "+222", label: "Mauritania" },
59
+ { iso2: "ML", dialCode: "+223", label: "Mali" },
60
+ { iso2: "GN", dialCode: "+224", label: "Guinea" },
61
+ { iso2: "CI", dialCode: "+225", label: "C\xF4te d'Ivoire" },
62
+ { iso2: "BF", dialCode: "+226", label: "Burkina Faso" },
63
+ { iso2: "NE", dialCode: "+227", label: "Niger" },
64
+ { iso2: "TG", dialCode: "+228", label: "Togo" },
65
+ { iso2: "BJ", dialCode: "+229", label: "Benin" },
66
+ { iso2: "MU", dialCode: "+230", label: "Mauritius" },
67
+ { iso2: "LR", dialCode: "+231", label: "Liberia" },
68
+ { iso2: "SL", dialCode: "+232", label: "Sierra Leone" },
69
+ { iso2: "GH", dialCode: "+233", label: "Ghana" },
70
+ { iso2: "NG", dialCode: "+234", label: "Nigeria" },
71
+ { iso2: "TD", dialCode: "+235", label: "Chad" },
72
+ { iso2: "CF", dialCode: "+236", label: "Central African Republic" },
73
+ { iso2: "CM", dialCode: "+237", label: "Cameroon" },
74
+ { iso2: "CV", dialCode: "+238", label: "Cape Verde" },
75
+ { iso2: "ST", dialCode: "+239", label: "S\xE3o Tom\xE9 and Pr\xEDncipe" },
76
+ { iso2: "GQ", dialCode: "+240", label: "Equatorial Guinea" },
77
+ { iso2: "GA", dialCode: "+241", label: "Gabon" },
78
+ { iso2: "CG", dialCode: "+242", label: "Republic of the Congo" },
79
+ { iso2: "CD", dialCode: "+243", label: "DR Congo" },
80
+ { iso2: "AO", dialCode: "+244", label: "Angola" },
81
+ { iso2: "GW", dialCode: "+245", label: "Guinea-Bissau" },
82
+ { iso2: "IO", dialCode: "+246", label: "British Indian Ocean Territory" },
83
+ { iso2: "SC", dialCode: "+248", label: "Seychelles" },
84
+ { iso2: "SD", dialCode: "+249", label: "Sudan" },
85
+ { iso2: "RW", dialCode: "+250", label: "Rwanda" },
86
+ { iso2: "ET", dialCode: "+251", label: "Ethiopia" },
87
+ { iso2: "SO", dialCode: "+252", label: "Somalia" },
88
+ { iso2: "DJ", dialCode: "+253", label: "Djibouti" },
89
+ { iso2: "KE", dialCode: "+254", label: "Kenya" },
90
+ { iso2: "TZ", dialCode: "+255", label: "Tanzania" },
91
+ { iso2: "UG", dialCode: "+256", label: "Uganda" },
92
+ { iso2: "BI", dialCode: "+257", label: "Burundi" },
93
+ { iso2: "MZ", dialCode: "+258", label: "Mozambique" },
94
+ { iso2: "ZM", dialCode: "+260", label: "Zambia" },
95
+ { iso2: "MG", dialCode: "+261", label: "Madagascar" },
96
+ { iso2: "RE", dialCode: "+262", label: "R\xE9union" },
97
+ { iso2: "YT", dialCode: "+262", label: "Mayotte" },
98
+ { iso2: "ZW", dialCode: "+263", label: "Zimbabwe" },
99
+ { iso2: "NA", dialCode: "+264", label: "Namibia" },
100
+ { iso2: "MW", dialCode: "+265", label: "Malawi" },
101
+ { iso2: "LS", dialCode: "+266", label: "Lesotho" },
102
+ { iso2: "BW", dialCode: "+267", label: "Botswana" },
103
+ { iso2: "SZ", dialCode: "+268", label: "Eswatini" },
104
+ { iso2: "KM", dialCode: "+269", label: "Comoros" },
105
+ { iso2: "ZA", dialCode: "+27", label: "South Africa" },
106
+ { iso2: "SH", dialCode: "+290", label: "Saint Helena" },
107
+ { iso2: "ER", dialCode: "+291", label: "Eritrea" },
108
+ { iso2: "AW", dialCode: "+297", label: "Aruba" },
109
+ { iso2: "FO", dialCode: "+298", label: "Faroe Islands" },
110
+ { iso2: "GL", dialCode: "+299", label: "Greenland" },
111
+ { iso2: "GR", dialCode: "+30", label: "Greece" },
112
+ { iso2: "NL", dialCode: "+31", label: "Netherlands" },
113
+ { iso2: "BE", dialCode: "+32", label: "Belgium" },
114
+ { iso2: "FR", dialCode: "+33", label: "France" },
115
+ { iso2: "ES", dialCode: "+34", label: "Spain" },
116
+ { iso2: "GI", dialCode: "+350", label: "Gibraltar" },
117
+ { iso2: "PT", dialCode: "+351", label: "Portugal" },
118
+ { iso2: "LU", dialCode: "+352", label: "Luxembourg" },
119
+ { iso2: "IE", dialCode: "+353", label: "Ireland" },
120
+ { iso2: "IS", dialCode: "+354", label: "Iceland" },
121
+ { iso2: "AL", dialCode: "+355", label: "Albania" },
122
+ { iso2: "MT", dialCode: "+356", label: "Malta" },
123
+ { iso2: "CY", dialCode: "+357", label: "Cyprus" },
124
+ { iso2: "FI", dialCode: "+358", label: "Finland" },
125
+ { iso2: "AX", dialCode: "+358", label: "\xC5land Islands" },
126
+ { iso2: "BG", dialCode: "+359", label: "Bulgaria" },
127
+ { iso2: "HU", dialCode: "+36", label: "Hungary" },
128
+ { iso2: "LT", dialCode: "+370", label: "Lithuania" },
129
+ { iso2: "LV", dialCode: "+371", label: "Latvia" },
130
+ { iso2: "EE", dialCode: "+372", label: "Estonia" },
131
+ { iso2: "MD", dialCode: "+373", label: "Moldova" },
132
+ { iso2: "AM", dialCode: "+374", label: "Armenia" },
133
+ { iso2: "BY", dialCode: "+375", label: "Belarus" },
134
+ { iso2: "AD", dialCode: "+376", label: "Andorra" },
135
+ { iso2: "MC", dialCode: "+377", label: "Monaco" },
136
+ { iso2: "SM", dialCode: "+378", label: "San Marino" },
137
+ { iso2: "VA", dialCode: "+379", label: "Vatican City" },
138
+ { iso2: "UA", dialCode: "+380", label: "Ukraine" },
139
+ { iso2: "RS", dialCode: "+381", label: "Serbia" },
140
+ { iso2: "ME", dialCode: "+382", label: "Montenegro" },
141
+ { iso2: "XK", dialCode: "+383", label: "Kosovo" },
142
+ { iso2: "HR", dialCode: "+385", label: "Croatia" },
143
+ { iso2: "SI", dialCode: "+386", label: "Slovenia" },
144
+ { iso2: "BA", dialCode: "+387", label: "Bosnia and Herzegovina" },
145
+ { iso2: "MK", dialCode: "+389", label: "North Macedonia" },
146
+ { iso2: "IT", dialCode: "+39", label: "Italy" },
147
+ { iso2: "RO", dialCode: "+40", label: "Romania" },
148
+ { iso2: "CH", dialCode: "+41", label: "Switzerland" },
149
+ { iso2: "CZ", dialCode: "+420", label: "Czechia" },
150
+ { iso2: "SK", dialCode: "+421", label: "Slovakia" },
151
+ { iso2: "LI", dialCode: "+423", label: "Liechtenstein" },
152
+ { iso2: "AT", dialCode: "+43", label: "Austria" },
153
+ { iso2: "GB", dialCode: "+44", label: "United Kingdom" },
154
+ { iso2: "GG", dialCode: "+44", label: "Guernsey" },
155
+ { iso2: "JE", dialCode: "+44", label: "Jersey" },
156
+ { iso2: "IM", dialCode: "+44", label: "Isle of Man" },
157
+ { iso2: "DK", dialCode: "+45", label: "Denmark" },
158
+ { iso2: "SE", dialCode: "+46", label: "Sweden" },
159
+ { iso2: "NO", dialCode: "+47", label: "Norway" },
160
+ { iso2: "SJ", dialCode: "+47", label: "Svalbard and Jan Mayen" },
161
+ { iso2: "PL", dialCode: "+48", label: "Poland" },
162
+ { iso2: "DE", dialCode: "+49", label: "Germany" },
163
+ { iso2: "FK", dialCode: "+500", label: "Falkland Islands" },
164
+ { iso2: "BZ", dialCode: "+501", label: "Belize" },
165
+ { iso2: "GT", dialCode: "+502", label: "Guatemala" },
166
+ { iso2: "SV", dialCode: "+503", label: "El Salvador" },
167
+ { iso2: "HN", dialCode: "+504", label: "Honduras" },
168
+ { iso2: "NI", dialCode: "+505", label: "Nicaragua" },
169
+ { iso2: "CR", dialCode: "+506", label: "Costa Rica" },
170
+ { iso2: "PA", dialCode: "+507", label: "Panama" },
171
+ { iso2: "PM", dialCode: "+508", label: "Saint Pierre and Miquelon" },
172
+ { iso2: "HT", dialCode: "+509", label: "Haiti" },
173
+ { iso2: "PE", dialCode: "+51", label: "Peru" },
174
+ { iso2: "MX", dialCode: "+52", label: "Mexico" },
175
+ { iso2: "CU", dialCode: "+53", label: "Cuba" },
176
+ { iso2: "AR", dialCode: "+54", label: "Argentina" },
177
+ { iso2: "BR", dialCode: "+55", label: "Brazil" },
178
+ { iso2: "CL", dialCode: "+56", label: "Chile" },
179
+ { iso2: "CO", dialCode: "+57", label: "Colombia" },
180
+ { iso2: "VE", dialCode: "+58", label: "Venezuela" },
181
+ { iso2: "GP", dialCode: "+590", label: "Guadeloupe" },
182
+ { iso2: "BL", dialCode: "+590", label: "Saint Barth\xE9lemy" },
183
+ { iso2: "MF", dialCode: "+590", label: "Saint Martin" },
184
+ { iso2: "BO", dialCode: "+591", label: "Bolivia" },
185
+ { iso2: "GY", dialCode: "+592", label: "Guyana" },
186
+ { iso2: "EC", dialCode: "+593", label: "Ecuador" },
187
+ { iso2: "GF", dialCode: "+594", label: "French Guiana" },
188
+ { iso2: "PY", dialCode: "+595", label: "Paraguay" },
189
+ { iso2: "MQ", dialCode: "+596", label: "Martinique" },
190
+ { iso2: "SR", dialCode: "+597", label: "Suriname" },
191
+ { iso2: "UY", dialCode: "+598", label: "Uruguay" },
192
+ { iso2: "CW", dialCode: "+599", label: "Cura\xE7ao" },
193
+ { iso2: "BQ", dialCode: "+599", label: "Caribbean Netherlands" },
194
+ { iso2: "MY", dialCode: "+60", label: "Malaysia" },
195
+ { iso2: "AU", dialCode: "+61", label: "Australia" },
196
+ { iso2: "CX", dialCode: "+61", label: "Christmas Island" },
197
+ { iso2: "CC", dialCode: "+61", label: "Cocos (Keeling) Islands" },
198
+ { iso2: "ID", dialCode: "+62", label: "Indonesia" },
199
+ { iso2: "PH", dialCode: "+63", label: "Philippines" },
200
+ { iso2: "NZ", dialCode: "+64", label: "New Zealand" },
201
+ { iso2: "SG", dialCode: "+65", label: "Singapore" },
202
+ { iso2: "TH", dialCode: "+66", label: "Thailand" },
203
+ { iso2: "TL", dialCode: "+670", label: "Timor-Leste" },
204
+ { iso2: "NF", dialCode: "+672", label: "Norfolk Island" },
205
+ { iso2: "BN", dialCode: "+673", label: "Brunei" },
206
+ { iso2: "NR", dialCode: "+674", label: "Nauru" },
207
+ { iso2: "PG", dialCode: "+675", label: "Papua New Guinea" },
208
+ { iso2: "TO", dialCode: "+676", label: "Tonga" },
209
+ { iso2: "SB", dialCode: "+677", label: "Solomon Islands" },
210
+ { iso2: "VU", dialCode: "+678", label: "Vanuatu" },
211
+ { iso2: "FJ", dialCode: "+679", label: "Fiji" },
212
+ { iso2: "PW", dialCode: "+680", label: "Palau" },
213
+ { iso2: "WF", dialCode: "+681", label: "Wallis and Futuna" },
214
+ { iso2: "CK", dialCode: "+682", label: "Cook Islands" },
215
+ { iso2: "NU", dialCode: "+683", label: "Niue" },
216
+ { iso2: "WS", dialCode: "+685", label: "Samoa" },
217
+ { iso2: "KI", dialCode: "+686", label: "Kiribati" },
218
+ { iso2: "NC", dialCode: "+687", label: "New Caledonia" },
219
+ { iso2: "TV", dialCode: "+688", label: "Tuvalu" },
220
+ { iso2: "PF", dialCode: "+689", label: "French Polynesia" },
221
+ { iso2: "TK", dialCode: "+690", label: "Tokelau" },
222
+ { iso2: "FM", dialCode: "+691", label: "Micronesia" },
223
+ { iso2: "MH", dialCode: "+692", label: "Marshall Islands" },
224
+ { iso2: "RU", dialCode: "+7", label: "Russia" },
225
+ { iso2: "KZ", dialCode: "+7", label: "Kazakhstan" },
226
+ { iso2: "JP", dialCode: "+81", label: "Japan" },
227
+ { iso2: "KR", dialCode: "+82", label: "South Korea" },
228
+ { iso2: "VN", dialCode: "+84", label: "Vietnam" },
229
+ { iso2: "KP", dialCode: "+850", label: "North Korea" },
230
+ { iso2: "HK", dialCode: "+852", label: "Hong Kong" },
231
+ { iso2: "MO", dialCode: "+853", label: "Macau" },
232
+ { iso2: "KH", dialCode: "+855", label: "Cambodia" },
233
+ { iso2: "LA", dialCode: "+856", label: "Laos" },
234
+ { iso2: "CN", dialCode: "+86", label: "China" },
235
+ { iso2: "BD", dialCode: "+880", label: "Bangladesh" },
236
+ { iso2: "TW", dialCode: "+886", label: "Taiwan" },
237
+ { iso2: "TR", dialCode: "+90", label: "Turkey" },
238
+ { iso2: "IN", dialCode: "+91", label: "India" },
239
+ { iso2: "PK", dialCode: "+92", label: "Pakistan" },
240
+ { iso2: "AF", dialCode: "+93", label: "Afghanistan" },
241
+ { iso2: "LK", dialCode: "+94", label: "Sri Lanka" },
242
+ { iso2: "MM", dialCode: "+95", label: "Myanmar" },
243
+ { iso2: "MV", dialCode: "+960", label: "Maldives" },
244
+ { iso2: "LB", dialCode: "+961", label: "Lebanon" },
245
+ { iso2: "JO", dialCode: "+962", label: "Jordan" },
246
+ { iso2: "SY", dialCode: "+963", label: "Syria" },
247
+ { iso2: "IQ", dialCode: "+964", label: "Iraq" },
248
+ { iso2: "KW", dialCode: "+965", label: "Kuwait" },
249
+ { iso2: "SA", dialCode: "+966", label: "Saudi Arabia" },
250
+ { iso2: "YE", dialCode: "+967", label: "Yemen" },
251
+ { iso2: "OM", dialCode: "+968", label: "Oman" },
252
+ { iso2: "PS", dialCode: "+970", label: "Palestine" },
253
+ { iso2: "AE", dialCode: "+971", label: "United Arab Emirates" },
254
+ { iso2: "IL", dialCode: "+972", label: "Israel" },
255
+ { iso2: "BH", dialCode: "+973", label: "Bahrain" },
256
+ { iso2: "QA", dialCode: "+974", label: "Qatar" },
257
+ { iso2: "BT", dialCode: "+975", label: "Bhutan" },
258
+ { iso2: "MN", dialCode: "+976", label: "Mongolia" },
259
+ { iso2: "NP", dialCode: "+977", label: "Nepal" },
260
+ { iso2: "TJ", dialCode: "+992", label: "Tajikistan" },
261
+ { iso2: "TM", dialCode: "+993", label: "Turkmenistan" },
262
+ { iso2: "AZ", dialCode: "+994", label: "Azerbaijan" },
263
+ { iso2: "GE", dialCode: "+995", label: "Georgia" },
264
+ { iso2: "KG", dialCode: "+996", label: "Kyrgyzstan" },
265
+ { iso2: "UZ", dialCode: "+998", label: "Uzbekistan" },
266
+ { iso2: "IR", dialCode: "+98", label: "Iran" }
31
267
  ];
32
- const DEFAULT_COUNTRY = PHONE_COUNTRIES[0];
33
- const COUNTRIES_BY_DIAL_LENGTH = [...PHONE_COUNTRIES].sort(
34
- (a, b) => b.dialCode.length - a.dialCode.length
35
- );
268
+ const PHONE_COUNTRIES = RAW_PHONE_COUNTRIES.map((country) => ({ ...country, flag: iso2ToFlagEmoji(country.iso2) })).sort((a, b) => a.label.localeCompare(b.label, "en", { sensitivity: "base" }));
269
+ const PRIMARY_DIAL_OWNERS = {
270
+ "+1": "US",
271
+ "+7": "RU",
272
+ "+44": "GB",
273
+ "+47": "NO",
274
+ "+61": "AU",
275
+ "+212": "MA",
276
+ "+262": "RE",
277
+ "+358": "FI",
278
+ "+590": "GP",
279
+ "+599": "CW"
280
+ };
281
+ const DEFAULT_COUNTRY = PHONE_COUNTRIES.find((country) => country.iso2 === "US") ?? PHONE_COUNTRIES[0];
282
+ const COUNTRIES_BY_DIAL_LENGTH = [...PHONE_COUNTRIES].sort((a, b) => {
283
+ if (b.dialCode.length !== a.dialCode.length) return b.dialCode.length - a.dialCode.length;
284
+ const aPrimary = PRIMARY_DIAL_OWNERS[a.dialCode] === a.iso2 ? 0 : 1;
285
+ const bPrimary = PRIMARY_DIAL_OWNERS[b.dialCode] === b.iso2 ? 0 : 1;
286
+ return aPrimary - bPrimary;
287
+ });
36
288
  function findCountryByIso(iso2) {
37
289
  return PHONE_COUNTRIES.find((c) => c.iso2 === iso2);
38
290
  }