@g4rcez/components 3.0.0 → 3.0.2

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 (303) hide show
  1. package/dist/MotionConfigContext-C7MqlSdv.js +2713 -0
  2. package/dist/MotionConfigContext-C7MqlSdv.js.map +1 -0
  3. package/dist/ai/SKILL.md +266 -0
  4. package/dist/ai/docs/Alert.md +167 -0
  5. package/dist/ai/docs/AnimatedList.md +205 -0
  6. package/dist/ai/docs/Autocomplete.md +225 -0
  7. package/dist/ai/docs/Button.md +182 -0
  8. package/dist/ai/docs/Calendar.md +219 -0
  9. package/dist/ai/docs/Card.md +174 -0
  10. package/dist/ai/docs/Checkbox.md +199 -0
  11. package/dist/ai/docs/CommandPalette.md +293 -0
  12. package/dist/ai/docs/DatePicker.md +171 -0
  13. package/dist/ai/docs/Dropdown.md +223 -0
  14. package/dist/ai/docs/Empty.md +163 -0
  15. package/dist/ai/docs/Expand.md +143 -0
  16. package/dist/ai/docs/FileUpload.md +225 -0
  17. package/dist/ai/docs/Form.md +107 -0
  18. package/dist/ai/docs/FormReset.md +117 -0
  19. package/dist/ai/docs/Heading.md +88 -0
  20. package/dist/ai/docs/Input.md +237 -0
  21. package/dist/ai/docs/InputField.md +170 -0
  22. package/dist/ai/docs/List.md +205 -0
  23. package/dist/ai/docs/Menu.md +166 -0
  24. package/dist/ai/docs/Modal.md +280 -0
  25. package/dist/ai/docs/MultiSelect.md +196 -0
  26. package/dist/ai/docs/Notifications.md +231 -0
  27. package/dist/ai/docs/PageCalendar.md +271 -0
  28. package/dist/ai/docs/Polymorph.md +159 -0
  29. package/dist/ai/docs/Progress.md +145 -0
  30. package/dist/ai/docs/Radiobox.md +128 -0
  31. package/dist/ai/docs/RenderOnView.md +138 -0
  32. package/dist/ai/docs/Resizable.md +159 -0
  33. package/dist/ai/docs/Select.md +284 -0
  34. package/dist/ai/docs/Shortcut.md +105 -0
  35. package/dist/ai/docs/Skeleton.md +166 -0
  36. package/dist/ai/docs/Slider.md +144 -0
  37. package/dist/ai/docs/Slot.md +173 -0
  38. package/dist/ai/docs/Spinner.md +118 -0
  39. package/dist/ai/docs/Stats.md +137 -0
  40. package/dist/ai/docs/Step.md +159 -0
  41. package/dist/ai/docs/Switch.md +167 -0
  42. package/dist/ai/docs/Table.md +298 -0
  43. package/dist/ai/docs/Tabs.md +191 -0
  44. package/dist/ai/docs/Tag.md +224 -0
  45. package/dist/ai/docs/TaskList.md +144 -0
  46. package/dist/ai/docs/Textarea.md +167 -0
  47. package/dist/ai/docs/Timeline.md +210 -0
  48. package/dist/ai/docs/Toolbar.md +132 -0
  49. package/dist/ai/docs/Tooltip.md +231 -0
  50. package/dist/ai/docs/TransferList.md +142 -0
  51. package/dist/ai/docs/Typography.md +187 -0
  52. package/dist/ai/docs/Wizard.md +213 -0
  53. package/dist/ai/docs/index.md +183 -0
  54. package/dist/autocomplete-Boida9R7.js +375 -0
  55. package/dist/autocomplete-Boida9R7.js.map +1 -0
  56. package/dist/calendar-BswV66Nx.js +1719 -0
  57. package/dist/calendar-BswV66Nx.js.map +1 -0
  58. package/dist/chevron-down-BBFYYzZq.js +6 -0
  59. package/dist/chevron-down-BBFYYzZq.js.map +1 -0
  60. package/dist/chevron-right-DvXGOiS_.js +6 -0
  61. package/dist/chevron-right-DvXGOiS_.js.map +1 -0
  62. package/dist/circle-check-big-3M5lhTxx.js +9 -0
  63. package/dist/circle-check-big-3M5lhTxx.js.map +1 -0
  64. package/dist/components/core/button.js +76 -0
  65. package/dist/components/core/button.js.map +1 -0
  66. package/dist/components/core/tag.d.ts +1 -1
  67. package/dist/components/core/tag.d.ts.map +1 -1
  68. package/dist/components/core/tag.js +67 -0
  69. package/dist/components/core/tag.js.map +1 -0
  70. package/dist/components/display/alert.js +94 -0
  71. package/dist/components/display/alert.js.map +1 -0
  72. package/dist/components/display/calendar.js +15 -0
  73. package/dist/components/display/calendar.js.map +1 -0
  74. package/dist/components/display/card.js +84 -0
  75. package/dist/components/display/card.js.map +1 -0
  76. package/dist/components/display/list.d.ts.map +1 -1
  77. package/dist/components/display/list.js +93 -0
  78. package/dist/components/display/list.js.map +1 -0
  79. package/dist/components/display/notifications.js +15 -0
  80. package/dist/components/display/notifications.js.map +1 -0
  81. package/dist/components/display/stats.js +16 -0
  82. package/dist/components/display/stats.js.map +1 -0
  83. package/dist/components/display/tabs.js +12 -0
  84. package/dist/components/display/tabs.js.map +1 -0
  85. package/dist/components/display/timeline.js +29 -0
  86. package/dist/components/display/timeline.js.map +1 -0
  87. package/dist/components/floating/dropdown.d.ts +1 -0
  88. package/dist/components/floating/dropdown.d.ts.map +1 -1
  89. package/dist/components/floating/dropdown.js +58 -0
  90. package/dist/components/floating/dropdown.js.map +1 -0
  91. package/dist/components/floating/expand.js +41 -0
  92. package/dist/components/floating/expand.js.map +1 -0
  93. package/dist/components/floating/menu.d.ts.map +1 -1
  94. package/dist/components/floating/menu.js +177 -0
  95. package/dist/components/floating/menu.js.map +1 -0
  96. package/dist/components/floating/modal.js +297 -0
  97. package/dist/components/floating/modal.js.map +1 -0
  98. package/dist/components/floating/tooltip.js +73 -0
  99. package/dist/components/floating/tooltip.js.map +1 -0
  100. package/dist/components/form/autocomplete.js +16 -0
  101. package/dist/components/form/autocomplete.js.map +1 -0
  102. package/dist/components/form/checkbox.js +44 -0
  103. package/dist/components/form/checkbox.js.map +1 -0
  104. package/dist/components/form/date-picker.js +12 -0
  105. package/dist/components/form/date-picker.js.map +1 -0
  106. package/dist/components/form/file-upload.js +11 -0
  107. package/dist/components/form/file-upload.js.map +1 -0
  108. package/dist/components/form/form.js +8 -0
  109. package/dist/components/form/form.js.map +1 -0
  110. package/dist/components/form/input.js +5 -0
  111. package/dist/components/form/input.js.map +1 -0
  112. package/dist/components/form/radiobox.js +30 -0
  113. package/dist/components/form/radiobox.js.map +1 -0
  114. package/dist/components/form/select.js +106 -0
  115. package/dist/components/form/select.js.map +1 -0
  116. package/dist/components/form/switch.js +65 -0
  117. package/dist/components/form/switch.js.map +1 -0
  118. package/dist/components/form/task-list.js +68 -0
  119. package/dist/components/form/task-list.js.map +1 -0
  120. package/dist/components/form/transfer-list.js +55 -0
  121. package/dist/components/form/transfer-list.js.map +1 -0
  122. package/dist/components/table/table.js +10 -0
  123. package/dist/components/table/table.js.map +1 -0
  124. package/dist/config/default-translations.d.ts +4 -4
  125. package/dist/constants-r-AHn273.js +6 -0
  126. package/dist/constants-r-AHn273.js.map +1 -0
  127. package/dist/context-BFXNJVn2.js +161 -0
  128. package/dist/context-BFXNJVn2.js.map +1 -0
  129. package/dist/createLucideIcon-CP-mMPfa.js +76 -0
  130. package/dist/createLucideIcon-CP-mMPfa.js.map +1 -0
  131. package/dist/date-picker-BxPTdZPy.js +1598 -0
  132. package/dist/date-picker-BxPTdZPy.js.map +1 -0
  133. package/dist/dom-Dl8XH0CK.js +2833 -0
  134. package/dist/dom-Dl8XH0CK.js.map +1 -0
  135. package/dist/file-CBCP85VI.js +15 -0
  136. package/dist/file-CBCP85VI.js.map +1 -0
  137. package/dist/file-upload-BB6BdGcE.js +3118 -0
  138. package/dist/file-upload-BB6BdGcE.js.map +1 -0
  139. package/dist/floating-ui.react-DycKASR0.js +3706 -0
  140. package/dist/floating-ui.react-DycKASR0.js.map +1 -0
  141. package/dist/fns-D2eyJKd5.js +33 -0
  142. package/dist/fns-D2eyJKd5.js.map +1 -0
  143. package/dist/hooks/use-translations.d.ts +4 -4
  144. package/dist/hooks/use-translations.d.ts.map +1 -1
  145. package/dist/index-0YMC-_Lt.js +20 -0
  146. package/dist/index-0YMC-_Lt.js.map +1 -0
  147. package/dist/index-BJ1ayTam.js +126 -0
  148. package/dist/index-BJ1ayTam.js.map +1 -0
  149. package/dist/index-BtlhELJ3.js +3416 -0
  150. package/dist/index-BtlhELJ3.js.map +1 -0
  151. package/dist/index-ChfR6F8d.js +1590 -0
  152. package/dist/index-ChfR6F8d.js.map +1 -0
  153. package/dist/index-DE4shK8D.js +215 -0
  154. package/dist/index-DE4shK8D.js.map +1 -0
  155. package/dist/index-DJSMaZR4.js +35 -0
  156. package/dist/index-DJSMaZR4.js.map +1 -0
  157. package/dist/index-t1qLJTt5.js +351 -0
  158. package/dist/index-t1qLJTt5.js.map +1 -0
  159. package/dist/index.css +1 -1
  160. package/dist/index.esm-BaIwleSE.js +343 -0
  161. package/dist/index.esm-BaIwleSE.js.map +1 -0
  162. package/dist/index.js +8050 -20
  163. package/dist/index.js.map +1 -1
  164. package/dist/info-N5jWZg2A.js +10 -0
  165. package/dist/info-N5jWZg2A.js.map +1 -0
  166. package/dist/input-CoJoHIhd.js +441 -0
  167. package/dist/input-CoJoHIhd.js.map +1 -0
  168. package/dist/input-field-DTeIrwpK.js +146 -0
  169. package/dist/input-field-DTeIrwpK.js.map +1 -0
  170. package/dist/notifications-NPuFDsBp.js +2550 -0
  171. package/dist/notifications-NPuFDsBp.js.map +1 -0
  172. package/dist/polymorph-B5n9fs_K.js +10 -0
  173. package/dist/polymorph-B5n9fs_K.js.map +1 -0
  174. package/dist/proxy-BZcQiBrp.js +2495 -0
  175. package/dist/proxy-BZcQiBrp.js.map +1 -0
  176. package/dist/skeleton-D75GFBV6.js +10 -0
  177. package/dist/skeleton-D75GFBV6.js.map +1 -0
  178. package/dist/slot-CQW8ZzBb.js +79 -0
  179. package/dist/slot-CQW8ZzBb.js.map +1 -0
  180. package/dist/styles/common.js +3 -3
  181. package/dist/styles/dark.js +4 -4
  182. package/dist/styles/design-tokens.js +89 -60
  183. package/dist/styles/light.js +4 -4
  184. package/dist/styles/theme.js +2 -2
  185. package/dist/tabs-ccIA7vMo.js +106 -0
  186. package/dist/tabs-ccIA7vMo.js.map +1 -0
  187. package/dist/triangle-alert-CHMhQ6yd.js +16 -0
  188. package/dist/triangle-alert-CHMhQ6yd.js.map +1 -0
  189. package/dist/use-motion-value-eGwNuWuw.js +14 -0
  190. package/dist/use-motion-value-eGwNuWuw.js.map +1 -0
  191. package/dist/use-stable-ref-CYh-YkID.js +11 -0
  192. package/dist/use-stable-ref-CYh-YkID.js.map +1 -0
  193. package/dist/use-translations-BwLKTrZv.js +10 -0
  194. package/dist/use-translations-BwLKTrZv.js.map +1 -0
  195. package/dist/x-B9bYxG31.js +9 -0
  196. package/dist/x-B9bYxG31.js.map +1 -0
  197. package/package.json +6 -7
  198. package/dist/components/core/button.jsx +0 -79
  199. package/dist/components/core/heading.jsx +0 -4
  200. package/dist/components/core/polymorph.jsx +0 -5
  201. package/dist/components/core/render-on-view.jsx +0 -31
  202. package/dist/components/core/resizable.jsx +0 -51
  203. package/dist/components/core/slot.jsx +0 -156
  204. package/dist/components/core/tag.jsx +0 -51
  205. package/dist/components/core/typography.jsx +0 -22
  206. package/dist/components/display/alert.jsx +0 -58
  207. package/dist/components/display/calendar.jsx +0 -299
  208. package/dist/components/display/card.jsx +0 -43
  209. package/dist/components/display/empty.jsx +0 -11
  210. package/dist/components/display/list.jsx +0 -81
  211. package/dist/components/display/notifications.jsx +0 -126
  212. package/dist/components/display/progress.jsx +0 -11
  213. package/dist/components/display/shortcut.jsx +0 -23
  214. package/dist/components/display/skeleton.jsx +0 -12
  215. package/dist/components/display/spinner.jsx +0 -7
  216. package/dist/components/display/stats.jsx +0 -20
  217. package/dist/components/display/step.jsx +0 -131
  218. package/dist/components/display/tabs.jsx +0 -98
  219. package/dist/components/display/timeline.jsx +0 -25
  220. package/dist/components/floating/command-palette.jsx +0 -194
  221. package/dist/components/floating/dropdown.jsx +0 -53
  222. package/dist/components/floating/expand.jsx +0 -44
  223. package/dist/components/floating/menu.jsx +0 -147
  224. package/dist/components/floating/modal.jsx +0 -299
  225. package/dist/components/floating/toolbar.jsx +0 -5
  226. package/dist/components/floating/tooltip.jsx +0 -58
  227. package/dist/components/floating/wizard.jsx +0 -161
  228. package/dist/components/form/autocomplete.jsx +0 -279
  229. package/dist/components/form/checkbox.jsx +0 -12
  230. package/dist/components/form/date-picker.jsx +0 -115
  231. package/dist/components/form/file-upload.jsx +0 -133
  232. package/dist/components/form/form.jsx +0 -10
  233. package/dist/components/form/formReset.jsx +0 -17
  234. package/dist/components/form/free-text.jsx +0 -41
  235. package/dist/components/form/input-field.jsx +0 -56
  236. package/dist/components/form/input.jsx +0 -36
  237. package/dist/components/form/multi-select.jsx +0 -328
  238. package/dist/components/form/radiobox.jsx +0 -6
  239. package/dist/components/form/select.jsx +0 -42
  240. package/dist/components/form/slider.jsx +0 -45
  241. package/dist/components/form/switch.jsx +0 -46
  242. package/dist/components/form/task-list.jsx +0 -26
  243. package/dist/components/form/textarea.jsx +0 -12
  244. package/dist/components/form/transfer-list.jsx +0 -39
  245. package/dist/components/index.js +0 -45
  246. package/dist/components/page-calendar/calendar-header.jsx +0 -81
  247. package/dist/components/page-calendar/day-view.jsx +0 -87
  248. package/dist/components/page-calendar/event-pill.jsx +0 -25
  249. package/dist/components/page-calendar/index.js +0 -2
  250. package/dist/components/page-calendar/month-view.jsx +0 -47
  251. package/dist/components/page-calendar/page-calendar.jsx +0 -41
  252. package/dist/components/page-calendar/page-calendar.types.js +0 -1
  253. package/dist/components/page-calendar/page-calendar.utils.js +0 -71
  254. package/dist/components/page-calendar/week-view.jsx +0 -64
  255. package/dist/components/table/filter.jsx +0 -141
  256. package/dist/components/table/group.jsx +0 -68
  257. package/dist/components/table/index.jsx +0 -60
  258. package/dist/components/table/inner-table.jsx +0 -104
  259. package/dist/components/table/metadata.jsx +0 -36
  260. package/dist/components/table/pagination.jsx +0 -73
  261. package/dist/components/table/row.jsx +0 -58
  262. package/dist/components/table/sort.jsx +0 -105
  263. package/dist/components/table/table-lib.js +0 -83
  264. package/dist/components/table/table.context.jsx +0 -4
  265. package/dist/components/table/thead.jsx +0 -103
  266. package/dist/config/context.js +0 -12
  267. package/dist/config/default-translations.jsx +0 -83
  268. package/dist/config/default-tweaks.js +0 -4
  269. package/dist/constants.js +0 -2
  270. package/dist/hooks/use-click-outside.js +0 -17
  271. package/dist/hooks/use-color-parser.js +0 -9
  272. package/dist/hooks/use-components-provider.jsx +0 -19
  273. package/dist/hooks/use-debounce.js +0 -12
  274. package/dist/hooks/use-floating-ref.js +0 -6
  275. package/dist/hooks/use-form.js +0 -550
  276. package/dist/hooks/use-hover.js +0 -18
  277. package/dist/hooks/use-input-id.js +0 -5
  278. package/dist/hooks/use-is-coarse-device.js +0 -12
  279. package/dist/hooks/use-locale.js +0 -10
  280. package/dist/hooks/use-media-query.js +0 -25
  281. package/dist/hooks/use-on-event.js +0 -7
  282. package/dist/hooks/use-parent.js +0 -21
  283. package/dist/hooks/use-preferences.js +0 -23
  284. package/dist/hooks/use-previous.js +0 -9
  285. package/dist/hooks/use-reactive.js +0 -9
  286. package/dist/hooks/use-remove-scroll.js +0 -61
  287. package/dist/hooks/use-resize-observer.js +0 -17
  288. package/dist/hooks/use-stable-ref.js +0 -9
  289. package/dist/hooks/use-swipe.js +0 -17
  290. package/dist/hooks/use-translations.js +0 -9
  291. package/dist/hooks/use-tweaks.js +0 -9
  292. package/dist/hooks/use-window-size.js +0 -14
  293. package/dist/index.mjs +0 -37103
  294. package/dist/index.mjs.map +0 -1
  295. package/dist/index.umd.js +0 -28
  296. package/dist/index.umd.js.map +0 -1
  297. package/dist/lib/combi-keys.js +0 -60
  298. package/dist/lib/dict.js +0 -39
  299. package/dist/lib/dom.js +0 -62
  300. package/dist/lib/fns.js +0 -46
  301. package/dist/lib/fzf.js +0 -117
  302. package/dist/lib/keyboard-area.js +0 -14
  303. package/dist/types.js +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autocomplete-Boida9R7.js","sources":["../src/hooks/use-is-coarse-device.ts","../src/hooks/use-remove-scroll.ts","../src/lib/fzf.ts","../src/components/form/autocomplete.tsx"],"sourcesContent":["import { useEffect, useRef, useState } from \"react\";\nimport { isSsr } from \"../lib/fns\";\n\nconst getCoarse = () => window.matchMedia(\"@media (pointer: coarse)\");\n\nexport const useIsCoarseDevice = (): boolean => {\n const ref = useRef(isSsr() ? null : getCoarse());\n const [isCoarse, setIsCoarse] = useState<boolean>(isSsr() ? false : (ref.current?.matches ?? false));\n useEffect(() => {\n const coerse = ref.current === null ? getCoarse() : ref.current;\n coerse.addEventListener(\"change\", (e) => setIsCoarse(e.matches));\n }, []);\n\n return isCoarse;\n};\n","import { useEffect, useRef } from \"react\";\nimport { Is, onlyNumbers } from \"sidekicker\";\nimport { hasVerticalScroll } from \"../lib/dom\";\nimport { isMobile, isSsr } from \"../lib/fns\";\nimport { useIsCoarseDevice } from \"./use-is-coarse-device\";\n\ntype ScrollRemoveStyle = \"overflow-hidden\" | \"block-only\";\n\nexport const useRemoveScroll = <T extends HTMLElement>(remove: boolean, removeStyle: ScrollRemoveStyle = \"overflow-hidden\") => {\n const ref = useRef<T | null>(null);\n const isCoarseDevice = useIsCoarseDevice();\n const prev = useRef(isSsr() ? \"\" : document.documentElement.style.overflowY);\n\n useEffect(() => {\n if (ref.current === null && !remove) return;\n if (removeStyle === \"block-only\") return;\n if (removeStyle === \"overflow-hidden\") {\n if (remove) {\n prev.current = document.documentElement.style.overflowY;\n document.documentElement.style.overflowY = \"hidden\";\n if (isCoarseDevice || isMobile()) return;\n document.documentElement.style.padding = hasVerticalScroll(document.documentElement) ? \"0 15px 0 0\" : \"\";\n } else {\n document.documentElement.style.padding = \"\";\n document.documentElement.style.overflowY = prev.current;\n }\n }\n }, [remove, isCoarseDevice, removeStyle]);\n\n useEffect(() => {\n if (!remove) return;\n const controller = new AbortController();\n const html = document.documentElement;\n const removeScroll = (e: Event) => {\n const el = ref.current;\n if (el) {\n if (el.contains(e.target as HTMLElement)) {\n const rect = el.getBoundingClientRect();\n const realHeight = el.style.height ? Number(onlyNumbers(el.style.height)) : null;\n const scrollable = Is.number(realHeight) ? realHeight : rect.height;\n const hasScroll = el.scrollHeight <= scrollable;\n if (scrollable === el.scrollHeight) return remove ? e.preventDefault() : undefined;\n if (hasScroll) return;\n return remove ? e.preventDefault() : undefined;\n }\n }\n if (e.currentTarget === document.documentElement) {\n return remove ? e.preventDefault() : undefined;\n }\n return remove ? e.preventDefault() : undefined;\n };\n html.addEventListener(\"wheel\", removeScroll, { signal: controller.signal, passive: false });\n html.addEventListener(\"scroll\", removeScroll, { signal: controller.signal, passive: false });\n return () => {\n controller.abort();\n };\n }, [remove]);\n\n return ref;\n};\n","import { Is } from \"sidekicker\";\nimport { Any, Walk } from \"../types\";\n\nexport const fuzzyMatch = (text: string, search: string): number | null => {\n text = String(text).toLocaleLowerCase();\n search = String(search).toLocaleLowerCase();\n const firstChar = search[0];\n const firstCharIndexes = text\n .split(\"\")\n .map((char, index) => (char === firstChar ? index : false))\n .filter((index): index is number => index !== false);\n\n if (firstCharIndexes.length === 0) {\n return null;\n }\n const matchedIndexes: number[][] = [];\n firstCharIndexes.forEach((startingIndex) => {\n let index = startingIndex + 1;\n const indexes = [startingIndex];\n for (let i = 1; i < search.length; i++) {\n const letter = search[i]!;\n index = text.indexOf(letter, index);\n\n if (index === -1) {\n return;\n }\n indexes.push(index);\n index++;\n }\n matchedIndexes.push(indexes);\n });\n\n if (matchedIndexes.length === 0) {\n return null;\n }\n const bestMatch = matchedIndexes.sort((a, b) => {\n if (a.length === 1) {\n return a[0]! - b[0]!;\n }\n const aSpread = a[a.length - 1]! - a[0]!;\n const bSpread = b[b.length - 1]! - b[0]!;\n\n return aSpread - bSpread;\n })[0]!;\n if (text === search) {\n return 1;\n } else if (bestMatch.length > 1) {\n return 2 + (bestMatch[bestMatch.length - 1]! - bestMatch[0]!);\n }\n return 2 + bestMatch[0]!;\n};\n\nexport type Match = \"EQUAL\" | \"CONTAINS\" | \"CONTAINS_NUMBERS\" | \"STARTS_WITH\" | \"ENDS_WITH\" | \"FUZZY\";\n\nexport type MatchValue<T> = {\n match?: Match;\n score?: number;\n key: Walk<T>;\n value: string | string[];\n ifNotMatch?: (value: string, source: string) => boolean;\n};\n\nexport type Matcher<T> = { match?: Match; key: Walk<T> };\n\nconst travel = (path: string, regexp: RegExp, obj: any): any => {\n const keys = path.split(regexp).filter(Boolean);\n let res = obj;\n for (const key of keys) {\n if (res === null || res === undefined) {\n return res;\n }\n res = res[key];\n }\n return res;\n};\n\nconst regexPaths = { basic: /[,[\\]]+?/, extend: /[,[\\].]+?/ };\n\nconst path = <T extends Any, V>(obj: T, path: Walk<T>): V => {\n const result = travel(path as string, regexPaths.basic, obj);\n if (result !== undefined && result !== obj) return result;\n return travel(path as string, regexPaths.extend, obj);\n};\n\nconst onlyNumbers = (str: string) => str.replace(/[^0-9]/g, \"\");\n\nconst diacritics = (input: string): string => input.normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\");\n\nconst strCompare = (text: string, value: string, _?: number, match: Match = \"FUZZY\"): boolean => {\n if (match === \"CONTAINS\") {\n return text.includes(value);\n }\n if (match === \"EQUAL\") {\n return text === value;\n }\n if (match === \"CONTAINS_NUMBERS\") {\n return onlyNumbers(text).includes(onlyNumbers(value));\n }\n if (match === \"STARTS_WITH\") {\n return text.startsWith(value);\n }\n if (match === \"ENDS_WITH\") {\n return text.endsWith(value);\n }\n if (match === \"FUZZY\") {\n const r = fuzzyMatch(text, value);\n return r !== null;\n }\n return false;\n};\n\nconst compare = (search: string, value: string | string[], defaultScore?: number, match: Match = \"FUZZY\"): boolean =>\n Array.isArray(value) ? value.some((x) => strCompare(search, x, defaultScore, match)) : strCompare(search, value, defaultScore, match);\n\nexport const fzf = <T extends Any, ID extends Walk<T>>(items: T[], id: ID, keys: MatchValue<T>[]) => {\n if (keys.length === 0) {\n return items;\n }\n const map = new Map<ID, T>();\n const remap = keys.map((x) => {\n return { ...x, value: Is.array(x.value) ? x.value.map(diacritics) : diacritics(`${x.value}`) };\n });\n items.forEach((item) => {\n const idVal = path<T, ID>(item, id);\n remap.forEach((filter) => {\n const searchValue = path(item, filter.key);\n if (!searchValue) return;\n const target = diacritics(`${filter.value}`.toLocaleLowerCase()).trim();\n const search = diacritics(`${searchValue}`.toLocaleLowerCase()).trim();\n if (compare(search, target, filter.score, filter.match)) {\n return void map.set(idVal, item);\n }\n if (Is.function(filter.ifNotMatch)) {\n const result = filter.ifNotMatch(target, search);\n if (result) map.set(idVal, item);\n }\n });\n });\n return Array.from(map.values());\n};\n","\"use client\";\nimport {\n autoPlacement,\n autoUpdate,\n FloatingFocusManager,\n FloatingPortal,\n offset,\n size,\n useDismiss,\n useFloating,\n useInteractions,\n useListNavigation,\n useRole,\n useTransitionStyles,\n} from \"@floating-ui/react\";\nimport { ChevronDown } from \"lucide-react\";\nimport { AnimatePresence, motion } from \"motion/react\";\nimport React, { forwardRef, Fragment, type PropsWithChildren, useEffect, useRef, useState } from \"react\";\nimport { flushSync } from \"react-dom\";\nimport { Virtuoso, type VirtuosoHandle } from \"react-virtuoso\";\nimport { Is } from \"sidekicker\";\nimport { useRemoveScroll } from \"../../hooks/use-remove-scroll\";\nimport { useTranslations } from \"../../hooks/use-translations\";\nimport { css, dispatchInput, getRemainingSize, initializeInputDataset, mergeRefs } from \"../../lib/dom\";\nimport { safeRegex } from \"../../lib/fns\";\nimport { fzf } from \"../../lib/fzf\";\nimport { Label } from \"../../types\";\nimport { InputField, InputFieldProps } from \"./input-field\";\nimport { type OptionProps } from \"./select\";\n\nexport type AutocompleteItemProps = OptionProps & { Render?: React.FC<OptionProps> };\n\nexport type AutocompleteProps = Omit<InputFieldProps<\"input\">, \"value\"> & {\n title?: string;\n value?: string;\n emptyMessage?: Label;\n dynamicOption?: boolean;\n options: AutocompleteItemProps[];\n};\n\nconst Frag = (props: PropsWithChildren) => <Fragment>{props.children}</Fragment>;\n\nconst transitionStyles = {\n duration: 200,\n open: { transform: \"scaleY(1)\", opacity: 1 },\n close: { transform: \"scaleY(0)\", opacity: 0 },\n initial: { transform: \"scaleY(0)\", opacity: 0.2 },\n} as const;\n\nconst emptyRef: any[] = [];\n\nconst List = forwardRef(function VirtualList(props: any, ref: any) {\n return (\n <motion.ul {...props} ref={ref as any} className=\"max-h-96 w-full overscroll-contain rounded-lg\">\n <AnimatePresence>{props.children}</AnimatePresence>\n </motion.ul>\n );\n});\n\nconst Item = forwardRef(function VirtualItem({ item, context, ...props }: any, ref: any) {\n return <motion.li {...props} ref={ref as any} className=\"first:rounded-t-lg last:rounded-t-lg\" />;\n});\n\nconst components = { List, Item };\n\nconst MIN_SIZE = 40;\n\nexport const Autocomplete = forwardRef<HTMLInputElement, AutocompleteProps>(\n (\n {\n left,\n error,\n right,\n loading,\n options,\n container,\n rightLabel,\n interactive,\n emptyMessage,\n optionalText,\n labelClassName,\n feedback = null,\n hideLeft = false,\n required = false,\n dynamicOption = false,\n ...props\n }: AutocompleteProps,\n externalRef\n ) => {\n const scroller = useRef<HTMLElement | null>(null);\n const fieldset = useRef<HTMLFieldSetElement>(null);\n const virtuoso = useRef<VirtuosoHandle | null>(null);\n const defaults = props.value ?? props.defaultValue ?? \"\";\n const translation = useTranslations();\n const [h, setH] = useState(() => Math.min(320, MIN_SIZE * options.length));\n const [open, setOpen] = useState(false);\n const [shadow, setShadow] = useState(\"\");\n const [value, setValue] = useState(defaults);\n const [label, setLabel] = useState(() => options.find((x) => x.value === defaults)?.label ?? defaults);\n const [index, setIndex] = useState<number | null>(null);\n const listRef = useRef<Array<HTMLElement | null>>(emptyRef);\n const removeScrollRef = useRemoveScroll(open, \"block-only\");\n const innerOptions: AutocompleteItemProps[] =\n dynamicOption && shadow !== \"\"\n ? [\n {\n value: shadow,\n label: shadow,\n \"data-dynamic\": \"true\",\n },\n ...options,\n ]\n : options;\n\n const openDropdown = () => flushSync(() => setOpen(true));\n\n const list = shadow\n ? fzf(innerOptions, \"value\", [\n { key: \"value\", value: shadow },\n { key: \"label\", value: shadow },\n ])\n : innerOptions;\n\n const setClosed = () => {\n setOpen(false);\n setH(0);\n };\n\n const displayList = list.filter((x) => x.hidden !== true);\n\n const pattern = dynamicOption\n ? undefined\n : `^(${options.map((x) => `${safeRegex(x.value)}${x.label ? \"|\" + safeRegex(x.label) : \"\"}`).join(\"|\")})$`;\n\n const { x, y, strategy, refs, context, placement } = useFloating<HTMLInputElement>({\n open,\n transform: true,\n onOpenChange: setOpen,\n placement: \"bottom-start\",\n whileElementsMounted: autoUpdate,\n middleware: [\n offset(4),\n autoPlacement({ allowedPlacements: [\"top-start\", \"bottom-start\"], alignment: \"start\" }),\n size({\n padding: 10,\n elementContext: \"reference\",\n apply(args) {\n const ul = args.elements.floating.querySelector(\"ul\");\n const fullSize = ul?.getBoundingClientRect().height || 0;\n const DEFAULT_SIZE = getRemainingSize(refs.reference!.current as HTMLElement, window.innerHeight);\n const maxH = Math.min(fullSize < MIN_SIZE ? DEFAULT_SIZE : fullSize, DEFAULT_SIZE, args.availableHeight);\n const size = displayList.length === 0 ? MIN_SIZE : Math.min(maxH, DEFAULT_SIZE, fullSize);\n const mw = `${fieldset.current?.getBoundingClientRect().width || DEFAULT_SIZE}px`;\n Object.assign(args.elements.floating.style, { width: mw, maxWidth: mw, height: size });\n },\n }),\n ],\n });\n const transitions = useTransitionStyles(context, transitionStyles);\n const { getReferenceProps, getFloatingProps, getItemProps } = useInteractions([\n useRole(context, { role: \"listbox\" }),\n useDismiss(context),\n useListNavigation(context, {\n cols: 0,\n listRef,\n loop: true,\n virtual: true,\n allowEscape: true,\n activeIndex: index,\n selectedIndex: index,\n focusItemOnOpen: \"auto\",\n openOnArrowKeyDown: true,\n scrollItemIntoView: true,\n }),\n ]);\n\n useEffect(() => {\n if (props.value) {\n const item = options.find((x) => x.value === props.value);\n if (item) {\n setLabel(item.label ?? item.value);\n setValue(props.value);\n }\n }\n }, [props.value, options.length]);\n\n useEffect(() => {\n if (!open) return setH(0);\n const inputRef = refs.reference;\n if (inputRef.current === null) return;\n const s = getRemainingSize(inputRef.current as HTMLElement, window.innerHeight);\n setTimeout(() => setH(Math.min(s, displayList.length * MIN_SIZE)), 100);\n }, [shadow, open, refs.reference, displayList.length]);\n\n useEffect(() => {\n const input = refs.reference.current as HTMLInputElement;\n if (!input) return;\n return initializeInputDataset(input);\n }, []);\n\n const onSelect = (opt: AutocompleteItemProps, i: number) => {\n setValue(opt.value);\n const input = refs.reference.current as HTMLInputElement;\n if (!input) return;\n input?.setAttribute(\"data-value\", opt.value);\n input.value = opt.value;\n const event = new Event(\"change\", { bubbles: false, cancelable: true });\n input.dispatchEvent(event);\n if (props.onChange) props.onChange(event as any);\n setLabel(opt.label ?? \"\");\n setClosed();\n setShadow(\"\");\n setIndex(i);\n };\n\n const onChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const value = event.target.value;\n setShadow(value);\n if (!open && value === \"\") return setOpen(true);\n event.target.name = props.name || \"\";\n return value ? setOpen(true) : props.onChange?.(event);\n };\n\n const onCaretDownClick = () => {\n openDropdown();\n setShadow(\"\");\n (refs.reference.current as HTMLInputElement)?.focus();\n };\n\n const onFocus = () => {\n setIndex((prev) => (prev === null ? 0 : prev));\n openDropdown();\n setShadow(\"\");\n };\n\n const onClose = () => {\n (refs.reference.current as HTMLInputElement)?.setAttribute(\"data-value\", \"\");\n setShadow(\"\");\n setValue(\"\");\n setLabel(\"\");\n dispatchInput(refs.reference.current as HTMLInputElement);\n setClosed();\n };\n\n const id = props.id || props.name;\n\n const shadowId = `${id}-shadow`;\n\n const isEmpty = displayList.length === 0;\n\n const isTopPlacement = placement === \"top\" || placement === \"top-start\";\n\n return (\n <InputField\n {...(props as any)}\n left={left}\n error={error}\n ref={fieldset}\n form={props.form}\n loading={loading}\n name={props.name}\n feedback={open && isTopPlacement ? props.title : feedback}\n hideLeft={hideLeft}\n required={required}\n title={props.title}\n container={container}\n rightLabel={rightLabel}\n interactive={interactive}\n id={shadowId}\n optionalText={optionalText}\n componentName=\"autocomplete\"\n labelClassName={labelClassName}\n placeholder={props.placeholder}\n right={\n <span className=\"flex items-center gap-0.5\">\n {right}\n <button type=\"button\" className=\"p-2 transition-colors link:text-primary md:p-1\" onClick={onCaretDownClick}>\n <ChevronDown size={20} />\n <span className=\"sr-only\">{translation.inputCaretDown}</span>\n </button>\n {value ? (\n <button type=\"button\" onClick={onClose} className=\"p-2 transition-colors link:text-danger md:p-1\">\n <svg width=\"15\" height=\"15\" viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M11.7816 4.03157C12.0062 3.80702 12.0062 3.44295 11.7816 3.2184C11.5571 2.99385 11.193 2.99385 10.9685 3.2184L7.50005 6.68682L4.03164 3.2184C3.80708 2.99385 3.44301 2.99385 3.21846 3.2184C2.99391 3.44295 2.99391 3.80702 3.21846 4.03157L6.68688 7.49999L3.21846 10.9684C2.99391 11.193 2.99391 11.557 3.21846 11.7816C3.44301 12.0061 3.80708 12.0061 4.03164 11.7816L7.50005 8.31316L10.9685 11.7816C11.193 12.0061 11.5571 12.0061 11.7816 11.7816C12.0062 11.557 12.0062 11.193 11.7816 10.9684L8.31322 7.49999L11.7816 4.03157Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n </button>\n ) : null}\n </span>\n }\n >\n <input\n data-shadow=\"true\"\n {...(getReferenceProps({\n ...props,\n onFocus,\n pattern,\n onChange,\n id: shadowId,\n name: shadowId,\n ref: refs.setReference,\n onClick: (e: React.MouseEvent<HTMLInputElement>) => e.currentTarget.focus(),\n onKeyDown(event: React.KeyboardEvent<HTMLInputElement>) {\n if (event.key === \"Escape\") {\n event.currentTarget.blur();\n return setClosed();\n }\n if (!open) return;\n if (event.key === \"ArrowDown\") {\n let next = Is.number(index) ? index + 1 : 0;\n if (next > displayList.length - 1) next = 0;\n virtuoso.current?.scrollIntoView({ index: next });\n return setIndex(next);\n }\n if (event.key === \"ArrowUp\") {\n let next = Is.number(index) ? index! - 1 : displayList.length - 1;\n if (next < 0) next = displayList.length - 1;\n virtuoso.current?.scrollIntoView({ index: next });\n return setIndex(next);\n }\n if (event.key === \"Enter\") {\n if (index !== null && displayList[index]) {\n event.preventDefault();\n return onSelect(displayList[index], index);\n }\n if (displayList.length === 1) {\n event.preventDefault();\n return onSelect(displayList[0], 0);\n }\n }\n },\n } as any) as any)}\n data-value={value}\n data-error={!!error}\n data-name={id}\n data-target={id}\n required={required}\n value={open ? shadow : options.length === 0 ? \"\" : label || value}\n aria-autocomplete=\"list\"\n autoComplete=\"off\"\n className={css(\n \"input placeholder-input-mask group h-input-height w-full flex-1\",\n \"rounded-md bg-transparent px-input-x py-input-y text-foreground\",\n \"outline-none transition-colors focus:ring-2 focus:ring-inset focus:ring-primary\",\n \"group-error:text-danger group-error:placeholder-input-mask-error\",\n \"text-base group-focus-within:border-primary group-hover:border-primary\",\n props.className\n )}\n />\n <input\n id={id}\n name={id}\n type=\"hidden\"\n data-origin={id}\n ref={externalRef}\n required={required}\n defaultValue={props.value || value || undefined}\n />\n <FloatingPortal preserveTabOrder>\n {open ? (\n <FloatingFocusManager modal guards returnFocus={false} context={context} initialFocus={-1} visuallyHiddenDismiss>\n <motion.div\n {...getFloatingProps({\n ref: mergeRefs(removeScrollRef as any, refs.setFloating as any) as any,\n style: { ...transitions.styles, left: x, top: y ?? 0, position: strategy, height: \"auto\" },\n })}\n initial={false}\n data-floating=\"true\"\n animate={{ height: isEmpty ? \"auto\" : h }}\n className={css(\n \"shadow-floating isolate z-floating m-0 max-h-80 origin-[top_center] list-none overscroll-contain rounded-b-lg rounded-t-lg border border-floating-border bg-floating-background p-0 text-foreground ease-in-out\",\n isTopPlacement ? \"origin-[bottom_center]\" : \"origin-[top_center]\"\n )}\n onAnimationComplete={() => {\n if (!open) return setH(0);\n const ul = refs.floating.current as HTMLElement;\n const li = ul.querySelectorAll(\"li\").item(0);\n const sum = (li ? li.getBoundingClientRect().height : MIN_SIZE) * displayList.length;\n return flushSync(() => setH(sum + 2));\n }}\n >\n {isEmpty ? (\n <div role=\"option\" className=\"w-full border-b border-tooltip-border\">\n <span className=\"flex w-full justify-between p-2 text-left text-disabled\">\n {emptyMessage || translation.autocompleteEmpty}\n </span>\n </div>\n ) : null}\n <Virtuoso\n overscan={40}\n ref={virtuoso}\n hidden={isEmpty}\n data={displayList}\n style={{ height: h }}\n defaultItemHeight={MIN_SIZE}\n components={components as any}\n scrollerRef={(e) => void (scroller.current = e as HTMLElement)}\n className=\"border-floating max-h-full overscroll-contain rounded-lg bg-floating-background p-0 text-foreground\"\n itemContent={(i, option) => {\n const Label = (option.Render as React.FC<any>) ?? Frag;\n const active = value === option.value || value === option.label;\n const selected = index === i;\n const children = option.label ?? option.value;\n return (\n <button\n data-value={option.value}\n {...getItemProps({\n ref: (node) => void (listRef.current[i] = node) as any,\n role: \"option\",\n type: \"button\",\n \"aria-checked\": active,\n \"aria-current\": active,\n \"aria-selected\": active,\n \"aria-busy\": option.disabled,\n onClick: () => onSelect(option, i),\n className: `cursor-pointer min-h-10 hover:bg-floating-hover w-full p-2 text-left ${active ? \"bg-primary-hover text-primary-foreground\" : \"\"} ${selected ? \"bg-floating-hover text-floating-foreground\" : \"\"}`,\n })}\n >\n <Label {...props} label={option.label} value={option.value} children={children} />\n </button>\n );\n }}\n />\n </motion.div>\n </FloatingFocusManager>\n ) : null}\n </FloatingPortal>\n </InputField>\n );\n }\n);\n"],"names":["getCoarse","useIsCoarseDevice","ref","useRef","isSsr","isCoarse","setIsCoarse","useState","useEffect","e","useRemoveScroll","remove","removeStyle","isCoarseDevice","prev","isMobile","hasVerticalScroll","controller","html","removeScroll","el","rect","realHeight","onlyNumbers","scrollable","Is","hasScroll","fuzzyMatch","text","search","firstChar","firstCharIndexes","char","index","matchedIndexes","startingIndex","indexes","i","letter","bestMatch","a","b","aSpread","bSpread","travel","path","regexp","obj","keys","res","key","regexPaths","result","str","diacritics","input","strCompare","value","_","match","compare","defaultScore","x","fzf","items","id","map","remap","item","idVal","filter","searchValue","target","Frag","props","jsx","Fragment","transitionStyles","emptyRef","List","forwardRef","motion","AnimatePresence","Item","context","components","MIN_SIZE","Autocomplete","left","error","right","loading","options","container","rightLabel","interactive","emptyMessage","optionalText","labelClassName","feedback","hideLeft","required","dynamicOption","externalRef","scroller","fieldset","virtuoso","defaults","translation","useTranslations","h","setH","open","setOpen","shadow","setShadow","setValue","label","setLabel","setIndex","listRef","removeScrollRef","innerOptions","openDropdown","flushSync","list","setClosed","displayList","pattern","safeRegex","y","strategy","refs","placement","useFloating","autoUpdate","offset","autoPlacement","size","args","fullSize","DEFAULT_SIZE","getRemainingSize","maxH","mw","transitions","useTransitionStyles","getReferenceProps","getFloatingProps","getItemProps","useInteractions","useRole","useDismiss","useListNavigation","inputRef","s","initializeInputDataset","onSelect","opt","event","onChange","onCaretDownClick","onFocus","onClose","dispatchInput","shadowId","isEmpty","isTopPlacement","jsxs","InputField","ChevronDown","next","css","FloatingPortal","FloatingFocusManager","mergeRefs","li","sum","Virtuoso","option","Label","active","selected","children","node"],"mappings":"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"}