@importcsv/react 0.2.1 → 0.2.4

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 (413) hide show
  1. package/README.md +100 -427
  2. package/build/App.d.ts +2 -0
  3. package/build/bundled/bundled-styles.d.ts +1 -0
  4. package/build/bundled/components/CSVImporter/index.d.ts +5 -0
  5. package/build/bundled/i18n/de.d.ts +32 -0
  6. package/build/bundled/i18n/es.d.ts +32 -0
  7. package/build/bundled/i18n/fr.d.ts +32 -0
  8. package/build/bundled/i18n/i18n.d.ts +6 -0
  9. package/build/bundled/i18n/it.d.ts +32 -0
  10. package/build/bundled/i18n/useTranslation.d.ts +9 -0
  11. package/build/bundled/importer/components/Box/index.d.ts +2 -0
  12. package/build/bundled/importer/components/Box/types/index.d.ts +5 -0
  13. package/build/bundled/importer/components/Checkbox/index.d.ts +2 -0
  14. package/build/bundled/importer/components/Checkbox/types/index.d.ts +4 -0
  15. package/build/bundled/importer/components/Errors/index.d.ts +4 -0
  16. package/build/bundled/importer/components/Input/index.d.ts +2 -0
  17. package/build/bundled/importer/components/Input/types/index.d.ts +18 -0
  18. package/build/bundled/importer/components/Root/index.d.ts +10 -0
  19. package/build/bundled/importer/components/StepLayout/index.d.ts +18 -0
  20. package/build/bundled/importer/components/Stepper/hooks/useStepper.d.ts +2 -0
  21. package/build/bundled/importer/components/Stepper/index.d.ts +2 -0
  22. package/build/bundled/importer/components/Stepper/types/index.d.ts +14 -0
  23. package/build/bundled/importer/components/Table/index.d.ts +9 -0
  24. package/build/bundled/importer/components/ToggleFilter/index.d.ts +3 -0
  25. package/build/bundled/importer/components/ToggleFilter/types/index.d.ts +11 -0
  26. package/build/bundled/importer/components/Tooltip/index.d.ts +2 -0
  27. package/build/bundled/importer/components/Tooltip/types/index.d.ts +11 -0
  28. package/build/bundled/importer/components/UploaderWrapper/NativeDropzone.d.ts +11 -0
  29. package/build/bundled/importer/components/UploaderWrapper/UploaderWrapper.d.ts +2 -0
  30. package/build/bundled/importer/components/UploaderWrapper/types/index.d.ts +2 -0
  31. package/build/bundled/importer/components/VirtualTable/index.d.ts +17 -0
  32. package/build/bundled/importer/components/ui/alert.d.ts +10 -0
  33. package/build/bundled/importer/components/ui/button.d.ts +12 -0
  34. package/build/bundled/importer/components/ui/card.d.ts +19 -0
  35. package/build/bundled/importer/components/ui/checkbox.d.ts +7 -0
  36. package/build/bundled/importer/components/ui/dialog.d.ts +38 -0
  37. package/build/bundled/importer/components/ui/flex.d.ts +23 -0
  38. package/build/bundled/importer/components/ui/input.d.ts +6 -0
  39. package/build/bundled/importer/components/ui/select.d.ts +13 -0
  40. package/build/bundled/importer/components/ui/switch.d.ts +7 -0
  41. package/build/bundled/importer/components/ui/toast.d.ts +22 -0
  42. package/build/bundled/importer/components/ui/toaster.d.ts +1 -0
  43. package/build/bundled/importer/components/ui/tooltip.d.ts +20 -0
  44. package/build/bundled/importer/components/ui/use-toast.d.ts +46 -0
  45. package/build/bundled/importer/features/complete/index.d.ts +2 -0
  46. package/build/bundled/importer/features/complete/types/index.d.ts +5 -0
  47. package/build/bundled/importer/features/configure-import/index.d.ts +13 -0
  48. package/build/bundled/importer/features/configure-import/types/index.d.ts +13 -0
  49. package/build/bundled/importer/features/main/hooks/useMutableLocalStorage.d.ts +1 -0
  50. package/build/bundled/importer/features/main/hooks/useStepNavigation.d.ts +17 -0
  51. package/build/bundled/importer/features/main/index.d.ts +2 -0
  52. package/build/bundled/importer/features/main/types/index.d.ts +16 -0
  53. package/build/bundled/importer/features/map-columns/components/DropDownFields.d.ts +21 -0
  54. package/build/bundled/importer/features/map-columns/hooks/useMapColumnsTable.d.ts +16 -0
  55. package/build/bundled/importer/features/map-columns/index.d.ts +2 -0
  56. package/build/bundled/importer/features/map-columns/types/index.d.ts +16 -0
  57. package/build/bundled/importer/features/row-selection/index.d.ts +2 -0
  58. package/build/bundled/importer/features/row-selection/types/index.d.ts +8 -0
  59. package/build/bundled/importer/features/uploader/hooks/useTemplateTable.d.ts +10 -0
  60. package/build/bundled/importer/features/uploader/index.d.ts +2 -0
  61. package/build/bundled/importer/features/uploader/types/index.d.ts +9 -0
  62. package/build/bundled/importer/features/validation/Validation.d.ts +2 -0
  63. package/build/bundled/importer/features/validation/components/TransformModal.d.ts +18 -0
  64. package/build/bundled/importer/features/validation/components/TransformPanel.d.ts +18 -0
  65. package/build/bundled/importer/features/validation/index.d.ts +1 -0
  66. package/build/bundled/importer/features/validation/types.d.ts +32 -0
  67. package/build/bundled/importer/hooks/useClickOutside.d.ts +1 -0
  68. package/build/bundled/importer/hooks/useCustomStyles.d.ts +1 -0
  69. package/build/bundled/importer/hooks/useEventListener.d.ts +4 -0
  70. package/build/bundled/importer/hooks/useIsomorphicLayoutEffect.d.ts +3 -0
  71. package/build/bundled/importer/hooks/useRect.d.ts +12 -0
  72. package/build/bundled/importer/hooks/useWindowSize.d.ts +1 -0
  73. package/build/bundled/importer/providers/Theme.d.ts +10 -0
  74. package/build/bundled/importer/providers/index.d.ts +5 -0
  75. package/build/bundled/importer/providers/types/index.d.ts +10 -0
  76. package/build/bundled/importer/services/api.d.ts +1 -0
  77. package/build/bundled/importer/services/mapping.d.ts +31 -0
  78. package/build/bundled/importer/services/transformation.d.ts +70 -0
  79. package/build/bundled/importer/settings/theme/colors.d.ts +4 -0
  80. package/build/bundled/importer/settings/theme/index.d.ts +2 -0
  81. package/build/bundled/importer/settings/theme/sizes.d.ts +7 -0
  82. package/build/bundled/importer/stores/theme.d.ts +17 -0
  83. package/build/bundled/importer/theme/index.d.ts +8 -0
  84. package/build/bundled/importer/theme/presets.d.ts +314 -0
  85. package/build/bundled/importer/theme/runtime.d.ts +62 -0
  86. package/build/bundled/importer/theme/styles.d.ts +120 -0
  87. package/build/bundled/importer/types/index.d.ts +9 -0
  88. package/build/bundled/importer/utils/colorUtils.d.ts +48 -0
  89. package/build/bundled/importer/utils/errorAnalysis.d.ts +25 -0
  90. package/build/bundled/importer/utils/getStringLengthOfChildren.d.ts +2 -0
  91. package/build/bundled/importer/utils/stringSimilarity.d.ts +1 -0
  92. package/build/bundled/importer/utils/template.d.ts +2 -0
  93. package/build/bundled/importer/utils/themeUtils.d.ts +21 -0
  94. package/build/bundled/importer/utils/utils.d.ts +19 -0
  95. package/build/bundled/index.d.ts +4 -0
  96. package/build/bundled/index.esm.js +8189 -0
  97. package/build/bundled/index.esm.js.map +1 -0
  98. package/build/bundled/index.js +112 -0
  99. package/build/bundled/index.js.map +1 -0
  100. package/build/bundled/index.umd.js +112 -0
  101. package/build/bundled/index.umd.js.map +1 -0
  102. package/build/bundled/js.d.ts +12 -0
  103. package/build/bundled/settings/defaults.d.ts +3 -0
  104. package/build/bundled/styles.d.ts +1 -0
  105. package/build/bundled/types/index.d.ts +132 -0
  106. package/build/bundled/types/theme.d.ts +153 -0
  107. package/build/bundled/utils/cn.d.ts +6 -0
  108. package/build/bundled/utils/injectStyles.d.ts +14 -0
  109. package/build/bundled/validation/transformationStages.d.ts +26 -0
  110. package/build/bundled/validation/transformer.d.ts +17 -0
  111. package/build/bundled/validation/validator.d.ts +23 -0
  112. package/build/bundled-styles.d.ts +1 -1
  113. package/build/components/CSVImporter/index.d.ts +8 -31
  114. package/build/components/Modal/index.d.ts +12 -0
  115. package/build/config/index.d.ts +5 -0
  116. package/build/importer/components/Box/index.d.ts +1 -1
  117. package/build/importer/components/Box/types/index.d.ts +1 -2
  118. package/build/importer/components/Checkbox/index.d.ts +1 -1
  119. package/build/importer/components/Checkbox/types/index.d.ts +1 -1
  120. package/build/importer/components/Input/index.d.ts +1 -1
  121. package/build/importer/components/Input/types/index.d.ts +1 -1
  122. package/build/importer/components/Root/index.d.ts +10 -0
  123. package/build/importer/components/StepLayout/index.d.ts +18 -0
  124. package/build/importer/components/Stepper/hooks/useStepper.d.ts +1 -1
  125. package/build/importer/components/Stepper/index.d.ts +1 -1
  126. package/build/importer/components/Table/index.d.ts +3 -3
  127. package/build/importer/components/ToggleFilter/index.d.ts +1 -1
  128. package/build/importer/components/Tooltip/index.d.ts +1 -1
  129. package/build/importer/components/Tooltip/types/index.d.ts +4 -4
  130. package/build/importer/components/UploaderWrapper/NativeDropzone.d.ts +11 -0
  131. package/build/importer/components/UploaderWrapper/UploaderWrapper.d.ts +1 -1
  132. package/build/importer/components/UploaderWrapper/types/index.d.ts +1 -1
  133. package/build/importer/components/VirtualTable/index.d.ts +17 -0
  134. package/build/importer/components/ui/alert.d.ts +9 -7
  135. package/build/importer/components/ui/button.d.ts +6 -6
  136. package/build/importer/components/ui/card.d.ts +18 -7
  137. package/build/importer/components/ui/checkbox.d.ts +6 -3
  138. package/build/importer/components/ui/dialog.d.ts +32 -12
  139. package/build/importer/components/ui/flex.d.ts +16 -7
  140. package/build/importer/components/ui/input.d.ts +4 -3
  141. package/build/importer/components/ui/select.d.ts +13 -13
  142. package/build/importer/components/ui/switch.d.ts +6 -3
  143. package/build/importer/components/ui/toast.d.ts +23 -15
  144. package/build/importer/components/ui/tooltip.d.ts +16 -9
  145. package/build/importer/components/ui/use-toast.d.ts +7 -5
  146. package/build/importer/features/complete/index.d.ts +1 -1
  147. package/build/importer/features/main/hooks/useStepNavigation.d.ts +1 -1
  148. package/build/importer/features/main/index.d.ts +1 -1
  149. package/build/importer/features/map-columns/components/DropDownFields.d.ts +1 -1
  150. package/build/importer/features/map-columns/hooks/useMapColumnsTable.d.ts +4 -4
  151. package/build/importer/features/map-columns/index.d.ts +1 -1
  152. package/build/importer/features/map-columns/types/index.d.ts +2 -2
  153. package/build/importer/features/row-selection/index.d.ts +1 -1
  154. package/build/importer/features/row-selection/types/index.d.ts +1 -1
  155. package/build/importer/features/uploader/hooks/useTemplateTable.d.ts +1 -1
  156. package/build/importer/features/uploader/index.d.ts +1 -1
  157. package/build/importer/features/uploader/types/index.d.ts +2 -2
  158. package/build/importer/features/validation/components/TransformPanel.d.ts +18 -0
  159. package/build/importer/features/validation/types.d.ts +3 -3
  160. package/build/importer/hooks/useEventListener.d.ts +1 -1
  161. package/build/importer/hooks/useIsomorphicLayoutEffect.d.ts +1 -1
  162. package/build/importer/providers/Theme.d.ts +7 -2
  163. package/build/importer/providers/index.d.ts +4 -4
  164. package/build/importer/providers/types/index.d.ts +10 -4
  165. package/build/importer/settings/theme/index.d.ts +2 -2
  166. package/build/importer/stores/theme.d.ts +3 -3
  167. package/build/importer/theme/index.d.ts +8 -0
  168. package/build/importer/theme/presets.d.ts +314 -0
  169. package/build/importer/theme/runtime.d.ts +66 -0
  170. package/build/importer/theme/styles.d.ts +120 -0
  171. package/build/importer/utils/errorAnalysis.d.ts +25 -0
  172. package/build/importer/utils/getStringLengthOfChildren.d.ts +2 -2
  173. package/build/importer/utils/template.d.ts +1 -1
  174. package/build/importer/utils/themeUtils.d.ts +24 -0
  175. package/build/index.d.ts +5 -3
  176. package/build/index.dev.d.ts +1 -0
  177. package/build/js.d.ts +4 -31
  178. package/build/preact/bundled-styles.d.ts +1 -0
  179. package/build/preact/components/CSVImporter/index.d.ts +5 -0
  180. package/build/preact/i18n/de.d.ts +32 -0
  181. package/build/preact/i18n/es.d.ts +32 -0
  182. package/build/preact/i18n/fr.d.ts +32 -0
  183. package/build/preact/i18n/i18n.d.ts +6 -0
  184. package/build/preact/i18n/it.d.ts +32 -0
  185. package/build/preact/i18n/useTranslation.d.ts +9 -0
  186. package/build/preact/importer/components/Box/index.d.ts +2 -0
  187. package/build/preact/importer/components/Box/types/index.d.ts +5 -0
  188. package/build/preact/importer/components/Checkbox/index.d.ts +2 -0
  189. package/build/preact/importer/components/Checkbox/types/index.d.ts +4 -0
  190. package/build/preact/importer/components/Errors/index.d.ts +4 -0
  191. package/build/preact/importer/components/Input/index.d.ts +2 -0
  192. package/build/preact/importer/components/Input/types/index.d.ts +18 -0
  193. package/build/preact/importer/components/Root/index.d.ts +10 -0
  194. package/build/preact/importer/components/StepLayout/index.d.ts +18 -0
  195. package/build/preact/importer/components/Stepper/hooks/useStepper.d.ts +2 -0
  196. package/build/preact/importer/components/Stepper/index.d.ts +2 -0
  197. package/build/preact/importer/components/Stepper/types/index.d.ts +14 -0
  198. package/build/preact/importer/components/Table/index.d.ts +9 -0
  199. package/build/preact/importer/components/ToggleFilter/index.d.ts +3 -0
  200. package/build/preact/importer/components/ToggleFilter/types/index.d.ts +11 -0
  201. package/build/preact/importer/components/Tooltip/index.d.ts +2 -0
  202. package/build/preact/importer/components/Tooltip/types/index.d.ts +11 -0
  203. package/build/preact/importer/components/UploaderWrapper/NativeDropzone.d.ts +11 -0
  204. package/build/preact/importer/components/UploaderWrapper/UploaderWrapper.d.ts +2 -0
  205. package/build/preact/importer/components/UploaderWrapper/types/index.d.ts +2 -0
  206. package/build/preact/importer/components/VirtualTable/index.d.ts +17 -0
  207. package/build/preact/importer/components/ui/alert.d.ts +10 -0
  208. package/build/preact/importer/components/ui/button.d.ts +12 -0
  209. package/build/preact/importer/components/ui/card.d.ts +19 -0
  210. package/build/preact/importer/components/ui/checkbox.d.ts +7 -0
  211. package/build/preact/importer/components/ui/dialog.d.ts +38 -0
  212. package/build/preact/importer/components/ui/flex.d.ts +23 -0
  213. package/build/preact/importer/components/ui/input.d.ts +6 -0
  214. package/build/preact/importer/components/ui/select.d.ts +13 -0
  215. package/build/preact/importer/components/ui/switch.d.ts +7 -0
  216. package/build/preact/importer/components/ui/toast.d.ts +22 -0
  217. package/build/preact/importer/components/ui/toaster.d.ts +1 -0
  218. package/build/preact/importer/components/ui/tooltip.d.ts +20 -0
  219. package/build/preact/importer/components/ui/use-toast.d.ts +46 -0
  220. package/build/preact/importer/features/complete/index.d.ts +2 -0
  221. package/build/preact/importer/features/complete/types/index.d.ts +5 -0
  222. package/build/preact/importer/features/configure-import/index.d.ts +13 -0
  223. package/build/preact/importer/features/configure-import/types/index.d.ts +13 -0
  224. package/build/preact/importer/features/main/hooks/useMutableLocalStorage.d.ts +1 -0
  225. package/build/preact/importer/features/main/hooks/useStepNavigation.d.ts +17 -0
  226. package/build/preact/importer/features/main/index.d.ts +2 -0
  227. package/build/preact/importer/features/main/types/index.d.ts +16 -0
  228. package/build/preact/importer/features/map-columns/components/DropDownFields.d.ts +21 -0
  229. package/build/preact/importer/features/map-columns/hooks/useMapColumnsTable.d.ts +16 -0
  230. package/build/preact/importer/features/map-columns/index.d.ts +2 -0
  231. package/build/preact/importer/features/map-columns/types/index.d.ts +16 -0
  232. package/build/preact/importer/features/row-selection/index.d.ts +2 -0
  233. package/build/preact/importer/features/row-selection/types/index.d.ts +8 -0
  234. package/build/preact/importer/features/uploader/hooks/useTemplateTable.d.ts +10 -0
  235. package/build/preact/importer/features/uploader/index.d.ts +2 -0
  236. package/build/preact/importer/features/uploader/types/index.d.ts +9 -0
  237. package/build/preact/importer/features/validation/Validation.d.ts +2 -0
  238. package/build/preact/importer/features/validation/components/TransformModal.d.ts +18 -0
  239. package/build/preact/importer/features/validation/components/TransformPanel.d.ts +18 -0
  240. package/build/preact/importer/features/validation/index.d.ts +1 -0
  241. package/build/preact/importer/features/validation/types.d.ts +32 -0
  242. package/build/preact/importer/hooks/useClickOutside.d.ts +1 -0
  243. package/build/preact/importer/hooks/useCustomStyles.d.ts +1 -0
  244. package/build/preact/importer/hooks/useEventListener.d.ts +4 -0
  245. package/build/preact/importer/hooks/useIsomorphicLayoutEffect.d.ts +3 -0
  246. package/build/preact/importer/hooks/useRect.d.ts +12 -0
  247. package/build/preact/importer/hooks/useWindowSize.d.ts +1 -0
  248. package/build/preact/importer/providers/Theme.d.ts +10 -0
  249. package/build/preact/importer/providers/index.d.ts +5 -0
  250. package/build/preact/importer/providers/types/index.d.ts +10 -0
  251. package/build/preact/importer/services/api.d.ts +1 -0
  252. package/build/preact/importer/services/mapping.d.ts +31 -0
  253. package/build/preact/importer/services/transformation.d.ts +70 -0
  254. package/build/preact/importer/settings/theme/colors.d.ts +4 -0
  255. package/build/preact/importer/settings/theme/index.d.ts +2 -0
  256. package/build/preact/importer/settings/theme/sizes.d.ts +7 -0
  257. package/build/preact/importer/stores/theme.d.ts +17 -0
  258. package/build/preact/importer/theme/index.d.ts +8 -0
  259. package/build/preact/importer/theme/presets.d.ts +314 -0
  260. package/build/preact/importer/theme/runtime.d.ts +62 -0
  261. package/build/preact/importer/theme/styles.d.ts +120 -0
  262. package/build/preact/importer/types/index.d.ts +9 -0
  263. package/build/preact/importer/utils/colorUtils.d.ts +48 -0
  264. package/build/preact/importer/utils/errorAnalysis.d.ts +25 -0
  265. package/build/preact/importer/utils/getStringLengthOfChildren.d.ts +2 -0
  266. package/build/preact/importer/utils/stringSimilarity.d.ts +1 -0
  267. package/build/preact/importer/utils/template.d.ts +2 -0
  268. package/build/preact/importer/utils/themeUtils.d.ts +21 -0
  269. package/build/preact/importer/utils/utils.d.ts +19 -0
  270. package/build/preact/index.d.ts +4 -0
  271. package/build/preact/index.esm.js +7370 -0
  272. package/build/preact/index.esm.js.map +1 -0
  273. package/build/preact/index.js +112 -0
  274. package/build/preact/index.js.map +1 -0
  275. package/build/preact/js.d.ts +12 -0
  276. package/build/preact/settings/defaults.d.ts +3 -0
  277. package/build/preact/styles.d.ts +1 -0
  278. package/build/preact/types/index.d.ts +132 -0
  279. package/build/preact/types/theme.d.ts +153 -0
  280. package/build/preact/utils/cn.d.ts +6 -0
  281. package/build/preact/utils/injectStyles.d.ts +14 -0
  282. package/build/preact/validation/transformationStages.d.ts +26 -0
  283. package/build/preact/validation/transformer.d.ts +17 -0
  284. package/build/preact/validation/validator.d.ts +23 -0
  285. package/build/react/bundled-styles.d.ts +1 -0
  286. package/build/react/components/CSVImporter/index.d.ts +5 -0
  287. package/build/react/components/Modal/index.d.ts +12 -0
  288. package/build/react/i18n/de.d.ts +32 -0
  289. package/build/react/i18n/es.d.ts +32 -0
  290. package/build/react/i18n/fr.d.ts +32 -0
  291. package/build/react/i18n/i18n.d.ts +6 -0
  292. package/build/react/i18n/it.d.ts +32 -0
  293. package/build/react/i18n/useTranslation.d.ts +9 -0
  294. package/build/react/importer/components/Box/index.d.ts +2 -0
  295. package/build/react/importer/components/Box/types/index.d.ts +5 -0
  296. package/build/react/importer/components/Checkbox/index.d.ts +2 -0
  297. package/build/react/importer/components/Checkbox/types/index.d.ts +4 -0
  298. package/build/react/importer/components/Errors/index.d.ts +4 -0
  299. package/build/react/importer/components/Input/index.d.ts +2 -0
  300. package/build/react/importer/components/Input/types/index.d.ts +18 -0
  301. package/build/react/importer/components/Root/index.d.ts +10 -0
  302. package/build/react/importer/components/StepLayout/index.d.ts +18 -0
  303. package/build/react/importer/components/Stepper/hooks/useStepper.d.ts +2 -0
  304. package/build/react/importer/components/Stepper/index.d.ts +2 -0
  305. package/build/react/importer/components/Stepper/types/index.d.ts +14 -0
  306. package/build/react/importer/components/Table/index.d.ts +9 -0
  307. package/build/{importer → react/importer}/components/Table/types/index.d.ts +2 -2
  308. package/build/react/importer/components/ToggleFilter/index.d.ts +3 -0
  309. package/build/react/importer/components/ToggleFilter/types/index.d.ts +11 -0
  310. package/build/react/importer/components/Tooltip/index.d.ts +2 -0
  311. package/build/react/importer/components/Tooltip/types/index.d.ts +11 -0
  312. package/build/react/importer/components/UploaderWrapper/NativeDropzone.d.ts +11 -0
  313. package/build/react/importer/components/UploaderWrapper/UploaderWrapper.d.ts +2 -0
  314. package/build/react/importer/components/UploaderWrapper/types/index.d.ts +2 -0
  315. package/build/react/importer/components/VirtualTable/index.d.ts +17 -0
  316. package/build/react/importer/components/ui/alert.d.ts +13 -0
  317. package/build/react/importer/components/ui/button.d.ts +12 -0
  318. package/build/react/importer/components/ui/card.d.ts +19 -0
  319. package/build/react/importer/components/ui/checkbox.d.ts +7 -0
  320. package/build/react/importer/components/ui/dialog.d.ts +38 -0
  321. package/build/react/importer/components/ui/flex.d.ts +23 -0
  322. package/build/react/importer/components/ui/input.d.ts +6 -0
  323. package/build/react/importer/components/ui/select.d.ts +13 -0
  324. package/build/react/importer/components/ui/switch.d.ts +7 -0
  325. package/build/react/importer/components/ui/toast.d.ts +22 -0
  326. package/build/react/importer/components/ui/toaster.d.ts +1 -0
  327. package/build/react/importer/components/ui/tooltip.d.ts +24 -0
  328. package/build/react/importer/components/ui/use-toast.d.ts +46 -0
  329. package/build/react/importer/features/complete/index.d.ts +2 -0
  330. package/build/react/importer/features/complete/types/index.d.ts +5 -0
  331. package/build/react/importer/features/configure-import/index.d.ts +13 -0
  332. package/build/react/importer/features/configure-import/types/index.d.ts +13 -0
  333. package/build/react/importer/features/main/hooks/useMutableLocalStorage.d.ts +1 -0
  334. package/build/react/importer/features/main/hooks/useStepNavigation.d.ts +17 -0
  335. package/build/react/importer/features/main/index.d.ts +2 -0
  336. package/build/react/importer/features/main/types/index.d.ts +16 -0
  337. package/build/react/importer/features/map-columns/components/DropDownFields.d.ts +21 -0
  338. package/build/react/importer/features/map-columns/hooks/useMapColumnsTable.d.ts +16 -0
  339. package/build/react/importer/features/map-columns/index.d.ts +2 -0
  340. package/build/react/importer/features/map-columns/types/index.d.ts +16 -0
  341. package/build/react/importer/features/row-selection/index.d.ts +2 -0
  342. package/build/react/importer/features/row-selection/types/index.d.ts +8 -0
  343. package/build/react/importer/features/uploader/hooks/useTemplateTable.d.ts +10 -0
  344. package/build/react/importer/features/uploader/index.d.ts +2 -0
  345. package/build/react/importer/features/uploader/types/index.d.ts +9 -0
  346. package/build/react/importer/features/validation/Validation.d.ts +2 -0
  347. package/build/react/importer/features/validation/components/TransformModal.d.ts +18 -0
  348. package/build/react/importer/features/validation/components/TransformPanel.d.ts +18 -0
  349. package/build/react/importer/features/validation/index.d.ts +1 -0
  350. package/build/react/importer/features/validation/types.d.ts +32 -0
  351. package/build/react/importer/hooks/useClickOutside.d.ts +1 -0
  352. package/build/react/importer/hooks/useCustomStyles.d.ts +1 -0
  353. package/build/react/importer/hooks/useEventListener.d.ts +4 -0
  354. package/build/react/importer/hooks/useIsomorphicLayoutEffect.d.ts +3 -0
  355. package/build/react/importer/hooks/useRect.d.ts +12 -0
  356. package/build/react/importer/hooks/useWindowSize.d.ts +1 -0
  357. package/build/react/importer/providers/Theme.d.ts +10 -0
  358. package/build/react/importer/providers/index.d.ts +5 -0
  359. package/build/react/importer/providers/types/index.d.ts +10 -0
  360. package/build/react/importer/services/api.d.ts +1 -0
  361. package/build/react/importer/services/mapping.d.ts +31 -0
  362. package/build/react/importer/services/transformation.d.ts +70 -0
  363. package/build/react/importer/settings/theme/colors.d.ts +4 -0
  364. package/build/react/importer/settings/theme/index.d.ts +2 -0
  365. package/build/react/importer/settings/theme/sizes.d.ts +7 -0
  366. package/build/react/importer/stores/theme.d.ts +17 -0
  367. package/build/react/importer/theme/index.d.ts +8 -0
  368. package/build/react/importer/theme/presets.d.ts +314 -0
  369. package/build/react/importer/theme/runtime.d.ts +62 -0
  370. package/build/react/importer/theme/styles.d.ts +120 -0
  371. package/build/react/importer/types/index.d.ts +9 -0
  372. package/build/react/importer/utils/colorUtils.d.ts +48 -0
  373. package/build/react/importer/utils/errorAnalysis.d.ts +25 -0
  374. package/build/react/importer/utils/getStringLengthOfChildren.d.ts +2 -0
  375. package/build/react/importer/utils/stringSimilarity.d.ts +1 -0
  376. package/build/react/importer/utils/template.d.ts +2 -0
  377. package/build/react/importer/utils/themeUtils.d.ts +21 -0
  378. package/build/react/importer/utils/utils.d.ts +19 -0
  379. package/build/react/index.d.ts +5 -0
  380. package/build/react/index.esm.js +7541 -0
  381. package/build/react/index.esm.js.map +1 -0
  382. package/build/react/index.js +112 -0
  383. package/build/react/index.js.map +1 -0
  384. package/build/react/js.d.ts +12 -0
  385. package/build/react/settings/defaults.d.ts +3 -0
  386. package/build/react/styles.d.ts +1 -0
  387. package/build/react/types/index.d.ts +132 -0
  388. package/build/react/types/theme.d.ts +153 -0
  389. package/build/react/utils/cn.d.ts +6 -0
  390. package/build/react/validation/transformationStages.d.ts +26 -0
  391. package/build/react/validation/transformer.d.ts +17 -0
  392. package/build/react/validation/validator.d.ts +23 -0
  393. package/build/services/api.d.ts +50 -0
  394. package/build/services/apiClient.d.ts +55 -0
  395. package/build/settings/defaults.d.ts +1 -1
  396. package/build/shims/react-compat-shim.d.ts +2 -0
  397. package/build/shims/react-hooks-shim.d.ts +2 -0
  398. package/build/types/index.d.ts +27 -0
  399. package/build/types/theme.d.ts +153 -0
  400. package/build/utils/cn.d.ts +1 -1
  401. package/build/validation/transformationStages.d.ts +26 -0
  402. package/build/validation/transformer.d.ts +10 -26
  403. package/package.json +64 -32
  404. package/build/bundle.css +0 -1
  405. package/build/importer/components/IframeWrapper/index.d.ts +0 -25
  406. package/build/importer/components/ImporterLayout.d.ts +0 -15
  407. package/build/importer/hooks/useDemoData.d.ts +0 -16
  408. package/build/importer/hooks/useImporterSchema.d.ts +0 -21
  409. package/build/importer/services/dataProcessor.d.ts +0 -38
  410. package/build/index.esm.js +0 -14394
  411. package/build/index.esm.js.map +0 -1
  412. package/build/index.js +0 -327
  413. package/build/index.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.esm.js","sources":["../node_modules/papaparse/papaparse.min.js","../src/importer/settings/theme/sizes.ts","../node_modules/clsx/dist/clsx.mjs","../node_modules/tailwind-merge/dist/bundle-mjs.mjs","../src/utils/cn.ts","../node_modules/lucide-react/dist/esm/shared/src/utils.js","../node_modules/lucide-react/dist/esm/defaultAttributes.js","../node_modules/lucide-react/dist/esm/Icon.js","../node_modules/lucide-react/dist/esm/createLucideIcon.js","../node_modules/lucide-react/dist/esm/icons/check.js","../node_modules/lucide-react/dist/esm/icons/chevron-down.js","../node_modules/lucide-react/dist/esm/icons/chevron-up.js","../node_modules/lucide-react/dist/esm/icons/circle-check-big.js","../node_modules/lucide-react/dist/esm/icons/cloud-upload.js","../node_modules/lucide-react/dist/esm/icons/info.js","../node_modules/lucide-react/dist/esm/icons/rotate-ccw.js","../node_modules/lucide-react/dist/esm/icons/sparkles.js","../node_modules/lucide-react/dist/esm/icons/triangle-alert.js","../node_modules/lucide-react/dist/esm/icons/wrench.js","../node_modules/lucide-react/dist/esm/icons/x.js","../src/importer/components/Errors/index.tsx","../src/importer/components/Stepper/index.tsx","../node_modules/@radix-ui/react-compose-refs/dist/index.mjs","../node_modules/@radix-ui/react-slot/dist/index.mjs","../node_modules/class-variance-authority/dist/index.mjs","../src/importer/components/ui/button.tsx","../src/importer/components/ui/alert.tsx","../node_modules/@radix-ui/primitive/dist/index.mjs","../node_modules/@radix-ui/react-context/dist/index.mjs","../node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-slot/dist/index.mjs","../node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-primitive/dist/index.mjs","../node_modules/@radix-ui/react-use-callback-ref/dist/index.mjs","../node_modules/@radix-ui/react-use-escape-keydown/dist/index.mjs","../node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-dismissable-layer/dist/index.mjs","../node_modules/@radix-ui/react-use-layout-effect/dist/index.mjs","../node_modules/@radix-ui/react-id/dist/index.mjs","../node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","../node_modules/@floating-ui/core/dist/floating-ui.core.mjs","../node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","../node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","../node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.mjs","../node_modules/@radix-ui/react-arrow/node_modules/@radix-ui/react-slot/dist/index.mjs","../node_modules/@radix-ui/react-arrow/node_modules/@radix-ui/react-primitive/dist/index.mjs","../node_modules/@radix-ui/react-arrow/dist/index.mjs","../node_modules/@radix-ui/react-popper/node_modules/@radix-ui/react-slot/dist/index.mjs","../node_modules/@radix-ui/react-popper/node_modules/@radix-ui/react-primitive/dist/index.mjs","../node_modules/@radix-ui/react-use-size/dist/index.mjs","../node_modules/@radix-ui/react-popper/dist/index.mjs","../node_modules/@radix-ui/react-presence/dist/index.mjs","../node_modules/@radix-ui/react-use-controllable-state/dist/index.mjs","../node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-visually-hidden/dist/index.mjs","../node_modules/@radix-ui/react-tooltip/dist/index.mjs","../src/importer/components/ui/tooltip.tsx","../node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-slot/dist/index.mjs","../node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-primitive/dist/index.mjs","../node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-dismissable-layer/dist/index.mjs","../node_modules/@radix-ui/react-focus-scope/node_modules/@radix-ui/react-slot/dist/index.mjs","../node_modules/@radix-ui/react-focus-scope/node_modules/@radix-ui/react-primitive/dist/index.mjs","../node_modules/@radix-ui/react-focus-scope/dist/index.mjs","../node_modules/@radix-ui/react-focus-guards/dist/index.mjs","../node_modules/tslib/tslib.es6.mjs","../node_modules/react-remove-scroll-bar/dist/es2015/constants.js","../node_modules/use-callback-ref/dist/es2015/assignRef.js","../node_modules/use-callback-ref/dist/es2015/useRef.js","../node_modules/use-callback-ref/dist/es2015/useMergeRef.js","../node_modules/use-sidecar/dist/es2015/medium.js","../node_modules/use-sidecar/dist/es2015/exports.js","../node_modules/react-remove-scroll/dist/es2015/medium.js","../node_modules/react-remove-scroll/dist/es2015/UI.js","../node_modules/get-nonce/dist/es2015/index.js","../node_modules/react-style-singleton/dist/es2015/singleton.js","../node_modules/react-style-singleton/dist/es2015/hook.js","../node_modules/react-style-singleton/dist/es2015/component.js","../node_modules/react-remove-scroll-bar/dist/es2015/utils.js","../node_modules/react-remove-scroll-bar/dist/es2015/component.js","../node_modules/react-remove-scroll/dist/es2015/aggresiveCapture.js","../node_modules/react-remove-scroll/dist/es2015/handleScroll.js","../node_modules/react-remove-scroll/dist/es2015/SideEffect.js","../node_modules/react-remove-scroll/dist/es2015/sidecar.js","../node_modules/react-remove-scroll/dist/es2015/Combination.js","../node_modules/aria-hidden/dist/es2015/index.js","../node_modules/@radix-ui/react-dialog/dist/index.mjs","../src/importer/components/ui/dialog.tsx","../src/importer/components/ui/input.tsx","../node_modules/@radix-ui/react-use-previous/dist/index.mjs","../node_modules/@radix-ui/react-primitive/dist/index.mjs","../node_modules/@radix-ui/react-checkbox/dist/index.mjs","../src/importer/components/ui/checkbox.tsx","../src/importer/components/ui/use-toast.ts","../src/i18n/i18n.ts","../src/i18n/useTranslation.ts","../src/importer/services/transformation.ts","../src/importer/features/validation/components/TransformModal.tsx","../src/validation/validator.ts","../src/validation/transformer.ts","../src/importer/features/validation/Validation.tsx","../src/importer/hooks/useCustomStyles.ts","../src/importer/utils/colorUtils.ts","../src/importer/utils/utils.ts","../src/importer/components/Stepper/hooks/useStepper.ts","../src/importer/features/main/hooks/useMutableLocalStorage.ts","../src/importer/features/main/hooks/useStepNavigation.ts","../src/importer/components/Box/index.tsx","../src/importer/features/complete/index.tsx","../src/importer/components/ui/flex.tsx","../node_modules/@radix-ui/number/dist/index.mjs","../node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-slot/dist/index.mjs","../node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-collection/dist/index.mjs","../node_modules/@radix-ui/react-direction/dist/index.mjs","../node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-primitive/dist/index.mjs","../node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-dismissable-layer/dist/index.mjs","../node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-portal/dist/index.mjs","../node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-visually-hidden/dist/index.mjs","../node_modules/@radix-ui/react-select/dist/index.mjs","../src/importer/components/ui/select.tsx","../src/importer/utils/stringSimilarity.ts","../src/importer/services/mapping.ts","../src/importer/features/configure-import/index.tsx","../src/importer/utils/getStringLengthOfChildren.ts","../src/importer/components/Tooltip/index.tsx","../src/importer/components/Table/index.tsx","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/file-selector/dist/es2015/file.js","../node_modules/file-selector/dist/es2015/file-selector.js","../node_modules/attr-accept/dist/es/index.js","../node_modules/react-dropzone/dist/es/utils/index.js","../node_modules/react-dropzone/dist/es/index.js","../src/importer/components/UploaderWrapper/UploaderWrapper.tsx","../src/importer/features/uploader/hooks/useTemplateTable.tsx","../src/importer/features/uploader/index.tsx","../src/config/index.js","../node_modules/react-frame-component/lib/Context.js","../node_modules/react-frame-component/lib/Content.js","../node_modules/react-frame-component/lib/Frame.js","../node_modules/react-frame-component/lib/index.js","../src/bundled-styles.ts","../src/styles.ts","../src/importer/components/IframeWrapper/index.tsx","../src/importer/features/main/index.tsx","../node_modules/@radix-ui/react-collection/dist/index.mjs","../node_modules/@radix-ui/react-dismissable-layer/dist/index.mjs","../node_modules/@radix-ui/react-portal/dist/index.mjs","../node_modules/@radix-ui/react-visually-hidden/dist/index.mjs","../node_modules/@radix-ui/react-toast/dist/index.mjs","../src/importer/components/ui/toast.tsx","../src/importer/components/ui/toaster.tsx","../src/importer/providers/Theme.tsx","../src/importer/providers/index.tsx","../node_modules/zustand/esm/vanilla.mjs","../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.js","../node_modules/use-sync-external-store/shim/index.js","../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.js","../node_modules/use-sync-external-store/shim/with-selector.js","../node_modules/zustand/esm/index.mjs","../node_modules/zustand/esm/middleware.mjs","../src/importer/stores/theme.ts","../src/components/CSVImporter/index.tsx"],"sourcesContent":["/* @license\nPapa Parse\nv5.5.2\nhttps://github.com/mholt/PapaParse\nLicense: MIT\n*/\n((e,t)=>{\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof module&&\"undefined\"!=typeof exports?module.exports=t():e.Papa=t()})(this,function r(){var n=\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:void 0!==n?n:{};var d,s=!n.document&&!!n.postMessage,a=n.IS_PAPA_WORKER||!1,o={},h=0,v={};function u(e){this._handle=null,this._finished=!1,this._completed=!1,this._halted=!1,this._input=null,this._baseIndex=0,this._partialLine=\"\",this._rowCount=0,this._start=0,this._nextChunk=null,this.isFirstChunk=!0,this._completeResults={data:[],errors:[],meta:{}},function(e){var t=w(e);t.chunkSize=parseInt(t.chunkSize),e.step||e.chunk||(t.chunkSize=null);this._handle=new i(t),(this._handle.streamer=this)._config=t}.call(this,e),this.parseChunk=function(t,e){var i=parseInt(this._config.skipFirstNLines)||0;if(this.isFirstChunk&&0<i){let e=this._config.newline;e||(r=this._config.quoteChar||'\"',e=this._handle.guessLineEndings(t,r)),t=[...t.split(e).slice(i)].join(e)}this.isFirstChunk&&U(this._config.beforeFirstChunk)&&void 0!==(r=this._config.beforeFirstChunk(t))&&(t=r),this.isFirstChunk=!1,this._halted=!1;var i=this._partialLine+t,r=(this._partialLine=\"\",this._handle.parse(i,this._baseIndex,!this._finished));if(!this._handle.paused()&&!this._handle.aborted()){t=r.meta.cursor,i=(this._finished||(this._partialLine=i.substring(t-this._baseIndex),this._baseIndex=t),r&&r.data&&(this._rowCount+=r.data.length),this._finished||this._config.preview&&this._rowCount>=this._config.preview);if(a)n.postMessage({results:r,workerId:v.WORKER_ID,finished:i});else if(U(this._config.chunk)&&!e){if(this._config.chunk(r,this._handle),this._handle.paused()||this._handle.aborted())return void(this._halted=!0);this._completeResults=r=void 0}return this._config.step||this._config.chunk||(this._completeResults.data=this._completeResults.data.concat(r.data),this._completeResults.errors=this._completeResults.errors.concat(r.errors),this._completeResults.meta=r.meta),this._completed||!i||!U(this._config.complete)||r&&r.meta.aborted||(this._config.complete(this._completeResults,this._input),this._completed=!0),i||r&&r.meta.paused||this._nextChunk(),r}this._halted=!0},this._sendError=function(e){U(this._config.error)?this._config.error(e):a&&this._config.error&&n.postMessage({workerId:v.WORKER_ID,error:e,finished:!1})}}function f(e){var r;(e=e||{}).chunkSize||(e.chunkSize=v.RemoteChunkSize),u.call(this,e),this._nextChunk=s?function(){this._readChunk(),this._chunkLoaded()}:function(){this._readChunk()},this.stream=function(e){this._input=e,this._nextChunk()},this._readChunk=function(){if(this._finished)this._chunkLoaded();else{if(r=new XMLHttpRequest,this._config.withCredentials&&(r.withCredentials=this._config.withCredentials),s||(r.onload=y(this._chunkLoaded,this),r.onerror=y(this._chunkError,this)),r.open(this._config.downloadRequestBody?\"POST\":\"GET\",this._input,!s),this._config.downloadRequestHeaders){var e,t=this._config.downloadRequestHeaders;for(e in t)r.setRequestHeader(e,t[e])}var i;this._config.chunkSize&&(i=this._start+this._config.chunkSize-1,r.setRequestHeader(\"Range\",\"bytes=\"+this._start+\"-\"+i));try{r.send(this._config.downloadRequestBody)}catch(e){this._chunkError(e.message)}s&&0===r.status&&this._chunkError()}},this._chunkLoaded=function(){4===r.readyState&&(r.status<200||400<=r.status?this._chunkError():(this._start+=this._config.chunkSize||r.responseText.length,this._finished=!this._config.chunkSize||this._start>=(e=>null!==(e=e.getResponseHeader(\"Content-Range\"))?parseInt(e.substring(e.lastIndexOf(\"/\")+1)):-1)(r),this.parseChunk(r.responseText)))},this._chunkError=function(e){e=r.statusText||e;this._sendError(new Error(e))}}function l(e){(e=e||{}).chunkSize||(e.chunkSize=v.LocalChunkSize),u.call(this,e);var i,r,n=\"undefined\"!=typeof FileReader;this.stream=function(e){this._input=e,r=e.slice||e.webkitSlice||e.mozSlice,n?((i=new FileReader).onload=y(this._chunkLoaded,this),i.onerror=y(this._chunkError,this)):i=new FileReaderSync,this._nextChunk()},this._nextChunk=function(){this._finished||this._config.preview&&!(this._rowCount<this._config.preview)||this._readChunk()},this._readChunk=function(){var e=this._input,t=(this._config.chunkSize&&(t=Math.min(this._start+this._config.chunkSize,this._input.size),e=r.call(e,this._start,t)),i.readAsText(e,this._config.encoding));n||this._chunkLoaded({target:{result:t}})},this._chunkLoaded=function(e){this._start+=this._config.chunkSize,this._finished=!this._config.chunkSize||this._start>=this._input.size,this.parseChunk(e.target.result)},this._chunkError=function(){this._sendError(i.error)}}function c(e){var i;u.call(this,e=e||{}),this.stream=function(e){return i=e,this._nextChunk()},this._nextChunk=function(){var e,t;if(!this._finished)return e=this._config.chunkSize,i=e?(t=i.substring(0,e),i.substring(e)):(t=i,\"\"),this._finished=!i,this.parseChunk(t)}}function p(e){u.call(this,e=e||{});var t=[],i=!0,r=!1;this.pause=function(){u.prototype.pause.apply(this,arguments),this._input.pause()},this.resume=function(){u.prototype.resume.apply(this,arguments),this._input.resume()},this.stream=function(e){this._input=e,this._input.on(\"data\",this._streamData),this._input.on(\"end\",this._streamEnd),this._input.on(\"error\",this._streamError)},this._checkIsFinished=function(){r&&1===t.length&&(this._finished=!0)},this._nextChunk=function(){this._checkIsFinished(),t.length?this.parseChunk(t.shift()):i=!0},this._streamData=y(function(e){try{t.push(\"string\"==typeof e?e:e.toString(this._config.encoding)),i&&(i=!1,this._checkIsFinished(),this.parseChunk(t.shift()))}catch(e){this._streamError(e)}},this),this._streamError=y(function(e){this._streamCleanUp(),this._sendError(e)},this),this._streamEnd=y(function(){this._streamCleanUp(),r=!0,this._streamData(\"\")},this),this._streamCleanUp=y(function(){this._input.removeListener(\"data\",this._streamData),this._input.removeListener(\"end\",this._streamEnd),this._input.removeListener(\"error\",this._streamError)},this)}function i(m){var n,s,a,t,o=Math.pow(2,53),h=-o,u=/^\\s*-?(\\d+\\.?|\\.\\d+|\\d+\\.\\d+)([eE][-+]?\\d+)?\\s*$/,d=/^((\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+([+-][0-2]\\d:[0-5]\\d|Z))|(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d([+-][0-2]\\d:[0-5]\\d|Z))|(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d([+-][0-2]\\d:[0-5]\\d|Z)))$/,i=this,r=0,f=0,l=!1,e=!1,c=[],p={data:[],errors:[],meta:{}};function y(e){return\"greedy\"===m.skipEmptyLines?\"\"===e.join(\"\").trim():1===e.length&&0===e[0].length}function g(){if(p&&a&&(k(\"Delimiter\",\"UndetectableDelimiter\",\"Unable to auto-detect delimiting character; defaulted to '\"+v.DefaultDelimiter+\"'\"),a=!1),m.skipEmptyLines&&(p.data=p.data.filter(function(e){return!y(e)})),_()){if(p)if(Array.isArray(p.data[0])){for(var e=0;_()&&e<p.data.length;e++)p.data[e].forEach(t);p.data.splice(0,1)}else p.data.forEach(t);function t(e,t){U(m.transformHeader)&&(e=m.transformHeader(e,t)),c.push(e)}}function i(e,t){for(var i=m.header?{}:[],r=0;r<e.length;r++){var n=r,s=e[r],s=((e,t)=>(e=>(m.dynamicTypingFunction&&void 0===m.dynamicTyping[e]&&(m.dynamicTyping[e]=m.dynamicTypingFunction(e)),!0===(m.dynamicTyping[e]||m.dynamicTyping)))(e)?\"true\"===t||\"TRUE\"===t||\"false\"!==t&&\"FALSE\"!==t&&((e=>{if(u.test(e)){e=parseFloat(e);if(h<e&&e<o)return 1}})(t)?parseFloat(t):d.test(t)?new Date(t):\"\"===t?null:t):t)(n=m.header?r>=c.length?\"__parsed_extra\":c[r]:n,s=m.transform?m.transform(s,n):s);\"__parsed_extra\"===n?(i[n]=i[n]||[],i[n].push(s)):i[n]=s}return m.header&&(r>c.length?k(\"FieldMismatch\",\"TooManyFields\",\"Too many fields: expected \"+c.length+\" fields but parsed \"+r,f+t):r<c.length&&k(\"FieldMismatch\",\"TooFewFields\",\"Too few fields: expected \"+c.length+\" fields but parsed \"+r,f+t)),i}var r;p&&(m.header||m.dynamicTyping||m.transform)&&(r=1,!p.data.length||Array.isArray(p.data[0])?(p.data=p.data.map(i),r=p.data.length):p.data=i(p.data,0),m.header&&p.meta&&(p.meta.fields=c),f+=r)}function _(){return m.header&&0===c.length}function k(e,t,i,r){e={type:e,code:t,message:i};void 0!==r&&(e.row=r),p.errors.push(e)}U(m.step)&&(t=m.step,m.step=function(e){p=e,_()?g():(g(),0!==p.data.length&&(r+=e.data.length,m.preview&&r>m.preview?s.abort():(p.data=p.data[0],t(p,i))))}),this.parse=function(e,t,i){var r=m.quoteChar||'\"',r=(m.newline||(m.newline=this.guessLineEndings(e,r)),a=!1,m.delimiter?U(m.delimiter)&&(m.delimiter=m.delimiter(e),p.meta.delimiter=m.delimiter):((r=((e,t,i,r,n)=>{var s,a,o,h;n=n||[\",\",\"\\t\",\"|\",\";\",v.RECORD_SEP,v.UNIT_SEP];for(var u=0;u<n.length;u++){for(var d,f=n[u],l=0,c=0,p=0,g=(o=void 0,new E({comments:r,delimiter:f,newline:t,preview:10}).parse(e)),_=0;_<g.data.length;_++)i&&y(g.data[_])?p++:(d=g.data[_].length,c+=d,void 0===o?o=d:0<d&&(l+=Math.abs(d-o),o=d));0<g.data.length&&(c/=g.data.length-p),(void 0===a||l<=a)&&(void 0===h||h<c)&&1.99<c&&(a=l,s=f,h=c)}return{successful:!!(m.delimiter=s),bestDelimiter:s}})(e,m.newline,m.skipEmptyLines,m.comments,m.delimitersToGuess)).successful?m.delimiter=r.bestDelimiter:(a=!0,m.delimiter=v.DefaultDelimiter),p.meta.delimiter=m.delimiter),w(m));return m.preview&&m.header&&r.preview++,n=e,s=new E(r),p=s.parse(n,t,i),g(),l?{meta:{paused:!0}}:p||{meta:{paused:!1}}},this.paused=function(){return l},this.pause=function(){l=!0,s.abort(),n=U(m.chunk)?\"\":n.substring(s.getCharIndex())},this.resume=function(){i.streamer._halted?(l=!1,i.streamer.parseChunk(n,!0)):setTimeout(i.resume,3)},this.aborted=function(){return e},this.abort=function(){e=!0,s.abort(),p.meta.aborted=!0,U(m.complete)&&m.complete(p),n=\"\"},this.guessLineEndings=function(e,t){e=e.substring(0,1048576);var t=new RegExp(P(t)+\"([^]*?)\"+P(t),\"gm\"),i=(e=e.replace(t,\"\")).split(\"\\r\"),t=e.split(\"\\n\"),e=1<t.length&&t[0].length<i[0].length;if(1===i.length||e)return\"\\n\";for(var r=0,n=0;n<i.length;n++)\"\\n\"===i[n][0]&&r++;return r>=i.length/2?\"\\r\\n\":\"\\r\"}}function P(e){return e.replace(/[.*+?^${}()|[\\]\\\\]/g,\"\\\\$&\")}function E(C){var S=(C=C||{}).delimiter,O=C.newline,x=C.comments,I=C.step,A=C.preview,T=C.fastMode,D=null,L=!1,F=null==C.quoteChar?'\"':C.quoteChar,j=F;if(void 0!==C.escapeChar&&(j=C.escapeChar),(\"string\"!=typeof S||-1<v.BAD_DELIMITERS.indexOf(S))&&(S=\",\"),x===S)throw new Error(\"Comment character same as delimiter\");!0===x?x=\"#\":(\"string\"!=typeof x||-1<v.BAD_DELIMITERS.indexOf(x))&&(x=!1),\"\\n\"!==O&&\"\\r\"!==O&&\"\\r\\n\"!==O&&(O=\"\\n\");var z=0,M=!1;this.parse=function(i,t,r){if(\"string\"!=typeof i)throw new Error(\"Input must be a string\");var n=i.length,e=S.length,s=O.length,a=x.length,o=U(I),h=[],u=[],d=[],f=z=0;if(!i)return b();if(T||!1!==T&&-1===i.indexOf(F)){for(var l=i.split(O),c=0;c<l.length;c++){if(d=l[c],z+=d.length,c!==l.length-1)z+=O.length;else if(r)return b();if(!x||d.substring(0,a)!==x){if(o){if(h=[],k(d.split(S)),R(),M)return b()}else k(d.split(S));if(A&&A<=c)return h=h.slice(0,A),b(!0)}}return b()}for(var p=i.indexOf(S,z),g=i.indexOf(O,z),_=new RegExp(P(j)+P(F),\"g\"),m=i.indexOf(F,z);;)if(i[z]===F)for(m=z,z++;;){if(-1===(m=i.indexOf(F,m+1)))return r||u.push({type:\"Quotes\",code:\"MissingQuotes\",message:\"Quoted field unterminated\",row:h.length,index:z}),E();if(m===n-1)return E(i.substring(z,m).replace(_,F));if(F===j&&i[m+1]===j)m++;else if(F===j||0===m||i[m-1]!==j){-1!==p&&p<m+1&&(p=i.indexOf(S,m+1));var y=v(-1===(g=-1!==g&&g<m+1?i.indexOf(O,m+1):g)?p:Math.min(p,g));if(i.substr(m+1+y,e)===S){d.push(i.substring(z,m).replace(_,F)),i[z=m+1+y+e]!==F&&(m=i.indexOf(F,z)),p=i.indexOf(S,z),g=i.indexOf(O,z);break}y=v(g);if(i.substring(m+1+y,m+1+y+s)===O){if(d.push(i.substring(z,m).replace(_,F)),w(m+1+y+s),p=i.indexOf(S,z),m=i.indexOf(F,z),o&&(R(),M))return b();if(A&&h.length>=A)return b(!0);break}u.push({type:\"Quotes\",code:\"InvalidQuotes\",message:\"Trailing quote on quoted field is malformed\",row:h.length,index:z}),m++}}else if(x&&0===d.length&&i.substring(z,z+a)===x){if(-1===g)return b();z=g+s,g=i.indexOf(O,z),p=i.indexOf(S,z)}else if(-1!==p&&(p<g||-1===g))d.push(i.substring(z,p)),z=p+e,p=i.indexOf(S,z);else{if(-1===g)break;if(d.push(i.substring(z,g)),w(g+s),o&&(R(),M))return b();if(A&&h.length>=A)return b(!0)}return E();function k(e){h.push(e),f=z}function v(e){var t=0;return t=-1!==e&&(e=i.substring(m+1,e))&&\"\"===e.trim()?e.length:t}function E(e){return r||(void 0===e&&(e=i.substring(z)),d.push(e),z=n,k(d),o&&R()),b()}function w(e){z=e,k(d),d=[],g=i.indexOf(O,z)}function b(e){if(C.header&&!t&&h.length&&!L){var s=h[0],a={},o=new Set(s);let n=!1;for(let r=0;r<s.length;r++){let i=s[r];if(a[i=U(C.transformHeader)?C.transformHeader(i,r):i]){let e,t=a[i];for(;e=i+\"_\"+t,t++,o.has(e););o.add(e),s[r]=e,a[i]++,n=!0,(D=null===D?{}:D)[e]=i}else a[i]=1,s[r]=i;o.add(i)}n&&console.warn(\"Duplicate headers found and renamed.\"),L=!0}return{data:h,errors:u,meta:{delimiter:S,linebreak:O,aborted:M,truncated:!!e,cursor:f+(t||0),renamedHeaders:D}}}function R(){I(b()),h=[],u=[]}},this.abort=function(){M=!0},this.getCharIndex=function(){return z}}function g(e){var t=e.data,i=o[t.workerId],r=!1;if(t.error)i.userError(t.error,t.file);else if(t.results&&t.results.data){var n={abort:function(){r=!0,_(t.workerId,{data:[],errors:[],meta:{aborted:!0}})},pause:m,resume:m};if(U(i.userStep)){for(var s=0;s<t.results.data.length&&(i.userStep({data:t.results.data[s],errors:t.results.errors,meta:t.results.meta},n),!r);s++);delete t.results}else U(i.userChunk)&&(i.userChunk(t.results,n,t.file),delete t.results)}t.finished&&!r&&_(t.workerId,t.results)}function _(e,t){var i=o[e];U(i.userComplete)&&i.userComplete(t),i.terminate(),delete o[e]}function m(){throw new Error(\"Not implemented.\")}function w(e){if(\"object\"!=typeof e||null===e)return e;var t,i=Array.isArray(e)?[]:{};for(t in e)i[t]=w(e[t]);return i}function y(e,t){return function(){e.apply(t,arguments)}}function U(e){return\"function\"==typeof e}return v.parse=function(e,t){var i=(t=t||{}).dynamicTyping||!1;U(i)&&(t.dynamicTypingFunction=i,i={});if(t.dynamicTyping=i,t.transform=!!U(t.transform)&&t.transform,!t.worker||!v.WORKERS_SUPPORTED)return i=null,v.NODE_STREAM_INPUT,\"string\"==typeof e?(e=(e=>65279!==e.charCodeAt(0)?e:e.slice(1))(e),i=new(t.download?f:c)(t)):!0===e.readable&&U(e.read)&&U(e.on)?i=new p(t):(n.File&&e instanceof File||e instanceof Object)&&(i=new l(t)),i.stream(e);(i=(()=>{var e;return!!v.WORKERS_SUPPORTED&&(e=(()=>{var e=n.URL||n.webkitURL||null,t=r.toString();return v.BLOB_URL||(v.BLOB_URL=e.createObjectURL(new Blob([\"var global = (function() { if (typeof self !== 'undefined') { return self; } if (typeof window !== 'undefined') { return window; } if (typeof global !== 'undefined') { return global; } return {}; })(); global.IS_PAPA_WORKER=true; \",\"(\",t,\")();\"],{type:\"text/javascript\"})))})(),(e=new n.Worker(e)).onmessage=g,e.id=h++,o[e.id]=e)})()).userStep=t.step,i.userChunk=t.chunk,i.userComplete=t.complete,i.userError=t.error,t.step=U(t.step),t.chunk=U(t.chunk),t.complete=U(t.complete),t.error=U(t.error),delete t.worker,i.postMessage({input:e,config:t,workerId:i.id})},v.unparse=function(e,t){var n=!1,_=!0,m=\",\",y=\"\\r\\n\",s='\"',a=s+s,i=!1,r=null,o=!1,h=((()=>{if(\"object\"==typeof t){if(\"string\"!=typeof t.delimiter||v.BAD_DELIMITERS.filter(function(e){return-1!==t.delimiter.indexOf(e)}).length||(m=t.delimiter),\"boolean\"!=typeof t.quotes&&\"function\"!=typeof t.quotes&&!Array.isArray(t.quotes)||(n=t.quotes),\"boolean\"!=typeof t.skipEmptyLines&&\"string\"!=typeof t.skipEmptyLines||(i=t.skipEmptyLines),\"string\"==typeof t.newline&&(y=t.newline),\"string\"==typeof t.quoteChar&&(s=t.quoteChar),\"boolean\"==typeof t.header&&(_=t.header),Array.isArray(t.columns)){if(0===t.columns.length)throw new Error(\"Option columns is empty\");r=t.columns}void 0!==t.escapeChar&&(a=t.escapeChar+s),t.escapeFormulae instanceof RegExp?o=t.escapeFormulae:\"boolean\"==typeof t.escapeFormulae&&t.escapeFormulae&&(o=/^[=+\\-@\\t\\r].*$/)}})(),new RegExp(P(s),\"g\"));\"string\"==typeof e&&(e=JSON.parse(e));if(Array.isArray(e)){if(!e.length||Array.isArray(e[0]))return u(null,e,i);if(\"object\"==typeof e[0])return u(r||Object.keys(e[0]),e,i)}else if(\"object\"==typeof e)return\"string\"==typeof e.data&&(e.data=JSON.parse(e.data)),Array.isArray(e.data)&&(e.fields||(e.fields=e.meta&&e.meta.fields||r),e.fields||(e.fields=Array.isArray(e.data[0])?e.fields:\"object\"==typeof e.data[0]?Object.keys(e.data[0]):[]),Array.isArray(e.data[0])||\"object\"==typeof e.data[0]||(e.data=[e.data])),u(e.fields||[],e.data||[],i);throw new Error(\"Unable to serialize unrecognized input\");function u(e,t,i){var r=\"\",n=(\"string\"==typeof e&&(e=JSON.parse(e)),\"string\"==typeof t&&(t=JSON.parse(t)),Array.isArray(e)&&0<e.length),s=!Array.isArray(t[0]);if(n&&_){for(var a=0;a<e.length;a++)0<a&&(r+=m),r+=k(e[a],a);0<t.length&&(r+=y)}for(var o=0;o<t.length;o++){var h=(n?e:t[o]).length,u=!1,d=n?0===Object.keys(t[o]).length:0===t[o].length;if(i&&!n&&(u=\"greedy\"===i?\"\"===t[o].join(\"\").trim():1===t[o].length&&0===t[o][0].length),\"greedy\"===i&&n){for(var f=[],l=0;l<h;l++){var c=s?e[l]:l;f.push(t[o][c])}u=\"\"===f.join(\"\").trim()}if(!u){for(var p=0;p<h;p++){0<p&&!d&&(r+=m);var g=n&&s?e[p]:p;r+=k(t[o][g],p)}o<t.length-1&&(!i||0<h&&!d)&&(r+=y)}}return r}function k(e,t){var i,r;return null==e?\"\":e.constructor===Date?JSON.stringify(e).slice(1,25):(r=!1,o&&\"string\"==typeof e&&o.test(e)&&(e=\"'\"+e,r=!0),i=e.toString().replace(h,a),(r=r||!0===n||\"function\"==typeof n&&n(e,t)||Array.isArray(n)&&n[t]||((e,t)=>{for(var i=0;i<t.length;i++)if(-1<e.indexOf(t[i]))return!0;return!1})(i,v.BAD_DELIMITERS)||-1<i.indexOf(m)||\" \"===i.charAt(0)||\" \"===i.charAt(i.length-1))?s+i+s:i)}},v.RECORD_SEP=String.fromCharCode(30),v.UNIT_SEP=String.fromCharCode(31),v.BYTE_ORDER_MARK=\"\\ufeff\",v.BAD_DELIMITERS=[\"\\r\",\"\\n\",'\"',v.BYTE_ORDER_MARK],v.WORKERS_SUPPORTED=!s&&!!n.Worker,v.NODE_STREAM_INPUT=1,v.LocalChunkSize=10485760,v.RemoteChunkSize=5242880,v.DefaultDelimiter=\",\",v.Parser=E,v.ParserHandle=i,v.NetworkStreamer=f,v.FileStreamer=l,v.StringStreamer=c,v.ReadableStreamStreamer=p,n.jQuery&&((d=n.jQuery).fn.parse=function(o){var i=o.config||{},h=[];return this.each(function(e){if(!(\"INPUT\"===d(this).prop(\"tagName\").toUpperCase()&&\"file\"===d(this).attr(\"type\").toLowerCase()&&n.FileReader)||!this.files||0===this.files.length)return!0;for(var t=0;t<this.files.length;t++)h.push({file:this.files[t],inputElem:this,instanceConfig:d.extend({},i)})}),e(),this;function e(){if(0===h.length)U(o.complete)&&o.complete();else{var e,t,i,r,n=h[0];if(U(o.before)){var s=o.before(n.file,n.inputElem);if(\"object\"==typeof s){if(\"abort\"===s.action)return e=\"AbortError\",t=n.file,i=n.inputElem,r=s.reason,void(U(o.error)&&o.error({name:e},t,i,r));if(\"skip\"===s.action)return void u();\"object\"==typeof s.config&&(n.instanceConfig=d.extend(n.instanceConfig,s.config))}else if(\"skip\"===s)return void u()}var a=n.instanceConfig.complete;n.instanceConfig.complete=function(e){U(a)&&a(e,n.file,n.inputElem),u()},v.parse(n.file,n.instanceConfig)}}function u(){h.splice(0,1),e()}}),a&&(n.onmessage=function(e){e=e.data;void 0===v.WORKER_ID&&e&&(v.WORKER_ID=e.workerId);\"string\"==typeof e.input?n.postMessage({workerId:v.WORKER_ID,results:v.parse(e.input,e.config),finished:!0}):(n.File&&e.input instanceof File||e.input instanceof Object)&&(e=v.parse(e.input,e.config))&&n.postMessage({workerId:v.WORKER_ID,results:e,finished:!0})}),(f.prototype=Object.create(u.prototype)).constructor=f,(l.prototype=Object.create(u.prototype)).constructor=l,(c.prototype=Object.create(c.prototype)).constructor=c,(p.prototype=Object.create(u.prototype)).constructor=p,v});","export const sizes = {\n icon: {\n small: \"1em\",\n medium: \"1.142em\",\n large: \"1.71em\",\n },\n};\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","const CLASS_PART_SEPARATOR = '-';\nconst createClassGroupUtils = config => {\n const classMap = createClassMap(config);\n const {\n conflictingClassGroups,\n conflictingClassGroupModifiers\n } = config;\n const getClassGroupId = className => {\n const classParts = className.split(CLASS_PART_SEPARATOR);\n // Classes like `-inset-1` produce an empty string as first classPart. We assume that classes for negative values are used correctly and remove it from classParts.\n if (classParts[0] === '' && classParts.length !== 1) {\n classParts.shift();\n }\n return getGroupRecursive(classParts, classMap) || getGroupIdForArbitraryProperty(className);\n };\n const getConflictingClassGroupIds = (classGroupId, hasPostfixModifier) => {\n const conflicts = conflictingClassGroups[classGroupId] || [];\n if (hasPostfixModifier && conflictingClassGroupModifiers[classGroupId]) {\n return [...conflicts, ...conflictingClassGroupModifiers[classGroupId]];\n }\n return conflicts;\n };\n return {\n getClassGroupId,\n getConflictingClassGroupIds\n };\n};\nconst getGroupRecursive = (classParts, classPartObject) => {\n if (classParts.length === 0) {\n return classPartObject.classGroupId;\n }\n const currentClassPart = classParts[0];\n const nextClassPartObject = classPartObject.nextPart.get(currentClassPart);\n const classGroupFromNextClassPart = nextClassPartObject ? getGroupRecursive(classParts.slice(1), nextClassPartObject) : undefined;\n if (classGroupFromNextClassPart) {\n return classGroupFromNextClassPart;\n }\n if (classPartObject.validators.length === 0) {\n return undefined;\n }\n const classRest = classParts.join(CLASS_PART_SEPARATOR);\n return classPartObject.validators.find(({\n validator\n }) => validator(classRest))?.classGroupId;\n};\nconst arbitraryPropertyRegex = /^\\[(.+)\\]$/;\nconst getGroupIdForArbitraryProperty = className => {\n if (arbitraryPropertyRegex.test(className)) {\n const arbitraryPropertyClassName = arbitraryPropertyRegex.exec(className)[1];\n const property = arbitraryPropertyClassName?.substring(0, arbitraryPropertyClassName.indexOf(':'));\n if (property) {\n // I use two dots here because one dot is used as prefix for class groups in plugins\n return 'arbitrary..' + property;\n }\n }\n};\n/**\n * Exported for testing only\n */\nconst createClassMap = config => {\n const {\n theme,\n classGroups\n } = config;\n const classMap = {\n nextPart: new Map(),\n validators: []\n };\n for (const classGroupId in classGroups) {\n processClassesRecursively(classGroups[classGroupId], classMap, classGroupId, theme);\n }\n return classMap;\n};\nconst processClassesRecursively = (classGroup, classPartObject, classGroupId, theme) => {\n classGroup.forEach(classDefinition => {\n if (typeof classDefinition === 'string') {\n const classPartObjectToEdit = classDefinition === '' ? classPartObject : getPart(classPartObject, classDefinition);\n classPartObjectToEdit.classGroupId = classGroupId;\n return;\n }\n if (typeof classDefinition === 'function') {\n if (isThemeGetter(classDefinition)) {\n processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme);\n return;\n }\n classPartObject.validators.push({\n validator: classDefinition,\n classGroupId\n });\n return;\n }\n Object.entries(classDefinition).forEach(([key, classGroup]) => {\n processClassesRecursively(classGroup, getPart(classPartObject, key), classGroupId, theme);\n });\n });\n};\nconst getPart = (classPartObject, path) => {\n let currentClassPartObject = classPartObject;\n path.split(CLASS_PART_SEPARATOR).forEach(pathPart => {\n if (!currentClassPartObject.nextPart.has(pathPart)) {\n currentClassPartObject.nextPart.set(pathPart, {\n nextPart: new Map(),\n validators: []\n });\n }\n currentClassPartObject = currentClassPartObject.nextPart.get(pathPart);\n });\n return currentClassPartObject;\n};\nconst isThemeGetter = func => func.isThemeGetter;\n\n// LRU cache inspired from hashlru (https://github.com/dominictarr/hashlru/blob/v1.0.4/index.js) but object replaced with Map to improve performance\nconst createLruCache = maxCacheSize => {\n if (maxCacheSize < 1) {\n return {\n get: () => undefined,\n set: () => {}\n };\n }\n let cacheSize = 0;\n let cache = new Map();\n let previousCache = new Map();\n const update = (key, value) => {\n cache.set(key, value);\n cacheSize++;\n if (cacheSize > maxCacheSize) {\n cacheSize = 0;\n previousCache = cache;\n cache = new Map();\n }\n };\n return {\n get(key) {\n let value = cache.get(key);\n if (value !== undefined) {\n return value;\n }\n if ((value = previousCache.get(key)) !== undefined) {\n update(key, value);\n return value;\n }\n },\n set(key, value) {\n if (cache.has(key)) {\n cache.set(key, value);\n } else {\n update(key, value);\n }\n }\n };\n};\nconst IMPORTANT_MODIFIER = '!';\nconst MODIFIER_SEPARATOR = ':';\nconst MODIFIER_SEPARATOR_LENGTH = MODIFIER_SEPARATOR.length;\nconst createParseClassName = config => {\n const {\n prefix,\n experimentalParseClassName\n } = config;\n /**\n * Parse class name into parts.\n *\n * Inspired by `splitAtTopLevelOnly` used in Tailwind CSS\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v3.2.2/src/util/splitAtTopLevelOnly.js\n */\n let parseClassName = className => {\n const modifiers = [];\n let bracketDepth = 0;\n let parenDepth = 0;\n let modifierStart = 0;\n let postfixModifierPosition;\n for (let index = 0; index < className.length; index++) {\n let currentCharacter = className[index];\n if (bracketDepth === 0 && parenDepth === 0) {\n if (currentCharacter === MODIFIER_SEPARATOR) {\n modifiers.push(className.slice(modifierStart, index));\n modifierStart = index + MODIFIER_SEPARATOR_LENGTH;\n continue;\n }\n if (currentCharacter === '/') {\n postfixModifierPosition = index;\n continue;\n }\n }\n if (currentCharacter === '[') {\n bracketDepth++;\n } else if (currentCharacter === ']') {\n bracketDepth--;\n } else if (currentCharacter === '(') {\n parenDepth++;\n } else if (currentCharacter === ')') {\n parenDepth--;\n }\n }\n const baseClassNameWithImportantModifier = modifiers.length === 0 ? className : className.substring(modifierStart);\n const baseClassName = stripImportantModifier(baseClassNameWithImportantModifier);\n const hasImportantModifier = baseClassName !== baseClassNameWithImportantModifier;\n const maybePostfixModifierPosition = postfixModifierPosition && postfixModifierPosition > modifierStart ? postfixModifierPosition - modifierStart : undefined;\n return {\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition\n };\n };\n if (prefix) {\n const fullPrefix = prefix + MODIFIER_SEPARATOR;\n const parseClassNameOriginal = parseClassName;\n parseClassName = className => className.startsWith(fullPrefix) ? parseClassNameOriginal(className.substring(fullPrefix.length)) : {\n isExternal: true,\n modifiers: [],\n hasImportantModifier: false,\n baseClassName: className,\n maybePostfixModifierPosition: undefined\n };\n }\n if (experimentalParseClassName) {\n const parseClassNameOriginal = parseClassName;\n parseClassName = className => experimentalParseClassName({\n className,\n parseClassName: parseClassNameOriginal\n });\n }\n return parseClassName;\n};\nconst stripImportantModifier = baseClassName => {\n if (baseClassName.endsWith(IMPORTANT_MODIFIER)) {\n return baseClassName.substring(0, baseClassName.length - 1);\n }\n /**\n * In Tailwind CSS v3 the important modifier was at the start of the base class name. This is still supported for legacy reasons.\n * @see https://github.com/dcastil/tailwind-merge/issues/513#issuecomment-2614029864\n */\n if (baseClassName.startsWith(IMPORTANT_MODIFIER)) {\n return baseClassName.substring(1);\n }\n return baseClassName;\n};\n\n/**\n * Sorts modifiers according to following schema:\n * - Predefined modifiers are sorted alphabetically\n * - When an arbitrary variant appears, it must be preserved which modifiers are before and after it\n */\nconst createSortModifiers = config => {\n const orderSensitiveModifiers = Object.fromEntries(config.orderSensitiveModifiers.map(modifier => [modifier, true]));\n const sortModifiers = modifiers => {\n if (modifiers.length <= 1) {\n return modifiers;\n }\n const sortedModifiers = [];\n let unsortedModifiers = [];\n modifiers.forEach(modifier => {\n const isPositionSensitive = modifier[0] === '[' || orderSensitiveModifiers[modifier];\n if (isPositionSensitive) {\n sortedModifiers.push(...unsortedModifiers.sort(), modifier);\n unsortedModifiers = [];\n } else {\n unsortedModifiers.push(modifier);\n }\n });\n sortedModifiers.push(...unsortedModifiers.sort());\n return sortedModifiers;\n };\n return sortModifiers;\n};\nconst createConfigUtils = config => ({\n cache: createLruCache(config.cacheSize),\n parseClassName: createParseClassName(config),\n sortModifiers: createSortModifiers(config),\n ...createClassGroupUtils(config)\n});\nconst SPLIT_CLASSES_REGEX = /\\s+/;\nconst mergeClassList = (classList, configUtils) => {\n const {\n parseClassName,\n getClassGroupId,\n getConflictingClassGroupIds,\n sortModifiers\n } = configUtils;\n /**\n * Set of classGroupIds in following format:\n * `{importantModifier}{variantModifiers}{classGroupId}`\n * @example 'float'\n * @example 'hover:focus:bg-color'\n * @example 'md:!pr'\n */\n const classGroupsInConflict = [];\n const classNames = classList.trim().split(SPLIT_CLASSES_REGEX);\n let result = '';\n for (let index = classNames.length - 1; index >= 0; index -= 1) {\n const originalClassName = classNames[index];\n const {\n isExternal,\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition\n } = parseClassName(originalClassName);\n if (isExternal) {\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n let hasPostfixModifier = !!maybePostfixModifierPosition;\n let classGroupId = getClassGroupId(hasPostfixModifier ? baseClassName.substring(0, maybePostfixModifierPosition) : baseClassName);\n if (!classGroupId) {\n if (!hasPostfixModifier) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n classGroupId = getClassGroupId(baseClassName);\n if (!classGroupId) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n hasPostfixModifier = false;\n }\n const variantModifier = sortModifiers(modifiers).join(':');\n const modifierId = hasImportantModifier ? variantModifier + IMPORTANT_MODIFIER : variantModifier;\n const classId = modifierId + classGroupId;\n if (classGroupsInConflict.includes(classId)) {\n // Tailwind class omitted due to conflict\n continue;\n }\n classGroupsInConflict.push(classId);\n const conflictGroups = getConflictingClassGroupIds(classGroupId, hasPostfixModifier);\n for (let i = 0; i < conflictGroups.length; ++i) {\n const group = conflictGroups[i];\n classGroupsInConflict.push(modifierId + group);\n }\n // Tailwind class not in conflict\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n }\n return result;\n};\n\n/**\n * The code in this file is copied from https://github.com/lukeed/clsx and modified to suit the needs of tailwind-merge better.\n *\n * Specifically:\n * - Runtime code from https://github.com/lukeed/clsx/blob/v1.2.1/src/index.js\n * - TypeScript types from https://github.com/lukeed/clsx/blob/v1.2.1/clsx.d.ts\n *\n * Original code has MIT license: Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)\n */\nfunction twJoin() {\n let index = 0;\n let argument;\n let resolvedValue;\n let string = '';\n while (index < arguments.length) {\n if (argument = arguments[index++]) {\n if (resolvedValue = toValue(argument)) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n}\nconst toValue = mix => {\n if (typeof mix === 'string') {\n return mix;\n }\n let resolvedValue;\n let string = '';\n for (let k = 0; k < mix.length; k++) {\n if (mix[k]) {\n if (resolvedValue = toValue(mix[k])) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n};\nfunction createTailwindMerge(createConfigFirst, ...createConfigRest) {\n let configUtils;\n let cacheGet;\n let cacheSet;\n let functionToCall = initTailwindMerge;\n function initTailwindMerge(classList) {\n const config = createConfigRest.reduce((previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig), createConfigFirst());\n configUtils = createConfigUtils(config);\n cacheGet = configUtils.cache.get;\n cacheSet = configUtils.cache.set;\n functionToCall = tailwindMerge;\n return tailwindMerge(classList);\n }\n function tailwindMerge(classList) {\n const cachedResult = cacheGet(classList);\n if (cachedResult) {\n return cachedResult;\n }\n const result = mergeClassList(classList, configUtils);\n cacheSet(classList, result);\n return result;\n }\n return function callTailwindMerge() {\n return functionToCall(twJoin.apply(null, arguments));\n };\n}\nconst fromTheme = key => {\n const themeGetter = theme => theme[key] || [];\n themeGetter.isThemeGetter = true;\n return themeGetter;\n};\nconst arbitraryValueRegex = /^\\[(?:(\\w[\\w-]*):)?(.+)\\]$/i;\nconst arbitraryVariableRegex = /^\\((?:(\\w[\\w-]*):)?(.+)\\)$/i;\nconst fractionRegex = /^\\d+\\/\\d+$/;\nconst tshirtUnitRegex = /^(\\d+(\\.\\d+)?)?(xs|sm|md|lg|xl)$/;\nconst lengthUnitRegex = /\\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\\b(calc|min|max|clamp)\\(.+\\)|^0$/;\nconst colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch))\\(.+\\)$/;\n// Shadow always begins with x and y offset separated by underscore optionally prepended by inset\nconst shadowRegex = /^(inset_)?-?((\\d+)?\\.?(\\d+)[a-z]+|0)_-?((\\d+)?\\.?(\\d+)[a-z]+|0)/;\nconst imageRegex = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\\(.+\\)$/;\nconst isFraction = value => fractionRegex.test(value);\nconst isNumber = value => !!value && !Number.isNaN(Number(value));\nconst isInteger = value => !!value && Number.isInteger(Number(value));\nconst isPercent = value => value.endsWith('%') && isNumber(value.slice(0, -1));\nconst isTshirtSize = value => tshirtUnitRegex.test(value);\nconst isAny = () => true;\nconst isLengthOnly = value =>\n// `colorFunctionRegex` check is necessary because color functions can have percentages in them which which would be incorrectly classified as lengths.\n// For example, `hsl(0 0% 0%)` would be classified as a length without this check.\n// I could also use lookbehind assertion in `lengthUnitRegex` but that isn't supported widely enough.\nlengthUnitRegex.test(value) && !colorFunctionRegex.test(value);\nconst isNever = () => false;\nconst isShadow = value => shadowRegex.test(value);\nconst isImage = value => imageRegex.test(value);\nconst isAnyNonArbitrary = value => !isArbitraryValue(value) && !isArbitraryVariable(value);\nconst isArbitrarySize = value => getIsArbitraryValue(value, isLabelSize, isNever);\nconst isArbitraryValue = value => arbitraryValueRegex.test(value);\nconst isArbitraryLength = value => getIsArbitraryValue(value, isLabelLength, isLengthOnly);\nconst isArbitraryNumber = value => getIsArbitraryValue(value, isLabelNumber, isNumber);\nconst isArbitraryPosition = value => getIsArbitraryValue(value, isLabelPosition, isNever);\nconst isArbitraryImage = value => getIsArbitraryValue(value, isLabelImage, isImage);\nconst isArbitraryShadow = value => getIsArbitraryValue(value, isLabelShadow, isShadow);\nconst isArbitraryVariable = value => arbitraryVariableRegex.test(value);\nconst isArbitraryVariableLength = value => getIsArbitraryVariable(value, isLabelLength);\nconst isArbitraryVariableFamilyName = value => getIsArbitraryVariable(value, isLabelFamilyName);\nconst isArbitraryVariablePosition = value => getIsArbitraryVariable(value, isLabelPosition);\nconst isArbitraryVariableSize = value => getIsArbitraryVariable(value, isLabelSize);\nconst isArbitraryVariableImage = value => getIsArbitraryVariable(value, isLabelImage);\nconst isArbitraryVariableShadow = value => getIsArbitraryVariable(value, isLabelShadow, true);\n// Helpers\nconst getIsArbitraryValue = (value, testLabel, testValue) => {\n const result = arbitraryValueRegex.exec(value);\n if (result) {\n if (result[1]) {\n return testLabel(result[1]);\n }\n return testValue(result[2]);\n }\n return false;\n};\nconst getIsArbitraryVariable = (value, testLabel, shouldMatchNoLabel = false) => {\n const result = arbitraryVariableRegex.exec(value);\n if (result) {\n if (result[1]) {\n return testLabel(result[1]);\n }\n return shouldMatchNoLabel;\n }\n return false;\n};\n// Labels\nconst isLabelPosition = label => label === 'position' || label === 'percentage';\nconst isLabelImage = label => label === 'image' || label === 'url';\nconst isLabelSize = label => label === 'length' || label === 'size' || label === 'bg-size';\nconst isLabelLength = label => label === 'length';\nconst isLabelNumber = label => label === 'number';\nconst isLabelFamilyName = label => label === 'family-name';\nconst isLabelShadow = label => label === 'shadow';\nconst validators = /*#__PURE__*/Object.defineProperty({\n __proto__: null,\n isAny,\n isAnyNonArbitrary,\n isArbitraryImage,\n isArbitraryLength,\n isArbitraryNumber,\n isArbitraryPosition,\n isArbitraryShadow,\n isArbitrarySize,\n isArbitraryValue,\n isArbitraryVariable,\n isArbitraryVariableFamilyName,\n isArbitraryVariableImage,\n isArbitraryVariableLength,\n isArbitraryVariablePosition,\n isArbitraryVariableShadow,\n isArbitraryVariableSize,\n isFraction,\n isInteger,\n isNumber,\n isPercent,\n isTshirtSize\n}, Symbol.toStringTag, {\n value: 'Module'\n});\nconst getDefaultConfig = () => {\n /**\n * Theme getters for theme variable namespaces\n * @see https://tailwindcss.com/docs/theme#theme-variable-namespaces\n */\n /***/\n const themeColor = fromTheme('color');\n const themeFont = fromTheme('font');\n const themeText = fromTheme('text');\n const themeFontWeight = fromTheme('font-weight');\n const themeTracking = fromTheme('tracking');\n const themeLeading = fromTheme('leading');\n const themeBreakpoint = fromTheme('breakpoint');\n const themeContainer = fromTheme('container');\n const themeSpacing = fromTheme('spacing');\n const themeRadius = fromTheme('radius');\n const themeShadow = fromTheme('shadow');\n const themeInsetShadow = fromTheme('inset-shadow');\n const themeTextShadow = fromTheme('text-shadow');\n const themeDropShadow = fromTheme('drop-shadow');\n const themeBlur = fromTheme('blur');\n const themePerspective = fromTheme('perspective');\n const themeAspect = fromTheme('aspect');\n const themeEase = fromTheme('ease');\n const themeAnimate = fromTheme('animate');\n /**\n * Helpers to avoid repeating the same scales\n *\n * We use functions that create a new array every time they're called instead of static arrays.\n * This ensures that users who modify any scale by mutating the array (e.g. with `array.push(element)`) don't accidentally mutate arrays in other parts of the config.\n */\n /***/\n const scaleBreak = () => ['auto', 'avoid', 'all', 'avoid-page', 'page', 'left', 'right', 'column'];\n const scalePosition = () => ['center', 'top', 'bottom', 'left', 'right', 'top-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-top', 'top-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-top', 'bottom-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-bottom', 'bottom-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-bottom'];\n const scalePositionWithArbitrary = () => [...scalePosition(), isArbitraryVariable, isArbitraryValue];\n const scaleOverflow = () => ['auto', 'hidden', 'clip', 'visible', 'scroll'];\n const scaleOverscroll = () => ['auto', 'contain', 'none'];\n const scaleUnambiguousSpacing = () => [isArbitraryVariable, isArbitraryValue, themeSpacing];\n const scaleInset = () => [isFraction, 'full', 'auto', ...scaleUnambiguousSpacing()];\n const scaleGridTemplateColsRows = () => [isInteger, 'none', 'subgrid', isArbitraryVariable, isArbitraryValue];\n const scaleGridColRowStartAndEnd = () => ['auto', {\n span: ['full', isInteger, isArbitraryVariable, isArbitraryValue]\n }, isInteger, isArbitraryVariable, isArbitraryValue];\n const scaleGridColRowStartOrEnd = () => [isInteger, 'auto', isArbitraryVariable, isArbitraryValue];\n const scaleGridAutoColsRows = () => ['auto', 'min', 'max', 'fr', isArbitraryVariable, isArbitraryValue];\n const scaleAlignPrimaryAxis = () => ['start', 'end', 'center', 'between', 'around', 'evenly', 'stretch', 'baseline', 'center-safe', 'end-safe'];\n const scaleAlignSecondaryAxis = () => ['start', 'end', 'center', 'stretch', 'center-safe', 'end-safe'];\n const scaleMargin = () => ['auto', ...scaleUnambiguousSpacing()];\n const scaleSizing = () => [isFraction, 'auto', 'full', 'dvw', 'dvh', 'lvw', 'lvh', 'svw', 'svh', 'min', 'max', 'fit', ...scaleUnambiguousSpacing()];\n const scaleColor = () => [themeColor, isArbitraryVariable, isArbitraryValue];\n const scaleBgPosition = () => [...scalePosition(), isArbitraryVariablePosition, isArbitraryPosition, {\n position: [isArbitraryVariable, isArbitraryValue]\n }];\n const scaleBgRepeat = () => ['no-repeat', {\n repeat: ['', 'x', 'y', 'space', 'round']\n }];\n const scaleBgSize = () => ['auto', 'cover', 'contain', isArbitraryVariableSize, isArbitrarySize, {\n size: [isArbitraryVariable, isArbitraryValue]\n }];\n const scaleGradientStopPosition = () => [isPercent, isArbitraryVariableLength, isArbitraryLength];\n const scaleRadius = () => [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', 'full', themeRadius, isArbitraryVariable, isArbitraryValue];\n const scaleBorderWidth = () => ['', isNumber, isArbitraryVariableLength, isArbitraryLength];\n const scaleLineStyle = () => ['solid', 'dashed', 'dotted', 'double'];\n const scaleBlendMode = () => ['normal', 'multiply', 'screen', 'overlay', 'darken', 'lighten', 'color-dodge', 'color-burn', 'hard-light', 'soft-light', 'difference', 'exclusion', 'hue', 'saturation', 'color', 'luminosity'];\n const scaleMaskImagePosition = () => [isNumber, isPercent, isArbitraryVariablePosition, isArbitraryPosition];\n const scaleBlur = () => [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeBlur, isArbitraryVariable, isArbitraryValue];\n const scaleRotate = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleScale = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleSkew = () => [isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleTranslate = () => [isFraction, 'full', ...scaleUnambiguousSpacing()];\n return {\n cacheSize: 500,\n theme: {\n animate: ['spin', 'ping', 'pulse', 'bounce'],\n aspect: ['video'],\n blur: [isTshirtSize],\n breakpoint: [isTshirtSize],\n color: [isAny],\n container: [isTshirtSize],\n 'drop-shadow': [isTshirtSize],\n ease: ['in', 'out', 'in-out'],\n font: [isAnyNonArbitrary],\n 'font-weight': ['thin', 'extralight', 'light', 'normal', 'medium', 'semibold', 'bold', 'extrabold', 'black'],\n 'inset-shadow': [isTshirtSize],\n leading: ['none', 'tight', 'snug', 'normal', 'relaxed', 'loose'],\n perspective: ['dramatic', 'near', 'normal', 'midrange', 'distant', 'none'],\n radius: [isTshirtSize],\n shadow: [isTshirtSize],\n spacing: ['px', isNumber],\n text: [isTshirtSize],\n 'text-shadow': [isTshirtSize],\n tracking: ['tighter', 'tight', 'normal', 'wide', 'wider', 'widest']\n },\n classGroups: {\n // --------------\n // --- Layout ---\n // --------------\n /**\n * Aspect Ratio\n * @see https://tailwindcss.com/docs/aspect-ratio\n */\n aspect: [{\n aspect: ['auto', 'square', isFraction, isArbitraryValue, isArbitraryVariable, themeAspect]\n }],\n /**\n * Container\n * @see https://tailwindcss.com/docs/container\n * @deprecated since Tailwind CSS v4.0.0\n */\n container: ['container'],\n /**\n * Columns\n * @see https://tailwindcss.com/docs/columns\n */\n columns: [{\n columns: [isNumber, isArbitraryValue, isArbitraryVariable, themeContainer]\n }],\n /**\n * Break After\n * @see https://tailwindcss.com/docs/break-after\n */\n 'break-after': [{\n 'break-after': scaleBreak()\n }],\n /**\n * Break Before\n * @see https://tailwindcss.com/docs/break-before\n */\n 'break-before': [{\n 'break-before': scaleBreak()\n }],\n /**\n * Break Inside\n * @see https://tailwindcss.com/docs/break-inside\n */\n 'break-inside': [{\n 'break-inside': ['auto', 'avoid', 'avoid-page', 'avoid-column']\n }],\n /**\n * Box Decoration Break\n * @see https://tailwindcss.com/docs/box-decoration-break\n */\n 'box-decoration': [{\n 'box-decoration': ['slice', 'clone']\n }],\n /**\n * Box Sizing\n * @see https://tailwindcss.com/docs/box-sizing\n */\n box: [{\n box: ['border', 'content']\n }],\n /**\n * Display\n * @see https://tailwindcss.com/docs/display\n */\n display: ['block', 'inline-block', 'inline', 'flex', 'inline-flex', 'table', 'inline-table', 'table-caption', 'table-cell', 'table-column', 'table-column-group', 'table-footer-group', 'table-header-group', 'table-row-group', 'table-row', 'flow-root', 'grid', 'inline-grid', 'contents', 'list-item', 'hidden'],\n /**\n * Screen Reader Only\n * @see https://tailwindcss.com/docs/display#screen-reader-only\n */\n sr: ['sr-only', 'not-sr-only'],\n /**\n * Floats\n * @see https://tailwindcss.com/docs/float\n */\n float: [{\n float: ['right', 'left', 'none', 'start', 'end']\n }],\n /**\n * Clear\n * @see https://tailwindcss.com/docs/clear\n */\n clear: [{\n clear: ['left', 'right', 'both', 'none', 'start', 'end']\n }],\n /**\n * Isolation\n * @see https://tailwindcss.com/docs/isolation\n */\n isolation: ['isolate', 'isolation-auto'],\n /**\n * Object Fit\n * @see https://tailwindcss.com/docs/object-fit\n */\n 'object-fit': [{\n object: ['contain', 'cover', 'fill', 'none', 'scale-down']\n }],\n /**\n * Object Position\n * @see https://tailwindcss.com/docs/object-position\n */\n 'object-position': [{\n object: scalePositionWithArbitrary()\n }],\n /**\n * Overflow\n * @see https://tailwindcss.com/docs/overflow\n */\n overflow: [{\n overflow: scaleOverflow()\n }],\n /**\n * Overflow X\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-x': [{\n 'overflow-x': scaleOverflow()\n }],\n /**\n * Overflow Y\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-y': [{\n 'overflow-y': scaleOverflow()\n }],\n /**\n * Overscroll Behavior\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n overscroll: [{\n overscroll: scaleOverscroll()\n }],\n /**\n * Overscroll Behavior X\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-x': [{\n 'overscroll-x': scaleOverscroll()\n }],\n /**\n * Overscroll Behavior Y\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-y': [{\n 'overscroll-y': scaleOverscroll()\n }],\n /**\n * Position\n * @see https://tailwindcss.com/docs/position\n */\n position: ['static', 'fixed', 'absolute', 'relative', 'sticky'],\n /**\n * Top / Right / Bottom / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n inset: [{\n inset: scaleInset()\n }],\n /**\n * Right / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-x': [{\n 'inset-x': scaleInset()\n }],\n /**\n * Top / Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-y': [{\n 'inset-y': scaleInset()\n }],\n /**\n * Start\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n start: [{\n start: scaleInset()\n }],\n /**\n * End\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n end: [{\n end: scaleInset()\n }],\n /**\n * Top\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n top: [{\n top: scaleInset()\n }],\n /**\n * Right\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n right: [{\n right: scaleInset()\n }],\n /**\n * Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n bottom: [{\n bottom: scaleInset()\n }],\n /**\n * Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n left: [{\n left: scaleInset()\n }],\n /**\n * Visibility\n * @see https://tailwindcss.com/docs/visibility\n */\n visibility: ['visible', 'invisible', 'collapse'],\n /**\n * Z-Index\n * @see https://tailwindcss.com/docs/z-index\n */\n z: [{\n z: [isInteger, 'auto', isArbitraryVariable, isArbitraryValue]\n }],\n // ------------------------\n // --- Flexbox and Grid ---\n // ------------------------\n /**\n * Flex Basis\n * @see https://tailwindcss.com/docs/flex-basis\n */\n basis: [{\n basis: [isFraction, 'full', 'auto', themeContainer, ...scaleUnambiguousSpacing()]\n }],\n /**\n * Flex Direction\n * @see https://tailwindcss.com/docs/flex-direction\n */\n 'flex-direction': [{\n flex: ['row', 'row-reverse', 'col', 'col-reverse']\n }],\n /**\n * Flex Wrap\n * @see https://tailwindcss.com/docs/flex-wrap\n */\n 'flex-wrap': [{\n flex: ['nowrap', 'wrap', 'wrap-reverse']\n }],\n /**\n * Flex\n * @see https://tailwindcss.com/docs/flex\n */\n flex: [{\n flex: [isNumber, isFraction, 'auto', 'initial', 'none', isArbitraryValue]\n }],\n /**\n * Flex Grow\n * @see https://tailwindcss.com/docs/flex-grow\n */\n grow: [{\n grow: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Flex Shrink\n * @see https://tailwindcss.com/docs/flex-shrink\n */\n shrink: [{\n shrink: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Order\n * @see https://tailwindcss.com/docs/order\n */\n order: [{\n order: [isInteger, 'first', 'last', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Grid Template Columns\n * @see https://tailwindcss.com/docs/grid-template-columns\n */\n 'grid-cols': [{\n 'grid-cols': scaleGridTemplateColsRows()\n }],\n /**\n * Grid Column Start / End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start-end': [{\n col: scaleGridColRowStartAndEnd()\n }],\n /**\n * Grid Column Start\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start': [{\n 'col-start': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Column End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-end': [{\n 'col-end': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Template Rows\n * @see https://tailwindcss.com/docs/grid-template-rows\n */\n 'grid-rows': [{\n 'grid-rows': scaleGridTemplateColsRows()\n }],\n /**\n * Grid Row Start / End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start-end': [{\n row: scaleGridColRowStartAndEnd()\n }],\n /**\n * Grid Row Start\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start': [{\n 'row-start': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Row End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-end': [{\n 'row-end': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Auto Flow\n * @see https://tailwindcss.com/docs/grid-auto-flow\n */\n 'grid-flow': [{\n 'grid-flow': ['row', 'col', 'dense', 'row-dense', 'col-dense']\n }],\n /**\n * Grid Auto Columns\n * @see https://tailwindcss.com/docs/grid-auto-columns\n */\n 'auto-cols': [{\n 'auto-cols': scaleGridAutoColsRows()\n }],\n /**\n * Grid Auto Rows\n * @see https://tailwindcss.com/docs/grid-auto-rows\n */\n 'auto-rows': [{\n 'auto-rows': scaleGridAutoColsRows()\n }],\n /**\n * Gap\n * @see https://tailwindcss.com/docs/gap\n */\n gap: [{\n gap: scaleUnambiguousSpacing()\n }],\n /**\n * Gap X\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-x': [{\n 'gap-x': scaleUnambiguousSpacing()\n }],\n /**\n * Gap Y\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-y': [{\n 'gap-y': scaleUnambiguousSpacing()\n }],\n /**\n * Justify Content\n * @see https://tailwindcss.com/docs/justify-content\n */\n 'justify-content': [{\n justify: [...scaleAlignPrimaryAxis(), 'normal']\n }],\n /**\n * Justify Items\n * @see https://tailwindcss.com/docs/justify-items\n */\n 'justify-items': [{\n 'justify-items': [...scaleAlignSecondaryAxis(), 'normal']\n }],\n /**\n * Justify Self\n * @see https://tailwindcss.com/docs/justify-self\n */\n 'justify-self': [{\n 'justify-self': ['auto', ...scaleAlignSecondaryAxis()]\n }],\n /**\n * Align Content\n * @see https://tailwindcss.com/docs/align-content\n */\n 'align-content': [{\n content: ['normal', ...scaleAlignPrimaryAxis()]\n }],\n /**\n * Align Items\n * @see https://tailwindcss.com/docs/align-items\n */\n 'align-items': [{\n items: [...scaleAlignSecondaryAxis(), {\n baseline: ['', 'last']\n }]\n }],\n /**\n * Align Self\n * @see https://tailwindcss.com/docs/align-self\n */\n 'align-self': [{\n self: ['auto', ...scaleAlignSecondaryAxis(), {\n baseline: ['', 'last']\n }]\n }],\n /**\n * Place Content\n * @see https://tailwindcss.com/docs/place-content\n */\n 'place-content': [{\n 'place-content': scaleAlignPrimaryAxis()\n }],\n /**\n * Place Items\n * @see https://tailwindcss.com/docs/place-items\n */\n 'place-items': [{\n 'place-items': [...scaleAlignSecondaryAxis(), 'baseline']\n }],\n /**\n * Place Self\n * @see https://tailwindcss.com/docs/place-self\n */\n 'place-self': [{\n 'place-self': ['auto', ...scaleAlignSecondaryAxis()]\n }],\n // Spacing\n /**\n * Padding\n * @see https://tailwindcss.com/docs/padding\n */\n p: [{\n p: scaleUnambiguousSpacing()\n }],\n /**\n * Padding X\n * @see https://tailwindcss.com/docs/padding\n */\n px: [{\n px: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Y\n * @see https://tailwindcss.com/docs/padding\n */\n py: [{\n py: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Start\n * @see https://tailwindcss.com/docs/padding\n */\n ps: [{\n ps: scaleUnambiguousSpacing()\n }],\n /**\n * Padding End\n * @see https://tailwindcss.com/docs/padding\n */\n pe: [{\n pe: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Top\n * @see https://tailwindcss.com/docs/padding\n */\n pt: [{\n pt: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Right\n * @see https://tailwindcss.com/docs/padding\n */\n pr: [{\n pr: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Bottom\n * @see https://tailwindcss.com/docs/padding\n */\n pb: [{\n pb: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Left\n * @see https://tailwindcss.com/docs/padding\n */\n pl: [{\n pl: scaleUnambiguousSpacing()\n }],\n /**\n * Margin\n * @see https://tailwindcss.com/docs/margin\n */\n m: [{\n m: scaleMargin()\n }],\n /**\n * Margin X\n * @see https://tailwindcss.com/docs/margin\n */\n mx: [{\n mx: scaleMargin()\n }],\n /**\n * Margin Y\n * @see https://tailwindcss.com/docs/margin\n */\n my: [{\n my: scaleMargin()\n }],\n /**\n * Margin Start\n * @see https://tailwindcss.com/docs/margin\n */\n ms: [{\n ms: scaleMargin()\n }],\n /**\n * Margin End\n * @see https://tailwindcss.com/docs/margin\n */\n me: [{\n me: scaleMargin()\n }],\n /**\n * Margin Top\n * @see https://tailwindcss.com/docs/margin\n */\n mt: [{\n mt: scaleMargin()\n }],\n /**\n * Margin Right\n * @see https://tailwindcss.com/docs/margin\n */\n mr: [{\n mr: scaleMargin()\n }],\n /**\n * Margin Bottom\n * @see https://tailwindcss.com/docs/margin\n */\n mb: [{\n mb: scaleMargin()\n }],\n /**\n * Margin Left\n * @see https://tailwindcss.com/docs/margin\n */\n ml: [{\n ml: scaleMargin()\n }],\n /**\n * Space Between X\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x': [{\n 'space-x': scaleUnambiguousSpacing()\n }],\n /**\n * Space Between X Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x-reverse': ['space-x-reverse'],\n /**\n * Space Between Y\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y': [{\n 'space-y': scaleUnambiguousSpacing()\n }],\n /**\n * Space Between Y Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y-reverse': ['space-y-reverse'],\n // --------------\n // --- Sizing ---\n // --------------\n /**\n * Size\n * @see https://tailwindcss.com/docs/width#setting-both-width-and-height\n */\n size: [{\n size: scaleSizing()\n }],\n /**\n * Width\n * @see https://tailwindcss.com/docs/width\n */\n w: [{\n w: [themeContainer, 'screen', ...scaleSizing()]\n }],\n /**\n * Min-Width\n * @see https://tailwindcss.com/docs/min-width\n */\n 'min-w': [{\n 'min-w': [themeContainer, 'screen', /** Deprecated. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'none', ...scaleSizing()]\n }],\n /**\n * Max-Width\n * @see https://tailwindcss.com/docs/max-width\n */\n 'max-w': [{\n 'max-w': [themeContainer, 'screen', 'none', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'prose', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n {\n screen: [themeBreakpoint]\n }, ...scaleSizing()]\n }],\n /**\n * Height\n * @see https://tailwindcss.com/docs/height\n */\n h: [{\n h: ['screen', ...scaleSizing()]\n }],\n /**\n * Min-Height\n * @see https://tailwindcss.com/docs/min-height\n */\n 'min-h': [{\n 'min-h': ['screen', 'none', ...scaleSizing()]\n }],\n /**\n * Max-Height\n * @see https://tailwindcss.com/docs/max-height\n */\n 'max-h': [{\n 'max-h': ['screen', ...scaleSizing()]\n }],\n // ------------------\n // --- Typography ---\n // ------------------\n /**\n * Font Size\n * @see https://tailwindcss.com/docs/font-size\n */\n 'font-size': [{\n text: ['base', themeText, isArbitraryVariableLength, isArbitraryLength]\n }],\n /**\n * Font Smoothing\n * @see https://tailwindcss.com/docs/font-smoothing\n */\n 'font-smoothing': ['antialiased', 'subpixel-antialiased'],\n /**\n * Font Style\n * @see https://tailwindcss.com/docs/font-style\n */\n 'font-style': ['italic', 'not-italic'],\n /**\n * Font Weight\n * @see https://tailwindcss.com/docs/font-weight\n */\n 'font-weight': [{\n font: [themeFontWeight, isArbitraryVariable, isArbitraryNumber]\n }],\n /**\n * Font Stretch\n * @see https://tailwindcss.com/docs/font-stretch\n */\n 'font-stretch': [{\n 'font-stretch': ['ultra-condensed', 'extra-condensed', 'condensed', 'semi-condensed', 'normal', 'semi-expanded', 'expanded', 'extra-expanded', 'ultra-expanded', isPercent, isArbitraryValue]\n }],\n /**\n * Font Family\n * @see https://tailwindcss.com/docs/font-family\n */\n 'font-family': [{\n font: [isArbitraryVariableFamilyName, isArbitraryValue, themeFont]\n }],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-normal': ['normal-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-ordinal': ['ordinal'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-slashed-zero': ['slashed-zero'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-figure': ['lining-nums', 'oldstyle-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-spacing': ['proportional-nums', 'tabular-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-fraction': ['diagonal-fractions', 'stacked-fractions'],\n /**\n * Letter Spacing\n * @see https://tailwindcss.com/docs/letter-spacing\n */\n tracking: [{\n tracking: [themeTracking, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Line Clamp\n * @see https://tailwindcss.com/docs/line-clamp\n */\n 'line-clamp': [{\n 'line-clamp': [isNumber, 'none', isArbitraryVariable, isArbitraryNumber]\n }],\n /**\n * Line Height\n * @see https://tailwindcss.com/docs/line-height\n */\n leading: [{\n leading: [/** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n themeLeading, ...scaleUnambiguousSpacing()]\n }],\n /**\n * List Style Image\n * @see https://tailwindcss.com/docs/list-style-image\n */\n 'list-image': [{\n 'list-image': ['none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * List Style Position\n * @see https://tailwindcss.com/docs/list-style-position\n */\n 'list-style-position': [{\n list: ['inside', 'outside']\n }],\n /**\n * List Style Type\n * @see https://tailwindcss.com/docs/list-style-type\n */\n 'list-style-type': [{\n list: ['disc', 'decimal', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Text Alignment\n * @see https://tailwindcss.com/docs/text-align\n */\n 'text-alignment': [{\n text: ['left', 'center', 'right', 'justify', 'start', 'end']\n }],\n /**\n * Placeholder Color\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://v3.tailwindcss.com/docs/placeholder-color\n */\n 'placeholder-color': [{\n placeholder: scaleColor()\n }],\n /**\n * Text Color\n * @see https://tailwindcss.com/docs/text-color\n */\n 'text-color': [{\n text: scaleColor()\n }],\n /**\n * Text Decoration\n * @see https://tailwindcss.com/docs/text-decoration\n */\n 'text-decoration': ['underline', 'overline', 'line-through', 'no-underline'],\n /**\n * Text Decoration Style\n * @see https://tailwindcss.com/docs/text-decoration-style\n */\n 'text-decoration-style': [{\n decoration: [...scaleLineStyle(), 'wavy']\n }],\n /**\n * Text Decoration Thickness\n * @see https://tailwindcss.com/docs/text-decoration-thickness\n */\n 'text-decoration-thickness': [{\n decoration: [isNumber, 'from-font', 'auto', isArbitraryVariable, isArbitraryLength]\n }],\n /**\n * Text Decoration Color\n * @see https://tailwindcss.com/docs/text-decoration-color\n */\n 'text-decoration-color': [{\n decoration: scaleColor()\n }],\n /**\n * Text Underline Offset\n * @see https://tailwindcss.com/docs/text-underline-offset\n */\n 'underline-offset': [{\n 'underline-offset': [isNumber, 'auto', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Text Transform\n * @see https://tailwindcss.com/docs/text-transform\n */\n 'text-transform': ['uppercase', 'lowercase', 'capitalize', 'normal-case'],\n /**\n * Text Overflow\n * @see https://tailwindcss.com/docs/text-overflow\n */\n 'text-overflow': ['truncate', 'text-ellipsis', 'text-clip'],\n /**\n * Text Wrap\n * @see https://tailwindcss.com/docs/text-wrap\n */\n 'text-wrap': [{\n text: ['wrap', 'nowrap', 'balance', 'pretty']\n }],\n /**\n * Text Indent\n * @see https://tailwindcss.com/docs/text-indent\n */\n indent: [{\n indent: scaleUnambiguousSpacing()\n }],\n /**\n * Vertical Alignment\n * @see https://tailwindcss.com/docs/vertical-align\n */\n 'vertical-align': [{\n align: ['baseline', 'top', 'middle', 'bottom', 'text-top', 'text-bottom', 'sub', 'super', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Whitespace\n * @see https://tailwindcss.com/docs/whitespace\n */\n whitespace: [{\n whitespace: ['normal', 'nowrap', 'pre', 'pre-line', 'pre-wrap', 'break-spaces']\n }],\n /**\n * Word Break\n * @see https://tailwindcss.com/docs/word-break\n */\n break: [{\n break: ['normal', 'words', 'all', 'keep']\n }],\n /**\n * Overflow Wrap\n * @see https://tailwindcss.com/docs/overflow-wrap\n */\n wrap: [{\n wrap: ['break-word', 'anywhere', 'normal']\n }],\n /**\n * Hyphens\n * @see https://tailwindcss.com/docs/hyphens\n */\n hyphens: [{\n hyphens: ['none', 'manual', 'auto']\n }],\n /**\n * Content\n * @see https://tailwindcss.com/docs/content\n */\n content: [{\n content: ['none', isArbitraryVariable, isArbitraryValue]\n }],\n // -------------------\n // --- Backgrounds ---\n // -------------------\n /**\n * Background Attachment\n * @see https://tailwindcss.com/docs/background-attachment\n */\n 'bg-attachment': [{\n bg: ['fixed', 'local', 'scroll']\n }],\n /**\n * Background Clip\n * @see https://tailwindcss.com/docs/background-clip\n */\n 'bg-clip': [{\n 'bg-clip': ['border', 'padding', 'content', 'text']\n }],\n /**\n * Background Origin\n * @see https://tailwindcss.com/docs/background-origin\n */\n 'bg-origin': [{\n 'bg-origin': ['border', 'padding', 'content']\n }],\n /**\n * Background Position\n * @see https://tailwindcss.com/docs/background-position\n */\n 'bg-position': [{\n bg: scaleBgPosition()\n }],\n /**\n * Background Repeat\n * @see https://tailwindcss.com/docs/background-repeat\n */\n 'bg-repeat': [{\n bg: scaleBgRepeat()\n }],\n /**\n * Background Size\n * @see https://tailwindcss.com/docs/background-size\n */\n 'bg-size': [{\n bg: scaleBgSize()\n }],\n /**\n * Background Image\n * @see https://tailwindcss.com/docs/background-image\n */\n 'bg-image': [{\n bg: ['none', {\n linear: [{\n to: ['t', 'tr', 'r', 'br', 'b', 'bl', 'l', 'tl']\n }, isInteger, isArbitraryVariable, isArbitraryValue],\n radial: ['', isArbitraryVariable, isArbitraryValue],\n conic: [isInteger, isArbitraryVariable, isArbitraryValue]\n }, isArbitraryVariableImage, isArbitraryImage]\n }],\n /**\n * Background Color\n * @see https://tailwindcss.com/docs/background-color\n */\n 'bg-color': [{\n bg: scaleColor()\n }],\n /**\n * Gradient Color Stops From Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from-pos': [{\n from: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops Via Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via-pos': [{\n via: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops To Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to-pos': [{\n to: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops From\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from': [{\n from: scaleColor()\n }],\n /**\n * Gradient Color Stops Via\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via': [{\n via: scaleColor()\n }],\n /**\n * Gradient Color Stops To\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to': [{\n to: scaleColor()\n }],\n // ---------------\n // --- Borders ---\n // ---------------\n /**\n * Border Radius\n * @see https://tailwindcss.com/docs/border-radius\n */\n rounded: [{\n rounded: scaleRadius()\n }],\n /**\n * Border Radius Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-s': [{\n 'rounded-s': scaleRadius()\n }],\n /**\n * Border Radius End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-e': [{\n 'rounded-e': scaleRadius()\n }],\n /**\n * Border Radius Top\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-t': [{\n 'rounded-t': scaleRadius()\n }],\n /**\n * Border Radius Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-r': [{\n 'rounded-r': scaleRadius()\n }],\n /**\n * Border Radius Bottom\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-b': [{\n 'rounded-b': scaleRadius()\n }],\n /**\n * Border Radius Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-l': [{\n 'rounded-l': scaleRadius()\n }],\n /**\n * Border Radius Start Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ss': [{\n 'rounded-ss': scaleRadius()\n }],\n /**\n * Border Radius Start End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-se': [{\n 'rounded-se': scaleRadius()\n }],\n /**\n * Border Radius End End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ee': [{\n 'rounded-ee': scaleRadius()\n }],\n /**\n * Border Radius End Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-es': [{\n 'rounded-es': scaleRadius()\n }],\n /**\n * Border Radius Top Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tl': [{\n 'rounded-tl': scaleRadius()\n }],\n /**\n * Border Radius Top Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tr': [{\n 'rounded-tr': scaleRadius()\n }],\n /**\n * Border Radius Bottom Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-br': [{\n 'rounded-br': scaleRadius()\n }],\n /**\n * Border Radius Bottom Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-bl': [{\n 'rounded-bl': scaleRadius()\n }],\n /**\n * Border Width\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w': [{\n border: scaleBorderWidth()\n }],\n /**\n * Border Width X\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-x': [{\n 'border-x': scaleBorderWidth()\n }],\n /**\n * Border Width Y\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-y': [{\n 'border-y': scaleBorderWidth()\n }],\n /**\n * Border Width Start\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-s': [{\n 'border-s': scaleBorderWidth()\n }],\n /**\n * Border Width End\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-e': [{\n 'border-e': scaleBorderWidth()\n }],\n /**\n * Border Width Top\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-t': [{\n 'border-t': scaleBorderWidth()\n }],\n /**\n * Border Width Right\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-r': [{\n 'border-r': scaleBorderWidth()\n }],\n /**\n * Border Width Bottom\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-b': [{\n 'border-b': scaleBorderWidth()\n }],\n /**\n * Border Width Left\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-l': [{\n 'border-l': scaleBorderWidth()\n }],\n /**\n * Divide Width X\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x': [{\n 'divide-x': scaleBorderWidth()\n }],\n /**\n * Divide Width X Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x-reverse': ['divide-x-reverse'],\n /**\n * Divide Width Y\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y': [{\n 'divide-y': scaleBorderWidth()\n }],\n /**\n * Divide Width Y Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y-reverse': ['divide-y-reverse'],\n /**\n * Border Style\n * @see https://tailwindcss.com/docs/border-style\n */\n 'border-style': [{\n border: [...scaleLineStyle(), 'hidden', 'none']\n }],\n /**\n * Divide Style\n * @see https://tailwindcss.com/docs/border-style#setting-the-divider-style\n */\n 'divide-style': [{\n divide: [...scaleLineStyle(), 'hidden', 'none']\n }],\n /**\n * Border Color\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color': [{\n border: scaleColor()\n }],\n /**\n * Border Color X\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-x': [{\n 'border-x': scaleColor()\n }],\n /**\n * Border Color Y\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-y': [{\n 'border-y': scaleColor()\n }],\n /**\n * Border Color S\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-s': [{\n 'border-s': scaleColor()\n }],\n /**\n * Border Color E\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-e': [{\n 'border-e': scaleColor()\n }],\n /**\n * Border Color Top\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-t': [{\n 'border-t': scaleColor()\n }],\n /**\n * Border Color Right\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-r': [{\n 'border-r': scaleColor()\n }],\n /**\n * Border Color Bottom\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-b': [{\n 'border-b': scaleColor()\n }],\n /**\n * Border Color Left\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-l': [{\n 'border-l': scaleColor()\n }],\n /**\n * Divide Color\n * @see https://tailwindcss.com/docs/divide-color\n */\n 'divide-color': [{\n divide: scaleColor()\n }],\n /**\n * Outline Style\n * @see https://tailwindcss.com/docs/outline-style\n */\n 'outline-style': [{\n outline: [...scaleLineStyle(), 'none', 'hidden']\n }],\n /**\n * Outline Offset\n * @see https://tailwindcss.com/docs/outline-offset\n */\n 'outline-offset': [{\n 'outline-offset': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Outline Width\n * @see https://tailwindcss.com/docs/outline-width\n */\n 'outline-w': [{\n outline: ['', isNumber, isArbitraryVariableLength, isArbitraryLength]\n }],\n /**\n * Outline Color\n * @see https://tailwindcss.com/docs/outline-color\n */\n 'outline-color': [{\n outline: scaleColor()\n }],\n // ---------------\n // --- Effects ---\n // ---------------\n /**\n * Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow\n */\n shadow: [{\n shadow: [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-shadow-color\n */\n 'shadow-color': [{\n shadow: scaleColor()\n }],\n /**\n * Inset Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-shadow\n */\n 'inset-shadow': [{\n 'inset-shadow': ['none', themeInsetShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Inset Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-shadow-color\n */\n 'inset-shadow-color': [{\n 'inset-shadow': scaleColor()\n }],\n /**\n * Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-a-ring\n */\n 'ring-w': [{\n ring: scaleBorderWidth()\n }],\n /**\n * Ring Width Inset\n * @see https://v3.tailwindcss.com/docs/ring-width#inset-rings\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-w-inset': ['ring-inset'],\n /**\n * Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-ring-color\n */\n 'ring-color': [{\n ring: scaleColor()\n }],\n /**\n * Ring Offset Width\n * @see https://v3.tailwindcss.com/docs/ring-offset-width\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-w': [{\n 'ring-offset': [isNumber, isArbitraryLength]\n }],\n /**\n * Ring Offset Color\n * @see https://v3.tailwindcss.com/docs/ring-offset-color\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-color': [{\n 'ring-offset': scaleColor()\n }],\n /**\n * Inset Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-ring\n */\n 'inset-ring-w': [{\n 'inset-ring': scaleBorderWidth()\n }],\n /**\n * Inset Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-ring-color\n */\n 'inset-ring-color': [{\n 'inset-ring': scaleColor()\n }],\n /**\n * Text Shadow\n * @see https://tailwindcss.com/docs/text-shadow\n */\n 'text-shadow': [{\n 'text-shadow': ['none', themeTextShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Text Shadow Color\n * @see https://tailwindcss.com/docs/text-shadow#setting-the-shadow-color\n */\n 'text-shadow-color': [{\n 'text-shadow': scaleColor()\n }],\n /**\n * Opacity\n * @see https://tailwindcss.com/docs/opacity\n */\n opacity: [{\n opacity: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Mix Blend Mode\n * @see https://tailwindcss.com/docs/mix-blend-mode\n */\n 'mix-blend': [{\n 'mix-blend': [...scaleBlendMode(), 'plus-darker', 'plus-lighter']\n }],\n /**\n * Background Blend Mode\n * @see https://tailwindcss.com/docs/background-blend-mode\n */\n 'bg-blend': [{\n 'bg-blend': scaleBlendMode()\n }],\n /**\n * Mask Clip\n * @see https://tailwindcss.com/docs/mask-clip\n */\n 'mask-clip': [{\n 'mask-clip': ['border', 'padding', 'content', 'fill', 'stroke', 'view']\n }, 'mask-no-clip'],\n /**\n * Mask Composite\n * @see https://tailwindcss.com/docs/mask-composite\n */\n 'mask-composite': [{\n mask: ['add', 'subtract', 'intersect', 'exclude']\n }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image-linear-pos': [{\n 'mask-linear': [isNumber]\n }],\n 'mask-image-linear-from-pos': [{\n 'mask-linear-from': scaleMaskImagePosition()\n }],\n 'mask-image-linear-to-pos': [{\n 'mask-linear-to': scaleMaskImagePosition()\n }],\n 'mask-image-linear-from-color': [{\n 'mask-linear-from': scaleColor()\n }],\n 'mask-image-linear-to-color': [{\n 'mask-linear-to': scaleColor()\n }],\n 'mask-image-t-from-pos': [{\n 'mask-t-from': scaleMaskImagePosition()\n }],\n 'mask-image-t-to-pos': [{\n 'mask-t-to': scaleMaskImagePosition()\n }],\n 'mask-image-t-from-color': [{\n 'mask-t-from': scaleColor()\n }],\n 'mask-image-t-to-color': [{\n 'mask-t-to': scaleColor()\n }],\n 'mask-image-r-from-pos': [{\n 'mask-r-from': scaleMaskImagePosition()\n }],\n 'mask-image-r-to-pos': [{\n 'mask-r-to': scaleMaskImagePosition()\n }],\n 'mask-image-r-from-color': [{\n 'mask-r-from': scaleColor()\n }],\n 'mask-image-r-to-color': [{\n 'mask-r-to': scaleColor()\n }],\n 'mask-image-b-from-pos': [{\n 'mask-b-from': scaleMaskImagePosition()\n }],\n 'mask-image-b-to-pos': [{\n 'mask-b-to': scaleMaskImagePosition()\n }],\n 'mask-image-b-from-color': [{\n 'mask-b-from': scaleColor()\n }],\n 'mask-image-b-to-color': [{\n 'mask-b-to': scaleColor()\n }],\n 'mask-image-l-from-pos': [{\n 'mask-l-from': scaleMaskImagePosition()\n }],\n 'mask-image-l-to-pos': [{\n 'mask-l-to': scaleMaskImagePosition()\n }],\n 'mask-image-l-from-color': [{\n 'mask-l-from': scaleColor()\n }],\n 'mask-image-l-to-color': [{\n 'mask-l-to': scaleColor()\n }],\n 'mask-image-x-from-pos': [{\n 'mask-x-from': scaleMaskImagePosition()\n }],\n 'mask-image-x-to-pos': [{\n 'mask-x-to': scaleMaskImagePosition()\n }],\n 'mask-image-x-from-color': [{\n 'mask-x-from': scaleColor()\n }],\n 'mask-image-x-to-color': [{\n 'mask-x-to': scaleColor()\n }],\n 'mask-image-y-from-pos': [{\n 'mask-y-from': scaleMaskImagePosition()\n }],\n 'mask-image-y-to-pos': [{\n 'mask-y-to': scaleMaskImagePosition()\n }],\n 'mask-image-y-from-color': [{\n 'mask-y-from': scaleColor()\n }],\n 'mask-image-y-to-color': [{\n 'mask-y-to': scaleColor()\n }],\n 'mask-image-radial': [{\n 'mask-radial': [isArbitraryVariable, isArbitraryValue]\n }],\n 'mask-image-radial-from-pos': [{\n 'mask-radial-from': scaleMaskImagePosition()\n }],\n 'mask-image-radial-to-pos': [{\n 'mask-radial-to': scaleMaskImagePosition()\n }],\n 'mask-image-radial-from-color': [{\n 'mask-radial-from': scaleColor()\n }],\n 'mask-image-radial-to-color': [{\n 'mask-radial-to': scaleColor()\n }],\n 'mask-image-radial-shape': [{\n 'mask-radial': ['circle', 'ellipse']\n }],\n 'mask-image-radial-size': [{\n 'mask-radial': [{\n closest: ['side', 'corner'],\n farthest: ['side', 'corner']\n }]\n }],\n 'mask-image-radial-pos': [{\n 'mask-radial-at': scalePosition()\n }],\n 'mask-image-conic-pos': [{\n 'mask-conic': [isNumber]\n }],\n 'mask-image-conic-from-pos': [{\n 'mask-conic-from': scaleMaskImagePosition()\n }],\n 'mask-image-conic-to-pos': [{\n 'mask-conic-to': scaleMaskImagePosition()\n }],\n 'mask-image-conic-from-color': [{\n 'mask-conic-from': scaleColor()\n }],\n 'mask-image-conic-to-color': [{\n 'mask-conic-to': scaleColor()\n }],\n /**\n * Mask Mode\n * @see https://tailwindcss.com/docs/mask-mode\n */\n 'mask-mode': [{\n mask: ['alpha', 'luminance', 'match']\n }],\n /**\n * Mask Origin\n * @see https://tailwindcss.com/docs/mask-origin\n */\n 'mask-origin': [{\n 'mask-origin': ['border', 'padding', 'content', 'fill', 'stroke', 'view']\n }],\n /**\n * Mask Position\n * @see https://tailwindcss.com/docs/mask-position\n */\n 'mask-position': [{\n mask: scaleBgPosition()\n }],\n /**\n * Mask Repeat\n * @see https://tailwindcss.com/docs/mask-repeat\n */\n 'mask-repeat': [{\n mask: scaleBgRepeat()\n }],\n /**\n * Mask Size\n * @see https://tailwindcss.com/docs/mask-size\n */\n 'mask-size': [{\n mask: scaleBgSize()\n }],\n /**\n * Mask Type\n * @see https://tailwindcss.com/docs/mask-type\n */\n 'mask-type': [{\n 'mask-type': ['alpha', 'luminance']\n }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image': [{\n mask: ['none', isArbitraryVariable, isArbitraryValue]\n }],\n // ---------------\n // --- Filters ---\n // ---------------\n /**\n * Filter\n * @see https://tailwindcss.com/docs/filter\n */\n filter: [{\n filter: [\n // Deprecated since Tailwind CSS v3.0.0\n '', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Blur\n * @see https://tailwindcss.com/docs/blur\n */\n blur: [{\n blur: scaleBlur()\n }],\n /**\n * Brightness\n * @see https://tailwindcss.com/docs/brightness\n */\n brightness: [{\n brightness: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Contrast\n * @see https://tailwindcss.com/docs/contrast\n */\n contrast: [{\n contrast: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Drop Shadow\n * @see https://tailwindcss.com/docs/drop-shadow\n */\n 'drop-shadow': [{\n 'drop-shadow': [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeDropShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Drop Shadow Color\n * @see https://tailwindcss.com/docs/filter-drop-shadow#setting-the-shadow-color\n */\n 'drop-shadow-color': [{\n 'drop-shadow': scaleColor()\n }],\n /**\n * Grayscale\n * @see https://tailwindcss.com/docs/grayscale\n */\n grayscale: [{\n grayscale: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Hue Rotate\n * @see https://tailwindcss.com/docs/hue-rotate\n */\n 'hue-rotate': [{\n 'hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Invert\n * @see https://tailwindcss.com/docs/invert\n */\n invert: [{\n invert: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Saturate\n * @see https://tailwindcss.com/docs/saturate\n */\n saturate: [{\n saturate: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Sepia\n * @see https://tailwindcss.com/docs/sepia\n */\n sepia: [{\n sepia: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Filter\n * @see https://tailwindcss.com/docs/backdrop-filter\n */\n 'backdrop-filter': [{\n 'backdrop-filter': [\n // Deprecated since Tailwind CSS v3.0.0\n '', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Blur\n * @see https://tailwindcss.com/docs/backdrop-blur\n */\n 'backdrop-blur': [{\n 'backdrop-blur': scaleBlur()\n }],\n /**\n * Backdrop Brightness\n * @see https://tailwindcss.com/docs/backdrop-brightness\n */\n 'backdrop-brightness': [{\n 'backdrop-brightness': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Contrast\n * @see https://tailwindcss.com/docs/backdrop-contrast\n */\n 'backdrop-contrast': [{\n 'backdrop-contrast': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Grayscale\n * @see https://tailwindcss.com/docs/backdrop-grayscale\n */\n 'backdrop-grayscale': [{\n 'backdrop-grayscale': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Hue Rotate\n * @see https://tailwindcss.com/docs/backdrop-hue-rotate\n */\n 'backdrop-hue-rotate': [{\n 'backdrop-hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Invert\n * @see https://tailwindcss.com/docs/backdrop-invert\n */\n 'backdrop-invert': [{\n 'backdrop-invert': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Opacity\n * @see https://tailwindcss.com/docs/backdrop-opacity\n */\n 'backdrop-opacity': [{\n 'backdrop-opacity': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Saturate\n * @see https://tailwindcss.com/docs/backdrop-saturate\n */\n 'backdrop-saturate': [{\n 'backdrop-saturate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Sepia\n * @see https://tailwindcss.com/docs/backdrop-sepia\n */\n 'backdrop-sepia': [{\n 'backdrop-sepia': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n // --------------\n // --- Tables ---\n // --------------\n /**\n * Border Collapse\n * @see https://tailwindcss.com/docs/border-collapse\n */\n 'border-collapse': [{\n border: ['collapse', 'separate']\n }],\n /**\n * Border Spacing\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing': [{\n 'border-spacing': scaleUnambiguousSpacing()\n }],\n /**\n * Border Spacing X\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-x': [{\n 'border-spacing-x': scaleUnambiguousSpacing()\n }],\n /**\n * Border Spacing Y\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-y': [{\n 'border-spacing-y': scaleUnambiguousSpacing()\n }],\n /**\n * Table Layout\n * @see https://tailwindcss.com/docs/table-layout\n */\n 'table-layout': [{\n table: ['auto', 'fixed']\n }],\n /**\n * Caption Side\n * @see https://tailwindcss.com/docs/caption-side\n */\n caption: [{\n caption: ['top', 'bottom']\n }],\n // ---------------------------------\n // --- Transitions and Animation ---\n // ---------------------------------\n /**\n * Transition Property\n * @see https://tailwindcss.com/docs/transition-property\n */\n transition: [{\n transition: ['', 'all', 'colors', 'opacity', 'shadow', 'transform', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Behavior\n * @see https://tailwindcss.com/docs/transition-behavior\n */\n 'transition-behavior': [{\n transition: ['normal', 'discrete']\n }],\n /**\n * Transition Duration\n * @see https://tailwindcss.com/docs/transition-duration\n */\n duration: [{\n duration: [isNumber, 'initial', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Timing Function\n * @see https://tailwindcss.com/docs/transition-timing-function\n */\n ease: [{\n ease: ['linear', 'initial', themeEase, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Delay\n * @see https://tailwindcss.com/docs/transition-delay\n */\n delay: [{\n delay: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Animation\n * @see https://tailwindcss.com/docs/animation\n */\n animate: [{\n animate: ['none', themeAnimate, isArbitraryVariable, isArbitraryValue]\n }],\n // ------------------\n // --- Transforms ---\n // ------------------\n /**\n * Backface Visibility\n * @see https://tailwindcss.com/docs/backface-visibility\n */\n backface: [{\n backface: ['hidden', 'visible']\n }],\n /**\n * Perspective\n * @see https://tailwindcss.com/docs/perspective\n */\n perspective: [{\n perspective: [themePerspective, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Perspective Origin\n * @see https://tailwindcss.com/docs/perspective-origin\n */\n 'perspective-origin': [{\n 'perspective-origin': scalePositionWithArbitrary()\n }],\n /**\n * Rotate\n * @see https://tailwindcss.com/docs/rotate\n */\n rotate: [{\n rotate: scaleRotate()\n }],\n /**\n * Rotate X\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-x': [{\n 'rotate-x': scaleRotate()\n }],\n /**\n * Rotate Y\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-y': [{\n 'rotate-y': scaleRotate()\n }],\n /**\n * Rotate Z\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-z': [{\n 'rotate-z': scaleRotate()\n }],\n /**\n * Scale\n * @see https://tailwindcss.com/docs/scale\n */\n scale: [{\n scale: scaleScale()\n }],\n /**\n * Scale X\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-x': [{\n 'scale-x': scaleScale()\n }],\n /**\n * Scale Y\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-y': [{\n 'scale-y': scaleScale()\n }],\n /**\n * Scale Z\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-z': [{\n 'scale-z': scaleScale()\n }],\n /**\n * Scale 3D\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-3d': ['scale-3d'],\n /**\n * Skew\n * @see https://tailwindcss.com/docs/skew\n */\n skew: [{\n skew: scaleSkew()\n }],\n /**\n * Skew X\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-x': [{\n 'skew-x': scaleSkew()\n }],\n /**\n * Skew Y\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-y': [{\n 'skew-y': scaleSkew()\n }],\n /**\n * Transform\n * @see https://tailwindcss.com/docs/transform\n */\n transform: [{\n transform: [isArbitraryVariable, isArbitraryValue, '', 'none', 'gpu', 'cpu']\n }],\n /**\n * Transform Origin\n * @see https://tailwindcss.com/docs/transform-origin\n */\n 'transform-origin': [{\n origin: scalePositionWithArbitrary()\n }],\n /**\n * Transform Style\n * @see https://tailwindcss.com/docs/transform-style\n */\n 'transform-style': [{\n transform: ['3d', 'flat']\n }],\n /**\n * Translate\n * @see https://tailwindcss.com/docs/translate\n */\n translate: [{\n translate: scaleTranslate()\n }],\n /**\n * Translate X\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-x': [{\n 'translate-x': scaleTranslate()\n }],\n /**\n * Translate Y\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-y': [{\n 'translate-y': scaleTranslate()\n }],\n /**\n * Translate Z\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-z': [{\n 'translate-z': scaleTranslate()\n }],\n /**\n * Translate None\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-none': ['translate-none'],\n // ---------------------\n // --- Interactivity ---\n // ---------------------\n /**\n * Accent Color\n * @see https://tailwindcss.com/docs/accent-color\n */\n accent: [{\n accent: scaleColor()\n }],\n /**\n * Appearance\n * @see https://tailwindcss.com/docs/appearance\n */\n appearance: [{\n appearance: ['none', 'auto']\n }],\n /**\n * Caret Color\n * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities\n */\n 'caret-color': [{\n caret: scaleColor()\n }],\n /**\n * Color Scheme\n * @see https://tailwindcss.com/docs/color-scheme\n */\n 'color-scheme': [{\n scheme: ['normal', 'dark', 'light', 'light-dark', 'only-dark', 'only-light']\n }],\n /**\n * Cursor\n * @see https://tailwindcss.com/docs/cursor\n */\n cursor: [{\n cursor: ['auto', 'default', 'pointer', 'wait', 'text', 'move', 'help', 'not-allowed', 'none', 'context-menu', 'progress', 'cell', 'crosshair', 'vertical-text', 'alias', 'copy', 'no-drop', 'grab', 'grabbing', 'all-scroll', 'col-resize', 'row-resize', 'n-resize', 'e-resize', 's-resize', 'w-resize', 'ne-resize', 'nw-resize', 'se-resize', 'sw-resize', 'ew-resize', 'ns-resize', 'nesw-resize', 'nwse-resize', 'zoom-in', 'zoom-out', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Field Sizing\n * @see https://tailwindcss.com/docs/field-sizing\n */\n 'field-sizing': [{\n 'field-sizing': ['fixed', 'content']\n }],\n /**\n * Pointer Events\n * @see https://tailwindcss.com/docs/pointer-events\n */\n 'pointer-events': [{\n 'pointer-events': ['auto', 'none']\n }],\n /**\n * Resize\n * @see https://tailwindcss.com/docs/resize\n */\n resize: [{\n resize: ['none', '', 'y', 'x']\n }],\n /**\n * Scroll Behavior\n * @see https://tailwindcss.com/docs/scroll-behavior\n */\n 'scroll-behavior': [{\n scroll: ['auto', 'smooth']\n }],\n /**\n * Scroll Margin\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-m': [{\n 'scroll-m': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin X\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mx': [{\n 'scroll-mx': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Y\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-my': [{\n 'scroll-my': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Start\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ms': [{\n 'scroll-ms': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin End\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-me': [{\n 'scroll-me': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Top\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mt': [{\n 'scroll-mt': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Right\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mr': [{\n 'scroll-mr': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Bottom\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mb': [{\n 'scroll-mb': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Left\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ml': [{\n 'scroll-ml': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-p': [{\n 'scroll-p': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding X\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-px': [{\n 'scroll-px': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Y\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-py': [{\n 'scroll-py': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Start\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-ps': [{\n 'scroll-ps': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding End\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pe': [{\n 'scroll-pe': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Top\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pt': [{\n 'scroll-pt': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Right\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pr': [{\n 'scroll-pr': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Bottom\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pb': [{\n 'scroll-pb': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Left\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pl': [{\n 'scroll-pl': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Snap Align\n * @see https://tailwindcss.com/docs/scroll-snap-align\n */\n 'snap-align': [{\n snap: ['start', 'end', 'center', 'align-none']\n }],\n /**\n * Scroll Snap Stop\n * @see https://tailwindcss.com/docs/scroll-snap-stop\n */\n 'snap-stop': [{\n snap: ['normal', 'always']\n }],\n /**\n * Scroll Snap Type\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-type': [{\n snap: ['none', 'x', 'y', 'both']\n }],\n /**\n * Scroll Snap Type Strictness\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-strictness': [{\n snap: ['mandatory', 'proximity']\n }],\n /**\n * Touch Action\n * @see https://tailwindcss.com/docs/touch-action\n */\n touch: [{\n touch: ['auto', 'none', 'manipulation']\n }],\n /**\n * Touch Action X\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-x': [{\n 'touch-pan': ['x', 'left', 'right']\n }],\n /**\n * Touch Action Y\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-y': [{\n 'touch-pan': ['y', 'up', 'down']\n }],\n /**\n * Touch Action Pinch Zoom\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-pz': ['touch-pinch-zoom'],\n /**\n * User Select\n * @see https://tailwindcss.com/docs/user-select\n */\n select: [{\n select: ['none', 'text', 'all', 'auto']\n }],\n /**\n * Will Change\n * @see https://tailwindcss.com/docs/will-change\n */\n 'will-change': [{\n 'will-change': ['auto', 'scroll', 'contents', 'transform', isArbitraryVariable, isArbitraryValue]\n }],\n // -----------\n // --- SVG ---\n // -----------\n /**\n * Fill\n * @see https://tailwindcss.com/docs/fill\n */\n fill: [{\n fill: ['none', ...scaleColor()]\n }],\n /**\n * Stroke Width\n * @see https://tailwindcss.com/docs/stroke-width\n */\n 'stroke-w': [{\n stroke: [isNumber, isArbitraryVariableLength, isArbitraryLength, isArbitraryNumber]\n }],\n /**\n * Stroke\n * @see https://tailwindcss.com/docs/stroke\n */\n stroke: [{\n stroke: ['none', ...scaleColor()]\n }],\n // ---------------------\n // --- Accessibility ---\n // ---------------------\n /**\n * Forced Color Adjust\n * @see https://tailwindcss.com/docs/forced-color-adjust\n */\n 'forced-color-adjust': [{\n 'forced-color-adjust': ['auto', 'none']\n }]\n },\n conflictingClassGroups: {\n overflow: ['overflow-x', 'overflow-y'],\n overscroll: ['overscroll-x', 'overscroll-y'],\n inset: ['inset-x', 'inset-y', 'start', 'end', 'top', 'right', 'bottom', 'left'],\n 'inset-x': ['right', 'left'],\n 'inset-y': ['top', 'bottom'],\n flex: ['basis', 'grow', 'shrink'],\n gap: ['gap-x', 'gap-y'],\n p: ['px', 'py', 'ps', 'pe', 'pt', 'pr', 'pb', 'pl'],\n px: ['pr', 'pl'],\n py: ['pt', 'pb'],\n m: ['mx', 'my', 'ms', 'me', 'mt', 'mr', 'mb', 'ml'],\n mx: ['mr', 'ml'],\n my: ['mt', 'mb'],\n size: ['w', 'h'],\n 'font-size': ['leading'],\n 'fvn-normal': ['fvn-ordinal', 'fvn-slashed-zero', 'fvn-figure', 'fvn-spacing', 'fvn-fraction'],\n 'fvn-ordinal': ['fvn-normal'],\n 'fvn-slashed-zero': ['fvn-normal'],\n 'fvn-figure': ['fvn-normal'],\n 'fvn-spacing': ['fvn-normal'],\n 'fvn-fraction': ['fvn-normal'],\n 'line-clamp': ['display', 'overflow'],\n rounded: ['rounded-s', 'rounded-e', 'rounded-t', 'rounded-r', 'rounded-b', 'rounded-l', 'rounded-ss', 'rounded-se', 'rounded-ee', 'rounded-es', 'rounded-tl', 'rounded-tr', 'rounded-br', 'rounded-bl'],\n 'rounded-s': ['rounded-ss', 'rounded-es'],\n 'rounded-e': ['rounded-se', 'rounded-ee'],\n 'rounded-t': ['rounded-tl', 'rounded-tr'],\n 'rounded-r': ['rounded-tr', 'rounded-br'],\n 'rounded-b': ['rounded-br', 'rounded-bl'],\n 'rounded-l': ['rounded-tl', 'rounded-bl'],\n 'border-spacing': ['border-spacing-x', 'border-spacing-y'],\n 'border-w': ['border-w-x', 'border-w-y', 'border-w-s', 'border-w-e', 'border-w-t', 'border-w-r', 'border-w-b', 'border-w-l'],\n 'border-w-x': ['border-w-r', 'border-w-l'],\n 'border-w-y': ['border-w-t', 'border-w-b'],\n 'border-color': ['border-color-x', 'border-color-y', 'border-color-s', 'border-color-e', 'border-color-t', 'border-color-r', 'border-color-b', 'border-color-l'],\n 'border-color-x': ['border-color-r', 'border-color-l'],\n 'border-color-y': ['border-color-t', 'border-color-b'],\n translate: ['translate-x', 'translate-y', 'translate-none'],\n 'translate-none': ['translate', 'translate-x', 'translate-y', 'translate-z'],\n 'scroll-m': ['scroll-mx', 'scroll-my', 'scroll-ms', 'scroll-me', 'scroll-mt', 'scroll-mr', 'scroll-mb', 'scroll-ml'],\n 'scroll-mx': ['scroll-mr', 'scroll-ml'],\n 'scroll-my': ['scroll-mt', 'scroll-mb'],\n 'scroll-p': ['scroll-px', 'scroll-py', 'scroll-ps', 'scroll-pe', 'scroll-pt', 'scroll-pr', 'scroll-pb', 'scroll-pl'],\n 'scroll-px': ['scroll-pr', 'scroll-pl'],\n 'scroll-py': ['scroll-pt', 'scroll-pb'],\n touch: ['touch-x', 'touch-y', 'touch-pz'],\n 'touch-x': ['touch'],\n 'touch-y': ['touch'],\n 'touch-pz': ['touch']\n },\n conflictingClassGroupModifiers: {\n 'font-size': ['leading']\n },\n orderSensitiveModifiers: ['*', '**', 'after', 'backdrop', 'before', 'details-content', 'file', 'first-letter', 'first-line', 'marker', 'placeholder', 'selection']\n };\n};\n\n/**\n * @param baseConfig Config where other config will be merged into. This object will be mutated.\n * @param configExtension Partial config to merge into the `baseConfig`.\n */\nconst mergeConfigs = (baseConfig, {\n cacheSize,\n prefix,\n experimentalParseClassName,\n extend = {},\n override = {}\n}) => {\n overrideProperty(baseConfig, 'cacheSize', cacheSize);\n overrideProperty(baseConfig, 'prefix', prefix);\n overrideProperty(baseConfig, 'experimentalParseClassName', experimentalParseClassName);\n overrideConfigProperties(baseConfig.theme, override.theme);\n overrideConfigProperties(baseConfig.classGroups, override.classGroups);\n overrideConfigProperties(baseConfig.conflictingClassGroups, override.conflictingClassGroups);\n overrideConfigProperties(baseConfig.conflictingClassGroupModifiers, override.conflictingClassGroupModifiers);\n overrideProperty(baseConfig, 'orderSensitiveModifiers', override.orderSensitiveModifiers);\n mergeConfigProperties(baseConfig.theme, extend.theme);\n mergeConfigProperties(baseConfig.classGroups, extend.classGroups);\n mergeConfigProperties(baseConfig.conflictingClassGroups, extend.conflictingClassGroups);\n mergeConfigProperties(baseConfig.conflictingClassGroupModifiers, extend.conflictingClassGroupModifiers);\n mergeArrayProperties(baseConfig, extend, 'orderSensitiveModifiers');\n return baseConfig;\n};\nconst overrideProperty = (baseObject, overrideKey, overrideValue) => {\n if (overrideValue !== undefined) {\n baseObject[overrideKey] = overrideValue;\n }\n};\nconst overrideConfigProperties = (baseObject, overrideObject) => {\n if (overrideObject) {\n for (const key in overrideObject) {\n overrideProperty(baseObject, key, overrideObject[key]);\n }\n }\n};\nconst mergeConfigProperties = (baseObject, mergeObject) => {\n if (mergeObject) {\n for (const key in mergeObject) {\n mergeArrayProperties(baseObject, mergeObject, key);\n }\n }\n};\nconst mergeArrayProperties = (baseObject, mergeObject, key) => {\n const mergeValue = mergeObject[key];\n if (mergeValue !== undefined) {\n baseObject[key] = baseObject[key] ? baseObject[key].concat(mergeValue) : mergeValue;\n }\n};\nconst extendTailwindMerge = (configExtension, ...createConfig) => typeof configExtension === 'function' ? createTailwindMerge(getDefaultConfig, configExtension, ...createConfig) : createTailwindMerge(() => mergeConfigs(getDefaultConfig(), configExtension), ...createConfig);\nconst twMerge = /*#__PURE__*/createTailwindMerge(getDefaultConfig);\nexport { createTailwindMerge, extendTailwindMerge, fromTheme, getDefaultConfig, mergeConfigs, twJoin, twMerge, validators };\n//# sourceMappingURL=bundle-mjs.mjs.map\n","import { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\n/**\n * Utility function to merge Tailwind CSS classes with proper precedence\n * Combines clsx for conditional classes and tailwind-merge for deduplication\n */\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}","/**\n * @license lucide-react v0.507.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nconst toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, \"$1-$2\").toLowerCase();\nconst toCamelCase = (string) => string.replace(\n /^([A-Z])|[\\s-_]+(\\w)/g,\n (match, p1, p2) => p2 ? p2.toUpperCase() : p1.toLowerCase()\n);\nconst toPascalCase = (string) => {\n const camelCase = toCamelCase(string);\n return camelCase.charAt(0).toUpperCase() + camelCase.slice(1);\n};\nconst mergeClasses = (...classes) => classes.filter((className, index, array) => {\n return Boolean(className) && className.trim() !== \"\" && array.indexOf(className) === index;\n}).join(\" \").trim();\nconst hasA11yProp = (props) => {\n for (const prop in props) {\n if (prop.startsWith(\"aria-\") || prop === \"role\" || prop === \"title\") {\n return true;\n }\n }\n};\n\nexport { hasA11yProp, mergeClasses, toCamelCase, toKebabCase, toPascalCase };\n//# sourceMappingURL=utils.js.map\n","/**\n * @license lucide-react v0.507.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nvar defaultAttributes = {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n};\n\nexport { defaultAttributes as default };\n//# sourceMappingURL=defaultAttributes.js.map\n","/**\n * @license lucide-react v0.507.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport defaultAttributes from './defaultAttributes.js';\nimport { mergeClasses, hasA11yProp } from './shared/src/utils.js';\n\nconst Icon = forwardRef(\n ({\n color = \"currentColor\",\n size = 24,\n strokeWidth = 2,\n absoluteStrokeWidth,\n className = \"\",\n children,\n iconNode,\n ...rest\n }, ref) => createElement(\n \"svg\",\n {\n ref,\n ...defaultAttributes,\n width: size,\n height: size,\n stroke: color,\n strokeWidth: absoluteStrokeWidth ? Number(strokeWidth) * 24 / Number(size) : strokeWidth,\n className: mergeClasses(\"lucide\", className),\n ...!children && !hasA11yProp(rest) && { \"aria-hidden\": \"true\" },\n ...rest\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...Array.isArray(children) ? children : [children]\n ]\n )\n);\n\nexport { Icon as default };\n//# sourceMappingURL=Icon.js.map\n","/**\n * @license lucide-react v0.507.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport { mergeClasses, toKebabCase, toPascalCase } from './shared/src/utils.js';\nimport Icon from './Icon.js';\n\nconst createLucideIcon = (iconName, iconNode) => {\n const Component = forwardRef(\n ({ className, ...props }, ref) => createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(\n `lucide-${toKebabCase(toPascalCase(iconName))}`,\n `lucide-${iconName}`,\n className\n ),\n ...props\n })\n );\n Component.displayName = toPascalCase(iconName);\n return Component;\n};\n\nexport { createLucideIcon as default };\n//# sourceMappingURL=createLucideIcon.js.map\n","/**\n * @license lucide-react v0.507.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [[\"path\", { d: \"M20 6 9 17l-5-5\", key: \"1gmf2c\" }]];\nconst Check = createLucideIcon(\"check\", __iconNode);\n\nexport { __iconNode, Check as default };\n//# sourceMappingURL=check.js.map\n","/**\n * @license lucide-react v0.507.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [[\"path\", { d: \"m6 9 6 6 6-6\", key: \"qrunsl\" }]];\nconst ChevronDown = createLucideIcon(\"chevron-down\", __iconNode);\n\nexport { __iconNode, ChevronDown as default };\n//# sourceMappingURL=chevron-down.js.map\n","/**\n * @license lucide-react v0.507.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [[\"path\", { d: \"m18 15-6-6-6 6\", key: \"153udz\" }]];\nconst ChevronUp = createLucideIcon(\"chevron-up\", __iconNode);\n\nexport { __iconNode, ChevronUp as default };\n//# sourceMappingURL=chevron-up.js.map\n","/**\n * @license lucide-react v0.507.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M21.801 10A10 10 0 1 1 17 3.335\", key: \"yps3ct\" }],\n [\"path\", { d: \"m9 11 3 3L22 4\", key: \"1pflzl\" }]\n];\nconst CircleCheckBig = createLucideIcon(\"circle-check-big\", __iconNode);\n\nexport { __iconNode, CircleCheckBig as default };\n//# sourceMappingURL=circle-check-big.js.map\n","/**\n * @license lucide-react v0.507.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M12 13v8\", key: \"1l5pq0\" }],\n [\"path\", { d: \"M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242\", key: \"1pljnt\" }],\n [\"path\", { d: \"m8 17 4-4 4 4\", key: \"1quai1\" }]\n];\nconst CloudUpload = createLucideIcon(\"cloud-upload\", __iconNode);\n\nexport { __iconNode, CloudUpload as default };\n//# sourceMappingURL=cloud-upload.js.map\n","/**\n * @license lucide-react v0.507.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"path\", { d: \"M12 16v-4\", key: \"1dtifu\" }],\n [\"path\", { d: \"M12 8h.01\", key: \"e9boi3\" }]\n];\nconst Info = createLucideIcon(\"info\", __iconNode);\n\nexport { __iconNode, Info as default };\n//# sourceMappingURL=info.js.map\n","/**\n * @license lucide-react v0.507.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8\", key: \"1357e3\" }],\n [\"path\", { d: \"M3 3v5h5\", key: \"1xhq8a\" }]\n];\nconst RotateCcw = createLucideIcon(\"rotate-ccw\", __iconNode);\n\nexport { __iconNode, RotateCcw as default };\n//# sourceMappingURL=rotate-ccw.js.map\n","/**\n * @license lucide-react v0.507.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z\",\n key: \"4pj2yx\"\n }\n ],\n [\"path\", { d: \"M20 3v4\", key: \"1olli1\" }],\n [\"path\", { d: \"M22 5h-4\", key: \"1gvqau\" }],\n [\"path\", { d: \"M4 17v2\", key: \"vumght\" }],\n [\"path\", { d: \"M5 18H3\", key: \"zchphs\" }]\n];\nconst Sparkles = createLucideIcon(\"sparkles\", __iconNode);\n\nexport { __iconNode, Sparkles as default };\n//# sourceMappingURL=sparkles.js.map\n","/**\n * @license lucide-react v0.507.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3\",\n key: \"wmoenq\"\n }\n ],\n [\"path\", { d: \"M12 9v4\", key: \"juzpu7\" }],\n [\"path\", { d: \"M12 17h.01\", key: \"p32p05\" }]\n];\nconst TriangleAlert = createLucideIcon(\"triangle-alert\", __iconNode);\n\nexport { __iconNode, TriangleAlert as default };\n//# sourceMappingURL=triangle-alert.js.map\n","/**\n * @license lucide-react v0.507.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z\",\n key: \"cbrjhi\"\n }\n ]\n];\nconst Wrench = createLucideIcon(\"wrench\", __iconNode);\n\nexport { __iconNode, Wrench as default };\n//# sourceMappingURL=wrench.js.map\n","/**\n * @license lucide-react v0.507.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M18 6 6 18\", key: \"1bl5f8\" }],\n [\"path\", { d: \"m6 6 12 12\", key: \"d8bk6v\" }]\n];\nconst X = createLucideIcon(\"x\", __iconNode);\n\nexport { __iconNode, X as default };\n//# sourceMappingURL=x.js.map\n","import { sizes } from \"../../settings/theme\";\nimport { cn } from \"../../../utils/cn\";\nimport { Info } from \"lucide-react\";\n\nexport default function Errors({ error, centered = false }: { error?: unknown; centered?: boolean }) {\n return error ? (\n <div className={cn(\"bg-red-50 border border-red-200 text-red-700 px-4 py-3 rounded-md\", centered && \"text-center\")}>\n <p className=\"flex items-center gap-2\">\n <Info size={sizes.icon.small} />\n {error.toString()}\n </p>\n </div>\n ) : null;\n}\n","import { StepperProps } from \"./types\";\nimport { Check } from \"lucide-react\";\nimport { cn } from \"../../../utils/cn\";\n\nexport default function Stepper({ steps, current, hide, skipHeader }: StepperProps) {\n // Hide if requested\n if (hide) {\n return null;\n }\n\n // Filter out disabled steps\n const activeSteps = steps.filter(step => !step.disabled);\n const currentActiveIndex = steps.slice(0, current + 1).filter(s => !s.disabled).length - 1;\n\n return (\n <div className={cn(\n \"w-full flex items-center justify-center\",\n \"h-8 px-4 py-2\"\n )}>\n {/* Step indicators with labels */}\n <div className=\"flex items-center\">\n {activeSteps.map((step, index) => {\n const isActive = index === currentActiveIndex;\n const isDone = index < currentActiveIndex;\n \n return (\n <div key={index} className=\"flex items-center\">\n {/* Step with number and label together */}\n <div className={cn(\n \"flex items-center gap-1 transition-all duration-200\",\n isActive && \"scale-105\"\n )}>\n {/* Step circle */}\n <div className={cn(\n \"w-5 h-5 rounded-full flex items-center justify-center text-[11px] font-medium transition-all duration-200\",\n isActive && \"bg-blue-600 text-white shadow-sm border-2 border-blue-600\",\n isDone && \"bg-white border-2 border-blue-600 text-blue-600\",\n !isActive && !isDone && \"bg-white border border-gray-300 text-gray-500\"\n )}>\n {isDone ? (\n <Check className=\"w-3 h-3 stroke-2\" />\n ) : (\n index + 1\n )}\n </div>\n \n {/* Step label */}\n <span className={cn(\n \"text-xs tracking-wide transition-all duration-200\",\n isActive && \"text-blue-600 font-semibold\",\n isDone && \"text-gray-700 font-medium\",\n !isActive && !isDone && \"text-gray-500\"\n )}>\n {step.label}\n </span>\n </div>\n \n {/* Connector line */}\n {index < activeSteps.length - 1 && (\n <div className={cn(\n \"mx-3 w-12 h-[1px] transition-all duration-200\",\n isDone ? \"bg-blue-600\" : \"bg-gray-300\"\n )} />\n )}\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n","// packages/react/compose-refs/src/compose-refs.tsx\nimport * as React from \"react\";\nfunction setRef(ref, value) {\n if (typeof ref === \"function\") {\n return ref(value);\n } else if (ref !== null && ref !== void 0) {\n ref.current = value;\n }\n}\nfunction composeRefs(...refs) {\n return (node) => {\n let hasCleanup = false;\n const cleanups = refs.map((ref) => {\n const cleanup = setRef(ref, node);\n if (!hasCleanup && typeof cleanup == \"function\") {\n hasCleanup = true;\n }\n return cleanup;\n });\n if (hasCleanup) {\n return () => {\n for (let i = 0; i < cleanups.length; i++) {\n const cleanup = cleanups[i];\n if (typeof cleanup == \"function\") {\n cleanup();\n } else {\n setRef(refs[i], null);\n }\n }\n };\n }\n };\n}\nfunction useComposedRefs(...refs) {\n return React.useCallback(composeRefs(...refs), refs);\n}\nexport {\n composeRefs,\n useComposedRefs\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/slot/src/slot.tsx\nimport * as React from \"react\";\nimport { composeRefs } from \"@radix-ui/react-compose-refs\";\nimport { Fragment as Fragment2, jsx } from \"react/jsx-runtime\";\n// @__NO_SIDE_EFFECTS__\nfunction createSlot(ownerName) {\n const SlotClone = /* @__PURE__ */ createSlotClone(ownerName);\n const Slot2 = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n const childrenArray = React.Children.toArray(children);\n const slottable = childrenArray.find(isSlottable);\n if (slottable) {\n const newElement = slottable.props.children;\n const newChildren = childrenArray.map((child) => {\n if (child === slottable) {\n if (React.Children.count(newElement) > 1) return React.Children.only(null);\n return React.isValidElement(newElement) ? newElement.props.children : null;\n } else {\n return child;\n }\n });\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children: React.isValidElement(newElement) ? React.cloneElement(newElement, void 0, newChildren) : null });\n }\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children });\n });\n Slot2.displayName = `${ownerName}.Slot`;\n return Slot2;\n}\nvar Slot = /* @__PURE__ */ createSlot(\"Slot\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlotClone(ownerName) {\n const SlotClone = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n if (React.isValidElement(children)) {\n const childrenRef = getElementRef(children);\n const props2 = mergeProps(slotProps, children.props);\n if (children.type !== React.Fragment) {\n props2.ref = forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef;\n }\n return React.cloneElement(children, props2);\n }\n return React.Children.count(children) > 1 ? React.Children.only(null) : null;\n });\n SlotClone.displayName = `${ownerName}.SlotClone`;\n return SlotClone;\n}\nvar SLOTTABLE_IDENTIFIER = Symbol(\"radix.slottable\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlottable(ownerName) {\n const Slottable2 = ({ children }) => {\n return /* @__PURE__ */ jsx(Fragment2, { children });\n };\n Slottable2.displayName = `${ownerName}.Slottable`;\n Slottable2.__radixId = SLOTTABLE_IDENTIFIER;\n return Slottable2;\n}\nvar Slottable = /* @__PURE__ */ createSlottable(\"Slottable\");\nfunction isSlottable(child) {\n return React.isValidElement(child) && typeof child.type === \"function\" && \"__radixId\" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;\n}\nfunction mergeProps(slotProps, childProps) {\n const overrideProps = { ...childProps };\n for (const propName in childProps) {\n const slotPropValue = slotProps[propName];\n const childPropValue = childProps[propName];\n const isHandler = /^on[A-Z]/.test(propName);\n if (isHandler) {\n if (slotPropValue && childPropValue) {\n overrideProps[propName] = (...args) => {\n childPropValue(...args);\n slotPropValue(...args);\n };\n } else if (slotPropValue) {\n overrideProps[propName] = slotPropValue;\n }\n } else if (propName === \"style\") {\n overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n } else if (propName === \"className\") {\n overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(\" \");\n }\n }\n return { ...slotProps, ...overrideProps };\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nexport {\n Slot as Root,\n Slot,\n Slottable,\n createSlot,\n createSlottable\n};\n//# sourceMappingURL=index.mjs.map\n","/**\n * Copyright 2022 Joe Bell. All rights reserved.\n *\n * This file is licensed to you under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with the\n * License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR REPRESENTATIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations under\n * the License.\n */ import { clsx } from \"clsx\";\nconst falsyToString = (value)=>typeof value === \"boolean\" ? `${value}` : value === 0 ? \"0\" : value;\nexport const cx = clsx;\nexport const cva = (base, config)=>(props)=>{\n var _config_compoundVariants;\n if ((config === null || config === void 0 ? void 0 : config.variants) == null) return cx(base, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n const { variants, defaultVariants } = config;\n const getVariantClassNames = Object.keys(variants).map((variant)=>{\n const variantProp = props === null || props === void 0 ? void 0 : props[variant];\n const defaultVariantProp = defaultVariants === null || defaultVariants === void 0 ? void 0 : defaultVariants[variant];\n if (variantProp === null) return null;\n const variantKey = falsyToString(variantProp) || falsyToString(defaultVariantProp);\n return variants[variant][variantKey];\n });\n const propsWithoutUndefined = props && Object.entries(props).reduce((acc, param)=>{\n let [key, value] = param;\n if (value === undefined) {\n return acc;\n }\n acc[key] = value;\n return acc;\n }, {});\n const getCompoundVariantClassNames = config === null || config === void 0 ? void 0 : (_config_compoundVariants = config.compoundVariants) === null || _config_compoundVariants === void 0 ? void 0 : _config_compoundVariants.reduce((acc, param)=>{\n let { class: cvClass, className: cvClassName, ...compoundVariantOptions } = param;\n return Object.entries(compoundVariantOptions).every((param)=>{\n let [key, value] = param;\n return Array.isArray(value) ? value.includes({\n ...defaultVariants,\n ...propsWithoutUndefined\n }[key]) : ({\n ...defaultVariants,\n ...propsWithoutUndefined\n })[key] === value;\n }) ? [\n ...acc,\n cvClass,\n cvClassName\n ] : acc;\n }, []);\n return cx(base, getVariantClassNames, getCompoundVariantClassNames, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n };\n\n","import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../../utils/cn\"\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center whitespace-nowrap rounded-lg text-sm font-medium cursor-pointer transition-colors duration-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50\",\n {\n variants: {\n variant: {\n default: \"bg-blue-600 text-white shadow hover:bg-blue-700 focus-visible:ring-blue-500\",\n destructive:\n \"bg-red-600 text-white shadow hover:bg-red-700 focus-visible:ring-red-500\",\n outline:\n \"border border-gray-300 bg-white text-gray-700 hover:bg-gray-50 focus-visible:ring-gray-500\",\n secondary:\n \"bg-gray-100 text-gray-900 hover:bg-gray-200 focus-visible:ring-gray-500\",\n ghost: \"hover:bg-gray-100 hover:text-gray-900 focus-visible:ring-gray-500\",\n link: \"text-blue-600 underline-offset-4 hover:underline hover:text-blue-700\",\n },\n size: {\n default: \"h-10 px-6 py-2\",\n sm: \"h-9 rounded-md px-4 text-xs\",\n lg: \"h-12 rounded-lg px-8 text-base\",\n icon: \"h-10 w-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean\n isLoading?: boolean\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, asChild = false, isLoading, children, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\"\n return (\n <Comp\n className={cn(buttonVariants({ variant, size, className }))}\n ref={ref}\n disabled={isLoading || props.disabled}\n {...props}\n >\n {isLoading ? (\n <>\n <svg className=\"animate-spin -ml-1 mr-2 h-4 w-4 text-current\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\">\n <circle className=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"4\"></circle>\n <path className=\"opacity-75\" fill=\"currentColor\" d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"></path>\n </svg>\n Loading...\n </>\n ) : (\n children\n )}\n </Comp>\n )\n }\n)\nButton.displayName = \"Button\"\n\nexport { Button, buttonVariants }","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../../utils/cn\"\n\nconst alertVariants = cva(\n \"relative w-full rounded-lg border p-4 [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground\",\n {\n variants: {\n variant: {\n default: \"bg-background text-foreground\",\n destructive:\n \"border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nconst Alert = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & VariantProps<typeof alertVariants>\n>(({ className, variant, ...props }, ref) => (\n <div\n ref={ref}\n role=\"alert\"\n className={cn(alertVariants({ variant }), className)}\n {...props}\n />\n))\nAlert.displayName = \"Alert\"\n\nconst AlertTitle = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h5\n ref={ref}\n className={cn(\"mb-1 font-medium leading-none tracking-tight\", className)}\n {...props}\n />\n))\nAlertTitle.displayName = \"AlertTitle\"\n\nconst AlertDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"text-sm [&_p]:leading-relaxed\", className)}\n {...props}\n />\n))\nAlertDescription.displayName = \"AlertDescription\"\n\nexport { Alert, AlertTitle, AlertDescription }","// packages/core/primitive/src/primitive.tsx\nfunction composeEventHandlers(originalEventHandler, ourEventHandler, { checkForDefaultPrevented = true } = {}) {\n return function handleEvent(event) {\n originalEventHandler?.(event);\n if (checkForDefaultPrevented === false || !event.defaultPrevented) {\n return ourEventHandler?.(event);\n }\n };\n}\nexport {\n composeEventHandlers\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/context/src/create-context.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction createContext2(rootComponentName, defaultContext) {\n const Context = React.createContext(defaultContext);\n const Provider = (props) => {\n const { children, ...context } = props;\n const value = React.useMemo(() => context, Object.values(context));\n return /* @__PURE__ */ jsx(Context.Provider, { value, children });\n };\n Provider.displayName = rootComponentName + \"Provider\";\n function useContext2(consumerName) {\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== void 0) return defaultContext;\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n return [Provider, useContext2];\n}\nfunction createContextScope(scopeName, createContextScopeDeps = []) {\n let defaultContexts = [];\n function createContext3(rootComponentName, defaultContext) {\n const BaseContext = React.createContext(defaultContext);\n const index = defaultContexts.length;\n defaultContexts = [...defaultContexts, defaultContext];\n const Provider = (props) => {\n const { scope, children, ...context } = props;\n const Context = scope?.[scopeName]?.[index] || BaseContext;\n const value = React.useMemo(() => context, Object.values(context));\n return /* @__PURE__ */ jsx(Context.Provider, { value, children });\n };\n Provider.displayName = rootComponentName + \"Provider\";\n function useContext2(consumerName, scope) {\n const Context = scope?.[scopeName]?.[index] || BaseContext;\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== void 0) return defaultContext;\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n return [Provider, useContext2];\n }\n const createScope = () => {\n const scopeContexts = defaultContexts.map((defaultContext) => {\n return React.createContext(defaultContext);\n });\n return function useScope(scope) {\n const contexts = scope?.[scopeName] || scopeContexts;\n return React.useMemo(\n () => ({ [`__scope${scopeName}`]: { ...scope, [scopeName]: contexts } }),\n [scope, contexts]\n );\n };\n };\n createScope.scopeName = scopeName;\n return [createContext3, composeContextScopes(createScope, ...createContextScopeDeps)];\n}\nfunction composeContextScopes(...scopes) {\n const baseScope = scopes[0];\n if (scopes.length === 1) return baseScope;\n const createScope = () => {\n const scopeHooks = scopes.map((createScope2) => ({\n useScope: createScope2(),\n scopeName: createScope2.scopeName\n }));\n return function useComposedScopes(overrideScopes) {\n const nextScopes = scopeHooks.reduce((nextScopes2, { useScope, scopeName }) => {\n const scopeProps = useScope(overrideScopes);\n const currentScope = scopeProps[`__scope${scopeName}`];\n return { ...nextScopes2, ...currentScope };\n }, {});\n return React.useMemo(() => ({ [`__scope${baseScope.scopeName}`]: nextScopes }), [nextScopes]);\n };\n };\n createScope.scopeName = baseScope.scopeName;\n return createScope;\n}\nexport {\n createContext2 as createContext,\n createContextScope\n};\n//# sourceMappingURL=index.mjs.map\n","// src/slot.tsx\nimport * as React from \"react\";\nimport { composeRefs } from \"@radix-ui/react-compose-refs\";\nimport { Fragment as Fragment2, jsx } from \"react/jsx-runtime\";\n// @__NO_SIDE_EFFECTS__\nfunction createSlot(ownerName) {\n const SlotClone = /* @__PURE__ */ createSlotClone(ownerName);\n const Slot2 = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n const childrenArray = React.Children.toArray(children);\n const slottable = childrenArray.find(isSlottable);\n if (slottable) {\n const newElement = slottable.props.children;\n const newChildren = childrenArray.map((child) => {\n if (child === slottable) {\n if (React.Children.count(newElement) > 1) return React.Children.only(null);\n return React.isValidElement(newElement) ? newElement.props.children : null;\n } else {\n return child;\n }\n });\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children: React.isValidElement(newElement) ? React.cloneElement(newElement, void 0, newChildren) : null });\n }\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children });\n });\n Slot2.displayName = `${ownerName}.Slot`;\n return Slot2;\n}\nvar Slot = /* @__PURE__ */ createSlot(\"Slot\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlotClone(ownerName) {\n const SlotClone = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n if (React.isValidElement(children)) {\n const childrenRef = getElementRef(children);\n const props2 = mergeProps(slotProps, children.props);\n if (children.type !== React.Fragment) {\n props2.ref = forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef;\n }\n return React.cloneElement(children, props2);\n }\n return React.Children.count(children) > 1 ? React.Children.only(null) : null;\n });\n SlotClone.displayName = `${ownerName}.SlotClone`;\n return SlotClone;\n}\nvar SLOTTABLE_IDENTIFIER = Symbol(\"radix.slottable\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlottable(ownerName) {\n const Slottable2 = ({ children }) => {\n return /* @__PURE__ */ jsx(Fragment2, { children });\n };\n Slottable2.displayName = `${ownerName}.Slottable`;\n Slottable2.__radixId = SLOTTABLE_IDENTIFIER;\n return Slottable2;\n}\nvar Slottable = /* @__PURE__ */ createSlottable(\"Slottable\");\nfunction isSlottable(child) {\n return React.isValidElement(child) && typeof child.type === \"function\" && \"__radixId\" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;\n}\nfunction mergeProps(slotProps, childProps) {\n const overrideProps = { ...childProps };\n for (const propName in childProps) {\n const slotPropValue = slotProps[propName];\n const childPropValue = childProps[propName];\n const isHandler = /^on[A-Z]/.test(propName);\n if (isHandler) {\n if (slotPropValue && childPropValue) {\n overrideProps[propName] = (...args) => {\n const result = childPropValue(...args);\n slotPropValue(...args);\n return result;\n };\n } else if (slotPropValue) {\n overrideProps[propName] = slotPropValue;\n }\n } else if (propName === \"style\") {\n overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n } else if (propName === \"className\") {\n overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(\" \");\n }\n }\n return { ...slotProps, ...overrideProps };\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nexport {\n Slot as Root,\n Slot,\n Slottable,\n createSlot,\n createSlottable\n};\n//# sourceMappingURL=index.mjs.map\n","// src/primitive.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NODES = [\n \"a\",\n \"button\",\n \"div\",\n \"form\",\n \"h2\",\n \"h3\",\n \"img\",\n \"input\",\n \"label\",\n \"li\",\n \"nav\",\n \"ol\",\n \"p\",\n \"select\",\n \"span\",\n \"svg\",\n \"ul\"\n];\nvar Primitive = NODES.reduce((primitive, node) => {\n const Slot = createSlot(`Primitive.${node}`);\n const Node = React.forwardRef((props, forwardedRef) => {\n const { asChild, ...primitiveProps } = props;\n const Comp = asChild ? Slot : node;\n if (typeof window !== \"undefined\") {\n window[Symbol.for(\"radix-ui\")] = true;\n }\n return /* @__PURE__ */ jsx(Comp, { ...primitiveProps, ref: forwardedRef });\n });\n Node.displayName = `Primitive.${node}`;\n return { ...primitive, [node]: Node };\n}, {});\nfunction dispatchDiscreteCustomEvent(target, event) {\n if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\nvar Root = Primitive;\nexport {\n Primitive,\n Root,\n dispatchDiscreteCustomEvent\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-callback-ref/src/use-callback-ref.tsx\nimport * as React from \"react\";\nfunction useCallbackRef(callback) {\n const callbackRef = React.useRef(callback);\n React.useEffect(() => {\n callbackRef.current = callback;\n });\n return React.useMemo(() => (...args) => callbackRef.current?.(...args), []);\n}\nexport {\n useCallbackRef\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-escape-keydown/src/use-escape-keydown.tsx\nimport * as React from \"react\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nfunction useEscapeKeydown(onEscapeKeyDownProp, ownerDocument = globalThis?.document) {\n const onEscapeKeyDown = useCallbackRef(onEscapeKeyDownProp);\n React.useEffect(() => {\n const handleKeyDown = (event) => {\n if (event.key === \"Escape\") {\n onEscapeKeyDown(event);\n }\n };\n ownerDocument.addEventListener(\"keydown\", handleKeyDown, { capture: true });\n return () => ownerDocument.removeEventListener(\"keydown\", handleKeyDown, { capture: true });\n }, [onEscapeKeyDown, ownerDocument]);\n}\nexport {\n useEscapeKeydown\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/dismissable-layer.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { Primitive, dispatchDiscreteCustomEvent } from \"@radix-ui/react-primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useEscapeKeydown } from \"@radix-ui/react-use-escape-keydown\";\nimport { jsx } from \"react/jsx-runtime\";\nvar DISMISSABLE_LAYER_NAME = \"DismissableLayer\";\nvar CONTEXT_UPDATE = \"dismissableLayer.update\";\nvar POINTER_DOWN_OUTSIDE = \"dismissableLayer.pointerDownOutside\";\nvar FOCUS_OUTSIDE = \"dismissableLayer.focusOutside\";\nvar originalBodyPointerEvents;\nvar DismissableLayerContext = React.createContext({\n layers: /* @__PURE__ */ new Set(),\n layersWithOutsidePointerEventsDisabled: /* @__PURE__ */ new Set(),\n branches: /* @__PURE__ */ new Set()\n});\nvar DismissableLayer = React.forwardRef(\n (props, forwardedRef) => {\n const {\n disableOutsidePointerEvents = false,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n onDismiss,\n ...layerProps\n } = props;\n const context = React.useContext(DismissableLayerContext);\n const [node, setNode] = React.useState(null);\n const ownerDocument = node?.ownerDocument ?? globalThis?.document;\n const [, force] = React.useState({});\n const composedRefs = useComposedRefs(forwardedRef, (node2) => setNode(node2));\n const layers = Array.from(context.layers);\n const [highestLayerWithOutsidePointerEventsDisabled] = [...context.layersWithOutsidePointerEventsDisabled].slice(-1);\n const highestLayerWithOutsidePointerEventsDisabledIndex = layers.indexOf(highestLayerWithOutsidePointerEventsDisabled);\n const index = node ? layers.indexOf(node) : -1;\n const isBodyPointerEventsDisabled = context.layersWithOutsidePointerEventsDisabled.size > 0;\n const isPointerEventsEnabled = index >= highestLayerWithOutsidePointerEventsDisabledIndex;\n const pointerDownOutside = usePointerDownOutside((event) => {\n const target = event.target;\n const isPointerDownOnBranch = [...context.branches].some((branch) => branch.contains(target));\n if (!isPointerEventsEnabled || isPointerDownOnBranch) return;\n onPointerDownOutside?.(event);\n onInteractOutside?.(event);\n if (!event.defaultPrevented) onDismiss?.();\n }, ownerDocument);\n const focusOutside = useFocusOutside((event) => {\n const target = event.target;\n const isFocusInBranch = [...context.branches].some((branch) => branch.contains(target));\n if (isFocusInBranch) return;\n onFocusOutside?.(event);\n onInteractOutside?.(event);\n if (!event.defaultPrevented) onDismiss?.();\n }, ownerDocument);\n useEscapeKeydown((event) => {\n const isHighestLayer = index === context.layers.size - 1;\n if (!isHighestLayer) return;\n onEscapeKeyDown?.(event);\n if (!event.defaultPrevented && onDismiss) {\n event.preventDefault();\n onDismiss();\n }\n }, ownerDocument);\n React.useEffect(() => {\n if (!node) return;\n if (disableOutsidePointerEvents) {\n if (context.layersWithOutsidePointerEventsDisabled.size === 0) {\n originalBodyPointerEvents = ownerDocument.body.style.pointerEvents;\n ownerDocument.body.style.pointerEvents = \"none\";\n }\n context.layersWithOutsidePointerEventsDisabled.add(node);\n }\n context.layers.add(node);\n dispatchUpdate();\n return () => {\n if (disableOutsidePointerEvents && context.layersWithOutsidePointerEventsDisabled.size === 1) {\n ownerDocument.body.style.pointerEvents = originalBodyPointerEvents;\n }\n };\n }, [node, ownerDocument, disableOutsidePointerEvents, context]);\n React.useEffect(() => {\n return () => {\n if (!node) return;\n context.layers.delete(node);\n context.layersWithOutsidePointerEventsDisabled.delete(node);\n dispatchUpdate();\n };\n }, [node, context]);\n React.useEffect(() => {\n const handleUpdate = () => force({});\n document.addEventListener(CONTEXT_UPDATE, handleUpdate);\n return () => document.removeEventListener(CONTEXT_UPDATE, handleUpdate);\n }, []);\n return /* @__PURE__ */ jsx(\n Primitive.div,\n {\n ...layerProps,\n ref: composedRefs,\n style: {\n pointerEvents: isBodyPointerEventsDisabled ? isPointerEventsEnabled ? \"auto\" : \"none\" : void 0,\n ...props.style\n },\n onFocusCapture: composeEventHandlers(props.onFocusCapture, focusOutside.onFocusCapture),\n onBlurCapture: composeEventHandlers(props.onBlurCapture, focusOutside.onBlurCapture),\n onPointerDownCapture: composeEventHandlers(\n props.onPointerDownCapture,\n pointerDownOutside.onPointerDownCapture\n )\n }\n );\n }\n);\nDismissableLayer.displayName = DISMISSABLE_LAYER_NAME;\nvar BRANCH_NAME = \"DismissableLayerBranch\";\nvar DismissableLayerBranch = React.forwardRef((props, forwardedRef) => {\n const context = React.useContext(DismissableLayerContext);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n React.useEffect(() => {\n const node = ref.current;\n if (node) {\n context.branches.add(node);\n return () => {\n context.branches.delete(node);\n };\n }\n }, [context.branches]);\n return /* @__PURE__ */ jsx(Primitive.div, { ...props, ref: composedRefs });\n});\nDismissableLayerBranch.displayName = BRANCH_NAME;\nfunction usePointerDownOutside(onPointerDownOutside, ownerDocument = globalThis?.document) {\n const handlePointerDownOutside = useCallbackRef(onPointerDownOutside);\n const isPointerInsideReactTreeRef = React.useRef(false);\n const handleClickRef = React.useRef(() => {\n });\n React.useEffect(() => {\n const handlePointerDown = (event) => {\n if (event.target && !isPointerInsideReactTreeRef.current) {\n let handleAndDispatchPointerDownOutsideEvent2 = function() {\n handleAndDispatchCustomEvent(\n POINTER_DOWN_OUTSIDE,\n handlePointerDownOutside,\n eventDetail,\n { discrete: true }\n );\n };\n var handleAndDispatchPointerDownOutsideEvent = handleAndDispatchPointerDownOutsideEvent2;\n const eventDetail = { originalEvent: event };\n if (event.pointerType === \"touch\") {\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n handleClickRef.current = handleAndDispatchPointerDownOutsideEvent2;\n ownerDocument.addEventListener(\"click\", handleClickRef.current, { once: true });\n } else {\n handleAndDispatchPointerDownOutsideEvent2();\n }\n } else {\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n }\n isPointerInsideReactTreeRef.current = false;\n };\n const timerId = window.setTimeout(() => {\n ownerDocument.addEventListener(\"pointerdown\", handlePointerDown);\n }, 0);\n return () => {\n window.clearTimeout(timerId);\n ownerDocument.removeEventListener(\"pointerdown\", handlePointerDown);\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n };\n }, [ownerDocument, handlePointerDownOutside]);\n return {\n // ensures we check React component tree (not just DOM tree)\n onPointerDownCapture: () => isPointerInsideReactTreeRef.current = true\n };\n}\nfunction useFocusOutside(onFocusOutside, ownerDocument = globalThis?.document) {\n const handleFocusOutside = useCallbackRef(onFocusOutside);\n const isFocusInsideReactTreeRef = React.useRef(false);\n React.useEffect(() => {\n const handleFocus = (event) => {\n if (event.target && !isFocusInsideReactTreeRef.current) {\n const eventDetail = { originalEvent: event };\n handleAndDispatchCustomEvent(FOCUS_OUTSIDE, handleFocusOutside, eventDetail, {\n discrete: false\n });\n }\n };\n ownerDocument.addEventListener(\"focusin\", handleFocus);\n return () => ownerDocument.removeEventListener(\"focusin\", handleFocus);\n }, [ownerDocument, handleFocusOutside]);\n return {\n onFocusCapture: () => isFocusInsideReactTreeRef.current = true,\n onBlurCapture: () => isFocusInsideReactTreeRef.current = false\n };\n}\nfunction dispatchUpdate() {\n const event = new CustomEvent(CONTEXT_UPDATE);\n document.dispatchEvent(event);\n}\nfunction handleAndDispatchCustomEvent(name, handler, detail, { discrete }) {\n const target = detail.originalEvent.target;\n const event = new CustomEvent(name, { bubbles: false, cancelable: true, detail });\n if (handler) target.addEventListener(name, handler, { once: true });\n if (discrete) {\n dispatchDiscreteCustomEvent(target, event);\n } else {\n target.dispatchEvent(event);\n }\n}\nvar Root = DismissableLayer;\nvar Branch = DismissableLayerBranch;\nexport {\n Branch,\n DismissableLayer,\n DismissableLayerBranch,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-layout-effect/src/use-layout-effect.tsx\nimport * as React from \"react\";\nvar useLayoutEffect2 = globalThis?.document ? React.useLayoutEffect : () => {\n};\nexport {\n useLayoutEffect2 as useLayoutEffect\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/id/src/id.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nvar useReactId = React[\" useId \".trim().toString()] || (() => void 0);\nvar count = 0;\nfunction useId(deterministicId) {\n const [id, setId] = React.useState(useReactId());\n useLayoutEffect(() => {\n if (!deterministicId) setId((reactId) => reactId ?? String(count++));\n }, [deterministicId]);\n return deterministicId || (id ? `radix-${id}` : \"\");\n}\nexport {\n useId\n};\n//# sourceMappingURL=index.mjs.map\n","/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n x: v,\n y: v\n});\nconst oppositeSideMap = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nconst oppositeAlignmentMap = {\n start: 'end',\n end: 'start'\n};\nfunction clamp(start, value, end) {\n return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n return axis === 'y' ? 'height' : 'width';\n}\nconst yAxisSides = /*#__PURE__*/new Set(['top', 'bottom']);\nfunction getSideAxis(placement) {\n return yAxisSides.has(getSide(placement)) ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n if (rtl === void 0) {\n rtl = false;\n }\n const alignment = getAlignment(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const length = getAxisLength(alignmentAxis);\n let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n if (rects.reference[length] > rects.floating[length]) {\n mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n }\n return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n const oppositePlacement = getOppositePlacement(placement);\n return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\nconst lrPlacement = ['left', 'right'];\nconst rlPlacement = ['right', 'left'];\nconst tbPlacement = ['top', 'bottom'];\nconst btPlacement = ['bottom', 'top'];\nfunction getSideList(side, isStart, rtl) {\n switch (side) {\n case 'top':\n case 'bottom':\n if (rtl) return isStart ? rlPlacement : lrPlacement;\n return isStart ? lrPlacement : rlPlacement;\n case 'left':\n case 'right':\n return isStart ? tbPlacement : btPlacement;\n default:\n return [];\n }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n const alignment = getAlignment(placement);\n let list = getSideList(getSide(placement), direction === 'start', rtl);\n if (alignment) {\n list = list.map(side => side + \"-\" + alignment);\n if (flipAlignment) {\n list = list.concat(list.map(getOppositeAlignmentPlacement));\n }\n }\n return list;\n}\nfunction getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...padding\n };\n}\nfunction getPaddingObject(padding) {\n return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n };\n}\nfunction rectToClientRect(rect) {\n const {\n x,\n y,\n width,\n height\n } = rect;\n return {\n width,\n height,\n top: y,\n left: x,\n right: x + width,\n bottom: y + height,\n x,\n y\n };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n let {\n reference,\n floating\n } = _ref;\n const sideAxis = getSideAxis(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const alignLength = getAxisLength(alignmentAxis);\n const side = getSide(placement);\n const isVertical = sideAxis === 'y';\n const commonX = reference.x + reference.width / 2 - floating.width / 2;\n const commonY = reference.y + reference.height / 2 - floating.height / 2;\n const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n let coords;\n switch (side) {\n case 'top':\n coords = {\n x: commonX,\n y: reference.y - floating.height\n };\n break;\n case 'bottom':\n coords = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n case 'right':\n coords = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n case 'left':\n coords = {\n x: reference.x - floating.width,\n y: commonY\n };\n break;\n default:\n coords = {\n x: reference.x,\n y: reference.y\n };\n }\n switch (getAlignment(placement)) {\n case 'start':\n coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n case 'end':\n coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n }\n return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform\n } = config;\n const validMiddleware = middleware.filter(Boolean);\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n let rects = await platform.getElementRects({\n reference,\n floating,\n strategy\n });\n let {\n x,\n y\n } = computeCoordsFromPlacement(rects, placement, rtl);\n let statefulPlacement = placement;\n let middlewareData = {};\n let resetCount = 0;\n for (let i = 0; i < validMiddleware.length; i++) {\n const {\n name,\n fn\n } = validMiddleware[i];\n const {\n x: nextX,\n y: nextY,\n data,\n reset\n } = await fn({\n x,\n y,\n initialPlacement: placement,\n placement: statefulPlacement,\n strategy,\n middlewareData,\n rects,\n platform,\n elements: {\n reference,\n floating\n }\n });\n x = nextX != null ? nextX : x;\n y = nextY != null ? nextY : y;\n middlewareData = {\n ...middlewareData,\n [name]: {\n ...middlewareData[name],\n ...data\n }\n };\n if (reset && resetCount <= 50) {\n resetCount++;\n if (typeof reset === 'object') {\n if (reset.placement) {\n statefulPlacement = reset.placement;\n }\n if (reset.rects) {\n rects = reset.rects === true ? await platform.getElementRects({\n reference,\n floating,\n strategy\n }) : reset.rects;\n }\n ({\n x,\n y\n } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n }\n i = -1;\n }\n }\n return {\n x,\n y,\n placement: statefulPlacement,\n strategy,\n middlewareData\n };\n};\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n var _await$platform$isEle;\n if (options === void 0) {\n options = {};\n }\n const {\n x,\n y,\n platform,\n rects,\n elements,\n strategy\n } = state;\n const {\n boundary = 'clippingAncestors',\n rootBoundary = 'viewport',\n elementContext = 'floating',\n altBoundary = false,\n padding = 0\n } = evaluate(options, state);\n const paddingObject = getPaddingObject(padding);\n const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n const element = elements[altBoundary ? altContext : elementContext];\n const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n boundary,\n rootBoundary,\n strategy\n }));\n const rect = elementContext === 'floating' ? {\n x,\n y,\n width: rects.floating.width,\n height: rects.floating.height\n } : rects.reference;\n const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n x: 1,\n y: 1\n } : {\n x: 1,\n y: 1\n };\n const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n elements,\n rect,\n offsetParent,\n strategy\n }) : rect);\n return {\n top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n };\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n name: 'arrow',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n platform,\n elements,\n middlewareData\n } = state;\n // Since `element` is required, we don't Partial<> the type.\n const {\n element,\n padding = 0\n } = evaluate(options, state) || {};\n if (element == null) {\n return {};\n }\n const paddingObject = getPaddingObject(padding);\n const coords = {\n x,\n y\n };\n const axis = getAlignmentAxis(placement);\n const length = getAxisLength(axis);\n const arrowDimensions = await platform.getDimensions(element);\n const isYAxis = axis === 'y';\n const minProp = isYAxis ? 'top' : 'left';\n const maxProp = isYAxis ? 'bottom' : 'right';\n const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n const startDiff = coords[axis] - rects.reference[axis];\n const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n // DOM platform can return `window` as the `offsetParent`.\n if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n clientSize = elements.floating[clientProp] || rects.floating[length];\n }\n const centerToReference = endDiff / 2 - startDiff / 2;\n\n // If the padding is large enough that it causes the arrow to no longer be\n // centered, modify the padding so that it is centered.\n const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n // Make sure the arrow doesn't overflow the floating element if the center\n // point is outside the floating element's bounds.\n const min$1 = minPadding;\n const max = clientSize - arrowDimensions[length] - maxPadding;\n const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n const offset = clamp(min$1, center, max);\n\n // If the reference is small enough that the arrow's padding causes it to\n // to point to nothing for an aligned placement, adjust the offset of the\n // floating element itself. To ensure `shift()` continues to take action,\n // a single reset is performed when this is true.\n const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n return {\n [axis]: coords[axis] + alignmentOffset,\n data: {\n [axis]: offset,\n centerOffset: center - offset - alignmentOffset,\n ...(shouldAddOffset && {\n alignmentOffset\n })\n },\n reset: shouldAddOffset\n };\n }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n return allowedPlacementsSortedByAlignment.filter(placement => {\n if (alignment) {\n return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n }\n return true;\n });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'autoPlacement',\n options,\n async fn(state) {\n var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n const {\n rects,\n middlewareData,\n placement,\n platform,\n elements\n } = state;\n const {\n crossAxis = false,\n alignment,\n allowedPlacements = placements,\n autoAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n const currentPlacement = placements$1[currentIndex];\n if (currentPlacement == null) {\n return {};\n }\n const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n // Make `computeCoords` start from the right place.\n if (placement !== currentPlacement) {\n return {\n reset: {\n placement: placements$1[0]\n }\n };\n }\n const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n placement: currentPlacement,\n overflows: currentOverflows\n }];\n const nextPlacement = placements$1[currentIndex + 1];\n\n // There are more placements to check.\n if (nextPlacement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n const placementsSortedByMostSpace = allOverflows.map(d => {\n const alignment = getAlignment(d.placement);\n return [d.placement, alignment && crossAxis ?\n // Check along the mainAxis and main crossAxis side.\n d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n // Check only the mainAxis.\n d.overflows[0], d.overflows];\n }).sort((a, b) => a[1] - b[1]);\n const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n // Aligned placements should not check their opposite crossAxis\n // side.\n getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n if (resetPlacement !== placement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: resetPlacement\n }\n };\n }\n return {};\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'flip',\n options,\n async fn(state) {\n var _middlewareData$arrow, _middlewareData$flip;\n const {\n placement,\n middlewareData,\n rects,\n initialPlacement,\n platform,\n elements\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true,\n fallbackPlacements: specifiedFallbackPlacements,\n fallbackStrategy = 'bestFit',\n fallbackAxisSideDirection = 'none',\n flipAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n\n // If a reset by the arrow was caused due to an alignment offset being\n // added, we should skip any logic now since `flip()` has already done its\n // work.\n // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n const side = getSide(placement);\n const initialSideAxis = getSideAxis(initialPlacement);\n const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== 'none';\n if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {\n fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n }\n const placements = [initialPlacement, ...fallbackPlacements];\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const overflows = [];\n let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n if (checkMainAxis) {\n overflows.push(overflow[side]);\n }\n if (checkCrossAxis) {\n const sides = getAlignmentSides(placement, rects, rtl);\n overflows.push(overflow[sides[0]], overflow[sides[1]]);\n }\n overflowsData = [...overflowsData, {\n placement,\n overflows\n }];\n\n // One or more sides is overflowing.\n if (!overflows.every(side => side <= 0)) {\n var _middlewareData$flip2, _overflowsData$filter;\n const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n const nextPlacement = placements[nextIndex];\n if (nextPlacement) {\n const ignoreCrossAxisOverflow = checkCrossAxis === 'alignment' ? initialSideAxis !== getSideAxis(nextPlacement) : false;\n if (!ignoreCrossAxisOverflow ||\n // We leave the current main axis only if every placement on that axis\n // overflows the main axis.\n overflowsData.every(d => getSideAxis(d.placement) === initialSideAxis ? d.overflows[0] > 0 : true)) {\n // Try next placement and re-run the lifecycle.\n return {\n data: {\n index: nextIndex,\n overflows: overflowsData\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n }\n\n // First, find the candidates that fit on the mainAxis side of overflow,\n // then find the placement that fits the best on the main crossAxis side.\n let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n // Otherwise fallback.\n if (!resetPlacement) {\n switch (fallbackStrategy) {\n case 'bestFit':\n {\n var _overflowsData$filter2;\n const placement = (_overflowsData$filter2 = overflowsData.filter(d => {\n if (hasFallbackAxisSideDirection) {\n const currentSideAxis = getSideAxis(d.placement);\n return currentSideAxis === initialSideAxis ||\n // Create a bias to the `y` side axis due to horizontal\n // reading directions favoring greater width.\n currentSideAxis === 'y';\n }\n return true;\n }).map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0];\n if (placement) {\n resetPlacement = placement;\n }\n break;\n }\n case 'initialPlacement':\n resetPlacement = initialPlacement;\n break;\n }\n }\n if (placement !== resetPlacement) {\n return {\n reset: {\n placement: resetPlacement\n }\n };\n }\n }\n return {};\n }\n };\n};\n\nfunction getSideOffsets(overflow, rect) {\n return {\n top: overflow.top - rect.height,\n right: overflow.right - rect.width,\n bottom: overflow.bottom - rect.height,\n left: overflow.left - rect.width\n };\n}\nfunction isAnySideFullyClipped(overflow) {\n return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'hide',\n options,\n async fn(state) {\n const {\n rects\n } = state;\n const {\n strategy = 'referenceHidden',\n ...detectOverflowOptions\n } = evaluate(options, state);\n switch (strategy) {\n case 'referenceHidden':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const offsets = getSideOffsets(overflow, rects.reference);\n return {\n data: {\n referenceHiddenOffsets: offsets,\n referenceHidden: isAnySideFullyClipped(offsets)\n }\n };\n }\n case 'escaped':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n altBoundary: true\n });\n const offsets = getSideOffsets(overflow, rects.floating);\n return {\n data: {\n escapedOffsets: offsets,\n escaped: isAnySideFullyClipped(offsets)\n }\n };\n }\n default:\n {\n return {};\n }\n }\n }\n };\n};\n\nfunction getBoundingRect(rects) {\n const minX = min(...rects.map(rect => rect.left));\n const minY = min(...rects.map(rect => rect.top));\n const maxX = max(...rects.map(rect => rect.right));\n const maxY = max(...rects.map(rect => rect.bottom));\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n}\nfunction getRectsByLine(rects) {\n const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n const groups = [];\n let prevRect = null;\n for (let i = 0; i < sortedRects.length; i++) {\n const rect = sortedRects[i];\n if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n groups.push([rect]);\n } else {\n groups[groups.length - 1].push(rect);\n }\n prevRect = rect;\n }\n return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'inline',\n options,\n async fn(state) {\n const {\n placement,\n elements,\n rects,\n platform,\n strategy\n } = state;\n // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n // ClientRect's bounds, despite the event listener being triggered. A\n // padding of 2 seems to handle this issue.\n const {\n padding = 2,\n x,\n y\n } = evaluate(options, state);\n const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n const clientRects = getRectsByLine(nativeClientRects);\n const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n const paddingObject = getPaddingObject(padding);\n function getBoundingClientRect() {\n // There are two rects and they are disjoined.\n if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n // Find the first rect in which the point is fully inside.\n return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n }\n\n // There are 2 or more connected rects.\n if (clientRects.length >= 2) {\n if (getSideAxis(placement) === 'y') {\n const firstRect = clientRects[0];\n const lastRect = clientRects[clientRects.length - 1];\n const isTop = getSide(placement) === 'top';\n const top = firstRect.top;\n const bottom = lastRect.bottom;\n const left = isTop ? firstRect.left : lastRect.left;\n const right = isTop ? firstRect.right : lastRect.right;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n const isLeftSide = getSide(placement) === 'left';\n const maxRight = max(...clientRects.map(rect => rect.right));\n const minLeft = min(...clientRects.map(rect => rect.left));\n const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n const top = measureRects[0].top;\n const bottom = measureRects[measureRects.length - 1].bottom;\n const left = minLeft;\n const right = maxRight;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n return fallback;\n }\n const resetRects = await platform.getElementRects({\n reference: {\n getBoundingClientRect\n },\n floating: elements.floating,\n strategy\n });\n if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n return {\n reset: {\n rects: resetRects\n }\n };\n }\n return {};\n }\n };\n};\n\nconst originSides = /*#__PURE__*/new Set(['left', 'top']);\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n const {\n placement,\n platform,\n elements\n } = state;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isVertical = getSideAxis(placement) === 'y';\n const mainAxisMulti = originSides.has(side) ? -1 : 1;\n const crossAxisMulti = rtl && isVertical ? -1 : 1;\n const rawValue = evaluate(options, state);\n\n // eslint-disable-next-line prefer-const\n let {\n mainAxis,\n crossAxis,\n alignmentAxis\n } = typeof rawValue === 'number' ? {\n mainAxis: rawValue,\n crossAxis: 0,\n alignmentAxis: null\n } : {\n mainAxis: rawValue.mainAxis || 0,\n crossAxis: rawValue.crossAxis || 0,\n alignmentAxis: rawValue.alignmentAxis\n };\n if (alignment && typeof alignmentAxis === 'number') {\n crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n }\n return isVertical ? {\n x: crossAxis * crossAxisMulti,\n y: mainAxis * mainAxisMulti\n } : {\n x: mainAxis * mainAxisMulti,\n y: crossAxis * crossAxisMulti\n };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n if (options === void 0) {\n options = 0;\n }\n return {\n name: 'offset',\n options,\n async fn(state) {\n var _middlewareData$offse, _middlewareData$arrow;\n const {\n x,\n y,\n placement,\n middlewareData\n } = state;\n const diffCoords = await convertValueToCoords(state, options);\n\n // If the placement is the same and the arrow caused an alignment offset\n // then we don't need to change the positioning coordinates.\n if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n return {\n x: x + diffCoords.x,\n y: y + diffCoords.y,\n data: {\n ...diffCoords,\n placement\n }\n };\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'shift',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = false,\n limiter = {\n fn: _ref => {\n let {\n x,\n y\n } = _ref;\n return {\n x,\n y\n };\n }\n },\n ...detectOverflowOptions\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const crossAxis = getSideAxis(getSide(placement));\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n if (checkMainAxis) {\n const minSide = mainAxis === 'y' ? 'top' : 'left';\n const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n const min = mainAxisCoord + overflow[minSide];\n const max = mainAxisCoord - overflow[maxSide];\n mainAxisCoord = clamp(min, mainAxisCoord, max);\n }\n if (checkCrossAxis) {\n const minSide = crossAxis === 'y' ? 'top' : 'left';\n const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n const min = crossAxisCoord + overflow[minSide];\n const max = crossAxisCoord - overflow[maxSide];\n crossAxisCoord = clamp(min, crossAxisCoord, max);\n }\n const limitedCoords = limiter.fn({\n ...state,\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n });\n return {\n ...limitedCoords,\n data: {\n x: limitedCoords.x - x,\n y: limitedCoords.y - y,\n enabled: {\n [mainAxis]: checkMainAxis,\n [crossAxis]: checkCrossAxis\n }\n }\n };\n }\n };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n options,\n fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n middlewareData\n } = state;\n const {\n offset = 0,\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const crossAxis = getSideAxis(placement);\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n const rawOffset = evaluate(offset, state);\n const computedOffset = typeof rawOffset === 'number' ? {\n mainAxis: rawOffset,\n crossAxis: 0\n } : {\n mainAxis: 0,\n crossAxis: 0,\n ...rawOffset\n };\n if (checkMainAxis) {\n const len = mainAxis === 'y' ? 'height' : 'width';\n const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n if (mainAxisCoord < limitMin) {\n mainAxisCoord = limitMin;\n } else if (mainAxisCoord > limitMax) {\n mainAxisCoord = limitMax;\n }\n }\n if (checkCrossAxis) {\n var _middlewareData$offse, _middlewareData$offse2;\n const len = mainAxis === 'y' ? 'width' : 'height';\n const isOriginSide = originSides.has(getSide(placement));\n const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n if (crossAxisCoord < limitMin) {\n crossAxisCoord = limitMin;\n } else if (crossAxisCoord > limitMax) {\n crossAxisCoord = limitMax;\n }\n }\n return {\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n };\n }\n };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'size',\n options,\n async fn(state) {\n var _state$middlewareData, _state$middlewareData2;\n const {\n placement,\n rects,\n platform,\n elements\n } = state;\n const {\n apply = () => {},\n ...detectOverflowOptions\n } = evaluate(options, state);\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isYAxis = getSideAxis(placement) === 'y';\n const {\n width,\n height\n } = rects.floating;\n let heightSide;\n let widthSide;\n if (side === 'top' || side === 'bottom') {\n heightSide = side;\n widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n } else {\n widthSide = side;\n heightSide = alignment === 'end' ? 'top' : 'bottom';\n }\n const maximumClippingHeight = height - overflow.top - overflow.bottom;\n const maximumClippingWidth = width - overflow.left - overflow.right;\n const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);\n const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);\n const noShift = !state.middlewareData.shift;\n let availableHeight = overflowAvailableHeight;\n let availableWidth = overflowAvailableWidth;\n if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) {\n availableWidth = maximumClippingWidth;\n }\n if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) {\n availableHeight = maximumClippingHeight;\n }\n if (noShift && !alignment) {\n const xMin = max(overflow.left, 0);\n const xMax = max(overflow.right, 0);\n const yMin = max(overflow.top, 0);\n const yMax = max(overflow.bottom, 0);\n if (isYAxis) {\n availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n } else {\n availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n }\n }\n await apply({\n ...state,\n availableWidth,\n availableHeight\n });\n const nextDimensions = await platform.getDimensions(elements.floating);\n if (width !== nextDimensions.width || height !== nextDimensions.height) {\n return {\n reset: {\n rects: true\n }\n };\n }\n return {};\n }\n };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","function hasWindow() {\n return typeof window !== 'undefined';\n}\nfunction getNodeName(node) {\n if (isNode(node)) {\n return (node.nodeName || '').toLowerCase();\n }\n // Mocked nodes in testing environments may not be instances of Node. By\n // returning `#document` an infinite loop won't occur.\n // https://github.com/floating-ui/floating-ui/issues/2317\n return '#document';\n}\nfunction getWindow(node) {\n var _node$ownerDocument;\n return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n var _ref;\n return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n if (!hasWindow() || typeof ShadowRoot === 'undefined') {\n return false;\n }\n return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nconst invalidOverflowDisplayValues = /*#__PURE__*/new Set(['inline', 'contents']);\nfunction isOverflowElement(element) {\n const {\n overflow,\n overflowX,\n overflowY,\n display\n } = getComputedStyle(element);\n return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !invalidOverflowDisplayValues.has(display);\n}\nconst tableElements = /*#__PURE__*/new Set(['table', 'td', 'th']);\nfunction isTableElement(element) {\n return tableElements.has(getNodeName(element));\n}\nconst topLayerSelectors = [':popover-open', ':modal'];\nfunction isTopLayer(element) {\n return topLayerSelectors.some(selector => {\n try {\n return element.matches(selector);\n } catch (_e) {\n return false;\n }\n });\n}\nconst transformProperties = ['transform', 'translate', 'scale', 'rotate', 'perspective'];\nconst willChangeValues = ['transform', 'translate', 'scale', 'rotate', 'perspective', 'filter'];\nconst containValues = ['paint', 'layout', 'strict', 'content'];\nfunction isContainingBlock(elementOrCss) {\n const webkit = isWebKit();\n const css = isElement(elementOrCss) ? getComputedStyle(elementOrCss) : elementOrCss;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n // https://drafts.csswg.org/css-transforms-2/#individual-transforms\n return transformProperties.some(value => css[value] ? css[value] !== 'none' : false) || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || willChangeValues.some(value => (css.willChange || '').includes(value)) || containValues.some(value => (css.contain || '').includes(value));\n}\nfunction getContainingBlock(element) {\n let currentNode = getParentNode(element);\n while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n if (isContainingBlock(currentNode)) {\n return currentNode;\n } else if (isTopLayer(currentNode)) {\n return null;\n }\n currentNode = getParentNode(currentNode);\n }\n return null;\n}\nfunction isWebKit() {\n if (typeof CSS === 'undefined' || !CSS.supports) return false;\n return CSS.supports('-webkit-backdrop-filter', 'none');\n}\nconst lastTraversableNodeNames = /*#__PURE__*/new Set(['html', 'body', '#document']);\nfunction isLastTraversableNode(node) {\n return lastTraversableNodeNames.has(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n if (isElement(element)) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n }\n return {\n scrollLeft: element.scrollX,\n scrollTop: element.scrollY\n };\n}\nfunction getParentNode(node) {\n if (getNodeName(node) === 'html') {\n return node;\n }\n const result =\n // Step into the shadow DOM of the parent of a slotted node.\n node.assignedSlot ||\n // DOM Element detected.\n node.parentNode ||\n // ShadowRoot detected.\n isShadowRoot(node) && node.host ||\n // Fallback.\n getDocumentElement(node);\n return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n const parentNode = getParentNode(node);\n if (isLastTraversableNode(parentNode)) {\n return node.ownerDocument ? node.ownerDocument.body : node.body;\n }\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n var _node$ownerDocument2;\n if (list === void 0) {\n list = [];\n }\n if (traverseIframes === void 0) {\n traverseIframes = true;\n }\n const scrollableAncestor = getNearestOverflowAncestor(node);\n const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n const win = getWindow(scrollableAncestor);\n if (isBody) {\n const frameElement = getFrameElement(win);\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);\n }\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n}\nfunction getFrameElement(win) {\n return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getFrameElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isTopLayer, isWebKit };\n","import { rectToClientRect, arrow as arrow$1, autoPlacement as autoPlacement$1, detectOverflow as detectOverflow$1, flip as flip$1, hide as hide$1, inline as inline$1, limitShift as limitShift$1, offset as offset$1, shift as shift$1, size as size$1, computePosition as computePosition$1 } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle, isHTMLElement, isElement, getWindow, isWebKit, getFrameElement, getNodeScroll, getDocumentElement, isTopLayer, getNodeName, isOverflowElement, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n const css = getComputedStyle(element);\n // In testing environments, the `width` and `height` properties are empty\n // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n let width = parseFloat(css.width) || 0;\n let height = parseFloat(css.height) || 0;\n const hasOffset = isHTMLElement(element);\n const offsetWidth = hasOffset ? element.offsetWidth : width;\n const offsetHeight = hasOffset ? element.offsetHeight : height;\n const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n if (shouldFallback) {\n width = offsetWidth;\n height = offsetHeight;\n }\n return {\n width,\n height,\n $: shouldFallback\n };\n}\n\nfunction unwrapElement(element) {\n return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n const domElement = unwrapElement(element);\n if (!isHTMLElement(domElement)) {\n return createCoords(1);\n }\n const rect = domElement.getBoundingClientRect();\n const {\n width,\n height,\n $\n } = getCssDimensions(domElement);\n let x = ($ ? round(rect.width) : rect.width) / width;\n let y = ($ ? round(rect.height) : rect.height) / height;\n\n // 0, NaN, or Infinity should always fallback to 1.\n\n if (!x || !Number.isFinite(x)) {\n x = 1;\n }\n if (!y || !Number.isFinite(y)) {\n y = 1;\n }\n return {\n x,\n y\n };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n const win = getWindow(element);\n if (!isWebKit() || !win.visualViewport) {\n return noOffsets;\n }\n return {\n x: win.visualViewport.offsetLeft,\n y: win.visualViewport.offsetTop\n };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n return false;\n }\n return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n const clientRect = element.getBoundingClientRect();\n const domElement = unwrapElement(element);\n let scale = createCoords(1);\n if (includeScale) {\n if (offsetParent) {\n if (isElement(offsetParent)) {\n scale = getScale(offsetParent);\n }\n } else {\n scale = getScale(element);\n }\n }\n const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n let x = (clientRect.left + visualOffsets.x) / scale.x;\n let y = (clientRect.top + visualOffsets.y) / scale.y;\n let width = clientRect.width / scale.x;\n let height = clientRect.height / scale.y;\n if (domElement) {\n const win = getWindow(domElement);\n const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n let currentWin = win;\n let currentIFrame = getFrameElement(currentWin);\n while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n const iframeScale = getScale(currentIFrame);\n const iframeRect = currentIFrame.getBoundingClientRect();\n const css = getComputedStyle(currentIFrame);\n const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n x *= iframeScale.x;\n y *= iframeScale.y;\n width *= iframeScale.x;\n height *= iframeScale.y;\n x += left;\n y += top;\n currentWin = getWindow(currentIFrame);\n currentIFrame = getFrameElement(currentWin);\n }\n }\n return rectToClientRect({\n width,\n height,\n x,\n y\n });\n}\n\n// If <html> has a CSS width greater than the viewport, then this will be\n// incorrect for RTL.\nfunction getWindowScrollBarX(element, rect) {\n const leftScroll = getNodeScroll(element).scrollLeft;\n if (!rect) {\n return getBoundingClientRect(getDocumentElement(element)).left + leftScroll;\n }\n return rect.left + leftScroll;\n}\n\nfunction getHTMLOffset(documentElement, scroll, ignoreScrollbarX) {\n if (ignoreScrollbarX === void 0) {\n ignoreScrollbarX = false;\n }\n const htmlRect = documentElement.getBoundingClientRect();\n const x = htmlRect.left + scroll.scrollLeft - (ignoreScrollbarX ? 0 :\n // RTL <body> scrollbar.\n getWindowScrollBarX(documentElement, htmlRect));\n const y = htmlRect.top + scroll.scrollTop;\n return {\n x,\n y\n };\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n let {\n elements,\n rect,\n offsetParent,\n strategy\n } = _ref;\n const isFixed = strategy === 'fixed';\n const documentElement = getDocumentElement(offsetParent);\n const topLayer = elements ? isTopLayer(elements.floating) : false;\n if (offsetParent === documentElement || topLayer && isFixed) {\n return rect;\n }\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n let scale = createCoords(1);\n const offsets = createCoords(0);\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isHTMLElement(offsetParent)) {\n const offsetRect = getBoundingClientRect(offsetParent);\n scale = getScale(offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n }\n }\n const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll, true) : createCoords(0);\n return {\n width: rect.width * scale.x,\n height: rect.height * scale.y,\n x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x,\n y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y\n };\n}\n\nfunction getClientRects(element) {\n return Array.from(element.getClientRects());\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n const html = getDocumentElement(element);\n const scroll = getNodeScroll(element);\n const body = element.ownerDocument.body;\n const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n const y = -scroll.scrollTop;\n if (getComputedStyle(body).direction === 'rtl') {\n x += max(html.clientWidth, body.clientWidth) - width;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\nfunction getViewportRect(element, strategy) {\n const win = getWindow(element);\n const html = getDocumentElement(element);\n const visualViewport = win.visualViewport;\n let width = html.clientWidth;\n let height = html.clientHeight;\n let x = 0;\n let y = 0;\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n const visualViewportBased = isWebKit();\n if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\nconst absoluteOrFixed = /*#__PURE__*/new Set(['absolute', 'fixed']);\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n const top = clientRect.top + element.clientTop;\n const left = clientRect.left + element.clientLeft;\n const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n const width = element.clientWidth * scale.x;\n const height = element.clientHeight * scale.y;\n const x = left * scale.x;\n const y = top * scale.y;\n return {\n width,\n height,\n x,\n y\n };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n let rect;\n if (clippingAncestor === 'viewport') {\n rect = getViewportRect(element, strategy);\n } else if (clippingAncestor === 'document') {\n rect = getDocumentRect(getDocumentElement(element));\n } else if (isElement(clippingAncestor)) {\n rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n } else {\n const visualOffsets = getVisualOffsets(element);\n rect = {\n x: clippingAncestor.x - visualOffsets.x,\n y: clippingAncestor.y - visualOffsets.y,\n width: clippingAncestor.width,\n height: clippingAncestor.height\n };\n }\n return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n const parentNode = getParentNode(element);\n if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n return false;\n }\n return getComputedStyle(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n const cachedResult = cache.get(element);\n if (cachedResult) {\n return cachedResult;\n }\n let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n let currentContainingBlockComputedStyle = null;\n const elementIsFixed = getComputedStyle(element).position === 'fixed';\n let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n const computedStyle = getComputedStyle(currentNode);\n const currentNodeIsContaining = isContainingBlock(currentNode);\n if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n currentContainingBlockComputedStyle = null;\n }\n const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && absoluteOrFixed.has(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n if (shouldDropCurrentNode) {\n // Drop non-containing blocks.\n result = result.filter(ancestor => ancestor !== currentNode);\n } else {\n // Record last containing block for next iteration.\n currentContainingBlockComputedStyle = computedStyle;\n }\n currentNode = getParentNode(currentNode);\n }\n cache.set(element, result);\n return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n let {\n element,\n boundary,\n rootBoundary,\n strategy\n } = _ref;\n const elementClippingAncestors = boundary === 'clippingAncestors' ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);\n const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n const firstClippingAncestor = clippingAncestors[0];\n const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n return {\n width: clippingRect.right - clippingRect.left,\n height: clippingRect.bottom - clippingRect.top,\n x: clippingRect.left,\n y: clippingRect.top\n };\n}\n\nfunction getDimensions(element) {\n const {\n width,\n height\n } = getCssDimensions(element);\n return {\n width,\n height\n };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n const isFixed = strategy === 'fixed';\n const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n const offsets = createCoords(0);\n\n // If the <body> scrollbar appears on the left (e.g. RTL systems). Use\n // Firefox with layout.scrollbar.side = 3 in about:config to test this.\n function setLeftRTLScrollbarOffset() {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isOffsetParentAnElement) {\n const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n } else if (documentElement) {\n setLeftRTLScrollbarOffset();\n }\n }\n if (isFixed && !isOffsetParentAnElement && documentElement) {\n setLeftRTLScrollbarOffset();\n }\n const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;\n const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y;\n return {\n x,\n y,\n width: rect.width,\n height: rect.height\n };\n}\n\nfunction isStaticPositioned(element) {\n return getComputedStyle(element).position === 'static';\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n if (!isHTMLElement(element) || getComputedStyle(element).position === 'fixed') {\n return null;\n }\n if (polyfill) {\n return polyfill(element);\n }\n let rawOffsetParent = element.offsetParent;\n\n // Firefox returns the <html> element as the offsetParent if it's non-static,\n // while Chrome and Safari return the <body> element. The <body> element must\n // be used to perform the correct calculations even if the <html> element is\n // non-static.\n if (getDocumentElement(element) === rawOffsetParent) {\n rawOffsetParent = rawOffsetParent.ownerDocument.body;\n }\n return rawOffsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n const win = getWindow(element);\n if (isTopLayer(element)) {\n return win;\n }\n if (!isHTMLElement(element)) {\n let svgOffsetParent = getParentNode(element);\n while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {\n if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {\n return svgOffsetParent;\n }\n svgOffsetParent = getParentNode(svgOffsetParent);\n }\n return win;\n }\n let offsetParent = getTrueOffsetParent(element, polyfill);\n while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {\n offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n }\n if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {\n return win;\n }\n return offsetParent || getContainingBlock(element) || win;\n}\n\nconst getElementRects = async function (data) {\n const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n const getDimensionsFn = this.getDimensions;\n const floatingDimensions = await getDimensionsFn(data.floating);\n return {\n reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n floating: {\n x: 0,\n y: 0,\n width: floatingDimensions.width,\n height: floatingDimensions.height\n }\n };\n};\n\nfunction isRTL(element) {\n return getComputedStyle(element).direction === 'rtl';\n}\n\nconst platform = {\n convertOffsetParentRelativeRectToViewportRelativeRect,\n getDocumentElement,\n getClippingRect,\n getOffsetParent,\n getElementRects,\n getClientRects,\n getDimensions,\n getScale,\n isElement,\n isRTL\n};\n\nfunction rectsAreEqual(a, b) {\n return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;\n}\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n let io = null;\n let timeoutId;\n const root = getDocumentElement(element);\n function cleanup() {\n var _io;\n clearTimeout(timeoutId);\n (_io = io) == null || _io.disconnect();\n io = null;\n }\n function refresh(skip, threshold) {\n if (skip === void 0) {\n skip = false;\n }\n if (threshold === void 0) {\n threshold = 1;\n }\n cleanup();\n const elementRectForRootMargin = element.getBoundingClientRect();\n const {\n left,\n top,\n width,\n height\n } = elementRectForRootMargin;\n if (!skip) {\n onMove();\n }\n if (!width || !height) {\n return;\n }\n const insetTop = floor(top);\n const insetRight = floor(root.clientWidth - (left + width));\n const insetBottom = floor(root.clientHeight - (top + height));\n const insetLeft = floor(left);\n const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n const options = {\n rootMargin,\n threshold: max(0, min(1, threshold)) || 1\n };\n let isFirstUpdate = true;\n function handleObserve(entries) {\n const ratio = entries[0].intersectionRatio;\n if (ratio !== threshold) {\n if (!isFirstUpdate) {\n return refresh();\n }\n if (!ratio) {\n // If the reference is clipped, the ratio is 0. Throttle the refresh\n // to prevent an infinite loop of updates.\n timeoutId = setTimeout(() => {\n refresh(false, 1e-7);\n }, 1000);\n } else {\n refresh(false, ratio);\n }\n }\n if (ratio === 1 && !rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) {\n // It's possible that even though the ratio is reported as 1, the\n // element is not actually fully within the IntersectionObserver's root\n // area anymore. This can happen under performance constraints. This may\n // be a bug in the browser's IntersectionObserver implementation. To\n // work around this, we compare the element's bounding rect now with\n // what it was at the time we created the IntersectionObserver. If they\n // are not equal then the element moved, so we refresh.\n refresh();\n }\n isFirstUpdate = false;\n }\n\n // Older browsers don't support a `document` as the root and will throw an\n // error.\n try {\n io = new IntersectionObserver(handleObserve, {\n ...options,\n // Handle <iframe>s\n root: root.ownerDocument\n });\n } catch (_e) {\n io = new IntersectionObserver(handleObserve, options);\n }\n io.observe(element);\n }\n refresh(true);\n return cleanup;\n}\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * Should only be called when the floating element is mounted on the DOM or\n * visible on the screen.\n * @returns cleanup function that should be invoked when the floating element is\n * removed from the DOM or hidden from the screen.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n if (options === void 0) {\n options = {};\n }\n const {\n ancestorScroll = true,\n ancestorResize = true,\n elementResize = typeof ResizeObserver === 'function',\n layoutShift = typeof IntersectionObserver === 'function',\n animationFrame = false\n } = options;\n const referenceEl = unwrapElement(reference);\n const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...getOverflowAncestors(floating)] : [];\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.addEventListener('scroll', update, {\n passive: true\n });\n ancestorResize && ancestor.addEventListener('resize', update);\n });\n const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;\n let reobserveFrame = -1;\n let resizeObserver = null;\n if (elementResize) {\n resizeObserver = new ResizeObserver(_ref => {\n let [firstEntry] = _ref;\n if (firstEntry && firstEntry.target === referenceEl && resizeObserver) {\n // Prevent update loops when using the `size` middleware.\n // https://github.com/floating-ui/floating-ui/issues/1740\n resizeObserver.unobserve(floating);\n cancelAnimationFrame(reobserveFrame);\n reobserveFrame = requestAnimationFrame(() => {\n var _resizeObserver;\n (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating);\n });\n }\n update();\n });\n if (referenceEl && !animationFrame) {\n resizeObserver.observe(referenceEl);\n }\n resizeObserver.observe(floating);\n }\n let frameId;\n let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n if (animationFrame) {\n frameLoop();\n }\n function frameLoop() {\n const nextRefRect = getBoundingClientRect(reference);\n if (prevRefRect && !rectsAreEqual(prevRefRect, nextRefRect)) {\n update();\n }\n prevRefRect = nextRefRect;\n frameId = requestAnimationFrame(frameLoop);\n }\n update();\n return () => {\n var _resizeObserver2;\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.removeEventListener('scroll', update);\n ancestorResize && ancestor.removeEventListener('resize', update);\n });\n cleanupIo == null || cleanupIo();\n (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect();\n resizeObserver = null;\n if (animationFrame) {\n cancelAnimationFrame(frameId);\n }\n };\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nconst detectOverflow = detectOverflow$1;\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = offset$1;\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = autoPlacement$1;\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = shift$1;\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = flip$1;\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = size$1;\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = hide$1;\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = arrow$1;\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = inline$1;\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = limitShift$1;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n */\nconst computePosition = (reference, floating, options) => {\n // This caches the expensive `getClippingElementAncestors` function so that\n // multiple lifecycle resets re-use the same result. It only lives for a\n // single call. If other functions become expensive, we can add them as well.\n const cache = new Map();\n const mergedOptions = {\n platform,\n ...options\n };\n const platformWithCache = {\n ...mergedOptions.platform,\n _c: cache\n };\n return computePosition$1(reference, floating, {\n ...mergedOptions,\n platform: platformWithCache\n });\n};\n\nexport { arrow, autoPlacement, autoUpdate, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, platform, shift, size };\n","import { computePosition, arrow as arrow$2, autoPlacement as autoPlacement$1, flip as flip$1, hide as hide$1, inline as inline$1, limitShift as limitShift$1, offset as offset$1, shift as shift$1, size as size$1 } from '@floating-ui/dom';\nexport { autoUpdate, computePosition, detectOverflow, getOverflowAncestors, platform } from '@floating-ui/dom';\nimport * as React from 'react';\nimport { useLayoutEffect } from 'react';\nimport * as ReactDOM from 'react-dom';\n\nvar isClient = typeof document !== 'undefined';\n\nvar noop = function noop() {};\nvar index = isClient ? useLayoutEffect : noop;\n\n// Fork of `fast-deep-equal` that only does the comparisons we need and compares\n// functions\nfunction deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n if (typeof a !== typeof b) {\n return false;\n }\n if (typeof a === 'function' && a.toString() === b.toString()) {\n return true;\n }\n let length;\n let i;\n let keys;\n if (a && b && typeof a === 'object') {\n if (Array.isArray(a)) {\n length = a.length;\n if (length !== b.length) return false;\n for (i = length; i-- !== 0;) {\n if (!deepEqual(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) {\n return false;\n }\n for (i = length; i-- !== 0;) {\n if (!{}.hasOwnProperty.call(b, keys[i])) {\n return false;\n }\n }\n for (i = length; i-- !== 0;) {\n const key = keys[i];\n if (key === '_owner' && a.$$typeof) {\n continue;\n }\n if (!deepEqual(a[key], b[key])) {\n return false;\n }\n }\n return true;\n }\n return a !== a && b !== b;\n}\n\nfunction getDPR(element) {\n if (typeof window === 'undefined') {\n return 1;\n }\n const win = element.ownerDocument.defaultView || window;\n return win.devicePixelRatio || 1;\n}\n\nfunction roundByDPR(element, value) {\n const dpr = getDPR(element);\n return Math.round(value * dpr) / dpr;\n}\n\nfunction useLatestRef(value) {\n const ref = React.useRef(value);\n index(() => {\n ref.current = value;\n });\n return ref;\n}\n\n/**\n * Provides data to position a floating element.\n * @see https://floating-ui.com/docs/useFloating\n */\nfunction useFloating(options) {\n if (options === void 0) {\n options = {};\n }\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform,\n elements: {\n reference: externalReference,\n floating: externalFloating\n } = {},\n transform = true,\n whileElementsMounted,\n open\n } = options;\n const [data, setData] = React.useState({\n x: 0,\n y: 0,\n strategy,\n placement,\n middlewareData: {},\n isPositioned: false\n });\n const [latestMiddleware, setLatestMiddleware] = React.useState(middleware);\n if (!deepEqual(latestMiddleware, middleware)) {\n setLatestMiddleware(middleware);\n }\n const [_reference, _setReference] = React.useState(null);\n const [_floating, _setFloating] = React.useState(null);\n const setReference = React.useCallback(node => {\n if (node !== referenceRef.current) {\n referenceRef.current = node;\n _setReference(node);\n }\n }, []);\n const setFloating = React.useCallback(node => {\n if (node !== floatingRef.current) {\n floatingRef.current = node;\n _setFloating(node);\n }\n }, []);\n const referenceEl = externalReference || _reference;\n const floatingEl = externalFloating || _floating;\n const referenceRef = React.useRef(null);\n const floatingRef = React.useRef(null);\n const dataRef = React.useRef(data);\n const hasWhileElementsMounted = whileElementsMounted != null;\n const whileElementsMountedRef = useLatestRef(whileElementsMounted);\n const platformRef = useLatestRef(platform);\n const openRef = useLatestRef(open);\n const update = React.useCallback(() => {\n if (!referenceRef.current || !floatingRef.current) {\n return;\n }\n const config = {\n placement,\n strategy,\n middleware: latestMiddleware\n };\n if (platformRef.current) {\n config.platform = platformRef.current;\n }\n computePosition(referenceRef.current, floatingRef.current, config).then(data => {\n const fullData = {\n ...data,\n // The floating element's position may be recomputed while it's closed\n // but still mounted (such as when transitioning out). To ensure\n // `isPositioned` will be `false` initially on the next open, avoid\n // setting it to `true` when `open === false` (must be specified).\n isPositioned: openRef.current !== false\n };\n if (isMountedRef.current && !deepEqual(dataRef.current, fullData)) {\n dataRef.current = fullData;\n ReactDOM.flushSync(() => {\n setData(fullData);\n });\n }\n });\n }, [latestMiddleware, placement, strategy, platformRef, openRef]);\n index(() => {\n if (open === false && dataRef.current.isPositioned) {\n dataRef.current.isPositioned = false;\n setData(data => ({\n ...data,\n isPositioned: false\n }));\n }\n }, [open]);\n const isMountedRef = React.useRef(false);\n index(() => {\n isMountedRef.current = true;\n return () => {\n isMountedRef.current = false;\n };\n }, []);\n index(() => {\n if (referenceEl) referenceRef.current = referenceEl;\n if (floatingEl) floatingRef.current = floatingEl;\n if (referenceEl && floatingEl) {\n if (whileElementsMountedRef.current) {\n return whileElementsMountedRef.current(referenceEl, floatingEl, update);\n }\n update();\n }\n }, [referenceEl, floatingEl, update, whileElementsMountedRef, hasWhileElementsMounted]);\n const refs = React.useMemo(() => ({\n reference: referenceRef,\n floating: floatingRef,\n setReference,\n setFloating\n }), [setReference, setFloating]);\n const elements = React.useMemo(() => ({\n reference: referenceEl,\n floating: floatingEl\n }), [referenceEl, floatingEl]);\n const floatingStyles = React.useMemo(() => {\n const initialStyles = {\n position: strategy,\n left: 0,\n top: 0\n };\n if (!elements.floating) {\n return initialStyles;\n }\n const x = roundByDPR(elements.floating, data.x);\n const y = roundByDPR(elements.floating, data.y);\n if (transform) {\n return {\n ...initialStyles,\n transform: \"translate(\" + x + \"px, \" + y + \"px)\",\n ...(getDPR(elements.floating) >= 1.5 && {\n willChange: 'transform'\n })\n };\n }\n return {\n position: strategy,\n left: x,\n top: y\n };\n }, [strategy, transform, elements.floating, data.x, data.y]);\n return React.useMemo(() => ({\n ...data,\n update,\n refs,\n elements,\n floatingStyles\n }), [data, update, refs, elements, floatingStyles]);\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * This wraps the core `arrow` middleware to allow React refs as the element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow$1 = options => {\n function isRef(value) {\n return {}.hasOwnProperty.call(value, 'current');\n }\n return {\n name: 'arrow',\n options,\n fn(state) {\n const {\n element,\n padding\n } = typeof options === 'function' ? options(state) : options;\n if (element && isRef(element)) {\n if (element.current != null) {\n return arrow$2({\n element: element.current,\n padding\n }).fn(state);\n }\n return {};\n }\n if (element) {\n return arrow$2({\n element,\n padding\n }).fn(state);\n }\n return {};\n }\n };\n};\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = (options, deps) => ({\n ...offset$1(options),\n options: [options, deps]\n});\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = (options, deps) => ({\n ...shift$1(options),\n options: [options, deps]\n});\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = (options, deps) => ({\n ...limitShift$1(options),\n options: [options, deps]\n});\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = (options, deps) => ({\n ...flip$1(options),\n options: [options, deps]\n});\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = (options, deps) => ({\n ...size$1(options),\n options: [options, deps]\n});\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = (options, deps) => ({\n ...autoPlacement$1(options),\n options: [options, deps]\n});\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = (options, deps) => ({\n ...hide$1(options),\n options: [options, deps]\n});\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = (options, deps) => ({\n ...inline$1(options),\n options: [options, deps]\n});\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * This wraps the core `arrow` middleware to allow React refs as the element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = (options, deps) => ({\n ...arrow$1(options),\n options: [options, deps]\n});\n\nexport { arrow, autoPlacement, flip, hide, inline, limitShift, offset, shift, size, useFloating };\n","// src/slot.tsx\nimport * as React from \"react\";\nimport { composeRefs } from \"@radix-ui/react-compose-refs\";\nimport { Fragment as Fragment2, jsx } from \"react/jsx-runtime\";\n// @__NO_SIDE_EFFECTS__\nfunction createSlot(ownerName) {\n const SlotClone = /* @__PURE__ */ createSlotClone(ownerName);\n const Slot2 = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n const childrenArray = React.Children.toArray(children);\n const slottable = childrenArray.find(isSlottable);\n if (slottable) {\n const newElement = slottable.props.children;\n const newChildren = childrenArray.map((child) => {\n if (child === slottable) {\n if (React.Children.count(newElement) > 1) return React.Children.only(null);\n return React.isValidElement(newElement) ? newElement.props.children : null;\n } else {\n return child;\n }\n });\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children: React.isValidElement(newElement) ? React.cloneElement(newElement, void 0, newChildren) : null });\n }\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children });\n });\n Slot2.displayName = `${ownerName}.Slot`;\n return Slot2;\n}\nvar Slot = /* @__PURE__ */ createSlot(\"Slot\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlotClone(ownerName) {\n const SlotClone = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n if (React.isValidElement(children)) {\n const childrenRef = getElementRef(children);\n const props2 = mergeProps(slotProps, children.props);\n if (children.type !== React.Fragment) {\n props2.ref = forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef;\n }\n return React.cloneElement(children, props2);\n }\n return React.Children.count(children) > 1 ? React.Children.only(null) : null;\n });\n SlotClone.displayName = `${ownerName}.SlotClone`;\n return SlotClone;\n}\nvar SLOTTABLE_IDENTIFIER = Symbol(\"radix.slottable\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlottable(ownerName) {\n const Slottable2 = ({ children }) => {\n return /* @__PURE__ */ jsx(Fragment2, { children });\n };\n Slottable2.displayName = `${ownerName}.Slottable`;\n Slottable2.__radixId = SLOTTABLE_IDENTIFIER;\n return Slottable2;\n}\nvar Slottable = /* @__PURE__ */ createSlottable(\"Slottable\");\nfunction isSlottable(child) {\n return React.isValidElement(child) && typeof child.type === \"function\" && \"__radixId\" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;\n}\nfunction mergeProps(slotProps, childProps) {\n const overrideProps = { ...childProps };\n for (const propName in childProps) {\n const slotPropValue = slotProps[propName];\n const childPropValue = childProps[propName];\n const isHandler = /^on[A-Z]/.test(propName);\n if (isHandler) {\n if (slotPropValue && childPropValue) {\n overrideProps[propName] = (...args) => {\n const result = childPropValue(...args);\n slotPropValue(...args);\n return result;\n };\n } else if (slotPropValue) {\n overrideProps[propName] = slotPropValue;\n }\n } else if (propName === \"style\") {\n overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n } else if (propName === \"className\") {\n overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(\" \");\n }\n }\n return { ...slotProps, ...overrideProps };\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nexport {\n Slot as Root,\n Slot,\n Slottable,\n createSlot,\n createSlottable\n};\n//# sourceMappingURL=index.mjs.map\n","// src/primitive.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NODES = [\n \"a\",\n \"button\",\n \"div\",\n \"form\",\n \"h2\",\n \"h3\",\n \"img\",\n \"input\",\n \"label\",\n \"li\",\n \"nav\",\n \"ol\",\n \"p\",\n \"select\",\n \"span\",\n \"svg\",\n \"ul\"\n];\nvar Primitive = NODES.reduce((primitive, node) => {\n const Slot = createSlot(`Primitive.${node}`);\n const Node = React.forwardRef((props, forwardedRef) => {\n const { asChild, ...primitiveProps } = props;\n const Comp = asChild ? Slot : node;\n if (typeof window !== \"undefined\") {\n window[Symbol.for(\"radix-ui\")] = true;\n }\n return /* @__PURE__ */ jsx(Comp, { ...primitiveProps, ref: forwardedRef });\n });\n Node.displayName = `Primitive.${node}`;\n return { ...primitive, [node]: Node };\n}, {});\nfunction dispatchDiscreteCustomEvent(target, event) {\n if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\nvar Root = Primitive;\nexport {\n Primitive,\n Root,\n dispatchDiscreteCustomEvent\n};\n//# sourceMappingURL=index.mjs.map\n","// src/arrow.tsx\nimport * as React from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NAME = \"Arrow\";\nvar Arrow = React.forwardRef((props, forwardedRef) => {\n const { children, width = 10, height = 5, ...arrowProps } = props;\n return /* @__PURE__ */ jsx(\n Primitive.svg,\n {\n ...arrowProps,\n ref: forwardedRef,\n width,\n height,\n viewBox: \"0 0 30 10\",\n preserveAspectRatio: \"none\",\n children: props.asChild ? children : /* @__PURE__ */ jsx(\"polygon\", { points: \"0,0 30,0 15,10\" })\n }\n );\n});\nArrow.displayName = NAME;\nvar Root = Arrow;\nexport {\n Arrow,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","// src/slot.tsx\nimport * as React from \"react\";\nimport { composeRefs } from \"@radix-ui/react-compose-refs\";\nimport { Fragment as Fragment2, jsx } from \"react/jsx-runtime\";\n// @__NO_SIDE_EFFECTS__\nfunction createSlot(ownerName) {\n const SlotClone = /* @__PURE__ */ createSlotClone(ownerName);\n const Slot2 = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n const childrenArray = React.Children.toArray(children);\n const slottable = childrenArray.find(isSlottable);\n if (slottable) {\n const newElement = slottable.props.children;\n const newChildren = childrenArray.map((child) => {\n if (child === slottable) {\n if (React.Children.count(newElement) > 1) return React.Children.only(null);\n return React.isValidElement(newElement) ? newElement.props.children : null;\n } else {\n return child;\n }\n });\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children: React.isValidElement(newElement) ? React.cloneElement(newElement, void 0, newChildren) : null });\n }\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children });\n });\n Slot2.displayName = `${ownerName}.Slot`;\n return Slot2;\n}\nvar Slot = /* @__PURE__ */ createSlot(\"Slot\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlotClone(ownerName) {\n const SlotClone = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n if (React.isValidElement(children)) {\n const childrenRef = getElementRef(children);\n const props2 = mergeProps(slotProps, children.props);\n if (children.type !== React.Fragment) {\n props2.ref = forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef;\n }\n return React.cloneElement(children, props2);\n }\n return React.Children.count(children) > 1 ? React.Children.only(null) : null;\n });\n SlotClone.displayName = `${ownerName}.SlotClone`;\n return SlotClone;\n}\nvar SLOTTABLE_IDENTIFIER = Symbol(\"radix.slottable\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlottable(ownerName) {\n const Slottable2 = ({ children }) => {\n return /* @__PURE__ */ jsx(Fragment2, { children });\n };\n Slottable2.displayName = `${ownerName}.Slottable`;\n Slottable2.__radixId = SLOTTABLE_IDENTIFIER;\n return Slottable2;\n}\nvar Slottable = /* @__PURE__ */ createSlottable(\"Slottable\");\nfunction isSlottable(child) {\n return React.isValidElement(child) && typeof child.type === \"function\" && \"__radixId\" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;\n}\nfunction mergeProps(slotProps, childProps) {\n const overrideProps = { ...childProps };\n for (const propName in childProps) {\n const slotPropValue = slotProps[propName];\n const childPropValue = childProps[propName];\n const isHandler = /^on[A-Z]/.test(propName);\n if (isHandler) {\n if (slotPropValue && childPropValue) {\n overrideProps[propName] = (...args) => {\n const result = childPropValue(...args);\n slotPropValue(...args);\n return result;\n };\n } else if (slotPropValue) {\n overrideProps[propName] = slotPropValue;\n }\n } else if (propName === \"style\") {\n overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n } else if (propName === \"className\") {\n overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(\" \");\n }\n }\n return { ...slotProps, ...overrideProps };\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nexport {\n Slot as Root,\n Slot,\n Slottable,\n createSlot,\n createSlottable\n};\n//# sourceMappingURL=index.mjs.map\n","// src/primitive.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NODES = [\n \"a\",\n \"button\",\n \"div\",\n \"form\",\n \"h2\",\n \"h3\",\n \"img\",\n \"input\",\n \"label\",\n \"li\",\n \"nav\",\n \"ol\",\n \"p\",\n \"select\",\n \"span\",\n \"svg\",\n \"ul\"\n];\nvar Primitive = NODES.reduce((primitive, node) => {\n const Slot = createSlot(`Primitive.${node}`);\n const Node = React.forwardRef((props, forwardedRef) => {\n const { asChild, ...primitiveProps } = props;\n const Comp = asChild ? Slot : node;\n if (typeof window !== \"undefined\") {\n window[Symbol.for(\"radix-ui\")] = true;\n }\n return /* @__PURE__ */ jsx(Comp, { ...primitiveProps, ref: forwardedRef });\n });\n Node.displayName = `Primitive.${node}`;\n return { ...primitive, [node]: Node };\n}, {});\nfunction dispatchDiscreteCustomEvent(target, event) {\n if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\nvar Root = Primitive;\nexport {\n Primitive,\n Root,\n dispatchDiscreteCustomEvent\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-size/src/use-size.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nfunction useSize(element) {\n const [size, setSize] = React.useState(void 0);\n useLayoutEffect(() => {\n if (element) {\n setSize({ width: element.offsetWidth, height: element.offsetHeight });\n const resizeObserver = new ResizeObserver((entries) => {\n if (!Array.isArray(entries)) {\n return;\n }\n if (!entries.length) {\n return;\n }\n const entry = entries[0];\n let width;\n let height;\n if (\"borderBoxSize\" in entry) {\n const borderSizeEntry = entry[\"borderBoxSize\"];\n const borderSize = Array.isArray(borderSizeEntry) ? borderSizeEntry[0] : borderSizeEntry;\n width = borderSize[\"inlineSize\"];\n height = borderSize[\"blockSize\"];\n } else {\n width = element.offsetWidth;\n height = element.offsetHeight;\n }\n setSize({ width, height });\n });\n resizeObserver.observe(element, { box: \"border-box\" });\n return () => resizeObserver.unobserve(element);\n } else {\n setSize(void 0);\n }\n }, [element]);\n return size;\n}\nexport {\n useSize\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/popper.tsx\nimport * as React from \"react\";\nimport {\n useFloating,\n autoUpdate,\n offset,\n shift,\n limitShift,\n hide,\n arrow as floatingUIarrow,\n flip,\n size\n} from \"@floating-ui/react-dom\";\nimport * as ArrowPrimitive from \"@radix-ui/react-arrow\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { jsx } from \"react/jsx-runtime\";\nvar SIDE_OPTIONS = [\"top\", \"right\", \"bottom\", \"left\"];\nvar ALIGN_OPTIONS = [\"start\", \"center\", \"end\"];\nvar POPPER_NAME = \"Popper\";\nvar [createPopperContext, createPopperScope] = createContextScope(POPPER_NAME);\nvar [PopperProvider, usePopperContext] = createPopperContext(POPPER_NAME);\nvar Popper = (props) => {\n const { __scopePopper, children } = props;\n const [anchor, setAnchor] = React.useState(null);\n return /* @__PURE__ */ jsx(PopperProvider, { scope: __scopePopper, anchor, onAnchorChange: setAnchor, children });\n};\nPopper.displayName = POPPER_NAME;\nvar ANCHOR_NAME = \"PopperAnchor\";\nvar PopperAnchor = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopper, virtualRef, ...anchorProps } = props;\n const context = usePopperContext(ANCHOR_NAME, __scopePopper);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n React.useEffect(() => {\n context.onAnchorChange(virtualRef?.current || ref.current);\n });\n return virtualRef ? null : /* @__PURE__ */ jsx(Primitive.div, { ...anchorProps, ref: composedRefs });\n }\n);\nPopperAnchor.displayName = ANCHOR_NAME;\nvar CONTENT_NAME = \"PopperContent\";\nvar [PopperContentProvider, useContentContext] = createPopperContext(CONTENT_NAME);\nvar PopperContent = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopePopper,\n side = \"bottom\",\n sideOffset = 0,\n align = \"center\",\n alignOffset = 0,\n arrowPadding = 0,\n avoidCollisions = true,\n collisionBoundary = [],\n collisionPadding: collisionPaddingProp = 0,\n sticky = \"partial\",\n hideWhenDetached = false,\n updatePositionStrategy = \"optimized\",\n onPlaced,\n ...contentProps\n } = props;\n const context = usePopperContext(CONTENT_NAME, __scopePopper);\n const [content, setContent] = React.useState(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setContent(node));\n const [arrow, setArrow] = React.useState(null);\n const arrowSize = useSize(arrow);\n const arrowWidth = arrowSize?.width ?? 0;\n const arrowHeight = arrowSize?.height ?? 0;\n const desiredPlacement = side + (align !== \"center\" ? \"-\" + align : \"\");\n const collisionPadding = typeof collisionPaddingProp === \"number\" ? collisionPaddingProp : { top: 0, right: 0, bottom: 0, left: 0, ...collisionPaddingProp };\n const boundary = Array.isArray(collisionBoundary) ? collisionBoundary : [collisionBoundary];\n const hasExplicitBoundaries = boundary.length > 0;\n const detectOverflowOptions = {\n padding: collisionPadding,\n boundary: boundary.filter(isNotNull),\n // with `strategy: 'fixed'`, this is the only way to get it to respect boundaries\n altBoundary: hasExplicitBoundaries\n };\n const { refs, floatingStyles, placement, isPositioned, middlewareData } = useFloating({\n // default to `fixed` strategy so users don't have to pick and we also avoid focus scroll issues\n strategy: \"fixed\",\n placement: desiredPlacement,\n whileElementsMounted: (...args) => {\n const cleanup = autoUpdate(...args, {\n animationFrame: updatePositionStrategy === \"always\"\n });\n return cleanup;\n },\n elements: {\n reference: context.anchor\n },\n middleware: [\n offset({ mainAxis: sideOffset + arrowHeight, alignmentAxis: alignOffset }),\n avoidCollisions && shift({\n mainAxis: true,\n crossAxis: false,\n limiter: sticky === \"partial\" ? limitShift() : void 0,\n ...detectOverflowOptions\n }),\n avoidCollisions && flip({ ...detectOverflowOptions }),\n size({\n ...detectOverflowOptions,\n apply: ({ elements, rects, availableWidth, availableHeight }) => {\n const { width: anchorWidth, height: anchorHeight } = rects.reference;\n const contentStyle = elements.floating.style;\n contentStyle.setProperty(\"--radix-popper-available-width\", `${availableWidth}px`);\n contentStyle.setProperty(\"--radix-popper-available-height\", `${availableHeight}px`);\n contentStyle.setProperty(\"--radix-popper-anchor-width\", `${anchorWidth}px`);\n contentStyle.setProperty(\"--radix-popper-anchor-height\", `${anchorHeight}px`);\n }\n }),\n arrow && floatingUIarrow({ element: arrow, padding: arrowPadding }),\n transformOrigin({ arrowWidth, arrowHeight }),\n hideWhenDetached && hide({ strategy: \"referenceHidden\", ...detectOverflowOptions })\n ]\n });\n const [placedSide, placedAlign] = getSideAndAlignFromPlacement(placement);\n const handlePlaced = useCallbackRef(onPlaced);\n useLayoutEffect(() => {\n if (isPositioned) {\n handlePlaced?.();\n }\n }, [isPositioned, handlePlaced]);\n const arrowX = middlewareData.arrow?.x;\n const arrowY = middlewareData.arrow?.y;\n const cannotCenterArrow = middlewareData.arrow?.centerOffset !== 0;\n const [contentZIndex, setContentZIndex] = React.useState();\n useLayoutEffect(() => {\n if (content) setContentZIndex(window.getComputedStyle(content).zIndex);\n }, [content]);\n return /* @__PURE__ */ jsx(\n \"div\",\n {\n ref: refs.setFloating,\n \"data-radix-popper-content-wrapper\": \"\",\n style: {\n ...floatingStyles,\n transform: isPositioned ? floatingStyles.transform : \"translate(0, -200%)\",\n // keep off the page when measuring\n minWidth: \"max-content\",\n zIndex: contentZIndex,\n [\"--radix-popper-transform-origin\"]: [\n middlewareData.transformOrigin?.x,\n middlewareData.transformOrigin?.y\n ].join(\" \"),\n // hide the content if using the hide middleware and should be hidden\n // set visibility to hidden and disable pointer events so the UI behaves\n // as if the PopperContent isn't there at all\n ...middlewareData.hide?.referenceHidden && {\n visibility: \"hidden\",\n pointerEvents: \"none\"\n }\n },\n dir: props.dir,\n children: /* @__PURE__ */ jsx(\n PopperContentProvider,\n {\n scope: __scopePopper,\n placedSide,\n onArrowChange: setArrow,\n arrowX,\n arrowY,\n shouldHideArrow: cannotCenterArrow,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-side\": placedSide,\n \"data-align\": placedAlign,\n ...contentProps,\n ref: composedRefs,\n style: {\n ...contentProps.style,\n // if the PopperContent hasn't been placed yet (not all measurements done)\n // we prevent animations so that users's animation don't kick in too early referring wrong sides\n animation: !isPositioned ? \"none\" : void 0\n }\n }\n )\n }\n )\n }\n );\n }\n);\nPopperContent.displayName = CONTENT_NAME;\nvar ARROW_NAME = \"PopperArrow\";\nvar OPPOSITE_SIDE = {\n top: \"bottom\",\n right: \"left\",\n bottom: \"top\",\n left: \"right\"\n};\nvar PopperArrow = React.forwardRef(function PopperArrow2(props, forwardedRef) {\n const { __scopePopper, ...arrowProps } = props;\n const contentContext = useContentContext(ARROW_NAME, __scopePopper);\n const baseSide = OPPOSITE_SIDE[contentContext.placedSide];\n return (\n // we have to use an extra wrapper because `ResizeObserver` (used by `useSize`)\n // doesn't report size as we'd expect on SVG elements.\n // it reports their bounding box which is effectively the largest path inside the SVG.\n /* @__PURE__ */ jsx(\n \"span\",\n {\n ref: contentContext.onArrowChange,\n style: {\n position: \"absolute\",\n left: contentContext.arrowX,\n top: contentContext.arrowY,\n [baseSide]: 0,\n transformOrigin: {\n top: \"\",\n right: \"0 0\",\n bottom: \"center 0\",\n left: \"100% 0\"\n }[contentContext.placedSide],\n transform: {\n top: \"translateY(100%)\",\n right: \"translateY(50%) rotate(90deg) translateX(-50%)\",\n bottom: `rotate(180deg)`,\n left: \"translateY(50%) rotate(-90deg) translateX(50%)\"\n }[contentContext.placedSide],\n visibility: contentContext.shouldHideArrow ? \"hidden\" : void 0\n },\n children: /* @__PURE__ */ jsx(\n ArrowPrimitive.Root,\n {\n ...arrowProps,\n ref: forwardedRef,\n style: {\n ...arrowProps.style,\n // ensures the element can be measured correctly (mostly for if SVG)\n display: \"block\"\n }\n }\n )\n }\n )\n );\n});\nPopperArrow.displayName = ARROW_NAME;\nfunction isNotNull(value) {\n return value !== null;\n}\nvar transformOrigin = (options) => ({\n name: \"transformOrigin\",\n options,\n fn(data) {\n const { placement, rects, middlewareData } = data;\n const cannotCenterArrow = middlewareData.arrow?.centerOffset !== 0;\n const isArrowHidden = cannotCenterArrow;\n const arrowWidth = isArrowHidden ? 0 : options.arrowWidth;\n const arrowHeight = isArrowHidden ? 0 : options.arrowHeight;\n const [placedSide, placedAlign] = getSideAndAlignFromPlacement(placement);\n const noArrowAlign = { start: \"0%\", center: \"50%\", end: \"100%\" }[placedAlign];\n const arrowXCenter = (middlewareData.arrow?.x ?? 0) + arrowWidth / 2;\n const arrowYCenter = (middlewareData.arrow?.y ?? 0) + arrowHeight / 2;\n let x = \"\";\n let y = \"\";\n if (placedSide === \"bottom\") {\n x = isArrowHidden ? noArrowAlign : `${arrowXCenter}px`;\n y = `${-arrowHeight}px`;\n } else if (placedSide === \"top\") {\n x = isArrowHidden ? noArrowAlign : `${arrowXCenter}px`;\n y = `${rects.floating.height + arrowHeight}px`;\n } else if (placedSide === \"right\") {\n x = `${-arrowHeight}px`;\n y = isArrowHidden ? noArrowAlign : `${arrowYCenter}px`;\n } else if (placedSide === \"left\") {\n x = `${rects.floating.width + arrowHeight}px`;\n y = isArrowHidden ? noArrowAlign : `${arrowYCenter}px`;\n }\n return { data: { x, y } };\n }\n});\nfunction getSideAndAlignFromPlacement(placement) {\n const [side, align = \"center\"] = placement.split(\"-\");\n return [side, align];\n}\nvar Root2 = Popper;\nvar Anchor = PopperAnchor;\nvar Content = PopperContent;\nvar Arrow = PopperArrow;\nexport {\n ALIGN_OPTIONS,\n Anchor,\n Arrow,\n Content,\n Popper,\n PopperAnchor,\n PopperArrow,\n PopperContent,\n Root2 as Root,\n SIDE_OPTIONS,\n createPopperScope\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/presence.tsx\nimport * as React2 from \"react\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\n\n// src/use-state-machine.tsx\nimport * as React from \"react\";\nfunction useStateMachine(initialState, machine) {\n return React.useReducer((state, event) => {\n const nextState = machine[state][event];\n return nextState ?? state;\n }, initialState);\n}\n\n// src/presence.tsx\nvar Presence = (props) => {\n const { present, children } = props;\n const presence = usePresence(present);\n const child = typeof children === \"function\" ? children({ present: presence.isPresent }) : React2.Children.only(children);\n const ref = useComposedRefs(presence.ref, getElementRef(child));\n const forceMount = typeof children === \"function\";\n return forceMount || presence.isPresent ? React2.cloneElement(child, { ref }) : null;\n};\nPresence.displayName = \"Presence\";\nfunction usePresence(present) {\n const [node, setNode] = React2.useState();\n const stylesRef = React2.useRef(null);\n const prevPresentRef = React2.useRef(present);\n const prevAnimationNameRef = React2.useRef(\"none\");\n const initialState = present ? \"mounted\" : \"unmounted\";\n const [state, send] = useStateMachine(initialState, {\n mounted: {\n UNMOUNT: \"unmounted\",\n ANIMATION_OUT: \"unmountSuspended\"\n },\n unmountSuspended: {\n MOUNT: \"mounted\",\n ANIMATION_END: \"unmounted\"\n },\n unmounted: {\n MOUNT: \"mounted\"\n }\n });\n React2.useEffect(() => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n prevAnimationNameRef.current = state === \"mounted\" ? currentAnimationName : \"none\";\n }, [state]);\n useLayoutEffect(() => {\n const styles = stylesRef.current;\n const wasPresent = prevPresentRef.current;\n const hasPresentChanged = wasPresent !== present;\n if (hasPresentChanged) {\n const prevAnimationName = prevAnimationNameRef.current;\n const currentAnimationName = getAnimationName(styles);\n if (present) {\n send(\"MOUNT\");\n } else if (currentAnimationName === \"none\" || styles?.display === \"none\") {\n send(\"UNMOUNT\");\n } else {\n const isAnimating = prevAnimationName !== currentAnimationName;\n if (wasPresent && isAnimating) {\n send(\"ANIMATION_OUT\");\n } else {\n send(\"UNMOUNT\");\n }\n }\n prevPresentRef.current = present;\n }\n }, [present, send]);\n useLayoutEffect(() => {\n if (node) {\n let timeoutId;\n const ownerWindow = node.ownerDocument.defaultView ?? window;\n const handleAnimationEnd = (event) => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n const isCurrentAnimation = currentAnimationName.includes(event.animationName);\n if (event.target === node && isCurrentAnimation) {\n send(\"ANIMATION_END\");\n if (!prevPresentRef.current) {\n const currentFillMode = node.style.animationFillMode;\n node.style.animationFillMode = \"forwards\";\n timeoutId = ownerWindow.setTimeout(() => {\n if (node.style.animationFillMode === \"forwards\") {\n node.style.animationFillMode = currentFillMode;\n }\n });\n }\n }\n };\n const handleAnimationStart = (event) => {\n if (event.target === node) {\n prevAnimationNameRef.current = getAnimationName(stylesRef.current);\n }\n };\n node.addEventListener(\"animationstart\", handleAnimationStart);\n node.addEventListener(\"animationcancel\", handleAnimationEnd);\n node.addEventListener(\"animationend\", handleAnimationEnd);\n return () => {\n ownerWindow.clearTimeout(timeoutId);\n node.removeEventListener(\"animationstart\", handleAnimationStart);\n node.removeEventListener(\"animationcancel\", handleAnimationEnd);\n node.removeEventListener(\"animationend\", handleAnimationEnd);\n };\n } else {\n send(\"ANIMATION_END\");\n }\n }, [node, send]);\n return {\n isPresent: [\"mounted\", \"unmountSuspended\"].includes(state),\n ref: React2.useCallback((node2) => {\n stylesRef.current = node2 ? getComputedStyle(node2) : null;\n setNode(node2);\n }, [])\n };\n}\nfunction getAnimationName(styles) {\n return styles?.animationName || \"none\";\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nvar Root = Presence;\nexport {\n Presence,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","// src/use-controllable-state.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nvar useInsertionEffect = React[\" useInsertionEffect \".trim().toString()] || useLayoutEffect;\nfunction useControllableState({\n prop,\n defaultProp,\n onChange = () => {\n },\n caller\n}) {\n const [uncontrolledProp, setUncontrolledProp, onChangeRef] = useUncontrolledState({\n defaultProp,\n onChange\n });\n const isControlled = prop !== void 0;\n const value = isControlled ? prop : uncontrolledProp;\n if (true) {\n const isControlledRef = React.useRef(prop !== void 0);\n React.useEffect(() => {\n const wasControlled = isControlledRef.current;\n if (wasControlled !== isControlled) {\n const from = wasControlled ? \"controlled\" : \"uncontrolled\";\n const to = isControlled ? \"controlled\" : \"uncontrolled\";\n console.warn(\n `${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`\n );\n }\n isControlledRef.current = isControlled;\n }, [isControlled, caller]);\n }\n const setValue = React.useCallback(\n (nextValue) => {\n if (isControlled) {\n const value2 = isFunction(nextValue) ? nextValue(prop) : nextValue;\n if (value2 !== prop) {\n onChangeRef.current?.(value2);\n }\n } else {\n setUncontrolledProp(nextValue);\n }\n },\n [isControlled, prop, setUncontrolledProp, onChangeRef]\n );\n return [value, setValue];\n}\nfunction useUncontrolledState({\n defaultProp,\n onChange\n}) {\n const [value, setValue] = React.useState(defaultProp);\n const prevValueRef = React.useRef(value);\n const onChangeRef = React.useRef(onChange);\n useInsertionEffect(() => {\n onChangeRef.current = onChange;\n }, [onChange]);\n React.useEffect(() => {\n if (prevValueRef.current !== value) {\n onChangeRef.current?.(value);\n prevValueRef.current = value;\n }\n }, [value, prevValueRef]);\n return [value, setValue, onChangeRef];\n}\nfunction isFunction(value) {\n return typeof value === \"function\";\n}\n\n// src/use-controllable-state-reducer.tsx\nimport * as React2 from \"react\";\nimport { useEffectEvent } from \"@radix-ui/react-use-effect-event\";\nvar SYNC_STATE = Symbol(\"RADIX:SYNC_STATE\");\nfunction useControllableStateReducer(reducer, userArgs, initialArg, init) {\n const { prop: controlledState, defaultProp, onChange: onChangeProp, caller } = userArgs;\n const isControlled = controlledState !== void 0;\n const onChange = useEffectEvent(onChangeProp);\n if (true) {\n const isControlledRef = React2.useRef(controlledState !== void 0);\n React2.useEffect(() => {\n const wasControlled = isControlledRef.current;\n if (wasControlled !== isControlled) {\n const from = wasControlled ? \"controlled\" : \"uncontrolled\";\n const to = isControlled ? \"controlled\" : \"uncontrolled\";\n console.warn(\n `${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`\n );\n }\n isControlledRef.current = isControlled;\n }, [isControlled, caller]);\n }\n const args = [{ ...initialArg, state: defaultProp }];\n if (init) {\n args.push(init);\n }\n const [internalState, dispatch] = React2.useReducer(\n (state2, action) => {\n if (action.type === SYNC_STATE) {\n return { ...state2, state: action.state };\n }\n const next = reducer(state2, action);\n if (isControlled && !Object.is(next.state, state2.state)) {\n onChange(next.state);\n }\n return next;\n },\n ...args\n );\n const uncontrolledState = internalState.state;\n const prevValueRef = React2.useRef(uncontrolledState);\n React2.useEffect(() => {\n if (prevValueRef.current !== uncontrolledState) {\n prevValueRef.current = uncontrolledState;\n if (!isControlled) {\n onChange(uncontrolledState);\n }\n }\n }, [onChange, uncontrolledState, prevValueRef, isControlled]);\n const state = React2.useMemo(() => {\n const isControlled2 = controlledState !== void 0;\n if (isControlled2) {\n return { ...internalState, state: controlledState };\n }\n return internalState;\n }, [internalState, controlledState]);\n React2.useEffect(() => {\n if (isControlled && !Object.is(controlledState, internalState.state)) {\n dispatch({ type: SYNC_STATE, state: controlledState });\n }\n }, [controlledState, internalState.state, isControlled]);\n return [state, dispatch];\n}\nexport {\n useControllableState,\n useControllableStateReducer\n};\n//# sourceMappingURL=index.mjs.map\n","// src/visually-hidden.tsx\nimport * as React from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar VISUALLY_HIDDEN_STYLES = Object.freeze({\n // See: https://github.com/twbs/bootstrap/blob/main/scss/mixins/_visually-hidden.scss\n position: \"absolute\",\n border: 0,\n width: 1,\n height: 1,\n padding: 0,\n margin: -1,\n overflow: \"hidden\",\n clip: \"rect(0, 0, 0, 0)\",\n whiteSpace: \"nowrap\",\n wordWrap: \"normal\"\n});\nvar NAME = \"VisuallyHidden\";\nvar VisuallyHidden = React.forwardRef(\n (props, forwardedRef) => {\n return /* @__PURE__ */ jsx(\n Primitive.span,\n {\n ...props,\n ref: forwardedRef,\n style: { ...VISUALLY_HIDDEN_STYLES, ...props.style }\n }\n );\n }\n);\nVisuallyHidden.displayName = NAME;\nvar Root = VisuallyHidden;\nexport {\n Root,\n VISUALLY_HIDDEN_STYLES,\n VisuallyHidden\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/tooltip.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { useId } from \"@radix-ui/react-id\";\nimport * as PopperPrimitive from \"@radix-ui/react-popper\";\nimport { createPopperScope } from \"@radix-ui/react-popper\";\nimport { Portal as PortalPrimitive } from \"@radix-ui/react-portal\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { createSlottable } from \"@radix-ui/react-slot\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport * as VisuallyHiddenPrimitive from \"@radix-ui/react-visually-hidden\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar [createTooltipContext, createTooltipScope] = createContextScope(\"Tooltip\", [\n createPopperScope\n]);\nvar usePopperScope = createPopperScope();\nvar PROVIDER_NAME = \"TooltipProvider\";\nvar DEFAULT_DELAY_DURATION = 700;\nvar TOOLTIP_OPEN = \"tooltip.open\";\nvar [TooltipProviderContextProvider, useTooltipProviderContext] = createTooltipContext(PROVIDER_NAME);\nvar TooltipProvider = (props) => {\n const {\n __scopeTooltip,\n delayDuration = DEFAULT_DELAY_DURATION,\n skipDelayDuration = 300,\n disableHoverableContent = false,\n children\n } = props;\n const isOpenDelayedRef = React.useRef(true);\n const isPointerInTransitRef = React.useRef(false);\n const skipDelayTimerRef = React.useRef(0);\n React.useEffect(() => {\n const skipDelayTimer = skipDelayTimerRef.current;\n return () => window.clearTimeout(skipDelayTimer);\n }, []);\n return /* @__PURE__ */ jsx(\n TooltipProviderContextProvider,\n {\n scope: __scopeTooltip,\n isOpenDelayedRef,\n delayDuration,\n onOpen: React.useCallback(() => {\n window.clearTimeout(skipDelayTimerRef.current);\n isOpenDelayedRef.current = false;\n }, []),\n onClose: React.useCallback(() => {\n window.clearTimeout(skipDelayTimerRef.current);\n skipDelayTimerRef.current = window.setTimeout(\n () => isOpenDelayedRef.current = true,\n skipDelayDuration\n );\n }, [skipDelayDuration]),\n isPointerInTransitRef,\n onPointerInTransitChange: React.useCallback((inTransit) => {\n isPointerInTransitRef.current = inTransit;\n }, []),\n disableHoverableContent,\n children\n }\n );\n};\nTooltipProvider.displayName = PROVIDER_NAME;\nvar TOOLTIP_NAME = \"Tooltip\";\nvar [TooltipContextProvider, useTooltipContext] = createTooltipContext(TOOLTIP_NAME);\nvar Tooltip = (props) => {\n const {\n __scopeTooltip,\n children,\n open: openProp,\n defaultOpen,\n onOpenChange,\n disableHoverableContent: disableHoverableContentProp,\n delayDuration: delayDurationProp\n } = props;\n const providerContext = useTooltipProviderContext(TOOLTIP_NAME, props.__scopeTooltip);\n const popperScope = usePopperScope(__scopeTooltip);\n const [trigger, setTrigger] = React.useState(null);\n const contentId = useId();\n const openTimerRef = React.useRef(0);\n const disableHoverableContent = disableHoverableContentProp ?? providerContext.disableHoverableContent;\n const delayDuration = delayDurationProp ?? providerContext.delayDuration;\n const wasOpenDelayedRef = React.useRef(false);\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen ?? false,\n onChange: (open2) => {\n if (open2) {\n providerContext.onOpen();\n document.dispatchEvent(new CustomEvent(TOOLTIP_OPEN));\n } else {\n providerContext.onClose();\n }\n onOpenChange?.(open2);\n },\n caller: TOOLTIP_NAME\n });\n const stateAttribute = React.useMemo(() => {\n return open ? wasOpenDelayedRef.current ? \"delayed-open\" : \"instant-open\" : \"closed\";\n }, [open]);\n const handleOpen = React.useCallback(() => {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = 0;\n wasOpenDelayedRef.current = false;\n setOpen(true);\n }, [setOpen]);\n const handleClose = React.useCallback(() => {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = 0;\n setOpen(false);\n }, [setOpen]);\n const handleDelayedOpen = React.useCallback(() => {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = window.setTimeout(() => {\n wasOpenDelayedRef.current = true;\n setOpen(true);\n openTimerRef.current = 0;\n }, delayDuration);\n }, [delayDuration, setOpen]);\n React.useEffect(() => {\n return () => {\n if (openTimerRef.current) {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = 0;\n }\n };\n }, []);\n return /* @__PURE__ */ jsx(PopperPrimitive.Root, { ...popperScope, children: /* @__PURE__ */ jsx(\n TooltipContextProvider,\n {\n scope: __scopeTooltip,\n contentId,\n open,\n stateAttribute,\n trigger,\n onTriggerChange: setTrigger,\n onTriggerEnter: React.useCallback(() => {\n if (providerContext.isOpenDelayedRef.current) handleDelayedOpen();\n else handleOpen();\n }, [providerContext.isOpenDelayedRef, handleDelayedOpen, handleOpen]),\n onTriggerLeave: React.useCallback(() => {\n if (disableHoverableContent) {\n handleClose();\n } else {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = 0;\n }\n }, [handleClose, disableHoverableContent]),\n onOpen: handleOpen,\n onClose: handleClose,\n disableHoverableContent,\n children\n }\n ) });\n};\nTooltip.displayName = TOOLTIP_NAME;\nvar TRIGGER_NAME = \"TooltipTrigger\";\nvar TooltipTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTooltip, ...triggerProps } = props;\n const context = useTooltipContext(TRIGGER_NAME, __scopeTooltip);\n const providerContext = useTooltipProviderContext(TRIGGER_NAME, __scopeTooltip);\n const popperScope = usePopperScope(__scopeTooltip);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref, context.onTriggerChange);\n const isPointerDownRef = React.useRef(false);\n const hasPointerMoveOpenedRef = React.useRef(false);\n const handlePointerUp = React.useCallback(() => isPointerDownRef.current = false, []);\n React.useEffect(() => {\n return () => document.removeEventListener(\"pointerup\", handlePointerUp);\n }, [handlePointerUp]);\n return /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { asChild: true, ...popperScope, children: /* @__PURE__ */ jsx(\n Primitive.button,\n {\n \"aria-describedby\": context.open ? context.contentId : void 0,\n \"data-state\": context.stateAttribute,\n ...triggerProps,\n ref: composedRefs,\n onPointerMove: composeEventHandlers(props.onPointerMove, (event) => {\n if (event.pointerType === \"touch\") return;\n if (!hasPointerMoveOpenedRef.current && !providerContext.isPointerInTransitRef.current) {\n context.onTriggerEnter();\n hasPointerMoveOpenedRef.current = true;\n }\n }),\n onPointerLeave: composeEventHandlers(props.onPointerLeave, () => {\n context.onTriggerLeave();\n hasPointerMoveOpenedRef.current = false;\n }),\n onPointerDown: composeEventHandlers(props.onPointerDown, () => {\n if (context.open) {\n context.onClose();\n }\n isPointerDownRef.current = true;\n document.addEventListener(\"pointerup\", handlePointerUp, { once: true });\n }),\n onFocus: composeEventHandlers(props.onFocus, () => {\n if (!isPointerDownRef.current) context.onOpen();\n }),\n onBlur: composeEventHandlers(props.onBlur, context.onClose),\n onClick: composeEventHandlers(props.onClick, context.onClose)\n }\n ) });\n }\n);\nTooltipTrigger.displayName = TRIGGER_NAME;\nvar PORTAL_NAME = \"TooltipPortal\";\nvar [PortalProvider, usePortalContext] = createTooltipContext(PORTAL_NAME, {\n forceMount: void 0\n});\nvar TooltipPortal = (props) => {\n const { __scopeTooltip, forceMount, children, container } = props;\n const context = useTooltipContext(PORTAL_NAME, __scopeTooltip);\n return /* @__PURE__ */ jsx(PortalProvider, { scope: __scopeTooltip, forceMount, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, container, children }) }) });\n};\nTooltipPortal.displayName = PORTAL_NAME;\nvar CONTENT_NAME = \"TooltipContent\";\nvar TooltipContent = React.forwardRef(\n (props, forwardedRef) => {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopeTooltip);\n const { forceMount = portalContext.forceMount, side = \"top\", ...contentProps } = props;\n const context = useTooltipContext(CONTENT_NAME, props.__scopeTooltip);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: context.disableHoverableContent ? /* @__PURE__ */ jsx(TooltipContentImpl, { side, ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsx(TooltipContentHoverable, { side, ...contentProps, ref: forwardedRef }) });\n }\n);\nvar TooltipContentHoverable = React.forwardRef((props, forwardedRef) => {\n const context = useTooltipContext(CONTENT_NAME, props.__scopeTooltip);\n const providerContext = useTooltipProviderContext(CONTENT_NAME, props.__scopeTooltip);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const [pointerGraceArea, setPointerGraceArea] = React.useState(null);\n const { trigger, onClose } = context;\n const content = ref.current;\n const { onPointerInTransitChange } = providerContext;\n const handleRemoveGraceArea = React.useCallback(() => {\n setPointerGraceArea(null);\n onPointerInTransitChange(false);\n }, [onPointerInTransitChange]);\n const handleCreateGraceArea = React.useCallback(\n (event, hoverTarget) => {\n const currentTarget = event.currentTarget;\n const exitPoint = { x: event.clientX, y: event.clientY };\n const exitSide = getExitSideFromRect(exitPoint, currentTarget.getBoundingClientRect());\n const paddedExitPoints = getPaddedExitPoints(exitPoint, exitSide);\n const hoverTargetPoints = getPointsFromRect(hoverTarget.getBoundingClientRect());\n const graceArea = getHull([...paddedExitPoints, ...hoverTargetPoints]);\n setPointerGraceArea(graceArea);\n onPointerInTransitChange(true);\n },\n [onPointerInTransitChange]\n );\n React.useEffect(() => {\n return () => handleRemoveGraceArea();\n }, [handleRemoveGraceArea]);\n React.useEffect(() => {\n if (trigger && content) {\n const handleTriggerLeave = (event) => handleCreateGraceArea(event, content);\n const handleContentLeave = (event) => handleCreateGraceArea(event, trigger);\n trigger.addEventListener(\"pointerleave\", handleTriggerLeave);\n content.addEventListener(\"pointerleave\", handleContentLeave);\n return () => {\n trigger.removeEventListener(\"pointerleave\", handleTriggerLeave);\n content.removeEventListener(\"pointerleave\", handleContentLeave);\n };\n }\n }, [trigger, content, handleCreateGraceArea, handleRemoveGraceArea]);\n React.useEffect(() => {\n if (pointerGraceArea) {\n const handleTrackPointerGrace = (event) => {\n const target = event.target;\n const pointerPosition = { x: event.clientX, y: event.clientY };\n const hasEnteredTarget = trigger?.contains(target) || content?.contains(target);\n const isPointerOutsideGraceArea = !isPointInPolygon(pointerPosition, pointerGraceArea);\n if (hasEnteredTarget) {\n handleRemoveGraceArea();\n } else if (isPointerOutsideGraceArea) {\n handleRemoveGraceArea();\n onClose();\n }\n };\n document.addEventListener(\"pointermove\", handleTrackPointerGrace);\n return () => document.removeEventListener(\"pointermove\", handleTrackPointerGrace);\n }\n }, [trigger, content, pointerGraceArea, onClose, handleRemoveGraceArea]);\n return /* @__PURE__ */ jsx(TooltipContentImpl, { ...props, ref: composedRefs });\n});\nvar [VisuallyHiddenContentContextProvider, useVisuallyHiddenContentContext] = createTooltipContext(TOOLTIP_NAME, { isInside: false });\nvar Slottable = createSlottable(\"TooltipContent\");\nvar TooltipContentImpl = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeTooltip,\n children,\n \"aria-label\": ariaLabel,\n onEscapeKeyDown,\n onPointerDownOutside,\n ...contentProps\n } = props;\n const context = useTooltipContext(CONTENT_NAME, __scopeTooltip);\n const popperScope = usePopperScope(__scopeTooltip);\n const { onClose } = context;\n React.useEffect(() => {\n document.addEventListener(TOOLTIP_OPEN, onClose);\n return () => document.removeEventListener(TOOLTIP_OPEN, onClose);\n }, [onClose]);\n React.useEffect(() => {\n if (context.trigger) {\n const handleScroll = (event) => {\n const target = event.target;\n if (target?.contains(context.trigger)) onClose();\n };\n window.addEventListener(\"scroll\", handleScroll, { capture: true });\n return () => window.removeEventListener(\"scroll\", handleScroll, { capture: true });\n }\n }, [context.trigger, onClose]);\n return /* @__PURE__ */ jsx(\n DismissableLayer,\n {\n asChild: true,\n disableOutsidePointerEvents: false,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside: (event) => event.preventDefault(),\n onDismiss: onClose,\n children: /* @__PURE__ */ jsxs(\n PopperPrimitive.Content,\n {\n \"data-state\": context.stateAttribute,\n ...popperScope,\n ...contentProps,\n ref: forwardedRef,\n style: {\n ...contentProps.style,\n // re-namespace exposed content custom properties\n ...{\n \"--radix-tooltip-content-transform-origin\": \"var(--radix-popper-transform-origin)\",\n \"--radix-tooltip-content-available-width\": \"var(--radix-popper-available-width)\",\n \"--radix-tooltip-content-available-height\": \"var(--radix-popper-available-height)\",\n \"--radix-tooltip-trigger-width\": \"var(--radix-popper-anchor-width)\",\n \"--radix-tooltip-trigger-height\": \"var(--radix-popper-anchor-height)\"\n }\n },\n children: [\n /* @__PURE__ */ jsx(Slottable, { children }),\n /* @__PURE__ */ jsx(VisuallyHiddenContentContextProvider, { scope: __scopeTooltip, isInside: true, children: /* @__PURE__ */ jsx(VisuallyHiddenPrimitive.Root, { id: context.contentId, role: \"tooltip\", children: ariaLabel || children }) })\n ]\n }\n )\n }\n );\n }\n);\nTooltipContent.displayName = CONTENT_NAME;\nvar ARROW_NAME = \"TooltipArrow\";\nvar TooltipArrow = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTooltip, ...arrowProps } = props;\n const popperScope = usePopperScope(__scopeTooltip);\n const visuallyHiddenContentContext = useVisuallyHiddenContentContext(\n ARROW_NAME,\n __scopeTooltip\n );\n return visuallyHiddenContentContext.isInside ? null : /* @__PURE__ */ jsx(PopperPrimitive.Arrow, { ...popperScope, ...arrowProps, ref: forwardedRef });\n }\n);\nTooltipArrow.displayName = ARROW_NAME;\nfunction getExitSideFromRect(point, rect) {\n const top = Math.abs(rect.top - point.y);\n const bottom = Math.abs(rect.bottom - point.y);\n const right = Math.abs(rect.right - point.x);\n const left = Math.abs(rect.left - point.x);\n switch (Math.min(top, bottom, right, left)) {\n case left:\n return \"left\";\n case right:\n return \"right\";\n case top:\n return \"top\";\n case bottom:\n return \"bottom\";\n default:\n throw new Error(\"unreachable\");\n }\n}\nfunction getPaddedExitPoints(exitPoint, exitSide, padding = 5) {\n const paddedExitPoints = [];\n switch (exitSide) {\n case \"top\":\n paddedExitPoints.push(\n { x: exitPoint.x - padding, y: exitPoint.y + padding },\n { x: exitPoint.x + padding, y: exitPoint.y + padding }\n );\n break;\n case \"bottom\":\n paddedExitPoints.push(\n { x: exitPoint.x - padding, y: exitPoint.y - padding },\n { x: exitPoint.x + padding, y: exitPoint.y - padding }\n );\n break;\n case \"left\":\n paddedExitPoints.push(\n { x: exitPoint.x + padding, y: exitPoint.y - padding },\n { x: exitPoint.x + padding, y: exitPoint.y + padding }\n );\n break;\n case \"right\":\n paddedExitPoints.push(\n { x: exitPoint.x - padding, y: exitPoint.y - padding },\n { x: exitPoint.x - padding, y: exitPoint.y + padding }\n );\n break;\n }\n return paddedExitPoints;\n}\nfunction getPointsFromRect(rect) {\n const { top, right, bottom, left } = rect;\n return [\n { x: left, y: top },\n { x: right, y: top },\n { x: right, y: bottom },\n { x: left, y: bottom }\n ];\n}\nfunction isPointInPolygon(point, polygon) {\n const { x, y } = point;\n let inside = false;\n for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {\n const ii = polygon[i];\n const jj = polygon[j];\n const xi = ii.x;\n const yi = ii.y;\n const xj = jj.x;\n const yj = jj.y;\n const intersect = yi > y !== yj > y && x < (xj - xi) * (y - yi) / (yj - yi) + xi;\n if (intersect) inside = !inside;\n }\n return inside;\n}\nfunction getHull(points) {\n const newPoints = points.slice();\n newPoints.sort((a, b) => {\n if (a.x < b.x) return -1;\n else if (a.x > b.x) return 1;\n else if (a.y < b.y) return -1;\n else if (a.y > b.y) return 1;\n else return 0;\n });\n return getHullPresorted(newPoints);\n}\nfunction getHullPresorted(points) {\n if (points.length <= 1) return points.slice();\n const upperHull = [];\n for (let i = 0; i < points.length; i++) {\n const p = points[i];\n while (upperHull.length >= 2) {\n const q = upperHull[upperHull.length - 1];\n const r = upperHull[upperHull.length - 2];\n if ((q.x - r.x) * (p.y - r.y) >= (q.y - r.y) * (p.x - r.x)) upperHull.pop();\n else break;\n }\n upperHull.push(p);\n }\n upperHull.pop();\n const lowerHull = [];\n for (let i = points.length - 1; i >= 0; i--) {\n const p = points[i];\n while (lowerHull.length >= 2) {\n const q = lowerHull[lowerHull.length - 1];\n const r = lowerHull[lowerHull.length - 2];\n if ((q.x - r.x) * (p.y - r.y) >= (q.y - r.y) * (p.x - r.x)) lowerHull.pop();\n else break;\n }\n lowerHull.push(p);\n }\n lowerHull.pop();\n if (upperHull.length === 1 && lowerHull.length === 1 && upperHull[0].x === lowerHull[0].x && upperHull[0].y === lowerHull[0].y) {\n return upperHull;\n } else {\n return upperHull.concat(lowerHull);\n }\n}\nvar Provider = TooltipProvider;\nvar Root3 = Tooltip;\nvar Trigger = TooltipTrigger;\nvar Portal = TooltipPortal;\nvar Content2 = TooltipContent;\nvar Arrow2 = TooltipArrow;\nexport {\n Arrow2 as Arrow,\n Content2 as Content,\n Portal,\n Provider,\n Root3 as Root,\n Tooltip,\n TooltipArrow,\n TooltipContent,\n TooltipPortal,\n TooltipProvider,\n TooltipTrigger,\n Trigger,\n createTooltipScope\n};\n//# sourceMappingURL=index.mjs.map\n","import * as React from \"react\"\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\"\n\nimport { cn } from \"../../../utils/cn\"\n\nconst TooltipProvider = TooltipPrimitive.Provider\n\nconst TooltipRoot = TooltipPrimitive.Root\n\nconst TooltipTrigger = TooltipPrimitive.Trigger\n\nconst TooltipContent = React.forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <TooltipPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n \"bg-white dark:bg-gray-900 text-gray-900 dark:text-gray-100 border-gray-200 dark:border-gray-700\", // Explicit fallback colors\n className\n )}\n {...props}\n />\n))\nTooltipContent.displayName = TooltipPrimitive.Content.displayName\n\n// Convenience wrapper that handles the content prop\ninterface TooltipProps {\n content: React.ReactNode\n children: React.ReactNode\n delayDuration?: number\n}\n\nconst Tooltip = ({ content, children, delayDuration = 200 }: TooltipProps) => {\n return (\n <TooltipProvider>\n <TooltipRoot delayDuration={delayDuration}>\n <TooltipTrigger asChild>\n {children}\n </TooltipTrigger>\n <TooltipContent>\n {content}\n </TooltipContent>\n </TooltipRoot>\n </TooltipProvider>\n )\n}\n\nexport { Tooltip, TooltipRoot, TooltipTrigger, TooltipContent, TooltipProvider }","// src/slot.tsx\nimport * as React from \"react\";\nimport { composeRefs } from \"@radix-ui/react-compose-refs\";\nimport { Fragment as Fragment2, jsx } from \"react/jsx-runtime\";\n// @__NO_SIDE_EFFECTS__\nfunction createSlot(ownerName) {\n const SlotClone = /* @__PURE__ */ createSlotClone(ownerName);\n const Slot2 = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n const childrenArray = React.Children.toArray(children);\n const slottable = childrenArray.find(isSlottable);\n if (slottable) {\n const newElement = slottable.props.children;\n const newChildren = childrenArray.map((child) => {\n if (child === slottable) {\n if (React.Children.count(newElement) > 1) return React.Children.only(null);\n return React.isValidElement(newElement) ? newElement.props.children : null;\n } else {\n return child;\n }\n });\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children: React.isValidElement(newElement) ? React.cloneElement(newElement, void 0, newChildren) : null });\n }\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children });\n });\n Slot2.displayName = `${ownerName}.Slot`;\n return Slot2;\n}\nvar Slot = /* @__PURE__ */ createSlot(\"Slot\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlotClone(ownerName) {\n const SlotClone = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n if (React.isValidElement(children)) {\n const childrenRef = getElementRef(children);\n const props2 = mergeProps(slotProps, children.props);\n if (children.type !== React.Fragment) {\n props2.ref = forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef;\n }\n return React.cloneElement(children, props2);\n }\n return React.Children.count(children) > 1 ? React.Children.only(null) : null;\n });\n SlotClone.displayName = `${ownerName}.SlotClone`;\n return SlotClone;\n}\nvar SLOTTABLE_IDENTIFIER = Symbol(\"radix.slottable\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlottable(ownerName) {\n const Slottable2 = ({ children }) => {\n return /* @__PURE__ */ jsx(Fragment2, { children });\n };\n Slottable2.displayName = `${ownerName}.Slottable`;\n Slottable2.__radixId = SLOTTABLE_IDENTIFIER;\n return Slottable2;\n}\nvar Slottable = /* @__PURE__ */ createSlottable(\"Slottable\");\nfunction isSlottable(child) {\n return React.isValidElement(child) && typeof child.type === \"function\" && \"__radixId\" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;\n}\nfunction mergeProps(slotProps, childProps) {\n const overrideProps = { ...childProps };\n for (const propName in childProps) {\n const slotPropValue = slotProps[propName];\n const childPropValue = childProps[propName];\n const isHandler = /^on[A-Z]/.test(propName);\n if (isHandler) {\n if (slotPropValue && childPropValue) {\n overrideProps[propName] = (...args) => {\n const result = childPropValue(...args);\n slotPropValue(...args);\n return result;\n };\n } else if (slotPropValue) {\n overrideProps[propName] = slotPropValue;\n }\n } else if (propName === \"style\") {\n overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n } else if (propName === \"className\") {\n overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(\" \");\n }\n }\n return { ...slotProps, ...overrideProps };\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nexport {\n Slot as Root,\n Slot,\n Slottable,\n createSlot,\n createSlottable\n};\n//# sourceMappingURL=index.mjs.map\n","// src/primitive.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NODES = [\n \"a\",\n \"button\",\n \"div\",\n \"form\",\n \"h2\",\n \"h3\",\n \"img\",\n \"input\",\n \"label\",\n \"li\",\n \"nav\",\n \"ol\",\n \"p\",\n \"select\",\n \"span\",\n \"svg\",\n \"ul\"\n];\nvar Primitive = NODES.reduce((primitive, node) => {\n const Slot = createSlot(`Primitive.${node}`);\n const Node = React.forwardRef((props, forwardedRef) => {\n const { asChild, ...primitiveProps } = props;\n const Comp = asChild ? Slot : node;\n if (typeof window !== \"undefined\") {\n window[Symbol.for(\"radix-ui\")] = true;\n }\n return /* @__PURE__ */ jsx(Comp, { ...primitiveProps, ref: forwardedRef });\n });\n Node.displayName = `Primitive.${node}`;\n return { ...primitive, [node]: Node };\n}, {});\nfunction dispatchDiscreteCustomEvent(target, event) {\n if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\nvar Root = Primitive;\nexport {\n Primitive,\n Root,\n dispatchDiscreteCustomEvent\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/dismissable-layer.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { Primitive, dispatchDiscreteCustomEvent } from \"@radix-ui/react-primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useEscapeKeydown } from \"@radix-ui/react-use-escape-keydown\";\nimport { jsx } from \"react/jsx-runtime\";\nvar DISMISSABLE_LAYER_NAME = \"DismissableLayer\";\nvar CONTEXT_UPDATE = \"dismissableLayer.update\";\nvar POINTER_DOWN_OUTSIDE = \"dismissableLayer.pointerDownOutside\";\nvar FOCUS_OUTSIDE = \"dismissableLayer.focusOutside\";\nvar originalBodyPointerEvents;\nvar DismissableLayerContext = React.createContext({\n layers: /* @__PURE__ */ new Set(),\n layersWithOutsidePointerEventsDisabled: /* @__PURE__ */ new Set(),\n branches: /* @__PURE__ */ new Set()\n});\nvar DismissableLayer = React.forwardRef(\n (props, forwardedRef) => {\n const {\n disableOutsidePointerEvents = false,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n onDismiss,\n ...layerProps\n } = props;\n const context = React.useContext(DismissableLayerContext);\n const [node, setNode] = React.useState(null);\n const ownerDocument = node?.ownerDocument ?? globalThis?.document;\n const [, force] = React.useState({});\n const composedRefs = useComposedRefs(forwardedRef, (node2) => setNode(node2));\n const layers = Array.from(context.layers);\n const [highestLayerWithOutsidePointerEventsDisabled] = [...context.layersWithOutsidePointerEventsDisabled].slice(-1);\n const highestLayerWithOutsidePointerEventsDisabledIndex = layers.indexOf(highestLayerWithOutsidePointerEventsDisabled);\n const index = node ? layers.indexOf(node) : -1;\n const isBodyPointerEventsDisabled = context.layersWithOutsidePointerEventsDisabled.size > 0;\n const isPointerEventsEnabled = index >= highestLayerWithOutsidePointerEventsDisabledIndex;\n const pointerDownOutside = usePointerDownOutside((event) => {\n const target = event.target;\n const isPointerDownOnBranch = [...context.branches].some((branch) => branch.contains(target));\n if (!isPointerEventsEnabled || isPointerDownOnBranch) return;\n onPointerDownOutside?.(event);\n onInteractOutside?.(event);\n if (!event.defaultPrevented) onDismiss?.();\n }, ownerDocument);\n const focusOutside = useFocusOutside((event) => {\n const target = event.target;\n const isFocusInBranch = [...context.branches].some((branch) => branch.contains(target));\n if (isFocusInBranch) return;\n onFocusOutside?.(event);\n onInteractOutside?.(event);\n if (!event.defaultPrevented) onDismiss?.();\n }, ownerDocument);\n useEscapeKeydown((event) => {\n const isHighestLayer = index === context.layers.size - 1;\n if (!isHighestLayer) return;\n onEscapeKeyDown?.(event);\n if (!event.defaultPrevented && onDismiss) {\n event.preventDefault();\n onDismiss();\n }\n }, ownerDocument);\n React.useEffect(() => {\n if (!node) return;\n if (disableOutsidePointerEvents) {\n if (context.layersWithOutsidePointerEventsDisabled.size === 0) {\n originalBodyPointerEvents = ownerDocument.body.style.pointerEvents;\n ownerDocument.body.style.pointerEvents = \"none\";\n }\n context.layersWithOutsidePointerEventsDisabled.add(node);\n }\n context.layers.add(node);\n dispatchUpdate();\n return () => {\n if (disableOutsidePointerEvents && context.layersWithOutsidePointerEventsDisabled.size === 1) {\n ownerDocument.body.style.pointerEvents = originalBodyPointerEvents;\n }\n };\n }, [node, ownerDocument, disableOutsidePointerEvents, context]);\n React.useEffect(() => {\n return () => {\n if (!node) return;\n context.layers.delete(node);\n context.layersWithOutsidePointerEventsDisabled.delete(node);\n dispatchUpdate();\n };\n }, [node, context]);\n React.useEffect(() => {\n const handleUpdate = () => force({});\n document.addEventListener(CONTEXT_UPDATE, handleUpdate);\n return () => document.removeEventListener(CONTEXT_UPDATE, handleUpdate);\n }, []);\n return /* @__PURE__ */ jsx(\n Primitive.div,\n {\n ...layerProps,\n ref: composedRefs,\n style: {\n pointerEvents: isBodyPointerEventsDisabled ? isPointerEventsEnabled ? \"auto\" : \"none\" : void 0,\n ...props.style\n },\n onFocusCapture: composeEventHandlers(props.onFocusCapture, focusOutside.onFocusCapture),\n onBlurCapture: composeEventHandlers(props.onBlurCapture, focusOutside.onBlurCapture),\n onPointerDownCapture: composeEventHandlers(\n props.onPointerDownCapture,\n pointerDownOutside.onPointerDownCapture\n )\n }\n );\n }\n);\nDismissableLayer.displayName = DISMISSABLE_LAYER_NAME;\nvar BRANCH_NAME = \"DismissableLayerBranch\";\nvar DismissableLayerBranch = React.forwardRef((props, forwardedRef) => {\n const context = React.useContext(DismissableLayerContext);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n React.useEffect(() => {\n const node = ref.current;\n if (node) {\n context.branches.add(node);\n return () => {\n context.branches.delete(node);\n };\n }\n }, [context.branches]);\n return /* @__PURE__ */ jsx(Primitive.div, { ...props, ref: composedRefs });\n});\nDismissableLayerBranch.displayName = BRANCH_NAME;\nfunction usePointerDownOutside(onPointerDownOutside, ownerDocument = globalThis?.document) {\n const handlePointerDownOutside = useCallbackRef(onPointerDownOutside);\n const isPointerInsideReactTreeRef = React.useRef(false);\n const handleClickRef = React.useRef(() => {\n });\n React.useEffect(() => {\n const handlePointerDown = (event) => {\n if (event.target && !isPointerInsideReactTreeRef.current) {\n let handleAndDispatchPointerDownOutsideEvent2 = function() {\n handleAndDispatchCustomEvent(\n POINTER_DOWN_OUTSIDE,\n handlePointerDownOutside,\n eventDetail,\n { discrete: true }\n );\n };\n var handleAndDispatchPointerDownOutsideEvent = handleAndDispatchPointerDownOutsideEvent2;\n const eventDetail = { originalEvent: event };\n if (event.pointerType === \"touch\") {\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n handleClickRef.current = handleAndDispatchPointerDownOutsideEvent2;\n ownerDocument.addEventListener(\"click\", handleClickRef.current, { once: true });\n } else {\n handleAndDispatchPointerDownOutsideEvent2();\n }\n } else {\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n }\n isPointerInsideReactTreeRef.current = false;\n };\n const timerId = window.setTimeout(() => {\n ownerDocument.addEventListener(\"pointerdown\", handlePointerDown);\n }, 0);\n return () => {\n window.clearTimeout(timerId);\n ownerDocument.removeEventListener(\"pointerdown\", handlePointerDown);\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n };\n }, [ownerDocument, handlePointerDownOutside]);\n return {\n // ensures we check React component tree (not just DOM tree)\n onPointerDownCapture: () => isPointerInsideReactTreeRef.current = true\n };\n}\nfunction useFocusOutside(onFocusOutside, ownerDocument = globalThis?.document) {\n const handleFocusOutside = useCallbackRef(onFocusOutside);\n const isFocusInsideReactTreeRef = React.useRef(false);\n React.useEffect(() => {\n const handleFocus = (event) => {\n if (event.target && !isFocusInsideReactTreeRef.current) {\n const eventDetail = { originalEvent: event };\n handleAndDispatchCustomEvent(FOCUS_OUTSIDE, handleFocusOutside, eventDetail, {\n discrete: false\n });\n }\n };\n ownerDocument.addEventListener(\"focusin\", handleFocus);\n return () => ownerDocument.removeEventListener(\"focusin\", handleFocus);\n }, [ownerDocument, handleFocusOutside]);\n return {\n onFocusCapture: () => isFocusInsideReactTreeRef.current = true,\n onBlurCapture: () => isFocusInsideReactTreeRef.current = false\n };\n}\nfunction dispatchUpdate() {\n const event = new CustomEvent(CONTEXT_UPDATE);\n document.dispatchEvent(event);\n}\nfunction handleAndDispatchCustomEvent(name, handler, detail, { discrete }) {\n const target = detail.originalEvent.target;\n const event = new CustomEvent(name, { bubbles: false, cancelable: true, detail });\n if (handler) target.addEventListener(name, handler, { once: true });\n if (discrete) {\n dispatchDiscreteCustomEvent(target, event);\n } else {\n target.dispatchEvent(event);\n }\n}\nvar Root = DismissableLayer;\nvar Branch = DismissableLayerBranch;\nexport {\n Branch,\n DismissableLayer,\n DismissableLayerBranch,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","// src/slot.tsx\nimport * as React from \"react\";\nimport { composeRefs } from \"@radix-ui/react-compose-refs\";\nimport { Fragment as Fragment2, jsx } from \"react/jsx-runtime\";\n// @__NO_SIDE_EFFECTS__\nfunction createSlot(ownerName) {\n const SlotClone = /* @__PURE__ */ createSlotClone(ownerName);\n const Slot2 = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n const childrenArray = React.Children.toArray(children);\n const slottable = childrenArray.find(isSlottable);\n if (slottable) {\n const newElement = slottable.props.children;\n const newChildren = childrenArray.map((child) => {\n if (child === slottable) {\n if (React.Children.count(newElement) > 1) return React.Children.only(null);\n return React.isValidElement(newElement) ? newElement.props.children : null;\n } else {\n return child;\n }\n });\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children: React.isValidElement(newElement) ? React.cloneElement(newElement, void 0, newChildren) : null });\n }\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children });\n });\n Slot2.displayName = `${ownerName}.Slot`;\n return Slot2;\n}\nvar Slot = /* @__PURE__ */ createSlot(\"Slot\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlotClone(ownerName) {\n const SlotClone = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n if (React.isValidElement(children)) {\n const childrenRef = getElementRef(children);\n const props2 = mergeProps(slotProps, children.props);\n if (children.type !== React.Fragment) {\n props2.ref = forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef;\n }\n return React.cloneElement(children, props2);\n }\n return React.Children.count(children) > 1 ? React.Children.only(null) : null;\n });\n SlotClone.displayName = `${ownerName}.SlotClone`;\n return SlotClone;\n}\nvar SLOTTABLE_IDENTIFIER = Symbol(\"radix.slottable\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlottable(ownerName) {\n const Slottable2 = ({ children }) => {\n return /* @__PURE__ */ jsx(Fragment2, { children });\n };\n Slottable2.displayName = `${ownerName}.Slottable`;\n Slottable2.__radixId = SLOTTABLE_IDENTIFIER;\n return Slottable2;\n}\nvar Slottable = /* @__PURE__ */ createSlottable(\"Slottable\");\nfunction isSlottable(child) {\n return React.isValidElement(child) && typeof child.type === \"function\" && \"__radixId\" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;\n}\nfunction mergeProps(slotProps, childProps) {\n const overrideProps = { ...childProps };\n for (const propName in childProps) {\n const slotPropValue = slotProps[propName];\n const childPropValue = childProps[propName];\n const isHandler = /^on[A-Z]/.test(propName);\n if (isHandler) {\n if (slotPropValue && childPropValue) {\n overrideProps[propName] = (...args) => {\n const result = childPropValue(...args);\n slotPropValue(...args);\n return result;\n };\n } else if (slotPropValue) {\n overrideProps[propName] = slotPropValue;\n }\n } else if (propName === \"style\") {\n overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n } else if (propName === \"className\") {\n overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(\" \");\n }\n }\n return { ...slotProps, ...overrideProps };\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nexport {\n Slot as Root,\n Slot,\n Slottable,\n createSlot,\n createSlottable\n};\n//# sourceMappingURL=index.mjs.map\n","// src/primitive.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NODES = [\n \"a\",\n \"button\",\n \"div\",\n \"form\",\n \"h2\",\n \"h3\",\n \"img\",\n \"input\",\n \"label\",\n \"li\",\n \"nav\",\n \"ol\",\n \"p\",\n \"select\",\n \"span\",\n \"svg\",\n \"ul\"\n];\nvar Primitive = NODES.reduce((primitive, node) => {\n const Slot = createSlot(`Primitive.${node}`);\n const Node = React.forwardRef((props, forwardedRef) => {\n const { asChild, ...primitiveProps } = props;\n const Comp = asChild ? Slot : node;\n if (typeof window !== \"undefined\") {\n window[Symbol.for(\"radix-ui\")] = true;\n }\n return /* @__PURE__ */ jsx(Comp, { ...primitiveProps, ref: forwardedRef });\n });\n Node.displayName = `Primitive.${node}`;\n return { ...primitive, [node]: Node };\n}, {});\nfunction dispatchDiscreteCustomEvent(target, event) {\n if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\nvar Root = Primitive;\nexport {\n Primitive,\n Root,\n dispatchDiscreteCustomEvent\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/focus-scope.tsx\nimport * as React from \"react\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { jsx } from \"react/jsx-runtime\";\nvar AUTOFOCUS_ON_MOUNT = \"focusScope.autoFocusOnMount\";\nvar AUTOFOCUS_ON_UNMOUNT = \"focusScope.autoFocusOnUnmount\";\nvar EVENT_OPTIONS = { bubbles: false, cancelable: true };\nvar FOCUS_SCOPE_NAME = \"FocusScope\";\nvar FocusScope = React.forwardRef((props, forwardedRef) => {\n const {\n loop = false,\n trapped = false,\n onMountAutoFocus: onMountAutoFocusProp,\n onUnmountAutoFocus: onUnmountAutoFocusProp,\n ...scopeProps\n } = props;\n const [container, setContainer] = React.useState(null);\n const onMountAutoFocus = useCallbackRef(onMountAutoFocusProp);\n const onUnmountAutoFocus = useCallbackRef(onUnmountAutoFocusProp);\n const lastFocusedElementRef = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setContainer(node));\n const focusScope = React.useRef({\n paused: false,\n pause() {\n this.paused = true;\n },\n resume() {\n this.paused = false;\n }\n }).current;\n React.useEffect(() => {\n if (trapped) {\n let handleFocusIn2 = function(event) {\n if (focusScope.paused || !container) return;\n const target = event.target;\n if (container.contains(target)) {\n lastFocusedElementRef.current = target;\n } else {\n focus(lastFocusedElementRef.current, { select: true });\n }\n }, handleFocusOut2 = function(event) {\n if (focusScope.paused || !container) return;\n const relatedTarget = event.relatedTarget;\n if (relatedTarget === null) return;\n if (!container.contains(relatedTarget)) {\n focus(lastFocusedElementRef.current, { select: true });\n }\n }, handleMutations2 = function(mutations) {\n const focusedElement = document.activeElement;\n if (focusedElement !== document.body) return;\n for (const mutation of mutations) {\n if (mutation.removedNodes.length > 0) focus(container);\n }\n };\n var handleFocusIn = handleFocusIn2, handleFocusOut = handleFocusOut2, handleMutations = handleMutations2;\n document.addEventListener(\"focusin\", handleFocusIn2);\n document.addEventListener(\"focusout\", handleFocusOut2);\n const mutationObserver = new MutationObserver(handleMutations2);\n if (container) mutationObserver.observe(container, { childList: true, subtree: true });\n return () => {\n document.removeEventListener(\"focusin\", handleFocusIn2);\n document.removeEventListener(\"focusout\", handleFocusOut2);\n mutationObserver.disconnect();\n };\n }\n }, [trapped, container, focusScope.paused]);\n React.useEffect(() => {\n if (container) {\n focusScopesStack.add(focusScope);\n const previouslyFocusedElement = document.activeElement;\n const hasFocusedCandidate = container.contains(previouslyFocusedElement);\n if (!hasFocusedCandidate) {\n const mountEvent = new CustomEvent(AUTOFOCUS_ON_MOUNT, EVENT_OPTIONS);\n container.addEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);\n container.dispatchEvent(mountEvent);\n if (!mountEvent.defaultPrevented) {\n focusFirst(removeLinks(getTabbableCandidates(container)), { select: true });\n if (document.activeElement === previouslyFocusedElement) {\n focus(container);\n }\n }\n }\n return () => {\n container.removeEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);\n setTimeout(() => {\n const unmountEvent = new CustomEvent(AUTOFOCUS_ON_UNMOUNT, EVENT_OPTIONS);\n container.addEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);\n container.dispatchEvent(unmountEvent);\n if (!unmountEvent.defaultPrevented) {\n focus(previouslyFocusedElement ?? document.body, { select: true });\n }\n container.removeEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);\n focusScopesStack.remove(focusScope);\n }, 0);\n };\n }\n }, [container, onMountAutoFocus, onUnmountAutoFocus, focusScope]);\n const handleKeyDown = React.useCallback(\n (event) => {\n if (!loop && !trapped) return;\n if (focusScope.paused) return;\n const isTabKey = event.key === \"Tab\" && !event.altKey && !event.ctrlKey && !event.metaKey;\n const focusedElement = document.activeElement;\n if (isTabKey && focusedElement) {\n const container2 = event.currentTarget;\n const [first, last] = getTabbableEdges(container2);\n const hasTabbableElementsInside = first && last;\n if (!hasTabbableElementsInside) {\n if (focusedElement === container2) event.preventDefault();\n } else {\n if (!event.shiftKey && focusedElement === last) {\n event.preventDefault();\n if (loop) focus(first, { select: true });\n } else if (event.shiftKey && focusedElement === first) {\n event.preventDefault();\n if (loop) focus(last, { select: true });\n }\n }\n }\n },\n [loop, trapped, focusScope.paused]\n );\n return /* @__PURE__ */ jsx(Primitive.div, { tabIndex: -1, ...scopeProps, ref: composedRefs, onKeyDown: handleKeyDown });\n});\nFocusScope.displayName = FOCUS_SCOPE_NAME;\nfunction focusFirst(candidates, { select = false } = {}) {\n const previouslyFocusedElement = document.activeElement;\n for (const candidate of candidates) {\n focus(candidate, { select });\n if (document.activeElement !== previouslyFocusedElement) return;\n }\n}\nfunction getTabbableEdges(container) {\n const candidates = getTabbableCandidates(container);\n const first = findVisible(candidates, container);\n const last = findVisible(candidates.reverse(), container);\n return [first, last];\n}\nfunction getTabbableCandidates(container) {\n const nodes = [];\n const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT, {\n acceptNode: (node) => {\n const isHiddenInput = node.tagName === \"INPUT\" && node.type === \"hidden\";\n if (node.disabled || node.hidden || isHiddenInput) return NodeFilter.FILTER_SKIP;\n return node.tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;\n }\n });\n while (walker.nextNode()) nodes.push(walker.currentNode);\n return nodes;\n}\nfunction findVisible(elements, container) {\n for (const element of elements) {\n if (!isHidden(element, { upTo: container })) return element;\n }\n}\nfunction isHidden(node, { upTo }) {\n if (getComputedStyle(node).visibility === \"hidden\") return true;\n while (node) {\n if (upTo !== void 0 && node === upTo) return false;\n if (getComputedStyle(node).display === \"none\") return true;\n node = node.parentElement;\n }\n return false;\n}\nfunction isSelectableInput(element) {\n return element instanceof HTMLInputElement && \"select\" in element;\n}\nfunction focus(element, { select = false } = {}) {\n if (element && element.focus) {\n const previouslyFocusedElement = document.activeElement;\n element.focus({ preventScroll: true });\n if (element !== previouslyFocusedElement && isSelectableInput(element) && select)\n element.select();\n }\n}\nvar focusScopesStack = createFocusScopesStack();\nfunction createFocusScopesStack() {\n let stack = [];\n return {\n add(focusScope) {\n const activeFocusScope = stack[0];\n if (focusScope !== activeFocusScope) {\n activeFocusScope?.pause();\n }\n stack = arrayRemove(stack, focusScope);\n stack.unshift(focusScope);\n },\n remove(focusScope) {\n stack = arrayRemove(stack, focusScope);\n stack[0]?.resume();\n }\n };\n}\nfunction arrayRemove(array, item) {\n const updatedArray = [...array];\n const index = updatedArray.indexOf(item);\n if (index !== -1) {\n updatedArray.splice(index, 1);\n }\n return updatedArray;\n}\nfunction removeLinks(items) {\n return items.filter((item) => item.tagName !== \"A\");\n}\nvar Root = FocusScope;\nexport {\n FocusScope,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// packages/react/focus-guards/src/focus-guards.tsx\nimport * as React from \"react\";\nvar count = 0;\nfunction FocusGuards(props) {\n useFocusGuards();\n return props.children;\n}\nfunction useFocusGuards() {\n React.useEffect(() => {\n const edgeGuards = document.querySelectorAll(\"[data-radix-focus-guard]\");\n document.body.insertAdjacentElement(\"afterbegin\", edgeGuards[0] ?? createFocusGuard());\n document.body.insertAdjacentElement(\"beforeend\", edgeGuards[1] ?? createFocusGuard());\n count++;\n return () => {\n if (count === 1) {\n document.querySelectorAll(\"[data-radix-focus-guard]\").forEach((node) => node.remove());\n }\n count--;\n };\n }, []);\n}\nfunction createFocusGuard() {\n const element = document.createElement(\"span\");\n element.setAttribute(\"data-radix-focus-guard\", \"\");\n element.tabIndex = 0;\n element.style.outline = \"none\";\n element.style.opacity = \"0\";\n element.style.position = \"fixed\";\n element.style.pointerEvents = \"none\";\n return element;\n}\nvar Root = FocusGuards;\nexport {\n FocusGuards,\n Root,\n useFocusGuards\n};\n//# sourceMappingURL=index.mjs.map\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","export var zeroRightClassName = 'right-scroll-bar-position';\nexport var fullWidthClassName = 'width-before-scroll-bar';\nexport var noScrollbarsClassName = 'with-scroll-bars-hidden';\n/**\n * Name of a CSS variable containing the amount of \"hidden\" scrollbar\n * ! might be undefined ! use will fallback!\n */\nexport var removedBarSizeVariable = '--removed-body-scroll-bar-size';\n","/**\n * Assigns a value for a given ref, no matter of the ref format\n * @param {RefObject} ref - a callback function or ref object\n * @param value - a new value\n *\n * @see https://github.com/theKashey/use-callback-ref#assignref\n * @example\n * const refObject = useRef();\n * const refFn = (ref) => {....}\n *\n * assignRef(refObject, \"refValue\");\n * assignRef(refFn, \"refValue\");\n */\nexport function assignRef(ref, value) {\n if (typeof ref === 'function') {\n ref(value);\n }\n else if (ref) {\n ref.current = value;\n }\n return ref;\n}\n","import { useState } from 'react';\n/**\n * creates a MutableRef with ref change callback\n * @param initialValue - initial ref value\n * @param {Function} callback - a callback to run when value changes\n *\n * @example\n * const ref = useCallbackRef(0, (newValue, oldValue) => console.log(oldValue, '->', newValue);\n * ref.current = 1;\n * // prints 0 -> 1\n *\n * @see https://reactjs.org/docs/hooks-reference.html#useref\n * @see https://github.com/theKashey/use-callback-ref#usecallbackref---to-replace-reactuseref\n * @returns {MutableRefObject}\n */\nexport function useCallbackRef(initialValue, callback) {\n var ref = useState(function () { return ({\n // value\n value: initialValue,\n // last callback\n callback: callback,\n // \"memoized\" public interface\n facade: {\n get current() {\n return ref.value;\n },\n set current(value) {\n var last = ref.value;\n if (last !== value) {\n ref.value = value;\n ref.callback(value, last);\n }\n },\n },\n }); })[0];\n // update callback\n ref.callback = callback;\n return ref.facade;\n}\n","import * as React from 'react';\nimport { assignRef } from './assignRef';\nimport { useCallbackRef } from './useRef';\nvar useIsomorphicLayoutEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\nvar currentValues = new WeakMap();\n/**\n * Merges two or more refs together providing a single interface to set their value\n * @param {RefObject|Ref} refs\n * @returns {MutableRefObject} - a new ref, which translates all changes to {refs}\n *\n * @see {@link mergeRefs} a version without buit-in memoization\n * @see https://github.com/theKashey/use-callback-ref#usemergerefs\n * @example\n * const Component = React.forwardRef((props, ref) => {\n * const ownRef = useRef();\n * const domRef = useMergeRefs([ref, ownRef]); // 👈 merge together\n * return <div ref={domRef}>...</div>\n * }\n */\nexport function useMergeRefs(refs, defaultValue) {\n var callbackRef = useCallbackRef(defaultValue || null, function (newValue) {\n return refs.forEach(function (ref) { return assignRef(ref, newValue); });\n });\n // handle refs changes - added or removed\n useIsomorphicLayoutEffect(function () {\n var oldValue = currentValues.get(callbackRef);\n if (oldValue) {\n var prevRefs_1 = new Set(oldValue);\n var nextRefs_1 = new Set(refs);\n var current_1 = callbackRef.current;\n prevRefs_1.forEach(function (ref) {\n if (!nextRefs_1.has(ref)) {\n assignRef(ref, null);\n }\n });\n nextRefs_1.forEach(function (ref) {\n if (!prevRefs_1.has(ref)) {\n assignRef(ref, current_1);\n }\n });\n }\n currentValues.set(callbackRef, refs);\n }, [refs]);\n return callbackRef;\n}\n","import { __assign } from \"tslib\";\nfunction ItoI(a) {\n return a;\n}\nfunction innerCreateMedium(defaults, middleware) {\n if (middleware === void 0) { middleware = ItoI; }\n var buffer = [];\n var assigned = false;\n var medium = {\n read: function () {\n if (assigned) {\n throw new Error('Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.');\n }\n if (buffer.length) {\n return buffer[buffer.length - 1];\n }\n return defaults;\n },\n useMedium: function (data) {\n var item = middleware(data, assigned);\n buffer.push(item);\n return function () {\n buffer = buffer.filter(function (x) { return x !== item; });\n };\n },\n assignSyncMedium: function (cb) {\n assigned = true;\n while (buffer.length) {\n var cbs = buffer;\n buffer = [];\n cbs.forEach(cb);\n }\n buffer = {\n push: function (x) { return cb(x); },\n filter: function () { return buffer; },\n };\n },\n assignMedium: function (cb) {\n assigned = true;\n var pendingQueue = [];\n if (buffer.length) {\n var cbs = buffer;\n buffer = [];\n cbs.forEach(cb);\n pendingQueue = buffer;\n }\n var executeQueue = function () {\n var cbs = pendingQueue;\n pendingQueue = [];\n cbs.forEach(cb);\n };\n var cycle = function () { return Promise.resolve().then(executeQueue); };\n cycle();\n buffer = {\n push: function (x) {\n pendingQueue.push(x);\n cycle();\n },\n filter: function (filter) {\n pendingQueue = pendingQueue.filter(filter);\n return buffer;\n },\n };\n },\n };\n return medium;\n}\nexport function createMedium(defaults, middleware) {\n if (middleware === void 0) { middleware = ItoI; }\n return innerCreateMedium(defaults, middleware);\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function createSidecarMedium(options) {\n if (options === void 0) { options = {}; }\n var medium = innerCreateMedium(null);\n medium.options = __assign({ async: true, ssr: false }, options);\n return medium;\n}\n","import { __assign, __rest } from \"tslib\";\nimport * as React from 'react';\nvar SideCar = function (_a) {\n var sideCar = _a.sideCar, rest = __rest(_a, [\"sideCar\"]);\n if (!sideCar) {\n throw new Error('Sidecar: please provide `sideCar` property to import the right car');\n }\n var Target = sideCar.read();\n if (!Target) {\n throw new Error('Sidecar medium not found');\n }\n return React.createElement(Target, __assign({}, rest));\n};\nSideCar.isSideCarExport = true;\nexport function exportSidecar(medium, exported) {\n medium.useMedium(exported);\n return SideCar;\n}\n","import { createSidecarMedium } from 'use-sidecar';\nexport var effectCar = createSidecarMedium();\n","import { __assign, __rest } from \"tslib\";\nimport * as React from 'react';\nimport { fullWidthClassName, zeroRightClassName } from 'react-remove-scroll-bar/constants';\nimport { useMergeRefs } from 'use-callback-ref';\nimport { effectCar } from './medium';\nvar nothing = function () {\n return;\n};\n/**\n * Removes scrollbar from the page and contain the scroll within the Lock\n */\nvar RemoveScroll = React.forwardRef(function (props, parentRef) {\n var ref = React.useRef(null);\n var _a = React.useState({\n onScrollCapture: nothing,\n onWheelCapture: nothing,\n onTouchMoveCapture: nothing,\n }), callbacks = _a[0], setCallbacks = _a[1];\n var forwardProps = props.forwardProps, children = props.children, className = props.className, removeScrollBar = props.removeScrollBar, enabled = props.enabled, shards = props.shards, sideCar = props.sideCar, noIsolation = props.noIsolation, inert = props.inert, allowPinchZoom = props.allowPinchZoom, _b = props.as, Container = _b === void 0 ? 'div' : _b, gapMode = props.gapMode, rest = __rest(props, [\"forwardProps\", \"children\", \"className\", \"removeScrollBar\", \"enabled\", \"shards\", \"sideCar\", \"noIsolation\", \"inert\", \"allowPinchZoom\", \"as\", \"gapMode\"]);\n var SideCar = sideCar;\n var containerRef = useMergeRefs([ref, parentRef]);\n var containerProps = __assign(__assign({}, rest), callbacks);\n return (React.createElement(React.Fragment, null,\n enabled && (React.createElement(SideCar, { sideCar: effectCar, removeScrollBar: removeScrollBar, shards: shards, noIsolation: noIsolation, inert: inert, setCallbacks: setCallbacks, allowPinchZoom: !!allowPinchZoom, lockRef: ref, gapMode: gapMode })),\n forwardProps ? (React.cloneElement(React.Children.only(children), __assign(__assign({}, containerProps), { ref: containerRef }))) : (React.createElement(Container, __assign({}, containerProps, { className: className, ref: containerRef }), children))));\n});\nRemoveScroll.defaultProps = {\n enabled: true,\n removeScrollBar: true,\n inert: false,\n};\nRemoveScroll.classNames = {\n fullWidth: fullWidthClassName,\n zeroRight: zeroRightClassName,\n};\nexport { RemoveScroll };\n","var currentNonce;\nexport var setNonce = function (nonce) {\n currentNonce = nonce;\n};\nexport var getNonce = function () {\n if (currentNonce) {\n return currentNonce;\n }\n if (typeof __webpack_nonce__ !== 'undefined') {\n return __webpack_nonce__;\n }\n return undefined;\n};\n","import { getNonce } from 'get-nonce';\nfunction makeStyleTag() {\n if (!document)\n return null;\n var tag = document.createElement('style');\n tag.type = 'text/css';\n var nonce = getNonce();\n if (nonce) {\n tag.setAttribute('nonce', nonce);\n }\n return tag;\n}\nfunction injectStyles(tag, css) {\n // @ts-ignore\n if (tag.styleSheet) {\n // @ts-ignore\n tag.styleSheet.cssText = css;\n }\n else {\n tag.appendChild(document.createTextNode(css));\n }\n}\nfunction insertStyleTag(tag) {\n var head = document.head || document.getElementsByTagName('head')[0];\n head.appendChild(tag);\n}\nexport var stylesheetSingleton = function () {\n var counter = 0;\n var stylesheet = null;\n return {\n add: function (style) {\n if (counter == 0) {\n if ((stylesheet = makeStyleTag())) {\n injectStyles(stylesheet, style);\n insertStyleTag(stylesheet);\n }\n }\n counter++;\n },\n remove: function () {\n counter--;\n if (!counter && stylesheet) {\n stylesheet.parentNode && stylesheet.parentNode.removeChild(stylesheet);\n stylesheet = null;\n }\n },\n };\n};\n","import * as React from 'react';\nimport { stylesheetSingleton } from './singleton';\n/**\n * creates a hook to control style singleton\n * @see {@link styleSingleton} for a safer component version\n * @example\n * ```tsx\n * const useStyle = styleHookSingleton();\n * ///\n * useStyle('body { overflow: hidden}');\n */\nexport var styleHookSingleton = function () {\n var sheet = stylesheetSingleton();\n return function (styles, isDynamic) {\n React.useEffect(function () {\n sheet.add(styles);\n return function () {\n sheet.remove();\n };\n }, [styles && isDynamic]);\n };\n};\n","import { styleHookSingleton } from './hook';\n/**\n * create a Component to add styles on demand\n * - styles are added when first instance is mounted\n * - styles are removed when the last instance is unmounted\n * - changing styles in runtime does nothing unless dynamic is set. But with multiple components that can lead to the undefined behavior\n */\nexport var styleSingleton = function () {\n var useStyle = styleHookSingleton();\n var Sheet = function (_a) {\n var styles = _a.styles, dynamic = _a.dynamic;\n useStyle(styles, dynamic);\n return null;\n };\n return Sheet;\n};\n","export var zeroGap = {\n left: 0,\n top: 0,\n right: 0,\n gap: 0,\n};\nvar parse = function (x) { return parseInt(x || '', 10) || 0; };\nvar getOffset = function (gapMode) {\n var cs = window.getComputedStyle(document.body);\n var left = cs[gapMode === 'padding' ? 'paddingLeft' : 'marginLeft'];\n var top = cs[gapMode === 'padding' ? 'paddingTop' : 'marginTop'];\n var right = cs[gapMode === 'padding' ? 'paddingRight' : 'marginRight'];\n return [parse(left), parse(top), parse(right)];\n};\nexport var getGapWidth = function (gapMode) {\n if (gapMode === void 0) { gapMode = 'margin'; }\n if (typeof window === 'undefined') {\n return zeroGap;\n }\n var offsets = getOffset(gapMode);\n var documentWidth = document.documentElement.clientWidth;\n var windowWidth = window.innerWidth;\n return {\n left: offsets[0],\n top: offsets[1],\n right: offsets[2],\n gap: Math.max(0, windowWidth - documentWidth + offsets[2] - offsets[0]),\n };\n};\n","import * as React from 'react';\nimport { styleSingleton } from 'react-style-singleton';\nimport { fullWidthClassName, zeroRightClassName, noScrollbarsClassName, removedBarSizeVariable } from './constants';\nimport { getGapWidth } from './utils';\nvar Style = styleSingleton();\nexport var lockAttribute = 'data-scroll-locked';\n// important tip - once we measure scrollBar width and remove them\n// we could not repeat this operation\n// thus we are using style-singleton - only the first \"yet correct\" style will be applied.\nvar getStyles = function (_a, allowRelative, gapMode, important) {\n var left = _a.left, top = _a.top, right = _a.right, gap = _a.gap;\n if (gapMode === void 0) { gapMode = 'margin'; }\n return \"\\n .\".concat(noScrollbarsClassName, \" {\\n overflow: hidden \").concat(important, \";\\n padding-right: \").concat(gap, \"px \").concat(important, \";\\n }\\n body[\").concat(lockAttribute, \"] {\\n overflow: hidden \").concat(important, \";\\n overscroll-behavior: contain;\\n \").concat([\n allowRelative && \"position: relative \".concat(important, \";\"),\n gapMode === 'margin' &&\n \"\\n padding-left: \".concat(left, \"px;\\n padding-top: \").concat(top, \"px;\\n padding-right: \").concat(right, \"px;\\n margin-left:0;\\n margin-top:0;\\n margin-right: \").concat(gap, \"px \").concat(important, \";\\n \"),\n gapMode === 'padding' && \"padding-right: \".concat(gap, \"px \").concat(important, \";\"),\n ]\n .filter(Boolean)\n .join(''), \"\\n }\\n \\n .\").concat(zeroRightClassName, \" {\\n right: \").concat(gap, \"px \").concat(important, \";\\n }\\n \\n .\").concat(fullWidthClassName, \" {\\n margin-right: \").concat(gap, \"px \").concat(important, \";\\n }\\n \\n .\").concat(zeroRightClassName, \" .\").concat(zeroRightClassName, \" {\\n right: 0 \").concat(important, \";\\n }\\n \\n .\").concat(fullWidthClassName, \" .\").concat(fullWidthClassName, \" {\\n margin-right: 0 \").concat(important, \";\\n }\\n \\n body[\").concat(lockAttribute, \"] {\\n \").concat(removedBarSizeVariable, \": \").concat(gap, \"px;\\n }\\n\");\n};\nvar getCurrentUseCounter = function () {\n var counter = parseInt(document.body.getAttribute(lockAttribute) || '0', 10);\n return isFinite(counter) ? counter : 0;\n};\nexport var useLockAttribute = function () {\n React.useEffect(function () {\n document.body.setAttribute(lockAttribute, (getCurrentUseCounter() + 1).toString());\n return function () {\n var newCounter = getCurrentUseCounter() - 1;\n if (newCounter <= 0) {\n document.body.removeAttribute(lockAttribute);\n }\n else {\n document.body.setAttribute(lockAttribute, newCounter.toString());\n }\n };\n }, []);\n};\n/**\n * Removes page scrollbar and blocks page scroll when mounted\n */\nexport var RemoveScrollBar = function (_a) {\n var noRelative = _a.noRelative, noImportant = _a.noImportant, _b = _a.gapMode, gapMode = _b === void 0 ? 'margin' : _b;\n useLockAttribute();\n /*\n gap will be measured on every component mount\n however it will be used only by the \"first\" invocation\n due to singleton nature of <Style\n */\n var gap = React.useMemo(function () { return getGapWidth(gapMode); }, [gapMode]);\n return React.createElement(Style, { styles: getStyles(gap, !noRelative, gapMode, !noImportant ? '!important' : '') });\n};\n","var passiveSupported = false;\nif (typeof window !== 'undefined') {\n try {\n var options = Object.defineProperty({}, 'passive', {\n get: function () {\n passiveSupported = true;\n return true;\n },\n });\n // @ts-ignore\n window.addEventListener('test', options, options);\n // @ts-ignore\n window.removeEventListener('test', options, options);\n }\n catch (err) {\n passiveSupported = false;\n }\n}\nexport var nonPassive = passiveSupported ? { passive: false } : false;\n","var alwaysContainsScroll = function (node) {\n // textarea will always _contain_ scroll inside self. It only can be hidden\n return node.tagName === 'TEXTAREA';\n};\nvar elementCanBeScrolled = function (node, overflow) {\n if (!(node instanceof Element)) {\n return false;\n }\n var styles = window.getComputedStyle(node);\n return (\n // not-not-scrollable\n styles[overflow] !== 'hidden' &&\n // contains scroll inside self\n !(styles.overflowY === styles.overflowX && !alwaysContainsScroll(node) && styles[overflow] === 'visible'));\n};\nvar elementCouldBeVScrolled = function (node) { return elementCanBeScrolled(node, 'overflowY'); };\nvar elementCouldBeHScrolled = function (node) { return elementCanBeScrolled(node, 'overflowX'); };\nexport var locationCouldBeScrolled = function (axis, node) {\n var ownerDocument = node.ownerDocument;\n var current = node;\n do {\n // Skip over shadow root\n if (typeof ShadowRoot !== 'undefined' && current instanceof ShadowRoot) {\n current = current.host;\n }\n var isScrollable = elementCouldBeScrolled(axis, current);\n if (isScrollable) {\n var _a = getScrollVariables(axis, current), scrollHeight = _a[1], clientHeight = _a[2];\n if (scrollHeight > clientHeight) {\n return true;\n }\n }\n current = current.parentNode;\n } while (current && current !== ownerDocument.body);\n return false;\n};\nvar getVScrollVariables = function (_a) {\n var scrollTop = _a.scrollTop, scrollHeight = _a.scrollHeight, clientHeight = _a.clientHeight;\n return [\n scrollTop,\n scrollHeight,\n clientHeight,\n ];\n};\nvar getHScrollVariables = function (_a) {\n var scrollLeft = _a.scrollLeft, scrollWidth = _a.scrollWidth, clientWidth = _a.clientWidth;\n return [\n scrollLeft,\n scrollWidth,\n clientWidth,\n ];\n};\nvar elementCouldBeScrolled = function (axis, node) {\n return axis === 'v' ? elementCouldBeVScrolled(node) : elementCouldBeHScrolled(node);\n};\nvar getScrollVariables = function (axis, node) {\n return axis === 'v' ? getVScrollVariables(node) : getHScrollVariables(node);\n};\nvar getDirectionFactor = function (axis, direction) {\n /**\n * If the element's direction is rtl (right-to-left), then scrollLeft is 0 when the scrollbar is at its rightmost position,\n * and then increasingly negative as you scroll towards the end of the content.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollLeft\n */\n return axis === 'h' && direction === 'rtl' ? -1 : 1;\n};\nexport var handleScroll = function (axis, endTarget, event, sourceDelta, noOverscroll) {\n var directionFactor = getDirectionFactor(axis, window.getComputedStyle(endTarget).direction);\n var delta = directionFactor * sourceDelta;\n // find scrollable target\n var target = event.target;\n var targetInLock = endTarget.contains(target);\n var shouldCancelScroll = false;\n var isDeltaPositive = delta > 0;\n var availableScroll = 0;\n var availableScrollTop = 0;\n do {\n var _a = getScrollVariables(axis, target), position = _a[0], scroll_1 = _a[1], capacity = _a[2];\n var elementScroll = scroll_1 - capacity - directionFactor * position;\n if (position || elementScroll) {\n if (elementCouldBeScrolled(axis, target)) {\n availableScroll += elementScroll;\n availableScrollTop += position;\n }\n }\n if (target instanceof ShadowRoot) {\n target = target.host;\n }\n else {\n target = target.parentNode;\n }\n } while (\n // portaled content\n (!targetInLock && target !== document.body) ||\n // self content\n (targetInLock && (endTarget.contains(target) || endTarget === target)));\n // handle epsilon around 0 (non standard zoom levels)\n if (isDeltaPositive &&\n ((noOverscroll && Math.abs(availableScroll) < 1) || (!noOverscroll && delta > availableScroll))) {\n shouldCancelScroll = true;\n }\n else if (!isDeltaPositive &&\n ((noOverscroll && Math.abs(availableScrollTop) < 1) || (!noOverscroll && -delta > availableScrollTop))) {\n shouldCancelScroll = true;\n }\n return shouldCancelScroll;\n};\n","import { __spreadArray } from \"tslib\";\nimport * as React from 'react';\nimport { RemoveScrollBar } from 'react-remove-scroll-bar';\nimport { styleSingleton } from 'react-style-singleton';\nimport { nonPassive } from './aggresiveCapture';\nimport { handleScroll, locationCouldBeScrolled } from './handleScroll';\nexport var getTouchXY = function (event) {\n return 'changedTouches' in event ? [event.changedTouches[0].clientX, event.changedTouches[0].clientY] : [0, 0];\n};\nexport var getDeltaXY = function (event) { return [event.deltaX, event.deltaY]; };\nvar extractRef = function (ref) {\n return ref && 'current' in ref ? ref.current : ref;\n};\nvar deltaCompare = function (x, y) { return x[0] === y[0] && x[1] === y[1]; };\nvar generateStyle = function (id) { return \"\\n .block-interactivity-\".concat(id, \" {pointer-events: none;}\\n .allow-interactivity-\").concat(id, \" {pointer-events: all;}\\n\"); };\nvar idCounter = 0;\nvar lockStack = [];\nexport function RemoveScrollSideCar(props) {\n var shouldPreventQueue = React.useRef([]);\n var touchStartRef = React.useRef([0, 0]);\n var activeAxis = React.useRef();\n var id = React.useState(idCounter++)[0];\n var Style = React.useState(styleSingleton)[0];\n var lastProps = React.useRef(props);\n React.useEffect(function () {\n lastProps.current = props;\n }, [props]);\n React.useEffect(function () {\n if (props.inert) {\n document.body.classList.add(\"block-interactivity-\".concat(id));\n var allow_1 = __spreadArray([props.lockRef.current], (props.shards || []).map(extractRef), true).filter(Boolean);\n allow_1.forEach(function (el) { return el.classList.add(\"allow-interactivity-\".concat(id)); });\n return function () {\n document.body.classList.remove(\"block-interactivity-\".concat(id));\n allow_1.forEach(function (el) { return el.classList.remove(\"allow-interactivity-\".concat(id)); });\n };\n }\n return;\n }, [props.inert, props.lockRef.current, props.shards]);\n var shouldCancelEvent = React.useCallback(function (event, parent) {\n if (('touches' in event && event.touches.length === 2) || (event.type === 'wheel' && event.ctrlKey)) {\n return !lastProps.current.allowPinchZoom;\n }\n var touch = getTouchXY(event);\n var touchStart = touchStartRef.current;\n var deltaX = 'deltaX' in event ? event.deltaX : touchStart[0] - touch[0];\n var deltaY = 'deltaY' in event ? event.deltaY : touchStart[1] - touch[1];\n var currentAxis;\n var target = event.target;\n var moveDirection = Math.abs(deltaX) > Math.abs(deltaY) ? 'h' : 'v';\n // allow horizontal touch move on Range inputs. They will not cause any scroll\n if ('touches' in event && moveDirection === 'h' && target.type === 'range') {\n return false;\n }\n var canBeScrolledInMainDirection = locationCouldBeScrolled(moveDirection, target);\n if (!canBeScrolledInMainDirection) {\n return true;\n }\n if (canBeScrolledInMainDirection) {\n currentAxis = moveDirection;\n }\n else {\n currentAxis = moveDirection === 'v' ? 'h' : 'v';\n canBeScrolledInMainDirection = locationCouldBeScrolled(moveDirection, target);\n // other axis might be not scrollable\n }\n if (!canBeScrolledInMainDirection) {\n return false;\n }\n if (!activeAxis.current && 'changedTouches' in event && (deltaX || deltaY)) {\n activeAxis.current = currentAxis;\n }\n if (!currentAxis) {\n return true;\n }\n var cancelingAxis = activeAxis.current || currentAxis;\n return handleScroll(cancelingAxis, parent, event, cancelingAxis === 'h' ? deltaX : deltaY, true);\n }, []);\n var shouldPrevent = React.useCallback(function (_event) {\n var event = _event;\n if (!lockStack.length || lockStack[lockStack.length - 1] !== Style) {\n // not the last active\n return;\n }\n var delta = 'deltaY' in event ? getDeltaXY(event) : getTouchXY(event);\n var sourceEvent = shouldPreventQueue.current.filter(function (e) { return e.name === event.type && (e.target === event.target || event.target === e.shadowParent) && deltaCompare(e.delta, delta); })[0];\n // self event, and should be canceled\n if (sourceEvent && sourceEvent.should) {\n if (event.cancelable) {\n event.preventDefault();\n }\n return;\n }\n // outside or shard event\n if (!sourceEvent) {\n var shardNodes = (lastProps.current.shards || [])\n .map(extractRef)\n .filter(Boolean)\n .filter(function (node) { return node.contains(event.target); });\n var shouldStop = shardNodes.length > 0 ? shouldCancelEvent(event, shardNodes[0]) : !lastProps.current.noIsolation;\n if (shouldStop) {\n if (event.cancelable) {\n event.preventDefault();\n }\n }\n }\n }, []);\n var shouldCancel = React.useCallback(function (name, delta, target, should) {\n var event = { name: name, delta: delta, target: target, should: should, shadowParent: getOutermostShadowParent(target) };\n shouldPreventQueue.current.push(event);\n setTimeout(function () {\n shouldPreventQueue.current = shouldPreventQueue.current.filter(function (e) { return e !== event; });\n }, 1);\n }, []);\n var scrollTouchStart = React.useCallback(function (event) {\n touchStartRef.current = getTouchXY(event);\n activeAxis.current = undefined;\n }, []);\n var scrollWheel = React.useCallback(function (event) {\n shouldCancel(event.type, getDeltaXY(event), event.target, shouldCancelEvent(event, props.lockRef.current));\n }, []);\n var scrollTouchMove = React.useCallback(function (event) {\n shouldCancel(event.type, getTouchXY(event), event.target, shouldCancelEvent(event, props.lockRef.current));\n }, []);\n React.useEffect(function () {\n lockStack.push(Style);\n props.setCallbacks({\n onScrollCapture: scrollWheel,\n onWheelCapture: scrollWheel,\n onTouchMoveCapture: scrollTouchMove,\n });\n document.addEventListener('wheel', shouldPrevent, nonPassive);\n document.addEventListener('touchmove', shouldPrevent, nonPassive);\n document.addEventListener('touchstart', scrollTouchStart, nonPassive);\n return function () {\n lockStack = lockStack.filter(function (inst) { return inst !== Style; });\n document.removeEventListener('wheel', shouldPrevent, nonPassive);\n document.removeEventListener('touchmove', shouldPrevent, nonPassive);\n document.removeEventListener('touchstart', scrollTouchStart, nonPassive);\n };\n }, []);\n var removeScrollBar = props.removeScrollBar, inert = props.inert;\n return (React.createElement(React.Fragment, null,\n inert ? React.createElement(Style, { styles: generateStyle(id) }) : null,\n removeScrollBar ? React.createElement(RemoveScrollBar, { gapMode: props.gapMode }) : null));\n}\nfunction getOutermostShadowParent(node) {\n var shadowParent = null;\n while (node !== null) {\n if (node instanceof ShadowRoot) {\n shadowParent = node.host;\n node = node.host;\n }\n node = node.parentNode;\n }\n return shadowParent;\n}\n","import { exportSidecar } from 'use-sidecar';\nimport { RemoveScrollSideCar } from './SideEffect';\nimport { effectCar } from './medium';\nexport default exportSidecar(effectCar, RemoveScrollSideCar);\n","import { __assign } from \"tslib\";\nimport * as React from 'react';\nimport { RemoveScroll } from './UI';\nimport SideCar from './sidecar';\nvar ReactRemoveScroll = React.forwardRef(function (props, ref) { return (React.createElement(RemoveScroll, __assign({}, props, { ref: ref, sideCar: SideCar }))); });\nReactRemoveScroll.classNames = RemoveScroll.classNames;\nexport default ReactRemoveScroll;\n","var getDefaultParent = function (originalTarget) {\n if (typeof document === 'undefined') {\n return null;\n }\n var sampleTarget = Array.isArray(originalTarget) ? originalTarget[0] : originalTarget;\n return sampleTarget.ownerDocument.body;\n};\nvar counterMap = new WeakMap();\nvar uncontrolledNodes = new WeakMap();\nvar markerMap = {};\nvar lockCount = 0;\nvar unwrapHost = function (node) {\n return node && (node.host || unwrapHost(node.parentNode));\n};\nvar correctTargets = function (parent, targets) {\n return targets\n .map(function (target) {\n if (parent.contains(target)) {\n return target;\n }\n var correctedTarget = unwrapHost(target);\n if (correctedTarget && parent.contains(correctedTarget)) {\n return correctedTarget;\n }\n console.error('aria-hidden', target, 'in not contained inside', parent, '. Doing nothing');\n return null;\n })\n .filter(function (x) { return Boolean(x); });\n};\n/**\n * Marks everything except given node(or nodes) as aria-hidden\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @param {String} [controlAttribute] - html Attribute to control\n * @return {Undo} undo command\n */\nvar applyAttributeToOthers = function (originalTarget, parentNode, markerName, controlAttribute) {\n var targets = correctTargets(parentNode, Array.isArray(originalTarget) ? originalTarget : [originalTarget]);\n if (!markerMap[markerName]) {\n markerMap[markerName] = new WeakMap();\n }\n var markerCounter = markerMap[markerName];\n var hiddenNodes = [];\n var elementsToKeep = new Set();\n var elementsToStop = new Set(targets);\n var keep = function (el) {\n if (!el || elementsToKeep.has(el)) {\n return;\n }\n elementsToKeep.add(el);\n keep(el.parentNode);\n };\n targets.forEach(keep);\n var deep = function (parent) {\n if (!parent || elementsToStop.has(parent)) {\n return;\n }\n Array.prototype.forEach.call(parent.children, function (node) {\n if (elementsToKeep.has(node)) {\n deep(node);\n }\n else {\n try {\n var attr = node.getAttribute(controlAttribute);\n var alreadyHidden = attr !== null && attr !== 'false';\n var counterValue = (counterMap.get(node) || 0) + 1;\n var markerValue = (markerCounter.get(node) || 0) + 1;\n counterMap.set(node, counterValue);\n markerCounter.set(node, markerValue);\n hiddenNodes.push(node);\n if (counterValue === 1 && alreadyHidden) {\n uncontrolledNodes.set(node, true);\n }\n if (markerValue === 1) {\n node.setAttribute(markerName, 'true');\n }\n if (!alreadyHidden) {\n node.setAttribute(controlAttribute, 'true');\n }\n }\n catch (e) {\n console.error('aria-hidden: cannot operate on ', node, e);\n }\n }\n });\n };\n deep(parentNode);\n elementsToKeep.clear();\n lockCount++;\n return function () {\n hiddenNodes.forEach(function (node) {\n var counterValue = counterMap.get(node) - 1;\n var markerValue = markerCounter.get(node) - 1;\n counterMap.set(node, counterValue);\n markerCounter.set(node, markerValue);\n if (!counterValue) {\n if (!uncontrolledNodes.has(node)) {\n node.removeAttribute(controlAttribute);\n }\n uncontrolledNodes.delete(node);\n }\n if (!markerValue) {\n node.removeAttribute(markerName);\n }\n });\n lockCount--;\n if (!lockCount) {\n // clear\n counterMap = new WeakMap();\n counterMap = new WeakMap();\n uncontrolledNodes = new WeakMap();\n markerMap = {};\n }\n };\n};\n/**\n * Marks everything except given node(or nodes) as aria-hidden\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @return {Undo} undo command\n */\nexport var hideOthers = function (originalTarget, parentNode, markerName) {\n if (markerName === void 0) { markerName = 'data-aria-hidden'; }\n var targets = Array.from(Array.isArray(originalTarget) ? originalTarget : [originalTarget]);\n var activeParentNode = parentNode || getDefaultParent(originalTarget);\n if (!activeParentNode) {\n return function () { return null; };\n }\n // we should not hide ariaLive elements - https://github.com/theKashey/aria-hidden/issues/10\n targets.push.apply(targets, Array.from(activeParentNode.querySelectorAll('[aria-live]')));\n return applyAttributeToOthers(targets, activeParentNode, markerName, 'aria-hidden');\n};\n/**\n * Marks everything except given node(or nodes) as inert\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @return {Undo} undo command\n */\nexport var inertOthers = function (originalTarget, parentNode, markerName) {\n if (markerName === void 0) { markerName = 'data-inert-ed'; }\n var activeParentNode = parentNode || getDefaultParent(originalTarget);\n if (!activeParentNode) {\n return function () { return null; };\n }\n return applyAttributeToOthers(originalTarget, activeParentNode, markerName, 'inert');\n};\n/**\n * @returns if current browser supports inert\n */\nexport var supportsInert = function () {\n return typeof HTMLElement !== 'undefined' && HTMLElement.prototype.hasOwnProperty('inert');\n};\n/**\n * Automatic function to \"suppress\" DOM elements - _hide_ or _inert_ in the best possible way\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @return {Undo} undo command\n */\nexport var suppressOthers = function (originalTarget, parentNode, markerName) {\n if (markerName === void 0) { markerName = 'data-suppressed'; }\n return (supportsInert() ? inertOthers : hideOthers)(originalTarget, parentNode, markerName);\n};\n","\"use client\";\n\n// src/dialog.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContext, createContextScope } from \"@radix-ui/react-context\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { FocusScope } from \"@radix-ui/react-focus-scope\";\nimport { Portal as PortalPrimitive } from \"@radix-ui/react-portal\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useFocusGuards } from \"@radix-ui/react-focus-guards\";\nimport { RemoveScroll } from \"react-remove-scroll\";\nimport { hideOthers } from \"aria-hidden\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nvar DIALOG_NAME = \"Dialog\";\nvar [createDialogContext, createDialogScope] = createContextScope(DIALOG_NAME);\nvar [DialogProvider, useDialogContext] = createDialogContext(DIALOG_NAME);\nvar Dialog = (props) => {\n const {\n __scopeDialog,\n children,\n open: openProp,\n defaultOpen,\n onOpenChange,\n modal = true\n } = props;\n const triggerRef = React.useRef(null);\n const contentRef = React.useRef(null);\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen ?? false,\n onChange: onOpenChange,\n caller: DIALOG_NAME\n });\n return /* @__PURE__ */ jsx(\n DialogProvider,\n {\n scope: __scopeDialog,\n triggerRef,\n contentRef,\n contentId: useId(),\n titleId: useId(),\n descriptionId: useId(),\n open,\n onOpenChange: setOpen,\n onOpenToggle: React.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen]),\n modal,\n children\n }\n );\n};\nDialog.displayName = DIALOG_NAME;\nvar TRIGGER_NAME = \"DialogTrigger\";\nvar DialogTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDialog, ...triggerProps } = props;\n const context = useDialogContext(TRIGGER_NAME, __scopeDialog);\n const composedTriggerRef = useComposedRefs(forwardedRef, context.triggerRef);\n return /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n \"aria-haspopup\": \"dialog\",\n \"aria-expanded\": context.open,\n \"aria-controls\": context.contentId,\n \"data-state\": getState(context.open),\n ...triggerProps,\n ref: composedTriggerRef,\n onClick: composeEventHandlers(props.onClick, context.onOpenToggle)\n }\n );\n }\n);\nDialogTrigger.displayName = TRIGGER_NAME;\nvar PORTAL_NAME = \"DialogPortal\";\nvar [PortalProvider, usePortalContext] = createDialogContext(PORTAL_NAME, {\n forceMount: void 0\n});\nvar DialogPortal = (props) => {\n const { __scopeDialog, forceMount, children, container } = props;\n const context = useDialogContext(PORTAL_NAME, __scopeDialog);\n return /* @__PURE__ */ jsx(PortalProvider, { scope: __scopeDialog, forceMount, children: React.Children.map(children, (child) => /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, container, children: child }) })) });\n};\nDialogPortal.displayName = PORTAL_NAME;\nvar OVERLAY_NAME = \"DialogOverlay\";\nvar DialogOverlay = React.forwardRef(\n (props, forwardedRef) => {\n const portalContext = usePortalContext(OVERLAY_NAME, props.__scopeDialog);\n const { forceMount = portalContext.forceMount, ...overlayProps } = props;\n const context = useDialogContext(OVERLAY_NAME, props.__scopeDialog);\n return context.modal ? /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(DialogOverlayImpl, { ...overlayProps, ref: forwardedRef }) }) : null;\n }\n);\nDialogOverlay.displayName = OVERLAY_NAME;\nvar Slot = createSlot(\"DialogOverlay.RemoveScroll\");\nvar DialogOverlayImpl = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDialog, ...overlayProps } = props;\n const context = useDialogContext(OVERLAY_NAME, __scopeDialog);\n return (\n // Make sure `Content` is scrollable even when it doesn't live inside `RemoveScroll`\n // ie. when `Overlay` and `Content` are siblings\n /* @__PURE__ */ jsx(RemoveScroll, { as: Slot, allowPinchZoom: true, shards: [context.contentRef], children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-state\": getState(context.open),\n ...overlayProps,\n ref: forwardedRef,\n style: { pointerEvents: \"auto\", ...overlayProps.style }\n }\n ) })\n );\n }\n);\nvar CONTENT_NAME = \"DialogContent\";\nvar DialogContent = React.forwardRef(\n (props, forwardedRef) => {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopeDialog);\n const { forceMount = portalContext.forceMount, ...contentProps } = props;\n const context = useDialogContext(CONTENT_NAME, props.__scopeDialog);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: context.modal ? /* @__PURE__ */ jsx(DialogContentModal, { ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsx(DialogContentNonModal, { ...contentProps, ref: forwardedRef }) });\n }\n);\nDialogContent.displayName = CONTENT_NAME;\nvar DialogContentModal = React.forwardRef(\n (props, forwardedRef) => {\n const context = useDialogContext(CONTENT_NAME, props.__scopeDialog);\n const contentRef = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, context.contentRef, contentRef);\n React.useEffect(() => {\n const content = contentRef.current;\n if (content) return hideOthers(content);\n }, []);\n return /* @__PURE__ */ jsx(\n DialogContentImpl,\n {\n ...props,\n ref: composedRefs,\n trapFocus: context.open,\n disableOutsidePointerEvents: true,\n onCloseAutoFocus: composeEventHandlers(props.onCloseAutoFocus, (event) => {\n event.preventDefault();\n context.triggerRef.current?.focus();\n }),\n onPointerDownOutside: composeEventHandlers(props.onPointerDownOutside, (event) => {\n const originalEvent = event.detail.originalEvent;\n const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;\n const isRightClick = originalEvent.button === 2 || ctrlLeftClick;\n if (isRightClick) event.preventDefault();\n }),\n onFocusOutside: composeEventHandlers(\n props.onFocusOutside,\n (event) => event.preventDefault()\n )\n }\n );\n }\n);\nvar DialogContentNonModal = React.forwardRef(\n (props, forwardedRef) => {\n const context = useDialogContext(CONTENT_NAME, props.__scopeDialog);\n const hasInteractedOutsideRef = React.useRef(false);\n const hasPointerDownOutsideRef = React.useRef(false);\n return /* @__PURE__ */ jsx(\n DialogContentImpl,\n {\n ...props,\n ref: forwardedRef,\n trapFocus: false,\n disableOutsidePointerEvents: false,\n onCloseAutoFocus: (event) => {\n props.onCloseAutoFocus?.(event);\n if (!event.defaultPrevented) {\n if (!hasInteractedOutsideRef.current) context.triggerRef.current?.focus();\n event.preventDefault();\n }\n hasInteractedOutsideRef.current = false;\n hasPointerDownOutsideRef.current = false;\n },\n onInteractOutside: (event) => {\n props.onInteractOutside?.(event);\n if (!event.defaultPrevented) {\n hasInteractedOutsideRef.current = true;\n if (event.detail.originalEvent.type === \"pointerdown\") {\n hasPointerDownOutsideRef.current = true;\n }\n }\n const target = event.target;\n const targetIsTrigger = context.triggerRef.current?.contains(target);\n if (targetIsTrigger) event.preventDefault();\n if (event.detail.originalEvent.type === \"focusin\" && hasPointerDownOutsideRef.current) {\n event.preventDefault();\n }\n }\n }\n );\n }\n);\nvar DialogContentImpl = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDialog, trapFocus, onOpenAutoFocus, onCloseAutoFocus, ...contentProps } = props;\n const context = useDialogContext(CONTENT_NAME, __scopeDialog);\n const contentRef = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, contentRef);\n useFocusGuards();\n return /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsx(\n FocusScope,\n {\n asChild: true,\n loop: true,\n trapped: trapFocus,\n onMountAutoFocus: onOpenAutoFocus,\n onUnmountAutoFocus: onCloseAutoFocus,\n children: /* @__PURE__ */ jsx(\n DismissableLayer,\n {\n role: \"dialog\",\n id: context.contentId,\n \"aria-describedby\": context.descriptionId,\n \"aria-labelledby\": context.titleId,\n \"data-state\": getState(context.open),\n ...contentProps,\n ref: composedRefs,\n onDismiss: () => context.onOpenChange(false)\n }\n )\n }\n ),\n /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsx(TitleWarning, { titleId: context.titleId }),\n /* @__PURE__ */ jsx(DescriptionWarning, { contentRef, descriptionId: context.descriptionId })\n ] })\n ] });\n }\n);\nvar TITLE_NAME = \"DialogTitle\";\nvar DialogTitle = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDialog, ...titleProps } = props;\n const context = useDialogContext(TITLE_NAME, __scopeDialog);\n return /* @__PURE__ */ jsx(Primitive.h2, { id: context.titleId, ...titleProps, ref: forwardedRef });\n }\n);\nDialogTitle.displayName = TITLE_NAME;\nvar DESCRIPTION_NAME = \"DialogDescription\";\nvar DialogDescription = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDialog, ...descriptionProps } = props;\n const context = useDialogContext(DESCRIPTION_NAME, __scopeDialog);\n return /* @__PURE__ */ jsx(Primitive.p, { id: context.descriptionId, ...descriptionProps, ref: forwardedRef });\n }\n);\nDialogDescription.displayName = DESCRIPTION_NAME;\nvar CLOSE_NAME = \"DialogClose\";\nvar DialogClose = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDialog, ...closeProps } = props;\n const context = useDialogContext(CLOSE_NAME, __scopeDialog);\n return /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n ...closeProps,\n ref: forwardedRef,\n onClick: composeEventHandlers(props.onClick, () => context.onOpenChange(false))\n }\n );\n }\n);\nDialogClose.displayName = CLOSE_NAME;\nfunction getState(open) {\n return open ? \"open\" : \"closed\";\n}\nvar TITLE_WARNING_NAME = \"DialogTitleWarning\";\nvar [WarningProvider, useWarningContext] = createContext(TITLE_WARNING_NAME, {\n contentName: CONTENT_NAME,\n titleName: TITLE_NAME,\n docsSlug: \"dialog\"\n});\nvar TitleWarning = ({ titleId }) => {\n const titleWarningContext = useWarningContext(TITLE_WARNING_NAME);\n const MESSAGE = `\\`${titleWarningContext.contentName}\\` requires a \\`${titleWarningContext.titleName}\\` for the component to be accessible for screen reader users.\n\nIf you want to hide the \\`${titleWarningContext.titleName}\\`, you can wrap it with our VisuallyHidden component.\n\nFor more information, see https://radix-ui.com/primitives/docs/components/${titleWarningContext.docsSlug}`;\n React.useEffect(() => {\n if (titleId) {\n const hasTitle = document.getElementById(titleId);\n if (!hasTitle) console.error(MESSAGE);\n }\n }, [MESSAGE, titleId]);\n return null;\n};\nvar DESCRIPTION_WARNING_NAME = \"DialogDescriptionWarning\";\nvar DescriptionWarning = ({ contentRef, descriptionId }) => {\n const descriptionWarningContext = useWarningContext(DESCRIPTION_WARNING_NAME);\n const MESSAGE = `Warning: Missing \\`Description\\` or \\`aria-describedby={undefined}\\` for {${descriptionWarningContext.contentName}}.`;\n React.useEffect(() => {\n const describedById = contentRef.current?.getAttribute(\"aria-describedby\");\n if (descriptionId && describedById) {\n const hasDescription = document.getElementById(descriptionId);\n if (!hasDescription) console.warn(MESSAGE);\n }\n }, [MESSAGE, contentRef, descriptionId]);\n return null;\n};\nvar Root = Dialog;\nvar Trigger = DialogTrigger;\nvar Portal = DialogPortal;\nvar Overlay = DialogOverlay;\nvar Content = DialogContent;\nvar Title = DialogTitle;\nvar Description = DialogDescription;\nvar Close = DialogClose;\nexport {\n Close,\n Content,\n Description,\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n Overlay,\n Portal,\n Root,\n Title,\n Trigger,\n WarningProvider,\n createDialogScope\n};\n//# sourceMappingURL=index.mjs.map\n","import * as React from \"react\"\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\"\nimport { X } from \"lucide-react\"\n\nimport { cn } from \"../../../utils/cn\"\n\nconst Dialog = DialogPrimitive.Root\n\nconst DialogTrigger = DialogPrimitive.Trigger\n\nconst DialogPortal = DialogPrimitive.Portal\n\nconst DialogClose = DialogPrimitive.Close\n\nconst DialogOverlay = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Overlay\n ref={ref}\n className={cn(\n \"fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n className\n )}\n {...props}\n />\n))\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName\n\nconst DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <>\n <DialogOverlay />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n \"fixed left-[50%] top-[50%] z-50 flex flex-col w-full max-w-lg translate-x-[-50%] translate-y-[-50%] border bg-white p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg overflow-hidden\",\n className\n )}\n style={{ height: '90vh', maxHeight: '90vh' }}\n {...props}\n >\n {children}\n <DialogPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground\">\n <X className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n </DialogPrimitive.Content>\n </>\n))\nDialogContent.displayName = DialogPrimitive.Content.displayName\n\nconst DialogHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col space-y-1.5 text-center sm:text-left\",\n className\n )}\n {...props}\n />\n)\nDialogHeader.displayName = \"DialogHeader\"\n\nconst DialogFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n className\n )}\n {...props}\n />\n)\nDialogFooter.displayName = \"DialogFooter\"\n\nconst DialogTitle = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title\n ref={ref}\n className={cn(\n \"text-lg font-semibold leading-none tracking-tight\",\n className\n )}\n {...props}\n />\n))\nDialogTitle.displayName = DialogPrimitive.Title.displayName\n\nconst DialogDescription = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n))\nDialogDescription.displayName = DialogPrimitive.Description.displayName\n\nexport {\n Dialog,\n DialogPortal,\n DialogOverlay,\n DialogClose,\n DialogTrigger,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n}","import * as React from \"react\"\n\nimport { cn } from \"../../../utils/cn\"\n\nexport interface InputProps\n extends React.InputHTMLAttributes<HTMLInputElement> {}\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n ({ className, type, ...props }, ref) => {\n return (\n <input\n type={type}\n className={cn(\n \"flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n ref={ref}\n {...props}\n />\n )\n }\n)\nInput.displayName = \"Input\"\n\nexport { Input }","// packages/react/use-previous/src/use-previous.tsx\nimport * as React from \"react\";\nfunction usePrevious(value) {\n const ref = React.useRef({ value, previous: value });\n return React.useMemo(() => {\n if (ref.current.value !== value) {\n ref.current.previous = ref.current.value;\n ref.current.value = value;\n }\n return ref.current.previous;\n }, [value]);\n}\nexport {\n usePrevious\n};\n//# sourceMappingURL=index.mjs.map\n","// src/primitive.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NODES = [\n \"a\",\n \"button\",\n \"div\",\n \"form\",\n \"h2\",\n \"h3\",\n \"img\",\n \"input\",\n \"label\",\n \"li\",\n \"nav\",\n \"ol\",\n \"p\",\n \"select\",\n \"span\",\n \"svg\",\n \"ul\"\n];\nvar Primitive = NODES.reduce((primitive, node) => {\n const Slot = createSlot(`Primitive.${node}`);\n const Node = React.forwardRef((props, forwardedRef) => {\n const { asChild, ...primitiveProps } = props;\n const Comp = asChild ? Slot : node;\n if (typeof window !== \"undefined\") {\n window[Symbol.for(\"radix-ui\")] = true;\n }\n return /* @__PURE__ */ jsx(Comp, { ...primitiveProps, ref: forwardedRef });\n });\n Node.displayName = `Primitive.${node}`;\n return { ...primitive, [node]: Node };\n}, {});\nfunction dispatchDiscreteCustomEvent(target, event) {\n if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\nvar Root = Primitive;\nexport {\n Primitive,\n Root,\n dispatchDiscreteCustomEvent\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/checkbox.tsx\nimport * as React from \"react\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { usePrevious } from \"@radix-ui/react-use-previous\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar CHECKBOX_NAME = \"Checkbox\";\nvar [createCheckboxContext, createCheckboxScope] = createContextScope(CHECKBOX_NAME);\nvar [CheckboxProvider, useCheckboxContext] = createCheckboxContext(CHECKBOX_NAME);\nvar Checkbox = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeCheckbox,\n name,\n checked: checkedProp,\n defaultChecked,\n required,\n disabled,\n value = \"on\",\n onCheckedChange,\n form,\n ...checkboxProps\n } = props;\n const [button, setButton] = React.useState(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setButton(node));\n const hasConsumerStoppedPropagationRef = React.useRef(false);\n const isFormControl = button ? form || !!button.closest(\"form\") : true;\n const [checked, setChecked] = useControllableState({\n prop: checkedProp,\n defaultProp: defaultChecked ?? false,\n onChange: onCheckedChange,\n caller: CHECKBOX_NAME\n });\n const initialCheckedStateRef = React.useRef(checked);\n React.useEffect(() => {\n const form2 = button?.form;\n if (form2) {\n const reset = () => setChecked(initialCheckedStateRef.current);\n form2.addEventListener(\"reset\", reset);\n return () => form2.removeEventListener(\"reset\", reset);\n }\n }, [button, setChecked]);\n return /* @__PURE__ */ jsxs(CheckboxProvider, { scope: __scopeCheckbox, state: checked, disabled, children: [\n /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n role: \"checkbox\",\n \"aria-checked\": isIndeterminate(checked) ? \"mixed\" : checked,\n \"aria-required\": required,\n \"data-state\": getState(checked),\n \"data-disabled\": disabled ? \"\" : void 0,\n disabled,\n value,\n ...checkboxProps,\n ref: composedRefs,\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n if (event.key === \"Enter\") event.preventDefault();\n }),\n onClick: composeEventHandlers(props.onClick, (event) => {\n setChecked((prevChecked) => isIndeterminate(prevChecked) ? true : !prevChecked);\n if (isFormControl) {\n hasConsumerStoppedPropagationRef.current = event.isPropagationStopped();\n if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation();\n }\n })\n }\n ),\n isFormControl && /* @__PURE__ */ jsx(\n CheckboxBubbleInput,\n {\n control: button,\n bubbles: !hasConsumerStoppedPropagationRef.current,\n name,\n value,\n checked,\n required,\n disabled,\n form,\n style: { transform: \"translateX(-100%)\" },\n defaultChecked: isIndeterminate(defaultChecked) ? false : defaultChecked\n }\n )\n ] });\n }\n);\nCheckbox.displayName = CHECKBOX_NAME;\nvar INDICATOR_NAME = \"CheckboxIndicator\";\nvar CheckboxIndicator = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeCheckbox, forceMount, ...indicatorProps } = props;\n const context = useCheckboxContext(INDICATOR_NAME, __scopeCheckbox);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || isIndeterminate(context.state) || context.state === true, children: /* @__PURE__ */ jsx(\n Primitive.span,\n {\n \"data-state\": getState(context.state),\n \"data-disabled\": context.disabled ? \"\" : void 0,\n ...indicatorProps,\n ref: forwardedRef,\n style: { pointerEvents: \"none\", ...props.style }\n }\n ) });\n }\n);\nCheckboxIndicator.displayName = INDICATOR_NAME;\nvar BUBBLE_INPUT_NAME = \"CheckboxBubbleInput\";\nvar CheckboxBubbleInput = React.forwardRef(\n ({\n __scopeCheckbox,\n control,\n checked,\n bubbles = true,\n defaultChecked,\n ...props\n }, forwardedRef) => {\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(ref, forwardedRef);\n const prevChecked = usePrevious(checked);\n const controlSize = useSize(control);\n React.useEffect(() => {\n const input = ref.current;\n if (!input) return;\n const inputProto = window.HTMLInputElement.prototype;\n const descriptor = Object.getOwnPropertyDescriptor(\n inputProto,\n \"checked\"\n );\n const setChecked = descriptor.set;\n if (prevChecked !== checked && setChecked) {\n const event = new Event(\"click\", { bubbles });\n input.indeterminate = isIndeterminate(checked);\n setChecked.call(input, isIndeterminate(checked) ? false : checked);\n input.dispatchEvent(event);\n }\n }, [prevChecked, checked, bubbles]);\n const defaultCheckedRef = React.useRef(isIndeterminate(checked) ? false : checked);\n return /* @__PURE__ */ jsx(\n Primitive.input,\n {\n type: \"checkbox\",\n \"aria-hidden\": true,\n defaultChecked: defaultChecked ?? defaultCheckedRef.current,\n ...props,\n tabIndex: -1,\n ref: composedRefs,\n style: {\n ...props.style,\n ...controlSize,\n position: \"absolute\",\n pointerEvents: \"none\",\n opacity: 0,\n margin: 0\n }\n }\n );\n }\n);\nCheckboxBubbleInput.displayName = BUBBLE_INPUT_NAME;\nfunction isIndeterminate(checked) {\n return checked === \"indeterminate\";\n}\nfunction getState(checked) {\n return isIndeterminate(checked) ? \"indeterminate\" : checked ? \"checked\" : \"unchecked\";\n}\nvar Root = Checkbox;\nvar Indicator = CheckboxIndicator;\nexport {\n Checkbox,\n CheckboxIndicator,\n Indicator,\n Root,\n createCheckboxScope\n};\n//# sourceMappingURL=index.mjs.map\n","import * as React from \"react\"\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\"\nimport { Check } from \"lucide-react\"\n\nimport { cn } from \"../../../utils/cn\"\n\nconst Checkbox = React.forwardRef<\n React.ElementRef<typeof CheckboxPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <CheckboxPrimitive.Root\n ref={ref}\n className={cn(\n \"peer h-4 w-4 shrink-0 rounded-sm border border-primary ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground\",\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n className={cn(\"flex items-center justify-center text-current\")}\n >\n <Check className=\"h-3 w-3\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n))\nCheckbox.displayName = CheckboxPrimitive.Root.displayName\n\nexport { Checkbox }","import * as React from \"react\"\n\nimport type {\n ToastActionElement,\n ToastProps,\n} from \"./toast\"\n\nconst TOAST_LIMIT = 1\nconst TOAST_REMOVE_DELAY = 1000000\n\ntype ToasterToast = ToastProps & {\n id: string\n title?: React.ReactNode\n description?: React.ReactNode\n action?: ToastActionElement\n}\n\nconst actionTypes = {\n ADD_TOAST: \"ADD_TOAST\",\n UPDATE_TOAST: \"UPDATE_TOAST\",\n DISMISS_TOAST: \"DISMISS_TOAST\",\n REMOVE_TOAST: \"REMOVE_TOAST\",\n} as const\n\nlet count = 0\n\nfunction genId() {\n count = (count + 1) % Number.MAX_SAFE_INTEGER\n return count.toString()\n}\n\ntype ActionType = typeof actionTypes\n\ntype Action =\n | {\n type: ActionType[\"ADD_TOAST\"]\n toast: ToasterToast\n }\n | {\n type: ActionType[\"UPDATE_TOAST\"]\n toast: Partial<ToasterToast>\n }\n | {\n type: ActionType[\"DISMISS_TOAST\"]\n toastId?: ToasterToast[\"id\"]\n }\n | {\n type: ActionType[\"REMOVE_TOAST\"]\n toastId?: ToasterToast[\"id\"]\n }\n\ninterface State {\n toasts: ToasterToast[]\n}\n\nconst toastTimeouts = new Map<string, ReturnType<typeof setTimeout>>()\n\nconst addToRemoveQueue = (toastId: string) => {\n if (toastTimeouts.has(toastId)) {\n return\n }\n\n const timeout = setTimeout(() => {\n toastTimeouts.delete(toastId)\n dispatch({\n type: \"REMOVE_TOAST\",\n toastId: toastId,\n })\n }, TOAST_REMOVE_DELAY)\n\n toastTimeouts.set(toastId, timeout)\n}\n\nexport const reducer = (state: State, action: Action): State => {\n switch (action.type) {\n case \"ADD_TOAST\":\n return {\n ...state,\n toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT),\n }\n\n case \"UPDATE_TOAST\":\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === action.toast.id ? { ...t, ...action.toast } : t\n ),\n }\n\n case \"DISMISS_TOAST\": {\n const { toastId } = action\n\n if (toastId) {\n addToRemoveQueue(toastId)\n } else {\n state.toasts.forEach((toast) => {\n addToRemoveQueue(toast.id)\n })\n }\n\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === toastId || toastId === undefined\n ? {\n ...t,\n open: false,\n }\n : t\n ),\n }\n }\n case \"REMOVE_TOAST\":\n if (action.toastId === undefined) {\n return {\n ...state,\n toasts: [],\n }\n }\n return {\n ...state,\n toasts: state.toasts.filter((t) => t.id !== action.toastId),\n }\n }\n}\n\nconst listeners: Array<(state: State) => void> = []\n\nlet memoryState: State = { toasts: [] }\n\nfunction dispatch(action: Action) {\n memoryState = reducer(memoryState, action)\n listeners.forEach((listener) => {\n listener(memoryState)\n })\n}\n\ntype Toast = Omit<ToasterToast, \"id\">\n\nfunction toast({ ...props }: Toast) {\n const id = genId()\n\n const update = (props: ToasterToast) =>\n dispatch({\n type: \"UPDATE_TOAST\",\n toast: { ...props, id },\n })\n const dismiss = () => dispatch({ type: \"DISMISS_TOAST\", toastId: id })\n\n dispatch({\n type: \"ADD_TOAST\",\n toast: {\n ...props,\n id,\n open: true,\n onOpenChange: (open) => {\n if (!open) dismiss()\n },\n },\n })\n\n return {\n id: id,\n dismiss,\n update,\n }\n}\n\nfunction useToast() {\n const [state, setState] = React.useState<State>(memoryState)\n\n React.useEffect(() => {\n listeners.push(setState)\n return () => {\n const index = listeners.indexOf(setState)\n if (index > -1) {\n listeners.splice(index, 1)\n }\n }\n }, [state])\n\n return {\n ...state,\n toast,\n dismiss: (toastId?: string) => dispatch({ type: \"DISMISS_TOAST\", toastId }),\n }\n}\n\nexport { useToast, toast }","// Removed i18next and react-i18next dependencies\n// Keeping a dummy i18n implementation to maintain compatibility\n\nconst dummyI18n = {\n // Placeholder implementation\n t: (key: string, options?: any) => {\n // For keys with replacement patterns like '{{value}}'\n if (options) {\n let result = key;\n Object.entries(options).forEach(([k, v]) => {\n result = result.replace(new RegExp(`{{${k}}}`, 'g'), String(v));\n });\n return result;\n }\n return key;\n },\n // No-op change language function\n changeLanguage: () => Promise.resolve(),\n // No-op add resource bundle\n addResourceBundle: () => true,\n};\n\nexport default dummyI18n;\n","import dummyI18n from './i18n';\n\n// Create a dummy hook that returns functions with the same API as useTranslation\nexport const useTranslation = () => {\n return {\n t: dummyI18n.t,\n i18n: dummyI18n,\n };\n};\n\nexport default useTranslation;","/**\n * Natural language data transformation service\n */\n\nexport interface TransformationChange {\n rowIndex: number;\n columnKey: string;\n columnIndex?: number; // Column index for direct array access\n oldValue: any;\n newValue: any;\n confidence: number;\n selected: boolean;\n}\n\nexport interface TransformationResponse {\n success: boolean;\n changes: TransformationChange[];\n summary: string;\n error?: string;\n tokensUsed?: number;\n}\n\nexport interface ValidationError {\n rowIndex: number;\n columnKey: string;\n message: string;\n value?: any;\n}\n\nexport interface TransformationRequest {\n prompt: string;\n data: any[];\n columnMapping: Record<string, any>;\n targetColumns?: string[];\n validationErrors?: ValidationError[];\n}\n\n/**\n * Generate data transformations based on natural language prompt\n * \n * @param prompt - Natural language description of the transformation\n * @param data - Current data rows\n * @param columnMapping - Mapping of columns\n * @param backendUrl - Backend API URL\n * @param importerKey - Importer key for authentication\n * @param targetColumns - Optional specific columns to transform\n * @param validationErrors - Optional validation errors for context\n * @returns Transformation preview with changes\n */\nexport async function generateTransformations(\n prompt: string,\n data: any[],\n columnMapping: Record<string, any>,\n backendUrl: string,\n importerKey: string,\n targetColumns?: string[],\n validationErrors?: ValidationError[]\n): Promise<TransformationResponse> {\n // Validate inputs\n if (!prompt || prompt.trim().length < 3) {\n return {\n success: false,\n changes: [],\n summary: \"\",\n error: \"Please describe the transformation you want to apply\"\n };\n }\n\n if (!backendUrl || !importerKey) {\n return {\n success: false,\n changes: [],\n summary: \"\",\n error: \"Missing configuration\"\n };\n }\n\n try {\n const response = await fetch(`${backendUrl}/api/v1/imports/key/transform`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n importerKey,\n prompt,\n data,\n columnMapping,\n targetColumns,\n validationErrors\n })\n });\n\n if (!response.ok) {\n // Handle rate limiting\n if (response.status === 429) {\n return {\n success: false,\n changes: [],\n summary: \"\",\n error: \"Rate limit exceeded. Please try again later.\"\n };\n }\n \n // Handle other errors\n const errorData = await response.json().catch(() => ({}));\n return {\n success: false,\n changes: [],\n summary: \"\",\n error: errorData.error || \"Failed to generate transformations\"\n };\n }\n\n const result: TransformationResponse = await response.json();\n \n // Ensure all changes have the selected property\n if (result.changes) {\n result.changes = result.changes.map(change => ({\n ...change,\n selected: change.selected !== false // Default to true\n }));\n }\n \n return result;\n \n } catch (error) {\n console.error('Transformation service error:', error);\n return {\n success: false,\n changes: [],\n summary: \"\",\n error: \"Network error. Please check your connection.\"\n };\n }\n}\n\n/**\n * Apply selected transformations to the data\n * \n * @param data - Original data rows\n * @param changes - List of transformation changes\n * @param onlySelected - Whether to apply only selected changes\n * @returns Modified data with transformations applied\n */\nexport function applyTransformations(\n data: any[],\n changes: TransformationChange[],\n onlySelected: boolean = true\n): any[] {\n // Create a deep copy of the data\n const modifiedData = JSON.parse(JSON.stringify(data));\n \n // Apply each change\n for (const change of changes) {\n // Skip if not selected and we're only applying selected\n if (onlySelected && !change.selected) {\n continue;\n }\n \n const { rowIndex, columnIndex, newValue } = change;\n \n // Validate row index\n if (rowIndex < 0 || rowIndex >= modifiedData.length) {\n console.warn(`Invalid row index: ${rowIndex}`);\n continue;\n }\n \n // Apply the transformation\n const row = modifiedData[rowIndex];\n if (row && row.values && columnIndex !== undefined) {\n // Direct array access using columnIndex\n row.values[columnIndex] = newValue;\n }\n }\n \n return modifiedData;\n}\n\n/**\n * Count selected changes\n */\nexport function countSelectedChanges(changes: TransformationChange[]): number {\n return changes.filter(c => c.selected).length;\n}\n\n/**\n * Toggle selection for a specific change\n */\nexport function toggleChangeSelection(\n changes: TransformationChange[],\n index: number\n): TransformationChange[] {\n return changes.map((change, i) => \n i === index \n ? { ...change, selected: !change.selected }\n : change\n );\n}\n\n/**\n * Select or deselect all changes\n */\nexport function setAllChangesSelection(\n changes: TransformationChange[],\n selected: boolean\n): TransformationChange[] {\n return changes.map(change => ({ ...change, selected }));\n}\n\n/**\n * Common transformation prompts for quick access\n */\nexport const COMMON_PROMPTS = [\n \"Convert all dates to MM/DD/YYYY format\",\n \"Convert all dates to YYYY-MM-DD format\",\n \"Remove special characters from phone numbers\",\n \"Format phone numbers as (XXX) XXX-XXXX\",\n \"Capitalize all names\",\n \"Convert text to uppercase\",\n \"Convert text to lowercase\",\n \"Trim extra spaces\",\n \"Fill empty values with 'N/A'\",\n \"Remove dollar signs and commas from amounts\"\n];","import React, { useState, useCallback, useRef } from 'react';\nimport {\n Dialog,\n DialogContent,\n DialogHeader,\n DialogTitle,\n DialogFooter,\n} from '../../../components/ui/dialog';\nimport { Button } from '../../../components/ui/button';\nimport { Input } from '../../../components/ui/input';\nimport { Checkbox } from '../../../components/ui/checkbox';\nimport { Alert, AlertDescription } from '../../../components/ui/alert';\nimport { useToast } from '../../../components/ui/use-toast';\nimport { Sparkles, X, Check, Info } from 'lucide-react';\nimport { useTranslation } from '../../../../i18n/useTranslation';\nimport {\n generateTransformations,\n countSelectedChanges,\n toggleChangeSelection,\n setAllChangesSelection,\n TransformationChange,\n COMMON_PROMPTS\n} from '../../../services/transformation';\n\ninterface TransformModalProps {\n isOpen: boolean;\n onClose: () => void;\n data: any[];\n columnMapping: Record<string, any>;\n backendUrl: string;\n importerKey: string;\n validationErrors?: Array<{\n rowIndex: number;\n columnKey: string;\n message: string;\n value?: any;\n }>;\n onApplyTransformations: (changes: TransformationChange[]) => void;\n}\n\nexport default function TransformModal({\n isOpen,\n onClose,\n data,\n columnMapping,\n backendUrl,\n importerKey,\n validationErrors,\n onApplyTransformations\n}: TransformModalProps) {\n const { t } = useTranslation();\n const { toast } = useToast();\n const promptInputRef = useRef<HTMLInputElement>(null);\n\n // State\n const [prompt, setPrompt] = useState('');\n const [changes, setChanges] = useState<TransformationChange[]>([]);\n const [summary, setSummary] = useState('');\n const [error, setError] = useState<string | null>(null);\n const [isGenerating, setIsGenerating] = useState(false);\n const [showExamples, setShowExamples] = useState(false);\n \n // Determine if we're in error-fixing mode\n const hasValidationErrors = validationErrors && validationErrors.length > 0;\n\n // Generate transformations\n const handleGenerate = useCallback(async (customPrompt?: string) => {\n const effectivePrompt = customPrompt || prompt;\n \n if (!effectivePrompt.trim()) {\n setError('Please describe the transformation');\n return;\n }\n\n setIsGenerating(true);\n setError(null);\n setChanges([]);\n setSummary('');\n\n try {\n const result = await generateTransformations(\n effectivePrompt,\n data,\n columnMapping,\n backendUrl,\n importerKey,\n undefined, // targetColumns\n validationErrors\n );\n\n if (result.success && result.changes.length > 0) {\n setChanges(result.changes);\n setSummary(result.summary);\n } else if (result.error) {\n setError(result.error);\n } else {\n setError('No transformations generated. Try a different description.');\n }\n } catch (err) {\n setError('Failed to generate transformations');\n } finally {\n setIsGenerating(false);\n }\n }, [prompt, data, columnMapping, backendUrl, importerKey, validationErrors]);\n \n // Fix all validation errors with one click\n const handleFixAllErrors = useCallback(() => {\n handleGenerate('fix errors');\n }, [handleGenerate]);\n\n // Apply transformations\n const handleApply = useCallback((applyAll: boolean) => {\n const selectedChanges = applyAll \n ? setAllChangesSelection(changes, true)\n : changes.filter(c => c.selected);\n \n // Pass the selected changes directly to the parent\n onApplyTransformations(selectedChanges);\n \n toast({\n title: 'Transformations applied',\n description: `${selectedChanges.length} changes applied successfully`,\n });\n \n onClose();\n }, [changes, onApplyTransformations, onClose, toast]);\n\n // Toggle change selection\n const handleToggleChange = useCallback((index: number) => {\n setChanges(prev => toggleChangeSelection(prev, index));\n }, []);\n\n // Select all/none\n const handleSelectAll = useCallback((selected: boolean) => {\n setChanges(prev => setAllChangesSelection(prev, selected));\n }, []);\n\n // Use example prompt\n const handleUseExample = useCallback((examplePrompt: string) => {\n setPrompt(examplePrompt);\n setShowExamples(false);\n promptInputRef.current?.focus();\n }, []);\n\n // Reset modal\n const handleClose = useCallback(() => {\n setPrompt('');\n setChanges([]);\n setSummary('');\n setError(null);\n setShowExamples(false);\n onClose();\n }, [onClose]);\n\n const selectedCount = countSelectedChanges(changes);\n const hasChanges = changes.length > 0;\n\n return (\n <Dialog open={isOpen} onOpenChange={handleClose}>\n <DialogContent className=\"max-w-[800px]\">\n <DialogHeader>\n <DialogTitle className=\"flex items-center gap-2\">\n <Sparkles className=\"h-5 w-5\" />\n {t('Transform data with AI')}\n </DialogTitle>\n </DialogHeader>\n \n <div className=\"flex-1 overflow-y-auto min-h-0 space-y-4\">\n {/* Simplified UI when validation errors exist */}\n {hasValidationErrors && !hasChanges && (\n <>\n <Alert>\n <Info className=\"h-4 w-4\" />\n <AlertDescription>\n <strong>{validationErrors.length} validation error{validationErrors.length > 1 ? 's' : ''} detected</strong>\n <br />\n Click \"Fix All Errors\" to automatically correct validation issues in your data.\n </AlertDescription>\n </Alert>\n \n <div className=\"flex justify-center py-4\">\n <Button\n type=\"button\"\n size=\"lg\"\n onClick={handleFixAllErrors}\n isLoading={isGenerating}\n disabled={isGenerating}\n className=\"px-8\"\n >\n <Sparkles className=\"mr-2 h-5 w-5\" />\n {isGenerating ? t('Fixing errors...') : t('Fix All Errors')}\n </Button>\n </div>\n </>\n )}\n \n {/* Standard prompt input (only shown when no validation errors) */}\n {!hasValidationErrors && !hasChanges && (\n <div>\n <div className=\"flex gap-2 mb-2\">\n <Input\n ref={promptInputRef}\n placeholder={t(\"Describe the transformation (e.g., 'Convert dates to MM/DD/YYYY')\")}\n value={prompt}\n onChange={(e) => setPrompt(e.target.value)}\n onKeyPress={(e) => e.key === 'Enter' && handleGenerate()}\n disabled={isGenerating}\n className=\"h-10\"\n />\n <Button\n type=\"button\"\n onClick={() => handleGenerate()}\n isLoading={isGenerating}\n disabled={isGenerating}\n >\n <Sparkles className=\"mr-2 h-4 w-4\" />\n {isGenerating ? t('Generating') : t('Generate')}\n </Button>\n </div>\n \n {/* Example prompts */}\n <button\n className=\"text-xs text-blue-600 hover:underline\"\n onClick={() => setShowExamples(!showExamples)}\n >\n {showExamples ? t('Hide examples') : t('Show examples')}\n </button>\n \n {showExamples && (\n <div className=\"mt-2 p-2 bg-gray-50 rounded-md\">\n <p className=\"text-xs mb-1 font-bold\">\n {t('Click to use:')}\n </p>\n <div className=\"flex flex-wrap gap-1\">\n {COMMON_PROMPTS.slice(0, 5).map((example, i) => (\n <span\n key={i}\n className=\"px-2 py-1 text-xs bg-gray-200 rounded cursor-pointer hover:bg-blue-100\"\n onClick={() => handleUseExample(example)}\n >\n {example}\n </span>\n ))}\n </div>\n </div>\n )}\n </div>\n )}\n\n {/* Error Alert */}\n {error && (\n <Alert variant=\"destructive\">\n <AlertDescription>{error}</AlertDescription>\n </Alert>\n )}\n\n {/* Loading State */}\n {isGenerating && (\n <div className=\"text-center py-8\">\n <div className=\"inline-block animate-spin rounded-full h-8 w-8 border-b-2 border-blue-500\"></div>\n <p className=\"mt-2 text-gray-600\">\n {t('Analyzing data and generating transformations...')}\n </p>\n </div>\n )}\n\n {/* Changes Preview */}\n {hasChanges && !isGenerating && (\n <>\n <div>\n <div className=\"flex justify-between items-center mb-2\">\n <span className=\"font-bold\">\n {summary || `${changes.length} transformation${changes.length !== 1 ? 's' : ''} generated`}\n </span>\n <div className=\"flex gap-2\">\n <Button\n type=\"button\"\n size=\"sm\"\n variant=\"outline\"\n onClick={() => handleSelectAll(true)}\n >\n {t('Select all')}\n </Button>\n <Button\n type=\"button\"\n size=\"sm\"\n variant=\"outline\"\n onClick={() => handleSelectAll(false)}\n >\n {t('Deselect all')}\n </Button>\n </div>\n </div>\n \n <div className=\"max-h-[300px] overflow-y-auto border border-gray-200 rounded-md p-2\">\n <div className=\"space-y-1\">\n {changes.slice(0, 100).map((change, index) => (\n <div\n key={index}\n className={`flex items-start gap-2 p-2 rounded-md border cursor-pointer ${\n change.selected\n ? 'bg-blue-50 border-blue-200 hover:bg-blue-100'\n : 'bg-white border-gray-100 hover:bg-gray-50'\n }`}\n onClick={() => handleToggleChange(index)}\n >\n <Checkbox\n checked={change.selected}\n onCheckedChange={() => handleToggleChange(index)}\n onClick={(e) => e.stopPropagation()}\n />\n <div className=\"flex-1 space-y-0\">\n <div className=\"text-sm text-gray-900 flex items-center gap-2\">\n <span className=\"line-through\">\n {String(change.oldValue || 'empty')}\n </span>\n <span>→</span>\n <span className=\"text-green-600 font-bold\">\n {String(change.newValue)}\n </span>\n </div>\n <p className=\"text-xs text-gray-600\">\n Row {change.rowIndex + 1}, {change.columnKey}\n </p>\n </div>\n </div>\n ))}\n \n {changes.length > 100 && (\n <p className=\"text-sm text-gray-500 text-center\">\n {t(`Showing first 100 of ${changes.length} changes`)}\n </p>\n )}\n </div>\n </div>\n \n <p className=\"text-sm text-gray-600 mt-1\">\n {selectedCount} {t('selected')}\n </p>\n </div>\n </>\n )}\n </div>\n\n <DialogFooter>\n <div className=\"flex gap-3\">\n <Button type=\"button\" variant=\"outline\" onClick={handleClose}>\n {t('Cancel')}\n </Button>\n \n {hasChanges && (\n <>\n <Button\n type=\"button\"\n variant=\"outline\"\n onClick={() => handleApply(false)}\n disabled={selectedCount === 0}\n >\n {t(`Apply ${selectedCount} selected`)}\n </Button>\n <Button\n type=\"button\"\n onClick={() => handleApply(true)}\n >\n <Check className=\"mr-2 h-4 w-4\" />\n {t('Apply all')}\n </Button>\n </>\n )}\n </div>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n );\n}","import { Column, Validator } from '../types';\n\n/**\n * Validates a single value against a column's validators\n * @param value The value to validate\n * @param column The column definition with validators\n * @returns Error message if validation fails, null if valid\n */\nexport function validateColumn(value: any, column: Column): string | null {\n const strValue = String(value || '').trim();\n \n // Check validators array if present\n if (column.validators) {\n for (const validator of column.validators) {\n const error = runValidator(strValue, validator, column);\n if (error) return error;\n }\n }\n \n // Type-based validation (automatic based on column type)\n if (strValue) { // Only validate non-empty values for type\n switch (column.type) {\n case 'email':\n if (!/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(strValue)) {\n return 'Invalid email address';\n }\n break;\n \n case 'number':\n if (isNaN(Number(strValue))) {\n return 'Must be a number';\n }\n break;\n \n case 'phone':\n // Remove non-digits and check minimum length\n const digits = strValue.replace(/\\D/g, '');\n if (digits.length < 10) {\n return 'Invalid phone number (must be at least 10 digits)';\n }\n break;\n \n case 'date':\n // Try to parse the date\n const date = new Date(strValue);\n if (isNaN(date.getTime())) {\n return 'Invalid date format';\n }\n break;\n \n case 'select':\n // Check if value is in options\n if (column.options && !column.options.includes(strValue)) {\n return `Must be one of: ${column.options.join(', ')}`;\n }\n break;\n }\n }\n \n return null;\n}\n\n/**\n * Runs a single validator\n */\nfunction runValidator(value: string, validator: Validator, column: Column): string | null {\n switch (validator.type) {\n case 'required':\n if (!value || value === '') {\n return validator.message || `${column.label} is required`;\n }\n break;\n \n case 'unique':\n // Unique validation needs to be handled at batch level\n // Return null here, handle in batch validation\n break;\n \n case 'regex':\n if (value && !new RegExp(validator.pattern).test(value)) {\n return validator.message || `${column.label} format is invalid`;\n }\n break;\n \n case 'min':\n const numValue = Number(value);\n if (!isNaN(numValue) && numValue < validator.value) {\n return validator.message || `${column.label} must be at least ${validator.value}`;\n }\n break;\n \n case 'max':\n const numVal = Number(value);\n if (!isNaN(numVal) && numVal > validator.value) {\n return validator.message || `${column.label} must be at most ${validator.value}`;\n }\n break;\n \n case 'min_length':\n if (value && value.length < validator.value) {\n return validator.message || `${column.label} must be at least ${validator.value} characters`;\n }\n break;\n \n case 'max_length':\n if (value && value.length > validator.value) {\n return validator.message || `${column.label} must be at most ${validator.value} characters`;\n }\n break;\n }\n \n return null;\n}\n\n/**\n * Validates uniqueness across all rows for a column\n * @param rows All data rows\n * @param columnIndex The column index to check\n * @param column The column definition\n * @returns Array of row indices that have duplicate values\n */\nexport function validateUniqueness(\n rows: any[][],\n columnIndex: number,\n column: Column\n): number[] {\n const duplicateIndices: number[] = [];\n const seen = new Map<string, number>();\n \n rows.forEach((row, rowIndex) => {\n const value = String(row[columnIndex] || '').trim().toLowerCase();\n if (value) {\n if (seen.has(value)) {\n // Mark both the original and duplicate as errors\n const originalIndex = seen.get(value)!;\n if (!duplicateIndices.includes(originalIndex)) {\n duplicateIndices.push(originalIndex);\n }\n duplicateIndices.push(rowIndex);\n } else {\n seen.set(value, rowIndex);\n }\n }\n });\n \n return duplicateIndices;\n}\n\n/**\n * Batch validation for all rows\n * @param rows Data rows to validate\n * @param columns Column definitions\n * @returns Validation results with errors per cell\n */\nexport function validateBatch(\n rows: any[][],\n columns: Column[]\n): Map<string, string> {\n const errors = new Map<string, string>();\n \n // Validate each cell\n rows.forEach((row, rowIndex) => {\n columns.forEach((column, colIndex) => {\n const value = row[colIndex];\n const error = validateColumn(value, column);\n if (error) {\n errors.set(`${rowIndex}-${colIndex}`, error);\n }\n });\n });\n \n // Check uniqueness for columns with unique validator\n columns.forEach((column, colIndex) => {\n const hasUniqueValidator = column.validators?.some(v => v.type === 'unique');\n if (hasUniqueValidator) {\n const duplicateIndices = validateUniqueness(rows, colIndex, column);\n duplicateIndices.forEach(rowIndex => {\n const key = `${rowIndex}-${colIndex}`;\n if (!errors.has(key)) {\n const validator = column.validators?.find(v => v.type === 'unique');\n errors.set(key, validator?.message || `${column.label} must be unique`);\n }\n });\n }\n });\n \n return errors;\n}","import { Column } from '../types';\n\n// Transformation types\nexport type Transformer = \n | { type: 'trim' }\n | { type: 'uppercase' }\n | { type: 'lowercase' }\n | { type: 'capitalize' }\n | { type: 'remove_special_chars' }\n | { type: 'normalize_phone' }\n | { type: 'normalize_date'; format?: string }\n | { type: 'default'; value: string }\n | { type: 'replace'; find: string; replace: string }\n | { type: 'custom'; fn: (value: any) => any };\n\n/**\n * Apply transformations to a value\n * @param value The value to transform\n * @param transformations Array of transformations to apply\n * @returns Transformed value\n */\nexport function applyTransformations(value: any, transformations?: Transformer[]): any {\n if (!transformations || transformations.length === 0) {\n return value;\n }\n \n let result = value;\n \n for (const transform of transformations) {\n result = applyTransformation(result, transform);\n }\n \n return result;\n}\n\n/**\n * Apply a single transformation\n */\nfunction applyTransformation(value: any, transform: Transformer): any {\n const strValue = String(value || '');\n \n switch (transform.type) {\n case 'trim':\n return strValue.trim();\n \n case 'uppercase':\n return strValue.toUpperCase();\n \n case 'lowercase':\n return strValue.toLowerCase();\n \n case 'capitalize':\n return strValue\n .split(' ')\n .map(word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())\n .join(' ');\n \n case 'remove_special_chars':\n return strValue.replace(/[^a-zA-Z0-9\\s]/g, '');\n \n case 'normalize_phone':\n // Remove all non-digits\n const digits = strValue.replace(/\\D/g, '');\n // Format as (XXX) XXX-XXXX for US numbers\n if (digits.length === 10) {\n return `(${digits.slice(0, 3)}) ${digits.slice(3, 6)}-${digits.slice(6)}`;\n } else if (digits.length === 11 && digits[0] === '1') {\n // Handle +1 prefix\n return `(${digits.slice(1, 4)}) ${digits.slice(4, 7)}-${digits.slice(7)}`;\n }\n return strValue; // Return original if can't format\n \n case 'normalize_date':\n // Try to parse various date formats\n let date = new Date(strValue);\n \n // If direct parsing fails, try common formats\n if (isNaN(date.getTime())) {\n // Try MM/DD/YYYY or MM-DD-YYYY\n const parts = strValue.split(/[-\\/]/);\n if (parts.length === 3) {\n // Try different interpretations\n date = new Date(`${parts[2]}-${parts[0].padStart(2, '0')}-${parts[1].padStart(2, '0')}`);\n if (isNaN(date.getTime())) {\n // Try YYYY/MM/DD\n date = new Date(`${parts[0]}-${parts[1].padStart(2, '0')}-${parts[2].padStart(2, '0')}`);\n }\n }\n }\n \n if (!isNaN(date.getTime())) {\n // Default to ISO format if no format specified\n const format = transform.format || 'YYYY-MM-DD';\n return formatDate(date, format);\n }\n return strValue;\n \n case 'default':\n // Apply default value if the string is empty or only whitespace\n return strValue.trim() === '' ? transform.value : strValue;\n \n case 'replace':\n try {\n return strValue.replace(new RegExp(transform.find, 'g'), transform.replace);\n } catch (error) {\n // If regex is invalid, fallback to simple string replace\n return strValue.split(transform.find).join(transform.replace);\n }\n \n case 'custom':\n try {\n return transform.fn(value);\n } catch (error) {\n // If custom function fails, return original value\n return value;\n }\n \n default:\n return value;\n }\n}\n\n/**\n * Simple date formatter\n */\nfunction formatDate(date: Date, format: string): string {\n const year = date.getFullYear();\n const month = String(date.getMonth() + 1).padStart(2, '0');\n const day = String(date.getDate()).padStart(2, '0');\n \n return format\n .replace('YYYY', String(year))\n .replace('MM', month)\n .replace('DD', day);\n}","import React, { useState, useMemo, FormEvent, useRef, useEffect } from 'react';\nimport { Button } from '../../components/ui/button';\nimport { Switch } from '../../components/ui/switch';\nimport { Alert, AlertTitle, AlertDescription } from '../../components/ui/alert';\nimport { Tooltip } from '../../components/ui/tooltip';\nimport { Wrench, AlertTriangle } from 'lucide-react';\nimport { ValidationProps } from './types';\nimport TransformModal from './components/TransformModal';\nimport { validateColumn, validateUniqueness } from '../../../validation/validator';\nimport { applyTransformations } from '../../../validation/transformer';\n\n\n// Validation component for checking imported data\nexport default function Validation({\n columns,\n data: fileData,\n columnMapping,\n selectedHeaderRow,\n onSuccess,\n onCancel,\n isSubmitting,\n backendUrl,\n importerKey,\n filterInvalidRows,\n disableOnInvalidRows,\n}: ValidationProps) {\n // State management\n const [errors, setErrors] = useState<Array<{rowIndex: number, columnIndex: number, message: string}>>([]);\n const [filterMode, setFilterMode] = useState<'all' | 'valid' | 'error'>('all');\n const [isTransformModalOpen, setIsTransformModalOpen] = useState(false);\n\n // Ref for scrollable section to reset scroll position\n const scrollableSectionRef = useRef<HTMLDivElement>(null);\n\n // Data extraction\n const headerRowIndex = selectedHeaderRow || 0;\n const headerRow = fileData.rows[headerRowIndex];\n\n // Make dataRows a state variable so changes persist\n const [dataRows, setDataRows] = useState(() => fileData.rows.slice(headerRowIndex + 1));\n\n // Column mapping\n const includedColumns = useMemo(() => {\n return Object.entries(columnMapping)\n .filter(([_, mapping]) => mapping.include)\n .map(([index]) => parseInt(index));\n }, [columnMapping]);\n\n // Headers\n const headers = useMemo(() => {\n return includedColumns.map(colIdx => String(headerRow.values[colIdx]));\n }, [includedColumns, headerRow]);\n\n // Validation tracking\n const shouldValidateRef = React.useRef(true);\n\n // Reset scroll position when component mounts\n useEffect(() => {\n if (scrollableSectionRef.current) {\n scrollableSectionRef.current.scrollTop = 0;\n }\n }, []); // Empty dependency array ensures this runs only on mount\n\n // Validate column mappings\n React.useEffect(() => {\n if (!columns) return;\n // Check if mappings match column ids\n const columnIds = columns.map(col => col.id);\n const mismatches = Object.entries(columnMapping).filter(([_, mapping]) => {\n if (!mapping.include) return false;\n return !columnIds.includes((mapping as any).id || (mapping as any).key);\n });\n\n if (mismatches.length > 0) {\n // Handle mismatches if needed\n }\n }, [columns, columnMapping]);\n\n // Data validation\n const validateData = React.useCallback(() => {\n if (!shouldValidateRef.current) return;\n\n const newErrors: Array<{rowIndex: number, columnIndex: number, message: string}> = [];\n\n // For each row in the data\n dataRows.forEach((row, rowIdx) => {\n const displayRowIndex = rowIdx + headerRowIndex + 1;\n\n // For each column mapping\n Object.entries(columnMapping).forEach(([colIndexStr, mapping]) => {\n if (!mapping.include) return;\n\n // The column index in the data\n const colIdx = parseInt(colIndexStr);\n if (isNaN(colIdx)) return;\n\n // The key in the column mapping\n const columnId = (mapping as any).id || (mapping as any).key;\n\n // Find the corresponding column\n const column = columns?.find(col => col.id === columnId);\n if (!column) {\n return;\n }\n\n // Get the value directly from the row\n const value = row.values[colIdx];\n\n // Use the validateColumn function from validator.ts\n const validationError = validateColumn(value, column);\n if (validationError) {\n newErrors.push({\n rowIndex: displayRowIndex,\n columnIndex: colIdx,\n message: validationError\n });\n }\n });\n });\n\n // Check uniqueness for columns with unique validator\n columns?.forEach((column) => {\n const hasUniqueValidator = column.validators?.some(v => v.type === 'unique');\n if (hasUniqueValidator) {\n // Find the column index in the mapping\n const mappingEntry = Object.entries(columnMapping).find(([_, mapping]) => \n mapping.include && ((mapping as any).id || (mapping as any).key) === column.id\n );\n \n if (mappingEntry) {\n const colIdx = parseInt(mappingEntry[0]);\n \n // Prepare data for uniqueness check\n const rowValues = dataRows.map(row => row.values);\n const duplicateIndices = validateUniqueness(rowValues, colIdx, column);\n \n duplicateIndices.forEach(rowIdx => {\n const displayRowIndex = rowIdx + headerRowIndex + 1;\n const existingError = newErrors.find(\n err => err.rowIndex === displayRowIndex && err.columnIndex === colIdx\n );\n \n if (!existingError) {\n const validator = column.validators?.find(v => v.type === 'unique');\n newErrors.push({\n rowIndex: displayRowIndex,\n columnIndex: colIdx,\n message: validator?.message || `${column.label} must be unique`\n });\n }\n });\n }\n }\n });\n\n setErrors(newErrors);\n shouldValidateRef.current = false;\n }, [dataRows, columnMapping, columns, headerRowIndex]);\n\n // Trigger validation when data changes\n React.useEffect(() => {\n shouldValidateRef.current = true;\n validateData();\n }, [dataRows, validateData]);\n\n // Cell editing\n const handleCellEdit = React.useCallback((rowIdx: number, colIdx: number, value: string) => {\n // Only update if value actually changed\n if (dataRows[rowIdx]?.values[colIdx] === value) return;\n\n // Create a copy of dataRows and update the specific value\n setDataRows(prevRows => {\n const updatedRows = [...prevRows];\n if (updatedRows[rowIdx] && updatedRows[rowIdx].values) {\n // Deep copy the specific row to avoid mutation\n updatedRows[rowIdx] = {\n ...updatedRows[rowIdx],\n values: [...updatedRows[rowIdx].values]\n };\n updatedRows[rowIdx].values[colIdx] = value;\n }\n // Reset validation flag to trigger revalidation\n shouldValidateRef.current = true;\n return updatedRows;\n });\n\n shouldValidateRef.current = true;\n }, [dataRows]);\n\n // Row filtering with counts\n const { visibleRows, validCount, errorCount } = useMemo(() => {\n const errorRowIndices = new Set(\n errors.map(err => err.rowIndex - headerRowIndex - 1)\n );\n\n const validRows = dataRows.filter((_, idx) => !errorRowIndices.has(idx));\n const errorRows = dataRows.filter((_, idx) => errorRowIndices.has(idx));\n\n let filtered: typeof dataRows;\n if (filterMode === 'valid') {\n filtered = validRows;\n } else if (filterMode === 'error') {\n filtered = errorRows;\n } else {\n filtered = dataRows;\n }\n\n return {\n visibleRows: filtered,\n validCount: validRows.length,\n errorCount: errorRows.length\n };\n }, [dataRows, filterMode, errors, headerRowIndex]);\n\n // Error tracking\n const errorTracking = useMemo(() => {\n const indices = new Set<number>();\n const rowObjects = new Set<number>();\n\n errors.forEach(err => {\n // Convert from display row index to actual data row index\n const dataRowIdx = err.rowIndex - headerRowIndex - 1;\n if (dataRowIdx >= 0 && dataRowIdx < dataRows.length) {\n indices.add(dataRowIdx);\n rowObjects.add(dataRows[dataRowIdx]?.index || -1);\n }\n });\n\n return {\n indices, // For filtering rows\n objects: Array.from(rowObjects).filter(idx => idx !== -1), // For UI display\n count: indices.size // For quick access to error count\n };\n }, [errors, headerRowIndex, dataRows]);\n\n // Form submission\n const handleSubmit = (e: FormEvent) => {\n e.preventDefault();\n\n if (disableOnInvalidRows && errors.length > 0) {\n return; // Don't submit if disableOnInvalidRows is true and there are errors\n }\n\n // Filter out rows with errors if filterInvalidRows is enabled\n const filteredData = filterInvalidRows\n ? dataRows.filter((_, rowIdx) => !errorTracking.indices.has(rowIdx))\n : dataRows;\n\n // Apply transformations to the filtered data\n const transformedData = filteredData.map(row => {\n const newRow = { ...row };\n const transformedValues = row.values.map((value, colIdx) => {\n // Only transform included columns\n if (!includedColumns.includes(colIdx)) return value;\n \n // Get the column mapping\n const mapping = columnMapping[colIdx];\n if (!mapping || !((mapping as any).id || (mapping as any).key)) return value;\n \n // Find the column definition\n const column = columns?.find(c => c.id === ((mapping as any).id || (mapping as any).key));\n if (!column || !column.transformations) return value;\n \n // Apply transformations\n return applyTransformations(value, column.transformations);\n });\n \n newRow.values = transformedValues;\n return newRow;\n });\n \n // Call onSuccess with the transformed data\n onSuccess({\n ...fileData,\n rows: [headerRow, ...transformedData]\n });\n };\n\n return (\n <form onSubmit={handleSubmit} className=\"flex flex-col h-full\">\n <div className=\"px-6 py-4 border-b\">\n <h2 className=\"text-xl font-semibold\">Validate Data</h2>\n <p className=\"text-sm text-gray-600 mt-1\">Review and correct any errors in your data before importing.</p>\n </div>\n\n <div className=\"px-6 py-4 border-b bg-gray-50\">\n {filterInvalidRows && errorTracking.count > 0 && (\n <Alert className=\"mb-4\">\n <AlertTriangle className=\"h-4 w-4\" />\n <AlertTitle>Invalid Rows Will Be Filtered</AlertTitle>\n <AlertDescription>\n {`${errorTracking.count} ${errorTracking.count === 1 ? 'row' : 'rows'} with validation errors will be excluded from the import. You can fix the errors to include these rows.`}\n </AlertDescription>\n </Alert>\n )}\n\n <div className=\"\">\n <div className=\"flex justify-between items-center\">\n <div className=\"flex space-x-1 p-1 bg-gray-100 rounded-lg\">\n <button\n type=\"button\"\n className={`px-4 py-2 rounded-md text-sm font-medium transition-colors ${\n filterMode === 'all' \n ? 'bg-white text-gray-900 shadow-sm' \n : 'text-gray-600 hover:text-gray-900'\n }`}\n onClick={() => setFilterMode('all')}\n >\n All <span className=\"ml-2 px-2 py-0.5 bg-gray-200 rounded-full text-xs\">{dataRows.length}</span>\n </button>\n <button\n type=\"button\"\n className={`px-4 py-2 rounded-md text-sm font-medium transition-colors ${\n filterMode === 'valid' \n ? 'bg-white text-gray-900 shadow-sm' \n : 'text-gray-600 hover:text-gray-900'\n }`}\n onClick={() => setFilterMode('valid')}\n >\n Valid <span className=\"ml-2 px-2 py-0.5 bg-green-100 text-green-700 rounded-full text-xs\">{validCount}</span>\n </button>\n <button\n type=\"button\"\n className={`px-4 py-2 rounded-md text-sm font-medium transition-colors ${\n filterMode === 'error' \n ? 'bg-white text-red-600 shadow-sm' \n : 'text-red-600 hover:text-red-700'\n }`}\n onClick={() => setFilterMode('error')}\n >\n Error <span className=\"ml-2 px-2 py-0.5 bg-red-100 text-red-700 rounded-full text-xs\">{errorCount}</span>\n </button>\n </div>\n <div className=\"flex items-center space-x-2\">\n {backendUrl && importerKey && errorCount > 0 && (\n <Tooltip content=\"Use AI to automatically fix validation errors\">\n <Button\n type=\"button\"\n size=\"sm\"\n onClick={() => setIsTransformModalOpen(true)}\n variant=\"default\"\n className=\"shadow-sm\"\n >\n <Wrench className=\"mr-2 h-4 w-4\" />\n Fix errors\n </Button>\n </Tooltip>\n )}\n </div>\n </div>\n </div>\n </div>\n\n <div className=\"flex-1 overflow-auto\" ref={scrollableSectionRef}>\n <div className=\"min-w-full\">\n <table className=\"border-collapse\" style={{ minWidth: '100%' }}>\n <thead className=\"bg-gray-50 border-b-2 border-gray-200\" style={{ position: 'sticky', top: 0, zIndex: 10 }}>\n <tr>\n <th className=\"text-left px-6 py-3 text-sm font-semibold text-gray-700 bg-gray-50 border-r border-gray-200\" style={{ position: 'sticky', left: 0, zIndex: 11, minWidth: '60px', width: '60px' }}>#</th>\n {headers.map((header, idx) => (\n <th key={idx} className=\"text-left px-6 py-3 text-sm font-semibold text-gray-700 bg-gray-50\" style={{ minWidth: '150px' }}>\n <div>{header}</div>\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {visibleRows.map((row, rowIdx) => {\n const actualRowIdx = dataRows.indexOf(row);\n const displayRowIndex = actualRowIdx + headerRowIndex + 1;\n const rowHasError = errors.some(err => err.rowIndex === displayRowIndex);\n\n return (\n <tr key={rowIdx} className={`border-b border-gray-200 hover:bg-gray-50 transition-colors ${rowHasError ? 'bg-red-50 hover:bg-red-100' : ''}`}>\n <td className=\"px-6 py-3 text-sm text-gray-700 border-r border-gray-200\" style={{ position: 'sticky', left: 0, zIndex: 5, backgroundColor: rowHasError ? '#FEF2F2' : '#F9FAFB', minWidth: '60px', width: '60px' }}>\n <span>{displayRowIndex + 1}</span>\n </td>\n {includedColumns.map((colIdx, idx) => {\n const value = row.values[colIdx];\n\n const error = errors.find(\n err => err.rowIndex === displayRowIndex && err.columnIndex === colIdx\n );\n\n return (\n <td key={idx} className=\"px-6 py-3\" style={{ minWidth: '150px' }}>\n <div className=\"relative\">\n <input\n type=\"text\"\n value={String(value || '')}\n onChange={(e) => handleCellEdit(actualRowIdx, colIdx, e.target.value)}\n tabIndex={0}\n className={`w-full px-3 py-2 text-sm border rounded focus:outline-none focus:ring-2 focus:ring-blue-500 transition-colors ${error ? 'border-red-500 bg-red-50' : 'border-gray-300 hover:border-gray-400'}`}\n />\n {error && (\n <Tooltip content={error.message}>\n <span className=\"absolute right-2 top-1/2 transform -translate-y-1/2\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <circle cx=\"8\" cy=\"8\" r=\"7\" fill=\"#DC2626\"/>\n <path d=\"M8 4.5V9\" stroke=\"white\" strokeWidth=\"1.5\" strokeLinecap=\"round\"/>\n <circle cx=\"8\" cy=\"11.5\" r=\"0.75\" fill=\"white\"/>\n </svg>\n </span>\n </Tooltip>\n )}\n </div>\n </td>\n );\n })}\n </tr>\n );\n })}\n </tbody>\n </table>\n </div>\n {visibleRows.length === 0 && (\n <div className=\"p-8 text-center\">\n <span className=\"text-gray-500\">\n {filterMode === 'error' ? 'No rows with errors found' :\n filterMode === 'valid' ? 'No valid rows found' :\n 'No data to display'}\n </span>\n </div>\n )}\n </div>\n\n <div className=\"px-6 py-4 border-t bg-gray-50 flex justify-between items-center\">\n <Button\n type=\"button\"\n variant=\"outline\"\n onClick={onCancel}\n disabled={isSubmitting}\n size=\"default\"\n >\n Back\n </Button>\n <Button\n type=\"submit\"\n isLoading={isSubmitting}\n disabled={disableOnInvalidRows && errors.length > 0}\n size=\"default\"\n variant=\"default\"\n >\n Submit\n </Button>\n </div>\n\n {/* Transform Modal */}\n {backendUrl && importerKey && (\n <TransformModal\n isOpen={isTransformModalOpen}\n onClose={() => setIsTransformModalOpen(false)}\n data={dataRows}\n columnMapping={columnMapping}\n backendUrl={backendUrl}\n importerKey={importerKey}\n validationErrors={errors.map(e => {\n // Convert display row index to data array index\n const dataRowIndex = e.rowIndex - headerRowIndex - 1;\n return {\n rowIndex: dataRowIndex,\n columnKey: ((columnMapping[e.columnIndex] as any)?.id || (columnMapping[e.columnIndex] as any)?.key) || '',\n message: e.message,\n value: dataRows[dataRowIndex]?.values[e.columnIndex]\n };\n })}\n onApplyTransformations={(changes) => {\n\n // Create a copy of dataRows and apply all changes\n const updatedRows = [...dataRows];\n let appliedCount = 0;\n let skippedCount = 0;\n\n changes.forEach((change) => {\n const { rowIndex, columnIndex, newValue } = change;\n\n // Skip if columnIndex is undefined\n if (columnIndex === undefined) {\n console.warn(`Skipping change for row ${rowIndex}: columnIndex is undefined`);\n skippedCount++;\n return;\n }\n\n // Validate row index\n if (rowIndex < 0 || rowIndex >= updatedRows.length) {\n console.warn(`Skipping change: rowIndex ${rowIndex} out of bounds (dataRows has ${updatedRows.length} rows)`);\n skippedCount++;\n return;\n }\n\n // Apply the change\n if (updatedRows[rowIndex] && updatedRows[rowIndex].values) {\n // Deep copy the row to avoid mutation issues\n if (updatedRows[rowIndex] === dataRows[rowIndex]) {\n updatedRows[rowIndex] = {\n ...updatedRows[rowIndex],\n values: [...updatedRows[rowIndex].values]\n };\n }\n updatedRows[rowIndex].values[columnIndex] = newValue;\n appliedCount++;\n }\n });\n\n // Update the state with all changes at once\n setDataRows(updatedRows);\n shouldValidateRef.current = true;\n setIsTransformModalOpen(false);\n }}\n />\n )}\n </form>\n );\n}\n","import { useEffect, useRef } from \"react\";\n\nexport default function useCustomStyles(customStyles?: string, targetElement?: HTMLElement | null) {\n useEffect(() => {\n if (customStyles && targetElement) {\n const parsedStyles = JSON.parse(customStyles);\n if (parsedStyles) {\n Object.keys(parsedStyles).forEach((key) => {\n const value = parsedStyles?.[key as any];\n targetElement.style.setProperty(\"--\" + key, value);\n });\n }\n }\n }, [customStyles, targetElement]);\n}\n","/**\n * Color utility functions for theme customization\n */\n\n/**\n * Validate hex color format\n */\nexport function isValidColor(color: string): boolean {\n return /^#([0-9A-F]{3}){1,2}$/i.test(color);\n}\n\n/**\n * Convert hex color to RGB\n */\nexport function hexToRgb(hex: string): { r: number; g: number; b: number } | null {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result\n ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16),\n }\n : null;\n}\n\n/**\n * Convert RGB to hex color\n */\nexport function rgbToHex(r: number, g: number, b: number): string {\n return \"#\" + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1);\n}\n\n/**\n * Lighten a color by a percentage\n */\nexport function lightenColor(hex: string, percent: number): string {\n const rgb = hexToRgb(hex);\n if (!rgb) return hex;\n\n const factor = percent / 100;\n const r = Math.min(255, Math.round(rgb.r + (255 - rgb.r) * factor));\n const g = Math.min(255, Math.round(rgb.g + (255 - rgb.g) * factor));\n const b = Math.min(255, Math.round(rgb.b + (255 - rgb.b) * factor));\n\n return rgbToHex(r, g, b);\n}\n\n/**\n * Darken a color by a percentage\n */\nexport function darkenColor(hex: string, percent: number): string {\n const rgb = hexToRgb(hex);\n if (!rgb) return hex;\n\n const factor = 1 - percent / 100;\n const r = Math.round(rgb.r * factor);\n const g = Math.round(rgb.g * factor);\n const b = Math.round(rgb.b * factor);\n\n return rgbToHex(r, g, b);\n}\n\n/**\n * Generate color palette from a base color\n */\nexport function generateColorPalette(baseColor: string) {\n return {\n 50: lightenColor(baseColor, 95),\n 100: lightenColor(baseColor, 90),\n 200: lightenColor(baseColor, 80),\n 300: lightenColor(baseColor, 60),\n 400: lightenColor(baseColor, 40),\n 500: baseColor,\n 600: darkenColor(baseColor, 10),\n 700: darkenColor(baseColor, 20),\n 800: darkenColor(baseColor, 30),\n 900: darkenColor(baseColor, 40),\n };\n}\n\n/**\n * Apply color palette to CSS variables\n * @param primaryColor - The primary color to generate palette from\n * @param targetElement - The element to apply styles to (defaults to a scoped container, not document root)\n */\nexport function applyColorPalette(primaryColor: string, targetElement?: HTMLElement) {\n const palette = generateColorPalette(primaryColor);\n // Don't apply to document.documentElement to prevent style leakage\n // Only apply if a specific target element is provided\n if (!targetElement) {\n console.warn('applyColorPalette: No target element provided, skipping style application to prevent leakage');\n return;\n }\n\n // Set primary color variations\n targetElement.style.setProperty('--color-primary', primaryColor);\n targetElement.style.setProperty('--color-primary-50', palette[50]);\n targetElement.style.setProperty('--color-primary-100', palette[100]);\n targetElement.style.setProperty('--color-primary-200', palette[200]);\n targetElement.style.setProperty('--color-primary-300', palette[300]);\n targetElement.style.setProperty('--color-primary-400', palette[400]);\n targetElement.style.setProperty('--color-primary-500', palette[500]);\n targetElement.style.setProperty('--color-primary-600', palette[600]);\n targetElement.style.setProperty('--color-primary-700', palette[700]);\n targetElement.style.setProperty('--color-primary-800', palette[800]);\n targetElement.style.setProperty('--color-primary-900', palette[900]);\n \n // Set hover and focus states\n targetElement.style.setProperty('--color-primary-hover', palette[700]);\n targetElement.style.setProperty('--color-primary-focus', palette[600]);\n targetElement.style.setProperty('--color-primary-disabled', palette[200]);\n}","/**\n * Parse JSON input that can be either an object or a string\n * @param param - The parameter to parse (object or JSON string)\n * @param options - Options for parsing\n * @returns Parsed object or stringified JSON based on options\n */\nexport function parseJSON<T extends 'object' | 'string' = 'object'>(\n param?: Record<string, unknown> | string,\n options?: {\n returnType?: T;\n escapePercent?: boolean;\n }\n): T extends 'string' ? string : Record<string, unknown> {\n const { returnType = 'object', escapePercent = false } = options || {};\n \n if (typeof param === \"undefined\") {\n return (returnType === 'string' ? \"\" : {}) as any;\n }\n\n let parsedObj: Record<string, unknown> = {};\n\n if (typeof param === \"string\") {\n try {\n parsedObj = JSON.parse(param);\n } catch (e) {\n // Error parsing JSON\n return (returnType === 'string' ? \"\" : {}) as any;\n }\n } else {\n parsedObj = param;\n }\n\n // Replace % symbols with %25 if requested\n if (escapePercent) {\n for (const key in parsedObj) {\n if (typeof parsedObj[key] === \"string\") {\n parsedObj[key] = (parsedObj[key] as string).replace(/%(?!25)/g, \"%25\");\n }\n }\n }\n\n return (returnType === 'string' ? JSON.stringify(parsedObj) : parsedObj) as any;\n}\n\n// Backward compatibility exports\nexport const parseObjectOrStringJSON = (name: string, param?: Record<string, unknown> | string): string => \n parseJSON(param, { returnType: 'string', escapePercent: true });\n\nexport const parseObjectOrStringJSONToRecord = (name: string, param?: Record<string, unknown> | string): Record<string, unknown> => \n parseJSON(param, { returnType: 'object' });\n\nexport const validateJSON = (str: string, paramName: string) => {\n if (!str || str === \"undefined\") {\n return \"\";\n }\n try {\n const obj = JSON.parse(str);\n return JSON.stringify(obj);\n } catch (e) {\n // Error validating JSON\n return \"\";\n }\n};\n\nexport const sanitizeKey = (input: string): string => {\n let result = input.toLowerCase().replace(/\\s/g, \"_\"); // Replace spaces with underscores\n result = result.replace(/[^a-zA-Z0-9_]/g, \"\"); // Remove non-alphanumeric characters except underscore\n return result;\n};\n\nexport const parseOptionalBoolean = (val?: boolean) => {\n return typeof val === \"undefined\" || val === null ? \"\" : val ? \"true\" : \"false\";\n};\n\nexport const strToBoolean = (str: string) => !!str && (str.toLowerCase() === \"true\" || str === \"1\");\n\nexport const strToOptionalBoolean = (str: string) => (str ? str.toLowerCase() === \"true\" || str === \"1\" : undefined);\n\nexport const strToDefaultBoolean = (str: string, defaultValue: boolean) => (str ? str.toLowerCase() === \"true\" || str === \"1\" : defaultValue);\n\n// Color utilities moved to colorUtils.ts\n// Export from there for backward compatibility if needed\nexport { isValidColor, darkenColor } from './colorUtils';\n","import { useMemo, useState } from \"react\";\nimport { Step, StepperProps } from \"../types\";\n\nexport default function useStepper(steps: Step[], initialStep = 0, skipHeader: boolean): StepperProps {\n const [current, setCurrent] = useState(initialStep);\n\n const step = useMemo(() => steps[current], [current, steps]);\n\n return { steps, current, step, setCurrent, skipHeader };\n}\n","import { useEffect, useState } from \"react\";\n\nexport default function useMutableLocalStorage(key: string, initialValue: any) {\n // State to store our value\n // Pass initial state function to useState so logic is only executed once\n const getLocalStorage = () => {\n if (typeof window === \"undefined\") {\n return initialValue;\n }\n try {\n // Get from local storage by key\n const item = window.localStorage.getItem(key);\n // Parse stored json or if none return initialValue\n return item ? JSON.parse(item) : initialValue;\n } catch (error) {\n // If error also return initialValue\n\n return initialValue;\n }\n };\n const [storedValue, setStoredValue] = useState(getLocalStorage());\n\n useEffect(() => {\n setStoredValue(getLocalStorage());\n }, [key]);\n\n // Return a wrapped version of useState's setter function that ...\n // ... persists the new value to localStorage.\n const setValue = (value: any) => {\n try {\n // Allow value to be a function so we have same API as useState\n const valueToStore = value instanceof Function ? value(storedValue) : value;\n // Save state\n setStoredValue(valueToStore);\n // Save to local storage\n if (typeof window !== \"undefined\") {\n window.localStorage.setItem(key, JSON.stringify(valueToStore));\n }\n } catch (error) {\n\n }\n };\n\n return [storedValue, setValue];\n}\n","import { useEffect, useState } from \"react\";\nimport { useTranslation } from \"../../../../i18n/useTranslation\";\nimport useStepper from \"../../../components/Stepper/hooks/useStepper\";\nimport useMutableLocalStorage from \"./useMutableLocalStorage\";\n\nexport const StepEnum = {\n Upload: 0,\n RowSelection: 1, // Deprecated - kept for backwards compatibility\n MapColumns: 2, // Now uses ConfigureImport component\n Validation: 3,\n Complete: 4,\n};\n\nconst calculateNextStep = (nextStep: number, skipHeader: boolean) => {\n if (skipHeader && nextStep === StepEnum.RowSelection) {\n return StepEnum.MapColumns;\n }\n return nextStep;\n};\n\nconst getStepConfig = (skipHeader: boolean) => {\n // Consolidated flow: Upload → Configure → Validation\n return [\n { label: \"Upload\", id: 0 },\n { label: \"Configure\", id: 1 },\n { label: \"Validation\", id: 2 },\n ];\n};\n\nfunction useStepNavigation(initialStep: number, skipHeader: boolean, isDemoMode: boolean = false) {\n const { t } = useTranslation();\n const translatedSteps = getStepConfig(skipHeader).map((step) => ({\n ...step,\n label: t(step.label),\n }));\n // Map initial step to stepper index\n const initialStepperIndex = initialStep === StepEnum.MapColumns ? 1 : \n initialStep === StepEnum.Validation ? 2 : \n initialStep === StepEnum.Complete ? 3 : 0;\n const stepper = useStepper(translatedSteps, initialStepperIndex, skipHeader);\n // Don't use localStorage in demo mode - use a dummy state instead\n const localStorageResult = isDemoMode ? \n [null, () => {}] : \n useMutableLocalStorage(`tf_steps`, \"\");\n const [storageStep, setStorageStep] = localStorageResult as [any, any];\n const [currentStep, setCurrentStep] = useState(initialStep);\n\n const goBack = (backStep?: number) => {\n const targetStep = backStep !== undefined ? backStep : Math.max(0, currentStep - 1);\n setStep(targetStep);\n };\n\n const goNext = (nextStep = 0) => {\n nextStep = nextStep || currentStep + 1 || 0;\n const calculatedStep = calculateNextStep(nextStep, skipHeader);\n setStep(calculatedStep);\n };\n\n const setStep = (newStep: number) => {\n setCurrentStep(newStep);\n setStorageStep(newStep);\n // Map the step to the correct stepper index\n const stepperIndex = newStep === StepEnum.Upload ? 0 : \n newStep === StepEnum.MapColumns ? 1 : \n newStep === StepEnum.Validation ? 2 : \n newStep === StepEnum.Complete ? 3 : newStep;\n stepper.setCurrent(stepperIndex);\n };\n\n useEffect(() => {\n // In demo mode or when storageStep is null, don't update from localStorage\n if (isDemoMode || storageStep === null) {\n return;\n }\n const step = storageStep || 0;\n // Map the step to the correct stepper index\n const stepperIndex = step === StepEnum.Upload ? 0 : \n step === StepEnum.MapColumns ? 1 : \n step === StepEnum.Validation ? 2 : \n step === StepEnum.Complete ? 3 : step;\n stepper.setCurrent(stepperIndex);\n setCurrentStep(step);\n }, [storageStep, isDemoMode]);\n\n return {\n currentStep: isDemoMode ? currentStep : (storageStep ?? currentStep),\n setStep,\n goBack,\n goNext,\n stepper,\n stepId: stepper?.step?.id,\n setStorageStep,\n };\n}\n\nexport default useStepNavigation;\n","import { BoxProps } from \"./types\";\nimport { cn } from \"../../../utils/cn\";\n\nexport default function Box({ className, variants = [], ...props }: BoxProps) {\n const variantClasses: Record<string, string> = {\n fluid: \"max-w-none\",\n mid: \"max-w-[440px]\",\n wide: \"max-w-[660px]\",\n \"space-l\": \"p-8\",\n \"space-mid\": \"p-4\",\n \"space-none\": \"p-0\",\n \"bg-shade\": \"bg-gray-50\"\n };\n\n const selectedVariants = variants\n .map((v) => variantClasses[v as string])\n .filter(Boolean)\n .join(\" \");\n\n return (\n <div\n {...props}\n className={cn(\n \"block mx-auto p-4 bg-white rounded-lg shadow-lg max-w-full\",\n selectedVariants,\n className\n )}\n />\n );\n}\n","import { useTranslation } from \"../../../i18n/useTranslation\";\nimport { Button } from \"../../components/ui/button\";\nimport Box from \"../../components/Box\";\nimport { CompleteProps } from \"./types\";\nimport { RotateCcw, Check } from \"lucide-react\";\nimport { cn } from \"../../../utils/cn\";\n\nexport default function Complete({ reload, close, isModal }: CompleteProps) {\n const { t } = useTranslation();\n return (\n <Box className={cn(\n \"max-w-[1000px] pt-4 h-full flex-1 shadow-none bg-transparent self-center\",\n \"flex items-center justify-center text-2xl flex-col gap-4 text-center relative\"\n )}>\n <>\n <span className={cn(\n \"w-16 h-16 relative isolate flex items-center justify-center\",\n \"before:content-[''] before:absolute before:inset-0 before:rounded-full\",\n \"before:bg-green-500 before:-z-10\"\n )}>\n <Check className=\"w-6 h-6 text-white\" />\n </span>\n <div>{t(\"Import Successful\")}</div>\n <div className={cn(\n \"flex gap-8 items-center justify-center mt-12\",\n \"[&>*]:flex-1 [&>*]:min-w-[190px]\"\n )}>\n <Button type=\"button\" variant=\"outline\" onClick={reload}>\n <RotateCcw className=\"mr-2 h-4 w-4\" />\n {t(\"Upload another file\")}\n </Button>\n {isModal && (\n <Button type=\"button\" onClick={close}>\n <Check className=\"mr-2 h-4 w-4\" />\n {t(\"Done\")}\n </Button>\n )}\n </div>\n </>\n </Box>\n );\n}\n","import * as React from \"react\"\nimport { cn } from \"../../../utils/cn\"\n\ninterface FlexProps extends React.HTMLAttributes<HTMLDivElement> {\n direction?: \"row\" | \"column\" | \"row-reverse\" | \"column-reverse\"\n align?: \"start\" | \"center\" | \"end\" | \"stretch\" | \"baseline\"\n justify?: \"start\" | \"center\" | \"end\" | \"between\" | \"around\" | \"evenly\"\n wrap?: boolean\n gap?: number | string\n}\n\nconst Flex = React.forwardRef<HTMLDivElement, FlexProps>(\n ({ className, direction = \"row\", align, justify, wrap, gap, style, ...props }, ref) => {\n const flexClasses = cn(\n \"flex\",\n {\n \"flex-row\": direction === \"row\",\n \"flex-col\": direction === \"column\",\n \"flex-row-reverse\": direction === \"row-reverse\",\n \"flex-col-reverse\": direction === \"column-reverse\",\n \"items-start\": align === \"start\",\n \"items-center\": align === \"center\",\n \"items-end\": align === \"end\",\n \"items-stretch\": align === \"stretch\",\n \"items-baseline\": align === \"baseline\",\n \"justify-start\": justify === \"start\",\n \"justify-center\": justify === \"center\",\n \"justify-end\": justify === \"end\",\n \"justify-between\": justify === \"between\",\n \"justify-around\": justify === \"around\",\n \"justify-evenly\": justify === \"evenly\",\n \"flex-wrap\": wrap,\n },\n className\n )\n\n const gapStyle = gap ? { gap: typeof gap === 'number' ? `${gap * 0.25}rem` : gap } : {}\n\n return (\n <div\n ref={ref}\n className={flexClasses}\n style={{ ...gapStyle, ...style }}\n {...props}\n />\n )\n }\n)\nFlex.displayName = \"Flex\"\n\nconst Box = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => {\n return <div ref={ref} className={cn(className)} {...props} />\n }\n)\nBox.displayName = \"Box\"\n\nconst HStack = React.forwardRef<HTMLDivElement, Omit<FlexProps, \"direction\">>(\n (props, ref) => <Flex ref={ref} direction=\"row\" align=\"center\" {...props} />\n)\nHStack.displayName = \"HStack\"\n\nconst VStack = React.forwardRef<HTMLDivElement, Omit<FlexProps, \"direction\">>(\n (props, ref) => <Flex ref={ref} direction=\"column\" {...props} />\n)\nVStack.displayName = \"VStack\"\n\nconst Text = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => {\n return <div ref={ref} className={cn(className)} {...props} />\n }\n)\nText.displayName = \"Text\"\n\nexport { Flex, Box, HStack, VStack, Text }","// packages/core/number/src/number.ts\nfunction clamp(value, [min, max]) {\n return Math.min(max, Math.max(min, value));\n}\nexport {\n clamp\n};\n//# sourceMappingURL=index.mjs.map\n","// src/slot.tsx\nimport * as React from \"react\";\nimport { composeRefs } from \"@radix-ui/react-compose-refs\";\nimport { Fragment as Fragment2, jsx } from \"react/jsx-runtime\";\n// @__NO_SIDE_EFFECTS__\nfunction createSlot(ownerName) {\n const SlotClone = /* @__PURE__ */ createSlotClone(ownerName);\n const Slot2 = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n const childrenArray = React.Children.toArray(children);\n const slottable = childrenArray.find(isSlottable);\n if (slottable) {\n const newElement = slottable.props.children;\n const newChildren = childrenArray.map((child) => {\n if (child === slottable) {\n if (React.Children.count(newElement) > 1) return React.Children.only(null);\n return React.isValidElement(newElement) ? newElement.props.children : null;\n } else {\n return child;\n }\n });\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children: React.isValidElement(newElement) ? React.cloneElement(newElement, void 0, newChildren) : null });\n }\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children });\n });\n Slot2.displayName = `${ownerName}.Slot`;\n return Slot2;\n}\nvar Slot = /* @__PURE__ */ createSlot(\"Slot\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlotClone(ownerName) {\n const SlotClone = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n if (React.isValidElement(children)) {\n const childrenRef = getElementRef(children);\n const props2 = mergeProps(slotProps, children.props);\n if (children.type !== React.Fragment) {\n props2.ref = forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef;\n }\n return React.cloneElement(children, props2);\n }\n return React.Children.count(children) > 1 ? React.Children.only(null) : null;\n });\n SlotClone.displayName = `${ownerName}.SlotClone`;\n return SlotClone;\n}\nvar SLOTTABLE_IDENTIFIER = Symbol(\"radix.slottable\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlottable(ownerName) {\n const Slottable2 = ({ children }) => {\n return /* @__PURE__ */ jsx(Fragment2, { children });\n };\n Slottable2.displayName = `${ownerName}.Slottable`;\n Slottable2.__radixId = SLOTTABLE_IDENTIFIER;\n return Slottable2;\n}\nvar Slottable = /* @__PURE__ */ createSlottable(\"Slottable\");\nfunction isSlottable(child) {\n return React.isValidElement(child) && typeof child.type === \"function\" && \"__radixId\" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;\n}\nfunction mergeProps(slotProps, childProps) {\n const overrideProps = { ...childProps };\n for (const propName in childProps) {\n const slotPropValue = slotProps[propName];\n const childPropValue = childProps[propName];\n const isHandler = /^on[A-Z]/.test(propName);\n if (isHandler) {\n if (slotPropValue && childPropValue) {\n overrideProps[propName] = (...args) => {\n const result = childPropValue(...args);\n slotPropValue(...args);\n return result;\n };\n } else if (slotPropValue) {\n overrideProps[propName] = slotPropValue;\n }\n } else if (propName === \"style\") {\n overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n } else if (propName === \"className\") {\n overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(\" \");\n }\n }\n return { ...slotProps, ...overrideProps };\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nexport {\n Slot as Root,\n Slot,\n Slottable,\n createSlot,\n createSlottable\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/collection-legacy.tsx\nimport React from \"react\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction createCollection(name) {\n const PROVIDER_NAME = name + \"CollectionProvider\";\n const [createCollectionContext, createCollectionScope] = createContextScope(PROVIDER_NAME);\n const [CollectionProviderImpl, useCollectionContext] = createCollectionContext(\n PROVIDER_NAME,\n { collectionRef: { current: null }, itemMap: /* @__PURE__ */ new Map() }\n );\n const CollectionProvider = (props) => {\n const { scope, children } = props;\n const ref = React.useRef(null);\n const itemMap = React.useRef(/* @__PURE__ */ new Map()).current;\n return /* @__PURE__ */ jsx(CollectionProviderImpl, { scope, itemMap, collectionRef: ref, children });\n };\n CollectionProvider.displayName = PROVIDER_NAME;\n const COLLECTION_SLOT_NAME = name + \"CollectionSlot\";\n const CollectionSlotImpl = createSlot(COLLECTION_SLOT_NAME);\n const CollectionSlot = React.forwardRef(\n (props, forwardedRef) => {\n const { scope, children } = props;\n const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);\n const composedRefs = useComposedRefs(forwardedRef, context.collectionRef);\n return /* @__PURE__ */ jsx(CollectionSlotImpl, { ref: composedRefs, children });\n }\n );\n CollectionSlot.displayName = COLLECTION_SLOT_NAME;\n const ITEM_SLOT_NAME = name + \"CollectionItemSlot\";\n const ITEM_DATA_ATTR = \"data-radix-collection-item\";\n const CollectionItemSlotImpl = createSlot(ITEM_SLOT_NAME);\n const CollectionItemSlot = React.forwardRef(\n (props, forwardedRef) => {\n const { scope, children, ...itemData } = props;\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const context = useCollectionContext(ITEM_SLOT_NAME, scope);\n React.useEffect(() => {\n context.itemMap.set(ref, { ref, ...itemData });\n return () => void context.itemMap.delete(ref);\n });\n return /* @__PURE__ */ jsx(CollectionItemSlotImpl, { ...{ [ITEM_DATA_ATTR]: \"\" }, ref: composedRefs, children });\n }\n );\n CollectionItemSlot.displayName = ITEM_SLOT_NAME;\n function useCollection(scope) {\n const context = useCollectionContext(name + \"CollectionConsumer\", scope);\n const getItems = React.useCallback(() => {\n const collectionNode = context.collectionRef.current;\n if (!collectionNode) return [];\n const orderedNodes = Array.from(collectionNode.querySelectorAll(`[${ITEM_DATA_ATTR}]`));\n const items = Array.from(context.itemMap.values());\n const orderedItems = items.sort(\n (a, b) => orderedNodes.indexOf(a.ref.current) - orderedNodes.indexOf(b.ref.current)\n );\n return orderedItems;\n }, [context.collectionRef, context.itemMap]);\n return getItems;\n }\n return [\n { Provider: CollectionProvider, Slot: CollectionSlot, ItemSlot: CollectionItemSlot },\n useCollection,\n createCollectionScope\n ];\n}\n\n// src/collection.tsx\nimport React2 from \"react\";\nimport { createContextScope as createContextScope2 } from \"@radix-ui/react-context\";\nimport { useComposedRefs as useComposedRefs2 } from \"@radix-ui/react-compose-refs\";\nimport { createSlot as createSlot2 } from \"@radix-ui/react-slot\";\n\n// src/ordered-dictionary.ts\nvar __instanciated = /* @__PURE__ */ new WeakMap();\nvar OrderedDict = class _OrderedDict extends Map {\n #keys;\n constructor(entries) {\n super(entries);\n this.#keys = [...super.keys()];\n __instanciated.set(this, true);\n }\n set(key, value) {\n if (__instanciated.get(this)) {\n if (this.has(key)) {\n this.#keys[this.#keys.indexOf(key)] = key;\n } else {\n this.#keys.push(key);\n }\n }\n super.set(key, value);\n return this;\n }\n insert(index, key, value) {\n const has = this.has(key);\n const length = this.#keys.length;\n const relativeIndex = toSafeInteger(index);\n let actualIndex = relativeIndex >= 0 ? relativeIndex : length + relativeIndex;\n const safeIndex = actualIndex < 0 || actualIndex >= length ? -1 : actualIndex;\n if (safeIndex === this.size || has && safeIndex === this.size - 1 || safeIndex === -1) {\n this.set(key, value);\n return this;\n }\n const size = this.size + (has ? 0 : 1);\n if (relativeIndex < 0) {\n actualIndex++;\n }\n const keys = [...this.#keys];\n let nextValue;\n let shouldSkip = false;\n for (let i = actualIndex; i < size; i++) {\n if (actualIndex === i) {\n let nextKey = keys[i];\n if (keys[i] === key) {\n nextKey = keys[i + 1];\n }\n if (has) {\n this.delete(key);\n }\n nextValue = this.get(nextKey);\n this.set(key, value);\n } else {\n if (!shouldSkip && keys[i - 1] === key) {\n shouldSkip = true;\n }\n const currentKey = keys[shouldSkip ? i : i - 1];\n const currentValue = nextValue;\n nextValue = this.get(currentKey);\n this.delete(currentKey);\n this.set(currentKey, currentValue);\n }\n }\n return this;\n }\n with(index, key, value) {\n const copy = new _OrderedDict(this);\n copy.insert(index, key, value);\n return copy;\n }\n before(key) {\n const index = this.#keys.indexOf(key) - 1;\n if (index < 0) {\n return void 0;\n }\n return this.entryAt(index);\n }\n /**\n * Sets a new key-value pair at the position before the given key.\n */\n setBefore(key, newKey, value) {\n const index = this.#keys.indexOf(key);\n if (index === -1) {\n return this;\n }\n return this.insert(index, newKey, value);\n }\n after(key) {\n let index = this.#keys.indexOf(key);\n index = index === -1 || index === this.size - 1 ? -1 : index + 1;\n if (index === -1) {\n return void 0;\n }\n return this.entryAt(index);\n }\n /**\n * Sets a new key-value pair at the position after the given key.\n */\n setAfter(key, newKey, value) {\n const index = this.#keys.indexOf(key);\n if (index === -1) {\n return this;\n }\n return this.insert(index + 1, newKey, value);\n }\n first() {\n return this.entryAt(0);\n }\n last() {\n return this.entryAt(-1);\n }\n clear() {\n this.#keys = [];\n return super.clear();\n }\n delete(key) {\n const deleted = super.delete(key);\n if (deleted) {\n this.#keys.splice(this.#keys.indexOf(key), 1);\n }\n return deleted;\n }\n deleteAt(index) {\n const key = this.keyAt(index);\n if (key !== void 0) {\n return this.delete(key);\n }\n return false;\n }\n at(index) {\n const key = at(this.#keys, index);\n if (key !== void 0) {\n return this.get(key);\n }\n }\n entryAt(index) {\n const key = at(this.#keys, index);\n if (key !== void 0) {\n return [key, this.get(key)];\n }\n }\n indexOf(key) {\n return this.#keys.indexOf(key);\n }\n keyAt(index) {\n return at(this.#keys, index);\n }\n from(key, offset) {\n const index = this.indexOf(key);\n if (index === -1) {\n return void 0;\n }\n let dest = index + offset;\n if (dest < 0) dest = 0;\n if (dest >= this.size) dest = this.size - 1;\n return this.at(dest);\n }\n keyFrom(key, offset) {\n const index = this.indexOf(key);\n if (index === -1) {\n return void 0;\n }\n let dest = index + offset;\n if (dest < 0) dest = 0;\n if (dest >= this.size) dest = this.size - 1;\n return this.keyAt(dest);\n }\n find(predicate, thisArg) {\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return entry;\n }\n index++;\n }\n return void 0;\n }\n findIndex(predicate, thisArg) {\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return index;\n }\n index++;\n }\n return -1;\n }\n filter(predicate, thisArg) {\n const entries = [];\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n entries.push(entry);\n }\n index++;\n }\n return new _OrderedDict(entries);\n }\n map(callbackfn, thisArg) {\n const entries = [];\n let index = 0;\n for (const entry of this) {\n entries.push([entry[0], Reflect.apply(callbackfn, thisArg, [entry, index, this])]);\n index++;\n }\n return new _OrderedDict(entries);\n }\n reduce(...args) {\n const [callbackfn, initialValue] = args;\n let index = 0;\n let accumulator = initialValue ?? this.at(0);\n for (const entry of this) {\n if (index === 0 && args.length === 1) {\n accumulator = entry;\n } else {\n accumulator = Reflect.apply(callbackfn, this, [accumulator, entry, index, this]);\n }\n index++;\n }\n return accumulator;\n }\n reduceRight(...args) {\n const [callbackfn, initialValue] = args;\n let accumulator = initialValue ?? this.at(-1);\n for (let index = this.size - 1; index >= 0; index--) {\n const entry = this.at(index);\n if (index === this.size - 1 && args.length === 1) {\n accumulator = entry;\n } else {\n accumulator = Reflect.apply(callbackfn, this, [accumulator, entry, index, this]);\n }\n }\n return accumulator;\n }\n toSorted(compareFn) {\n const entries = [...this.entries()].sort(compareFn);\n return new _OrderedDict(entries);\n }\n toReversed() {\n const reversed = new _OrderedDict();\n for (let index = this.size - 1; index >= 0; index--) {\n const key = this.keyAt(index);\n const element = this.get(key);\n reversed.set(key, element);\n }\n return reversed;\n }\n toSpliced(...args) {\n const entries = [...this.entries()];\n entries.splice(...args);\n return new _OrderedDict(entries);\n }\n slice(start, end) {\n const result = new _OrderedDict();\n let stop = this.size - 1;\n if (start === void 0) {\n return result;\n }\n if (start < 0) {\n start = start + this.size;\n }\n if (end !== void 0 && end > 0) {\n stop = end - 1;\n }\n for (let index = start; index <= stop; index++) {\n const key = this.keyAt(index);\n const element = this.get(key);\n result.set(key, element);\n }\n return result;\n }\n every(predicate, thisArg) {\n let index = 0;\n for (const entry of this) {\n if (!Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return false;\n }\n index++;\n }\n return true;\n }\n some(predicate, thisArg) {\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return true;\n }\n index++;\n }\n return false;\n }\n};\nfunction at(array, index) {\n if (\"at\" in Array.prototype) {\n return Array.prototype.at.call(array, index);\n }\n const actualIndex = toSafeIndex(array, index);\n return actualIndex === -1 ? void 0 : array[actualIndex];\n}\nfunction toSafeIndex(array, index) {\n const length = array.length;\n const relativeIndex = toSafeInteger(index);\n const actualIndex = relativeIndex >= 0 ? relativeIndex : length + relativeIndex;\n return actualIndex < 0 || actualIndex >= length ? -1 : actualIndex;\n}\nfunction toSafeInteger(number) {\n return number !== number || number === 0 ? 0 : Math.trunc(number);\n}\n\n// src/collection.tsx\nimport { jsx as jsx2 } from \"react/jsx-runtime\";\nfunction createCollection2(name) {\n const PROVIDER_NAME = name + \"CollectionProvider\";\n const [createCollectionContext, createCollectionScope] = createContextScope2(PROVIDER_NAME);\n const [CollectionContextProvider, useCollectionContext] = createCollectionContext(\n PROVIDER_NAME,\n {\n collectionElement: null,\n collectionRef: { current: null },\n collectionRefObject: { current: null },\n itemMap: new OrderedDict(),\n setItemMap: () => void 0\n }\n );\n const CollectionProvider = ({ state, ...props }) => {\n return state ? /* @__PURE__ */ jsx2(CollectionProviderImpl, { ...props, state }) : /* @__PURE__ */ jsx2(CollectionInit, { ...props });\n };\n CollectionProvider.displayName = PROVIDER_NAME;\n const CollectionInit = (props) => {\n const state = useInitCollection();\n return /* @__PURE__ */ jsx2(CollectionProviderImpl, { ...props, state });\n };\n CollectionInit.displayName = PROVIDER_NAME + \"Init\";\n const CollectionProviderImpl = (props) => {\n const { scope, children, state } = props;\n const ref = React2.useRef(null);\n const [collectionElement, setCollectionElement] = React2.useState(\n null\n );\n const composeRefs = useComposedRefs2(ref, setCollectionElement);\n const [itemMap, setItemMap] = state;\n React2.useEffect(() => {\n if (!collectionElement) return;\n const observer = getChildListObserver(() => {\n });\n observer.observe(collectionElement, {\n childList: true,\n subtree: true\n });\n return () => {\n observer.disconnect();\n };\n }, [collectionElement]);\n return /* @__PURE__ */ jsx2(\n CollectionContextProvider,\n {\n scope,\n itemMap,\n setItemMap,\n collectionRef: composeRefs,\n collectionRefObject: ref,\n collectionElement,\n children\n }\n );\n };\n CollectionProviderImpl.displayName = PROVIDER_NAME + \"Impl\";\n const COLLECTION_SLOT_NAME = name + \"CollectionSlot\";\n const CollectionSlotImpl = createSlot2(COLLECTION_SLOT_NAME);\n const CollectionSlot = React2.forwardRef(\n (props, forwardedRef) => {\n const { scope, children } = props;\n const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);\n const composedRefs = useComposedRefs2(forwardedRef, context.collectionRef);\n return /* @__PURE__ */ jsx2(CollectionSlotImpl, { ref: composedRefs, children });\n }\n );\n CollectionSlot.displayName = COLLECTION_SLOT_NAME;\n const ITEM_SLOT_NAME = name + \"CollectionItemSlot\";\n const ITEM_DATA_ATTR = \"data-radix-collection-item\";\n const CollectionItemSlotImpl = createSlot2(ITEM_SLOT_NAME);\n const CollectionItemSlot = React2.forwardRef(\n (props, forwardedRef) => {\n const { scope, children, ...itemData } = props;\n const ref = React2.useRef(null);\n const [element, setElement] = React2.useState(null);\n const composedRefs = useComposedRefs2(forwardedRef, ref, setElement);\n const context = useCollectionContext(ITEM_SLOT_NAME, scope);\n const { setItemMap } = context;\n const itemDataRef = React2.useRef(itemData);\n if (!shallowEqual(itemDataRef.current, itemData)) {\n itemDataRef.current = itemData;\n }\n const memoizedItemData = itemDataRef.current;\n React2.useEffect(() => {\n const itemData2 = memoizedItemData;\n setItemMap((map) => {\n if (!element) {\n return map;\n }\n if (!map.has(element)) {\n map.set(element, { ...itemData2, element });\n return map.toSorted(sortByDocumentPosition);\n }\n return map.set(element, { ...itemData2, element }).toSorted(sortByDocumentPosition);\n });\n return () => {\n setItemMap((map) => {\n if (!element || !map.has(element)) {\n return map;\n }\n map.delete(element);\n return new OrderedDict(map);\n });\n };\n }, [element, memoizedItemData, setItemMap]);\n return /* @__PURE__ */ jsx2(CollectionItemSlotImpl, { ...{ [ITEM_DATA_ATTR]: \"\" }, ref: composedRefs, children });\n }\n );\n CollectionItemSlot.displayName = ITEM_SLOT_NAME;\n function useInitCollection() {\n return React2.useState(new OrderedDict());\n }\n function useCollection(scope) {\n const { itemMap } = useCollectionContext(name + \"CollectionConsumer\", scope);\n return itemMap;\n }\n const functions = {\n createCollectionScope,\n useCollection,\n useInitCollection\n };\n return [\n { Provider: CollectionProvider, Slot: CollectionSlot, ItemSlot: CollectionItemSlot },\n functions\n ];\n}\nfunction shallowEqual(a, b) {\n if (a === b) return true;\n if (typeof a !== \"object\" || typeof b !== \"object\") return false;\n if (a == null || b == null) return false;\n const keysA = Object.keys(a);\n const keysB = Object.keys(b);\n if (keysA.length !== keysB.length) return false;\n for (const key of keysA) {\n if (!Object.prototype.hasOwnProperty.call(b, key)) return false;\n if (a[key] !== b[key]) return false;\n }\n return true;\n}\nfunction isElementPreceding(a, b) {\n return !!(b.compareDocumentPosition(a) & Node.DOCUMENT_POSITION_PRECEDING);\n}\nfunction sortByDocumentPosition(a, b) {\n return !a[1].element || !b[1].element ? 0 : isElementPreceding(a[1].element, b[1].element) ? -1 : 1;\n}\nfunction getChildListObserver(callback) {\n const observer = new MutationObserver((mutationsList) => {\n for (const mutation of mutationsList) {\n if (mutation.type === \"childList\") {\n callback();\n return;\n }\n }\n });\n return observer;\n}\nexport {\n createCollection,\n createCollection2 as unstable_createCollection\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/direction/src/direction.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nvar DirectionContext = React.createContext(void 0);\nvar DirectionProvider = (props) => {\n const { dir, children } = props;\n return /* @__PURE__ */ jsx(DirectionContext.Provider, { value: dir, children });\n};\nfunction useDirection(localDir) {\n const globalDir = React.useContext(DirectionContext);\n return localDir || globalDir || \"ltr\";\n}\nvar Provider = DirectionProvider;\nexport {\n DirectionProvider,\n Provider,\n useDirection\n};\n//# sourceMappingURL=index.mjs.map\n","// src/primitive.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NODES = [\n \"a\",\n \"button\",\n \"div\",\n \"form\",\n \"h2\",\n \"h3\",\n \"img\",\n \"input\",\n \"label\",\n \"li\",\n \"nav\",\n \"ol\",\n \"p\",\n \"select\",\n \"span\",\n \"svg\",\n \"ul\"\n];\nvar Primitive = NODES.reduce((primitive, node) => {\n const Slot = createSlot(`Primitive.${node}`);\n const Node = React.forwardRef((props, forwardedRef) => {\n const { asChild, ...primitiveProps } = props;\n const Comp = asChild ? Slot : node;\n if (typeof window !== \"undefined\") {\n window[Symbol.for(\"radix-ui\")] = true;\n }\n return /* @__PURE__ */ jsx(Comp, { ...primitiveProps, ref: forwardedRef });\n });\n Node.displayName = `Primitive.${node}`;\n return { ...primitive, [node]: Node };\n}, {});\nfunction dispatchDiscreteCustomEvent(target, event) {\n if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\nvar Root = Primitive;\nexport {\n Primitive,\n Root,\n dispatchDiscreteCustomEvent\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/dismissable-layer.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { Primitive, dispatchDiscreteCustomEvent } from \"@radix-ui/react-primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useEscapeKeydown } from \"@radix-ui/react-use-escape-keydown\";\nimport { jsx } from \"react/jsx-runtime\";\nvar DISMISSABLE_LAYER_NAME = \"DismissableLayer\";\nvar CONTEXT_UPDATE = \"dismissableLayer.update\";\nvar POINTER_DOWN_OUTSIDE = \"dismissableLayer.pointerDownOutside\";\nvar FOCUS_OUTSIDE = \"dismissableLayer.focusOutside\";\nvar originalBodyPointerEvents;\nvar DismissableLayerContext = React.createContext({\n layers: /* @__PURE__ */ new Set(),\n layersWithOutsidePointerEventsDisabled: /* @__PURE__ */ new Set(),\n branches: /* @__PURE__ */ new Set()\n});\nvar DismissableLayer = React.forwardRef(\n (props, forwardedRef) => {\n const {\n disableOutsidePointerEvents = false,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n onDismiss,\n ...layerProps\n } = props;\n const context = React.useContext(DismissableLayerContext);\n const [node, setNode] = React.useState(null);\n const ownerDocument = node?.ownerDocument ?? globalThis?.document;\n const [, force] = React.useState({});\n const composedRefs = useComposedRefs(forwardedRef, (node2) => setNode(node2));\n const layers = Array.from(context.layers);\n const [highestLayerWithOutsidePointerEventsDisabled] = [...context.layersWithOutsidePointerEventsDisabled].slice(-1);\n const highestLayerWithOutsidePointerEventsDisabledIndex = layers.indexOf(highestLayerWithOutsidePointerEventsDisabled);\n const index = node ? layers.indexOf(node) : -1;\n const isBodyPointerEventsDisabled = context.layersWithOutsidePointerEventsDisabled.size > 0;\n const isPointerEventsEnabled = index >= highestLayerWithOutsidePointerEventsDisabledIndex;\n const pointerDownOutside = usePointerDownOutside((event) => {\n const target = event.target;\n const isPointerDownOnBranch = [...context.branches].some((branch) => branch.contains(target));\n if (!isPointerEventsEnabled || isPointerDownOnBranch) return;\n onPointerDownOutside?.(event);\n onInteractOutside?.(event);\n if (!event.defaultPrevented) onDismiss?.();\n }, ownerDocument);\n const focusOutside = useFocusOutside((event) => {\n const target = event.target;\n const isFocusInBranch = [...context.branches].some((branch) => branch.contains(target));\n if (isFocusInBranch) return;\n onFocusOutside?.(event);\n onInteractOutside?.(event);\n if (!event.defaultPrevented) onDismiss?.();\n }, ownerDocument);\n useEscapeKeydown((event) => {\n const isHighestLayer = index === context.layers.size - 1;\n if (!isHighestLayer) return;\n onEscapeKeyDown?.(event);\n if (!event.defaultPrevented && onDismiss) {\n event.preventDefault();\n onDismiss();\n }\n }, ownerDocument);\n React.useEffect(() => {\n if (!node) return;\n if (disableOutsidePointerEvents) {\n if (context.layersWithOutsidePointerEventsDisabled.size === 0) {\n originalBodyPointerEvents = ownerDocument.body.style.pointerEvents;\n ownerDocument.body.style.pointerEvents = \"none\";\n }\n context.layersWithOutsidePointerEventsDisabled.add(node);\n }\n context.layers.add(node);\n dispatchUpdate();\n return () => {\n if (disableOutsidePointerEvents && context.layersWithOutsidePointerEventsDisabled.size === 1) {\n ownerDocument.body.style.pointerEvents = originalBodyPointerEvents;\n }\n };\n }, [node, ownerDocument, disableOutsidePointerEvents, context]);\n React.useEffect(() => {\n return () => {\n if (!node) return;\n context.layers.delete(node);\n context.layersWithOutsidePointerEventsDisabled.delete(node);\n dispatchUpdate();\n };\n }, [node, context]);\n React.useEffect(() => {\n const handleUpdate = () => force({});\n document.addEventListener(CONTEXT_UPDATE, handleUpdate);\n return () => document.removeEventListener(CONTEXT_UPDATE, handleUpdate);\n }, []);\n return /* @__PURE__ */ jsx(\n Primitive.div,\n {\n ...layerProps,\n ref: composedRefs,\n style: {\n pointerEvents: isBodyPointerEventsDisabled ? isPointerEventsEnabled ? \"auto\" : \"none\" : void 0,\n ...props.style\n },\n onFocusCapture: composeEventHandlers(props.onFocusCapture, focusOutside.onFocusCapture),\n onBlurCapture: composeEventHandlers(props.onBlurCapture, focusOutside.onBlurCapture),\n onPointerDownCapture: composeEventHandlers(\n props.onPointerDownCapture,\n pointerDownOutside.onPointerDownCapture\n )\n }\n );\n }\n);\nDismissableLayer.displayName = DISMISSABLE_LAYER_NAME;\nvar BRANCH_NAME = \"DismissableLayerBranch\";\nvar DismissableLayerBranch = React.forwardRef((props, forwardedRef) => {\n const context = React.useContext(DismissableLayerContext);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n React.useEffect(() => {\n const node = ref.current;\n if (node) {\n context.branches.add(node);\n return () => {\n context.branches.delete(node);\n };\n }\n }, [context.branches]);\n return /* @__PURE__ */ jsx(Primitive.div, { ...props, ref: composedRefs });\n});\nDismissableLayerBranch.displayName = BRANCH_NAME;\nfunction usePointerDownOutside(onPointerDownOutside, ownerDocument = globalThis?.document) {\n const handlePointerDownOutside = useCallbackRef(onPointerDownOutside);\n const isPointerInsideReactTreeRef = React.useRef(false);\n const handleClickRef = React.useRef(() => {\n });\n React.useEffect(() => {\n const handlePointerDown = (event) => {\n if (event.target && !isPointerInsideReactTreeRef.current) {\n let handleAndDispatchPointerDownOutsideEvent2 = function() {\n handleAndDispatchCustomEvent(\n POINTER_DOWN_OUTSIDE,\n handlePointerDownOutside,\n eventDetail,\n { discrete: true }\n );\n };\n var handleAndDispatchPointerDownOutsideEvent = handleAndDispatchPointerDownOutsideEvent2;\n const eventDetail = { originalEvent: event };\n if (event.pointerType === \"touch\") {\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n handleClickRef.current = handleAndDispatchPointerDownOutsideEvent2;\n ownerDocument.addEventListener(\"click\", handleClickRef.current, { once: true });\n } else {\n handleAndDispatchPointerDownOutsideEvent2();\n }\n } else {\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n }\n isPointerInsideReactTreeRef.current = false;\n };\n const timerId = window.setTimeout(() => {\n ownerDocument.addEventListener(\"pointerdown\", handlePointerDown);\n }, 0);\n return () => {\n window.clearTimeout(timerId);\n ownerDocument.removeEventListener(\"pointerdown\", handlePointerDown);\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n };\n }, [ownerDocument, handlePointerDownOutside]);\n return {\n // ensures we check React component tree (not just DOM tree)\n onPointerDownCapture: () => isPointerInsideReactTreeRef.current = true\n };\n}\nfunction useFocusOutside(onFocusOutside, ownerDocument = globalThis?.document) {\n const handleFocusOutside = useCallbackRef(onFocusOutside);\n const isFocusInsideReactTreeRef = React.useRef(false);\n React.useEffect(() => {\n const handleFocus = (event) => {\n if (event.target && !isFocusInsideReactTreeRef.current) {\n const eventDetail = { originalEvent: event };\n handleAndDispatchCustomEvent(FOCUS_OUTSIDE, handleFocusOutside, eventDetail, {\n discrete: false\n });\n }\n };\n ownerDocument.addEventListener(\"focusin\", handleFocus);\n return () => ownerDocument.removeEventListener(\"focusin\", handleFocus);\n }, [ownerDocument, handleFocusOutside]);\n return {\n onFocusCapture: () => isFocusInsideReactTreeRef.current = true,\n onBlurCapture: () => isFocusInsideReactTreeRef.current = false\n };\n}\nfunction dispatchUpdate() {\n const event = new CustomEvent(CONTEXT_UPDATE);\n document.dispatchEvent(event);\n}\nfunction handleAndDispatchCustomEvent(name, handler, detail, { discrete }) {\n const target = detail.originalEvent.target;\n const event = new CustomEvent(name, { bubbles: false, cancelable: true, detail });\n if (handler) target.addEventListener(name, handler, { once: true });\n if (discrete) {\n dispatchDiscreteCustomEvent(target, event);\n } else {\n target.dispatchEvent(event);\n }\n}\nvar Root = DismissableLayer;\nvar Branch = DismissableLayerBranch;\nexport {\n Branch,\n DismissableLayer,\n DismissableLayerBranch,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/portal.tsx\nimport * as React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { jsx } from \"react/jsx-runtime\";\nvar PORTAL_NAME = \"Portal\";\nvar Portal = React.forwardRef((props, forwardedRef) => {\n const { container: containerProp, ...portalProps } = props;\n const [mounted, setMounted] = React.useState(false);\n useLayoutEffect(() => setMounted(true), []);\n const container = containerProp || mounted && globalThis?.document?.body;\n return container ? ReactDOM.createPortal(/* @__PURE__ */ jsx(Primitive.div, { ...portalProps, ref: forwardedRef }), container) : null;\n});\nPortal.displayName = PORTAL_NAME;\nvar Root = Portal;\nexport {\n Portal,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","// src/visually-hidden.tsx\nimport * as React from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar VISUALLY_HIDDEN_STYLES = Object.freeze({\n // See: https://github.com/twbs/bootstrap/blob/main/scss/mixins/_visually-hidden.scss\n position: \"absolute\",\n border: 0,\n width: 1,\n height: 1,\n padding: 0,\n margin: -1,\n overflow: \"hidden\",\n clip: \"rect(0, 0, 0, 0)\",\n whiteSpace: \"nowrap\",\n wordWrap: \"normal\"\n});\nvar NAME = \"VisuallyHidden\";\nvar VisuallyHidden = React.forwardRef(\n (props, forwardedRef) => {\n return /* @__PURE__ */ jsx(\n Primitive.span,\n {\n ...props,\n ref: forwardedRef,\n style: { ...VISUALLY_HIDDEN_STYLES, ...props.style }\n }\n );\n }\n);\nVisuallyHidden.displayName = NAME;\nvar Root = VisuallyHidden;\nexport {\n Root,\n VISUALLY_HIDDEN_STYLES,\n VisuallyHidden\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/select.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { clamp } from \"@radix-ui/number\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createCollection } from \"@radix-ui/react-collection\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { useFocusGuards } from \"@radix-ui/react-focus-guards\";\nimport { FocusScope } from \"@radix-ui/react-focus-scope\";\nimport { useId } from \"@radix-ui/react-id\";\nimport * as PopperPrimitive from \"@radix-ui/react-popper\";\nimport { createPopperScope } from \"@radix-ui/react-popper\";\nimport { Portal as PortalPrimitive } from \"@radix-ui/react-portal\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { usePrevious } from \"@radix-ui/react-use-previous\";\nimport { VISUALLY_HIDDEN_STYLES } from \"@radix-ui/react-visually-hidden\";\nimport { hideOthers } from \"aria-hidden\";\nimport { RemoveScroll } from \"react-remove-scroll\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nvar OPEN_KEYS = [\" \", \"Enter\", \"ArrowUp\", \"ArrowDown\"];\nvar SELECTION_KEYS = [\" \", \"Enter\"];\nvar SELECT_NAME = \"Select\";\nvar [Collection, useCollection, createCollectionScope] = createCollection(SELECT_NAME);\nvar [createSelectContext, createSelectScope] = createContextScope(SELECT_NAME, [\n createCollectionScope,\n createPopperScope\n]);\nvar usePopperScope = createPopperScope();\nvar [SelectProvider, useSelectContext] = createSelectContext(SELECT_NAME);\nvar [SelectNativeOptionsProvider, useSelectNativeOptionsContext] = createSelectContext(SELECT_NAME);\nvar Select = (props) => {\n const {\n __scopeSelect,\n children,\n open: openProp,\n defaultOpen,\n onOpenChange,\n value: valueProp,\n defaultValue,\n onValueChange,\n dir,\n name,\n autoComplete,\n disabled,\n required,\n form\n } = props;\n const popperScope = usePopperScope(__scopeSelect);\n const [trigger, setTrigger] = React.useState(null);\n const [valueNode, setValueNode] = React.useState(null);\n const [valueNodeHasChildren, setValueNodeHasChildren] = React.useState(false);\n const direction = useDirection(dir);\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen ?? false,\n onChange: onOpenChange,\n caller: SELECT_NAME\n });\n const [value, setValue] = useControllableState({\n prop: valueProp,\n defaultProp: defaultValue,\n onChange: onValueChange,\n caller: SELECT_NAME\n });\n const triggerPointerDownPosRef = React.useRef(null);\n const isFormControl = trigger ? form || !!trigger.closest(\"form\") : true;\n const [nativeOptionsSet, setNativeOptionsSet] = React.useState(/* @__PURE__ */ new Set());\n const nativeSelectKey = Array.from(nativeOptionsSet).map((option) => option.props.value).join(\";\");\n return /* @__PURE__ */ jsx(PopperPrimitive.Root, { ...popperScope, children: /* @__PURE__ */ jsxs(\n SelectProvider,\n {\n required,\n scope: __scopeSelect,\n trigger,\n onTriggerChange: setTrigger,\n valueNode,\n onValueNodeChange: setValueNode,\n valueNodeHasChildren,\n onValueNodeHasChildrenChange: setValueNodeHasChildren,\n contentId: useId(),\n value,\n onValueChange: setValue,\n open,\n onOpenChange: setOpen,\n dir: direction,\n triggerPointerDownPosRef,\n disabled,\n children: [\n /* @__PURE__ */ jsx(Collection.Provider, { scope: __scopeSelect, children: /* @__PURE__ */ jsx(\n SelectNativeOptionsProvider,\n {\n scope: props.__scopeSelect,\n onNativeOptionAdd: React.useCallback((option) => {\n setNativeOptionsSet((prev) => new Set(prev).add(option));\n }, []),\n onNativeOptionRemove: React.useCallback((option) => {\n setNativeOptionsSet((prev) => {\n const optionsSet = new Set(prev);\n optionsSet.delete(option);\n return optionsSet;\n });\n }, []),\n children\n }\n ) }),\n isFormControl ? /* @__PURE__ */ jsxs(\n SelectBubbleInput,\n {\n \"aria-hidden\": true,\n required,\n tabIndex: -1,\n name,\n autoComplete,\n value,\n onChange: (event) => setValue(event.target.value),\n disabled,\n form,\n children: [\n value === void 0 ? /* @__PURE__ */ jsx(\"option\", { value: \"\" }) : null,\n Array.from(nativeOptionsSet)\n ]\n },\n nativeSelectKey\n ) : null\n ]\n }\n ) });\n};\nSelect.displayName = SELECT_NAME;\nvar TRIGGER_NAME = \"SelectTrigger\";\nvar SelectTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, disabled = false, ...triggerProps } = props;\n const popperScope = usePopperScope(__scopeSelect);\n const context = useSelectContext(TRIGGER_NAME, __scopeSelect);\n const isDisabled = context.disabled || disabled;\n const composedRefs = useComposedRefs(forwardedRef, context.onTriggerChange);\n const getItems = useCollection(__scopeSelect);\n const pointerTypeRef = React.useRef(\"touch\");\n const [searchRef, handleTypeaheadSearch, resetTypeahead] = useTypeaheadSearch((search) => {\n const enabledItems = getItems().filter((item) => !item.disabled);\n const currentItem = enabledItems.find((item) => item.value === context.value);\n const nextItem = findNextItem(enabledItems, search, currentItem);\n if (nextItem !== void 0) {\n context.onValueChange(nextItem.value);\n }\n });\n const handleOpen = (pointerEvent) => {\n if (!isDisabled) {\n context.onOpenChange(true);\n resetTypeahead();\n }\n if (pointerEvent) {\n context.triggerPointerDownPosRef.current = {\n x: Math.round(pointerEvent.pageX),\n y: Math.round(pointerEvent.pageY)\n };\n }\n };\n return /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { asChild: true, ...popperScope, children: /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n role: \"combobox\",\n \"aria-controls\": context.contentId,\n \"aria-expanded\": context.open,\n \"aria-required\": context.required,\n \"aria-autocomplete\": \"none\",\n dir: context.dir,\n \"data-state\": context.open ? \"open\" : \"closed\",\n disabled: isDisabled,\n \"data-disabled\": isDisabled ? \"\" : void 0,\n \"data-placeholder\": shouldShowPlaceholder(context.value) ? \"\" : void 0,\n ...triggerProps,\n ref: composedRefs,\n onClick: composeEventHandlers(triggerProps.onClick, (event) => {\n event.currentTarget.focus();\n if (pointerTypeRef.current !== \"mouse\") {\n handleOpen(event);\n }\n }),\n onPointerDown: composeEventHandlers(triggerProps.onPointerDown, (event) => {\n pointerTypeRef.current = event.pointerType;\n const target = event.target;\n if (target.hasPointerCapture(event.pointerId)) {\n target.releasePointerCapture(event.pointerId);\n }\n if (event.button === 0 && event.ctrlKey === false && event.pointerType === \"mouse\") {\n handleOpen(event);\n event.preventDefault();\n }\n }),\n onKeyDown: composeEventHandlers(triggerProps.onKeyDown, (event) => {\n const isTypingAhead = searchRef.current !== \"\";\n const isModifierKey = event.ctrlKey || event.altKey || event.metaKey;\n if (!isModifierKey && event.key.length === 1) handleTypeaheadSearch(event.key);\n if (isTypingAhead && event.key === \" \") return;\n if (OPEN_KEYS.includes(event.key)) {\n handleOpen();\n event.preventDefault();\n }\n })\n }\n ) });\n }\n);\nSelectTrigger.displayName = TRIGGER_NAME;\nvar VALUE_NAME = \"SelectValue\";\nvar SelectValue = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, className, style, children, placeholder = \"\", ...valueProps } = props;\n const context = useSelectContext(VALUE_NAME, __scopeSelect);\n const { onValueNodeHasChildrenChange } = context;\n const hasChildren = children !== void 0;\n const composedRefs = useComposedRefs(forwardedRef, context.onValueNodeChange);\n useLayoutEffect(() => {\n onValueNodeHasChildrenChange(hasChildren);\n }, [onValueNodeHasChildrenChange, hasChildren]);\n return /* @__PURE__ */ jsx(\n Primitive.span,\n {\n ...valueProps,\n ref: composedRefs,\n style: { pointerEvents: \"none\" },\n children: shouldShowPlaceholder(context.value) ? /* @__PURE__ */ jsx(Fragment, { children: placeholder }) : children\n }\n );\n }\n);\nSelectValue.displayName = VALUE_NAME;\nvar ICON_NAME = \"SelectIcon\";\nvar SelectIcon = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, children, ...iconProps } = props;\n return /* @__PURE__ */ jsx(Primitive.span, { \"aria-hidden\": true, ...iconProps, ref: forwardedRef, children: children || \"\\u25BC\" });\n }\n);\nSelectIcon.displayName = ICON_NAME;\nvar PORTAL_NAME = \"SelectPortal\";\nvar SelectPortal = (props) => {\n return /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, ...props });\n};\nSelectPortal.displayName = PORTAL_NAME;\nvar CONTENT_NAME = \"SelectContent\";\nvar SelectContent = React.forwardRef(\n (props, forwardedRef) => {\n const context = useSelectContext(CONTENT_NAME, props.__scopeSelect);\n const [fragment, setFragment] = React.useState();\n useLayoutEffect(() => {\n setFragment(new DocumentFragment());\n }, []);\n if (!context.open) {\n const frag = fragment;\n return frag ? ReactDOM.createPortal(\n /* @__PURE__ */ jsx(SelectContentProvider, { scope: props.__scopeSelect, children: /* @__PURE__ */ jsx(Collection.Slot, { scope: props.__scopeSelect, children: /* @__PURE__ */ jsx(\"div\", { children: props.children }) }) }),\n frag\n ) : null;\n }\n return /* @__PURE__ */ jsx(SelectContentImpl, { ...props, ref: forwardedRef });\n }\n);\nSelectContent.displayName = CONTENT_NAME;\nvar CONTENT_MARGIN = 10;\nvar [SelectContentProvider, useSelectContentContext] = createSelectContext(CONTENT_NAME);\nvar CONTENT_IMPL_NAME = \"SelectContentImpl\";\nvar Slot = createSlot(\"SelectContent.RemoveScroll\");\nvar SelectContentImpl = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeSelect,\n position = \"item-aligned\",\n onCloseAutoFocus,\n onEscapeKeyDown,\n onPointerDownOutside,\n //\n // PopperContent props\n side,\n sideOffset,\n align,\n alignOffset,\n arrowPadding,\n collisionBoundary,\n collisionPadding,\n sticky,\n hideWhenDetached,\n avoidCollisions,\n //\n ...contentProps\n } = props;\n const context = useSelectContext(CONTENT_NAME, __scopeSelect);\n const [content, setContent] = React.useState(null);\n const [viewport, setViewport] = React.useState(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setContent(node));\n const [selectedItem, setSelectedItem] = React.useState(null);\n const [selectedItemText, setSelectedItemText] = React.useState(\n null\n );\n const getItems = useCollection(__scopeSelect);\n const [isPositioned, setIsPositioned] = React.useState(false);\n const firstValidItemFoundRef = React.useRef(false);\n React.useEffect(() => {\n if (content) return hideOthers(content);\n }, [content]);\n useFocusGuards();\n const focusFirst = React.useCallback(\n (candidates) => {\n const [firstItem, ...restItems] = getItems().map((item) => item.ref.current);\n const [lastItem] = restItems.slice(-1);\n const PREVIOUSLY_FOCUSED_ELEMENT = document.activeElement;\n for (const candidate of candidates) {\n if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return;\n candidate?.scrollIntoView({ block: \"nearest\" });\n if (candidate === firstItem && viewport) viewport.scrollTop = 0;\n if (candidate === lastItem && viewport) viewport.scrollTop = viewport.scrollHeight;\n candidate?.focus();\n if (document.activeElement !== PREVIOUSLY_FOCUSED_ELEMENT) return;\n }\n },\n [getItems, viewport]\n );\n const focusSelectedItem = React.useCallback(\n () => focusFirst([selectedItem, content]),\n [focusFirst, selectedItem, content]\n );\n React.useEffect(() => {\n if (isPositioned) {\n focusSelectedItem();\n }\n }, [isPositioned, focusSelectedItem]);\n const { onOpenChange, triggerPointerDownPosRef } = context;\n React.useEffect(() => {\n if (content) {\n let pointerMoveDelta = { x: 0, y: 0 };\n const handlePointerMove = (event) => {\n pointerMoveDelta = {\n x: Math.abs(Math.round(event.pageX) - (triggerPointerDownPosRef.current?.x ?? 0)),\n y: Math.abs(Math.round(event.pageY) - (triggerPointerDownPosRef.current?.y ?? 0))\n };\n };\n const handlePointerUp = (event) => {\n if (pointerMoveDelta.x <= 10 && pointerMoveDelta.y <= 10) {\n event.preventDefault();\n } else {\n if (!content.contains(event.target)) {\n onOpenChange(false);\n }\n }\n document.removeEventListener(\"pointermove\", handlePointerMove);\n triggerPointerDownPosRef.current = null;\n };\n if (triggerPointerDownPosRef.current !== null) {\n document.addEventListener(\"pointermove\", handlePointerMove);\n document.addEventListener(\"pointerup\", handlePointerUp, { capture: true, once: true });\n }\n return () => {\n document.removeEventListener(\"pointermove\", handlePointerMove);\n document.removeEventListener(\"pointerup\", handlePointerUp, { capture: true });\n };\n }\n }, [content, onOpenChange, triggerPointerDownPosRef]);\n React.useEffect(() => {\n const close = () => onOpenChange(false);\n window.addEventListener(\"blur\", close);\n window.addEventListener(\"resize\", close);\n return () => {\n window.removeEventListener(\"blur\", close);\n window.removeEventListener(\"resize\", close);\n };\n }, [onOpenChange]);\n const [searchRef, handleTypeaheadSearch] = useTypeaheadSearch((search) => {\n const enabledItems = getItems().filter((item) => !item.disabled);\n const currentItem = enabledItems.find((item) => item.ref.current === document.activeElement);\n const nextItem = findNextItem(enabledItems, search, currentItem);\n if (nextItem) {\n setTimeout(() => nextItem.ref.current.focus());\n }\n });\n const itemRefCallback = React.useCallback(\n (node, value, disabled) => {\n const isFirstValidItem = !firstValidItemFoundRef.current && !disabled;\n const isSelectedItem = context.value !== void 0 && context.value === value;\n if (isSelectedItem || isFirstValidItem) {\n setSelectedItem(node);\n if (isFirstValidItem) firstValidItemFoundRef.current = true;\n }\n },\n [context.value]\n );\n const handleItemLeave = React.useCallback(() => content?.focus(), [content]);\n const itemTextRefCallback = React.useCallback(\n (node, value, disabled) => {\n const isFirstValidItem = !firstValidItemFoundRef.current && !disabled;\n const isSelectedItem = context.value !== void 0 && context.value === value;\n if (isSelectedItem || isFirstValidItem) {\n setSelectedItemText(node);\n }\n },\n [context.value]\n );\n const SelectPosition = position === \"popper\" ? SelectPopperPosition : SelectItemAlignedPosition;\n const popperContentProps = SelectPosition === SelectPopperPosition ? {\n side,\n sideOffset,\n align,\n alignOffset,\n arrowPadding,\n collisionBoundary,\n collisionPadding,\n sticky,\n hideWhenDetached,\n avoidCollisions\n } : {};\n return /* @__PURE__ */ jsx(\n SelectContentProvider,\n {\n scope: __scopeSelect,\n content,\n viewport,\n onViewportChange: setViewport,\n itemRefCallback,\n selectedItem,\n onItemLeave: handleItemLeave,\n itemTextRefCallback,\n focusSelectedItem,\n selectedItemText,\n position,\n isPositioned,\n searchRef,\n children: /* @__PURE__ */ jsx(RemoveScroll, { as: Slot, allowPinchZoom: true, children: /* @__PURE__ */ jsx(\n FocusScope,\n {\n asChild: true,\n trapped: context.open,\n onMountAutoFocus: (event) => {\n event.preventDefault();\n },\n onUnmountAutoFocus: composeEventHandlers(onCloseAutoFocus, (event) => {\n context.trigger?.focus({ preventScroll: true });\n event.preventDefault();\n }),\n children: /* @__PURE__ */ jsx(\n DismissableLayer,\n {\n asChild: true,\n disableOutsidePointerEvents: true,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside: (event) => event.preventDefault(),\n onDismiss: () => context.onOpenChange(false),\n children: /* @__PURE__ */ jsx(\n SelectPosition,\n {\n role: \"listbox\",\n id: context.contentId,\n \"data-state\": context.open ? \"open\" : \"closed\",\n dir: context.dir,\n onContextMenu: (event) => event.preventDefault(),\n ...contentProps,\n ...popperContentProps,\n onPlaced: () => setIsPositioned(true),\n ref: composedRefs,\n style: {\n // flex layout so we can place the scroll buttons properly\n display: \"flex\",\n flexDirection: \"column\",\n // reset the outline by default as the content MAY get focused\n outline: \"none\",\n ...contentProps.style\n },\n onKeyDown: composeEventHandlers(contentProps.onKeyDown, (event) => {\n const isModifierKey = event.ctrlKey || event.altKey || event.metaKey;\n if (event.key === \"Tab\") event.preventDefault();\n if (!isModifierKey && event.key.length === 1) handleTypeaheadSearch(event.key);\n if ([\"ArrowUp\", \"ArrowDown\", \"Home\", \"End\"].includes(event.key)) {\n const items = getItems().filter((item) => !item.disabled);\n let candidateNodes = items.map((item) => item.ref.current);\n if ([\"ArrowUp\", \"End\"].includes(event.key)) {\n candidateNodes = candidateNodes.slice().reverse();\n }\n if ([\"ArrowUp\", \"ArrowDown\"].includes(event.key)) {\n const currentElement = event.target;\n const currentIndex = candidateNodes.indexOf(currentElement);\n candidateNodes = candidateNodes.slice(currentIndex + 1);\n }\n setTimeout(() => focusFirst(candidateNodes));\n event.preventDefault();\n }\n })\n }\n )\n }\n )\n }\n ) })\n }\n );\n }\n);\nSelectContentImpl.displayName = CONTENT_IMPL_NAME;\nvar ITEM_ALIGNED_POSITION_NAME = \"SelectItemAlignedPosition\";\nvar SelectItemAlignedPosition = React.forwardRef((props, forwardedRef) => {\n const { __scopeSelect, onPlaced, ...popperProps } = props;\n const context = useSelectContext(CONTENT_NAME, __scopeSelect);\n const contentContext = useSelectContentContext(CONTENT_NAME, __scopeSelect);\n const [contentWrapper, setContentWrapper] = React.useState(null);\n const [content, setContent] = React.useState(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setContent(node));\n const getItems = useCollection(__scopeSelect);\n const shouldExpandOnScrollRef = React.useRef(false);\n const shouldRepositionRef = React.useRef(true);\n const { viewport, selectedItem, selectedItemText, focusSelectedItem } = contentContext;\n const position = React.useCallback(() => {\n if (context.trigger && context.valueNode && contentWrapper && content && viewport && selectedItem && selectedItemText) {\n const triggerRect = context.trigger.getBoundingClientRect();\n const contentRect = content.getBoundingClientRect();\n const valueNodeRect = context.valueNode.getBoundingClientRect();\n const itemTextRect = selectedItemText.getBoundingClientRect();\n if (context.dir !== \"rtl\") {\n const itemTextOffset = itemTextRect.left - contentRect.left;\n const left = valueNodeRect.left - itemTextOffset;\n const leftDelta = triggerRect.left - left;\n const minContentWidth = triggerRect.width + leftDelta;\n const contentWidth = Math.max(minContentWidth, contentRect.width);\n const rightEdge = window.innerWidth - CONTENT_MARGIN;\n const clampedLeft = clamp(left, [\n CONTENT_MARGIN,\n // Prevents the content from going off the starting edge of the\n // viewport. It may still go off the ending edge, but this can be\n // controlled by the user since they may want to manage overflow in a\n // specific way.\n // https://github.com/radix-ui/primitives/issues/2049\n Math.max(CONTENT_MARGIN, rightEdge - contentWidth)\n ]);\n contentWrapper.style.minWidth = minContentWidth + \"px\";\n contentWrapper.style.left = clampedLeft + \"px\";\n } else {\n const itemTextOffset = contentRect.right - itemTextRect.right;\n const right = window.innerWidth - valueNodeRect.right - itemTextOffset;\n const rightDelta = window.innerWidth - triggerRect.right - right;\n const minContentWidth = triggerRect.width + rightDelta;\n const contentWidth = Math.max(minContentWidth, contentRect.width);\n const leftEdge = window.innerWidth - CONTENT_MARGIN;\n const clampedRight = clamp(right, [\n CONTENT_MARGIN,\n Math.max(CONTENT_MARGIN, leftEdge - contentWidth)\n ]);\n contentWrapper.style.minWidth = minContentWidth + \"px\";\n contentWrapper.style.right = clampedRight + \"px\";\n }\n const items = getItems();\n const availableHeight = window.innerHeight - CONTENT_MARGIN * 2;\n const itemsHeight = viewport.scrollHeight;\n const contentStyles = window.getComputedStyle(content);\n const contentBorderTopWidth = parseInt(contentStyles.borderTopWidth, 10);\n const contentPaddingTop = parseInt(contentStyles.paddingTop, 10);\n const contentBorderBottomWidth = parseInt(contentStyles.borderBottomWidth, 10);\n const contentPaddingBottom = parseInt(contentStyles.paddingBottom, 10);\n const fullContentHeight = contentBorderTopWidth + contentPaddingTop + itemsHeight + contentPaddingBottom + contentBorderBottomWidth;\n const minContentHeight = Math.min(selectedItem.offsetHeight * 5, fullContentHeight);\n const viewportStyles = window.getComputedStyle(viewport);\n const viewportPaddingTop = parseInt(viewportStyles.paddingTop, 10);\n const viewportPaddingBottom = parseInt(viewportStyles.paddingBottom, 10);\n const topEdgeToTriggerMiddle = triggerRect.top + triggerRect.height / 2 - CONTENT_MARGIN;\n const triggerMiddleToBottomEdge = availableHeight - topEdgeToTriggerMiddle;\n const selectedItemHalfHeight = selectedItem.offsetHeight / 2;\n const itemOffsetMiddle = selectedItem.offsetTop + selectedItemHalfHeight;\n const contentTopToItemMiddle = contentBorderTopWidth + contentPaddingTop + itemOffsetMiddle;\n const itemMiddleToContentBottom = fullContentHeight - contentTopToItemMiddle;\n const willAlignWithoutTopOverflow = contentTopToItemMiddle <= topEdgeToTriggerMiddle;\n if (willAlignWithoutTopOverflow) {\n const isLastItem = items.length > 0 && selectedItem === items[items.length - 1].ref.current;\n contentWrapper.style.bottom = \"0px\";\n const viewportOffsetBottom = content.clientHeight - viewport.offsetTop - viewport.offsetHeight;\n const clampedTriggerMiddleToBottomEdge = Math.max(\n triggerMiddleToBottomEdge,\n selectedItemHalfHeight + // viewport might have padding bottom, include it to avoid a scrollable viewport\n (isLastItem ? viewportPaddingBottom : 0) + viewportOffsetBottom + contentBorderBottomWidth\n );\n const height = contentTopToItemMiddle + clampedTriggerMiddleToBottomEdge;\n contentWrapper.style.height = height + \"px\";\n } else {\n const isFirstItem = items.length > 0 && selectedItem === items[0].ref.current;\n contentWrapper.style.top = \"0px\";\n const clampedTopEdgeToTriggerMiddle = Math.max(\n topEdgeToTriggerMiddle,\n contentBorderTopWidth + viewport.offsetTop + // viewport might have padding top, include it to avoid a scrollable viewport\n (isFirstItem ? viewportPaddingTop : 0) + selectedItemHalfHeight\n );\n const height = clampedTopEdgeToTriggerMiddle + itemMiddleToContentBottom;\n contentWrapper.style.height = height + \"px\";\n viewport.scrollTop = contentTopToItemMiddle - topEdgeToTriggerMiddle + viewport.offsetTop;\n }\n contentWrapper.style.margin = `${CONTENT_MARGIN}px 0`;\n contentWrapper.style.minHeight = minContentHeight + \"px\";\n contentWrapper.style.maxHeight = availableHeight + \"px\";\n onPlaced?.();\n requestAnimationFrame(() => shouldExpandOnScrollRef.current = true);\n }\n }, [\n getItems,\n context.trigger,\n context.valueNode,\n contentWrapper,\n content,\n viewport,\n selectedItem,\n selectedItemText,\n context.dir,\n onPlaced\n ]);\n useLayoutEffect(() => position(), [position]);\n const [contentZIndex, setContentZIndex] = React.useState();\n useLayoutEffect(() => {\n if (content) setContentZIndex(window.getComputedStyle(content).zIndex);\n }, [content]);\n const handleScrollButtonChange = React.useCallback(\n (node) => {\n if (node && shouldRepositionRef.current === true) {\n position();\n focusSelectedItem?.();\n shouldRepositionRef.current = false;\n }\n },\n [position, focusSelectedItem]\n );\n return /* @__PURE__ */ jsx(\n SelectViewportProvider,\n {\n scope: __scopeSelect,\n contentWrapper,\n shouldExpandOnScrollRef,\n onScrollButtonChange: handleScrollButtonChange,\n children: /* @__PURE__ */ jsx(\n \"div\",\n {\n ref: setContentWrapper,\n style: {\n display: \"flex\",\n flexDirection: \"column\",\n position: \"fixed\",\n zIndex: contentZIndex\n },\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n ...popperProps,\n ref: composedRefs,\n style: {\n // When we get the height of the content, it includes borders. If we were to set\n // the height without having `boxSizing: 'border-box'` it would be too big.\n boxSizing: \"border-box\",\n // We need to ensure the content doesn't get taller than the wrapper\n maxHeight: \"100%\",\n ...popperProps.style\n }\n }\n )\n }\n )\n }\n );\n});\nSelectItemAlignedPosition.displayName = ITEM_ALIGNED_POSITION_NAME;\nvar POPPER_POSITION_NAME = \"SelectPopperPosition\";\nvar SelectPopperPosition = React.forwardRef((props, forwardedRef) => {\n const {\n __scopeSelect,\n align = \"start\",\n collisionPadding = CONTENT_MARGIN,\n ...popperProps\n } = props;\n const popperScope = usePopperScope(__scopeSelect);\n return /* @__PURE__ */ jsx(\n PopperPrimitive.Content,\n {\n ...popperScope,\n ...popperProps,\n ref: forwardedRef,\n align,\n collisionPadding,\n style: {\n // Ensure border-box for floating-ui calculations\n boxSizing: \"border-box\",\n ...popperProps.style,\n // re-namespace exposed content custom properties\n ...{\n \"--radix-select-content-transform-origin\": \"var(--radix-popper-transform-origin)\",\n \"--radix-select-content-available-width\": \"var(--radix-popper-available-width)\",\n \"--radix-select-content-available-height\": \"var(--radix-popper-available-height)\",\n \"--radix-select-trigger-width\": \"var(--radix-popper-anchor-width)\",\n \"--radix-select-trigger-height\": \"var(--radix-popper-anchor-height)\"\n }\n }\n }\n );\n});\nSelectPopperPosition.displayName = POPPER_POSITION_NAME;\nvar [SelectViewportProvider, useSelectViewportContext] = createSelectContext(CONTENT_NAME, {});\nvar VIEWPORT_NAME = \"SelectViewport\";\nvar SelectViewport = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, nonce, ...viewportProps } = props;\n const contentContext = useSelectContentContext(VIEWPORT_NAME, __scopeSelect);\n const viewportContext = useSelectViewportContext(VIEWPORT_NAME, __scopeSelect);\n const composedRefs = useComposedRefs(forwardedRef, contentContext.onViewportChange);\n const prevScrollTopRef = React.useRef(0);\n return /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsx(\n \"style\",\n {\n dangerouslySetInnerHTML: {\n __html: `[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}`\n },\n nonce\n }\n ),\n /* @__PURE__ */ jsx(Collection.Slot, { scope: __scopeSelect, children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-radix-select-viewport\": \"\",\n role: \"presentation\",\n ...viewportProps,\n ref: composedRefs,\n style: {\n // we use position: 'relative' here on the `viewport` so that when we call\n // `selectedItem.offsetTop` in calculations, the offset is relative to the viewport\n // (independent of the scrollUpButton).\n position: \"relative\",\n flex: 1,\n // Viewport should only be scrollable in the vertical direction.\n // This won't work in vertical writing modes, so we'll need to\n // revisit this if/when that is supported\n // https://developer.chrome.com/blog/vertical-form-controls\n overflow: \"hidden auto\",\n ...viewportProps.style\n },\n onScroll: composeEventHandlers(viewportProps.onScroll, (event) => {\n const viewport = event.currentTarget;\n const { contentWrapper, shouldExpandOnScrollRef } = viewportContext;\n if (shouldExpandOnScrollRef?.current && contentWrapper) {\n const scrolledBy = Math.abs(prevScrollTopRef.current - viewport.scrollTop);\n if (scrolledBy > 0) {\n const availableHeight = window.innerHeight - CONTENT_MARGIN * 2;\n const cssMinHeight = parseFloat(contentWrapper.style.minHeight);\n const cssHeight = parseFloat(contentWrapper.style.height);\n const prevHeight = Math.max(cssMinHeight, cssHeight);\n if (prevHeight < availableHeight) {\n const nextHeight = prevHeight + scrolledBy;\n const clampedNextHeight = Math.min(availableHeight, nextHeight);\n const heightDiff = nextHeight - clampedNextHeight;\n contentWrapper.style.height = clampedNextHeight + \"px\";\n if (contentWrapper.style.bottom === \"0px\") {\n viewport.scrollTop = heightDiff > 0 ? heightDiff : 0;\n contentWrapper.style.justifyContent = \"flex-end\";\n }\n }\n }\n }\n prevScrollTopRef.current = viewport.scrollTop;\n })\n }\n ) })\n ] });\n }\n);\nSelectViewport.displayName = VIEWPORT_NAME;\nvar GROUP_NAME = \"SelectGroup\";\nvar [SelectGroupContextProvider, useSelectGroupContext] = createSelectContext(GROUP_NAME);\nvar SelectGroup = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, ...groupProps } = props;\n const groupId = useId();\n return /* @__PURE__ */ jsx(SelectGroupContextProvider, { scope: __scopeSelect, id: groupId, children: /* @__PURE__ */ jsx(Primitive.div, { role: \"group\", \"aria-labelledby\": groupId, ...groupProps, ref: forwardedRef }) });\n }\n);\nSelectGroup.displayName = GROUP_NAME;\nvar LABEL_NAME = \"SelectLabel\";\nvar SelectLabel = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, ...labelProps } = props;\n const groupContext = useSelectGroupContext(LABEL_NAME, __scopeSelect);\n return /* @__PURE__ */ jsx(Primitive.div, { id: groupContext.id, ...labelProps, ref: forwardedRef });\n }\n);\nSelectLabel.displayName = LABEL_NAME;\nvar ITEM_NAME = \"SelectItem\";\nvar [SelectItemContextProvider, useSelectItemContext] = createSelectContext(ITEM_NAME);\nvar SelectItem = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeSelect,\n value,\n disabled = false,\n textValue: textValueProp,\n ...itemProps\n } = props;\n const context = useSelectContext(ITEM_NAME, __scopeSelect);\n const contentContext = useSelectContentContext(ITEM_NAME, __scopeSelect);\n const isSelected = context.value === value;\n const [textValue, setTextValue] = React.useState(textValueProp ?? \"\");\n const [isFocused, setIsFocused] = React.useState(false);\n const composedRefs = useComposedRefs(\n forwardedRef,\n (node) => contentContext.itemRefCallback?.(node, value, disabled)\n );\n const textId = useId();\n const pointerTypeRef = React.useRef(\"touch\");\n const handleSelect = () => {\n if (!disabled) {\n context.onValueChange(value);\n context.onOpenChange(false);\n }\n };\n if (value === \"\") {\n throw new Error(\n \"A <Select.Item /> must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.\"\n );\n }\n return /* @__PURE__ */ jsx(\n SelectItemContextProvider,\n {\n scope: __scopeSelect,\n value,\n disabled,\n textId,\n isSelected,\n onItemTextChange: React.useCallback((node) => {\n setTextValue((prevTextValue) => prevTextValue || (node?.textContent ?? \"\").trim());\n }, []),\n children: /* @__PURE__ */ jsx(\n Collection.ItemSlot,\n {\n scope: __scopeSelect,\n value,\n disabled,\n textValue,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n role: \"option\",\n \"aria-labelledby\": textId,\n \"data-highlighted\": isFocused ? \"\" : void 0,\n \"aria-selected\": isSelected && isFocused,\n \"data-state\": isSelected ? \"checked\" : \"unchecked\",\n \"aria-disabled\": disabled || void 0,\n \"data-disabled\": disabled ? \"\" : void 0,\n tabIndex: disabled ? void 0 : -1,\n ...itemProps,\n ref: composedRefs,\n onFocus: composeEventHandlers(itemProps.onFocus, () => setIsFocused(true)),\n onBlur: composeEventHandlers(itemProps.onBlur, () => setIsFocused(false)),\n onClick: composeEventHandlers(itemProps.onClick, () => {\n if (pointerTypeRef.current !== \"mouse\") handleSelect();\n }),\n onPointerUp: composeEventHandlers(itemProps.onPointerUp, () => {\n if (pointerTypeRef.current === \"mouse\") handleSelect();\n }),\n onPointerDown: composeEventHandlers(itemProps.onPointerDown, (event) => {\n pointerTypeRef.current = event.pointerType;\n }),\n onPointerMove: composeEventHandlers(itemProps.onPointerMove, (event) => {\n pointerTypeRef.current = event.pointerType;\n if (disabled) {\n contentContext.onItemLeave?.();\n } else if (pointerTypeRef.current === \"mouse\") {\n event.currentTarget.focus({ preventScroll: true });\n }\n }),\n onPointerLeave: composeEventHandlers(itemProps.onPointerLeave, (event) => {\n if (event.currentTarget === document.activeElement) {\n contentContext.onItemLeave?.();\n }\n }),\n onKeyDown: composeEventHandlers(itemProps.onKeyDown, (event) => {\n const isTypingAhead = contentContext.searchRef?.current !== \"\";\n if (isTypingAhead && event.key === \" \") return;\n if (SELECTION_KEYS.includes(event.key)) handleSelect();\n if (event.key === \" \") event.preventDefault();\n })\n }\n )\n }\n )\n }\n );\n }\n);\nSelectItem.displayName = ITEM_NAME;\nvar ITEM_TEXT_NAME = \"SelectItemText\";\nvar SelectItemText = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, className, style, ...itemTextProps } = props;\n const context = useSelectContext(ITEM_TEXT_NAME, __scopeSelect);\n const contentContext = useSelectContentContext(ITEM_TEXT_NAME, __scopeSelect);\n const itemContext = useSelectItemContext(ITEM_TEXT_NAME, __scopeSelect);\n const nativeOptionsContext = useSelectNativeOptionsContext(ITEM_TEXT_NAME, __scopeSelect);\n const [itemTextNode, setItemTextNode] = React.useState(null);\n const composedRefs = useComposedRefs(\n forwardedRef,\n (node) => setItemTextNode(node),\n itemContext.onItemTextChange,\n (node) => contentContext.itemTextRefCallback?.(node, itemContext.value, itemContext.disabled)\n );\n const textContent = itemTextNode?.textContent;\n const nativeOption = React.useMemo(\n () => /* @__PURE__ */ jsx(\"option\", { value: itemContext.value, disabled: itemContext.disabled, children: textContent }, itemContext.value),\n [itemContext.disabled, itemContext.value, textContent]\n );\n const { onNativeOptionAdd, onNativeOptionRemove } = nativeOptionsContext;\n useLayoutEffect(() => {\n onNativeOptionAdd(nativeOption);\n return () => onNativeOptionRemove(nativeOption);\n }, [onNativeOptionAdd, onNativeOptionRemove, nativeOption]);\n return /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsx(Primitive.span, { id: itemContext.textId, ...itemTextProps, ref: composedRefs }),\n itemContext.isSelected && context.valueNode && !context.valueNodeHasChildren ? ReactDOM.createPortal(itemTextProps.children, context.valueNode) : null\n ] });\n }\n);\nSelectItemText.displayName = ITEM_TEXT_NAME;\nvar ITEM_INDICATOR_NAME = \"SelectItemIndicator\";\nvar SelectItemIndicator = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, ...itemIndicatorProps } = props;\n const itemContext = useSelectItemContext(ITEM_INDICATOR_NAME, __scopeSelect);\n return itemContext.isSelected ? /* @__PURE__ */ jsx(Primitive.span, { \"aria-hidden\": true, ...itemIndicatorProps, ref: forwardedRef }) : null;\n }\n);\nSelectItemIndicator.displayName = ITEM_INDICATOR_NAME;\nvar SCROLL_UP_BUTTON_NAME = \"SelectScrollUpButton\";\nvar SelectScrollUpButton = React.forwardRef((props, forwardedRef) => {\n const contentContext = useSelectContentContext(SCROLL_UP_BUTTON_NAME, props.__scopeSelect);\n const viewportContext = useSelectViewportContext(SCROLL_UP_BUTTON_NAME, props.__scopeSelect);\n const [canScrollUp, setCanScrollUp] = React.useState(false);\n const composedRefs = useComposedRefs(forwardedRef, viewportContext.onScrollButtonChange);\n useLayoutEffect(() => {\n if (contentContext.viewport && contentContext.isPositioned) {\n let handleScroll2 = function() {\n const canScrollUp2 = viewport.scrollTop > 0;\n setCanScrollUp(canScrollUp2);\n };\n var handleScroll = handleScroll2;\n const viewport = contentContext.viewport;\n handleScroll2();\n viewport.addEventListener(\"scroll\", handleScroll2);\n return () => viewport.removeEventListener(\"scroll\", handleScroll2);\n }\n }, [contentContext.viewport, contentContext.isPositioned]);\n return canScrollUp ? /* @__PURE__ */ jsx(\n SelectScrollButtonImpl,\n {\n ...props,\n ref: composedRefs,\n onAutoScroll: () => {\n const { viewport, selectedItem } = contentContext;\n if (viewport && selectedItem) {\n viewport.scrollTop = viewport.scrollTop - selectedItem.offsetHeight;\n }\n }\n }\n ) : null;\n});\nSelectScrollUpButton.displayName = SCROLL_UP_BUTTON_NAME;\nvar SCROLL_DOWN_BUTTON_NAME = \"SelectScrollDownButton\";\nvar SelectScrollDownButton = React.forwardRef((props, forwardedRef) => {\n const contentContext = useSelectContentContext(SCROLL_DOWN_BUTTON_NAME, props.__scopeSelect);\n const viewportContext = useSelectViewportContext(SCROLL_DOWN_BUTTON_NAME, props.__scopeSelect);\n const [canScrollDown, setCanScrollDown] = React.useState(false);\n const composedRefs = useComposedRefs(forwardedRef, viewportContext.onScrollButtonChange);\n useLayoutEffect(() => {\n if (contentContext.viewport && contentContext.isPositioned) {\n let handleScroll2 = function() {\n const maxScroll = viewport.scrollHeight - viewport.clientHeight;\n const canScrollDown2 = Math.ceil(viewport.scrollTop) < maxScroll;\n setCanScrollDown(canScrollDown2);\n };\n var handleScroll = handleScroll2;\n const viewport = contentContext.viewport;\n handleScroll2();\n viewport.addEventListener(\"scroll\", handleScroll2);\n return () => viewport.removeEventListener(\"scroll\", handleScroll2);\n }\n }, [contentContext.viewport, contentContext.isPositioned]);\n return canScrollDown ? /* @__PURE__ */ jsx(\n SelectScrollButtonImpl,\n {\n ...props,\n ref: composedRefs,\n onAutoScroll: () => {\n const { viewport, selectedItem } = contentContext;\n if (viewport && selectedItem) {\n viewport.scrollTop = viewport.scrollTop + selectedItem.offsetHeight;\n }\n }\n }\n ) : null;\n});\nSelectScrollDownButton.displayName = SCROLL_DOWN_BUTTON_NAME;\nvar SelectScrollButtonImpl = React.forwardRef((props, forwardedRef) => {\n const { __scopeSelect, onAutoScroll, ...scrollIndicatorProps } = props;\n const contentContext = useSelectContentContext(\"SelectScrollButton\", __scopeSelect);\n const autoScrollTimerRef = React.useRef(null);\n const getItems = useCollection(__scopeSelect);\n const clearAutoScrollTimer = React.useCallback(() => {\n if (autoScrollTimerRef.current !== null) {\n window.clearInterval(autoScrollTimerRef.current);\n autoScrollTimerRef.current = null;\n }\n }, []);\n React.useEffect(() => {\n return () => clearAutoScrollTimer();\n }, [clearAutoScrollTimer]);\n useLayoutEffect(() => {\n const activeItem = getItems().find((item) => item.ref.current === document.activeElement);\n activeItem?.ref.current?.scrollIntoView({ block: \"nearest\" });\n }, [getItems]);\n return /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"aria-hidden\": true,\n ...scrollIndicatorProps,\n ref: forwardedRef,\n style: { flexShrink: 0, ...scrollIndicatorProps.style },\n onPointerDown: composeEventHandlers(scrollIndicatorProps.onPointerDown, () => {\n if (autoScrollTimerRef.current === null) {\n autoScrollTimerRef.current = window.setInterval(onAutoScroll, 50);\n }\n }),\n onPointerMove: composeEventHandlers(scrollIndicatorProps.onPointerMove, () => {\n contentContext.onItemLeave?.();\n if (autoScrollTimerRef.current === null) {\n autoScrollTimerRef.current = window.setInterval(onAutoScroll, 50);\n }\n }),\n onPointerLeave: composeEventHandlers(scrollIndicatorProps.onPointerLeave, () => {\n clearAutoScrollTimer();\n })\n }\n );\n});\nvar SEPARATOR_NAME = \"SelectSeparator\";\nvar SelectSeparator = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, ...separatorProps } = props;\n return /* @__PURE__ */ jsx(Primitive.div, { \"aria-hidden\": true, ...separatorProps, ref: forwardedRef });\n }\n);\nSelectSeparator.displayName = SEPARATOR_NAME;\nvar ARROW_NAME = \"SelectArrow\";\nvar SelectArrow = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, ...arrowProps } = props;\n const popperScope = usePopperScope(__scopeSelect);\n const context = useSelectContext(ARROW_NAME, __scopeSelect);\n const contentContext = useSelectContentContext(ARROW_NAME, __scopeSelect);\n return context.open && contentContext.position === \"popper\" ? /* @__PURE__ */ jsx(PopperPrimitive.Arrow, { ...popperScope, ...arrowProps, ref: forwardedRef }) : null;\n }\n);\nSelectArrow.displayName = ARROW_NAME;\nvar BUBBLE_INPUT_NAME = \"SelectBubbleInput\";\nvar SelectBubbleInput = React.forwardRef(\n ({ __scopeSelect, value, ...props }, forwardedRef) => {\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const prevValue = usePrevious(value);\n React.useEffect(() => {\n const select = ref.current;\n if (!select) return;\n const selectProto = window.HTMLSelectElement.prototype;\n const descriptor = Object.getOwnPropertyDescriptor(\n selectProto,\n \"value\"\n );\n const setValue = descriptor.set;\n if (prevValue !== value && setValue) {\n const event = new Event(\"change\", { bubbles: true });\n setValue.call(select, value);\n select.dispatchEvent(event);\n }\n }, [prevValue, value]);\n return /* @__PURE__ */ jsx(\n Primitive.select,\n {\n ...props,\n style: { ...VISUALLY_HIDDEN_STYLES, ...props.style },\n ref: composedRefs,\n defaultValue: value\n }\n );\n }\n);\nSelectBubbleInput.displayName = BUBBLE_INPUT_NAME;\nfunction shouldShowPlaceholder(value) {\n return value === \"\" || value === void 0;\n}\nfunction useTypeaheadSearch(onSearchChange) {\n const handleSearchChange = useCallbackRef(onSearchChange);\n const searchRef = React.useRef(\"\");\n const timerRef = React.useRef(0);\n const handleTypeaheadSearch = React.useCallback(\n (key) => {\n const search = searchRef.current + key;\n handleSearchChange(search);\n (function updateSearch(value) {\n searchRef.current = value;\n window.clearTimeout(timerRef.current);\n if (value !== \"\") timerRef.current = window.setTimeout(() => updateSearch(\"\"), 1e3);\n })(search);\n },\n [handleSearchChange]\n );\n const resetTypeahead = React.useCallback(() => {\n searchRef.current = \"\";\n window.clearTimeout(timerRef.current);\n }, []);\n React.useEffect(() => {\n return () => window.clearTimeout(timerRef.current);\n }, []);\n return [searchRef, handleTypeaheadSearch, resetTypeahead];\n}\nfunction findNextItem(items, search, currentItem) {\n const isRepeated = search.length > 1 && Array.from(search).every((char) => char === search[0]);\n const normalizedSearch = isRepeated ? search[0] : search;\n const currentItemIndex = currentItem ? items.indexOf(currentItem) : -1;\n let wrappedItems = wrapArray(items, Math.max(currentItemIndex, 0));\n const excludeCurrentItem = normalizedSearch.length === 1;\n if (excludeCurrentItem) wrappedItems = wrappedItems.filter((v) => v !== currentItem);\n const nextItem = wrappedItems.find(\n (item) => item.textValue.toLowerCase().startsWith(normalizedSearch.toLowerCase())\n );\n return nextItem !== currentItem ? nextItem : void 0;\n}\nfunction wrapArray(array, startIndex) {\n return array.map((_, index) => array[(startIndex + index) % array.length]);\n}\nvar Root2 = Select;\nvar Trigger = SelectTrigger;\nvar Value = SelectValue;\nvar Icon = SelectIcon;\nvar Portal = SelectPortal;\nvar Content2 = SelectContent;\nvar Viewport = SelectViewport;\nvar Group = SelectGroup;\nvar Label = SelectLabel;\nvar Item = SelectItem;\nvar ItemText = SelectItemText;\nvar ItemIndicator = SelectItemIndicator;\nvar ScrollUpButton = SelectScrollUpButton;\nvar ScrollDownButton = SelectScrollDownButton;\nvar Separator = SelectSeparator;\nvar Arrow2 = SelectArrow;\nexport {\n Arrow2 as Arrow,\n Content2 as Content,\n Group,\n Icon,\n Item,\n ItemIndicator,\n ItemText,\n Label,\n Portal,\n Root2 as Root,\n ScrollDownButton,\n ScrollUpButton,\n Select,\n SelectArrow,\n SelectContent,\n SelectGroup,\n SelectIcon,\n SelectItem,\n SelectItemIndicator,\n SelectItemText,\n SelectLabel,\n SelectPortal,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n SelectViewport,\n Separator,\n Trigger,\n Value,\n Viewport,\n createSelectScope\n};\n//# sourceMappingURL=index.mjs.map\n","import * as React from \"react\"\nimport * as SelectPrimitive from \"@radix-ui/react-select\"\nimport { Check, ChevronDown, ChevronUp } from \"lucide-react\"\n\nimport { cn } from \"../../../utils/cn\"\n\nconst Select = SelectPrimitive.Root\n\nconst SelectGroup = SelectPrimitive.Group\n\nconst SelectValue = SelectPrimitive.Value\n\nconst SelectTrigger = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Trigger\n ref={ref}\n className={cn(\n \"flex h-9 w-full items-center justify-between rounded-lg border border-gray-300 bg-white px-3 py-2 text-sm text-gray-900 transition-all duration-200 placeholder:text-gray-500 hover:border-gray-400 hover:bg-gray-50 focus:outline-none focus:border-blue-500 focus:bg-white disabled:cursor-not-allowed disabled:opacity-50 disabled:bg-gray-50 [&>span]:line-clamp-1\",\n className\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDown className=\"h-4 w-4 text-gray-600\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n))\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName\n\nconst SelectScrollUpButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollUpButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollUpButton\n ref={ref}\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <ChevronUp className=\"h-4 w-4\" />\n </SelectPrimitive.ScrollUpButton>\n))\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName\n\nconst SelectScrollDownButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollDownButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollDownButton\n ref={ref}\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <ChevronDown className=\"h-4 w-4\" />\n </SelectPrimitive.ScrollDownButton>\n))\nSelectScrollDownButton.displayName =\n SelectPrimitive.ScrollDownButton.displayName\n\nconst SelectContent = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\n>(({ className, children, position = \"popper\", ...props }, ref) => (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n ref={ref}\n className={cn(\n \"relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-lg border border-gray-200 bg-white text-gray-900 shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n className\n )}\n position={position}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n \"p-1\",\n position === \"popper\" &&\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]\"\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n))\nSelectContent.displayName = SelectPrimitive.Content.displayName\n\nconst SelectLabel = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Label\n ref={ref}\n className={cn(\"py-1.5 pl-8 pr-2 text-sm font-semibold\", className)}\n {...props}\n />\n))\nSelectLabel.displayName = SelectPrimitive.Label.displayName\n\nconst SelectItem = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex w-full cursor-pointer select-none items-center rounded-md py-2 pl-8 pr-2 text-sm text-gray-900 outline-none transition-colors hover:bg-blue-100 hover:text-blue-900 focus:bg-blue-100 focus:text-blue-900 data-[state=checked]:bg-blue-50 data-[state=checked]:text-blue-900 data-[state=checked]:font-medium data-[disabled]:pointer-events-none data-[disabled]:opacity-40 data-[disabled]:cursor-not-allowed\",\n className\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <Check className=\"h-4 w-4 text-blue-600\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n))\nSelectItem.displayName = SelectPrimitive.Item.displayName\n\nconst SelectSeparator = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-muted\", className)}\n {...props}\n />\n))\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName\n\nexport {\n Select,\n SelectGroup,\n SelectValue,\n SelectTrigger,\n SelectContent,\n SelectLabel,\n SelectItem,\n SelectSeparator,\n SelectScrollUpButton,\n SelectScrollDownButton,\n}","export default function stringsSimilarity(s1: string, s2: string): number {\n const words = s1.split(\" \");\n const words2 = s2.split(\" \");\n\n const highestSimilarity = words.reduce((acc, word) => {\n const highestSimilarity = words2.reduce((acc2, word2) => {\n const wordSimilarity = similarity(word, word2);\n return wordSimilarity > acc2 ? wordSimilarity : acc2;\n }, 0);\n\n return highestSimilarity > acc ? highestSimilarity : acc;\n }, 0);\n\n return highestSimilarity;\n}\n\n// From https://stackoverflow.com/a/36566052\n\nfunction similarity(s1: string, s2: string): number {\n let longer: string = s1;\n let shorter: string = s2;\n if (s1.length < s2.length) {\n longer = s2;\n shorter = s1;\n }\n const longerLength: number = longer.length;\n if (longerLength === 0) {\n return 1.0;\n }\n return (longerLength - editDistance(longer, shorter)) / parseFloat(longerLength.toString());\n}\n\nfunction editDistance(s1: string, s2: string): number {\n s1 = s1.toLowerCase();\n s2 = s2.toLowerCase();\n\n const costs: number[] = new Array(s2.length + 1);\n for (let i = 0; i <= s1.length; i++) {\n let lastValue: number = i;\n for (let j = 0; j <= s2.length; j++) {\n if (i === 0) costs[j] = j;\n else {\n if (j > 0) {\n let newValue: number = costs[j - 1];\n if (s1.charAt(i - 1) !== s2.charAt(j - 1)) newValue = Math.min(Math.min(newValue, lastValue), costs[j]) + 1;\n costs[j - 1] = lastValue;\n lastValue = newValue;\n }\n }\n }\n if (i > 0) costs[s2.length] = lastValue;\n }\n return costs[s2.length];\n}\n","/**\n * Column mapping service with optional LLM enhancement\n */\n\nexport interface MappingSuggestion {\n uploadIndex: number;\n templateKey: string;\n confidence: number;\n}\n\ninterface MappingResponse {\n success: boolean;\n mappings: MappingSuggestion[];\n}\n\n/**\n * Get enhanced column mapping suggestions from the backend\n * \n * @param uploadColumns - Array of upload columns with name and sample_data\n * @param templateColumns - Array of Column objects with id, label, and validators\n * @param backendUrl - Backend API URL\n * @param importerKey - Importer key for authentication\n * @returns Array of mapping suggestions or empty array on error\n */\nexport async function getMappingSuggestions(\n uploadColumns: any[],\n templateColumns: any[],\n backendUrl?: string,\n importerKey?: string\n): Promise<MappingSuggestion[]> {\n // Skip if missing required params\n if (!backendUrl || !importerKey || !uploadColumns.length || !templateColumns.length) {\n return [];\n }\n\n try {\n const response = await fetch(`${backendUrl}/api/v1/imports/key/mapping-suggestions`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n importerKey,\n uploadColumns,\n // Transform Column[] to backend expected format\n templateColumns: templateColumns.map((col: any) => ({\n key: col.id,\n name: col.label,\n required: col.validators?.some((v: any) => v.type === 'required')\n }))\n })\n });\n\n // Don't throw on non-200 status, just return empty array\n // This allows graceful fallback to string similarity\n if (!response.ok) {\n return [];\n }\n\n const data: MappingResponse = await response.json();\n \n if (data.success && Array.isArray(data.mappings)) {\n return data.mappings;\n }\n \n return [];\n } catch (error) {\n // Silent failure - fallback to string similarity\n return [];\n }\n}\n\n/**\n * Apply mapping suggestions to the current state\n * Only applies high-confidence suggestions that don't conflict\n * \n * @param suggestions - Array of mapping suggestions\n * @param currentValues - Current mapping values\n * @param usedTemplateKeys - Set of already used template keys\n * @param handleTemplateChange - Function to update a column mapping\n * @returns Number of mappings applied\n */\nexport function applyMappingSuggestions(\n suggestions: MappingSuggestion[],\n currentValues: { [key: number]: any },\n usedTemplateKeys: Set<string>,\n handleTemplateChange: (uploadIndex: number, templateKey: string) => void\n): number {\n let appliedCount = 0;\n \n // Sort by confidence (highest first)\n const sortedSuggestions = [...suggestions].sort((a, b) => b.confidence - a.confidence);\n \n for (const suggestion of sortedSuggestions) {\n // Only apply if:\n // 1. High confidence (>0.8)\n // 2. No existing mapping for this column or weak string match\n // 3. Template key is not already used\n const currentMapping = currentValues[suggestion.uploadIndex];\n const hasWeakMatch = currentMapping?.key && !currentMapping?.selected;\n \n if (\n suggestion.confidence > 0.8 &&\n (!currentMapping?.key || hasWeakMatch) &&\n !usedTemplateKeys.has(suggestion.templateKey)\n ) {\n handleTemplateChange(suggestion.uploadIndex, suggestion.templateKey);\n usedTemplateKeys.add(suggestion.templateKey);\n appliedCount++;\n }\n }\n \n return appliedCount;\n}","import React, { useState, useEffect, useMemo, useRef } from 'react';\nimport { Button } from '../../components/ui/button';\nimport { Box, Flex, Text, VStack, HStack } from '../../components/ui/flex';\nimport { Switch } from '../../components/ui/switch';\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from '../../components/ui/select';\n// Using native HTML table elements instead of Chakra UI\nimport { CheckCircle } from 'lucide-react';\nimport { useTranslation } from '../../../i18n/useTranslation';\nimport { Column, ColumnMapping, ColumnMappingDictionary } from '../../../types';\nimport stringSimilarity from '../../utils/stringSimilarity';\nimport { getMappingSuggestions } from '../../services/mapping';\n\ninterface ConfigureImportProps {\n columns?: Column[];\n data: any;\n onSuccess: (mapping: ColumnMappingDictionary, headerRow: number) => void;\n onCancel?: () => void;\n isSubmitting?: boolean;\n importerKey?: string;\n backendUrl?: string;\n isDemoMode?: boolean;\n}\n\nexport default function ConfigureImport({\n columns,\n data,\n onSuccess,\n onCancel,\n isSubmitting = false,\n importerKey,\n backendUrl,\n isDemoMode = false,\n}: ConfigureImportProps) {\n const { t } = useTranslation();\n const selectedHeaderRow = 0; // Always use first row as headers\n const [columnMapping, setColumnMapping] = useState<ColumnMappingDictionary>({});\n const [error, setError] = useState<string | null>(null);\n const llmEnhancementCalled = useRef(false);\n\n // Get preview data (first 5 rows)\n const previewRows = useMemo(() => {\n return data.rows.slice(0, Math.min(5, data.rows.length));\n }, [data.rows]);\n\n // Get column headers from first row\n const columnHeaders = useMemo(() => {\n if (data.rows[selectedHeaderRow]) {\n return data.rows[selectedHeaderRow].values;\n }\n return [];\n }, [data.rows]);\n\n // Prepare uploadColumns for AI mapping\n const uploadColumns = useMemo(() => {\n return columnHeaders.map((header: string, index: number) => ({\n index: index,\n name: header,\n sample_data: data.rows\n .slice(selectedHeaderRow + 1, selectedHeaderRow + 4)\n .map((row: any) => row.values[index])\n .filter((val: any) => val)\n }));\n }, [columnHeaders, data.rows, selectedHeaderRow]);\n\n // Get sample data for each column (skip header row)\n const getSampleData = (columnIndex: number) => {\n const startRow = selectedHeaderRow + 1;\n const samples = data.rows\n .slice(startRow, startRow + 3)\n .map((row: any) => row.values[columnIndex])\n .filter((val: any) => val);\n return samples.join(', ');\n };\n\n // Use columns directly - no conversion needed\n const templateColumns = columns || [];\n\n // Auto-map columns based on name similarity\n useEffect(() => {\n const autoMap: ColumnMappingDictionary = {};\n\n columnHeaders.forEach((header: string, index: number) => {\n let bestMatch = { column: null as any, score: 0 };\n\n templateColumns.forEach((templateCol) => {\n const score = stringSimilarity(\n header.toLowerCase().trim(),\n templateCol.label.toLowerCase().trim()\n );\n\n if (score > bestMatch.score && score > 0.6) {\n bestMatch = { column: templateCol, score };\n }\n });\n\n if (bestMatch.column) {\n autoMap[index] = {\n id: bestMatch.column.id || '',\n label: bestMatch.column.label,\n include: true,\n };\n }\n });\n\n setColumnMapping(autoMap);\n }, [columnHeaders, templateColumns]);\n\n // Enhance mappings with LLM suggestions after initial load\n useEffect(() => {\n const enhanceWithLLM = async () => {\n // Skip if already called\n if (llmEnhancementCalled.current) {\n return;\n }\n \n // Only run if we have columns, backend URL, and importer key\n if (!uploadColumns.length || !templateColumns.length || !backendUrl || !importerKey) {\n return;\n }\n\n // Mark as called to prevent duplicate requests\n llmEnhancementCalled.current = true;\n\n try {\n // Get LLM-enhanced mapping suggestions\n const suggestions = await getMappingSuggestions(\n uploadColumns,\n templateColumns,\n backendUrl,\n importerKey\n );\n\n if (suggestions.length > 0) {\n // Apply high-confidence suggestions that don't override existing good matches\n setColumnMapping((prevMapping) => {\n const newMapping = { ...prevMapping };\n const usedTemplateIds = new Set(\n Object.values(prevMapping)\n .filter(v => v.id)\n .map(v => v.id)\n );\n\n // Sort by confidence (highest first)\n const sortedSuggestions = [...suggestions].sort((a, b) => b.confidence - a.confidence);\n\n for (const suggestion of sortedSuggestions) {\n // Only apply if:\n // 1. Good confidence (>0.7)\n // 2. No existing mapping or low-confidence string match\n // 3. Template key not already used\n const currentMapping = prevMapping[suggestion.uploadIndex];\n const hasWeakMatch = currentMapping?.id && !currentMapping?.include;\n \n if (\n suggestion.confidence > 0.7 &&\n (!currentMapping?.id || hasWeakMatch) &&\n !usedTemplateIds.has(suggestion.templateKey)\n ) {\n const templateCol = templateColumns.find(col => col.id === suggestion.templateKey);\n if (templateCol) {\n newMapping[suggestion.uploadIndex] = {\n id: suggestion.templateKey,\n label: templateCol.label,\n include: true,\n };\n usedTemplateIds.add(suggestion.templateKey);\n }\n }\n }\n\n return newMapping;\n });\n }\n } catch (error) {\n // Silently fail - fallback to string similarity is already applied\n }\n };\n\n enhanceWithLLM();\n }, [uploadColumns, templateColumns, backendUrl, importerKey]);\n\n // Handle column mapping change\n const handleMappingChange = (templateFieldId: string, csvColumnIndex: string) => {\n const newMapping = { ...columnMapping };\n\n // Clear previous mapping for this template field\n Object.keys(newMapping).forEach((key) => {\n if (newMapping[parseInt(key)].id === templateFieldId) {\n delete newMapping[parseInt(key)];\n }\n });\n\n // Set new mapping if column selected (and not \"none\")\n if (csvColumnIndex !== '' && csvColumnIndex !== 'none') {\n const colIndex = parseInt(csvColumnIndex);\n const templateField = templateColumns.find(col => col.id === templateFieldId);\n\n if (templateField) {\n newMapping[colIndex] = {\n id: templateFieldId,\n label: templateField.label,\n include: true,\n };\n }\n }\n\n setColumnMapping(newMapping);\n };\n\n // Get CSV column index for a template field\n const getMappedColumn = (templateFieldId: string): string => {\n const entry = Object.entries(columnMapping).find(\n ([_, mapping]) => mapping.id === templateFieldId\n );\n return entry ? entry[0] : '';\n };\n\n // Check if all required fields are mapped\n const allRequiredFieldsMapped = useMemo(() => {\n const requiredFields = templateColumns.filter((col: any) => \n col.validators?.some((v: any) => v.type === 'required')\n );\n return requiredFields.every((field: any) =>\n Object.values(columnMapping).some(mapping => mapping.id === field.id)\n );\n }, [templateColumns, columnMapping]);\n\n // Handle form submission\n const handleSubmit = () => {\n if (!allRequiredFieldsMapped) {\n setError(t('Please map all required fields'));\n return;\n }\n\n setError(null);\n onSuccess(columnMapping, selectedHeaderRow);\n };\n\n return (\n <div className=\"flex flex-col h-full\">\n <VStack className=\"gap-6 w-full\">\n {/* Title Section */}\n <Box>\n <Text className=\"text-sm text-gray-600\">\n {t('Map columns from imported CSV.')}\n </Text>\n </Box>\n\n {/* Mapping table */}\n <Box className=\"border border-gray-200 rounded-lg overflow-x-auto bg-white w-full\">\n <table className=\"w-full border-collapse min-w-[600px]\">\n <thead className=\"bg-gray-50 border-b border-gray-200\">\n <tr>\n <th className=\"text-left px-6 py-3 w-[30%]\">\n <Text className=\"text-sm font-semibold text-gray-700\">\n {t('Fields')}\n </Text>\n </th>\n <th className=\"text-left px-6 py-3 w-[35%]\">\n <Text className=\"text-sm font-semibold text-gray-700\">\n {t('CSV Column')}\n </Text>\n </th>\n <th className=\"text-left px-6 py-3 w-[35%]\">\n <Text className=\"text-sm font-semibold text-gray-700\">\n {t('CSV Example Data')}\n </Text>\n </th>\n </tr>\n </thead>\n <tbody>\n {templateColumns.map((field: any, index: number) => {\n const mappedColumn = getMappedColumn(field.id);\n const isMapped = mappedColumn !== '';\n const isRequired = field.validators?.some((v: any) => v.type === 'required');\n\n return (\n <tr key={field.id} className=\"border-b border-gray-100 hover:bg-gray-50 transition-colors\">\n <td className=\"px-6 py-4\">\n <HStack className=\"gap-2 items-center\">\n {isMapped && (\n <CheckCircle className=\"w-5 h-5 text-green-500 flex-shrink-0\" />\n )}\n {!isMapped && isRequired && (\n <Box className=\"w-5 h-5 rounded-full border-2 border-gray-300 flex-shrink-0\" />\n )}\n {!isMapped && !isRequired && (\n <Box className=\"w-5 h-5 flex-shrink-0\" />\n )}\n <Text className=\"text-sm font-medium text-gray-900\">\n {field.label}\n {isRequired && (\n <span className=\"text-red-500 ml-1\">*</span>\n )}\n </Text>\n </HStack>\n </td>\n <td className=\"px-6 py-4\">\n <Select value={mappedColumn} onValueChange={(value) => handleMappingChange(field.id, value)}>\n <SelectTrigger className=\"h-9 w-full max-w-[250px]\">\n <SelectValue placeholder={t('Select...')} />\n </SelectTrigger>\n <SelectContent>\n {/* None option to unmap */}\n <SelectItem value=\"none\">\n <span className=\"text-gray-500\">— None —</span>\n </SelectItem>\n \n {/* Divider */}\n <div className=\"h-px bg-gray-200 my-1\" />\n \n {/* Column options */}\n {columnHeaders.map((header: string, idx: number) => {\n const isAlreadyMapped = Object.keys(columnMapping).includes(idx.toString()) &&\n columnMapping[idx].id !== field.id;\n\n return (\n <SelectItem\n key={idx}\n value={idx.toString()}\n disabled={isAlreadyMapped}\n >\n {isAlreadyMapped ? (\n <span className=\"text-gray-400\">{header} (mapped)</span>\n ) : (\n header\n )}\n </SelectItem>\n );\n })}\n </SelectContent>\n </Select>\n </td>\n <td className=\"px-6 py-4\">\n <Text className=\"text-sm text-gray-600 truncate max-w-[300px]\" title={mappedColumn ? getSampleData(parseInt(mappedColumn)) : ''}>\n {mappedColumn ? (getSampleData(parseInt(mappedColumn)) || '-') : ''}\n </Text>\n </td>\n </tr>\n );\n })}\n </tbody>\n </table>\n </Box>\n\n {/* Error message */}\n {error && (\n <Box className=\"bg-red-50 border border-red-200 rounded-lg px-4 py-3\">\n <Text className=\"text-sm text-red-700\">{error}</Text>\n </Box>\n )}\n\n {/* Action Buttons */}\n <Flex justify=\"between\" className=\"w-full pt-6 border-t border-gray-200\">\n {!isDemoMode && onCancel && (\n <Button\n variant=\"outline\"\n onClick={onCancel}\n disabled={isSubmitting}\n size=\"default\"\n >\n {t('Back')}\n </Button>\n )}\n {isDemoMode && <div />}\n <Button\n onClick={handleSubmit}\n isLoading={isSubmitting}\n disabled={!allRequiredFieldsMapped}\n size=\"default\"\n variant=\"default\"\n >\n {t('Continue')}\n </Button>\n </Flex>\n </VStack>\n </div>\n );\n}","import { isValidElement } from \"react\";\n\nexport default function getStringLengthOfChildren(children: React.ReactNode): number {\n if (typeof children === \"string\") return children.length;\n\n if (Array.isArray(children)) return children.reduce((sum, child) => sum + getStringLengthOfChildren(child), 0);\n\n // If child is a React element, process its children recursively\n if (isValidElement(children)) return getStringLengthOfChildren(children.props.children);\n\n // If none of the above, return 0\n return 0;\n}\n","import { useEffect, useRef, useState } from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { cn } from \"../../../utils/cn\";\nimport getStringLengthOfChildren from \"../../utils/getStringLengthOfChildren\";\nimport { AsMap, TooltipProps } from \"./types\";\nimport { Info } from \"lucide-react\";\n\nexport default function Tooltip<T extends keyof AsMap>({ as, className, title, children, icon = <Info />, ...props }: TooltipProps<T>) {\n const Tag: any = as || \"span\";\n\n const length = getStringLengthOfChildren(title);\n const wrapperClasses = cn(\"inline-flex items-center gap-1\", className);\n\n const [tooltipVisible, setTooltipVisible] = useState(false);\n const [position, setPosition] = useState({ top: 0, left: 0 });\n const targetRef = useRef<any>(null);\n\n // Create a ref to attach the tooltip portal to\n const tooltipContainer = useRef(document.createElement(\"div\"));\n\n useEffect(() => {\n // Appending the tooltip container to the body on mount\n document.body.appendChild(tooltipContainer.current);\n\n // Removing the tooltip container from the body on unmount\n return () => {\n document.body.removeChild(tooltipContainer.current);\n };\n }, []);\n\n const showTooltip = () => {\n if (targetRef.current) {\n const rect = targetRef.current.getBoundingClientRect();\n setPosition({\n top: rect.bottom + window.scrollY,\n left: rect.left + rect.width / 2 + window.scrollX,\n });\n setTooltipVisible(true);\n }\n };\n\n const hideTooltip = () => {\n setTooltipVisible(false);\n };\n\n const tooltipMessage = tooltipVisible && (\n <span \n className={cn(\n \"absolute z-50 px-2 py-1 text-xs text-white bg-gray-900 rounded shadow-lg -translate-x-1/2 mt-1\",\n length > 30 && \"max-w-xs whitespace-normal\"\n )} \n style={{ position: \"fixed\", top: `${position.top}px`, left: `${position.left}px` }}>\n {title}\n </span>\n );\n\n return (\n <Tag {...props} className={wrapperClasses}>\n {children}\n <span className=\"inline-flex cursor-help text-gray-400 hover:text-gray-600\" onMouseEnter={showTooltip} onMouseLeave={hideTooltip} ref={targetRef}>\n {icon}\n {tooltipMessage}\n </span>\n </Tag>\n );\n}\n","import React, { createContext, useContext } from \"react\";\nimport { cn } from \"../../../utils/cn\";\nimport { CellProps, RowProps, TableProps } from \"./types\";\nimport Tooltip from \"../Tooltip\";\n\nconst TableContext = createContext<any>({});\n\nexport default function Table({\n data, // An array of objects with the data to be displayed\n keyAsId = \"id\", // Has to be a unique property in the data array to be used as key\n theme, // A CSS module object to style the table\n mergeThemes, // Should 'theme' be the only style applied (false) or be merged with the default style (true)\n highlightColumns, // Columns that should use the highlighted style\n hideColumns = [\"id\"], // Array of columns to be hidden in the display\n emptyState,\n heading,\n background = \"zebra\",\n columnWidths = [],\n columnAlignments = [],\n fixHeader = false,\n onRowClick,\n}: TableProps): React.ReactElement {\n\n // TABLE HEADINGS\n // Hide column title if the item has an action (action button) or the title starts with underscore\n const modelDatum = data?.[0];\n const thead: any = modelDatum\n ? Object.keys(modelDatum).map((k) => {\n const value = modelDatum[k];\n\n if (k.indexOf(\"_\") === 0) {\n return \"\";\n }\n\n if (typeof value === \"object\" && value?.captionInfo) {\n return { key: k, captionInfo: value.captionInfo };\n }\n\n return k;\n })\n : {};\n const context = {\n highlightColumns,\n hideColumns,\n columnWidths,\n columnAlignments,\n };\n\n if (!data || !data?.length) return <div className=\"text-center text-gray-500 py-8\">{emptyState || null}</div>;\n\n const tableStyle = cn(\n \"w-full border-collapse\",\n background === \"zebra\" && \"[&>div:nth-child(even)]:bg-gray-50\",\n fixHeader && \"relative\"\n );\n\n const headingContent = heading ? (\n <div className=\"px-4 py-2 font-semibold text-lg border-b\">{heading}</div>\n ) : (\n <div className=\"sticky top-0 bg-gray-100 font-semibold border-b\" role=\"rowgroup\">\n <Row datum={thead} isHeading={true} />\n </div>\n );\n\n return (\n <TableContext.Provider value={context}>\n <div className={tableStyle} role=\"table\">\n {headingContent}\n <div className=\"divide-y divide-gray-200\" role=\"rowgroup\">\n {data.map((d, i) => {\n const key = keyAsId && d?.[keyAsId] ? d[keyAsId] : i;\n const props = { datum: d, onClick: onRowClick };\n return <Row {...props} key={key?.toString()} />;\n })}\n </div>\n </div>\n {!data.length && (\n <div className=\"text-center text-gray-500 py-8\" role=\"empty-query\">\n <p>Empty</p>\n </div>\n )}\n </TableContext.Provider>\n );\n}\n\nconst Row = ({ datum, onClick, isHeading }: RowProps) => {\n const { highlightColumns, hideColumns, columnWidths, columnAlignments } = useContext(TableContext);\n\n const className = cn(\n \"flex\",\n onClick && \"cursor-pointer hover:bg-gray-50\",\n isHeading && \"font-semibold\"\n );\n return (\n <div className={className} role=\"row\" onClick={() => onClick?.(datum)}>\n {Object.keys(datum)\n .filter((k) => !hideColumns.includes(datum[k]) && !hideColumns.includes(k))\n .map((k, i) => {\n // datum is the row\n // datum[k] is the content for the cell\n // If it is an object with the 'content' property, use that as content (can be JSX or a primitive)\n // Another 'raw' property with a primitive value is used to sort and search\n let content = (datum[k] as any)?.content || datum[k];\n const tooltip = (datum[k] as any)?.tooltip;\n const captionInfo = isHeading ? (datum[k] as any)?.captionInfo : null;\n const headingKey = isHeading ? (datum[k] as any)?.key : null;\n content = isHeading && captionInfo ? <Tooltip title={captionInfo}>{headingKey}</Tooltip> : content;\n const wrappedContent = content && typeof content === \"string\" ? <span>{content}</span> : content;\n\n const cellClass = cn(\n \"px-4 py-2\",\n highlightColumns?.includes(k) && \"bg-blue-50 font-medium\",\n !wrappedContent && \"text-gray-400\",\n typeof content !== \"string\" && \"flex items-center\"\n );\n\n const cellStyle = { width: columnWidths?.[i] || \"auto\", textAlign: columnAlignments?.[i] || \"left\" };\n\n return (\n <Cell key={k} cellClass={cellClass} cellStyle={cellStyle} tooltip={tooltip || \"\"}>\n {wrappedContent}\n </Cell>\n );\n })}\n </div>\n );\n};\n\nconst Cell = ({ children, cellClass, cellStyle, tooltip }: CellProps) => {\n const cellProps = {\n className: cn(\"flex-1\", cellClass, !children && \"text-gray-400\"),\n role: \"cell\",\n style: cellStyle,\n ...(tooltip ? { title: tooltip } : {}),\n };\n return <div {...cellProps}>{children}</div>;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","export const COMMON_MIME_TYPES = new Map([\n // https://github.com/guzzle/psr7/blob/2d9260799e713f1c475d3c5fdc3d6561ff7441b2/src/MimeType.php\n ['1km', 'application/vnd.1000minds.decision-model+xml'],\n ['3dml', 'text/vnd.in3d.3dml'],\n ['3ds', 'image/x-3ds'],\n ['3g2', 'video/3gpp2'],\n ['3gp', 'video/3gp'],\n ['3gpp', 'video/3gpp'],\n ['3mf', 'model/3mf'],\n ['7z', 'application/x-7z-compressed'],\n ['7zip', 'application/x-7z-compressed'],\n ['123', 'application/vnd.lotus-1-2-3'],\n ['aab', 'application/x-authorware-bin'],\n ['aac', 'audio/x-acc'],\n ['aam', 'application/x-authorware-map'],\n ['aas', 'application/x-authorware-seg'],\n ['abw', 'application/x-abiword'],\n ['ac', 'application/vnd.nokia.n-gage.ac+xml'],\n ['ac3', 'audio/ac3'],\n ['acc', 'application/vnd.americandynamics.acc'],\n ['ace', 'application/x-ace-compressed'],\n ['acu', 'application/vnd.acucobol'],\n ['acutc', 'application/vnd.acucorp'],\n ['adp', 'audio/adpcm'],\n ['aep', 'application/vnd.audiograph'],\n ['afm', 'application/x-font-type1'],\n ['afp', 'application/vnd.ibm.modcap'],\n ['ahead', 'application/vnd.ahead.space'],\n ['ai', 'application/pdf'],\n ['aif', 'audio/x-aiff'],\n ['aifc', 'audio/x-aiff'],\n ['aiff', 'audio/x-aiff'],\n ['air', 'application/vnd.adobe.air-application-installer-package+zip'],\n ['ait', 'application/vnd.dvb.ait'],\n ['ami', 'application/vnd.amiga.ami'],\n ['amr', 'audio/amr'],\n ['apk', 'application/vnd.android.package-archive'],\n ['apng', 'image/apng'],\n ['appcache', 'text/cache-manifest'],\n ['application', 'application/x-ms-application'],\n ['apr', 'application/vnd.lotus-approach'],\n ['arc', 'application/x-freearc'],\n ['arj', 'application/x-arj'],\n ['asc', 'application/pgp-signature'],\n ['asf', 'video/x-ms-asf'],\n ['asm', 'text/x-asm'],\n ['aso', 'application/vnd.accpac.simply.aso'],\n ['asx', 'video/x-ms-asf'],\n ['atc', 'application/vnd.acucorp'],\n ['atom', 'application/atom+xml'],\n ['atomcat', 'application/atomcat+xml'],\n ['atomdeleted', 'application/atomdeleted+xml'],\n ['atomsvc', 'application/atomsvc+xml'],\n ['atx', 'application/vnd.antix.game-component'],\n ['au', 'audio/x-au'],\n ['avi', 'video/x-msvideo'],\n ['avif', 'image/avif'],\n ['aw', 'application/applixware'],\n ['azf', 'application/vnd.airzip.filesecure.azf'],\n ['azs', 'application/vnd.airzip.filesecure.azs'],\n ['azv', 'image/vnd.airzip.accelerator.azv'],\n ['azw', 'application/vnd.amazon.ebook'],\n ['b16', 'image/vnd.pco.b16'],\n ['bat', 'application/x-msdownload'],\n ['bcpio', 'application/x-bcpio'],\n ['bdf', 'application/x-font-bdf'],\n ['bdm', 'application/vnd.syncml.dm+wbxml'],\n ['bdoc', 'application/x-bdoc'],\n ['bed', 'application/vnd.realvnc.bed'],\n ['bh2', 'application/vnd.fujitsu.oasysprs'],\n ['bin', 'application/octet-stream'],\n ['blb', 'application/x-blorb'],\n ['blorb', 'application/x-blorb'],\n ['bmi', 'application/vnd.bmi'],\n ['bmml', 'application/vnd.balsamiq.bmml+xml'],\n ['bmp', 'image/bmp'],\n ['book', 'application/vnd.framemaker'],\n ['box', 'application/vnd.previewsystems.box'],\n ['boz', 'application/x-bzip2'],\n ['bpk', 'application/octet-stream'],\n ['bpmn', 'application/octet-stream'],\n ['bsp', 'model/vnd.valve.source.compiled-map'],\n ['btif', 'image/prs.btif'],\n ['buffer', 'application/octet-stream'],\n ['bz', 'application/x-bzip'],\n ['bz2', 'application/x-bzip2'],\n ['c', 'text/x-c'],\n ['c4d', 'application/vnd.clonk.c4group'],\n ['c4f', 'application/vnd.clonk.c4group'],\n ['c4g', 'application/vnd.clonk.c4group'],\n ['c4p', 'application/vnd.clonk.c4group'],\n ['c4u', 'application/vnd.clonk.c4group'],\n ['c11amc', 'application/vnd.cluetrust.cartomobile-config'],\n ['c11amz', 'application/vnd.cluetrust.cartomobile-config-pkg'],\n ['cab', 'application/vnd.ms-cab-compressed'],\n ['caf', 'audio/x-caf'],\n ['cap', 'application/vnd.tcpdump.pcap'],\n ['car', 'application/vnd.curl.car'],\n ['cat', 'application/vnd.ms-pki.seccat'],\n ['cb7', 'application/x-cbr'],\n ['cba', 'application/x-cbr'],\n ['cbr', 'application/x-cbr'],\n ['cbt', 'application/x-cbr'],\n ['cbz', 'application/x-cbr'],\n ['cc', 'text/x-c'],\n ['cco', 'application/x-cocoa'],\n ['cct', 'application/x-director'],\n ['ccxml', 'application/ccxml+xml'],\n ['cdbcmsg', 'application/vnd.contact.cmsg'],\n ['cda', 'application/x-cdf'],\n ['cdf', 'application/x-netcdf'],\n ['cdfx', 'application/cdfx+xml'],\n ['cdkey', 'application/vnd.mediastation.cdkey'],\n ['cdmia', 'application/cdmi-capability'],\n ['cdmic', 'application/cdmi-container'],\n ['cdmid', 'application/cdmi-domain'],\n ['cdmio', 'application/cdmi-object'],\n ['cdmiq', 'application/cdmi-queue'],\n ['cdr', 'application/cdr'],\n ['cdx', 'chemical/x-cdx'],\n ['cdxml', 'application/vnd.chemdraw+xml'],\n ['cdy', 'application/vnd.cinderella'],\n ['cer', 'application/pkix-cert'],\n ['cfs', 'application/x-cfs-compressed'],\n ['cgm', 'image/cgm'],\n ['chat', 'application/x-chat'],\n ['chm', 'application/vnd.ms-htmlhelp'],\n ['chrt', 'application/vnd.kde.kchart'],\n ['cif', 'chemical/x-cif'],\n ['cii', 'application/vnd.anser-web-certificate-issue-initiation'],\n ['cil', 'application/vnd.ms-artgalry'],\n ['cjs', 'application/node'],\n ['cla', 'application/vnd.claymore'],\n ['class', 'application/octet-stream'],\n ['clkk', 'application/vnd.crick.clicker.keyboard'],\n ['clkp', 'application/vnd.crick.clicker.palette'],\n ['clkt', 'application/vnd.crick.clicker.template'],\n ['clkw', 'application/vnd.crick.clicker.wordbank'],\n ['clkx', 'application/vnd.crick.clicker'],\n ['clp', 'application/x-msclip'],\n ['cmc', 'application/vnd.cosmocaller'],\n ['cmdf', 'chemical/x-cmdf'],\n ['cml', 'chemical/x-cml'],\n ['cmp', 'application/vnd.yellowriver-custom-menu'],\n ['cmx', 'image/x-cmx'],\n ['cod', 'application/vnd.rim.cod'],\n ['coffee', 'text/coffeescript'],\n ['com', 'application/x-msdownload'],\n ['conf', 'text/plain'],\n ['cpio', 'application/x-cpio'],\n ['cpp', 'text/x-c'],\n ['cpt', 'application/mac-compactpro'],\n ['crd', 'application/x-mscardfile'],\n ['crl', 'application/pkix-crl'],\n ['crt', 'application/x-x509-ca-cert'],\n ['crx', 'application/x-chrome-extension'],\n ['cryptonote', 'application/vnd.rig.cryptonote'],\n ['csh', 'application/x-csh'],\n ['csl', 'application/vnd.citationstyles.style+xml'],\n ['csml', 'chemical/x-csml'],\n ['csp', 'application/vnd.commonspace'],\n ['csr', 'application/octet-stream'],\n ['css', 'text/css'],\n ['cst', 'application/x-director'],\n ['csv', 'text/csv'],\n ['cu', 'application/cu-seeme'],\n ['curl', 'text/vnd.curl'],\n ['cww', 'application/prs.cww'],\n ['cxt', 'application/x-director'],\n ['cxx', 'text/x-c'],\n ['dae', 'model/vnd.collada+xml'],\n ['daf', 'application/vnd.mobius.daf'],\n ['dart', 'application/vnd.dart'],\n ['dataless', 'application/vnd.fdsn.seed'],\n ['davmount', 'application/davmount+xml'],\n ['dbf', 'application/vnd.dbf'],\n ['dbk', 'application/docbook+xml'],\n ['dcr', 'application/x-director'],\n ['dcurl', 'text/vnd.curl.dcurl'],\n ['dd2', 'application/vnd.oma.dd2+xml'],\n ['ddd', 'application/vnd.fujixerox.ddd'],\n ['ddf', 'application/vnd.syncml.dmddf+xml'],\n ['dds', 'image/vnd.ms-dds'],\n ['deb', 'application/x-debian-package'],\n ['def', 'text/plain'],\n ['deploy', 'application/octet-stream'],\n ['der', 'application/x-x509-ca-cert'],\n ['dfac', 'application/vnd.dreamfactory'],\n ['dgc', 'application/x-dgc-compressed'],\n ['dic', 'text/x-c'],\n ['dir', 'application/x-director'],\n ['dis', 'application/vnd.mobius.dis'],\n ['disposition-notification', 'message/disposition-notification'],\n ['dist', 'application/octet-stream'],\n ['distz', 'application/octet-stream'],\n ['djv', 'image/vnd.djvu'],\n ['djvu', 'image/vnd.djvu'],\n ['dll', 'application/octet-stream'],\n ['dmg', 'application/x-apple-diskimage'],\n ['dmn', 'application/octet-stream'],\n ['dmp', 'application/vnd.tcpdump.pcap'],\n ['dms', 'application/octet-stream'],\n ['dna', 'application/vnd.dna'],\n ['doc', 'application/msword'],\n ['docm', 'application/vnd.ms-word.template.macroEnabled.12'],\n ['docx', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'],\n ['dot', 'application/msword'],\n ['dotm', 'application/vnd.ms-word.template.macroEnabled.12'],\n ['dotx', 'application/vnd.openxmlformats-officedocument.wordprocessingml.template'],\n ['dp', 'application/vnd.osgi.dp'],\n ['dpg', 'application/vnd.dpgraph'],\n ['dra', 'audio/vnd.dra'],\n ['drle', 'image/dicom-rle'],\n ['dsc', 'text/prs.lines.tag'],\n ['dssc', 'application/dssc+der'],\n ['dtb', 'application/x-dtbook+xml'],\n ['dtd', 'application/xml-dtd'],\n ['dts', 'audio/vnd.dts'],\n ['dtshd', 'audio/vnd.dts.hd'],\n ['dump', 'application/octet-stream'],\n ['dvb', 'video/vnd.dvb.file'],\n ['dvi', 'application/x-dvi'],\n ['dwd', 'application/atsc-dwd+xml'],\n ['dwf', 'model/vnd.dwf'],\n ['dwg', 'image/vnd.dwg'],\n ['dxf', 'image/vnd.dxf'],\n ['dxp', 'application/vnd.spotfire.dxp'],\n ['dxr', 'application/x-director'],\n ['ear', 'application/java-archive'],\n ['ecelp4800', 'audio/vnd.nuera.ecelp4800'],\n ['ecelp7470', 'audio/vnd.nuera.ecelp7470'],\n ['ecelp9600', 'audio/vnd.nuera.ecelp9600'],\n ['ecma', 'application/ecmascript'],\n ['edm', 'application/vnd.novadigm.edm'],\n ['edx', 'application/vnd.novadigm.edx'],\n ['efif', 'application/vnd.picsel'],\n ['ei6', 'application/vnd.pg.osasli'],\n ['elc', 'application/octet-stream'],\n ['emf', 'image/emf'],\n ['eml', 'message/rfc822'],\n ['emma', 'application/emma+xml'],\n ['emotionml', 'application/emotionml+xml'],\n ['emz', 'application/x-msmetafile'],\n ['eol', 'audio/vnd.digital-winds'],\n ['eot', 'application/vnd.ms-fontobject'],\n ['eps', 'application/postscript'],\n ['epub', 'application/epub+zip'],\n ['es', 'application/ecmascript'],\n ['es3', 'application/vnd.eszigno3+xml'],\n ['esa', 'application/vnd.osgi.subsystem'],\n ['esf', 'application/vnd.epson.esf'],\n ['et3', 'application/vnd.eszigno3+xml'],\n ['etx', 'text/x-setext'],\n ['eva', 'application/x-eva'],\n ['evy', 'application/x-envoy'],\n ['exe', 'application/octet-stream'],\n ['exi', 'application/exi'],\n ['exp', 'application/express'],\n ['exr', 'image/aces'],\n ['ext', 'application/vnd.novadigm.ext'],\n ['ez', 'application/andrew-inset'],\n ['ez2', 'application/vnd.ezpix-album'],\n ['ez3', 'application/vnd.ezpix-package'],\n ['f', 'text/x-fortran'],\n ['f4v', 'video/mp4'],\n ['f77', 'text/x-fortran'],\n ['f90', 'text/x-fortran'],\n ['fbs', 'image/vnd.fastbidsheet'],\n ['fcdt', 'application/vnd.adobe.formscentral.fcdt'],\n ['fcs', 'application/vnd.isac.fcs'],\n ['fdf', 'application/vnd.fdf'],\n ['fdt', 'application/fdt+xml'],\n ['fe_launch', 'application/vnd.denovo.fcselayout-link'],\n ['fg5', 'application/vnd.fujitsu.oasysgp'],\n ['fgd', 'application/x-director'],\n ['fh', 'image/x-freehand'],\n ['fh4', 'image/x-freehand'],\n ['fh5', 'image/x-freehand'],\n ['fh7', 'image/x-freehand'],\n ['fhc', 'image/x-freehand'],\n ['fig', 'application/x-xfig'],\n ['fits', 'image/fits'],\n ['flac', 'audio/x-flac'],\n ['fli', 'video/x-fli'],\n ['flo', 'application/vnd.micrografx.flo'],\n ['flv', 'video/x-flv'],\n ['flw', 'application/vnd.kde.kivio'],\n ['flx', 'text/vnd.fmi.flexstor'],\n ['fly', 'text/vnd.fly'],\n ['fm', 'application/vnd.framemaker'],\n ['fnc', 'application/vnd.frogans.fnc'],\n ['fo', 'application/vnd.software602.filler.form+xml'],\n ['for', 'text/x-fortran'],\n ['fpx', 'image/vnd.fpx'],\n ['frame', 'application/vnd.framemaker'],\n ['fsc', 'application/vnd.fsc.weblaunch'],\n ['fst', 'image/vnd.fst'],\n ['ftc', 'application/vnd.fluxtime.clip'],\n ['fti', 'application/vnd.anser-web-funds-transfer-initiation'],\n ['fvt', 'video/vnd.fvt'],\n ['fxp', 'application/vnd.adobe.fxp'],\n ['fxpl', 'application/vnd.adobe.fxp'],\n ['fzs', 'application/vnd.fuzzysheet'],\n ['g2w', 'application/vnd.geoplan'],\n ['g3', 'image/g3fax'],\n ['g3w', 'application/vnd.geospace'],\n ['gac', 'application/vnd.groove-account'],\n ['gam', 'application/x-tads'],\n ['gbr', 'application/rpki-ghostbusters'],\n ['gca', 'application/x-gca-compressed'],\n ['gdl', 'model/vnd.gdl'],\n ['gdoc', 'application/vnd.google-apps.document'],\n ['geo', 'application/vnd.dynageo'],\n ['geojson', 'application/geo+json'],\n ['gex', 'application/vnd.geometry-explorer'],\n ['ggb', 'application/vnd.geogebra.file'],\n ['ggt', 'application/vnd.geogebra.tool'],\n ['ghf', 'application/vnd.groove-help'],\n ['gif', 'image/gif'],\n ['gim', 'application/vnd.groove-identity-message'],\n ['glb', 'model/gltf-binary'],\n ['gltf', 'model/gltf+json'],\n ['gml', 'application/gml+xml'],\n ['gmx', 'application/vnd.gmx'],\n ['gnumeric', 'application/x-gnumeric'],\n ['gpg', 'application/gpg-keys'],\n ['gph', 'application/vnd.flographit'],\n ['gpx', 'application/gpx+xml'],\n ['gqf', 'application/vnd.grafeq'],\n ['gqs', 'application/vnd.grafeq'],\n ['gram', 'application/srgs'],\n ['gramps', 'application/x-gramps-xml'],\n ['gre', 'application/vnd.geometry-explorer'],\n ['grv', 'application/vnd.groove-injector'],\n ['grxml', 'application/srgs+xml'],\n ['gsf', 'application/x-font-ghostscript'],\n ['gsheet', 'application/vnd.google-apps.spreadsheet'],\n ['gslides', 'application/vnd.google-apps.presentation'],\n ['gtar', 'application/x-gtar'],\n ['gtm', 'application/vnd.groove-tool-message'],\n ['gtw', 'model/vnd.gtw'],\n ['gv', 'text/vnd.graphviz'],\n ['gxf', 'application/gxf'],\n ['gxt', 'application/vnd.geonext'],\n ['gz', 'application/gzip'],\n ['gzip', 'application/gzip'],\n ['h', 'text/x-c'],\n ['h261', 'video/h261'],\n ['h263', 'video/h263'],\n ['h264', 'video/h264'],\n ['hal', 'application/vnd.hal+xml'],\n ['hbci', 'application/vnd.hbci'],\n ['hbs', 'text/x-handlebars-template'],\n ['hdd', 'application/x-virtualbox-hdd'],\n ['hdf', 'application/x-hdf'],\n ['heic', 'image/heic'],\n ['heics', 'image/heic-sequence'],\n ['heif', 'image/heif'],\n ['heifs', 'image/heif-sequence'],\n ['hej2', 'image/hej2k'],\n ['held', 'application/atsc-held+xml'],\n ['hh', 'text/x-c'],\n ['hjson', 'application/hjson'],\n ['hlp', 'application/winhlp'],\n ['hpgl', 'application/vnd.hp-hpgl'],\n ['hpid', 'application/vnd.hp-hpid'],\n ['hps', 'application/vnd.hp-hps'],\n ['hqx', 'application/mac-binhex40'],\n ['hsj2', 'image/hsj2'],\n ['htc', 'text/x-component'],\n ['htke', 'application/vnd.kenameaapp'],\n ['htm', 'text/html'],\n ['html', 'text/html'],\n ['hvd', 'application/vnd.yamaha.hv-dic'],\n ['hvp', 'application/vnd.yamaha.hv-voice'],\n ['hvs', 'application/vnd.yamaha.hv-script'],\n ['i2g', 'application/vnd.intergeo'],\n ['icc', 'application/vnd.iccprofile'],\n ['ice', 'x-conference/x-cooltalk'],\n ['icm', 'application/vnd.iccprofile'],\n ['ico', 'image/x-icon'],\n ['ics', 'text/calendar'],\n ['ief', 'image/ief'],\n ['ifb', 'text/calendar'],\n ['ifm', 'application/vnd.shana.informed.formdata'],\n ['iges', 'model/iges'],\n ['igl', 'application/vnd.igloader'],\n ['igm', 'application/vnd.insors.igm'],\n ['igs', 'model/iges'],\n ['igx', 'application/vnd.micrografx.igx'],\n ['iif', 'application/vnd.shana.informed.interchange'],\n ['img', 'application/octet-stream'],\n ['imp', 'application/vnd.accpac.simply.imp'],\n ['ims', 'application/vnd.ms-ims'],\n ['in', 'text/plain'],\n ['ini', 'text/plain'],\n ['ink', 'application/inkml+xml'],\n ['inkml', 'application/inkml+xml'],\n ['install', 'application/x-install-instructions'],\n ['iota', 'application/vnd.astraea-software.iota'],\n ['ipfix', 'application/ipfix'],\n ['ipk', 'application/vnd.shana.informed.package'],\n ['irm', 'application/vnd.ibm.rights-management'],\n ['irp', 'application/vnd.irepository.package+xml'],\n ['iso', 'application/x-iso9660-image'],\n ['itp', 'application/vnd.shana.informed.formtemplate'],\n ['its', 'application/its+xml'],\n ['ivp', 'application/vnd.immervision-ivp'],\n ['ivu', 'application/vnd.immervision-ivu'],\n ['jad', 'text/vnd.sun.j2me.app-descriptor'],\n ['jade', 'text/jade'],\n ['jam', 'application/vnd.jam'],\n ['jar', 'application/java-archive'],\n ['jardiff', 'application/x-java-archive-diff'],\n ['java', 'text/x-java-source'],\n ['jhc', 'image/jphc'],\n ['jisp', 'application/vnd.jisp'],\n ['jls', 'image/jls'],\n ['jlt', 'application/vnd.hp-jlyt'],\n ['jng', 'image/x-jng'],\n ['jnlp', 'application/x-java-jnlp-file'],\n ['joda', 'application/vnd.joost.joda-archive'],\n ['jp2', 'image/jp2'],\n ['jpe', 'image/jpeg'],\n ['jpeg', 'image/jpeg'],\n ['jpf', 'image/jpx'],\n ['jpg', 'image/jpeg'],\n ['jpg2', 'image/jp2'],\n ['jpgm', 'video/jpm'],\n ['jpgv', 'video/jpeg'],\n ['jph', 'image/jph'],\n ['jpm', 'video/jpm'],\n ['jpx', 'image/jpx'],\n ['js', 'application/javascript'],\n ['json', 'application/json'],\n ['json5', 'application/json5'],\n ['jsonld', 'application/ld+json'],\n // https://jsonlines.org/\n ['jsonl', 'application/jsonl'],\n ['jsonml', 'application/jsonml+json'],\n ['jsx', 'text/jsx'],\n ['jxr', 'image/jxr'],\n ['jxra', 'image/jxra'],\n ['jxrs', 'image/jxrs'],\n ['jxs', 'image/jxs'],\n ['jxsc', 'image/jxsc'],\n ['jxsi', 'image/jxsi'],\n ['jxss', 'image/jxss'],\n ['kar', 'audio/midi'],\n ['karbon', 'application/vnd.kde.karbon'],\n ['kdb', 'application/octet-stream'],\n ['kdbx', 'application/x-keepass2'],\n ['key', 'application/x-iwork-keynote-sffkey'],\n ['kfo', 'application/vnd.kde.kformula'],\n ['kia', 'application/vnd.kidspiration'],\n ['kml', 'application/vnd.google-earth.kml+xml'],\n ['kmz', 'application/vnd.google-earth.kmz'],\n ['kne', 'application/vnd.kinar'],\n ['knp', 'application/vnd.kinar'],\n ['kon', 'application/vnd.kde.kontour'],\n ['kpr', 'application/vnd.kde.kpresenter'],\n ['kpt', 'application/vnd.kde.kpresenter'],\n ['kpxx', 'application/vnd.ds-keypoint'],\n ['ksp', 'application/vnd.kde.kspread'],\n ['ktr', 'application/vnd.kahootz'],\n ['ktx', 'image/ktx'],\n ['ktx2', 'image/ktx2'],\n ['ktz', 'application/vnd.kahootz'],\n ['kwd', 'application/vnd.kde.kword'],\n ['kwt', 'application/vnd.kde.kword'],\n ['lasxml', 'application/vnd.las.las+xml'],\n ['latex', 'application/x-latex'],\n ['lbd', 'application/vnd.llamagraphics.life-balance.desktop'],\n ['lbe', 'application/vnd.llamagraphics.life-balance.exchange+xml'],\n ['les', 'application/vnd.hhe.lesson-player'],\n ['less', 'text/less'],\n ['lgr', 'application/lgr+xml'],\n ['lha', 'application/octet-stream'],\n ['link66', 'application/vnd.route66.link66+xml'],\n ['list', 'text/plain'],\n ['list3820', 'application/vnd.ibm.modcap'],\n ['listafp', 'application/vnd.ibm.modcap'],\n ['litcoffee', 'text/coffeescript'],\n ['lnk', 'application/x-ms-shortcut'],\n ['log', 'text/plain'],\n ['lostxml', 'application/lost+xml'],\n ['lrf', 'application/octet-stream'],\n ['lrm', 'application/vnd.ms-lrm'],\n ['ltf', 'application/vnd.frogans.ltf'],\n ['lua', 'text/x-lua'],\n ['luac', 'application/x-lua-bytecode'],\n ['lvp', 'audio/vnd.lucent.voice'],\n ['lwp', 'application/vnd.lotus-wordpro'],\n ['lzh', 'application/octet-stream'],\n ['m1v', 'video/mpeg'],\n ['m2a', 'audio/mpeg'],\n ['m2v', 'video/mpeg'],\n ['m3a', 'audio/mpeg'],\n ['m3u', 'text/plain'],\n ['m3u8', 'application/vnd.apple.mpegurl'],\n ['m4a', 'audio/x-m4a'],\n ['m4p', 'application/mp4'],\n ['m4s', 'video/iso.segment'],\n ['m4u', 'application/vnd.mpegurl'],\n ['m4v', 'video/x-m4v'],\n ['m13', 'application/x-msmediaview'],\n ['m14', 'application/x-msmediaview'],\n ['m21', 'application/mp21'],\n ['ma', 'application/mathematica'],\n ['mads', 'application/mads+xml'],\n ['maei', 'application/mmt-aei+xml'],\n ['mag', 'application/vnd.ecowin.chart'],\n ['maker', 'application/vnd.framemaker'],\n ['man', 'text/troff'],\n ['manifest', 'text/cache-manifest'],\n ['map', 'application/json'],\n ['mar', 'application/octet-stream'],\n ['markdown', 'text/markdown'],\n ['mathml', 'application/mathml+xml'],\n ['mb', 'application/mathematica'],\n ['mbk', 'application/vnd.mobius.mbk'],\n ['mbox', 'application/mbox'],\n ['mc1', 'application/vnd.medcalcdata'],\n ['mcd', 'application/vnd.mcd'],\n ['mcurl', 'text/vnd.curl.mcurl'],\n ['md', 'text/markdown'],\n ['mdb', 'application/x-msaccess'],\n ['mdi', 'image/vnd.ms-modi'],\n ['mdx', 'text/mdx'],\n ['me', 'text/troff'],\n ['mesh', 'model/mesh'],\n ['meta4', 'application/metalink4+xml'],\n ['metalink', 'application/metalink+xml'],\n ['mets', 'application/mets+xml'],\n ['mfm', 'application/vnd.mfmp'],\n ['mft', 'application/rpki-manifest'],\n ['mgp', 'application/vnd.osgeo.mapguide.package'],\n ['mgz', 'application/vnd.proteus.magazine'],\n ['mid', 'audio/midi'],\n ['midi', 'audio/midi'],\n ['mie', 'application/x-mie'],\n ['mif', 'application/vnd.mif'],\n ['mime', 'message/rfc822'],\n ['mj2', 'video/mj2'],\n ['mjp2', 'video/mj2'],\n ['mjs', 'application/javascript'],\n ['mk3d', 'video/x-matroska'],\n ['mka', 'audio/x-matroska'],\n ['mkd', 'text/x-markdown'],\n ['mks', 'video/x-matroska'],\n ['mkv', 'video/x-matroska'],\n ['mlp', 'application/vnd.dolby.mlp'],\n ['mmd', 'application/vnd.chipnuts.karaoke-mmd'],\n ['mmf', 'application/vnd.smaf'],\n ['mml', 'text/mathml'],\n ['mmr', 'image/vnd.fujixerox.edmics-mmr'],\n ['mng', 'video/x-mng'],\n ['mny', 'application/x-msmoney'],\n ['mobi', 'application/x-mobipocket-ebook'],\n ['mods', 'application/mods+xml'],\n ['mov', 'video/quicktime'],\n ['movie', 'video/x-sgi-movie'],\n ['mp2', 'audio/mpeg'],\n ['mp2a', 'audio/mpeg'],\n ['mp3', 'audio/mpeg'],\n ['mp4', 'video/mp4'],\n ['mp4a', 'audio/mp4'],\n ['mp4s', 'application/mp4'],\n ['mp4v', 'video/mp4'],\n ['mp21', 'application/mp21'],\n ['mpc', 'application/vnd.mophun.certificate'],\n ['mpd', 'application/dash+xml'],\n ['mpe', 'video/mpeg'],\n ['mpeg', 'video/mpeg'],\n ['mpg', 'video/mpeg'],\n ['mpg4', 'video/mp4'],\n ['mpga', 'audio/mpeg'],\n ['mpkg', 'application/vnd.apple.installer+xml'],\n ['mpm', 'application/vnd.blueice.multipass'],\n ['mpn', 'application/vnd.mophun.application'],\n ['mpp', 'application/vnd.ms-project'],\n ['mpt', 'application/vnd.ms-project'],\n ['mpy', 'application/vnd.ibm.minipay'],\n ['mqy', 'application/vnd.mobius.mqy'],\n ['mrc', 'application/marc'],\n ['mrcx', 'application/marcxml+xml'],\n ['ms', 'text/troff'],\n ['mscml', 'application/mediaservercontrol+xml'],\n ['mseed', 'application/vnd.fdsn.mseed'],\n ['mseq', 'application/vnd.mseq'],\n ['msf', 'application/vnd.epson.msf'],\n ['msg', 'application/vnd.ms-outlook'],\n ['msh', 'model/mesh'],\n ['msi', 'application/x-msdownload'],\n ['msl', 'application/vnd.mobius.msl'],\n ['msm', 'application/octet-stream'],\n ['msp', 'application/octet-stream'],\n ['msty', 'application/vnd.muvee.style'],\n ['mtl', 'model/mtl'],\n ['mts', 'model/vnd.mts'],\n ['mus', 'application/vnd.musician'],\n ['musd', 'application/mmt-usd+xml'],\n ['musicxml', 'application/vnd.recordare.musicxml+xml'],\n ['mvb', 'application/x-msmediaview'],\n ['mvt', 'application/vnd.mapbox-vector-tile'],\n ['mwf', 'application/vnd.mfer'],\n ['mxf', 'application/mxf'],\n ['mxl', 'application/vnd.recordare.musicxml'],\n ['mxmf', 'audio/mobile-xmf'],\n ['mxml', 'application/xv+xml'],\n ['mxs', 'application/vnd.triscape.mxs'],\n ['mxu', 'video/vnd.mpegurl'],\n ['n-gage', 'application/vnd.nokia.n-gage.symbian.install'],\n ['n3', 'text/n3'],\n ['nb', 'application/mathematica'],\n ['nbp', 'application/vnd.wolfram.player'],\n ['nc', 'application/x-netcdf'],\n ['ncx', 'application/x-dtbncx+xml'],\n ['nfo', 'text/x-nfo'],\n ['ngdat', 'application/vnd.nokia.n-gage.data'],\n ['nitf', 'application/vnd.nitf'],\n ['nlu', 'application/vnd.neurolanguage.nlu'],\n ['nml', 'application/vnd.enliven'],\n ['nnd', 'application/vnd.noblenet-directory'],\n ['nns', 'application/vnd.noblenet-sealer'],\n ['nnw', 'application/vnd.noblenet-web'],\n ['npx', 'image/vnd.net-fpx'],\n ['nq', 'application/n-quads'],\n ['nsc', 'application/x-conference'],\n ['nsf', 'application/vnd.lotus-notes'],\n ['nt', 'application/n-triples'],\n ['ntf', 'application/vnd.nitf'],\n ['numbers', 'application/x-iwork-numbers-sffnumbers'],\n ['nzb', 'application/x-nzb'],\n ['oa2', 'application/vnd.fujitsu.oasys2'],\n ['oa3', 'application/vnd.fujitsu.oasys3'],\n ['oas', 'application/vnd.fujitsu.oasys'],\n ['obd', 'application/x-msbinder'],\n ['obgx', 'application/vnd.openblox.game+xml'],\n ['obj', 'model/obj'],\n ['oda', 'application/oda'],\n ['odb', 'application/vnd.oasis.opendocument.database'],\n ['odc', 'application/vnd.oasis.opendocument.chart'],\n ['odf', 'application/vnd.oasis.opendocument.formula'],\n ['odft', 'application/vnd.oasis.opendocument.formula-template'],\n ['odg', 'application/vnd.oasis.opendocument.graphics'],\n ['odi', 'application/vnd.oasis.opendocument.image'],\n ['odm', 'application/vnd.oasis.opendocument.text-master'],\n ['odp', 'application/vnd.oasis.opendocument.presentation'],\n ['ods', 'application/vnd.oasis.opendocument.spreadsheet'],\n ['odt', 'application/vnd.oasis.opendocument.text'],\n ['oga', 'audio/ogg'],\n ['ogex', 'model/vnd.opengex'],\n ['ogg', 'audio/ogg'],\n ['ogv', 'video/ogg'],\n ['ogx', 'application/ogg'],\n ['omdoc', 'application/omdoc+xml'],\n ['onepkg', 'application/onenote'],\n ['onetmp', 'application/onenote'],\n ['onetoc', 'application/onenote'],\n ['onetoc2', 'application/onenote'],\n ['opf', 'application/oebps-package+xml'],\n ['opml', 'text/x-opml'],\n ['oprc', 'application/vnd.palm'],\n ['opus', 'audio/ogg'],\n ['org', 'text/x-org'],\n ['osf', 'application/vnd.yamaha.openscoreformat'],\n ['osfpvg', 'application/vnd.yamaha.openscoreformat.osfpvg+xml'],\n ['osm', 'application/vnd.openstreetmap.data+xml'],\n ['otc', 'application/vnd.oasis.opendocument.chart-template'],\n ['otf', 'font/otf'],\n ['otg', 'application/vnd.oasis.opendocument.graphics-template'],\n ['oth', 'application/vnd.oasis.opendocument.text-web'],\n ['oti', 'application/vnd.oasis.opendocument.image-template'],\n ['otp', 'application/vnd.oasis.opendocument.presentation-template'],\n ['ots', 'application/vnd.oasis.opendocument.spreadsheet-template'],\n ['ott', 'application/vnd.oasis.opendocument.text-template'],\n ['ova', 'application/x-virtualbox-ova'],\n ['ovf', 'application/x-virtualbox-ovf'],\n ['owl', 'application/rdf+xml'],\n ['oxps', 'application/oxps'],\n ['oxt', 'application/vnd.openofficeorg.extension'],\n ['p', 'text/x-pascal'],\n ['p7a', 'application/x-pkcs7-signature'],\n ['p7b', 'application/x-pkcs7-certificates'],\n ['p7c', 'application/pkcs7-mime'],\n ['p7m', 'application/pkcs7-mime'],\n ['p7r', 'application/x-pkcs7-certreqresp'],\n ['p7s', 'application/pkcs7-signature'],\n ['p8', 'application/pkcs8'],\n ['p10', 'application/x-pkcs10'],\n ['p12', 'application/x-pkcs12'],\n ['pac', 'application/x-ns-proxy-autoconfig'],\n ['pages', 'application/x-iwork-pages-sffpages'],\n ['pas', 'text/x-pascal'],\n ['paw', 'application/vnd.pawaafile'],\n ['pbd', 'application/vnd.powerbuilder6'],\n ['pbm', 'image/x-portable-bitmap'],\n ['pcap', 'application/vnd.tcpdump.pcap'],\n ['pcf', 'application/x-font-pcf'],\n ['pcl', 'application/vnd.hp-pcl'],\n ['pclxl', 'application/vnd.hp-pclxl'],\n ['pct', 'image/x-pict'],\n ['pcurl', 'application/vnd.curl.pcurl'],\n ['pcx', 'image/x-pcx'],\n ['pdb', 'application/x-pilot'],\n ['pde', 'text/x-processing'],\n ['pdf', 'application/pdf'],\n ['pem', 'application/x-x509-user-cert'],\n ['pfa', 'application/x-font-type1'],\n ['pfb', 'application/x-font-type1'],\n ['pfm', 'application/x-font-type1'],\n ['pfr', 'application/font-tdpfr'],\n ['pfx', 'application/x-pkcs12'],\n ['pgm', 'image/x-portable-graymap'],\n ['pgn', 'application/x-chess-pgn'],\n ['pgp', 'application/pgp'],\n ['php', 'application/x-httpd-php'],\n ['php3', 'application/x-httpd-php'],\n ['php4', 'application/x-httpd-php'],\n ['phps', 'application/x-httpd-php-source'],\n ['phtml', 'application/x-httpd-php'],\n ['pic', 'image/x-pict'],\n ['pkg', 'application/octet-stream'],\n ['pki', 'application/pkixcmp'],\n ['pkipath', 'application/pkix-pkipath'],\n ['pkpass', 'application/vnd.apple.pkpass'],\n ['pl', 'application/x-perl'],\n ['plb', 'application/vnd.3gpp.pic-bw-large'],\n ['plc', 'application/vnd.mobius.plc'],\n ['plf', 'application/vnd.pocketlearn'],\n ['pls', 'application/pls+xml'],\n ['pm', 'application/x-perl'],\n ['pml', 'application/vnd.ctc-posml'],\n ['png', 'image/png'],\n ['pnm', 'image/x-portable-anymap'],\n ['portpkg', 'application/vnd.macports.portpkg'],\n ['pot', 'application/vnd.ms-powerpoint'],\n ['potm', 'application/vnd.ms-powerpoint.presentation.macroEnabled.12'],\n ['potx', 'application/vnd.openxmlformats-officedocument.presentationml.template'],\n ['ppa', 'application/vnd.ms-powerpoint'],\n ['ppam', 'application/vnd.ms-powerpoint.addin.macroEnabled.12'],\n ['ppd', 'application/vnd.cups-ppd'],\n ['ppm', 'image/x-portable-pixmap'],\n ['pps', 'application/vnd.ms-powerpoint'],\n ['ppsm', 'application/vnd.ms-powerpoint.slideshow.macroEnabled.12'],\n ['ppsx', 'application/vnd.openxmlformats-officedocument.presentationml.slideshow'],\n ['ppt', 'application/powerpoint'],\n ['pptm', 'application/vnd.ms-powerpoint.presentation.macroEnabled.12'],\n ['pptx', 'application/vnd.openxmlformats-officedocument.presentationml.presentation'],\n ['pqa', 'application/vnd.palm'],\n ['prc', 'application/x-pilot'],\n ['pre', 'application/vnd.lotus-freelance'],\n ['prf', 'application/pics-rules'],\n ['provx', 'application/provenance+xml'],\n ['ps', 'application/postscript'],\n ['psb', 'application/vnd.3gpp.pic-bw-small'],\n ['psd', 'application/x-photoshop'],\n ['psf', 'application/x-font-linux-psf'],\n ['pskcxml', 'application/pskc+xml'],\n ['pti', 'image/prs.pti'],\n ['ptid', 'application/vnd.pvi.ptid1'],\n ['pub', 'application/x-mspublisher'],\n ['pvb', 'application/vnd.3gpp.pic-bw-var'],\n ['pwn', 'application/vnd.3m.post-it-notes'],\n ['pya', 'audio/vnd.ms-playready.media.pya'],\n ['pyv', 'video/vnd.ms-playready.media.pyv'],\n ['qam', 'application/vnd.epson.quickanime'],\n ['qbo', 'application/vnd.intu.qbo'],\n ['qfx', 'application/vnd.intu.qfx'],\n ['qps', 'application/vnd.publishare-delta-tree'],\n ['qt', 'video/quicktime'],\n ['qwd', 'application/vnd.quark.quarkxpress'],\n ['qwt', 'application/vnd.quark.quarkxpress'],\n ['qxb', 'application/vnd.quark.quarkxpress'],\n ['qxd', 'application/vnd.quark.quarkxpress'],\n ['qxl', 'application/vnd.quark.quarkxpress'],\n ['qxt', 'application/vnd.quark.quarkxpress'],\n ['ra', 'audio/x-realaudio'],\n ['ram', 'audio/x-pn-realaudio'],\n ['raml', 'application/raml+yaml'],\n ['rapd', 'application/route-apd+xml'],\n ['rar', 'application/x-rar'],\n ['ras', 'image/x-cmu-raster'],\n ['rcprofile', 'application/vnd.ipunplugged.rcprofile'],\n ['rdf', 'application/rdf+xml'],\n ['rdz', 'application/vnd.data-vision.rdz'],\n ['relo', 'application/p2p-overlay+xml'],\n ['rep', 'application/vnd.businessobjects'],\n ['res', 'application/x-dtbresource+xml'],\n ['rgb', 'image/x-rgb'],\n ['rif', 'application/reginfo+xml'],\n ['rip', 'audio/vnd.rip'],\n ['ris', 'application/x-research-info-systems'],\n ['rl', 'application/resource-lists+xml'],\n ['rlc', 'image/vnd.fujixerox.edmics-rlc'],\n ['rld', 'application/resource-lists-diff+xml'],\n ['rm', 'audio/x-pn-realaudio'],\n ['rmi', 'audio/midi'],\n ['rmp', 'audio/x-pn-realaudio-plugin'],\n ['rms', 'application/vnd.jcp.javame.midlet-rms'],\n ['rmvb', 'application/vnd.rn-realmedia-vbr'],\n ['rnc', 'application/relax-ng-compact-syntax'],\n ['rng', 'application/xml'],\n ['roa', 'application/rpki-roa'],\n ['roff', 'text/troff'],\n ['rp9', 'application/vnd.cloanto.rp9'],\n ['rpm', 'audio/x-pn-realaudio-plugin'],\n ['rpss', 'application/vnd.nokia.radio-presets'],\n ['rpst', 'application/vnd.nokia.radio-preset'],\n ['rq', 'application/sparql-query'],\n ['rs', 'application/rls-services+xml'],\n ['rsa', 'application/x-pkcs7'],\n ['rsat', 'application/atsc-rsat+xml'],\n ['rsd', 'application/rsd+xml'],\n ['rsheet', 'application/urc-ressheet+xml'],\n ['rss', 'application/rss+xml'],\n ['rtf', 'text/rtf'],\n ['rtx', 'text/richtext'],\n ['run', 'application/x-makeself'],\n ['rusd', 'application/route-usd+xml'],\n ['rv', 'video/vnd.rn-realvideo'],\n ['s', 'text/x-asm'],\n ['s3m', 'audio/s3m'],\n ['saf', 'application/vnd.yamaha.smaf-audio'],\n ['sass', 'text/x-sass'],\n ['sbml', 'application/sbml+xml'],\n ['sc', 'application/vnd.ibm.secure-container'],\n ['scd', 'application/x-msschedule'],\n ['scm', 'application/vnd.lotus-screencam'],\n ['scq', 'application/scvp-cv-request'],\n ['scs', 'application/scvp-cv-response'],\n ['scss', 'text/x-scss'],\n ['scurl', 'text/vnd.curl.scurl'],\n ['sda', 'application/vnd.stardivision.draw'],\n ['sdc', 'application/vnd.stardivision.calc'],\n ['sdd', 'application/vnd.stardivision.impress'],\n ['sdkd', 'application/vnd.solent.sdkm+xml'],\n ['sdkm', 'application/vnd.solent.sdkm+xml'],\n ['sdp', 'application/sdp'],\n ['sdw', 'application/vnd.stardivision.writer'],\n ['sea', 'application/octet-stream'],\n ['see', 'application/vnd.seemail'],\n ['seed', 'application/vnd.fdsn.seed'],\n ['sema', 'application/vnd.sema'],\n ['semd', 'application/vnd.semd'],\n ['semf', 'application/vnd.semf'],\n ['senmlx', 'application/senml+xml'],\n ['sensmlx', 'application/sensml+xml'],\n ['ser', 'application/java-serialized-object'],\n ['setpay', 'application/set-payment-initiation'],\n ['setreg', 'application/set-registration-initiation'],\n ['sfd-hdstx', 'application/vnd.hydrostatix.sof-data'],\n ['sfs', 'application/vnd.spotfire.sfs'],\n ['sfv', 'text/x-sfv'],\n ['sgi', 'image/sgi'],\n ['sgl', 'application/vnd.stardivision.writer-global'],\n ['sgm', 'text/sgml'],\n ['sgml', 'text/sgml'],\n ['sh', 'application/x-sh'],\n ['shar', 'application/x-shar'],\n ['shex', 'text/shex'],\n ['shf', 'application/shf+xml'],\n ['shtml', 'text/html'],\n ['sid', 'image/x-mrsid-image'],\n ['sieve', 'application/sieve'],\n ['sig', 'application/pgp-signature'],\n ['sil', 'audio/silk'],\n ['silo', 'model/mesh'],\n ['sis', 'application/vnd.symbian.install'],\n ['sisx', 'application/vnd.symbian.install'],\n ['sit', 'application/x-stuffit'],\n ['sitx', 'application/x-stuffitx'],\n ['siv', 'application/sieve'],\n ['skd', 'application/vnd.koan'],\n ['skm', 'application/vnd.koan'],\n ['skp', 'application/vnd.koan'],\n ['skt', 'application/vnd.koan'],\n ['sldm', 'application/vnd.ms-powerpoint.slide.macroenabled.12'],\n ['sldx', 'application/vnd.openxmlformats-officedocument.presentationml.slide'],\n ['slim', 'text/slim'],\n ['slm', 'text/slim'],\n ['sls', 'application/route-s-tsid+xml'],\n ['slt', 'application/vnd.epson.salt'],\n ['sm', 'application/vnd.stepmania.stepchart'],\n ['smf', 'application/vnd.stardivision.math'],\n ['smi', 'application/smil'],\n ['smil', 'application/smil'],\n ['smv', 'video/x-smv'],\n ['smzip', 'application/vnd.stepmania.package'],\n ['snd', 'audio/basic'],\n ['snf', 'application/x-font-snf'],\n ['so', 'application/octet-stream'],\n ['spc', 'application/x-pkcs7-certificates'],\n ['spdx', 'text/spdx'],\n ['spf', 'application/vnd.yamaha.smaf-phrase'],\n ['spl', 'application/x-futuresplash'],\n ['spot', 'text/vnd.in3d.spot'],\n ['spp', 'application/scvp-vp-response'],\n ['spq', 'application/scvp-vp-request'],\n ['spx', 'audio/ogg'],\n ['sql', 'application/x-sql'],\n ['src', 'application/x-wais-source'],\n ['srt', 'application/x-subrip'],\n ['sru', 'application/sru+xml'],\n ['srx', 'application/sparql-results+xml'],\n ['ssdl', 'application/ssdl+xml'],\n ['sse', 'application/vnd.kodak-descriptor'],\n ['ssf', 'application/vnd.epson.ssf'],\n ['ssml', 'application/ssml+xml'],\n ['sst', 'application/octet-stream'],\n ['st', 'application/vnd.sailingtracker.track'],\n ['stc', 'application/vnd.sun.xml.calc.template'],\n ['std', 'application/vnd.sun.xml.draw.template'],\n ['stf', 'application/vnd.wt.stf'],\n ['sti', 'application/vnd.sun.xml.impress.template'],\n ['stk', 'application/hyperstudio'],\n ['stl', 'model/stl'],\n ['stpx', 'model/step+xml'],\n ['stpxz', 'model/step-xml+zip'],\n ['stpz', 'model/step+zip'],\n ['str', 'application/vnd.pg.format'],\n ['stw', 'application/vnd.sun.xml.writer.template'],\n ['styl', 'text/stylus'],\n ['stylus', 'text/stylus'],\n ['sub', 'text/vnd.dvb.subtitle'],\n ['sus', 'application/vnd.sus-calendar'],\n ['susp', 'application/vnd.sus-calendar'],\n ['sv4cpio', 'application/x-sv4cpio'],\n ['sv4crc', 'application/x-sv4crc'],\n ['svc', 'application/vnd.dvb.service'],\n ['svd', 'application/vnd.svd'],\n ['svg', 'image/svg+xml'],\n ['svgz', 'image/svg+xml'],\n ['swa', 'application/x-director'],\n ['swf', 'application/x-shockwave-flash'],\n ['swi', 'application/vnd.aristanetworks.swi'],\n ['swidtag', 'application/swid+xml'],\n ['sxc', 'application/vnd.sun.xml.calc'],\n ['sxd', 'application/vnd.sun.xml.draw'],\n ['sxg', 'application/vnd.sun.xml.writer.global'],\n ['sxi', 'application/vnd.sun.xml.impress'],\n ['sxm', 'application/vnd.sun.xml.math'],\n ['sxw', 'application/vnd.sun.xml.writer'],\n ['t', 'text/troff'],\n ['t3', 'application/x-t3vm-image'],\n ['t38', 'image/t38'],\n ['taglet', 'application/vnd.mynfc'],\n ['tao', 'application/vnd.tao.intent-module-archive'],\n ['tap', 'image/vnd.tencent.tap'],\n ['tar', 'application/x-tar'],\n ['tcap', 'application/vnd.3gpp2.tcap'],\n ['tcl', 'application/x-tcl'],\n ['td', 'application/urc-targetdesc+xml'],\n ['teacher', 'application/vnd.smart.teacher'],\n ['tei', 'application/tei+xml'],\n ['teicorpus', 'application/tei+xml'],\n ['tex', 'application/x-tex'],\n ['texi', 'application/x-texinfo'],\n ['texinfo', 'application/x-texinfo'],\n ['text', 'text/plain'],\n ['tfi', 'application/thraud+xml'],\n ['tfm', 'application/x-tex-tfm'],\n ['tfx', 'image/tiff-fx'],\n ['tga', 'image/x-tga'],\n ['tgz', 'application/x-tar'],\n ['thmx', 'application/vnd.ms-officetheme'],\n ['tif', 'image/tiff'],\n ['tiff', 'image/tiff'],\n ['tk', 'application/x-tcl'],\n ['tmo', 'application/vnd.tmobile-livetv'],\n ['toml', 'application/toml'],\n ['torrent', 'application/x-bittorrent'],\n ['tpl', 'application/vnd.groove-tool-template'],\n ['tpt', 'application/vnd.trid.tpt'],\n ['tr', 'text/troff'],\n ['tra', 'application/vnd.trueapp'],\n ['trig', 'application/trig'],\n ['trm', 'application/x-msterminal'],\n ['ts', 'video/mp2t'],\n ['tsd', 'application/timestamped-data'],\n ['tsv', 'text/tab-separated-values'],\n ['ttc', 'font/collection'],\n ['ttf', 'font/ttf'],\n ['ttl', 'text/turtle'],\n ['ttml', 'application/ttml+xml'],\n ['twd', 'application/vnd.simtech-mindmapper'],\n ['twds', 'application/vnd.simtech-mindmapper'],\n ['txd', 'application/vnd.genomatix.tuxedo'],\n ['txf', 'application/vnd.mobius.txf'],\n ['txt', 'text/plain'],\n ['u8dsn', 'message/global-delivery-status'],\n ['u8hdr', 'message/global-headers'],\n ['u8mdn', 'message/global-disposition-notification'],\n ['u8msg', 'message/global'],\n ['u32', 'application/x-authorware-bin'],\n ['ubj', 'application/ubjson'],\n ['udeb', 'application/x-debian-package'],\n ['ufd', 'application/vnd.ufdl'],\n ['ufdl', 'application/vnd.ufdl'],\n ['ulx', 'application/x-glulx'],\n ['umj', 'application/vnd.umajin'],\n ['unityweb', 'application/vnd.unity'],\n ['uoml', 'application/vnd.uoml+xml'],\n ['uri', 'text/uri-list'],\n ['uris', 'text/uri-list'],\n ['urls', 'text/uri-list'],\n ['usdz', 'model/vnd.usdz+zip'],\n ['ustar', 'application/x-ustar'],\n ['utz', 'application/vnd.uiq.theme'],\n ['uu', 'text/x-uuencode'],\n ['uva', 'audio/vnd.dece.audio'],\n ['uvd', 'application/vnd.dece.data'],\n ['uvf', 'application/vnd.dece.data'],\n ['uvg', 'image/vnd.dece.graphic'],\n ['uvh', 'video/vnd.dece.hd'],\n ['uvi', 'image/vnd.dece.graphic'],\n ['uvm', 'video/vnd.dece.mobile'],\n ['uvp', 'video/vnd.dece.pd'],\n ['uvs', 'video/vnd.dece.sd'],\n ['uvt', 'application/vnd.dece.ttml+xml'],\n ['uvu', 'video/vnd.uvvu.mp4'],\n ['uvv', 'video/vnd.dece.video'],\n ['uvva', 'audio/vnd.dece.audio'],\n ['uvvd', 'application/vnd.dece.data'],\n ['uvvf', 'application/vnd.dece.data'],\n ['uvvg', 'image/vnd.dece.graphic'],\n ['uvvh', 'video/vnd.dece.hd'],\n ['uvvi', 'image/vnd.dece.graphic'],\n ['uvvm', 'video/vnd.dece.mobile'],\n ['uvvp', 'video/vnd.dece.pd'],\n ['uvvs', 'video/vnd.dece.sd'],\n ['uvvt', 'application/vnd.dece.ttml+xml'],\n ['uvvu', 'video/vnd.uvvu.mp4'],\n ['uvvv', 'video/vnd.dece.video'],\n ['uvvx', 'application/vnd.dece.unspecified'],\n ['uvvz', 'application/vnd.dece.zip'],\n ['uvx', 'application/vnd.dece.unspecified'],\n ['uvz', 'application/vnd.dece.zip'],\n ['vbox', 'application/x-virtualbox-vbox'],\n ['vbox-extpack', 'application/x-virtualbox-vbox-extpack'],\n ['vcard', 'text/vcard'],\n ['vcd', 'application/x-cdlink'],\n ['vcf', 'text/x-vcard'],\n ['vcg', 'application/vnd.groove-vcard'],\n ['vcs', 'text/x-vcalendar'],\n ['vcx', 'application/vnd.vcx'],\n ['vdi', 'application/x-virtualbox-vdi'],\n ['vds', 'model/vnd.sap.vds'],\n ['vhd', 'application/x-virtualbox-vhd'],\n ['vis', 'application/vnd.visionary'],\n ['viv', 'video/vnd.vivo'],\n ['vlc', 'application/videolan'],\n ['vmdk', 'application/x-virtualbox-vmdk'],\n ['vob', 'video/x-ms-vob'],\n ['vor', 'application/vnd.stardivision.writer'],\n ['vox', 'application/x-authorware-bin'],\n ['vrml', 'model/vrml'],\n ['vsd', 'application/vnd.visio'],\n ['vsf', 'application/vnd.vsf'],\n ['vss', 'application/vnd.visio'],\n ['vst', 'application/vnd.visio'],\n ['vsw', 'application/vnd.visio'],\n ['vtf', 'image/vnd.valve.source.texture'],\n ['vtt', 'text/vtt'],\n ['vtu', 'model/vnd.vtu'],\n ['vxml', 'application/voicexml+xml'],\n ['w3d', 'application/x-director'],\n ['wad', 'application/x-doom'],\n ['wadl', 'application/vnd.sun.wadl+xml'],\n ['war', 'application/java-archive'],\n ['wasm', 'application/wasm'],\n ['wav', 'audio/x-wav'],\n ['wax', 'audio/x-ms-wax'],\n ['wbmp', 'image/vnd.wap.wbmp'],\n ['wbs', 'application/vnd.criticaltools.wbs+xml'],\n ['wbxml', 'application/wbxml'],\n ['wcm', 'application/vnd.ms-works'],\n ['wdb', 'application/vnd.ms-works'],\n ['wdp', 'image/vnd.ms-photo'],\n ['weba', 'audio/webm'],\n ['webapp', 'application/x-web-app-manifest+json'],\n ['webm', 'video/webm'],\n ['webmanifest', 'application/manifest+json'],\n ['webp', 'image/webp'],\n ['wg', 'application/vnd.pmi.widget'],\n ['wgt', 'application/widget'],\n ['wks', 'application/vnd.ms-works'],\n ['wm', 'video/x-ms-wm'],\n ['wma', 'audio/x-ms-wma'],\n ['wmd', 'application/x-ms-wmd'],\n ['wmf', 'image/wmf'],\n ['wml', 'text/vnd.wap.wml'],\n ['wmlc', 'application/wmlc'],\n ['wmls', 'text/vnd.wap.wmlscript'],\n ['wmlsc', 'application/vnd.wap.wmlscriptc'],\n ['wmv', 'video/x-ms-wmv'],\n ['wmx', 'video/x-ms-wmx'],\n ['wmz', 'application/x-msmetafile'],\n ['woff', 'font/woff'],\n ['woff2', 'font/woff2'],\n ['word', 'application/msword'],\n ['wpd', 'application/vnd.wordperfect'],\n ['wpl', 'application/vnd.ms-wpl'],\n ['wps', 'application/vnd.ms-works'],\n ['wqd', 'application/vnd.wqd'],\n ['wri', 'application/x-mswrite'],\n ['wrl', 'model/vrml'],\n ['wsc', 'message/vnd.wfa.wsc'],\n ['wsdl', 'application/wsdl+xml'],\n ['wspolicy', 'application/wspolicy+xml'],\n ['wtb', 'application/vnd.webturbo'],\n ['wvx', 'video/x-ms-wvx'],\n ['x3d', 'model/x3d+xml'],\n ['x3db', 'model/x3d+fastinfoset'],\n ['x3dbz', 'model/x3d+binary'],\n ['x3dv', 'model/x3d-vrml'],\n ['x3dvz', 'model/x3d+vrml'],\n ['x3dz', 'model/x3d+xml'],\n ['x32', 'application/x-authorware-bin'],\n ['x_b', 'model/vnd.parasolid.transmit.binary'],\n ['x_t', 'model/vnd.parasolid.transmit.text'],\n ['xaml', 'application/xaml+xml'],\n ['xap', 'application/x-silverlight-app'],\n ['xar', 'application/vnd.xara'],\n ['xav', 'application/xcap-att+xml'],\n ['xbap', 'application/x-ms-xbap'],\n ['xbd', 'application/vnd.fujixerox.docuworks.binder'],\n ['xbm', 'image/x-xbitmap'],\n ['xca', 'application/xcap-caps+xml'],\n ['xcs', 'application/calendar+xml'],\n ['xdf', 'application/xcap-diff+xml'],\n ['xdm', 'application/vnd.syncml.dm+xml'],\n ['xdp', 'application/vnd.adobe.xdp+xml'],\n ['xdssc', 'application/dssc+xml'],\n ['xdw', 'application/vnd.fujixerox.docuworks'],\n ['xel', 'application/xcap-el+xml'],\n ['xenc', 'application/xenc+xml'],\n ['xer', 'application/patch-ops-error+xml'],\n ['xfdf', 'application/vnd.adobe.xfdf'],\n ['xfdl', 'application/vnd.xfdl'],\n ['xht', 'application/xhtml+xml'],\n ['xhtml', 'application/xhtml+xml'],\n ['xhvml', 'application/xv+xml'],\n ['xif', 'image/vnd.xiff'],\n ['xl', 'application/excel'],\n ['xla', 'application/vnd.ms-excel'],\n ['xlam', 'application/vnd.ms-excel.addin.macroEnabled.12'],\n ['xlc', 'application/vnd.ms-excel'],\n ['xlf', 'application/xliff+xml'],\n ['xlm', 'application/vnd.ms-excel'],\n ['xls', 'application/vnd.ms-excel'],\n ['xlsb', 'application/vnd.ms-excel.sheet.binary.macroEnabled.12'],\n ['xlsm', 'application/vnd.ms-excel.sheet.macroEnabled.12'],\n ['xlsx', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'],\n ['xlt', 'application/vnd.ms-excel'],\n ['xltm', 'application/vnd.ms-excel.template.macroEnabled.12'],\n ['xltx', 'application/vnd.openxmlformats-officedocument.spreadsheetml.template'],\n ['xlw', 'application/vnd.ms-excel'],\n ['xm', 'audio/xm'],\n ['xml', 'application/xml'],\n ['xns', 'application/xcap-ns+xml'],\n ['xo', 'application/vnd.olpc-sugar'],\n ['xop', 'application/xop+xml'],\n ['xpi', 'application/x-xpinstall'],\n ['xpl', 'application/xproc+xml'],\n ['xpm', 'image/x-xpixmap'],\n ['xpr', 'application/vnd.is-xpr'],\n ['xps', 'application/vnd.ms-xpsdocument'],\n ['xpw', 'application/vnd.intercon.formnet'],\n ['xpx', 'application/vnd.intercon.formnet'],\n ['xsd', 'application/xml'],\n ['xsl', 'application/xml'],\n ['xslt', 'application/xslt+xml'],\n ['xsm', 'application/vnd.syncml+xml'],\n ['xspf', 'application/xspf+xml'],\n ['xul', 'application/vnd.mozilla.xul+xml'],\n ['xvm', 'application/xv+xml'],\n ['xvml', 'application/xv+xml'],\n ['xwd', 'image/x-xwindowdump'],\n ['xyz', 'chemical/x-xyz'],\n ['xz', 'application/x-xz'],\n ['yaml', 'text/yaml'],\n ['yang', 'application/yang'],\n ['yin', 'application/yin+xml'],\n ['yml', 'text/yaml'],\n ['ymp', 'text/x-suse-ymp'],\n ['z', 'application/x-compress'],\n ['z1', 'application/x-zmachine'],\n ['z2', 'application/x-zmachine'],\n ['z3', 'application/x-zmachine'],\n ['z4', 'application/x-zmachine'],\n ['z5', 'application/x-zmachine'],\n ['z6', 'application/x-zmachine'],\n ['z7', 'application/x-zmachine'],\n ['z8', 'application/x-zmachine'],\n ['zaz', 'application/vnd.zzazz.deck+xml'],\n ['zip', 'application/zip'],\n ['zir', 'application/vnd.zul'],\n ['zirz', 'application/vnd.zul'],\n ['zmm', 'application/vnd.handheld-entertainment+xml'],\n ['zsh', 'text/x-scriptzsh']\n]);\nexport function toFileWithPath(file, path, h) {\n const f = withMimeType(file);\n const { webkitRelativePath } = file;\n const p = typeof path === 'string'\n ? path\n // If <input webkitdirectory> is set,\n // the File will have a {webkitRelativePath} property\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/webkitdirectory\n : typeof webkitRelativePath === 'string' && webkitRelativePath.length > 0\n ? webkitRelativePath\n : `./${file.name}`;\n if (typeof f.path !== 'string') { // on electron, path is already set to the absolute path\n setObjProp(f, 'path', p);\n }\n if (h !== undefined) {\n Object.defineProperty(f, 'handle', {\n value: h,\n writable: false,\n configurable: false,\n enumerable: true\n });\n }\n // Always populate a relative path so that even electron apps have access to a relativePath value\n setObjProp(f, 'relativePath', p);\n return f;\n}\nfunction withMimeType(file) {\n const { name } = file;\n const hasExtension = name && name.lastIndexOf('.') !== -1;\n if (hasExtension && !file.type) {\n const ext = name.split('.')\n .pop().toLowerCase();\n const type = COMMON_MIME_TYPES.get(ext);\n if (type) {\n Object.defineProperty(file, 'type', {\n value: type,\n writable: false,\n configurable: false,\n enumerable: true\n });\n }\n }\n return file;\n}\nfunction setObjProp(f, key, value) {\n Object.defineProperty(f, key, {\n value,\n writable: false,\n configurable: false,\n enumerable: true\n });\n}\n//# sourceMappingURL=file.js.map","import { __awaiter } from \"tslib\";\nimport { toFileWithPath } from './file';\nconst FILES_TO_IGNORE = [\n // Thumbnail cache files for macOS and Windows\n '.DS_Store', // macOs\n 'Thumbs.db' // Windows\n];\n/**\n * Convert a DragEvent's DataTrasfer object to a list of File objects\n * NOTE: If some of the items are folders,\n * everything will be flattened and placed in the same list but the paths will be kept as a {path} property.\n *\n * EXPERIMENTAL: A list of https://developer.mozilla.org/en-US/docs/Web/API/FileSystemHandle objects can also be passed as an arg\n * and a list of File objects will be returned.\n *\n * @param evt\n */\nexport function fromEvent(evt) {\n return __awaiter(this, void 0, void 0, function* () {\n if (isObject(evt) && isDataTransfer(evt.dataTransfer)) {\n return getDataTransferFiles(evt.dataTransfer, evt.type);\n }\n else if (isChangeEvt(evt)) {\n return getInputFiles(evt);\n }\n else if (Array.isArray(evt) && evt.every(item => 'getFile' in item && typeof item.getFile === 'function')) {\n return getFsHandleFiles(evt);\n }\n return [];\n });\n}\nfunction isDataTransfer(value) {\n return isObject(value);\n}\nfunction isChangeEvt(value) {\n return isObject(value) && isObject(value.target);\n}\nfunction isObject(v) {\n return typeof v === 'object' && v !== null;\n}\nfunction getInputFiles(evt) {\n return fromList(evt.target.files).map(file => toFileWithPath(file));\n}\n// Ee expect each handle to be https://developer.mozilla.org/en-US/docs/Web/API/FileSystemFileHandle\nfunction getFsHandleFiles(handles) {\n return __awaiter(this, void 0, void 0, function* () {\n const files = yield Promise.all(handles.map(h => h.getFile()));\n return files.map(file => toFileWithPath(file));\n });\n}\nfunction getDataTransferFiles(dt, type) {\n return __awaiter(this, void 0, void 0, function* () {\n // IE11 does not support dataTransfer.items\n // See https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer/items#Browser_compatibility\n if (dt.items) {\n const items = fromList(dt.items)\n .filter(item => item.kind === 'file');\n // According to https://html.spec.whatwg.org/multipage/dnd.html#dndevents,\n // only 'dragstart' and 'drop' has access to the data (source node)\n if (type !== 'drop') {\n return items;\n }\n const files = yield Promise.all(items.map(toFilePromises));\n return noIgnoredFiles(flatten(files));\n }\n return noIgnoredFiles(fromList(dt.files)\n .map(file => toFileWithPath(file)));\n });\n}\nfunction noIgnoredFiles(files) {\n return files.filter(file => FILES_TO_IGNORE.indexOf(file.name) === -1);\n}\n// IE11 does not support Array.from()\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/from#Browser_compatibility\n// https://developer.mozilla.org/en-US/docs/Web/API/FileList\n// https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItemList\nfunction fromList(items) {\n if (items === null) {\n return [];\n }\n const files = [];\n // tslint:disable: prefer-for-of\n for (let i = 0; i < items.length; i++) {\n const file = items[i];\n files.push(file);\n }\n return files;\n}\n// https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem\nfunction toFilePromises(item) {\n if (typeof item.webkitGetAsEntry !== 'function') {\n return fromDataTransferItem(item);\n }\n const entry = item.webkitGetAsEntry();\n // Safari supports dropping an image node from a different window and can be retrieved using\n // the DataTransferItem.getAsFile() API\n // NOTE: FileSystemEntry.file() throws if trying to get the file\n if (entry && entry.isDirectory) {\n return fromDirEntry(entry);\n }\n return fromDataTransferItem(item, entry);\n}\nfunction flatten(items) {\n return items.reduce((acc, files) => [\n ...acc,\n ...(Array.isArray(files) ? flatten(files) : [files])\n ], []);\n}\nfunction fromDataTransferItem(item, entry) {\n return __awaiter(this, void 0, void 0, function* () {\n var _a;\n // Check if we're in a secure context; due to a bug in Chrome (as far as we know)\n // the browser crashes when calling this API (yet to be confirmed as a consistent behaviour).\n //\n // See:\n // - https://issues.chromium.org/issues/40186242\n // - https://github.com/react-dropzone/react-dropzone/issues/1397\n if (globalThis.isSecureContext && typeof item.getAsFileSystemHandle === 'function') {\n const h = yield item.getAsFileSystemHandle();\n if (h === null) {\n throw new Error(`${item} is not a File`);\n }\n // It seems that the handle can be `undefined` (see https://github.com/react-dropzone/file-selector/issues/120),\n // so we check if it isn't; if it is, the code path continues to the next API (`getAsFile`).\n if (h !== undefined) {\n const file = yield h.getFile();\n file.handle = h;\n return toFileWithPath(file);\n }\n }\n const file = item.getAsFile();\n if (!file) {\n throw new Error(`${item} is not a File`);\n }\n const fwp = toFileWithPath(file, (_a = entry === null || entry === void 0 ? void 0 : entry.fullPath) !== null && _a !== void 0 ? _a : undefined);\n return fwp;\n });\n}\n// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemEntry\nfunction fromEntry(entry) {\n return __awaiter(this, void 0, void 0, function* () {\n return entry.isDirectory ? fromDirEntry(entry) : fromFileEntry(entry);\n });\n}\n// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryEntry\nfunction fromDirEntry(entry) {\n const reader = entry.createReader();\n return new Promise((resolve, reject) => {\n const entries = [];\n function readEntries() {\n // https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryEntry/createReader\n // https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryReader/readEntries\n reader.readEntries((batch) => __awaiter(this, void 0, void 0, function* () {\n if (!batch.length) {\n // Done reading directory\n try {\n const files = yield Promise.all(entries);\n resolve(files);\n }\n catch (err) {\n reject(err);\n }\n }\n else {\n const items = Promise.all(batch.map(fromEntry));\n entries.push(items);\n // Continue reading\n readEntries();\n }\n }), (err) => {\n reject(err);\n });\n }\n readEntries();\n });\n}\n// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemFileEntry\nfunction fromFileEntry(entry) {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise((resolve, reject) => {\n entry.file((file) => {\n const fwp = toFileWithPath(file, entry.fullPath);\n resolve(fwp);\n }, (err) => {\n reject(err);\n });\n });\n });\n}\n//# sourceMappingURL=file-selector.js.map","\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (file, acceptedFiles) {\n if (file && acceptedFiles) {\n var acceptedFilesArray = Array.isArray(acceptedFiles) ? acceptedFiles : acceptedFiles.split(',');\n\n if (acceptedFilesArray.length === 0) {\n return true;\n }\n\n var fileName = file.name || '';\n var mimeType = (file.type || '').toLowerCase();\n var baseMimeType = mimeType.replace(/\\/.*$/, '');\n return acceptedFilesArray.some(function (type) {\n var validType = type.trim().toLowerCase();\n\n if (validType.charAt(0) === '.') {\n return fileName.toLowerCase().endsWith(validType);\n } else if (validType.endsWith('/*')) {\n // This is something like a image/* mime type\n return baseMimeType === validType.replace(/\\/.*$/, '');\n }\n\n return mimeType === validType;\n });\n }\n\n return true;\n};","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport _accepts from \"attr-accept\";\nvar accepts = typeof _accepts === \"function\" ? _accepts : _accepts.default; // Error codes\n\nexport var FILE_INVALID_TYPE = \"file-invalid-type\";\nexport var FILE_TOO_LARGE = \"file-too-large\";\nexport var FILE_TOO_SMALL = \"file-too-small\";\nexport var TOO_MANY_FILES = \"too-many-files\";\nexport var ErrorCode = {\n FileInvalidType: FILE_INVALID_TYPE,\n FileTooLarge: FILE_TOO_LARGE,\n FileTooSmall: FILE_TOO_SMALL,\n TooManyFiles: TOO_MANY_FILES\n};\n/**\n *\n * @param {string} accept\n */\n\nexport var getInvalidTypeRejectionErr = function getInvalidTypeRejectionErr() {\n var accept = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"\";\n var acceptArr = accept.split(\",\");\n var msg = acceptArr.length > 1 ? \"one of \".concat(acceptArr.join(\", \")) : acceptArr[0];\n return {\n code: FILE_INVALID_TYPE,\n message: \"File type must be \".concat(msg)\n };\n};\nexport var getTooLargeRejectionErr = function getTooLargeRejectionErr(maxSize) {\n return {\n code: FILE_TOO_LARGE,\n message: \"File is larger than \".concat(maxSize, \" \").concat(maxSize === 1 ? \"byte\" : \"bytes\")\n };\n};\nexport var getTooSmallRejectionErr = function getTooSmallRejectionErr(minSize) {\n return {\n code: FILE_TOO_SMALL,\n message: \"File is smaller than \".concat(minSize, \" \").concat(minSize === 1 ? \"byte\" : \"bytes\")\n };\n};\nexport var TOO_MANY_FILES_REJECTION = {\n code: TOO_MANY_FILES,\n message: \"Too many files\"\n};\n/**\n * Check if file is accepted.\n *\n * Firefox versions prior to 53 return a bogus MIME type for every file drag,\n * so dragovers with that MIME type will always be accepted.\n *\n * @param {File} file\n * @param {string} accept\n * @returns\n */\n\nexport function fileAccepted(file, accept) {\n var isAcceptable = file.type === \"application/x-moz-file\" || accepts(file, accept);\n return [isAcceptable, isAcceptable ? null : getInvalidTypeRejectionErr(accept)];\n}\nexport function fileMatchSize(file, minSize, maxSize) {\n if (isDefined(file.size)) {\n if (isDefined(minSize) && isDefined(maxSize)) {\n if (file.size > maxSize) return [false, getTooLargeRejectionErr(maxSize)];\n if (file.size < minSize) return [false, getTooSmallRejectionErr(minSize)];\n } else if (isDefined(minSize) && file.size < minSize) return [false, getTooSmallRejectionErr(minSize)];else if (isDefined(maxSize) && file.size > maxSize) return [false, getTooLargeRejectionErr(maxSize)];\n }\n\n return [true, null];\n}\n\nfunction isDefined(value) {\n return value !== undefined && value !== null;\n}\n/**\n *\n * @param {object} options\n * @param {File[]} options.files\n * @param {string} [options.accept]\n * @param {number} [options.minSize]\n * @param {number} [options.maxSize]\n * @param {boolean} [options.multiple]\n * @param {number} [options.maxFiles]\n * @param {(f: File) => FileError|FileError[]|null} [options.validator]\n * @returns\n */\n\n\nexport function allFilesAccepted(_ref) {\n var files = _ref.files,\n accept = _ref.accept,\n minSize = _ref.minSize,\n maxSize = _ref.maxSize,\n multiple = _ref.multiple,\n maxFiles = _ref.maxFiles,\n validator = _ref.validator;\n\n if (!multiple && files.length > 1 || multiple && maxFiles >= 1 && files.length > maxFiles) {\n return false;\n }\n\n return files.every(function (file) {\n var _fileAccepted = fileAccepted(file, accept),\n _fileAccepted2 = _slicedToArray(_fileAccepted, 1),\n accepted = _fileAccepted2[0];\n\n var _fileMatchSize = fileMatchSize(file, minSize, maxSize),\n _fileMatchSize2 = _slicedToArray(_fileMatchSize, 1),\n sizeMatch = _fileMatchSize2[0];\n\n var customErrors = validator ? validator(file) : null;\n return accepted && sizeMatch && !customErrors;\n });\n} // React's synthetic events has event.isPropagationStopped,\n// but to remain compatibility with other libs (Preact) fall back\n// to check event.cancelBubble\n\nexport function isPropagationStopped(event) {\n if (typeof event.isPropagationStopped === \"function\") {\n return event.isPropagationStopped();\n } else if (typeof event.cancelBubble !== \"undefined\") {\n return event.cancelBubble;\n }\n\n return false;\n}\nexport function isEvtWithFiles(event) {\n if (!event.dataTransfer) {\n return !!event.target && !!event.target.files;\n } // https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer/types\n // https://developer.mozilla.org/en-US/docs/Web/API/HTML_Drag_and_Drop_API/Recommended_drag_types#file\n\n\n return Array.prototype.some.call(event.dataTransfer.types, function (type) {\n return type === \"Files\" || type === \"application/x-moz-file\";\n });\n}\nexport function isKindFile(item) {\n return _typeof(item) === \"object\" && item !== null && item.kind === \"file\";\n} // allow the entire document to be a drag target\n\nexport function onDocumentDragOver(event) {\n event.preventDefault();\n}\n\nfunction isIe(userAgent) {\n return userAgent.indexOf(\"MSIE\") !== -1 || userAgent.indexOf(\"Trident/\") !== -1;\n}\n\nfunction isEdge(userAgent) {\n return userAgent.indexOf(\"Edge/\") !== -1;\n}\n\nexport function isIeOrEdge() {\n var userAgent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : window.navigator.userAgent;\n return isIe(userAgent) || isEdge(userAgent);\n}\n/**\n * This is intended to be used to compose event handlers\n * They are executed in order until one of them calls `event.isPropagationStopped()`.\n * Note that the check is done on the first invoke too,\n * meaning that if propagation was stopped before invoking the fns,\n * no handlers will be executed.\n *\n * @param {Function} fns the event hanlder functions\n * @return {Function} the event handler to add to an element\n */\n\nexport function composeEventHandlers() {\n for (var _len = arguments.length, fns = new Array(_len), _key = 0; _key < _len; _key++) {\n fns[_key] = arguments[_key];\n }\n\n return function (event) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n return fns.some(function (fn) {\n if (!isPropagationStopped(event) && fn) {\n fn.apply(void 0, [event].concat(args));\n }\n\n return isPropagationStopped(event);\n });\n };\n}\n/**\n * canUseFileSystemAccessAPI checks if the [File System Access API](https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API)\n * is supported by the browser.\n * @returns {boolean}\n */\n\nexport function canUseFileSystemAccessAPI() {\n return \"showOpenFilePicker\" in window;\n}\n/**\n * Convert the `{accept}` dropzone prop to the\n * `{types}` option for https://developer.mozilla.org/en-US/docs/Web/API/window/showOpenFilePicker\n *\n * @param {AcceptProp} accept\n * @returns {{accept: string[]}[]}\n */\n\nexport function pickerOptionsFromAccept(accept) {\n if (isDefined(accept)) {\n var acceptForPicker = Object.entries(accept).filter(function (_ref2) {\n var _ref3 = _slicedToArray(_ref2, 2),\n mimeType = _ref3[0],\n ext = _ref3[1];\n\n var ok = true;\n\n if (!isMIMEType(mimeType)) {\n console.warn(\"Skipped \\\"\".concat(mimeType, \"\\\" because it is not a valid MIME type. Check https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types for a list of valid MIME types.\"));\n ok = false;\n }\n\n if (!Array.isArray(ext) || !ext.every(isExt)) {\n console.warn(\"Skipped \\\"\".concat(mimeType, \"\\\" because an invalid file extension was provided.\"));\n ok = false;\n }\n\n return ok;\n }).reduce(function (agg, _ref4) {\n var _ref5 = _slicedToArray(_ref4, 2),\n mimeType = _ref5[0],\n ext = _ref5[1];\n\n return _objectSpread(_objectSpread({}, agg), {}, _defineProperty({}, mimeType, ext));\n }, {});\n return [{\n // description is required due to https://crbug.com/1264708\n description: \"Files\",\n accept: acceptForPicker\n }];\n }\n\n return accept;\n}\n/**\n * Convert the `{accept}` dropzone prop to an array of MIME types/extensions.\n * @param {AcceptProp} accept\n * @returns {string}\n */\n\nexport function acceptPropAsAcceptAttr(accept) {\n if (isDefined(accept)) {\n return Object.entries(accept).reduce(function (a, _ref6) {\n var _ref7 = _slicedToArray(_ref6, 2),\n mimeType = _ref7[0],\n ext = _ref7[1];\n\n return [].concat(_toConsumableArray(a), [mimeType], _toConsumableArray(ext));\n }, []) // Silently discard invalid entries as pickerOptionsFromAccept warns about these\n .filter(function (v) {\n return isMIMEType(v) || isExt(v);\n }).join(\",\");\n }\n\n return undefined;\n}\n/**\n * Check if v is an exception caused by aborting a request (e.g window.showOpenFilePicker()).\n *\n * See https://developer.mozilla.org/en-US/docs/Web/API/DOMException.\n * @param {any} v\n * @returns {boolean} True if v is an abort exception.\n */\n\nexport function isAbort(v) {\n return v instanceof DOMException && (v.name === \"AbortError\" || v.code === v.ABORT_ERR);\n}\n/**\n * Check if v is a security error.\n *\n * See https://developer.mozilla.org/en-US/docs/Web/API/DOMException.\n * @param {any} v\n * @returns {boolean} True if v is a security error.\n */\n\nexport function isSecurityError(v) {\n return v instanceof DOMException && (v.name === \"SecurityError\" || v.code === v.SECURITY_ERR);\n}\n/**\n * Check if v is a MIME type string.\n *\n * See accepted format: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file#unique_file_type_specifiers.\n *\n * @param {string} v\n */\n\nexport function isMIMEType(v) {\n return v === \"audio/*\" || v === \"video/*\" || v === \"image/*\" || v === \"text/*\" || v === \"application/*\" || /\\w+\\/[-+.\\w]+/g.test(v);\n}\n/**\n * Check if v is a file extension.\n * @param {string} v\n */\n\nexport function isExt(v) {\n return /^.*\\.[\\w]+$/.test(v);\n}\n/**\n * @typedef {Object.<string, string[]>} AcceptProp\n */\n\n/**\n * @typedef {object} FileError\n * @property {string} message\n * @property {ErrorCode|string} code\n */\n\n/**\n * @typedef {\"file-invalid-type\"|\"file-too-large\"|\"file-too-small\"|\"too-many-files\"} ErrorCode\n */","var _excluded = [\"children\"],\n _excluded2 = [\"open\"],\n _excluded3 = [\"refKey\", \"role\", \"onKeyDown\", \"onFocus\", \"onBlur\", \"onClick\", \"onDragEnter\", \"onDragOver\", \"onDragLeave\", \"onDrop\"],\n _excluded4 = [\"refKey\", \"onChange\", \"onClick\"];\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* eslint prefer-template: 0 */\nimport React, { forwardRef, Fragment, useCallback, useEffect, useImperativeHandle, useMemo, useReducer, useRef } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { fromEvent } from \"file-selector\";\nimport { acceptPropAsAcceptAttr, allFilesAccepted, composeEventHandlers, fileAccepted, fileMatchSize, canUseFileSystemAccessAPI, isAbort, isEvtWithFiles, isIeOrEdge, isPropagationStopped, isSecurityError, onDocumentDragOver, pickerOptionsFromAccept, TOO_MANY_FILES_REJECTION } from \"./utils/index.js\";\n/**\n * Convenience wrapper component for the `useDropzone` hook\n *\n * ```jsx\n * <Dropzone>\n * {({getRootProps, getInputProps}) => (\n * <div {...getRootProps()}>\n * <input {...getInputProps()} />\n * <p>Drag 'n' drop some files here, or click to select files</p>\n * </div>\n * )}\n * </Dropzone>\n * ```\n */\n\nvar Dropzone = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n params = _objectWithoutProperties(_ref, _excluded);\n\n var _useDropzone = useDropzone(params),\n open = _useDropzone.open,\n props = _objectWithoutProperties(_useDropzone, _excluded2);\n\n useImperativeHandle(ref, function () {\n return {\n open: open\n };\n }, [open]); // TODO: Figure out why react-styleguidist cannot create docs if we don't return a jsx element\n\n return /*#__PURE__*/React.createElement(Fragment, null, children(_objectSpread(_objectSpread({}, props), {}, {\n open: open\n })));\n});\nDropzone.displayName = \"Dropzone\"; // Add default props for react-docgen\n\nvar defaultProps = {\n disabled: false,\n getFilesFromEvent: fromEvent,\n maxSize: Infinity,\n minSize: 0,\n multiple: true,\n maxFiles: 0,\n preventDropOnDocument: true,\n noClick: false,\n noKeyboard: false,\n noDrag: false,\n noDragEventsBubbling: false,\n validator: null,\n useFsAccessApi: false,\n autoFocus: false\n};\nDropzone.defaultProps = defaultProps;\nDropzone.propTypes = {\n /**\n * Render function that exposes the dropzone state and prop getter fns\n *\n * @param {object} params\n * @param {Function} params.getRootProps Returns the props you should apply to the root drop container you render\n * @param {Function} params.getInputProps Returns the props you should apply to hidden file input you render\n * @param {Function} params.open Open the native file selection dialog\n * @param {boolean} params.isFocused Dropzone area is in focus\n * @param {boolean} params.isFileDialogActive File dialog is opened\n * @param {boolean} params.isDragActive Active drag is in progress\n * @param {boolean} params.isDragAccept Dragged files are accepted\n * @param {boolean} params.isDragReject Some dragged files are rejected\n * @param {File[]} params.acceptedFiles Accepted files\n * @param {FileRejection[]} params.fileRejections Rejected files and why they were rejected\n */\n children: PropTypes.func,\n\n /**\n * Set accepted file types.\n * Checkout https://developer.mozilla.org/en-US/docs/Web/API/window/showOpenFilePicker types option for more information.\n * Keep in mind that mime type determination is not reliable across platforms. CSV files,\n * for example, are reported as text/plain under macOS but as application/vnd.ms-excel under\n * Windows. In some cases there might not be a mime type set at all (https://github.com/react-dropzone/react-dropzone/issues/276).\n */\n accept: PropTypes.objectOf(PropTypes.arrayOf(PropTypes.string)),\n\n /**\n * Allow drag 'n' drop (or selection from the file dialog) of multiple files\n */\n multiple: PropTypes.bool,\n\n /**\n * If false, allow dropped items to take over the current browser window\n */\n preventDropOnDocument: PropTypes.bool,\n\n /**\n * If true, disables click to open the native file selection dialog\n */\n noClick: PropTypes.bool,\n\n /**\n * If true, disables SPACE/ENTER to open the native file selection dialog.\n * Note that it also stops tracking the focus state.\n */\n noKeyboard: PropTypes.bool,\n\n /**\n * If true, disables drag 'n' drop\n */\n noDrag: PropTypes.bool,\n\n /**\n * If true, stops drag event propagation to parents\n */\n noDragEventsBubbling: PropTypes.bool,\n\n /**\n * Minimum file size (in bytes)\n */\n minSize: PropTypes.number,\n\n /**\n * Maximum file size (in bytes)\n */\n maxSize: PropTypes.number,\n\n /**\n * Maximum accepted number of files\n * The default value is 0 which means there is no limitation to how many files are accepted.\n */\n maxFiles: PropTypes.number,\n\n /**\n * Enable/disable the dropzone\n */\n disabled: PropTypes.bool,\n\n /**\n * Use this to provide a custom file aggregator\n *\n * @param {(DragEvent|Event|Array<FileSystemFileHandle>)} event A drag event or input change event (if files were selected via the file dialog)\n */\n getFilesFromEvent: PropTypes.func,\n\n /**\n * Cb for when closing the file dialog with no selection\n */\n onFileDialogCancel: PropTypes.func,\n\n /**\n * Cb for when opening the file dialog\n */\n onFileDialogOpen: PropTypes.func,\n\n /**\n * Set to true to use the https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API\n * to open the file picker instead of using an `<input type=\"file\">` click event.\n */\n useFsAccessApi: PropTypes.bool,\n\n /**\n * Set to true to focus the root element on render\n */\n autoFocus: PropTypes.bool,\n\n /**\n * Cb for when the `dragenter` event occurs.\n *\n * @param {DragEvent} event\n */\n onDragEnter: PropTypes.func,\n\n /**\n * Cb for when the `dragleave` event occurs\n *\n * @param {DragEvent} event\n */\n onDragLeave: PropTypes.func,\n\n /**\n * Cb for when the `dragover` event occurs\n *\n * @param {DragEvent} event\n */\n onDragOver: PropTypes.func,\n\n /**\n * Cb for when the `drop` event occurs.\n * Note that this callback is invoked after the `getFilesFromEvent` callback is done.\n *\n * Files are accepted or rejected based on the `accept`, `multiple`, `minSize` and `maxSize` props.\n * `accept` must be a valid [MIME type](http://www.iana.org/assignments/media-types/media-types.xhtml) according to [input element specification](https://www.w3.org/wiki/HTML/Elements/input/file) or a valid file extension.\n * If `multiple` is set to false and additional files are dropped,\n * all files besides the first will be rejected.\n * Any file which does not have a size in the [`minSize`, `maxSize`] range, will be rejected as well.\n *\n * Note that the `onDrop` callback will always be invoked regardless if the dropped files were accepted or rejected.\n * If you'd like to react to a specific scenario, use the `onDropAccepted`/`onDropRejected` props.\n *\n * `onDrop` will provide you with an array of [File](https://developer.mozilla.org/en-US/docs/Web/API/File) objects which you can then process and send to a server.\n * For example, with [SuperAgent](https://github.com/visionmedia/superagent) as a http/ajax library:\n *\n * ```js\n * function onDrop(acceptedFiles) {\n * const req = request.post('/upload')\n * acceptedFiles.forEach(file => {\n * req.attach(file.name, file)\n * })\n * req.end(callback)\n * }\n * ```\n *\n * @param {File[]} acceptedFiles\n * @param {FileRejection[]} fileRejections\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n onDrop: PropTypes.func,\n\n /**\n * Cb for when the `drop` event occurs.\n * Note that if no files are accepted, this callback is not invoked.\n *\n * @param {File[]} files\n * @param {(DragEvent|Event)} event\n */\n onDropAccepted: PropTypes.func,\n\n /**\n * Cb for when the `drop` event occurs.\n * Note that if no files are rejected, this callback is not invoked.\n *\n * @param {FileRejection[]} fileRejections\n * @param {(DragEvent|Event)} event\n */\n onDropRejected: PropTypes.func,\n\n /**\n * Cb for when there's some error from any of the promises.\n *\n * @param {Error} error\n */\n onError: PropTypes.func,\n\n /**\n * Custom validation function. It must return null if there's no errors.\n * @param {File} file\n * @returns {FileError|FileError[]|null}\n */\n validator: PropTypes.func\n};\nexport default Dropzone;\n/**\n * A function that is invoked for the `dragenter`,\n * `dragover` and `dragleave` events.\n * It is not invoked if the items are not files (such as link, text, etc.).\n *\n * @callback dragCb\n * @param {DragEvent} event\n */\n\n/**\n * A function that is invoked for the `drop` or input change event.\n * It is not invoked if the items are not files (such as link, text, etc.).\n *\n * @callback dropCb\n * @param {File[]} acceptedFiles List of accepted files\n * @param {FileRejection[]} fileRejections List of rejected files and why they were rejected\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n\n/**\n * A function that is invoked for the `drop` or input change event.\n * It is not invoked if the items are files (such as link, text, etc.).\n *\n * @callback dropAcceptedCb\n * @param {File[]} files List of accepted files that meet the given criteria\n * (`accept`, `multiple`, `minSize`, `maxSize`)\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n\n/**\n * A function that is invoked for the `drop` or input change event.\n *\n * @callback dropRejectedCb\n * @param {File[]} files List of rejected files that do not meet the given criteria\n * (`accept`, `multiple`, `minSize`, `maxSize`)\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n\n/**\n * A function that is used aggregate files,\n * in a asynchronous fashion, from drag or input change events.\n *\n * @callback getFilesFromEvent\n * @param {(DragEvent|Event|Array<FileSystemFileHandle>)} event A drag event or input change event (if files were selected via the file dialog)\n * @returns {(File[]|Promise<File[]>)}\n */\n\n/**\n * An object with the current dropzone state.\n *\n * @typedef {object} DropzoneState\n * @property {boolean} isFocused Dropzone area is in focus\n * @property {boolean} isFileDialogActive File dialog is opened\n * @property {boolean} isDragActive Active drag is in progress\n * @property {boolean} isDragAccept Dragged files are accepted\n * @property {boolean} isDragReject Some dragged files are rejected\n * @property {File[]} acceptedFiles Accepted files\n * @property {FileRejection[]} fileRejections Rejected files and why they were rejected\n */\n\n/**\n * An object with the dropzone methods.\n *\n * @typedef {object} DropzoneMethods\n * @property {Function} getRootProps Returns the props you should apply to the root drop container you render\n * @property {Function} getInputProps Returns the props you should apply to hidden file input you render\n * @property {Function} open Open the native file selection dialog\n */\n\nvar initialState = {\n isFocused: false,\n isFileDialogActive: false,\n isDragActive: false,\n isDragAccept: false,\n isDragReject: false,\n acceptedFiles: [],\n fileRejections: []\n};\n/**\n * A React hook that creates a drag 'n' drop area.\n *\n * ```jsx\n * function MyDropzone(props) {\n * const {getRootProps, getInputProps} = useDropzone({\n * onDrop: acceptedFiles => {\n * // do something with the File objects, e.g. upload to some server\n * }\n * });\n * return (\n * <div {...getRootProps()}>\n * <input {...getInputProps()} />\n * <p>Drag and drop some files here, or click to select files</p>\n * </div>\n * )\n * }\n * ```\n *\n * @function useDropzone\n *\n * @param {object} props\n * @param {import(\"./utils\").AcceptProp} [props.accept] Set accepted file types.\n * Checkout https://developer.mozilla.org/en-US/docs/Web/API/window/showOpenFilePicker types option for more information.\n * Keep in mind that mime type determination is not reliable across platforms. CSV files,\n * for example, are reported as text/plain under macOS but as application/vnd.ms-excel under\n * Windows. In some cases there might not be a mime type set at all (https://github.com/react-dropzone/react-dropzone/issues/276).\n * @param {boolean} [props.multiple=true] Allow drag 'n' drop (or selection from the file dialog) of multiple files\n * @param {boolean} [props.preventDropOnDocument=true] If false, allow dropped items to take over the current browser window\n * @param {boolean} [props.noClick=false] If true, disables click to open the native file selection dialog\n * @param {boolean} [props.noKeyboard=false] If true, disables SPACE/ENTER to open the native file selection dialog.\n * Note that it also stops tracking the focus state.\n * @param {boolean} [props.noDrag=false] If true, disables drag 'n' drop\n * @param {boolean} [props.noDragEventsBubbling=false] If true, stops drag event propagation to parents\n * @param {number} [props.minSize=0] Minimum file size (in bytes)\n * @param {number} [props.maxSize=Infinity] Maximum file size (in bytes)\n * @param {boolean} [props.disabled=false] Enable/disable the dropzone\n * @param {getFilesFromEvent} [props.getFilesFromEvent] Use this to provide a custom file aggregator\n * @param {Function} [props.onFileDialogCancel] Cb for when closing the file dialog with no selection\n * @param {boolean} [props.useFsAccessApi] Set to true to use the https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API\n * to open the file picker instead of using an `<input type=\"file\">` click event.\n * @param {boolean} autoFocus Set to true to auto focus the root element.\n * @param {Function} [props.onFileDialogOpen] Cb for when opening the file dialog\n * @param {dragCb} [props.onDragEnter] Cb for when the `dragenter` event occurs.\n * @param {dragCb} [props.onDragLeave] Cb for when the `dragleave` event occurs\n * @param {dragCb} [props.onDragOver] Cb for when the `dragover` event occurs\n * @param {dropCb} [props.onDrop] Cb for when the `drop` event occurs.\n * Note that this callback is invoked after the `getFilesFromEvent` callback is done.\n *\n * Files are accepted or rejected based on the `accept`, `multiple`, `minSize` and `maxSize` props.\n * `accept` must be an object with keys as a valid [MIME type](http://www.iana.org/assignments/media-types/media-types.xhtml) according to [input element specification](https://www.w3.org/wiki/HTML/Elements/input/file) and the value an array of file extensions (optional).\n * If `multiple` is set to false and additional files are dropped,\n * all files besides the first will be rejected.\n * Any file which does not have a size in the [`minSize`, `maxSize`] range, will be rejected as well.\n *\n * Note that the `onDrop` callback will always be invoked regardless if the dropped files were accepted or rejected.\n * If you'd like to react to a specific scenario, use the `onDropAccepted`/`onDropRejected` props.\n *\n * `onDrop` will provide you with an array of [File](https://developer.mozilla.org/en-US/docs/Web/API/File) objects which you can then process and send to a server.\n * For example, with [SuperAgent](https://github.com/visionmedia/superagent) as a http/ajax library:\n *\n * ```js\n * function onDrop(acceptedFiles) {\n * const req = request.post('/upload')\n * acceptedFiles.forEach(file => {\n * req.attach(file.name, file)\n * })\n * req.end(callback)\n * }\n * ```\n * @param {dropAcceptedCb} [props.onDropAccepted]\n * @param {dropRejectedCb} [props.onDropRejected]\n * @param {(error: Error) => void} [props.onError]\n *\n * @returns {DropzoneState & DropzoneMethods}\n */\n\nexport function useDropzone() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var _defaultProps$props = _objectSpread(_objectSpread({}, defaultProps), props),\n accept = _defaultProps$props.accept,\n disabled = _defaultProps$props.disabled,\n getFilesFromEvent = _defaultProps$props.getFilesFromEvent,\n maxSize = _defaultProps$props.maxSize,\n minSize = _defaultProps$props.minSize,\n multiple = _defaultProps$props.multiple,\n maxFiles = _defaultProps$props.maxFiles,\n onDragEnter = _defaultProps$props.onDragEnter,\n onDragLeave = _defaultProps$props.onDragLeave,\n onDragOver = _defaultProps$props.onDragOver,\n onDrop = _defaultProps$props.onDrop,\n onDropAccepted = _defaultProps$props.onDropAccepted,\n onDropRejected = _defaultProps$props.onDropRejected,\n onFileDialogCancel = _defaultProps$props.onFileDialogCancel,\n onFileDialogOpen = _defaultProps$props.onFileDialogOpen,\n useFsAccessApi = _defaultProps$props.useFsAccessApi,\n autoFocus = _defaultProps$props.autoFocus,\n preventDropOnDocument = _defaultProps$props.preventDropOnDocument,\n noClick = _defaultProps$props.noClick,\n noKeyboard = _defaultProps$props.noKeyboard,\n noDrag = _defaultProps$props.noDrag,\n noDragEventsBubbling = _defaultProps$props.noDragEventsBubbling,\n onError = _defaultProps$props.onError,\n validator = _defaultProps$props.validator;\n\n var acceptAttr = useMemo(function () {\n return acceptPropAsAcceptAttr(accept);\n }, [accept]);\n var pickerTypes = useMemo(function () {\n return pickerOptionsFromAccept(accept);\n }, [accept]);\n var onFileDialogOpenCb = useMemo(function () {\n return typeof onFileDialogOpen === \"function\" ? onFileDialogOpen : noop;\n }, [onFileDialogOpen]);\n var onFileDialogCancelCb = useMemo(function () {\n return typeof onFileDialogCancel === \"function\" ? onFileDialogCancel : noop;\n }, [onFileDialogCancel]);\n /**\n * @constant\n * @type {React.MutableRefObject<HTMLElement>}\n */\n\n var rootRef = useRef(null);\n var inputRef = useRef(null);\n\n var _useReducer = useReducer(reducer, initialState),\n _useReducer2 = _slicedToArray(_useReducer, 2),\n state = _useReducer2[0],\n dispatch = _useReducer2[1];\n\n var isFocused = state.isFocused,\n isFileDialogActive = state.isFileDialogActive;\n var fsAccessApiWorksRef = useRef(typeof window !== \"undefined\" && window.isSecureContext && useFsAccessApi && canUseFileSystemAccessAPI()); // Update file dialog active state when the window is focused on\n\n var onWindowFocus = function onWindowFocus() {\n // Execute the timeout only if the file dialog is opened in the browser\n if (!fsAccessApiWorksRef.current && isFileDialogActive) {\n setTimeout(function () {\n if (inputRef.current) {\n var files = inputRef.current.files;\n\n if (!files.length) {\n dispatch({\n type: \"closeDialog\"\n });\n onFileDialogCancelCb();\n }\n }\n }, 300);\n }\n };\n\n useEffect(function () {\n window.addEventListener(\"focus\", onWindowFocus, false);\n return function () {\n window.removeEventListener(\"focus\", onWindowFocus, false);\n };\n }, [inputRef, isFileDialogActive, onFileDialogCancelCb, fsAccessApiWorksRef]);\n var dragTargetsRef = useRef([]);\n\n var onDocumentDrop = function onDocumentDrop(event) {\n if (rootRef.current && rootRef.current.contains(event.target)) {\n // If we intercepted an event for our instance, let it propagate down to the instance's onDrop handler\n return;\n }\n\n event.preventDefault();\n dragTargetsRef.current = [];\n };\n\n useEffect(function () {\n if (preventDropOnDocument) {\n document.addEventListener(\"dragover\", onDocumentDragOver, false);\n document.addEventListener(\"drop\", onDocumentDrop, false);\n }\n\n return function () {\n if (preventDropOnDocument) {\n document.removeEventListener(\"dragover\", onDocumentDragOver);\n document.removeEventListener(\"drop\", onDocumentDrop);\n }\n };\n }, [rootRef, preventDropOnDocument]); // Auto focus the root when autoFocus is true\n\n useEffect(function () {\n if (!disabled && autoFocus && rootRef.current) {\n rootRef.current.focus();\n }\n\n return function () {};\n }, [rootRef, autoFocus, disabled]);\n var onErrCb = useCallback(function (e) {\n if (onError) {\n onError(e);\n } else {\n // Let the user know something's gone wrong if they haven't provided the onError cb.\n console.error(e);\n }\n }, [onError]);\n var onDragEnterCb = useCallback(function (event) {\n event.preventDefault(); // Persist here because we need the event later after getFilesFromEvent() is done\n\n event.persist();\n stopPropagation(event);\n dragTargetsRef.current = [].concat(_toConsumableArray(dragTargetsRef.current), [event.target]);\n\n if (isEvtWithFiles(event)) {\n Promise.resolve(getFilesFromEvent(event)).then(function (files) {\n if (isPropagationStopped(event) && !noDragEventsBubbling) {\n return;\n }\n\n var fileCount = files.length;\n var isDragAccept = fileCount > 0 && allFilesAccepted({\n files: files,\n accept: acceptAttr,\n minSize: minSize,\n maxSize: maxSize,\n multiple: multiple,\n maxFiles: maxFiles,\n validator: validator\n });\n var isDragReject = fileCount > 0 && !isDragAccept;\n dispatch({\n isDragAccept: isDragAccept,\n isDragReject: isDragReject,\n isDragActive: true,\n type: \"setDraggedFiles\"\n });\n\n if (onDragEnter) {\n onDragEnter(event);\n }\n }).catch(function (e) {\n return onErrCb(e);\n });\n }\n }, [getFilesFromEvent, onDragEnter, onErrCb, noDragEventsBubbling, acceptAttr, minSize, maxSize, multiple, maxFiles, validator]);\n var onDragOverCb = useCallback(function (event) {\n event.preventDefault();\n event.persist();\n stopPropagation(event);\n var hasFiles = isEvtWithFiles(event);\n\n if (hasFiles && event.dataTransfer) {\n try {\n event.dataTransfer.dropEffect = \"copy\";\n } catch (_unused) {}\n /* eslint-disable-line no-empty */\n\n }\n\n if (hasFiles && onDragOver) {\n onDragOver(event);\n }\n\n return false;\n }, [onDragOver, noDragEventsBubbling]);\n var onDragLeaveCb = useCallback(function (event) {\n event.preventDefault();\n event.persist();\n stopPropagation(event); // Only deactivate once the dropzone and all children have been left\n\n var targets = dragTargetsRef.current.filter(function (target) {\n return rootRef.current && rootRef.current.contains(target);\n }); // Make sure to remove a target present multiple times only once\n // (Firefox may fire dragenter/dragleave multiple times on the same element)\n\n var targetIdx = targets.indexOf(event.target);\n\n if (targetIdx !== -1) {\n targets.splice(targetIdx, 1);\n }\n\n dragTargetsRef.current = targets;\n\n if (targets.length > 0) {\n return;\n }\n\n dispatch({\n type: \"setDraggedFiles\",\n isDragActive: false,\n isDragAccept: false,\n isDragReject: false\n });\n\n if (isEvtWithFiles(event) && onDragLeave) {\n onDragLeave(event);\n }\n }, [rootRef, onDragLeave, noDragEventsBubbling]);\n var setFiles = useCallback(function (files, event) {\n var acceptedFiles = [];\n var fileRejections = [];\n files.forEach(function (file) {\n var _fileAccepted = fileAccepted(file, acceptAttr),\n _fileAccepted2 = _slicedToArray(_fileAccepted, 2),\n accepted = _fileAccepted2[0],\n acceptError = _fileAccepted2[1];\n\n var _fileMatchSize = fileMatchSize(file, minSize, maxSize),\n _fileMatchSize2 = _slicedToArray(_fileMatchSize, 2),\n sizeMatch = _fileMatchSize2[0],\n sizeError = _fileMatchSize2[1];\n\n var customErrors = validator ? validator(file) : null;\n\n if (accepted && sizeMatch && !customErrors) {\n acceptedFiles.push(file);\n } else {\n var errors = [acceptError, sizeError];\n\n if (customErrors) {\n errors = errors.concat(customErrors);\n }\n\n fileRejections.push({\n file: file,\n errors: errors.filter(function (e) {\n return e;\n })\n });\n }\n });\n\n if (!multiple && acceptedFiles.length > 1 || multiple && maxFiles >= 1 && acceptedFiles.length > maxFiles) {\n // Reject everything and empty accepted files\n acceptedFiles.forEach(function (file) {\n fileRejections.push({\n file: file,\n errors: [TOO_MANY_FILES_REJECTION]\n });\n });\n acceptedFiles.splice(0);\n }\n\n dispatch({\n acceptedFiles: acceptedFiles,\n fileRejections: fileRejections,\n isDragReject: fileRejections.length > 0,\n type: \"setFiles\"\n });\n\n if (onDrop) {\n onDrop(acceptedFiles, fileRejections, event);\n }\n\n if (fileRejections.length > 0 && onDropRejected) {\n onDropRejected(fileRejections, event);\n }\n\n if (acceptedFiles.length > 0 && onDropAccepted) {\n onDropAccepted(acceptedFiles, event);\n }\n }, [dispatch, multiple, acceptAttr, minSize, maxSize, maxFiles, onDrop, onDropAccepted, onDropRejected, validator]);\n var onDropCb = useCallback(function (event) {\n event.preventDefault(); // Persist here because we need the event later after getFilesFromEvent() is done\n\n event.persist();\n stopPropagation(event);\n dragTargetsRef.current = [];\n\n if (isEvtWithFiles(event)) {\n Promise.resolve(getFilesFromEvent(event)).then(function (files) {\n if (isPropagationStopped(event) && !noDragEventsBubbling) {\n return;\n }\n\n setFiles(files, event);\n }).catch(function (e) {\n return onErrCb(e);\n });\n }\n\n dispatch({\n type: \"reset\"\n });\n }, [getFilesFromEvent, setFiles, onErrCb, noDragEventsBubbling]); // Fn for opening the file dialog programmatically\n\n var openFileDialog = useCallback(function () {\n // No point to use FS access APIs if context is not secure\n // https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts#feature_detection\n if (fsAccessApiWorksRef.current) {\n dispatch({\n type: \"openDialog\"\n });\n onFileDialogOpenCb(); // https://developer.mozilla.org/en-US/docs/Web/API/window/showOpenFilePicker\n\n var opts = {\n multiple: multiple,\n types: pickerTypes\n };\n window.showOpenFilePicker(opts).then(function (handles) {\n return getFilesFromEvent(handles);\n }).then(function (files) {\n setFiles(files, null);\n dispatch({\n type: \"closeDialog\"\n });\n }).catch(function (e) {\n // AbortError means the user canceled\n if (isAbort(e)) {\n onFileDialogCancelCb(e);\n dispatch({\n type: \"closeDialog\"\n });\n } else if (isSecurityError(e)) {\n fsAccessApiWorksRef.current = false; // CORS, so cannot use this API\n // Try using the input\n\n if (inputRef.current) {\n inputRef.current.value = null;\n inputRef.current.click();\n } else {\n onErrCb(new Error(\"Cannot open the file picker because the https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API is not supported and no <input> was provided.\"));\n }\n } else {\n onErrCb(e);\n }\n });\n return;\n }\n\n if (inputRef.current) {\n dispatch({\n type: \"openDialog\"\n });\n onFileDialogOpenCb();\n inputRef.current.value = null;\n inputRef.current.click();\n }\n }, [dispatch, onFileDialogOpenCb, onFileDialogCancelCb, useFsAccessApi, setFiles, onErrCb, pickerTypes, multiple]); // Cb to open the file dialog when SPACE/ENTER occurs on the dropzone\n\n var onKeyDownCb = useCallback(function (event) {\n // Ignore keyboard events bubbling up the DOM tree\n if (!rootRef.current || !rootRef.current.isEqualNode(event.target)) {\n return;\n }\n\n if (event.key === \" \" || event.key === \"Enter\" || event.keyCode === 32 || event.keyCode === 13) {\n event.preventDefault();\n openFileDialog();\n }\n }, [rootRef, openFileDialog]); // Update focus state for the dropzone\n\n var onFocusCb = useCallback(function () {\n dispatch({\n type: \"focus\"\n });\n }, []);\n var onBlurCb = useCallback(function () {\n dispatch({\n type: \"blur\"\n });\n }, []); // Cb to open the file dialog when click occurs on the dropzone\n\n var onClickCb = useCallback(function () {\n if (noClick) {\n return;\n } // In IE11/Edge the file-browser dialog is blocking, therefore, use setTimeout()\n // to ensure React can handle state changes\n // See: https://github.com/react-dropzone/react-dropzone/issues/450\n\n\n if (isIeOrEdge()) {\n setTimeout(openFileDialog, 0);\n } else {\n openFileDialog();\n }\n }, [noClick, openFileDialog]);\n\n var composeHandler = function composeHandler(fn) {\n return disabled ? null : fn;\n };\n\n var composeKeyboardHandler = function composeKeyboardHandler(fn) {\n return noKeyboard ? null : composeHandler(fn);\n };\n\n var composeDragHandler = function composeDragHandler(fn) {\n return noDrag ? null : composeHandler(fn);\n };\n\n var stopPropagation = function stopPropagation(event) {\n if (noDragEventsBubbling) {\n event.stopPropagation();\n }\n };\n\n var getRootProps = useMemo(function () {\n return function () {\n var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref2$refKey = _ref2.refKey,\n refKey = _ref2$refKey === void 0 ? \"ref\" : _ref2$refKey,\n role = _ref2.role,\n onKeyDown = _ref2.onKeyDown,\n onFocus = _ref2.onFocus,\n onBlur = _ref2.onBlur,\n onClick = _ref2.onClick,\n onDragEnter = _ref2.onDragEnter,\n onDragOver = _ref2.onDragOver,\n onDragLeave = _ref2.onDragLeave,\n onDrop = _ref2.onDrop,\n rest = _objectWithoutProperties(_ref2, _excluded3);\n\n return _objectSpread(_objectSpread(_defineProperty({\n onKeyDown: composeKeyboardHandler(composeEventHandlers(onKeyDown, onKeyDownCb)),\n onFocus: composeKeyboardHandler(composeEventHandlers(onFocus, onFocusCb)),\n onBlur: composeKeyboardHandler(composeEventHandlers(onBlur, onBlurCb)),\n onClick: composeHandler(composeEventHandlers(onClick, onClickCb)),\n onDragEnter: composeDragHandler(composeEventHandlers(onDragEnter, onDragEnterCb)),\n onDragOver: composeDragHandler(composeEventHandlers(onDragOver, onDragOverCb)),\n onDragLeave: composeDragHandler(composeEventHandlers(onDragLeave, onDragLeaveCb)),\n onDrop: composeDragHandler(composeEventHandlers(onDrop, onDropCb)),\n role: typeof role === \"string\" && role !== \"\" ? role : \"presentation\"\n }, refKey, rootRef), !disabled && !noKeyboard ? {\n tabIndex: 0\n } : {}), rest);\n };\n }, [rootRef, onKeyDownCb, onFocusCb, onBlurCb, onClickCb, onDragEnterCb, onDragOverCb, onDragLeaveCb, onDropCb, noKeyboard, noDrag, disabled]);\n var onInputElementClick = useCallback(function (event) {\n event.stopPropagation();\n }, []);\n var getInputProps = useMemo(function () {\n return function () {\n var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref3$refKey = _ref3.refKey,\n refKey = _ref3$refKey === void 0 ? \"ref\" : _ref3$refKey,\n onChange = _ref3.onChange,\n onClick = _ref3.onClick,\n rest = _objectWithoutProperties(_ref3, _excluded4);\n\n var inputProps = _defineProperty({\n accept: acceptAttr,\n multiple: multiple,\n type: \"file\",\n style: {\n border: 0,\n clip: \"rect(0, 0, 0, 0)\",\n clipPath: \"inset(50%)\",\n height: \"1px\",\n margin: \"0 -1px -1px 0\",\n overflow: \"hidden\",\n padding: 0,\n position: \"absolute\",\n width: \"1px\",\n whiteSpace: \"nowrap\"\n },\n onChange: composeHandler(composeEventHandlers(onChange, onDropCb)),\n onClick: composeHandler(composeEventHandlers(onClick, onInputElementClick)),\n tabIndex: -1\n }, refKey, inputRef);\n\n return _objectSpread(_objectSpread({}, inputProps), rest);\n };\n }, [inputRef, accept, multiple, onDropCb, disabled]);\n return _objectSpread(_objectSpread({}, state), {}, {\n isFocused: isFocused && !disabled,\n getRootProps: getRootProps,\n getInputProps: getInputProps,\n rootRef: rootRef,\n inputRef: inputRef,\n open: composeHandler(openFileDialog)\n });\n}\n/**\n * @param {DropzoneState} state\n * @param {{type: string} & DropzoneState} action\n * @returns {DropzoneState}\n */\n\nfunction reducer(state, action) {\n /* istanbul ignore next */\n switch (action.type) {\n case \"focus\":\n return _objectSpread(_objectSpread({}, state), {}, {\n isFocused: true\n });\n\n case \"blur\":\n return _objectSpread(_objectSpread({}, state), {}, {\n isFocused: false\n });\n\n case \"openDialog\":\n return _objectSpread(_objectSpread({}, initialState), {}, {\n isFileDialogActive: true\n });\n\n case \"closeDialog\":\n return _objectSpread(_objectSpread({}, state), {}, {\n isFileDialogActive: false\n });\n\n case \"setDraggedFiles\":\n return _objectSpread(_objectSpread({}, state), {}, {\n isDragActive: action.isDragActive,\n isDragAccept: action.isDragAccept,\n isDragReject: action.isDragReject\n });\n\n case \"setFiles\":\n return _objectSpread(_objectSpread({}, state), {}, {\n acceptedFiles: action.acceptedFiles,\n fileRejections: action.fileRejections,\n isDragReject: action.isDragReject\n });\n\n case \"reset\":\n return _objectSpread({}, initialState);\n\n default:\n return state;\n }\n}\n\nfunction noop() {}\n\nexport { ErrorCode } from \"./utils/index.js\";","import { useState, useEffect } from \"react\";\nimport { useDropzone } from \"react-dropzone\";\nimport { useTranslation } from \"../../../i18n/useTranslation\";\nimport { Box, Text } from \"../ui/flex\";\nimport { UploaderWrapperProps } from \"./types\";\nimport { CloudUpload } from \"lucide-react\";\n\nexport default function UploaderWrapper({ onSuccess, setDataError, ...props }: UploaderWrapperProps) {\n const [loading, setLoading] = useState(false);\n const { t } = useTranslation();\n const [isMobile, setIsMobile] = useState(false);\n\n useEffect(() => {\n const checkIsMobile = () => {\n setIsMobile(window.innerWidth <= 480);\n };\n checkIsMobile();\n window.addEventListener('resize', checkIsMobile);\n return () => window.removeEventListener('resize', checkIsMobile);\n }, []);\n\n const { getRootProps, getInputProps, isDragActive, open } = useDropzone({\n noClick: true,\n noKeyboard: true,\n maxFiles: 1,\n accept: {\n \"application/vnd.ms-excel\": [\".xls\"],\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\": [\".xlsx\"],\n \"text/csv\": [\".csv\"],\n },\n onDropRejected: (fileRejections) => {\n setLoading(false);\n const errorMessage = fileRejections[0].errors[0].message;\n setDataError(errorMessage);\n },\n onDropAccepted: async ([file]) => {\n setLoading(true);\n onSuccess(file);\n setLoading(false);\n },\n });\n\n return (\n <Box\n {...getRootProps()}\n className={`w-full flex justify-center items-center flex-col bg-gray-50 border-2 border-dashed rounded-lg cursor-pointer transition-all duration-200 hover:bg-gray-100 ${\n isMobile ? 'min-h-[180px] py-8 px-6' : 'min-h-[240px] py-10 px-8'\n } ${\n isDragActive ? 'border-blue-500 bg-blue-50' : 'border-gray-300 hover:border-gray-400'\n }`}\n onClick={open}\n >\n <input {...getInputProps()} />\n \n {/* Upload Icon */}\n <Box\n className={`mb-3 p-3 rounded-full bg-white transition-all duration-200 ${\n isDragActive ? 'text-blue-600 shadow-md' : 'text-gray-400'\n }`}\n >\n <CloudUpload size={isMobile ? 28 : 32} />\n </Box>\n \n {isDragActive ? (\n <Text className={`${isMobile ? 'text-sm' : 'text-base'} font-medium text-gray-700`}>\n {t(\"Drop your file here\")}\n </Text>\n ) : loading ? (\n <Text className={`${isMobile ? 'text-sm' : 'text-base'} font-medium text-gray-700`}>\n {t(\"Loading...\")}\n </Text>\n ) : (\n <Text \n className={`${isMobile ? 'text-sm' : 'text-base'} font-medium text-gray-700`}\n >\n {t(\"Drop a file or click to browse\")}\n </Text>\n )}\n </Box>\n );\n}","import { useMemo } from \"react\";\nimport { useTranslation } from \"../../../../i18n/useTranslation\";\nimport Tooltip from \"../../../components/Tooltip\";\nimport { Column } from \"../../../../types\";\nimport { Check } from \"lucide-react\";\n\nexport default function useTemplateTable(fields: Column[] = []) {\n if (!fields) {\n return [];\n }\n const { t } = useTranslation();\n const expectedColumnKey = t(\"Expected Column\");\n const requiredKey = t(\"Required\");\n const result = useMemo(() => {\n return fields.map((item) => ({\n [expectedColumnKey]: item?.description\n ? {\n raw: item.label,\n content: (\n <div>\n <Tooltip title={item?.description}>{item.label}</Tooltip>\n </div>\n ),\n }\n : item.label,\n [requiredKey]: { raw: item?.validators?.some((v: any) => v.type === 'required') ? 1 : 0, content: item?.validators?.some((v: any) => v.type === 'required') ? <Check /> : <></> },\n }));\n }, [fields]);\n\n return result;\n}\n","import { useTranslation } from \"../../../i18n/useTranslation\";\nimport { Button } from \"../../components/ui/button\";\nimport { Box, Flex, Text } from \"../../components/ui/flex\";\nimport Table from \"../../components/Table\";\nimport UploaderWrapper from \"../../components/UploaderWrapper/UploaderWrapper\";\nimport useTemplateTable from \"./hooks/useTemplateTable\";\nimport { UploaderProps } from \"./types\";\nimport { Download, Info } from \"lucide-react\";\nimport { cn } from \"../../../utils/cn\";\nimport { Column } from \"../../../types\";\n\nexport default function Uploader({\n columns,\n skipHeaderRowSelection,\n onSuccess,\n showDownloadTemplateButton,\n setDataError\n}: UploaderProps) {\n // Use columns directly\n const fields = useTemplateTable(columns);\n const uploaderWrapper = (\n <UploaderWrapper\n onSuccess={onSuccess}\n skipHeaderRowSelection={skipHeaderRowSelection}\n setDataError={setDataError}\n />\n );\n showDownloadTemplateButton = showDownloadTemplateButton ?? true;\n const { t } = useTranslation();\n\n function downloadTemplate() {\n // Use column labels for CSV headers\n const headers = (columns || []).map(col => col.label);\n const csvData = headers.join(\",\");\n\n const link = document.createElement(\"a\");\n link.href = URL.createObjectURL(new Blob([csvData], { type: \"text/csv\" }));\n link.download = \"template.csv\";\n link.click();\n }\n\n return (\n <div className={cn(\n \"flex flex-col w-full max-w-[560px] mx-auto p-8\",\n \"sm:px-4 sm:py-6\",\n \"max-[480px]:p-4\"\n )}>\n {/* Title Section */}\n <Box className=\"mb-6 text-center\">\n <Text className=\"text-2xl font-semibold text-gray-900 mb-2\">\n {t(\"Upload a CSV file\")}\n </Text>\n <Text className=\"text-sm text-gray-600\">\n {columns \n ? `${t(\"Required fields\")}: ${columns.filter(c => c.validators?.some(v => v.type === 'required')).map(c => c.label).join(', ') || t('None')}` \n : t(\"Make sure file includes contact name and phone number\")}\n </Text>\n </Box>\n\n {/* Upload Area */}\n <Box className=\"mb-4\">\n {uploaderWrapper}\n </Box>\n\n {/* Footer Links */}\n <Flex className=\"items-center justify-center flex-wrap gap-2 text-sm\">\n <span className=\"text-gray-400\">or</span>\n {showDownloadTemplateButton && (\n <a\n className=\"inline-flex items-center gap-1.5 text-blue-600 hover:text-blue-700 transition-colors cursor-pointer\"\n onClick={downloadTemplate}\n >\n <span className=\"hover:underline\">{t(\"Download a sample CSV file\")}</span>\n </a>\n )}\n </Flex>\n\n {/* Template Info Card (Hidden on mobile, shown if needed) */}\n {fields.length > 0 && (\n <Box\n className=\"mt-6 p-4 bg-white rounded-lg border border-gray-200 hidden md:block\"\n >\n <Text className=\"text-sm font-semibold text-gray-700 mb-3\">\n {t(\"Expected Columns\")}\n </Text>\n <Box className=\"max-h-[120px] overflow-auto\">\n <Table\n fixHeader\n data={fields}\n background=\"transparent\"\n columnWidths={[\"65%\", \"35%\"]}\n columnAlignments={[\"\", \"center\"]}\n />\n </Box>\n </Box>\n )}\n </div>\n );\n}","/**\n * Configuration file for environment-specific settings\n */\n\n// Determine the current environment\nconst getEnvironment = () => {\n // For browser environments\n if (typeof process !== 'undefined' && process.env && process.env.NODE_ENV) {\n return process.env.NODE_ENV;\n }\n \n // Check if we're in a build for npm package (set in package.json scripts)\n if (typeof process !== 'undefined' && process.env && process.env.NPM_PACKAGE_BUILD === 'true') {\n return 'production';\n }\n\n // Default to development if environment can't be determined\n return 'development';\n};\n\n// API URL configuration for different environments\nconst API_URLS = {\n development: 'https://abhishekray07.ngrok.io',\n production: 'https://api.importcsv.com',\n};\n\n// Get the current API URL based on environment\nexport const getApiBaseUrl = () => {\n const env = getEnvironment();\n return API_URLS[env] || API_URLS.development;\n};\n\n// Export configuration\nexport default {\n apiBaseUrl: getApiBaseUrl(),\n // Add other configuration settings here\n};\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.FrameContextConsumer = exports.FrameContextProvider = exports.useFrame = exports.FrameContext = undefined;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar doc = void 0;\nvar win = void 0;\nif (typeof document !== 'undefined') {\n doc = document;\n}\nif (typeof window !== 'undefined') {\n win = window;\n}\n\nvar FrameContext = exports.FrameContext = _react2.default.createContext({ document: doc, window: win });\n\nvar useFrame = exports.useFrame = function useFrame() {\n return _react2.default.useContext(FrameContext);\n};\n\nvar FrameContextProvider = FrameContext.Provider,\n FrameContextConsumer = FrameContext.Consumer;\nexports.FrameContextProvider = FrameContextProvider;\nexports.FrameContextConsumer = FrameContextConsumer;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // eslint-disable-line no-unused-vars\n\n\nvar Content = function (_Component) {\n _inherits(Content, _Component);\n\n function Content() {\n _classCallCheck(this, Content);\n\n return _possibleConstructorReturn(this, (Content.__proto__ || Object.getPrototypeOf(Content)).apply(this, arguments));\n }\n\n _createClass(Content, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n this.props.contentDidMount();\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate() {\n this.props.contentDidUpdate();\n }\n }, {\n key: 'render',\n value: function render() {\n return _react.Children.only(this.props.children);\n }\n }]);\n\n return Content;\n}(_react.Component);\n\nContent.propTypes = {\n children: _propTypes2.default.element.isRequired,\n contentDidMount: _propTypes2.default.func.isRequired,\n contentDidUpdate: _propTypes2.default.func.isRequired\n};\nexports.default = Content;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Frame = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _Context = require('./Context');\n\nvar _Content = require('./Content');\n\nvar _Content2 = _interopRequireDefault(_Content);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Frame = exports.Frame = function (_Component) {\n _inherits(Frame, _Component);\n\n // React warns when you render directly into the body since browser extensions\n // also inject into the body and can mess up React. For this reason\n // initialContent is expected to have a div inside of the body\n // element that we render react into.\n function Frame(props, context) {\n _classCallCheck(this, Frame);\n\n var _this = _possibleConstructorReturn(this, (Frame.__proto__ || Object.getPrototypeOf(Frame)).call(this, props, context));\n\n _this.setRef = function (node) {\n _this.nodeRef.current = node;\n\n var forwardedRef = _this.props.forwardedRef; // eslint-disable-line react/prop-types\n\n if (typeof forwardedRef === 'function') {\n forwardedRef(node);\n } else if (forwardedRef) {\n forwardedRef.current = node;\n }\n };\n\n _this.handleLoad = function () {\n clearInterval(_this.loadCheck);\n // Bail update as some browsers will trigger on both DOMContentLoaded & onLoad ala firefox\n if (!_this.state.iframeLoaded) {\n _this.setState({ iframeLoaded: true });\n }\n };\n\n _this.loadCheck = function () {\n return setInterval(function () {\n _this.handleLoad();\n }, 500);\n };\n\n _this._isMounted = false;\n _this.nodeRef = _react2.default.createRef();\n _this.state = { iframeLoaded: false };\n return _this;\n }\n\n _createClass(Frame, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n this._isMounted = true;\n\n var doc = this.getDoc();\n\n if (doc) {\n this.nodeRef.current.contentWindow.addEventListener('DOMContentLoaded', this.handleLoad);\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this._isMounted = false;\n\n this.nodeRef.current.removeEventListener('DOMContentLoaded', this.handleLoad);\n }\n }, {\n key: 'getDoc',\n value: function getDoc() {\n return this.nodeRef.current ? this.nodeRef.current.contentDocument : null; // eslint-disable-line\n }\n }, {\n key: 'getMountTarget',\n value: function getMountTarget() {\n var doc = this.getDoc();\n if (this.props.mountTarget) {\n return doc.querySelector(this.props.mountTarget);\n }\n return doc.body.children[0];\n }\n\n // In certain situations on a cold cache DOMContentLoaded never gets called\n // fallback to an interval to check if that's the case\n\n }, {\n key: 'renderFrameContents',\n value: function renderFrameContents() {\n if (!this._isMounted) {\n return null;\n }\n\n var doc = this.getDoc();\n\n if (!doc) {\n return null;\n }\n\n var contentDidMount = this.props.contentDidMount;\n var contentDidUpdate = this.props.contentDidUpdate;\n\n var win = doc.defaultView || doc.parentView;\n var contents = _react2.default.createElement(\n _Content2.default,\n {\n contentDidMount: contentDidMount,\n contentDidUpdate: contentDidUpdate\n },\n _react2.default.createElement(\n _Context.FrameContextProvider,\n { value: { document: doc, window: win } },\n _react2.default.createElement(\n 'div',\n { className: 'frame-content' },\n this.props.children\n )\n )\n );\n\n var mountTarget = this.getMountTarget();\n\n if (!mountTarget) {\n return null;\n }\n\n return [_reactDom2.default.createPortal(this.props.head, this.getDoc().head), _reactDom2.default.createPortal(contents, mountTarget)];\n }\n }, {\n key: 'render',\n value: function render() {\n var props = _extends({}, this.props, {\n srcDoc: this.props.initialContent,\n children: undefined // The iframe isn't ready so we drop children from props here. #12, #17\n });\n delete props.head;\n delete props.initialContent;\n delete props.mountTarget;\n delete props.contentDidMount;\n delete props.contentDidUpdate;\n delete props.forwardedRef;\n\n return _react2.default.createElement(\n 'iframe',\n _extends({}, props, { ref: this.setRef, onLoad: this.handleLoad }),\n this.state.iframeLoaded && this.renderFrameContents()\n );\n }\n }]);\n\n return Frame;\n}(_react.Component);\n\nFrame.propTypes = {\n style: _propTypes2.default.object, // eslint-disable-line\n head: _propTypes2.default.node,\n initialContent: _propTypes2.default.string,\n mountTarget: _propTypes2.default.string,\n contentDidMount: _propTypes2.default.func,\n contentDidUpdate: _propTypes2.default.func,\n children: _propTypes2.default.oneOfType([_propTypes2.default.element, _propTypes2.default.arrayOf(_propTypes2.default.element)])\n};\nFrame.defaultProps = {\n style: {},\n head: null,\n children: undefined,\n mountTarget: undefined,\n contentDidMount: function contentDidMount() {},\n contentDidUpdate: function contentDidUpdate() {},\n initialContent: '<!DOCTYPE html><html><head></head><body><div class=\"frame-root\"></div></body></html>'\n};\nexports.default = _react2.default.forwardRef(function (props, ref) {\n return _react2.default.createElement(Frame, _extends({}, props, { forwardedRef: ref }));\n});","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _Frame = require('./Frame');\n\nObject.defineProperty(exports, 'default', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_Frame).default;\n }\n});\n\nvar _Context = require('./Context');\n\nObject.defineProperty(exports, 'FrameContext', {\n enumerable: true,\n get: function get() {\n return _Context.FrameContext;\n }\n});\nObject.defineProperty(exports, 'FrameContextConsumer', {\n enumerable: true,\n get: function get() {\n return _Context.FrameContextConsumer;\n }\n});\nObject.defineProperty(exports, 'useFrame', {\n enumerable: true,\n get: function get() {\n return _Context.useFrame;\n }\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }","// Auto-generated file - DO NOT EDIT\n// This file contains all bundled CSS including CSS modules\nexport const bundledCss = `@import\"https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800;900&display=swap\";@import\"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap\";.Errors-module-module__errors___fyHDX{color:var(--color-text-error);margin:var(--m-xxs) 0}.Errors-module-module__errors___fyHDX p{margin:0;display:flex;align-items:center;gap:var(--m-xxs);text-align:left}.Errors-module-module__centered___RHKZi{display:flex;justify-content:center;align-items:center;flex-direction:column;height:100%}.Validation-module-module__baseContainer___-0AsU,.Validation-module-module__flexContainer___cBods{width:100%;max-width:100%;padding:1.5rem}@media (max-width: 768px){.Validation-module-module__baseContainer___-0AsU,.Validation-module-module__flexContainer___cBods{padding:1rem}}@media (max-width: 640px){.Validation-module-module__baseContainer___-0AsU,.Validation-module-module__flexContainer___cBods{padding:.75rem}}.Validation-module-module__flexContainer___cBods{display:flex;flex-direction:column;min-height:0;min-width:0}.Validation-module-module__scrollableContent___d0ytT{flex:1;display:flex;flex-direction:column;overflow:visible;max-width:100%;min-width:0}.Validation-module-module__tableContainer___jRikO{flex:1;overflow-x:auto;overflow-y:auto;max-width:100%;-webkit-overflow-scrolling:touch}.Validation-module-module__tableContainer___jRikO table{min-width:100%;width:-moz-max-content;width:max-content}.Validation-module-module__headerSection___drcpg,.Validation-module-module__header___ocGI2{padding:1rem;border-bottom:1px solid #e5e7eb}.Validation-module-module__headerSection___drcpg h2,.Validation-module-module__header___ocGI2 h2{font-size:1.25rem;font-weight:600;color:#111827;margin:0 0 .5rem}.Validation-module-module__headerSection___drcpg p,.Validation-module-module__header___ocGI2 p{font-size:.875rem;color:#6b7280;margin:0}.Validation-module-module__toolbar___-DCj6{padding:.75rem 1rem;background:#fff;border:1px solid #e5e7eb;border-radius:.5rem;margin-bottom:1rem;box-shadow:0 1px 2px #0000000d}.Validation-module-module__validationContainer___jrlPR{display:flex;flex-direction:column;width:100%;min-height:600px;max-height:calc(100vh - 2rem);height:calc(100vh - 2rem);max-width:100%;box-sizing:border-box;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;margin:1rem 0}.Validation-module-module__header___ocGI2{flex-shrink:0;padding:1.5rem 1.5rem 0}@media (max-width: 640px){.Validation-module-module__header___ocGI2{padding:1rem 1rem 0}.Validation-module-module__header___ocGI2 h2{font-size:1.125rem}.Validation-module-module__header___ocGI2 p{font-size:.8125rem}}.Validation-module-module__toolbarSection___Q0YdW{flex-shrink:0;padding:1rem 1.5rem 0;background:transparent}@media (max-width: 640px){.Validation-module-module__toolbarSection___Q0YdW{padding:.75rem 1rem 0}}.Validation-module-module__scrollableSection___nwC-B{flex:1 1 auto;min-width:0;overflow:auto;min-height:200px;margin:1rem 1.5rem 0;background:#fff;border:1px solid #e5e7eb;border-radius:.5rem;box-shadow:0 1px 3px #0000001a,0 1px 2px #0000000f;-webkit-overflow-scrolling:touch}.Validation-module-module__scrollableSection___nwC-B>table{border-collapse:collapse}.Validation-module-module__scrollableSection___nwC-B>table thead{position:sticky;top:0;z-index:10}.Validation-module-module__scrollableSection___nwC-B>table thead th{background:#f9fafb;border-bottom:2px solid #e5e7eb}.Validation-module-module__scrollableSection___nwC-B>table th:first-child,.Validation-module-module__scrollableSection___nwC-B>table td:first-child{position:sticky;left:0;z-index:5}.Validation-module-module__scrollableSection___nwC-B>table thead th:first-child{z-index:11}@media (max-width: 640px){.Validation-module-module__scrollableSection___nwC-B{margin:.75rem}}.Validation-module-module__validationContent___hn2Dz{padding:1rem 0;width:100%;max-width:100%;overflow:visible}.Validation-module-module__toolbar___-DCj6{background:transparent;border:1px solid #e5e7eb;border-radius:.5rem;margin-bottom:0;margin-top:.5rem;box-shadow:0 1px 2px #0000000d}@media (max-width: 640px){.Validation-module-module__toolbar___-DCj6{padding:.75rem}.Validation-module-module__toolbar___-DCj6>div{flex-direction:column;gap:.75rem;align-items:stretch}}.Validation-module-module__errorBadge___yeHS0{display:inline-flex;align-items:center;padding:.25rem .625rem;background-color:#fee2e2;border:1px solid #fca5a5;border-radius:.375rem;font-size:.875rem;font-weight:600;color:#dc2626;animation:Validation-module-module__pulse___d-MKR 2s infinite}@keyframes Validation-module-module__pulse___d-MKR{0%,to{opacity:1}50%{opacity:.85}}.Validation-module-module__rowCount___h-OSk{font-size:.75rem;color:#9ca3af;font-weight:400}.Validation-module-module__tabFilter___DV34i{display:inline-flex;align-items:center;background:#f3f4f6;padding:.125rem;border-radius:2rem}@media (max-width: 640px){.Validation-module-module__tabFilter___DV34i{width:100%;justify-content:space-between}}.Validation-module-module__tab___JPIkM{position:relative;display:inline-flex;align-items:center;gap:.375rem;padding:.5rem 1.25rem;border:none;background:transparent;color:#6b7280;font-size:.875rem;font-weight:500;border-radius:1.75rem;cursor:pointer;transition:all .2s ease;outline:none;margin:0}@media (max-width: 640px){.Validation-module-module__tab___JPIkM{padding:.5rem .75rem;font-size:.8125rem;flex:1;justify-content:center}}.Validation-module-module__tab___JPIkM:hover:not(.Validation-module-module__active___rLvN7){color:#374151}.Validation-module-module__tab___JPIkM:focus-visible{box-shadow:0 0 0 2px #3b82f6;z-index:1}.Validation-module-module__tab___JPIkM.Validation-module-module__active___rLvN7{background:#4b5563;color:#fff;box-shadow:0 1px 3px #0000001a,0 1px 2px #0000000f}.Validation-module-module__tab___JPIkM.Validation-module-module__active___rLvN7 .Validation-module-module__count___lb09d{background:#fff3;color:#fff}.Validation-module-module__tab___JPIkM .Validation-module-module__count___lb09d{display:inline-flex;align-items:center;justify-content:center;min-width:1.5rem;padding:.125rem .375rem;height:1.25rem;background:transparent;color:inherit;font-size:.875rem;font-weight:600;transition:all .2s ease}.Validation-module-module__tab___JPIkM.Validation-module-module__errorTab___ebQQd.Validation-module-module__active___rLvN7{background:#dc2626}.Validation-module-module__tab___JPIkM.Validation-module-module__errorTab___ebQQd.Validation-module-module__active___rLvN7 .Validation-module-module__count___lb09d{background:#fff3;color:#fff}.Validation-module-module__tab___JPIkM.Validation-module-module__errorTab___ebQQd:not(.Validation-module-module__active___rLvN7) .Validation-module-module__count___lb09d{color:#dc2626}.Validation-module-module__spreadsheetContainer___VOHHJ{width:100%;overflow-x:auto;overflow-y:auto;-webkit-overflow-scrolling:touch;background:#fff;border:1px solid #e5e7eb;border-radius:.5rem;box-shadow:0 1px 3px #0000001a,0 1px 2px #0000000f}.Validation-module-module__spreadsheetWrapper___jE9rZ{position:relative}.Validation-module-module__spreadsheetTable___OzR-h{width:-moz-max-content;width:max-content;min-width:800px;border-collapse:separate;border-spacing:0;font-size:.875rem}.Validation-module-module__spreadsheetHeader___CcIvW{position:sticky;top:0;z-index:10;background:#f9fafb}.Validation-module-module__spreadsheetHeader___CcIvW tr th{background:#f9fafb;border-bottom:2px solid #e5e7eb;border-right:1px solid #e5e7eb;padding:0;text-align:left;font-weight:600;color:#111827;position:relative}.Validation-module-module__spreadsheetHeader___CcIvW tr th:last-child{border-right:none}.Validation-module-module__rowNumberHeader___hBB39{width:60px;min-width:60px;max-width:60px;text-align:center!important;background:#f9fafb!important;position:sticky;left:0;z-index:11;font-size:.75rem;padding:.75rem 0!important}.Validation-module-module__columnHeader___Yjc-8{width:auto;min-width:100px}.Validation-module-module__columnHeader___Yjc-8 .Validation-module-module__headerContent___soxS5{padding:.75rem 1rem;font-size:.875rem;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.Validation-module-module__spreadsheetBody___ASDqW .Validation-module-module__dataRow___fAJUe:hover .Validation-module-module__dataCell___Kqej5{background:#f3f4f6}.Validation-module-module__spreadsheetBody___ASDqW .Validation-module-module__dataRow___fAJUe:hover .Validation-module-module__rowNumber___gW7gl{background:#f0f2f5}.Validation-module-module__spreadsheetBody___ASDqW .Validation-module-module__dataRow___fAJUe.Validation-module-module__errorRow___E5crc .Validation-module-module__dataCell___Kqej5{background:#fff1f1}.Validation-module-module__rowNumber___gW7gl{width:60px;min-width:60px;max-width:60px;background:#f9fafb;border-right:1px solid #e5e7eb;border-bottom:1px solid #e5e7eb;text-align:center;font-size:.75rem;font-weight:500;color:#6b7280;padding:.75rem 0;position:sticky;left:0;z-index:1}.Validation-module-module__dataCell___Kqej5{width:auto;min-width:100px;border-right:1px solid #e5e7eb;border-bottom:1px solid #e5e7eb;padding:0;background:#fff;position:relative;transition:background-color .15s ease;white-space:nowrap}.Validation-module-module__dataCell___Kqej5:last-child{border-right:none}.Validation-module-module__dataCell___Kqej5.Validation-module-module__errorCell___0EbsM{background:#fee2e2}.Validation-module-module__dataCell___Kqej5.Validation-module-module__errorCell___0EbsM .Validation-module-module__cellInput___LsyOo{color:#111827}.Validation-module-module__cellContent___ubxVt{position:relative;width:100%;min-height:44px;display:flex;align-items:center}.Validation-module-module__cellInput___LsyOo{width:100%;height:100%;min-height:40px;border:none;background:transparent;padding:.625rem 1.75rem .625rem .75rem;font-size:.875rem;font-family:inherit;color:#111827;outline:none;transition:box-shadow .15s ease;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.Validation-module-module__cellInput___LsyOo:focus{box-shadow:inset 0 0 0 2px #3b82f6;z-index:2;position:relative}.Validation-module-module__cellInput___LsyOo:hover{background:#00000003}.Validation-module-module__errorIndicator___2KEsf{position:absolute;right:.5rem;top:50%;transform:translateY(-50%);display:flex;align-items:center;justify-content:center;cursor:help;z-index:3}.Validation-module-module__errorIndicator___2KEsf svg{filter:drop-shadow(0 1px 2px rgba(0,0,0,.1))}.Validation-module-module__emptyState___g41in{padding:3rem;text-align:center;color:#6b7280}.Validation-module-module__content___FgF43{display:flex;flex-direction:column;height:100%;width:100%}.Validation-module-module__tableWrapper___YcN6o{flex:1;overflow:auto;margin-bottom:1rem;border-radius:8px;box-shadow:0 2px 4px #0000001a}.Validation-module-module__actions___GIqEx{display:flex;justify-content:space-between;align-items:center;padding:1rem 0}.Validation-module-module__errorContainer___dKOJX{flex:1;margin:0 1rem}.Validation-module-module__errorRow___E5crc td{background-color:#ff000008}.Validation-module-module__editableCellContainer___7yPTv{position:relative;width:100%}.Validation-module-module__simpleInput___LhUg-{width:100%;padding:.25rem;border-radius:4px;font-size:.875rem;transition:all .2s}.Validation-module-module__simpleInput___LhUg-:focus{border-color:#3182ce;box-shadow:0 0 0 1px #3182ce}.Validation-module-module__errorInput___ZWDrT{border-color:#e53e3e}.Validation-module-module__errorInput___ZWDrT:focus{border-color:#e53e3e;box-shadow:0 0 0 1px #e53e3e}.Validation-module-module__errorIcon___NMpp3{position:absolute;top:50%;right:8px;transform:translateY(-50%);width:16px;height:16px;border-radius:50%;background-color:#e53e3e;color:#fff;font-size:12px;display:flex;align-items:center;justify-content:center;cursor:help}.Validation-module-module__validationTable___Wh1wk{width:100%;border-collapse:collapse}.Validation-module-module__validationTable___Wh1wk th{background-color:#f1f5f9;text-transform:none;font-weight:600;color:#334155;padding:12px 16px;text-align:left;border-bottom:1px solid #e2e8f0}.Validation-module-module__validationTable___Wh1wk th:first-child{border-top-left-radius:8px}.Validation-module-module__validationTable___Wh1wk th:last-child{border-top-right-radius:8px}.Validation-module-module__validationTable___Wh1wk td{padding:12px 16px;border-bottom:1px solid #e2e8f0;color:#334155}.Validation-module-module__validationTable___Wh1wk tr:last-child td:first-child{border-bottom-left-radius:8px}.Validation-module-module__validationTable___Wh1wk tr:last-child td:last-child{border-bottom-right-radius:8px}.Validation-module-module__validationTable___Wh1wk tr:hover{background-color:#f8fafc}.Validation-module-module__validationFilters___XqhsC{margin-bottom:1rem}.Validation-module-module__errorSummary___SYeAr{padding:.75rem 1rem;background:#fef2f2;border:1px solid #fecaca;border-radius:.375rem;margin-bottom:1rem}.Validation-module-module__tableContainer___jRikO{flex:1;overflow:auto;border:1px solid #e2e8f0;border-radius:.5rem;background:#fff}.Validation-module-module__toolbarActions___12qlG{display:flex;gap:.75rem;align-items:center}@media (max-width: 640px){.Validation-module-module__toolbarActions___12qlG{width:100%}.Validation-module-module__toolbarActions___12qlG button{flex:1;justify-content:center}}.Validation-module-module__footerSection___pJMfU{flex-shrink:0;display:flex;justify-content:space-between;align-items:center;padding:1.5rem;border-top:1px solid #e5e7eb;background:transparent}.Validation-module-module__tableWidth___MNjwY{width:-moz-max-content;width:max-content;min-width:100%}.Default-module-module__table___44Sxu{display:flex;flex-direction:column;flex:1 1 auto;width:100%;border-collapse:collapse;border-spacing:0;border-radius:var(--border-radius-2);outline:1px solid var(--color-border);table-layout:fixed;overflow:hidden}@media (max-width: 768px){.Default-module-module__table___44Sxu{font-size:14px}}@media (max-width: 480px){.Default-module-module__table___44Sxu{font-size:12px;min-width:320px}}.Default-module-module__table___44Sxu .Default-module-module__thead___QhWkw{display:table-header-group}.Default-module-module__table___44Sxu .Default-module-module__tbody___8S-zy{display:block;overflow:auto;width:100%}.Default-module-module__table___44Sxu .Default-module-module__tr___esZOa{display:flex;width:100%;overflow:hidden;flex-wrap:nowrap}.Default-module-module__table___44Sxu .Default-module-module__td___iAMlt{display:inline-flex;align-items:center;height:44px;flex-shrink:0}@media (max-width: 480px){.Default-module-module__table___44Sxu .Default-module-module__td___iAMlt{height:36px;padding-left:var(--m-xxs)!important;padding-right:var(--m-xxs)!important}}.Default-module-module__table___44Sxu .Default-module-module__caption___VYeqs{display:table-caption;border-bottom:1px solid var(--color-border);background-color:var(--color-background-modal);padding:0 var(--m-s);border-radius:var(--border-radius-2) var(--border-radius-2) 0 0}.Default-module-module__table___44Sxu .Default-module-module__thead___QhWkw .Default-module-module__tr___esZOa .Default-module-module__td___iAMlt{font-weight:400;white-space:nowrap;padding:var(--m-xxxs) var(--m-s);border-bottom:1px solid var(--color-border);color:var(--color-text-secondary)}.Default-module-module__table___44Sxu .Default-module-module__thead___QhWkw .Default-module-module__tr___esZOa .Default-module-module__td___iAMlt:first-of-type{border-radius:var(--border-radius-2) 0 0 0}.Default-module-module__table___44Sxu .Default-module-module__thead___QhWkw .Default-module-module__tr___esZOa .Default-module-module__td___iAMlt:last-child{border-radius:0 var(--border-radius-2) 0 0}.Default-module-module__table___44Sxu .Default-module-module__tbody___8S-zy .Default-module-module__tr___esZOa .Default-module-module__td___iAMlt{vertical-align:middle;padding:var(--m-xxxs) var(--m-s);font-weight:400}.Default-module-module__table___44Sxu .Default-module-module__tbody___8S-zy .Default-module-module__tr___esZOa .Default-module-module__td___iAMlt>span,.Default-module-module__table___44Sxu .Default-module-module__tbody___8S-zy .Default-module-module__tr___esZOa .Default-module-module__td___iAMlt>small{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.Default-module-module__table___44Sxu .Default-module-module__tbody___8S-zy .Default-module-module__tr___esZOa .Default-module-module__td___iAMlt.Default-module-module__highlight___qpgKE{font-weight:500}.Default-module-module__table___44Sxu .Default-module-module__tbody___8S-zy .Default-module-module__tr___esZOa .Default-module-module__td___iAMlt.Default-module-module__element___DzyB-{padding:0 var(--m-s)}@media (max-width: 480px){.Default-module-module__table___44Sxu .Default-module-module__tbody___8S-zy .Default-module-module__tr___esZOa .Default-module-module__td___iAMlt.Default-module-module__element___DzyB-{padding:0 var(--m-xxs)}}.Default-module-module__table___44Sxu .Default-module-module__tbody___8S-zy .Default-module-module__tr___esZOa:hover{box-shadow:0 0 0 2px var(--color-border);position:relative}.Default-module-module__table___44Sxu .Default-module-module__tbody___8S-zy .Default-module-module__tr___esZOa:last-child{border-radius:0 0 var(--border-radius-2) var(--border-radius-2)}.Default-module-module__table___44Sxu .Default-module-module__tbody___8S-zy .Default-module-module__tr___esZOa:last-child .Default-module-module__td___iAMlt{border-bottom-color:transparent}.Default-module-module__table___44Sxu .Default-module-module__tbody___8S-zy .Default-module-module__tr___esZOa:last-child .Default-module-module__td___iAMlt:first-of-type{border-radius:0 0 0 var(--border-radius-2)}.Default-module-module__table___44Sxu .Default-module-module__tbody___8S-zy .Default-module-module__tr___esZOa:last-child .Default-module-module__td___iAMlt:last-child{border-radius:0 0 var(--border-radius-2) 0}.Default-module-module__table___44Sxu.Default-module-module__zebra___p0PyM{background-color:var(--color-background-modal)}.Default-module-module__table___44Sxu.Default-module-module__zebra___p0PyM .Default-module-module__tbody___8S-zy .Default-module-module__tr___esZOa:nth-child(odd) .Default-module-module__td___iAMlt{background-color:var(--color-background)}.Default-module-module__table___44Sxu.Default-module-module__dark___TYSeO{background-color:var(--color-background)}.Default-module-module__table___44Sxu.Default-module-module__dark___TYSeO .Default-module-module__thead___QhWkw .Default-module-module__tr___esZOa .Default-module-module__td___iAMlt,.Default-module-module__table___44Sxu.Default-module-module__light___uGaq4,.Default-module-module__table___44Sxu.Default-module-module__transparent___rzqM5 .Default-module-module__thead___QhWkw{background-color:var(--color-background-modal)}.Default-module-module__table___44Sxu.Default-module-module__transparent___rzqM5 .Default-module-module__tbody___8S-zy .Default-module-module__tr___esZOa:hover,.Default-module-module__table___44Sxu.Default-module-module__dark___TYSeO .Default-module-module__tbody___8S-zy .Default-module-module__tr___esZOa:hover,.Default-module-module__table___44Sxu.Default-module-module__light___uGaq4 .Default-module-module__tbody___8S-zy .Default-module-module__tr___esZOa:hover{box-shadow:none;position:static}.Default-module-module__table___44Sxu.Default-module-module__dark___TYSeO .Default-module-module__tbody___8S-zy .Default-module-module__tr___esZOa:first-of-type .Default-module-module__td___iAMlt,.Default-module-module__table___44Sxu.Default-module-module__light___uGaq4 .Default-module-module__tbody___8S-zy .Default-module-module__tr___esZOa:first-of-type .Default-module-module__td___iAMlt{padding-top:var(--m-s);height:calc(44px + var(--m-s) - var(--m-xxxs))}.Default-module-module__table___44Sxu.Default-module-module__dark___TYSeO .Default-module-module__tbody___8S-zy .Default-module-module__tr___esZOa:last-of-type .Default-module-module__td___iAMlt,.Default-module-module__table___44Sxu.Default-module-module__light___uGaq4 .Default-module-module__tbody___8S-zy .Default-module-module__tr___esZOa:last-of-type .Default-module-module__td___iAMlt{padding-bottom:var(--m-s);height:calc(44px + var(--m-s) - var(--m-xxxs))}.Default-module-module__emptyMsg___HmPC-{display:flex;justify-content:center;align-items:center;margin-top:15vh;text-align:center}.Tooltip-module-module__tooltip___wRW1H{display:inline-flex;align-items:center;gap:var(--m-xs)}.Tooltip-module-module__tooltip___wRW1H .Tooltip-module-module__icon___8Cb-b{position:relative;display:block;cursor:pointer}.Tooltip-module-module__tooltip___wRW1H.Tooltip-module-module__multiline___E-a-0 .Tooltip-module-module__message___dXk82{width:260px;white-space:normal}.Tooltip-module-module__message___dXk82{position:absolute;transform:translate(-50%);background-color:var(--color-background-modal);z-index:3;padding:var(--m-xxs) var(--m-xs);border-radius:var(--border-radius);margin-top:var(--m-xs);box-shadow:0 0 0 1px var(--color-border),0 5px 15px #0003;max-width:300px}.Tooltip-module-module__message___dXk82:after,.Tooltip-module-module__message___dXk82:before{position:absolute;top:calc(var(--m-xxxs) * 1.732 * -1);left:50%;border-left:var(--m-xxxs) solid transparent;border-right:var(--m-xxxs) solid transparent;border-bottom:calc(var(--m-xxxs) * 1.732) solid var(--color-border);content:\"\";font-size:0;line-height:0;width:0;transform:translate(-50%)}.Tooltip-module-module__message___dXk82:after{top:calc(var(--m-xxxs) * 1.732 * -1 + 2px);border-bottom:calc(var(--m-xxxs) * 1.732) solid var(--color-background-modal)}.ConfigureImport-module-module__baseContainer___q8h4Q,.ConfigureImport-module-module__configureImport___LEOsk,.ConfigureImport-module-module__flexContainer___HbOJk{width:100%;max-width:100%;padding:1.5rem}@media (max-width: 768px){.ConfigureImport-module-module__baseContainer___q8h4Q,.ConfigureImport-module-module__configureImport___LEOsk,.ConfigureImport-module-module__flexContainer___HbOJk{padding:1rem}}@media (max-width: 640px){.ConfigureImport-module-module__baseContainer___q8h4Q,.ConfigureImport-module-module__configureImport___LEOsk,.ConfigureImport-module-module__flexContainer___HbOJk{padding:.75rem}}.ConfigureImport-module-module__flexContainer___HbOJk{display:flex;flex-direction:column;min-height:0;min-width:0}.ConfigureImport-module-module__scrollableContent___njXa7{flex:1;display:flex;flex-direction:column;overflow:visible;max-width:100%;min-width:0}.ConfigureImport-module-module__tableContainer___mMlmj{flex:1;overflow-x:auto;overflow-y:auto;max-width:100%;-webkit-overflow-scrolling:touch}.ConfigureImport-module-module__tableContainer___mMlmj table{min-width:100%;width:-moz-max-content;width:max-content}.ConfigureImport-module-module__headerSection___ZgAQT{padding:1rem;border-bottom:1px solid #e5e7eb}.ConfigureImport-module-module__headerSection___ZgAQT h2{font-size:1.25rem;font-weight:600;color:#111827;margin:0 0 .5rem}.ConfigureImport-module-module__headerSection___ZgAQT p{font-size:.875rem;color:#6b7280;margin:0}.ConfigureImport-module-module__toolbar___GEhEX{padding:.75rem 1rem;background:#fff;border:1px solid #e5e7eb;border-radius:.5rem;margin-bottom:1rem;box-shadow:0 1px 2px #0000000d}.ConfigureImport-module-module__configureImport___LEOsk{height:100%;margin:0}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: \"\"}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.container{width:100%}@media (min-width: 640px){.container{max-width:640px}}@media (min-width: 768px){.container{max-width:768px}}@media (min-width: 1024px){.container{max-width:1024px}}@media (min-width: 1280px){.container{max-width:1280px}}@media (min-width: 1536px){.container{max-width:1536px}}.csv-importer{--background: 0 0% 100%;--foreground: 222.2 84% 4.9%;--card: 0 0% 100%;--card-foreground: 222.2 84% 4.9%;--popover: 0 0% 100%;--popover-foreground: 222.2 84% 4.9%;--primary: 221.2 83.2% 53.3%;--primary-foreground: 210 40% 98%;--secondary: 210 40% 96.1%;--secondary-foreground: 222.2 47.4% 11.2%;--muted: 210 40% 96.1%;--muted-foreground: 215.4 16.3% 46.9%;--accent: 210 40% 96.1%;--accent-foreground: 222.2 47.4% 11.2%;--destructive: 0 84.2% 60.2%;--destructive-foreground: 210 40% 98%;--border: 214.3 31.8% 91.4%;--input: 214.3 31.8% 91.4%;--ring: 221.2 83.2% 53.3%;--radius: .5rem;--color-primary: #2563eb;--color-primary-foreground: #ffffff;--color-secondary: #f3f4f6;--color-secondary-foreground: #111827;--color-border: #e5e7eb;--color-background: #ffffff;--color-text: #111827;--color-error: #ef4444;--color-error-foreground: #ffffff;--color-muted: #f3f4f6;--color-muted-foreground: #6b7280;--color-accent: #f3f4f6;--color-accent-foreground: #111827}.csv-importer[data-theme=dark]{--background: 222.2 84% 4.9%;--foreground: 210 40% 98%;--card: 222.2 84% 4.9%;--card-foreground: 210 40% 98%;--popover: 222.2 84% 4.9%;--popover-foreground: 210 40% 98%;--primary: 217.2 91.2% 59.8%;--primary-foreground: 222.2 47.4% 11.2%;--secondary: 217.2 32.6% 17.5%;--secondary-foreground: 210 40% 98%;--muted: 217.2 32.6% 17.5%;--muted-foreground: 215 20.2% 65.1%;--accent: 217.2 32.6% 17.5%;--accent-foreground: 210 40% 98%;--destructive: 0 62.8% 30.6%;--destructive-foreground: 210 40% 98%;--border: 217.2 32.6% 17.5%;--input: 217.2 32.6% 17.5%;--ring: 224.3 76.3% 48%}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.visible{visibility:visible}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.bottom-0{bottom:0}.left-0{left:0}.left-2{left:.5rem}.left-4{left:1rem}.left-\\[50\\%\\]{left:50%}.right-0{right:0}.right-2{right:.5rem}.right-4{right:1rem}.top-0{top:0}.top-1{top:.25rem}.top-1\\/2{top:50%}.top-2{top:.5rem}.top-4{top:1rem}.top-\\[50\\%\\]{top:50%}.top-auto{top:auto}.isolate{isolation:isolate}.z-10{z-index:10}.z-50{z-index:50}.z-\\[100\\]{z-index:100}.-mx-1{margin-left:-.25rem;margin-right:-.25rem}.mx-3{margin-left:.75rem;margin-right:.75rem}.mx-4{margin-left:1rem;margin-right:1rem}.mx-6{margin-left:1.5rem;margin-right:1.5rem}.mx-auto{margin-left:auto;margin-right:auto}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-4{margin-top:1rem;margin-bottom:1rem}.my-8{margin-top:2rem;margin-bottom:2rem}.-ml-1{margin-left:-.25rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.mr-2{margin-right:.5rem}.mt-1{margin-top:.25rem}.mt-12{margin-top:3rem}.mt-2{margin-top:.5rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.box-border{box-sizing:border-box}.line-clamp-1{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.aspect-square{aspect-ratio:1 / 1}.h-0{height:0px}.h-1{height:.25rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-16{height:4rem}.h-3{height:.75rem}.h-3\\.5{height:.875rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\\[1px\\]{height:1px}.h-\\[36px\\]{height:36px}.h-\\[var\\(--radix-select-trigger-height\\)\\]{height:var(--radix-select-trigger-height)}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.max-h-96{max-height:24rem}.max-h-\\[120px\\]{max-height:120px}.max-h-\\[300px\\]{max-height:300px}.max-h-screen{max-height:100vh}.min-h-0{min-height:0px}.min-h-\\[180px\\]{min-height:180px}.min-h-\\[240px\\]{min-height:240px}.min-h-\\[400px\\]{min-height:400px}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-12{width:3rem}.w-16{width:4rem}.w-3{width:.75rem}.w-3\\.5{width:.875rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-8{width:2rem}.w-\\[30\\%\\]{width:30%}.w-\\[35\\%\\]{width:35%}.w-full{width:100%}.w-max{width:-moz-max-content;width:max-content}.min-w-0{min-width:0px}.min-w-\\[36px\\]{min-width:36px}.min-w-\\[600px\\]{min-width:600px}.min-w-\\[8rem\\]{min-width:8rem}.min-w-\\[var\\(--radix-select-trigger-width\\)\\]{min-width:var(--radix-select-trigger-width)}.min-w-full{min-width:100%}.max-w-\\[1000px\\]{max-width:1000px}.max-w-\\[250px\\]{max-width:250px}.max-w-\\[300px\\]{max-width:300px}.max-w-\\[440px\\]{max-width:440px}.max-w-\\[560px\\]{max-width:560px}.max-w-\\[660px\\]{max-width:660px}.max-w-\\[800px\\]{max-width:800px}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-none{max-width:none}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.flex-shrink{flex-shrink:1}.flex-shrink-0,.shrink-0{flex-shrink:0}.flex-grow{flex-grow:1}.border-collapse{border-collapse:collapse}.-translate-y-1{--tw-translate-y: -.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-5{--tw-translate-x: 1.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-\\[-50\\%\\]{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-\\[-50\\%\\]{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-105{--tw-scale-x: 1.05;--tw-scale-y: 1.05;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize{resize:both}.flex-row{flex-direction:row}.flex-row-reverse{flex-direction:row-reverse}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-around{justify-content:space-around}.justify-evenly{justify-content:space-evenly}.gap-0{gap:0px}.gap-1{gap:.25rem}.gap-1\\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(1rem * var(--tw-space-x-reverse));margin-left:calc(1rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(0px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.self-center{align-self:center}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-nowrap{white-space:nowrap}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.border{border-width:1px}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-b-2{border-bottom-width:2px}.border-l-4{border-left-width:4px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-none{border-style:none}.border-blue-100{--tw-border-opacity: 1;border-color:rgb(219 234 254 / var(--tw-border-opacity, 1))}.border-blue-100\\/0{border-color:#dbeafe00}.border-blue-100\\/10{border-color:#dbeafe1a}.border-blue-100\\/100{border-color:#dbeafe}.border-blue-100\\/15{border-color:#dbeafe26}.border-blue-100\\/20{border-color:#dbeafe33}.border-blue-100\\/25{border-color:#dbeafe40}.border-blue-100\\/30{border-color:#dbeafe4d}.border-blue-100\\/35{border-color:#dbeafe59}.border-blue-100\\/40{border-color:#dbeafe66}.border-blue-100\\/45{border-color:#dbeafe73}.border-blue-100\\/5{border-color:#dbeafe0d}.border-blue-100\\/50{border-color:#dbeafe80}.border-blue-100\\/55{border-color:#dbeafe8c}.border-blue-100\\/60{border-color:#dbeafe99}.border-blue-100\\/65{border-color:#dbeafea6}.border-blue-100\\/70{border-color:#dbeafeb3}.border-blue-100\\/75{border-color:#dbeafebf}.border-blue-100\\/80{border-color:#dbeafecc}.border-blue-100\\/85{border-color:#dbeafed9}.border-blue-100\\/90{border-color:#dbeafee6}.border-blue-100\\/95{border-color:#dbeafef2}.border-blue-200{--tw-border-opacity: 1;border-color:rgb(191 219 254 / var(--tw-border-opacity, 1))}.border-blue-200\\/0{border-color:#bfdbfe00}.border-blue-200\\/10{border-color:#bfdbfe1a}.border-blue-200\\/100{border-color:#bfdbfe}.border-blue-200\\/15{border-color:#bfdbfe26}.border-blue-200\\/20{border-color:#bfdbfe33}.border-blue-200\\/25{border-color:#bfdbfe40}.border-blue-200\\/30{border-color:#bfdbfe4d}.border-blue-200\\/35{border-color:#bfdbfe59}.border-blue-200\\/40{border-color:#bfdbfe66}.border-blue-200\\/45{border-color:#bfdbfe73}.border-blue-200\\/5{border-color:#bfdbfe0d}.border-blue-200\\/50{border-color:#bfdbfe80}.border-blue-200\\/55{border-color:#bfdbfe8c}.border-blue-200\\/60{border-color:#bfdbfe99}.border-blue-200\\/65{border-color:#bfdbfea6}.border-blue-200\\/70{border-color:#bfdbfeb3}.border-blue-200\\/75{border-color:#bfdbfebf}.border-blue-200\\/80{border-color:#bfdbfecc}.border-blue-200\\/85{border-color:#bfdbfed9}.border-blue-200\\/90{border-color:#bfdbfee6}.border-blue-200\\/95{border-color:#bfdbfef2}.border-blue-300{--tw-border-opacity: 1;border-color:rgb(147 197 253 / var(--tw-border-opacity, 1))}.border-blue-300\\/0{border-color:#93c5fd00}.border-blue-300\\/10{border-color:#93c5fd1a}.border-blue-300\\/100{border-color:#93c5fd}.border-blue-300\\/15{border-color:#93c5fd26}.border-blue-300\\/20{border-color:#93c5fd33}.border-blue-300\\/25{border-color:#93c5fd40}.border-blue-300\\/30{border-color:#93c5fd4d}.border-blue-300\\/35{border-color:#93c5fd59}.border-blue-300\\/40{border-color:#93c5fd66}.border-blue-300\\/45{border-color:#93c5fd73}.border-blue-300\\/5{border-color:#93c5fd0d}.border-blue-300\\/50{border-color:#93c5fd80}.border-blue-300\\/55{border-color:#93c5fd8c}.border-blue-300\\/60{border-color:#93c5fd99}.border-blue-300\\/65{border-color:#93c5fda6}.border-blue-300\\/70{border-color:#93c5fdb3}.border-blue-300\\/75{border-color:#93c5fdbf}.border-blue-300\\/80{border-color:#93c5fdcc}.border-blue-300\\/85{border-color:#93c5fdd9}.border-blue-300\\/90{border-color:#93c5fde6}.border-blue-300\\/95{border-color:#93c5fdf2}.border-blue-400{--tw-border-opacity: 1;border-color:rgb(96 165 250 / var(--tw-border-opacity, 1))}.border-blue-400\\/0{border-color:#60a5fa00}.border-blue-400\\/10{border-color:#60a5fa1a}.border-blue-400\\/100{border-color:#60a5fa}.border-blue-400\\/15{border-color:#60a5fa26}.border-blue-400\\/20{border-color:#60a5fa33}.border-blue-400\\/25{border-color:#60a5fa40}.border-blue-400\\/30{border-color:#60a5fa4d}.border-blue-400\\/35{border-color:#60a5fa59}.border-blue-400\\/40{border-color:#60a5fa66}.border-blue-400\\/45{border-color:#60a5fa73}.border-blue-400\\/5{border-color:#60a5fa0d}.border-blue-400\\/50{border-color:#60a5fa80}.border-blue-400\\/55{border-color:#60a5fa8c}.border-blue-400\\/60{border-color:#60a5fa99}.border-blue-400\\/65{border-color:#60a5faa6}.border-blue-400\\/70{border-color:#60a5fab3}.border-blue-400\\/75{border-color:#60a5fabf}.border-blue-400\\/80{border-color:#60a5facc}.border-blue-400\\/85{border-color:#60a5fad9}.border-blue-400\\/90{border-color:#60a5fae6}.border-blue-400\\/95{border-color:#60a5faf2}.border-blue-50{--tw-border-opacity: 1;border-color:rgb(239 246 255 / var(--tw-border-opacity, 1))}.border-blue-50\\/0{border-color:#eff6ff00}.border-blue-50\\/10{border-color:#eff6ff1a}.border-blue-50\\/100{border-color:#eff6ff}.border-blue-50\\/15{border-color:#eff6ff26}.border-blue-50\\/20{border-color:#eff6ff33}.border-blue-50\\/25{border-color:#eff6ff40}.border-blue-50\\/30{border-color:#eff6ff4d}.border-blue-50\\/35{border-color:#eff6ff59}.border-blue-50\\/40{border-color:#eff6ff66}.border-blue-50\\/45{border-color:#eff6ff73}.border-blue-50\\/5{border-color:#eff6ff0d}.border-blue-50\\/50{border-color:#eff6ff80}.border-blue-50\\/55{border-color:#eff6ff8c}.border-blue-50\\/60{border-color:#eff6ff99}.border-blue-50\\/65{border-color:#eff6ffa6}.border-blue-50\\/70{border-color:#eff6ffb3}.border-blue-50\\/75{border-color:#eff6ffbf}.border-blue-50\\/80{border-color:#eff6ffcc}.border-blue-50\\/85{border-color:#eff6ffd9}.border-blue-50\\/90{border-color:#eff6ffe6}.border-blue-50\\/95{border-color:#eff6fff2}.border-blue-500{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity, 1))}.border-blue-500\\/0{border-color:#3b82f600}.border-blue-500\\/10{border-color:#3b82f61a}.border-blue-500\\/100{border-color:#3b82f6}.border-blue-500\\/15{border-color:#3b82f626}.border-blue-500\\/20{border-color:#3b82f633}.border-blue-500\\/25{border-color:#3b82f640}.border-blue-500\\/30{border-color:#3b82f64d}.border-blue-500\\/35{border-color:#3b82f659}.border-blue-500\\/40{border-color:#3b82f666}.border-blue-500\\/45{border-color:#3b82f673}.border-blue-500\\/5{border-color:#3b82f60d}.border-blue-500\\/50{border-color:#3b82f680}.border-blue-500\\/55{border-color:#3b82f68c}.border-blue-500\\/60{border-color:#3b82f699}.border-blue-500\\/65{border-color:#3b82f6a6}.border-blue-500\\/70{border-color:#3b82f6b3}.border-blue-500\\/75{border-color:#3b82f6bf}.border-blue-500\\/80{border-color:#3b82f6cc}.border-blue-500\\/85{border-color:#3b82f6d9}.border-blue-500\\/90{border-color:#3b82f6e6}.border-blue-500\\/95{border-color:#3b82f6f2}.border-blue-600{--tw-border-opacity: 1;border-color:rgb(37 99 235 / var(--tw-border-opacity, 1))}.border-blue-600\\/0{border-color:#2563eb00}.border-blue-600\\/10{border-color:#2563eb1a}.border-blue-600\\/100{border-color:#2563eb}.border-blue-600\\/15{border-color:#2563eb26}.border-blue-600\\/20{border-color:#2563eb33}.border-blue-600\\/25{border-color:#2563eb40}.border-blue-600\\/30{border-color:#2563eb4d}.border-blue-600\\/35{border-color:#2563eb59}.border-blue-600\\/40{border-color:#2563eb66}.border-blue-600\\/45{border-color:#2563eb73}.border-blue-600\\/5{border-color:#2563eb0d}.border-blue-600\\/50{border-color:#2563eb80}.border-blue-600\\/55{border-color:#2563eb8c}.border-blue-600\\/60{border-color:#2563eb99}.border-blue-600\\/65{border-color:#2563eba6}.border-blue-600\\/70{border-color:#2563ebb3}.border-blue-600\\/75{border-color:#2563ebbf}.border-blue-600\\/80{border-color:#2563ebcc}.border-blue-600\\/85{border-color:#2563ebd9}.border-blue-600\\/90{border-color:#2563ebe6}.border-blue-600\\/95{border-color:#2563ebf2}.border-blue-700{--tw-border-opacity: 1;border-color:rgb(29 78 216 / var(--tw-border-opacity, 1))}.border-blue-700\\/0{border-color:#1d4ed800}.border-blue-700\\/10{border-color:#1d4ed81a}.border-blue-700\\/100{border-color:#1d4ed8}.border-blue-700\\/15{border-color:#1d4ed826}.border-blue-700\\/20{border-color:#1d4ed833}.border-blue-700\\/25{border-color:#1d4ed840}.border-blue-700\\/30{border-color:#1d4ed84d}.border-blue-700\\/35{border-color:#1d4ed859}.border-blue-700\\/40{border-color:#1d4ed866}.border-blue-700\\/45{border-color:#1d4ed873}.border-blue-700\\/5{border-color:#1d4ed80d}.border-blue-700\\/50{border-color:#1d4ed880}.border-blue-700\\/55{border-color:#1d4ed88c}.border-blue-700\\/60{border-color:#1d4ed899}.border-blue-700\\/65{border-color:#1d4ed8a6}.border-blue-700\\/70{border-color:#1d4ed8b3}.border-blue-700\\/75{border-color:#1d4ed8bf}.border-blue-700\\/80{border-color:#1d4ed8cc}.border-blue-700\\/85{border-color:#1d4ed8d9}.border-blue-700\\/90{border-color:#1d4ed8e6}.border-blue-700\\/95{border-color:#1d4ed8f2}.border-blue-800{--tw-border-opacity: 1;border-color:rgb(30 64 175 / var(--tw-border-opacity, 1))}.border-blue-800\\/0{border-color:#1e40af00}.border-blue-800\\/10{border-color:#1e40af1a}.border-blue-800\\/100{border-color:#1e40af}.border-blue-800\\/15{border-color:#1e40af26}.border-blue-800\\/20{border-color:#1e40af33}.border-blue-800\\/25{border-color:#1e40af40}.border-blue-800\\/30{border-color:#1e40af4d}.border-blue-800\\/35{border-color:#1e40af59}.border-blue-800\\/40{border-color:#1e40af66}.border-blue-800\\/45{border-color:#1e40af73}.border-blue-800\\/5{border-color:#1e40af0d}.border-blue-800\\/50{border-color:#1e40af80}.border-blue-800\\/55{border-color:#1e40af8c}.border-blue-800\\/60{border-color:#1e40af99}.border-blue-800\\/65{border-color:#1e40afa6}.border-blue-800\\/70{border-color:#1e40afb3}.border-blue-800\\/75{border-color:#1e40afbf}.border-blue-800\\/80{border-color:#1e40afcc}.border-blue-800\\/85{border-color:#1e40afd9}.border-blue-800\\/90{border-color:#1e40afe6}.border-blue-800\\/95{border-color:#1e40aff2}.border-blue-900{--tw-border-opacity: 1;border-color:rgb(30 58 138 / var(--tw-border-opacity, 1))}.border-blue-900\\/0{border-color:#1e3a8a00}.border-blue-900\\/10{border-color:#1e3a8a1a}.border-blue-900\\/100{border-color:#1e3a8a}.border-blue-900\\/15{border-color:#1e3a8a26}.border-blue-900\\/20{border-color:#1e3a8a33}.border-blue-900\\/25{border-color:#1e3a8a40}.border-blue-900\\/30{border-color:#1e3a8a4d}.border-blue-900\\/35{border-color:#1e3a8a59}.border-blue-900\\/40{border-color:#1e3a8a66}.border-blue-900\\/45{border-color:#1e3a8a73}.border-blue-900\\/5{border-color:#1e3a8a0d}.border-blue-900\\/50{border-color:#1e3a8a80}.border-blue-900\\/55{border-color:#1e3a8a8c}.border-blue-900\\/60{border-color:#1e3a8a99}.border-blue-900\\/65{border-color:#1e3a8aa6}.border-blue-900\\/70{border-color:#1e3a8ab3}.border-blue-900\\/75{border-color:#1e3a8abf}.border-blue-900\\/80{border-color:#1e3a8acc}.border-blue-900\\/85{border-color:#1e3a8ad9}.border-blue-900\\/90{border-color:#1e3a8ae6}.border-blue-900\\/95{border-color:#1e3a8af2}.border-destructive{border-color:hsl(var(--destructive))}.border-destructive\\/50{border-color:hsl(var(--destructive) / .5)}.border-gray-100{--tw-border-opacity: 1;border-color:rgb(243 244 246 / var(--tw-border-opacity, 1))}.border-gray-100\\/0{border-color:#f3f4f600}.border-gray-100\\/10{border-color:#f3f4f61a}.border-gray-100\\/100{border-color:#f3f4f6}.border-gray-100\\/15{border-color:#f3f4f626}.border-gray-100\\/20{border-color:#f3f4f633}.border-gray-100\\/25{border-color:#f3f4f640}.border-gray-100\\/30{border-color:#f3f4f64d}.border-gray-100\\/35{border-color:#f3f4f659}.border-gray-100\\/40{border-color:#f3f4f666}.border-gray-100\\/45{border-color:#f3f4f673}.border-gray-100\\/5{border-color:#f3f4f60d}.border-gray-100\\/50{border-color:#f3f4f680}.border-gray-100\\/55{border-color:#f3f4f68c}.border-gray-100\\/60{border-color:#f3f4f699}.border-gray-100\\/65{border-color:#f3f4f6a6}.border-gray-100\\/70{border-color:#f3f4f6b3}.border-gray-100\\/75{border-color:#f3f4f6bf}.border-gray-100\\/80{border-color:#f3f4f6cc}.border-gray-100\\/85{border-color:#f3f4f6d9}.border-gray-100\\/90{border-color:#f3f4f6e6}.border-gray-100\\/95{border-color:#f3f4f6f2}.border-gray-200{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1))}.border-gray-200\\/0{border-color:#e5e7eb00}.border-gray-200\\/10{border-color:#e5e7eb1a}.border-gray-200\\/100{border-color:#e5e7eb}.border-gray-200\\/15{border-color:#e5e7eb26}.border-gray-200\\/20{border-color:#e5e7eb33}.border-gray-200\\/25{border-color:#e5e7eb40}.border-gray-200\\/30{border-color:#e5e7eb4d}.border-gray-200\\/35{border-color:#e5e7eb59}.border-gray-200\\/40{border-color:#e5e7eb66}.border-gray-200\\/45{border-color:#e5e7eb73}.border-gray-200\\/5{border-color:#e5e7eb0d}.border-gray-200\\/50{border-color:#e5e7eb80}.border-gray-200\\/55{border-color:#e5e7eb8c}.border-gray-200\\/60{border-color:#e5e7eb99}.border-gray-200\\/65{border-color:#e5e7eba6}.border-gray-200\\/70{border-color:#e5e7ebb3}.border-gray-200\\/75{border-color:#e5e7ebbf}.border-gray-200\\/80{border-color:#e5e7ebcc}.border-gray-200\\/85{border-color:#e5e7ebd9}.border-gray-200\\/90{border-color:#e5e7ebe6}.border-gray-200\\/95{border-color:#e5e7ebf2}.border-gray-300{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1))}.border-gray-300\\/0{border-color:#d1d5db00}.border-gray-300\\/10{border-color:#d1d5db1a}.border-gray-300\\/100{border-color:#d1d5db}.border-gray-300\\/15{border-color:#d1d5db26}.border-gray-300\\/20{border-color:#d1d5db33}.border-gray-300\\/25{border-color:#d1d5db40}.border-gray-300\\/30{border-color:#d1d5db4d}.border-gray-300\\/35{border-color:#d1d5db59}.border-gray-300\\/40{border-color:#d1d5db66}.border-gray-300\\/45{border-color:#d1d5db73}.border-gray-300\\/5{border-color:#d1d5db0d}.border-gray-300\\/50{border-color:#d1d5db80}.border-gray-300\\/55{border-color:#d1d5db8c}.border-gray-300\\/60{border-color:#d1d5db99}.border-gray-300\\/65{border-color:#d1d5dba6}.border-gray-300\\/70{border-color:#d1d5dbb3}.border-gray-300\\/75{border-color:#d1d5dbbf}.border-gray-300\\/80{border-color:#d1d5dbcc}.border-gray-300\\/85{border-color:#d1d5dbd9}.border-gray-300\\/90{border-color:#d1d5dbe6}.border-gray-300\\/95{border-color:#d1d5dbf2}.border-gray-400{--tw-border-opacity: 1;border-color:rgb(156 163 175 / var(--tw-border-opacity, 1))}.border-gray-400\\/0{border-color:#9ca3af00}.border-gray-400\\/10{border-color:#9ca3af1a}.border-gray-400\\/100{border-color:#9ca3af}.border-gray-400\\/15{border-color:#9ca3af26}.border-gray-400\\/20{border-color:#9ca3af33}.border-gray-400\\/25{border-color:#9ca3af40}.border-gray-400\\/30{border-color:#9ca3af4d}.border-gray-400\\/35{border-color:#9ca3af59}.border-gray-400\\/40{border-color:#9ca3af66}.border-gray-400\\/45{border-color:#9ca3af73}.border-gray-400\\/5{border-color:#9ca3af0d}.border-gray-400\\/50{border-color:#9ca3af80}.border-gray-400\\/55{border-color:#9ca3af8c}.border-gray-400\\/60{border-color:#9ca3af99}.border-gray-400\\/65{border-color:#9ca3afa6}.border-gray-400\\/70{border-color:#9ca3afb3}.border-gray-400\\/75{border-color:#9ca3afbf}.border-gray-400\\/80{border-color:#9ca3afcc}.border-gray-400\\/85{border-color:#9ca3afd9}.border-gray-400\\/90{border-color:#9ca3afe6}.border-gray-400\\/95{border-color:#9ca3aff2}.border-gray-50{--tw-border-opacity: 1;border-color:rgb(249 250 251 / var(--tw-border-opacity, 1))}.border-gray-50\\/0{border-color:#f9fafb00}.border-gray-50\\/10{border-color:#f9fafb1a}.border-gray-50\\/100{border-color:#f9fafb}.border-gray-50\\/15{border-color:#f9fafb26}.border-gray-50\\/20{border-color:#f9fafb33}.border-gray-50\\/25{border-color:#f9fafb40}.border-gray-50\\/30{border-color:#f9fafb4d}.border-gray-50\\/35{border-color:#f9fafb59}.border-gray-50\\/40{border-color:#f9fafb66}.border-gray-50\\/45{border-color:#f9fafb73}.border-gray-50\\/5{border-color:#f9fafb0d}.border-gray-50\\/50{border-color:#f9fafb80}.border-gray-50\\/55{border-color:#f9fafb8c}.border-gray-50\\/60{border-color:#f9fafb99}.border-gray-50\\/65{border-color:#f9fafba6}.border-gray-50\\/70{border-color:#f9fafbb3}.border-gray-50\\/75{border-color:#f9fafbbf}.border-gray-50\\/80{border-color:#f9fafbcc}.border-gray-50\\/85{border-color:#f9fafbd9}.border-gray-50\\/90{border-color:#f9fafbe6}.border-gray-50\\/95{border-color:#f9fafbf2}.border-gray-500{--tw-border-opacity: 1;border-color:rgb(107 114 128 / var(--tw-border-opacity, 1))}.border-gray-500\\/0{border-color:#6b728000}.border-gray-500\\/10{border-color:#6b72801a}.border-gray-500\\/100{border-color:#6b7280}.border-gray-500\\/15{border-color:#6b728026}.border-gray-500\\/20{border-color:#6b728033}.border-gray-500\\/25{border-color:#6b728040}.border-gray-500\\/30{border-color:#6b72804d}.border-gray-500\\/35{border-color:#6b728059}.border-gray-500\\/40{border-color:#6b728066}.border-gray-500\\/45{border-color:#6b728073}.border-gray-500\\/5{border-color:#6b72800d}.border-gray-500\\/50{border-color:#6b728080}.border-gray-500\\/55{border-color:#6b72808c}.border-gray-500\\/60{border-color:#6b728099}.border-gray-500\\/65{border-color:#6b7280a6}.border-gray-500\\/70{border-color:#6b7280b3}.border-gray-500\\/75{border-color:#6b7280bf}.border-gray-500\\/80{border-color:#6b7280cc}.border-gray-500\\/85{border-color:#6b7280d9}.border-gray-500\\/90{border-color:#6b7280e6}.border-gray-500\\/95{border-color:#6b7280f2}.border-gray-600{--tw-border-opacity: 1;border-color:rgb(75 85 99 / var(--tw-border-opacity, 1))}.border-gray-600\\/0{border-color:#4b556300}.border-gray-600\\/10{border-color:#4b55631a}.border-gray-600\\/100{border-color:#4b5563}.border-gray-600\\/15{border-color:#4b556326}.border-gray-600\\/20{border-color:#4b556333}.border-gray-600\\/25{border-color:#4b556340}.border-gray-600\\/30{border-color:#4b55634d}.border-gray-600\\/35{border-color:#4b556359}.border-gray-600\\/40{border-color:#4b556366}.border-gray-600\\/45{border-color:#4b556373}.border-gray-600\\/5{border-color:#4b55630d}.border-gray-600\\/50{border-color:#4b556380}.border-gray-600\\/55{border-color:#4b55638c}.border-gray-600\\/60{border-color:#4b556399}.border-gray-600\\/65{border-color:#4b5563a6}.border-gray-600\\/70{border-color:#4b5563b3}.border-gray-600\\/75{border-color:#4b5563bf}.border-gray-600\\/80{border-color:#4b5563cc}.border-gray-600\\/85{border-color:#4b5563d9}.border-gray-600\\/90{border-color:#4b5563e6}.border-gray-600\\/95{border-color:#4b5563f2}.border-gray-700{--tw-border-opacity: 1;border-color:rgb(55 65 81 / var(--tw-border-opacity, 1))}.border-gray-700\\/0{border-color:#37415100}.border-gray-700\\/10{border-color:#3741511a}.border-gray-700\\/100{border-color:#374151}.border-gray-700\\/15{border-color:#37415126}.border-gray-700\\/20{border-color:#37415133}.border-gray-700\\/25{border-color:#37415140}.border-gray-700\\/30{border-color:#3741514d}.border-gray-700\\/35{border-color:#37415159}.border-gray-700\\/40{border-color:#37415166}.border-gray-700\\/45{border-color:#37415173}.border-gray-700\\/5{border-color:#3741510d}.border-gray-700\\/50{border-color:#37415180}.border-gray-700\\/55{border-color:#3741518c}.border-gray-700\\/60{border-color:#37415199}.border-gray-700\\/65{border-color:#374151a6}.border-gray-700\\/70{border-color:#374151b3}.border-gray-700\\/75{border-color:#374151bf}.border-gray-700\\/80{border-color:#374151cc}.border-gray-700\\/85{border-color:#374151d9}.border-gray-700\\/90{border-color:#374151e6}.border-gray-700\\/95{border-color:#374151f2}.border-gray-800{--tw-border-opacity: 1;border-color:rgb(31 41 55 / var(--tw-border-opacity, 1))}.border-gray-800\\/0{border-color:#1f293700}.border-gray-800\\/10{border-color:#1f29371a}.border-gray-800\\/100{border-color:#1f2937}.border-gray-800\\/15{border-color:#1f293726}.border-gray-800\\/20{border-color:#1f293733}.border-gray-800\\/25{border-color:#1f293740}.border-gray-800\\/30{border-color:#1f29374d}.border-gray-800\\/35{border-color:#1f293759}.border-gray-800\\/40{border-color:#1f293766}.border-gray-800\\/45{border-color:#1f293773}.border-gray-800\\/5{border-color:#1f29370d}.border-gray-800\\/50{border-color:#1f293780}.border-gray-800\\/55{border-color:#1f29378c}.border-gray-800\\/60{border-color:#1f293799}.border-gray-800\\/65{border-color:#1f2937a6}.border-gray-800\\/70{border-color:#1f2937b3}.border-gray-800\\/75{border-color:#1f2937bf}.border-gray-800\\/80{border-color:#1f2937cc}.border-gray-800\\/85{border-color:#1f2937d9}.border-gray-800\\/90{border-color:#1f2937e6}.border-gray-800\\/95{border-color:#1f2937f2}.border-gray-900{--tw-border-opacity: 1;border-color:rgb(17 24 39 / var(--tw-border-opacity, 1))}.border-gray-900\\/0{border-color:#11182700}.border-gray-900\\/10{border-color:#1118271a}.border-gray-900\\/100{border-color:#111827}.border-gray-900\\/15{border-color:#11182726}.border-gray-900\\/20{border-color:#11182733}.border-gray-900\\/25{border-color:#11182740}.border-gray-900\\/30{border-color:#1118274d}.border-gray-900\\/35{border-color:#11182759}.border-gray-900\\/40{border-color:#11182766}.border-gray-900\\/45{border-color:#11182773}.border-gray-900\\/5{border-color:#1118270d}.border-gray-900\\/50{border-color:#11182780}.border-gray-900\\/55{border-color:#1118278c}.border-gray-900\\/60{border-color:#11182799}.border-gray-900\\/65{border-color:#111827a6}.border-gray-900\\/70{border-color:#111827b3}.border-gray-900\\/75{border-color:#111827bf}.border-gray-900\\/80{border-color:#111827cc}.border-gray-900\\/85{border-color:#111827d9}.border-gray-900\\/90{border-color:#111827e6}.border-gray-900\\/95{border-color:#111827f2}.border-green-100{--tw-border-opacity: 1;border-color:rgb(220 252 231 / var(--tw-border-opacity, 1))}.border-green-100\\/0{border-color:#dcfce700}.border-green-100\\/10{border-color:#dcfce71a}.border-green-100\\/100{border-color:#dcfce7}.border-green-100\\/15{border-color:#dcfce726}.border-green-100\\/20{border-color:#dcfce733}.border-green-100\\/25{border-color:#dcfce740}.border-green-100\\/30{border-color:#dcfce74d}.border-green-100\\/35{border-color:#dcfce759}.border-green-100\\/40{border-color:#dcfce766}.border-green-100\\/45{border-color:#dcfce773}.border-green-100\\/5{border-color:#dcfce70d}.border-green-100\\/50{border-color:#dcfce780}.border-green-100\\/55{border-color:#dcfce78c}.border-green-100\\/60{border-color:#dcfce799}.border-green-100\\/65{border-color:#dcfce7a6}.border-green-100\\/70{border-color:#dcfce7b3}.border-green-100\\/75{border-color:#dcfce7bf}.border-green-100\\/80{border-color:#dcfce7cc}.border-green-100\\/85{border-color:#dcfce7d9}.border-green-100\\/90{border-color:#dcfce7e6}.border-green-100\\/95{border-color:#dcfce7f2}.border-green-200{--tw-border-opacity: 1;border-color:rgb(187 247 208 / var(--tw-border-opacity, 1))}.border-green-200\\/0{border-color:#bbf7d000}.border-green-200\\/10{border-color:#bbf7d01a}.border-green-200\\/100{border-color:#bbf7d0}.border-green-200\\/15{border-color:#bbf7d026}.border-green-200\\/20{border-color:#bbf7d033}.border-green-200\\/25{border-color:#bbf7d040}.border-green-200\\/30{border-color:#bbf7d04d}.border-green-200\\/35{border-color:#bbf7d059}.border-green-200\\/40{border-color:#bbf7d066}.border-green-200\\/45{border-color:#bbf7d073}.border-green-200\\/5{border-color:#bbf7d00d}.border-green-200\\/50{border-color:#bbf7d080}.border-green-200\\/55{border-color:#bbf7d08c}.border-green-200\\/60{border-color:#bbf7d099}.border-green-200\\/65{border-color:#bbf7d0a6}.border-green-200\\/70{border-color:#bbf7d0b3}.border-green-200\\/75{border-color:#bbf7d0bf}.border-green-200\\/80{border-color:#bbf7d0cc}.border-green-200\\/85{border-color:#bbf7d0d9}.border-green-200\\/90{border-color:#bbf7d0e6}.border-green-200\\/95{border-color:#bbf7d0f2}.border-green-300{--tw-border-opacity: 1;border-color:rgb(134 239 172 / var(--tw-border-opacity, 1))}.border-green-300\\/0{border-color:#86efac00}.border-green-300\\/10{border-color:#86efac1a}.border-green-300\\/100{border-color:#86efac}.border-green-300\\/15{border-color:#86efac26}.border-green-300\\/20{border-color:#86efac33}.border-green-300\\/25{border-color:#86efac40}.border-green-300\\/30{border-color:#86efac4d}.border-green-300\\/35{border-color:#86efac59}.border-green-300\\/40{border-color:#86efac66}.border-green-300\\/45{border-color:#86efac73}.border-green-300\\/5{border-color:#86efac0d}.border-green-300\\/50{border-color:#86efac80}.border-green-300\\/55{border-color:#86efac8c}.border-green-300\\/60{border-color:#86efac99}.border-green-300\\/65{border-color:#86efaca6}.border-green-300\\/70{border-color:#86efacb3}.border-green-300\\/75{border-color:#86efacbf}.border-green-300\\/80{border-color:#86efaccc}.border-green-300\\/85{border-color:#86efacd9}.border-green-300\\/90{border-color:#86eface6}.border-green-300\\/95{border-color:#86efacf2}.border-green-400{--tw-border-opacity: 1;border-color:rgb(74 222 128 / var(--tw-border-opacity, 1))}.border-green-400\\/0{border-color:#4ade8000}.border-green-400\\/10{border-color:#4ade801a}.border-green-400\\/100{border-color:#4ade80}.border-green-400\\/15{border-color:#4ade8026}.border-green-400\\/20{border-color:#4ade8033}.border-green-400\\/25{border-color:#4ade8040}.border-green-400\\/30{border-color:#4ade804d}.border-green-400\\/35{border-color:#4ade8059}.border-green-400\\/40{border-color:#4ade8066}.border-green-400\\/45{border-color:#4ade8073}.border-green-400\\/5{border-color:#4ade800d}.border-green-400\\/50{border-color:#4ade8080}.border-green-400\\/55{border-color:#4ade808c}.border-green-400\\/60{border-color:#4ade8099}.border-green-400\\/65{border-color:#4ade80a6}.border-green-400\\/70{border-color:#4ade80b3}.border-green-400\\/75{border-color:#4ade80bf}.border-green-400\\/80{border-color:#4ade80cc}.border-green-400\\/85{border-color:#4ade80d9}.border-green-400\\/90{border-color:#4ade80e6}.border-green-400\\/95{border-color:#4ade80f2}.border-green-50{--tw-border-opacity: 1;border-color:rgb(240 253 244 / var(--tw-border-opacity, 1))}.border-green-50\\/0{border-color:#f0fdf400}.border-green-50\\/10{border-color:#f0fdf41a}.border-green-50\\/100{border-color:#f0fdf4}.border-green-50\\/15{border-color:#f0fdf426}.border-green-50\\/20{border-color:#f0fdf433}.border-green-50\\/25{border-color:#f0fdf440}.border-green-50\\/30{border-color:#f0fdf44d}.border-green-50\\/35{border-color:#f0fdf459}.border-green-50\\/40{border-color:#f0fdf466}.border-green-50\\/45{border-color:#f0fdf473}.border-green-50\\/5{border-color:#f0fdf40d}.border-green-50\\/50{border-color:#f0fdf480}.border-green-50\\/55{border-color:#f0fdf48c}.border-green-50\\/60{border-color:#f0fdf499}.border-green-50\\/65{border-color:#f0fdf4a6}.border-green-50\\/70{border-color:#f0fdf4b3}.border-green-50\\/75{border-color:#f0fdf4bf}.border-green-50\\/80{border-color:#f0fdf4cc}.border-green-50\\/85{border-color:#f0fdf4d9}.border-green-50\\/90{border-color:#f0fdf4e6}.border-green-50\\/95{border-color:#f0fdf4f2}.border-green-500{--tw-border-opacity: 1;border-color:rgb(34 197 94 / var(--tw-border-opacity, 1))}.border-green-500\\/0{border-color:#22c55e00}.border-green-500\\/10{border-color:#22c55e1a}.border-green-500\\/100{border-color:#22c55e}.border-green-500\\/15{border-color:#22c55e26}.border-green-500\\/20{border-color:#22c55e33}.border-green-500\\/25{border-color:#22c55e40}.border-green-500\\/30{border-color:#22c55e4d}.border-green-500\\/35{border-color:#22c55e59}.border-green-500\\/40{border-color:#22c55e66}.border-green-500\\/45{border-color:#22c55e73}.border-green-500\\/5{border-color:#22c55e0d}.border-green-500\\/50{border-color:#22c55e80}.border-green-500\\/55{border-color:#22c55e8c}.border-green-500\\/60{border-color:#22c55e99}.border-green-500\\/65{border-color:#22c55ea6}.border-green-500\\/70{border-color:#22c55eb3}.border-green-500\\/75{border-color:#22c55ebf}.border-green-500\\/80{border-color:#22c55ecc}.border-green-500\\/85{border-color:#22c55ed9}.border-green-500\\/90{border-color:#22c55ee6}.border-green-500\\/95{border-color:#22c55ef2}.border-green-600{--tw-border-opacity: 1;border-color:rgb(22 163 74 / var(--tw-border-opacity, 1))}.border-green-600\\/0{border-color:#16a34a00}.border-green-600\\/10{border-color:#16a34a1a}.border-green-600\\/100{border-color:#16a34a}.border-green-600\\/15{border-color:#16a34a26}.border-green-600\\/20{border-color:#16a34a33}.border-green-600\\/25{border-color:#16a34a40}.border-green-600\\/30{border-color:#16a34a4d}.border-green-600\\/35{border-color:#16a34a59}.border-green-600\\/40{border-color:#16a34a66}.border-green-600\\/45{border-color:#16a34a73}.border-green-600\\/5{border-color:#16a34a0d}.border-green-600\\/50{border-color:#16a34a80}.border-green-600\\/55{border-color:#16a34a8c}.border-green-600\\/60{border-color:#16a34a99}.border-green-600\\/65{border-color:#16a34aa6}.border-green-600\\/70{border-color:#16a34ab3}.border-green-600\\/75{border-color:#16a34abf}.border-green-600\\/80{border-color:#16a34acc}.border-green-600\\/85{border-color:#16a34ad9}.border-green-600\\/90{border-color:#16a34ae6}.border-green-600\\/95{border-color:#16a34af2}.border-green-700{--tw-border-opacity: 1;border-color:rgb(21 128 61 / var(--tw-border-opacity, 1))}.border-green-700\\/0{border-color:#15803d00}.border-green-700\\/10{border-color:#15803d1a}.border-green-700\\/100{border-color:#15803d}.border-green-700\\/15{border-color:#15803d26}.border-green-700\\/20{border-color:#15803d33}.border-green-700\\/25{border-color:#15803d40}.border-green-700\\/30{border-color:#15803d4d}.border-green-700\\/35{border-color:#15803d59}.border-green-700\\/40{border-color:#15803d66}.border-green-700\\/45{border-color:#15803d73}.border-green-700\\/5{border-color:#15803d0d}.border-green-700\\/50{border-color:#15803d80}.border-green-700\\/55{border-color:#15803d8c}.border-green-700\\/60{border-color:#15803d99}.border-green-700\\/65{border-color:#15803da6}.border-green-700\\/70{border-color:#15803db3}.border-green-700\\/75{border-color:#15803dbf}.border-green-700\\/80{border-color:#15803dcc}.border-green-700\\/85{border-color:#15803dd9}.border-green-700\\/90{border-color:#15803de6}.border-green-700\\/95{border-color:#15803df2}.border-green-800{--tw-border-opacity: 1;border-color:rgb(22 101 52 / var(--tw-border-opacity, 1))}.border-green-800\\/0{border-color:#16653400}.border-green-800\\/10{border-color:#1665341a}.border-green-800\\/100{border-color:#166534}.border-green-800\\/15{border-color:#16653426}.border-green-800\\/20{border-color:#16653433}.border-green-800\\/25{border-color:#16653440}.border-green-800\\/30{border-color:#1665344d}.border-green-800\\/35{border-color:#16653459}.border-green-800\\/40{border-color:#16653466}.border-green-800\\/45{border-color:#16653473}.border-green-800\\/5{border-color:#1665340d}.border-green-800\\/50{border-color:#16653480}.border-green-800\\/55{border-color:#1665348c}.border-green-800\\/60{border-color:#16653499}.border-green-800\\/65{border-color:#166534a6}.border-green-800\\/70{border-color:#166534b3}.border-green-800\\/75{border-color:#166534bf}.border-green-800\\/80{border-color:#166534cc}.border-green-800\\/85{border-color:#166534d9}.border-green-800\\/90{border-color:#166534e6}.border-green-800\\/95{border-color:#166534f2}.border-green-900{--tw-border-opacity: 1;border-color:rgb(20 83 45 / var(--tw-border-opacity, 1))}.border-green-900\\/0{border-color:#14532d00}.border-green-900\\/10{border-color:#14532d1a}.border-green-900\\/100{border-color:#14532d}.border-green-900\\/15{border-color:#14532d26}.border-green-900\\/20{border-color:#14532d33}.border-green-900\\/25{border-color:#14532d40}.border-green-900\\/30{border-color:#14532d4d}.border-green-900\\/35{border-color:#14532d59}.border-green-900\\/40{border-color:#14532d66}.border-green-900\\/45{border-color:#14532d73}.border-green-900\\/5{border-color:#14532d0d}.border-green-900\\/50{border-color:#14532d80}.border-green-900\\/55{border-color:#14532d8c}.border-green-900\\/60{border-color:#14532d99}.border-green-900\\/65{border-color:#14532da6}.border-green-900\\/70{border-color:#14532db3}.border-green-900\\/75{border-color:#14532dbf}.border-green-900\\/80{border-color:#14532dcc}.border-green-900\\/85{border-color:#14532dd9}.border-green-900\\/90{border-color:#14532de6}.border-green-900\\/95{border-color:#14532df2}.border-input{border-color:hsl(var(--input))}.border-muted{border-color:hsl(var(--muted))}.border-orange-500{--tw-border-opacity: 1;border-color:rgb(249 115 22 / var(--tw-border-opacity, 1))}.border-primary{border-color:hsl(var(--primary))}.border-red-100{--tw-border-opacity: 1;border-color:rgb(254 226 226 / var(--tw-border-opacity, 1))}.border-red-100\\/0{border-color:#fee2e200}.border-red-100\\/10{border-color:#fee2e21a}.border-red-100\\/100{border-color:#fee2e2}.border-red-100\\/15{border-color:#fee2e226}.border-red-100\\/20{border-color:#fee2e233}.border-red-100\\/25{border-color:#fee2e240}.border-red-100\\/30{border-color:#fee2e24d}.border-red-100\\/35{border-color:#fee2e259}.border-red-100\\/40{border-color:#fee2e266}.border-red-100\\/45{border-color:#fee2e273}.border-red-100\\/5{border-color:#fee2e20d}.border-red-100\\/50{border-color:#fee2e280}.border-red-100\\/55{border-color:#fee2e28c}.border-red-100\\/60{border-color:#fee2e299}.border-red-100\\/65{border-color:#fee2e2a6}.border-red-100\\/70{border-color:#fee2e2b3}.border-red-100\\/75{border-color:#fee2e2bf}.border-red-100\\/80{border-color:#fee2e2cc}.border-red-100\\/85{border-color:#fee2e2d9}.border-red-100\\/90{border-color:#fee2e2e6}.border-red-100\\/95{border-color:#fee2e2f2}.border-red-200{--tw-border-opacity: 1;border-color:rgb(254 202 202 / var(--tw-border-opacity, 1))}.border-red-200\\/0{border-color:#fecaca00}.border-red-200\\/10{border-color:#fecaca1a}.border-red-200\\/100{border-color:#fecaca}.border-red-200\\/15{border-color:#fecaca26}.border-red-200\\/20{border-color:#fecaca33}.border-red-200\\/25{border-color:#fecaca40}.border-red-200\\/30{border-color:#fecaca4d}.border-red-200\\/35{border-color:#fecaca59}.border-red-200\\/40{border-color:#fecaca66}.border-red-200\\/45{border-color:#fecaca73}.border-red-200\\/5{border-color:#fecaca0d}.border-red-200\\/50{border-color:#fecaca80}.border-red-200\\/55{border-color:#fecaca8c}.border-red-200\\/60{border-color:#fecaca99}.border-red-200\\/65{border-color:#fecacaa6}.border-red-200\\/70{border-color:#fecacab3}.border-red-200\\/75{border-color:#fecacabf}.border-red-200\\/80{border-color:#fecacacc}.border-red-200\\/85{border-color:#fecacad9}.border-red-200\\/90{border-color:#fecacae6}.border-red-200\\/95{border-color:#fecacaf2}.border-red-300{--tw-border-opacity: 1;border-color:rgb(252 165 165 / var(--tw-border-opacity, 1))}.border-red-300\\/0{border-color:#fca5a500}.border-red-300\\/10{border-color:#fca5a51a}.border-red-300\\/100{border-color:#fca5a5}.border-red-300\\/15{border-color:#fca5a526}.border-red-300\\/20{border-color:#fca5a533}.border-red-300\\/25{border-color:#fca5a540}.border-red-300\\/30{border-color:#fca5a54d}.border-red-300\\/35{border-color:#fca5a559}.border-red-300\\/40{border-color:#fca5a566}.border-red-300\\/45{border-color:#fca5a573}.border-red-300\\/5{border-color:#fca5a50d}.border-red-300\\/50{border-color:#fca5a580}.border-red-300\\/55{border-color:#fca5a58c}.border-red-300\\/60{border-color:#fca5a599}.border-red-300\\/65{border-color:#fca5a5a6}.border-red-300\\/70{border-color:#fca5a5b3}.border-red-300\\/75{border-color:#fca5a5bf}.border-red-300\\/80{border-color:#fca5a5cc}.border-red-300\\/85{border-color:#fca5a5d9}.border-red-300\\/90{border-color:#fca5a5e6}.border-red-300\\/95{border-color:#fca5a5f2}.border-red-400{--tw-border-opacity: 1;border-color:rgb(248 113 113 / var(--tw-border-opacity, 1))}.border-red-400\\/0{border-color:#f8717100}.border-red-400\\/10{border-color:#f871711a}.border-red-400\\/100{border-color:#f87171}.border-red-400\\/15{border-color:#f8717126}.border-red-400\\/20{border-color:#f8717133}.border-red-400\\/25{border-color:#f8717140}.border-red-400\\/30{border-color:#f871714d}.border-red-400\\/35{border-color:#f8717159}.border-red-400\\/40{border-color:#f8717166}.border-red-400\\/45{border-color:#f8717173}.border-red-400\\/5{border-color:#f871710d}.border-red-400\\/50{border-color:#f8717180}.border-red-400\\/55{border-color:#f871718c}.border-red-400\\/60{border-color:#f8717199}.border-red-400\\/65{border-color:#f87171a6}.border-red-400\\/70{border-color:#f87171b3}.border-red-400\\/75{border-color:#f87171bf}.border-red-400\\/80{border-color:#f87171cc}.border-red-400\\/85{border-color:#f87171d9}.border-red-400\\/90{border-color:#f87171e6}.border-red-400\\/95{border-color:#f87171f2}.border-red-50{--tw-border-opacity: 1;border-color:rgb(254 242 242 / var(--tw-border-opacity, 1))}.border-red-50\\/0{border-color:#fef2f200}.border-red-50\\/10{border-color:#fef2f21a}.border-red-50\\/100{border-color:#fef2f2}.border-red-50\\/15{border-color:#fef2f226}.border-red-50\\/20{border-color:#fef2f233}.border-red-50\\/25{border-color:#fef2f240}.border-red-50\\/30{border-color:#fef2f24d}.border-red-50\\/35{border-color:#fef2f259}.border-red-50\\/40{border-color:#fef2f266}.border-red-50\\/45{border-color:#fef2f273}.border-red-50\\/5{border-color:#fef2f20d}.border-red-50\\/50{border-color:#fef2f280}.border-red-50\\/55{border-color:#fef2f28c}.border-red-50\\/60{border-color:#fef2f299}.border-red-50\\/65{border-color:#fef2f2a6}.border-red-50\\/70{border-color:#fef2f2b3}.border-red-50\\/75{border-color:#fef2f2bf}.border-red-50\\/80{border-color:#fef2f2cc}.border-red-50\\/85{border-color:#fef2f2d9}.border-red-50\\/90{border-color:#fef2f2e6}.border-red-50\\/95{border-color:#fef2f2f2}.border-red-500{--tw-border-opacity: 1;border-color:rgb(239 68 68 / var(--tw-border-opacity, 1))}.border-red-500\\/0{border-color:#ef444400}.border-red-500\\/10{border-color:#ef44441a}.border-red-500\\/100{border-color:#ef4444}.border-red-500\\/15{border-color:#ef444426}.border-red-500\\/20{border-color:#ef444433}.border-red-500\\/25{border-color:#ef444440}.border-red-500\\/30{border-color:#ef44444d}.border-red-500\\/35{border-color:#ef444459}.border-red-500\\/40{border-color:#ef444466}.border-red-500\\/45{border-color:#ef444473}.border-red-500\\/5{border-color:#ef44440d}.border-red-500\\/50{border-color:#ef444480}.border-red-500\\/55{border-color:#ef44448c}.border-red-500\\/60{border-color:#ef444499}.border-red-500\\/65{border-color:#ef4444a6}.border-red-500\\/70{border-color:#ef4444b3}.border-red-500\\/75{border-color:#ef4444bf}.border-red-500\\/80{border-color:#ef4444cc}.border-red-500\\/85{border-color:#ef4444d9}.border-red-500\\/90{border-color:#ef4444e6}.border-red-500\\/95{border-color:#ef4444f2}.border-red-600{--tw-border-opacity: 1;border-color:rgb(220 38 38 / var(--tw-border-opacity, 1))}.border-red-600\\/0{border-color:#dc262600}.border-red-600\\/10{border-color:#dc26261a}.border-red-600\\/100{border-color:#dc2626}.border-red-600\\/15{border-color:#dc262626}.border-red-600\\/20{border-color:#dc262633}.border-red-600\\/25{border-color:#dc262640}.border-red-600\\/30{border-color:#dc26264d}.border-red-600\\/35{border-color:#dc262659}.border-red-600\\/40{border-color:#dc262666}.border-red-600\\/45{border-color:#dc262673}.border-red-600\\/5{border-color:#dc26260d}.border-red-600\\/50{border-color:#dc262680}.border-red-600\\/55{border-color:#dc26268c}.border-red-600\\/60{border-color:#dc262699}.border-red-600\\/65{border-color:#dc2626a6}.border-red-600\\/70{border-color:#dc2626b3}.border-red-600\\/75{border-color:#dc2626bf}.border-red-600\\/80{border-color:#dc2626cc}.border-red-600\\/85{border-color:#dc2626d9}.border-red-600\\/90{border-color:#dc2626e6}.border-red-600\\/95{border-color:#dc2626f2}.border-red-700{--tw-border-opacity: 1;border-color:rgb(185 28 28 / var(--tw-border-opacity, 1))}.border-red-700\\/0{border-color:#b91c1c00}.border-red-700\\/10{border-color:#b91c1c1a}.border-red-700\\/100{border-color:#b91c1c}.border-red-700\\/15{border-color:#b91c1c26}.border-red-700\\/20{border-color:#b91c1c33}.border-red-700\\/25{border-color:#b91c1c40}.border-red-700\\/30{border-color:#b91c1c4d}.border-red-700\\/35{border-color:#b91c1c59}.border-red-700\\/40{border-color:#b91c1c66}.border-red-700\\/45{border-color:#b91c1c73}.border-red-700\\/5{border-color:#b91c1c0d}.border-red-700\\/50{border-color:#b91c1c80}.border-red-700\\/55{border-color:#b91c1c8c}.border-red-700\\/60{border-color:#b91c1c99}.border-red-700\\/65{border-color:#b91c1ca6}.border-red-700\\/70{border-color:#b91c1cb3}.border-red-700\\/75{border-color:#b91c1cbf}.border-red-700\\/80{border-color:#b91c1ccc}.border-red-700\\/85{border-color:#b91c1cd9}.border-red-700\\/90{border-color:#b91c1ce6}.border-red-700\\/95{border-color:#b91c1cf2}.border-red-800{--tw-border-opacity: 1;border-color:rgb(153 27 27 / var(--tw-border-opacity, 1))}.border-red-800\\/0{border-color:#991b1b00}.border-red-800\\/10{border-color:#991b1b1a}.border-red-800\\/100{border-color:#991b1b}.border-red-800\\/15{border-color:#991b1b26}.border-red-800\\/20{border-color:#991b1b33}.border-red-800\\/25{border-color:#991b1b40}.border-red-800\\/30{border-color:#991b1b4d}.border-red-800\\/35{border-color:#991b1b59}.border-red-800\\/40{border-color:#991b1b66}.border-red-800\\/45{border-color:#991b1b73}.border-red-800\\/5{border-color:#991b1b0d}.border-red-800\\/50{border-color:#991b1b80}.border-red-800\\/55{border-color:#991b1b8c}.border-red-800\\/60{border-color:#991b1b99}.border-red-800\\/65{border-color:#991b1ba6}.border-red-800\\/70{border-color:#991b1bb3}.border-red-800\\/75{border-color:#991b1bbf}.border-red-800\\/80{border-color:#991b1bcc}.border-red-800\\/85{border-color:#991b1bd9}.border-red-800\\/90{border-color:#991b1be6}.border-red-800\\/95{border-color:#991b1bf2}.border-red-900{--tw-border-opacity: 1;border-color:rgb(127 29 29 / var(--tw-border-opacity, 1))}.border-red-900\\/0{border-color:#7f1d1d00}.border-red-900\\/10{border-color:#7f1d1d1a}.border-red-900\\/100{border-color:#7f1d1d}.border-red-900\\/15{border-color:#7f1d1d26}.border-red-900\\/20{border-color:#7f1d1d33}.border-red-900\\/25{border-color:#7f1d1d40}.border-red-900\\/30{border-color:#7f1d1d4d}.border-red-900\\/35{border-color:#7f1d1d59}.border-red-900\\/40{border-color:#7f1d1d66}.border-red-900\\/45{border-color:#7f1d1d73}.border-red-900\\/5{border-color:#7f1d1d0d}.border-red-900\\/50{border-color:#7f1d1d80}.border-red-900\\/55{border-color:#7f1d1d8c}.border-red-900\\/60{border-color:#7f1d1d99}.border-red-900\\/65{border-color:#7f1d1da6}.border-red-900\\/70{border-color:#7f1d1db3}.border-red-900\\/75{border-color:#7f1d1dbf}.border-red-900\\/80{border-color:#7f1d1dcc}.border-red-900\\/85{border-color:#7f1d1dd9}.border-red-900\\/90{border-color:#7f1d1de6}.border-red-900\\/95{border-color:#7f1d1df2}.border-transparent{border-color:transparent}.bg-background{background-color:hsl(var(--background))}.bg-black{--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity, 1))}.bg-black\\/80{background-color:#000c}.bg-blue-100{--tw-bg-opacity: 1;background-color:rgb(219 234 254 / var(--tw-bg-opacity, 1))}.bg-blue-100\\/0{background-color:#dbeafe00}.bg-blue-100\\/10{background-color:#dbeafe1a}.bg-blue-100\\/100{background-color:#dbeafe}.bg-blue-100\\/15{background-color:#dbeafe26}.bg-blue-100\\/20{background-color:#dbeafe33}.bg-blue-100\\/25{background-color:#dbeafe40}.bg-blue-100\\/30{background-color:#dbeafe4d}.bg-blue-100\\/35{background-color:#dbeafe59}.bg-blue-100\\/40{background-color:#dbeafe66}.bg-blue-100\\/45{background-color:#dbeafe73}.bg-blue-100\\/5{background-color:#dbeafe0d}.bg-blue-100\\/50{background-color:#dbeafe80}.bg-blue-100\\/55{background-color:#dbeafe8c}.bg-blue-100\\/60{background-color:#dbeafe99}.bg-blue-100\\/65{background-color:#dbeafea6}.bg-blue-100\\/70{background-color:#dbeafeb3}.bg-blue-100\\/75{background-color:#dbeafebf}.bg-blue-100\\/80{background-color:#dbeafecc}.bg-blue-100\\/85{background-color:#dbeafed9}.bg-blue-100\\/90{background-color:#dbeafee6}.bg-blue-100\\/95{background-color:#dbeafef2}.bg-blue-200{--tw-bg-opacity: 1;background-color:rgb(191 219 254 / var(--tw-bg-opacity, 1))}.bg-blue-200\\/0{background-color:#bfdbfe00}.bg-blue-200\\/10{background-color:#bfdbfe1a}.bg-blue-200\\/100{background-color:#bfdbfe}.bg-blue-200\\/15{background-color:#bfdbfe26}.bg-blue-200\\/20{background-color:#bfdbfe33}.bg-blue-200\\/25{background-color:#bfdbfe40}.bg-blue-200\\/30{background-color:#bfdbfe4d}.bg-blue-200\\/35{background-color:#bfdbfe59}.bg-blue-200\\/40{background-color:#bfdbfe66}.bg-blue-200\\/45{background-color:#bfdbfe73}.bg-blue-200\\/5{background-color:#bfdbfe0d}.bg-blue-200\\/50{background-color:#bfdbfe80}.bg-blue-200\\/55{background-color:#bfdbfe8c}.bg-blue-200\\/60{background-color:#bfdbfe99}.bg-blue-200\\/65{background-color:#bfdbfea6}.bg-blue-200\\/70{background-color:#bfdbfeb3}.bg-blue-200\\/75{background-color:#bfdbfebf}.bg-blue-200\\/80{background-color:#bfdbfecc}.bg-blue-200\\/85{background-color:#bfdbfed9}.bg-blue-200\\/90{background-color:#bfdbfee6}.bg-blue-200\\/95{background-color:#bfdbfef2}.bg-blue-300{--tw-bg-opacity: 1;background-color:rgb(147 197 253 / var(--tw-bg-opacity, 1))}.bg-blue-300\\/0{background-color:#93c5fd00}.bg-blue-300\\/10{background-color:#93c5fd1a}.bg-blue-300\\/100{background-color:#93c5fd}.bg-blue-300\\/15{background-color:#93c5fd26}.bg-blue-300\\/20{background-color:#93c5fd33}.bg-blue-300\\/25{background-color:#93c5fd40}.bg-blue-300\\/30{background-color:#93c5fd4d}.bg-blue-300\\/35{background-color:#93c5fd59}.bg-blue-300\\/40{background-color:#93c5fd66}.bg-blue-300\\/45{background-color:#93c5fd73}.bg-blue-300\\/5{background-color:#93c5fd0d}.bg-blue-300\\/50{background-color:#93c5fd80}.bg-blue-300\\/55{background-color:#93c5fd8c}.bg-blue-300\\/60{background-color:#93c5fd99}.bg-blue-300\\/65{background-color:#93c5fda6}.bg-blue-300\\/70{background-color:#93c5fdb3}.bg-blue-300\\/75{background-color:#93c5fdbf}.bg-blue-300\\/80{background-color:#93c5fdcc}.bg-blue-300\\/85{background-color:#93c5fdd9}.bg-blue-300\\/90{background-color:#93c5fde6}.bg-blue-300\\/95{background-color:#93c5fdf2}.bg-blue-400{--tw-bg-opacity: 1;background-color:rgb(96 165 250 / var(--tw-bg-opacity, 1))}.bg-blue-400\\/0{background-color:#60a5fa00}.bg-blue-400\\/10{background-color:#60a5fa1a}.bg-blue-400\\/100{background-color:#60a5fa}.bg-blue-400\\/15{background-color:#60a5fa26}.bg-blue-400\\/20{background-color:#60a5fa33}.bg-blue-400\\/25{background-color:#60a5fa40}.bg-blue-400\\/30{background-color:#60a5fa4d}.bg-blue-400\\/35{background-color:#60a5fa59}.bg-blue-400\\/40{background-color:#60a5fa66}.bg-blue-400\\/45{background-color:#60a5fa73}.bg-blue-400\\/5{background-color:#60a5fa0d}.bg-blue-400\\/50{background-color:#60a5fa80}.bg-blue-400\\/55{background-color:#60a5fa8c}.bg-blue-400\\/60{background-color:#60a5fa99}.bg-blue-400\\/65{background-color:#60a5faa6}.bg-blue-400\\/70{background-color:#60a5fab3}.bg-blue-400\\/75{background-color:#60a5fabf}.bg-blue-400\\/80{background-color:#60a5facc}.bg-blue-400\\/85{background-color:#60a5fad9}.bg-blue-400\\/90{background-color:#60a5fae6}.bg-blue-400\\/95{background-color:#60a5faf2}.bg-blue-50{--tw-bg-opacity: 1;background-color:rgb(239 246 255 / var(--tw-bg-opacity, 1))}.bg-blue-50\\/0{background-color:#eff6ff00}.bg-blue-50\\/10{background-color:#eff6ff1a}.bg-blue-50\\/100{background-color:#eff6ff}.bg-blue-50\\/15{background-color:#eff6ff26}.bg-blue-50\\/20{background-color:#eff6ff33}.bg-blue-50\\/25{background-color:#eff6ff40}.bg-blue-50\\/30{background-color:#eff6ff4d}.bg-blue-50\\/35{background-color:#eff6ff59}.bg-blue-50\\/40{background-color:#eff6ff66}.bg-blue-50\\/45{background-color:#eff6ff73}.bg-blue-50\\/5{background-color:#eff6ff0d}.bg-blue-50\\/50{background-color:#eff6ff80}.bg-blue-50\\/55{background-color:#eff6ff8c}.bg-blue-50\\/60{background-color:#eff6ff99}.bg-blue-50\\/65{background-color:#eff6ffa6}.bg-blue-50\\/70{background-color:#eff6ffb3}.bg-blue-50\\/75{background-color:#eff6ffbf}.bg-blue-50\\/80{background-color:#eff6ffcc}.bg-blue-50\\/85{background-color:#eff6ffd9}.bg-blue-50\\/90{background-color:#eff6ffe6}.bg-blue-50\\/95{background-color:#eff6fff2}.bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity, 1))}.bg-blue-500\\/0{background-color:#3b82f600}.bg-blue-500\\/10{background-color:#3b82f61a}.bg-blue-500\\/100{background-color:#3b82f6}.bg-blue-500\\/15{background-color:#3b82f626}.bg-blue-500\\/20{background-color:#3b82f633}.bg-blue-500\\/25{background-color:#3b82f640}.bg-blue-500\\/30{background-color:#3b82f64d}.bg-blue-500\\/35{background-color:#3b82f659}.bg-blue-500\\/40{background-color:#3b82f666}.bg-blue-500\\/45{background-color:#3b82f673}.bg-blue-500\\/5{background-color:#3b82f60d}.bg-blue-500\\/50{background-color:#3b82f680}.bg-blue-500\\/55{background-color:#3b82f68c}.bg-blue-500\\/60{background-color:#3b82f699}.bg-blue-500\\/65{background-color:#3b82f6a6}.bg-blue-500\\/70{background-color:#3b82f6b3}.bg-blue-500\\/75{background-color:#3b82f6bf}.bg-blue-500\\/80{background-color:#3b82f6cc}.bg-blue-500\\/85{background-color:#3b82f6d9}.bg-blue-500\\/90{background-color:#3b82f6e6}.bg-blue-500\\/95{background-color:#3b82f6f2}.bg-blue-600{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity, 1))}.bg-blue-600\\/0{background-color:#2563eb00}.bg-blue-600\\/10{background-color:#2563eb1a}.bg-blue-600\\/100{background-color:#2563eb}.bg-blue-600\\/15{background-color:#2563eb26}.bg-blue-600\\/20{background-color:#2563eb33}.bg-blue-600\\/25{background-color:#2563eb40}.bg-blue-600\\/30{background-color:#2563eb4d}.bg-blue-600\\/35{background-color:#2563eb59}.bg-blue-600\\/40{background-color:#2563eb66}.bg-blue-600\\/45{background-color:#2563eb73}.bg-blue-600\\/5{background-color:#2563eb0d}.bg-blue-600\\/50{background-color:#2563eb80}.bg-blue-600\\/55{background-color:#2563eb8c}.bg-blue-600\\/60{background-color:#2563eb99}.bg-blue-600\\/65{background-color:#2563eba6}.bg-blue-600\\/70{background-color:#2563ebb3}.bg-blue-600\\/75{background-color:#2563ebbf}.bg-blue-600\\/80{background-color:#2563ebcc}.bg-blue-600\\/85{background-color:#2563ebd9}.bg-blue-600\\/90{background-color:#2563ebe6}.bg-blue-600\\/95{background-color:#2563ebf2}.bg-blue-700{--tw-bg-opacity: 1;background-color:rgb(29 78 216 / var(--tw-bg-opacity, 1))}.bg-blue-700\\/0{background-color:#1d4ed800}.bg-blue-700\\/10{background-color:#1d4ed81a}.bg-blue-700\\/100{background-color:#1d4ed8}.bg-blue-700\\/15{background-color:#1d4ed826}.bg-blue-700\\/20{background-color:#1d4ed833}.bg-blue-700\\/25{background-color:#1d4ed840}.bg-blue-700\\/30{background-color:#1d4ed84d}.bg-blue-700\\/35{background-color:#1d4ed859}.bg-blue-700\\/40{background-color:#1d4ed866}.bg-blue-700\\/45{background-color:#1d4ed873}.bg-blue-700\\/5{background-color:#1d4ed80d}.bg-blue-700\\/50{background-color:#1d4ed880}.bg-blue-700\\/55{background-color:#1d4ed88c}.bg-blue-700\\/60{background-color:#1d4ed899}.bg-blue-700\\/65{background-color:#1d4ed8a6}.bg-blue-700\\/70{background-color:#1d4ed8b3}.bg-blue-700\\/75{background-color:#1d4ed8bf}.bg-blue-700\\/80{background-color:#1d4ed8cc}.bg-blue-700\\/85{background-color:#1d4ed8d9}.bg-blue-700\\/90{background-color:#1d4ed8e6}.bg-blue-700\\/95{background-color:#1d4ed8f2}.bg-blue-800{--tw-bg-opacity: 1;background-color:rgb(30 64 175 / var(--tw-bg-opacity, 1))}.bg-blue-800\\/0{background-color:#1e40af00}.bg-blue-800\\/10{background-color:#1e40af1a}.bg-blue-800\\/100{background-color:#1e40af}.bg-blue-800\\/15{background-color:#1e40af26}.bg-blue-800\\/20{background-color:#1e40af33}.bg-blue-800\\/25{background-color:#1e40af40}.bg-blue-800\\/30{background-color:#1e40af4d}.bg-blue-800\\/35{background-color:#1e40af59}.bg-blue-800\\/40{background-color:#1e40af66}.bg-blue-800\\/45{background-color:#1e40af73}.bg-blue-800\\/5{background-color:#1e40af0d}.bg-blue-800\\/50{background-color:#1e40af80}.bg-blue-800\\/55{background-color:#1e40af8c}.bg-blue-800\\/60{background-color:#1e40af99}.bg-blue-800\\/65{background-color:#1e40afa6}.bg-blue-800\\/70{background-color:#1e40afb3}.bg-blue-800\\/75{background-color:#1e40afbf}.bg-blue-800\\/80{background-color:#1e40afcc}.bg-blue-800\\/85{background-color:#1e40afd9}.bg-blue-800\\/90{background-color:#1e40afe6}.bg-blue-800\\/95{background-color:#1e40aff2}.bg-blue-900{--tw-bg-opacity: 1;background-color:rgb(30 58 138 / var(--tw-bg-opacity, 1))}.bg-blue-900\\/0{background-color:#1e3a8a00}.bg-blue-900\\/10{background-color:#1e3a8a1a}.bg-blue-900\\/100{background-color:#1e3a8a}.bg-blue-900\\/15{background-color:#1e3a8a26}.bg-blue-900\\/20{background-color:#1e3a8a33}.bg-blue-900\\/25{background-color:#1e3a8a40}.bg-blue-900\\/30{background-color:#1e3a8a4d}.bg-blue-900\\/35{background-color:#1e3a8a59}.bg-blue-900\\/40{background-color:#1e3a8a66}.bg-blue-900\\/45{background-color:#1e3a8a73}.bg-blue-900\\/5{background-color:#1e3a8a0d}.bg-blue-900\\/50{background-color:#1e3a8a80}.bg-blue-900\\/55{background-color:#1e3a8a8c}.bg-blue-900\\/60{background-color:#1e3a8a99}.bg-blue-900\\/65{background-color:#1e3a8aa6}.bg-blue-900\\/70{background-color:#1e3a8ab3}.bg-blue-900\\/75{background-color:#1e3a8abf}.bg-blue-900\\/80{background-color:#1e3a8acc}.bg-blue-900\\/85{background-color:#1e3a8ad9}.bg-blue-900\\/90{background-color:#1e3a8ae6}.bg-blue-900\\/95{background-color:#1e3a8af2}.bg-card{background-color:hsl(var(--card))}.bg-destructive{background-color:hsl(var(--destructive))}.bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.bg-gray-100\\/0{background-color:#f3f4f600}.bg-gray-100\\/10{background-color:#f3f4f61a}.bg-gray-100\\/100{background-color:#f3f4f6}.bg-gray-100\\/15{background-color:#f3f4f626}.bg-gray-100\\/20{background-color:#f3f4f633}.bg-gray-100\\/25{background-color:#f3f4f640}.bg-gray-100\\/30{background-color:#f3f4f64d}.bg-gray-100\\/35{background-color:#f3f4f659}.bg-gray-100\\/40{background-color:#f3f4f666}.bg-gray-100\\/45{background-color:#f3f4f673}.bg-gray-100\\/5{background-color:#f3f4f60d}.bg-gray-100\\/50{background-color:#f3f4f680}.bg-gray-100\\/55{background-color:#f3f4f68c}.bg-gray-100\\/60{background-color:#f3f4f699}.bg-gray-100\\/65{background-color:#f3f4f6a6}.bg-gray-100\\/70{background-color:#f3f4f6b3}.bg-gray-100\\/75{background-color:#f3f4f6bf}.bg-gray-100\\/80{background-color:#f3f4f6cc}.bg-gray-100\\/85{background-color:#f3f4f6d9}.bg-gray-100\\/90{background-color:#f3f4f6e6}.bg-gray-100\\/95{background-color:#f3f4f6f2}.bg-gray-200{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity, 1))}.bg-gray-200\\/0{background-color:#e5e7eb00}.bg-gray-200\\/10{background-color:#e5e7eb1a}.bg-gray-200\\/100{background-color:#e5e7eb}.bg-gray-200\\/15{background-color:#e5e7eb26}.bg-gray-200\\/20{background-color:#e5e7eb33}.bg-gray-200\\/25{background-color:#e5e7eb40}.bg-gray-200\\/30{background-color:#e5e7eb4d}.bg-gray-200\\/35{background-color:#e5e7eb59}.bg-gray-200\\/40{background-color:#e5e7eb66}.bg-gray-200\\/45{background-color:#e5e7eb73}.bg-gray-200\\/5{background-color:#e5e7eb0d}.bg-gray-200\\/50{background-color:#e5e7eb80}.bg-gray-200\\/55{background-color:#e5e7eb8c}.bg-gray-200\\/60{background-color:#e5e7eb99}.bg-gray-200\\/65{background-color:#e5e7eba6}.bg-gray-200\\/70{background-color:#e5e7ebb3}.bg-gray-200\\/75{background-color:#e5e7ebbf}.bg-gray-200\\/80{background-color:#e5e7ebcc}.bg-gray-200\\/85{background-color:#e5e7ebd9}.bg-gray-200\\/90{background-color:#e5e7ebe6}.bg-gray-200\\/95{background-color:#e5e7ebf2}.bg-gray-300{--tw-bg-opacity: 1;background-color:rgb(209 213 219 / var(--tw-bg-opacity, 1))}.bg-gray-300\\/0{background-color:#d1d5db00}.bg-gray-300\\/10{background-color:#d1d5db1a}.bg-gray-300\\/100{background-color:#d1d5db}.bg-gray-300\\/15{background-color:#d1d5db26}.bg-gray-300\\/20{background-color:#d1d5db33}.bg-gray-300\\/25{background-color:#d1d5db40}.bg-gray-300\\/30{background-color:#d1d5db4d}.bg-gray-300\\/35{background-color:#d1d5db59}.bg-gray-300\\/40{background-color:#d1d5db66}.bg-gray-300\\/45{background-color:#d1d5db73}.bg-gray-300\\/5{background-color:#d1d5db0d}.bg-gray-300\\/50{background-color:#d1d5db80}.bg-gray-300\\/55{background-color:#d1d5db8c}.bg-gray-300\\/60{background-color:#d1d5db99}.bg-gray-300\\/65{background-color:#d1d5dba6}.bg-gray-300\\/70{background-color:#d1d5dbb3}.bg-gray-300\\/75{background-color:#d1d5dbbf}.bg-gray-300\\/80{background-color:#d1d5dbcc}.bg-gray-300\\/85{background-color:#d1d5dbd9}.bg-gray-300\\/90{background-color:#d1d5dbe6}.bg-gray-300\\/95{background-color:#d1d5dbf2}.bg-gray-400{--tw-bg-opacity: 1;background-color:rgb(156 163 175 / var(--tw-bg-opacity, 1))}.bg-gray-400\\/0{background-color:#9ca3af00}.bg-gray-400\\/10{background-color:#9ca3af1a}.bg-gray-400\\/100{background-color:#9ca3af}.bg-gray-400\\/15{background-color:#9ca3af26}.bg-gray-400\\/20{background-color:#9ca3af33}.bg-gray-400\\/25{background-color:#9ca3af40}.bg-gray-400\\/30{background-color:#9ca3af4d}.bg-gray-400\\/35{background-color:#9ca3af59}.bg-gray-400\\/40{background-color:#9ca3af66}.bg-gray-400\\/45{background-color:#9ca3af73}.bg-gray-400\\/5{background-color:#9ca3af0d}.bg-gray-400\\/50{background-color:#9ca3af80}.bg-gray-400\\/55{background-color:#9ca3af8c}.bg-gray-400\\/60{background-color:#9ca3af99}.bg-gray-400\\/65{background-color:#9ca3afa6}.bg-gray-400\\/70{background-color:#9ca3afb3}.bg-gray-400\\/75{background-color:#9ca3afbf}.bg-gray-400\\/80{background-color:#9ca3afcc}.bg-gray-400\\/85{background-color:#9ca3afd9}.bg-gray-400\\/90{background-color:#9ca3afe6}.bg-gray-400\\/95{background-color:#9ca3aff2}.bg-gray-50{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.bg-gray-50\\/0{background-color:#f9fafb00}.bg-gray-50\\/10{background-color:#f9fafb1a}.bg-gray-50\\/100{background-color:#f9fafb}.bg-gray-50\\/15{background-color:#f9fafb26}.bg-gray-50\\/20{background-color:#f9fafb33}.bg-gray-50\\/25{background-color:#f9fafb40}.bg-gray-50\\/30{background-color:#f9fafb4d}.bg-gray-50\\/35{background-color:#f9fafb59}.bg-gray-50\\/40{background-color:#f9fafb66}.bg-gray-50\\/45{background-color:#f9fafb73}.bg-gray-50\\/5{background-color:#f9fafb0d}.bg-gray-50\\/50{background-color:#f9fafb80}.bg-gray-50\\/55{background-color:#f9fafb8c}.bg-gray-50\\/60{background-color:#f9fafb99}.bg-gray-50\\/65{background-color:#f9fafba6}.bg-gray-50\\/70{background-color:#f9fafbb3}.bg-gray-50\\/75{background-color:#f9fafbbf}.bg-gray-50\\/80{background-color:#f9fafbcc}.bg-gray-50\\/85{background-color:#f9fafbd9}.bg-gray-50\\/90{background-color:#f9fafbe6}.bg-gray-50\\/95{background-color:#f9fafbf2}.bg-gray-500{--tw-bg-opacity: 1;background-color:rgb(107 114 128 / var(--tw-bg-opacity, 1))}.bg-gray-500\\/0{background-color:#6b728000}.bg-gray-500\\/10{background-color:#6b72801a}.bg-gray-500\\/100{background-color:#6b7280}.bg-gray-500\\/15{background-color:#6b728026}.bg-gray-500\\/20{background-color:#6b728033}.bg-gray-500\\/25{background-color:#6b728040}.bg-gray-500\\/30{background-color:#6b72804d}.bg-gray-500\\/35{background-color:#6b728059}.bg-gray-500\\/40{background-color:#6b728066}.bg-gray-500\\/45{background-color:#6b728073}.bg-gray-500\\/5{background-color:#6b72800d}.bg-gray-500\\/50{background-color:#6b728080}.bg-gray-500\\/55{background-color:#6b72808c}.bg-gray-500\\/60{background-color:#6b728099}.bg-gray-500\\/65{background-color:#6b7280a6}.bg-gray-500\\/70{background-color:#6b7280b3}.bg-gray-500\\/75{background-color:#6b7280bf}.bg-gray-500\\/80{background-color:#6b7280cc}.bg-gray-500\\/85{background-color:#6b7280d9}.bg-gray-500\\/90{background-color:#6b7280e6}.bg-gray-500\\/95{background-color:#6b7280f2}.bg-gray-600{--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity, 1))}.bg-gray-600\\/0{background-color:#4b556300}.bg-gray-600\\/10{background-color:#4b55631a}.bg-gray-600\\/100{background-color:#4b5563}.bg-gray-600\\/15{background-color:#4b556326}.bg-gray-600\\/20{background-color:#4b556333}.bg-gray-600\\/25{background-color:#4b556340}.bg-gray-600\\/30{background-color:#4b55634d}.bg-gray-600\\/35{background-color:#4b556359}.bg-gray-600\\/40{background-color:#4b556366}.bg-gray-600\\/45{background-color:#4b556373}.bg-gray-600\\/5{background-color:#4b55630d}.bg-gray-600\\/50{background-color:#4b556380}.bg-gray-600\\/55{background-color:#4b55638c}.bg-gray-600\\/60{background-color:#4b556399}.bg-gray-600\\/65{background-color:#4b5563a6}.bg-gray-600\\/70{background-color:#4b5563b3}.bg-gray-600\\/75{background-color:#4b5563bf}.bg-gray-600\\/80{background-color:#4b5563cc}.bg-gray-600\\/85{background-color:#4b5563d9}.bg-gray-600\\/90{background-color:#4b5563e6}.bg-gray-600\\/95{background-color:#4b5563f2}.bg-gray-700{--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity, 1))}.bg-gray-700\\/0{background-color:#37415100}.bg-gray-700\\/10{background-color:#3741511a}.bg-gray-700\\/100{background-color:#374151}.bg-gray-700\\/15{background-color:#37415126}.bg-gray-700\\/20{background-color:#37415133}.bg-gray-700\\/25{background-color:#37415140}.bg-gray-700\\/30{background-color:#3741514d}.bg-gray-700\\/35{background-color:#37415159}.bg-gray-700\\/40{background-color:#37415166}.bg-gray-700\\/45{background-color:#37415173}.bg-gray-700\\/5{background-color:#3741510d}.bg-gray-700\\/50{background-color:#37415180}.bg-gray-700\\/55{background-color:#3741518c}.bg-gray-700\\/60{background-color:#37415199}.bg-gray-700\\/65{background-color:#374151a6}.bg-gray-700\\/70{background-color:#374151b3}.bg-gray-700\\/75{background-color:#374151bf}.bg-gray-700\\/80{background-color:#374151cc}.bg-gray-700\\/85{background-color:#374151d9}.bg-gray-700\\/90{background-color:#374151e6}.bg-gray-700\\/95{background-color:#374151f2}.bg-gray-800{--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.bg-gray-800\\/0{background-color:#1f293700}.bg-gray-800\\/10{background-color:#1f29371a}.bg-gray-800\\/100{background-color:#1f2937}.bg-gray-800\\/15{background-color:#1f293726}.bg-gray-800\\/20{background-color:#1f293733}.bg-gray-800\\/25{background-color:#1f293740}.bg-gray-800\\/30{background-color:#1f29374d}.bg-gray-800\\/35{background-color:#1f293759}.bg-gray-800\\/40{background-color:#1f293766}.bg-gray-800\\/45{background-color:#1f293773}.bg-gray-800\\/5{background-color:#1f29370d}.bg-gray-800\\/50{background-color:#1f293780}.bg-gray-800\\/55{background-color:#1f29378c}.bg-gray-800\\/60{background-color:#1f293799}.bg-gray-800\\/65{background-color:#1f2937a6}.bg-gray-800\\/70{background-color:#1f2937b3}.bg-gray-800\\/75{background-color:#1f2937bf}.bg-gray-800\\/80{background-color:#1f2937cc}.bg-gray-800\\/85{background-color:#1f2937d9}.bg-gray-800\\/90{background-color:#1f2937e6}.bg-gray-800\\/95{background-color:#1f2937f2}.bg-gray-900{--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity, 1))}.bg-gray-900\\/0{background-color:#11182700}.bg-gray-900\\/10{background-color:#1118271a}.bg-gray-900\\/100{background-color:#111827}.bg-gray-900\\/15{background-color:#11182726}.bg-gray-900\\/20{background-color:#11182733}.bg-gray-900\\/25{background-color:#11182740}.bg-gray-900\\/30{background-color:#1118274d}.bg-gray-900\\/35{background-color:#11182759}.bg-gray-900\\/40{background-color:#11182766}.bg-gray-900\\/45{background-color:#11182773}.bg-gray-900\\/5{background-color:#1118270d}.bg-gray-900\\/50{background-color:#11182780}.bg-gray-900\\/55{background-color:#1118278c}.bg-gray-900\\/60{background-color:#11182799}.bg-gray-900\\/65{background-color:#111827a6}.bg-gray-900\\/70{background-color:#111827b3}.bg-gray-900\\/75{background-color:#111827bf}.bg-gray-900\\/80{background-color:#111827cc}.bg-gray-900\\/85{background-color:#111827d9}.bg-gray-900\\/90{background-color:#111827e6}.bg-gray-900\\/95{background-color:#111827f2}.bg-green-100{--tw-bg-opacity: 1;background-color:rgb(220 252 231 / var(--tw-bg-opacity, 1))}.bg-green-100\\/0{background-color:#dcfce700}.bg-green-100\\/10{background-color:#dcfce71a}.bg-green-100\\/100{background-color:#dcfce7}.bg-green-100\\/15{background-color:#dcfce726}.bg-green-100\\/20{background-color:#dcfce733}.bg-green-100\\/25{background-color:#dcfce740}.bg-green-100\\/30{background-color:#dcfce74d}.bg-green-100\\/35{background-color:#dcfce759}.bg-green-100\\/40{background-color:#dcfce766}.bg-green-100\\/45{background-color:#dcfce773}.bg-green-100\\/5{background-color:#dcfce70d}.bg-green-100\\/50{background-color:#dcfce780}.bg-green-100\\/55{background-color:#dcfce78c}.bg-green-100\\/60{background-color:#dcfce799}.bg-green-100\\/65{background-color:#dcfce7a6}.bg-green-100\\/70{background-color:#dcfce7b3}.bg-green-100\\/75{background-color:#dcfce7bf}.bg-green-100\\/80{background-color:#dcfce7cc}.bg-green-100\\/85{background-color:#dcfce7d9}.bg-green-100\\/90{background-color:#dcfce7e6}.bg-green-100\\/95{background-color:#dcfce7f2}.bg-green-200{--tw-bg-opacity: 1;background-color:rgb(187 247 208 / var(--tw-bg-opacity, 1))}.bg-green-200\\/0{background-color:#bbf7d000}.bg-green-200\\/10{background-color:#bbf7d01a}.bg-green-200\\/100{background-color:#bbf7d0}.bg-green-200\\/15{background-color:#bbf7d026}.bg-green-200\\/20{background-color:#bbf7d033}.bg-green-200\\/25{background-color:#bbf7d040}.bg-green-200\\/30{background-color:#bbf7d04d}.bg-green-200\\/35{background-color:#bbf7d059}.bg-green-200\\/40{background-color:#bbf7d066}.bg-green-200\\/45{background-color:#bbf7d073}.bg-green-200\\/5{background-color:#bbf7d00d}.bg-green-200\\/50{background-color:#bbf7d080}.bg-green-200\\/55{background-color:#bbf7d08c}.bg-green-200\\/60{background-color:#bbf7d099}.bg-green-200\\/65{background-color:#bbf7d0a6}.bg-green-200\\/70{background-color:#bbf7d0b3}.bg-green-200\\/75{background-color:#bbf7d0bf}.bg-green-200\\/80{background-color:#bbf7d0cc}.bg-green-200\\/85{background-color:#bbf7d0d9}.bg-green-200\\/90{background-color:#bbf7d0e6}.bg-green-200\\/95{background-color:#bbf7d0f2}.bg-green-300{--tw-bg-opacity: 1;background-color:rgb(134 239 172 / var(--tw-bg-opacity, 1))}.bg-green-300\\/0{background-color:#86efac00}.bg-green-300\\/10{background-color:#86efac1a}.bg-green-300\\/100{background-color:#86efac}.bg-green-300\\/15{background-color:#86efac26}.bg-green-300\\/20{background-color:#86efac33}.bg-green-300\\/25{background-color:#86efac40}.bg-green-300\\/30{background-color:#86efac4d}.bg-green-300\\/35{background-color:#86efac59}.bg-green-300\\/40{background-color:#86efac66}.bg-green-300\\/45{background-color:#86efac73}.bg-green-300\\/5{background-color:#86efac0d}.bg-green-300\\/50{background-color:#86efac80}.bg-green-300\\/55{background-color:#86efac8c}.bg-green-300\\/60{background-color:#86efac99}.bg-green-300\\/65{background-color:#86efaca6}.bg-green-300\\/70{background-color:#86efacb3}.bg-green-300\\/75{background-color:#86efacbf}.bg-green-300\\/80{background-color:#86efaccc}.bg-green-300\\/85{background-color:#86efacd9}.bg-green-300\\/90{background-color:#86eface6}.bg-green-300\\/95{background-color:#86efacf2}.bg-green-400{--tw-bg-opacity: 1;background-color:rgb(74 222 128 / var(--tw-bg-opacity, 1))}.bg-green-400\\/0{background-color:#4ade8000}.bg-green-400\\/10{background-color:#4ade801a}.bg-green-400\\/100{background-color:#4ade80}.bg-green-400\\/15{background-color:#4ade8026}.bg-green-400\\/20{background-color:#4ade8033}.bg-green-400\\/25{background-color:#4ade8040}.bg-green-400\\/30{background-color:#4ade804d}.bg-green-400\\/35{background-color:#4ade8059}.bg-green-400\\/40{background-color:#4ade8066}.bg-green-400\\/45{background-color:#4ade8073}.bg-green-400\\/5{background-color:#4ade800d}.bg-green-400\\/50{background-color:#4ade8080}.bg-green-400\\/55{background-color:#4ade808c}.bg-green-400\\/60{background-color:#4ade8099}.bg-green-400\\/65{background-color:#4ade80a6}.bg-green-400\\/70{background-color:#4ade80b3}.bg-green-400\\/75{background-color:#4ade80bf}.bg-green-400\\/80{background-color:#4ade80cc}.bg-green-400\\/85{background-color:#4ade80d9}.bg-green-400\\/90{background-color:#4ade80e6}.bg-green-400\\/95{background-color:#4ade80f2}.bg-green-50{--tw-bg-opacity: 1;background-color:rgb(240 253 244 / var(--tw-bg-opacity, 1))}.bg-green-50\\/0{background-color:#f0fdf400}.bg-green-50\\/10{background-color:#f0fdf41a}.bg-green-50\\/100{background-color:#f0fdf4}.bg-green-50\\/15{background-color:#f0fdf426}.bg-green-50\\/20{background-color:#f0fdf433}.bg-green-50\\/25{background-color:#f0fdf440}.bg-green-50\\/30{background-color:#f0fdf44d}.bg-green-50\\/35{background-color:#f0fdf459}.bg-green-50\\/40{background-color:#f0fdf466}.bg-green-50\\/45{background-color:#f0fdf473}.bg-green-50\\/5{background-color:#f0fdf40d}.bg-green-50\\/50{background-color:#f0fdf480}.bg-green-50\\/55{background-color:#f0fdf48c}.bg-green-50\\/60{background-color:#f0fdf499}.bg-green-50\\/65{background-color:#f0fdf4a6}.bg-green-50\\/70{background-color:#f0fdf4b3}.bg-green-50\\/75{background-color:#f0fdf4bf}.bg-green-50\\/80{background-color:#f0fdf4cc}.bg-green-50\\/85{background-color:#f0fdf4d9}.bg-green-50\\/90{background-color:#f0fdf4e6}.bg-green-50\\/95{background-color:#f0fdf4f2}.bg-green-500{--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity, 1))}.bg-green-500\\/0{background-color:#22c55e00}.bg-green-500\\/10{background-color:#22c55e1a}.bg-green-500\\/100{background-color:#22c55e}.bg-green-500\\/15{background-color:#22c55e26}.bg-green-500\\/20{background-color:#22c55e33}.bg-green-500\\/25{background-color:#22c55e40}.bg-green-500\\/30{background-color:#22c55e4d}.bg-green-500\\/35{background-color:#22c55e59}.bg-green-500\\/40{background-color:#22c55e66}.bg-green-500\\/45{background-color:#22c55e73}.bg-green-500\\/5{background-color:#22c55e0d}.bg-green-500\\/50{background-color:#22c55e80}.bg-green-500\\/55{background-color:#22c55e8c}.bg-green-500\\/60{background-color:#22c55e99}.bg-green-500\\/65{background-color:#22c55ea6}.bg-green-500\\/70{background-color:#22c55eb3}.bg-green-500\\/75{background-color:#22c55ebf}.bg-green-500\\/80{background-color:#22c55ecc}.bg-green-500\\/85{background-color:#22c55ed9}.bg-green-500\\/90{background-color:#22c55ee6}.bg-green-500\\/95{background-color:#22c55ef2}.bg-green-600{--tw-bg-opacity: 1;background-color:rgb(22 163 74 / var(--tw-bg-opacity, 1))}.bg-green-600\\/0{background-color:#16a34a00}.bg-green-600\\/10{background-color:#16a34a1a}.bg-green-600\\/100{background-color:#16a34a}.bg-green-600\\/15{background-color:#16a34a26}.bg-green-600\\/20{background-color:#16a34a33}.bg-green-600\\/25{background-color:#16a34a40}.bg-green-600\\/30{background-color:#16a34a4d}.bg-green-600\\/35{background-color:#16a34a59}.bg-green-600\\/40{background-color:#16a34a66}.bg-green-600\\/45{background-color:#16a34a73}.bg-green-600\\/5{background-color:#16a34a0d}.bg-green-600\\/50{background-color:#16a34a80}.bg-green-600\\/55{background-color:#16a34a8c}.bg-green-600\\/60{background-color:#16a34a99}.bg-green-600\\/65{background-color:#16a34aa6}.bg-green-600\\/70{background-color:#16a34ab3}.bg-green-600\\/75{background-color:#16a34abf}.bg-green-600\\/80{background-color:#16a34acc}.bg-green-600\\/85{background-color:#16a34ad9}.bg-green-600\\/90{background-color:#16a34ae6}.bg-green-600\\/95{background-color:#16a34af2}.bg-green-700{--tw-bg-opacity: 1;background-color:rgb(21 128 61 / var(--tw-bg-opacity, 1))}.bg-green-700\\/0{background-color:#15803d00}.bg-green-700\\/10{background-color:#15803d1a}.bg-green-700\\/100{background-color:#15803d}.bg-green-700\\/15{background-color:#15803d26}.bg-green-700\\/20{background-color:#15803d33}.bg-green-700\\/25{background-color:#15803d40}.bg-green-700\\/30{background-color:#15803d4d}.bg-green-700\\/35{background-color:#15803d59}.bg-green-700\\/40{background-color:#15803d66}.bg-green-700\\/45{background-color:#15803d73}.bg-green-700\\/5{background-color:#15803d0d}.bg-green-700\\/50{background-color:#15803d80}.bg-green-700\\/55{background-color:#15803d8c}.bg-green-700\\/60{background-color:#15803d99}.bg-green-700\\/65{background-color:#15803da6}.bg-green-700\\/70{background-color:#15803db3}.bg-green-700\\/75{background-color:#15803dbf}.bg-green-700\\/80{background-color:#15803dcc}.bg-green-700\\/85{background-color:#15803dd9}.bg-green-700\\/90{background-color:#15803de6}.bg-green-700\\/95{background-color:#15803df2}.bg-green-800{--tw-bg-opacity: 1;background-color:rgb(22 101 52 / var(--tw-bg-opacity, 1))}.bg-green-800\\/0{background-color:#16653400}.bg-green-800\\/10{background-color:#1665341a}.bg-green-800\\/100{background-color:#166534}.bg-green-800\\/15{background-color:#16653426}.bg-green-800\\/20{background-color:#16653433}.bg-green-800\\/25{background-color:#16653440}.bg-green-800\\/30{background-color:#1665344d}.bg-green-800\\/35{background-color:#16653459}.bg-green-800\\/40{background-color:#16653466}.bg-green-800\\/45{background-color:#16653473}.bg-green-800\\/5{background-color:#1665340d}.bg-green-800\\/50{background-color:#16653480}.bg-green-800\\/55{background-color:#1665348c}.bg-green-800\\/60{background-color:#16653499}.bg-green-800\\/65{background-color:#166534a6}.bg-green-800\\/70{background-color:#166534b3}.bg-green-800\\/75{background-color:#166534bf}.bg-green-800\\/80{background-color:#166534cc}.bg-green-800\\/85{background-color:#166534d9}.bg-green-800\\/90{background-color:#166534e6}.bg-green-800\\/95{background-color:#166534f2}.bg-green-900{--tw-bg-opacity: 1;background-color:rgb(20 83 45 / var(--tw-bg-opacity, 1))}.bg-green-900\\/0{background-color:#14532d00}.bg-green-900\\/10{background-color:#14532d1a}.bg-green-900\\/100{background-color:#14532d}.bg-green-900\\/15{background-color:#14532d26}.bg-green-900\\/20{background-color:#14532d33}.bg-green-900\\/25{background-color:#14532d40}.bg-green-900\\/30{background-color:#14532d4d}.bg-green-900\\/35{background-color:#14532d59}.bg-green-900\\/40{background-color:#14532d66}.bg-green-900\\/45{background-color:#14532d73}.bg-green-900\\/5{background-color:#14532d0d}.bg-green-900\\/50{background-color:#14532d80}.bg-green-900\\/55{background-color:#14532d8c}.bg-green-900\\/60{background-color:#14532d99}.bg-green-900\\/65{background-color:#14532da6}.bg-green-900\\/70{background-color:#14532db3}.bg-green-900\\/75{background-color:#14532dbf}.bg-green-900\\/80{background-color:#14532dcc}.bg-green-900\\/85{background-color:#14532dd9}.bg-green-900\\/90{background-color:#14532de6}.bg-green-900\\/95{background-color:#14532df2}.bg-input{background-color:hsl(var(--input))}.bg-muted{background-color:hsl(var(--muted))}.bg-orange-50{--tw-bg-opacity: 1;background-color:rgb(255 247 237 / var(--tw-bg-opacity, 1))}.bg-popover{background-color:hsl(var(--popover))}.bg-primary{background-color:hsl(var(--primary))}.bg-purple-100{--tw-bg-opacity: 1;background-color:rgb(243 232 255 / var(--tw-bg-opacity, 1))}.bg-red-100{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity, 1))}.bg-red-100\\/0{background-color:#fee2e200}.bg-red-100\\/10{background-color:#fee2e21a}.bg-red-100\\/100{background-color:#fee2e2}.bg-red-100\\/15{background-color:#fee2e226}.bg-red-100\\/20{background-color:#fee2e233}.bg-red-100\\/25{background-color:#fee2e240}.bg-red-100\\/30{background-color:#fee2e24d}.bg-red-100\\/35{background-color:#fee2e259}.bg-red-100\\/40{background-color:#fee2e266}.bg-red-100\\/45{background-color:#fee2e273}.bg-red-100\\/5{background-color:#fee2e20d}.bg-red-100\\/50{background-color:#fee2e280}.bg-red-100\\/55{background-color:#fee2e28c}.bg-red-100\\/60{background-color:#fee2e299}.bg-red-100\\/65{background-color:#fee2e2a6}.bg-red-100\\/70{background-color:#fee2e2b3}.bg-red-100\\/75{background-color:#fee2e2bf}.bg-red-100\\/80{background-color:#fee2e2cc}.bg-red-100\\/85{background-color:#fee2e2d9}.bg-red-100\\/90{background-color:#fee2e2e6}.bg-red-100\\/95{background-color:#fee2e2f2}.bg-red-200{--tw-bg-opacity: 1;background-color:rgb(254 202 202 / var(--tw-bg-opacity, 1))}.bg-red-200\\/0{background-color:#fecaca00}.bg-red-200\\/10{background-color:#fecaca1a}.bg-red-200\\/100{background-color:#fecaca}.bg-red-200\\/15{background-color:#fecaca26}.bg-red-200\\/20{background-color:#fecaca33}.bg-red-200\\/25{background-color:#fecaca40}.bg-red-200\\/30{background-color:#fecaca4d}.bg-red-200\\/35{background-color:#fecaca59}.bg-red-200\\/40{background-color:#fecaca66}.bg-red-200\\/45{background-color:#fecaca73}.bg-red-200\\/5{background-color:#fecaca0d}.bg-red-200\\/50{background-color:#fecaca80}.bg-red-200\\/55{background-color:#fecaca8c}.bg-red-200\\/60{background-color:#fecaca99}.bg-red-200\\/65{background-color:#fecacaa6}.bg-red-200\\/70{background-color:#fecacab3}.bg-red-200\\/75{background-color:#fecacabf}.bg-red-200\\/80{background-color:#fecacacc}.bg-red-200\\/85{background-color:#fecacad9}.bg-red-200\\/90{background-color:#fecacae6}.bg-red-200\\/95{background-color:#fecacaf2}.bg-red-300{--tw-bg-opacity: 1;background-color:rgb(252 165 165 / var(--tw-bg-opacity, 1))}.bg-red-300\\/0{background-color:#fca5a500}.bg-red-300\\/10{background-color:#fca5a51a}.bg-red-300\\/100{background-color:#fca5a5}.bg-red-300\\/15{background-color:#fca5a526}.bg-red-300\\/20{background-color:#fca5a533}.bg-red-300\\/25{background-color:#fca5a540}.bg-red-300\\/30{background-color:#fca5a54d}.bg-red-300\\/35{background-color:#fca5a559}.bg-red-300\\/40{background-color:#fca5a566}.bg-red-300\\/45{background-color:#fca5a573}.bg-red-300\\/5{background-color:#fca5a50d}.bg-red-300\\/50{background-color:#fca5a580}.bg-red-300\\/55{background-color:#fca5a58c}.bg-red-300\\/60{background-color:#fca5a599}.bg-red-300\\/65{background-color:#fca5a5a6}.bg-red-300\\/70{background-color:#fca5a5b3}.bg-red-300\\/75{background-color:#fca5a5bf}.bg-red-300\\/80{background-color:#fca5a5cc}.bg-red-300\\/85{background-color:#fca5a5d9}.bg-red-300\\/90{background-color:#fca5a5e6}.bg-red-300\\/95{background-color:#fca5a5f2}.bg-red-400{--tw-bg-opacity: 1;background-color:rgb(248 113 113 / var(--tw-bg-opacity, 1))}.bg-red-400\\/0{background-color:#f8717100}.bg-red-400\\/10{background-color:#f871711a}.bg-red-400\\/100{background-color:#f87171}.bg-red-400\\/15{background-color:#f8717126}.bg-red-400\\/20{background-color:#f8717133}.bg-red-400\\/25{background-color:#f8717140}.bg-red-400\\/30{background-color:#f871714d}.bg-red-400\\/35{background-color:#f8717159}.bg-red-400\\/40{background-color:#f8717166}.bg-red-400\\/45{background-color:#f8717173}.bg-red-400\\/5{background-color:#f871710d}.bg-red-400\\/50{background-color:#f8717180}.bg-red-400\\/55{background-color:#f871718c}.bg-red-400\\/60{background-color:#f8717199}.bg-red-400\\/65{background-color:#f87171a6}.bg-red-400\\/70{background-color:#f87171b3}.bg-red-400\\/75{background-color:#f87171bf}.bg-red-400\\/80{background-color:#f87171cc}.bg-red-400\\/85{background-color:#f87171d9}.bg-red-400\\/90{background-color:#f87171e6}.bg-red-400\\/95{background-color:#f87171f2}.bg-red-50{--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity, 1))}.bg-red-50\\/0{background-color:#fef2f200}.bg-red-50\\/10{background-color:#fef2f21a}.bg-red-50\\/100{background-color:#fef2f2}.bg-red-50\\/15{background-color:#fef2f226}.bg-red-50\\/20{background-color:#fef2f233}.bg-red-50\\/25{background-color:#fef2f240}.bg-red-50\\/30{background-color:#fef2f24d}.bg-red-50\\/35{background-color:#fef2f259}.bg-red-50\\/40{background-color:#fef2f266}.bg-red-50\\/45{background-color:#fef2f273}.bg-red-50\\/5{background-color:#fef2f20d}.bg-red-50\\/50{background-color:#fef2f280}.bg-red-50\\/55{background-color:#fef2f28c}.bg-red-50\\/60{background-color:#fef2f299}.bg-red-50\\/65{background-color:#fef2f2a6}.bg-red-50\\/70{background-color:#fef2f2b3}.bg-red-50\\/75{background-color:#fef2f2bf}.bg-red-50\\/80{background-color:#fef2f2cc}.bg-red-50\\/85{background-color:#fef2f2d9}.bg-red-50\\/90{background-color:#fef2f2e6}.bg-red-50\\/95{background-color:#fef2f2f2}.bg-red-500{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity, 1))}.bg-red-500\\/0{background-color:#ef444400}.bg-red-500\\/10{background-color:#ef44441a}.bg-red-500\\/100{background-color:#ef4444}.bg-red-500\\/15{background-color:#ef444426}.bg-red-500\\/20{background-color:#ef444433}.bg-red-500\\/25{background-color:#ef444440}.bg-red-500\\/30{background-color:#ef44444d}.bg-red-500\\/35{background-color:#ef444459}.bg-red-500\\/40{background-color:#ef444466}.bg-red-500\\/45{background-color:#ef444473}.bg-red-500\\/5{background-color:#ef44440d}.bg-red-500\\/50{background-color:#ef444480}.bg-red-500\\/55{background-color:#ef44448c}.bg-red-500\\/60{background-color:#ef444499}.bg-red-500\\/65{background-color:#ef4444a6}.bg-red-500\\/70{background-color:#ef4444b3}.bg-red-500\\/75{background-color:#ef4444bf}.bg-red-500\\/80{background-color:#ef4444cc}.bg-red-500\\/85{background-color:#ef4444d9}.bg-red-500\\/90{background-color:#ef4444e6}.bg-red-500\\/95{background-color:#ef4444f2}.bg-red-600{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity, 1))}.bg-red-600\\/0{background-color:#dc262600}.bg-red-600\\/10{background-color:#dc26261a}.bg-red-600\\/100{background-color:#dc2626}.bg-red-600\\/15{background-color:#dc262626}.bg-red-600\\/20{background-color:#dc262633}.bg-red-600\\/25{background-color:#dc262640}.bg-red-600\\/30{background-color:#dc26264d}.bg-red-600\\/35{background-color:#dc262659}.bg-red-600\\/40{background-color:#dc262666}.bg-red-600\\/45{background-color:#dc262673}.bg-red-600\\/5{background-color:#dc26260d}.bg-red-600\\/50{background-color:#dc262680}.bg-red-600\\/55{background-color:#dc26268c}.bg-red-600\\/60{background-color:#dc262699}.bg-red-600\\/65{background-color:#dc2626a6}.bg-red-600\\/70{background-color:#dc2626b3}.bg-red-600\\/75{background-color:#dc2626bf}.bg-red-600\\/80{background-color:#dc2626cc}.bg-red-600\\/85{background-color:#dc2626d9}.bg-red-600\\/90{background-color:#dc2626e6}.bg-red-600\\/95{background-color:#dc2626f2}.bg-red-700{--tw-bg-opacity: 1;background-color:rgb(185 28 28 / var(--tw-bg-opacity, 1))}.bg-red-700\\/0{background-color:#b91c1c00}.bg-red-700\\/10{background-color:#b91c1c1a}.bg-red-700\\/100{background-color:#b91c1c}.bg-red-700\\/15{background-color:#b91c1c26}.bg-red-700\\/20{background-color:#b91c1c33}.bg-red-700\\/25{background-color:#b91c1c40}.bg-red-700\\/30{background-color:#b91c1c4d}.bg-red-700\\/35{background-color:#b91c1c59}.bg-red-700\\/40{background-color:#b91c1c66}.bg-red-700\\/45{background-color:#b91c1c73}.bg-red-700\\/5{background-color:#b91c1c0d}.bg-red-700\\/50{background-color:#b91c1c80}.bg-red-700\\/55{background-color:#b91c1c8c}.bg-red-700\\/60{background-color:#b91c1c99}.bg-red-700\\/65{background-color:#b91c1ca6}.bg-red-700\\/70{background-color:#b91c1cb3}.bg-red-700\\/75{background-color:#b91c1cbf}.bg-red-700\\/80{background-color:#b91c1ccc}.bg-red-700\\/85{background-color:#b91c1cd9}.bg-red-700\\/90{background-color:#b91c1ce6}.bg-red-700\\/95{background-color:#b91c1cf2}.bg-red-800{--tw-bg-opacity: 1;background-color:rgb(153 27 27 / var(--tw-bg-opacity, 1))}.bg-red-800\\/0{background-color:#991b1b00}.bg-red-800\\/10{background-color:#991b1b1a}.bg-red-800\\/100{background-color:#991b1b}.bg-red-800\\/15{background-color:#991b1b26}.bg-red-800\\/20{background-color:#991b1b33}.bg-red-800\\/25{background-color:#991b1b40}.bg-red-800\\/30{background-color:#991b1b4d}.bg-red-800\\/35{background-color:#991b1b59}.bg-red-800\\/40{background-color:#991b1b66}.bg-red-800\\/45{background-color:#991b1b73}.bg-red-800\\/5{background-color:#991b1b0d}.bg-red-800\\/50{background-color:#991b1b80}.bg-red-800\\/55{background-color:#991b1b8c}.bg-red-800\\/60{background-color:#991b1b99}.bg-red-800\\/65{background-color:#991b1ba6}.bg-red-800\\/70{background-color:#991b1bb3}.bg-red-800\\/75{background-color:#991b1bbf}.bg-red-800\\/80{background-color:#991b1bcc}.bg-red-800\\/85{background-color:#991b1bd9}.bg-red-800\\/90{background-color:#991b1be6}.bg-red-800\\/95{background-color:#991b1bf2}.bg-red-900{--tw-bg-opacity: 1;background-color:rgb(127 29 29 / var(--tw-bg-opacity, 1))}.bg-red-900\\/0{background-color:#7f1d1d00}.bg-red-900\\/10{background-color:#7f1d1d1a}.bg-red-900\\/100{background-color:#7f1d1d}.bg-red-900\\/15{background-color:#7f1d1d26}.bg-red-900\\/20{background-color:#7f1d1d33}.bg-red-900\\/25{background-color:#7f1d1d40}.bg-red-900\\/30{background-color:#7f1d1d4d}.bg-red-900\\/35{background-color:#7f1d1d59}.bg-red-900\\/40{background-color:#7f1d1d66}.bg-red-900\\/45{background-color:#7f1d1d73}.bg-red-900\\/5{background-color:#7f1d1d0d}.bg-red-900\\/50{background-color:#7f1d1d80}.bg-red-900\\/55{background-color:#7f1d1d8c}.bg-red-900\\/60{background-color:#7f1d1d99}.bg-red-900\\/65{background-color:#7f1d1da6}.bg-red-900\\/70{background-color:#7f1d1db3}.bg-red-900\\/75{background-color:#7f1d1dbf}.bg-red-900\\/80{background-color:#7f1d1dcc}.bg-red-900\\/85{background-color:#7f1d1dd9}.bg-red-900\\/90{background-color:#7f1d1de6}.bg-red-900\\/95{background-color:#7f1d1df2}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.stroke-2{stroke-width:2}.p-0{padding:0}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\\.5{padding-top:.375rem;padding-bottom:.375rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-0{padding-bottom:0}.pb-2{padding-bottom:.5rem}.pl-7{padding-left:1.75rem}.pl-8{padding-left:2rem}.pr-2{padding-right:.5rem}.pr-8{padding-right:2rem}.pt-0{padding-top:0}.pt-4{padding-top:1rem}.pt-6{padding-top:1.5rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-sans{font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.text-2xl{font-size:1.5rem;line-height:2rem}.text-\\[11px\\]{font-size:11px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.leading-none{line-height:1}.leading-relaxed{line-height:1.625}.tracking-tight{letter-spacing:-.025em}.tracking-wide{letter-spacing:.025em}.text-blue-100{--tw-text-opacity: 1;color:rgb(219 234 254 / var(--tw-text-opacity, 1))}.text-blue-100\\/0{color:#dbeafe00}.text-blue-100\\/10{color:#dbeafe1a}.text-blue-100\\/100{color:#dbeafe}.text-blue-100\\/15{color:#dbeafe26}.text-blue-100\\/20{color:#dbeafe33}.text-blue-100\\/25{color:#dbeafe40}.text-blue-100\\/30{color:#dbeafe4d}.text-blue-100\\/35{color:#dbeafe59}.text-blue-100\\/40{color:#dbeafe66}.text-blue-100\\/45{color:#dbeafe73}.text-blue-100\\/5{color:#dbeafe0d}.text-blue-100\\/50{color:#dbeafe80}.text-blue-100\\/55{color:#dbeafe8c}.text-blue-100\\/60{color:#dbeafe99}.text-blue-100\\/65{color:#dbeafea6}.text-blue-100\\/70{color:#dbeafeb3}.text-blue-100\\/75{color:#dbeafebf}.text-blue-100\\/80{color:#dbeafecc}.text-blue-100\\/85{color:#dbeafed9}.text-blue-100\\/90{color:#dbeafee6}.text-blue-100\\/95{color:#dbeafef2}.text-blue-200{--tw-text-opacity: 1;color:rgb(191 219 254 / var(--tw-text-opacity, 1))}.text-blue-200\\/0{color:#bfdbfe00}.text-blue-200\\/10{color:#bfdbfe1a}.text-blue-200\\/100{color:#bfdbfe}.text-blue-200\\/15{color:#bfdbfe26}.text-blue-200\\/20{color:#bfdbfe33}.text-blue-200\\/25{color:#bfdbfe40}.text-blue-200\\/30{color:#bfdbfe4d}.text-blue-200\\/35{color:#bfdbfe59}.text-blue-200\\/40{color:#bfdbfe66}.text-blue-200\\/45{color:#bfdbfe73}.text-blue-200\\/5{color:#bfdbfe0d}.text-blue-200\\/50{color:#bfdbfe80}.text-blue-200\\/55{color:#bfdbfe8c}.text-blue-200\\/60{color:#bfdbfe99}.text-blue-200\\/65{color:#bfdbfea6}.text-blue-200\\/70{color:#bfdbfeb3}.text-blue-200\\/75{color:#bfdbfebf}.text-blue-200\\/80{color:#bfdbfecc}.text-blue-200\\/85{color:#bfdbfed9}.text-blue-200\\/90{color:#bfdbfee6}.text-blue-200\\/95{color:#bfdbfef2}.text-blue-300{--tw-text-opacity: 1;color:rgb(147 197 253 / var(--tw-text-opacity, 1))}.text-blue-300\\/0{color:#93c5fd00}.text-blue-300\\/10{color:#93c5fd1a}.text-blue-300\\/100{color:#93c5fd}.text-blue-300\\/15{color:#93c5fd26}.text-blue-300\\/20{color:#93c5fd33}.text-blue-300\\/25{color:#93c5fd40}.text-blue-300\\/30{color:#93c5fd4d}.text-blue-300\\/35{color:#93c5fd59}.text-blue-300\\/40{color:#93c5fd66}.text-blue-300\\/45{color:#93c5fd73}.text-blue-300\\/5{color:#93c5fd0d}.text-blue-300\\/50{color:#93c5fd80}.text-blue-300\\/55{color:#93c5fd8c}.text-blue-300\\/60{color:#93c5fd99}.text-blue-300\\/65{color:#93c5fda6}.text-blue-300\\/70{color:#93c5fdb3}.text-blue-300\\/75{color:#93c5fdbf}.text-blue-300\\/80{color:#93c5fdcc}.text-blue-300\\/85{color:#93c5fdd9}.text-blue-300\\/90{color:#93c5fde6}.text-blue-300\\/95{color:#93c5fdf2}.text-blue-400{--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity, 1))}.text-blue-400\\/0{color:#60a5fa00}.text-blue-400\\/10{color:#60a5fa1a}.text-blue-400\\/100{color:#60a5fa}.text-blue-400\\/15{color:#60a5fa26}.text-blue-400\\/20{color:#60a5fa33}.text-blue-400\\/25{color:#60a5fa40}.text-blue-400\\/30{color:#60a5fa4d}.text-blue-400\\/35{color:#60a5fa59}.text-blue-400\\/40{color:#60a5fa66}.text-blue-400\\/45{color:#60a5fa73}.text-blue-400\\/5{color:#60a5fa0d}.text-blue-400\\/50{color:#60a5fa80}.text-blue-400\\/55{color:#60a5fa8c}.text-blue-400\\/60{color:#60a5fa99}.text-blue-400\\/65{color:#60a5faa6}.text-blue-400\\/70{color:#60a5fab3}.text-blue-400\\/75{color:#60a5fabf}.text-blue-400\\/80{color:#60a5facc}.text-blue-400\\/85{color:#60a5fad9}.text-blue-400\\/90{color:#60a5fae6}.text-blue-400\\/95{color:#60a5faf2}.text-blue-50{--tw-text-opacity: 1;color:rgb(239 246 255 / var(--tw-text-opacity, 1))}.text-blue-50\\/0{color:#eff6ff00}.text-blue-50\\/10{color:#eff6ff1a}.text-blue-50\\/100{color:#eff6ff}.text-blue-50\\/15{color:#eff6ff26}.text-blue-50\\/20{color:#eff6ff33}.text-blue-50\\/25{color:#eff6ff40}.text-blue-50\\/30{color:#eff6ff4d}.text-blue-50\\/35{color:#eff6ff59}.text-blue-50\\/40{color:#eff6ff66}.text-blue-50\\/45{color:#eff6ff73}.text-blue-50\\/5{color:#eff6ff0d}.text-blue-50\\/50{color:#eff6ff80}.text-blue-50\\/55{color:#eff6ff8c}.text-blue-50\\/60{color:#eff6ff99}.text-blue-50\\/65{color:#eff6ffa6}.text-blue-50\\/70{color:#eff6ffb3}.text-blue-50\\/75{color:#eff6ffbf}.text-blue-50\\/80{color:#eff6ffcc}.text-blue-50\\/85{color:#eff6ffd9}.text-blue-50\\/90{color:#eff6ffe6}.text-blue-50\\/95{color:#eff6fff2}.text-blue-500{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity, 1))}.text-blue-500\\/0{color:#3b82f600}.text-blue-500\\/10{color:#3b82f61a}.text-blue-500\\/100{color:#3b82f6}.text-blue-500\\/15{color:#3b82f626}.text-blue-500\\/20{color:#3b82f633}.text-blue-500\\/25{color:#3b82f640}.text-blue-500\\/30{color:#3b82f64d}.text-blue-500\\/35{color:#3b82f659}.text-blue-500\\/40{color:#3b82f666}.text-blue-500\\/45{color:#3b82f673}.text-blue-500\\/5{color:#3b82f60d}.text-blue-500\\/50{color:#3b82f680}.text-blue-500\\/55{color:#3b82f68c}.text-blue-500\\/60{color:#3b82f699}.text-blue-500\\/65{color:#3b82f6a6}.text-blue-500\\/70{color:#3b82f6b3}.text-blue-500\\/75{color:#3b82f6bf}.text-blue-500\\/80{color:#3b82f6cc}.text-blue-500\\/85{color:#3b82f6d9}.text-blue-500\\/90{color:#3b82f6e6}.text-blue-500\\/95{color:#3b82f6f2}.text-blue-600{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity, 1))}.text-blue-600\\/0{color:#2563eb00}.text-blue-600\\/10{color:#2563eb1a}.text-blue-600\\/100{color:#2563eb}.text-blue-600\\/15{color:#2563eb26}.text-blue-600\\/20{color:#2563eb33}.text-blue-600\\/25{color:#2563eb40}.text-blue-600\\/30{color:#2563eb4d}.text-blue-600\\/35{color:#2563eb59}.text-blue-600\\/40{color:#2563eb66}.text-blue-600\\/45{color:#2563eb73}.text-blue-600\\/5{color:#2563eb0d}.text-blue-600\\/50{color:#2563eb80}.text-blue-600\\/55{color:#2563eb8c}.text-blue-600\\/60{color:#2563eb99}.text-blue-600\\/65{color:#2563eba6}.text-blue-600\\/70{color:#2563ebb3}.text-blue-600\\/75{color:#2563ebbf}.text-blue-600\\/80{color:#2563ebcc}.text-blue-600\\/85{color:#2563ebd9}.text-blue-600\\/90{color:#2563ebe6}.text-blue-600\\/95{color:#2563ebf2}.text-blue-700{--tw-text-opacity: 1;color:rgb(29 78 216 / var(--tw-text-opacity, 1))}.text-blue-700\\/0{color:#1d4ed800}.text-blue-700\\/10{color:#1d4ed81a}.text-blue-700\\/100{color:#1d4ed8}.text-blue-700\\/15{color:#1d4ed826}.text-blue-700\\/20{color:#1d4ed833}.text-blue-700\\/25{color:#1d4ed840}.text-blue-700\\/30{color:#1d4ed84d}.text-blue-700\\/35{color:#1d4ed859}.text-blue-700\\/40{color:#1d4ed866}.text-blue-700\\/45{color:#1d4ed873}.text-blue-700\\/5{color:#1d4ed80d}.text-blue-700\\/50{color:#1d4ed880}.text-blue-700\\/55{color:#1d4ed88c}.text-blue-700\\/60{color:#1d4ed899}.text-blue-700\\/65{color:#1d4ed8a6}.text-blue-700\\/70{color:#1d4ed8b3}.text-blue-700\\/75{color:#1d4ed8bf}.text-blue-700\\/80{color:#1d4ed8cc}.text-blue-700\\/85{color:#1d4ed8d9}.text-blue-700\\/90{color:#1d4ed8e6}.text-blue-700\\/95{color:#1d4ed8f2}.text-blue-800{--tw-text-opacity: 1;color:rgb(30 64 175 / var(--tw-text-opacity, 1))}.text-blue-800\\/0{color:#1e40af00}.text-blue-800\\/10{color:#1e40af1a}.text-blue-800\\/100{color:#1e40af}.text-blue-800\\/15{color:#1e40af26}.text-blue-800\\/20{color:#1e40af33}.text-blue-800\\/25{color:#1e40af40}.text-blue-800\\/30{color:#1e40af4d}.text-blue-800\\/35{color:#1e40af59}.text-blue-800\\/40{color:#1e40af66}.text-blue-800\\/45{color:#1e40af73}.text-blue-800\\/5{color:#1e40af0d}.text-blue-800\\/50{color:#1e40af80}.text-blue-800\\/55{color:#1e40af8c}.text-blue-800\\/60{color:#1e40af99}.text-blue-800\\/65{color:#1e40afa6}.text-blue-800\\/70{color:#1e40afb3}.text-blue-800\\/75{color:#1e40afbf}.text-blue-800\\/80{color:#1e40afcc}.text-blue-800\\/85{color:#1e40afd9}.text-blue-800\\/90{color:#1e40afe6}.text-blue-800\\/95{color:#1e40aff2}.text-blue-900{--tw-text-opacity: 1;color:rgb(30 58 138 / var(--tw-text-opacity, 1))}.text-blue-900\\/0{color:#1e3a8a00}.text-blue-900\\/10{color:#1e3a8a1a}.text-blue-900\\/100{color:#1e3a8a}.text-blue-900\\/15{color:#1e3a8a26}.text-blue-900\\/20{color:#1e3a8a33}.text-blue-900\\/25{color:#1e3a8a40}.text-blue-900\\/30{color:#1e3a8a4d}.text-blue-900\\/35{color:#1e3a8a59}.text-blue-900\\/40{color:#1e3a8a66}.text-blue-900\\/45{color:#1e3a8a73}.text-blue-900\\/5{color:#1e3a8a0d}.text-blue-900\\/50{color:#1e3a8a80}.text-blue-900\\/55{color:#1e3a8a8c}.text-blue-900\\/60{color:#1e3a8a99}.text-blue-900\\/65{color:#1e3a8aa6}.text-blue-900\\/70{color:#1e3a8ab3}.text-blue-900\\/75{color:#1e3a8abf}.text-blue-900\\/80{color:#1e3a8acc}.text-blue-900\\/85{color:#1e3a8ad9}.text-blue-900\\/90{color:#1e3a8ae6}.text-blue-900\\/95{color:#1e3a8af2}.text-card-foreground{color:hsl(var(--card-foreground))}.text-current{color:currentColor}.text-destructive{color:hsl(var(--destructive))}.text-destructive-foreground{color:hsl(var(--destructive-foreground))}.text-foreground{color:hsl(var(--foreground))}.text-foreground\\/50{color:hsl(var(--foreground) / .5)}.text-gray-100{--tw-text-opacity: 1;color:rgb(243 244 246 / var(--tw-text-opacity, 1))}.text-gray-100\\/0{color:#f3f4f600}.text-gray-100\\/10{color:#f3f4f61a}.text-gray-100\\/100{color:#f3f4f6}.text-gray-100\\/15{color:#f3f4f626}.text-gray-100\\/20{color:#f3f4f633}.text-gray-100\\/25{color:#f3f4f640}.text-gray-100\\/30{color:#f3f4f64d}.text-gray-100\\/35{color:#f3f4f659}.text-gray-100\\/40{color:#f3f4f666}.text-gray-100\\/45{color:#f3f4f673}.text-gray-100\\/5{color:#f3f4f60d}.text-gray-100\\/50{color:#f3f4f680}.text-gray-100\\/55{color:#f3f4f68c}.text-gray-100\\/60{color:#f3f4f699}.text-gray-100\\/65{color:#f3f4f6a6}.text-gray-100\\/70{color:#f3f4f6b3}.text-gray-100\\/75{color:#f3f4f6bf}.text-gray-100\\/80{color:#f3f4f6cc}.text-gray-100\\/85{color:#f3f4f6d9}.text-gray-100\\/90{color:#f3f4f6e6}.text-gray-100\\/95{color:#f3f4f6f2}.text-gray-200{--tw-text-opacity: 1;color:rgb(229 231 235 / var(--tw-text-opacity, 1))}.text-gray-200\\/0{color:#e5e7eb00}.text-gray-200\\/10{color:#e5e7eb1a}.text-gray-200\\/100{color:#e5e7eb}.text-gray-200\\/15{color:#e5e7eb26}.text-gray-200\\/20{color:#e5e7eb33}.text-gray-200\\/25{color:#e5e7eb40}.text-gray-200\\/30{color:#e5e7eb4d}.text-gray-200\\/35{color:#e5e7eb59}.text-gray-200\\/40{color:#e5e7eb66}.text-gray-200\\/45{color:#e5e7eb73}.text-gray-200\\/5{color:#e5e7eb0d}.text-gray-200\\/50{color:#e5e7eb80}.text-gray-200\\/55{color:#e5e7eb8c}.text-gray-200\\/60{color:#e5e7eb99}.text-gray-200\\/65{color:#e5e7eba6}.text-gray-200\\/70{color:#e5e7ebb3}.text-gray-200\\/75{color:#e5e7ebbf}.text-gray-200\\/80{color:#e5e7ebcc}.text-gray-200\\/85{color:#e5e7ebd9}.text-gray-200\\/90{color:#e5e7ebe6}.text-gray-200\\/95{color:#e5e7ebf2}.text-gray-300{--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.text-gray-300\\/0{color:#d1d5db00}.text-gray-300\\/10{color:#d1d5db1a}.text-gray-300\\/100{color:#d1d5db}.text-gray-300\\/15{color:#d1d5db26}.text-gray-300\\/20{color:#d1d5db33}.text-gray-300\\/25{color:#d1d5db40}.text-gray-300\\/30{color:#d1d5db4d}.text-gray-300\\/35{color:#d1d5db59}.text-gray-300\\/40{color:#d1d5db66}.text-gray-300\\/45{color:#d1d5db73}.text-gray-300\\/5{color:#d1d5db0d}.text-gray-300\\/50{color:#d1d5db80}.text-gray-300\\/55{color:#d1d5db8c}.text-gray-300\\/60{color:#d1d5db99}.text-gray-300\\/65{color:#d1d5dba6}.text-gray-300\\/70{color:#d1d5dbb3}.text-gray-300\\/75{color:#d1d5dbbf}.text-gray-300\\/80{color:#d1d5dbcc}.text-gray-300\\/85{color:#d1d5dbd9}.text-gray-300\\/90{color:#d1d5dbe6}.text-gray-300\\/95{color:#d1d5dbf2}.text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.text-gray-400\\/0{color:#9ca3af00}.text-gray-400\\/10{color:#9ca3af1a}.text-gray-400\\/100{color:#9ca3af}.text-gray-400\\/15{color:#9ca3af26}.text-gray-400\\/20{color:#9ca3af33}.text-gray-400\\/25{color:#9ca3af40}.text-gray-400\\/30{color:#9ca3af4d}.text-gray-400\\/35{color:#9ca3af59}.text-gray-400\\/40{color:#9ca3af66}.text-gray-400\\/45{color:#9ca3af73}.text-gray-400\\/5{color:#9ca3af0d}.text-gray-400\\/50{color:#9ca3af80}.text-gray-400\\/55{color:#9ca3af8c}.text-gray-400\\/60{color:#9ca3af99}.text-gray-400\\/65{color:#9ca3afa6}.text-gray-400\\/70{color:#9ca3afb3}.text-gray-400\\/75{color:#9ca3afbf}.text-gray-400\\/80{color:#9ca3afcc}.text-gray-400\\/85{color:#9ca3afd9}.text-gray-400\\/90{color:#9ca3afe6}.text-gray-400\\/95{color:#9ca3aff2}.text-gray-50{--tw-text-opacity: 1;color:rgb(249 250 251 / var(--tw-text-opacity, 1))}.text-gray-50\\/0{color:#f9fafb00}.text-gray-50\\/10{color:#f9fafb1a}.text-gray-50\\/100{color:#f9fafb}.text-gray-50\\/15{color:#f9fafb26}.text-gray-50\\/20{color:#f9fafb33}.text-gray-50\\/25{color:#f9fafb40}.text-gray-50\\/30{color:#f9fafb4d}.text-gray-50\\/35{color:#f9fafb59}.text-gray-50\\/40{color:#f9fafb66}.text-gray-50\\/45{color:#f9fafb73}.text-gray-50\\/5{color:#f9fafb0d}.text-gray-50\\/50{color:#f9fafb80}.text-gray-50\\/55{color:#f9fafb8c}.text-gray-50\\/60{color:#f9fafb99}.text-gray-50\\/65{color:#f9fafba6}.text-gray-50\\/70{color:#f9fafbb3}.text-gray-50\\/75{color:#f9fafbbf}.text-gray-50\\/80{color:#f9fafbcc}.text-gray-50\\/85{color:#f9fafbd9}.text-gray-50\\/90{color:#f9fafbe6}.text-gray-50\\/95{color:#f9fafbf2}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.text-gray-500\\/0{color:#6b728000}.text-gray-500\\/10{color:#6b72801a}.text-gray-500\\/100{color:#6b7280}.text-gray-500\\/15{color:#6b728026}.text-gray-500\\/20{color:#6b728033}.text-gray-500\\/25{color:#6b728040}.text-gray-500\\/30{color:#6b72804d}.text-gray-500\\/35{color:#6b728059}.text-gray-500\\/40{color:#6b728066}.text-gray-500\\/45{color:#6b728073}.text-gray-500\\/5{color:#6b72800d}.text-gray-500\\/50{color:#6b728080}.text-gray-500\\/55{color:#6b72808c}.text-gray-500\\/60{color:#6b728099}.text-gray-500\\/65{color:#6b7280a6}.text-gray-500\\/70{color:#6b7280b3}.text-gray-500\\/75{color:#6b7280bf}.text-gray-500\\/80{color:#6b7280cc}.text-gray-500\\/85{color:#6b7280d9}.text-gray-500\\/90{color:#6b7280e6}.text-gray-500\\/95{color:#6b7280f2}.text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.text-gray-600\\/0{color:#4b556300}.text-gray-600\\/10{color:#4b55631a}.text-gray-600\\/100{color:#4b5563}.text-gray-600\\/15{color:#4b556326}.text-gray-600\\/20{color:#4b556333}.text-gray-600\\/25{color:#4b556340}.text-gray-600\\/30{color:#4b55634d}.text-gray-600\\/35{color:#4b556359}.text-gray-600\\/40{color:#4b556366}.text-gray-600\\/45{color:#4b556373}.text-gray-600\\/5{color:#4b55630d}.text-gray-600\\/50{color:#4b556380}.text-gray-600\\/55{color:#4b55638c}.text-gray-600\\/60{color:#4b556399}.text-gray-600\\/65{color:#4b5563a6}.text-gray-600\\/70{color:#4b5563b3}.text-gray-600\\/75{color:#4b5563bf}.text-gray-600\\/80{color:#4b5563cc}.text-gray-600\\/85{color:#4b5563d9}.text-gray-600\\/90{color:#4b5563e6}.text-gray-600\\/95{color:#4b5563f2}.text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.text-gray-700\\/0{color:#37415100}.text-gray-700\\/10{color:#3741511a}.text-gray-700\\/100{color:#374151}.text-gray-700\\/15{color:#37415126}.text-gray-700\\/20{color:#37415133}.text-gray-700\\/25{color:#37415140}.text-gray-700\\/30{color:#3741514d}.text-gray-700\\/35{color:#37415159}.text-gray-700\\/40{color:#37415166}.text-gray-700\\/45{color:#37415173}.text-gray-700\\/5{color:#3741510d}.text-gray-700\\/50{color:#37415180}.text-gray-700\\/55{color:#3741518c}.text-gray-700\\/60{color:#37415199}.text-gray-700\\/65{color:#374151a6}.text-gray-700\\/70{color:#374151b3}.text-gray-700\\/75{color:#374151bf}.text-gray-700\\/80{color:#374151cc}.text-gray-700\\/85{color:#374151d9}.text-gray-700\\/90{color:#374151e6}.text-gray-700\\/95{color:#374151f2}.text-gray-800{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity, 1))}.text-gray-800\\/0{color:#1f293700}.text-gray-800\\/10{color:#1f29371a}.text-gray-800\\/100{color:#1f2937}.text-gray-800\\/15{color:#1f293726}.text-gray-800\\/20{color:#1f293733}.text-gray-800\\/25{color:#1f293740}.text-gray-800\\/30{color:#1f29374d}.text-gray-800\\/35{color:#1f293759}.text-gray-800\\/40{color:#1f293766}.text-gray-800\\/45{color:#1f293773}.text-gray-800\\/5{color:#1f29370d}.text-gray-800\\/50{color:#1f293780}.text-gray-800\\/55{color:#1f29378c}.text-gray-800\\/60{color:#1f293799}.text-gray-800\\/65{color:#1f2937a6}.text-gray-800\\/70{color:#1f2937b3}.text-gray-800\\/75{color:#1f2937bf}.text-gray-800\\/80{color:#1f2937cc}.text-gray-800\\/85{color:#1f2937d9}.text-gray-800\\/90{color:#1f2937e6}.text-gray-800\\/95{color:#1f2937f2}.text-gray-900{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.text-gray-900\\/0{color:#11182700}.text-gray-900\\/10{color:#1118271a}.text-gray-900\\/100{color:#111827}.text-gray-900\\/15{color:#11182726}.text-gray-900\\/20{color:#11182733}.text-gray-900\\/25{color:#11182740}.text-gray-900\\/30{color:#1118274d}.text-gray-900\\/35{color:#11182759}.text-gray-900\\/40{color:#11182766}.text-gray-900\\/45{color:#11182773}.text-gray-900\\/5{color:#1118270d}.text-gray-900\\/50{color:#11182780}.text-gray-900\\/55{color:#1118278c}.text-gray-900\\/60{color:#11182799}.text-gray-900\\/65{color:#111827a6}.text-gray-900\\/70{color:#111827b3}.text-gray-900\\/75{color:#111827bf}.text-gray-900\\/80{color:#111827cc}.text-gray-900\\/85{color:#111827d9}.text-gray-900\\/90{color:#111827e6}.text-gray-900\\/95{color:#111827f2}.text-green-100{--tw-text-opacity: 1;color:rgb(220 252 231 / var(--tw-text-opacity, 1))}.text-green-100\\/0{color:#dcfce700}.text-green-100\\/10{color:#dcfce71a}.text-green-100\\/100{color:#dcfce7}.text-green-100\\/15{color:#dcfce726}.text-green-100\\/20{color:#dcfce733}.text-green-100\\/25{color:#dcfce740}.text-green-100\\/30{color:#dcfce74d}.text-green-100\\/35{color:#dcfce759}.text-green-100\\/40{color:#dcfce766}.text-green-100\\/45{color:#dcfce773}.text-green-100\\/5{color:#dcfce70d}.text-green-100\\/50{color:#dcfce780}.text-green-100\\/55{color:#dcfce78c}.text-green-100\\/60{color:#dcfce799}.text-green-100\\/65{color:#dcfce7a6}.text-green-100\\/70{color:#dcfce7b3}.text-green-100\\/75{color:#dcfce7bf}.text-green-100\\/80{color:#dcfce7cc}.text-green-100\\/85{color:#dcfce7d9}.text-green-100\\/90{color:#dcfce7e6}.text-green-100\\/95{color:#dcfce7f2}.text-green-200{--tw-text-opacity: 1;color:rgb(187 247 208 / var(--tw-text-opacity, 1))}.text-green-200\\/0{color:#bbf7d000}.text-green-200\\/10{color:#bbf7d01a}.text-green-200\\/100{color:#bbf7d0}.text-green-200\\/15{color:#bbf7d026}.text-green-200\\/20{color:#bbf7d033}.text-green-200\\/25{color:#bbf7d040}.text-green-200\\/30{color:#bbf7d04d}.text-green-200\\/35{color:#bbf7d059}.text-green-200\\/40{color:#bbf7d066}.text-green-200\\/45{color:#bbf7d073}.text-green-200\\/5{color:#bbf7d00d}.text-green-200\\/50{color:#bbf7d080}.text-green-200\\/55{color:#bbf7d08c}.text-green-200\\/60{color:#bbf7d099}.text-green-200\\/65{color:#bbf7d0a6}.text-green-200\\/70{color:#bbf7d0b3}.text-green-200\\/75{color:#bbf7d0bf}.text-green-200\\/80{color:#bbf7d0cc}.text-green-200\\/85{color:#bbf7d0d9}.text-green-200\\/90{color:#bbf7d0e6}.text-green-200\\/95{color:#bbf7d0f2}.text-green-300{--tw-text-opacity: 1;color:rgb(134 239 172 / var(--tw-text-opacity, 1))}.text-green-300\\/0{color:#86efac00}.text-green-300\\/10{color:#86efac1a}.text-green-300\\/100{color:#86efac}.text-green-300\\/15{color:#86efac26}.text-green-300\\/20{color:#86efac33}.text-green-300\\/25{color:#86efac40}.text-green-300\\/30{color:#86efac4d}.text-green-300\\/35{color:#86efac59}.text-green-300\\/40{color:#86efac66}.text-green-300\\/45{color:#86efac73}.text-green-300\\/5{color:#86efac0d}.text-green-300\\/50{color:#86efac80}.text-green-300\\/55{color:#86efac8c}.text-green-300\\/60{color:#86efac99}.text-green-300\\/65{color:#86efaca6}.text-green-300\\/70{color:#86efacb3}.text-green-300\\/75{color:#86efacbf}.text-green-300\\/80{color:#86efaccc}.text-green-300\\/85{color:#86efacd9}.text-green-300\\/90{color:#86eface6}.text-green-300\\/95{color:#86efacf2}.text-green-400{--tw-text-opacity: 1;color:rgb(74 222 128 / var(--tw-text-opacity, 1))}.text-green-400\\/0{color:#4ade8000}.text-green-400\\/10{color:#4ade801a}.text-green-400\\/100{color:#4ade80}.text-green-400\\/15{color:#4ade8026}.text-green-400\\/20{color:#4ade8033}.text-green-400\\/25{color:#4ade8040}.text-green-400\\/30{color:#4ade804d}.text-green-400\\/35{color:#4ade8059}.text-green-400\\/40{color:#4ade8066}.text-green-400\\/45{color:#4ade8073}.text-green-400\\/5{color:#4ade800d}.text-green-400\\/50{color:#4ade8080}.text-green-400\\/55{color:#4ade808c}.text-green-400\\/60{color:#4ade8099}.text-green-400\\/65{color:#4ade80a6}.text-green-400\\/70{color:#4ade80b3}.text-green-400\\/75{color:#4ade80bf}.text-green-400\\/80{color:#4ade80cc}.text-green-400\\/85{color:#4ade80d9}.text-green-400\\/90{color:#4ade80e6}.text-green-400\\/95{color:#4ade80f2}.text-green-50{--tw-text-opacity: 1;color:rgb(240 253 244 / var(--tw-text-opacity, 1))}.text-green-50\\/0{color:#f0fdf400}.text-green-50\\/10{color:#f0fdf41a}.text-green-50\\/100{color:#f0fdf4}.text-green-50\\/15{color:#f0fdf426}.text-green-50\\/20{color:#f0fdf433}.text-green-50\\/25{color:#f0fdf440}.text-green-50\\/30{color:#f0fdf44d}.text-green-50\\/35{color:#f0fdf459}.text-green-50\\/40{color:#f0fdf466}.text-green-50\\/45{color:#f0fdf473}.text-green-50\\/5{color:#f0fdf40d}.text-green-50\\/50{color:#f0fdf480}.text-green-50\\/55{color:#f0fdf48c}.text-green-50\\/60{color:#f0fdf499}.text-green-50\\/65{color:#f0fdf4a6}.text-green-50\\/70{color:#f0fdf4b3}.text-green-50\\/75{color:#f0fdf4bf}.text-green-50\\/80{color:#f0fdf4cc}.text-green-50\\/85{color:#f0fdf4d9}.text-green-50\\/90{color:#f0fdf4e6}.text-green-50\\/95{color:#f0fdf4f2}.text-green-500{--tw-text-opacity: 1;color:rgb(34 197 94 / var(--tw-text-opacity, 1))}.text-green-500\\/0{color:#22c55e00}.text-green-500\\/10{color:#22c55e1a}.text-green-500\\/100{color:#22c55e}.text-green-500\\/15{color:#22c55e26}.text-green-500\\/20{color:#22c55e33}.text-green-500\\/25{color:#22c55e40}.text-green-500\\/30{color:#22c55e4d}.text-green-500\\/35{color:#22c55e59}.text-green-500\\/40{color:#22c55e66}.text-green-500\\/45{color:#22c55e73}.text-green-500\\/5{color:#22c55e0d}.text-green-500\\/50{color:#22c55e80}.text-green-500\\/55{color:#22c55e8c}.text-green-500\\/60{color:#22c55e99}.text-green-500\\/65{color:#22c55ea6}.text-green-500\\/70{color:#22c55eb3}.text-green-500\\/75{color:#22c55ebf}.text-green-500\\/80{color:#22c55ecc}.text-green-500\\/85{color:#22c55ed9}.text-green-500\\/90{color:#22c55ee6}.text-green-500\\/95{color:#22c55ef2}.text-green-600{--tw-text-opacity: 1;color:rgb(22 163 74 / var(--tw-text-opacity, 1))}.text-green-600\\/0{color:#16a34a00}.text-green-600\\/10{color:#16a34a1a}.text-green-600\\/100{color:#16a34a}.text-green-600\\/15{color:#16a34a26}.text-green-600\\/20{color:#16a34a33}.text-green-600\\/25{color:#16a34a40}.text-green-600\\/30{color:#16a34a4d}.text-green-600\\/35{color:#16a34a59}.text-green-600\\/40{color:#16a34a66}.text-green-600\\/45{color:#16a34a73}.text-green-600\\/5{color:#16a34a0d}.text-green-600\\/50{color:#16a34a80}.text-green-600\\/55{color:#16a34a8c}.text-green-600\\/60{color:#16a34a99}.text-green-600\\/65{color:#16a34aa6}.text-green-600\\/70{color:#16a34ab3}.text-green-600\\/75{color:#16a34abf}.text-green-600\\/80{color:#16a34acc}.text-green-600\\/85{color:#16a34ad9}.text-green-600\\/90{color:#16a34ae6}.text-green-600\\/95{color:#16a34af2}.text-green-700{--tw-text-opacity: 1;color:rgb(21 128 61 / var(--tw-text-opacity, 1))}.text-green-700\\/0{color:#15803d00}.text-green-700\\/10{color:#15803d1a}.text-green-700\\/100{color:#15803d}.text-green-700\\/15{color:#15803d26}.text-green-700\\/20{color:#15803d33}.text-green-700\\/25{color:#15803d40}.text-green-700\\/30{color:#15803d4d}.text-green-700\\/35{color:#15803d59}.text-green-700\\/40{color:#15803d66}.text-green-700\\/45{color:#15803d73}.text-green-700\\/5{color:#15803d0d}.text-green-700\\/50{color:#15803d80}.text-green-700\\/55{color:#15803d8c}.text-green-700\\/60{color:#15803d99}.text-green-700\\/65{color:#15803da6}.text-green-700\\/70{color:#15803db3}.text-green-700\\/75{color:#15803dbf}.text-green-700\\/80{color:#15803dcc}.text-green-700\\/85{color:#15803dd9}.text-green-700\\/90{color:#15803de6}.text-green-700\\/95{color:#15803df2}.text-green-800{--tw-text-opacity: 1;color:rgb(22 101 52 / var(--tw-text-opacity, 1))}.text-green-800\\/0{color:#16653400}.text-green-800\\/10{color:#1665341a}.text-green-800\\/100{color:#166534}.text-green-800\\/15{color:#16653426}.text-green-800\\/20{color:#16653433}.text-green-800\\/25{color:#16653440}.text-green-800\\/30{color:#1665344d}.text-green-800\\/35{color:#16653459}.text-green-800\\/40{color:#16653466}.text-green-800\\/45{color:#16653473}.text-green-800\\/5{color:#1665340d}.text-green-800\\/50{color:#16653480}.text-green-800\\/55{color:#1665348c}.text-green-800\\/60{color:#16653499}.text-green-800\\/65{color:#166534a6}.text-green-800\\/70{color:#166534b3}.text-green-800\\/75{color:#166534bf}.text-green-800\\/80{color:#166534cc}.text-green-800\\/85{color:#166534d9}.text-green-800\\/90{color:#166534e6}.text-green-800\\/95{color:#166534f2}.text-green-900{--tw-text-opacity: 1;color:rgb(20 83 45 / var(--tw-text-opacity, 1))}.text-green-900\\/0{color:#14532d00}.text-green-900\\/10{color:#14532d1a}.text-green-900\\/100{color:#14532d}.text-green-900\\/15{color:#14532d26}.text-green-900\\/20{color:#14532d33}.text-green-900\\/25{color:#14532d40}.text-green-900\\/30{color:#14532d4d}.text-green-900\\/35{color:#14532d59}.text-green-900\\/40{color:#14532d66}.text-green-900\\/45{color:#14532d73}.text-green-900\\/5{color:#14532d0d}.text-green-900\\/50{color:#14532d80}.text-green-900\\/55{color:#14532d8c}.text-green-900\\/60{color:#14532d99}.text-green-900\\/65{color:#14532da6}.text-green-900\\/70{color:#14532db3}.text-green-900\\/75{color:#14532dbf}.text-green-900\\/80{color:#14532dcc}.text-green-900\\/85{color:#14532dd9}.text-green-900\\/90{color:#14532de6}.text-green-900\\/95{color:#14532df2}.text-muted-foreground{color:hsl(var(--muted-foreground))}.text-popover-foreground{color:hsl(var(--popover-foreground))}.text-red-100{--tw-text-opacity: 1;color:rgb(254 226 226 / var(--tw-text-opacity, 1))}.text-red-100\\/0{color:#fee2e200}.text-red-100\\/10{color:#fee2e21a}.text-red-100\\/100{color:#fee2e2}.text-red-100\\/15{color:#fee2e226}.text-red-100\\/20{color:#fee2e233}.text-red-100\\/25{color:#fee2e240}.text-red-100\\/30{color:#fee2e24d}.text-red-100\\/35{color:#fee2e259}.text-red-100\\/40{color:#fee2e266}.text-red-100\\/45{color:#fee2e273}.text-red-100\\/5{color:#fee2e20d}.text-red-100\\/50{color:#fee2e280}.text-red-100\\/55{color:#fee2e28c}.text-red-100\\/60{color:#fee2e299}.text-red-100\\/65{color:#fee2e2a6}.text-red-100\\/70{color:#fee2e2b3}.text-red-100\\/75{color:#fee2e2bf}.text-red-100\\/80{color:#fee2e2cc}.text-red-100\\/85{color:#fee2e2d9}.text-red-100\\/90{color:#fee2e2e6}.text-red-100\\/95{color:#fee2e2f2}.text-red-200{--tw-text-opacity: 1;color:rgb(254 202 202 / var(--tw-text-opacity, 1))}.text-red-200\\/0{color:#fecaca00}.text-red-200\\/10{color:#fecaca1a}.text-red-200\\/100{color:#fecaca}.text-red-200\\/15{color:#fecaca26}.text-red-200\\/20{color:#fecaca33}.text-red-200\\/25{color:#fecaca40}.text-red-200\\/30{color:#fecaca4d}.text-red-200\\/35{color:#fecaca59}.text-red-200\\/40{color:#fecaca66}.text-red-200\\/45{color:#fecaca73}.text-red-200\\/5{color:#fecaca0d}.text-red-200\\/50{color:#fecaca80}.text-red-200\\/55{color:#fecaca8c}.text-red-200\\/60{color:#fecaca99}.text-red-200\\/65{color:#fecacaa6}.text-red-200\\/70{color:#fecacab3}.text-red-200\\/75{color:#fecacabf}.text-red-200\\/80{color:#fecacacc}.text-red-200\\/85{color:#fecacad9}.text-red-200\\/90{color:#fecacae6}.text-red-200\\/95{color:#fecacaf2}.text-red-300{--tw-text-opacity: 1;color:rgb(252 165 165 / var(--tw-text-opacity, 1))}.text-red-300\\/0{color:#fca5a500}.text-red-300\\/10{color:#fca5a51a}.text-red-300\\/100{color:#fca5a5}.text-red-300\\/15{color:#fca5a526}.text-red-300\\/20{color:#fca5a533}.text-red-300\\/25{color:#fca5a540}.text-red-300\\/30{color:#fca5a54d}.text-red-300\\/35{color:#fca5a559}.text-red-300\\/40{color:#fca5a566}.text-red-300\\/45{color:#fca5a573}.text-red-300\\/5{color:#fca5a50d}.text-red-300\\/50{color:#fca5a580}.text-red-300\\/55{color:#fca5a58c}.text-red-300\\/60{color:#fca5a599}.text-red-300\\/65{color:#fca5a5a6}.text-red-300\\/70{color:#fca5a5b3}.text-red-300\\/75{color:#fca5a5bf}.text-red-300\\/80{color:#fca5a5cc}.text-red-300\\/85{color:#fca5a5d9}.text-red-300\\/90{color:#fca5a5e6}.text-red-300\\/95{color:#fca5a5f2}.text-red-400{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.text-red-400\\/0{color:#f8717100}.text-red-400\\/10{color:#f871711a}.text-red-400\\/100{color:#f87171}.text-red-400\\/15{color:#f8717126}.text-red-400\\/20{color:#f8717133}.text-red-400\\/25{color:#f8717140}.text-red-400\\/30{color:#f871714d}.text-red-400\\/35{color:#f8717159}.text-red-400\\/40{color:#f8717166}.text-red-400\\/45{color:#f8717173}.text-red-400\\/5{color:#f871710d}.text-red-400\\/50{color:#f8717180}.text-red-400\\/55{color:#f871718c}.text-red-400\\/60{color:#f8717199}.text-red-400\\/65{color:#f87171a6}.text-red-400\\/70{color:#f87171b3}.text-red-400\\/75{color:#f87171bf}.text-red-400\\/80{color:#f87171cc}.text-red-400\\/85{color:#f87171d9}.text-red-400\\/90{color:#f87171e6}.text-red-400\\/95{color:#f87171f2}.text-red-50{--tw-text-opacity: 1;color:rgb(254 242 242 / var(--tw-text-opacity, 1))}.text-red-50\\/0{color:#fef2f200}.text-red-50\\/10{color:#fef2f21a}.text-red-50\\/100{color:#fef2f2}.text-red-50\\/15{color:#fef2f226}.text-red-50\\/20{color:#fef2f233}.text-red-50\\/25{color:#fef2f240}.text-red-50\\/30{color:#fef2f24d}.text-red-50\\/35{color:#fef2f259}.text-red-50\\/40{color:#fef2f266}.text-red-50\\/45{color:#fef2f273}.text-red-50\\/5{color:#fef2f20d}.text-red-50\\/50{color:#fef2f280}.text-red-50\\/55{color:#fef2f28c}.text-red-50\\/60{color:#fef2f299}.text-red-50\\/65{color:#fef2f2a6}.text-red-50\\/70{color:#fef2f2b3}.text-red-50\\/75{color:#fef2f2bf}.text-red-50\\/80{color:#fef2f2cc}.text-red-50\\/85{color:#fef2f2d9}.text-red-50\\/90{color:#fef2f2e6}.text-red-50\\/95{color:#fef2f2f2}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.text-red-500\\/0{color:#ef444400}.text-red-500\\/10{color:#ef44441a}.text-red-500\\/100{color:#ef4444}.text-red-500\\/15{color:#ef444426}.text-red-500\\/20{color:#ef444433}.text-red-500\\/25{color:#ef444440}.text-red-500\\/30{color:#ef44444d}.text-red-500\\/35{color:#ef444459}.text-red-500\\/40{color:#ef444466}.text-red-500\\/45{color:#ef444473}.text-red-500\\/5{color:#ef44440d}.text-red-500\\/50{color:#ef444480}.text-red-500\\/55{color:#ef44448c}.text-red-500\\/60{color:#ef444499}.text-red-500\\/65{color:#ef4444a6}.text-red-500\\/70{color:#ef4444b3}.text-red-500\\/75{color:#ef4444bf}.text-red-500\\/80{color:#ef4444cc}.text-red-500\\/85{color:#ef4444d9}.text-red-500\\/90{color:#ef4444e6}.text-red-500\\/95{color:#ef4444f2}.text-red-600{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}.text-red-600\\/0{color:#dc262600}.text-red-600\\/10{color:#dc26261a}.text-red-600\\/100{color:#dc2626}.text-red-600\\/15{color:#dc262626}.text-red-600\\/20{color:#dc262633}.text-red-600\\/25{color:#dc262640}.text-red-600\\/30{color:#dc26264d}.text-red-600\\/35{color:#dc262659}.text-red-600\\/40{color:#dc262666}.text-red-600\\/45{color:#dc262673}.text-red-600\\/5{color:#dc26260d}.text-red-600\\/50{color:#dc262680}.text-red-600\\/55{color:#dc26268c}.text-red-600\\/60{color:#dc262699}.text-red-600\\/65{color:#dc2626a6}.text-red-600\\/70{color:#dc2626b3}.text-red-600\\/75{color:#dc2626bf}.text-red-600\\/80{color:#dc2626cc}.text-red-600\\/85{color:#dc2626d9}.text-red-600\\/90{color:#dc2626e6}.text-red-600\\/95{color:#dc2626f2}.text-red-700{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity, 1))}.text-red-700\\/0{color:#b91c1c00}.text-red-700\\/10{color:#b91c1c1a}.text-red-700\\/100{color:#b91c1c}.text-red-700\\/15{color:#b91c1c26}.text-red-700\\/20{color:#b91c1c33}.text-red-700\\/25{color:#b91c1c40}.text-red-700\\/30{color:#b91c1c4d}.text-red-700\\/35{color:#b91c1c59}.text-red-700\\/40{color:#b91c1c66}.text-red-700\\/45{color:#b91c1c73}.text-red-700\\/5{color:#b91c1c0d}.text-red-700\\/50{color:#b91c1c80}.text-red-700\\/55{color:#b91c1c8c}.text-red-700\\/60{color:#b91c1c99}.text-red-700\\/65{color:#b91c1ca6}.text-red-700\\/70{color:#b91c1cb3}.text-red-700\\/75{color:#b91c1cbf}.text-red-700\\/80{color:#b91c1ccc}.text-red-700\\/85{color:#b91c1cd9}.text-red-700\\/90{color:#b91c1ce6}.text-red-700\\/95{color:#b91c1cf2}.text-red-800{--tw-text-opacity: 1;color:rgb(153 27 27 / var(--tw-text-opacity, 1))}.text-red-800\\/0{color:#991b1b00}.text-red-800\\/10{color:#991b1b1a}.text-red-800\\/100{color:#991b1b}.text-red-800\\/15{color:#991b1b26}.text-red-800\\/20{color:#991b1b33}.text-red-800\\/25{color:#991b1b40}.text-red-800\\/30{color:#991b1b4d}.text-red-800\\/35{color:#991b1b59}.text-red-800\\/40{color:#991b1b66}.text-red-800\\/45{color:#991b1b73}.text-red-800\\/5{color:#991b1b0d}.text-red-800\\/50{color:#991b1b80}.text-red-800\\/55{color:#991b1b8c}.text-red-800\\/60{color:#991b1b99}.text-red-800\\/65{color:#991b1ba6}.text-red-800\\/70{color:#991b1bb3}.text-red-800\\/75{color:#991b1bbf}.text-red-800\\/80{color:#991b1bcc}.text-red-800\\/85{color:#991b1bd9}.text-red-800\\/90{color:#991b1be6}.text-red-800\\/95{color:#991b1bf2}.text-red-900{--tw-text-opacity: 1;color:rgb(127 29 29 / var(--tw-text-opacity, 1))}.text-red-900\\/0{color:#7f1d1d00}.text-red-900\\/10{color:#7f1d1d1a}.text-red-900\\/100{color:#7f1d1d}.text-red-900\\/15{color:#7f1d1d26}.text-red-900\\/20{color:#7f1d1d33}.text-red-900\\/25{color:#7f1d1d40}.text-red-900\\/30{color:#7f1d1d4d}.text-red-900\\/35{color:#7f1d1d59}.text-red-900\\/40{color:#7f1d1d66}.text-red-900\\/45{color:#7f1d1d73}.text-red-900\\/5{color:#7f1d1d0d}.text-red-900\\/50{color:#7f1d1d80}.text-red-900\\/55{color:#7f1d1d8c}.text-red-900\\/60{color:#7f1d1d99}.text-red-900\\/65{color:#7f1d1da6}.text-red-900\\/70{color:#7f1d1db3}.text-red-900\\/75{color:#7f1d1dbf}.text-red-900\\/80{color:#7f1d1dcc}.text-red-900\\/85{color:#7f1d1dd9}.text-red-900\\/90{color:#7f1d1de6}.text-red-900\\/95{color:#7f1d1df2}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.underline{text-decoration-line:underline}.line-through{text-decoration-line:line-through}.underline-offset-4{text-underline-offset:4px}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-25{opacity:.25}.opacity-30{opacity:.3}.opacity-70{opacity:.7}.opacity-75{opacity:.75}.opacity-90{opacity:.9}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-none{--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.ring-0{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-ring{--tw-ring-color: hsl(var(--ring))}.ring-offset-background{--tw-ring-offset-color: hsl(var(--background))}.drop-shadow{--tw-drop-shadow: drop-shadow(0 1px 2px rgb(0 0 0 / .1)) drop-shadow(0 1px 1px rgb(0 0 0 / .06));filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.grayscale{--tw-grayscale: grayscale(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.animate-in{animation-duration:.3s;animation-fill-mode:both;animation-timing-function:cubic-bezier(.4,0,.2,1)}.fade-in-0{animation-name:fadeIn}.zoom-in-95{animation-name:zoomIn}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes zoomIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.app-container{max-width:1200px;margin:0 auto;padding:20px}@media (max-width: 768px){.app-container{padding:15px}}@media (max-width: 480px){.app-container{padding:10px}}.app-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:30px;padding-bottom:15px;border-bottom:1px solid #e0e0e0}@media (max-width: 768px){.app-header{flex-direction:column;align-items:flex-start;gap:10px}}.app-header h1{margin:0;color:#333}@media (max-width: 480px){.app-header h1{font-size:1.5rem}}.user-info{display:flex;align-items:center;gap:15px}@media (max-width: 480px){.user-info{gap:10px;flex-wrap:wrap}}.app-main{background-color:#fff;padding:20px;border-radius:8px;box-shadow:0 2px 4px #0000001a}@media (max-width: 768px){.app-main{padding:15px}}@media (max-width: 480px){.app-main{padding:10px;border-radius:6px}}.schema-selector{display:flex;align-items:center;gap:15px;margin-bottom:20px}@media (max-width: 768px){.schema-selector{flex-direction:column;align-items:flex-start;gap:10px}}.loading{text-align:center;padding:20px;color:#666}.error-message{background-color:#ffebee;color:#c62828;padding:10px 15px;border-radius:4px;margin-bottom:20px}@media (max-width: 480px){.error-message{padding:8px 12px;font-size:14px}}.import-job-status{margin-top:20px;padding:15px;background-color:#e8f5e9;border-radius:4px}@media (max-width: 480px){.import-job-status{padding:10px}}.login-container{max-width:400px;margin:100px auto;padding:30px;background-color:#fff;border-radius:8px;box-shadow:0 2px 10px #0000001a}@media (max-width: 768px){.login-container{max-width:85%;margin:60px auto;padding:20px}}@media (max-width: 480px){.login-container{max-width:95%;margin:30px auto;padding:15px}}.login-container h2{margin-top:0;margin-bottom:20px;text-align:center;color:#333}@media (max-width: 480px){.login-container h2{font-size:1.5rem;margin-bottom:15px}}.form-group{margin-bottom:15px}.form-group label{display:block;margin-bottom:5px;font-weight:500}.form-group input{width:100%;padding:8px 12px;border-radius:4px;border:1px solid #ccc;box-sizing:border-box}.file\\:border-0::file-selector-button{border-width:0px}.file\\:bg-transparent::file-selector-button{background-color:transparent}.file\\:text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.file\\:font-medium::file-selector-button{font-weight:500}.placeholder\\:text-gray-500::-moz-placeholder{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.placeholder\\:text-gray-500::placeholder{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.placeholder\\:text-muted-foreground::-moz-placeholder{color:hsl(var(--muted-foreground))}.placeholder\\:text-muted-foreground::placeholder{color:hsl(var(--muted-foreground))}.before\\:absolute:before{content:var(--tw-content);position:absolute}.before\\:inset-0:before{content:var(--tw-content);inset:0}.before\\:-z-10:before{content:var(--tw-content);z-index:-10}.before\\:rounded-full:before{content:var(--tw-content);border-radius:9999px}.before\\:bg-green-500:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity, 1))}.before\\:content-\\[\\'\\'\\]:before{--tw-content: \"\";content:var(--tw-content)}.hover\\:border-gray-400:hover{--tw-border-opacity: 1;border-color:rgb(156 163 175 / var(--tw-border-opacity, 1))}.hover\\:bg-blue-100:hover{--tw-bg-opacity: 1;background-color:rgb(219 234 254 / var(--tw-bg-opacity, 1))}.hover\\:bg-blue-700:hover{--tw-bg-opacity: 1;background-color:rgb(29 78 216 / var(--tw-bg-opacity, 1))}.hover\\:bg-gray-100:hover{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.hover\\:bg-gray-200:hover{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity, 1))}.hover\\:bg-gray-50:hover{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.hover\\:bg-red-100:hover{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity, 1))}.hover\\:bg-red-700:hover{--tw-bg-opacity: 1;background-color:rgb(185 28 28 / var(--tw-bg-opacity, 1))}.hover\\:bg-secondary:hover{background-color:hsl(var(--secondary))}.hover\\:text-blue-700:hover{--tw-text-opacity: 1;color:rgb(29 78 216 / var(--tw-text-opacity, 1))}.hover\\:text-blue-900:hover{--tw-text-opacity: 1;color:rgb(30 58 138 / var(--tw-text-opacity, 1))}.hover\\:text-foreground:hover{color:hsl(var(--foreground))}.hover\\:text-gray-900:hover{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.hover\\:underline:hover{text-decoration-line:underline}.hover\\:opacity-100:hover{opacity:1}.focus\\:border-blue-500:focus{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity, 1))}.focus\\:bg-blue-100:focus{--tw-bg-opacity: 1;background-color:rgb(219 234 254 / var(--tw-bg-opacity, 1))}.focus\\:bg-white:focus{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.focus\\:text-blue-900:focus{--tw-text-opacity: 1;color:rgb(30 58 138 / var(--tw-text-opacity, 1))}.focus\\:opacity-100:focus{opacity:1}.focus\\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\\:ring-blue-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity, 1))}.focus\\:ring-ring:focus{--tw-ring-color: hsl(var(--ring))}.focus\\:ring-offset-2:focus{--tw-ring-offset-width: 2px}.focus-visible\\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\\:ring-2:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\\:ring-blue-500:focus-visible{--tw-ring-opacity: 1;--tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity, 1))}.focus-visible\\:ring-gray-500:focus-visible{--tw-ring-opacity: 1;--tw-ring-color: rgb(107 114 128 / var(--tw-ring-opacity, 1))}.focus-visible\\:ring-red-500:focus-visible{--tw-ring-opacity: 1;--tw-ring-color: rgb(239 68 68 / var(--tw-ring-opacity, 1))}.focus-visible\\:ring-ring:focus-visible{--tw-ring-color: hsl(var(--ring))}.focus-visible\\:ring-offset-2:focus-visible{--tw-ring-offset-width: 2px}.focus-visible\\:ring-offset-background:focus-visible{--tw-ring-offset-color: hsl(var(--background))}.disabled\\:pointer-events-none:disabled{pointer-events:none}.disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\\:bg-gray-50:disabled{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.disabled\\:opacity-50:disabled{opacity:.5}.group:hover .group-hover\\:opacity-100{opacity:1}.group.destructive .group-\\[\\.destructive\\]\\:border-muted\\/40{border-color:hsl(var(--muted) / .4)}.group.destructive .group-\\[\\.destructive\\]\\:text-red-300{--tw-text-opacity: 1;color:rgb(252 165 165 / var(--tw-text-opacity, 1))}.group.destructive .group-\\[\\.destructive\\]\\:hover\\:border-destructive\\/30:hover{border-color:hsl(var(--destructive) / .3)}.group.destructive .group-\\[\\.destructive\\]\\:hover\\:bg-destructive:hover{background-color:hsl(var(--destructive))}.group.destructive .group-\\[\\.destructive\\]\\:hover\\:text-destructive-foreground:hover{color:hsl(var(--destructive-foreground))}.group.destructive .group-\\[\\.destructive\\]\\:hover\\:text-red-50:hover{--tw-text-opacity: 1;color:rgb(254 242 242 / var(--tw-text-opacity, 1))}.group.destructive .group-\\[\\.destructive\\]\\:focus\\:ring-destructive:focus{--tw-ring-color: hsl(var(--destructive))}.group.destructive .group-\\[\\.destructive\\]\\:focus\\:ring-red-400:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(248 113 113 / var(--tw-ring-opacity, 1))}.group.destructive .group-\\[\\.destructive\\]\\:focus\\:ring-offset-red-600:focus{--tw-ring-offset-color: #dc2626}.data-\\[disabled\\]\\:pointer-events-none[data-disabled]{pointer-events:none}.data-\\[side\\=bottom\\]\\:translate-y-1[data-side=bottom]{--tw-translate-y: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\\[side\\=left\\]\\:-translate-x-1[data-side=left]{--tw-translate-x: -.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\\[side\\=right\\]\\:translate-x-1[data-side=right]{--tw-translate-x: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\\[side\\=top\\]\\:-translate-y-1[data-side=top]{--tw-translate-y: -.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\\[state\\=checked\\]\\:translate-x-5[data-state=checked]{--tw-translate-x: 1.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\\[state\\=unchecked\\]\\:translate-x-0[data-state=unchecked],.data-\\[swipe\\=cancel\\]\\:translate-x-0[data-swipe=cancel]{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\\[swipe\\=end\\]\\:translate-x-\\[var\\(--radix-toast-swipe-end-x\\)\\][data-swipe=end]{--tw-translate-x: var(--radix-toast-swipe-end-x);transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\\[swipe\\=move\\]\\:translate-x-\\[var\\(--radix-toast-swipe-move-x\\)\\][data-swipe=move]{--tw-translate-x: var(--radix-toast-swipe-move-x);transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\\[disabled\\]\\:cursor-not-allowed[data-disabled]{cursor:not-allowed}.data-\\[state\\=checked\\]\\:bg-blue-50[data-state=checked]{--tw-bg-opacity: 1;background-color:rgb(239 246 255 / var(--tw-bg-opacity, 1))}.data-\\[state\\=checked\\]\\:bg-primary[data-state=checked]{background-color:hsl(var(--primary))}.data-\\[state\\=open\\]\\:bg-accent[data-state=open]{background-color:hsl(var(--accent))}.data-\\[state\\=unchecked\\]\\:bg-input[data-state=unchecked]{background-color:hsl(var(--input))}.data-\\[state\\=checked\\]\\:font-medium[data-state=checked]{font-weight:500}.data-\\[state\\=checked\\]\\:text-blue-900[data-state=checked]{--tw-text-opacity: 1;color:rgb(30 58 138 / var(--tw-text-opacity, 1))}.data-\\[state\\=checked\\]\\:text-primary-foreground[data-state=checked]{color:hsl(var(--primary-foreground))}.data-\\[state\\=open\\]\\:text-muted-foreground[data-state=open]{color:hsl(var(--muted-foreground))}.data-\\[disabled\\]\\:opacity-40[data-disabled]{opacity:.4}.data-\\[swipe\\=move\\]\\:transition-none[data-swipe=move]{transition-property:none}.data-\\[state\\=open\\]\\:animate-in[data-state=open]{animation-duration:.3s;animation-fill-mode:both;animation-timing-function:cubic-bezier(.4,0,.2,1)}.data-\\[state\\=open\\]\\:fade-in-0[data-state=open]{animation-name:fadeIn}.data-\\[state\\=open\\]\\:zoom-in-95[data-state=open]{animation-name:zoomIn}.dark\\:border-destructive:is([data-theme=dark] *){border-color:hsl(var(--destructive))}.dark\\:border-gray-700:is([data-theme=dark] *){--tw-border-opacity: 1;border-color:rgb(55 65 81 / var(--tw-border-opacity, 1))}.dark\\:bg-gray-900:is([data-theme=dark] *){--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity, 1))}.dark\\:text-gray-100:is([data-theme=dark] *){--tw-text-opacity: 1;color:rgb(243 244 246 / var(--tw-text-opacity, 1))}@media (max-width: 480px){.max-\\[480px\\]\\:p-4{padding:1rem}}@media (min-width: 640px){.sm\\:bottom-0{bottom:0}.sm\\:right-0{right:0}.sm\\:top-auto{top:auto}.sm\\:flex-row{flex-direction:row}.sm\\:flex-col{flex-direction:column}.sm\\:justify-end{justify-content:flex-end}.sm\\:space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.sm\\:rounded-lg{border-radius:var(--radius)}.sm\\:px-4{padding-left:1rem;padding-right:1rem}.sm\\:py-6{padding-top:1.5rem;padding-bottom:1.5rem}.sm\\:text-left{text-align:left}}@media (min-width: 768px){.md\\:block{display:block}.md\\:max-w-\\[420px\\]{max-width:420px}}.\\[\\&\\>\\*\\]\\:min-w-\\[190px\\]>*{min-width:190px}.\\[\\&\\>\\*\\]\\:flex-1>*{flex:1 1 0%}.\\[\\&\\>span\\]\\:line-clamp-1>span{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.\\[\\&\\>svg\\+div\\]\\:translate-y-\\[-3px\\]>svg+div{--tw-translate-y: -3px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\\[\\&\\>svg\\]\\:absolute>svg{position:absolute}.\\[\\&\\>svg\\]\\:left-4>svg{left:1rem}.\\[\\&\\>svg\\]\\:top-4>svg{top:1rem}.\\[\\&\\>svg\\]\\:text-destructive>svg{color:hsl(var(--destructive))}.\\[\\&\\>svg\\]\\:text-foreground>svg{color:hsl(var(--foreground))}.\\[\\&\\>svg\\~\\*\\]\\:pl-7>svg~*{padding-left:1.75rem}.\\[\\&_p\\]\\:leading-relaxed p{line-height:1.625}:root{--base-spacing: 24px;--m-xxxxs: calc(var(--base-spacing) / 5);--m-xxxs: calc(var(--base-spacing) / 4);--m-xxs: calc(var(--base-spacing) / 3);--m-xs: calc(var(--base-spacing) / 2);--m-s: calc(var(--base-spacing) * 2 / 3);--m: var(--base-spacing);--m-mm: calc(var(--base-spacing) * 3 / 2);--m-l: calc(var(--base-spacing) * 5 / 3);--m-xl: calc(var(--base-spacing) * 2);--m-xxl: calc(var(--base-spacing) * 5 / 2);--m-xxxl: calc(var(--base-spacing) * 3);--font-size-xs: calc(var(--font-size) * 16 / 17);--font-size-s: calc(var(--font-size) * 13 / 14);--font-size: .875rem;--font-size-l: calc(var(--font-size) * 8 / 7);--font-size-xl: calc(var(--font-size) * 9 / 7);--font-size-xxl: calc(var(--font-size) * 12 / 7);--font-size-xxxl: calc(var(--font-size) * 18 / 7);--font-size-h: calc(var(--font-size) * 24 / 7);--font-family: \"Inter\", sans-serif;--font-family-1: var(--font-family);--font-family-2: \"Laxan\", sans-serif;--border-radius: 4px;--border-radius-1: var(--border-radius);--border-radius-2: calc(var(--border-radius) * 2);--border-radius-3: calc(var(--border-radius) * 3);--border-radius-4: calc(var(--border-radius) * 4);--border-radius-5: calc(var(--border-radius) * 5);--border-radius-r: 50%;--fast: .3s;--speed: .4s;--slow: .9s;--ease: ease-out;--transition-ui: background-color var(--fast) var(--ease), border-color var(--fast) var(--ease), opacity var(--fast) var(--ease), transform var(--fast) var(--ease), color var(--fast) var(--ease);--blurred: 5px;--color-primary: #2563eb;--color-primary-hover: #1d4ed8;--color-primary-focus: #2563eb;--color-primary-disabled: #bfdbfe;--color-primary-button-disabled: #3f3b55;--color-secondary: #1d2939;--color-secondary-hover: #475467;--color-secondary-focus: #1d2939;--color-secondary-disabled: #344054;--color-text-on-primary: #ffffff;--color-text-on-primary-disabled: #667085;--color-text-on-primary-button-disabled: #ffffff;--color-text-on-secondary: #f2f4f7;--color-text-on-secondary-disabled: #475467;--color-progress-bar: #099250;--color-success: rgba(18, 183, 106, .88);--color-emphasis: #0ba5ec;--color-error: rgba(252, 93, 93, .88);--color-attention: rgba(248, 203, 44, .88);--color-importer-link: #2275d7;--blue-light-500: #0ba5ec;--color-green-ui: var(--color-progress-bar);--color-green: var(--color-success);--color-blue: #0ba5ec;--color-red: rgba(252, 93, 93, .88);--color-yellow: rgba(248, 203, 44, .88);--importer-link: var(--color-importer-link)}.CSVImporter-dark{color-scheme:dark;--color-background: #0e1116;--color-background-main: var(--color-background);--color-background-modal: #171a20;--color-background-modal-hover: #2e323c;--color-background-modal-veil: #0e1116;--color-background-modal-shadow: #0e1116;--color-background-modal-shade: #171a20;--color-tertiary: #101828;--color-tertiary-hover: #1d2939;--color-tertiary-focus: #1d2939;--color-tertiary-disabled: #eaecf0;--color-background-menu: #101828;--color-background-menu-hover: #1d2939;--color-text-strong: #f2f4f7;--color-text: #d0d5dd;--color-text-soft: #667085;--color-text-on-tertiary: #ffffff;--color-text-on-tertiary-disabled: #667085;--color-error: #912018;--color-text-error: #f04438;--color-background-error: #f04438;--color-background-error-hover: #d92d20;--color-background-error-soft: #fecdca;--color-input-background: #101828;--color-input-background-soft: #1d2939;--color-input-border: #344054;--color-input-placeholder: #344054;--color-input-text-disabled: #344054;--color-input-disabled: #171a20;--color-border: #1d2939;--color-background-small-button-selected: #344054;--color-background-small-button-hover: #101828;--color-text-small-button: \\$base-white;--color-button: #eff6ff;--color-button-hover: #dbeafe;--color-button-disabled: #dbeafe;--color-button-text: #171a20;--color-button-text-disabled: lighter(#171a20, 10);--color-button-border: transparent;--color-border: #344054;--color-border-soft: #1d2939;--color-icon: #d0d5dd;--color-bisel: rgba(255, 255, 255, .05);--color-csv-import-text: var(--color-text);--color-stepper: #30374f;--color-stepper-active: #6ce9a6}.CSVImporter-light{color-scheme:light;--color-background: #f2f4f7;--color-background-main: #ffffff;--color-background-modal: #ffffff;--color-background-modal-hover: #ffffff;--color-background-modal-veil: #0e1116;--color-background-modal-shadow: transparent;--color-background-modal-shade: #f2f4f7;--color-tertiary: #ffffff;--color-tertiary-hover: #f2f4f7;--color-tertiary-focus: #ffffff;--color-tertiary-disabled: #eaecf0;--color-background-menu: #ffffff;--color-background-menu-hover: #f2f4f7;--color-text-strong: #101828;--color-text: #1d2939;--color-text-soft: #667085;--color-text-on-tertiary: #344054;--color-text-on-tertiary-disabled: #667085;--color-error: #fecdca;--color-text-error: #f04438;--color-background-error: #f04438;--color-background-error-hover: #d92d20;--color-background-error-soft: #fecdca;--color-input-background: #ffffff;--color-input-background-soft: #d0d5dd;--color-input-border: #344054;--color-input-placeholder: #344054;--color-input-text-disabled: #344054;--color-input-disabled: #f9fafb;--color-border: #1d2939;--color-background-small-button-selected: #f2f4f7;--color-background-small-button-hover: #f9fafb;--color-text-small-button: var(--color-text);--color-button: #ffffff;--color-button-hover: #f2f4f7;--color-button-disabled: #fcfcfd;--color-button-text: var(--color-text-soft);--color-button-text-disabled: #d0d5dd;--color-button-border: #d0d5dd;--color-border: #d0d5dd;--color-border-soft: #eaecf0;--color-icon: #101323;--color-bisel: rgba(0, 0, 0, .05);--color-csv-import-text: #130638;--color-stepper: #b9c0d4;--color-stepper-active: #6ce9a6}.csv-importer{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background-color:var(--color-background);color:var(--color-text);font-size:var(--font-size);font-weight:500;line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.csv-importer *{box-sizing:border-box}.csv-importer .container{max-width:1300px;margin:0 auto;padding:2rem}@media (max-width: 640px){.csv-importer .container{padding:1rem}}.csv-importer h1,.csv-importer h2,.csv-importer h3,.csv-importer h4,.csv-importer h5,.csv-importer h6{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-weight:600;line-height:1.2;color:#111827}.csv-importer h1{font-size:2rem}.csv-importer h2{font-size:1.5rem}.csv-importer h3{font-size:1.25rem}.csv-importer h4{font-size:1.125rem}.csv-importer h5{font-size:1rem}.csv-importer h6{font-size:.875rem}.csv-importer p{line-height:1.6;color:#4b5563}.csv-importer button{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-weight:500;transition:all .2s ease}.csv-importer button:hover:not(:disabled){transform:translateY(-1px)}.csv-importer input,.csv-importer textarea,.csv-importer select{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:.875rem}.csv-importer input:focus,.csv-importer textarea:focus,.csv-importer select:focus{outline:none;box-shadow:0 0 0 3px rgba(var(--color-primary-rgb, 122, 94, 248),.1)}.csv-importer a{color:var(--color-primary);text-decoration:none;transition:color .2s ease}.csv-importer a:hover{color:var(--color-primary-700);text-decoration:underline}.CSVImporter{border:none;background-color:transparent;padding:0 1rem;border-radius:1.2rem;color:inherit;cursor:pointer;font-weight:500;font-size:14px;display:inline-flex;gap:.5rem;align-items:center;transition:filter .2s ease-out}.CSVImporter svg{display:block}.CSVImporter svg path{stroke:currentColor!important}.CSVImporter:hover,.CSVImporter:active{filter:brightness(1.2)}.CSVImporter-dialog::backdrop{background-color:#000000d9}.CSVImporter-dialog{border-radius:1rem;width:80vw;max-height:80vh;min-width:800px;border:none;position:fixed;inset:0;padding:0;margin:auto}.CSVImporter-div{border:none;display:block;width:100%;height:auto;max-height:80vh;overflow-y:auto}@media (max-width: 768px){.CSVImporter-dialog{width:95vw;min-width:unset;max-width:100%}}\n`;\n","// Export library CSS as a string so consumers (our iframe) can inject it safely.\n// This includes all styles: Tailwind CSS, SCSS themes, and CSS modules\nimport { bundledCss } from './bundled-styles';\n\n// Export the complete bundled CSS that includes:\n// - Tailwind utility classes\n// - Theme styles (light/dark)\n// - CSS module styles for all components\nexport const importcsvStyles: string = bundledCss;\n\n\n","import React, { useRef } from 'react';\nimport Frame, { FrameContextConsumer } from 'react-frame-component';\nimport { importcsvStyles } from '../../../styles';\nimport { darkenColor } from '../../utils/colorUtils';\n\n/**\n * IframeWrapper Component\n *\n * Provides complete CSS isolation for the importer by rendering content inside an iframe.\n * This follows industry best practices used by embedded SaaS tools like TableFlow,\n * Intercom, Zendesk, and Stripe.\n *\n * Key benefits:\n * - Complete CSS isolation from parent application\n * - Prevents parent styles (e.g., container max-width) from affecting the importer\n * - Only copies external stylesheets from parent document into iframe\n * - Maintains React context and functionality through react-frame-component\n * - Prevents style leakage between iframe and parent document\n *\n * @param children - React components to render inside the iframe\n * @param className - Optional CSS class for the iframe element\n */\n\ninterface IframeWrapperProps {\n children: React.ReactNode;\n className?: string;\n primaryColor?: string;\n}\n\n/**\n * IframeContent Component\n *\n * Separate component to handle iframe content with hooks properly.\n * This is required to follow React's rules of hooks - hooks cannot be\n * called conditionally or inside callbacks.\n */\nfunction IframeContent({\n children,\n document,\n window: iframeWindow,\n primaryColor\n}: {\n children: React.ReactNode;\n document?: Document;\n window?: Window;\n primaryColor?: string;\n}) {\n React.useEffect(() => {\n if (!document || !iframeWindow) return;\n\n // Get parent window reference safely\n const parentWindow = iframeWindow.parent || window;\n const parentDocument = parentWindow.document;\n\n // Only copy external stylesheets (not inline styles to prevent leakage)\n const parentLinks = Array.from(parentDocument.querySelectorAll('link[rel=\"stylesheet\"]'));\n parentLinks.forEach((linkElement: any) => {\n if (!document.querySelector(`link[href=\"${linkElement.href}\"]`)) {\n const newLink = document.createElement('link');\n newLink.rel = 'stylesheet';\n newLink.href = linkElement.href;\n document.head.appendChild(newLink);\n }\n });\n\n // Inject the library's own bundled CSS directly into the iframe.\n if (importcsvStyles && !document.querySelector('style[data-importcsv-inline]')) {\n const s = document.createElement('style');\n s.setAttribute('data-importcsv-inline', 'true');\n s.appendChild(document.createTextNode(importcsvStyles));\n document.head.appendChild(s);\n }\n\n // Important: Do NOT mirror arbitrary inline styles from parent\n \n // Apply primary color CSS variables to the iframe's root element\n if (primaryColor && document.documentElement) {\n document.documentElement.style.setProperty('--color-primary', primaryColor);\n document.documentElement.style.setProperty('--color-primary-hover', darkenColor(primaryColor, 20));\n \n // Also set on body for good measure\n if (document.body) {\n document.body.style.setProperty('--color-primary', primaryColor);\n document.body.style.setProperty('--color-primary-hover', darkenColor(primaryColor, 20));\n }\n }\n }, [document, iframeWindow, primaryColor]);\n\n return (\n <div style={{ width: '100%', height: '100%', overflow: 'visible' }}>\n {children}\n </div>\n );\n}\n\nexport default function IframeWrapper({ children, className = '', primaryColor }: IframeWrapperProps) {\n const iframeRef = useRef<HTMLIFrameElement>(null);\n\n // Initial HTML with all necessary styles including Tailwind\n const initialContent = `\n <!DOCTYPE html>\n <html>\n <head>\n <meta charset=\"utf-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n <style>\n /* CSS Variables for Tailwind colors */\n :root {\n --background: 0 0% 100%;\n --foreground: 222.2 84% 4.9%;\n --card: 0 0% 100%;\n --card-foreground: 222.2 84% 4.9%;\n --popover: 0 0% 100%;\n --popover-foreground: 222.2 84% 4.9%;\n --primary: 221.2 83.2% 53.3%;\n --primary-foreground: 210 40% 98%;\n --secondary: 210 40% 96.1%;\n --secondary-foreground: 222.2 47.4% 11.2%;\n --muted: 210 40% 96.1%;\n --muted-foreground: 215.4 16.3% 46.9%;\n --accent: 210 40% 96.1%;\n --accent-foreground: 222.2 47.4% 11.2%;\n --destructive: 0 84.2% 60.2%;\n --destructive-foreground: 210 40% 98%;\n --border: 214.3 31.8% 91.4%;\n --input: 214.3 31.8% 91.4%;\n --ring: 221.2 83.2% 53.3%;\n --radius: 0.5rem;\n }\n\n /* Tailwind utility classes for components */\n .bg-primary {\n background-color: hsl(var(--primary));\n }\n\n .bg-input {\n background-color: hsl(var(--input));\n }\n\n .bg-background {\n background-color: hsl(var(--background));\n }\n\n .bg-popover {\n background-color: hsl(var(--popover));\n }\n\n .text-popover-foreground {\n color: hsl(var(--popover-foreground));\n }\n\n .ring-ring {\n --tw-ring-color: hsl(var(--ring));\n }\n\n .ring-offset-background {\n --tw-ring-offset-color: hsl(var(--background));\n }\n\n /* Transitions and transforms */\n .transition-colors {\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n }\n\n .transition-transform {\n transition-property: transform;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n }\n\n .translate-x-0 {\n transform: translateX(0);\n }\n\n .translate-x-5 {\n transform: translateX(1.25rem);\n }\n\n /* Focus states */\n .focus-visible\\:outline-none:focus-visible {\n outline: 2px solid transparent;\n outline-offset: 2px;\n }\n\n .focus-visible\\:ring-2:focus-visible {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n }\n\n .focus-visible\\:ring-offset-2:focus-visible {\n --tw-ring-offset-width: 2px;\n }\n\n /* Data attribute selectors for Radix UI components */\n [data-state=\"checked\"] {\n background-color: hsl(var(--primary));\n }\n\n [data-state=\"unchecked\"] {\n background-color: hsl(var(--input));\n }\n\n [data-state=\"checked\"] .translate-x-5 {\n transform: translateX(1.25rem);\n }\n\n [data-state=\"unchecked\"] .translate-x-0 {\n transform: translateX(0);\n }\n\n /* Disabled states */\n .disabled\\:cursor-not-allowed:disabled {\n cursor: not-allowed;\n }\n\n .disabled\\:opacity-50:disabled {\n opacity: 0.5;\n }\n\n /* Additional utility classes */\n .shadow-lg {\n --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n }\n\n .ring-0 {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n }\n\n /* Reset styles to ensure clean slate */\n * {\n margin: 0;\n padding: 0;\n box-sizing: border-box;\n }\n\n html, body {\n width: 100%;\n min-height: 100%;\n height: auto;\n overflow: visible;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n }\n\n /* Ensure the root div takes full space */\n body > div {\n width: 100%;\n min-height: 100%;\n height: auto;\n }\n\n /* Ensure content can expand horizontally without iframe scrolling */\n #mountHere {\n width: 100%;\n min-width: 0;\n overflow: visible;\n }\n </style>\n </head>\n <body>\n <div id=\"mountHere\"></div>\n </body>\n </html>\n `;\n\n return (\n <Frame\n ref={iframeRef}\n className={className}\n initialContent={initialContent}\n mountTarget=\"#mountHere\"\n head={[\n // Ensure importer styles are present at first paint inside the iframe\n // react-frame-component will inject these into <head>\n <style key=\"importcsv-inline\" data-importcsv-inline={true as any} dangerouslySetInnerHTML={{ __html: importcsvStyles || '' }} />,\n ]}\n style={{\n width: '100%',\n height: '100%',\n minHeight: '600px',\n maxHeight: '100vh',\n border: 'none',\n display: 'block'\n }}\n >\n <FrameContextConsumer>\n {({ document, window }) => (\n <IframeContent document={document} window={window} primaryColor={primaryColor}>\n {children}\n </IframeContent>\n )}\n </FrameContextConsumer>\n </Frame>\n );\n}","import Papa from \"papaparse\";\nimport { useEffect, useState } from \"react\";\n// Note: XLSX is dynamically imported when needed to reduce bundle size\n// Users must install 'xlsx' package separately for Excel support\nimport { Button } from \"../../components/ui/button\";\nimport Errors from \"../../components/Errors\";\nimport Stepper from \"../../components/Stepper\";\nimport Validation from \"../validation/Validation\";\nimport { CSVImporterProps, Column } from \"../../../types\";\nimport useCustomStyles from \"../../hooks/useCustomStyles\";\nimport { parseObjectOrStringJSON } from \"../../utils/utils\";\nimport { ColumnMapping, ColumnMappingDictionary } from \"../../../types\";\nimport useStepNavigation, { StepEnum } from \"./hooks/useStepNavigation\";\nimport { FileData, FileRow } from \"./types\";\nimport Complete from \"../complete\";\nimport { cn } from \"../../../utils/cn\";\nimport ConfigureImport from \"../configure-import\";\nimport Uploader from \"../uploader\";\nimport { X } from \"lucide-react\";\nimport { useTranslation } from \"../../../i18n/useTranslation\";\nimport config from \"../../../config\";\nimport IframeWrapper from \"../../components/IframeWrapper\";\n\n// Helper function to map backend field type to Column type\nfunction mapBackendType(backendType: string): Column['type'] {\n const mapping: Record<string, Column['type']> = {\n 'text': 'string',\n 'string': 'string',\n 'number': 'number',\n 'email': 'email',\n 'date': 'date',\n 'phone': 'phone',\n 'select': 'select',\n 'boolean': 'string', // Map boolean to string for now\n 'custom_regex': 'string' // Map custom_regex to string\n };\n \n return mapping[backendType] || 'string';\n}\n\nexport default function Main(props: CSVImporterProps) {\n const {\n isModal = true,\n modalOnCloseTriggered = () => null,\n onComplete,\n customStyles,\n showDownloadTemplateButton,\n skipHeaderRowSelection,\n importerKey,\n columns: propColumns, // HelloCSV-style columns for standalone mode\n backendUrl = config.apiBaseUrl,\n user,\n metadata,\n demoData\n } = props;\n const skipHeader = skipHeaderRowSelection ?? false;\n const isDemoMode = !!demoData;\n const isStandaloneMode = !importerKey; // Standalone if no importerKey\n\n const { t } = useTranslation();\n\n // Apply custom styles\n useCustomStyles(parseObjectOrStringJSON(\"customStyles\", customStyles));\n\n // Stepper handler\n // Start at MapColumns step if demo mode is active\n const initialStep = isDemoMode ? StepEnum.MapColumns : StepEnum.Upload;\n const { currentStep, setStep, goNext, goBack, stepper } = useStepNavigation(initialStep, skipHeader, isDemoMode);\n\n // Error handling\n const [initializationError, setInitializationError] = useState<string | null>(null);\n const [dataError, setDataError] = useState<string | null>(null);\n\n // File data\n const emptyData = {\n fileName: \"\",\n rows: [],\n sheetList: [],\n errors: [],\n };\n const [data, setData] = useState<FileData>(emptyData);\n\n // Header row selection state\n const [selectedHeaderRow, setSelectedHeaderRow] = useState<number | null>(0);\n\n // Map of upload column index -> ColumnMapping\n const [columnMapping, setColumnMapping] = useState<ColumnMappingDictionary>({});\n\n // Used in the final step to show a loading indicator while the data is submitting\n const [isSubmitting, setIsSubmitting] = useState<boolean>(false);\n \n // Loading state for Excel parser\n const [isLoadingExcelParser, setIsLoadingExcelParser] = useState<boolean>(false);\n\n // Store columns directly - either from props or fetched from backend\n const [importColumns, setImportColumns] = useState<Column[]>([]);\n const [includeUnmatchedColumns, setIncludeUnmatchedColumns] = useState<boolean>(false);\n const [filterInvalidRows, setFilterInvalidRows] = useState<boolean>(false);\n const [disableOnInvalidRows, setDisableOnInvalidRows] = useState<boolean>(false);\n\n // Initialize demo data if provided\n useEffect(() => {\n if (isDemoMode && demoData) {\n // Parse the demo CSV content\n Papa.parse(demoData.csvContent, {\n complete: function (results) {\n const csvData = results.data as Array<Array<string>>;\n const isNotBlankRow = (row: string[]) => row.some((cell) => cell.toString().trim() !== \"\");\n const rows: FileRow[] = csvData.filter(isNotBlankRow).map((row: string[], index: number) => ({ index, values: row }));\n\n setData({\n fileName: demoData.fileName,\n rows: rows,\n sheetList: [],\n errors: results.errors.map((error) => error.message),\n });\n },\n error: function(error: any) {\n console.error('Papa.parse error:', error);\n }\n });\n }\n }, [isDemoMode, demoData]);\n\n // Load schema from props or backend\n useEffect(() => {\n const fetchSchema = async () => {\n // Standalone mode: use provided columns\n if (isStandaloneMode) {\n if (!propColumns) {\n setInitializationError(\"Please provide 'columns' for standalone mode or 'importerKey' for backend mode.\");\n return;\n }\n \n // Use columns directly\n setImportColumns(propColumns);\n return;\n }\n \n // Backend mode: fetch from API\n if (!importerKey) {\n setInitializationError(\"ImporterKey is required for backend mode.\");\n return;\n }\n\n try {\n // Fetch schema from the backend\n const response = await fetch(`${backendUrl}/api/v1/imports/key/schema?importer_key=${importerKey}`);\n\n if (!response.ok) {\n throw new Error(`Failed to fetch schema: ${response.statusText}`);\n }\n\n const schemaData = await response.json();\n\n // Store the include_unmatched_columns setting from the importer configuration\n if (schemaData.include_unmatched_columns !== undefined) {\n setIncludeUnmatchedColumns(schemaData.include_unmatched_columns);\n }\n\n // Store the filter_invalid_rows setting from the importer configuration\n if (schemaData.filter_invalid_rows !== undefined) {\n setFilterInvalidRows(schemaData.filter_invalid_rows);\n }\n\n // Store the disable_on_invalid_rows setting from the importer configuration\n if (schemaData.disable_on_invalid_rows !== undefined) {\n setDisableOnInvalidRows(schemaData.disable_on_invalid_rows);\n }\n\n // Convert backend fields to Column format\n const backendColumns: Column[] = schemaData.fields.map((field: any) => {\n const column: Column = {\n id: field.key || field.name.toLowerCase().replace(/\\s+/g, \"_\"),\n label: field.name,\n type: mapBackendType(field.type),\n description: field.description\n };\n \n // Build validators array\n const validators = [];\n \n if (field.required) {\n validators.push({ \n type: 'required' as const,\n message: field.validation_error_message\n });\n }\n \n if (field.validation_format) {\n // If it's a select field, set options\n if (field.type === 'select') {\n column.options = field.validation_format.split(',').map((o: string) => o.trim());\n } else {\n // Otherwise treat as regex pattern\n validators.push({\n type: 'regex' as const,\n pattern: field.validation_format,\n message: field.validation_error_message\n });\n }\n }\n \n if (validators.length > 0) {\n column.validators = validators;\n }\n \n return column;\n });\n \n setImportColumns(backendColumns);\n } catch (error) {\n setInitializationError(`Failed to fetch schema: ${error instanceof Error ? error.message : String(error)}`);\n }\n };\n\n fetchSchema();\n }, [importerKey, backendUrl, isStandaloneMode, propColumns]);\n\n useEffect(() => {\n // TODO (client-sdk): Have the importer continue where left off if closed\n // Temporary solution to reload state if closed and opened again\n // Don't reload in demo mode - let the demo data load\n if (!isDemoMode && data.rows.length === 0 && currentStep !== StepEnum.Upload) {\n reload();\n }\n }, [data, isDemoMode]);\n\n // Actions\n const reload = () => {\n setData(emptyData);\n setSelectedHeaderRow(0);\n setColumnMapping({});\n setDataError(null);\n setStep(StepEnum.Upload);\n };\n\n const requestClose = () => {\n if (!isModal) {\n return;\n }\n modalOnCloseTriggered && modalOnCloseTriggered();\n if (currentStep === StepEnum.Complete) {\n reload();\n }\n };\n\n const handleValidationComplete = (validatedData: FileData) => {\n // Update data with validated values\n setData(validatedData);\n setIsSubmitting(true);\n\n // TODO (client-sdk): Move this type, add other data attributes (i.e. column definitions), and move the data processing to a function\n type MappedRow = {\n data: Record<string, number | string>; // Mapped data\n unmapped_data: Record<string, string>; // Unmapped data\n };\n const startIndex = (selectedHeaderRow || 0) + 1;\n\n // Process rows to create data structure with mapped and unmapped data\n const headerRow = validatedData.rows[selectedHeaderRow || 0];\n const mappedRows = validatedData.rows.slice(startIndex).map((row) => {\n // Initialize the result structure\n const resultingRow: MappedRow = {\n data: {},\n unmapped_data: {},\n };\n\n // Process each cell in the row\n row.values.forEach((value, valueIndex) => {\n const mapping = columnMapping[valueIndex];\n const headerValue = headerRow.values[valueIndex];\n\n // Normalize the value (handle empty/null/NaN)\n const normalizedValue = (value === undefined || value === null || value === '' ||\n (typeof value === 'number' && isNaN(value))) ? \"\" : value.toString();\n\n if (mapping && mapping.include) {\n // Add to mapped data\n resultingRow.data[mapping.id] = normalizedValue;\n } else if (includeUnmatchedColumns && headerValue) {\n // Add to unmapped data if setting is enabled\n const columnKey = headerValue.toString().toLowerCase().replace(/\\s+/g, \"_\");\n resultingRow.unmapped_data[columnKey] = normalizedValue;\n }\n });\n\n return resultingRow;\n });\n\n const includedColumns = Object.values(columnMapping).filter(({ include }) => include);\n\n // Standalone mode: directly call onComplete with data\n if (isStandaloneMode) {\n // For standalone mode, preserve the original row structure with values array\n // This ensures compatibility with examples that expect rows with values\n const standaloneData = validatedData.rows.slice(startIndex);\n \n onComplete && onComplete({\n success: true,\n data: standaloneData, // Send rows with values array intact\n mappedData: mappedRows, // Also include mapped data for compatibility\n num_rows: mappedRows.length,\n num_columns: includedColumns.length,\n headers: headerRow.values,\n columnMapping: columnMapping\n });\n setIsSubmitting(false);\n goNext();\n return;\n }\n \n // Backend mode: send to API\n if (!importerKey) {\n setDataError(\"ImporterKey is required for backend mode.\");\n setIsSubmitting(false);\n return;\n }\n\n // Transform data for the backend format\n const transformedData = {\n validData: mappedRows,\n invalidData: [], // We don't track invalid rows in this version\n };\n\n // Transform column mapping to a format expected by the backend\n const columnMappingForBackend: Record<string, string> = {};\n Object.entries(columnMapping).forEach(([index, mapping]) => {\n if (mapping.include) {\n columnMappingForBackend[index] = mapping.id;\n }\n });\n\n // Use the public endpoint for processing imports\n const apiEndpoint = `${backendUrl}/api/v1/imports/key/process`;\n\n // Prepare the request payload\n const payload = {\n ...transformedData,\n columnMapping: columnMappingForBackend,\n user: user || {},\n metadata: metadata || {},\n importer_key: importerKey || \"\",\n };\n\n // Send the data to the backend\n\n fetch(apiEndpoint, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(payload),\n })\n .then((response) => {\n if (!response.ok) {\n throw new Error(`Failed to process import: ${response.statusText}`);\n }\n return response.json();\n })\n .then((result) => {\n // Call onComplete with the simplified backend response\n\n\n // The backend now returns a simplified response with just success/failure status\n // and a job_id that can be used to track the job\n if (result.success) {\n onComplete &&\n onComplete({\n success: true,\n message: result.message || \"Import job successfully enqueued\",\n num_rows: mappedRows.length,\n num_columns: includedColumns.length,\n });\n } else {\n onComplete &&\n onComplete({\n success: false,\n message: result.message || \"Failed to process import\",\n num_rows: mappedRows.length,\n num_columns: includedColumns.length,\n });\n }\n })\n .catch((error) => {\n // Call onComplete with the error\n\n onComplete &&\n onComplete({\n success: false,\n message: error.message || \"Error processing import\",\n num_rows: mappedRows.length,\n num_columns: includedColumns.length,\n });\n });\n\n setIsSubmitting(false);\n goNext();\n };\n\n const handleBackToMapColumns = () => {\n goBack(StepEnum.MapColumns);\n };\n\n if (initializationError) {\n return (\n <div className=\"flex flex-col h-auto min-h-[400px] p-4 w-full box-border overflow-auto\">\n <Errors error={initializationError} centered />\n </div>\n );\n }\n\n const renderContent = () => {\n switch (currentStep) {\n case StepEnum.Upload:\n return (\n <Uploader\n columns={importColumns || propColumns}\n skipHeaderRowSelection={skipHeader || false}\n showDownloadTemplateButton={showDownloadTemplateButton}\n setDataError={setDataError}\n onSuccess={async (file: File) => {\n setDataError(null);\n const fileType = file.name.slice(file.name.lastIndexOf(\".\") + 1);\n if (![\"csv\", \"xls\", \"xlsx\"].includes(fileType)) {\n setDataError(t(\"Only CSV, XLS, and XLSX files can be uploaded\"));\n return;\n }\n const reader = new FileReader();\n const isNotBlankRow = (row: string[]) => row.some((cell) => cell.toString().trim() !== \"\");\n reader.onload = async (e) => {\n const bstr = e?.target?.result;\n if (!bstr) {\n return;\n }\n switch (fileType) {\n case \"csv\":\n Papa.parse(bstr.toString(), {\n complete: function (results) {\n const csvData = results.data as Array<Array<string>>;\n const rows: FileRow[] = csvData.filter(isNotBlankRow).map((row: string[], index: number) => ({ index, values: row }));\n setData({\n fileName: file.name,\n rows: rows,\n sheetList: [],\n errors: results.errors.map((error) => error.message),\n });\n goNext();\n },\n });\n break;\n case \"xlsx\":\n case \"xls\":\n // Lazy load XLSX library only when needed\n setIsLoadingExcelParser(true);\n setDataError(null);\n import(\"xlsx\").then((XLSX) => {\n const workbook = XLSX.read(bstr as string, { type: \"binary\" });\n const sheetList = workbook.SheetNames;\n const data = XLSX.utils.sheet_to_json(workbook.Sheets[sheetList[0]], { header: 1 }) as Array<Array<string>>;\n const rows: FileRow[] = data.filter(isNotBlankRow).map((row: string[], index: number) => ({ index, values: row }));\n setData({\n fileName: file.name,\n rows: rows,\n sheetList: sheetList,\n errors: [], // TODO: Handle any parsing errors\n });\n setIsLoadingExcelParser(false);\n goNext();\n }).catch((error) => {\n // Check if it's a module not found error\n const isModuleNotFound = error.message?.includes('Cannot find module') || \n error.message?.includes('Failed to fetch dynamically imported module');\n \n const errorMessage = isModuleNotFound\n ? \"Excel support requires the 'xlsx' package. Please install it with: npm install xlsx\"\n : \"Failed to load Excel parser. Please try again or use CSV format.\";\n \n setDataError(errorMessage);\n setIsLoadingExcelParser(false);\n console.error(\"Failed to load XLSX library:\", error);\n });\n break;\n }\n };\n\n switch (fileType) {\n case \"csv\":\n reader.readAsText(file, \"utf-8\");\n break;\n case \"xlsx\":\n case \"xls\":\n reader.readAsBinaryString(file);\n break;\n }\n }}\n />\n );\n case StepEnum.RowSelection:\n // This step is deprecated - skip to next\n goNext();\n return null;\n case StepEnum.MapColumns:\n // Use ConfigureImport component for column mapping and configuration\n return (\n <ConfigureImport\n columns={importColumns || propColumns}\n data={data}\n onSuccess={(mapping, headerRow) => {\n setColumnMapping(mapping);\n setSelectedHeaderRow(headerRow);\n goNext();\n }}\n onCancel={isDemoMode ? undefined : () => goBack(StepEnum.Upload)}\n isSubmitting={isSubmitting}\n importerKey={importerKey}\n backendUrl={backendUrl}\n isDemoMode={isDemoMode}\n />\n );\n case StepEnum.Validation:\n return (\n <Validation\n columns={importColumns || propColumns}\n data={data}\n columnMapping={columnMapping}\n selectedHeaderRow={selectedHeaderRow}\n onSuccess={handleValidationComplete}\n onCancel={handleBackToMapColumns}\n isSubmitting={isSubmitting}\n backendUrl={backendUrl}\n importerKey={importerKey}\n filterInvalidRows={filterInvalidRows}\n disableOnInvalidRows={disableOnInvalidRows}\n />\n );\n case StepEnum.Complete:\n return <Complete reload={reload} close={requestClose} isModal={isModal} />;\n default:\n return null;\n }\n };\n\n const content = (\n <div className={cn(\n \"flex flex-col h-auto min-h-[400px] p-4 w-full box-border overflow-auto\"\n )}>\n <div>\n <Stepper {...stepper} />\n </div>\n\n <div className=\"flex-1 overflow-visible min-w-0 w-full\">{renderContent()}</div>\n\n {(!!dataError || isLoadingExcelParser) && (\n <div className=\"flex items-center justify-between gap-4 px-2 pb-2\">\n <div></div>\n {isLoadingExcelParser ? (\n <div className=\"text-center p-5\">\n <div className=\"mb-2\">\n <span className=\"text-base\">Loading Excel parser...</span>\n </div>\n <small className=\"opacity-70 text-xs\">\n This may take a moment on first use\n </small>\n </div>\n ) : (\n <Errors error={dataError} centered />\n )}\n <div></div>\n </div>\n )}\n\n {isModal && (\n <button\n className={cn(\n \"absolute right-2 top-2 rounded-full\",\n \"min-w-[36px] h-[36px] aspect-square text-xl p-0\",\n \"hover:bg-gray-100 transition-colors\"\n )}\n aria-label=\"Close\"\n onClick={requestClose}\n >\n <X className=\"h-5 w-5\" />\n </button>\n )}\n </div>\n );\n\n // Always wrap in iframe for complete CSS isolation\n return (\n <IframeWrapper className=\"importcsv-iframe\" primaryColor={props.primaryColor}>\n <div className=\"csv-importer\" data-theme={props.darkMode ? 'dark' : 'light'}>\n {content}\n </div>\n </IframeWrapper>\n );\n}\n","\"use client\";\n\n// src/collection-legacy.tsx\nimport React from \"react\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction createCollection(name) {\n const PROVIDER_NAME = name + \"CollectionProvider\";\n const [createCollectionContext, createCollectionScope] = createContextScope(PROVIDER_NAME);\n const [CollectionProviderImpl, useCollectionContext] = createCollectionContext(\n PROVIDER_NAME,\n { collectionRef: { current: null }, itemMap: /* @__PURE__ */ new Map() }\n );\n const CollectionProvider = (props) => {\n const { scope, children } = props;\n const ref = React.useRef(null);\n const itemMap = React.useRef(/* @__PURE__ */ new Map()).current;\n return /* @__PURE__ */ jsx(CollectionProviderImpl, { scope, itemMap, collectionRef: ref, children });\n };\n CollectionProvider.displayName = PROVIDER_NAME;\n const COLLECTION_SLOT_NAME = name + \"CollectionSlot\";\n const CollectionSlotImpl = createSlot(COLLECTION_SLOT_NAME);\n const CollectionSlot = React.forwardRef(\n (props, forwardedRef) => {\n const { scope, children } = props;\n const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);\n const composedRefs = useComposedRefs(forwardedRef, context.collectionRef);\n return /* @__PURE__ */ jsx(CollectionSlotImpl, { ref: composedRefs, children });\n }\n );\n CollectionSlot.displayName = COLLECTION_SLOT_NAME;\n const ITEM_SLOT_NAME = name + \"CollectionItemSlot\";\n const ITEM_DATA_ATTR = \"data-radix-collection-item\";\n const CollectionItemSlotImpl = createSlot(ITEM_SLOT_NAME);\n const CollectionItemSlot = React.forwardRef(\n (props, forwardedRef) => {\n const { scope, children, ...itemData } = props;\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const context = useCollectionContext(ITEM_SLOT_NAME, scope);\n React.useEffect(() => {\n context.itemMap.set(ref, { ref, ...itemData });\n return () => void context.itemMap.delete(ref);\n });\n return /* @__PURE__ */ jsx(CollectionItemSlotImpl, { ...{ [ITEM_DATA_ATTR]: \"\" }, ref: composedRefs, children });\n }\n );\n CollectionItemSlot.displayName = ITEM_SLOT_NAME;\n function useCollection(scope) {\n const context = useCollectionContext(name + \"CollectionConsumer\", scope);\n const getItems = React.useCallback(() => {\n const collectionNode = context.collectionRef.current;\n if (!collectionNode) return [];\n const orderedNodes = Array.from(collectionNode.querySelectorAll(`[${ITEM_DATA_ATTR}]`));\n const items = Array.from(context.itemMap.values());\n const orderedItems = items.sort(\n (a, b) => orderedNodes.indexOf(a.ref.current) - orderedNodes.indexOf(b.ref.current)\n );\n return orderedItems;\n }, [context.collectionRef, context.itemMap]);\n return getItems;\n }\n return [\n { Provider: CollectionProvider, Slot: CollectionSlot, ItemSlot: CollectionItemSlot },\n useCollection,\n createCollectionScope\n ];\n}\n\n// src/collection.tsx\nimport React2 from \"react\";\nimport { createContextScope as createContextScope2 } from \"@radix-ui/react-context\";\nimport { useComposedRefs as useComposedRefs2 } from \"@radix-ui/react-compose-refs\";\nimport { createSlot as createSlot2 } from \"@radix-ui/react-slot\";\n\n// src/ordered-dictionary.ts\nvar __instanciated = /* @__PURE__ */ new WeakMap();\nvar OrderedDict = class _OrderedDict extends Map {\n #keys;\n constructor(entries) {\n super(entries);\n this.#keys = [...super.keys()];\n __instanciated.set(this, true);\n }\n set(key, value) {\n if (__instanciated.get(this)) {\n if (this.has(key)) {\n this.#keys[this.#keys.indexOf(key)] = key;\n } else {\n this.#keys.push(key);\n }\n }\n super.set(key, value);\n return this;\n }\n insert(index, key, value) {\n const has = this.has(key);\n const length = this.#keys.length;\n const relativeIndex = toSafeInteger(index);\n let actualIndex = relativeIndex >= 0 ? relativeIndex : length + relativeIndex;\n const safeIndex = actualIndex < 0 || actualIndex >= length ? -1 : actualIndex;\n if (safeIndex === this.size || has && safeIndex === this.size - 1 || safeIndex === -1) {\n this.set(key, value);\n return this;\n }\n const size = this.size + (has ? 0 : 1);\n if (relativeIndex < 0) {\n actualIndex++;\n }\n const keys = [...this.#keys];\n let nextValue;\n let shouldSkip = false;\n for (let i = actualIndex; i < size; i++) {\n if (actualIndex === i) {\n let nextKey = keys[i];\n if (keys[i] === key) {\n nextKey = keys[i + 1];\n }\n if (has) {\n this.delete(key);\n }\n nextValue = this.get(nextKey);\n this.set(key, value);\n } else {\n if (!shouldSkip && keys[i - 1] === key) {\n shouldSkip = true;\n }\n const currentKey = keys[shouldSkip ? i : i - 1];\n const currentValue = nextValue;\n nextValue = this.get(currentKey);\n this.delete(currentKey);\n this.set(currentKey, currentValue);\n }\n }\n return this;\n }\n with(index, key, value) {\n const copy = new _OrderedDict(this);\n copy.insert(index, key, value);\n return copy;\n }\n before(key) {\n const index = this.#keys.indexOf(key) - 1;\n if (index < 0) {\n return void 0;\n }\n return this.entryAt(index);\n }\n /**\n * Sets a new key-value pair at the position before the given key.\n */\n setBefore(key, newKey, value) {\n const index = this.#keys.indexOf(key);\n if (index === -1) {\n return this;\n }\n return this.insert(index, newKey, value);\n }\n after(key) {\n let index = this.#keys.indexOf(key);\n index = index === -1 || index === this.size - 1 ? -1 : index + 1;\n if (index === -1) {\n return void 0;\n }\n return this.entryAt(index);\n }\n /**\n * Sets a new key-value pair at the position after the given key.\n */\n setAfter(key, newKey, value) {\n const index = this.#keys.indexOf(key);\n if (index === -1) {\n return this;\n }\n return this.insert(index + 1, newKey, value);\n }\n first() {\n return this.entryAt(0);\n }\n last() {\n return this.entryAt(-1);\n }\n clear() {\n this.#keys = [];\n return super.clear();\n }\n delete(key) {\n const deleted = super.delete(key);\n if (deleted) {\n this.#keys.splice(this.#keys.indexOf(key), 1);\n }\n return deleted;\n }\n deleteAt(index) {\n const key = this.keyAt(index);\n if (key !== void 0) {\n return this.delete(key);\n }\n return false;\n }\n at(index) {\n const key = at(this.#keys, index);\n if (key !== void 0) {\n return this.get(key);\n }\n }\n entryAt(index) {\n const key = at(this.#keys, index);\n if (key !== void 0) {\n return [key, this.get(key)];\n }\n }\n indexOf(key) {\n return this.#keys.indexOf(key);\n }\n keyAt(index) {\n return at(this.#keys, index);\n }\n from(key, offset) {\n const index = this.indexOf(key);\n if (index === -1) {\n return void 0;\n }\n let dest = index + offset;\n if (dest < 0) dest = 0;\n if (dest >= this.size) dest = this.size - 1;\n return this.at(dest);\n }\n keyFrom(key, offset) {\n const index = this.indexOf(key);\n if (index === -1) {\n return void 0;\n }\n let dest = index + offset;\n if (dest < 0) dest = 0;\n if (dest >= this.size) dest = this.size - 1;\n return this.keyAt(dest);\n }\n find(predicate, thisArg) {\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return entry;\n }\n index++;\n }\n return void 0;\n }\n findIndex(predicate, thisArg) {\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return index;\n }\n index++;\n }\n return -1;\n }\n filter(predicate, thisArg) {\n const entries = [];\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n entries.push(entry);\n }\n index++;\n }\n return new _OrderedDict(entries);\n }\n map(callbackfn, thisArg) {\n const entries = [];\n let index = 0;\n for (const entry of this) {\n entries.push([entry[0], Reflect.apply(callbackfn, thisArg, [entry, index, this])]);\n index++;\n }\n return new _OrderedDict(entries);\n }\n reduce(...args) {\n const [callbackfn, initialValue] = args;\n let index = 0;\n let accumulator = initialValue ?? this.at(0);\n for (const entry of this) {\n if (index === 0 && args.length === 1) {\n accumulator = entry;\n } else {\n accumulator = Reflect.apply(callbackfn, this, [accumulator, entry, index, this]);\n }\n index++;\n }\n return accumulator;\n }\n reduceRight(...args) {\n const [callbackfn, initialValue] = args;\n let accumulator = initialValue ?? this.at(-1);\n for (let index = this.size - 1; index >= 0; index--) {\n const entry = this.at(index);\n if (index === this.size - 1 && args.length === 1) {\n accumulator = entry;\n } else {\n accumulator = Reflect.apply(callbackfn, this, [accumulator, entry, index, this]);\n }\n }\n return accumulator;\n }\n toSorted(compareFn) {\n const entries = [...this.entries()].sort(compareFn);\n return new _OrderedDict(entries);\n }\n toReversed() {\n const reversed = new _OrderedDict();\n for (let index = this.size - 1; index >= 0; index--) {\n const key = this.keyAt(index);\n const element = this.get(key);\n reversed.set(key, element);\n }\n return reversed;\n }\n toSpliced(...args) {\n const entries = [...this.entries()];\n entries.splice(...args);\n return new _OrderedDict(entries);\n }\n slice(start, end) {\n const result = new _OrderedDict();\n let stop = this.size - 1;\n if (start === void 0) {\n return result;\n }\n if (start < 0) {\n start = start + this.size;\n }\n if (end !== void 0 && end > 0) {\n stop = end - 1;\n }\n for (let index = start; index <= stop; index++) {\n const key = this.keyAt(index);\n const element = this.get(key);\n result.set(key, element);\n }\n return result;\n }\n every(predicate, thisArg) {\n let index = 0;\n for (const entry of this) {\n if (!Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return false;\n }\n index++;\n }\n return true;\n }\n some(predicate, thisArg) {\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return true;\n }\n index++;\n }\n return false;\n }\n};\nfunction at(array, index) {\n if (\"at\" in Array.prototype) {\n return Array.prototype.at.call(array, index);\n }\n const actualIndex = toSafeIndex(array, index);\n return actualIndex === -1 ? void 0 : array[actualIndex];\n}\nfunction toSafeIndex(array, index) {\n const length = array.length;\n const relativeIndex = toSafeInteger(index);\n const actualIndex = relativeIndex >= 0 ? relativeIndex : length + relativeIndex;\n return actualIndex < 0 || actualIndex >= length ? -1 : actualIndex;\n}\nfunction toSafeInteger(number) {\n return number !== number || number === 0 ? 0 : Math.trunc(number);\n}\n\n// src/collection.tsx\nimport { jsx as jsx2 } from \"react/jsx-runtime\";\nfunction createCollection2(name) {\n const PROVIDER_NAME = name + \"CollectionProvider\";\n const [createCollectionContext, createCollectionScope] = createContextScope2(PROVIDER_NAME);\n const [CollectionContextProvider, useCollectionContext] = createCollectionContext(\n PROVIDER_NAME,\n {\n collectionElement: null,\n collectionRef: { current: null },\n collectionRefObject: { current: null },\n itemMap: new OrderedDict(),\n setItemMap: () => void 0\n }\n );\n const CollectionProvider = ({ state, ...props }) => {\n return state ? /* @__PURE__ */ jsx2(CollectionProviderImpl, { ...props, state }) : /* @__PURE__ */ jsx2(CollectionInit, { ...props });\n };\n CollectionProvider.displayName = PROVIDER_NAME;\n const CollectionInit = (props) => {\n const state = useInitCollection();\n return /* @__PURE__ */ jsx2(CollectionProviderImpl, { ...props, state });\n };\n CollectionInit.displayName = PROVIDER_NAME + \"Init\";\n const CollectionProviderImpl = (props) => {\n const { scope, children, state } = props;\n const ref = React2.useRef(null);\n const [collectionElement, setCollectionElement] = React2.useState(\n null\n );\n const composeRefs = useComposedRefs2(ref, setCollectionElement);\n const [itemMap, setItemMap] = state;\n React2.useEffect(() => {\n if (!collectionElement) return;\n const observer = getChildListObserver(() => {\n });\n observer.observe(collectionElement, {\n childList: true,\n subtree: true\n });\n return () => {\n observer.disconnect();\n };\n }, [collectionElement]);\n return /* @__PURE__ */ jsx2(\n CollectionContextProvider,\n {\n scope,\n itemMap,\n setItemMap,\n collectionRef: composeRefs,\n collectionRefObject: ref,\n collectionElement,\n children\n }\n );\n };\n CollectionProviderImpl.displayName = PROVIDER_NAME + \"Impl\";\n const COLLECTION_SLOT_NAME = name + \"CollectionSlot\";\n const CollectionSlotImpl = createSlot2(COLLECTION_SLOT_NAME);\n const CollectionSlot = React2.forwardRef(\n (props, forwardedRef) => {\n const { scope, children } = props;\n const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);\n const composedRefs = useComposedRefs2(forwardedRef, context.collectionRef);\n return /* @__PURE__ */ jsx2(CollectionSlotImpl, { ref: composedRefs, children });\n }\n );\n CollectionSlot.displayName = COLLECTION_SLOT_NAME;\n const ITEM_SLOT_NAME = name + \"CollectionItemSlot\";\n const ITEM_DATA_ATTR = \"data-radix-collection-item\";\n const CollectionItemSlotImpl = createSlot2(ITEM_SLOT_NAME);\n const CollectionItemSlot = React2.forwardRef(\n (props, forwardedRef) => {\n const { scope, children, ...itemData } = props;\n const ref = React2.useRef(null);\n const [element, setElement] = React2.useState(null);\n const composedRefs = useComposedRefs2(forwardedRef, ref, setElement);\n const context = useCollectionContext(ITEM_SLOT_NAME, scope);\n const { setItemMap } = context;\n const itemDataRef = React2.useRef(itemData);\n if (!shallowEqual(itemDataRef.current, itemData)) {\n itemDataRef.current = itemData;\n }\n const memoizedItemData = itemDataRef.current;\n React2.useEffect(() => {\n const itemData2 = memoizedItemData;\n setItemMap((map) => {\n if (!element) {\n return map;\n }\n if (!map.has(element)) {\n map.set(element, { ...itemData2, element });\n return map.toSorted(sortByDocumentPosition);\n }\n return map.set(element, { ...itemData2, element }).toSorted(sortByDocumentPosition);\n });\n return () => {\n setItemMap((map) => {\n if (!element || !map.has(element)) {\n return map;\n }\n map.delete(element);\n return new OrderedDict(map);\n });\n };\n }, [element, memoizedItemData, setItemMap]);\n return /* @__PURE__ */ jsx2(CollectionItemSlotImpl, { ...{ [ITEM_DATA_ATTR]: \"\" }, ref: composedRefs, children });\n }\n );\n CollectionItemSlot.displayName = ITEM_SLOT_NAME;\n function useInitCollection() {\n return React2.useState(new OrderedDict());\n }\n function useCollection(scope) {\n const { itemMap } = useCollectionContext(name + \"CollectionConsumer\", scope);\n return itemMap;\n }\n const functions = {\n createCollectionScope,\n useCollection,\n useInitCollection\n };\n return [\n { Provider: CollectionProvider, Slot: CollectionSlot, ItemSlot: CollectionItemSlot },\n functions\n ];\n}\nfunction shallowEqual(a, b) {\n if (a === b) return true;\n if (typeof a !== \"object\" || typeof b !== \"object\") return false;\n if (a == null || b == null) return false;\n const keysA = Object.keys(a);\n const keysB = Object.keys(b);\n if (keysA.length !== keysB.length) return false;\n for (const key of keysA) {\n if (!Object.prototype.hasOwnProperty.call(b, key)) return false;\n if (a[key] !== b[key]) return false;\n }\n return true;\n}\nfunction isElementPreceding(a, b) {\n return !!(b.compareDocumentPosition(a) & Node.DOCUMENT_POSITION_PRECEDING);\n}\nfunction sortByDocumentPosition(a, b) {\n return !a[1].element || !b[1].element ? 0 : isElementPreceding(a[1].element, b[1].element) ? -1 : 1;\n}\nfunction getChildListObserver(callback) {\n const observer = new MutationObserver((mutationsList) => {\n for (const mutation of mutationsList) {\n if (mutation.type === \"childList\") {\n callback();\n return;\n }\n }\n });\n return observer;\n}\nexport {\n createCollection,\n createCollection2 as unstable_createCollection\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/dismissable-layer.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { Primitive, dispatchDiscreteCustomEvent } from \"@radix-ui/react-primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useEscapeKeydown } from \"@radix-ui/react-use-escape-keydown\";\nimport { jsx } from \"react/jsx-runtime\";\nvar DISMISSABLE_LAYER_NAME = \"DismissableLayer\";\nvar CONTEXT_UPDATE = \"dismissableLayer.update\";\nvar POINTER_DOWN_OUTSIDE = \"dismissableLayer.pointerDownOutside\";\nvar FOCUS_OUTSIDE = \"dismissableLayer.focusOutside\";\nvar originalBodyPointerEvents;\nvar DismissableLayerContext = React.createContext({\n layers: /* @__PURE__ */ new Set(),\n layersWithOutsidePointerEventsDisabled: /* @__PURE__ */ new Set(),\n branches: /* @__PURE__ */ new Set()\n});\nvar DismissableLayer = React.forwardRef(\n (props, forwardedRef) => {\n const {\n disableOutsidePointerEvents = false,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n onDismiss,\n ...layerProps\n } = props;\n const context = React.useContext(DismissableLayerContext);\n const [node, setNode] = React.useState(null);\n const ownerDocument = node?.ownerDocument ?? globalThis?.document;\n const [, force] = React.useState({});\n const composedRefs = useComposedRefs(forwardedRef, (node2) => setNode(node2));\n const layers = Array.from(context.layers);\n const [highestLayerWithOutsidePointerEventsDisabled] = [...context.layersWithOutsidePointerEventsDisabled].slice(-1);\n const highestLayerWithOutsidePointerEventsDisabledIndex = layers.indexOf(highestLayerWithOutsidePointerEventsDisabled);\n const index = node ? layers.indexOf(node) : -1;\n const isBodyPointerEventsDisabled = context.layersWithOutsidePointerEventsDisabled.size > 0;\n const isPointerEventsEnabled = index >= highestLayerWithOutsidePointerEventsDisabledIndex;\n const pointerDownOutside = usePointerDownOutside((event) => {\n const target = event.target;\n const isPointerDownOnBranch = [...context.branches].some((branch) => branch.contains(target));\n if (!isPointerEventsEnabled || isPointerDownOnBranch) return;\n onPointerDownOutside?.(event);\n onInteractOutside?.(event);\n if (!event.defaultPrevented) onDismiss?.();\n }, ownerDocument);\n const focusOutside = useFocusOutside((event) => {\n const target = event.target;\n const isFocusInBranch = [...context.branches].some((branch) => branch.contains(target));\n if (isFocusInBranch) return;\n onFocusOutside?.(event);\n onInteractOutside?.(event);\n if (!event.defaultPrevented) onDismiss?.();\n }, ownerDocument);\n useEscapeKeydown((event) => {\n const isHighestLayer = index === context.layers.size - 1;\n if (!isHighestLayer) return;\n onEscapeKeyDown?.(event);\n if (!event.defaultPrevented && onDismiss) {\n event.preventDefault();\n onDismiss();\n }\n }, ownerDocument);\n React.useEffect(() => {\n if (!node) return;\n if (disableOutsidePointerEvents) {\n if (context.layersWithOutsidePointerEventsDisabled.size === 0) {\n originalBodyPointerEvents = ownerDocument.body.style.pointerEvents;\n ownerDocument.body.style.pointerEvents = \"none\";\n }\n context.layersWithOutsidePointerEventsDisabled.add(node);\n }\n context.layers.add(node);\n dispatchUpdate();\n return () => {\n if (disableOutsidePointerEvents && context.layersWithOutsidePointerEventsDisabled.size === 1) {\n ownerDocument.body.style.pointerEvents = originalBodyPointerEvents;\n }\n };\n }, [node, ownerDocument, disableOutsidePointerEvents, context]);\n React.useEffect(() => {\n return () => {\n if (!node) return;\n context.layers.delete(node);\n context.layersWithOutsidePointerEventsDisabled.delete(node);\n dispatchUpdate();\n };\n }, [node, context]);\n React.useEffect(() => {\n const handleUpdate = () => force({});\n document.addEventListener(CONTEXT_UPDATE, handleUpdate);\n return () => document.removeEventListener(CONTEXT_UPDATE, handleUpdate);\n }, []);\n return /* @__PURE__ */ jsx(\n Primitive.div,\n {\n ...layerProps,\n ref: composedRefs,\n style: {\n pointerEvents: isBodyPointerEventsDisabled ? isPointerEventsEnabled ? \"auto\" : \"none\" : void 0,\n ...props.style\n },\n onFocusCapture: composeEventHandlers(props.onFocusCapture, focusOutside.onFocusCapture),\n onBlurCapture: composeEventHandlers(props.onBlurCapture, focusOutside.onBlurCapture),\n onPointerDownCapture: composeEventHandlers(\n props.onPointerDownCapture,\n pointerDownOutside.onPointerDownCapture\n )\n }\n );\n }\n);\nDismissableLayer.displayName = DISMISSABLE_LAYER_NAME;\nvar BRANCH_NAME = \"DismissableLayerBranch\";\nvar DismissableLayerBranch = React.forwardRef((props, forwardedRef) => {\n const context = React.useContext(DismissableLayerContext);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n React.useEffect(() => {\n const node = ref.current;\n if (node) {\n context.branches.add(node);\n return () => {\n context.branches.delete(node);\n };\n }\n }, [context.branches]);\n return /* @__PURE__ */ jsx(Primitive.div, { ...props, ref: composedRefs });\n});\nDismissableLayerBranch.displayName = BRANCH_NAME;\nfunction usePointerDownOutside(onPointerDownOutside, ownerDocument = globalThis?.document) {\n const handlePointerDownOutside = useCallbackRef(onPointerDownOutside);\n const isPointerInsideReactTreeRef = React.useRef(false);\n const handleClickRef = React.useRef(() => {\n });\n React.useEffect(() => {\n const handlePointerDown = (event) => {\n if (event.target && !isPointerInsideReactTreeRef.current) {\n let handleAndDispatchPointerDownOutsideEvent2 = function() {\n handleAndDispatchCustomEvent(\n POINTER_DOWN_OUTSIDE,\n handlePointerDownOutside,\n eventDetail,\n { discrete: true }\n );\n };\n var handleAndDispatchPointerDownOutsideEvent = handleAndDispatchPointerDownOutsideEvent2;\n const eventDetail = { originalEvent: event };\n if (event.pointerType === \"touch\") {\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n handleClickRef.current = handleAndDispatchPointerDownOutsideEvent2;\n ownerDocument.addEventListener(\"click\", handleClickRef.current, { once: true });\n } else {\n handleAndDispatchPointerDownOutsideEvent2();\n }\n } else {\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n }\n isPointerInsideReactTreeRef.current = false;\n };\n const timerId = window.setTimeout(() => {\n ownerDocument.addEventListener(\"pointerdown\", handlePointerDown);\n }, 0);\n return () => {\n window.clearTimeout(timerId);\n ownerDocument.removeEventListener(\"pointerdown\", handlePointerDown);\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n };\n }, [ownerDocument, handlePointerDownOutside]);\n return {\n // ensures we check React component tree (not just DOM tree)\n onPointerDownCapture: () => isPointerInsideReactTreeRef.current = true\n };\n}\nfunction useFocusOutside(onFocusOutside, ownerDocument = globalThis?.document) {\n const handleFocusOutside = useCallbackRef(onFocusOutside);\n const isFocusInsideReactTreeRef = React.useRef(false);\n React.useEffect(() => {\n const handleFocus = (event) => {\n if (event.target && !isFocusInsideReactTreeRef.current) {\n const eventDetail = { originalEvent: event };\n handleAndDispatchCustomEvent(FOCUS_OUTSIDE, handleFocusOutside, eventDetail, {\n discrete: false\n });\n }\n };\n ownerDocument.addEventListener(\"focusin\", handleFocus);\n return () => ownerDocument.removeEventListener(\"focusin\", handleFocus);\n }, [ownerDocument, handleFocusOutside]);\n return {\n onFocusCapture: () => isFocusInsideReactTreeRef.current = true,\n onBlurCapture: () => isFocusInsideReactTreeRef.current = false\n };\n}\nfunction dispatchUpdate() {\n const event = new CustomEvent(CONTEXT_UPDATE);\n document.dispatchEvent(event);\n}\nfunction handleAndDispatchCustomEvent(name, handler, detail, { discrete }) {\n const target = detail.originalEvent.target;\n const event = new CustomEvent(name, { bubbles: false, cancelable: true, detail });\n if (handler) target.addEventListener(name, handler, { once: true });\n if (discrete) {\n dispatchDiscreteCustomEvent(target, event);\n } else {\n target.dispatchEvent(event);\n }\n}\nvar Root = DismissableLayer;\nvar Branch = DismissableLayerBranch;\nexport {\n Branch,\n DismissableLayer,\n DismissableLayerBranch,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/portal.tsx\nimport * as React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { jsx } from \"react/jsx-runtime\";\nvar PORTAL_NAME = \"Portal\";\nvar Portal = React.forwardRef((props, forwardedRef) => {\n const { container: containerProp, ...portalProps } = props;\n const [mounted, setMounted] = React.useState(false);\n useLayoutEffect(() => setMounted(true), []);\n const container = containerProp || mounted && globalThis?.document?.body;\n return container ? ReactDOM.createPortal(/* @__PURE__ */ jsx(Primitive.div, { ...portalProps, ref: forwardedRef }), container) : null;\n});\nPortal.displayName = PORTAL_NAME;\nvar Root = Portal;\nexport {\n Portal,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","// src/visually-hidden.tsx\nimport * as React from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar VISUALLY_HIDDEN_STYLES = Object.freeze({\n // See: https://github.com/twbs/bootstrap/blob/main/scss/mixins/_visually-hidden.scss\n position: \"absolute\",\n border: 0,\n width: 1,\n height: 1,\n padding: 0,\n margin: -1,\n overflow: \"hidden\",\n clip: \"rect(0, 0, 0, 0)\",\n whiteSpace: \"nowrap\",\n wordWrap: \"normal\"\n});\nvar NAME = \"VisuallyHidden\";\nvar VisuallyHidden = React.forwardRef(\n (props, forwardedRef) => {\n return /* @__PURE__ */ jsx(\n Primitive.span,\n {\n ...props,\n ref: forwardedRef,\n style: { ...VISUALLY_HIDDEN_STYLES, ...props.style }\n }\n );\n }\n);\nVisuallyHidden.displayName = NAME;\nvar Root = VisuallyHidden;\nexport {\n Root,\n VISUALLY_HIDDEN_STYLES,\n VisuallyHidden\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/toast.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createCollection } from \"@radix-ui/react-collection\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport * as DismissableLayer from \"@radix-ui/react-dismissable-layer\";\nimport { Portal } from \"@radix-ui/react-portal\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive, dispatchDiscreteCustomEvent } from \"@radix-ui/react-primitive\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { VisuallyHidden } from \"@radix-ui/react-visually-hidden\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nvar PROVIDER_NAME = \"ToastProvider\";\nvar [Collection, useCollection, createCollectionScope] = createCollection(\"Toast\");\nvar [createToastContext, createToastScope] = createContextScope(\"Toast\", [createCollectionScope]);\nvar [ToastProviderProvider, useToastProviderContext] = createToastContext(PROVIDER_NAME);\nvar ToastProvider = (props) => {\n const {\n __scopeToast,\n label = \"Notification\",\n duration = 5e3,\n swipeDirection = \"right\",\n swipeThreshold = 50,\n children\n } = props;\n const [viewport, setViewport] = React.useState(null);\n const [toastCount, setToastCount] = React.useState(0);\n const isFocusedToastEscapeKeyDownRef = React.useRef(false);\n const isClosePausedRef = React.useRef(false);\n if (!label.trim()) {\n console.error(\n `Invalid prop \\`label\\` supplied to \\`${PROVIDER_NAME}\\`. Expected non-empty \\`string\\`.`\n );\n }\n return /* @__PURE__ */ jsx(Collection.Provider, { scope: __scopeToast, children: /* @__PURE__ */ jsx(\n ToastProviderProvider,\n {\n scope: __scopeToast,\n label,\n duration,\n swipeDirection,\n swipeThreshold,\n toastCount,\n viewport,\n onViewportChange: setViewport,\n onToastAdd: React.useCallback(() => setToastCount((prevCount) => prevCount + 1), []),\n onToastRemove: React.useCallback(() => setToastCount((prevCount) => prevCount - 1), []),\n isFocusedToastEscapeKeyDownRef,\n isClosePausedRef,\n children\n }\n ) });\n};\nToastProvider.displayName = PROVIDER_NAME;\nvar VIEWPORT_NAME = \"ToastViewport\";\nvar VIEWPORT_DEFAULT_HOTKEY = [\"F8\"];\nvar VIEWPORT_PAUSE = \"toast.viewportPause\";\nvar VIEWPORT_RESUME = \"toast.viewportResume\";\nvar ToastViewport = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeToast,\n hotkey = VIEWPORT_DEFAULT_HOTKEY,\n label = \"Notifications ({hotkey})\",\n ...viewportProps\n } = props;\n const context = useToastProviderContext(VIEWPORT_NAME, __scopeToast);\n const getItems = useCollection(__scopeToast);\n const wrapperRef = React.useRef(null);\n const headFocusProxyRef = React.useRef(null);\n const tailFocusProxyRef = React.useRef(null);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref, context.onViewportChange);\n const hotkeyLabel = hotkey.join(\"+\").replace(/Key/g, \"\").replace(/Digit/g, \"\");\n const hasToasts = context.toastCount > 0;\n React.useEffect(() => {\n const handleKeyDown = (event) => {\n const isHotkeyPressed = hotkey.length !== 0 && hotkey.every((key) => event[key] || event.code === key);\n if (isHotkeyPressed) ref.current?.focus();\n };\n document.addEventListener(\"keydown\", handleKeyDown);\n return () => document.removeEventListener(\"keydown\", handleKeyDown);\n }, [hotkey]);\n React.useEffect(() => {\n const wrapper = wrapperRef.current;\n const viewport = ref.current;\n if (hasToasts && wrapper && viewport) {\n const handlePause = () => {\n if (!context.isClosePausedRef.current) {\n const pauseEvent = new CustomEvent(VIEWPORT_PAUSE);\n viewport.dispatchEvent(pauseEvent);\n context.isClosePausedRef.current = true;\n }\n };\n const handleResume = () => {\n if (context.isClosePausedRef.current) {\n const resumeEvent = new CustomEvent(VIEWPORT_RESUME);\n viewport.dispatchEvent(resumeEvent);\n context.isClosePausedRef.current = false;\n }\n };\n const handleFocusOutResume = (event) => {\n const isFocusMovingOutside = !wrapper.contains(event.relatedTarget);\n if (isFocusMovingOutside) handleResume();\n };\n const handlePointerLeaveResume = () => {\n const isFocusInside = wrapper.contains(document.activeElement);\n if (!isFocusInside) handleResume();\n };\n wrapper.addEventListener(\"focusin\", handlePause);\n wrapper.addEventListener(\"focusout\", handleFocusOutResume);\n wrapper.addEventListener(\"pointermove\", handlePause);\n wrapper.addEventListener(\"pointerleave\", handlePointerLeaveResume);\n window.addEventListener(\"blur\", handlePause);\n window.addEventListener(\"focus\", handleResume);\n return () => {\n wrapper.removeEventListener(\"focusin\", handlePause);\n wrapper.removeEventListener(\"focusout\", handleFocusOutResume);\n wrapper.removeEventListener(\"pointermove\", handlePause);\n wrapper.removeEventListener(\"pointerleave\", handlePointerLeaveResume);\n window.removeEventListener(\"blur\", handlePause);\n window.removeEventListener(\"focus\", handleResume);\n };\n }\n }, [hasToasts, context.isClosePausedRef]);\n const getSortedTabbableCandidates = React.useCallback(\n ({ tabbingDirection }) => {\n const toastItems = getItems();\n const tabbableCandidates = toastItems.map((toastItem) => {\n const toastNode = toastItem.ref.current;\n const toastTabbableCandidates = [toastNode, ...getTabbableCandidates(toastNode)];\n return tabbingDirection === \"forwards\" ? toastTabbableCandidates : toastTabbableCandidates.reverse();\n });\n return (tabbingDirection === \"forwards\" ? tabbableCandidates.reverse() : tabbableCandidates).flat();\n },\n [getItems]\n );\n React.useEffect(() => {\n const viewport = ref.current;\n if (viewport) {\n const handleKeyDown = (event) => {\n const isMetaKey = event.altKey || event.ctrlKey || event.metaKey;\n const isTabKey = event.key === \"Tab\" && !isMetaKey;\n if (isTabKey) {\n const focusedElement = document.activeElement;\n const isTabbingBackwards = event.shiftKey;\n const targetIsViewport = event.target === viewport;\n if (targetIsViewport && isTabbingBackwards) {\n headFocusProxyRef.current?.focus();\n return;\n }\n const tabbingDirection = isTabbingBackwards ? \"backwards\" : \"forwards\";\n const sortedCandidates = getSortedTabbableCandidates({ tabbingDirection });\n const index = sortedCandidates.findIndex((candidate) => candidate === focusedElement);\n if (focusFirst(sortedCandidates.slice(index + 1))) {\n event.preventDefault();\n } else {\n isTabbingBackwards ? headFocusProxyRef.current?.focus() : tailFocusProxyRef.current?.focus();\n }\n }\n };\n viewport.addEventListener(\"keydown\", handleKeyDown);\n return () => viewport.removeEventListener(\"keydown\", handleKeyDown);\n }\n }, [getItems, getSortedTabbableCandidates]);\n return /* @__PURE__ */ jsxs(\n DismissableLayer.Branch,\n {\n ref: wrapperRef,\n role: \"region\",\n \"aria-label\": label.replace(\"{hotkey}\", hotkeyLabel),\n tabIndex: -1,\n style: { pointerEvents: hasToasts ? void 0 : \"none\" },\n children: [\n hasToasts && /* @__PURE__ */ jsx(\n FocusProxy,\n {\n ref: headFocusProxyRef,\n onFocusFromOutsideViewport: () => {\n const tabbableCandidates = getSortedTabbableCandidates({\n tabbingDirection: \"forwards\"\n });\n focusFirst(tabbableCandidates);\n }\n }\n ),\n /* @__PURE__ */ jsx(Collection.Slot, { scope: __scopeToast, children: /* @__PURE__ */ jsx(Primitive.ol, { tabIndex: -1, ...viewportProps, ref: composedRefs }) }),\n hasToasts && /* @__PURE__ */ jsx(\n FocusProxy,\n {\n ref: tailFocusProxyRef,\n onFocusFromOutsideViewport: () => {\n const tabbableCandidates = getSortedTabbableCandidates({\n tabbingDirection: \"backwards\"\n });\n focusFirst(tabbableCandidates);\n }\n }\n )\n ]\n }\n );\n }\n);\nToastViewport.displayName = VIEWPORT_NAME;\nvar FOCUS_PROXY_NAME = \"ToastFocusProxy\";\nvar FocusProxy = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeToast, onFocusFromOutsideViewport, ...proxyProps } = props;\n const context = useToastProviderContext(FOCUS_PROXY_NAME, __scopeToast);\n return /* @__PURE__ */ jsx(\n VisuallyHidden,\n {\n \"aria-hidden\": true,\n tabIndex: 0,\n ...proxyProps,\n ref: forwardedRef,\n style: { position: \"fixed\" },\n onFocus: (event) => {\n const prevFocusedElement = event.relatedTarget;\n const isFocusFromOutsideViewport = !context.viewport?.contains(prevFocusedElement);\n if (isFocusFromOutsideViewport) onFocusFromOutsideViewport();\n }\n }\n );\n }\n);\nFocusProxy.displayName = FOCUS_PROXY_NAME;\nvar TOAST_NAME = \"Toast\";\nvar TOAST_SWIPE_START = \"toast.swipeStart\";\nvar TOAST_SWIPE_MOVE = \"toast.swipeMove\";\nvar TOAST_SWIPE_CANCEL = \"toast.swipeCancel\";\nvar TOAST_SWIPE_END = \"toast.swipeEnd\";\nvar Toast = React.forwardRef(\n (props, forwardedRef) => {\n const { forceMount, open: openProp, defaultOpen, onOpenChange, ...toastProps } = props;\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen ?? true,\n onChange: onOpenChange,\n caller: TOAST_NAME\n });\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || open, children: /* @__PURE__ */ jsx(\n ToastImpl,\n {\n open,\n ...toastProps,\n ref: forwardedRef,\n onClose: () => setOpen(false),\n onPause: useCallbackRef(props.onPause),\n onResume: useCallbackRef(props.onResume),\n onSwipeStart: composeEventHandlers(props.onSwipeStart, (event) => {\n event.currentTarget.setAttribute(\"data-swipe\", \"start\");\n }),\n onSwipeMove: composeEventHandlers(props.onSwipeMove, (event) => {\n const { x, y } = event.detail.delta;\n event.currentTarget.setAttribute(\"data-swipe\", \"move\");\n event.currentTarget.style.setProperty(\"--radix-toast-swipe-move-x\", `${x}px`);\n event.currentTarget.style.setProperty(\"--radix-toast-swipe-move-y\", `${y}px`);\n }),\n onSwipeCancel: composeEventHandlers(props.onSwipeCancel, (event) => {\n event.currentTarget.setAttribute(\"data-swipe\", \"cancel\");\n event.currentTarget.style.removeProperty(\"--radix-toast-swipe-move-x\");\n event.currentTarget.style.removeProperty(\"--radix-toast-swipe-move-y\");\n event.currentTarget.style.removeProperty(\"--radix-toast-swipe-end-x\");\n event.currentTarget.style.removeProperty(\"--radix-toast-swipe-end-y\");\n }),\n onSwipeEnd: composeEventHandlers(props.onSwipeEnd, (event) => {\n const { x, y } = event.detail.delta;\n event.currentTarget.setAttribute(\"data-swipe\", \"end\");\n event.currentTarget.style.removeProperty(\"--radix-toast-swipe-move-x\");\n event.currentTarget.style.removeProperty(\"--radix-toast-swipe-move-y\");\n event.currentTarget.style.setProperty(\"--radix-toast-swipe-end-x\", `${x}px`);\n event.currentTarget.style.setProperty(\"--radix-toast-swipe-end-y\", `${y}px`);\n setOpen(false);\n })\n }\n ) });\n }\n);\nToast.displayName = TOAST_NAME;\nvar [ToastInteractiveProvider, useToastInteractiveContext] = createToastContext(TOAST_NAME, {\n onClose() {\n }\n});\nvar ToastImpl = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeToast,\n type = \"foreground\",\n duration: durationProp,\n open,\n onClose,\n onEscapeKeyDown,\n onPause,\n onResume,\n onSwipeStart,\n onSwipeMove,\n onSwipeCancel,\n onSwipeEnd,\n ...toastProps\n } = props;\n const context = useToastProviderContext(TOAST_NAME, __scopeToast);\n const [node, setNode] = React.useState(null);\n const composedRefs = useComposedRefs(forwardedRef, (node2) => setNode(node2));\n const pointerStartRef = React.useRef(null);\n const swipeDeltaRef = React.useRef(null);\n const duration = durationProp || context.duration;\n const closeTimerStartTimeRef = React.useRef(0);\n const closeTimerRemainingTimeRef = React.useRef(duration);\n const closeTimerRef = React.useRef(0);\n const { onToastAdd, onToastRemove } = context;\n const handleClose = useCallbackRef(() => {\n const isFocusInToast = node?.contains(document.activeElement);\n if (isFocusInToast) context.viewport?.focus();\n onClose();\n });\n const startTimer = React.useCallback(\n (duration2) => {\n if (!duration2 || duration2 === Infinity) return;\n window.clearTimeout(closeTimerRef.current);\n closeTimerStartTimeRef.current = (/* @__PURE__ */ new Date()).getTime();\n closeTimerRef.current = window.setTimeout(handleClose, duration2);\n },\n [handleClose]\n );\n React.useEffect(() => {\n const viewport = context.viewport;\n if (viewport) {\n const handleResume = () => {\n startTimer(closeTimerRemainingTimeRef.current);\n onResume?.();\n };\n const handlePause = () => {\n const elapsedTime = (/* @__PURE__ */ new Date()).getTime() - closeTimerStartTimeRef.current;\n closeTimerRemainingTimeRef.current = closeTimerRemainingTimeRef.current - elapsedTime;\n window.clearTimeout(closeTimerRef.current);\n onPause?.();\n };\n viewport.addEventListener(VIEWPORT_PAUSE, handlePause);\n viewport.addEventListener(VIEWPORT_RESUME, handleResume);\n return () => {\n viewport.removeEventListener(VIEWPORT_PAUSE, handlePause);\n viewport.removeEventListener(VIEWPORT_RESUME, handleResume);\n };\n }\n }, [context.viewport, duration, onPause, onResume, startTimer]);\n React.useEffect(() => {\n if (open && !context.isClosePausedRef.current) startTimer(duration);\n }, [open, duration, context.isClosePausedRef, startTimer]);\n React.useEffect(() => {\n onToastAdd();\n return () => onToastRemove();\n }, [onToastAdd, onToastRemove]);\n const announceTextContent = React.useMemo(() => {\n return node ? getAnnounceTextContent(node) : null;\n }, [node]);\n if (!context.viewport) return null;\n return /* @__PURE__ */ jsxs(Fragment, { children: [\n announceTextContent && /* @__PURE__ */ jsx(\n ToastAnnounce,\n {\n __scopeToast,\n role: \"status\",\n \"aria-live\": type === \"foreground\" ? \"assertive\" : \"polite\",\n \"aria-atomic\": true,\n children: announceTextContent\n }\n ),\n /* @__PURE__ */ jsx(ToastInteractiveProvider, { scope: __scopeToast, onClose: handleClose, children: ReactDOM.createPortal(\n /* @__PURE__ */ jsx(Collection.ItemSlot, { scope: __scopeToast, children: /* @__PURE__ */ jsx(\n DismissableLayer.Root,\n {\n asChild: true,\n onEscapeKeyDown: composeEventHandlers(onEscapeKeyDown, () => {\n if (!context.isFocusedToastEscapeKeyDownRef.current) handleClose();\n context.isFocusedToastEscapeKeyDownRef.current = false;\n }),\n children: /* @__PURE__ */ jsx(\n Primitive.li,\n {\n role: \"status\",\n \"aria-live\": \"off\",\n \"aria-atomic\": true,\n tabIndex: 0,\n \"data-state\": open ? \"open\" : \"closed\",\n \"data-swipe-direction\": context.swipeDirection,\n ...toastProps,\n ref: composedRefs,\n style: { userSelect: \"none\", touchAction: \"none\", ...props.style },\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n if (event.key !== \"Escape\") return;\n onEscapeKeyDown?.(event.nativeEvent);\n if (!event.nativeEvent.defaultPrevented) {\n context.isFocusedToastEscapeKeyDownRef.current = true;\n handleClose();\n }\n }),\n onPointerDown: composeEventHandlers(props.onPointerDown, (event) => {\n if (event.button !== 0) return;\n pointerStartRef.current = { x: event.clientX, y: event.clientY };\n }),\n onPointerMove: composeEventHandlers(props.onPointerMove, (event) => {\n if (!pointerStartRef.current) return;\n const x = event.clientX - pointerStartRef.current.x;\n const y = event.clientY - pointerStartRef.current.y;\n const hasSwipeMoveStarted = Boolean(swipeDeltaRef.current);\n const isHorizontalSwipe = [\"left\", \"right\"].includes(context.swipeDirection);\n const clamp = [\"left\", \"up\"].includes(context.swipeDirection) ? Math.min : Math.max;\n const clampedX = isHorizontalSwipe ? clamp(0, x) : 0;\n const clampedY = !isHorizontalSwipe ? clamp(0, y) : 0;\n const moveStartBuffer = event.pointerType === \"touch\" ? 10 : 2;\n const delta = { x: clampedX, y: clampedY };\n const eventDetail = { originalEvent: event, delta };\n if (hasSwipeMoveStarted) {\n swipeDeltaRef.current = delta;\n handleAndDispatchCustomEvent(TOAST_SWIPE_MOVE, onSwipeMove, eventDetail, {\n discrete: false\n });\n } else if (isDeltaInDirection(delta, context.swipeDirection, moveStartBuffer)) {\n swipeDeltaRef.current = delta;\n handleAndDispatchCustomEvent(TOAST_SWIPE_START, onSwipeStart, eventDetail, {\n discrete: false\n });\n event.target.setPointerCapture(event.pointerId);\n } else if (Math.abs(x) > moveStartBuffer || Math.abs(y) > moveStartBuffer) {\n pointerStartRef.current = null;\n }\n }),\n onPointerUp: composeEventHandlers(props.onPointerUp, (event) => {\n const delta = swipeDeltaRef.current;\n const target = event.target;\n if (target.hasPointerCapture(event.pointerId)) {\n target.releasePointerCapture(event.pointerId);\n }\n swipeDeltaRef.current = null;\n pointerStartRef.current = null;\n if (delta) {\n const toast = event.currentTarget;\n const eventDetail = { originalEvent: event, delta };\n if (isDeltaInDirection(delta, context.swipeDirection, context.swipeThreshold)) {\n handleAndDispatchCustomEvent(TOAST_SWIPE_END, onSwipeEnd, eventDetail, {\n discrete: true\n });\n } else {\n handleAndDispatchCustomEvent(\n TOAST_SWIPE_CANCEL,\n onSwipeCancel,\n eventDetail,\n {\n discrete: true\n }\n );\n }\n toast.addEventListener(\"click\", (event2) => event2.preventDefault(), {\n once: true\n });\n }\n })\n }\n )\n }\n ) }),\n context.viewport\n ) })\n ] });\n }\n);\nvar ToastAnnounce = (props) => {\n const { __scopeToast, children, ...announceProps } = props;\n const context = useToastProviderContext(TOAST_NAME, __scopeToast);\n const [renderAnnounceText, setRenderAnnounceText] = React.useState(false);\n const [isAnnounced, setIsAnnounced] = React.useState(false);\n useNextFrame(() => setRenderAnnounceText(true));\n React.useEffect(() => {\n const timer = window.setTimeout(() => setIsAnnounced(true), 1e3);\n return () => window.clearTimeout(timer);\n }, []);\n return isAnnounced ? null : /* @__PURE__ */ jsx(Portal, { asChild: true, children: /* @__PURE__ */ jsx(VisuallyHidden, { ...announceProps, children: renderAnnounceText && /* @__PURE__ */ jsxs(Fragment, { children: [\n context.label,\n \" \",\n children\n ] }) }) });\n};\nvar TITLE_NAME = \"ToastTitle\";\nvar ToastTitle = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeToast, ...titleProps } = props;\n return /* @__PURE__ */ jsx(Primitive.div, { ...titleProps, ref: forwardedRef });\n }\n);\nToastTitle.displayName = TITLE_NAME;\nvar DESCRIPTION_NAME = \"ToastDescription\";\nvar ToastDescription = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeToast, ...descriptionProps } = props;\n return /* @__PURE__ */ jsx(Primitive.div, { ...descriptionProps, ref: forwardedRef });\n }\n);\nToastDescription.displayName = DESCRIPTION_NAME;\nvar ACTION_NAME = \"ToastAction\";\nvar ToastAction = React.forwardRef(\n (props, forwardedRef) => {\n const { altText, ...actionProps } = props;\n if (!altText.trim()) {\n console.error(\n `Invalid prop \\`altText\\` supplied to \\`${ACTION_NAME}\\`. Expected non-empty \\`string\\`.`\n );\n return null;\n }\n return /* @__PURE__ */ jsx(ToastAnnounceExclude, { altText, asChild: true, children: /* @__PURE__ */ jsx(ToastClose, { ...actionProps, ref: forwardedRef }) });\n }\n);\nToastAction.displayName = ACTION_NAME;\nvar CLOSE_NAME = \"ToastClose\";\nvar ToastClose = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeToast, ...closeProps } = props;\n const interactiveContext = useToastInteractiveContext(CLOSE_NAME, __scopeToast);\n return /* @__PURE__ */ jsx(ToastAnnounceExclude, { asChild: true, children: /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n ...closeProps,\n ref: forwardedRef,\n onClick: composeEventHandlers(props.onClick, interactiveContext.onClose)\n }\n ) });\n }\n);\nToastClose.displayName = CLOSE_NAME;\nvar ToastAnnounceExclude = React.forwardRef((props, forwardedRef) => {\n const { __scopeToast, altText, ...announceExcludeProps } = props;\n return /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-radix-toast-announce-exclude\": \"\",\n \"data-radix-toast-announce-alt\": altText || void 0,\n ...announceExcludeProps,\n ref: forwardedRef\n }\n );\n});\nfunction getAnnounceTextContent(container) {\n const textContent = [];\n const childNodes = Array.from(container.childNodes);\n childNodes.forEach((node) => {\n if (node.nodeType === node.TEXT_NODE && node.textContent) textContent.push(node.textContent);\n if (isHTMLElement(node)) {\n const isHidden = node.ariaHidden || node.hidden || node.style.display === \"none\";\n const isExcluded = node.dataset.radixToastAnnounceExclude === \"\";\n if (!isHidden) {\n if (isExcluded) {\n const altText = node.dataset.radixToastAnnounceAlt;\n if (altText) textContent.push(altText);\n } else {\n textContent.push(...getAnnounceTextContent(node));\n }\n }\n }\n });\n return textContent;\n}\nfunction handleAndDispatchCustomEvent(name, handler, detail, { discrete }) {\n const currentTarget = detail.originalEvent.currentTarget;\n const event = new CustomEvent(name, { bubbles: true, cancelable: true, detail });\n if (handler) currentTarget.addEventListener(name, handler, { once: true });\n if (discrete) {\n dispatchDiscreteCustomEvent(currentTarget, event);\n } else {\n currentTarget.dispatchEvent(event);\n }\n}\nvar isDeltaInDirection = (delta, direction, threshold = 0) => {\n const deltaX = Math.abs(delta.x);\n const deltaY = Math.abs(delta.y);\n const isDeltaX = deltaX > deltaY;\n if (direction === \"left\" || direction === \"right\") {\n return isDeltaX && deltaX > threshold;\n } else {\n return !isDeltaX && deltaY > threshold;\n }\n};\nfunction useNextFrame(callback = () => {\n}) {\n const fn = useCallbackRef(callback);\n useLayoutEffect(() => {\n let raf1 = 0;\n let raf2 = 0;\n raf1 = window.requestAnimationFrame(() => raf2 = window.requestAnimationFrame(fn));\n return () => {\n window.cancelAnimationFrame(raf1);\n window.cancelAnimationFrame(raf2);\n };\n }, [fn]);\n}\nfunction isHTMLElement(node) {\n return node.nodeType === node.ELEMENT_NODE;\n}\nfunction getTabbableCandidates(container) {\n const nodes = [];\n const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT, {\n acceptNode: (node) => {\n const isHiddenInput = node.tagName === \"INPUT\" && node.type === \"hidden\";\n if (node.disabled || node.hidden || isHiddenInput) return NodeFilter.FILTER_SKIP;\n return node.tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;\n }\n });\n while (walker.nextNode()) nodes.push(walker.currentNode);\n return nodes;\n}\nfunction focusFirst(candidates) {\n const previouslyFocusedElement = document.activeElement;\n return candidates.some((candidate) => {\n if (candidate === previouslyFocusedElement) return true;\n candidate.focus();\n return document.activeElement !== previouslyFocusedElement;\n });\n}\nvar Provider = ToastProvider;\nvar Viewport = ToastViewport;\nvar Root2 = Toast;\nvar Title = ToastTitle;\nvar Description = ToastDescription;\nvar Action = ToastAction;\nvar Close = ToastClose;\nexport {\n Action,\n Close,\n Description,\n Provider,\n Root2 as Root,\n Title,\n Toast,\n ToastAction,\n ToastClose,\n ToastDescription,\n ToastProvider,\n ToastTitle,\n ToastViewport,\n Viewport,\n createToastScope\n};\n//# sourceMappingURL=index.mjs.map\n","import * as React from \"react\"\nimport * as ToastPrimitives from \"@radix-ui/react-toast\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { X } from \"lucide-react\"\n\nimport { cn } from \"../../../utils/cn\"\n\nconst ToastProvider = ToastPrimitives.Provider\n\nconst ToastViewport = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Viewport>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Viewport>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Viewport\n ref={ref}\n className={cn(\n \"fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]\",\n className\n )}\n {...props}\n />\n))\nToastViewport.displayName = ToastPrimitives.Viewport.displayName\n\nconst toastVariants = cva(\n \"group pointer-events-auto relative flex w-full items-center justify-between space-x-4 overflow-hidden rounded-md border p-6 pr-8 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full\",\n {\n variants: {\n variant: {\n default: \"border bg-background text-foreground\",\n destructive:\n \"destructive group border-destructive bg-destructive text-destructive-foreground\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nconst Toast = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Root>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Root> &\n VariantProps<typeof toastVariants>\n>(({ className, variant, ...props }, ref) => {\n return (\n <ToastPrimitives.Root\n ref={ref}\n className={cn(toastVariants({ variant }), className)}\n {...props}\n />\n )\n})\nToast.displayName = ToastPrimitives.Root.displayName\n\nconst ToastAction = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Action>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Action>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Action\n ref={ref}\n className={cn(\n \"inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium ring-offset-background transition-colors hover:bg-secondary focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive\",\n className\n )}\n {...props}\n />\n))\nToastAction.displayName = ToastPrimitives.Action.displayName\n\nconst ToastClose = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Close>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Close>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Close\n ref={ref}\n className={cn(\n \"absolute right-2 top-2 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-2 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600\",\n className\n )}\n toast-close=\"\"\n {...props}\n >\n <X className=\"h-4 w-4\" />\n </ToastPrimitives.Close>\n))\nToastClose.displayName = ToastPrimitives.Close.displayName\n\nconst ToastTitle = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Title>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Title>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Title\n ref={ref}\n className={cn(\"text-sm font-semibold\", className)}\n {...props}\n />\n))\nToastTitle.displayName = ToastPrimitives.Title.displayName\n\nconst ToastDescription = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Description>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Description>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Description\n ref={ref}\n className={cn(\"text-sm opacity-90\", className)}\n {...props}\n />\n))\nToastDescription.displayName = ToastPrimitives.Description.displayName\n\ntype ToastProps = React.ComponentPropsWithoutRef<typeof Toast>\n\ntype ToastActionElement = React.ReactElement<typeof ToastAction>\n\nexport {\n type ToastProps,\n type ToastActionElement,\n ToastProvider,\n ToastViewport,\n Toast,\n ToastTitle,\n ToastDescription,\n ToastClose,\n ToastAction,\n}","import {\n Toast,\n ToastClose,\n ToastDescription,\n ToastProvider,\n ToastTitle,\n ToastViewport,\n} from \"./toast\"\nimport { useToast } from \"./use-toast\"\n\nexport function Toaster() {\n const { toasts } = useToast()\n\n return (\n <ToastProvider>\n {toasts.map(function ({ id, title, description, action, ...props }) {\n return (\n <Toast key={id} {...props}>\n <div className=\"grid gap-1\">\n {title && <ToastTitle>{title}</ToastTitle>}\n {description && (\n <ToastDescription>{description}</ToastDescription>\n )}\n </div>\n {action}\n <ToastClose />\n </Toast>\n )\n })}\n <ToastViewport />\n </ToastProvider>\n )\n}","import { useEffect } from \"react\";\nimport { Toaster } from \"../components/ui/toaster\";\nimport { ThemeProps } from \"./types\";\nimport { applyColorPalette } from \"../utils/colorUtils\";\n\nexport interface ThemeProviderProps extends ThemeProps {\n primaryColor?: string;\n}\n\nexport default function ThemeProvider({ children, primaryColor }: ThemeProviderProps): React.ReactElement {\n useEffect(() => {\n if (primaryColor) {\n applyColorPalette(primaryColor);\n }\n }, [primaryColor]);\n\n return (\n <>\n {children}\n <Toaster />\n </>\n );\n}","import { ProvidersProps } from \"./types\";\nimport ThemeContextProvider from \"./Theme\";\n\nexport interface ProvidersWithThemeProps extends ProvidersProps {\n primaryColor?: string;\n}\n\nexport default function Providers({ children, primaryColor }: ProvidersWithThemeProps) {\n return <ThemeContextProvider primaryColor={primaryColor}>{children}</ThemeContextProvider>;\n}\n","const createStoreImpl = (createState) => {\n let state;\n const listeners = /* @__PURE__ */ new Set();\n const setState = (partial, replace) => {\n const nextState = typeof partial === \"function\" ? partial(state) : partial;\n if (!Object.is(nextState, state)) {\n const previousState = state;\n state = (replace != null ? replace : typeof nextState !== \"object\" || nextState === null) ? nextState : Object.assign({}, state, nextState);\n listeners.forEach((listener) => listener(state, previousState));\n }\n };\n const getState = () => state;\n const getInitialState = () => initialState;\n const subscribe = (listener) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n const destroy = () => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") {\n console.warn(\n \"[DEPRECATED] The `destroy` method will be unsupported in a future version. Instead use unsubscribe function returned by subscribe. Everything will be garbage-collected if store is garbage-collected.\"\n );\n }\n listeners.clear();\n };\n const api = { setState, getState, getInitialState, subscribe, destroy };\n const initialState = state = createState(setState, getState, api);\n return api;\n};\nconst createStore = (createState) => createState ? createStoreImpl(createState) : createStoreImpl;\nvar vanilla = (createState) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") {\n console.warn(\n \"[DEPRECATED] Default export is deprecated. Instead use import { createStore } from 'zustand/vanilla'.\"\n );\n }\n return createStore(createState);\n};\n\nexport { createStore, vanilla as default };\n","/**\n * @license React\n * use-sync-external-store-shim.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar React = require(\"react\");\nfunction is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is,\n useState = React.useState,\n useEffect = React.useEffect,\n useLayoutEffect = React.useLayoutEffect,\n useDebugValue = React.useDebugValue;\nfunction useSyncExternalStore$2(subscribe, getSnapshot) {\n var value = getSnapshot(),\n _useState = useState({ inst: { value: value, getSnapshot: getSnapshot } }),\n inst = _useState[0].inst,\n forceUpdate = _useState[1];\n useLayoutEffect(\n function () {\n inst.value = value;\n inst.getSnapshot = getSnapshot;\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n },\n [subscribe, value, getSnapshot]\n );\n useEffect(\n function () {\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n return subscribe(function () {\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n });\n },\n [subscribe]\n );\n useDebugValue(value);\n return value;\n}\nfunction checkIfSnapshotChanged(inst) {\n var latestGetSnapshot = inst.getSnapshot;\n inst = inst.value;\n try {\n var nextValue = latestGetSnapshot();\n return !objectIs(inst, nextValue);\n } catch (error) {\n return !0;\n }\n}\nfunction useSyncExternalStore$1(subscribe, getSnapshot) {\n return getSnapshot();\n}\nvar shim =\n \"undefined\" === typeof window ||\n \"undefined\" === typeof window.document ||\n \"undefined\" === typeof window.document.createElement\n ? useSyncExternalStore$1\n : useSyncExternalStore$2;\nexports.useSyncExternalStore =\n void 0 !== React.useSyncExternalStore ? React.useSyncExternalStore : shim;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim.production.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim.development.js');\n}\n","/**\n * @license React\n * use-sync-external-store-shim/with-selector.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar React = require(\"react\"),\n shim = require(\"use-sync-external-store/shim\");\nfunction is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is,\n useSyncExternalStore = shim.useSyncExternalStore,\n useRef = React.useRef,\n useEffect = React.useEffect,\n useMemo = React.useMemo,\n useDebugValue = React.useDebugValue;\nexports.useSyncExternalStoreWithSelector = function (\n subscribe,\n getSnapshot,\n getServerSnapshot,\n selector,\n isEqual\n) {\n var instRef = useRef(null);\n if (null === instRef.current) {\n var inst = { hasValue: !1, value: null };\n instRef.current = inst;\n } else inst = instRef.current;\n instRef = useMemo(\n function () {\n function memoizedSelector(nextSnapshot) {\n if (!hasMemo) {\n hasMemo = !0;\n memoizedSnapshot = nextSnapshot;\n nextSnapshot = selector(nextSnapshot);\n if (void 0 !== isEqual && inst.hasValue) {\n var currentSelection = inst.value;\n if (isEqual(currentSelection, nextSnapshot))\n return (memoizedSelection = currentSelection);\n }\n return (memoizedSelection = nextSnapshot);\n }\n currentSelection = memoizedSelection;\n if (objectIs(memoizedSnapshot, nextSnapshot)) return currentSelection;\n var nextSelection = selector(nextSnapshot);\n if (void 0 !== isEqual && isEqual(currentSelection, nextSelection))\n return (memoizedSnapshot = nextSnapshot), currentSelection;\n memoizedSnapshot = nextSnapshot;\n return (memoizedSelection = nextSelection);\n }\n var hasMemo = !1,\n memoizedSnapshot,\n memoizedSelection,\n maybeGetServerSnapshot =\n void 0 === getServerSnapshot ? null : getServerSnapshot;\n return [\n function () {\n return memoizedSelector(getSnapshot());\n },\n null === maybeGetServerSnapshot\n ? void 0\n : function () {\n return memoizedSelector(maybeGetServerSnapshot());\n }\n ];\n },\n [getSnapshot, getServerSnapshot, selector, isEqual]\n );\n var value = useSyncExternalStore(subscribe, instRef[0], instRef[1]);\n useEffect(\n function () {\n inst.hasValue = !0;\n inst.value = value;\n },\n [value]\n );\n useDebugValue(value);\n return value;\n};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.production.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.development.js');\n}\n","import { createStore } from 'zustand/vanilla';\nexport * from 'zustand/vanilla';\nimport ReactExports from 'react';\nimport useSyncExternalStoreExports from 'use-sync-external-store/shim/with-selector.js';\n\nconst { useDebugValue } = ReactExports;\nconst { useSyncExternalStoreWithSelector } = useSyncExternalStoreExports;\nlet didWarnAboutEqualityFn = false;\nconst identity = (arg) => arg;\nfunction useStore(api, selector = identity, equalityFn) {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && equalityFn && !didWarnAboutEqualityFn) {\n console.warn(\n \"[DEPRECATED] Use `createWithEqualityFn` instead of `create` or use `useStoreWithEqualityFn` instead of `useStore`. They can be imported from 'zustand/traditional'. https://github.com/pmndrs/zustand/discussions/1937\"\n );\n didWarnAboutEqualityFn = true;\n }\n const slice = useSyncExternalStoreWithSelector(\n api.subscribe,\n api.getState,\n api.getServerState || api.getInitialState,\n selector,\n equalityFn\n );\n useDebugValue(slice);\n return slice;\n}\nconst createImpl = (createState) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && typeof createState !== \"function\") {\n console.warn(\n \"[DEPRECATED] Passing a vanilla store will be unsupported in a future version. Instead use `import { useStore } from 'zustand'`.\"\n );\n }\n const api = typeof createState === \"function\" ? createStore(createState) : createState;\n const useBoundStore = (selector, equalityFn) => useStore(api, selector, equalityFn);\n Object.assign(useBoundStore, api);\n return useBoundStore;\n};\nconst create = (createState) => createState ? createImpl(createState) : createImpl;\nvar react = (createState) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") {\n console.warn(\n \"[DEPRECATED] Default export is deprecated. Instead use `import { create } from 'zustand'`.\"\n );\n }\n return create(createState);\n};\n\nexport { create, react as default, useStore };\n","const reduxImpl = (reducer, initial) => (set, _get, api) => {\n api.dispatch = (action) => {\n set((state) => reducer(state, action), false, action);\n return action;\n };\n api.dispatchFromDevtools = true;\n return { dispatch: (...a) => api.dispatch(...a), ...initial };\n};\nconst redux = reduxImpl;\n\nconst trackedConnections = /* @__PURE__ */ new Map();\nconst getTrackedConnectionState = (name) => {\n const api = trackedConnections.get(name);\n if (!api) return {};\n return Object.fromEntries(\n Object.entries(api.stores).map(([key, api2]) => [key, api2.getState()])\n );\n};\nconst extractConnectionInformation = (store, extensionConnector, options) => {\n if (store === void 0) {\n return {\n type: \"untracked\",\n connection: extensionConnector.connect(options)\n };\n }\n const existingConnection = trackedConnections.get(options.name);\n if (existingConnection) {\n return { type: \"tracked\", store, ...existingConnection };\n }\n const newConnection = {\n connection: extensionConnector.connect(options),\n stores: {}\n };\n trackedConnections.set(options.name, newConnection);\n return { type: \"tracked\", store, ...newConnection };\n};\nconst devtoolsImpl = (fn, devtoolsOptions = {}) => (set, get, api) => {\n const { enabled, anonymousActionType, store, ...options } = devtoolsOptions;\n let extensionConnector;\n try {\n extensionConnector = (enabled != null ? enabled : (import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") && window.__REDUX_DEVTOOLS_EXTENSION__;\n } catch (_e) {\n }\n if (!extensionConnector) {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && enabled) {\n console.warn(\n \"[zustand devtools middleware] Please install/enable Redux devtools extension\"\n );\n }\n return fn(set, get, api);\n }\n const { connection, ...connectionInformation } = extractConnectionInformation(store, extensionConnector, options);\n let isRecording = true;\n api.setState = (state, replace, nameOrAction) => {\n const r = set(state, replace);\n if (!isRecording) return r;\n const action = nameOrAction === void 0 ? { type: anonymousActionType || \"anonymous\" } : typeof nameOrAction === \"string\" ? { type: nameOrAction } : nameOrAction;\n if (store === void 0) {\n connection == null ? void 0 : connection.send(action, get());\n return r;\n }\n connection == null ? void 0 : connection.send(\n {\n ...action,\n type: `${store}/${action.type}`\n },\n {\n ...getTrackedConnectionState(options.name),\n [store]: api.getState()\n }\n );\n return r;\n };\n const setStateFromDevtools = (...a) => {\n const originalIsRecording = isRecording;\n isRecording = false;\n set(...a);\n isRecording = originalIsRecording;\n };\n const initialState = fn(api.setState, get, api);\n if (connectionInformation.type === \"untracked\") {\n connection == null ? void 0 : connection.init(initialState);\n } else {\n connectionInformation.stores[connectionInformation.store] = api;\n connection == null ? void 0 : connection.init(\n Object.fromEntries(\n Object.entries(connectionInformation.stores).map(([key, store2]) => [\n key,\n key === connectionInformation.store ? initialState : store2.getState()\n ])\n )\n );\n }\n if (api.dispatchFromDevtools && typeof api.dispatch === \"function\") {\n let didWarnAboutReservedActionType = false;\n const originalDispatch = api.dispatch;\n api.dispatch = (...a) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && a[0].type === \"__setState\" && !didWarnAboutReservedActionType) {\n console.warn(\n '[zustand devtools middleware] \"__setState\" action type is reserved to set state from the devtools. Avoid using it.'\n );\n didWarnAboutReservedActionType = true;\n }\n originalDispatch(...a);\n };\n }\n connection.subscribe((message) => {\n var _a;\n switch (message.type) {\n case \"ACTION\":\n if (typeof message.payload !== \"string\") {\n console.error(\n \"[zustand devtools middleware] Unsupported action format\"\n );\n return;\n }\n return parseJsonThen(\n message.payload,\n (action) => {\n if (action.type === \"__setState\") {\n if (store === void 0) {\n setStateFromDevtools(action.state);\n return;\n }\n if (Object.keys(action.state).length !== 1) {\n console.error(\n `\n [zustand devtools middleware] Unsupported __setState action format. \n When using 'store' option in devtools(), the 'state' should have only one key, which is a value of 'store' that was passed in devtools(),\n and value of this only key should be a state object. Example: { \"type\": \"__setState\", \"state\": { \"abc123Store\": { \"foo\": \"bar\" } } }\n `\n );\n }\n const stateFromDevtools = action.state[store];\n if (stateFromDevtools === void 0 || stateFromDevtools === null) {\n return;\n }\n if (JSON.stringify(api.getState()) !== JSON.stringify(stateFromDevtools)) {\n setStateFromDevtools(stateFromDevtools);\n }\n return;\n }\n if (!api.dispatchFromDevtools) return;\n if (typeof api.dispatch !== \"function\") return;\n api.dispatch(action);\n }\n );\n case \"DISPATCH\":\n switch (message.payload.type) {\n case \"RESET\":\n setStateFromDevtools(initialState);\n if (store === void 0) {\n return connection == null ? void 0 : connection.init(api.getState());\n }\n return connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n case \"COMMIT\":\n if (store === void 0) {\n connection == null ? void 0 : connection.init(api.getState());\n return;\n }\n return connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n case \"ROLLBACK\":\n return parseJsonThen(message.state, (state) => {\n if (store === void 0) {\n setStateFromDevtools(state);\n connection == null ? void 0 : connection.init(api.getState());\n return;\n }\n setStateFromDevtools(state[store]);\n connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n });\n case \"JUMP_TO_STATE\":\n case \"JUMP_TO_ACTION\":\n return parseJsonThen(message.state, (state) => {\n if (store === void 0) {\n setStateFromDevtools(state);\n return;\n }\n if (JSON.stringify(api.getState()) !== JSON.stringify(state[store])) {\n setStateFromDevtools(state[store]);\n }\n });\n case \"IMPORT_STATE\": {\n const { nextLiftedState } = message.payload;\n const lastComputedState = (_a = nextLiftedState.computedStates.slice(-1)[0]) == null ? void 0 : _a.state;\n if (!lastComputedState) return;\n if (store === void 0) {\n setStateFromDevtools(lastComputedState);\n } else {\n setStateFromDevtools(lastComputedState[store]);\n }\n connection == null ? void 0 : connection.send(\n null,\n // FIXME no-any\n nextLiftedState\n );\n return;\n }\n case \"PAUSE_RECORDING\":\n return isRecording = !isRecording;\n }\n return;\n }\n });\n return initialState;\n};\nconst devtools = devtoolsImpl;\nconst parseJsonThen = (stringified, f) => {\n let parsed;\n try {\n parsed = JSON.parse(stringified);\n } catch (e) {\n console.error(\n \"[zustand devtools middleware] Could not parse the received json\",\n e\n );\n }\n if (parsed !== void 0) f(parsed);\n};\n\nconst subscribeWithSelectorImpl = (fn) => (set, get, api) => {\n const origSubscribe = api.subscribe;\n api.subscribe = (selector, optListener, options) => {\n let listener = selector;\n if (optListener) {\n const equalityFn = (options == null ? void 0 : options.equalityFn) || Object.is;\n let currentSlice = selector(api.getState());\n listener = (state) => {\n const nextSlice = selector(state);\n if (!equalityFn(currentSlice, nextSlice)) {\n const previousSlice = currentSlice;\n optListener(currentSlice = nextSlice, previousSlice);\n }\n };\n if (options == null ? void 0 : options.fireImmediately) {\n optListener(currentSlice, currentSlice);\n }\n }\n return origSubscribe(listener);\n };\n const initialState = fn(set, get, api);\n return initialState;\n};\nconst subscribeWithSelector = subscribeWithSelectorImpl;\n\nconst combine = (initialState, create) => (...a) => Object.assign({}, initialState, create(...a));\n\nfunction createJSONStorage(getStorage, options) {\n let storage;\n try {\n storage = getStorage();\n } catch (_e) {\n return;\n }\n const persistStorage = {\n getItem: (name) => {\n var _a;\n const parse = (str2) => {\n if (str2 === null) {\n return null;\n }\n return JSON.parse(str2, options == null ? void 0 : options.reviver);\n };\n const str = (_a = storage.getItem(name)) != null ? _a : null;\n if (str instanceof Promise) {\n return str.then(parse);\n }\n return parse(str);\n },\n setItem: (name, newValue) => storage.setItem(\n name,\n JSON.stringify(newValue, options == null ? void 0 : options.replacer)\n ),\n removeItem: (name) => storage.removeItem(name)\n };\n return persistStorage;\n}\nconst toThenable = (fn) => (input) => {\n try {\n const result = fn(input);\n if (result instanceof Promise) {\n return result;\n }\n return {\n then(onFulfilled) {\n return toThenable(onFulfilled)(result);\n },\n catch(_onRejected) {\n return this;\n }\n };\n } catch (e) {\n return {\n then(_onFulfilled) {\n return this;\n },\n catch(onRejected) {\n return toThenable(onRejected)(e);\n }\n };\n }\n};\nconst oldImpl = (config, baseOptions) => (set, get, api) => {\n let options = {\n getStorage: () => localStorage,\n serialize: JSON.stringify,\n deserialize: JSON.parse,\n partialize: (state) => state,\n version: 0,\n merge: (persistedState, currentState) => ({\n ...currentState,\n ...persistedState\n }),\n ...baseOptions\n };\n let hasHydrated = false;\n const hydrationListeners = /* @__PURE__ */ new Set();\n const finishHydrationListeners = /* @__PURE__ */ new Set();\n let storage;\n try {\n storage = options.getStorage();\n } catch (_e) {\n }\n if (!storage) {\n return config(\n (...args) => {\n console.warn(\n `[zustand persist middleware] Unable to update item '${options.name}', the given storage is currently unavailable.`\n );\n set(...args);\n },\n get,\n api\n );\n }\n const thenableSerialize = toThenable(options.serialize);\n const setItem = () => {\n const state = options.partialize({ ...get() });\n let errorInSync;\n const thenable = thenableSerialize({ state, version: options.version }).then(\n (serializedValue) => storage.setItem(options.name, serializedValue)\n ).catch((e) => {\n errorInSync = e;\n });\n if (errorInSync) {\n throw errorInSync;\n }\n return thenable;\n };\n const savedSetState = api.setState;\n api.setState = (state, replace) => {\n savedSetState(state, replace);\n void setItem();\n };\n const configResult = config(\n (...args) => {\n set(...args);\n void setItem();\n },\n get,\n api\n );\n let stateFromStorage;\n const hydrate = () => {\n var _a;\n if (!storage) return;\n hasHydrated = false;\n hydrationListeners.forEach((cb) => cb(get()));\n const postRehydrationCallback = ((_a = options.onRehydrateStorage) == null ? void 0 : _a.call(options, get())) || void 0;\n return toThenable(storage.getItem.bind(storage))(options.name).then((storageValue) => {\n if (storageValue) {\n return options.deserialize(storageValue);\n }\n }).then((deserializedStorageValue) => {\n if (deserializedStorageValue) {\n if (typeof deserializedStorageValue.version === \"number\" && deserializedStorageValue.version !== options.version) {\n if (options.migrate) {\n return options.migrate(\n deserializedStorageValue.state,\n deserializedStorageValue.version\n );\n }\n console.error(\n `State loaded from storage couldn't be migrated since no migrate function was provided`\n );\n } else {\n return deserializedStorageValue.state;\n }\n }\n }).then((migratedState) => {\n var _a2;\n stateFromStorage = options.merge(\n migratedState,\n (_a2 = get()) != null ? _a2 : configResult\n );\n set(stateFromStorage, true);\n return setItem();\n }).then(() => {\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(stateFromStorage, void 0);\n hasHydrated = true;\n finishHydrationListeners.forEach((cb) => cb(stateFromStorage));\n }).catch((e) => {\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(void 0, e);\n });\n };\n api.persist = {\n setOptions: (newOptions) => {\n options = {\n ...options,\n ...newOptions\n };\n if (newOptions.getStorage) {\n storage = newOptions.getStorage();\n }\n },\n clearStorage: () => {\n storage == null ? void 0 : storage.removeItem(options.name);\n },\n getOptions: () => options,\n rehydrate: () => hydrate(),\n hasHydrated: () => hasHydrated,\n onHydrate: (cb) => {\n hydrationListeners.add(cb);\n return () => {\n hydrationListeners.delete(cb);\n };\n },\n onFinishHydration: (cb) => {\n finishHydrationListeners.add(cb);\n return () => {\n finishHydrationListeners.delete(cb);\n };\n }\n };\n hydrate();\n return stateFromStorage || configResult;\n};\nconst newImpl = (config, baseOptions) => (set, get, api) => {\n let options = {\n storage: createJSONStorage(() => localStorage),\n partialize: (state) => state,\n version: 0,\n merge: (persistedState, currentState) => ({\n ...currentState,\n ...persistedState\n }),\n ...baseOptions\n };\n let hasHydrated = false;\n const hydrationListeners = /* @__PURE__ */ new Set();\n const finishHydrationListeners = /* @__PURE__ */ new Set();\n let storage = options.storage;\n if (!storage) {\n return config(\n (...args) => {\n console.warn(\n `[zustand persist middleware] Unable to update item '${options.name}', the given storage is currently unavailable.`\n );\n set(...args);\n },\n get,\n api\n );\n }\n const setItem = () => {\n const state = options.partialize({ ...get() });\n return storage.setItem(options.name, {\n state,\n version: options.version\n });\n };\n const savedSetState = api.setState;\n api.setState = (state, replace) => {\n savedSetState(state, replace);\n void setItem();\n };\n const configResult = config(\n (...args) => {\n set(...args);\n void setItem();\n },\n get,\n api\n );\n api.getInitialState = () => configResult;\n let stateFromStorage;\n const hydrate = () => {\n var _a, _b;\n if (!storage) return;\n hasHydrated = false;\n hydrationListeners.forEach((cb) => {\n var _a2;\n return cb((_a2 = get()) != null ? _a2 : configResult);\n });\n const postRehydrationCallback = ((_b = options.onRehydrateStorage) == null ? void 0 : _b.call(options, (_a = get()) != null ? _a : configResult)) || void 0;\n return toThenable(storage.getItem.bind(storage))(options.name).then((deserializedStorageValue) => {\n if (deserializedStorageValue) {\n if (typeof deserializedStorageValue.version === \"number\" && deserializedStorageValue.version !== options.version) {\n if (options.migrate) {\n return [\n true,\n options.migrate(\n deserializedStorageValue.state,\n deserializedStorageValue.version\n )\n ];\n }\n console.error(\n `State loaded from storage couldn't be migrated since no migrate function was provided`\n );\n } else {\n return [false, deserializedStorageValue.state];\n }\n }\n return [false, void 0];\n }).then((migrationResult) => {\n var _a2;\n const [migrated, migratedState] = migrationResult;\n stateFromStorage = options.merge(\n migratedState,\n (_a2 = get()) != null ? _a2 : configResult\n );\n set(stateFromStorage, true);\n if (migrated) {\n return setItem();\n }\n }).then(() => {\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(stateFromStorage, void 0);\n stateFromStorage = get();\n hasHydrated = true;\n finishHydrationListeners.forEach((cb) => cb(stateFromStorage));\n }).catch((e) => {\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(void 0, e);\n });\n };\n api.persist = {\n setOptions: (newOptions) => {\n options = {\n ...options,\n ...newOptions\n };\n if (newOptions.storage) {\n storage = newOptions.storage;\n }\n },\n clearStorage: () => {\n storage == null ? void 0 : storage.removeItem(options.name);\n },\n getOptions: () => options,\n rehydrate: () => hydrate(),\n hasHydrated: () => hasHydrated,\n onHydrate: (cb) => {\n hydrationListeners.add(cb);\n return () => {\n hydrationListeners.delete(cb);\n };\n },\n onFinishHydration: (cb) => {\n finishHydrationListeners.add(cb);\n return () => {\n finishHydrationListeners.delete(cb);\n };\n }\n };\n if (!options.skipHydration) {\n hydrate();\n }\n return stateFromStorage || configResult;\n};\nconst persistImpl = (config, baseOptions) => {\n if (\"getStorage\" in baseOptions || \"serialize\" in baseOptions || \"deserialize\" in baseOptions) {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") {\n console.warn(\n \"[DEPRECATED] `getStorage`, `serialize` and `deserialize` options are deprecated. Use `storage` option instead.\"\n );\n }\n return oldImpl(config, baseOptions);\n }\n return newImpl(config, baseOptions);\n};\nconst persist = persistImpl;\n\nexport { combine, createJSONStorage, devtools, persist, redux, subscribeWithSelector };\n","import { create } from \"zustand\";\nimport { persist } from \"zustand/middleware\";\n\ntype Theme = \"dark\" | \"light\";\ntype themeStoreType = {\n theme: Theme;\n setTheme: (theme?: Theme) => void;\n};\n\nconst STORAGE_KEY = \"csv-importer-theme\";\n\nconst useThemeStore = create<themeStoreType>()(\n persist(\n (set) => ({\n theme: typeof window !== \"undefined\" ? (localStorage.getItem(STORAGE_KEY) as Theme) : \"light\",\n setTheme: (newTheme) =>\n set((state) => {\n const theme = newTheme || (state.theme === \"light\" ? \"dark\" : \"light\");\n return { theme };\n }),\n }),\n {\n name: STORAGE_KEY,\n }\n )\n);\n\nexport default useThemeStore;\n","import React, { forwardRef, useEffect, useRef, useState } from \"react\";\nimport Importer from \"../../importer/features/main\";\nimport Providers from \"../../importer/providers\";\nimport useThemeStore from \"../../importer/stores/theme\";\nimport { darkenColor, isValidColor } from \"../../importer/utils/colorUtils\";\nimport { CSVImporterProps } from \"../../types\";\n// Import styles so they are available for the importer. We will transfer\n// these styles into the iframe and remove them from the host document to\n// prevent leakage (handled by IframeWrapper). The base reset is disabled\n// in index.css to avoid global overrides before transfer.\n// Ensure styles are bundled for injection into iframe\nimport \"../../index.css\";\nimport \"./style/csv-importer.css\";\n\nconst CSVImporter = forwardRef((importerProps: CSVImporterProps, forwardRef?: any) => {\n // Destructure all known props from CSVImporterProps\n const {\n isModal = true,\n modalIsOpen = true,\n modalOnCloseTriggered = () => null,\n modalCloseOnOutsideClick,\n darkMode = false,\n primaryColor = \"#2563eb\",\n className,\n onComplete,\n customStyles,\n showDownloadTemplateButton,\n skipHeaderRowSelection,\n language,\n customTranslations,\n importerKey,\n backendUrl,\n user,\n metadata,\n demoData,\n columns,\n // Any remaining props will be valid DOM props\n ...domProps\n } = importerProps;\n const ref = forwardRef ?? useRef(null);\n\n useEffect(() => {\n const current = ref?.current as any;\n if (isModal && current) {\n if (modalIsOpen) current?.showModal?.();\n else current?.close?.();\n }\n }, [isModal, modalIsOpen, ref]);\n const baseClass = \"CSVImporter\";\n const themeClass = darkMode ? `${baseClass}-dark` : `${baseClass}-light`;\n const domElementClass = [\"csv-importer\", `${baseClass}-${isModal ? \"dialog\" : \"div\"}`, themeClass, className].filter((i) => i).join(\" \");\n\n // Set Light/Dark mode\n const setTheme = useThemeStore((state) => state.setTheme);\n\n useEffect(() => {\n const theme = darkMode ? \"dark\" : \"light\";\n setTheme(theme);\n }, [darkMode]);\n\n // Apply primary color to component root\n // These variables are needed for components like Stepper that rely on CSS variables\n useEffect(() => {\n if (primaryColor && isValidColor(primaryColor) && ref?.current) {\n // Apply styles to the component's root element\n const componentRoot = ref.current as HTMLElement;\n if (componentRoot) {\n componentRoot.style.setProperty(\"--color-primary\", primaryColor);\n componentRoot.style.setProperty(\"--color-primary-hover\", darkenColor(primaryColor, 20));\n }\n }\n }, [primaryColor, ref]);\n\n const backdropClick = (event: { target: any }) => {\n if (modalCloseOnOutsideClick && event.target === ref?.current) {\n modalOnCloseTriggered();\n }\n };\n\n useEffect(() => {\n const current = ref?.current as any;\n if (current && isModal) {\n const handleCancel = () => {\n modalOnCloseTriggered();\n };\n current.addEventListener(\"cancel\", handleCancel);\n return () => {\n current.removeEventListener(\"cancel\", handleCancel);\n };\n }\n }, [isModal, modalOnCloseTriggered, ref]);\n\n // Since we've already destructured all known props above,\n // domProps should only contain valid DOM attributes\n const elementProps = {\n ref,\n ...(isModal ? { onClick: backdropClick } : {}),\n className: domElementClass,\n \"data-theme\": darkMode ? \"dark\" : \"light\",\n style: { colorScheme: darkMode ? \"dark\" : \"light\" },\n ...domProps, // Only contains standard DOM props now\n };\n\n // Create a new component that properly passes only the props that Importer needs\n const ImporterComponent = () => (\n <Providers primaryColor={primaryColor}>\n <Importer\n isModal={isModal}\n modalIsOpen={modalIsOpen}\n modalOnCloseTriggered={modalOnCloseTriggered}\n modalCloseOnOutsideClick={modalCloseOnOutsideClick}\n darkMode={darkMode}\n primaryColor={primaryColor}\n className={className}\n onComplete={onComplete}\n customStyles={customStyles}\n showDownloadTemplateButton={showDownloadTemplateButton}\n skipHeaderRowSelection={skipHeaderRowSelection}\n language={language}\n customTranslations={customTranslations}\n importerKey={importerKey}\n backendUrl={backendUrl}\n user={user}\n metadata={metadata}\n demoData={demoData}\n columns={columns}\n />\n </Providers>\n );\n\n return isModal ? (\n <div className=\"csvImporter\">\n <dialog {...elementProps}>\n <ImporterComponent />\n </dialog>\n </div>\n ) : (\n <div {...elementProps}>\n <ImporterComponent />\n </div>\n );\n});\n\nexport default CSVImporter;\n"],"names":["e","module","this","r","n","d","s","a","o","h","v","t","w","i","U","f","y","l","c","p","m","u","g","k","_","E","P","C","S","O","x","A","T","D","L","F","j","z","M","b","R","sizes","clsx","CLASS_PART_SEPARATOR","createClassGroupUtils","config","classMap","createClassMap","conflictingClassGroups","conflictingClassGroupModifiers","className","classParts","getGroupRecursive","getGroupIdForArbitraryProperty","classGroupId","hasPostfixModifier","conflicts","classPartObject","currentClassPart","nextClassPartObject","classGroupFromNextClassPart","classRest","validator","arbitraryPropertyRegex","arbitraryPropertyClassName","property","theme","classGroups","processClassesRecursively","classGroup","classDefinition","classPartObjectToEdit","getPart","isThemeGetter","key","path","currentClassPartObject","pathPart","func","createLruCache","maxCacheSize","cacheSize","cache","previousCache","update","value","IMPORTANT_MODIFIER","MODIFIER_SEPARATOR","MODIFIER_SEPARATOR_LENGTH","createParseClassName","prefix","experimentalParseClassName","parseClassName","modifiers","bracketDepth","parenDepth","modifierStart","postfixModifierPosition","index","currentCharacter","baseClassNameWithImportantModifier","baseClassName","stripImportantModifier","hasImportantModifier","maybePostfixModifierPosition","fullPrefix","parseClassNameOriginal","createSortModifiers","orderSensitiveModifiers","modifier","sortedModifiers","unsortedModifiers","createConfigUtils","SPLIT_CLASSES_REGEX","mergeClassList","classList","configUtils","getClassGroupId","getConflictingClassGroupIds","sortModifiers","classGroupsInConflict","classNames","result","originalClassName","isExternal","variantModifier","modifierId","classId","conflictGroups","group","twJoin","argument","resolvedValue","string","toValue","mix","createTailwindMerge","createConfigFirst","createConfigRest","cacheGet","cacheSet","functionToCall","initTailwindMerge","previousConfig","createConfigCurrent","tailwindMerge","cachedResult","fromTheme","themeGetter","arbitraryValueRegex","arbitraryVariableRegex","fractionRegex","tshirtUnitRegex","lengthUnitRegex","colorFunctionRegex","shadowRegex","imageRegex","isFraction","isNumber","isInteger","isPercent","isTshirtSize","isAny","isLengthOnly","isNever","isShadow","isImage","isAnyNonArbitrary","isArbitraryValue","isArbitraryVariable","isArbitrarySize","getIsArbitraryValue","isLabelSize","isArbitraryLength","isLabelLength","isArbitraryNumber","isLabelNumber","isArbitraryPosition","isLabelPosition","isArbitraryImage","isLabelImage","isArbitraryShadow","isLabelShadow","isArbitraryVariableLength","getIsArbitraryVariable","isArbitraryVariableFamilyName","isLabelFamilyName","isArbitraryVariablePosition","isArbitraryVariableSize","isArbitraryVariableImage","isArbitraryVariableShadow","testLabel","testValue","shouldMatchNoLabel","label","getDefaultConfig","themeColor","themeFont","themeText","themeFontWeight","themeTracking","themeLeading","themeBreakpoint","themeContainer","themeSpacing","themeRadius","themeShadow","themeInsetShadow","themeTextShadow","themeDropShadow","themeBlur","themePerspective","themeAspect","themeEase","themeAnimate","scaleBreak","scalePosition","scalePositionWithArbitrary","scaleOverflow","scaleOverscroll","scaleUnambiguousSpacing","scaleInset","scaleGridTemplateColsRows","scaleGridColRowStartAndEnd","scaleGridColRowStartOrEnd","scaleGridAutoColsRows","scaleAlignPrimaryAxis","scaleAlignSecondaryAxis","scaleMargin","scaleSizing","scaleColor","scaleBgPosition","scaleBgRepeat","scaleBgSize","scaleGradientStopPosition","scaleRadius","scaleBorderWidth","scaleLineStyle","scaleBlendMode","scaleMaskImagePosition","scaleBlur","scaleRotate","scaleScale","scaleSkew","scaleTranslate","twMerge","cn","inputs","toKebabCase","toCamelCase","match","p1","p2","toPascalCase","camelCase","mergeClasses","classes","array","hasA11yProp","props","prop","defaultAttributes","Icon","forwardRef","color","size","strokeWidth","absoluteStrokeWidth","children","iconNode","rest","ref","createElement","tag","attrs","createLucideIcon","iconName","Component","__iconNode","Check","ChevronDown","ChevronUp","CircleCheckBig","CloudUpload","Info","RotateCcw","Sparkles","TriangleAlert","Wrench","X","Errors","error","centered","jsx","jsxs","Stepper","steps","current","hide","skipHeader","activeSteps","step","currentActiveIndex","isActive","isDone","setRef","composeRefs","refs","node","hasCleanup","cleanups","cleanup","useComposedRefs","React","createSlot","ownerName","SlotClone","createSlotClone","Slot2","forwardedRef","slotProps","childrenArray","slottable","isSlottable","newElement","newChildren","child","Slot","childrenRef","getElementRef","props2","mergeProps","SLOTTABLE_IDENTIFIER","childProps","overrideProps","propName","slotPropValue","childPropValue","args","element","getter","mayWarn","falsyToString","cx","cva","base","_config_compoundVariants","variants","defaultVariants","getVariantClassNames","variant","variantProp","defaultVariantProp","variantKey","propsWithoutUndefined","acc","param","getCompoundVariantClassNames","cvClass","cvClassName","compoundVariantOptions","buttonVariants","Button","asChild","isLoading","Fragment","alertVariants","Alert","AlertTitle","AlertDescription","composeEventHandlers","originalEventHandler","ourEventHandler","checkForDefaultPrevented","event","createContext2","rootComponentName","defaultContext","Context","Provider","context","useContext2","consumerName","createContextScope","scopeName","createContextScopeDeps","defaultContexts","createContext3","BaseContext","scope","createScope","scopeContexts","contexts","composeContextScopes","scopes","baseScope","scopeHooks","createScope2","overrideScopes","nextScopes","nextScopes2","useScope","currentScope","createSlottable","Slottable2","Fragment2","NODES","Primitive","primitive","Node","primitiveProps","Comp","dispatchDiscreteCustomEvent","target","ReactDOM","useCallbackRef","callback","callbackRef","useEscapeKeydown","onEscapeKeyDownProp","ownerDocument","onEscapeKeyDown","handleKeyDown","DISMISSABLE_LAYER_NAME","CONTEXT_UPDATE","POINTER_DOWN_OUTSIDE","FOCUS_OUTSIDE","originalBodyPointerEvents","DismissableLayerContext","DismissableLayer","disableOutsidePointerEvents","onPointerDownOutside","onFocusOutside","onInteractOutside","onDismiss","layerProps","setNode","force","composedRefs","node2","layers","highestLayerWithOutsidePointerEventsDisabled","highestLayerWithOutsidePointerEventsDisabledIndex","isBodyPointerEventsDisabled","isPointerEventsEnabled","pointerDownOutside","usePointerDownOutside","isPointerDownOnBranch","branch","focusOutside","useFocusOutside","dispatchUpdate","handleUpdate","BRANCH_NAME","DismissableLayerBranch","handlePointerDownOutside","isPointerInsideReactTreeRef","handleClickRef","handlePointerDown","handleAndDispatchPointerDownOutsideEvent2","handleAndDispatchCustomEvent","eventDetail","timerId","handleFocusOutside","isFocusInsideReactTreeRef","handleFocus","name","handler","detail","discrete","useLayoutEffect2","useReactId","count","useId","deterministicId","id","setId","useLayoutEffect","reactId","sides","min","max","round","floor","createCoords","oppositeSideMap","oppositeAlignmentMap","clamp","start","end","evaluate","getSide","placement","getAlignment","getOppositeAxis","axis","getAxisLength","yAxisSides","getSideAxis","getAlignmentAxis","getAlignmentSides","rects","rtl","alignment","alignmentAxis","length","mainAlignmentSide","getOppositePlacement","getExpandedPlacements","oppositePlacement","getOppositeAlignmentPlacement","lrPlacement","rlPlacement","tbPlacement","btPlacement","getSideList","side","isStart","getOppositeAxisPlacements","flipAlignment","direction","list","expandPaddingObject","padding","getPaddingObject","rectToClientRect","rect","width","height","computeCoordsFromPlacement","_ref","reference","floating","sideAxis","alignLength","isVertical","commonX","commonY","commonAlign","coords","computePosition","strategy","middleware","platform","validMiddleware","statefulPlacement","middlewareData","resetCount","fn","nextX","nextY","data","reset","detectOverflow","state","options","_await$platform$isEle","elements","boundary","rootBoundary","elementContext","altBoundary","paddingObject","clippingClientRect","offsetParent","offsetScale","elementClientRect","arrow","arrowDimensions","isYAxis","minProp","maxProp","clientProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","largestPossiblePadding","minPadding","maxPadding","min$1","center","offset","shouldAddOffset","alignmentOffset","flip","_middlewareData$arrow","_middlewareData$flip","initialPlacement","checkMainAxis","checkCrossAxis","specifiedFallbackPlacements","fallbackStrategy","fallbackAxisSideDirection","detectOverflowOptions","initialSideAxis","isBasePlacement","fallbackPlacements","hasFallbackAxisSideDirection","placements","overflow","overflows","overflowsData","_middlewareData$flip2","_overflowsData$filter","nextIndex","nextPlacement","resetPlacement","_overflowsData$filter2","currentSideAxis","getSideOffsets","isAnySideFullyClipped","offsets","originSides","convertValueToCoords","mainAxisMulti","crossAxisMulti","rawValue","mainAxis","crossAxis","_middlewareData$offse","diffCoords","shift","limiter","mainAxisCoord","crossAxisCoord","minSide","maxSide","limitedCoords","limitShift","rawOffset","computedOffset","len","limitMin","limitMax","_middlewareData$offse2","isOriginSide","_state$middlewareData","_state$middlewareData2","apply","heightSide","widthSide","maximumClippingHeight","maximumClippingWidth","overflowAvailableHeight","overflowAvailableWidth","noShift","availableHeight","availableWidth","xMin","xMax","yMin","yMax","nextDimensions","hasWindow","getNodeName","isNode","getWindow","_node$ownerDocument","getDocumentElement","isElement","isHTMLElement","isShadowRoot","invalidOverflowDisplayValues","isOverflowElement","overflowX","overflowY","display","getComputedStyle","tableElements","isTableElement","topLayerSelectors","isTopLayer","selector","transformProperties","willChangeValues","containValues","isContainingBlock","elementOrCss","webkit","isWebKit","css","getContainingBlock","currentNode","getParentNode","isLastTraversableNode","lastTraversableNodeNames","getNodeScroll","getNearestOverflowAncestor","parentNode","getOverflowAncestors","traverseIframes","_node$ownerDocument2","scrollableAncestor","isBody","win","frameElement","getFrameElement","getCssDimensions","hasOffset","offsetWidth","offsetHeight","shouldFallback","unwrapElement","getScale","domElement","$","noOffsets","getVisualOffsets","shouldAddVisualOffsets","isFixed","floatingOffsetParent","getBoundingClientRect","includeScale","isFixedStrategy","clientRect","scale","visualOffsets","offsetWin","currentWin","currentIFrame","iframeScale","iframeRect","left","top","getWindowScrollBarX","leftScroll","getHTMLOffset","documentElement","scroll","ignoreScrollbarX","htmlRect","convertOffsetParentRelativeRectToViewportRelativeRect","topLayer","isOffsetParentAnElement","offsetRect","htmlOffset","getClientRects","getDocumentRect","html","body","getViewportRect","visualViewport","visualViewportBased","absoluteOrFixed","getInnerBoundingClientRect","getClientRectFromClippingAncestor","clippingAncestor","hasFixedPositionAncestor","stopNode","getClippingElementAncestors","el","currentContainingBlockComputedStyle","elementIsFixed","computedStyle","currentNodeIsContaining","ancestor","getClippingRect","clippingAncestors","firstClippingAncestor","clippingRect","accRect","getDimensions","getRectRelativeToOffsetParent","setLeftRTLScrollbarOffset","isStaticPositioned","getTrueOffsetParent","polyfill","rawOffsetParent","getOffsetParent","svgOffsetParent","getElementRects","getOffsetParentFn","getDimensionsFn","floatingDimensions","isRTL","rectsAreEqual","observeMove","onMove","io","timeoutId","root","_io","refresh","skip","threshold","elementRectForRootMargin","insetTop","insetRight","insetBottom","insetLeft","isFirstUpdate","handleObserve","entries","ratio","autoUpdate","ancestorScroll","ancestorResize","elementResize","layoutShift","animationFrame","referenceEl","ancestors","cleanupIo","reobserveFrame","resizeObserver","firstEntry","_resizeObserver","frameId","prevRefRect","frameLoop","nextRefRect","_resizeObserver2","offset$1","shift$1","flip$1","size$1","hide$1","arrow$1","limitShift$1","mergedOptions","platformWithCache","computePosition$1","isClient","noop","deepEqual","keys","getDPR","roundByDPR","dpr","useLatestRef","useFloating","externalReference","externalFloating","transform","whileElementsMounted","open","setData","latestMiddleware","setLatestMiddleware","_reference","_setReference","_floating","_setFloating","setReference","referenceRef","setFloating","floatingRef","floatingEl","dataRef","hasWhileElementsMounted","whileElementsMountedRef","platformRef","openRef","fullData","isMountedRef","floatingStyles","initialStyles","isRef","arrow$2","deps","NAME","Arrow","arrowProps","Root","useSize","setSize","entry","borderSizeEntry","borderSize","POPPER_NAME","createPopperContext","createPopperScope","PopperProvider","usePopperContext","Popper","__scopePopper","anchor","setAnchor","ANCHOR_NAME","PopperAnchor","virtualRef","anchorProps","CONTENT_NAME","PopperContentProvider","useContentContext","PopperContent","sideOffset","align","alignOffset","arrowPadding","avoidCollisions","collisionBoundary","collisionPaddingProp","sticky","hideWhenDetached","updatePositionStrategy","onPlaced","contentProps","content","setContent","setArrow","arrowSize","arrowWidth","arrowHeight","desiredPlacement","collisionPadding","hasExplicitBoundaries","isNotNull","isPositioned","anchorWidth","anchorHeight","contentStyle","floatingUIarrow","transformOrigin","placedSide","placedAlign","getSideAndAlignFromPlacement","handlePlaced","arrowX","arrowY","cannotCenterArrow","contentZIndex","setContentZIndex","ARROW_NAME","OPPOSITE_SIDE","PopperArrow","contentContext","baseSide","ArrowPrimitive.Root","isArrowHidden","noArrowAlign","arrowXCenter","arrowYCenter","Root2","Anchor","Content","useStateMachine","initialState","machine","Presence","present","presence","usePresence","React2","stylesRef","prevPresentRef","prevAnimationNameRef","send","currentAnimationName","getAnimationName","styles","wasPresent","prevAnimationName","ownerWindow","handleAnimationEnd","isCurrentAnimation","currentFillMode","handleAnimationStart","useInsertionEffect","useControllableState","defaultProp","onChange","caller","uncontrolledProp","setUncontrolledProp","onChangeRef","useUncontrolledState","isControlled","isControlledRef","wasControlled","setValue","nextValue","value2","isFunction","prevValueRef","VISUALLY_HIDDEN_STYLES","VisuallyHidden","createTooltipContext","createTooltipScope","usePopperScope","PROVIDER_NAME","DEFAULT_DELAY_DURATION","TOOLTIP_OPEN","TooltipProviderContextProvider","useTooltipProviderContext","TooltipProvider","__scopeTooltip","delayDuration","skipDelayDuration","disableHoverableContent","isOpenDelayedRef","isPointerInTransitRef","skipDelayTimerRef","skipDelayTimer","inTransit","TOOLTIP_NAME","TooltipContextProvider","useTooltipContext","Tooltip","openProp","defaultOpen","onOpenChange","disableHoverableContentProp","delayDurationProp","providerContext","popperScope","trigger","setTrigger","contentId","openTimerRef","wasOpenDelayedRef","setOpen","open2","stateAttribute","handleOpen","handleClose","handleDelayedOpen","PopperPrimitive.Root","TRIGGER_NAME","TooltipTrigger","triggerProps","isPointerDownRef","hasPointerMoveOpenedRef","handlePointerUp","PopperPrimitive.Anchor","PORTAL_NAME","PortalProvider","usePortalContext","TooltipContent","portalContext","forceMount","TooltipContentImpl","TooltipContentHoverable","pointerGraceArea","setPointerGraceArea","onClose","onPointerInTransitChange","handleRemoveGraceArea","handleCreateGraceArea","hoverTarget","currentTarget","exitPoint","exitSide","getExitSideFromRect","paddedExitPoints","getPaddedExitPoints","hoverTargetPoints","getPointsFromRect","graceArea","getHull","handleTriggerLeave","handleContentLeave","handleTrackPointerGrace","pointerPosition","hasEnteredTarget","isPointerOutsideGraceArea","isPointInPolygon","VisuallyHiddenContentContextProvider","useVisuallyHiddenContentContext","Slottable","ariaLabel","handleScroll","PopperPrimitive.Content","VisuallyHiddenPrimitive.Root","TooltipArrow","PopperPrimitive.Arrow","point","bottom","right","polygon","inside","ii","jj","xi","yi","xj","yj","points","newPoints","getHullPresorted","upperHull","q","lowerHull","Root3","Trigger","Content2","TooltipPrimitive.Provider","TooltipRoot","TooltipPrimitive.Root","TooltipPrimitive.Trigger","TooltipPrimitive.Content","AUTOFOCUS_ON_MOUNT","AUTOFOCUS_ON_UNMOUNT","EVENT_OPTIONS","FOCUS_SCOPE_NAME","FocusScope","loop","trapped","onMountAutoFocusProp","onUnmountAutoFocusProp","scopeProps","container","setContainer","onMountAutoFocus","onUnmountAutoFocus","lastFocusedElementRef","focusScope","handleFocusIn2","focus","handleFocusOut2","relatedTarget","handleMutations2","mutations","mutation","mutationObserver","focusScopesStack","previouslyFocusedElement","mountEvent","focusFirst","removeLinks","getTabbableCandidates","unmountEvent","isTabKey","focusedElement","container2","first","last","getTabbableEdges","candidates","select","candidate","findVisible","nodes","walker","isHiddenInput","isHidden","upTo","isSelectableInput","createFocusScopesStack","stack","activeFocusScope","arrayRemove","item","updatedArray","items","useFocusGuards","edgeGuards","createFocusGuard","__assign","__rest","__awaiter","thisArg","_arguments","generator","adopt","resolve","reject","fulfilled","rejected","__spreadArray","to","from","pack","ar","zeroRightClassName","fullWidthClassName","noScrollbarsClassName","removedBarSizeVariable","assignRef","initialValue","useState","useIsomorphicLayoutEffect","currentValues","useMergeRefs","defaultValue","newValue","oldValue","prevRefs_1","nextRefs_1","current_1","ItoI","innerCreateMedium","defaults","buffer","assigned","medium","cb","cbs","pendingQueue","executeQueue","cycle","filter","createSidecarMedium","SideCar","_a","sideCar","Target","exportSidecar","exported","effectCar","nothing","RemoveScroll","parentRef","callbacks","setCallbacks","forwardProps","removeScrollBar","enabled","shards","noIsolation","inert","allowPinchZoom","_b","Container","gapMode","containerRef","containerProps","getNonce","makeStyleTag","nonce","injectStyles","insertStyleTag","head","stylesheetSingleton","counter","stylesheet","style","styleHookSingleton","sheet","isDynamic","styleSingleton","useStyle","Sheet","dynamic","zeroGap","parse","getOffset","cs","getGapWidth","documentWidth","windowWidth","Style","lockAttribute","getStyles","allowRelative","important","gap","getCurrentUseCounter","useLockAttribute","newCounter","RemoveScrollBar","noRelative","noImportant","passiveSupported","nonPassive","alwaysContainsScroll","elementCanBeScrolled","elementCouldBeVScrolled","elementCouldBeHScrolled","locationCouldBeScrolled","isScrollable","elementCouldBeScrolled","getScrollVariables","scrollHeight","clientHeight","getVScrollVariables","scrollTop","getHScrollVariables","scrollLeft","scrollWidth","clientWidth","getDirectionFactor","endTarget","sourceDelta","noOverscroll","directionFactor","delta","targetInLock","shouldCancelScroll","isDeltaPositive","availableScroll","availableScrollTop","position","scroll_1","capacity","elementScroll","getTouchXY","getDeltaXY","extractRef","deltaCompare","generateStyle","idCounter","lockStack","RemoveScrollSideCar","shouldPreventQueue","touchStartRef","activeAxis","lastProps","allow_1","shouldCancelEvent","parent","touch","touchStart","deltaX","deltaY","currentAxis","moveDirection","canBeScrolledInMainDirection","cancelingAxis","shouldPrevent","_event","sourceEvent","shardNodes","shouldStop","shouldCancel","should","getOutermostShadowParent","scrollTouchStart","scrollWheel","scrollTouchMove","inst","shadowParent","ReactRemoveScroll","getDefaultParent","originalTarget","sampleTarget","counterMap","uncontrolledNodes","markerMap","lockCount","unwrapHost","correctTargets","targets","correctedTarget","applyAttributeToOthers","markerName","controlAttribute","markerCounter","hiddenNodes","elementsToKeep","elementsToStop","keep","deep","attr","alreadyHidden","counterValue","markerValue","hideOthers","activeParentNode","DIALOG_NAME","createDialogContext","createDialogScope","DialogProvider","useDialogContext","Dialog","__scopeDialog","modal","triggerRef","contentRef","prevOpen","DialogTrigger","composedTriggerRef","getState","OVERLAY_NAME","DialogOverlay","overlayProps","DialogOverlayImpl","DialogContent","DialogContentModal","DialogContentNonModal","DialogContentImpl","originalEvent","ctrlLeftClick","hasInteractedOutsideRef","hasPointerDownOutsideRef","trapFocus","onOpenAutoFocus","onCloseAutoFocus","TitleWarning","DescriptionWarning","TITLE_NAME","DialogTitle","titleProps","DESCRIPTION_NAME","DialogDescription","descriptionProps","CLOSE_NAME","DialogClose","closeProps","TITLE_WARNING_NAME","WarningProvider","useWarningContext","createContext","titleId","titleWarningContext","MESSAGE","DESCRIPTION_WARNING_NAME","descriptionId","describedById","Overlay","Title","Description","Close","DialogPrimitive.Root","DialogPrimitive.Overlay","DialogPrimitive.Content","DialogPrimitive.Close","DialogHeader","DialogFooter","DialogPrimitive.Title","DialogPrimitive.Description","Input","type","usePrevious","CHECKBOX_NAME","createCheckboxContext","createCheckboxScope","CheckboxProvider","useCheckboxContext","Checkbox","__scopeCheckbox","checkedProp","defaultChecked","required","disabled","onCheckedChange","form","checkboxProps","button","setButton","hasConsumerStoppedPropagationRef","isFormControl","checked","setChecked","initialCheckedStateRef","form2","isIndeterminate","prevChecked","CheckboxBubbleInput","INDICATOR_NAME","CheckboxIndicator","indicatorProps","BUBBLE_INPUT_NAME","control","bubbles","controlSize","input","inputProto","defaultCheckedRef","Indicator","CheckboxPrimitive.Root","CheckboxPrimitive.Indicator","TOAST_LIMIT","TOAST_REMOVE_DELAY","genId","toastTimeouts","addToRemoveQueue","toastId","timeout","dispatch","reducer","action","toast","listeners","memoryState","listener","dismiss","useToast","setState","dummyI18n","useTranslation","generateTransformations","prompt","columnMapping","backendUrl","importerKey","targetColumns","validationErrors","response","errorData","change","countSelectedChanges","changes","toggleChangeSelection","setAllChangesSelection","selected","COMMON_PROMPTS","TransformModal","isOpen","onApplyTransformations","promptInputRef","useRef","setPrompt","setChanges","summary","setSummary","setError","isGenerating","setIsGenerating","showExamples","setShowExamples","hasValidationErrors","handleGenerate","useCallback","customPrompt","effectivePrompt","handleFixAllErrors","handleApply","applyAll","selectedChanges","handleToggleChange","prev","handleSelectAll","handleUseExample","examplePrompt","selectedCount","hasChanges","example","validateColumn","column","strValue","runValidator","date","numValue","numVal","validateUniqueness","rows","columnIndex","duplicateIndices","seen","row","rowIndex","originalIndex","applyTransformations","transformations","applyTransformation","word","digits","parts","format","formatDate","year","month","day","Validation","columns","fileData","selectedHeaderRow","onSuccess","onCancel","isSubmitting","filterInvalidRows","disableOnInvalidRows","errors","setErrors","filterMode","setFilterMode","isTransformModalOpen","setIsTransformModalOpen","scrollableSectionRef","headerRowIndex","headerRow","dataRows","setDataRows","includedColumns","useMemo","mapping","headers","colIdx","shouldValidateRef","useEffect","columnIds","col","validateData","newErrors","rowIdx","displayRowIndex","colIndexStr","columnId","validationError","mappingEntry","rowValues","err","handleCellEdit","prevRows","updatedRows","visibleRows","validCount","errorCount","errorRowIndices","validRows","idx","errorRows","filtered","errorTracking","indices","rowObjects","dataRowIdx","transformedData","newRow","transformedValues","AlertTriangle","header","actualRowIdx","rowHasError","dataRowIndex","useCustomStyles","customStyles","targetElement","isValidColor","hexToRgb","hex","rgbToHex","lightenColor","percent","rgb","factor","darkenColor","generateColorPalette","baseColor","applyColorPalette","primaryColor","parseJSON","returnType","escapePercent","parsedObj","parseObjectOrStringJSON","useStepper","initialStep","setCurrent","useMutableLocalStorage","getLocalStorage","storedValue","setStoredValue","valueToStore","StepEnum","calculateNextStep","nextStep","getStepConfig","useStepNavigation","isDemoMode","translatedSteps","initialStepperIndex","stepper","localStorageResult","storageStep","setStorageStep","currentStep","setCurrentStep","goBack","backStep","targetStep","setStep","goNext","calculatedStep","newStep","stepperIndex","Box","variantClasses","selectedVariants","Complete","reload","close","isModal","Flex","justify","wrap","flexClasses","gapStyle","HStack","VStack","Text","createCollection","createCollectionContext","createCollectionScope","CollectionProviderImpl","useCollectionContext","CollectionProvider","itemMap","COLLECTION_SLOT_NAME","CollectionSlotImpl","CollectionSlot","ITEM_SLOT_NAME","ITEM_DATA_ATTR","CollectionItemSlotImpl","CollectionItemSlot","itemData","useCollection","collectionNode","orderedNodes","DirectionContext","useDirection","localDir","globalDir","Portal","containerProp","portalProps","mounted","setMounted","OPEN_KEYS","SELECTION_KEYS","SELECT_NAME","Collection","createSelectContext","createSelectScope","SelectProvider","useSelectContext","SelectNativeOptionsProvider","useSelectNativeOptionsContext","Select","__scopeSelect","valueProp","onValueChange","dir","autoComplete","valueNode","setValueNode","valueNodeHasChildren","setValueNodeHasChildren","triggerPointerDownPosRef","nativeOptionsSet","setNativeOptionsSet","nativeSelectKey","option","optionsSet","SelectBubbleInput","SelectTrigger","isDisabled","getItems","pointerTypeRef","searchRef","handleTypeaheadSearch","resetTypeahead","useTypeaheadSearch","search","enabledItems","currentItem","nextItem","findNextItem","pointerEvent","shouldShowPlaceholder","isTypingAhead","VALUE_NAME","SelectValue","placeholder","valueProps","onValueNodeHasChildrenChange","hasChildren","ICON_NAME","SelectIcon","iconProps","SelectPortal","PortalPrimitive","SelectContent","fragment","setFragment","frag","SelectContentProvider","SelectContentImpl","CONTENT_MARGIN","useSelectContentContext","CONTENT_IMPL_NAME","viewport","setViewport","selectedItem","setSelectedItem","selectedItemText","setSelectedItemText","setIsPositioned","firstValidItemFoundRef","firstItem","restItems","lastItem","PREVIOUSLY_FOCUSED_ELEMENT","focusSelectedItem","pointerMoveDelta","handlePointerMove","itemRefCallback","isFirstValidItem","handleItemLeave","itemTextRefCallback","SelectPosition","SelectPopperPosition","SelectItemAlignedPosition","popperContentProps","isModifierKey","candidateNodes","currentElement","currentIndex","ITEM_ALIGNED_POSITION_NAME","popperProps","contentWrapper","setContentWrapper","shouldExpandOnScrollRef","shouldRepositionRef","triggerRect","contentRect","valueNodeRect","itemTextRect","itemTextOffset","leftDelta","minContentWidth","contentWidth","rightEdge","clampedLeft","rightDelta","leftEdge","clampedRight","itemsHeight","contentStyles","contentBorderTopWidth","contentPaddingTop","contentBorderBottomWidth","contentPaddingBottom","fullContentHeight","minContentHeight","viewportStyles","viewportPaddingTop","viewportPaddingBottom","topEdgeToTriggerMiddle","triggerMiddleToBottomEdge","selectedItemHalfHeight","itemOffsetMiddle","contentTopToItemMiddle","itemMiddleToContentBottom","isLastItem","viewportOffsetBottom","clampedTriggerMiddleToBottomEdge","isFirstItem","handleScrollButtonChange","SelectViewportProvider","POPPER_POSITION_NAME","useSelectViewportContext","VIEWPORT_NAME","SelectViewport","viewportProps","viewportContext","prevScrollTopRef","scrolledBy","cssMinHeight","cssHeight","prevHeight","nextHeight","clampedNextHeight","heightDiff","GROUP_NAME","SelectGroupContextProvider","useSelectGroupContext","SelectGroup","groupProps","groupId","LABEL_NAME","SelectLabel","labelProps","groupContext","ITEM_NAME","SelectItemContextProvider","useSelectItemContext","SelectItem","textValueProp","itemProps","isSelected","textValue","setTextValue","isFocused","setIsFocused","textId","handleSelect","prevTextValue","ITEM_TEXT_NAME","SelectItemText","itemTextProps","itemContext","nativeOptionsContext","itemTextNode","setItemTextNode","textContent","nativeOption","onNativeOptionAdd","onNativeOptionRemove","ITEM_INDICATOR_NAME","SelectItemIndicator","itemIndicatorProps","SCROLL_UP_BUTTON_NAME","SelectScrollUpButton","canScrollUp","setCanScrollUp","handleScroll2","canScrollUp2","SelectScrollButtonImpl","SCROLL_DOWN_BUTTON_NAME","SelectScrollDownButton","canScrollDown","setCanScrollDown","maxScroll","canScrollDown2","onAutoScroll","scrollIndicatorProps","autoScrollTimerRef","clearAutoScrollTimer","SEPARATOR_NAME","SelectSeparator","separatorProps","SelectArrow","prevValue","selectProto","onSearchChange","handleSearchChange","timerRef","updateSearch","normalizedSearch","char","currentItemIndex","wrappedItems","wrapArray","startIndex","Value","Viewport","Label","Item","ItemText","ItemIndicator","ScrollUpButton","ScrollDownButton","Separator","SelectPrimitive.Root","SelectPrimitive.Value","SelectPrimitive.Trigger","SelectPrimitive.Icon","SelectPrimitive.ScrollUpButton","SelectPrimitive.ScrollDownButton","SelectPrimitive.Portal","SelectPrimitive.Content","SelectPrimitive.Viewport","SelectPrimitive.Label","SelectPrimitive.Item","SelectPrimitive.ItemIndicator","SelectPrimitive.ItemText","SelectPrimitive.Separator","stringsSimilarity","s1","s2","words","words2","highestSimilarity","acc2","word2","wordSimilarity","similarity","longer","shorter","longerLength","editDistance","costs","lastValue","getMappingSuggestions","uploadColumns","templateColumns","ConfigureImport","setColumnMapping","llmEnhancementCalled","columnHeaders","val","getSampleData","startRow","autoMap","bestMatch","templateCol","score","stringSimilarity","suggestions","prevMapping","newMapping","usedTemplateIds","sortedSuggestions","suggestion","currentMapping","hasWeakMatch","handleMappingChange","templateFieldId","csvColumnIndex","colIndex","templateField","getMappedColumn","allRequiredFieldsMapped","field","handleSubmit","mappedColumn","isMapped","isRequired","CheckCircle","isAlreadyMapped","getStringLengthOfChildren","sum","isValidElement","as","title","icon","Tag","wrapperClasses","tooltipVisible","setTooltipVisible","setPosition","targetRef","tooltipContainer","showTooltip","hideTooltip","tooltipMessage","TableContext","Table","keyAsId","mergeThemes","highlightColumns","hideColumns","emptyState","heading","background","columnWidths","columnAlignments","fixHeader","onRowClick","modelDatum","thead","tableStyle","headingContent","Row","datum","onClick","isHeading","useContext","tooltip","captionInfo","headingKey","wrappedContent","cellClass","cellStyle","Cell","cellProps","ReactPropTypesSecret","ReactPropTypesSecret_1","require$$0","emptyFunction","emptyFunctionWithReset","factoryWithThrowingShims","shim","componentName","location","propFullName","secret","getShim","ReactPropTypes","propTypesModule","COMMON_MIME_TYPES","toFileWithPath","file","withMimeType","webkitRelativePath","setObjProp","ext","FILES_TO_IGNORE","fromEvent","evt","isObject","isDataTransfer","getDataTransferFiles","isChangeEvt","getInputFiles","getFsHandleFiles","fromList","handles","dt","files","toFilePromises","noIgnoredFiles","flatten","fromDataTransferItem","fromDirEntry","fromEntry","fromFileEntry","reader","readEntries","batch","fwp","es","acceptedFiles","acceptedFilesArray","fileName","mimeType","baseMimeType","validType","_toConsumableArray","arr","_arrayWithoutHoles","_iterableToArray","_unsupportedIterableToArray","_nonIterableSpread","iter","_arrayLikeToArray","ownKeys","object","enumerableOnly","symbols","sym","_objectSpread","source","_defineProperty","obj","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_nonIterableRest","minLen","arr2","_i","_arr","_n","_d","_s","_e","accepts","_accepts","FILE_INVALID_TYPE","FILE_TOO_LARGE","FILE_TOO_SMALL","TOO_MANY_FILES","getInvalidTypeRejectionErr","accept","acceptArr","msg","getTooLargeRejectionErr","maxSize","getTooSmallRejectionErr","minSize","TOO_MANY_FILES_REJECTION","fileAccepted","isAcceptable","fileMatchSize","isDefined","allFilesAccepted","multiple","maxFiles","_fileAccepted","_fileAccepted2","accepted","_fileMatchSize","_fileMatchSize2","sizeMatch","customErrors","isPropagationStopped","isEvtWithFiles","onDocumentDragOver","isIe","userAgent","isEdge","isIeOrEdge","_len","fns","_key","_len2","_key2","canUseFileSystemAccessAPI","pickerOptionsFromAccept","acceptForPicker","_ref2","_ref3","ok","isMIMEType","isExt","agg","_ref4","_ref5","acceptPropAsAcceptAttr","_ref6","_ref7","isAbort","isSecurityError","_excluded","_excluded2","_excluded3","_excluded4","_objectWithoutProperties","excluded","_objectWithoutPropertiesLoose","sourceSymbolKeys","sourceKeys","Dropzone","params","_useDropzone","useDropzone","useImperativeHandle","defaultProps","PropTypes","_defaultProps$props","getFilesFromEvent","onDragEnter","onDragLeave","onDragOver","onDrop","onDropAccepted","onDropRejected","onFileDialogCancel","onFileDialogOpen","useFsAccessApi","autoFocus","preventDropOnDocument","noClick","noKeyboard","noDrag","noDragEventsBubbling","onError","acceptAttr","pickerTypes","onFileDialogOpenCb","onFileDialogCancelCb","rootRef","inputRef","_useReducer","useReducer","_useReducer2","isFileDialogActive","fsAccessApiWorksRef","onWindowFocus","dragTargetsRef","onDocumentDrop","onErrCb","onDragEnterCb","stopPropagation","fileCount","isDragAccept","isDragReject","onDragOverCb","hasFiles","onDragLeaveCb","targetIdx","setFiles","fileRejections","acceptError","sizeError","onDropCb","openFileDialog","opts","onKeyDownCb","onFocusCb","onBlurCb","onClickCb","composeHandler","composeKeyboardHandler","composeDragHandler","getRootProps","_ref2$refKey","refKey","role","onKeyDown","onFocus","onBlur","onInputElementClick","getInputProps","_ref3$refKey","inputProps","UploaderWrapper","setDataError","loading","setLoading","isMobile","setIsMobile","checkIsMobile","isDragActive","errorMessage","useTemplateTable","fields","expectedColumnKey","requiredKey","Uploader","skipHeaderRowSelection","showDownloadTemplateButton","uploaderWrapper","downloadTemplate","csvData","link","getEnvironment","API_URLS","getApiBaseUrl","env","_react","_react2","_interopRequireDefault","doc","FrameContext","FrameContextProvider","FrameContextConsumer","Content_1","_createClass","defineProperties","descriptor","Constructor","protoProps","staticProps","_propTypes","require$$1","_propTypes2","_classCallCheck","instance","_possibleConstructorReturn","self","call","_inherits","subClass","superClass","_Component","Frame_1","_extends","_reactDom","_reactDom2","require$$2","_Context","require$$3","_Content","require$$4","_Content2","Frame","_this","contentDidMount","contentDidUpdate","contents","mountTarget","exports","_Frame","bundledCss","importcsvStyles","IframeContent","document","iframeWindow","parentDocument","linkElement","newLink","IframeWrapper","iframeRef","window","mapBackendType","backendType","Main","modalOnCloseTriggered","onComplete","propColumns","user","metadata","demoData","isStandaloneMode","initializationError","setInitializationError","dataError","emptyData","setSelectedHeaderRow","setIsSubmitting","isLoadingExcelParser","setIsLoadingExcelParser","importColumns","setImportColumns","includeUnmatchedColumns","setIncludeUnmatchedColumns","setFilterInvalidRows","setDisableOnInvalidRows","Papa","results","isNotBlankRow","cell","schemaData","backendColumns","validators","requestClose","handleValidationComplete","validatedData","mappedRows","resultingRow","valueIndex","headerValue","normalizedValue","columnKey","include","standaloneData","columnMappingForBackend","apiEndpoint","payload","handleBackToMapColumns","renderContent","fileType","bstr","XLSX","workbook","sheetList","Branch","createToastContext","createToastScope","ToastProviderProvider","useToastProviderContext","ToastProvider","__scopeToast","duration","swipeDirection","swipeThreshold","toastCount","setToastCount","isFocusedToastEscapeKeyDownRef","isClosePausedRef","prevCount","VIEWPORT_DEFAULT_HOTKEY","VIEWPORT_PAUSE","VIEWPORT_RESUME","ToastViewport","hotkey","wrapperRef","headFocusProxyRef","tailFocusProxyRef","hotkeyLabel","hasToasts","wrapper","handlePause","pauseEvent","handleResume","resumeEvent","handleFocusOutResume","handlePointerLeaveResume","getSortedTabbableCandidates","tabbingDirection","tabbableCandidates","toastItem","toastNode","toastTabbableCandidates","isMetaKey","isTabbingBackwards","sortedCandidates","DismissableLayer.Branch","FocusProxy","FOCUS_PROXY_NAME","onFocusFromOutsideViewport","proxyProps","prevFocusedElement","TOAST_NAME","TOAST_SWIPE_START","TOAST_SWIPE_MOVE","TOAST_SWIPE_CANCEL","TOAST_SWIPE_END","Toast","toastProps","ToastImpl","ToastInteractiveProvider","useToastInteractiveContext","durationProp","onPause","onResume","onSwipeStart","onSwipeMove","onSwipeCancel","onSwipeEnd","pointerStartRef","swipeDeltaRef","closeTimerStartTimeRef","closeTimerRemainingTimeRef","closeTimerRef","onToastAdd","onToastRemove","startTimer","duration2","elapsedTime","announceTextContent","getAnnounceTextContent","ToastAnnounce","DismissableLayer.Root","hasSwipeMoveStarted","isHorizontalSwipe","clampedX","clampedY","moveStartBuffer","isDeltaInDirection","event2","announceProps","renderAnnounceText","setRenderAnnounceText","isAnnounced","setIsAnnounced","useNextFrame","timer","ToastTitle","ToastDescription","ACTION_NAME","ToastAction","altText","actionProps","ToastAnnounceExclude","ToastClose","interactiveContext","announceExcludeProps","isExcluded","isDeltaX","raf1","raf2","Action","ToastPrimitives.Provider","ToastPrimitives.Viewport","toastVariants","ToastPrimitives.Root","ToastPrimitives.Action","ToastPrimitives.Close","ToastPrimitives.Title","ToastPrimitives.Description","Toaster","toasts","description","ThemeProvider","Providers","ThemeContextProvider","createStoreImpl","createState","partial","replace","nextState","previousState","api","__vite_import_meta_env__","createStore","is","objectIs","useDebugValue","useSyncExternalStore$2","subscribe","getSnapshot","_useState","forceUpdate","checkIfSnapshotChanged","latestGetSnapshot","useSyncExternalStore$1","useSyncExternalStoreShim_production","shimModule","useSyncExternalStore","withSelector_production","getServerSnapshot","isEqual","instRef","memoizedSelector","nextSnapshot","hasMemo","memoizedSnapshot","currentSelection","memoizedSelection","nextSelection","maybeGetServerSnapshot","withSelectorModule","ReactExports","useSyncExternalStoreWithSelector","useSyncExternalStoreExports","didWarnAboutEqualityFn","identity","arg","useStore","equalityFn","slice","createImpl","useBoundStore","create","createJSONStorage","getStorage","storage","str2","str","toThenable","onFulfilled","_onRejected","_onFulfilled","onRejected","oldImpl","baseOptions","set","get","persistedState","currentState","hasHydrated","hydrationListeners","finishHydrationListeners","thenableSerialize","setItem","errorInSync","thenable","serializedValue","savedSetState","configResult","stateFromStorage","hydrate","postRehydrationCallback","storageValue","deserializedStorageValue","migratedState","_a2","newOptions","newImpl","migrationResult","migrated","persistImpl","persist","STORAGE_KEY","useThemeStore","newTheme","CSVImporter","importerProps","modalIsOpen","modalCloseOnOutsideClick","darkMode","language","customTranslations","domProps","baseClass","themeClass","domElementClass","setTheme","componentRoot","backdropClick","handleCancel","elementProps","ImporterComponent","Importer"],"mappings":"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","x_google_ignoreList":[0,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,22,23,24,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,84,85,86,105,106,107,108,109,110,111,112,113,121,122,123,124,125,126,127,128,133,134,135,136,141,142,143,144,145,150,151,152,153,154,155,156]}