@smitch/breeze 0.1.0

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 (473) hide show
  1. package/.npmignore +14 -0
  2. package/README.md +485 -0
  3. package/index.d.ts +1 -0
  4. package/index.js +1 -0
  5. package/lib/@hooks/useWindowWidth.js +17 -0
  6. package/lib/@hooks/useWindowWidth.js.map +1 -0
  7. package/lib/@utils/merge.js +35 -0
  8. package/lib/@utils/merge.js.map +1 -0
  9. package/lib/accordion/Accordion.js +28 -0
  10. package/lib/accordion/Accordion.js.map +1 -0
  11. package/lib/accordion/atoms/AccordionCard.js +9 -0
  12. package/lib/accordion/atoms/AccordionCard.js.map +1 -0
  13. package/lib/accordion/atoms/AccordionHead.js +23 -0
  14. package/lib/accordion/atoms/AccordionHead.js.map +1 -0
  15. package/lib/accordion/atoms/AccordionItem.js +10 -0
  16. package/lib/accordion/atoms/AccordionItem.js.map +1 -0
  17. package/lib/accordion/atoms/AccordionSection.js +8 -0
  18. package/lib/accordion/atoms/AccordionSection.js.map +1 -0
  19. package/lib/accordion/atoms/index.js +5 -0
  20. package/lib/accordion/atoms/index.js.map +1 -0
  21. package/lib/accordion/index.js +3 -0
  22. package/lib/accordion/index.js.map +1 -0
  23. package/lib/accordion/types/index.js +2 -0
  24. package/lib/accordion/types/index.js.map +1 -0
  25. package/lib/alert/Alert.js +42 -0
  26. package/lib/alert/Alert.js.map +1 -0
  27. package/lib/alert/index.js +2 -0
  28. package/lib/alert/index.js.map +1 -0
  29. package/lib/alert/types/index.js +2 -0
  30. package/lib/alert/types/index.js.map +1 -0
  31. package/lib/autocomplete/Autocomplete.js +9 -0
  32. package/lib/autocomplete/Autocomplete.js.map +1 -0
  33. package/lib/autocomplete/index.js +2 -0
  34. package/lib/autocomplete/index.js.map +1 -0
  35. package/lib/autocomplete/types/index.js +2 -0
  36. package/lib/autocomplete/types/index.js.map +1 -0
  37. package/lib/badge/Badge.js +57 -0
  38. package/lib/badge/Badge.js.map +1 -0
  39. package/lib/badge/index.js +2 -0
  40. package/lib/badge/index.js.map +1 -0
  41. package/lib/badge/types/index.js +2 -0
  42. package/lib/badge/types/index.js.map +1 -0
  43. package/lib/blockquote/Blockquote.js +22 -0
  44. package/lib/blockquote/Blockquote.js.map +1 -0
  45. package/lib/blockquote/index.js +2 -0
  46. package/lib/blockquote/index.js.map +1 -0
  47. package/lib/blockquote/types/index.js +2 -0
  48. package/lib/blockquote/types/index.js.map +1 -0
  49. package/lib/breadcrumbs/Breadcrumbs.js +47 -0
  50. package/lib/breadcrumbs/Breadcrumbs.js.map +1 -0
  51. package/lib/breadcrumbs/index.js +2 -0
  52. package/lib/breadcrumbs/index.js.map +1 -0
  53. package/lib/breadcrumbs/types/index.js +2 -0
  54. package/lib/breadcrumbs/types/index.js.map +1 -0
  55. package/lib/button/Button.js +76 -0
  56. package/lib/button/Button.js.map +1 -0
  57. package/lib/button/index.js +3 -0
  58. package/lib/button/index.js.map +1 -0
  59. package/lib/button/types/index.js +2 -0
  60. package/lib/button/types/index.js.map +1 -0
  61. package/lib/button/variants/CloseButton.js +18 -0
  62. package/lib/button/variants/CloseButton.js.map +1 -0
  63. package/lib/button/variants/index.js +2 -0
  64. package/lib/button/variants/index.js.map +1 -0
  65. package/lib/button/variants/types/index.js +2 -0
  66. package/lib/button/variants/types/index.js.map +1 -0
  67. package/lib/buttongroup/ButtonGroup.js +35 -0
  68. package/lib/buttongroup/ButtonGroup.js.map +1 -0
  69. package/lib/buttongroup/index.js +2 -0
  70. package/lib/buttongroup/index.js.map +1 -0
  71. package/lib/buttongroup/types/index.js +2 -0
  72. package/lib/buttongroup/types/index.js.map +1 -0
  73. package/lib/card/Card.js +32 -0
  74. package/lib/card/Card.js.map +1 -0
  75. package/lib/card/atoms/CardBody.js +8 -0
  76. package/lib/card/atoms/CardBody.js.map +1 -0
  77. package/lib/card/atoms/CardFooter.js +9 -0
  78. package/lib/card/atoms/CardFooter.js.map +1 -0
  79. package/lib/card/atoms/CardHeader.js +8 -0
  80. package/lib/card/atoms/CardHeader.js.map +1 -0
  81. package/lib/card/atoms/CardImage.js +16 -0
  82. package/lib/card/atoms/CardImage.js.map +1 -0
  83. package/lib/card/index.js +6 -0
  84. package/lib/card/index.js.map +1 -0
  85. package/lib/card/types/index.js +2 -0
  86. package/lib/card/types/index.js.map +1 -0
  87. package/lib/carousel/Carousel.js +147 -0
  88. package/lib/carousel/Carousel.js.map +1 -0
  89. package/lib/carousel/index.js +2 -0
  90. package/lib/carousel/index.js.map +1 -0
  91. package/lib/carousel/types/index.js +2 -0
  92. package/lib/carousel/types/index.js.map +1 -0
  93. package/lib/charts/BarChart.js +24 -0
  94. package/lib/charts/BarChart.js.map +1 -0
  95. package/lib/charts/BubbleChart.js +24 -0
  96. package/lib/charts/BubbleChart.js.map +1 -0
  97. package/lib/charts/ChartWrap.js +69 -0
  98. package/lib/charts/ChartWrap.js.map +1 -0
  99. package/lib/charts/DoughnutChart.js +20 -0
  100. package/lib/charts/DoughnutChart.js.map +1 -0
  101. package/lib/charts/LineChart.js +24 -0
  102. package/lib/charts/LineChart.js.map +1 -0
  103. package/lib/charts/MixedChart.js +24 -0
  104. package/lib/charts/MixedChart.js.map +1 -0
  105. package/lib/charts/PieChart.js +20 -0
  106. package/lib/charts/PieChart.js.map +1 -0
  107. package/lib/charts/PolarAreaChart.js +23 -0
  108. package/lib/charts/PolarAreaChart.js.map +1 -0
  109. package/lib/charts/RadarChart.js +23 -0
  110. package/lib/charts/RadarChart.js.map +1 -0
  111. package/lib/charts/ScatterChart.js +24 -0
  112. package/lib/charts/ScatterChart.js.map +1 -0
  113. package/lib/charts/index.js +10 -0
  114. package/lib/charts/index.js.map +1 -0
  115. package/lib/charts/types/index.js +2 -0
  116. package/lib/charts/types/index.js.map +1 -0
  117. package/lib/checkbox/Checkbox.js +9 -0
  118. package/lib/checkbox/Checkbox.js.map +1 -0
  119. package/lib/checkbox/index.js +2 -0
  120. package/lib/checkbox/index.js.map +1 -0
  121. package/lib/checkbox/types/index.js +2 -0
  122. package/lib/checkbox/types/index.js.map +1 -0
  123. package/lib/clock/Clock.js +99 -0
  124. package/lib/clock/Clock.js.map +1 -0
  125. package/lib/clock/index.js +2 -0
  126. package/lib/clock/index.js.map +1 -0
  127. package/lib/clock/types/index.js +2 -0
  128. package/lib/clock/types/index.js.map +1 -0
  129. package/lib/codeblock/Codeblock.js +21 -0
  130. package/lib/codeblock/Codeblock.js.map +1 -0
  131. package/lib/codeblock/index.js +2 -0
  132. package/lib/codeblock/index.js.map +1 -0
  133. package/lib/codeblock/types/index.js +2 -0
  134. package/lib/codeblock/types/index.js.map +1 -0
  135. package/lib/counter/Counter.js +39 -0
  136. package/lib/counter/Counter.js.map +1 -0
  137. package/lib/counter/index.js +2 -0
  138. package/lib/counter/index.js.map +1 -0
  139. package/lib/counter/types/index.js +2 -0
  140. package/lib/counter/types/index.js.map +1 -0
  141. package/lib/datatable/DataTable.js +44 -0
  142. package/lib/datatable/DataTable.js.map +1 -0
  143. package/lib/datatable/index.js +2 -0
  144. package/lib/datatable/index.js.map +1 -0
  145. package/lib/datatable/types/index.js +2 -0
  146. package/lib/datatable/types/index.js.map +1 -0
  147. package/lib/dialog/Dialog.js +45 -0
  148. package/lib/dialog/Dialog.js.map +1 -0
  149. package/lib/dialog/hooks/useDisableBack.js +16 -0
  150. package/lib/dialog/hooks/useDisableBack.js.map +1 -0
  151. package/lib/dialog/index.js +2 -0
  152. package/lib/dialog/index.js.map +1 -0
  153. package/lib/dialog/types/index.js +2 -0
  154. package/lib/dialog/types/index.js.map +1 -0
  155. package/lib/drawer/Drawer.js +39 -0
  156. package/lib/drawer/Drawer.js.map +1 -0
  157. package/lib/drawer/index.js +2 -0
  158. package/lib/drawer/index.js.map +1 -0
  159. package/lib/drawer/types/index.js +2 -0
  160. package/lib/drawer/types/index.js.map +1 -0
  161. package/lib/dropdown/Dropdown.js +40 -0
  162. package/lib/dropdown/Dropdown.js.map +1 -0
  163. package/lib/dropdown/index.js +2 -0
  164. package/lib/dropdown/index.js.map +1 -0
  165. package/lib/dropdown/types/index.js +2 -0
  166. package/lib/dropdown/types/index.js.map +1 -0
  167. package/lib/figure/Figure.js +42 -0
  168. package/lib/figure/Figure.js.map +1 -0
  169. package/lib/figure/index.js +2 -0
  170. package/lib/figure/index.js.map +1 -0
  171. package/lib/figure/types/index.js +2 -0
  172. package/lib/figure/types/index.js.map +1 -0
  173. package/lib/fileupload/FileUpload.js +52 -0
  174. package/lib/fileupload/FileUpload.js.map +1 -0
  175. package/lib/fileupload/Files.js +22 -0
  176. package/lib/fileupload/Files.js.map +1 -0
  177. package/lib/fileupload/index.js +2 -0
  178. package/lib/fileupload/index.js.map +1 -0
  179. package/lib/fileupload/types/index.js +25 -0
  180. package/lib/fileupload/types/index.js.map +1 -0
  181. package/lib/form/Fieldset.js +9 -0
  182. package/lib/form/Fieldset.js.map +1 -0
  183. package/lib/form/Form.js +64 -0
  184. package/lib/form/Form.js.map +1 -0
  185. package/lib/form/Legend.js +21 -0
  186. package/lib/form/Legend.js.map +1 -0
  187. package/lib/form/RegisterForm.js +19 -0
  188. package/lib/form/RegisterForm.js.map +1 -0
  189. package/lib/form/index.js +5 -0
  190. package/lib/form/index.js.map +1 -0
  191. package/lib/form/types/index.js +2 -0
  192. package/lib/form/types/index.js.map +1 -0
  193. package/lib/gallery/Gallery.js +12 -0
  194. package/lib/gallery/Gallery.js.map +1 -0
  195. package/lib/gallery/index.js +2 -0
  196. package/lib/gallery/index.js.map +1 -0
  197. package/lib/gallery/types/index.js +2 -0
  198. package/lib/gallery/types/index.js.map +1 -0
  199. package/lib/heading/Heading.js +38 -0
  200. package/lib/heading/Heading.js.map +1 -0
  201. package/lib/heading/index.js +2 -0
  202. package/lib/heading/index.js.map +1 -0
  203. package/lib/heading/types/index.js +2 -0
  204. package/lib/heading/types/index.js.map +1 -0
  205. package/lib/hero/Hero.js +72 -0
  206. package/lib/hero/Hero.js.map +1 -0
  207. package/lib/hero/index.js +2 -0
  208. package/lib/hero/index.js.map +1 -0
  209. package/lib/hero/types/index.js +2 -0
  210. package/lib/hero/types/index.js.map +1 -0
  211. package/lib/icon/Icon.js +37 -0
  212. package/lib/icon/Icon.js.map +1 -0
  213. package/lib/icon/index.js +2 -0
  214. package/lib/icon/index.js.map +1 -0
  215. package/lib/icon/types/index.js +2 -0
  216. package/lib/icon/types/index.js.map +1 -0
  217. package/lib/index.js +52 -0
  218. package/lib/index.js.map +1 -0
  219. package/lib/input/Input.js +37 -0
  220. package/lib/input/Input.js.map +1 -0
  221. package/lib/input/index.js +2 -0
  222. package/lib/input/index.js.map +1 -0
  223. package/lib/input/types/index.js +2 -0
  224. package/lib/input/types/index.js.map +1 -0
  225. package/lib/label/Label.js +36 -0
  226. package/lib/label/Label.js.map +1 -0
  227. package/lib/label/index.js +2 -0
  228. package/lib/label/index.js.map +1 -0
  229. package/lib/label/types/index.js +2 -0
  230. package/lib/label/types/index.js.map +1 -0
  231. package/lib/loading/Loading.js +71 -0
  232. package/lib/loading/Loading.js.map +1 -0
  233. package/lib/loading/index.js +3 -0
  234. package/lib/loading/index.js.map +1 -0
  235. package/lib/loading/spinners/Bars.js +7 -0
  236. package/lib/loading/spinners/Bars.js.map +1 -0
  237. package/lib/loading/spinners/Clock.js +7 -0
  238. package/lib/loading/spinners/Clock.js.map +1 -0
  239. package/lib/loading/spinners/Dots.js +7 -0
  240. package/lib/loading/spinners/Dots.js.map +1 -0
  241. package/lib/loading/spinners/Pulse.js +7 -0
  242. package/lib/loading/spinners/Pulse.js.map +1 -0
  243. package/lib/loading/spinners/Spindots.js +7 -0
  244. package/lib/loading/spinners/Spindots.js.map +1 -0
  245. package/lib/loading/spinners/Spinner.js +7 -0
  246. package/lib/loading/spinners/Spinner.js.map +1 -0
  247. package/lib/loading/spinners/Wifi.js +7 -0
  248. package/lib/loading/spinners/Wifi.js.map +1 -0
  249. package/lib/loading/spinners/index.js +8 -0
  250. package/lib/loading/spinners/index.js.map +1 -0
  251. package/lib/loading/types/index.js +2 -0
  252. package/lib/loading/types/index.js.map +1 -0
  253. package/lib/map/LazyMap.js +146 -0
  254. package/lib/map/LazyMap.js.map +1 -0
  255. package/lib/map/LazyMapCircle.js +14 -0
  256. package/lib/map/LazyMapCircle.js.map +1 -0
  257. package/lib/map/LazyMapLine.js +13 -0
  258. package/lib/map/LazyMapLine.js.map +1 -0
  259. package/lib/map/LazyMapMarker.js +72 -0
  260. package/lib/map/LazyMapMarker.js.map +1 -0
  261. package/lib/map/LazyMapPolygon.js +9 -0
  262. package/lib/map/LazyMapPolygon.js.map +1 -0
  263. package/lib/map/LazyMapRectangle.js +12 -0
  264. package/lib/map/LazyMapRectangle.js.map +1 -0
  265. package/lib/map/Map.js +34 -0
  266. package/lib/map/Map.js.map +1 -0
  267. package/lib/map/MapCircle.js +34 -0
  268. package/lib/map/MapCircle.js.map +1 -0
  269. package/lib/map/MapLine.js +34 -0
  270. package/lib/map/MapLine.js.map +1 -0
  271. package/lib/map/MapMarker.js +34 -0
  272. package/lib/map/MapMarker.js.map +1 -0
  273. package/lib/map/MapPolygon.js +34 -0
  274. package/lib/map/MapPolygon.js.map +1 -0
  275. package/lib/map/MapRectangle.js +34 -0
  276. package/lib/map/MapRectangle.js.map +1 -0
  277. package/lib/map/index.js +7 -0
  278. package/lib/map/index.js.map +1 -0
  279. package/lib/map/tileOptions.js +33 -0
  280. package/lib/map/tileOptions.js.map +1 -0
  281. package/lib/map/types/index.js +2 -0
  282. package/lib/map/types/index.js.map +1 -0
  283. package/lib/modal/Modal.js +33 -0
  284. package/lib/modal/Modal.js.map +1 -0
  285. package/lib/modal/hooks/useDisableBack.js +14 -0
  286. package/lib/modal/hooks/useDisableBack.js.map +1 -0
  287. package/lib/modal/index.js +2 -0
  288. package/lib/modal/index.js.map +1 -0
  289. package/lib/modal/types/index.js +2 -0
  290. package/lib/modal/types/index.js.map +1 -0
  291. package/lib/navbar/NavBar.js +17 -0
  292. package/lib/navbar/NavBar.js.map +1 -0
  293. package/lib/navbar/NavBrand.js +9 -0
  294. package/lib/navbar/NavBrand.js.map +1 -0
  295. package/lib/navbar/NavLinks.js +27 -0
  296. package/lib/navbar/NavLinks.js.map +1 -0
  297. package/lib/navbar/index.js +2 -0
  298. package/lib/navbar/index.js.map +1 -0
  299. package/lib/navbar/types/index.js +2 -0
  300. package/lib/navbar/types/index.js.map +1 -0
  301. package/lib/pagination/Pagination.js +42 -0
  302. package/lib/pagination/Pagination.js.map +1 -0
  303. package/lib/pagination/index.js +2 -0
  304. package/lib/pagination/index.js.map +1 -0
  305. package/lib/pagination/types/index.js +2 -0
  306. package/lib/pagination/types/index.js.map +1 -0
  307. package/lib/passwordinput/PasswordInput.js +22 -0
  308. package/lib/passwordinput/PasswordInput.js.map +1 -0
  309. package/lib/passwordinput/index.js +2 -0
  310. package/lib/passwordinput/index.js.map +1 -0
  311. package/lib/passwordinput/types/index.js +2 -0
  312. package/lib/passwordinput/types/index.js.map +1 -0
  313. package/lib/pictogram/Pictogram.js +21 -0
  314. package/lib/pictogram/Pictogram.js.map +1 -0
  315. package/lib/pictogram/index.js +2 -0
  316. package/lib/pictogram/index.js.map +1 -0
  317. package/lib/pictogram/types/index.js +2 -0
  318. package/lib/pictogram/types/index.js.map +1 -0
  319. package/lib/placeholder/PlaceHolder.js +28 -0
  320. package/lib/placeholder/PlaceHolder.js.map +1 -0
  321. package/lib/placeholder/index.js +2 -0
  322. package/lib/placeholder/index.js.map +1 -0
  323. package/lib/placeholder/types/index.js +2 -0
  324. package/lib/placeholder/types/index.js.map +1 -0
  325. package/lib/progress/Progress.js +26 -0
  326. package/lib/progress/Progress.js.map +1 -0
  327. package/lib/progress/index.js +2 -0
  328. package/lib/progress/index.js.map +1 -0
  329. package/lib/progress/types/index.js +2 -0
  330. package/lib/progress/types/index.js.map +1 -0
  331. package/lib/radiogroup/RadioGroup.js +28 -0
  332. package/lib/radiogroup/RadioGroup.js.map +1 -0
  333. package/lib/radiogroup/index.js +2 -0
  334. package/lib/radiogroup/index.js.map +1 -0
  335. package/lib/radiogroup/types/index.js +2 -0
  336. package/lib/radiogroup/types/index.js.map +1 -0
  337. package/lib/rangeinput/RangeInput.js +45 -0
  338. package/lib/rangeinput/RangeInput.js.map +1 -0
  339. package/lib/rangeinput/index.js +2 -0
  340. package/lib/rangeinput/index.js.map +1 -0
  341. package/lib/rangeinput/types/index.js +2 -0
  342. package/lib/rangeinput/types/index.js.map +1 -0
  343. package/lib/ratings/Ratings.js +25 -0
  344. package/lib/ratings/Ratings.js.map +1 -0
  345. package/lib/ratings/index.js +2 -0
  346. package/lib/ratings/index.js.map +1 -0
  347. package/lib/ratings/types/index.js +2 -0
  348. package/lib/ratings/types/index.js.map +1 -0
  349. package/lib/searchinput/SearchInput.js +22 -0
  350. package/lib/searchinput/SearchInput.js.map +1 -0
  351. package/lib/searchinput/index.js +2 -0
  352. package/lib/searchinput/index.js.map +1 -0
  353. package/lib/searchinput/types/index.js +2 -0
  354. package/lib/searchinput/types/index.js.map +1 -0
  355. package/lib/select/Select.js +34 -0
  356. package/lib/select/Select.js.map +1 -0
  357. package/lib/select/index.js +2 -0
  358. package/lib/select/index.js.map +1 -0
  359. package/lib/select/types/index.js +2 -0
  360. package/lib/select/types/index.js.map +1 -0
  361. package/lib/sidebar/Sidebar.js +56 -0
  362. package/lib/sidebar/Sidebar.js.map +1 -0
  363. package/lib/sidebar/index.js +2 -0
  364. package/lib/sidebar/index.js.map +1 -0
  365. package/lib/sidebar/types/index.js +2 -0
  366. package/lib/sidebar/types/index.js.map +1 -0
  367. package/lib/socialshare/SocialShare.js +64 -0
  368. package/lib/socialshare/SocialShare.js.map +1 -0
  369. package/lib/socialshare/buttons/BlueskyButton.js +18 -0
  370. package/lib/socialshare/buttons/BlueskyButton.js.map +1 -0
  371. package/lib/socialshare/buttons/EmailButton.js +16 -0
  372. package/lib/socialshare/buttons/EmailButton.js.map +1 -0
  373. package/lib/socialshare/buttons/FacebookButton.js +16 -0
  374. package/lib/socialshare/buttons/FacebookButton.js.map +1 -0
  375. package/lib/socialshare/buttons/LinkedinButton.js +16 -0
  376. package/lib/socialshare/buttons/LinkedinButton.js.map +1 -0
  377. package/lib/socialshare/buttons/PinterestButton.js +19 -0
  378. package/lib/socialshare/buttons/PinterestButton.js.map +1 -0
  379. package/lib/socialshare/buttons/RedditButton.js +19 -0
  380. package/lib/socialshare/buttons/RedditButton.js.map +1 -0
  381. package/lib/socialshare/buttons/SlackButton.js +17 -0
  382. package/lib/socialshare/buttons/SlackButton.js.map +1 -0
  383. package/lib/socialshare/buttons/TelegramButton.js +19 -0
  384. package/lib/socialshare/buttons/TelegramButton.js.map +1 -0
  385. package/lib/socialshare/buttons/WhatsappButton.js +16 -0
  386. package/lib/socialshare/buttons/WhatsappButton.js.map +1 -0
  387. package/lib/socialshare/buttons/XButton.js +19 -0
  388. package/lib/socialshare/buttons/XButton.js.map +1 -0
  389. package/lib/socialshare/index.js +12 -0
  390. package/lib/socialshare/index.js.map +1 -0
  391. package/lib/socialshare/types/index.js +2 -0
  392. package/lib/socialshare/types/index.js.map +1 -0
  393. package/lib/statbar/StatBar.js +15 -0
  394. package/lib/statbar/StatBar.js.map +1 -0
  395. package/lib/statbar/index.js +2 -0
  396. package/lib/statbar/index.js.map +1 -0
  397. package/lib/statbar/types/index.js +2 -0
  398. package/lib/statbar/types/index.js.map +1 -0
  399. package/lib/switch/Switch.js +55 -0
  400. package/lib/switch/Switch.js.map +1 -0
  401. package/lib/switch/index.js +2 -0
  402. package/lib/switch/index.js.map +1 -0
  403. package/lib/switch/types/index.js +2 -0
  404. package/lib/switch/types/index.js.map +1 -0
  405. package/lib/tabs/Tab.js +6 -0
  406. package/lib/tabs/Tab.js.map +1 -0
  407. package/lib/tabs/TabBar.js +18 -0
  408. package/lib/tabs/TabBar.js.map +1 -0
  409. package/lib/tabs/Tabs.js +59 -0
  410. package/lib/tabs/Tabs.js.map +1 -0
  411. package/lib/tabs/index.js +2 -0
  412. package/lib/tabs/index.js.map +1 -0
  413. package/lib/tabs/types/index.js +2 -0
  414. package/lib/tabs/types/index.js.map +1 -0
  415. package/lib/textarea/TextArea.js +17 -0
  416. package/lib/textarea/TextArea.js.map +1 -0
  417. package/lib/textarea/index.js +2 -0
  418. package/lib/textarea/index.js.map +1 -0
  419. package/lib/textarea/types/index.js +2 -0
  420. package/lib/textarea/types/index.js.map +1 -0
  421. package/lib/textinput/TextInput.js +18 -0
  422. package/lib/textinput/TextInput.js.map +1 -0
  423. package/lib/textinput/index.js +2 -0
  424. package/lib/textinput/index.js.map +1 -0
  425. package/lib/textinput/types/index.js +2 -0
  426. package/lib/textinput/types/index.js.map +1 -0
  427. package/lib/ticker/Ticker.js +21 -0
  428. package/lib/ticker/Ticker.js.map +1 -0
  429. package/lib/ticker/index.js +2 -0
  430. package/lib/ticker/index.js.map +1 -0
  431. package/lib/ticker/types/index.js +2 -0
  432. package/lib/ticker/types/index.js.map +1 -0
  433. package/lib/toast/Toast.js +76 -0
  434. package/lib/toast/Toast.js.map +1 -0
  435. package/lib/toast/index.js +2 -0
  436. package/lib/toast/index.js.map +1 -0
  437. package/lib/toast/types/index.js +2 -0
  438. package/lib/toast/types/index.js.map +1 -0
  439. package/lib/twitterembed/TwitterEmbed.js +123 -0
  440. package/lib/twitterembed/TwitterEmbed.js.map +1 -0
  441. package/lib/twitterembed/index.js +2 -0
  442. package/lib/twitterembed/index.js.map +1 -0
  443. package/lib/twitterembed/types/index.js +2 -0
  444. package/lib/twitterembed/types/index.js.map +1 -0
  445. package/lib/videoplayer/Video.js +130 -0
  446. package/lib/videoplayer/Video.js.map +1 -0
  447. package/lib/videoplayer/VideoControls.js +63 -0
  448. package/lib/videoplayer/VideoControls.js.map +1 -0
  449. package/lib/videoplayer/VideoPlayer.js +66 -0
  450. package/lib/videoplayer/VideoPlayer.js.map +1 -0
  451. package/lib/videoplayer/VideoTracks.js +9 -0
  452. package/lib/videoplayer/VideoTracks.js.map +1 -0
  453. package/lib/videoplayer/controls/CaptionsControl.js +15 -0
  454. package/lib/videoplayer/controls/CaptionsControl.js.map +1 -0
  455. package/lib/videoplayer/controls/FullscreenControl.js +8 -0
  456. package/lib/videoplayer/controls/FullscreenControl.js.map +1 -0
  457. package/lib/videoplayer/controls/PipControl.js +8 -0
  458. package/lib/videoplayer/controls/PipControl.js.map +1 -0
  459. package/lib/videoplayer/controls/SoundControl.js +8 -0
  460. package/lib/videoplayer/controls/SoundControl.js.map +1 -0
  461. package/lib/videoplayer/controls/index.js +5 -0
  462. package/lib/videoplayer/controls/index.js.map +1 -0
  463. package/lib/videoplayer/index.js +3 -0
  464. package/lib/videoplayer/index.js.map +1 -0
  465. package/lib/videoplayer/types/index.js +2 -0
  466. package/lib/videoplayer/types/index.js.map +1 -0
  467. package/lib/youtubeembed/YoutubeEmbed.js +33 -0
  468. package/lib/youtubeembed/YoutubeEmbed.js.map +1 -0
  469. package/lib/youtubeembed/index.js +2 -0
  470. package/lib/youtubeembed/index.js.map +1 -0
  471. package/lib/youtubeembed/types/index.js +2 -0
  472. package/lib/youtubeembed/types/index.js.map +1 -0
  473. package/package.json +39 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DataTable.js","sourceRoot":"","sources":["../../../src/ui/datatable/DataTable.tsx"],"names":[],"mappings":"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","sourcesContent":["\"use client\";\n\nimport { useState, useCallback, useRef } from \"react\";\nimport { twMerge } from \"tailwind-merge\";\nimport { titleCase } from \"@smitch/js-lib\";\n\nimport { DataTableProps } from \"./types\";\n\nconst DataTable = ({\n className,\n data,\n ignore,\n caption,\n dividersX,\n dividersY,\n sortable = true,\n}: DataTableProps) => {\n const [tabledata, setTabledata] = useState(data);\n const [sortby, setSortby] = useState(\"\");\n const [ascending, setAscending] = useState(true);\n const scrollRef = useRef<HTMLDivElement>(null);\n\n const isIgnore = (key: any) => {\n if (!ignore?.length) return false;\n if (ignore.indexOf(key) !== -1) return true;\n return false;\n };\n\n const sort = useCallback(\n (key: string) => {\n const asc = key === sortby ? !ascending : true;\n setTabledata(\n [...data].sort((a, b) => (asc ? (a[key] > b[key] ? 1 : -1) : a[key] < b[key] ? 1 : -1))\n );\n setAscending(asc);\n setSortby(key);\n\n if (scrollRef.current) {\n scrollRef.current.scrollTop = 0;\n }\n },\n [data, ascending, sortby]\n );\n\n return (\n <div ref={scrollRef} className=\"overflow-x-auto max-h-96 md:max-h-none\">\n <table\n className={twMerge(\n `table table-fixed bg-white dark:bg-black group dark:border-slate-800 border text-base md:text-lg lg:text-xl ${\n dividersX ? \"dividersX\" : \"\"\n } ${dividersY ? \"dividersY\" : \"\"}`,\n className\n )}\n >\n {caption && (\n <caption className=\"text-start text-lg md:text-xl lg:text-2x md:pb-2\">{caption}</caption>\n )}\n <thead className=\"sticky top-0 bg-slate-200 dark:bg-slate-600\">\n <tr className=\"group-[.dividersX]:border-b-2 dark:border-slate-800\">\n {Object.keys(tabledata[0]).map(\n (key: any, index) =>\n !isIgnore(key) && (\n <th\n key={index}\n onClick={() => sort(key)}\n className={`p-2 group-[.dividersY]:border-r dark:border-slate-800\n\t\t\t\t\t\t\t\t\t\t\t${typeof data[0][key] === \"number\" ? \"justify-end text-end\" : \"justify-start text-start\"}\n\t\t\t\t\t\t\t\t\t\t`}\n >\n {sortable ? (\n <span\n className={`cursor-pointer border-b border-dashed border-current hover:text-info ${\n key === sortby ? \"text-info\" : \"\"\n }`}\n >\n {titleCase(key)}\n </span>\n ) : (\n titleCase(key)\n )}\n </th>\n )\n )}\n </tr>\n </thead>\n <tbody>\n {tabledata.map((obj, index) => (\n <tr className=\"group-[.dividersX]:border-b dark:border-slate-800\" key={index}>\n {Object.keys(obj).map(\n (key, index) =>\n !isIgnore(key) && (\n <td\n key={index}\n className={`p-2 group-[.dividersY]:border-r dark:border-slate-800\n\t\t\t\t\t\t\t\t\t\t\t\t${typeof obj[key] === \"number\" ? \"justify-end text-end\" : \"justify-start text-start\"}`}\n >\n {obj[key]}\n </td>\n )\n )}\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n );\n};\n\nexport default DataTable;\n"]}
