polpo 0.1.7 → 0.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (391) hide show
  1. package/dist/components.cjs +31 -0
  2. package/dist/components.cjs.map +1 -0
  3. package/dist/components.d.cts +1866 -0
  4. package/dist/components.d.ts +1866 -0
  5. package/dist/components.js +31 -0
  6. package/dist/components.js.map +1 -0
  7. package/dist/{get-modal-position-drle0OjP.d.cts → get-modal-position-C5jQsaGx.d.cts} +1 -1
  8. package/dist/{get-modal-position-drle0OjP.d.ts → get-modal-position-C5jQsaGx.d.ts} +1 -1
  9. package/dist/helpers.cjs +1 -1
  10. package/dist/helpers.cjs.map +1 -1
  11. package/dist/helpers.d.cts +2 -2
  12. package/dist/helpers.d.ts +2 -2
  13. package/dist/helpers.js +1 -1
  14. package/dist/helpers.js.map +1 -1
  15. package/dist/hooks.cjs +1 -1
  16. package/dist/hooks.cjs.map +1 -1
  17. package/dist/hooks.d.cts +15 -13
  18. package/dist/hooks.d.ts +15 -13
  19. package/dist/hooks.js +1 -1
  20. package/dist/hooks.js.map +1 -1
  21. package/dist/layouts.cjs +4 -0
  22. package/dist/layouts.cjs.map +1 -0
  23. package/dist/{ui.d.cts → layouts.d.cts} +237 -2202
  24. package/dist/{ui.d.ts → layouts.d.ts} +237 -2202
  25. package/dist/layouts.js +4 -0
  26. package/dist/layouts.js.map +1 -0
  27. package/dist/types.cjs +3 -0
  28. package/dist/types.cjs.map +1 -0
  29. package/dist/types.d.cts +8 -0
  30. package/dist/types.d.ts +8 -0
  31. package/dist/types.js +2 -0
  32. package/dist/types.js.map +1 -0
  33. package/dist/{use-modal-transition-XQHye62R.d.cts → use-modal-transition-C0lyjvkD.d.ts} +4 -4
  34. package/dist/{use-modal-transition-DPZFWFFf.d.ts → use-modal-transition-C7DzbnY5.d.cts} +4 -4
  35. package/package.json +76 -76
  36. package/.eslintrc.cjs +0 -9
  37. package/.storybook/decorators.tsx +0 -61
  38. package/.storybook/main.ts +0 -47
  39. package/.storybook/manager-head.html +0 -2
  40. package/.storybook/manager.ts +0 -7
  41. package/.storybook/preview-head.html +0 -2
  42. package/.storybook/preview.ts +0 -38
  43. package/.storybook/theme.ts +0 -47
  44. package/.turbo/turbo-lint.log +0 -4
  45. package/README.md +0 -65
  46. package/dist/chunk-CF5MBMWG.js +0 -3
  47. package/dist/chunk-CF5MBMWG.js.map +0 -1
  48. package/dist/chunk-MAWW6AA7.js +0 -3
  49. package/dist/chunk-MAWW6AA7.js.map +0 -1
  50. package/dist/ui.cjs +0 -2279
  51. package/dist/ui.cjs.map +0 -1
  52. package/dist/ui.js +0 -2279
  53. package/dist/ui.js.map +0 -1
  54. package/src/components/accordion/accordion-item.stories.tsx +0 -128
  55. package/src/components/accordion/accordion-item.tsx +0 -119
  56. package/src/components/accordion/accordion.stories.tsx +0 -74
  57. package/src/components/accordion/accordion.style.ts +0 -42
  58. package/src/components/accordion/accordion.tsx +0 -74
  59. package/src/components/accordion/index.ts +0 -2
  60. package/src/components/buttons/button/button.stories.tsx +0 -103
  61. package/src/components/buttons/button/button.style.ts +0 -152
  62. package/src/components/buttons/button/button.tsx +0 -107
  63. package/src/components/buttons/button/index.ts +0 -1
  64. package/src/components/buttons/index.ts +0 -1
  65. package/src/components/cards/flip-card/flip-card.stories.tsx +0 -61
  66. package/src/components/cards/flip-card/flip-card.style.ts +0 -45
  67. package/src/components/cards/flip-card/flip-card.tsx +0 -55
  68. package/src/components/cards/flip-card/index.ts +0 -1
  69. package/src/components/cards/hover-card/hover-card.stories.tsx +0 -45
  70. package/src/components/cards/hover-card/hover-card.style.ts +0 -13
  71. package/src/components/cards/hover-card/hover-card.tsx +0 -71
  72. package/src/components/cards/hover-card/index.ts +0 -1
  73. package/src/components/cards/index.ts +0 -3
  74. package/src/components/cards/slide-card/index.ts +0 -1
  75. package/src/components/cards/slide-card/slide-card.stories.tsx +0 -47
  76. package/src/components/cards/slide-card/slide-card.tsx +0 -42
  77. package/src/components/cursor/cursor.stories.tsx +0 -36
  78. package/src/components/cursor/cursor.style.ts +0 -73
  79. package/src/components/cursor/cursor.tsx +0 -49
  80. package/src/components/cursor/index.ts +0 -1
  81. package/src/components/form/checkbox/checkbox.stories.tsx +0 -85
  82. package/src/components/form/checkbox/checkbox.style.ts +0 -109
  83. package/src/components/form/checkbox/checkbox.tsx +0 -120
  84. package/src/components/form/checkbox/index.ts +0 -1
  85. package/src/components/form/controller/controller.tsx +0 -42
  86. package/src/components/form/controller/index.ts +0 -1
  87. package/src/components/form/date-picker/date-picker.stories.tsx +0 -38
  88. package/src/components/form/date-picker/date-picker.tsx +0 -67
  89. package/src/components/form/date-picker/index.ts +0 -1
  90. package/src/components/form/field/field.stories.tsx +0 -52
  91. package/src/components/form/field/field.style.ts +0 -94
  92. package/src/components/form/field/field.tsx +0 -86
  93. package/src/components/form/field/field.types.ts +0 -34
  94. package/src/components/form/field/index.ts +0 -2
  95. package/src/components/form/form.stories.types.tsx +0 -50
  96. package/src/components/form/form.types.ts +0 -37
  97. package/src/components/form/index.ts +0 -14
  98. package/src/components/form/input/index.ts +0 -1
  99. package/src/components/form/input/input.stories.tsx +0 -41
  100. package/src/components/form/input/input.tsx +0 -73
  101. package/src/components/form/input-color/index.ts +0 -1
  102. package/src/components/form/input-color/input-color.stories.tsx +0 -46
  103. package/src/components/form/input-color/input-color.style.ts +0 -94
  104. package/src/components/form/input-color/input-color.tsx +0 -162
  105. package/src/components/form/input-file/index.ts +0 -1
  106. package/src/components/form/input-file/input-file.stories.tsx +0 -40
  107. package/src/components/form/input-file/input-file.style.ts +0 -143
  108. package/src/components/form/input-file/input-file.tsx +0 -214
  109. package/src/components/form/input-password/index.ts +0 -1
  110. package/src/components/form/input-password/input-password.stories.tsx +0 -37
  111. package/src/components/form/input-password/input-password.tsx +0 -83
  112. package/src/components/form/radio/index.ts +0 -1
  113. package/src/components/form/radio/radio.stories.tsx +0 -68
  114. package/src/components/form/radio/radio.style.ts +0 -79
  115. package/src/components/form/radio/radio.tsx +0 -106
  116. package/src/components/form/select/data.stories.json +0 -452
  117. package/src/components/form/select/index.ts +0 -1
  118. package/src/components/form/select/option.tsx +0 -101
  119. package/src/components/form/select/options.tsx +0 -161
  120. package/src/components/form/select/select.stories.tsx +0 -369
  121. package/src/components/form/select/select.style.ts +0 -116
  122. package/src/components/form/select/select.tsx +0 -312
  123. package/src/components/form/select/select.types.ts +0 -97
  124. package/src/components/form/slider/index.ts +0 -1
  125. package/src/components/form/slider/slider.stories.tsx +0 -40
  126. package/src/components/form/slider/slider.style.ts +0 -92
  127. package/src/components/form/slider/slider.tsx +0 -108
  128. package/src/components/form/switch/index.ts +0 -1
  129. package/src/components/form/switch/switch.stories.tsx +0 -88
  130. package/src/components/form/switch/switch.style.ts +0 -137
  131. package/src/components/form/switch/switch.tsx +0 -177
  132. package/src/components/form/textarea/index.ts +0 -1
  133. package/src/components/form/textarea/textarea.stories.tsx +0 -43
  134. package/src/components/form/textarea/textarea.style.ts +0 -7
  135. package/src/components/form/textarea/textarea.tsx +0 -76
  136. package/src/components/icon/icon.stories.tsx +0 -63
  137. package/src/components/icon/icon.tsx +0 -64
  138. package/src/components/icon/icons/index.ts +0 -18
  139. package/src/components/icon/icons/object.tsx +0 -482
  140. package/src/components/icon/icons/social.tsx +0 -88
  141. package/src/components/icon/icons/symbol.tsx +0 -776
  142. package/src/components/icon/index.ts +0 -5
  143. package/src/components/image/image.stories.tsx +0 -25
  144. package/src/components/image/image.tsx +0 -7
  145. package/src/components/image/index.ts +0 -1
  146. package/src/components/index.ts +0 -17
  147. package/src/components/infinity-scroll/index.ts +0 -1
  148. package/src/components/infinity-scroll/infinity-scroll.stories.tsx +0 -118
  149. package/src/components/infinity-scroll/infinity-scroll.style.ts +0 -30
  150. package/src/components/infinity-scroll/infinity-scroll.tsx +0 -53
  151. package/src/components/line/index.ts +0 -1
  152. package/src/components/line/line.stories.tsx +0 -66
  153. package/src/components/line/line.style.ts +0 -57
  154. package/src/components/line/line.tsx +0 -76
  155. package/src/components/loaders/icons/box-1.tsx +0 -31
  156. package/src/components/loaders/icons/box-2.tsx +0 -30
  157. package/src/components/loaders/icons/box-3.tsx +0 -66
  158. package/src/components/loaders/icons/clock-1.tsx +0 -25
  159. package/src/components/loaders/icons/clock-2.tsx +0 -58
  160. package/src/components/loaders/icons/dots-1.tsx +0 -194
  161. package/src/components/loaders/icons/dots-2.tsx +0 -15
  162. package/src/components/loaders/icons/dots-3.tsx +0 -38
  163. package/src/components/loaders/icons/dots-4.tsx +0 -90
  164. package/src/components/loaders/icons/dots-5.tsx +0 -30
  165. package/src/components/loaders/icons/dots-6.tsx +0 -72
  166. package/src/components/loaders/icons/dots-7.tsx +0 -51
  167. package/src/components/loaders/icons/dots-8.tsx +0 -42
  168. package/src/components/loaders/icons/dots-9.tsx +0 -27
  169. package/src/components/loaders/icons/lines-1.tsx +0 -96
  170. package/src/components/loaders/icons/lines-2.tsx +0 -48
  171. package/src/components/loaders/icons/pulse-1.tsx +0 -69
  172. package/src/components/loaders/icons/pulse-2.tsx +0 -69
  173. package/src/components/loaders/icons/pulse-3.tsx +0 -105
  174. package/src/components/loaders/icons/pulse-4.tsx +0 -105
  175. package/src/components/loaders/icons/pulse-5.tsx +0 -56
  176. package/src/components/loaders/icons/spinner-1.tsx +0 -162
  177. package/src/components/loaders/icons/spinner-2.tsx +0 -147
  178. package/src/components/loaders/icons/spinner-3.tsx +0 -35
  179. package/src/components/loaders/icons/spinner-4.tsx +0 -16
  180. package/src/components/loaders/index.ts +0 -1
  181. package/src/components/loaders/simple-loader/index.ts +0 -1
  182. package/src/components/loaders/simple-loader/simple-loader.stories.tsx +0 -42
  183. package/src/components/loaders/simple-loader/simple-loader.style.ts +0 -12
  184. package/src/components/loaders/simple-loader/simple-loader.tsx +0 -99
  185. package/src/components/modals/action-modal/action-modal.stories.tsx +0 -157
  186. package/src/components/modals/action-modal/action-modal.style.ts +0 -117
  187. package/src/components/modals/action-modal/action-modal.tsx +0 -148
  188. package/src/components/modals/action-modal/index.ts +0 -1
  189. package/src/components/modals/aside-modal/aside-modal.stories.tsx +0 -81
  190. package/src/components/modals/aside-modal/aside-modal.style.ts +0 -88
  191. package/src/components/modals/aside-modal/aside-modal.tsx +0 -64
  192. package/src/components/modals/aside-modal/index.ts +0 -1
  193. package/src/components/modals/confirmation-modal/confirmation-modal.stories.tsx +0 -62
  194. package/src/components/modals/confirmation-modal/confirmation-modal.style.ts +0 -17
  195. package/src/components/modals/confirmation-modal/confirmation-modal.tsx +0 -43
  196. package/src/components/modals/confirmation-modal/index.ts +0 -1
  197. package/src/components/modals/index.ts +0 -6
  198. package/src/components/modals/menu/index.ts +0 -1
  199. package/src/components/modals/menu/menu.stories.tsx +0 -79
  200. package/src/components/modals/menu/menu.style.ts +0 -103
  201. package/src/components/modals/menu/menu.tsx +0 -186
  202. package/src/components/modals/modal/backdrop.tsx +0 -70
  203. package/src/components/modals/modal/index.ts +0 -2
  204. package/src/components/modals/modal/modal.stories.tsx +0 -328
  205. package/src/components/modals/modal/modal.style.ts +0 -70
  206. package/src/components/modals/modal/modal.tsx +0 -106
  207. package/src/components/modals/portal/index.ts +0 -1
  208. package/src/components/modals/portal/portal.tsx +0 -21
  209. package/src/components/ripple/index.ts +0 -1
  210. package/src/components/ripple/ripple.stories.tsx +0 -38
  211. package/src/components/ripple/ripple.style.ts +0 -33
  212. package/src/components/ripple/ripple.tsx +0 -65
  213. package/src/components/smart-table/index.ts +0 -1
  214. package/src/components/smart-table/smart-table.column.tsx +0 -63
  215. package/src/components/smart-table/smart-table.helpers.tsx +0 -59
  216. package/src/components/smart-table/smart-table.hooks.ts +0 -27
  217. package/src/components/smart-table/smart-table.row.tsx +0 -29
  218. package/src/components/smart-table/smart-table.stories.tsx +0 -301
  219. package/src/components/smart-table/smart-table.style.ts +0 -102
  220. package/src/components/smart-table/smart-table.tsx +0 -112
  221. package/src/components/smart-table/smart-table.types.ts +0 -41
  222. package/src/components/tabs/index.ts +0 -1
  223. package/src/components/tabs/tabs-container.stories.tsx +0 -159
  224. package/src/components/tabs/tabs-list.tsx +0 -134
  225. package/src/components/tabs/tabs.stories.tsx +0 -68
  226. package/src/components/tabs/tabs.style.ts +0 -137
  227. package/src/components/tabs/tabs.tsx +0 -117
  228. package/src/components/tag/index.ts +0 -1
  229. package/src/components/tag/tag.stories.tsx +0 -48
  230. package/src/components/tag/tag.style.ts +0 -29
  231. package/src/components/tag/tag.tsx +0 -34
  232. package/src/components/tooltips/click-to-copy/click-to-copy.stories.tsx +0 -39
  233. package/src/components/tooltips/click-to-copy/click-to-copy.tsx +0 -41
  234. package/src/components/tooltips/click-to-copy/index.ts +0 -1
  235. package/src/components/tooltips/index.ts +0 -2
  236. package/src/components/tooltips/tooltip/index.ts +0 -1
  237. package/src/components/tooltips/tooltip/tooltip.stories.tsx +0 -38
  238. package/src/components/tooltips/tooltip/tooltip.style.ts +0 -93
  239. package/src/components/tooltips/tooltip/tooltip.tsx +0 -59
  240. package/src/components/typography/index.ts +0 -2
  241. package/src/components/typography/typography.constants.ts +0 -43
  242. package/src/components/typography/typography.stories.tsx +0 -108
  243. package/src/components/typography/typography.style.ts +0 -76
  244. package/src/components/typography/typography.tsx +0 -100
  245. package/src/contexts/fetch-context/fetch-context.tsx +0 -114
  246. package/src/contexts/fetch-context/index.ts +0 -1
  247. package/src/contexts/form-context/form-context.tsx +0 -43
  248. package/src/contexts/form-context/index.ts +0 -1
  249. package/src/contexts/index.ts +0 -3
  250. package/src/contexts/theme-context/index.ts +0 -3
  251. package/src/contexts/theme-context/theme-context.tsx +0 -158
  252. package/src/contexts/theme-context/theme.animations.ts +0 -269
  253. package/src/contexts/theme-context/theme.defaults.ts +0 -209
  254. package/src/contexts/theme-context/theme.style.ts +0 -78
  255. package/src/contexts/theme-context/themes.ts +0 -98
  256. package/src/core/http-client.d.ts +0 -11
  257. package/src/core/http-client.d.ts.map +0 -1
  258. package/src/core/http-client.ts +0 -49
  259. package/src/core/index.d.ts +0 -2
  260. package/src/core/index.d.ts.map +0 -1
  261. package/src/core/index.ts +0 -1
  262. package/src/core/variants/color.ts +0 -9
  263. package/src/core/variants/index.ts +0 -3
  264. package/src/core/variants/radius.ts +0 -27
  265. package/src/core/variants/size.ts +0 -19
  266. package/src/helpers/format-bytes.ts +0 -11
  267. package/src/helpers/format-dates.ts +0 -11
  268. package/src/helpers/get-modal-position-relative-to-screen.ts +0 -86
  269. package/src/helpers/get-modal-position.ts +0 -211
  270. package/src/helpers/index.ts +0 -5
  271. package/src/helpers/text/index.ts +0 -1
  272. package/src/helpers/text/to-capitalize.ts +0 -17
  273. package/src/hooks/index.ts +0 -29
  274. package/src/hooks/use-async.ts +0 -88
  275. package/src/hooks/use-classnames.ts +0 -13
  276. package/src/hooks/use-click-outside.ts +0 -32
  277. package/src/hooks/use-constant.ts +0 -3
  278. package/src/hooks/use-cookie.ts +0 -124
  279. package/src/hooks/use-debounce.ts +0 -15
  280. package/src/hooks/use-dimensions.ts +0 -19
  281. package/src/hooks/use-dom-container.ts +0 -35
  282. package/src/hooks/use-event-listener.ts +0 -71
  283. package/src/hooks/use-file-reader.ts +0 -69
  284. package/src/hooks/use-geolocation.ts +0 -63
  285. package/src/hooks/use-hover.ts +0 -17
  286. package/src/hooks/use-in-view.ts +0 -18
  287. package/src/hooks/use-input-handlers.ts +0 -49
  288. package/src/hooks/use-intersection-observer.ts +0 -19
  289. package/src/hooks/use-media-query.ts +0 -25
  290. package/src/hooks/use-modal-in-container.ts +0 -85
  291. package/src/hooks/use-modal-transition.ts +0 -64
  292. package/src/hooks/use-modal.ts +0 -21
  293. package/src/hooks/use-mouse-position.ts +0 -64
  294. package/src/hooks/use-online-status.ts +0 -12
  295. package/src/hooks/use-render-count.ts +0 -11
  296. package/src/hooks/use-resize-observer.ts +0 -18
  297. package/src/hooks/use-safe-dispatch.ts +0 -22
  298. package/src/hooks/use-scroll.ts +0 -31
  299. package/src/hooks/use-state-history.ts +0 -22
  300. package/src/hooks/use-toggle-values.ts +0 -14
  301. package/src/hooks/use-toggle.ts +0 -11
  302. package/src/hooks/use-viewport.ts +0 -38
  303. package/src/index.ts +0 -5
  304. package/src/layouts/flex/flex.tsx +0 -75
  305. package/src/layouts/flex/index.ts +0 -1
  306. package/src/layouts/grid/grid.tsx +0 -86
  307. package/src/layouts/grid/index.ts +0 -1
  308. package/src/layouts/index.ts +0 -3
  309. package/src/layouts/section-layout/index.ts +0 -1
  310. package/src/layouts/section-layout/section-layout.stories.tsx +0 -55
  311. package/src/layouts/section-layout/section-layout.style.ts +0 -21
  312. package/src/layouts/section-layout/section-layout.tsx +0 -46
  313. package/src/stories/GettingStarted.mdx +0 -62
  314. package/src/types/generics.ts +0 -68
  315. package/src/types/index.ts +0 -1
  316. package/svg/Name=airplane, Category=object.svg +0 -3
  317. package/svg/Name=arrow-circle, Category=symbol.svg +0 -3
  318. package/svg/Name=arrow-down, Category=symbol.svg +0 -3
  319. package/svg/Name=arrow-left, Category=symbol.svg +0 -3
  320. package/svg/Name=arrow-right, Category=symbol.svg +0 -3
  321. package/svg/Name=arrow-up, Category=symbol.svg +0 -3
  322. package/svg/Name=bell, Category=object.svg +0 -3
  323. package/svg/Name=bicycle, Category=object.svg +0 -3
  324. package/svg/Name=book-open, Category=object.svg +0 -3
  325. package/svg/Name=book-solid, Category=object.svg +0 -6
  326. package/svg/Name=box-shadow, Category=symbol.svg +0 -5
  327. package/svg/Name=calendar, Category=object.svg +0 -3
  328. package/svg/Name=camera, Category=object.svg +0 -3
  329. package/svg/Name=caret-down, Category=symbol.svg +0 -3
  330. package/svg/Name=caret-left, Category=symbol.svg +0 -3
  331. package/svg/Name=caret-right, Category=symbol.svg +0 -3
  332. package/svg/Name=caret-up, Category=symbol.svg +0 -3
  333. package/svg/Name=checkmark, Category=symbol.svg +0 -3
  334. package/svg/Name=clean-computer, Category=object.svg +0 -10
  335. package/svg/Name=codepen, Category=social.svg +0 -3
  336. package/svg/Name=creative, Category=symbol.svg +0 -5
  337. package/svg/Name=cross, Category=symbol.svg +0 -4
  338. package/svg/Name=crossed-flags, Category=object.svg +0 -4
  339. package/svg/Name=cv, Category=symbol.svg +0 -5
  340. package/svg/Name=design-ui, Category=symbol.svg +0 -9
  341. package/svg/Name=document, Category=object.svg +0 -3
  342. package/svg/Name=door-closed, Category=object.svg +0 -3
  343. package/svg/Name=door-open, Category=object.svg +0 -3
  344. package/svg/Name=double-caret-down, Category=symbol.svg +0 -4
  345. package/svg/Name=double-caret-left, Category=symbol.svg +0 -4
  346. package/svg/Name=double-caret-righ, Category=symbol.svg +0 -4
  347. package/svg/Name=double-caret-up, Category=symbol.svg +0 -4
  348. package/svg/Name=download, Category=symbol.svg +0 -5
  349. package/svg/Name=dropper, Category=object.svg +0 -5
  350. package/svg/Name=envelope, Category=object.svg +0 -3
  351. package/svg/Name=exclamation-close, Category=symbol.svg +0 -4
  352. package/svg/Name=exclamation-open, Category=symbol.svg +0 -4
  353. package/svg/Name=external-link, Category=symbol.svg +0 -3
  354. package/svg/Name=eye, Category=object.svg +0 -4
  355. package/svg/Name=eye-hidden, Category=object.svg +0 -7
  356. package/svg/Name=facebook, Category=social.svg +0 -3
  357. package/svg/Name=form, Category=symbol.svg +0 -8
  358. package/svg/Name=game-control, Category=object.svg +0 -3
  359. package/svg/Name=gear, Category=object.svg +0 -3
  360. package/svg/Name=github, Category=social.svg +0 -3
  361. package/svg/Name=house, Category=object.svg +0 -3
  362. package/svg/Name=hyphen, Category=symbol.svg +0 -3
  363. package/svg/Name=info, Category=symbol.svg +0 -3
  364. package/svg/Name=instagram, Category=social.svg +0 -3
  365. package/svg/Name=link, Category=symbol.svg +0 -5
  366. package/svg/Name=linkedin, Category=social.svg +0 -3
  367. package/svg/Name=magnifying-glass, Category=object.svg +0 -3
  368. package/svg/Name=message, Category=symbol.svg +0 -4
  369. package/svg/Name=moon, Category=object.svg +0 -5
  370. package/svg/Name=npm, Category=social.svg +0 -3
  371. package/svg/Name=order-list, Category=symbol.svg +0 -7
  372. package/svg/Name=pencil, Category=object.svg +0 -3
  373. package/svg/Name=pin-location, Category=symbol.svg +0 -3
  374. package/svg/Name=question-mark-close, Category=symbol.svg +0 -3
  375. package/svg/Name=question-mark-open, Category=symbol.svg +0 -3
  376. package/svg/Name=share, Category=symbol.svg +0 -5
  377. package/svg/Name=spinner, Category=symbol.svg +0 -9
  378. package/svg/Name=star, Category=object.svg +0 -3
  379. package/svg/Name=star-empty, Category=object.svg +0 -3
  380. package/svg/Name=sun, Category=object.svg +0 -11
  381. package/svg/Name=text-shadow, Category=symbol.svg +0 -4
  382. package/svg/Name=thinking, Category=symbol.svg +0 -3
  383. package/svg/Name=trash-can, Category=object.svg +0 -4
  384. package/svg/Name=upload, Category=symbol.svg +0 -5
  385. package/svg/Name=user, Category=symbol.svg +0 -4
  386. package/svg/Name=warning, Category=symbol.svg +0 -5
  387. package/svg/Name=whatsapp, Category=social.svg +0 -3
  388. package/svgconfig.json +0 -4
  389. package/tsconfig.json +0 -15
  390. package/tsup.config.cjs +0 -21
  391. package/vite.config.ts +0 -14
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/index.ts","../src/components/accordion/accordion.component.tsx","../src/hooks/use-classnames.ts","../src/hooks/use-event-listener.ts","../src/hooks/use-click-outside.ts","../src/hooks/use-debounce.ts","../src/hooks/use-resize-observer.ts","../src/hooks/use-dom-container.ts","../src/helpers/format-bytes.ts","../src/helpers/get-modal-position.ts","../src/helpers/get-modal-position-relative-to-screen.ts","../src/hooks/use-in-view.ts","../src/hooks/use-intersection-observer.ts","../src/hooks/use-input-handlers.ts","../src/hooks/use-media-query.ts","../src/hooks/use-modal.ts","../src/hooks/use-modal-in-container.ts","../src/hooks/use-modal-transition.ts","../src/hooks/use-mouse-position.ts","../src/hooks/use-toggle-values.ts","#style-inject:#style-inject","../src/components/line/line.styles.css","../src/components/line/line.component.tsx","../src/components/accordion/accordion.styles.css","../src/components/accordion/accordion-item.tsx","../src/components/cards/slide-card/slide-card.component.tsx","../src/components/cards/flip-card/flip-card.component.tsx","../src/components/cards/flip-card/flip-card.styles.css","../src/components/cards/hover-card/hover-card.component.tsx","../src/components/cards/hover-card/hover-card.styles.css","../src/components/typography/typography.component.tsx","../src/components/typography/typography.constants.ts","../src/components/typography/typography.styles.css","../src/components/ripple/ripple.component.tsx","../src/components/ripple/ripple.styles.css","../src/components/button/button.styles.css","../src/components/button/button.component.tsx","../src/components/cursor/cursor.component.tsx","../src/components/cursor/cursor.styles.css","../src/components/form/checkbox/checkbox.component.tsx","../src/components/form/controller/controller.component.tsx","../src/components/form/checkbox/checkbox.styles.css","../src/components/form/date-picker/date-picker.component.tsx","../src/components/form/field/field.component.tsx","../src/components/form/field/field.styles.css","../src/components/form/field/field.types.ts","../src/components/form/input/input.component.tsx","../src/components/form/input-password/input-password.component.tsx","../src/components/form/input-color/input-color.component.tsx","../src/components/modals/action-modal/action-modal.component.tsx","../src/components/modals/modal/modal.component.tsx","../src/components/modals/portal/portal.component.tsx","../src/components/modals/modal/modal.backdrop.tsx","../src/components/modals/modal/modal.styles.css","../src/components/modals/action-modal/action-modal.styles.css","../src/components/modals/aside-modal/aside-modal.component.tsx","../src/components/modals/aside-modal/aside-modal.styles.css","../src/components/modals/confirmation-modal/confirmation-modal.styles.css","../src/components/modals/confirmation-modal/confirmation-modal.component.tsx","../src/components/modals/menu/menu.component.tsx","../src/components/modals/menu/menu.styles.css","../src/components/form/input-color/input-color.styles.css","../src/components/form/input-file/input-file.component.tsx","../src/layouts/grid/grid.component.tsx","../src/layouts/grid/grid.styles.css","../src/components/form/input-file/input-file.styles.css","../src/components/form/input-number/input-number.component.tsx","../src/components/form/radio/radio.component.tsx","../src/components/form/radio/radio.styles.css","../src/components/form/select/select.component.tsx","../src/components/infinity-scroll/infinity-scroll.component.tsx","../src/components/infinity-scroll/infinity-scroll.styles.css","../src/components/form/select/option.tsx","../src/components/form/select/options.tsx","../src/components/form/select/select.styles.css","../src/components/form/slider/slider.component.tsx","../src/components/form/slider/slider.styles.css","../src/components/form/textarea/textarea.component.tsx","../src/components/form/textarea/textarea.styles.css","../src/components/form/switch/switch.component.tsx","../src/components/tooltips/click-to-copy/click-to-copy.component.tsx","../src/components/tooltips/tooltip/tooltip.component.tsx","../src/components/tooltips/tooltip/tooltip.styles.css","../src/components/form/switch/switch.styles.css","../src/components/image/image.tsx","../src/components/smart-table/smart-table.component.tsx","../src/components/smart-table/smart-table.column.tsx","../src/components/smart-table/smart-table.helpers.tsx","../src/components/smart-table/smart-table.hooks.ts","../src/components/smart-table/smart-table.row.tsx","../src/components/smart-table/smart-table.styles.css","../src/components/tabs/tabs.tsx","../src/components/tabs/tabs-list.tsx","../src/components/tabs/tabs.styles.css","../src/components/tag/tag.styles.css","../src/components/tag/tag.component.tsx"],"sourcesContent":["export * from './accordion';\nexport * from './button';\nexport * from './cards';\nexport * from './cursor';\nexport * from './form';\nexport * from './image';\nexport * from './infinity-scroll';\nexport * from './line';\nexport * from './modals';\nexport * from './ripple';\nexport * from './smart-table';\nexport * from './tabs';\nexport * from './tag';\nexport * from './tooltips';\nexport * from './typography';\n","import React, { createContext, useCallback, useContext, useMemo, useState } from 'react';\n\nimport { useClassNames } from '../../hooks';\nimport { Line } from '../line';\n\nimport './accordion.styles.css';\n\ntype AccordionContextState = {\n toggleItem: (id: string) => void;\n openedItems: Array<string>;\n};\n\nconst AccordionContext = createContext<AccordionContextState | null>(null);\n\nexport const useAccordionItem = (id: string): [boolean, () => void] => {\n const context = useContext(AccordionContext);\n\n if (!context) {\n throw new Error('You cant use this component out off an Accordion component');\n }\n\n const { toggleItem, openedItems } = context;\n\n const toggle = () => toggleItem(id);\n\n return [openedItems.includes(id), toggle];\n};\n\ntype AccordionProps = {\n children: React.ReactNode;\n className?: string;\n style?: React.CSSProperties;\n noSeparators?: boolean;\n multiple?: boolean;\n defaultOpened?: Array<string> | string;\n};\n\nexport const Accordion = ({\n children,\n className = '',\n noSeparators,\n multiple,\n style = {},\n defaultOpened = [],\n}: AccordionProps) => {\n const [openedItems, setOpenedItems] = useState<{ [index: string]: boolean }>(() => {\n return (Array.isArray(defaultOpened) ? defaultOpened : [defaultOpened]).reduce((acc, id) => {\n return typeof id === 'string' ? { ...acc, [id]: true } : acc;\n }, {});\n });\n\n const toggleItem = useCallback(\n (id: string) => {\n setOpenedItems(prev => ({ ...(multiple ? prev : {}), [id]: !prev[id] }));\n },\n [multiple],\n );\n\n const openedItemsIDs = useMemo(() => Object.keys(openedItems).filter(id => openedItems[id]), [openedItems]);\n\n const accordionClassName = useClassNames({\n accordion: true,\n [className]: Boolean(className),\n });\n\n return (\n <AccordionContext.Provider\n value={{\n toggleItem,\n openedItems: openedItemsIDs,\n }}\n >\n <section className={accordionClassName} style={style}>\n {(Array.isArray(children) ? children : [children]).flatMap((child, key) => {\n return key === 0 ? child : [noSeparators ? null : <Line orientation='horizontal' key={`${key}.5`} />, child];\n })}\n </section>\n </AccordionContext.Provider>\n );\n};\n","import { useMemo } from 'react';\n\nexport const useClassNames = (classes: Record<string, boolean>): string =>\n useMemo<string>(\n () =>\n Object.entries(classes)\n .reduce<Array<string>>(\n (compiledClassNames, [classname, value]) => (value ? [...compiledClassNames, classname] : compiledClassNames),\n [],\n )\n .join(' '),\n [classes],\n );\n","import { RefObject, useEffect, useLayoutEffect, useRef } from 'react';\n\nfunction useEventListener<EventName extends keyof MediaQueryListEventMap>(\n eventName: EventName,\n callback: (event: MediaQueryListEventMap[EventName]) => void,\n element: RefObject<MediaQueryList | null> | undefined,\n options?: boolean | AddEventListenerOptions,\n): void;\n\nfunction useEventListener<EventName extends keyof WindowEventMap>(\n eventName: EventName,\n callback: (event: WindowEventMap[EventName]) => void,\n element?: undefined,\n options?: boolean | AddEventListenerOptions,\n): void;\n\nfunction useEventListener<EventName extends keyof HTMLElementEventMap, ElementRef extends HTMLElement = HTMLDivElement>(\n eventName: EventName,\n callback: (event: HTMLElementEventMap[EventName]) => void,\n element: RefObject<ElementRef | null> | undefined,\n options?: boolean | AddEventListenerOptions,\n): void;\n\nfunction useEventListener<EventName extends keyof DocumentEventMap>(\n eventName: EventName,\n callback: (event: DocumentEventMap[EventName]) => void,\n element: RefObject<Document | null> | undefined,\n options?: boolean | AddEventListenerOptions,\n): void;\n\nfunction useEventListener<\n MediaQueryEventName extends keyof MediaQueryListEventMap,\n WindowEventName extends keyof WindowEventMap,\n ElementEventName extends keyof HTMLElementEventMap,\n DocumentEventName extends keyof DocumentEventMap,\n ElementRef extends HTMLElement | MediaQueryList | Document | Window | void = void,\n>(\n eventName: WindowEventName | DocumentEventName | ElementEventName | MediaQueryEventName,\n callback: (\n event:\n | MediaQueryListEventMap[MediaQueryEventName]\n | WindowEventMap[WindowEventName]\n | HTMLElementEventMap[ElementEventName]\n | DocumentEventMap[DocumentEventName]\n | Event,\n ) => void,\n element?: RefObject<ElementRef | null> | undefined,\n options?: boolean | AddEventListenerOptions,\n) {\n const callbackRef = useRef<EventListener>(callback);\n\n useEffect(() => {\n callbackRef.current = callback;\n }, [callback]);\n\n useLayoutEffect(() => {\n const targetElement = element?.current ?? window;\n\n if (!(targetElement && targetElement.addEventListener)) return;\n\n const listener: typeof callback = event => callbackRef.current(event);\n\n targetElement.addEventListener(eventName, listener, options);\n\n return () => {\n targetElement.removeEventListener(eventName, listener, options);\n };\n }, [eventName, element, options]);\n}\n\nexport { useEventListener };\n","import { RefObject } from 'react';\n\nimport { useEventListener } from './use-event-listener';\n\nconst checkIsOutside = (ref: RefObject<HTMLElement | null>, target: Node) => {\n return ref.current && !ref.current.contains(target);\n};\n\nexport const useClickOutside = <T extends HTMLElement>(\n ref: RefObject<T | null> | Array<RefObject<T | null>>,\n callback: () => void,\n) => {\n useEventListener('keydown', e => {\n if (e.key === 'Escape') {\n callback();\n }\n });\n\n useEventListener('mousedown', event => {\n const target = event.target as Node;\n\n if (!target?.isConnected) {\n return;\n }\n\n const isOutside = (Array.isArray(ref) ? ref : [ref]).every(r => checkIsOutside(r, target));\n\n if (isOutside) {\n callback();\n }\n });\n};\n","import { useEffect, useState } from 'react';\n\nexport const useDebounce = <T>(value: T, delay: number = 500): T => {\n const [debouncedValue, setDebouncedValue] = useState<T>(value);\n\n useEffect(() => {\n const timer = setTimeout(() => setDebouncedValue(value), delay);\n\n return () => {\n clearTimeout(timer);\n };\n }, [value, delay]);\n\n return debouncedValue;\n};\n","import { RefObject, useEffect } from 'react';\n\nexport const useResizeObserver = <T extends Element>(\n ref: RefObject<T | null> | Array<RefObject<T | null>>,\n callback: ResizeObserverCallback,\n) => {\n useEffect(() => {\n const refs = Array.isArray(ref) ? ref : [ref];\n\n const observer = new ResizeObserver(callback);\n\n refs.forEach(r => r.current && observer.observe(r.current));\n\n return () => {\n observer.disconnect();\n };\n }, [ref, callback]);\n};\n","import { useEffect, useState } from 'react';\n\nconst createContainer = (containerID: string) => {\n let domContainer = document.getElementById(containerID);\n\n if (domContainer === null) {\n domContainer = document.createElement('div');\n domContainer.setAttribute('id', containerID);\n document.body.appendChild(domContainer);\n }\n\n return domContainer;\n};\n\nexport const useDomContainer = (containerID: string) => {\n const [container, setContainer] = useState<HTMLElement | null>(() => createContainer(containerID));\n\n useEffect(() => {\n const domContainer = document.getElementById(containerID);\n\n if (container === null || domContainer === null) {\n const domContainer = createContainer(containerID);\n\n setContainer(domContainer);\n }\n\n return () => {\n if (container && container.parentNode && process.env.NODE_ENV === 'production') {\n document.body.removeChild(container);\n }\n };\n }, [container, containerID]);\n\n return container;\n};\n","export const formatBytes = (bytes: number, decimals = 2) => {\n if (bytes === 0) return '0 Bytes';\n\n const k = 1000;\n const dm = decimals < 0 ? 0 : decimals;\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n\n return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];\n};\n","export enum PositionContainer {\n CENTER = 'center',\n TOP = 'top',\n TOP_LEFT = 'top left',\n TOP_RIGHT = 'top right',\n TOP_CENTER = 'top center',\n LEFT = 'left',\n LEFT_TOP = 'left top',\n LEFT_BOTTOM = 'left bottom',\n LEFT_CENTER = 'left center',\n RIGHT = 'right',\n RIGHT_TOP = 'right top',\n RIGHT_BOTTOM = 'right bottom',\n RIGHT_CENTER = 'right center',\n BOTTOM = 'bottom',\n BOTTOM_LEFT = 'bottom left',\n BOTTOM_RIGHT = 'bottom right',\n BOTTOM_CENTER = 'bottom center',\n}\n\nexport type PositionObject = {\n x: number;\n y: number;\n top: number;\n left: number;\n w: number;\n h: number;\n};\n\nexport type ModalPosition = {\n left: number;\n top: number;\n};\n\nexport type GetModalPositionParams = {\n c: PositionObject;\n m: PositionObject;\n offset: number;\n position: PositionContainer;\n};\n\n/*\n * @description Calculates the position of the modal relative to the container\n *\n * @param c - The container's position object\n * @param m - The modal's position object\n * @param offset - The offset between the container and the modal\n * @param position - The position of the modal\n *\n * -----------------------------------------------------------------------------\n * @returns The position of the modal relative to the container\n */\nexport const getModalPosition = ({ c, m, offset, position }: GetModalPositionParams): ModalPosition => {\n // Default bottom\n let top = c.y + c.h + offset;\n let left = c.x - (m.w - c.w) * (50 / 100);\n\n switch (position) {\n case PositionContainer.TOP:\n case PositionContainer.TOP_CENTER:\n top = c.y - m.h - offset;\n left = c.x - (m.w - c.w) / 2;\n\n break;\n case PositionContainer.TOP_LEFT:\n top = c.y - m.h - offset;\n left = c.x - m.w + c.w;\n\n break;\n\n case PositionContainer.TOP_RIGHT:\n top = c.y - m.h - offset;\n left = c.x;\n\n break;\n\n case PositionContainer.BOTTOM:\n case PositionContainer.BOTTOM_CENTER:\n top = c.y + c.h + offset;\n left = c.x - (m.w - c.w) / 2;\n\n break;\n\n case PositionContainer.BOTTOM_LEFT:\n top = c.y + c.h + offset;\n left = c.x - m.w + c.w;\n\n break;\n\n case PositionContainer.BOTTOM_RIGHT:\n top = c.y + c.h + offset;\n left = c.x;\n\n break;\n\n case PositionContainer.LEFT:\n case PositionContainer.LEFT_CENTER:\n top = c.y - (m.h - c.h) / 2;\n left = c.x - m.w - offset;\n\n break;\n\n case PositionContainer.LEFT_TOP:\n top = c.y - m.h + c.h;\n left = c.x - m.w - offset;\n\n break;\n\n case PositionContainer.LEFT_BOTTOM:\n top = c.y;\n left = c.x - m.w - offset;\n\n break;\n\n case PositionContainer.RIGHT:\n case PositionContainer.RIGHT_CENTER:\n top = c.y - (m.h - c.h) / 2;\n left = c.x + c.w + offset;\n\n break;\n\n case PositionContainer.RIGHT_TOP:\n top = c.y - m.h + c.h;\n left = c.x + c.w + offset;\n\n break;\n\n case PositionContainer.RIGHT_BOTTOM:\n top = c.y;\n left = c.x + c.w + offset;\n\n break;\n }\n\n return {\n left: Math.round(left),\n top: Math.round(top),\n };\n};\n\nexport const getOppositePosition = (\n { top, left }: ModalPosition,\n position: PositionContainer,\n windowOffset: number,\n m: PositionObject,\n) => {\n const positions = position.split(' ');\n const newPosition = [];\n const rightOffset = left + m.w + windowOffset - window.innerWidth;\n const bottomOffset = top + m.h + windowOffset - window.innerHeight;\n\n for (const p of positions) {\n if (p === PositionContainer.TOP && top < windowOffset) {\n newPosition.push(PositionContainer.BOTTOM);\n } else if (p === PositionContainer.LEFT && left < windowOffset) {\n newPosition.push(PositionContainer.RIGHT);\n } else if (p === PositionContainer.BOTTOM && bottomOffset > 0) {\n newPosition.push(PositionContainer.TOP);\n } else if (p === PositionContainer.RIGHT && rightOffset > 0) {\n newPosition.push(PositionContainer.LEFT);\n } else {\n newPosition.push(p);\n }\n }\n\n return newPosition.join(' ') as PositionContainer;\n};\n\nexport const fixModalPosition = ({ top, left }: ModalPosition, m: PositionObject, windowOffset: number) => {\n const rightOffset = left + m.w + windowOffset - window.innerWidth;\n const bottomOffset = top + m.h + windowOffset - window.innerHeight;\n\n left = rightOffset > 0 ? left - rightOffset : left;\n top = bottomOffset > 0 ? top - bottomOffset : top;\n\n left = left < windowOffset ? windowOffset : left;\n top = top < windowOffset ? windowOffset : top;\n\n return { top, left };\n};\n\ntype getModalPositionRelativeToContainerParams = GetModalPositionParams & {\n windowOffset: number;\n};\n\nexport const getModalPositionRelativeToContainer = ({\n c,\n m,\n offset,\n windowOffset,\n position,\n}: getModalPositionRelativeToContainerParams): Record<string, string> => {\n const params = { c, m, offset, position };\n let modalContainerStyle = getModalPosition(params);\n\n const oppositePosition = getOppositePosition(modalContainerStyle, position, windowOffset, m);\n\n if (oppositePosition !== position) {\n modalContainerStyle = getModalPosition({\n ...params,\n position: oppositePosition,\n });\n }\n\n const fixedPosition = fixModalPosition(modalContainerStyle, m, windowOffset);\n\n return {\n left: `${fixedPosition.left}px`,\n top: `${fixedPosition.top}px`,\n };\n};\n","import { PositionContainer } from './get-modal-position';\n\nexport type GetModalPositionRelativeToScreenParams = {\n position: PositionContainer;\n windowOffset: number;\n};\n\nexport const getModalPositionRelativeToScreen = ({\n position,\n windowOffset,\n}: GetModalPositionRelativeToScreenParams): Record<string, string> => {\n switch (position) {\n case PositionContainer.CENTER:\n return {\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n };\n\n case PositionContainer.TOP:\n case PositionContainer.TOP_CENTER:\n return {\n top: `${windowOffset}px`,\n left: '50%',\n transform: 'translateX(-50%)',\n };\n\n case PositionContainer.TOP_LEFT:\n case PositionContainer.LEFT_TOP:\n return {\n top: `${windowOffset}px`,\n left: `${windowOffset}px`,\n };\n\n case PositionContainer.TOP_RIGHT:\n case PositionContainer.RIGHT_TOP:\n return {\n top: `${windowOffset}px`,\n right: `${windowOffset}px`,\n };\n\n case PositionContainer.BOTTOM:\n case PositionContainer.BOTTOM_CENTER:\n return {\n bottom: `${windowOffset}px`,\n left: '50%',\n transform: 'translateX(-50%)',\n };\n\n case PositionContainer.LEFT_BOTTOM:\n case PositionContainer.BOTTOM_LEFT:\n return {\n bottom: `${windowOffset}px`,\n left: `${windowOffset}px`,\n };\n\n case PositionContainer.RIGHT_BOTTOM:\n case PositionContainer.BOTTOM_RIGHT:\n return {\n bottom: `${windowOffset}px`,\n right: `${windowOffset}px`,\n };\n\n case PositionContainer.LEFT:\n case PositionContainer.LEFT_CENTER:\n return {\n top: '50%',\n left: `${windowOffset}px`,\n transform: 'translateY(-50%)',\n };\n\n case PositionContainer.RIGHT:\n case PositionContainer.RIGHT_CENTER:\n return {\n top: '50%',\n right: `${windowOffset}px`,\n transform: 'translateY(-50%)',\n };\n }\n\n return {\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n };\n};\n","import { useRef, useState } from 'react';\n\nimport { useIntersectionObserver } from './use-intersection-observer';\n\nexport const useInView = (initOptions: IntersectionObserverInit = {}) => {\n const [inView, setInView] = useState(false);\n const ref = useRef<HTMLElement>(null);\n\n useIntersectionObserver(\n ref,\n ([entry]) => {\n setInView(entry.isIntersecting);\n },\n initOptions,\n );\n\n return { ref, inView };\n};\n","import { RefObject, useEffect } from 'react';\n\nexport const useIntersectionObserver = <T extends Element>(\n ref: RefObject<T | null> | Array<RefObject<T | null>>,\n callback: IntersectionObserverCallback,\n initOptions: IntersectionObserverInit = {},\n) => {\n useEffect(() => {\n const refs = Array.isArray(ref) ? ref : [ref];\n\n const observer = new IntersectionObserver(callback, initOptions);\n\n refs.forEach(r => r.current && observer.observe(r.current));\n\n return () => {\n observer.disconnect();\n };\n }, [callback, initOptions, ref]);\n};\n","import React, { useCallback, useState } from 'react';\n\ntype InputTypes = HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement;\n\ntype UseInputHandlersProps<T extends InputTypes> = {\n onBlur?: (e: React.FocusEvent<T>) => void;\n onFocus?: (e: React.FocusEvent<T>) => void;\n onChange?: (e: React.ChangeEvent<T>) => void;\n};\n\nexport const useInputHandlers = <T extends InputTypes>({\n onBlur,\n onFocus,\n onChange,\n}: UseInputHandlersProps<T> = {}) => {\n const [isFocus, setIsFocus] = useState(false);\n\n const handleFocus = useCallback(\n (e: React.FocusEvent<T>) => {\n setIsFocus(true);\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n onFocus && onFocus(e);\n },\n [onFocus],\n );\n\n const handleBlur = useCallback(\n (e: React.FocusEvent<T>) => {\n setIsFocus(false);\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n onBlur && onBlur(e);\n },\n [onBlur],\n );\n\n const handleChange = useCallback(\n (e: React.ChangeEvent<T>) => {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n onChange && onChange(e);\n },\n [onChange],\n );\n\n return {\n isFocus,\n handlers: {\n onFocus: handleFocus,\n onBlur: handleBlur,\n onChange: handleChange,\n },\n };\n};\n","import { useEffect, useState } from 'react';\n\nexport const useMediaQuery = (query: string): boolean => {\n const [matches, setMatches] = useState(false);\n\n useEffect(() => {\n const media = window.matchMedia(query);\n\n if (media.matches !== matches) {\n setMatches(media.matches);\n }\n\n const listener = () => {\n setMatches(media.matches);\n };\n\n media.addEventListener('change', listener);\n\n return () => {\n media.removeEventListener('change', listener);\n };\n }, [matches, query]);\n\n return matches;\n};\n","import { useRef, useState } from 'react';\n\nexport const useModal = <T extends HTMLElement>() => {\n const containerRef = useRef<T>(null);\n const [isOpen, setIsOpen] = useState(false);\n\n const openModal = () => {\n setIsOpen(true);\n };\n\n const closeModal = () => {\n setIsOpen(false);\n };\n\n return {\n containerRef,\n isOpen,\n openModal,\n closeModal,\n };\n};\n","import { RefObject, useCallback, useLayoutEffect, useRef } from 'react';\n\nimport {\n getModalPositionRelativeToContainer,\n getModalPositionRelativeToScreen,\n PositionContainer,\n PositionObject,\n} from '../helpers';\n\nimport { useEventListener } from './use-event-listener';\nimport { useResizeObserver } from './use-resize-observer';\n\nconst convertDOMRectToPosition = (rect: DOMRectReadOnly): PositionObject => ({\n x: rect.x,\n y: rect.y,\n w: rect.width,\n h: rect.height,\n top: rect.top,\n left: rect.left,\n});\n\nexport type UseModalInContainerParams<\n Container extends HTMLElement = HTMLElement,\n Modal extends HTMLElement = Container,\n> = {\n windowOffset?: number;\n offset?: number;\n position?: `${PositionContainer}`;\n modalRef: RefObject<Modal | null>;\n containerRef?: RefObject<Container | null>;\n isOpen: boolean;\n};\n\nexport const useModalInContainer = <\n Container extends HTMLElement = HTMLElement,\n Modal extends HTMLElement = Container,\n>({\n offset = 0,\n windowOffset = 0,\n position = PositionContainer.BOTTOM,\n modalRef,\n containerRef,\n isOpen,\n}: UseModalInContainerParams<Container, Modal>) => {\n const containerTemporalRef = useRef<Container>(null);\n\n const getPosition = useCallback(\n (modalRef: RefObject<Modal | null>, containerRef: RefObject<Container | null>) => {\n const modal = modalRef.current?.getClientRects()[0];\n const container = containerRef.current?.getClientRects()[0];\n\n if (!modal) {\n return;\n }\n\n const modalStyle: Record<string, string> = !container\n ? getModalPositionRelativeToScreen({ position: position as PositionContainer, windowOffset })\n : getModalPositionRelativeToContainer({\n c: convertDOMRectToPosition(container),\n m: convertDOMRectToPosition(modal),\n offset,\n windowOffset,\n position: position as PositionContainer,\n });\n\n Object.keys(modalStyle).forEach(key => {\n modalRef.current?.style.setProperty(key, modalStyle[key]);\n });\n },\n [position, windowOffset, offset],\n );\n\n const callback = useCallback(() => {\n if (isOpen) {\n getPosition(modalRef, containerRef ?? containerTemporalRef);\n }\n }, [getPosition, isOpen, containerRef, modalRef]);\n\n useLayoutEffect(callback, [callback]);\n\n useResizeObserver<Container>(containerRef ?? containerTemporalRef, callback);\n useResizeObserver<Modal>(modalRef, callback);\n useEventListener('resize', callback);\n useEventListener('scroll', callback, modalRef);\n};\n","import React, { useCallback, useEffect, useLayoutEffect, useMemo } from 'react';\n\nexport enum ModalState {\n OPENING = 'OPENING',\n OPEN = 'OPEN',\n CLOSING = 'CLOSING',\n CLOSED = 'CLOSED',\n}\n\nexport type UseModalTransitionParams = {\n transitionDuration?: number;\n isOpen: boolean;\n};\n\nexport const useModalTransition = ({ transitionDuration = 0, isOpen }: UseModalTransitionParams) => {\n const [modalState, setModalState] = React.useState<ModalState>(ModalState.CLOSED);\n\n const isVisible = useMemo(() => {\n return modalState !== ModalState.CLOSED;\n }, [modalState]);\n\n useEffect(() => {\n document.documentElement.style.overflow = isVisible ? 'hidden' : 'auto';\n }, [isVisible]);\n\n const closeModal = useCallback(() => {\n if ([ModalState.OPENING, ModalState.OPEN].includes(modalState)) {\n if (transitionDuration > 0) {\n setModalState(ModalState.CLOSING);\n setTimeout(() => {\n setModalState(ModalState.CLOSED);\n }, transitionDuration);\n } else {\n setModalState(ModalState.CLOSED);\n }\n }\n }, [modalState, transitionDuration]);\n\n const openModal = useCallback(() => {\n if ([ModalState.CLOSING, ModalState.CLOSED].includes(modalState)) {\n if (transitionDuration > 0) {\n setModalState(ModalState.OPENING);\n setTimeout(() => {\n setModalState(ModalState.OPEN);\n }, transitionDuration);\n } else {\n setModalState(ModalState.OPEN);\n }\n }\n }, [modalState, transitionDuration]);\n\n useLayoutEffect(() => {\n if (modalState === ModalState.CLOSED && isOpen) {\n openModal();\n } else if (modalState === ModalState.OPEN && !isOpen) {\n closeModal();\n }\n }, [isOpen, openModal, closeModal, modalState]);\n\n return {\n isVisible,\n modalState,\n };\n};\n","import React, { useRef, useState } from 'react';\n\nimport { useEventListener } from './use-event-listener';\n\ntype MousePosition = {\n x: null | number;\n y: null | number;\n elementX: number | null;\n elementY: number | null;\n elementPositionX: number | null;\n elementPositionY: number | null;\n};\n\nconst getMousePosition = (domRect: DOMRect, e: MouseEvent) => {\n const { left, top } = domRect;\n const containerPositionX = left + window.scrollX;\n const containerPositionY = top + window.scrollY;\n const containerX = e.pageX - containerPositionX;\n const containerY = e.pageY - containerPositionY;\n\n return {\n x: e.pageX,\n y: e.pageY,\n elementX: containerX,\n elementY: containerY,\n elementPositionX: containerPositionX,\n elementPositionY: containerPositionY,\n };\n};\n\nexport const useMousePosition = (containerRef?: React.RefObject<HTMLElement | SVGElement | null>) => {\n const ref = useRef<HTMLElement>(null);\n const [position, setPosition] = useState<MousePosition>({\n x: null,\n y: null,\n elementX: null,\n elementY: null,\n elementPositionX: null,\n elementPositionY: null,\n });\n\n const mouseMove = (e: MouseEvent) => {\n const { clientX, clientY } = e;\n setPosition(prev => ({ ...prev, x: clientX, y: clientY }));\n\n if (containerRef?.current instanceof Element) {\n const newState = getMousePosition(containerRef.current.getBoundingClientRect(), e);\n setPosition(prev => ({\n ...prev,\n ...newState,\n }));\n } else if (ref.current instanceof Element) {\n const newState = getMousePosition(ref.current.getBoundingClientRect(), e);\n setPosition(prev => ({\n ...prev,\n ...newState,\n }));\n }\n };\n\n useEventListener('mousemove', mouseMove);\n\n return { ...position, ref };\n};\n","import { useCallback, useState } from 'react';\n\nexport const useToggleValues = <T>(values: Array<T>, defaultIndex: number = 0): [T, (index?: number) => void] => {\n const [index, setIndex] = useState(defaultIndex);\n\n const toggle = useCallback(\n (index?: number) => {\n setIndex(index !== undefined ? index : prev => (prev + 1) % values.length);\n },\n [values.length],\n );\n\n return [values[index], toggle];\n};\n","\n export default function styleInject(css, { insertAt } = {}) {\n if (!css || typeof document === 'undefined') return\n \n const head = document.head || document.getElementsByTagName('head')[0]\n const style = document.createElement('style')\n style.type = 'text/css'\n \n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild)\n } else {\n head.appendChild(style)\n }\n } else {\n head.appendChild(style)\n }\n \n if (style.styleSheet) {\n style.styleSheet.cssText = css\n } else {\n style.appendChild(document.createTextNode(css))\n }\n }\n ","import styleInject from '#style-inject';styleInject(\".custom-line{--color: attr(data-color, \\\"currentColor\\\");--size: attr(data-size, 1px);--spacing: attr(data-spacing, 1px);--dashSize: attr(data-dash-size, 1px);&.horizontal,&.vertical{background:var(--color);display:inline-block;border-radius:100px}&.horizontal{width:100%;height:var(--size);&.dotted{background:radial-gradient(calc(var(--size) / 2) calc(var(--size) / 2),var(--color) 100%,transparent) 0 0 / calc(var(--spacing) + var(--size)) 100%}&.dashed{background:repeating-linear-gradient(90deg,var(--color),var(--color) var(--dashSize),transparent var(--dashSize),transparent calc(var(--spacing) + var(--dashSize)))}}&.vertical{height:100%;width:var(--size);&.dotted{background:radial-gradient(calc(var(--size) / 2) calc(var(--size) / 2),var(--color) 100%,transparent) 0 0 / 100% calc(var(--spacing) + var(--size))}&.dashed{background:repeating-linear-gradient(0deg,var(--color),var(--color) var(--dashSize),transparent var(--dashSize),transparent calc(var(--spacing) + var(--dashSize)))}}}\\n\")","import { useClassNames } from '../../hooks';\n\nimport './line.styles.css';\n\nexport enum LineOrientation {\n VERTICAL = 'vertical',\n HORIZONTAL = 'horizontal',\n}\n\nexport enum LineStyle {\n SOLID = 'solid',\n DOTTED = 'dotted',\n DASHED = 'dashed',\n}\n\ntype LineCommonProps = {\n orientation?: `${LineOrientation}`;\n className?: string;\n style?: React.CSSProperties;\n color?: string;\n};\n\ntype LineSolidProps = LineCommonProps & {\n lineStyle?: `${LineStyle.SOLID}`;\n spacing?: never;\n dashedSize?: never;\n size?: number;\n};\n\ntype LineDottedProps = LineCommonProps & {\n lineStyle: `${LineStyle.DOTTED}`;\n spacing?: number;\n size?: number;\n dashedSize?: never;\n};\n\ntype LineDashedProps = LineCommonProps & {\n lineStyle: `${LineStyle.DASHED}`;\n spacing?: number;\n dashedSize?: number;\n size?: number;\n};\n\ntype LineProps = LineSolidProps | LineDottedProps | LineDashedProps;\n\nexport const Line = ({\n orientation = LineOrientation.HORIZONTAL,\n className = '',\n style = {},\n color = 'currentColor',\n size = 1,\n lineStyle = LineStyle.SOLID,\n dashedSize = 1,\n spacing = 1,\n}: LineProps) => {\n const classNames = useClassNames({\n 'custom-line': true,\n [orientation]: true,\n [className]: !!className,\n [lineStyle]: true,\n });\n\n return (\n <span\n className={classNames}\n style={\n {\n ...style,\n '--color': color,\n '--size': `${size}px`,\n '--spacing': `${spacing}px`,\n '--dashSize': `${dashedSize}px`,\n } as React.CSSProperties\n }\n />\n );\n};\n","import styleInject from '#style-inject';styleInject(\".accordion{display:grid}.accordion-item{display:grid;position:relative;.accordion-header{display:grid;grid-template-columns:1fr auto;align-items:center;gap:20px;cursor:pointer;position:sticky;top:0;padding:20px 0;&.has-start-content{grid-template-columns:auto 1fr auto}}.accordion-header-content{display:grid}.accordion-toggle-icon{transition:all .3s ease;&.isOpen{transform:rotate(-90deg)}}.accordion-body{padding:10px 0 20px}}\\n\")","import React, { useMemo } from 'react';\nimport { IconType } from 'react-icons';\nimport { FaCaretLeft } from 'react-icons/fa';\n\nimport { useClassNames } from '../../hooks';\nimport { SlideCard } from '../cards';\nimport { Typography } from '../typography';\n\nimport { useAccordionItem } from './accordion.component';\n\ntype NodeFunction = (isOpen: boolean) => React.ReactNode;\n\ntype ContentType = React.ReactNode | NodeFunction;\n\ntype AccordionItemCommonProps = {\n icon?: IconType;\n children: React.ReactNode;\n startContent?: ContentType;\n endContent?: ContentType;\n className?: string;\n style?: React.CSSProperties;\n classNames?: {\n header?: string;\n headerContent?: string;\n title?: string;\n subtitle?: string;\n toggleIcon?: string;\n body?: string;\n };\n};\n\ntype AccordionItemTitleProps = AccordionItemCommonProps & {\n title?: ContentType;\n subtitle?: ContentType;\n content?: never;\n};\n\ntype AccordionItemContentProps = AccordionItemCommonProps & {\n title?: never;\n subtitle?: never;\n content?: ContentType;\n};\n\ntype AccordionItemProps = AccordionItemTitleProps | AccordionItemContentProps;\n\nconst getContent = (content: ContentType | undefined, isOpen: boolean): React.ReactNode | undefined => {\n if (typeof content === 'function') {\n return content(isOpen);\n }\n\n return content;\n};\n\nexport const AccordionItem: React.FC<AccordionItemProps> = ({\n title,\n subtitle,\n children,\n icon: Icon = FaCaretLeft,\n startContent,\n content,\n endContent,\n classNames = {},\n className = '',\n style = {},\n}: AccordionItemProps) => {\n const id = useMemo(() => crypto.randomUUID(), []);\n const [isOpen, toggle] = useAccordionItem(id);\n const headerClassName = useClassNames({\n 'accordion-header': true,\n 'has-start-content': !!startContent,\n [classNames?.header ?? '']: !!classNames?.header,\n 'is-open': isOpen,\n });\n\n const headerContentClassName = useClassNames({\n 'accordion-header-content': true,\n [classNames?.headerContent ?? '']: !!classNames?.headerContent,\n });\n\n const toggleIconClassName = useClassNames({\n 'accordion-toggle-icon': true,\n isOpen: isOpen,\n [classNames?.toggleIcon ?? '']: !!classNames?.toggleIcon,\n });\n\n const bodyContentClassName = useClassNames({\n 'accordion-body': true,\n [classNames?.body ?? '']: !!classNames?.body,\n });\n\n const titleContent = getContent(title, isOpen);\n const subtitleContent = getContent(subtitle, isOpen);\n const headerStart = getContent(startContent, isOpen);\n const headerMiddle = getContent(content, isOpen) ?? (\n <section className={headerContentClassName}>\n <Typography className={classNames?.title} variant='body' noPadding weight='bold'>\n {titleContent}\n </Typography>\n <Typography className={classNames?.subtitle} variant='label' noPadding weight='light'>\n {subtitleContent}\n </Typography>\n </section>\n );\n const headerEnd = getContent(endContent, isOpen) ?? <Icon className={toggleIconClassName} />;\n\n const accordionItemClassName = useClassNames({\n 'accordion-item': true,\n [className]: Boolean(className),\n });\n\n return (\n <section className={accordionItemClassName} style={style}>\n <section className={headerClassName} onClick={toggle}>\n {headerStart}\n {headerMiddle}\n {headerEnd}\n </section>\n <SlideCard isOpen={isOpen}>\n <section className={bodyContentClassName}>{children}</section>\n </SlideCard>\n </section>\n );\n};\n","import React from 'react';\n\ntype SlideCardProps = {\n children: React.ReactNode;\n isOpen: boolean;\n className?: string;\n style?: React.CSSProperties;\n};\n\nexport const SlideCard = ({ children, isOpen, className = '', style = {} }: SlideCardProps) => {\n return (\n <section\n className={className}\n style={\n {\n overflow: 'hidden',\n height: isOpen ? 'auto' : 0,\n transition: 'height 300ms ease',\n interpolateSize: 'allow-keywords',\n ...style,\n } as React.CSSProperties\n }\n >\n {children}\n </section>\n );\n};\n","import { CSSProperties, useMemo } from 'react';\n\nimport { useClassNames } from '../../../hooks';\n\nimport './flip-card.styles.css';\n\ntype FlipCardProps = {\n cardZIndex?: CSSProperties['zIndex'];\n isFlipped?: boolean;\n flipSpeed?: number;\n flipDirection?: 'horizontal' | 'vertical';\n children: [React.ReactNode, React.ReactNode];\n};\n\nexport const FlipCard = ({\n cardZIndex = 'auto',\n flipDirection = 'vertical',\n flipSpeed = 500,\n isFlipped = false,\n children,\n}: FlipCardProps) => {\n const getComponent = (key: 0 | 1): React.ReactNode => {\n if (children.length !== 2) {\n throw new Error('Component FlipCard requires 2 children');\n }\n\n return children[key] as React.ReactNode;\n };\n\n const frontRotate = useMemo(() => {\n const deg = isFlipped ? 180 : 0;\n\n return `rotate${flipDirection === 'horizontal' ? 'Y' : 'X'}(${deg}deg)`;\n }, [flipDirection, isFlipped]);\n\n const backRotate = useMemo(() => {\n const deg = isFlipped ? 0 : -180;\n\n return `rotate${flipDirection === 'horizontal' ? 'Y' : 'X'}(${deg}deg)`;\n }, [flipDirection, isFlipped]);\n\n const className = useClassNames({\n 'flip-card': true,\n 'is-flipped': isFlipped,\n });\n\n return (\n <section\n className={className}\n style={\n {\n '--cardZIndex': cardZIndex,\n '--flipSpeed': `${flipSpeed}ms`,\n '--frontRotate': frontRotate,\n '--backRotate': backRotate,\n } as React.CSSProperties\n }\n >\n <section className='flipper'>\n <section className='front'>{getComponent(0)}</section>\n\n <section className='back'>{getComponent(1)}</section>\n </section>\n </section>\n );\n};\n","import styleInject from '#style-inject';styleInject(\".flip-card{--cardZIndex: attr(data-zIndex);--flipSpeed: attr(data-flipSpeed, .5s);--frontRotate: attr(data-frontRotate);--backRotate: attr(data-backRotate);perspective:1000px;z-index:var(--cardZIndex);.flipper{height:100%;position:relative;width:100%;transform-style:preserve-3d}.front,.back{-webkit-backface-visibility:hidden;backface-visibility:hidden;transform-style:preserve-3d;transition:var(--flipSpeed);height:100%;left:0;top:0;width:100%}.front{position:relative;transform:var(--frontRotate);z-index:2}.back{position:absolute;transform:var(--backRotate)}.is-flipped{.front{position:absolute}.back{position:relative}}}\\n\")","import { MouseEvent, MouseEventHandler, useCallback, useRef } from 'react';\n\nimport { useClassNames, useEventListener } from '../../../hooks';\n\nimport './hover-card.styles.css';\n\ntype HoverCardProps = {\n children: React.ReactNode;\n threshold?: number;\n translationZ?: number;\n width?: 'fit-content' | '100%';\n className?: string;\n};\n\nexport const HoverCard = ({\n children,\n threshold = 5,\n translationZ = 25,\n width = 'fit-content',\n className = '',\n}: HoverCardProps) => {\n const refCard = useRef<HTMLElement>(null);\n const refLayer = useRef<HTMLElement>(null);\n\n const mouseMoveCallback = useCallback(\n (e: MouseEvent) => {\n const card = refCard.current;\n const layer = refLayer.current;\n\n if (!card || !layer) return;\n\n const { clientX, clientY, currentTarget } = e;\n const { clientWidth, clientHeight } = currentTarget;\n const { top, left } = card.getBoundingClientRect();\n\n const horizontal = (clientX - left) / clientWidth;\n const vertical = (clientY - top) / clientHeight;\n\n const relativePercentageX = horizontal * 2 - 1;\n const relativePercentageY = vertical * 2 - 1;\n\n const rotateY = (relativePercentageY * threshold).toFixed(2);\n const rotateX = (relativePercentageX * threshold).toFixed(2);\n\n layer.style.transform = `perspective(${clientWidth}px) rotateX(${-rotateY}deg) rotateY(${rotateX}deg)`;\n card.style.transform = `perspective(${clientWidth}px) translateZ(${translationZ}px)`;\n },\n [threshold, translationZ],\n );\n\n const mouseLeaveCallback = useCallback<MouseEventHandler>(e => {\n const card = refCard.current;\n const layer = refLayer.current;\n\n if (!card || !layer) return;\n\n layer.style.transform = `perspective(${e.currentTarget.clientWidth}px) rotateX(0) rotateY(0)`;\n card.style.transform = `perspective(${e.currentTarget.clientWidth}px) translateZ(0)`;\n }, []);\n\n useEventListener('mousemove', mouseMoveCallback as unknown as EventListener, refCard);\n useEventListener('mouseleave', mouseLeaveCallback as unknown as EventListener, refCard);\n\n const cardClassName = useClassNames({\n 'hover-card': true,\n [className]: Boolean(className),\n });\n\n return (\n <span ref={refCard} style={{ width }} className={cardClassName}>\n <span className='card-hover-layer' ref={refLayer}>\n {children}\n </span>\n </span>\n );\n};\n","import styleInject from '#style-inject';styleInject(\".hover-card{display:inline-block;transition:all .3s ease;.card-hover-layer{transition:all .1s ease;width:100%;height:100%;display:grid}}\\n\")","import React, { createElement, useMemo } from 'react';\n\nimport { useClassNames } from '../../hooks';\n\nimport {\n TypographyColors,\n TypographyVariant,\n TypographyVariantsClassNames,\n TypographyVariantsElements,\n TypographyWeight,\n} from './typography.constants';\nimport './typography.styles.css';\n\nexport type TypographyProps = React.HTMLAttributes<HTMLElement | HTMLLabelElement> & {\n variant?: `${TypographyVariant}`;\n nowrap?: boolean | number;\n as?: React.HTMLElementType;\n weight?: `${TypographyWeight}`;\n children: React.ReactNode;\n noPadding?: boolean;\n htmlFor?: string;\n align?: React.CSSProperties['textAlign'];\n family?: 'primary' | 'code';\n recommendedWidth?: boolean;\n color?: `${TypographyColors}`;\n ref?: React.RefObject<HTMLElement>;\n style?: React.CSSProperties;\n};\n\nexport const Typography = ({\n variant = TypographyVariant.BODY,\n nowrap = false,\n className: customClassname = '',\n style = {},\n children,\n as,\n weight,\n family = 'primary',\n noPadding = false,\n align,\n color,\n htmlFor,\n recommendedWidth = false,\n ...props\n}: TypographyProps) => {\n const className = useClassNames({\n typography: true,\n [TypographyVariantsClassNames[variant]]: TypographyVariantsClassNames[variant] !== undefined,\n [customClassname]: !!customClassname,\n [weight ?? '']: !!weight,\n [color ?? '']: Boolean(color),\n 'no-padding': noPadding,\n 'code-family': family === 'code',\n 'recommended-width': recommendedWidth,\n 'nowrap-max-lines': typeof nowrap === 'number',\n 'nowrap-max-lines-2': nowrap === 2,\n 'nowrap-max-lines-3': nowrap === 3,\n 'nowrap-max-lines-4': nowrap === 4,\n 'nowrap-max-lines-5': nowrap === 5,\n nowrap: nowrap === true,\n });\n\n const component = useMemo<React.HTMLElementType>(\n () => TypographyVariantsElements[variant] ?? TypographyVariantsElements[TypographyVariant.BODY],\n [variant],\n );\n\n return createElement(\n as ?? component,\n {\n ...props,\n className,\n htmlFor,\n style: {\n textAlign: align,\n ...style,\n },\n },\n children,\n );\n};\n","import React from 'react';\n\nexport enum TypographyColors {\n PRIMARY = 'primary',\n SECONDARY = 'secondary',\n TERTIARY = 'tertiary',\n ACTIVE = 'active',\n WARNING = 'warning',\n ALERT = 'alert',\n INFO = 'info',\n}\n\nexport enum TypographyVariant {\n HERO = 'hero',\n HEADER1 = 'header1',\n HEADER2 = 'header2',\n HEADER3 = 'header3',\n HEADER4 = 'header4',\n BODY = 'body',\n LABEL = 'label',\n LABEL_FORM = 'label-form',\n SMALL = 'small',\n}\n\nexport const TypographyVariantsElements: Record<TypographyVariant, React.HTMLElementType> = {\n [TypographyVariant.HERO]: 'h1',\n [TypographyVariant.HEADER1]: 'h1',\n [TypographyVariant.HEADER2]: 'h2',\n [TypographyVariant.HEADER3]: 'h3',\n [TypographyVariant.HEADER4]: 'h4',\n [TypographyVariant.BODY]: 'p',\n [TypographyVariant.LABEL]: 'span',\n [TypographyVariant.LABEL_FORM]: 'label',\n [TypographyVariant.SMALL]: 'small',\n};\n\nexport const TypographyVariantsClassNames: Record<TypographyVariant, string> = {\n [TypographyVariant.HERO]: 'hero',\n [TypographyVariant.HEADER1]: 'header1',\n [TypographyVariant.HEADER2]: 'header2',\n [TypographyVariant.HEADER3]: 'header3',\n [TypographyVariant.HEADER4]: 'header4',\n [TypographyVariant.BODY]: 'body',\n [TypographyVariant.LABEL]: 'label',\n [TypographyVariant.LABEL_FORM]: 'label',\n [TypographyVariant.SMALL]: 'small',\n};\n\nexport enum TypographyWeight {\n LIGHT = 'light',\n REGULAR = 'regular',\n BOLD = 'bold',\n}\n","import styleInject from '#style-inject';styleInject(\".typography{margin:0;padding:.5em 0 .4em;&.primary{color:var(--primary-500)}&.secondary{color:var(--secondary-500)}&.tertiary{color:var(--tertiary-500)}&.active{color:var(--active-500)}&.alert{color:var(--alert-500)}&.warning{color:var(--warning-500)}&.info{color:var(--info-500)}&.recommended-width{max-width:70ch}&.code-family{font-family:monospace}&.no-padding{padding:0}&.nowrap{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}&.nowrap-max-lines{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical}&.nowrap-max-lines-2{-webkit-line-clamp:2;line-clamp:2}&.nowrap-max-lines-3{-webkit-line-clamp:3;line-clamp:3}&.nowrap-max-lines-4{-webkit-line-clamp:4;line-clamp:4}&.nowrap-max-lines-5{-webkit-line-clamp:5;line-clamp:5}&.hero{font-size:var(--typography-size-hero);line-height:var(--typography-line-height-header);font-weight:700}&.header1{font-size:var(--typography-size-header1);line-height:var(--typography-line-height-header);font-weight:700}&.header2{font-size:var(--typography-size-header2);line-height:var(--typography-line-height-header);font-weight:700}&.header3{font-size:var(--typography-size-header3);line-height:var(--typography-line-height-header);font-weight:700}&.header4{font-size:var(--typography-size-header4);line-height:var(--typography-line-height-header);font-weight:700}&.body{font-size:var(--typography-size-body);line-height:var(--typography-line-height-common);font-weight:400}&.label{font-size:var(--typography-size-label);line-height:var(--typography-line-height-common);font-weight:400}&.small{font-size:var(--typography-size-small);line-height:var(--typography-line-height-common);font-weight:400}&.bold{font-weight:700}&.regular{font-weight:400}&.light{font-weight:300}}\\n\")","import React, { useEffect, useRef } from 'react';\n\nimport './ripple.styles.css';\n\ninterface RippleProps {\n color?: string;\n duration?: number;\n timingFunction?: React.CSSProperties['animationTimingFunction'];\n times?: number;\n className?: string;\n style?: React.CSSProperties;\n zIndex?: React.CSSProperties['zIndex'];\n}\n\nexport const Ripple = ({\n color,\n duration = 1000,\n timingFunction = 'ease-out',\n times = 1,\n className = '',\n style = {},\n zIndex = 1,\n}: RippleProps) => {\n const ref = useRef<HTMLElement>(null);\n\n useEffect(() => {\n if (!ref.current?.parentElement) {\n return;\n }\n\n const computedPosition = getComputedStyle(ref.current.parentElement).position;\n\n if (!['absolute', 'fixed', 'sticky', 'relative'].includes(computedPosition)) {\n ref.current.parentElement.style.position = 'relative';\n }\n }, []);\n\n const handleClick = (e: React.MouseEvent<HTMLSpanElement>) => {\n const { pageX, pageY, currentTarget } = e;\n\n const rect = currentTarget.getBoundingClientRect();\n\n const x = ((pageX - rect.left) * 100) / rect.width;\n const y = ((pageY - rect.top) * 100) / rect.height;\n\n const ripple = document.createElement('span');\n ripple.classList.add('ripple-effect');\n ripple.style.animationDuration = `${duration}ms`;\n ripple.style.animationTimingFunction = timingFunction;\n ripple.style.left = `${x}%`;\n ripple.style.top = `${y}%`;\n\n if (color) {\n ripple.style.background = color;\n }\n\n currentTarget.appendChild(ripple);\n\n setTimeout(\n () => {\n ripple.remove();\n },\n Math.max(duration, 500) * Math.max(times, 1),\n );\n };\n\n return <span ref={ref} onMouseDown={handleClick} className={`ripple ${className}`} style={{ ...style, zIndex }} />;\n};\n","import styleInject from '#style-inject';styleInject(\".ripple{position:absolute;display:block;inset:0;overflow:hidden;border-radius:inherit;z-index:1;.ripple-effect{position:absolute;transform:translate(-50%,-50%);border-radius:50%;width:0;height:0;pointer-events:none;animation:ripple-effect infinite;opacity:.4}}@keyframes ripple-effect{to{width:300px;height:300px;opacity:0;filter:blur(5px)}}\\n\")","import styleInject from '#style-inject';styleInject(\".button{--button-blur: 2px;--color: var(--neutral-800);--solid-background: var(--neutral-900);--solid-text: var(--neutral-50);--solid-hover-background: var(--neutral-800);--solid-active-background: var(--neutral-900);--flat-background: hsl(from var(--neutral-100) h s l / 80%);--flat-hover-background: var(--neutral-50);--flat-active-background: var(--neutral-100);--outlined-hover-background: hsl(from var(--neutral-100) h s l / 20%);--outlined-active-background: hsl(from var(--neutral-100) h s l / 50%);--text-hover-background: hsl(from var(--neutral-100) h s l / 20%);--text-active-background: hsl(from var(--neutral-100) h s l / 50%);--shadow-color: hsl(from var(--neutral-800) h s l / 20%);--focus-background: hsl(from var(--neutral-100) h s l / 20%);display:flex;flex-direction:row;justify-content:center;align-items:center;padding:.625em 2.1875em;gap:.625em;width:auto;border-radius:.5em;font-weight:700;font-size:var(--typography-size-label);cursor:pointer;outline:none;transition:all .15s ease;user-select:none;&.icon{padding:.625em}&.full{width:100%}&.no-wrap{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}&.size-small{font-size:var(--typography-size-small)}&.size-regular{font-size:var(--typography-size-label)}&.size-large{font-size:var(--typography-size-body)}&.radius-none{border-radius:0}&.radius-small{border-radius:.25em}&.radius-medium{border-radius:.5em}&.radius-large{border-radius:1em}&.radius-full{border-radius:100rem}&:not(:disabled){&:hover,&:active,&:focus-visible{backdrop-filter:blur(var(--button-blur))}&:hover{transform:scale(1.01);box-shadow:0 1.4em .5em -1em hsl(from var(--black) h s l / 20%),0 .7em 1em -.5em hsl(from var(--black) h s l / 20%)}&:active{transform:scale(.98);box-shadow:0 .3em .4em -.2em hsl(from var(--black) h s l / 20%),0 .2em .8em -.1em hsl(from var(--black) h s l / 20%)}}color:var(--color);.ripple-effect{background:var(--color)}&.solid{background:var(--solid-background);color:var(--solid-text);backdrop-filter:blur(var(--button-blur));.ripple-effect{background:var(--solid-text)}&:focus-visible{box-shadow:0 0 0 .3125em var(--shadow-color);background:var(--solid-background)}&:hover{background:var(--solid-hover-background)}&:active{background:var(--solid-active-background)}}&.flat{background:var(--flat-background);backdrop-filter:blur(var(--button-blur));&:hover{background:var(--flat-hover-background)}&:active{background:var(--flat-active-background)}}&.outlined{background:transparent;border:1px solid;&:hover{background:var(--outlined-hover-background)}&:active{background:var(--outlined-active-background)}}&.text{background:transparent;&:hover{background:var(--text-hover-background)}&:active{background:var(--text-active-background)}}&:focus-visible{box-shadow:0 0 0 .3125em var(--shadow-color);background:var(--focus-background)}&.primary{--color: var(--primary-500);--solid-background: var(--primary-500);--solid-text: var(--primary-50);--solid-hover-background: var(--primary-400);--solid-active-background: var(--primary-600);--flat-background: hsl(from var(--primary-100) h s l / 80%);--flat-hover-background: var(--primary-50);--flat-active-background: var(--primary-100);--outlined-hover-background: hsl(from var(--primary-100) h s l / 20%);--outlined-active-background: hsl(from var(--primary-100) h s l / 50%);--text-hover-background: hsl(from var(--primary-100) h s l / 20%);--text-active-background: hsl(from var(--primary-100) h s l / 50%);--shadow-color: hsl(from var(--primary-500) h s l / 20%);--focus-background: hsl(from var(--primary-100) h s l / 20%)}&.secondary{--color: var(--secondary-500);--solid-background: var(--secondary-500);--solid-text: var(--secondary-50);--solid-hover-background: var(--secondary-400);--solid-active-background: var(--secondary-600);--flat-background: hsl(from var(--secondary-100) h s l / 80%);--flat-hover-background: var(--secondary-50);--flat-active-background: var(--secondary-100);--outlined-hover-background: hsl(from var(--secondary-100) h s l / 20%);--outlined-active-background: hsl(from var(--secondary-100) h s l / 50%);--text-hover-background: hsl(from var(--secondary-100) h s l / 20%);--text-active-background: hsl(from var(--secondary-100) h s l / 50%);--shadow-color: hsl(from var(--secondary-500) h s l / 20%);--focus-background: hsl(from var(--secondary-100) h s l / 20%)}&.tertiary{--color: var(--tertiary-500);--solid-background: var(--tertiary-500);--solid-text: var(--tertiary-50);--solid-hover-background: var(--tertiary-400);--solid-active-background: var(--tertiary-600);--flat-background: hsl(from var(--tertiary-100) h s l / 80%);--flat-hover-background: var(--tertiary-50);--flat-active-background: var(--tertiary-100);--outlined-hover-background: hsl(from var(--tertiary-100) h s l / 20%);--outlined-active-background: hsl(from var(--tertiary-100) h s l / 50%);--text-hover-background: hsl(from var(--tertiary-100) h s l / 20%);--text-active-background: hsl(from var(--tertiary-100) h s l / 50%);--shadow-color: hsl(from var(--tertiary-500) h s l / 20%);--focus-background: hsl(from var(--tertiary-100) h s l / 20%)}&.active{--color: var(--active-500);--solid-background: var(--active-500);--solid-text: var(--active-50);--solid-hover-background: var(--active-400);--solid-active-background: var(--active-600);--flat-background: hsl(from var(--active-100) h s l / 80%);--flat-hover-background: var(--active-50);--flat-active-background: var(--active-100);--outlined-hover-background: hsl(from var(--active-100) h s l / 20%);--outlined-active-background: hsl(from var(--active-100) h s l / 50%);--text-hover-background: hsl(from var(--active-100) h s l / 20%);--text-active-background: hsl(from var(--active-100) h s l / 50%);--shadow-color: hsl(from var(--active-500) h s l / 20%);--focus-background: hsl(from var(--active-100) h s l / 20%)}&.warning{--color: var(--warning-500);--solid-background: var(--warning-500);--solid-text: var(--warning-50);--solid-hover-background: var(--warning-400);--solid-active-background: var(--warning-600);--flat-background: hsl(from var(--warning-100) h s l / 80%);--flat-hover-background: var(--warning-50);--flat-active-background: var(--warning-100);--outlined-hover-background: hsl(from var(--warning-100) h s l / 20%);--outlined-active-background: hsl(from var(--warning-100) h s l / 50%);--text-hover-background: hsl(from var(--warning-100) h s l / 20%);--text-active-background: hsl(from var(--warning-100) h s l / 50%);--shadow-color: hsl(from var(--warning-500) h s l / 20%);--focus-background: hsl(from var(--warning-100) h s l / 20%)}&.alert{--color: var(--alert-500);--solid-background: var(--alert-500);--solid-text: var(--alert-50);--solid-hover-background: var(--alert-400);--solid-active-background: var(--alert-600);--flat-background: hsl(from var(--alert-100) h s l / 80%);--flat-hover-background: var(--alert-50);--flat-active-background: var(--alert-100);--outlined-hover-background: hsl(from var(--alert-100) h s l / 20%);--outlined-active-background: hsl(from var(--alert-100) h s l / 50%);--text-hover-background: hsl(from var(--alert-100) h s l / 20%);--text-active-background: hsl(from var(--alert-100) h s l / 50%);--shadow-color: hsl(from var(--alert-500) h s l / 20%);--focus-background: hsl(from var(--alert-100) h s l / 20%)}&.info{--color: var(--info-500);--solid-background: var(--info-500);--solid-text: var(--info-50);--solid-hover-background: var(--info-400);--solid-active-background: var(--info-600);--flat-background: hsl(from var(--info-100) h s l / 80%);--flat-hover-background: var(--info-50);--flat-active-background: var(--info-100);--outlined-hover-background: hsl(from var(--info-100) h s l / 20%);--outlined-active-background: hsl(from var(--info-100) h s l / 50%);--text-hover-background: hsl(from var(--info-100) h s l / 20%);--text-active-background: hsl(from var(--info-100) h s l / 50%);--shadow-color: hsl(from var(--info-500) h s l / 20%);--focus-background: hsl(from var(--info-100) h s l / 20%)}&:disabled{color:var(--neutral-200);pointer-events:none}&.solid:disabled{background:var(--neutral-200);color:var(--neutral-50)}&.flat:disabled{background:hsl(from var(--neutral-50) h s l / 80%)}&.outlined:disabled,&.text:disabled{background:transparent}}\\n\")","import type { ButtonHTMLAttributes } from 'react';\n\nimport { useClassNames } from '../../hooks';\nimport { ColorTypes, RadiusTypes, SizeTypes, VariantTypes } from '../component.types';\nimport { Ripple } from '../ripple';\n\nimport './button.styles.css';\n\nexport interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n children: React.ReactNode;\n color?: `${ColorTypes}`;\n variant?: `${VariantTypes}`;\n radius?: `${RadiusTypes}`;\n size?: `${SizeTypes}`;\n noWrap?: boolean;\n ref?: React.Ref<HTMLButtonElement>;\n forIcon?: boolean;\n isLoading?: boolean;\n}\n\nexport const Button = ({\n children,\n color = ColorTypes.DEFAULT,\n variant = VariantTypes.SOLID,\n radius = RadiusTypes.MEDIUM,\n size = SizeTypes.REGULAR,\n noWrap = false,\n forIcon = false,\n className = '',\n ...props\n}: ButtonProps) => {\n const classNames = useClassNames({\n button: true,\n [color]: Boolean(color),\n [variant]: Boolean(variant),\n [`radius-${radius}`]: Boolean(radius),\n [`size-${size}`]: Boolean(size),\n 'no-wrap': noWrap,\n icon: forIcon,\n [className]: Boolean(className),\n });\n\n return (\n <button {...props} className={classNames}>\n {children}\n <Ripple />\n </button>\n );\n};\n","import { useEffect, useState } from 'react';\n\nimport { useEventListener, useMousePosition } from '../../hooks';\n\nimport './cursor.styles.css';\n\nexport const Cursor = () => {\n const { x, y, elementX, elementY, ref } = useMousePosition();\n const [isCursorHover, setIsCursorHover] = useState(false);\n\n useEventListener('mouseover', e => {\n const computedCursor = getComputedStyle(e.target as HTMLElement).cursor;\n\n setIsCursorHover(computedCursor === 'pointer');\n });\n\n useEffect(() => {\n if (!('ontouchstart' in window || navigator.maxTouchPoints)) {\n document.body.style.cursor = 'none';\n }\n\n return () => {\n document.body.style.cursor = 'auto';\n };\n }, []);\n\n if (x === null || y === null || 'ontouchstart' in window || navigator.maxTouchPoints) {\n return null;\n }\n\n const translate3d = `translate3d(${elementX}px, ${elementY}px, 0)`;\n\n return (\n <section className='cursor-overlay' ref={ref}>\n <span\n className={`cursor outer-circle ${isCursorHover ? 'cursor-hover' : ''}`}\n style={{\n transform: translate3d,\n }}\n />\n <span\n className={`cursor inner-circle ${isCursorHover ? 'cursor-hover' : ''}`}\n style={{\n transform: translate3d,\n }}\n />\n </section>\n );\n};\n","import styleInject from '#style-inject';styleInject(\".cursor-overlay{position:fixed;top:0;left:0;width:100%;height:100%;cursor:none;pointer-events:none}.cursor{position:fixed;border-radius:50%;z-index:99999999;pointer-events:none;transform:translateZ(0);@media(any-pointer:coarse){display:none}&.outer-circle{margin-left:-15px;margin-top:-15px;width:30px;height:30px;border:2px solid var(--primary-500);box-sizing:border-box;z-index:99999999;opacity:.5;transition:all .08s ease-out,width .3s ease-in-out,height .3s ease-in-out,margin .3s ease-in-out,opacity .3s ease-in-out;&.cursor-hover{margin-left:-40px;margin-top:-40px;width:80px;height:80px;background-color:var(--primary-500);opacity:.3}&.cursor-text{margin-left:-2px;margin-top:-40px;width:4px;height:80px;background-color:var(--primary-500);opacity:.3}}&.inner-circle{margin-left:-3px;margin-top:-3px;width:6px;height:6px;z-index:99999999;background-color:var(--primary-500);transition:opacity .3s ease-in-out;opacity:1;&.cursor-hover{opacity:0}}}\\n\")","import { useMemo } from 'react';\nimport { IconType } from 'react-icons';\nimport { IoCheckmarkOutline } from 'react-icons/io5';\n\nimport { useClassNames, useInputHandlers } from '../../../hooks';\nimport { ColorTypes, SizeTypes } from '../../component.types';\nimport { Typography } from '../../typography';\nimport { Controller } from '../controller';\nimport { ControllerGeneratorProps, UnControlledComponentProps } from '../form.types';\n\nimport './checkbox.styles.css';\n\ntype CheckboxProps = {\n label?: React.ReactNode;\n placeholder?: never;\n icon?: IconType;\n color?: `${ColorTypes}`;\n size?: `${SizeTypes}`;\n};\n\nexport const Checkbox = ({\n name,\n value,\n setValue,\n onBlur,\n onFocus,\n className = '',\n style = {},\n autoFocus = false,\n readOnly = false,\n disabled = false,\n autoComplete = 'off',\n icon: Icon = IoCheckmarkOutline,\n label,\n color = ColorTypes.PRIMARY,\n size = SizeTypes.REGULAR,\n /*\n * isDirty = false,\n * isTouched = false,\n * invalid = false,\n * error,\n */\n}: UnControlledComponentProps<CheckboxProps, boolean>) => {\n const id = useMemo(() => crypto.randomUUID(), []);\n\n const { handlers } = useInputHandlers<HTMLInputElement>({\n onChange: e => setValue(e.target.checked),\n onBlur: onBlur,\n onFocus: onFocus,\n });\n\n const checkboxContainerClassName = useClassNames({\n 'checkbox-container': true,\n [className]: Boolean(className),\n [`color-${color}`]: Boolean(color),\n });\n\n const checkboxClassName = useClassNames({\n checkbox: true,\n 'is-checked': value,\n [`size-${size}`]: Boolean(size),\n });\n\n return (\n <section className={checkboxContainerClassName} style={style} onClick={e => e.stopPropagation()}>\n <section className={checkboxClassName}>\n <section className='checkbox-fill'>\n <Icon size='1.3em' className='checkbox-icon' />\n </section>\n <input\n id={id}\n type='checkbox'\n name={name}\n className='checkbox-input'\n checked={value}\n autoFocus={autoFocus}\n autoComplete={autoComplete}\n disabled={disabled || readOnly}\n {...handlers}\n />\n </section>\n {label ? (\n <Typography variant='label-form' htmlFor={id} className='checkbox-label'>\n {label}\n </Typography>\n ) : null}\n </section>\n );\n};\n\nconst CheckboxController = ({ rules, ...props }: ControllerGeneratorProps<CheckboxProps, boolean>) => {\n return <Controller Component={Checkbox} defaultValue={false} inputProps={props} rules={rules} />;\n};\n\nCheckbox.Controller = CheckboxController;\n","import React from 'react';\nimport { Controller as RHFController, useFormContext, UseControllerProps } from 'react-hook-form';\n\nimport { ControlledComponentProps, Props, UnControlledComponentProps } from '../form.types';\n\ntype ControllerProps<T extends Props, V> = {\n inputProps: ControlledComponentProps<T, V>;\n Component: React.FC<UnControlledComponentProps<T, V>>;\n rules?: UseControllerProps['rules'];\n defaultValue: V;\n};\n\nexport const Controller = <T extends Props, V>({\n Component,\n inputProps,\n defaultValue: fieldDefaultValue,\n rules,\n}: ControllerProps<T, V>) => {\n const { control, setValue } = useFormContext();\n const { name, defaultValue } = inputProps;\n\n return (\n <RHFController\n name={name}\n control={control}\n rules={rules}\n defaultValue={defaultValue ?? fieldDefaultValue}\n render={({ field: { onBlur, value }, fieldState }) => (\n <Component\n value={value}\n error={fieldState.error?.message}\n invalid={fieldState.invalid}\n isTouched={fieldState.isTouched}\n isDirty={fieldState.isDirty}\n setValue={value => setValue(name, value)}\n onBlur={onBlur}\n {...inputProps}\n />\n )}\n />\n );\n};\n","import styleInject from '#style-inject';styleInject(\".checkbox{border-radius:40%;background:var(--background-paper);transition:all .3s ease;width:1em;height:1em;margin:2px;outline:1px solid;display:flex;position:relative;.checkbox-input{position:absolute;top:0;left:0;width:100%;height:100%;cursor:pointer;opacity:0;z-index:2}&.size-small{font-size:1em}&.size-regular{font-size:1.2em}&.size-large{font-size:1.4em}}.checkbox-fill{transition:all .2s ease-out;border-radius:inherit;margin:auto;width:0;height:0;overflow:hidden;position:relative;display:grid;place-content:center;place-items:center;.checkbox-icon{font-size:.7em;z-index:1;opacity:0;transition:opacity .3s ease}}.checkbox-container{--color: var(--neutral-800);--color-icon: var(--neutral-50);--color-hover: hsl(from var(--neutral-800) h s l / 50%);display:grid;grid-auto-flow:column;grid-auto-columns:auto 1fr;align-items:center;gap:.5em;width:fit-content;.checkbox-label{cursor:pointer;user-select:none;width:100%}.checkbox{color:var(--color);&.is-checked{.checkbox-fill{width:100%;height:100%;background:var(--color);color:var(--color-icon)}.checkbox-icon{opacity:1}}}.checkbox:hover,&:has(.checkbox-label:hover) .checkbox{box-shadow:0 0 0 .3em var(--color-hover);.checkbox-fill{width:20%;height:20%;border-radius:20%;background:var(--color-hover);color:var(--color-icon)}&:is(.is-checked){.checkbox-fill{width:100%;height:100%;border-radius:inherit;background:var(--color)}}}.checkbox:focus,&:has(.checkbox-input:focus) .checkbox,&:has(.checkbox-label:focus) .checkbox{box-shadow:0 0 0 .3em var(--color-hover)}&.color-primary{--color: var(--primary-500);--color-icon: var(--primary-50);--color-hover: hsl(from var(--primary-500) h s l / 50%)}&.color-secondary{--color: var(--secondary-500);--color-icon: var(--secondary-50);--color-hover: hsl(from var(--secondary-500) h s l / 50%)}&.color-tertiary{--color: var(--tertiary-500);--color-icon: var(--tertiary-50);--color-hover: hsl(from var(--tertiary-500) h s l / 50%)}&.color-active{--color: var(--active-500);--color-icon: var(--active-50);--color-hover: hsl(from var(--active-500) h s l / 50%)}&.color-warning{--color: var(--warning-500);--color-icon: var(--warning-50);--color-hover: hsl(from var(--warning-500) h s l / 50%)}&.color-alert{--color: var(--alert-500);--color-icon: var(--alert-50);--color-hover: hsl(from var(--alert-500) h s l / 50%)}&.color-info{--color: var(--info-500);--color-icon: var(--info-50);--color-hover: hsl(from var(--info-500) h s l / 50%)}}\\n\")","import { useMemo } from 'react';\n\nimport { useInputHandlers } from '../../../hooks';\nimport { Controller } from '../controller';\nimport { Field, InputFieldProps } from '../field';\nimport { ControllerGeneratorProps, UnControlledComponentProps } from '../form.types';\n\ntype DatePickerProps = InputFieldProps<{\n type?: 'date' | 'datetime-local' | 'month' | 'time' | 'week';\n}>;\n\nexport const DatePicker = ({\n name,\n value,\n setValue,\n onBlur,\n onFocus,\n type = 'date',\n className = '',\n style = {},\n autoFocus = false,\n readOnly = false,\n disabled = false,\n placeholder = '',\n autoComplete = 'off',\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n isDirty = false,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n isTouched = false,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n invalid = false,\n error,\n ...fieldProps\n}: UnControlledComponentProps<DatePickerProps, string>) => {\n const id = useMemo(() => crypto.randomUUID(), []);\n const { isFocus, handlers } = useInputHandlers({\n onBlur: onBlur,\n onChange: e => setValue(e.target.value),\n onFocus: onFocus,\n });\n\n return (\n <Field id={id} error={error} isFocus={isFocus} {...fieldProps}>\n <input\n id={id}\n type={type}\n name={name}\n className={className}\n style={style}\n value={value}\n autoFocus={autoFocus}\n autoComplete={autoComplete}\n placeholder={placeholder}\n disabled={disabled}\n readOnly={readOnly}\n {...handlers}\n />\n </Field>\n );\n};\n\nconst DatePickerController = ({ rules, ...props }: ControllerGeneratorProps<DatePickerProps, string>) => {\n return <Controller Component={DatePicker} defaultValue='' inputProps={props} rules={rules} />;\n};\n\nDatePicker.Controller = DatePickerController;\n","import React from 'react';\nimport { IconType } from 'react-icons';\nimport { ImCross } from 'react-icons/im';\n\nimport { useClassNames } from '../../../hooks';\nimport { Typography } from '../../typography';\n\nimport './field.styles.css';\nimport { FieldOrientation, FieldProps, FieldVariant } from './field.types';\n\ntype GetIconParams = {\n icon?: IconType;\n onClick: (e: React.MouseEvent) => void;\n className: string;\n};\n\nconst getIcon = ({ icon: Icon, className, onClick }: GetIconParams) =>\n Icon ? <Icon className={className} onClick={onClick} /> : <span />;\n\nexport const Field = ({\n id,\n label,\n leftIcon,\n rightIcon,\n errorIcon: ErrorIcon = ImCross,\n error,\n onClickLeftIcon,\n onClickRightIcon,\n fieldOrientation = FieldOrientation.VERTICAL,\n children,\n isFocus = false,\n variant,\n ref,\n}: FieldProps) => {\n const fieldClassName = useClassNames({\n 'form-field': true,\n focus: isFocus,\n error: !!error,\n 'variant-content-border': variant === FieldVariant.CONTENT_BORDER,\n 'variant-content-line': variant === FieldVariant.CONTENT_LINE,\n 'variant-full-border': variant === FieldVariant.FULL_BORDER,\n 'variant-inline': fieldOrientation === FieldOrientation.HORIZONTAL,\n });\n\n const handleClick = (callback?: () => void) => (e: React.MouseEvent) => {\n e.stopPropagation();\n const input = document.getElementById(id);\n input?.focus();\n input?.click();\n\n if (callback) callback();\n };\n\n return (\n <section className={fieldClassName} ref={ref}>\n {label ? (\n <Typography className='field-label' noPadding variant='label-form' htmlFor={id}>\n {label}\n </Typography>\n ) : null}\n <section className='field-content'>\n {getIcon({\n className: 'field-left-icon',\n icon: leftIcon,\n onClick: handleClick(onClickLeftIcon),\n })}\n <section className='field-children'>{children}</section>\n {getIcon({\n className: 'field-right-icon',\n icon: rightIcon,\n onClick: handleClick(onClickRightIcon),\n })}\n </section>\n {Boolean(error) && (\n <section className='field-message'>\n {ErrorIcon ? <ErrorIcon size={10} /> : <span />}\n <Typography noPadding variant='small'>\n {error}\n </Typography>\n </section>\n )}\n </section>\n );\n};\n","import styleInject from '#style-inject';styleInject(\".form-field{display:grid;grid-auto-columns:auto;gap:.5em;transition:all .2s ease;.field-content{display:grid;grid-template-columns:auto 1fr auto;align-items:center}.field-left-icon,.field-right-icon{font-size:1em}.field-left-icon{margin-right:1em}.field-right-icon{margin-left:1em}.field-message{display:grid;grid-auto-flow:column;gap:5px;align-items:center;justify-content:start}&.variant-content-border{.field-content{border:1px solid var(--border);border-radius:4px;padding:1em;background:var(--background)}}&.variant-content-line{.field-content{border-bottom:1px solid;padding:.5em 0}}&.variant-full-border{border:1px solid var(--border);border-radius:4px;padding:.5em 0;background:var(--background);.field-label,.field-content,.field-message{padding:0 1em}}&.variant-inline{grid-auto-flow:column;padding:.5em 0;align-items:center;.field-label{width:auto}}&.error{color:var(--alert-500);border-color:var(--alert-500)}&.focus{color:var(--info-500);border-color:var(--info-500)}&.error,&.focus{.field-left-icon,.field-right-icon,.field-children{color:var(--foreground);border-color:var(--foreground)}}.field-children>*{width:100%}}\\n\")","import React from 'react';\nimport { IconType } from 'react-icons';\n\nexport enum FieldVariant {\n FULL_BORDER = 'full-border',\n CONTENT_BORDER = 'content-border',\n CONTENT_LINE = 'line',\n}\n\nexport enum FieldOrientation {\n HORIZONTAL = 'horizontal',\n VERTICAL = 'vertical',\n}\n\ntype FieldSharedProps = {\n rightIcon?: IconType;\n leftIcon?: IconType;\n errorIcon?: IconType;\n onClickLeftIcon?: () => void;\n onClickRightIcon?: () => void;\n label?: string;\n variant?: `${FieldVariant}`;\n ref?: React.RefObject<HTMLElement | null>;\n};\n\nexport type FieldProps = FieldSharedProps & {\n children: React.ReactNode;\n id: string;\n error?: string;\n isFocus?: boolean;\n fieldOrientation?: `${FieldOrientation}`;\n};\n\nexport type InputFieldProps<T> = T & FieldSharedProps;\n","import { useMemo } from 'react';\n\nimport { useInputHandlers } from '../../../hooks';\nimport { Controller } from '../controller';\nimport { Field, InputFieldProps } from '../field';\nimport { ControllerGeneratorProps, UnControlledComponentProps } from '../form.types';\n\ntype IProps = InputFieldProps<{\n pattern?: string;\n type?: 'email' | 'search' | 'text' | 'url';\n min?: number;\n max?: number;\n}>;\n\nexport const Input = ({\n name,\n value,\n setValue,\n onBlur,\n onFocus,\n pattern,\n type = 'text',\n className = '',\n style = {},\n autoFocus = false,\n readOnly = false,\n disabled = false,\n placeholder = '',\n autoComplete = 'off',\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n isDirty = false,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n isTouched = false,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n invalid = false,\n error,\n min,\n max,\n ...fieldProps\n}: UnControlledComponentProps<IProps, string>) => {\n const id = useMemo(() => crypto.randomUUID(), []);\n const { handlers, isFocus } = useInputHandlers({\n onChange: e => setValue(e.target.value),\n onBlur: onBlur,\n onFocus: onFocus,\n });\n\n return (\n <Field id={id} error={error} isFocus={isFocus} {...fieldProps}>\n <input\n id={id}\n type={type}\n name={name}\n className={className}\n style={style}\n value={value}\n pattern={pattern}\n autoFocus={autoFocus}\n autoComplete={autoComplete}\n placeholder={placeholder}\n disabled={disabled}\n readOnly={readOnly}\n min={min}\n max={max}\n {...handlers}\n />\n </Field>\n );\n};\n\nconst InputController = ({ rules, ...props }: ControllerGeneratorProps<IProps, string>) => {\n return <Controller Component={Input} defaultValue='' inputProps={props} rules={rules} />;\n};\n\nInput.Controller = InputController;\n","import { useMemo } from 'react';\nimport { IconType } from 'react-icons';\nimport { FiEye, FiEyeOff } from 'react-icons/fi';\nimport { IoIosWarning } from 'react-icons/io';\n\nimport { useInputHandlers, useToggleValues } from '../../../hooks';\nimport { Controller } from '../controller';\nimport { Field, InputFieldProps } from '../field';\nimport { ControllerGeneratorProps, UnControlledComponentProps } from '../form.types';\n\ntype InputPasswordProps = InputFieldProps<{\n rightIcon?: never;\n}>;\n\nexport const InputPassword = ({\n name,\n value,\n setValue,\n onBlur,\n onFocus,\n className = '',\n style = {},\n autoFocus = false,\n readOnly = false,\n disabled = false,\n placeholder = '',\n autoComplete = 'off',\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n isDirty = false,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n isTouched = false,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n invalid = false,\n error,\n ...fieldProps\n}: UnControlledComponentProps<InputPasswordProps, string>) => {\n const id = useMemo(() => crypto.randomUUID(), []);\n const [type, toggle] = useToggleValues<'password' | 'text'>(['password', 'text']);\n const { isFocus, handlers } = useInputHandlers({\n onBlur: onBlur,\n onChange: e => setValue(e.target.value),\n onFocus: onFocus,\n });\n\n const icon = useMemo<IconType>(() => {\n if (type === 'password') return FiEye;\n\n if (type === 'text') return FiEyeOff;\n\n return IoIosWarning;\n }, [type]);\n\n return (\n <Field id={id} error={error} isFocus={isFocus} {...fieldProps} rightIcon={icon} onClickRightIcon={() => toggle()}>\n <input\n id={id}\n type={type}\n name={name}\n className={className}\n style={style}\n value={value}\n autoFocus={autoFocus}\n autoComplete={autoComplete}\n placeholder={placeholder}\n disabled={disabled}\n readOnly={readOnly}\n {...handlers}\n />\n </Field>\n );\n};\n\nconst InputPasswordController = ({ rules, ...props }: ControllerGeneratorProps<InputPasswordProps, string>) => {\n return <Controller Component={InputPassword} defaultValue='' inputProps={props} rules={rules} />;\n};\n\nInputPassword.Controller = InputPasswordController;\n","import Color from 'color';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { HexAlphaColorPicker, HexColorInput } from 'react-colorful';\nimport { FaEyeDropper } from 'react-icons/fa6';\nimport useEyeDropper from 'use-eye-dropper';\n\nimport { useClassNames, useInputHandlers } from '../../../hooks';\nimport { Modal } from '../../modals';\nimport { Controller } from '../controller';\nimport { Field, InputFieldProps } from '../field';\nimport { ControllerGeneratorProps, UnControlledComponentProps } from '../form.types';\n\nimport './input-color.styles.css';\n\ntype ColorProps = InputFieldProps<{\n showValueText?: boolean;\n}>;\n\nexport const InputColor = ({\n name,\n value,\n setValue,\n onBlur,\n onFocus,\n showValueText = false,\n className = '',\n style = {},\n autoFocus = false,\n readOnly = false,\n disabled = false,\n placeholder = '',\n autoComplete = 'off',\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n isDirty = false,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n isTouched = false,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n invalid = false,\n error,\n ...fieldProps\n}: UnControlledComponentProps<ColorProps, string>) => {\n const { open, isSupported } = useEyeDropper();\n const [inputValue, setInputValue] = useState<string>(value);\n const id = useMemo(() => crypto.randomUUID(), []);\n const containerRef = useRef<HTMLElement>(null);\n const [isOpen, setIsOpen] = useState(false);\n const { handlers, isFocus } = useInputHandlers({\n onChange: e => setInputValue(e.target.value),\n onBlur: e => {\n setInputColor();\n\n if (onBlur) onBlur(e as React.FocusEvent<HTMLInputElement>);\n },\n onFocus: e => {\n setInputColor();\n\n if (onFocus) onFocus(e as React.FocusEvent<HTMLInputElement>);\n },\n });\n\n const borderColor = useMemo(() => {\n const color = Color(value === '' ? '#000000' : value);\n\n if (color.isLight() || color.alpha() < 0.5) {\n return '#000000';\n }\n\n return '#FFFFFF';\n }, [value]);\n\n const openEyeDropper = async () => {\n const { sRGBHex } = await open();\n setValue(sRGBHex);\n };\n\n useEffect(() => {\n setInputValue(value);\n }, [value]);\n\n const setInputColor = useCallback(() => {\n if (inputValue.match(/^#(?:(?:[\\da-f]{3}){1,2}|(?:[\\da-f]{4}){1,2})$/i)) {\n setValue(inputValue);\n } else {\n setInputValue(value);\n }\n }, [inputValue, setValue, value]);\n\n const inputBoxClassName = useClassNames({\n 'input-color-box': true,\n [className]: Boolean(className),\n });\n\n return (\n <Field id={id} error={error} isFocus={isFocus} {...fieldProps}>\n <section\n className='input-color'\n onClick={e => {\n e.stopPropagation();\n setIsOpen(true);\n }}\n ref={containerRef}\n >\n <section\n className={inputBoxClassName}\n style={{\n borderColor,\n background: value,\n color: value,\n ...style,\n }}\n />\n {showValueText ? (\n <input\n id={id}\n name={name}\n value={inputValue}\n placeholder={placeholder}\n readOnly={readOnly}\n autoFocus={autoFocus}\n disabled={disabled}\n autoComplete={autoComplete}\n className='color-input'\n {...handlers}\n />\n ) : null}\n </section>\n\n <Modal\n id='input-color'\n isOpen={isOpen}\n onClose={() => setIsOpen(false)}\n position='bottom right'\n offset={5}\n backdrop='transparent'\n containerRef={containerRef}\n className='input-color-selector'\n >\n <HexAlphaColorPicker id={id} color={value} onChange={setValue} />\n <section className='color-input-container'>\n {isSupported() ? (\n <FaEyeDropper\n onClick={() => {\n void openEyeDropper();\n }}\n />\n ) : (\n <span />\n )}\n <HexColorInput\n className='color-input'\n id={id}\n name={name}\n color={value}\n placeholder='Type a color'\n prefixed\n alpha\n onChange={setValue}\n />\n <span />\n </section>\n </Modal>\n </Field>\n );\n};\n\nconst InputColorController = ({ rules, ...props }: ControllerGeneratorProps<ColorProps, string>) => {\n return <Controller Component={InputColor} defaultValue='#147EFB' inputProps={props} rules={rules} />;\n};\n\nInputColor.Controller = InputColorController;\n","import { createContext, useCallback, useContext, useRef, useState } from 'react';\nimport { IconType } from 'react-icons';\nimport { ImCross } from 'react-icons/im';\n\nimport { PositionContainer } from '../../../helpers';\nimport { useClassNames } from '../../../hooks';\nimport { Button, ButtonProps } from '../../button';\nimport { Typography } from '../../typography';\nimport { Modal, ModalProps } from '../modal';\n\nimport './action-modal.styles.css';\n\ntype ActionModalContextType = {\n onClose: () => void;\n isActionInProgress: boolean;\n setIsActionInProgress: (isActionInProgress: boolean) => void;\n};\n\nconst ActionModalContext = createContext<ActionModalContextType | null>(null);\n\nconst useActionModalContext = () => {\n const context = useContext(ActionModalContext);\n\n if (!context) {\n throw new Error('useActionModalContext must be used within a ActionModal');\n }\n\n return context;\n};\n\nexport type ActionModalProps = Omit<\n ModalProps,\n 'id' | 'animation' | 'closeAnimationClassName' | 'position' | 'rootStyle' | 'className' | 'style'\n> & {\n actionRequired?: boolean;\n icon?: IconType;\n noCloseButton?: boolean;\n lineOnTop?: boolean;\n backCard?: boolean;\n noPadding?: boolean;\n className?: string;\n style?: React.CSSProperties;\n};\n\nexport const ActionModal = ({\n children,\n isOpen,\n onClose,\n actionRequired,\n icon: Icon,\n noCloseButton,\n lineOnTop = false,\n backCard = false,\n noPadding = false,\n className = '',\n style = {},\n ...modalProps\n}: ActionModalProps) => {\n const [isActionInProgress, setIsActionInProgress] = useState(false);\n const ref = useRef<HTMLElement>(null);\n\n const remainAction = useCallback(() => {\n ref.current?.classList.add('shake-animation');\n setTimeout(() => {\n ref.current?.classList.remove('shake-animation');\n }, 500);\n }, []);\n\n const actionModalClassName = useClassNames({\n 'action-modal-content': true,\n 'back-card': backCard,\n 'line-on-top': lineOnTop,\n 'no-padding': noPadding,\n });\n\n return (\n <ActionModalContext.Provider value={{ onClose, isActionInProgress, setIsActionInProgress }}>\n <Modal\n className='action-modal'\n id='action-modal'\n animation='bounce'\n opacity={0.8}\n isOpen={isOpen}\n onClose={onClose}\n {...modalProps}\n backdropOnClick={actionRequired ? remainAction : onClose}\n position={PositionContainer.CENTER}\n >\n <section ref={ref} className='modal-content'>\n <section className={actionModalClassName}>\n {!noCloseButton && !actionRequired && (\n <section className='close-modal-button' onClick={() => onClose()}>\n <ImCross />\n </section>\n )}\n {Icon ? (\n <Typography variant='header4' className='action-modal-icon'>\n <Icon />\n </Typography>\n ) : null}\n <section className='action-modal-body'>\n <section className={`action-modal-content ${className}`} style={style}>\n {children}\n </section>\n </section>\n </section>\n </section>\n </Modal>\n </ActionModalContext.Provider>\n );\n};\n\ntype ActionButtonProps = Omit<ButtonProps, 'onClick'> & {\n onClick: (() => Promise<void>) | (() => void);\n};\n\nconst ActionButton = ({ onClick, children, isLoading: manualIsLoading, ...buttonProps }: ActionButtonProps) => {\n const { onClose, isActionInProgress, setIsActionInProgress } = useActionModalContext();\n const [isLoading, setIsLoading] = useState(false);\n\n const handleAction = useCallback(() => {\n setIsLoading(true);\n setIsActionInProgress(true);\n const result = onClick();\n\n if (result instanceof Promise) {\n result.then(() => {\n onClose();\n setIsLoading(false);\n setIsActionInProgress(false);\n });\n } else {\n onClose();\n setIsLoading(false);\n setIsActionInProgress(false);\n }\n }, [onClick, onClose, setIsActionInProgress]);\n\n if (!isLoading && isActionInProgress) {\n return null;\n }\n\n return (\n <Button {...buttonProps} onClick={handleAction} isLoading={manualIsLoading || isLoading}>\n {children}\n </Button>\n );\n};\n\nActionModal.ActionButton = ActionButton;\n","import React, { CSSProperties, useMemo, useRef } from 'react';\n\nimport {\n ModalState,\n useClassNames,\n useClickOutside,\n useModalInContainer,\n UseModalInContainerParams,\n useModalTransition,\n UseModalTransitionParams,\n} from '../../../hooks';\nimport { Portal } from '../portal';\n\nimport { Backdrop, BackdropProps } from './modal.backdrop';\nimport './modal.styles.css';\n\nexport type ModalProps = Omit<BackdropProps, 'modalState'> &\n UseModalTransitionParams &\n Omit<UseModalInContainerParams, 'modalRef'> & {\n id: string;\n children: React.ReactNode;\n onClose: () => void;\n className?: string;\n style?: React.CSSProperties;\n rootStyle?: CSSProperties;\n animation?: 'none' | 'fade-down' | 'bounce';\n closeAnimationClassName?: string;\n modalRef?: React.RefObject<HTMLElement | null>;\n closeOnClickOutside?: boolean;\n };\n\nexport const Modal = ({\n id,\n children,\n isOpen,\n onClose,\n className = '',\n style = {},\n rootStyle = {},\n animation = 'fade-down',\n closeAnimationClassName = 'modal-close',\n modalRef: modalRefProp,\n closeOnClickOutside = true,\n transitionDuration = 300,\n windowOffset = 10,\n offset = 20,\n position,\n containerRef,\n zIndex = 1000,\n ...backdropProps\n}: ModalProps) => {\n const uuid = useMemo(() => crypto.randomUUID(), []);\n const modalRef = useRef<HTMLElement>(null);\n const { modalState, isVisible } = useModalTransition({\n transitionDuration,\n isOpen,\n });\n\n useModalInContainer({\n modalRef: modalRefProp ?? modalRef,\n containerRef,\n offset,\n windowOffset,\n position,\n isOpen: isVisible,\n });\n\n useClickOutside<HTMLElement>(modalRefProp ?? modalRef, () => {\n if (isOpen && closeOnClickOutside) {\n onClose();\n }\n });\n\n const modalContentClassName = useClassNames({\n 'modal-content': true,\n [className]: Boolean(className),\n [`animation-${animation}`]: Boolean(animation) && animation !== 'none',\n [closeAnimationClassName]: modalState === ModalState.CLOSING || modalState === ModalState.CLOSED,\n });\n\n if (!isVisible) {\n return null;\n }\n\n return (\n <Portal id={`modal-${id}-${uuid}`}>\n <Backdrop {...backdropProps} modalState={modalState} zIndex={zIndex} />\n <section\n className='modal'\n ref={modalRefProp ?? modalRef}\n style={{\n maxWidth: `calc(100dvw - ${windowOffset * 2}px)`,\n maxHeight: `calc(100dvh - ${windowOffset * 2}px)`,\n ...rootStyle,\n zIndex: +zIndex + 1,\n }}\n >\n <section style={{ ...style, animationDuration: `${transitionDuration}ms` }} className={modalContentClassName}>\n {children}\n </section>\n </section>\n </Portal>\n );\n};\n","import { ReactNode } from 'react';\nimport { createPortal } from 'react-dom';\n\nimport { useDomContainer } from '../../../hooks';\n\ntype PortalProps = {\n id: string;\n children: ReactNode;\n};\n\nexport const Portal = ({ children, id }: PortalProps) => {\n const root = useDomContainer(id);\n\n if (root === null) {\n return null;\n }\n\n return createPortal(children, root);\n};\n","import React, { useMemo } from 'react';\n\nimport { ModalState, useClassNames } from '../../../hooks';\n\nexport enum ModalBackdrop {\n OPAQUE = 'opaque',\n TRANSPARENT = 'transparent',\n BLUR = 'blur',\n NONE = 'none',\n}\n\nexport type BackdropProps = {\n opacity?: number;\n backdrop?: `${ModalBackdrop}`;\n zIndex?: React.CSSProperties['zIndex'];\n backdropOnClick?: () => void;\n modalState?: ModalState;\n};\n\nexport const Backdrop = ({\n opacity = 0.6,\n backdrop = ModalBackdrop.BLUR,\n zIndex,\n backdropOnClick,\n modalState,\n}: BackdropProps) => {\n const backdropClassName = useClassNames({\n 'modal-backdrop': true,\n 'backdrop-close': modalState === ModalState.CLOSING || modalState === ModalState.CLOSED,\n });\n\n const backgroundStyles = useMemo(() => {\n const backdropStyles = {\n [ModalBackdrop.OPAQUE]: {\n background: `hsl(from var(--background-paper) h s l / ${opacity * 100}%)`,\n },\n [ModalBackdrop.TRANSPARENT]: {\n background: 'transparent',\n },\n [ModalBackdrop.BLUR]: {\n background: `hsl(from var(--background-paper) h s l / ${opacity * 100}%)`,\n backdropFilter: 'blur(5px)',\n },\n [ModalBackdrop.NONE]: {\n display: 'none',\n },\n };\n\n return backdropStyles[backdrop] ?? {};\n }, [backdrop, opacity]);\n\n if (backdrop === ModalBackdrop.NONE) {\n return null;\n }\n\n return (\n <section\n tabIndex={-1}\n onClick={backdropOnClick}\n className={backdropClassName}\n style={{\n zIndex,\n ...backgroundStyles,\n }}\n />\n );\n};\n","import styleInject from '#style-inject';styleInject(\".modal{position:fixed;z-index:1001;pointer-events:none}.modal-content{background:var(--background-paper);pointer-events:initial;&.animation-fade-down{animation:fadeInDown .2s ease;&.modal-close{animation:fadeOutUp .2s ease;transform:translateY(-10px);opacity:0}}&.animation-bounce{animation:bounceIn .5s ease;&.modal-close{animation:bounceOut .5s ease;transform:scale3d(.3,.3,.3);opacity:0}}}.modal-backdrop{position:fixed;width:100%;height:100%;top:0;left:0;z-index:1000;animation:backdropOpen .5s cubic-bezier(.215,.61,.355,1);&.backdrop-close{animation:backdropClose .5s cubic-bezier(.215,.61,.355,1);opacity:0;transform:translateY(-10px)}}@keyframes backdropOpen{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@keyframes backdropClose{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-10px)}}\\n\")","import styleInject from '#style-inject';styleInject(\".action-modal{background:transparent;.modal-content{&.shake-animation{animation:headShake .6s linear}}}.action-modal-content{position:relative;.action-modal-body{box-shadow:0 0 10px -5px;border-radius:10px;overflow:hidden;display:grid}.action-modal-content{background:var(--background);padding:3em 4em 2em;display:grid;gap:1em}&.no-padding .action-modal-content{padding:2em 0 0}&:has(.action-modal-icon) .action-modal-content{padding-top:4em}&.back-card{&:before{content:\\\"\\\";position:absolute;width:90%;height:100%;top:8px;left:50%;transform:translate(-50%);z-index:-1;background:var(--primary-500);border-radius:10px;display:block;transition:top .3s cubic-bezier(.81,-.52,.42,2.5)}}.action-modal-icon{position:absolute;top:0;left:50%;transform:translate(-50%,-50%);background:var(--primary-500);color:var(--primary-50);padding:0;border-radius:50%;width:2em;height:2em;display:grid;place-content:center;transition:box-shadow .3s cubic-bezier(.81,-.52,.42,2.5);z-index:1;box-shadow:0 0 hsl(from var(--primary-500) h s l / 53%),0 0 hsl(from var(--primary-500) h s l / 40%),0 0 hsl(from var(--primary-500) h s l / 27%),0 0 hsl(from var(--primary-500) h s l / 14%)}.close-modal-button{width:1em;height:1em;border-radius:50%;cursor:pointer;background:var(--background);position:absolute;top:10px;right:5px;font-size:var(--typography-size-label);opacity:0;transition:opacity .3s ease;z-index:1}&.line-on-top{.action-modal-content{border-top:5px solid var(--primary-500)}}&:hover{.action-modal-icon{box-shadow:0 0 0 7px hsl(from var(--primary-500) h s l / 53%),0 0 0 14px hsl(from var(--primary-500) h s l / 40%),0 0 0 21px hsl(from var(--primary-500) h s l / 27%),0 0 0 28px hsl(from var(--primary-500) h s l / 14%)}.close-modal-button{opacity:1}&:before{top:15px}}}\\n\")","import { CSSProperties, useMemo } from 'react';\nimport { ImCross } from 'react-icons/im';\n\nimport { PositionContainer } from '../../../helpers';\nimport { Modal, ModalProps } from '../modal';\n\nimport './aside-modal.styles.css';\n\ntype AsideModalProps = Omit<\n ModalProps,\n 'id' | 'animation' | 'closeAnimationClassName' | 'position' | 'rootStyle' | 'className' | 'style'\n> & {\n position?:\n | `${PositionContainer.TOP}`\n | `${PositionContainer.LEFT}`\n | `${PositionContainer.RIGHT}`\n | `${PositionContainer.BOTTOM}`;\n size?: number | `${number}px` | `${number}em`;\n className?: string;\n style?: React.CSSProperties;\n};\n\nexport const AsideModal = ({\n children,\n isOpen,\n onClose,\n position = PositionContainer.LEFT,\n size,\n className = '',\n ...modalProps\n}: AsideModalProps) => {\n const modalRootStyles = useMemo<CSSProperties>(() => {\n const computedSize = {\n [PositionContainer.TOP]: { height: size, width: '100%' },\n [PositionContainer.LEFT]: { height: '100%', width: size },\n [PositionContainer.RIGHT]: { height: '100%', width: size },\n [PositionContainer.BOTTOM]: { height: size, width: '100%' },\n };\n\n return computedSize[position];\n }, [position, size]);\n\n return (\n <Modal\n id='aside'\n isOpen={isOpen}\n onClose={onClose}\n opacity={0.6}\n windowOffset={0}\n animation='none'\n className={`aside-modal ${className} ${position}`}\n rootStyle={modalRootStyles}\n backdropOnClick={onClose}\n position={position}\n {...modalProps}\n >\n <span className='close-modal-button' onClick={onClose}>\n <ImCross />\n </span>\n <section className='aside-modal-content'>{children}</section>\n </Modal>\n );\n};\n","import styleInject from '#style-inject';styleInject(\".aside-modal{color:var(--foreground);overflow:auto;height:100%;.aside-modal-content{padding:2em}.close-modal-button{border-radius:50%;cursor:pointer;display:grid;place-content:center;background:var(--background);border:4px solid var(--primary-500);position:absolute;padding:.5em}&.left{border-right:4px solid var(--primary-500);animation:slideIn-left .3s ease;&.modal-close{animation:slideOut-left .3s ease;transform:translate(-100%)}.close-modal-button{top:2em;left:100%;transform:translate(calc(-50% + 2px))}}&.right{border-left:4px solid var(--primary-500);animation:slideIn-right .3s ease;&.modal-close{animation:slideOut-right .3s ease;transform:translate(100%)}.close-modal-button{top:2em;right:100%;transform:translate(calc(50% - 2px))}}&.top{border-bottom:4px solid var(--primary-500);animation:slideIn-top .3s ease;&.modal-close{animation:slideOut-top .3s ease;transform:translateY(-100%)}.close-modal-button{bottom:0;right:2em;transform:translateY(calc(50% - 2px))}}&.bottom{border-top:4px solid var(--primary-500);animation:slideIn-bottom .3s ease;&.modal-close{animation:slideOut-bottom .3s ease;transform:translateY(100%)}.close-modal-button{top:0;right:2em;transform:translateY(calc(-50% + 2px))}}}\\n\")","import styleInject from '#style-inject';styleInject(\".confirmation-modal{display:grid;max-width:450px;gap:1em;place-content:center;justify-items:center;text-align:center;.confirmation-modal-actions{display:grid;grid-auto-flow:column;justify-content:center;gap:1em}}\\n\")","import { Typography } from '../../typography';\nimport { ActionModal, ActionModalProps } from '../action-modal';\n\nimport './confirmation-modal.styles.css';\n\ntype ConfirmationModalProps = ActionModalProps & {\n title: string;\n onAccept: (() => Promise<void>) | (() => void);\n onReject?: (() => Promise<void>) | (() => void);\n acceptText: string;\n rejectText: string;\n isLoading?: boolean;\n};\n\nexport const ConfirmationModal = ({\n title,\n onAccept,\n onReject = () => null,\n acceptText,\n rejectText,\n children,\n isLoading,\n ...actionModalProps\n}: ConfirmationModalProps) => {\n return (\n <ActionModal {...actionModalProps} backCard>\n <section className='confirmation-modal'>\n <Typography variant='header4'>{title}</Typography>\n <section>{children}</section>\n <section className='confirmation-modal-actions'>\n {!isLoading && (\n <ActionModal.ActionButton variant='flat' onClick={onReject}>\n {rejectText}\n </ActionModal.ActionButton>\n )}\n <ActionModal.ActionButton isLoading={isLoading} onClick={onAccept}>\n {acceptText}\n </ActionModal.ActionButton>\n </section>\n </section>\n </ActionModal>\n );\n};\n","import React, { RefObject, useCallback, useMemo } from 'react';\nimport { IconType } from 'react-icons';\n\nimport { useClassNames } from '../../../hooks';\nimport { Checkbox } from '../../form';\nimport { Line } from '../../line';\nimport { Ripple } from '../../ripple';\nimport { Typography, TypographyProps } from '../../typography';\nimport { Modal, ModalProps } from '../modal';\n\nimport './menu.styles.css';\n\ntype MenuProps = ModalProps & {\n children: React.ReactNode;\n contentClassName?: string;\n contentStyle?: React.CSSProperties;\n menuContentRef?: RefObject<HTMLUListElement>;\n};\n\nexport const Menu = ({\n children,\n isOpen,\n onClose,\n id,\n menuContentRef,\n contentClassName = '',\n contentStyle = {},\n className = '',\n ...modalProps\n}: MenuProps) => {\n const modalClassName = useClassNames({\n 'menu-modal': true,\n [className]: Boolean(className),\n });\n\n return (\n <Modal className={modalClassName} {...modalProps} id={`menu-${id}`} isOpen={isOpen} onClose={onClose}>\n <ul className={`menu-content ${contentClassName}`} role='listbox' style={contentStyle} ref={menuContentRef}>\n {children}\n </ul>\n </Modal>\n );\n};\n\nexport type MenuOptionProps = Omit<React.HTMLAttributes<HTMLLIElement>, 'onClick'> & {\n id?: string;\n children?: React.ReactNode;\n label?: React.ReactNode;\n disabled?: boolean;\n selected?: boolean;\n className?: string;\n style?: React.CSSProperties;\n asCheckbox?: boolean;\n icon?: IconType;\n onClick?: (newValue: boolean) => void;\n};\n\nconst MenuOption = ({\n children,\n label = '',\n asCheckbox,\n icon: Icon,\n id,\n disabled = false,\n selected = false,\n className = '',\n style = {},\n onClick = () => null,\n ...liProps\n}: MenuOptionProps) => {\n const menuOptionClassName = useClassNames({\n 'menu-option': true,\n [className]: true,\n 'is-disabled': disabled,\n 'is-selected': selected,\n });\n\n const handleClick = useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation();\n\n if (!disabled) {\n onClick(!selected);\n }\n },\n [disabled, onClick, selected],\n );\n\n const menuOptionContent = useMemo(() => {\n if (children) {\n return children;\n }\n\n if (asCheckbox) {\n return (\n <Checkbox\n className='menu-checkbox'\n disabled={disabled}\n value={selected}\n setValue={n => onClick(n)}\n name='option'\n style={{ pointerEvents: 'none' }}\n size='small'\n label={\n <>\n {Icon !== undefined && <Icon className='option-icon' />}\n <Typography variant='label'>{label}</Typography>\n </>\n }\n />\n );\n }\n\n return (\n <>\n {Icon !== undefined && <Icon className='option-icon' />}\n {typeof label === 'string' ? <Typography variant='label'>{label}</Typography> : label}\n </>\n );\n }, [asCheckbox, children, disabled, Icon, label, onClick, selected]);\n\n return (\n <li\n {...liProps}\n id={id}\n role='option'\n tabIndex={-1}\n aria-selected={selected}\n aria-disabled={disabled}\n onClick={handleClick}\n className={menuOptionClassName}\n style={style}\n >\n <Ripple zIndex={10} />\n {menuOptionContent}\n </li>\n );\n};\n\nconst Divider = () => {\n return (\n <li>\n <Line className='divider' />\n </li>\n );\n};\n\nconst Label = ({ children, className = '', ...props }: Omit<TypographyProps, 'variant'>) => {\n return (\n <li tabIndex={-1} className='menu-label'>\n <Typography {...props} variant='small' className={`menu-group-label ${className}`}>\n {children}\n </Typography>\n </li>\n );\n};\n\ntype MenuGroupProps = Omit<React.HTMLAttributes<HTMLLIElement>, 'onClick'> & {\n children: React.ReactNode;\n label: React.ReactNode;\n className?: string;\n style?: React.CSSProperties;\n contentClassName?: string;\n contentStyle?: React.CSSProperties;\n};\n\nconst Group = ({\n children,\n label,\n className = '',\n style = {},\n contentClassName = '',\n contentStyle = {},\n ...props\n}: MenuGroupProps) => {\n const groupClassName = useClassNames({\n 'menu-group': true,\n [className]: Boolean(className),\n });\n\n return (\n <li tabIndex={-1} {...props} className={groupClassName} style={style}>\n {label && <Label>{label}</Label>}\n <ul className={`menu-group-content ${contentClassName}`} role='listbox' style={contentStyle}>\n {children}\n </ul>\n </li>\n );\n};\n\nMenu.Option = MenuOption;\nMenu.Divider = Divider;\nMenu.GroupLabel = Label;\nMenu.Group = Group;\n","import styleInject from '#style-inject';styleInject(\".menu-modal{border-radius:.5em;border:1px solid var(--border);background:var(--background);box-shadow:0 0 25px var(--background-paper);user-select:none;position:relative;overflow-y:auto;.menu-content{display:grid;gap:.2em;padding:0;margin:0;list-style:none;align-content:start;height:100%;position:relative;overflow-y:auto}.divider{margin:.4em 0;color:var(--border)}}.menu-label{background:var(--background);color:var(--foreground);font-weight:lighter;padding:.5em 1.2em;position:sticky;top:0;z-index:10;pointer-events:none}.menu-option{padding:.2em 1em;border-radius:.3em;transition:all .3s ease;cursor:pointer;display:flex;align-items:center;outline:0;margin:0 .2em;position:relative;.ripple-effect{background:hsl(from var(--foreground) h s l / 31%)}&:first-child{margin-top:5px}.option-icon{margin-right:.5em}.menu-checkbox{width:100%}&.is-disabled{opacity:.4;pointer-events:none;cursor:default}&:focus,&:hover{background:hsl(from var(--background-paper) h s l / 25%)}&.is-selected{background:var(--background-paper);&:focus,&:hover{background:hsl(from var(--background-paper) h s l / 75%)}}}.menu-group{position:relative;.menu-group-content{display:grid;gap:.2em;padding:0;margin:0;list-style:none;align-content:start;position:relative}}\\n\")","import styleInject from '#style-inject';styleInject(\".input-color{display:grid;grid-auto-flow:column;align-items:center;justify-content:start;gap:.5em;.input-color-value{margin-left:10px}.color-input{padding-right:1em;border-radius:inherit;width:100%;font-size:var(--typography-size-label);font-family:var(--typography-family-main) sans-serif}}.input-color-box{background:#fff;border-radius:5px;border:2px solid;width:25px;height:25px;position:relative;cursor:pointer;&:before{content:\\\"\\\";position:absolute;border-radius:inherit;top:0;left:0;width:100%;height:100%;background:repeating-conic-gradient(#ccc 0% 25%,#fff 0% 50%) 50% / 8px 8px;z-index:-1}}.input-color-selector{display:grid;gap:10px;background:var(--background);color:var(--foreground);padding:10px;border-radius:0 18px 18px;border:1px solid;box-shadow:0 5px 30px -5px var(--neutral-900);.react-colorful__pointer{width:1em;height:1em;border-radius:50%}.react-colorful__hue-pointer,.react-colorful__alpha-pointer{width:8px;height:100%;border-radius:4px;border-width:2px}.color-input-container{display:grid;grid-template-columns:16px 1fr 16px;align-items:center;gap:10px;border:1px solid;border-radius:8px;padding:.5em;width:100%;max-width:200px}.color-input{padding:0;border-radius:inherit;background:var(--background);color:var(--foreground);width:100%;font-size:var(--typography-size-label);font-family:var(--typography-family-main) sans-serif;letter-spacing:2px;text-align:center}}\\n\")","import { useCallback, useEffect, useMemo, useState } from 'react';\nimport { IconType } from 'react-icons';\nimport { FaMagnifyingGlass, FaRegTrashCan } from 'react-icons/fa6';\nimport { IoIosWarning } from 'react-icons/io';\nimport { PiFilePdfFill, PiFilePngFill } from 'react-icons/pi';\n\nimport { formatBytes } from '../../../helpers';\nimport { FileTypeEnum, useInputHandlers } from '../../../hooks';\nimport { Grid } from '../../../layouts';\nimport { Typography } from '../../typography';\nimport { Controller } from '../controller';\nimport { ControllerGeneratorProps, UnControlledComponentProps } from '../form.types';\n\nimport './input-file.styles.css';\n\ntype InputFileProps = {\n label?: string;\n accept?: string;\n multiple?: boolean;\n limitSize?: number;\n errorTimeout?: number;\n};\n\ntype InputFileValue = { [key: string]: File };\n\nexport const InputFile = ({\n name,\n value = {},\n setValue,\n onBlur,\n onFocus,\n className = '',\n style = {},\n autoFocus = false,\n readOnly = false,\n disabled = false,\n placeholder = 'Click to upload or drag and drop',\n autoComplete = 'off',\n accept,\n multiple = false,\n limitSize = 5000000,\n errorTimeout = 3000,\n label,\n /*\n * isDirty = false,\n * isTouched = false,\n * invalid = false,\n * error,\n */\n}: UnControlledComponentProps<InputFileProps, InputFileValue>) => {\n const [error, setError] = useState<string | null>(null);\n const id = useMemo(() => crypto.randomUUID(), []);\n const { handlers } = useInputHandlers<HTMLInputElement>({\n onBlur,\n onFocus,\n onChange: e => {\n const { files } = e.target;\n\n if (files) saveFiles(files);\n },\n });\n\n useEffect(() => {\n let intervalId: ReturnType<typeof setTimeout> | null = null;\n\n if (error !== null) {\n intervalId = setTimeout(() => {\n setError(null);\n }, errorTimeout);\n }\n\n return () => {\n if (intervalId !== null) {\n clearTimeout(intervalId);\n }\n };\n }, [error, errorTimeout]);\n\n const saveFiles = (files: FileList) => {\n const finalFiles = multiple ? { ...value } : {};\n\n const filesToCheck = multiple ? files.length : 1;\n\n for (let i = 0; i < filesToCheck; i++) {\n const file = files.item(i);\n\n if (!file) {\n continue;\n }\n\n if (file.size < limitSize) {\n finalFiles[file.name] = file;\n } else {\n setError(`File '${file.name}' size is larger than ${formatBytes(limitSize)}`);\n }\n }\n\n setValue(finalFiles);\n };\n\n const handleDrop = (e: React.DragEvent<HTMLInputElement>) => {\n e.preventDefault();\n e.stopPropagation();\n\n if (e.dataTransfer.files && e.dataTransfer.files.length) {\n saveFiles(e.dataTransfer.files);\n }\n };\n\n const getIconType = useCallback((type: FileTypeEnum): IconType => {\n const iconTypes: Record<FileTypeEnum, IconType> = {\n [FileTypeEnum.PNG]: PiFilePngFill,\n [FileTypeEnum.PDF]: PiFilePdfFill,\n };\n\n return iconTypes[type] ?? IoIosWarning;\n }, []);\n\n const deleteFile = (file: File) => {\n const prevValue = { ...value };\n delete prevValue[file.name];\n setValue(prevValue);\n };\n\n const deleteAll = () => {\n setValue({});\n };\n\n const totalSize = useMemo(() => Object.values(value).reduce((prev, { size }) => prev + size, 0), [value]);\n\n const renderFileToCard = (file: File, key: number) => {\n const Icon = getIconType(file.type as FileTypeEnum);\n\n return (\n <section className='input-file-card' key={key}>\n <section className='file-card--image'>\n <Icon />\n </section>\n <Grid>\n <Typography variant='label' noPadding nowrap>\n {file.name}\n </Typography>\n <Typography noPadding variant='small'>\n {formatBytes(file.size)}\n </Typography>\n </Grid>\n <section className='file-card--delete' onClick={() => deleteFile(file)}>\n <FaRegTrashCan />\n </section>\n </section>\n );\n };\n\n return (\n <section className='input-file-container'>\n {Boolean(label) && (\n <Typography variant='label-form' htmlFor={id} noPadding>\n {label}\n </Typography>\n )}\n <section className='input-file--box' onDrop={handleDrop}>\n <section className='input-file--box--icon'>\n <FaMagnifyingGlass />\n </section>\n <Grid>\n <Typography variant='label-form' htmlFor={id} noPadding weight='bold'>\n {placeholder}\n </Typography>\n <Typography variant='small' noPadding>\n Max size ({formatBytes(limitSize)})\n </Typography>\n </Grid>\n <input\n id={id}\n type='file'\n name={name}\n value=''\n placeholder={placeholder}\n readOnly={readOnly}\n autoFocus={autoFocus}\n disabled={disabled}\n autoComplete={autoComplete}\n className={className}\n style={style}\n accept={accept}\n multiple={multiple}\n title=''\n {...handlers}\n />\n </section>\n {error !== null && (\n <Typography variant='small' noPadding className='error'>\n {error}\n </Typography>\n )}\n {Object.keys(value).length > 0 && (\n <>\n {multiple && (\n <span className='total-info'>\n <Typography variant='small' noPadding>\n {Object.keys(value).length} files - {formatBytes(totalSize)}\n </Typography>\n <span className='total-info--delete' onClick={deleteAll}>\n <FaRegTrashCan />\n </span>\n </span>\n )}\n <section className='input-file--files'>\n <section className='input-file--files--content'>{Object.values(value).map(renderFileToCard)}</section>\n </section>\n </>\n )}\n </section>\n );\n};\n\nconst InputFileController = ({ rules, ...props }: ControllerGeneratorProps<InputFileProps, InputFileValue>) => {\n return <Controller Component={InputFile} defaultValue={{}} inputProps={props} rules={rules} />;\n};\n\nInputFile.Controller = InputFileController;\n","import React, { createElement } from 'react';\n\nimport './grid.styles.css';\n\ntype GridProps = React.HTMLAttributes<HTMLDivElement> & {\n tag?: React.HTMLElementType;\n children?: React.ReactNode;\n className?: string;\n style?: React.CSSProperties;\n flow?: React.CSSProperties['gridAutoFlow'];\n columnSize?: React.CSSProperties['gridAutoColumns'];\n rowSize?: React.CSSProperties['gridAutoRows'];\n column?: React.CSSProperties['gridColumn'];\n row?: React.CSSProperties['gridRow'];\n pc?: React.CSSProperties['placeContent'];\n pi?: React.CSSProperties['placeItems'];\n ps?: React.CSSProperties['placeSelf'];\n jc?: React.CSSProperties['justifyContent'];\n ji?: React.CSSProperties['justifyItems'];\n js?: React.CSSProperties['justifySelf'];\n ac?: React.CSSProperties['alignContent'];\n ai?: React.CSSProperties['alignItems'];\n as?: React.CSSProperties['alignSelf'];\n gtc?: React.CSSProperties['gridTemplateColumns'];\n gtr?: React.CSSProperties['gridTemplateRows'];\n gta?: React.CSSProperties['gridTemplateAreas'];\n gt?: React.CSSProperties['gridTemplate'];\n gap?: React.CSSProperties['gap'];\n ref?: React.Ref<HTMLElement>;\n};\n\nexport const Grid = ({\n tag = 'section',\n children,\n className,\n style,\n flow,\n columnSize,\n rowSize,\n column,\n row,\n pc,\n pi,\n ps,\n jc,\n ji,\n js,\n ac,\n ai,\n as,\n gtc,\n gtr,\n gta,\n gt,\n gap,\n ...props\n}: GridProps) => {\n return createElement(\n tag,\n {\n className,\n ...props,\n style: {\n ...style,\n ...(flow ? { gridAutoFlow: flow } : {}),\n ...(columnSize ? { gridAutoColumns: columnSize } : {}),\n ...(rowSize ? { gridAutoRows: rowSize } : {}),\n ...(column ? { gridColumn: column } : {}),\n ...(row ? { gridRow: row } : {}),\n ...(pc ? { placeContent: pc } : {}),\n ...(pi ? { placeItems: pi } : {}),\n ...(ps ? { placeSelf: ps } : {}),\n ...(jc ? { justifyContent: jc } : {}),\n ...(ji ? { justifyItems: ji } : {}),\n ...(js ? { justifySelf: js } : {}),\n ...(ac ? { alignContent: ac } : {}),\n ...(ai ? { alignItems: ai } : {}),\n ...(as ? { alignSelf: as } : {}),\n ...(gtc ? { gridTemplateColumns: gtc } : {}),\n ...(gtr ? { gridTemplateRows: gtr } : {}),\n ...(gta ? { gridTemplateAreas: gta } : {}),\n ...(gt ? { gridTemplate: gt } : {}),\n ...(gap ? { gap: gap } : {}),\n display: 'grid',\n },\n },\n children,\n );\n};\n","import styleInject from '#style-inject';styleInject(\".grida{display:grid}\\n\")","import styleInject from '#style-inject';styleInject(\".input-file-container{display:grid;gap:10px;.input-file--box{border:1px solid;border-radius:5px;position:relative;transition:all .3s ease;display:grid;grid-template-columns:32px 1fr;padding:10px;gap:10px;background:var(--secondary-500);color:var(--secondary-50);align-items:center;.input-file--box--icon{width:32px;height:32px;border-radius:5px;background:var(--primary-50);color:var(--primary-500);display:grid;place-content:center}input{position:absolute;top:0;left:0;width:100%;height:100%;cursor:copy;opacity:0}&:hover{background:var(--primary-50);color:var(--primary-500);.input-file--box--icon{background:var(--primary-500);color:var(--primary-50)}}}.input-file--files{max-height:280px;overflow-y:auto;border:1px solid;border-radius:5px;.input-file--files--content{display:grid}}.error{color:tomato}.total-info{font-size:1em;display:grid;grid-auto-flow:column;justify-content:end;align-items:center;gap:.5em;.total-info--delete{display:grid;place-content:center;height:100%;background:transparent;cursor:pointer;transition:all .3s ease;aspect-ratio:1 / 1;border-radius:50%;width:2em;font-size:.8em;&:hover{background:var(--primary-500);color:var(--primary-50)}}}}.input-file-card{display:grid;grid-template-columns:35px 1fr 35px;gap:1em;align-items:center;padding:10px;background:var(--background);&:not(:last-child){border-bottom:1px dashed}&:hover{.file-card--delete{color:var(--primary-500)}}.file-card--image{background:var(--primary-500);color:var(--primary-50);width:32px;height:32px;border-radius:5px;display:grid;place-content:center;border:1px solid}.file-card--data{display:grid;font-size:.7em;justify-content:start}.file-card--delete{border-radius:5px;display:grid;place-content:center;width:32px;height:32px;cursor:pointer;transition:all .3s ease;&:hover{background:var(--primary-500);color:var(--primary-50)}}}\\n\")","import { useEffect, useMemo, useState } from 'react';\n\nimport { useInputHandlers } from '../../../hooks';\nimport { Controller } from '../controller';\nimport { Field, InputFieldProps } from '../field';\nimport { ControllerGeneratorProps, UnControlledComponentProps } from '../form.types';\n\ntype FormatFunction = (value: number) => string;\n\nconst RegexDecimal = {\n comma: /(?!^-)[^0-9,]/g,\n dot: /(?!^-)[^0-9.]/g,\n} as const;\n\nconst getCleanedValue = (input: string, decimalSeparator = '.'): string => {\n const regex = decimalSeparator === '.' ? RegexDecimal.dot : RegexDecimal.comma;\n const cleaned = input.replace(regex, '').replace(',', '.');\n\n if (!cleaned) {\n return '';\n }\n\n return cleaned;\n};\n\nconst getFormattedValue = (value: number, format: FormatFunction) => {\n if (!value || Number.isNaN(value)) {\n return format(0);\n }\n\n return format(value);\n};\n\ntype FormatConfig = Intl.NumberFormatOptions & {\n locales: Intl.LocalesArgument;\n};\n\ntype IProps = InputFieldProps<{\n pattern?: string;\n min?: number;\n max?: number;\n format?: FormatConfig | FormatFunction;\n decimalSeparator?: string;\n}>;\n\nexport const InputNumber = ({\n name,\n value,\n setValue,\n onBlur,\n onFocus,\n pattern,\n className = '',\n style = {},\n autoFocus = false,\n readOnly = false,\n disabled = false,\n placeholder = '',\n autoComplete = 'off',\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n isDirty = false,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n isTouched = false,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n invalid = false,\n error,\n min,\n max,\n decimalSeparator,\n format = {\n locales: 'en-US',\n style: 'decimal',\n minimumFractionDigits: 0,\n maximumFractionDigits: 2,\n },\n ...fieldProps\n}: UnControlledComponentProps<IProps, number>) => {\n const id = useMemo(() => crypto.randomUUID(), []);\n const formatFunction = useMemo<FormatFunction>(() => {\n if (typeof format === 'function') return format;\n\n const { locales, ...formatConfig } = format;\n\n return Intl.NumberFormat(locales, formatConfig).format;\n }, [format]);\n const [formattedValue, setFormattedValue] = useState(getFormattedValue(value, formatFunction));\n\n const { handlers, isFocus } = useInputHandlers({\n onChange: e => {\n const cleaned = getCleanedValue(e.target.value, decimalSeparator);\n\n if (cleaned.endsWith('.')) {\n setFormattedValue(e.target.value);\n } else {\n setFormattedValue(getFormattedValue(Number(cleaned), formatFunction));\n setValue(Number(cleaned));\n }\n },\n onBlur: e => {\n const cleaned = getCleanedValue(e.target.value, decimalSeparator);\n setFormattedValue(getFormattedValue(Number(cleaned), formatFunction));\n setValue(Number(cleaned));\n\n if (onBlur) onBlur(e);\n },\n onFocus: onFocus,\n });\n\n useEffect(() => {\n const formatted = getFormattedValue(value, formatFunction);\n\n if (formattedValue !== formatted) {\n setFormattedValue(formatted);\n }\n }, [formatFunction, formattedValue, value]);\n\n return (\n <Field id={id} error={error} isFocus={isFocus} {...fieldProps}>\n <input\n id={id}\n type='text'\n name={name}\n className={className}\n style={style}\n value={formattedValue}\n pattern={pattern}\n autoFocus={autoFocus}\n autoComplete={autoComplete}\n placeholder={placeholder}\n disabled={disabled}\n readOnly={readOnly}\n min={min}\n max={max}\n {...handlers}\n />\n </Field>\n );\n};\n\nconst InputController = ({ rules, ...props }: ControllerGeneratorProps<IProps, number>) => {\n return <Controller Component={InputNumber} defaultValue={0} inputProps={props} rules={rules} />;\n};\n\nInputNumber.Controller = InputController;\n","import { useMemo } from 'react';\n\nimport { useClassNames, useInputHandlers } from '../../../hooks';\nimport { ColorTypes, SizeTypes } from '../../component.types';\nimport { Typography } from '../../typography';\nimport { Controller } from '../controller';\nimport { ControllerGeneratorProps, UnControlledComponentProps } from '../form.types';\n\nimport './radio.styles.css';\n\ntype RadioProps = {\n label?: string;\n radioValue: string;\n placeholder?: never;\n color?: `${ColorTypes}`;\n size?: `${SizeTypes}`;\n};\n\nexport const Radio = ({\n name,\n value,\n setValue,\n onBlur,\n onFocus,\n className = '',\n style = {},\n autoFocus = false,\n readOnly = false,\n disabled = false,\n autoComplete = 'off',\n radioValue,\n label,\n color = ColorTypes.PRIMARY,\n size = SizeTypes.REGULAR,\n /*\n * isDirty = false,\n * isTouched = false,\n * invalid = false,\n * error,\n */\n}: UnControlledComponentProps<RadioProps, string>) => {\n const id = useMemo(() => crypto.randomUUID(), []);\n const { handlers } = useInputHandlers({\n onChange: e => setValue(e.target.value),\n onBlur: onBlur,\n onFocus: onFocus,\n });\n\n const radioContainerClassName = useClassNames({\n 'radio-container': true,\n [className]: Boolean(className),\n [`color-${color}`]: Boolean(color),\n });\n\n const radioClassName = useClassNames({\n radio: true,\n 'is-checked': radioValue === value,\n [`size-${size}`]: Boolean(size),\n });\n\n return (\n <section className={radioContainerClassName} style={style}>\n <section className={radioClassName}>\n <section className='radio-fill' />\n <input\n id={id}\n type='radio'\n name={name}\n className={`radio-input ${className}`}\n style={style}\n value={radioValue}\n checked={radioValue === value}\n autoFocus={autoFocus}\n autoComplete={autoComplete}\n disabled={disabled || readOnly}\n {...handlers}\n />\n </section>\n {label ? (\n <Typography variant='label-form' htmlFor={id} className='radio-label'>\n {label}\n </Typography>\n ) : null}\n </section>\n );\n};\n\nconst RadioController = ({ rules, ...props }: ControllerGeneratorProps<RadioProps, string>) => {\n return <Controller Component={Radio} defaultValue='' inputProps={props} rules={rules} />;\n};\n\nRadio.Controller = RadioController;\n","import styleInject from '#style-inject';styleInject(\".radio{border-radius:50%;background:var(--background-paper);transition:all .3s ease;width:1em;height:1em;outline:2px solid;display:flex;position:relative;padding:2px;.radio-input{position:absolute;top:0;left:0;width:100%;height:100%;cursor:pointer;opacity:0;z-index:1}&.size-small{font-size:1em}&.size-regular{font-size:1.2em}&.size-large{font-size:1.4em}}.radio-fill{transition:all .2s ease-out;border-radius:inherit;margin:auto;width:0;height:0}.radio-container{--color: var(--neutral-800);display:flex;align-items:center;gap:1em;width:fit-content;.radio-label{cursor:pointer;user-select:none}.radio{color:var(--color);&.is-checked{.radio-fill{width:100%;height:100%;background:var(--color)}}}.radio:hover,&:has(.radio-label:hover) .radio{box-shadow:0 0 0 .4em hsl(from var(--color) h s l / 50%);.radio-fill{width:20%;height:20%;background:hsl(from var(--color) h s l / 50%)}&:is(.is-checked){.radio-fill{width:80%;height:80%;background:var(--color)}}}&.color-primary{--color: var(--primary-500)}&.color-secondary{--color: var(--secondary-500)}&.color-tertiary{--color: var(--tertiary-500)}&.color-active{--color: var(--active-500)}&.color-warning{--color: var(--warning-500)}&.color-alert{--color: var(--alert-500)}&.color-info{--color: var(--info-500)}}\\n\")","import React, { createContext, useCallback, useContext, useMemo, useRef, useState } from 'react';\nimport { ImCross } from 'react-icons/im';\nimport { PiCaretDown } from 'react-icons/pi';\n\nimport { useMediaQuery } from '../../../hooks';\nimport { InfinityScroll } from '../../infinity-scroll';\nimport { Menu } from '../../modals';\nimport { Typography } from '../../typography';\nimport { Controller } from '../controller';\nimport { Field } from '../field';\nimport { ControllerGeneratorProps } from '../form.types';\n\nimport { Option } from './option';\nimport { Options } from './options';\nimport './select.styles.css';\nimport {\n ControllerGeneratorSelectProps,\n MultiSelectProps,\n MultiValue,\n OptionComponentProps,\n SelectItem,\n SingleSelectProps,\n SingleValue,\n UnControlledSelectProps,\n SelectContextValue,\n ValueComponentProps,\n} from './select.types';\n\nconst SelectContext = createContext<SelectContextValue<unknown> | null>(null);\n\nexport const useSelectContext = <T extends SelectItem>(): SelectContextValue<T> => {\n const context = useContext(SelectContext as React.Context<SelectContextValue<T> | null>);\n\n if (!context) {\n throw new Error('useSelectContext must be used within a Select component');\n }\n\n return context;\n};\n\ntype OptionLabelProps = {\n children: React.ReactNode;\n};\n\nconst OptionLabel = ({ children }: OptionLabelProps) => {\n const labelComponent = useMemo(() => {\n if (typeof children === 'string') {\n return (\n <Typography noPadding variant='label' nowrap>\n {children}\n </Typography>\n );\n }\n\n return children;\n }, [children]);\n\n return <Menu.GroupLabel>{labelComponent}</Menu.GroupLabel>;\n};\n\nconst DefaultOption = <T extends SelectItem>({ value }: OptionComponentProps<T>) => {\n return (\n <Typography variant='label' nowrap>\n {typeof value === 'string' || typeof value === 'number' ? value : JSON.stringify(value)}\n </Typography>\n );\n};\n\nconst DefaultValue = <T extends SelectItem>({ value, multiselect }: ValueComponentProps<T>) => {\n if (multiselect) {\n return (\n <Typography noPadding nowrap variant='label'>\n {`${value.length} item${value.length === 1 ? '' : 's'} selected`}\n </Typography>\n );\n }\n\n if (value === null) {\n return null;\n }\n\n return (\n <Typography noPadding variant='label' nowrap>\n {typeof value === 'string' || typeof value === 'number' ? value : JSON.stringify(value)}\n </Typography>\n );\n};\n\nexport const Select = <T extends SelectItem>({\n // Select props\n options,\n isEqualComparator,\n searchQueryValue,\n searchQueryPlaceholder,\n onSearchQuery,\n loadMore = () => null,\n isLoading = false,\n hasNextPage = false,\n emptyMessage = 'No options to select',\n multiselect,\n optionComponent: OptionComponent = DefaultOption,\n valueComponent: ValueComponent = DefaultValue,\n maxOptions,\n children,\n // Shared props\n name,\n value,\n setValue,\n onBlur,\n onFocus,\n className = '',\n style = {},\n showClearOption = false,\n height,\n searchQueryStyle,\n searchQueryClassName,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n autoFocus = false,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n readOnly = false,\n disabled = false,\n placeholder = '',\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n autoComplete = 'off',\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n isDirty = false,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n isTouched = false,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n invalid = false,\n error,\n // Field props\n ...fieldProps\n}: UnControlledSelectProps<T>) => {\n const modalRef = useRef<HTMLElement>(null);\n const isMobile = useMediaQuery('(max-width: 480px)');\n const id = useMemo(() => crypto.randomUUID(), []);\n const containerRef = useRef<HTMLElement>(null);\n const [isOpen, setIsOpen] = useState(false);\n\n const openSelect = useCallback(\n (open: boolean) => {\n setIsOpen(open && !disabled);\n },\n [disabled],\n );\n\n const clearOption = useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation();\n\n if (multiselect) {\n setValue([]);\n } else {\n setValue(null);\n }\n },\n [multiselect, setValue],\n );\n\n const valueNonEmpty = useMemo(() => {\n if (multiselect) {\n return value.length > 0;\n } else {\n return Boolean(value);\n }\n }, [multiselect, value]);\n\n const renderedOptions = useMemo<React.ReactNode>(() => {\n if (!children)\n return options.map((value, key) => (\n <Select.Option value={value} key={key}>\n <OptionComponent value={value} />\n </Select.Option>\n ));\n\n return children;\n }, [OptionComponent, children, options]);\n\n return (\n <SelectContext.Provider\n value={\n {\n selectedValue: value,\n setValue,\n multiselect: multiselect ?? false,\n isEqualComparator,\n maxOptions: maxOptions ?? null,\n setIsOpen,\n } as SelectContextValue<unknown>\n }\n >\n <Field id={id} error={error} isFocus={isOpen} ref={containerRef} {...fieldProps}>\n <section\n id={name}\n style={style}\n onBlur={onBlur}\n className={`select ${disabled ? 'disabled' : ''} ${className}`}\n >\n <section\n id={id}\n className={`select-container ${valueNonEmpty && showClearOption ? 'three-columns' : ''}`}\n onClick={() => openSelect(true)}\n >\n <button\n type='button'\n className={`input-button ${(Array.isArray(value) ? value.length > 0 : value) ? '' : 'placeholder'}`}\n aria-haspopup='listbox'\n aria-expanded={isOpen}\n onFocus={e => {\n openSelect(true);\n\n if (onFocus) onFocus(e);\n }}\n >\n {valueNonEmpty ? (\n <ValueComponent {...(multiselect ? { value, multiselect } : { value: value })} />\n ) : (\n <Typography variant='label' noPadding nowrap>\n {placeholder}\n </Typography>\n )}\n </button>\n {valueNonEmpty && showClearOption && (\n <section className='icon-close' onClick={clearOption}>\n <ImCross />\n </section>\n )}\n <PiCaretDown className={`select-caret-icon ${isOpen && 'is-select-open'}`} />\n </section>\n <Menu\n id='form-select'\n isOpen={isOpen}\n onClose={() => openSelect(false)}\n backdrop={isMobile ? 'blur' : 'transparent'}\n opacity={isMobile ? 0.8 : 0.4}\n position={isMobile ? 'center' : 'bottom'}\n offset={5}\n modalRef={modalRef}\n windowOffset={10}\n transitionDuration={200}\n containerRef={isMobile ? undefined : containerRef}\n contentClassName='select-menu-content'\n className='select-options-menu'\n >\n <Options\n containerRef={containerRef}\n onSearchQuery={onSearchQuery}\n searchQueryValue={searchQueryValue}\n searchQueryPlaceholder={searchQueryPlaceholder}\n searchQueryClassName={searchQueryClassName}\n searchQueryStyle={searchQueryStyle}\n height={height}\n >\n <InfinityScroll\n isLoading={isLoading}\n hasNextPage={hasNextPage}\n loadMore={loadMore}\n emptyMessage={emptyMessage}\n >\n {renderedOptions}\n </InfinityScroll>\n </Options>\n </Menu>\n </section>\n </Field>\n </SelectContext.Provider>\n );\n};\n\nconst MultiSelectController = <T extends SelectItem>({\n rules,\n ...props\n}: ControllerGeneratorProps<MultiSelectProps<T>, MultiValue<T>>) => {\n return (\n <Controller<MultiSelectProps<T>, MultiValue<T>>\n Component={Select}\n defaultValue={[]}\n inputProps={{\n ...props,\n multiselect: true,\n }}\n rules={rules}\n />\n );\n};\n\nconst SingleSelectController = <T extends SelectItem>({\n rules,\n ...props\n}: ControllerGeneratorProps<SingleSelectProps<T>, SingleValue<T>>) => {\n return (\n <Controller<SingleSelectProps<T>, SingleValue<T>>\n Component={Select}\n defaultValue={null}\n inputProps={{\n ...props,\n multiselect: false,\n }}\n rules={rules}\n />\n );\n};\n\nconst SelectController = <T extends SelectItem>(props: ControllerGeneratorSelectProps<T>) => {\n const { multiselect } = props;\n\n if (multiselect) {\n return <MultiSelectController<T> {...props} multiselect={true} />;\n }\n\n return <SingleSelectController<T> {...props} multiselect={false} />;\n};\n\nSelect.Controller = SelectController;\nSelect.Option = Option;\nSelect.OptionLabel = OptionLabel;\n","import { useEffect } from 'react';\n\nimport { useDebounce, useInView } from '../../hooks';\n\nimport './infinity-scroll.styles.css';\n\ninterface InfinityScrollProps extends React.HTMLAttributes<HTMLDivElement> {\n isLoading: boolean;\n hasNextPage: boolean;\n loadMore: () => void;\n customLoadMoreElement?: (ref: React.RefObject<HTMLElement | null>) => React.ReactNode;\n emptyMessage?: string;\n children?: React.ReactNode;\n}\n\nexport const InfinityScroll = ({\n isLoading: isLoadingProp = false,\n hasNextPage = false,\n loadMore,\n customLoadMoreElement,\n emptyMessage,\n children,\n}: InfinityScrollProps) => {\n const { ref, inView } = useInView();\n const isLoading = useDebounce(isLoadingProp, 100);\n\n useEffect(() => {\n if (hasNextPage && inView && !isLoading) {\n loadMore();\n }\n }, [hasNextPage, isLoading, loadMore, inView]);\n\n const childrenExists = Array.isArray(children) ? children.length > 0 : Boolean(children);\n\n return (\n <>\n {children}\n <section className='infinity-scroll'>\n {Boolean(emptyMessage) && !childrenExists && !isLoading && <p className='empty-message'>{emptyMessage}</p>}\n {(hasNextPage || isLoading) &&\n (customLoadMoreElement ? (\n customLoadMoreElement(ref)\n ) : (\n <section ref={ref} className='loading'>\n {isLoading && <span className='loading--icon'>:D</span>}\n </section>\n ))}\n </section>\n </>\n );\n};\n","import styleInject from '#style-inject';styleInject(\".infinity-scroll{display:grid;place-content:start center;place-items:start center;.loading{width:100%;height:30px;display:grid;place-content:center;.loading--icon{animation:spin .5s linear infinite;font-size:20px}}.empty-message{font-size:.8em;text-align:center;color:#a6a6a6}}\\n\")","import React, { useCallback, useMemo } from 'react';\n\nimport { Menu } from '../../modals';\nimport { Typography } from '../../typography';\n\nimport { useSelectContext } from './select.component';\nimport { SelectItem } from './select.types';\n\ntype OptionProps<T extends SelectItem> = {\n children: React.ReactNode;\n value: T;\n};\n\nexport const Option = <T extends SelectItem>({ children, value }: OptionProps<T>) => {\n const { multiselect, isEqualComparator, maxOptions, selectedValue, setValue, setIsOpen } = useSelectContext<T>();\n\n const compareValuesIsEqual = useCallback(\n (a: T, b: T): boolean => {\n if (['number', 'string'].includes(typeof a)) {\n return a === b;\n }\n\n return !!isEqualComparator && isEqualComparator(a, b);\n },\n [isEqualComparator],\n );\n\n const toggleOption = useCallback(\n (isSelected: boolean) => {\n if (isSelected) {\n if (multiselect) {\n if (maxOptions && Array.isArray(selectedValue) && selectedValue.length >= maxOptions) {\n return;\n }\n\n setValue([...selectedValue, value]);\n } else {\n setValue(value);\n setIsOpen(false);\n }\n } else {\n if (multiselect) {\n setValue(selectedValue.filter(item => !compareValuesIsEqual(item, value)));\n } else {\n setValue(null);\n setIsOpen(false);\n }\n }\n },\n [multiselect, maxOptions, selectedValue, setValue, value, setIsOpen, compareValuesIsEqual],\n );\n\n const isSelected = useMemo(() => {\n if (selectedValue === '' || selectedValue === null) {\n return false;\n }\n\n if (!Array.isArray(selectedValue)) {\n return compareValuesIsEqual(value, selectedValue);\n }\n\n if (['number', 'string'].includes(typeof value)) {\n return selectedValue.includes(value);\n }\n\n return selectedValue.some(item => !!isEqualComparator && isEqualComparator(value, item));\n }, [compareValuesIsEqual, isEqualComparator, selectedValue, value]);\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (['Enter', ' '].includes(e.key)) {\n e.preventDefault();\n\n toggleOption(!(isSelected && multiselect));\n }\n },\n [toggleOption, isSelected, multiselect],\n );\n\n const optionLabel = useMemo(() => {\n if (typeof children === 'string') {\n return (\n <Typography data-value={value} variant='label' nowrap>\n {children}\n </Typography>\n );\n }\n\n return children;\n }, [children, value]);\n\n return (\n <Menu.Option\n label={optionLabel}\n onKeyDown={handleKeyDown}\n asCheckbox={multiselect}\n selected={isSelected}\n onClick={(selected: boolean) => toggleOption(multiselect ? selected : true)}\n />\n );\n};\n","import React, { RefObject, useCallback, useEffect, useRef, useState } from 'react';\n\nimport { useClassNames, useEventListener, useMediaQuery, useResizeObserver } from '../../../hooks';\n\nimport { OptionsProps } from './select.types';\n\ntype UseDynamicHeight = {\n height: number;\n minHeight: number;\n containerRef: RefObject<HTMLElement | null>;\n offset: number;\n windowOffset: number;\n};\n\nconst useDynamicHeight = ({\n height,\n minHeight: defaultMinHeight,\n containerRef,\n offset,\n windowOffset,\n}: UseDynamicHeight) => {\n const [h, setH] = useState<string | undefined>(undefined);\n\n const getMaxHeight = useCallback(() => {\n const containerBottom = containerRef.current?.getBoundingClientRect().bottom ?? 0;\n\n const heightBottom = window.innerHeight - containerBottom - windowOffset - offset - 5;\n const heightTop = window.innerHeight - windowOffset * 3;\n const heightCalculated = heightBottom < defaultMinHeight ? heightTop : heightBottom;\n const maxHeight = Math.min(heightCalculated, height);\n const minHeight = Math.max(maxHeight, defaultMinHeight);\n\n setH(`${Math.round(minHeight)}px`);\n }, [containerRef, windowOffset, offset, defaultMinHeight, height]);\n\n useEffect(() => {\n getMaxHeight();\n }, [getMaxHeight]);\n\n useResizeObserver(containerRef, getMaxHeight);\n useEventListener('resize', getMaxHeight);\n\n return { h };\n};\n\nexport const Options = ({\n children,\n searchQueryValue,\n searchQueryPlaceholder = 'Search option',\n searchQueryClassName = '',\n searchQueryStyle = {},\n onSearchQuery,\n containerRef,\n height = 300,\n}: OptionsProps) => {\n const optionsGroupContainerRef = useRef<HTMLDivElement>(null);\n const optionsGroupRef = useRef<HTMLUListElement>(null);\n const [internalSearchQuery, setInternalSearchQuery] = useState('');\n const searchInputRef = useRef<HTMLInputElement>(null);\n const isMobile = useMediaQuery('(max-width: 480px)');\n\n useEventListener('keydown', e => {\n if (['ArrowDown', 'ArrowUp'].includes(e.code)) {\n e.preventDefault();\n const focusedItem = document.activeElement;\n const isListItem = focusedItem?.tagName === 'LI';\n\n if (isListItem) {\n switch (e.code) {\n case 'ArrowDown':\n (focusedItem?.nextSibling as HTMLElement)?.focus();\n\n break;\n case 'ArrowUp':\n (focusedItem?.previousElementSibling as HTMLElement)?.focus();\n\n break;\n }\n }\n }\n });\n\n const handleSearchQuery = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const { value } = e.target;\n\n if (onSearchQuery) onSearchQuery(value);\n\n setInternalSearchQuery(value);\n },\n [onSearchQuery],\n );\n\n useEffect(() => {\n if (searchInputRef.current) {\n searchInputRef.current.focus();\n }\n }, []);\n\n const { h } = useDynamicHeight({\n height,\n minHeight: 150,\n containerRef,\n offset: 5,\n windowOffset: 10,\n });\n\n const [shouldUseAuto, setShouldUseAuto] = useState(false);\n\n const calculateHeight = useCallback(() => {\n const optionsContainerHeight =\n Math.round(optionsGroupContainerRef.current?.getBoundingClientRect().height ?? 0) + 2;\n const optionsHeight = Math.round(optionsGroupRef.current?.scrollHeight ?? 0);\n\n setShouldUseAuto(optionsContainerHeight >= optionsHeight);\n }, []);\n\n useEffect(calculateHeight, [calculateHeight]);\n useResizeObserver(optionsGroupContainerRef, calculateHeight);\n useResizeObserver(optionsGroupRef, calculateHeight);\n useEventListener('resize', calculateHeight);\n\n const selectOptionsHeader = useClassNames({\n 'select-options-header': true,\n [searchQueryClassName]: Boolean(searchQueryClassName),\n });\n\n return (\n <section\n className={`select-options ${onSearchQuery ? 'with-search-query' : ''}`}\n style={\n isMobile\n ? {\n maxHeight: window.innerHeight - 100,\n width: window.innerWidth - 100,\n }\n : {\n height: shouldUseAuto ? 'auto' : h,\n maxHeight: height,\n width: containerRef.current?.offsetWidth ?? 'auto',\n }\n }\n >\n {onSearchQuery && (\n <section className={selectOptionsHeader} style={searchQueryStyle}>\n <input\n name='query'\n className='input-search'\n value={searchQueryValue ?? internalSearchQuery}\n onChange={handleSearchQuery}\n placeholder={searchQueryPlaceholder}\n onClick={e => e.stopPropagation()}\n ref={searchInputRef}\n autoFocus\n />\n </section>\n )}\n <section className='select-options-list-container' ref={optionsGroupContainerRef}>\n <ul className='select-options-list' ref={optionsGroupRef}>\n {children}\n </ul>\n </section>\n </section>\n );\n};\n","import styleInject from '#style-inject';styleInject(\".select{cursor:pointer;.icon-close{display:grid;place-content:center;align-self:center;border-radius:100%;cursor:pointer;font-size:.6em;padding:.5em;&:hover{background:hsl(from var(--foreground) h s l / 33%)}}.select-container{display:grid;grid-template-columns:1fr auto;gap:.5em;align-items:center;grid-auto-rows:auto;position:relative;cursor:pointer;user-select:none;&.three-columns{grid-template-columns:1fr auto auto}}.input-button{appearance:none;-webkit-appearance:none;-moz-appearance:none;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;display:grid;min-width:0;width:100%;border:0;margin:0;border-radius:0;background:transparent;color:currentColor;text-align:left;-webkit-tap-highlight-color:transparent;padding:0;grid-template-columns:1fr auto;&.placeholder{color:#919191}}.select-caret-icon{transition:transform .2s ease;&.is-select-open{transform:rotate(180deg)}}}.select-options-menu{.select-menu-content{gap:0;display:block;height:auto;overflow:initial}}.select-options{gap:0;display:grid;grid-template-rows:1fr;height:100%;overflow:auto;&.with-search-query{grid-template-rows:auto 1fr}.select-options-list-container{height:100%;overflow:auto}.select-options-list{display:grid;gap:.2em;padding:0;margin:0;list-style:none;align-content:start}}.select-options-header{background:var(--background);padding:2px 5px;border-bottom:1px solid var(--border);.input-search{outline:none;padding:.8em 5px;font-size:var(--typography-size-label);width:100%}}\\n\")","import { useMemo } from 'react';\n\nimport { useClassNames, useInputHandlers } from '../../../hooks';\nimport { Controller } from '../controller';\nimport { Field, InputFieldProps } from '../field';\nimport { ControllerGeneratorProps, UnControlledComponentProps } from '../form.types';\n\nimport './slider.styles.css';\n\ntype SliderProps = InputFieldProps<{\n min?: number;\n max?: number;\n step?: number;\n onlySlider?: boolean;\n}>;\n\nexport const Slider = ({\n name,\n value,\n setValue,\n onBlur,\n onFocus,\n min,\n max,\n step,\n onlySlider = false,\n className = '',\n style = {},\n autoFocus = false,\n readOnly = false,\n disabled = false,\n placeholder = '',\n autoComplete = 'off',\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n isDirty = false,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n isTouched = false,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n invalid = false,\n error,\n ...fieldProps\n}: UnControlledComponentProps<SliderProps, number>) => {\n const id = useMemo(() => crypto.randomUUID(), []);\n const onBlurInput = (e: React.FocusEvent<HTMLInputElement>) => {\n if (onBlur) onBlur(e);\n\n const parsedValue = parseInt(`${value}`);\n\n if (min !== undefined && parsedValue < min) {\n setValue(min);\n }\n\n if (max !== undefined && parsedValue > max) {\n setValue(max);\n }\n\n setValue(parsedValue);\n };\n\n const { isFocus, handlers } = useInputHandlers({\n onBlur: onBlurInput,\n onChange: e => setValue(+e.target.value),\n onFocus: onFocus,\n });\n\n const inputSliderClassName = useClassNames({\n 'input-slider': true,\n 'is-focus': isFocus,\n });\n\n return (\n <Field id={id} error={error} isFocus={isFocus} {...fieldProps}>\n <section className={inputSliderClassName}>\n <input\n id={id}\n type='range'\n name={name}\n className={`slider ${className}`}\n style={style}\n value={value}\n autoFocus={autoFocus}\n autoComplete={autoComplete}\n placeholder={placeholder}\n disabled={disabled}\n readOnly={readOnly}\n min={min}\n max={max}\n step={step}\n {...handlers}\n />\n {!onlySlider && (\n <input\n id={id}\n type='number'\n name={name}\n className={`slider-number ${className}`}\n style={style}\n value={value}\n autoComplete={autoComplete}\n disabled={disabled}\n readOnly={readOnly}\n min={min}\n max={max}\n step={step}\n {...handlers}\n />\n )}\n </section>\n </Field>\n );\n};\n\nconst SliderController = ({ rules, ...props }: ControllerGeneratorProps<SliderProps, number>) => {\n return <Controller Component={Slider} defaultValue={0} inputProps={props} rules={rules} />;\n};\n\nSlider.Controller = SliderController;\n","import styleInject from '#style-inject';styleInject(\".input-slider{display:grid;grid-template-columns:1fr 50px;align-items:center;gap:10px;.slider{appearance:none;-webkit-appearance:none;-moz-appearance:none;display:grid;align-items:center;&:focus{outline:none}&::-webkit-slider-thumb{-webkit-appearance:none;width:20px;height:20px;border-radius:1em;background:var(--primary-500);box-shadow:0 0 0 0 var(--neutral-500);margin-top:-8px;transition:all .3s ease;cursor:pointer}&::-webkit-slider-runnable-track{height:4px;border-radius:1em;background:hsl(from var(--primary-200) h s l / 50%);transition:all .3s ease}&:focus,&:hover{&::-webkit-slider-thumb{background:var(--primary-500);box-shadow:0 0 0 6px hsl(from var(--primary-500) h s l / 50%);cursor:grab}}&:active{&::-webkit-slider-thumb{box-shadow:0 0 0 12px hsl(from var(--primary-500) h s l / 31%);cursor:grabbing}}&:focus{&::-webkit-slider-runnable-track{background:var(--primary-300)}}}&:has(.slider-number:focus) .slider::-webkit-slider-thumb,&:has(.slider-number:hover) .slider::-webkit-slider-thumb{background:var(--primary-500);box-shadow:0 0 0 6px hsl(from var(--primary-500) h s l / 31%)}.slider-number{transition:all .3s ease;border:1px solid;border-radius:5px;text-align:center;font-size:var(--typography-size-label);appearance:none;-webkit-appearance:none;-moz-appearance:none;width:100%;padding:4px 8px;font-weight:700;color:inherit;&::-webkit-outer-spin-button,&::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}}&.is-focus{.slider-number{color:var(--primary-500)}}}\\n\")","import React, { useMemo } from 'react';\n\nimport { useClassNames, useInputHandlers } from '../../../hooks';\nimport { Controller } from '../controller';\nimport { Field, InputFieldProps } from '../field';\nimport { ControllerGeneratorProps, UnControlledComponentProps } from '../form.types';\n\nimport './textarea.styles.css';\n\ntype TextareaProps = InputFieldProps<{\n rows?: number;\n resize?: React.CSSProperties['resize'];\n leftIcon?: never;\n rightIcon?: never;\n}>;\n\nexport const Textarea = ({\n name,\n value,\n setValue,\n onBlur,\n onFocus,\n rows = 4,\n resize = 'vertical',\n className = '',\n style = {},\n autoFocus = false,\n readOnly = false,\n disabled = false,\n placeholder = '',\n autoComplete = 'off',\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n isDirty = false,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n isTouched = false,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n invalid = false,\n error,\n ...fieldProps\n}: UnControlledComponentProps<TextareaProps, string>) => {\n const id = useMemo(() => crypto.randomUUID(), []);\n const { handlers, isFocus } = useInputHandlers<HTMLTextAreaElement>({\n onBlur: onBlur,\n onChange: e => setValue(e.target.value),\n onFocus: onFocus,\n });\n\n const textareaClassName = useClassNames({\n textarea: true,\n [className]: Boolean(className),\n });\n\n return (\n <Field id={id} error={error} isFocus={isFocus} {...fieldProps}>\n <textarea\n id={id}\n name={name}\n className={textareaClassName}\n style={{\n resize: resize,\n ...style,\n }}\n value={value}\n rows={rows}\n {...handlers}\n autoFocus={autoFocus}\n autoComplete={autoComplete}\n placeholder={placeholder}\n disabled={disabled}\n readOnly={readOnly}\n />\n </Field>\n );\n};\n\nconst TextareaController = ({ rules, ...props }: ControllerGeneratorProps<TextareaProps, string>) => {\n return <Controller Component={Textarea} defaultValue='' inputProps={props} rules={rules} />;\n};\n\nTextarea.Controller = TextareaController;\n","import styleInject from '#style-inject';styleInject(\".textarea{border:0;outline:0;field-sizing:content}\\n\")","import { useMemo } from 'react';\nimport { IconType } from 'react-icons';\n\nimport { useClassNames, useInputHandlers } from '../../../hooks';\nimport { ColorTypes, SizeTypes } from '../../component.types';\nimport { Tooltip } from '../../tooltips';\nimport { Typography } from '../../typography';\nimport { Controller } from '../controller';\nimport { ControllerGeneratorProps, UnControlledComponentProps } from '../form.types';\n\nimport './switch.styles.css';\n\nconst DotSizeMap = {\n [SizeTypes.SMALL]: 1,\n [SizeTypes.REGULAR]: 1.2,\n [SizeTypes.LARGE]: 1.4,\n};\n\nconst WidthMap = {\n [SizeTypes.SMALL]: 2,\n [SizeTypes.REGULAR]: 2.5,\n [SizeTypes.LARGE]: 3,\n};\n\ntype SwitchProps = {\n leftLabel?: string;\n rightLabel?: string;\n label?: string;\n dotHoverSize?: number;\n padding?: number;\n leftIcon?: IconType;\n rightIcon?: IconType;\n internalLeftIcon?: IconType;\n internalRightIcon?: IconType;\n leftIconTooltip?: string;\n rightIconTooltip?: string;\n color?: `${ColorTypes}`;\n size?: `${SizeTypes}`;\n width?: `${SizeTypes}`;\n};\n\nexport const Switch = ({\n name,\n value,\n setValue,\n onBlur,\n onFocus,\n className = '',\n style = {},\n autoFocus = false,\n readOnly = false,\n disabled = false,\n placeholder = '',\n autoComplete = 'off',\n label,\n leftLabel,\n rightLabel,\n width = SizeTypes.REGULAR,\n size = SizeTypes.REGULAR,\n dotHoverSize = 1.3,\n padding = 0.25,\n leftIcon: LeftIcon,\n rightIcon: RightIcon,\n internalLeftIcon: InternalLeftIcon,\n internalRightIcon: InternalRightIcon,\n leftIconTooltip,\n rightIconTooltip,\n color,\n /*\n * isDirty = false,\n * isTouched = false,\n * invalid = false,\n * error,\n */\n}: UnControlledComponentProps<SwitchProps, boolean>) => {\n const id = useMemo(() => crypto.randomUUID(), []);\n const { handlers } = useInputHandlers<HTMLInputElement>({\n onChange: e => setValue(e.target.checked),\n onBlur: onBlur,\n onFocus: onFocus,\n });\n\n const switchContainerClassName = useClassNames({\n 'switch-container': true,\n [className]: Boolean(className),\n [`color-${color}`]: Boolean(color),\n });\n\n const switchClassName = useClassNames({\n switch: true,\n 'is-checked': value,\n 'is-readonly': !disabled && readOnly,\n });\n\n const dotSize = DotSizeMap[size] ?? DotSizeMap[SizeTypes.REGULAR];\n const _width = (WidthMap[width] ?? WidthMap[SizeTypes.REGULAR]) * dotSize;\n const _padding = Math.min(padding, dotSize);\n\n return (\n <section\n className={switchContainerClassName}\n style={\n {\n ...style,\n '--width': `${_width}em`,\n '--dot-size': `${dotSize}em`,\n '--dot-hover-size': `${dotSize * Math.min(Math.max(dotHoverSize, 1), 2)}em`,\n '--padding': `${_padding}em`,\n } as React.CSSProperties\n }\n >\n {leftLabel ? (\n <Typography variant='label-form' className='switch-label' htmlFor={id}>\n {leftLabel}\n </Typography>\n ) : null}\n {LeftIcon !== undefined && (\n <Tooltip content={leftIconTooltip} disabled={!leftIconTooltip} offset={10}>\n <LeftIcon size={`${dotSize * 0.7}em`} className='switch-icon' onClick={() => setValue(!value)} />\n </Tooltip>\n )}\n <section className={switchClassName}>\n {InternalLeftIcon !== undefined && (\n <span className='switch-internal-left-icon'>\n <InternalLeftIcon size={`${dotSize * 0.7}em`} />\n </span>\n )}\n {InternalRightIcon !== undefined && (\n <span className='switch-internal-right-icon'>\n <InternalRightIcon size={`${dotSize * 0.7}em`} />\n </span>\n )}\n <span className='switch-dot' />\n <input\n id={id}\n type='checkbox'\n name={name}\n className={`switch-checkbox ${className}`}\n style={style}\n checked={value}\n autoFocus={autoFocus}\n autoComplete={autoComplete}\n placeholder={placeholder}\n disabled={disabled || readOnly}\n {...handlers}\n />\n </section>\n {RightIcon !== undefined && (\n <Tooltip content={rightIconTooltip} disabled={!rightIconTooltip} offset={10}>\n <RightIcon size={`${dotSize * 0.7}em`} className='switch-icon' onClick={() => setValue(!value)} />\n </Tooltip>\n )}\n {label || rightLabel ? (\n <Typography variant='label-form' className='switch-label' htmlFor={id}>\n {label || rightLabel}\n </Typography>\n ) : null}\n </section>\n );\n};\n\nconst SwitchController = ({ rules, ...props }: ControllerGeneratorProps<SwitchProps, boolean>) => {\n return <Controller Component={Switch} defaultValue={false} inputProps={props} rules={rules} />;\n};\n\nSwitch.Controller = SwitchController;\n","import { useState } from 'react';\n\nimport { Tooltip, TooltipProps } from '../tooltip';\n\ntype ClickToCopyProps = {\n children?: React.ReactNode;\n position?: TooltipProps['position'];\n offset?: TooltipProps['offset'];\n value: string;\n tooltipText: string;\n tooltipCopiedText?: string;\n copiedTextTimeout?: number;\n};\n\nexport const ClickToCopy = ({\n children,\n value,\n position,\n offset,\n tooltipText,\n tooltipCopiedText,\n copiedTextTimeout = 500,\n}: ClickToCopyProps) => {\n const [justCopied, setJustCopied] = useState(false);\n\n const handleCopy = () => {\n setJustCopied(true);\n navigator.clipboard.writeText(value);\n setTimeout(() => setJustCopied(false), copiedTextTimeout);\n };\n\n return (\n <Tooltip\n content={justCopied && tooltipCopiedText ? tooltipCopiedText : tooltipText}\n position={position}\n offset={offset}\n >\n <span onClick={handleCopy}>{children}</span>\n </Tooltip>\n );\n};\n","import React, { cloneElement } from 'react';\n\nimport { PositionContainer } from '../../../helpers';\nimport { useClassNames, useEventListener, useModal } from '../../../hooks';\nimport { Modal } from '../../modals';\n\nimport './tooltip.styles.css';\n\nexport type TooltipProps = {\n position?:\n | `${PositionContainer.TOP}`\n | `${PositionContainer.LEFT}`\n | `${PositionContainer.RIGHT}`\n | `${PositionContainer.BOTTOM}`;\n offset?: number | `${number}`;\n disabled?: boolean;\n children: React.ReactElement<{\n ref: React.RefObject<HTMLElement | null>;\n }>;\n content: React.ReactNode;\n};\n\nexport const Tooltip = ({\n position = PositionContainer.TOP,\n children,\n content,\n offset = 5,\n disabled = false,\n}: TooltipProps) => {\n const { containerRef, openModal, closeModal, isOpen } = useModal();\n\n const classNames = useClassNames({\n tooltip: true,\n [position]: true,\n });\n\n useEventListener('mouseenter', () => openModal(), containerRef);\n useEventListener('mouseleave', () => closeModal(), containerRef);\n\n if (disabled) return children;\n\n return (\n <>\n {cloneElement(children, { ref: containerRef })}\n\n <Modal\n backdrop='none'\n id='tooltip'\n isOpen={isOpen}\n containerRef={containerRef}\n onClose={closeModal}\n position={position}\n className={classNames}\n closeOnClickOutside={false}\n offset={6 + +offset}\n windowOffset={10}\n transitionDuration={100}\n closeAnimationClassName='close-animation'\n >\n <span className='tooltip-content'>{content}</span>\n </Modal>\n </>\n );\n};\n","import styleInject from '#style-inject';styleInject(\".tooltip{color:var(--foreground);font-size:var(--typography-size-small);line-height:1em;border-radius:5px;padding:.5em 1em;display:block;border:1px solid;pointer-events:none;&:before{content:\\\"\\\";display:block;background:var(--background-paper);position:absolute;z-index:1;width:10px;height:10px;border-left:1px solid transparent;border-top:1px solid transparent;border-right:1px solid var(--foreground);border-bottom:1px solid var(--foreground);border-radius:0 0 3px}&.left{animation:fadeInRight .25s ease-out;&.close-animation{animation:fadeOutLeft .25s ease-out;transform:translate(-10px);opacity:0}&:before{top:50%;left:100%;transform:translate(-50%,-50%) rotate(-45deg)}}&.right{animation:fadeInLeft .25s ease-out;&.close-animation{animation:fadeOutRight .25s ease-out;transform:translate(10px);opacity:0}&:before{top:50%;right:100%;transform:translate(50%,-50%) rotate(135deg)}}&.top{animation:fadeInDown .25s ease-out;&.close-animation{animation:fadeOutUp .25s ease-out;transform:translateY(-10px);opacity:0}&:before{top:100%;left:50%;transform:translate(-50%,-50%) rotate(45deg)}}&.bottom{animation:fadeInUp .25s ease-out;&.close-animation{animation:fadeOutDown .25s ease-out;transform:translateY(10px);opacity:0}&:before{left:50%;bottom:100%;transform:translate(-50%,50%) rotate(-135deg)}}}\\n\")","import styleInject from '#style-inject';styleInject(\".switch-container{--width: attr(data-width);--dot-size: attr(data-dot-size);--dot-hover-size: attr(data-dot-hover-size);--padding: attr(data-padding);--color: var(--neutral-500);--color-dark: var(--neutral-800);--color-contrast: var(--neutral-50);display:flex;align-items:center;gap:.5em;width:fit-content;.switch{width:calc(var(--width) + var(--padding) * 2);border-radius:100em;background:var(--background-paper);padding:var(--padding);transition:all .3s ease;position:relative;.switch-dot{width:var(--dot-size);height:var(--dot-size);border-radius:100em;background:var(--color);display:block;transition:all .3s ease;margin-left:0;position:relative;z-index:1}.switch-icon{cursor:pointer;display:block}.switch-internal-left-icon,.switch-internal-right-icon{width:var(--dot-size);height:var(--dot-size);position:absolute;top:var(--padding);display:grid;place-content:center;color:var(--color-contrast);transition:all .3s ease}.switch-internal-left-icon{left:var(--padding)}.switch-internal-right-icon{right:var(--padding)}&.is-checked{background:var(--color);.switch-dot{margin-left:calc(var(--width) - var(--dot-size));background:color-mix(in hsl,var(--color),var(--color-contrast) 75%)}}&:not(.is-readonly):has(input:disabled){background:var(--background-disabled);.switch-dot{background:var(--foreground-disabled)}.switch-internal-left-icon,.switch-internal-right-icon{color:var(--foreground-disabled)}&.is-checked{background:var(--color-dark)}}.switch-checkbox{position:absolute;top:0;left:0;width:100%;height:100%;cursor:pointer;opacity:0;z-index:3}}.switch-label{cursor:pointer;user-select:none;padding:0 .5em}.switch:not(:has(.is-readonly,input:disabled)):hover .switch-dot,&:has(.switch-icon:hover) .switch:not(:has(.is-readonly,input:disabled)) .switch-dot,&:has(.switch-label:hover) .switch:not(:has(.is-readonly,input:disabled)) .switch-dot{box-shadow:0 0 0 calc(.3 * var(--dot-size)) color-mix(in hsl,var(--color) 50%,var(--color-contrast))}.switch:not(:has(.is-readonly,input:disabled)):active .switch-dot,&:has(.switch-icon:active) .switch:not(:has(.is-readonly,input:disabled)) .switch-dot,&:has(.switch-label:active) .switch:not(:has(.is-readonly,input:disabled)) .switch-dot{width:var(--dot-hover-size)}.switch:not(:has(.is-readonly,input:disabled)).is-checked:active .switch-dot,&:has(.switch-icon:active) .switch:not(:has(.is-readonly,input:disabled)).is-checked .switch-dot,&:has(.switch-label:active) .switch:not(:has(.is-readonly,input:disabled)).is-checked .switch-dot{margin-left:calc(var(--width) - var(--dot-hover-size))}&.color-primary{--color: var(--primary-500);--color-dark: var(--primary-700);--color-contrast: var(--primary-50)}&.color-secondary{--color: var(--secondary-500);--color-dark: var(--secondary-700);--color-contrast: var(--secondary-50)}&.color-tertiary{--color: var(--tertiary-500);--color-dark: var(--tertiary-700);--color-contrast: var(--tertiary-50)}&.color-active{--color: var(--active-500);--color-dark: var(--active-700);--color-contrast: var(--active-50)}&.color-warning{--color: var(--warning-500);--color-dark: var(--warning-700);--color-contrast: var(--warning-50)}&.color-alert{--color: var(--alert-500);--color-dark: var(--alert-700);--color-contrast: var(--alert-50)}&.color-info{--color: var(--info-500);--color-dark: var(--info-700);--color-contrast: var(--info-50)}}\\n\")","import { DetailedHTMLProps, ImgHTMLAttributes } from 'react';\n\ntype ImageProps = DetailedHTMLProps<ImgHTMLAttributes<HTMLImageElement>, HTMLImageElement> & {};\n\nexport const Image = ({ alt = '', loading = 'eager', ...props }: ImageProps) => {\n return <img loading={loading} alt={alt} {...props} width='100%' />;\n};\n","import { useMemo, useState } from 'react';\n\nimport { useClassNames } from '../../hooks';\nimport { KeyValuesOf } from '../../types';\nimport { Checkbox } from '../form';\n\nimport { SmartTableColumn } from './smart-table.column';\nimport { sortData } from './smart-table.helpers';\nimport { useSort } from './smart-table.hooks';\nimport { SmartTableRow } from './smart-table.row';\nimport './smart-table.styles.css';\nimport { ColumnData, RowDataObject } from './smart-table.types';\n\ntype SmartTableProps<RowData extends RowDataObject> = {\n columns: Array<ColumnData<RowData>>;\n data: Array<RowData>;\n width?: 'scroll' | 'content';\n selectable?: boolean;\n rowId: KeyValuesOf<RowData, React.Key>;\n className?: string;\n tableClassName?: string;\n};\n\nexport const SmartTable = <RowData extends RowDataObject>({\n columns: initialColumns,\n data,\n width,\n selectable = false,\n rowId,\n className = '',\n tableClassName: _tableClassName = '',\n}: SmartTableProps<RowData>) => {\n const [selected, setSelected] = useState<{ [key: string]: RowData }>({});\n\n const tableClassName = useClassNames({\n 'smart-table': true,\n [_tableClassName]: Boolean(_tableClassName),\n 'layout-fixed': width === 'content',\n 'layout-scrollable': width === 'scroll',\n });\n\n const tableContainerClassName = useClassNames({\n 'smart-table-container': true,\n [className]: Boolean(className),\n });\n\n const { sortBy, order, toggleSortField } = useSort<RowData>();\n\n const columns = useMemo(() => {\n let finalColumns = [...initialColumns];\n\n if (selectable) {\n finalColumns = [\n {\n header: `${Object.values(selected).length}`,\n render: (data, rowKey) => (\n <Checkbox\n name={`selected-${rowKey}`}\n value={`${rowKey}` in selected}\n setValue={isSelected => {\n setSelected(prev => {\n const copy = { ...prev };\n\n if (isSelected) {\n copy[`${rowKey}`] = data;\n } else {\n delete copy[`${rowKey}`];\n }\n\n return copy;\n });\n }}\n />\n ),\n },\n ...finalColumns,\n ];\n }\n\n return finalColumns;\n }, [initialColumns, selectable, selected]);\n\n const rows = useMemo(() => sortData<RowData>(data, sortBy, order), [data, sortBy, order]);\n\n return (\n <section className={tableContainerClassName}>\n <table className={tableClassName}>\n <thead>\n <tr>\n {columns.map((column, key) => (\n <SmartTableColumn\n key={key}\n toggleSortField={toggleSortField}\n sortField={sortBy}\n orderField={order}\n {...column}\n />\n ))}\n </tr>\n </thead>\n <tbody>\n {rows.map(row => (\n <SmartTableRow\n key={row[rowId] as React.Key}\n rowKey={row[rowId] as React.Key}\n data={row}\n columns={columns}\n isSelected={`${row[rowId] as React.Key}` in selected}\n selectable={selectable}\n />\n ))}\n </tbody>\n </table>\n </section>\n );\n};\n","import { useMemo } from 'react';\nimport { MdArrowDownward, MdArrowUpward } from 'react-icons/md';\n\nimport { useClassNames } from '../../hooks';\nimport { Grid } from '../../layouts';\nimport { Ripple } from '../ripple';\nimport { Typography } from '../typography';\n\nimport { ColumnData, Order, RowDataObject } from './smart-table.types';\n\ntype SmartTableColumnProps<RowData extends RowDataObject> = ColumnData<RowData> & {\n toggleSortField: (field: ColumnData<RowData>['sortBy']) => void;\n sortField: ColumnData<RowData>['sortBy'] | null;\n orderField: Order | null;\n};\n\nexport const SmartTableColumn = <RowData extends RowDataObject>({\n header,\n sortBy,\n icon: Icon,\n width,\n field,\n toggleSortField,\n sortField,\n orderField,\n hidden,\n}: SmartTableColumnProps<RowData>) => {\n const sortByKey = sortBy !== undefined ? sortBy : field;\n\n const columnClassName = useClassNames({\n 'sort-on-click': Boolean(sortByKey),\n });\n\n const columnOnClick = sortByKey ? () => toggleSortField(sortByKey) : undefined;\n\n const sortIcon = useMemo(() => {\n if (!sortByKey) return null;\n\n return (\n <span className='sort-icon'>\n {Boolean(sortField) &&\n sortField === sortByKey &&\n (orderField === 'asc' ? <MdArrowUpward /> : <MdArrowDownward />)}\n </span>\n );\n }, [sortByKey, sortField, orderField]);\n\n if (hidden) return null;\n\n return (\n <th style={{ width }} className={columnClassName} onClick={columnOnClick}>\n <Grid flow='column' gap='0.5em' jc='space-between' ai='center'>\n {Icon ? <Icon /> : null}\n <Typography variant='label' noPadding>\n {header}\n </Typography>\n {sortIcon}\n </Grid>\n <Ripple color='var(--primary-700)' />\n </th>\n );\n};\n","import React from 'react';\n\nimport { Typography } from '../typography';\n\nimport { ColumnData, Order, Primitive, RowDataObject } from './smart-table.types';\n\nconst renderRowColumn = <RowData extends RowDataObject>(\n data: RowData,\n { field, render, Component }: ColumnData<RowData>,\n rowKey: React.Key,\n): React.ReactNode => {\n if (field && data[field])\n return (\n <Typography noPadding nowrap>\n {data[field] as Primitive}\n </Typography>\n );\n\n if (render) return render(data, rowKey);\n\n if (Component) return <Component data={data} rowKey={rowKey} />;\n};\n\nexport const renderRow = <RowData extends RowDataObject>(\n data: RowData,\n columns: Array<ColumnData<RowData>>,\n rowKey: React.Key,\n) => columns.map((column, key) => (column.hidden ? null : <td key={key}>{renderRowColumn(data, column, rowKey)}</td>));\n\nexport const sortData = <RowData extends RowDataObject>(\n data: Array<RowData>,\n sortBy: ColumnData<RowData>['sortBy'] | null,\n order: Order | null,\n) => {\n if (sortBy) {\n return data.toSorted((a, b) => {\n const fieldA = a[sortBy];\n const fieldB = b[sortBy];\n\n if (\n ['number', 'boolean', 'string'].includes(typeof fieldA) &&\n ['number', 'boolean', 'string'].includes(typeof fieldB)\n ) {\n if (fieldA === fieldB) return 0;\n\n if (order === 'asc') {\n return fieldA > fieldB ? 1 : -1;\n }\n\n return fieldA > fieldB ? -1 : 1;\n }\n\n return 0;\n });\n }\n\n return data;\n};\n","import { useCallback, useState } from 'react';\n\nimport { ColumnData, Order, RowDataObject } from './smart-table.types';\n\nexport const useSort = <RowData extends RowDataObject>() => {\n const [[sortBy, order], setSortField] = useState<[ColumnData<RowData>['sortBy'] | null, Order | null]>([null, null]);\n\n const toggleSortField = useCallback((sortByField: ColumnData<RowData>['sortBy']) => {\n setSortField(([sortBy, order]) => {\n if (sortByField !== sortBy) {\n return [sortByField, 'asc'];\n }\n\n if (order === 'asc') {\n return [sortByField, 'desc'];\n }\n\n return [null, null];\n });\n }, []);\n\n return {\n sortBy,\n order,\n toggleSortField,\n };\n};\n","import React from 'react';\n\nimport { useClassNames } from '../../hooks';\n\nimport { renderRow } from './smart-table.helpers';\nimport { ColumnData, RowDataObject } from './smart-table.types';\n\ntype SmartTableRowProps<RowData extends RowDataObject> = {\n data: RowData;\n columns: Array<ColumnData<RowData>>;\n isSelected: boolean;\n selectable: boolean;\n rowKey: React.Key;\n};\n\nexport const SmartTableRow = <RowData extends RowDataObject>({\n data,\n columns,\n isSelected = false,\n selectable = false,\n rowKey,\n}: SmartTableRowProps<RowData>) => {\n const rowClassName = useClassNames({\n 'row-selected': selectable && isSelected,\n });\n\n return <tr className={rowClassName}>{renderRow(data, columns, rowKey)}</tr>;\n};\n","import styleInject from '#style-inject';styleInject(\".smart-table-container{border:0 solid var(--primary-500);border-radius:5px;overflow:auto;height:100%;width:100%;margin:auto}.smart-table{border-collapse:collapse;position:relative;width:100%;&.layout-fixed{table-layout:fixed}&.layout-scrollable{table-layout:auto}thead{position:sticky;z-index:10;top:0;box-shadow:0 3px 5px #0003,0 1px 10px #0000001f;tr{background:var(--primary-500);color:var(--primary-50);transition:all .3s ease}}tbody{tr{box-shadow:inset 0 0 0 0 var(--primary-500);transition:box-shadow .3s ease;&.row-selected,&:hover{background:var(--background-paper)}&.row-selected{box-shadow:inset 10px 0 0 -5px var(--primary-500)}&:not(:last-child){border-bottom:1px solid var(--border)}}}th{padding:.8em 1.2em;user-select:none;&.sort-on-click{cursor:pointer}.sort-icon{width:1em;display:block}svg{animation:fadeIn .3s ease}path{transition:all .3s ease}&:first-child{padding-left:2em}&:last-child{padding-right:2em}}td{transition:all .3s ease;padding:.6em 1em;&:first-child{padding-left:2em}&:last-child{padding-right:2em}}}\\n\")","import React, { createContext, useContext, useEffect, useState } from 'react';\n\nimport { useClassNames } from '../../hooks';\n\nimport { TabsList as TabListComponent, TabListProps } from './tabs-list';\nimport './tabs.styles.css';\n\ntype TabsContextState = {\n openTab: string;\n changeOpenTab: (id: string) => void;\n};\n\nconst TabsContext = createContext<TabsContextState | null>(null);\n\nconst useTab = (id: string): [boolean, () => void] => {\n const context = useContext(TabsContext);\n\n if (!context) {\n throw new Error('You cant use this component out off an Tabs component');\n }\n\n const { openTab, changeOpenTab } = context;\n\n return [openTab === id, () => changeOpenTab(id)];\n};\n\nconst useTabsContext = (): TabsContextState => {\n const context = useContext(TabsContext);\n\n if (!context) {\n throw new Error('You cant use this component out off an Tabs component');\n }\n\n return context;\n};\n\ntype TabsProps = {\n children: React.ReactNode;\n defaultOpenTab: string;\n onChange?: (id: string) => void;\n};\n\nexport const Tabs = ({ children, defaultOpenTab, onChange }: TabsProps) => {\n const [openTab, setOpenTab] = useState(defaultOpenTab);\n\n useEffect(() => {\n if (onChange) {\n onChange(openTab);\n }\n }, [openTab, onChange]);\n\n return (\n <TabsContext.Provider\n value={{\n openTab,\n changeOpenTab: id => setOpenTab(id),\n }}\n >\n {children}\n </TabsContext.Provider>\n );\n};\n\ntype TabProps = {\n id: string;\n children: React.ReactNode;\n className?: string;\n style?: React.CSSProperties;\n onClick?: (e: React.MouseEvent<HTMLSpanElement>) => void;\n ref?: React.RefObject<HTMLSpanElement | null>;\n};\n\nconst Tab = ({ id, children, className = '', style = {}, onClick, ref }: TabProps) => {\n const [isOpen, openTab] = useTab(id);\n const tabClassNames = useClassNames({\n tab: true,\n [className]: !!className,\n 'is-open': isOpen,\n });\n\n const handleClick = (e: React.MouseEvent<HTMLSpanElement>) => {\n openTab();\n\n if (onClick) {\n onClick(e);\n }\n };\n\n return (\n <span className={tabClassNames} style={style} onClick={handleClick} ref={ref}>\n {children}\n </span>\n );\n};\n\ntype TabPanelProps = {\n id: string;\n children: React.ReactNode;\n};\n\nconst TabPanel = ({ id, children }: TabPanelProps) => {\n const [isOpen] = useTab(id);\n\n return isOpen ? children : null;\n};\n\nconst TabList = ({ children, ...props }: Omit<TabListProps, 'openTab'>) => {\n const { openTab } = useTabsContext();\n\n return (\n <TabListComponent {...props} openTab={openTab}>\n {children}\n </TabListComponent>\n );\n};\n\nTabs.Tab = Tab;\nTabs.TabPanel = TabPanel;\nTabs.TabList = TabList;\n","import React, { useEffect, useRef, useState } from 'react';\n\nimport { useClassNames } from '../../hooks';\n\nimport { Tabs } from './tabs';\n\nexport enum RadiusVariants {\n None = 'none',\n Small = 'small',\n Medium = 'medium',\n Large = 'large',\n Full = 'full',\n}\n\nexport enum SizeVariants {\n Small = 'small',\n Medium = 'medium',\n Large = 'large',\n}\n\nconst DefaultRect = {\n top: 0,\n left: 0,\n width: 0,\n height: 0,\n};\n\nexport enum TabListVariant {\n SOLID = 'solid',\n GHOST = 'ghost',\n FLAT = 'flat',\n LINE = 'line',\n}\n\nexport enum TabListColor {\n PRIMARY = 'primary',\n SECONDARY = 'secondary',\n TERTIARY = 'tertiary',\n}\n\nexport enum TabListDirection {\n HORIZONTAL = 'horizontal',\n VERTICAL = 'vertical',\n}\n\nexport type TabListProps = {\n openTab: string;\n variant?: `${TabListVariant}`;\n children?: React.ReactNode;\n size?: `${SizeVariants}`;\n color?: `${TabListColor}`;\n radius?: `${RadiusVariants}`;\n direction?: `${TabListDirection}`;\n className?: string;\n style?: React.CSSProperties;\n tabs?: Array<{\n id: string;\n label: React.ReactNode;\n }>;\n};\n\nexport const TabsList = ({\n tabs = [],\n variant = TabListVariant.SOLID,\n radius = RadiusVariants.Full,\n direction = TabListDirection.HORIZONTAL,\n color,\n children,\n openTab,\n size = SizeVariants.Medium,\n className = '',\n style = {},\n}: TabListProps) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const selectedTabRef = useRef<HTMLSpanElement>(null);\n const [isSelectorActive, setIsSelectorActive] = useState(false);\n const [selector, setSelector] = useState(DefaultRect);\n const containerClassNames = useClassNames({\n 'tab-list': true,\n [`variant-${variant}`]: Boolean(variant),\n [`size-${size}`]: Boolean(size),\n [`radius-${radius}`]: Boolean(radius),\n [`color-${color}`]: Boolean(color),\n 'vertical-direction': direction === TabListDirection.VERTICAL,\n [className]: Boolean(className),\n });\n\n useEffect(() => {\n const selectedRect = selectedTabRef.current?.getBoundingClientRect() ?? DefaultRect;\n const containerRect = containerRef.current?.getBoundingClientRect() ?? DefaultRect;\n\n const width = selectedRect.width;\n const height = variant === TabListVariant.LINE ? 2 : selectedRect.height;\n const left = selectedRect.left - containerRect.left;\n const top =\n variant === TabListVariant.LINE\n ? selectedRect.top + selectedRect.height - containerRect.top\n : selectedRect.top - containerRect.top;\n\n setSelector({ left, top, width, height });\n\n if (!isSelectorActive) {\n setTimeout(() => {\n setIsSelectorActive(true);\n }, 100);\n }\n }, [isSelectorActive, variant, openTab]);\n\n return (\n <section className={containerClassNames} ref={containerRef} style={style}>\n {Boolean(variant) && <span className={`tabs-selector ${isSelectorActive ? 'active' : ''}`} style={selector} />}\n {tabs.map(({ id, label }) => (\n <Tabs.Tab key={id} id={id} ref={id === openTab ? selectedTabRef : undefined}>\n {label}\n </Tabs.Tab>\n ))}\n {children}\n </section>\n );\n};\n","import styleInject from '#style-inject';styleInject(\".tab{cursor:pointer;user-select:none;transition:all .3s ease}.tab-list{--color: var(--neutral-900);--color-contrast: var(--neutral-50);--inner-radius: 0;--outer-radius: 0;display:grid;grid-auto-flow:column;gap:1em;align-items:center;position:relative;font-size:var(--typography-size-label);border-radius:var(--outer-radius);.tab,.tabs-selector{border-radius:var(--inner-radius)}&.size-small{font-size:var(--typography-size-small)}&.size-medium{font-size:var(--typography-size-label)}&.size-large{font-size:var(--typography-size-body)}.tabs-selector{position:absolute;background:var(--color);color:var(--color-contrast);border-radius:1.5em;&.active{transition:all .3s ease}}.tab{border-radius:1.5em;padding:.5em 1em;z-index:1;text-align:center;&.is-open{color:var(--color-contrast)}&:not(.is-open):hover{color:var(--neutral-900)}}&.radius-none{--outer-radius: 0;--inner-radius: 0}&.radius-small{--outer-radius: .5em;--inner-radius: .5em}&.radius-medium{--outer-radius: 1em;--inner-radius: .8em}&.radius-large{--outer-radius: 1.5em;--inner-radius: 1.3em}&.radius-full{--outer-radius: 1.8em;--inner-radius: 1.6em}&.vertical-direction{grid-auto-flow:row;align-items:unset;align-content:start}&.variant-solid{background:var(--background-paper);color:var(--foreground);padding:.5em}&.variant-ghost{border:1px solid var(--color);padding:.5em}&.variant-line{border-radius:0;&:not(.vertical-direction){border-bottom:2px solid var(--border)}.tabs-selector{border-radius:0}.tab{border-radius:0;&.is-open{color:var(--color)}}}&.color-primary{--color: var(--primary-500);--color-contrast: var(--primary-50)}&.color-secondary{--color: var(--secondary-500);--color-contrast: var(--secondary-50)}&.color-tertiary{--color: var(--tertiary-500);--color-contrast: var(--tertiary-50)}&.color-active{--color: var(--active-500);--color-contrast: var(--active-50)}&.color-warning{--color: var(--warning-500);--color-contrast: var(--warning-50)}&.color-alert{--color: var(--alert-500);--color-contrast: var(--alert-50)}&.color-info{--color: var(--info-500);--color-contrast: var(--info-50)}}\\n\")","import styleInject from '#style-inject';styleInject(\".tag{--background: attr(data-background, var(--primary-500));--text: attr(data-text, var(--primary-50));--background-selected: attr(data-background-selected, var(--primary-700));--text-selected: attr(data-text-selected, var(--primary-50));padding:.4em .8em;border-radius:.3em;border:1px solid;background:var(--background);color:var(--text);transition:all .3s ease;display:inline-block;font-size:var(--typography-size-label);user-select:none;&.no-wrap{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}&.rounded-none{border-radius:0}&.rounded-small{border-radius:.25em}&.rounded-medium{border-radius:.5em}&.rounded-large{border-radius:1em}&.rounded-full{border-radius:100rem}&:hover,&.is-selected{background:var(--background-selected);color:var(--text-selected)}}\\n\")","import { useClassNames } from '../../hooks';\n\nimport './tag.styles.css';\n\nexport enum TagRounded {\n NONE = 'none',\n SMALL = 'small',\n MEDIUM = 'medium',\n LARGE = 'large',\n FULL = 'full',\n}\n\ninterface TagProps extends React.HTMLAttributes<HTMLSpanElement> {\n children: React.ReactNode;\n selected?: boolean;\n rounded?: `${TagRounded}`;\n noWrap?: boolean;\n ref?: React.Ref<HTMLElement>;\n}\n\nexport const Tag = ({ children, rounded = TagRounded.MEDIUM, selected = false, noWrap = false, ref }: TagProps) => {\n const className = useClassNames({\n tag: true,\n [`rounded-${rounded}`]: Boolean(rounded),\n 'is-selected': selected,\n 'no-wrap': noWrap,\n });\n\n return (\n <span className={className} ref={ref}>\n {children}\n </span>\n );\n};\n"],"mappings":"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","names":["components_exports","__export","Accordion","AccordionItem","ActionModal","AsideModal","Backdrop","Button","Checkbox","ClickToCopy","ConfirmationModal","Cursor","DatePicker","Field","FieldOrientation","FieldVariant","FlipCard","HoverCard","Image","InfinityScroll","Input","InputColor","InputFile","InputNumber","InputPassword","Line","LineOrientation","LineStyle","Menu","Modal","ModalBackdrop","Portal","Radio","Ripple","Select","SlideCard","Slider","SmartTable","Switch","Tabs","Tag","TagRounded","Textarea","Tooltip","Typography","useAccordionItem","__toCommonJS","import_react","import_react","useClassNames","classes","compiledClassNames","classname","value","import_react","useEventListener","eventName","callback","element","options","callbackRef","targetElement","listener","event","checkIsOutside","ref","target","useClickOutside","callback","useEventListener","e","event","r","import_react","useDebounce","value","delay","debouncedValue","setDebouncedValue","timer","import_react","useResizeObserver","ref","callback","refs","observer","r","import_react","createContainer","containerID","domContainer","useDomContainer","container","setContainer","formatBytes","bytes","decimals","k","dm","sizes","i","getModalPosition","c","m","offset","position","top","left","getOppositePosition","windowOffset","positions","newPosition","rightOffset","bottomOffset","p","fixModalPosition","getModalPositionRelativeToContainer","params","modalContainerStyle","oppositePosition","fixedPosition","getModalPositionRelativeToScreen","position","windowOffset","import_react","import_react","useIntersectionObserver","ref","callback","initOptions","refs","observer","r","useInView","initOptions","inView","setInView","ref","useIntersectionObserver","entry","import_react","useInputHandlers","onBlur","onFocus","onChange","isFocus","setIsFocus","handleFocus","e","handleBlur","handleChange","import_react","useMediaQuery","query","matches","setMatches","media","listener","import_react","useModal","containerRef","isOpen","setIsOpen","import_react","convertDOMRectToPosition","rect","useModalInContainer","offset","windowOffset","position","modalRef","containerRef","isOpen","containerTemporalRef","getPosition","modal","container","modalStyle","getModalPositionRelativeToContainer","getModalPositionRelativeToScreen","key","callback","useResizeObserver","useEventListener","import_react","useModalTransition","transitionDuration","isOpen","modalState","setModalState","React","isVisible","closeModal","openModal","import_react","getMousePosition","domRect","e","left","top","containerPositionX","containerPositionY","containerX","containerY","useMousePosition","containerRef","ref","position","setPosition","useEventListener","clientX","clientY","prev","newState","import_react","useToggleValues","values","defaultIndex","index","setIndex","toggle","prev","styleInject","css","insertAt","head","style","styleInject","import_jsx_runtime","LineOrientation","LineStyle","Line","orientation","className","style","color","size","lineStyle","dashedSize","spacing","classNames","useClassNames","styleInject","import_jsx_runtime","AccordionContext","useAccordionItem","id","context","toggleItem","openedItems","toggle","Accordion","children","className","noSeparators","multiple","style","defaultOpened","setOpenedItems","acc","prev","openedItemsIDs","accordionClassName","useClassNames","child","key","Line","import_react","import_fa","import_jsx_runtime","SlideCard","children","isOpen","className","style","import_react","styleInject","import_jsx_runtime","FlipCard","cardZIndex","flipDirection","flipSpeed","isFlipped","children","getComponent","key","frontRotate","backRotate","className","useClassNames","import_react","styleInject","import_jsx_runtime","HoverCard","children","threshold","translationZ","width","className","refCard","refLayer","mouseMoveCallback","e","card","layer","clientX","clientY","currentTarget","clientWidth","clientHeight","top","left","horizontal","vertical","relativePercentageX","rotateY","rotateX","mouseLeaveCallback","useEventListener","cardClassName","useClassNames","import_react","TypographyVariantsElements","TypographyVariantsClassNames","styleInject","Typography","variant","nowrap","customClassname","style","children","as","weight","family","noPadding","align","color","htmlFor","recommendedWidth","props","className","useClassNames","TypographyVariantsClassNames","component","TypographyVariantsElements","import_jsx_runtime","getContent","content","isOpen","AccordionItem","title","subtitle","children","Icon","startContent","endContent","classNames","className","style","id","toggle","useAccordionItem","headerClassName","useClassNames","headerContentClassName","toggleIconClassName","bodyContentClassName","titleContent","subtitleContent","headerStart","headerMiddle","Typography","headerEnd","accordionItemClassName","SlideCard","import_react","styleInject","import_jsx_runtime","Ripple","color","duration","timingFunction","times","className","style","zIndex","ref","computedPosition","e","pageX","pageY","currentTarget","rect","x","y","ripple","styleInject","import_jsx_runtime","Button","children","color","variant","radius","size","noWrap","forIcon","className","props","classNames","useClassNames","Ripple","import_react","styleInject","import_jsx_runtime","Cursor","x","y","elementX","elementY","ref","useMousePosition","isCursorHover","setIsCursorHover","useEventListener","e","computedCursor","translate3d","import_react","import_io5","import_react_hook_form","import_jsx_runtime","Controller","Component","inputProps","fieldDefaultValue","rules","control","setValue","name","defaultValue","RHFController","onBlur","value","fieldState","styleInject","import_jsx_runtime","Checkbox","name","value","setValue","onBlur","onFocus","className","style","autoFocus","readOnly","disabled","autoComplete","Icon","label","color","size","id","handlers","useInputHandlers","e","checkboxContainerClassName","useClassNames","checkboxClassName","Typography","CheckboxController","rules","props","Controller","import_react","import_im","styleInject","FieldVariant","FieldOrientation","import_jsx_runtime","getIcon","Icon","className","onClick","Field","id","label","leftIcon","rightIcon","ErrorIcon","error","onClickLeftIcon","onClickRightIcon","fieldOrientation","children","isFocus","variant","ref","fieldClassName","useClassNames","handleClick","callback","e","input","Typography","import_jsx_runtime","DatePicker","name","value","setValue","onBlur","onFocus","type","className","style","autoFocus","readOnly","disabled","placeholder","autoComplete","isDirty","isTouched","invalid","error","fieldProps","id","isFocus","handlers","useInputHandlers","e","Field","DatePickerController","rules","props","Controller","import_react","import_jsx_runtime","Input","name","value","setValue","onBlur","onFocus","pattern","type","className","style","autoFocus","readOnly","disabled","placeholder","autoComplete","isDirty","isTouched","invalid","error","min","max","fieldProps","id","handlers","isFocus","useInputHandlers","e","Field","InputController","rules","props","Controller","import_react","import_fi","import_io","import_jsx_runtime","InputPassword","name","value","setValue","onBlur","onFocus","className","style","autoFocus","readOnly","disabled","placeholder","autoComplete","isDirty","isTouched","invalid","error","fieldProps","id","type","toggle","useToggleValues","isFocus","handlers","useInputHandlers","e","icon","Field","InputPasswordController","rules","props","Controller","import_color","import_react","import_react_colorful","import_fa6","import_use_eye_dropper","import_react","import_im","import_react","import_react_dom","Portal","children","id","root","useDomContainer","import_react","import_jsx_runtime","ModalBackdrop","Backdrop","opacity","backdrop","zIndex","backdropOnClick","modalState","backdropClassName","useClassNames","backgroundStyles","styleInject","import_jsx_runtime","Modal","id","children","isOpen","onClose","className","style","rootStyle","animation","closeAnimationClassName","modalRefProp","closeOnClickOutside","transitionDuration","windowOffset","offset","position","containerRef","zIndex","backdropProps","uuid","modalRef","modalState","isVisible","useModalTransition","useModalInContainer","useClickOutside","modalContentClassName","useClassNames","Portal","Backdrop","styleInject","import_jsx_runtime","ActionModalContext","useActionModalContext","context","ActionModal","children","isOpen","onClose","actionRequired","Icon","noCloseButton","lineOnTop","backCard","noPadding","className","style","modalProps","isActionInProgress","setIsActionInProgress","ref","remainAction","actionModalClassName","useClassNames","Modal","Typography","ActionButton","onClick","manualIsLoading","buttonProps","isLoading","setIsLoading","handleAction","result","Button","import_react","import_im","styleInject","import_jsx_runtime","AsideModal","children","isOpen","onClose","position","size","className","modalProps","modalRootStyles","Modal","styleInject","import_jsx_runtime","ConfirmationModal","title","onAccept","onReject","acceptText","rejectText","children","isLoading","actionModalProps","ActionModal","Typography","import_react","styleInject","import_jsx_runtime","Menu","children","isOpen","onClose","id","menuContentRef","contentClassName","contentStyle","className","modalProps","modalClassName","useClassNames","Modal","MenuOption","label","asCheckbox","Icon","disabled","selected","style","onClick","liProps","menuOptionClassName","handleClick","e","menuOptionContent","Checkbox","n","Typography","Ripple","Divider","Line","Label","props","Group","groupClassName","styleInject","import_jsx_runtime","InputColor","name","value","setValue","onBlur","onFocus","showValueText","className","style","autoFocus","readOnly","disabled","placeholder","autoComplete","isDirty","isTouched","invalid","error","fieldProps","open","isSupported","useEyeDropper","inputValue","setInputValue","id","containerRef","isOpen","setIsOpen","handlers","isFocus","useInputHandlers","e","setInputColor","borderColor","color","Color","openEyeDropper","sRGBHex","inputBoxClassName","useClassNames","Field","Modal","InputColorController","rules","props","Controller","import_react","import_fa6","import_io","import_pi","import_react","styleInject","Grid","tag","children","className","style","flow","columnSize","rowSize","column","row","pc","pi","ps","jc","ji","js","ac","ai","as","gtc","gtr","gta","gt","gap","props","styleInject","import_jsx_runtime","InputFile","name","value","setValue","onBlur","onFocus","className","style","autoFocus","readOnly","disabled","placeholder","autoComplete","accept","multiple","limitSize","errorTimeout","label","error","setError","id","handlers","useInputHandlers","e","files","saveFiles","intervalId","finalFiles","filesToCheck","i","file","formatBytes","handleDrop","getIconType","type","deleteFile","prevValue","deleteAll","totalSize","prev","size","renderFileToCard","key","Icon","Grid","Typography","InputFileController","rules","props","Controller","import_react","import_jsx_runtime","RegexDecimal","getCleanedValue","input","decimalSeparator","regex","cleaned","getFormattedValue","value","format","InputNumber","name","setValue","onBlur","onFocus","pattern","className","style","autoFocus","readOnly","disabled","placeholder","autoComplete","isDirty","isTouched","invalid","error","min","max","fieldProps","id","formatFunction","locales","formatConfig","formattedValue","setFormattedValue","handlers","isFocus","useInputHandlers","e","formatted","Field","InputController","rules","props","Controller","import_react","styleInject","import_jsx_runtime","Radio","name","value","setValue","onBlur","onFocus","className","style","autoFocus","readOnly","disabled","autoComplete","radioValue","label","color","size","id","handlers","useInputHandlers","e","radioContainerClassName","useClassNames","radioClassName","Typography","RadioController","rules","props","Controller","import_react","import_im","import_pi","import_react","styleInject","import_jsx_runtime","InfinityScroll","isLoadingProp","hasNextPage","loadMore","customLoadMoreElement","emptyMessage","children","ref","inView","useInView","isLoading","useDebounce","childrenExists","import_react","import_jsx_runtime","Option","children","value","multiselect","isEqualComparator","maxOptions","selectedValue","setValue","setIsOpen","useSelectContext","compareValuesIsEqual","a","b","toggleOption","isSelected","item","handleKeyDown","e","optionLabel","Typography","Menu","selected","import_react","import_jsx_runtime","useDynamicHeight","height","defaultMinHeight","containerRef","offset","windowOffset","h","setH","getMaxHeight","containerBottom","heightBottom","heightTop","heightCalculated","maxHeight","minHeight","useResizeObserver","useEventListener","Options","children","searchQueryValue","searchQueryPlaceholder","searchQueryClassName","searchQueryStyle","onSearchQuery","optionsGroupContainerRef","optionsGroupRef","internalSearchQuery","setInternalSearchQuery","searchInputRef","isMobile","useMediaQuery","e","focusedItem","handleSearchQuery","value","shouldUseAuto","setShouldUseAuto","calculateHeight","optionsContainerHeight","optionsHeight","selectOptionsHeader","useClassNames","styleInject","import_jsx_runtime","SelectContext","useSelectContext","context","OptionLabel","children","labelComponent","Typography","Menu","DefaultOption","value","DefaultValue","multiselect","Select","options","isEqualComparator","searchQueryValue","searchQueryPlaceholder","onSearchQuery","loadMore","isLoading","hasNextPage","emptyMessage","OptionComponent","ValueComponent","maxOptions","name","setValue","onBlur","onFocus","className","style","showClearOption","height","searchQueryStyle","searchQueryClassName","autoFocus","readOnly","disabled","placeholder","autoComplete","isDirty","isTouched","invalid","error","fieldProps","modalRef","isMobile","useMediaQuery","id","containerRef","isOpen","setIsOpen","openSelect","open","clearOption","e","valueNonEmpty","renderedOptions","key","Field","Options","InfinityScroll","MultiSelectController","rules","props","Controller","SingleSelectController","SelectController","Option","import_react","styleInject","import_jsx_runtime","Slider","name","value","setValue","onBlur","onFocus","min","max","step","onlySlider","className","style","autoFocus","readOnly","disabled","placeholder","autoComplete","isDirty","isTouched","invalid","error","fieldProps","id","onBlurInput","e","parsedValue","isFocus","handlers","useInputHandlers","inputSliderClassName","useClassNames","Field","SliderController","rules","props","Controller","import_react","styleInject","import_jsx_runtime","Textarea","name","value","setValue","onBlur","onFocus","rows","resize","className","style","autoFocus","readOnly","disabled","placeholder","autoComplete","isDirty","isTouched","invalid","error","fieldProps","id","handlers","isFocus","useInputHandlers","e","textareaClassName","useClassNames","Field","TextareaController","rules","props","Controller","import_react","import_react","import_react","styleInject","import_jsx_runtime","Tooltip","position","children","content","offset","disabled","containerRef","openModal","closeModal","isOpen","useModal","classNames","useClassNames","useEventListener","Modal","import_jsx_runtime","ClickToCopy","children","value","position","offset","tooltipText","tooltipCopiedText","copiedTextTimeout","justCopied","setJustCopied","Tooltip","styleInject","import_jsx_runtime","DotSizeMap","WidthMap","Switch","name","value","setValue","onBlur","onFocus","className","style","autoFocus","readOnly","disabled","placeholder","autoComplete","label","leftLabel","rightLabel","width","size","dotHoverSize","padding","LeftIcon","RightIcon","InternalLeftIcon","InternalRightIcon","leftIconTooltip","rightIconTooltip","color","id","handlers","useInputHandlers","e","switchContainerClassName","useClassNames","switchClassName","dotSize","_width","_padding","Typography","Tooltip","SwitchController","rules","props","Controller","import_jsx_runtime","Image","alt","loading","props","import_react","import_react","import_md","import_jsx_runtime","SmartTableColumn","header","sortBy","Icon","width","field","toggleSortField","sortField","orderField","hidden","sortByKey","columnClassName","useClassNames","columnOnClick","sortIcon","Grid","Typography","Ripple","import_jsx_runtime","renderRowColumn","data","field","render","Component","rowKey","Typography","renderRow","columns","column","key","sortData","sortBy","order","a","b","fieldA","fieldB","import_react","useSort","sortBy","order","setSortField","toggleSortField","sortByField","import_jsx_runtime","SmartTableRow","data","columns","isSelected","selectable","rowKey","rowClassName","useClassNames","renderRow","styleInject","import_jsx_runtime","SmartTable","initialColumns","data","width","selectable","rowId","className","_tableClassName","selected","setSelected","tableClassName","useClassNames","tableContainerClassName","sortBy","order","toggleSortField","useSort","columns","finalColumns","rowKey","Checkbox","isSelected","prev","copy","rows","sortData","column","key","SmartTableColumn","row","SmartTableRow","import_react","import_react","import_jsx_runtime","DefaultRect","TabsList","tabs","variant","radius","direction","color","children","openTab","size","className","style","containerRef","selectedTabRef","isSelectorActive","setIsSelectorActive","selector","setSelector","DefaultRect","containerClassNames","useClassNames","selectedRect","containerRect","width","height","left","top","id","label","Tabs","styleInject","import_jsx_runtime","TabsContext","useTab","id","context","openTab","changeOpenTab","useTabsContext","Tabs","children","defaultOpenTab","onChange","setOpenTab","Tab","className","style","onClick","ref","isOpen","tabClassNames","useClassNames","e","TabPanel","TabList","props","TabsList","styleInject","import_jsx_runtime","TagRounded","Tag","children","rounded","selected","noWrap","ref","className","useClassNames"]}