ml-uikit 1.1.7 → 1.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (285) hide show
  1. package/dist/components/ui/password-input.d.ts +9 -0
  2. package/dist/components/ui/password-input.d.ts.map +1 -0
  3. package/dist/components/ui/searchable-dropdown.d.ts +22 -0
  4. package/dist/components/ui/searchable-dropdown.d.ts.map +1 -0
  5. package/dist/components/ui/table.d.ts +5 -1
  6. package/dist/components/ui/table.d.ts.map +1 -1
  7. package/dist/index.cjs.js +1 -1
  8. package/dist/index.cjs10.js +1 -1
  9. package/dist/index.cjs10.js.map +1 -1
  10. package/dist/index.cjs11.js +1 -1
  11. package/dist/index.cjs11.js.map +1 -1
  12. package/dist/index.cjs12.js +1 -1
  13. package/dist/index.cjs12.js.map +1 -1
  14. package/dist/index.cjs13.js +1 -1
  15. package/dist/index.cjs13.js.map +1 -1
  16. package/dist/index.cjs14.js +1 -1
  17. package/dist/index.cjs14.js.map +1 -1
  18. package/dist/index.cjs15.js +1 -1
  19. package/dist/index.cjs15.js.map +1 -1
  20. package/dist/index.cjs16.js +4 -4
  21. package/dist/index.cjs16.js.map +1 -1
  22. package/dist/index.cjs17.js +1 -1
  23. package/dist/index.cjs17.js.map +1 -1
  24. package/dist/index.cjs19.js +1 -1
  25. package/dist/index.cjs19.js.map +1 -1
  26. package/dist/index.cjs2.js +1 -1
  27. package/dist/index.cjs2.js.map +1 -1
  28. package/dist/index.cjs20.js +1 -1
  29. package/dist/index.cjs20.js.map +1 -1
  30. package/dist/index.cjs21.js +1 -1
  31. package/dist/index.cjs21.js.map +1 -1
  32. package/dist/index.cjs22.js +1 -1
  33. package/dist/index.cjs22.js.map +1 -1
  34. package/dist/index.cjs23.js +1 -1
  35. package/dist/index.cjs23.js.map +1 -1
  36. package/dist/index.cjs24.js +1 -1
  37. package/dist/index.cjs24.js.map +1 -1
  38. package/dist/index.cjs25.js +1 -1
  39. package/dist/index.cjs25.js.map +1 -1
  40. package/dist/index.cjs26.js +1 -1
  41. package/dist/index.cjs26.js.map +1 -1
  42. package/dist/index.cjs27.js +1 -1
  43. package/dist/index.cjs27.js.map +1 -1
  44. package/dist/index.cjs28.js +1 -1
  45. package/dist/index.cjs28.js.map +1 -1
  46. package/dist/index.cjs29.js +1 -1
  47. package/dist/index.cjs29.js.map +1 -1
  48. package/dist/index.cjs3.js +1 -1
  49. package/dist/index.cjs3.js.map +1 -1
  50. package/dist/index.cjs30.js +1 -1
  51. package/dist/index.cjs30.js.map +1 -1
  52. package/dist/index.cjs31.js +1 -1
  53. package/dist/index.cjs31.js.map +1 -1
  54. package/dist/index.cjs32.js +1 -1
  55. package/dist/index.cjs32.js.map +1 -1
  56. package/dist/index.cjs33.js +1 -1
  57. package/dist/index.cjs33.js.map +1 -1
  58. package/dist/index.cjs34.js +1 -1
  59. package/dist/index.cjs34.js.map +1 -1
  60. package/dist/index.cjs35.js +1 -1
  61. package/dist/index.cjs35.js.map +1 -1
  62. package/dist/index.cjs36.js +1 -1
  63. package/dist/index.cjs36.js.map +1 -1
  64. package/dist/index.cjs37.js +1 -1
  65. package/dist/index.cjs37.js.map +1 -1
  66. package/dist/index.cjs38.js +1 -1
  67. package/dist/index.cjs38.js.map +1 -1
  68. package/dist/index.cjs39.js +1 -1
  69. package/dist/index.cjs39.js.map +1 -1
  70. package/dist/index.cjs4.js +1 -1
  71. package/dist/index.cjs4.js.map +1 -1
  72. package/dist/index.cjs40.js +1 -1
  73. package/dist/index.cjs40.js.map +1 -1
  74. package/dist/index.cjs41.js +1 -1
  75. package/dist/index.cjs41.js.map +1 -1
  76. package/dist/index.cjs42.js +1 -1
  77. package/dist/index.cjs42.js.map +1 -1
  78. package/dist/index.cjs43.js +1 -1
  79. package/dist/index.cjs43.js.map +1 -1
  80. package/dist/index.cjs44.js +1 -1
  81. package/dist/index.cjs44.js.map +1 -1
  82. package/dist/index.cjs45.js +1 -1
  83. package/dist/index.cjs45.js.map +1 -1
  84. package/dist/index.cjs46.js +1 -1
  85. package/dist/index.cjs46.js.map +1 -1
  86. package/dist/index.cjs47.js +1 -1
  87. package/dist/index.cjs47.js.map +1 -1
  88. package/dist/index.cjs48.js +1 -1
  89. package/dist/index.cjs48.js.map +1 -1
  90. package/dist/index.cjs49.js +1 -1
  91. package/dist/index.cjs49.js.map +1 -1
  92. package/dist/index.cjs5.js +1 -1
  93. package/dist/index.cjs5.js.map +1 -1
  94. package/dist/index.cjs50.js +1 -1
  95. package/dist/index.cjs50.js.map +1 -1
  96. package/dist/index.cjs51.js +1 -1
  97. package/dist/index.cjs51.js.map +1 -1
  98. package/dist/index.cjs52.js +1 -1
  99. package/dist/index.cjs52.js.map +1 -1
  100. package/dist/index.cjs53.js +1 -1
  101. package/dist/index.cjs53.js.map +1 -1
  102. package/dist/index.cjs54.js +1 -1
  103. package/dist/index.cjs54.js.map +1 -1
  104. package/dist/index.cjs55.js +1 -1
  105. package/dist/index.cjs55.js.map +1 -1
  106. package/dist/index.cjs56.js +1 -1
  107. package/dist/index.cjs56.js.map +1 -1
  108. package/dist/index.cjs57.js +1 -1
  109. package/dist/index.cjs57.js.map +1 -1
  110. package/dist/index.cjs58.js +1 -1
  111. package/dist/index.cjs58.js.map +1 -1
  112. package/dist/index.cjs59.js +1 -1
  113. package/dist/index.cjs59.js.map +1 -1
  114. package/dist/index.cjs60.js +1 -1
  115. package/dist/index.cjs60.js.map +1 -1
  116. package/dist/index.cjs61.js +1 -1
  117. package/dist/index.cjs61.js.map +1 -1
  118. package/dist/index.cjs62.js +1 -1
  119. package/dist/index.cjs62.js.map +1 -1
  120. package/dist/index.cjs63.js +2 -0
  121. package/dist/index.cjs63.js.map +1 -0
  122. package/dist/index.cjs64.js +2 -0
  123. package/dist/index.cjs64.js.map +1 -0
  124. package/dist/index.cjs65.js +2 -0
  125. package/dist/index.cjs65.js.map +1 -0
  126. package/dist/index.cjs66.js +2 -0
  127. package/dist/index.cjs66.js.map +1 -0
  128. package/dist/index.cjs67.js +2 -0
  129. package/dist/index.cjs67.js.map +1 -0
  130. package/dist/index.cjs68.js +7 -0
  131. package/dist/index.cjs68.js.map +1 -0
  132. package/dist/index.cjs69.js +2 -0
  133. package/dist/index.cjs69.js.map +1 -0
  134. package/dist/index.cjs7.js +1 -1
  135. package/dist/index.cjs7.js.map +1 -1
  136. package/dist/index.cjs70.js +2 -0
  137. package/dist/index.cjs70.js.map +1 -0
  138. package/dist/index.cjs71.js +2 -0
  139. package/dist/index.cjs71.js.map +1 -0
  140. package/dist/index.cjs8.js +1 -1
  141. package/dist/index.cjs8.js.map +1 -1
  142. package/dist/index.cjs9.js +1 -1
  143. package/dist/index.cjs9.js.map +1 -1
  144. package/dist/index.d.ts +3 -1
  145. package/dist/index.d.ts.map +1 -1
  146. package/dist/index.es.js +271 -258
  147. package/dist/index.es.js.map +1 -1
  148. package/dist/index.es10.js +22 -21
  149. package/dist/index.es10.js.map +1 -1
  150. package/dist/index.es11.js +14 -13
  151. package/dist/index.es11.js.map +1 -1
  152. package/dist/index.es12.js +31 -31
  153. package/dist/index.es12.js.map +1 -1
  154. package/dist/index.es13.js +39 -38
  155. package/dist/index.es13.js.map +1 -1
  156. package/dist/index.es14.js +34 -33
  157. package/dist/index.es14.js.map +1 -1
  158. package/dist/index.es15.js +107 -102
  159. package/dist/index.es15.js.map +1 -1
  160. package/dist/index.es16.js +155 -140
  161. package/dist/index.es16.js.map +1 -1
  162. package/dist/index.es17.js +21 -18
  163. package/dist/index.es17.js.map +1 -1
  164. package/dist/index.es19.js +63 -59
  165. package/dist/index.es19.js.map +1 -1
  166. package/dist/index.es2.js +10 -6
  167. package/dist/index.es2.js.map +1 -1
  168. package/dist/index.es20.js +85 -78
  169. package/dist/index.es20.js.map +1 -1
  170. package/dist/index.es21.js +68 -59
  171. package/dist/index.es21.js.map +1 -1
  172. package/dist/index.es22.js +68 -62
  173. package/dist/index.es22.js.map +1 -1
  174. package/dist/index.es23.js +83 -76
  175. package/dist/index.es23.js.map +1 -1
  176. package/dist/index.es24.js +178 -94
  177. package/dist/index.es24.js.map +1 -1
  178. package/dist/index.es25.js +57 -164
  179. package/dist/index.es25.js.map +1 -1
  180. package/dist/index.es26.js +198 -77
  181. package/dist/index.es26.js.map +1 -1
  182. package/dist/index.es27.js +90 -20
  183. package/dist/index.es27.js.map +1 -1
  184. package/dist/index.es28.js +21 -22
  185. package/dist/index.es28.js.map +1 -1
  186. package/dist/index.es29.js +19 -343
  187. package/dist/index.es29.js.map +1 -1
  188. package/dist/index.es3.js +35 -32
  189. package/dist/index.es3.js.map +1 -1
  190. package/dist/index.es30.js +38 -148
  191. package/dist/index.es30.js.map +1 -1
  192. package/dist/index.es31.js +377 -42
  193. package/dist/index.es31.js.map +1 -1
  194. package/dist/index.es32.js +146 -172
  195. package/dist/index.es32.js.map +1 -1
  196. package/dist/index.es33.js +46 -253
  197. package/dist/index.es33.js.map +1 -1
  198. package/dist/index.es34.js +195 -180
  199. package/dist/index.es34.js.map +1 -1
  200. package/dist/index.es35.js +253 -29
  201. package/dist/index.es35.js.map +1 -1
  202. package/dist/index.es36.js +183 -14
  203. package/dist/index.es36.js.map +1 -1
  204. package/dist/index.es37.js +29 -93
  205. package/dist/index.es37.js.map +1 -1
  206. package/dist/index.es38.js +13 -187
  207. package/dist/index.es38.js.map +1 -1
  208. package/dist/index.es39.js +93 -96
  209. package/dist/index.es39.js.map +1 -1
  210. package/dist/index.es4.js +38 -32
  211. package/dist/index.es4.js.map +1 -1
  212. package/dist/index.es40.js +182 -80
  213. package/dist/index.es40.js.map +1 -1
  214. package/dist/index.es41.js +98 -17
  215. package/dist/index.es41.js.map +1 -1
  216. package/dist/index.es42.js +101 -21
  217. package/dist/index.es42.js.map +1 -1
  218. package/dist/index.es43.js +20 -28
  219. package/dist/index.es43.js.map +1 -1
  220. package/dist/index.es44.js +19 -28
  221. package/dist/index.es44.js.map +1 -1
  222. package/dist/index.es45.js +25 -176
  223. package/dist/index.es45.js.map +1 -1
  224. package/dist/index.es46.js +36 -21
  225. package/dist/index.es46.js.map +1 -1
  226. package/dist/index.es47.js +171 -78
  227. package/dist/index.es47.js.map +1 -1
  228. package/dist/index.es48.js +17 -551
  229. package/dist/index.es48.js.map +1 -1
  230. package/dist/index.es49.js +106 -13
  231. package/dist/index.es49.js.map +1 -1
  232. package/dist/index.es5.js +71 -67
  233. package/dist/index.es5.js.map +1 -1
  234. package/dist/index.es50.js +559 -35
  235. package/dist/index.es50.js.map +1 -1
  236. package/dist/index.es51.js +12 -19
  237. package/dist/index.es51.js.map +1 -1
  238. package/dist/index.es52.js +47 -12
  239. package/dist/index.es52.js.map +1 -1
  240. package/dist/index.es53.js +21 -25
  241. package/dist/index.es53.js.map +1 -1
  242. package/dist/index.es54.js +14 -217
  243. package/dist/index.es54.js.map +1 -1
  244. package/dist/index.es55.js +23 -44
  245. package/dist/index.es55.js.map +1 -1
  246. package/dist/index.es56.js +237 -13
  247. package/dist/index.es56.js.map +1 -1
  248. package/dist/index.es57.js +44 -28
  249. package/dist/index.es57.js.map +1 -1
  250. package/dist/index.es58.js +17 -36
  251. package/dist/index.es58.js.map +1 -1
  252. package/dist/index.es59.js +33 -18
  253. package/dist/index.es59.js.map +1 -1
  254. package/dist/index.es60.js +39 -6
  255. package/dist/index.es60.js.map +1 -1
  256. package/dist/index.es61.js +21 -267
  257. package/dist/index.es61.js.map +1 -1
  258. package/dist/index.es62.js +3 -6268
  259. package/dist/index.es62.js.map +1 -1
  260. package/dist/index.es63.js +9 -0
  261. package/dist/index.es63.js.map +1 -0
  262. package/dist/index.es64.js +270 -0
  263. package/dist/index.es64.js.map +1 -0
  264. package/dist/index.es65.js +11 -0
  265. package/dist/index.es65.js.map +1 -0
  266. package/dist/index.es66.js +5 -0
  267. package/dist/index.es66.js.map +1 -0
  268. package/dist/index.es67.js +27 -0
  269. package/dist/index.es67.js.map +1 -0
  270. package/dist/index.es68.js +237 -0
  271. package/dist/index.es68.js.map +1 -0
  272. package/dist/index.es69.js +5 -0
  273. package/dist/index.es69.js.map +1 -0
  274. package/dist/index.es7.js +25 -24
  275. package/dist/index.es7.js.map +1 -1
  276. package/dist/index.es70.js +5 -0
  277. package/dist/index.es70.js.map +1 -0
  278. package/dist/index.es71.js +6271 -0
  279. package/dist/index.es71.js.map +1 -0
  280. package/dist/index.es8.js +43 -41
  281. package/dist/index.es8.js.map +1 -1
  282. package/dist/index.es9.js +51 -48
  283. package/dist/index.es9.js.map +1 -1
  284. package/dist/style.css +59 -0
  285. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.es31.js","sources":["../src/components/ui/input-otp.tsx"],"sourcesContent":["import * as React from \"react\"\nimport { OTPInput, OTPInputContext } from \"input-otp\"\nimport { Minus } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst InputOTP = React.forwardRef<\n React.ElementRef<typeof OTPInput>,\n React.ComponentPropsWithoutRef<typeof OTPInput>\n>(({ className, containerClassName, ...props }, ref) => (\n <OTPInput\n ref={ref}\n containerClassName={cn(\n \"flex items-center gap-2 has-[:disabled]:opacity-50\",\n containerClassName\n )}\n className={cn(\"disabled:cursor-not-allowed\", className)}\n {...props}\n />\n))\nInputOTP.displayName = \"InputOTP\"\n\nconst InputOTPGroup = React.forwardRef<\n React.ElementRef<\"div\">,\n React.ComponentPropsWithoutRef<\"div\">\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"flex items-center\", className)} {...props} />\n))\nInputOTPGroup.displayName = \"InputOTPGroup\"\n\nconst InputOTPSlot = React.forwardRef<\n React.ElementRef<\"div\">,\n React.ComponentPropsWithoutRef<\"div\"> & { index: number }\n>(({ index, className, ...props }, ref) => {\n const inputOTPContext = React.useContext(OTPInputContext)\n const { char, hasFakeCaret, isActive } = inputOTPContext.slots[index]\n\n return (\n <div\n ref={ref}\n className={cn(\n \"relative flex h-9 w-9 items-center justify-center border-y border-r border-input text-sm shadow-sm transition-all first:rounded-l-md first:border-l last:rounded-r-md\",\n isActive && \"z-10 ring-1 ring-ring\",\n className\n )}\n {...props}\n >\n {char}\n {hasFakeCaret && (\n <div className=\"pointer-events-none absolute inset-0 flex items-center justify-center\">\n <div className=\"h-4 w-px animate-caret-blink bg-foreground duration-1000\" />\n </div>\n )}\n </div>\n )\n})\nInputOTPSlot.displayName = \"InputOTPSlot\"\n\nconst InputOTPSeparator = React.forwardRef<\n React.ElementRef<\"div\">,\n React.ComponentPropsWithoutRef<\"div\">\n>(({ ...props }, ref) => (\n <div ref={ref} role=\"separator\" {...props}>\n <Minus />\n </div>\n))\nInputOTPSeparator.displayName = \"InputOTPSeparator\"\n\nexport { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator }\n"],"names":["InputOTP","React","className","containerClassName","props","ref","OTPInput","cn","InputOTPGroup","InputOTPSlot","index","inputOTPContext","OTPInputContext","char","hasFakeCaret","isActive","InputOTPSeparator","Minus"],"mappings":";;;;AAMA,MAAMA,IAAWC,EAAM,WAGrB,CAAC,EAAE,WAAAC,GAAW,oBAAAC,GAAoB,GAAGC,EAAA,GAASC,MAC9C,gBAAAJ,EAAA;AAAA,EAACK;AAAA,EAAA;AAAA,IACC,KAAAD;AAAA,IACA,oBAAoBE;AAAA,MAClB;AAAA,MACAJ;AAAA,IAAA;AAAA,IAEF,WAAWI,EAAG,+BAA+BL,CAAS;AAAA,IACrD,GAAGE;AAAA,EAAA;AACN,CACD;AACDJ,EAAS,cAAc;AAEvB,MAAMQ,IAAgBP,EAAM,WAG1B,CAAC,EAAE,WAAAC,GAAW,GAAGE,KAASC,sCACzB,OAAA,EAAI,KAAAA,GAAU,WAAWE,EAAG,qBAAqBL,CAAS,GAAI,GAAGE,GAAO,CAC1E;AACDI,EAAc,cAAc;AAE5B,MAAMC,IAAeR,EAAM,WAGzB,CAAC,EAAE,OAAAS,GAAO,WAAAR,GAAW,GAAGE,EAAA,GAASC,MAAQ;AACzC,QAAMM,IAAkBV,EAAM,WAAWW,CAAe,GAClD,EAAE,MAAAC,GAAM,cAAAC,GAAc,UAAAC,MAAaJ,EAAgB,MAAMD,CAAK;AAEpE,SACE,gBAAAT,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAI;AAAA,MACA,WAAWE;AAAA,QACT;AAAA,QACAQ,KAAY;AAAA,QACZb;AAAA,MAAA;AAAA,MAED,GAAGE;AAAA,IAAA;AAAA,IAEHS;AAAA,IACAC,qCACE,OAAA,EAAI,WAAU,2EACb,gBAAAb,EAAA,cAAC,OAAA,EAAI,WAAU,2DAAA,CAA2D,CAC5E;AAAA,EAAA;AAIR,CAAC;AACDQ,EAAa,cAAc;AAE3B,MAAMO,IAAoBf,EAAM,WAG9B,CAAC,EAAE,GAAGG,KAASC,sCACd,OAAA,EAAI,KAAAA,GAAU,MAAK,aAAa,GAAGD,KAClC,gBAAAH,EAAA,cAACgB,GAAA,IAAM,CACT,CACD;AACDD,EAAkB,cAAc;"}