@@ -0,0 +1,2 @@
1
+ export { default as DataTable } from './DataTable';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ui/datatable/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAA","sourcesContent":["export { default as DataTable } from './DataTable'\n"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/ui/datatable/types/index.ts"],"names":[],"mappings":"","sourcesContent":["export interface DataTableProps {\n\tdata: any[]\n\tignore?: string[]\n\tcaption?: string\n\tdividersX?: boolean\n\tdividersY?: boolean\n\tsortable?: boolean\n\tclassName?: string\n\tstyle?: React.CSSProperties\n}\n"]}
@@ -0,0 +1,45 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useEffect, useRef } from "react";
4
+ import { CloseButton } from "..";
5
+ import { useDisableBack } from "./hooks/useDisableBack";
6
+ var Dialog = function (_a) {
7
+ var _b = _a.open, open = _b === void 0 ? false : _b, _c = _a.modal, modal = _c === void 0 ? true : _c, _d = _a.showClose, showClose = _d === void 0 ? true : _d, onClose = _a.onClose, title = _a.title, _e = _a.titleSize, titleSize = _e === void 0 ? "lg" : _e, _f = _a.closeBtnSize, closeBtnSize = _f === void 0 ? "md" : _f, _g = _a.titleBold, titleBold = _g === void 0 ? false : _g, children = _a.children;
8
+ useDisableBack(modal);
9
+ var dialog = useRef(null);
10
+ useEffect(function () {
11
+ var dialogRef = dialog.current;
12
+ var handleClose = function () {
13
+ if (modal)
14
+ document.body.style.overflow = "";
15
+ };
16
+ if (dialogRef)
17
+ dialogRef.addEventListener("close", handleClose, false);
18
+ var handleEscape = function (e) {
19
+ if (e.key === "Escape")
20
+ onClose();
21
+ };
22
+ document.addEventListener("keyup", handleEscape, false);
23
+ if (open) {
24
+ if (modal) {
25
+ dialogRef.showModal();
26
+ document.body.style.overflow = "hidden";
27
+ }
28
+ else
29
+ dialogRef.show();
30
+ }
31
+ else
32
+ dialogRef.close();
33
+ return function () {
34
+ handleClose();
35
+ if (dialogRef)
36
+ dialogRef.removeEventListener("close", handleClose, false);
37
+ document.removeEventListener("keyup", handleEscape, false);
38
+ };
39
+ }, [open, modal, onClose]);
40
+ return (_jsxs("dialog", { id: "dialog", ref: dialog, className: "dialog backdrop:bg-black dark:backdrop:bg-light backdrop:opacity-60 border-none ".concat(modal
41
+ ? "shadow-none bg-light dark:bg-dark dark:text-light"
42
+ : "shadow-md shadow-dark dark:shadow-light bg-dark text-light dark:bg-light dark:text-dark rounded-md"), children: [_jsxs("div", { className: "dialog-header p-4", children: [title && (_jsx("h2", { className: "dialog-title ".concat(modal ? "text-center" : "text-start", " text-").concat(titleSize, " ").concat(titleBold ? "font-bold" : "font-normal"), children: title })), showClose && (_jsx(CloseButton, { onClick: onClose, layout: "circle", size: closeBtnSize, className: "absolute right-1 top-1" }))] }), _jsx("div", { className: "dialog-content ".concat(modal ? "p-0" : "p-4", " pt-0 min-w-[280px] max-w-md"), children: children })] }));
43
+ };
44
+ export default Dialog;
45
+ //# sourceMappingURL=Dialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Dialog.js","sourceRoot":"","sources":["../../../src/ui/dialog/Dialog.tsx"],"names":[],"mappings":"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","sourcesContent":["\"use client\";\n\nimport React, { useEffect, useRef } from \"react\";\nimport { DialogProps } from \"./types\";\nimport { CloseButton } from \"..\";\n\nimport { useDisableBack } from \"./hooks/useDisableBack\";\n\nconst Dialog = ({\n open = false,\n modal = true,\n showClose = true,\n onClose,\n title,\n titleSize = \"lg\",\n closeBtnSize = \"md\",\n titleBold = false,\n children,\n}: DialogProps) => {\n useDisableBack(modal);\n const dialog = useRef<HTMLDialogElement>(null!);\n\n useEffect(() => {\n const dialogRef = dialog.current;\n const handleClose = () => {\n if (modal) document.body.style.overflow = \"\";\n };\n\n if (dialogRef) dialogRef.addEventListener(\"close\", handleClose, false);\n\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") onClose();\n };\n\n document.addEventListener(\"keyup\", handleEscape, false);\n\n if (open) {\n if (modal) {\n dialogRef.showModal();\n document.body.style.overflow = \"hidden\";\n } else dialogRef.show();\n } else dialogRef.close();\n\n return () => {\n handleClose();\n if (dialogRef) dialogRef.removeEventListener(\"close\", handleClose, false);\n document.removeEventListener(\"keyup\", handleEscape, false);\n };\n }, [open, modal, onClose]);\n\n return (\n <dialog\n id=\"dialog\"\n ref={dialog}\n className={`dialog backdrop:bg-black dark:backdrop:bg-light backdrop:opacity-60 border-none ${\n modal\n ? \"shadow-none bg-light dark:bg-dark dark:text-light\"\n : \"shadow-md shadow-dark dark:shadow-light bg-dark text-light dark:bg-light dark:text-dark rounded-md\"\n }`}\n >\n <div className=\"dialog-header p-4\">\n {title && (\n <h2\n className={`dialog-title ${modal ? \"text-center\" : \"text-start\"} text-${titleSize} ${\n titleBold ? \"font-bold\" : \"font-normal\"\n }`}\n >\n {title}\n </h2>\n )}\n {showClose && (\n <CloseButton\n onClick={onClose}\n layout=\"circle\"\n size={closeBtnSize}\n className={`absolute right-1 top-1`}\n />\n )}\n </div>\n <div className={`dialog-content ${modal ? \"p-0\" : \"p-4\"} pt-0 min-w-[280px] max-w-md`}>\n {children}\n </div>\n </dialog>\n );\n};\n\nexport default Dialog;\n"]}
@@ -0,0 +1,16 @@
1
+ import { useEffect } from 'react';
2
+ export var useDisableBack = function (usehook) {
3
+ useEffect(function () {
4
+ if (!usehook)
5
+ return;
6
+ window.history.pushState(null, document.title, window.location.href);
7
+ function onBackButtonEvent(e) {
8
+ e.preventDefault();
9
+ }
10
+ window.addEventListener('popstate', onBackButtonEvent);
11
+ return function () {
12
+ window.removeEventListener('popstate', onBackButtonEvent);
13
+ };
14
+ }, [usehook]);
15
+ };
16
+ //# sourceMappingURL=useDisableBack.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDisableBack.js","sourceRoot":"","sources":["../../../../src/ui/dialog/hooks/useDisableBack.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEjC,MAAM,CAAC,IAAM,cAAc,GAAG,UAAC,OAAgB;IAC9C,SAAS,CAAC;QACT,IAAI,CAAC,OAAO;YAAE,OAAM;QACpB,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QAEpE,SAAS,iBAAiB,CAAC,CAAQ;YAClC,CAAC,CAAC,cAAc,EAAE,CAAA;QACnB,CAAC;QAED,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAA;QAEtD,OAAO;YACN,MAAM,CAAC,mBAAmB,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAA;QAC1D,CAAC,CAAA;IACF,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAA;AACd,CAAC,CAAA","sourcesContent":["import { useEffect } from 'react'\n\nexport const useDisableBack = (usehook: boolean) => {\n\tuseEffect(() => {\n\t\tif (!usehook) return\n\t\twindow.history.pushState(null, document.title, window.location.href)\n\n\t\tfunction onBackButtonEvent(e: Event) {\n\t\t\te.preventDefault()\n\t\t}\n\n\t\twindow.addEventListener('popstate', onBackButtonEvent)\n\n\t\treturn () => {\n\t\t\twindow.removeEventListener('popstate', onBackButtonEvent)\n\t\t}\n\t}, [usehook])\n}\n"]}
@@ -0,0 +1,2 @@
1
+ export { default as Dialog } from './Dialog';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ui/dialog/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAA","sourcesContent":["export { default as Dialog } from './Dialog'\n"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/ui/dialog/types/index.ts"],"names":[],"mappings":"","sourcesContent":["export interface DialogProps extends React.HTMLAttributes<HTMLDialogElement> {\n\topen: boolean\n\tmodal?: boolean\n\tshowClose?: boolean\n\tonClose: () => void\n\tsubmit?: (e: React.FormEvent<HTMLFormElement>) => void\n\ttitle?: string\n\ttitleSize?: 'sm' | 'md' | 'lg' | 'xl'\n\tcloseBtnSize?: 'sm' | 'md' | 'lg' | 'xl'\n\ttitleBold?: boolean\n\tchildren: React.ReactNode\n}\n"]}
@@ -0,0 +1,39 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ import { useState, useEffect, useMemo } from "react";
4
+ import { twMerge } from "tailwind-merge";
5
+ import { CloseButton } from "..";
6
+ var positions = {
7
+ top: "top-0",
8
+ bottom: "bottom-0",
9
+ };
10
+ var drawerClasses = "fixed left-0 right-0 z-100 min-h-min w-full max-h-screen pb-4 bg-light text-dark dark:bg-dark dark:text-light duration-500";
11
+ var Drawer = function (_a) {
12
+ var _b = _a.open, open = _b === void 0 ? false : _b, _c = _a.position, position = _c === void 0 ? "bottom" : _c, _d = _a.backdrop, backdrop = _d === void 0 ? false : _d, _e = _a.className, className = _e === void 0 ? "" : _e, style = _a.style, children = _a.children, onClose = _a.onClose;
13
+ var _f = useState(false), show = _f[0], setShow = _f[1];
14
+ useEffect(function () {
15
+ if (open) {
16
+ setShow(true);
17
+ document.body.style.overflow = "hidden";
18
+ }
19
+ else {
20
+ setShow(false);
21
+ document.body.style.overflow = "";
22
+ }
23
+ return function () {
24
+ setShow(false);
25
+ document.body.style.overflow = "";
26
+ };
27
+ }, [open]);
28
+ var positionClasses = useMemo(function () { return positions[position]; }, [position]);
29
+ var close = function () {
30
+ onClose(false);
31
+ };
32
+ return (_jsxs(_Fragment, { children: [backdrop && (_jsx("div", { className: "backdrop bg-dark dark:bg-neutral fixed top-0 right-0 bottom-0 left-0 w-full ".concat(show ? "block opacity-50" : "hidden opacity-0", " transition-opacity duration-500"), onClick: close })), _jsxs("aside", { className: twMerge("drawer group ".concat(drawerClasses, " ").concat(positionClasses, " ").concat(show
33
+ ? "translate-y-0"
34
+ : position === "bottom"
35
+ ? "translate-y-full"
36
+ : "-translate-y-full"), className), style: style, children: [_jsx("header", { className: "sidebar-header", children: _jsx(CloseButton, { onClick: close, layout: "circle", size: "md", className: "fixed top-3 right-3 !p-0" }) }), _jsx("div", { className: "sidebar-content max-h-full overflow-y-auto p-4 pt-8", children: children })] })] }));
37
+ };
38
+ export default Drawer;
39
+ //# sourceMappingURL=Drawer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Drawer.js","sourceRoot":"","sources":["../../../src/ui/drawer/Drawer.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAE5D,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEzC,OAAO,EAAE,WAAW,EAAE,MAAM,IAAI,CAAC;AAGjC,IAAM,SAAS,GAAG;IAChB,GAAG,EAAE,OAAO;IACZ,MAAM,EAAE,UAAU;CACnB,CAAC;AAEF,IAAM,aAAa,GACjB,4HAA4H,CAAC;AAE/H,IAAM,MAAM,GAAG,UAAC,EAQF;QAPZ,YAAY,EAAZ,IAAI,mBAAG,KAAK,KAAA,EACZ,gBAAmB,EAAnB,QAAQ,mBAAG,QAAQ,KAAA,EACnB,gBAAgB,EAAhB,QAAQ,mBAAG,KAAK,KAAA,EAChB,iBAAc,EAAd,SAAS,mBAAG,EAAE,KAAA,EACd,KAAK,WAAA,EACL,QAAQ,cAAA,EACR,OAAO,aAAA;IAED,IAAA,KAAkB,QAAQ,CAAU,KAAK,CAAC,EAAzC,IAAI,QAAA,EAAE,OAAO,QAA4B,CAAC;IAEjD,SAAS,CAAC;QACR,IAAI,IAAI,EAAE,CAAC;YACT,OAAO,CAAC,IAAI,CAAC,CAAC;YACd,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC1C,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,CAAC;YACf,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC;QACpC,CAAC;QAED,OAAO;YACL,OAAO,CAAC,KAAK,CAAC,CAAC;YACf,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC;QACpC,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAEX,IAAM,eAAe,GAAG,OAAO,CAAC,cAAM,OAAA,SAAS,CAAC,QAAQ,CAAC,EAAnB,CAAmB,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEvE,IAAM,KAAK,GAAG;QACZ,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC,CAAC;IAEF,OAAO,CACL,8BACG,QAAQ,IAAI,CACX,cACE,SAAS,EAAE,sFACT,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,kBAAkB,qCACd,EAClC,OAAO,EAAE,KAAK,GACT,CACR,EACD,iBACE,SAAS,EAAE,OAAO,CAChB,uBAAgB,aAAa,cAAI,eAAe,cAC9C,IAAI;oBACF,CAAC,CAAC,eAAe;oBACjB,CAAC,CAAC,QAAQ,KAAK,QAAQ;wBACvB,CAAC,CAAC,kBAAkB;wBACpB,CAAC,CAAC,mBAAmB,CACvB,EACF,SAAS,CACV,EACD,KAAK,EAAE,KAAK,aAEZ,iBAAQ,SAAS,EAAE,gBAAgB,YACjC,KAAC,WAAW,IACV,OAAO,EAAE,KAAK,EACd,MAAM,EAAC,QAAQ,EACf,IAAI,EAAC,IAAI,EACT,SAAS,EAAE,0BAA0B,GACrC,GACK,EACT,cAAK,SAAS,EAAE,qDAAqD,YAAG,QAAQ,GAAO,IACjF,IACP,CACJ,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,MAAM,CAAC","sourcesContent":["\"use client\";\n\nimport React, { useState, useEffect, useMemo } from \"react\";\n\nimport { twMerge } from \"tailwind-merge\";\n\nimport { CloseButton } from \"..\";\nimport { DrawerProps } from \"./types\";\n\nconst positions = {\n top: \"top-0\",\n bottom: \"bottom-0\",\n};\n\nconst drawerClasses =\n \"fixed left-0 right-0 z-100 min-h-min w-full max-h-screen pb-4 bg-light text-dark dark:bg-dark dark:text-light duration-500\";\n\nconst Drawer = ({\n open = false,\n position = \"bottom\",\n backdrop = false,\n className = \"\",\n style,\n children,\n onClose,\n}: DrawerProps) => {\n const [show, setShow] = useState<boolean>(false);\n\n useEffect(() => {\n if (open) {\n setShow(true);\n document.body.style.overflow = \"hidden\";\n } else {\n setShow(false);\n document.body.style.overflow = \"\";\n }\n\n return () => {\n setShow(false);\n document.body.style.overflow = \"\";\n };\n }, [open]);\n\n const positionClasses = useMemo(() => positions[position], [position]);\n\n const close = () => {\n onClose(false);\n };\n\n return (\n <>\n {backdrop && (\n <div\n className={`backdrop bg-dark dark:bg-neutral fixed top-0 right-0 bottom-0 left-0 w-full ${\n show ? \"block opacity-50\" : \"hidden opacity-0\"\n } transition-opacity duration-500`}\n onClick={close}\n ></div>\n )}\n <aside\n className={twMerge(\n `drawer group ${drawerClasses} ${positionClasses} ${\n show\n ? \"translate-y-0\"\n : position === \"bottom\"\n ? \"translate-y-full\"\n : \"-translate-y-full\"\n }`,\n className\n )}\n style={style}\n >\n <header className={`sidebar-header`}>\n <CloseButton\n onClick={close}\n layout=\"circle\"\n size=\"md\"\n className={`fixed top-3 right-3 !p-0`}\n />\n </header>\n <div className={`sidebar-content max-h-full overflow-y-auto p-4 pt-8`}>{children}</div>\n </aside>\n </>\n );\n};\n\nexport default Drawer;\n"]}
@@ -0,0 +1,2 @@
1
+ export { default as Drawer } from './Drawer';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ui/drawer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAA","sourcesContent":["export { default as Drawer } from './Drawer'\n"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/ui/drawer/types/index.ts"],"names":[],"mappings":"","sourcesContent":["export interface DrawerProps {\n\tclassName?: string // Optional CSS class for styling\n\tstyle?: React.CSSProperties // Inline styles\n\tchildren: React.ReactNode // Content inside the drawer\n\topen: boolean // Controls drawer open state\n\tbackdrop?: boolean // Enables backdrop overlay\n\tposition?: 'top' | 'bottom' // Sets drawer position\n\tonClose: (open: boolean) => void // Callback for closing the drawer\n}\n"]}
@@ -0,0 +1,40 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import Link from "next/link";
4
+ import { useState, useMemo } from "react";
5
+ import { twMerge } from "tailwind-merge";
6
+ import { Button } from "..";
7
+ import { HiChevronDown, HiChevronUp } from "react-icons/hi";
8
+ var sizes = {
9
+ md: "text-md",
10
+ lg: "text-lg",
11
+ xl: "text-xl",
12
+ };
13
+ var showrapClasses = "min-w-[100px]";
14
+ var Dropdown = function (_a) {
15
+ var _b = _a.size, size = _b === void 0 ? "md" : _b, _c = _a.className, className = _c === void 0 ? "" : _c, style = _a.style, links = _a.links, _d = _a.prefetch, prefetch = _d === void 0 ? false : _d, _e = _a.buttonLayout, buttonLayout = _e === void 0 ? "circle" : _e, _f = _a.buttonBackground, buttonBackground = _f === void 0 ? "transparent" : _f, _g = _a.buttonColor, buttonColor = _g === void 0 ? "current" : _g;
16
+ var _h = useState(""), show = _h[0], setShow = _h[1];
17
+ var sizeClasses = useMemo(function () { return sizes[size]; }, [size]);
18
+ var handleClick = function (e, label) {
19
+ e.preventDefault();
20
+ e.stopPropagation();
21
+ label === show ? closeNav() : openNav(label);
22
+ };
23
+ var handleBlur = function (e) {
24
+ e.preventDefault();
25
+ closeNav();
26
+ };
27
+ var openNav = function (label) {
28
+ setTimeout(function () {
29
+ setShow(label);
30
+ }, 0);
31
+ };
32
+ var closeNav = function () {
33
+ setTimeout(function () {
34
+ setShow("");
35
+ }, 0);
36
+ };
37
+ return (_jsx("div", { className: twMerge("dropdown group inline-block relative ".concat(sizeClasses), className), style: style, children: _jsx("ul", { className: "dropdown-list flex flex-col gap-4 md:flex-row;", children: links.map(function (link) { return (_jsxs("li", { className: "flex flex-wrap items-center group whitespace-nowrap ".concat(show === link.label ? "show" : ""), children: [_jsxs(Link, { href: link.href, onClick: closeNav, prefetch: prefetch, className: "dropdown-link flex flex-row items-center gap-2 no-underline hover:!text-current", children: [link.label, " ", link.links && (_jsxs(Button, { className: "menu-btn !p-1", onClick: function (e) { return handleClick(e, link.label); }, onBlur: function (e) { return handleBlur(e); }, title: "Toggle Menu", btnBackground: buttonBackground, btnColor: buttonColor, size: size, layout: buttonLayout, children: [show === link.label ? _jsx(HiChevronUp, {}) : _jsx(HiChevronDown, {}), _jsx("span", { className: "sr-only", children: "Toggle dropdown menu" })] }))] }), link.links && (_jsx("div", { className: "absolute left-0 -bottom-2 w-full", children: _jsx("div", { className: "wrap absolute -right-4 -left-4 top-full z-50 overflow-x-hidden text-base leading-7 ".concat(show ? showrapClasses : "max-h-0"), children: _jsx("ul", { className: "ms-0 block w-full border bg-dark text-light dark:bg-light dark:text-dark p-4", children: link.links.map(function (sub) { return (_jsxs("li", { children: [_jsx(Link, { href: sub.href, className: "", prefetch: prefetch, children: sub.label }, sub.label), sub.links && (_jsx("ul", { children: sub.links.map(function (subsub) { return (_jsx("li", { className: "indent-2", children: _jsx(Link, { href: subsub.href, className: "", prefetch: prefetch, children: subsub.label }) }, subsub.label)); }) }))] }, sub.label)); }) }) }) }))] }, link.label)); }) }) }));
38
+ };
39
+ export default Dropdown;
40
+ //# sourceMappingURL=Dropdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Dropdown.js","sourceRoot":"","sources":["../../../src/ui/dropdown/Dropdown.tsx"],"names":[],"mappings":"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","sourcesContent":["\"use client\";\n\nimport Link from \"next/link\";\nimport React, { useState, useMemo } from \"react\";\n\nimport { twMerge } from \"tailwind-merge\";\n\nimport { Button } from \"..\";\n\nimport { HiChevronDown, HiChevronUp } from \"react-icons/hi\";\n\nimport { DropdownProps, LinksProps } from \"./types\";\n\nconst sizes = {\n md: \"text-md\",\n lg: \"text-lg\",\n xl: \"text-xl\",\n};\n\nconst showrapClasses = \"min-w-[100px]\";\n\nconst Dropdown = ({\n size = \"md\",\n className = \"\",\n style,\n links,\n prefetch = false,\n buttonLayout = \"circle\",\n buttonBackground = \"transparent\",\n buttonColor = \"current\",\n}: DropdownProps) => {\n const [show, setShow] = useState(\"\");\n\n const sizeClasses = useMemo(() => sizes[size], [size]);\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>, label: string) => {\n e.preventDefault();\n e.stopPropagation();\n label === show ? closeNav() : openNav(label);\n };\n\n const handleBlur = (e: React.FocusEvent<HTMLButtonElement>) => {\n e.preventDefault();\n closeNav();\n };\n\n const openNav = (label: string) => {\n setTimeout(() => {\n setShow(label);\n }, 0);\n };\n\n const closeNav = () => {\n setTimeout(() => {\n setShow(\"\");\n }, 0);\n };\n\n return (\n <div\n className={twMerge(`dropdown group inline-block relative ${sizeClasses}`, className)}\n style={style}\n >\n <ul className=\"dropdown-list flex flex-col gap-4 md:flex-row;\">\n {links.map((link) => (\n <li\n key={link.label}\n className={`flex flex-wrap items-center group whitespace-nowrap ${\n show === link.label ? \"show\" : \"\"\n }`}\n >\n <Link\n href={link.href}\n onClick={closeNav}\n prefetch={prefetch}\n className=\"dropdown-link flex flex-row items-center gap-2 no-underline hover:!text-current\"\n >\n {link.label}{\" \"}\n {link.links && (\n <Button\n className={`menu-btn !p-1`}\n onClick={(e) => handleClick(e, link.label)}\n onBlur={(e) => handleBlur(e)}\n title=\"Toggle Menu\"\n btnBackground={buttonBackground}\n btnColor={buttonColor}\n size={size}\n layout={buttonLayout}\n >\n {show === link.label ? <HiChevronUp /> : <HiChevronDown />}\n <span className=\"sr-only\">Toggle dropdown menu</span>\n </Button>\n )}\n </Link>\n {link.links && (\n <div className=\"absolute left-0 -bottom-2 w-full\">\n <div\n className={`wrap absolute -right-4 -left-4 top-full z-50 overflow-x-hidden text-base leading-7 ${\n show ? showrapClasses : \"max-h-0\"\n }`}\n >\n <ul className=\"ms-0 block w-full border bg-dark text-light dark:bg-light dark:text-dark p-4\">\n {link.links.map((sub) => (\n <li key={sub.label}>\n <Link href={sub.href} key={sub.label} className=\"\" prefetch={prefetch}>\n {sub.label}\n </Link>\n\n {sub.links && (\n <ul>\n {sub.links.map((subsub: LinksProps) => (\n <li key={subsub.label} className=\"indent-2\">\n <Link href={subsub.href} className=\"\" prefetch={prefetch}>\n {subsub.label}\n </Link>\n </li>\n ))}\n </ul>\n )}\n </li>\n ))}\n </ul>\n </div>\n </div>\n )}\n </li>\n ))}\n </ul>\n </div>\n );\n};\n\nexport default Dropdown;\n"]}
@@ -0,0 +1,2 @@
1
+ export { default as Dropdown } from './Dropdown';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ui/dropdown/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAA","sourcesContent":["export { default as Dropdown } from './Dropdown'\n"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/ui/dropdown/types/index.ts"],"names":[],"mappings":"","sourcesContent":["export interface LinksProps {\n href: string;\n label: string;\n links?: any[];\n}\n\nexport interface DropdownProps extends React.HTMLAttributes<HTMLDivElement> {\n size?: \"md\" | \"lg\" | \"xl\";\n style?: React.CSSProperties;\n className?: string;\n links: LinksProps[];\n prefetch?: boolean;\n buttonLayout: \"circle\" | \"square\";\n buttonBackground?:\n | \"dark\"\n | \"light\"\n | \"info\"\n | \"success\"\n | \"warning\"\n | \"danger\"\n | \"primary\"\n | \"secondary\"\n | \"transparent\";\n buttonColor?:\n | \"dark\"\n | \"light\"\n | \"info\"\n | \"success\"\n | \"warning\"\n | \"danger\"\n | \"primary\"\n | \"secondary\"\n | \"current\";\n}\n"]}
@@ -0,0 +1,42 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ import { useState, useMemo, useEffect } from "react";
4
+ import { twMerge } from "tailwind-merge";
5
+ import { Modal } from "..";
6
+ var aspects = {
7
+ landscape: "aspect-[4/3]",
8
+ portrait: "aspect-[3/4]",
9
+ square: "aspect-square",
10
+ circle: "aspect-square",
11
+ video: "aspect-video",
12
+ ultrawide: "aspect-[12/5]",
13
+ phone: "aspect-[9/16]",
14
+ auto: "aspect-auto",
15
+ };
16
+ var Figure = function (_a) {
17
+ var _b = _a.className, className = _b === void 0 ? "" : _b, _c = _a.caption, caption = _c === void 0 ? "" : _c, _d = _a.aspect, aspect = _d === void 0 ? "landscape" : _d, src = _a.src, alt = _a.alt, _e = _a.backdrop, backdrop = _e === void 0 ? "dark" : _e, _f = _a.preload, preload = _f === void 0 ? false : _f;
18
+ var _g = useState(false), open = _g[0], setOpen = _g[1];
19
+ var aspectClasses = useMemo(function () { return aspects[aspect]; }, [aspect]);
20
+ useEffect(function () {
21
+ if (!preload || !src)
22
+ return;
23
+ var href = src;
24
+ var existingLink = document.querySelector("link[rel=\"preload\"][href=\"".concat(href, "\"]"));
25
+ if (!existingLink) {
26
+ var link = document.createElement("link");
27
+ link.rel = "preload";
28
+ link.as = "image";
29
+ link.href = href;
30
+ document.head.appendChild(link);
31
+ }
32
+ return function () {
33
+ var linkToRemove = document.querySelector("link[rel=\"preload\"][href=\"".concat(href, "\"]"));
34
+ if (linkToRemove) {
35
+ document.head.removeChild(linkToRemove);
36
+ }
37
+ };
38
+ }, [preload, src]);
39
+ return (_jsxs(_Fragment, { children: [_jsxs("figure", { className: twMerge("figure group relative h-auto min-w-full ".concat(aspectClasses), className), children: [_jsx("img", { src: src, className: "img object-cover absolute h-full w-full inset-0 text-transparent cursor-zoom-in ".concat(aspect === "circle" ? "rounded-full" : ""), alt: alt, onClick: function () { return setOpen(true); } }), caption && (_jsx("figcaption", { className: "figcaption line-clamp-2 py-2 text-center absolute bottom-0 w-full bg-gray-700/50 text-light", children: caption }))] }), _jsx(Modal, { src: src, caption: caption || alt, alt: alt, onClick: function () { return setOpen(false); }, open: open, theme: backdrop })] }));
40
+ };
41
+ export default Figure;
42
+ //# sourceMappingURL=Figure.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Figure.js","sourceRoot":"","sources":["../../../src/ui/figure/Figure.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAc,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAE5D,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAGzC,OAAO,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC;AAE3B,IAAM,OAAO,GAAG;IACd,SAAS,EAAE,cAAc;IACzB,QAAQ,EAAE,cAAc;IACxB,MAAM,EAAE,eAAe;IACvB,MAAM,EAAE,eAAe;IACvB,KAAK,EAAE,cAAc;IACrB,SAAS,EAAE,eAAe;IAC1B,KAAK,EAAE,eAAe;IACtB,IAAI,EAAE,aAAa;CACpB,CAAC;AAEF,IAAM,MAAM,GAAG,UAAC,EAQF;QAPZ,iBAAc,EAAd,SAAS,mBAAG,EAAE,KAAA,EACd,eAAY,EAAZ,OAAO,mBAAG,EAAE,KAAA,EACZ,cAAoB,EAApB,MAAM,mBAAG,WAAW,KAAA,EACpB,GAAG,SAAA,EACH,GAAG,SAAA,EACH,gBAAiB,EAAjB,QAAQ,mBAAG,MAAM,KAAA,EACjB,eAAe,EAAf,OAAO,mBAAG,KAAK,KAAA;IAET,IAAA,KAAkB,QAAQ,CAAC,KAAK,CAAC,EAAhC,IAAI,QAAA,EAAE,OAAO,QAAmB,CAAC;IACxC,IAAM,aAAa,GAAG,OAAO,CAAC,cAAM,OAAA,OAAO,CAAC,MAAM,CAAC,EAAf,CAAe,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAE/D,SAAS,CAAC;QACR,IAAI,CAAC,OAAO,IAAI,CAAC,GAAG;YAAE,OAAO;QAE7B,IAAM,IAAI,GAAG,GAAG,CAAC;QACjB,IAAM,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,uCAA6B,IAAI,QAAI,CAAC,CAAC;QAEnF,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,IAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAC5C,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC;YACrB,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC;YAClB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACjB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC;QAED,OAAO;YACL,IAAM,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,uCAA6B,IAAI,QAAI,CAAC,CAAC;YACnF,IAAI,YAAY,EAAE,CAAC;gBACjB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;IAEnB,OAAO,CACL,8BACE,kBACE,SAAS,EAAE,OAAO,CAAC,kDAA2C,aAAa,CAAE,EAAE,SAAS,CAAC,aAEzF,cACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,0FACT,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CACzC,EACF,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,cAAM,OAAA,OAAO,CAAC,IAAI,CAAC,EAAb,CAAa,GAC5B,EAED,OAAO,IAAI,CACV,qBAAY,SAAS,EAAC,6FAA6F,YAChH,OAAO,GACG,CACd,IACM,EACT,KAAC,KAAK,IACJ,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,OAAO,IAAI,GAAG,EACvB,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,cAAM,OAAA,OAAO,CAAC,KAAK,CAAC,EAAd,CAAc,EAC7B,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,QAAQ,GACf,IACD,CACJ,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,MAAM,CAAC","sourcesContent":["\"use client\";\n\nimport React, { useState, useMemo, useEffect } from \"react\";\n\nimport { twMerge } from \"tailwind-merge\";\n\nimport { FigureProps } from \"./types\";\nimport { Modal } from \"..\";\n\nconst aspects = {\n landscape: \"aspect-[4/3]\",\n portrait: \"aspect-[3/4]\",\n square: \"aspect-square\",\n circle: \"aspect-square\",\n video: \"aspect-video\",\n ultrawide: \"aspect-[12/5]\",\n phone: \"aspect-[9/16]\",\n auto: \"aspect-auto\",\n};\n\nconst Figure = ({\n className = \"\",\n caption = \"\",\n aspect = \"landscape\",\n src,\n alt,\n backdrop = \"dark\",\n preload = false,\n}: FigureProps) => {\n const [open, setOpen] = useState(false);\n const aspectClasses = useMemo(() => aspects[aspect], [aspect]);\n\n useEffect(() => {\n if (!preload || !src) return;\n\n const href = src;\n const existingLink = document.querySelector(`link[rel=\"preload\"][href=\"${href}\"]`);\n\n if (!existingLink) {\n const link = document.createElement(\"link\");\n link.rel = \"preload\";\n link.as = \"image\";\n link.href = href;\n document.head.appendChild(link);\n }\n\n return () => {\n const linkToRemove = document.querySelector(`link[rel=\"preload\"][href=\"${href}\"]`);\n if (linkToRemove) {\n document.head.removeChild(linkToRemove);\n }\n };\n }, [preload, src]);\n\n return (\n <>\n <figure\n className={twMerge(`figure group relative h-auto min-w-full ${aspectClasses}`, className)}\n >\n <img\n src={src}\n className={`img object-cover absolute h-full w-full inset-0 text-transparent cursor-zoom-in ${\n aspect === \"circle\" ? \"rounded-full\" : \"\"\n }`}\n alt={alt}\n onClick={() => setOpen(true)}\n />\n\n {caption && (\n <figcaption className=\"figcaption line-clamp-2 py-2 text-center absolute bottom-0 w-full bg-gray-700/50 text-light\">\n {caption}\n </figcaption>\n )}\n </figure>\n <Modal\n src={src}\n caption={caption || alt}\n alt={alt}\n onClick={() => setOpen(false)}\n open={open}\n theme={backdrop}\n />\n </>\n );\n};\n\nexport default Figure;\n"]}
@@ -0,0 +1,2 @@
1
+ export { default as Figure } from './Figure';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ui/figure/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAA","sourcesContent":["export { default as Figure } from './Figure'\n"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/ui/figure/types/index.ts"],"names":[],"mappings":"","sourcesContent":["export interface FigureProps extends React.HTMLAttributes<HTMLElement> {\n className?: string;\n caption?: string;\n aspect?:\n | \"landscape\"\n | \"portrait\"\n | \"square\"\n | \"video\"\n | \"circle\"\n | \"phone\"\n | \"ultrawide\"\n | \"auto\";\n src: string;\n alt: string;\n backdrop?: \"light\" | \"dark\";\n preload?: boolean;\n}\n"]}
@@ -0,0 +1,52 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useState, useMemo } from 'react';
4
+ import { twMerge } from 'tailwind-merge';
5
+ import Files from './Files';
6
+ import { acceptTypes } from './types';
7
+ import { Label, Input, Select, Checkbox } from '..';
8
+ import { FaUpload } from 'react-icons/fa';
9
+ var sizes = {
10
+ md: 'text-base',
11
+ lg: 'text-lg',
12
+ xl: 'text-xl',
13
+ };
14
+ var FileUpload = function (_a) {
15
+ var _b = _a.className, className = _b === void 0 ? '' : _b, _c = _a.size, size = _c === void 0 ? 'md' : _c, _d = _a.accept, accept = _d === void 0 ? '*' : _d, _e = _a.label, label = _e === void 0 ? 'File Upload' : _e, icon = _a.icon, onChange = _a.onChange, setFiles = _a.setFiles, _f = _a.showMultiple, showMultiple = _f === void 0 ? false : _f, _g = _a.multipleLabel, multipleLabel = _g === void 0 ? 'Select Multiple' : _g;
16
+ var _h = useState(null), files = _h[0], setLocalFiles = _h[1];
17
+ var _j = useState(false), multiple = _j[0], setMultiple = _j[1];
18
+ var _k = useState(accept), selectedAcceptType = _k[0], setSelectedAcceptType = _k[1];
19
+ var handleAcceptTypeChange = function (event) {
20
+ setSelectedAcceptType(event.target.value);
21
+ setLocalFiles(null);
22
+ if (setFiles) {
23
+ setFiles([]);
24
+ }
25
+ };
26
+ var sizeClasses = useMemo(function () { return sizes[size]; }, [size]);
27
+ var handleChange = function (event) {
28
+ setMultiple(event.target.checked);
29
+ };
30
+ var handleFileChange = function (event) {
31
+ var files = event.target.files;
32
+ if (files) {
33
+ setLocalFiles(files);
34
+ if (onChange)
35
+ onChange(event);
36
+ }
37
+ };
38
+ var deleteFile = function (fileToDelete) {
39
+ if (files) {
40
+ var updatedFiles = Array.from(files).filter(function (file) { return file !== fileToDelete; });
41
+ var dataTransfer_1 = new DataTransfer();
42
+ updatedFiles.forEach(function (file) { return dataTransfer_1.items.add(file); });
43
+ setLocalFiles(dataTransfer_1.files);
44
+ if (setFiles) {
45
+ setFiles(updatedFiles);
46
+ }
47
+ }
48
+ };
49
+ return (_jsxs("div", { className: twMerge("fileupload group overflow-hidden ".concat(sizeClasses), className), "data-testid": 'fileupload', children: [_jsxs("div", { className: 'flex flex-row gap-2', children: [_jsx(Label, { label: icon ? _jsx(FaUpload, { title: label }) : label, layout: 'col', size: size, type: 'file', className: 'items-center !flex !flex-row !w-auto', children: _jsx(Input, { accept: selectedAcceptType, name: 'file', type: 'file', onChange: handleFileChange, multiple: multiple, size: size }) }), _jsxs("div", { className: 'grid grid-cols-2 gap-4 items-center', children: [_jsx(Select, { options: acceptTypes, id: 'acceptType', value: selectedAcceptType, defaultValue: accept, onChange: handleAcceptTypeChange, dropdownSize: size, className: 'border-neutral', rounded: 'md' }), showMultiple && (_jsx("div", { className: '', children: _jsx(Checkbox, { label: multipleLabel, name: 'multiple', size: size, onChange: handleChange, className: '!gap-2 border-neutral', rounded: 'full' }) }))] })] }), files && files.length > 0 && (_jsx(Files, { files: Array.from(files), deleteFile: deleteFile }))] }));
50
+ };
51
+ export default FileUpload;
52
+ //# sourceMappingURL=FileUpload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileUpload.js","sourceRoot":"","sources":["../../../src/ui/fileupload/FileUpload.tsx"],"names":[],"mappings":"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","sourcesContent":["'use client'\n\nimport React, { useState, useMemo } from 'react'\n\nimport { twMerge } from 'tailwind-merge'\n\nimport Files from './Files'\nimport { FileUploadProps, acceptTypes } from './types'\nimport { Label, Input, Select, Checkbox } from '..'\n\nimport { FaUpload } from 'react-icons/fa'\n\nconst sizes = {\n\tmd: 'text-base',\n\tlg: 'text-lg',\n\txl: 'text-xl',\n}\n\nconst FileUpload = ({\n\tclassName = '',\n\tsize = 'md',\n\taccept = '*',\n\tlabel = 'File Upload',\n\ticon,\n\tonChange,\n\tsetFiles,\n\tshowMultiple = false,\n\tmultipleLabel = 'Select Multiple',\n}: FileUploadProps) => {\n\tconst [files, setLocalFiles] = useState<FileList | null>(null)\n\tconst [multiple, setMultiple] = useState(false)\n\tconst [selectedAcceptType, setSelectedAcceptType] = useState<string>(accept)\n\n\tconst handleAcceptTypeChange = (event: React.ChangeEvent<HTMLSelectElement>) => {\n\t\tsetSelectedAcceptType(event.target.value)\n\t\tsetLocalFiles(null)\n\t\tif (setFiles) {\n\t\t\tsetFiles([])\n\t\t}\n\t}\n\n\tconst sizeClasses = useMemo(() => sizes[size], [size])\n\n\tconst handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n\t\tsetMultiple(event.target.checked)\n\t}\n\n\tconst handleFileChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n\t\tconst files = event.target.files\n\t\tif (files) {\n\t\t\tsetLocalFiles(files)\n\t\t\tif (onChange) onChange(event)\n\t\t}\n\t}\n\n\tconst deleteFile = (fileToDelete: File) => {\n\t\tif (files) {\n\t\t\tconst updatedFiles = Array.from(files).filter((file) => file !== fileToDelete)\n\t\t\tconst dataTransfer = new DataTransfer()\n\t\t\tupdatedFiles.forEach((file) => dataTransfer.items.add(file))\n\t\t\tsetLocalFiles(dataTransfer.files)\n\t\t\tif (setFiles) {\n\t\t\t\tsetFiles(updatedFiles)\n\t\t\t}\n\t\t}\n\t}\n\n\treturn (\n\t\t<div\n\t\t\tclassName={twMerge(`fileupload group overflow-hidden ${sizeClasses}`, className)}\n\t\t\tdata-testid='fileupload'\n\t\t>\n\t\t\t<div className='flex flex-row gap-2'>\n\t\t\t\t<Label\n\t\t\t\t\tlabel={icon ? <FaUpload title={label} /> : label}\n\t\t\t\t\tlayout='col'\n\t\t\t\t\tsize={size}\n\t\t\t\t\ttype='file'\n\t\t\t\t\tclassName='items-center !flex !flex-row !w-auto'\n\t\t\t\t>\n\t\t\t\t\t<Input\n\t\t\t\t\t\taccept={selectedAcceptType}\n\t\t\t\t\t\tname='file'\n\t\t\t\t\t\ttype='file'\n\t\t\t\t\t\tonChange={handleFileChange}\n\t\t\t\t\t\tmultiple={multiple}\n\t\t\t\t\t\tsize={size}\n\t\t\t\t\t/>\n\t\t\t\t</Label>\n\t\t\t\t<div className='grid grid-cols-2 gap-4 items-center'>\n\t\t\t\t\t<Select\n\t\t\t\t\t\toptions={acceptTypes}\n\t\t\t\t\t\tid='acceptType'\n\t\t\t\t\t\tvalue={selectedAcceptType}\n\t\t\t\t\t\tdefaultValue={accept}\n\t\t\t\t\t\tonChange={handleAcceptTypeChange}\n\t\t\t\t\t\tdropdownSize={size}\n\t\t\t\t\t\tclassName='border-neutral'\n\t\t\t\t\t\trounded='md'\n\t\t\t\t\t/>\n\t\t\t\t\t{showMultiple && (\n\t\t\t\t\t\t<div className=''>\n\t\t\t\t\t\t\t<Checkbox\n\t\t\t\t\t\t\t\tlabel={multipleLabel}\n\t\t\t\t\t\t\t\tname='multiple'\n\t\t\t\t\t\t\t\tsize={size}\n\t\t\t\t\t\t\t\tonChange={handleChange}\n\t\t\t\t\t\t\t\tclassName='!gap-2 border-neutral'\n\t\t\t\t\t\t\t\trounded='full'\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t{files && files.length > 0 && (\n\t\t\t\t<Files\n\t\t\t\t\tfiles={Array.from(files)}\n\t\t\t\t\tdeleteFile={deleteFile}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</div>\n\t)\n}\n\nexport default FileUpload\n"]}
@@ -0,0 +1,22 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Button } from '..';
3
+ var Files = function (_a) {
4
+ var files = _a.files, deleteFile = _a.deleteFile;
5
+ var formatFileSize = function (size) {
6
+ var units = ['Bytes', 'KB', 'MB', 'GB'];
7
+ var unitIndex = 0;
8
+ while (size >= 1024 && unitIndex < units.length - 1) {
9
+ size /= 1024;
10
+ unitIndex++;
11
+ }
12
+ var formattedSize = size.toFixed(size < 10 ? 2 : 0);
13
+ return "".concat(formattedSize, " ").concat(units[unitIndex]);
14
+ };
15
+ var formatDate = function (date) {
16
+ var lastModifiedDate = new Date(date);
17
+ return lastModifiedDate.toLocaleDateString();
18
+ };
19
+ return (_jsx("div", { className: 'pt-2', children: files.length > 0 ? (_jsx("ul", { className: 'fileslist flex flex-col gap-4', children: Array.from(files).map(function (file, index) { return (_jsxs("li", { className: 'filesitem rounded border shadow-md p-4 bg-light text-dark dark:bg-dark dark:text-light', children: [_jsx("h3", { className: 'file-title truncate mb-4', children: file.name }), _jsxs("div", { className: 'file-details flex justify-between items-center', children: [_jsx("small", { children: formatDate(file.lastModified) }), _jsx("small", { children: formatFileSize(file.size) }), _jsx(Button, { className: '!p-0', size: 'sm', btnBackground: 'transparent', btnColor: 'danger', onClick: function () { return deleteFile(file); }, children: "Delete?" })] })] }, index)); }) })) : (_jsx("p", { children: "No files selected." })) }));
20
+ };
21
+ export default Files;
22
+ //# sourceMappingURL=Files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Files.js","sourceRoot":"","sources":["../../../src/ui/fileupload/Files.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAA;AAG3B,IAAM,KAAK,GAAG,UAAC,EAAgC;QAA9B,KAAK,WAAA,EAAE,UAAU,gBAAA;IACjC,IAAM,cAAc,GAAG,UAAC,IAAY;QACnC,IAAM,KAAK,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;QACzC,IAAI,SAAS,GAAG,CAAC,CAAA;QAEjB,OAAO,IAAI,IAAI,IAAI,IAAI,SAAS,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrD,IAAI,IAAI,IAAI,CAAA;YACZ,SAAS,EAAE,CAAA;QACZ,CAAC;QAED,IAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAErD,OAAO,UAAG,aAAa,cAAI,KAAK,CAAC,SAAS,CAAC,CAAE,CAAA;IAC9C,CAAC,CAAA;IAED,IAAM,UAAU,GAAG,UAAC,IAAY;QAC/B,IAAM,gBAAgB,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAA;QACvC,OAAO,gBAAgB,CAAC,kBAAkB,EAAE,CAAA;IAC7C,CAAC,CAAA;IAED,OAAO,CACN,cAAK,SAAS,EAAC,MAAM,YACnB,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CACnB,aAAI,SAAS,EAAC,+BAA+B,YAC3C,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,UAAC,IAAI,EAAE,KAAK,IAAK,OAAA,CACvC,cACC,SAAS,EAAC,wFAAwF,aAGlG,aAAI,SAAS,EAAC,0BAA0B,YAAE,IAAI,CAAC,IAAI,GAAM,EACzD,eAAK,SAAS,EAAC,gDAAgD,aAC9D,0BAAQ,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,GAAS,EAC9C,0BAAQ,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAS,EAC1C,KAAC,MAAM,IACN,SAAS,EAAC,MAAM,EAChB,IAAI,EAAC,IAAI,EACT,aAAa,EAAC,aAAa,EAC3B,QAAQ,EAAC,QAAQ,EACjB,OAAO,EAAE,cAAM,OAAA,UAAU,CAAC,IAAI,CAAC,EAAhB,CAAgB,wBAGvB,IACJ,KAfD,KAAK,CAgBN,CACL,EApBuC,CAoBvC,CAAC,GACE,CACL,CAAC,CAAC,CAAC,CACH,6CAAyB,CACzB,GACI,CACN,CAAA;AACF,CAAC,CAAA;AAED,eAAe,KAAK,CAAA","sourcesContent":["import React from 'react'\nimport { Button } from '..'\nimport { FileProps } from './types'\n\nconst Files = ({ files, deleteFile }: FileProps) => {\n\tconst formatFileSize = (size: number) => {\n\t\tconst units = ['Bytes', 'KB', 'MB', 'GB']\n\t\tlet unitIndex = 0\n\n\t\twhile (size >= 1024 && unitIndex < units.length - 1) {\n\t\t\tsize /= 1024\n\t\t\tunitIndex++\n\t\t}\n\n\t\tconst formattedSize = size.toFixed(size < 10 ? 2 : 0)\n\n\t\treturn `${formattedSize} ${units[unitIndex]}`\n\t}\n\n\tconst formatDate = (date: number) => {\n\t\tconst lastModifiedDate = new Date(date)\n\t\treturn lastModifiedDate.toLocaleDateString()\n\t}\n\n\treturn (\n\t\t<div className='pt-2'>\n\t\t\t{files.length > 0 ? (\n\t\t\t\t<ul className='fileslist flex flex-col gap-4'>\n\t\t\t\t\t{Array.from(files).map((file, index) => (\n\t\t\t\t\t\t<li\n\t\t\t\t\t\t\tclassName='filesitem rounded border shadow-md p-4 bg-light text-dark dark:bg-dark dark:text-light'\n\t\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<h3 className='file-title truncate mb-4'>{file.name}</h3>\n\t\t\t\t\t\t\t<div className='file-details flex justify-between items-center'>\n\t\t\t\t\t\t\t\t<small>{formatDate(file.lastModified)}</small>\n\t\t\t\t\t\t\t\t<small>{formatFileSize(file.size)}</small>\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\tclassName='!p-0'\n\t\t\t\t\t\t\t\t\tsize='sm'\n\t\t\t\t\t\t\t\t\tbtnBackground='transparent'\n\t\t\t\t\t\t\t\t\tbtnColor='danger'\n\t\t\t\t\t\t\t\t\tonClick={() => deleteFile(file)}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\tDelete?\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t))}\n\t\t\t\t</ul>\n\t\t\t) : (\n\t\t\t\t<p>No files selected.</p>\n\t\t\t)}\n\t\t</div>\n\t)\n}\n\nexport default Files\n"]}
@@ -0,0 +1,2 @@
1
+ export { default as FileUpload } from './FileUpload';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ui/fileupload/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAA","sourcesContent":["export { default as FileUpload } from './FileUpload'\n"]}
@@ -0,0 +1,25 @@
1
+ var fileUploadAcceptTypes = {
2
+ all: '*',
3
+ audio: 'audio/*',
4
+ image: 'image/*',
5
+ video: 'video/*',
6
+ document: [
7
+ 'application/pdf',
8
+ 'application/msword',
9
+ 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
10
+ 'application/vnd.ms-excel',
11
+ 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
12
+ ],
13
+ compressed: ['application/zip', 'application/x-rar-compressed'],
14
+ text: ['text/plain', 'text/csv'],
15
+ };
16
+ export var acceptTypes = [
17
+ { label: 'All Files', value: '*' },
18
+ { label: 'Audio Files', value: 'audio/*' },
19
+ { label: 'Image Files', value: 'image/*' },
20
+ { label: 'Video Files', value: 'video/*' },
21
+ { label: 'PDF Documents', value: 'application/pdf' },
22
+ { label: 'Text Documents', value: '.txt, .doc, .docx, .odt, .rtf' },
23
+ { label: 'Excel Files', value: 'application/vnd.ms-excel' },
24
+ ];
25
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/ui/fileupload/types/index.ts"],"names":[],"mappings":"AAUA,IAAM,qBAAqB,GAAe;IACzC,GAAG,EAAE,GAAG;IACR,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,SAAS;IAChB,QAAQ,EAAE;QACT,iBAAiB;QACjB,oBAAoB;QACpB,yEAAyE;QACzE,0BAA0B;QAC1B,mEAAmE;KACnE;IACD,UAAU,EAAE,CAAC,iBAAiB,EAAE,8BAA8B,CAAC;IAC/D,IAAI,EAAE,CAAC,YAAY,EAAE,UAAU,CAAC;CAChC,CAAA;AA+BD,MAAM,CAAC,IAAM,WAAW,GAAkB;IACzC,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE;IAClC,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,EAAE;IAC1C,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,EAAE;IAC1C,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,EAAE;IAC1C,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,iBAAiB,EAAE;IACpD,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,+BAA+B,EAAE;IACnE,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,0BAA0B,EAAE;CAC3D,CAAA","sourcesContent":["export interface AcceptType {\n\tall: string\n\taudio: string\n\timage: string\n\tvideo: string\n\tdocument: string[]\n\tcompressed: string[]\n\ttext: string[]\n}\n\nconst fileUploadAcceptTypes: AcceptType = {\n\tall: '*',\n\taudio: 'audio/*',\n\timage: 'image/*',\n\tvideo: 'video/*',\n\tdocument: [\n\t\t'application/pdf',\n\t\t'application/msword',\n\t\t'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n\t\t'application/vnd.ms-excel',\n\t\t'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n\t],\n\tcompressed: ['application/zip', 'application/x-rar-compressed'],\n\ttext: ['text/plain', 'text/csv'],\n}\n\nexport interface FileUploadEvent {\n\ttarget: {\n\t\tfiles: FileList | null\n\t}\n}\n\nexport interface FileProps {\n\tfiles: File[]\n\tdeleteFile: (file: File) => void\n}\n\nexport interface FileUploadProps {\n\tlabel?: string\n\tmultipleLabel?: string\n\tclassName?: string\n\tsize?: 'md' | 'lg' | 'xl'\n\taccept?: string\n\tshowMultiple?: boolean\n\tonChange?: (event: React.ChangeEvent<HTMLInputElement>) => void\n\tsetFiles?: (files: File[]) => void\n\ticon?: boolean\n\tfiles: File[]\n}\n\nexport interface AcceptTypes {\n\tlabel: string\n\tvalue: string\n}\n\nexport const acceptTypes: AcceptTypes[] = [\n\t{ label: 'All Files', value: '*' },\n\t{ label: 'Audio Files', value: 'audio/*' },\n\t{ label: 'Image Files', value: 'image/*' },\n\t{ label: 'Video Files', value: 'video/*' },\n\t{ label: 'PDF Documents', value: 'application/pdf' },\n\t{ label: 'Text Documents', value: '.txt, .doc, .docx, .odt, .rtf' },\n\t{ label: 'Excel Files', value: 'application/vnd.ms-excel' },\n]\n"]}
@@ -0,0 +1,9 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { twMerge } from "tailwind-merge";
3
+ import Legend from "./Legend";
4
+ var Fieldset = function (_a) {
5
+ var legendText = _a.legendText, disabled = _a.disabled, legendAlign = _a.legendAlign, legendSize = _a.legendSize, _b = _a.hasBorder, hasBorder = _b === void 0 ? false : _b, _c = _a.isBold, isBold = _c === void 0 ? false : _c, children = _a.children, _d = _a.spacing, spacing = _d === void 0 ? "4" : _d, _e = _a.className, className = _e === void 0 ? "" : _e;
6
+ return (_jsxs("fieldset", { disabled: disabled, className: twMerge("fieldset group border-neutral-400 dark:border-neutral flex flex-col gap-".concat(spacing, " ").concat(hasBorder ? "border p-4" : "border-0"), className), children: [legendText && (_jsx(Legend, { text: legendText, align: legendAlign, legendSize: legendSize, isBold: isBold })), children] }));
7
+ };
8
+ export default Fieldset;
9
+ //# sourceMappingURL=Fieldset.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Fieldset.js","sourceRoot":"","sources":["../../../src/ui/form/Fieldset.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAGzC,OAAO,MAAM,MAAM,UAAU,CAAC;AAE9B,IAAM,QAAQ,GAAG,UAAC,EAUF;QATd,UAAU,gBAAA,EACV,QAAQ,cAAA,EACR,WAAW,iBAAA,EACX,UAAU,gBAAA,EACV,iBAAiB,EAAjB,SAAS,mBAAG,KAAK,KAAA,EACjB,cAAc,EAAd,MAAM,mBAAG,KAAK,KAAA,EACd,QAAQ,cAAA,EACR,eAAa,EAAb,OAAO,mBAAG,GAAG,KAAA,EACb,iBAAc,EAAd,SAAS,mBAAG,EAAE,KAAA;IAEd,OAAO,CACL,oBACE,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,OAAO,CAChB,kFAA2E,OAAO,cAChF,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CACrC,EACF,SAAS,CACV,aAEA,UAAU,IAAI,CACb,KAAC,MAAM,IAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAI,CACzF,EACA,QAAQ,IACA,CACZ,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,QAAQ,CAAC","sourcesContent":["import React from \"react\";\n\nimport { twMerge } from \"tailwind-merge\";\n\nimport { FieldsetProps } from \"./types\";\nimport Legend from \"./Legend\";\n\nconst Fieldset = ({\n legendText,\n disabled,\n legendAlign,\n legendSize,\n hasBorder = false,\n isBold = false,\n children,\n spacing = \"4\",\n className = \"\",\n}: FieldsetProps) => {\n return (\n <fieldset\n disabled={disabled}\n className={twMerge(\n `fieldset group border-neutral-400 dark:border-neutral flex flex-col gap-${spacing} ${\n hasBorder ? \"border p-4\" : \"border-0\"\n }`,\n className\n )}\n >\n {legendText && (\n <Legend text={legendText} align={legendAlign} legendSize={legendSize} isBold={isBold} />\n )}\n {children}\n </fieldset>\n );\n};\n\nexport default Fieldset;\n"]}
@@ -0,0 +1,64 @@
1
+ 'use client';
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
14
+ import { useRef, useState, useCallback, useMemo } from 'react';
15
+ import { twMerge } from 'tailwind-merge';
16
+ import { Button } from '..';
17
+ var layouts = {
18
+ col: 'flex-col',
19
+ row: 'flex-row flex-wrap',
20
+ };
21
+ var Form = function (_a) {
22
+ var _b = _a.className, className = _b === void 0 ? '' : _b, style = _a.style, _c = _a.name, name = _c === void 0 ? 'form' : _c, onsubmit = _a.onsubmit, onCancel = _a.onCancel, _d = _a.layout, layout = _d === void 0 ? 'col' : _d, _e = _a.showCancel, showCancel = _e === void 0 ? false : _e, _f = _a.actions, actions = _f === void 0 ? true : _f, children = _a.children, _g = _a.submitLabel, submitLabel = _g === void 0 ? 'Submit' : _g, _h = _a.cancelLabel, cancelLabel = _h === void 0 ? 'Cancel' : _h, _j = _a.actionsLayout, actionsLayout = _j === void 0 ? 'row' : _j, _k = _a.actionsSpacing, actionsSpacing = _k === void 0 ? '0' : _k, _l = _a.submitBackground, submitBackground = _l === void 0 ? 'primary' : _l, _m = _a.submitColor, submitColor = _m === void 0 ? 'light' : _m, _o = _a.cancelBackground, cancelBackground = _o === void 0 ? 'transparent' : _o, _p = _a.cancelColor, cancelColor = _p === void 0 ? 'current' : _p, _q = _a.submitOutline, submitOutline = _q === void 0 ? false : _q, _r = _a.submitOutlineColor, submitOutlineColor = _r === void 0 ? 'current' : _r, _s = _a.cancelOutline, cancelOutline = _s === void 0 ? false : _s, _t = _a.cancelOutlineColor, cancelOutlineColor = _t === void 0 ? 'current' : _t, _u = _a.buttonTextcase, buttonTextcase = _u === void 0 ? 'normal-case' : _u, _v = _a.buttonShape, buttonShape = _v === void 0 ? 'default' : _v, _w = _a.buttonIsBold, buttonIsBold = _w === void 0 ? false : _w, _x = _a.separator, separator = _x === void 0 ? false : _x;
23
+ var form = useRef(null);
24
+ var _y = useState(false), valid = _y[0], setValid = _y[1];
25
+ var _z = useState({}), formData = _z[0], setFormData = _z[1];
26
+ var layoutClasses = useMemo(function () { return layouts[layout]; }, [layout]);
27
+ var handleSubmit = function (e) {
28
+ e.preventDefault();
29
+ if (onsubmit) {
30
+ onsubmit(formData);
31
+ }
32
+ };
33
+ var handleCancel = function () {
34
+ if (onCancel) {
35
+ onCancel();
36
+ }
37
+ };
38
+ var handleInputChange = useCallback(function (event) {
39
+ var target = event.target;
40
+ var name = target.name, value = target.value;
41
+ setFormData(function (prevData) {
42
+ var _a;
43
+ var updatedData = __assign(__assign({}, prevData), (_a = {}, _a[name] = value, _a));
44
+ return updatedData;
45
+ });
46
+ if (form.current) {
47
+ setValid(form.current.checkValidity());
48
+ }
49
+ }, []);
50
+ var setFormRef = useCallback(function (node) {
51
+ if (node) {
52
+ form.current = node;
53
+ node.addEventListener('change', handleInputChange, true);
54
+ }
55
+ return function () {
56
+ if (node) {
57
+ node.removeEventListener('change', handleInputChange, true);
58
+ }
59
+ };
60
+ }, [handleInputChange]);
61
+ return (_jsxs("form", { className: twMerge("form group flex ".concat(layoutClasses, " gap-8"), className), style: style, name: name, id: name, ref: setFormRef, onSubmit: handleSubmit, children: [children, actions && (_jsxs(_Fragment, { children: [separator && _jsx("hr", { className: 'border-neutral border-t-2 opacity-70' }), _jsxs("div", { className: "form-actions mt-auto flex group justify-between flex-grow flex-".concat(actionsLayout, " gap-").concat(actionsSpacing), children: [showCancel ? (_jsx(Button, { type: 'button', className: "!justify-center flex-grow", btnBackground: cancelBackground, btnColor: cancelColor, outline: cancelOutline, outlineColor: cancelOutlineColor, textcase: buttonTextcase, layout: buttonShape, isBold: buttonIsBold, onClick: handleCancel, children: cancelLabel })) : null, _jsx(Button, { type: 'submit', className: "!justify-center flex-grow", btnBackground: submitBackground, btnColor: submitColor, outline: submitOutline, outlineColor: submitOutlineColor, textcase: buttonTextcase, layout: buttonShape, isBold: buttonIsBold, disabled: !valid, children: submitLabel })] })] }))] }));
62
+ };
63
+ export default Form;
64
+ //# sourceMappingURL=Form.js.map