1
+ {"version":3,"file":"index.es31.js","sources":["../src/components/ui/date-range-picker.tsx"],"sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport {\n addMonths,\n format,\n isAfter,\n isBefore,\n setMonth,\n setYear,\n startOfMonth,\n} from \"date-fns\"\nimport { CalendarDays, ChevronDown, ChevronLeft, ChevronRight } from \"lucide-react\"\nimport { DayPicker, type Matcher } from \"react-day-picker\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"@/components/ui/popover\"\n\nexport type DateRangePickerValue = {\n from?: Date\n to?: Date\n}\n\nexport interface DateRangePickerProps\n extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, \"value\" | \"defaultValue\" | \"onChange\"> {\n value?: DateRangePickerValue\n defaultValue?: DateRangePickerValue\n onValueChange?: (value: DateRangePickerValue | undefined) => void\n wrapperClassName?: string\n popoverClassName?: string\n popoverSide?: React.ComponentPropsWithoutRef<typeof PopoverContent>[\"side\"]\n popoverAvoidCollisions?: boolean\n placeholder?: string\n dateFormat?: string\n minYear?: number\n maxYear?: number\n}\n\nconst DEFAULT_FORMAT = \"dd/MM/yyyy\"\nconst DEFAULT_PLACEHOLDER = \"DD/MM/YYYY - DD/MM/YYYY\"\nconst MONTH_LABELS = Array.from({ length: 12 }, (_, monthIndex) =>\n new Date(2020, monthIndex, 1).toLocaleString(\"default\", { month: \"long\" })\n)\n\nconst clampMonth = (month: Date, minMonth: Date, maxMonth: Date) => {\n if (isBefore(month, minMonth)) {\n return minMonth\n }\n\n if (isAfter(month, maxMonth)) {\n return maxMonth\n }\n\n return month\n}\n\nconst normalizeRange = (\n value?: DateRangePickerValue\n): DateRangePickerValue | undefined => {\n if (!value?.from && !value?.to) {\n return undefined\n }\n\n if (value.from && value.to && isAfter(value.from, value.to)) {\n return {\n from: value.to,\n to: value.from,\n }\n }\n\n return {\n from: value.from,\n to: value.to,\n }\n}\n\nconst formatDate = (date: Date | undefined, dateFormat: string) => {\n if (!date) {\n return undefined\n }\n\n return format(date, dateFormat)\n}\n\nconst formatCommittedValue = (\n value: DateRangePickerValue | undefined,\n dateFormat: string\n) => {\n const fromText = formatDate(value?.from, dateFormat)\n const toText = formatDate(value?.to, dateFormat)\n\n if (!fromText || !toText) {\n return \"\"\n }\n\n return `${fromText} - ${toText}`\n}\n\nconst formatDraftValue = (\n value: DateRangePickerValue | undefined,\n dateFormat: string\n) => {\n const fromText = formatDate(value?.from, dateFormat) ?? \"DD/MM/YYYY\"\n const toText = formatDate(value?.to, dateFormat) ?? \"DD/MM/YYYY\"\n\n return `${fromText} - ${toText}`\n}\n\ntype CalendarPanelProps = {\n label: string\n month: Date\n minMonth: Date\n maxMonth: Date\n minDate: Date\n maxDate: Date\n selectedDate?: Date\n disabledMatcher?: Matcher\n disabled?: boolean\n years: number[]\n onMonthChange: (month: Date) => void\n onSelectDate: (date: Date | undefined) => void\n}\n\nfunction CalendarPanel({\n label,\n month,\n minMonth,\n maxMonth,\n minDate,\n maxDate,\n selectedDate,\n disabledMatcher,\n disabled,\n years,\n onMonthChange,\n onSelectDate,\n}: CalendarPanelProps) {\n const handlePrevMonth = () => {\n onMonthChange(addMonths(month, -1))\n }\n\n const handleNextMonth = () => {\n onMonthChange(addMonths(month, 1))\n }\n\n const isPrevDisabled = disabled || !isAfter(month, minMonth)\n const isNextDisabled = disabled || !isBefore(month, maxMonth)\n\n return (\n <div className=\"w-full min-w-0\">\n <div className=\"flex flex-wrap items-center gap-2 sm:flex-nowrap\">\n <button\n type=\"button\"\n onClick={handlePrevMonth}\n disabled={isPrevDisabled}\n className={cn(\n \"inline-flex h-8 w-8 items-center justify-center rounded-md text-[#6e6d71] transition-colors lg:h-9 lg:w-9\",\n \"hover:bg-[#f5f5f5] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[#1d1c20]/20\",\n \"disabled:cursor-not-allowed disabled:opacity-40\"\n )}\n aria-label={`Previous month for ${label.toLowerCase()}`}\n >\n <ChevronLeft className=\"h-4 w-4 lg:h-5 lg:w-5\" />\n </button>\n\n <div className=\"relative min-w-0 flex-1\">\n <select\n value={month.getMonth()}\n onChange={(event) => {\n const monthValue = Number(event.target.value)\n onMonthChange(setMonth(month, monthValue))\n }}\n disabled={disabled}\n className={cn(\n \"h-9 w-full appearance-none rounded-md border border-[#b7b7b9] bg-white px-3 pr-8 text-left text-sm font-medium leading-5 text-[#111111] lg:h-10 lg:px-4 lg:pr-10\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[#1d1c20]/20\",\n \"disabled:cursor-not-allowed disabled:bg-[#f2f2f2] disabled:text-[#b3b3b3]\"\n )}\n aria-label={`Month for ${label.toLowerCase()}`}\n >\n {MONTH_LABELS.map((monthLabel, monthIndex) => (\n <option key={monthLabel} value={monthIndex}>\n {monthLabel}\n </option>\n ))}\n </select>\n <ChevronDown className=\"pointer-events-none absolute right-2.5 top-1/2 h-4 w-4 -translate-y-1/2 text-[#7f7d83] lg:right-3\" />\n </div>\n\n <div className=\"relative w-[104px] shrink-0 sm:w-[120px]\">\n <select\n value={month.getFullYear()}\n onChange={(event) => {\n const yearValue = Number(event.target.value)\n onMonthChange(setYear(month, yearValue))\n }}\n disabled={disabled}\n className={cn(\n \"h-9 w-full appearance-none rounded-md border border-[#b7b7b9] bg-white px-3 pr-8 text-left text-sm font-medium leading-5 text-[#111111] lg:h-10 lg:px-4 lg:pr-9\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[#1d1c20]/20\",\n \"disabled:cursor-not-allowed disabled:bg-[#f2f2f2] disabled:text-[#b3b3b3]\"\n )}\n aria-label={`Year for ${label.toLowerCase()}`}\n >\n {years.map((year) => (\n <option key={year} value={year}>\n {year}\n </option>\n ))}\n </select>\n <ChevronDown className=\"pointer-events-none absolute right-2.5 top-1/2 h-4 w-4 -translate-y-1/2 text-[#7f7d83] lg:right-3\" />\n </div>\n\n <button\n type=\"button\"\n onClick={handleNextMonth}\n disabled={isNextDisabled}\n className={cn(\n \"inline-flex h-8 w-8 items-center justify-center rounded-md text-[#6e6d71] transition-colors lg:h-9 lg:w-9\",\n \"hover:bg-[#f5f5f5] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[#1d1c20]/20\",\n \"disabled:cursor-not-allowed disabled:opacity-40\"\n )}\n aria-label={`Next month for ${label.toLowerCase()}`}\n >\n <ChevronRight className=\"h-4 w-4 lg:h-5 lg:w-5\" />\n </button>\n </div>\n\n <p className=\"mt-1.5 text-center text-sm font-medium leading-5 text-[#666666] lg:mt-2\">\n {label}\n </p>\n\n <DayPicker\n mode=\"single\"\n month={month}\n onMonthChange={onMonthChange}\n selected={selectedDate}\n onSelect={onSelectDate}\n showOutsideDays\n fixedWeeks\n hideNavigation\n disabled={[\n { before: minDate },\n { after: maxDate },\n ...(disabledMatcher ? [disabledMatcher] : []),\n ]}\n className=\"mt-1 p-0 [--drp-cell-size:1.625rem] md:[--drp-cell-size:1.875rem] xl:[--drp-cell-size:2.125rem]\"\n classNames={{\n root: \"w-full\",\n months: \"w-full\",\n month: \"w-full\",\n month_caption: \"hidden\",\n month_grid: \"w-full border-collapse\",\n weekdays: \"grid grid-cols-7\",\n weekday:\n \"h-[calc(var(--drp-cell-size)-0.25rem)] text-center text-[11px] font-medium leading-4 text-[#666666] lg:text-xs\",\n weeks: \"grid gap-0\",\n week: \"grid grid-cols-7\",\n day: \"flex h-[var(--drp-cell-size)] w-full items-center justify-center p-0\",\n day_button:\n \"h-[--drp-cell-size] w-[--drp-cell-size] rounded-md border border-transparent bg-transparent p-0 text-[13px] font-normal leading-none text-[#444444] transition-colors hover:border-[#cccccc] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[#2bbd8f]/25 lg:text-sm\",\n selected:\n \"[&>button]:border-[#2bbd8f] [&>button]:bg-[#2bbd8f] [&>button]:text-[#111111]\",\n today: \"font-medium\",\n outside: \"text-[#a4a4a8]\",\n disabled: \"pointer-events-none text-[#d3d3d6]\",\n hidden: \"invisible\",\n }}\n />\n </div>\n )\n}\n\nconst DateRangePicker = React.forwardRef<HTMLButtonElement, DateRangePickerProps>(\n (\n {\n value,\n defaultValue,\n onValueChange,\n wrapperClassName,\n popoverClassName,\n popoverSide = \"bottom\",\n popoverAvoidCollisions = true,\n className,\n placeholder = DEFAULT_PLACEHOLDER,\n dateFormat = DEFAULT_FORMAT,\n minYear = 2000,\n maxYear = 2100,\n disabled,\n ...triggerProps\n },\n ref\n ) => {\n const safeMinYear = Math.min(minYear, maxYear)\n const safeMaxYear = Math.max(minYear, maxYear)\n\n const minMonth = React.useMemo(\n () => startOfMonth(new Date(safeMinYear, 0, 1)),\n [safeMinYear]\n )\n const maxMonth = React.useMemo(\n () => startOfMonth(new Date(safeMaxYear, 11, 1)),\n [safeMaxYear]\n )\n const minDate = React.useMemo(() => new Date(safeMinYear, 0, 1), [safeMinYear])\n const maxDate = React.useMemo(\n () => new Date(safeMaxYear, 11, 31),\n [safeMaxYear]\n )\n\n const years = React.useMemo(\n () =>\n Array.from(\n { length: safeMaxYear - safeMinYear + 1 },\n (_, yearIndex) => safeMinYear + yearIndex\n ),\n [safeMinYear, safeMaxYear]\n )\n\n const isControlled = value !== undefined\n const [internalValue, setInternalValue] = React.useState<DateRangePickerValue | undefined>(\n normalizeRange(defaultValue)\n )\n\n const committedValue = normalizeRange(isControlled ? value : internalValue)\n\n const buildPanelMonths = React.useCallback(\n (range: DateRangePickerValue | undefined) => {\n const now = startOfMonth(new Date())\n const initialStart = clampMonth(\n startOfMonth(range?.from ?? now),\n minMonth,\n maxMonth\n )\n\n const initialEndRaw = range?.to\n ? startOfMonth(range.to)\n : addMonths(initialStart, 1)\n const initialEnd = clampMonth(initialEndRaw, minMonth, maxMonth)\n\n return {\n start: initialStart,\n end: initialEnd,\n }\n },\n [minMonth, maxMonth]\n )\n\n const [open, setOpen] = React.useState(false)\n const [draftValue, setDraftValue] = React.useState<DateRangePickerValue | undefined>(\n committedValue\n )\n const initialMonths = buildPanelMonths(committedValue)\n const [startMonth, setStartMonth] = React.useState<Date>(initialMonths.start)\n const [endMonth, setEndMonth] = React.useState<Date>(initialMonths.end)\n\n const syncDraftState = React.useCallback(\n (nextValue: DateRangePickerValue | undefined) => {\n const normalized = normalizeRange(nextValue)\n setDraftValue(normalized)\n const nextMonths = buildPanelMonths(normalized)\n setStartMonth(nextMonths.start)\n setEndMonth(nextMonths.end)\n },\n [buildPanelMonths]\n )\n\n React.useEffect(() => {\n if (!open) {\n syncDraftState(committedValue)\n }\n }, [committedValue, open, syncDraftState])\n\n const handleStartMonthChange = (nextMonth: Date) => {\n setStartMonth(clampMonth(startOfMonth(nextMonth), minMonth, maxMonth))\n }\n\n const handleEndMonthChange = (nextMonth: Date) => {\n setEndMonth(clampMonth(startOfMonth(nextMonth), minMonth, maxMonth))\n }\n\n const handleStartDateSelect = (date: Date | undefined) => {\n if (!date) {\n return\n }\n\n setDraftValue((previousValue) => {\n const nextValue: DateRangePickerValue = {\n from: date,\n to: previousValue?.to,\n }\n\n if (nextValue.to && isAfter(date, nextValue.to)) {\n nextValue.to = date\n }\n\n return nextValue\n })\n }\n\n const handleEndDateSelect = (date: Date | undefined) => {\n if (!date) {\n return\n }\n\n setDraftValue((previousValue) => {\n const nextValue: DateRangePickerValue = {\n from: previousValue?.from,\n to: date,\n }\n\n if (nextValue.from && isAfter(nextValue.from, date)) {\n nextValue.from = date\n }\n\n return nextValue\n })\n }\n\n const handleCancel = () => {\n syncDraftState(committedValue)\n setOpen(false)\n }\n\n const handleApply = () => {\n const normalized = normalizeRange(draftValue)\n\n if (!isControlled) {\n setInternalValue(normalized)\n }\n\n onValueChange?.(normalized)\n setOpen(false)\n }\n\n const canApply = Boolean(draftValue?.from && draftValue?.to)\n const committedText = formatCommittedValue(committedValue, dateFormat)\n const draftText = formatDraftValue(draftValue, dateFormat)\n\n return (\n <div className={cn(\"w-full\", wrapperClassName)}>\n <Popover\n open={open}\n onOpenChange={(nextOpen) => {\n if (disabled) {\n return\n }\n\n if (nextOpen) {\n syncDraftState(committedValue)\n }\n\n setOpen(nextOpen)\n }}\n >\n <PopoverTrigger asChild>\n <button\n ref={ref}\n type=\"button\"\n disabled={disabled}\n className={cn(\n \"flex h-10 w-full items-center justify-between rounded-[8px] border border-[#e6e6e6] bg-white px-3 py-2 text-left text-[14px] leading-[20px] transition-colors\",\n \"focus-visible:outline-none focus-visible:border-[#1D1C20] focus-visible:ring-0\",\n \"disabled:cursor-not-allowed disabled:bg-[#f2f2f2] disabled:text-[#9ca3af] disabled:opacity-100\",\n className\n )}\n {...triggerProps}\n >\n <span\n className={cn(\n \"truncate text-[14px] font-normal leading-[20px]\",\n committedText ? \"text-[#111111]\" : \"text-[#b3b3b3]\"\n )}\n >\n {committedText || placeholder}\n </span>\n <CalendarDays className=\"ml-3 h-4 w-4 shrink-0 text-[#111111]\" />\n </button>\n </PopoverTrigger>\n\n <PopoverContent\n side={popoverSide}\n avoidCollisions={popoverAvoidCollisions}\n align=\"start\"\n sideOffset={10}\n className={cn(\n \"w-[min(95vw,760px)] max-h-[var(--radix-popover-content-available-height)] overflow-y-auto overscroll-contain rounded-xl border border-[#d8d8da] bg-[#f7f7f8] p-3 shadow-[0px_12px_24px_rgba(0,0,0,0.08)] sm:p-4\",\n popoverClassName\n )}\n >\n <div className=\"grid gap-3 md:grid-cols-2 md:gap-4\">\n <CalendarPanel\n label=\"Start date\"\n month={startMonth}\n minMonth={minMonth}\n maxMonth={maxMonth}\n minDate={minDate}\n maxDate={maxDate}\n selectedDate={draftValue?.from}\n disabledMatcher={draftValue?.to ? { after: draftValue.to } : undefined}\n disabled={disabled}\n years={years}\n onMonthChange={handleStartMonthChange}\n onSelectDate={handleStartDateSelect}\n />\n\n <CalendarPanel\n label=\"End date\"\n month={endMonth}\n minMonth={minMonth}\n maxMonth={maxMonth}\n minDate={minDate}\n maxDate={maxDate}\n selectedDate={draftValue?.to}\n disabledMatcher={draftValue?.from ? { before: draftValue.from } : undefined}\n disabled={disabled}\n years={years}\n onMonthChange={handleEndMonthChange}\n onSelectDate={handleEndDateSelect}\n />\n </div>\n\n <div className=\"mt-2.5 border-t border-[#d8d8da] pt-2.5\">\n <input\n readOnly\n value={draftText}\n className=\"h-9 w-full rounded-md border border-[#e6e6e6] bg-white px-3 py-2 text-sm leading-5 text-[#111111] outline-none transition-colors placeholder:text-[#b3b3b3] focus-visible:border-[#1D1C20]\"\n aria-label=\"Selected date range\"\n />\n\n <div className=\"mt-2.5 flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\">\n <Button\n type=\"button\"\n variant=\"outline\"\n className=\"h-9 rounded-md px-4 text-sm\"\n onClick={handleCancel}\n >\n Cancel\n </Button>\n <Button\n type=\"button\"\n className=\"h-9 rounded-md px-4 text-sm\"\n disabled={!canApply}\n onClick={handleApply}\n >\n Apply\n </Button>\n </div>\n </div>\n </PopoverContent>\n </Popover>\n </div>\n )\n }\n)\n\nDateRangePicker.displayName = \"DateRangePicker\"\n\nexport { DateRangePicker }\n"],"names":["DEFAULT_FORMAT","DEFAULT_PLACEHOLDER","MONTH_LABELS","_","monthIndex","clampMonth","month","minMonth","maxMonth","isBefore","isAfter","normalizeRange","value","formatDate","date","dateFormat","format","formatCommittedValue","fromText","toText","formatDraftValue","CalendarPanel","label","minDate","maxDate","selectedDate","disabledMatcher","disabled","years","onMonthChange","onSelectDate","handlePrevMonth","addMonths","handleNextMonth","isPrevDisabled","isNextDisabled","jsxs","jsx","cn","ChevronLeft","event","monthValue","setMonth","monthLabel","ChevronDown","yearValue","setYear","year","ChevronRight","DayPicker","DateRangePicker","React","defaultValue","onValueChange","wrapperClassName","popoverClassName","popoverSide","popoverAvoidCollisions","className","placeholder","minYear","maxYear","triggerProps","ref","safeMinYear","safeMaxYear","startOfMonth","yearIndex","isControlled","internalValue","setInternalValue","committedValue","buildPanelMonths","range","now","initialStart","initialEndRaw","initialEnd","open","setOpen","draftValue","setDraftValue","initialMonths","startMonth","setStartMonth","endMonth","setEndMonth","syncDraftState","nextValue","normalized","nextMonths","handleStartMonthChange","nextMonth","handleEndMonthChange","handleStartDateSelect","previousValue","handleEndDateSelect","handleCancel","handleApply","canApply","committedText","draftText","Popover","nextOpen","PopoverTrigger","CalendarDays","PopoverContent","Button"],"mappings":";;;;;;;;AA2CA,MAAMA,KAAiB,cACjBC,KAAsB,2BACtBC,KAAe,MAAM;AAAA,EAAK,EAAE,QAAQ,GAAA;AAAA,EAAM,CAACC,GAAGC,MAClD,IAAI,KAAK,MAAMA,GAAY,CAAC,EAAE,eAAe,WAAW,EAAE,OAAO,QAAQ;AAC3E,GAEMC,IAAa,CAACC,GAAaC,GAAgBC,MAC3CC,EAASH,GAAOC,CAAQ,IACnBA,IAGLG,EAAQJ,GAAOE,CAAQ,IAClBA,IAGFF,GAGHK,IAAiB,CACrBC,MACqC;AACrC,MAAI,GAACA,GAAO,QAAQ,CAACA,GAAO;AAI5B,WAAIA,EAAM,QAAQA,EAAM,MAAMF,EAAQE,EAAM,MAAMA,EAAM,EAAE,IACjD;AAAA,MACL,MAAMA,EAAM;AAAA,MACZ,IAAIA,EAAM;AAAA,IAAA,IAIP;AAAA,MACL,MAAMA,EAAM;AAAA,MACZ,IAAIA,EAAM;AAAA,IAAA;AAEd,GAEMC,IAAa,CAACC,GAAwBC,MAAuB;AACjE,MAAKD;AAIL,WAAOE,GAAOF,GAAMC,CAAU;AAChC,GAEME,KAAuB,CAC3BL,GACAG,MACG;AACH,QAAMG,IAAWL,EAAWD,GAAO,MAAMG,CAAU,GAC7CI,IAASN,EAAWD,GAAO,IAAIG,CAAU;AAE/C,SAAI,CAACG,KAAY,CAACC,IACT,KAGF,GAAGD,CAAQ,MAAMC,CAAM;AAChC,GAEMC,KAAmB,CACvBR,GACAG,MACG;AACH,QAAMG,IAAWL,EAAWD,GAAO,MAAMG,CAAU,KAAK,cAClDI,IAASN,EAAWD,GAAO,IAAIG,CAAU,KAAK;AAEpD,SAAO,GAAGG,CAAQ,MAAMC,CAAM;AAChC;AAiBA,SAASE,EAAc;AAAA,EACrB,OAAAC;AAAA,EACA,OAAAhB;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC;AAAA,EACA,SAAAe;AAAA,EACA,SAAAC;AAAA,EACA,cAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,UAAAC;AAAA,EACA,OAAAC;AAAA,EACA,eAAAC;AAAA,EACA,cAAAC;AACF,GAAuB;AACrB,QAAMC,IAAkB,MAAM;AAC5B,IAAAF,EAAcG,EAAU1B,GAAO,EAAE,CAAC;AAAA,EACpC,GAEM2B,IAAkB,MAAM;AAC5B,IAAAJ,EAAcG,EAAU1B,GAAO,CAAC,CAAC;AAAA,EACnC,GAEM4B,IAAiBP,KAAY,CAACjB,EAAQJ,GAAOC,CAAQ,GACrD4B,IAAiBR,KAAY,CAAClB,EAASH,GAAOE,CAAQ;AAE5D,SACE4B,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAU,kBACb,UAAA;AAAA,IAAAA,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAU,oDACb,UAAA;AAAA,MAAAC,gBAAAA,EAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,SAASN;AAAA,UACT,UAAUG;AAAA,UACV,WAAWI;AAAA,YACT;AAAA,YACA;AAAA,YACA;AAAA,UAAA;AAAA,UAEF,cAAY,sBAAsBhB,EAAM,YAAA,CAAa;AAAA,UAErD,UAAAe,gBAAAA,EAAAA,IAACE,IAAA,EAAY,WAAU,wBAAA,CAAwB;AAAA,QAAA;AAAA,MAAA;AAAA,MAGjDH,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAU,2BACb,UAAA;AAAA,QAAAC,gBAAAA,EAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,OAAO/B,EAAM,SAAA;AAAA,YACb,UAAU,CAACkC,MAAU;AACnB,oBAAMC,IAAa,OAAOD,EAAM,OAAO,KAAK;AAC5C,cAAAX,EAAca,GAASpC,GAAOmC,CAAU,CAAC;AAAA,YAC3C;AAAA,YACA,UAAAd;AAAA,YACA,WAAWW;AAAA,cACT;AAAA,cACA;AAAA,cACA;AAAA,YAAA;AAAA,YAEF,cAAY,aAAahB,EAAM,YAAA,CAAa;AAAA,YAE3C,UAAApB,GAAa,IAAI,CAACyC,GAAYvC,MAC7BiC,gBAAAA,EAAAA,IAAC,UAAA,EAAwB,OAAOjC,GAC7B,UAAAuC,EAAA,GADUA,CAEb,CACD;AAAA,UAAA;AAAA,QAAA;AAAA,QAEHN,gBAAAA,EAAAA,IAACO,GAAA,EAAY,WAAU,oGAAA,CAAoG;AAAA,MAAA,GAC7H;AAAA,MAEAR,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAU,4CACb,UAAA;AAAA,QAAAC,gBAAAA,EAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,OAAO/B,EAAM,YAAA;AAAA,YACb,UAAU,CAACkC,MAAU;AACnB,oBAAMK,IAAY,OAAOL,EAAM,OAAO,KAAK;AAC3C,cAAAX,EAAciB,GAAQxC,GAAOuC,CAAS,CAAC;AAAA,YACzC;AAAA,YACA,UAAAlB;AAAA,YACA,WAAWW;AAAA,cACT;AAAA,cACA;AAAA,cACA;AAAA,YAAA;AAAA,YAEF,cAAY,YAAYhB,EAAM,YAAA,CAAa;AAAA,YAE1C,UAAAM,EAAM,IAAI,CAACmB,MACVV,gBAAAA,EAAAA,IAAC,YAAkB,OAAOU,GACvB,UAAAA,EAAA,GADUA,CAEb,CACD;AAAA,UAAA;AAAA,QAAA;AAAA,QAEHV,gBAAAA,EAAAA,IAACO,GAAA,EAAY,WAAU,oGAAA,CAAoG;AAAA,MAAA,GAC7H;AAAA,MAEAP,gBAAAA,EAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,SAASJ;AAAA,UACT,UAAUE;AAAA,UACV,WAAWG;AAAA,YACT;AAAA,YACA;AAAA,YACA;AAAA,UAAA;AAAA,UAEF,cAAY,kBAAkBhB,EAAM,YAAA,CAAa;AAAA,UAEjD,UAAAe,gBAAAA,EAAAA,IAACW,IAAA,EAAa,WAAU,wBAAA,CAAwB;AAAA,QAAA;AAAA,MAAA;AAAA,IAClD,GACF;AAAA,IAEAX,gBAAAA,EAAAA,IAAC,KAAA,EAAE,WAAU,2EACV,UAAAf,GACH;AAAA,IAEAe,gBAAAA,EAAAA;AAAAA,MAACY;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,OAAA3C;AAAA,QACA,eAAAuB;AAAA,QACA,UAAUJ;AAAA,QACV,UAAUK;AAAA,QACV,iBAAe;AAAA,QACf,YAAU;AAAA,QACV,gBAAc;AAAA,QACd,UAAU;AAAA,UACR,EAAE,QAAQP,EAAA;AAAA,UACV,EAAE,OAAOC,EAAA;AAAA,UACT,GAAIE,IAAkB,CAACA,CAAe,IAAI,CAAA;AAAA,QAAC;AAAA,QAE7C,WAAU;AAAA,QACV,YAAY;AAAA,UACV,MAAM;AAAA,UACN,QAAQ;AAAA,UACR,OAAO;AAAA,UACP,eAAe;AAAA,UACf,YAAY;AAAA,UACZ,UAAU;AAAA,UACV,SACE;AAAA,UACF,OAAO;AAAA,UACP,MAAM;AAAA,UACN,KAAK;AAAA,UACL,YACE;AAAA,UACF,UACE;AAAA,UACF,OAAO;AAAA,UACP,SAAS;AAAA,UACT,UAAU;AAAA,UACV,QAAQ;AAAA,QAAA;AAAA,MACV;AAAA,IAAA;AAAA,EACF,GACF;AAEJ;AAEA,MAAMwB,KAAkBC,EAAM;AAAA,EAC5B,CACE;AAAA,IACE,OAAAvC;AAAA,IACA,cAAAwC;AAAA,IACA,eAAAC;AAAA,IACA,kBAAAC;AAAA,IACA,kBAAAC;AAAA,IACA,aAAAC,IAAc;AAAA,IACd,wBAAAC,IAAyB;AAAA,IACzB,WAAAC;AAAA,IACA,aAAAC,IAAc1D;AAAA,IACd,YAAAc,IAAaf;AAAA,IACb,SAAA4D,IAAU;AAAA,IACV,SAAAC,IAAU;AAAA,IACV,UAAAlC;AAAA,IACA,GAAGmC;AAAA,EAAA,GAELC,MACG;AACH,UAAMC,IAAc,KAAK,IAAIJ,GAASC,CAAO,GACvCI,IAAc,KAAK,IAAIL,GAASC,CAAO,GAEvCtD,IAAW4C,EAAM;AAAA,MACrB,MAAMe,EAAa,IAAI,KAAKF,GAAa,GAAG,CAAC,CAAC;AAAA,MAC9C,CAACA,CAAW;AAAA,IAAA,GAERxD,IAAW2C,EAAM;AAAA,MACrB,MAAMe,EAAa,IAAI,KAAKD,GAAa,IAAI,CAAC,CAAC;AAAA,MAC/C,CAACA,CAAW;AAAA,IAAA,GAER1C,IAAU4B,EAAM,QAAQ,MAAM,IAAI,KAAKa,GAAa,GAAG,CAAC,GAAG,CAACA,CAAW,CAAC,GACxExC,IAAU2B,EAAM;AAAA,MACpB,MAAM,IAAI,KAAKc,GAAa,IAAI,EAAE;AAAA,MAClC,CAACA,CAAW;AAAA,IAAA,GAGRrC,IAAQuB,EAAM;AAAA,MAClB,MACE,MAAM;AAAA,QACJ,EAAE,QAAQc,IAAcD,IAAc,EAAA;AAAA,QACtC,CAAC7D,GAAGgE,MAAcH,IAAcG;AAAA,MAAA;AAAA,MAEpC,CAACH,GAAaC,CAAW;AAAA,IAAA,GAGrBG,IAAexD,MAAU,QACzB,CAACyD,GAAeC,CAAgB,IAAInB,EAAM;AAAA,MAC9CxC,EAAeyC,CAAY;AAAA,IAAA,GAGvBmB,IAAiB5D,EAAeyD,IAAexD,IAAQyD,CAAa,GAEpEG,IAAmBrB,EAAM;AAAA,MAC7B,CAACsB,MAA4C;AAC3C,cAAMC,IAAMR,EAAa,oBAAI,MAAM,GAC7BS,IAAetE;AAAA,UACnB6D,EAAaO,GAAO,QAAQC,CAAG;AAAA,UAC/BnE;AAAA,UACAC;AAAA,QAAA,GAGIoE,KAAgBH,GAAO,KACzBP,EAAaO,EAAM,EAAE,IACrBzC,EAAU2C,GAAc,CAAC,GACvBE,KAAaxE,EAAWuE,IAAerE,GAAUC,CAAQ;AAE/D,eAAO;AAAA,UACL,OAAOmE;AAAA,UACP,KAAKE;AAAA,QAAA;AAAA,MAET;AAAA,MACA,CAACtE,GAAUC,CAAQ;AAAA,IAAA,GAGf,CAACsE,GAAMC,CAAO,IAAI5B,EAAM,SAAS,EAAK,GACtC,CAAC6B,GAAYC,CAAa,IAAI9B,EAAM;AAAA,MACxCoB;AAAA,IAAA,GAEIW,IAAgBV,EAAiBD,CAAc,GAC/C,CAACY,GAAYC,CAAa,IAAIjC,EAAM,SAAe+B,EAAc,KAAK,GACtE,CAACG,GAAUC,CAAW,IAAInC,EAAM,SAAe+B,EAAc,GAAG,GAEhEK,IAAiBpC,EAAM;AAAA,MAC3B,CAACqC,MAAgD;AAC/C,cAAMC,IAAa9E,EAAe6E,CAAS;AAC3C,QAAAP,EAAcQ,CAAU;AACxB,cAAMC,IAAalB,EAAiBiB,CAAU;AAC9C,QAAAL,EAAcM,EAAW,KAAK,GAC9BJ,EAAYI,EAAW,GAAG;AAAA,MAC5B;AAAA,MACA,CAAClB,CAAgB;AAAA,IAAA;AAGnB,IAAArB,EAAM,UAAU,MAAM;AACpB,MAAK2B,KACHS,EAAehB,CAAc;AAAA,IAEjC,GAAG,CAACA,GAAgBO,GAAMS,CAAc,CAAC;AAEzC,UAAMI,KAAyB,CAACC,MAAoB;AAClD,MAAAR,EAAc/E,EAAW6D,EAAa0B,CAAS,GAAGrF,GAAUC,CAAQ,CAAC;AAAA,IACvE,GAEMqF,KAAuB,CAACD,MAAoB;AAChD,MAAAN,EAAYjF,EAAW6D,EAAa0B,CAAS,GAAGrF,GAAUC,CAAQ,CAAC;AAAA,IACrE,GAEMsF,KAAwB,CAAChF,MAA2B;AACxD,MAAKA,KAILmE,EAAc,CAACc,MAAkB;AAC/B,cAAMP,IAAkC;AAAA,UACtC,MAAM1E;AAAA,UACN,IAAIiF,GAAe;AAAA,QAAA;AAGrB,eAAIP,EAAU,MAAM9E,EAAQI,GAAM0E,EAAU,EAAE,MAC5CA,EAAU,KAAK1E,IAGV0E;AAAA,MACT,CAAC;AAAA,IACH,GAEMQ,KAAsB,CAAClF,MAA2B;AACtD,MAAKA,KAILmE,EAAc,CAACc,MAAkB;AAC/B,cAAMP,IAAkC;AAAA,UACtC,MAAMO,GAAe;AAAA,UACrB,IAAIjF;AAAA,QAAA;AAGN,eAAI0E,EAAU,QAAQ9E,EAAQ8E,EAAU,MAAM1E,CAAI,MAChD0E,EAAU,OAAO1E,IAGZ0E;AAAA,MACT,CAAC;AAAA,IACH,GAEMS,KAAe,MAAM;AACzB,MAAAV,EAAehB,CAAc,GAC7BQ,EAAQ,EAAK;AAAA,IACf,GAEMmB,KAAc,MAAM;AACxB,YAAMT,IAAa9E,EAAeqE,CAAU;AAE5C,MAAKZ,KACHE,EAAiBmB,CAAU,GAG7BpC,IAAgBoC,CAAU,GAC1BV,EAAQ,EAAK;AAAA,IACf,GAEMoB,KAAW,GAAQnB,GAAY,QAAQA,GAAY,KACnDoB,IAAgBnF,GAAqBsD,GAAgBxD,CAAU,GAC/DsF,KAAYjF,GAAiB4D,GAAYjE,CAAU;AAEzD,iCACG,OAAA,EAAI,WAAWuB,EAAG,UAAUgB,CAAgB,GAC3C,UAAAlB,gBAAAA,EAAAA;AAAAA,MAACkE;AAAA,MAAA;AAAA,QACC,MAAAxB;AAAA,QACA,cAAc,CAACyB,MAAa;AAC1B,UAAI5E,MAIA4E,KACFhB,EAAehB,CAAc,GAG/BQ,EAAQwB,CAAQ;AAAA,QAClB;AAAA,QAEA,UAAA;AAAA,UAAAlE,gBAAAA,EAAAA,IAACmE,IAAA,EAAe,SAAO,IACrB,UAAApE,gBAAAA,EAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACC,KAAA2B;AAAA,cACA,MAAK;AAAA,cACL,UAAApC;AAAA,cACA,WAAWW;AAAA,gBACT;AAAA,gBACA;AAAA,gBACA;AAAA,gBACAoB;AAAA,cAAA;AAAA,cAED,GAAGI;AAAA,cAEJ,UAAA;AAAA,gBAAAzB,gBAAAA,EAAAA;AAAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,WAAWC;AAAA,sBACT;AAAA,sBACA8D,IAAgB,mBAAmB;AAAA,oBAAA;AAAA,oBAGpC,UAAAA,KAAiBzC;AAAA,kBAAA;AAAA,gBAAA;AAAA,gBAEpBtB,gBAAAA,EAAAA,IAACoE,IAAA,EAAa,WAAU,uCAAA,CAAuC;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA,GAEnE;AAAA,UAEArE,gBAAAA,EAAAA;AAAAA,YAACsE;AAAA,YAAA;AAAA,cACC,MAAMlD;AAAA,cACN,iBAAiBC;AAAA,cACjB,OAAM;AAAA,cACN,YAAY;AAAA,cACZ,WAAWnB;AAAA,gBACT;AAAA,gBACAiB;AAAA,cAAA;AAAA,cAGF,UAAA;AAAA,gBAAAnB,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAU,sCACb,UAAA;AAAA,kBAAAC,gBAAAA,EAAAA;AAAAA,oBAAChB;AAAA,oBAAA;AAAA,sBACC,OAAM;AAAA,sBACN,OAAO8D;AAAA,sBACP,UAAA5E;AAAA,sBACA,UAAAC;AAAA,sBACA,SAAAe;AAAA,sBACA,SAAAC;AAAA,sBACA,cAAcwD,GAAY;AAAA,sBAC1B,iBAAiBA,GAAY,KAAK,EAAE,OAAOA,EAAW,OAAO;AAAA,sBAC7D,UAAArD;AAAA,sBACA,OAAAC;AAAA,sBACA,eAAe+D;AAAA,sBACf,cAAcG;AAAA,oBAAA;AAAA,kBAAA;AAAA,kBAGhBzD,gBAAAA,EAAAA;AAAAA,oBAAChB;AAAA,oBAAA;AAAA,sBACC,OAAM;AAAA,sBACN,OAAOgE;AAAA,sBACP,UAAA9E;AAAA,sBACA,UAAAC;AAAA,sBACA,SAAAe;AAAA,sBACA,SAAAC;AAAA,sBACA,cAAcwD,GAAY;AAAA,sBAC1B,iBAAiBA,GAAY,OAAO,EAAE,QAAQA,EAAW,SAAS;AAAA,sBAClE,UAAArD;AAAA,sBACA,OAAAC;AAAA,sBACA,eAAeiE;AAAA,sBACf,cAAcG;AAAA,oBAAA;AAAA,kBAAA;AAAA,gBAChB,GACF;AAAA,gBAEA5D,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAU,2CACb,UAAA;AAAA,kBAAAC,gBAAAA,EAAAA;AAAAA,oBAAC;AAAA,oBAAA;AAAA,sBACC,UAAQ;AAAA,sBACR,OAAOgE;AAAA,sBACP,WAAU;AAAA,sBACV,cAAW;AAAA,oBAAA;AAAA,kBAAA;AAAA,kBAGbjE,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAU,iEACb,UAAA;AAAA,oBAAAC,gBAAAA,EAAAA;AAAAA,sBAACsE;AAAA,sBAAA;AAAA,wBACC,MAAK;AAAA,wBACL,SAAQ;AAAA,wBACR,WAAU;AAAA,wBACV,SAASV;AAAA,wBACV,UAAA;AAAA,sBAAA;AAAA,oBAAA;AAAA,oBAGD5D,gBAAAA,EAAAA;AAAAA,sBAACsE;AAAA,sBAAA;AAAA,wBACC,MAAK;AAAA,wBACL,WAAU;AAAA,wBACV,UAAU,CAACR;AAAA,wBACX,SAASD;AAAA,wBACV,UAAA;AAAA,sBAAA;AAAA,oBAAA;AAAA,kBAED,EAAA,CACF;AAAA,gBAAA,EAAA,CACF;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA;AAAA,QACF;AAAA,MAAA;AAAA,IAAA,GAEJ;AAAA,EAEJ;AACF;AAEAhD,GAAgB,cAAc;"}
@@ -1,180 +1,154 @@
1
- import * as e from "react";
2
- import { Globe as R, ChevronDown as U, Check as j } from "lucide-react";
3
- import * as G from "./index.es61.js";
4
- import { cn as r } from "./index.es60.js";
5
- import { Command as L, CommandInput as M, CommandList as Y, CommandEmpty as $, CommandGroup as B, CommandItem as D } from "./index.es19.js";
6
- import { Popover as H, PopoverTrigger as V, PopoverContent as q } from "./index.es41.js";
7
- import { PHONE_COUNTRY_OPTIONS as z } from "./index.es33.js";
8
- const J = z, K = G, Q = (c) => {
9
- const o = Array.from(c);
10
- if (o.length !== 2)
11
- return null;
12
- const n = o.map((a) => {
13
- const l = a.codePointAt(0);
14
- return !l || l < 127462 || l > 127487 ? null : String.fromCharCode(l - 127462 + 65);
15
- });
16
- return n.some((a) => a === null) ? null : n.join("");
17
- }, _ = ({
18
- flag: c,
19
- className: o
20
- }) => {
21
- const n = e.useMemo(
22
- () => Q(c),
23
- [c]
24
- ), a = n ? K[n] : void 0;
25
- return a ? /* @__PURE__ */ e.createElement(
26
- a,
1
+ import { j as r } from "./index.es62.js";
2
+ import { cva as o } from "class-variance-authority";
3
+ import { cn as e } from "./index.es63.js";
4
+ import { Button as u } from "./index.es10.js";
5
+ import { Input as p } from "./index.es29.js";
6
+ import { Textarea as d } from "./index.es58.js";
7
+ function v({ className: a, ...t }) {
8
+ return /* @__PURE__ */ r.jsx(
9
+ "div",
27
10
  {
28
- "aria-hidden": "true",
29
- className: r("h-3.5 w-5 shrink-0 rounded-[2px] object-cover", o)
11
+ "data-slot": "input-group",
12
+ role: "group",
13
+ className: e(
14
+ "group/input-group relative flex w-full items-center rounded-[8px] border border-[#e6e6e6] bg-white text-[14px] leading-[20px] text-foreground transition-colors",
15
+ "h-10 has-[>textarea]:h-auto",
16
+ // Variants based on alignment.
17
+ "has-[>[data-align=inline-start]]:[&>input]:pl-2",
18
+ "has-[>[data-align=inline-end]]:[&>input]:pr-2",
19
+ "has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>[data-align=block-start]]:[&>input]:pb-3",
20
+ "has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-end]]:[&>input]:pt-3",
21
+ // Focus state.
22
+ "focus-within:border-[#1D1C20]",
23
+ // Error state.
24
+ "has-[[data-slot][aria-invalid=true]]:border-[#ff3b30]",
25
+ // Disabled state.
26
+ "data-[disabled=true]:cursor-not-allowed data-[disabled=true]:bg-[#f2f2f2] data-[disabled=true]:text-[#9ca3af]",
27
+ a
28
+ ),
29
+ ...t
30
30
  }
31
- ) : /* @__PURE__ */ e.createElement("span", { "aria-hidden": "true", className: o }, c);
32
- }, W = e.forwardRef(
33
- ({
34
- className: c,
35
- inputClassName: o,
36
- label: n = "Phone number",
37
- helperText: a,
38
- error: l,
39
- country: s,
40
- defaultCountry: N,
41
- countryOptions: d = J,
42
- onCountryChange: x,
43
- disabled: m,
44
- type: k = "tel",
45
- onFocus: C,
46
- onBlur: v,
47
- placeholder: y = "Enter phone number",
48
- ...u
49
- }, S) => {
50
- const [f, b] = e.useState(!1), [P, g] = e.useState(!1), [I, O] = e.useState(
51
- N
52
- ), i = s ?? I, p = e.useMemo(
53
- () => d.find((t) => t.value === i),
54
- [d, i]
55
- ), F = e.useCallback(
56
- (t) => {
57
- s === void 0 && O(t.value), x?.(t), b(!1);
58
- },
59
- [s, x]
60
- ), T = u["aria-invalid"] === !0 || u["aria-invalid"] === "true", A = !!l || T, h = f || P;
61
- return /* @__PURE__ */ e.createElement("div", { className: r("flex w-full flex-col items-start gap-1", c) }, n ? /* @__PURE__ */ e.createElement("p", { className: "w-full text-[14px] font-medium leading-[20px] text-black" }, n) : null, /* @__PURE__ */ e.createElement(
62
- "div",
63
- {
64
- className: r(
65
- "flex h-10 w-full items-stretch overflow-hidden rounded-[8px] border bg-white transition-colors",
66
- m ? "border-[#e6e6e6] bg-[#f2f2f2]" : A ? "border-[#ff3b30]" : h ? "border-[#1d1c20]" : "border-[#e6e6e6]"
67
- )
31
+ );
32
+ }
33
+ const l = o(
34
+ "flex h-auto cursor-text select-none items-center justify-center gap-2 py-1.5 text-sm font-medium text-[#7f7d83] group-data-[disabled=true]/input-group:text-[#b3b3b3] [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4",
35
+ {
36
+ variants: {
37
+ align: {
38
+ "inline-start": "order-first pl-3 has-[>button]:ml-[-0.45rem] has-[>kbd]:ml-[-0.35rem]",
39
+ "inline-end": "order-last pr-3 has-[>button]:mr-[-0.4rem] has-[>kbd]:mr-[-0.35rem]",
40
+ "block-start": "[.border-b]:pb-3 order-first w-full justify-start px-3 pt-3 group-has-[>input]/input-group:pt-2.5",
41
+ "block-end": "[.border-t]:pt-3 order-last w-full justify-start px-3 pb-3 group-has-[>input]/input-group:pb-2.5"
42
+ }
43
+ },
44
+ defaultVariants: {
45
+ align: "inline-start"
46
+ }
47
+ }
48
+ );
49
+ function k({
50
+ className: a,
51
+ align: t = "inline-start",
52
+ ...s
53
+ }) {
54
+ return /* @__PURE__ */ r.jsx(
55
+ "div",
56
+ {
57
+ role: "group",
58
+ "data-slot": "input-group-addon",
59
+ "data-align": t,
60
+ className: e(l({ align: t }), a),
61
+ onClick: (n) => {
62
+ n.target.closest("button") || n.currentTarget.parentElement?.querySelector("input")?.focus();
68
63
  },
69
- /* @__PURE__ */ e.createElement(
70
- H,
71
- {
72
- open: f,
73
- onOpenChange: (t) => {
74
- m || b(t);
75
- }
76
- },
77
- /* @__PURE__ */ e.createElement(V, { asChild: !0 }, /* @__PURE__ */ e.createElement(
78
- "button",
79
- {
80
- type: "button",
81
- disabled: m,
82
- "aria-label": "Select country",
83
- className: r(
84
- "flex h-full shrink-0 items-center gap-1 px-2 text-[14px] leading-[20px] outline-none transition-colors",
85
- p ? h ? "bg-white" : "bg-[#fafafa]" : "bg-white",
86
- m && "bg-[#f2f2f2] text-[#b3b3b3]"
87
- )
88
- },
89
- p ? /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(_, { flag: p.flag }), /* @__PURE__ */ e.createElement("span", { className: "font-normal text-black" }, p.label)) : /* @__PURE__ */ e.createElement(R, { className: "h-4 w-4 text-[#adacb0]" }),
90
- /* @__PURE__ */ e.createElement(U, { className: "h-4 w-4 text-[#adacb0]" })
91
- )),
92
- /* @__PURE__ */ e.createElement(
93
- q,
94
- {
95
- align: "start",
96
- sideOffset: 8,
97
- className: "w-[240px] rounded-[8px] border border-[#e6e6e6] bg-white p-0 shadow-[0px_2px_4px_0px_rgba(19,25,39,0.12),0px_4px_4px_0px_rgba(19,25,39,0.08)]"
98
- },
99
- /* @__PURE__ */ e.createElement(
100
- L,
101
- {
102
- className: r(
103
- "rounded-[8px] bg-white",
104
- "[&_[cmdk-input-wrapper]]:mx-2 [&_[cmdk-input-wrapper]]:mb-1 [&_[cmdk-input-wrapper]]:mt-2 [&_[cmdk-input-wrapper]]:h-8 [&_[cmdk-input-wrapper]]:rounded-[4px] [&_[cmdk-input-wrapper]]:border [&_[cmdk-input-wrapper]]:border-[#e6e6e6] [&_[cmdk-input-wrapper]]:px-3",
105
- "[&_[cmdk-input-wrapper]_svg]:mr-2 [&_[cmdk-input-wrapper]_svg]:h-4 [&_[cmdk-input-wrapper]_svg]:w-4 [&_[cmdk-input-wrapper]_svg]:text-[#adacb0]",
106
- "[&_[cmdk-input]]:h-full [&_[cmdk-input]]:py-0 [&_[cmdk-input]]:text-[14px] [&_[cmdk-input]]:leading-[20px] [&_[cmdk-input]]:text-black [&_[cmdk-input]]:placeholder:text-[#adacb0]"
107
- )
108
- },
109
- /* @__PURE__ */ e.createElement(M, { placeholder: "Search country" }),
110
- /* @__PURE__ */ e.createElement(Y, { className: "max-h-56 px-1 pb-1" }, /* @__PURE__ */ e.createElement($, { className: "px-3 py-2 text-left text-[12px] leading-[16px] text-[#7f7d83]" }, "No country found"), /* @__PURE__ */ e.createElement(B, { className: "p-0" }, d.map((t) => {
111
- const w = t.value === i, E = t.name || t.label;
112
- return /* @__PURE__ */ e.createElement(
113
- D,
114
- {
115
- key: t.value,
116
- value: `${t.label} ${E} ${t.dialCode}`,
117
- onSelect: () => F(t),
118
- className: r(
119
- "flex w-full cursor-pointer items-center gap-2 rounded-[4px] px-3 py-2 text-[14px] leading-[20px] text-black",
120
- "data-[selected=true]:bg-[#fafafa] data-[selected=true]:text-black",
121
- w && "bg-[#fafafa]"
122
- )
123
- },
124
- /* @__PURE__ */ e.createElement(_, { flag: t.flag }),
125
- /* @__PURE__ */ e.createElement("span", { className: "min-w-0 flex-1 truncate" }, E),
126
- t.dialCode ? /* @__PURE__ */ e.createElement("span", { className: "text-[#7f7d83]" }, t.dialCode) : null,
127
- /* @__PURE__ */ e.createElement(
128
- j,
129
- {
130
- className: r(
131
- "h-4 w-4 text-[#1d1c20]",
132
- w ? "opacity-100" : "opacity-0"
133
- )
134
- }
135
- )
136
- );
137
- })))
138
- )
139
- )
140
- ),
141
- /* @__PURE__ */ e.createElement(
142
- "div",
143
- {
144
- className: r(
145
- "flex min-w-0 flex-1 items-center gap-2 border-l border-[#e6e6e6] bg-white px-3 py-2",
146
- m && "bg-[#f2f2f2]"
147
- )
148
- },
149
- p?.dialCode ? /* @__PURE__ */ e.createElement("span", { className: "shrink-0 text-[14px] leading-[20px] text-[#7f7d83]" }, p.dialCode) : null,
150
- /* @__PURE__ */ e.createElement(
151
- "input",
152
- {
153
- ref: S,
154
- disabled: m,
155
- placeholder: y,
156
- onFocus: (t) => {
157
- g(!0), C?.(t);
158
- },
159
- onBlur: (t) => {
160
- g(!1), v?.(t);
161
- },
162
- className: r(
163
- "h-full w-full min-w-0 border-0 bg-transparent p-0 text-[14px] leading-[20px] text-black outline-none placeholder:text-[#adacb0]",
164
- m && "cursor-not-allowed text-[#9ca3af] placeholder:text-[#b3b3b3]",
165
- o
166
- ),
167
- type: k,
168
- ...u
169
- }
170
- )
171
- )
172
- ), l ? /* @__PURE__ */ e.createElement("p", { className: "w-full text-[12px] leading-[16px] text-[#ff3b30]" }, l) : a ? /* @__PURE__ */ e.createElement("p", { className: "w-full text-[12px] leading-[16px] text-[#7f7d83]" }, a) : null);
64
+ ...s
65
+ }
66
+ );
67
+ }
68
+ const c = o(
69
+ "flex items-center gap-2 text-sm shadow-none",
70
+ {
71
+ variants: {
72
+ size: {
73
+ xs: "h-6 gap-1 rounded-[calc(var(--radius)-5px)] px-2 has-[>svg]:px-2 [&>svg:not([class*='size-'])]:size-3.5",
74
+ sm: "h-8 gap-1.5 rounded-md px-2.5 has-[>svg]:px-2.5",
75
+ "icon-xs": "size-6 rounded-[calc(var(--radius)-5px)] p-0 has-[>svg]:p-0",
76
+ "icon-sm": "size-8 p-0 has-[>svg]:p-0"
77
+ }
78
+ },
79
+ defaultVariants: {
80
+ size: "xs"
81
+ }
173
82
  }
174
83
  );
175
- W.displayName = "PhoneInput";
84
+ function j({
85
+ className: a,
86
+ type: t = "button",
87
+ variant: s = "ghost",
88
+ size: n = "xs",
89
+ ...i
90
+ }) {
91
+ return /* @__PURE__ */ r.jsx(
92
+ u,
93
+ {
94
+ type: t,
95
+ "data-size": n,
96
+ variant: s,
97
+ className: e(c({ size: n }), a),
98
+ ...i
99
+ }
100
+ );
101
+ }
102
+ function z({ className: a, ...t }) {
103
+ return /* @__PURE__ */ r.jsx(
104
+ "span",
105
+ {
106
+ className: e(
107
+ "text-muted-foreground flex items-center gap-2 text-sm [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none",
108
+ a
109
+ ),
110
+ ...t
111
+ }
112
+ );
113
+ }
114
+ function w({
115
+ className: a,
116
+ ...t
117
+ }) {
118
+ return /* @__PURE__ */ r.jsx(
119
+ p,
120
+ {
121
+ "data-slot": "input-group-control",
122
+ className: e(
123
+ "flex-1 rounded-none border-0 bg-transparent shadow-none focus-visible:ring-0 dark:bg-transparent",
124
+ a
125
+ ),
126
+ ...t
127
+ }
128
+ );
129
+ }
130
+ function G({
131
+ className: a,
132
+ ...t
133
+ }) {
134
+ return /* @__PURE__ */ r.jsx(
135
+ d,
136
+ {
137
+ "data-slot": "input-group-control",
138
+ className: e(
139
+ "flex-1 resize-none rounded-none border-0 bg-transparent py-3 shadow-none focus-visible:ring-0 dark:bg-transparent",
140
+ a
141
+ ),
142
+ ...t
143
+ }
144
+ );
145
+ }
176
146
  export {
177
- J as DEFAULT_COUNTRY_OPTIONS,
178
- W as PhoneInput
147
+ v as InputGroup,
148
+ k as InputGroupAddon,
149
+ j as InputGroupButton,
150
+ w as InputGroupInput,
151
+ z as InputGroupText,
152
+ G as InputGroupTextarea
179
153
  };
180
154
  //# sourceMappingURL=index.es32.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.es32.js","sources":["../src/components/ui/phone-input.tsx"],"sourcesContent":["import * as React from \"react\"\nimport { Check, ChevronDown, Globe } from \"lucide-react\"\nimport * as CountryFlags from \"country-flag-icons/react/3x2\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from \"@/components/ui/command\"\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"@/components/ui/popover\"\n\nimport {\n PHONE_COUNTRY_OPTIONS,\n type PhoneCountryOption,\n} from \"./phone-countries\"\n\nconst DEFAULT_COUNTRY_OPTIONS = PHONE_COUNTRY_OPTIONS\ntype FlagComponent = React.ComponentType<React.SVGProps<SVGSVGElement>>\n\nconst COUNTRY_FLAG_COMPONENTS = CountryFlags as Record<string, FlagComponent>\n\nexport interface PhoneInputProps\n extends Omit<React.ComponentProps<\"input\">, \"className\"> {\n className?: string\n inputClassName?: string\n label?: string\n helperText?: string\n error?: string\n country?: string\n defaultCountry?: string\n countryOptions?: PhoneCountryOption[]\n onCountryChange?: (country: PhoneCountryOption) => void\n}\n\nconst getCountryCodeFromFlagEmoji = (flag: string): string | null => {\n const symbols = Array.from(flag)\n if (symbols.length !== 2) {\n return null\n }\n\n const letters = symbols.map((symbol) => {\n const codePoint = symbol.codePointAt(0)\n if (!codePoint || codePoint < 0x1f1e6 || codePoint > 0x1f1ff) {\n return null\n }\n return String.fromCharCode(codePoint - 0x1f1e6 + 65)\n })\n\n if (letters.some((letter) => letter === null)) {\n return null\n }\n\n return letters.join(\"\")\n}\n\nconst FlagIcon = ({\n flag,\n className,\n}: {\n flag: string\n className?: string\n}) => {\n const countryCode = React.useMemo(\n () => getCountryCodeFromFlagEmoji(flag),\n [flag]\n )\n const SvgFlag = countryCode ? COUNTRY_FLAG_COMPONENTS[countryCode] : undefined\n\n if (SvgFlag) {\n return (\n <SvgFlag\n aria-hidden=\"true\"\n className={cn(\"h-3.5 w-5 shrink-0 rounded-[2px] object-cover\", className)}\n />\n )\n }\n\n return (\n <span aria-hidden=\"true\" className={className}>\n {flag}\n </span>\n )\n}\n\nconst PhoneInput = React.forwardRef<HTMLInputElement, PhoneInputProps>(\n (\n {\n className,\n inputClassName,\n label = \"Phone number\",\n helperText,\n error,\n country,\n defaultCountry,\n countryOptions = DEFAULT_COUNTRY_OPTIONS,\n onCountryChange,\n disabled,\n type = \"tel\",\n onFocus,\n onBlur,\n placeholder = \"Enter phone number\",\n ...props\n },\n ref\n ) => {\n const [open, setOpen] = React.useState(false)\n const [isInputFocused, setIsInputFocused] = React.useState(false)\n const [uncontrolledCountry, setUncontrolledCountry] = React.useState(\n defaultCountry\n )\n\n const selectedCountryValue = country ?? uncontrolledCountry\n\n const selectedCountry = React.useMemo(\n () =>\n countryOptions.find((option) => option.value === selectedCountryValue),\n [countryOptions, selectedCountryValue]\n )\n\n const handleCountrySelect = React.useCallback(\n (option: PhoneCountryOption) => {\n if (country === undefined) {\n setUncontrolledCountry(option.value)\n }\n onCountryChange?.(option)\n setOpen(false)\n },\n [country, onCountryChange]\n )\n\n const isAriaInvalid =\n props[\"aria-invalid\"] === true || props[\"aria-invalid\"] === \"true\"\n const hasError = Boolean(error) || isAriaInvalid\n const isActive = open || isInputFocused\n\n return (\n <div className={cn(\"flex w-full flex-col items-start gap-1\", className)}>\n {label ? (\n <p className=\"w-full text-[14px] font-medium leading-[20px] text-black\">\n {label}\n </p>\n ) : null}\n\n <div\n className={cn(\n \"flex h-10 w-full items-stretch overflow-hidden rounded-[8px] border bg-white transition-colors\",\n disabled\n ? \"border-[#e6e6e6] bg-[#f2f2f2]\"\n : hasError\n ? \"border-[#ff3b30]\"\n : isActive\n ? \"border-[#1d1c20]\"\n : \"border-[#e6e6e6]\"\n )}\n >\n <Popover\n open={open}\n onOpenChange={(nextOpen) => {\n if (disabled) {\n return\n }\n setOpen(nextOpen)\n }}\n >\n <PopoverTrigger asChild>\n <button\n type=\"button\"\n disabled={disabled}\n aria-label=\"Select country\"\n className={cn(\n \"flex h-full shrink-0 items-center gap-1 px-2 text-[14px] leading-[20px] outline-none transition-colors\",\n selectedCountry\n ? isActive\n ? \"bg-white\"\n : \"bg-[#fafafa]\"\n : \"bg-white\",\n disabled && \"bg-[#f2f2f2] text-[#b3b3b3]\"\n )}\n >\n {selectedCountry ? (\n <>\n <FlagIcon flag={selectedCountry.flag} />\n <span className=\"font-normal text-black\">\n {selectedCountry.label}\n </span>\n </>\n ) : (\n <Globe className=\"h-4 w-4 text-[#adacb0]\" />\n )}\n <ChevronDown className=\"h-4 w-4 text-[#adacb0]\" />\n </button>\n </PopoverTrigger>\n\n <PopoverContent\n align=\"start\"\n sideOffset={8}\n className=\"w-[240px] rounded-[8px] border border-[#e6e6e6] bg-white p-0 shadow-[0px_2px_4px_0px_rgba(19,25,39,0.12),0px_4px_4px_0px_rgba(19,25,39,0.08)]\"\n >\n <Command\n className={cn(\n \"rounded-[8px] bg-white\",\n \"[&_[cmdk-input-wrapper]]:mx-2 [&_[cmdk-input-wrapper]]:mb-1 [&_[cmdk-input-wrapper]]:mt-2 [&_[cmdk-input-wrapper]]:h-8 [&_[cmdk-input-wrapper]]:rounded-[4px] [&_[cmdk-input-wrapper]]:border [&_[cmdk-input-wrapper]]:border-[#e6e6e6] [&_[cmdk-input-wrapper]]:px-3\",\n \"[&_[cmdk-input-wrapper]_svg]:mr-2 [&_[cmdk-input-wrapper]_svg]:h-4 [&_[cmdk-input-wrapper]_svg]:w-4 [&_[cmdk-input-wrapper]_svg]:text-[#adacb0]\",\n \"[&_[cmdk-input]]:h-full [&_[cmdk-input]]:py-0 [&_[cmdk-input]]:text-[14px] [&_[cmdk-input]]:leading-[20px] [&_[cmdk-input]]:text-black [&_[cmdk-input]]:placeholder:text-[#adacb0]\"\n )}\n >\n <CommandInput placeholder=\"Search country\" />\n <CommandList className=\"max-h-56 px-1 pb-1\">\n <CommandEmpty className=\"px-3 py-2 text-left text-[12px] leading-[16px] text-[#7f7d83]\">\n No country found\n </CommandEmpty>\n <CommandGroup className=\"p-0\">\n {countryOptions.map((option) => {\n const isSelected = option.value === selectedCountryValue\n const optionName = option.name || option.label\n\n return (\n <CommandItem\n key={option.value}\n value={`${option.label} ${optionName} ${option.dialCode}`}\n onSelect={() => handleCountrySelect(option)}\n className={cn(\n \"flex w-full cursor-pointer items-center gap-2 rounded-[4px] px-3 py-2 text-[14px] leading-[20px] text-black\",\n \"data-[selected=true]:bg-[#fafafa] data-[selected=true]:text-black\",\n isSelected && \"bg-[#fafafa]\"\n )}\n >\n <FlagIcon flag={option.flag} />\n <span className=\"min-w-0 flex-1 truncate\">{optionName}</span>\n {option.dialCode ? (\n <span className=\"text-[#7f7d83]\">{option.dialCode}</span>\n ) : null}\n <Check\n className={cn(\n \"h-4 w-4 text-[#1d1c20]\",\n isSelected ? \"opacity-100\" : \"opacity-0\"\n )}\n />\n </CommandItem>\n )\n })}\n </CommandGroup>\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n\n <div\n className={cn(\n \"flex min-w-0 flex-1 items-center gap-2 border-l border-[#e6e6e6] bg-white px-3 py-2\",\n disabled && \"bg-[#f2f2f2]\"\n )}\n >\n {selectedCountry?.dialCode ? (\n <span className=\"shrink-0 text-[14px] leading-[20px] text-[#7f7d83]\">\n {selectedCountry.dialCode}\n </span>\n ) : null}\n <input\n ref={ref}\n disabled={disabled}\n placeholder={placeholder}\n onFocus={(event) => {\n setIsInputFocused(true)\n onFocus?.(event)\n }}\n onBlur={(event) => {\n setIsInputFocused(false)\n onBlur?.(event)\n }}\n className={cn(\n \"h-full w-full min-w-0 border-0 bg-transparent p-0 text-[14px] leading-[20px] text-black outline-none placeholder:text-[#adacb0]\",\n disabled &&\n \"cursor-not-allowed text-[#9ca3af] placeholder:text-[#b3b3b3]\",\n inputClassName\n )}\n type={type}\n {...props}\n />\n </div>\n </div>\n\n {error ? (\n <p className=\"w-full text-[12px] leading-[16px] text-[#ff3b30]\">{error}</p>\n ) : helperText ? (\n <p className=\"w-full text-[12px] leading-[16px] text-[#7f7d83]\">\n {helperText}\n </p>\n ) : null}\n </div>\n )\n }\n)\n\nPhoneInput.displayName = \"PhoneInput\"\n\nexport { PhoneInput, DEFAULT_COUNTRY_OPTIONS }\nexport type { PhoneCountryOption }\n"],"names":["DEFAULT_COUNTRY_OPTIONS","PHONE_COUNTRY_OPTIONS","COUNTRY_FLAG_COMPONENTS","CountryFlags","getCountryCodeFromFlagEmoji","flag","symbols","letters","symbol","codePoint","letter","FlagIcon","className","countryCode","React","SvgFlag","cn","PhoneInput","inputClassName","label","helperText","error","country","defaultCountry","countryOptions","onCountryChange","disabled","type","onFocus","onBlur","placeholder","props","ref","open","setOpen","isInputFocused","setIsInputFocused","uncontrolledCountry","setUncontrolledCountry","selectedCountryValue","selectedCountry","option","handleCountrySelect","isAriaInvalid","hasError","isActive","Popover","nextOpen","PopoverTrigger","Globe","ChevronDown","PopoverContent","Command","CommandInput","CommandList","CommandEmpty","CommandGroup","isSelected","optionName","CommandItem","Check","event"],"mappings":"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"}
1
+ {"version":3,"file":"index.es32.js","sources":["../src/components/ui/input-group.tsx"],"sourcesContent":["import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { Input } from \"@/components/ui/input\"\nimport { Textarea } from \"@/components/ui/textarea\"\n\nfunction InputGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"input-group\"\n role=\"group\"\n className={cn(\n \"group/input-group relative flex w-full items-center rounded-[8px] border border-[#e6e6e6] bg-white text-[14px] leading-[20px] text-foreground transition-colors\",\n \"h-10 has-[>textarea]:h-auto\",\n\n // Variants based on alignment.\n \"has-[>[data-align=inline-start]]:[&>input]:pl-2\",\n \"has-[>[data-align=inline-end]]:[&>input]:pr-2\",\n \"has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>[data-align=block-start]]:[&>input]:pb-3\",\n \"has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-end]]:[&>input]:pt-3\",\n\n // Focus state.\n \"focus-within:border-[#1D1C20]\",\n\n // Error state.\n \"has-[[data-slot][aria-invalid=true]]:border-[#ff3b30]\",\n\n // Disabled state.\n \"data-[disabled=true]:cursor-not-allowed data-[disabled=true]:bg-[#f2f2f2] data-[disabled=true]:text-[#9ca3af]\",\n\n className\n )}\n {...props}\n />\n )\n}\n\nconst inputGroupAddonVariants = cva(\n \"flex h-auto cursor-text select-none items-center justify-center gap-2 py-1.5 text-sm font-medium text-[#7f7d83] group-data-[disabled=true]/input-group:text-[#b3b3b3] [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4\",\n {\n variants: {\n align: {\n \"inline-start\":\n \"order-first pl-3 has-[>button]:ml-[-0.45rem] has-[>kbd]:ml-[-0.35rem]\",\n \"inline-end\":\n \"order-last pr-3 has-[>button]:mr-[-0.4rem] has-[>kbd]:mr-[-0.35rem]\",\n \"block-start\":\n \"[.border-b]:pb-3 order-first w-full justify-start px-3 pt-3 group-has-[>input]/input-group:pt-2.5\",\n \"block-end\":\n \"[.border-t]:pt-3 order-last w-full justify-start px-3 pb-3 group-has-[>input]/input-group:pb-2.5\",\n },\n },\n defaultVariants: {\n align: \"inline-start\",\n },\n }\n)\n\nfunction InputGroupAddon({\n className,\n align = \"inline-start\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof inputGroupAddonVariants>) {\n return (\n <div\n role=\"group\"\n data-slot=\"input-group-addon\"\n data-align={align}\n className={cn(inputGroupAddonVariants({ align }), className)}\n onClick={(e) => {\n if ((e.target as HTMLElement).closest(\"button\")) {\n return\n }\n e.currentTarget.parentElement?.querySelector(\"input\")?.focus()\n }}\n {...props}\n />\n )\n}\n\nconst inputGroupButtonVariants = cva(\n \"flex items-center gap-2 text-sm shadow-none\",\n {\n variants: {\n size: {\n xs: \"h-6 gap-1 rounded-[calc(var(--radius)-5px)] px-2 has-[>svg]:px-2 [&>svg:not([class*='size-'])]:size-3.5\",\n sm: \"h-8 gap-1.5 rounded-md px-2.5 has-[>svg]:px-2.5\",\n \"icon-xs\":\n \"size-6 rounded-[calc(var(--radius)-5px)] p-0 has-[>svg]:p-0\",\n \"icon-sm\": \"size-8 p-0 has-[>svg]:p-0\",\n },\n },\n defaultVariants: {\n size: \"xs\",\n },\n }\n)\n\nfunction InputGroupButton({\n className,\n type = \"button\",\n variant = \"ghost\",\n size = \"xs\",\n ...props\n}: Omit<React.ComponentProps<typeof Button>, \"size\"> &\n VariantProps<typeof inputGroupButtonVariants>) {\n return (\n <Button\n type={type}\n data-size={size}\n variant={variant}\n className={cn(inputGroupButtonVariants({ size }), className)}\n {...props}\n />\n )\n}\n\nfunction InputGroupText({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n className={cn(\n \"text-muted-foreground flex items-center gap-2 text-sm [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction InputGroupInput({\n className,\n ...props\n}: React.ComponentProps<\"input\">) {\n return (\n <Input\n data-slot=\"input-group-control\"\n className={cn(\n \"flex-1 rounded-none border-0 bg-transparent shadow-none focus-visible:ring-0 dark:bg-transparent\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction InputGroupTextarea({\n className,\n ...props\n}: React.ComponentProps<\"textarea\">) {\n return (\n <Textarea\n data-slot=\"input-group-control\"\n className={cn(\n \"flex-1 resize-none rounded-none border-0 bg-transparent py-3 shadow-none focus-visible:ring-0 dark:bg-transparent\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupText,\n InputGroupInput,\n InputGroupTextarea,\n}\n"],"names":["InputGroup","className","props","jsx","cn","inputGroupAddonVariants","cva","InputGroupAddon","align","e","inputGroupButtonVariants","InputGroupButton","type","variant","size","Button","InputGroupText","InputGroupInput","Input","InputGroupTextarea","Textarea"],"mappings":"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"}