@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
package/.npmignore ADDED
@@ -0,0 +1,14 @@
1
+ # Exclude stories and tests from lib directory
2
+ **/stories/
3
+ **/stories/**
4
+ lib/**/stories/
5
+ lib/**/stories/**
6
+
7
+ # Optional: Exclude specific file patterns globally
8
+ lib/**/*.stories.*
9
+
10
+ # General rule: ignore any story files in source tree
11
+ src/**/*.stories.*
12
+ # Also ignore story folders under src
13
+ src/**/stories/
14
+ src/**/stories/**
package/README.md ADDED
@@ -0,0 +1,485 @@
1
+ # Fluid UI
2
+
3
+ A Next.js/React UI component library.
4
+
5
+ - [Fluid UI](#fluid-ui)
6
+ - [Overview](#overview)
7
+ - [Features](#features)
8
+ - [Getting Started](#getting-started)
9
+ - [1. Install Next.js and React](#1-install-nextjs-and-react)
10
+ - [2. Configure Tailwind 3](#2-configure-tailwind-3)
11
+ - [2. Configure `tailwind.config.js`](#2-configure-tailwindconfigjs)
12
+ - [Installation](#installation)
13
+ - [Compatibility](#compatibility)
14
+ - [Supported stacks \& compatibility matrix](#supported-stacks--compatibility-matrix)
15
+ - [Node / environment](#node--environment)
16
+ - [Troubleshooting](#troubleshooting)
17
+ - [Peer dependencies](#peer-dependencies)
18
+ - [Basic Usage](#basic-usage)
19
+ - [Charts Usage](#charts-usage)
20
+ - [Chart Usage Example](#chart-usage-example)
21
+ - [Map Usage](#map-usage)
22
+ - [Map Usage Examples](#map-usage-examples)
23
+ - [Static Map](#static-map)
24
+ - [Map with marker](#map-with-marker)
25
+ - [Components](#components)
26
+ - [Buttons](#buttons)
27
+ - [Inputs](#inputs)
28
+ - [Forms](#forms)
29
+ - [Menus](#menus)
30
+ - [Feedback](#feedback)
31
+ - [Media](#media)
32
+ - [Typography](#typography)
33
+ - [Data Visualization](#data-visualization)
34
+ - [Time](#time)
35
+ - [Maps](#maps)
36
+ - [Social Media](#social-media)
37
+ - [Author](#author)
38
+
39
+ ## Overview
40
+
41
+ Fluid UI is a comprehensive library of reusable UI components for Next.js/React applications. This
42
+ library is designed to streamline the development process and ensure consistency across projects.
43
+
44
+ ## Features
45
+
46
+ - Reusable UI components
47
+ - Charts
48
+ - Maps
49
+ - Built with React 19, Next.js 15 and TailwindCSS 3
50
+
51
+ ## Getting Started
52
+
53
+ To use Fluid UI in your Next.js/React project, follow these steps:
54
+
55
+ ### 1. Install Next.js and React
56
+
57
+ If you haven't set up your Next.js project yet, start by initializing it:
58
+
59
+ ```bash
60
+ npx create-next-app@latest
61
+ ```
62
+
63
+ When prompted:
64
+
65
+ - **Use TypeScript?**: Select **Yes** to enable TypeScript in your project.
66
+ - **Use TailwindCSS?**: Select **Yes** to install and configure TailwindCSS automatically.
67
+
68
+ Next.js will then generate the necessary configuration for both **TypeScript** and **TailwindCSS**,
69
+ including `tsconfig.json`, `tailwind.config.js`, and PostCSS setup.
70
+
71
+ ### 2. Configure Tailwind 3
72
+
73
+ To ensure that **Fluid UI** works correctly, you need to configure **TailwindCSS**. Follow the steps
74
+ below:
75
+
76
+ Note: All current Fluid releases utilize TailwindCSS v3.
77
+
78
+ #### 2. Configure `tailwind.config.js`
79
+
80
+ Update your `tailwind.config.js` file to match the configuration below:
81
+
82
+ ```js
83
+ import type { Config } from "tailwindcss";
84
+ /* Import colors if using Tailwind's color palette */
85
+ import colors from "tailwindcss/colors";
86
+
87
+ const config: Config = {
88
+ /* The selector strategy replaced the class strategy in Tailwind CSS v3.4.1.*/
89
+ darkMode: "selector",
90
+ content: [
91
+ "./src/pages/**/*.{js,ts,jsx,tsx,mdx}",
92
+ "./src/components/**/*.{js,ts,jsx,tsx,mdx}",
93
+ "./src/app/**/*.{js,ts,jsx,tsx,mdx}",
94
+ /* IMPORTANT: Add this line: */
95
+ "./node_modules/@smitch/fluid/**/*.js",
96
+ ],
97
+ theme: {
98
+ extend: {
99
+ colors: {
100
+ /* Modify color values as desired to suit your theme */
101
+ primary: {
102
+ DEFAULT: colors.indigo[600],
103
+ light: colors.indigo[300],
104
+ dark: colors.indigo[900],
105
+ },
106
+ secondary: {
107
+ DEFAULT: colors.gray[600],
108
+ light: colors.gray[300],
109
+ dark: colors.gray[900],
110
+ },
111
+ accent: {
112
+ DEFAULT: colors.orange[500],
113
+ light: colors.orange[300],
114
+ dark: colors.orange[700],
115
+ },
116
+ neutral: colors.gray[400],
117
+ dark: colors.gray[900],
118
+ light: colors.gray[100],
119
+ info: {
120
+ DEFAULT: colors.sky[400],
121
+ light: colors.sky[200],
122
+ dark: colors.sky[600],
123
+ },
124
+ success: {
125
+ DEFAULT: colors.green[600],
126
+ light: colors.green[400],
127
+ dark: colors.green[800],
128
+ },
129
+ warning: {
130
+ DEFAULT: colors.amber[500],
131
+ light: colors.amber[300],
132
+ dark: colors.amber[700],
133
+ },
134
+ error: {
135
+ DEFAULT: colors.red[600],
136
+ light: colors.red[400],
137
+ dark: colors.red[800],
138
+ },
139
+ danger: {
140
+ DEFAULT: colors.red[600],
141
+ light: colors.red[400],
142
+ dark: colors.red[800],
143
+ },
144
+ current: "currentColor",
145
+ transparent: "transparent",
146
+ },
147
+ },
148
+ },
149
+ plugins: [
150
+ require("@tailwindcss/forms")({
151
+ strategy: "class",
152
+ }),
153
+ require("@tailwindcss/typography"),
154
+ ],
155
+ };
156
+ export default config;
157
+ ```
158
+
159
+ ## Installation
160
+
161
+ ```bash
162
+ npm install @smitch/fluid
163
+ ```
164
+
165
+ ## Compatibility
166
+
167
+ ### Supported stacks & compatibility matrix
168
+
169
+ Use the table below to pick the Fluid major line that matches your app's React / Next.js and
170
+ Tailwind versions. This helps avoid peer dependency conflicts.
171
+
172
+ - Fluid v4.x (current):
173
+
174
+ - React: 19.x
175
+ - Next.js: 15.x
176
+ - Tailwind: 3.x
177
+ - Install: `npm install @smitch/fluid`
178
+
179
+ - Fluid v3.x:
180
+ - React: 18.x
181
+ - Next.js: 14.x (and other releases built on React 18)
182
+ - Tailwind: 3.x
183
+ - Install: `npm install @smitch/fluid@^3`
184
+
185
+ ### Node / environment
186
+
187
+ - Recommended Node: use an LTS release (Node 18/20+ recommended depending on your Next version).
188
+
189
+ ### Troubleshooting
190
+
191
+ - If a feature (charts, maps) fails because a peer package is missing, install the optional peers
192
+ indicated in the Peer dependencies section (e.g., `chart.js`, `react-chartjs-2`, `leaflet`).
193
+
194
+ ## Peer dependencies
195
+
196
+ Fluid is a component library and expects the host app to provide framework/runtime dependencies.
197
+ Below are the packages you should have installed in your project when using `@smitch/fluid`.
198
+
199
+ Required (framework)
200
+
201
+ ```bash
202
+ npm install react react-dom next
203
+ ```
204
+
205
+ Optional (feature-specific — install only if you use the feature)
206
+
207
+ Charts (optional)
208
+
209
+ If you use the chart components, install the Chart.js runtime and the React wrapper:
210
+
211
+ ```bash
212
+ npm install chart.js react-chartjs-2
213
+ ```
214
+
215
+ Maps (optional — Leaflet)
216
+
217
+ If you use the map components, install Leaflet and React Leaflet:
218
+
219
+ ```bash
220
+ npm install leaflet react-leaflet
221
+ ```
222
+
223
+ TypeScript notes:
224
+
225
+ - For some setups you may want `@types/leaflet` (install if your build complains about Leaflet
226
+ types):
227
+
228
+ ```bash
229
+ npm install -D @types/leaflet
230
+ ```
231
+
232
+ ## Basic Usage
233
+
234
+ Now, you can import and use any Fluid UI [component](#components) in your Next.js project:
235
+
236
+ ```jsx
237
+ import { Button } from "@smitch/fluid";
238
+
239
+ const App = () => <Button>Click me</Button>;
240
+
241
+ export default App;
242
+ ```
243
+
244
+ ## Charts Usage
245
+
246
+ Charts available include:
247
+
248
+ - BarChart
249
+ - BubbleChart
250
+ - LineChart
251
+ - PieChart
252
+ - DoughnutChart
253
+ - ScatterChart
254
+ - RadarChart
255
+ - PolarAreaChart
256
+ - MixedChart
257
+
258
+ Charts require Chart.js and the React wrapper:
259
+
260
+ ```bash
261
+ npm install chart.js react-chartjs-2
262
+ ```
263
+
264
+ ### Chart Usage Example
265
+
266
+ ```jsx
267
+ import { BarChart } from "@smitch/fluid/charts";
268
+
269
+ const App = () => {
270
+ return (
271
+ <BarChart
272
+ data={{
273
+ datasets: [
274
+ {
275
+ label: 'Min Temperature (°C)',
276
+ data: [12, 15, 10, 8, 14],
277
+ backgroundColor: 'rgba(54, 162, 235, 0.6)',
278
+ borderWidth: 0,
279
+ },
280
+ {
281
+ label: 'Max Temperature (°C)',
282
+ data: [22, 25, 20, 18, 24],
283
+ backgroundColor: 'rgba(255, 99, 132, 0.6)',
284
+ borderWidth: 0,
285
+ },
286
+ ...
287
+ ],
288
+ labels: ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
289
+ }}
290
+ title = 'Weekly Temperature Ranges',
291
+ legendposition = 'bottom',
292
+ />
293
+ )
294
+ };
295
+
296
+ export default App;
297
+ ```
298
+
299
+ ## Map Usage
300
+
301
+ Map options include:
302
+
303
+ - MapMarker
304
+ - MapCircle
305
+ - MapPolygon
306
+ - MapLine
307
+ - MapRectangle
308
+
309
+ Install Leaflet and React Leaflet (and leaflet.fullscreen if fullscreen control required):
310
+
311
+ ```bash
312
+ npm install leaflet react-leaflet leaflet.fullscreen
313
+ ```
314
+
315
+ ```bash
316
+ npm install -D @types/leaflet @types/leaflet.fullscreen
317
+ ```
318
+
319
+ ### Map Usage Examples
320
+
321
+ #### Static Map
322
+
323
+ ```jsx
324
+ import { Map } from "@smitch/fluid/map";
325
+
326
+ const App = () => {
327
+ return (
328
+ <Map
329
+ center={[51.505, -0.09]}
330
+ style={{
331
+ height: "400px",
332
+ width: "100%",
333
+ }}
334
+ tileIndex={0}
335
+ zoom={16}
336
+ />
337
+ );
338
+ };
339
+
340
+ export default App;
341
+ ```
342
+
343
+ #### Map with marker
344
+
345
+ ```jsx
346
+ import { Map, MapMarker } from "@smitch/fluid/map";
347
+
348
+ const App = () => {
349
+ return (
350
+ <Map
351
+ attributionControl
352
+ center={[51.505, -0.09]}
353
+ fullscreenControl
354
+ fullscreenControlPosition="topleft"
355
+ style={{
356
+ height: "400px",
357
+ width: "100%",
358
+ }}
359
+ tilesControl
360
+ zoom={13}
361
+ zoomControl
362
+ >
363
+ <MapMarker popupContent="Marker 1" position={[51.505, -0.09]} />
364
+ <MapMarker position={[51.51, -0.1]} />
365
+ </Map>
366
+ );
367
+ };
368
+
369
+ export default App;
370
+ ```
371
+
372
+ ## Components
373
+
374
+ ### Buttons
375
+
376
+ - <a href='https://fluid-ui.vercel.app/?path=/docs/buttons-button--docs'>Button</a>
377
+ - <a href='https://fluid-ui.vercel.app/?path=/docs/buttons-button-close-button--docs'>Close
378
+ Button</a>
379
+ - <a href='https://fluid-ui.vercel.app/?path=/docs/buttons-button-group--docs'>Button Group</a>
380
+
381
+ ### Inputs
382
+
383
+ - <a href='https://fluid-ui.vercel.app/?path=/docs/inputs-autocomplete--docs'>
384
+ Autocomplete
385
+ </a>
386
+ - <a href='https://fluid-ui.vercel.app/?path=/docs/inputs-checkbox--docs'>Checkbox</a>
387
+ - <a href='https://fluid-ui.vercel.app/?path=/docs/inputs-counter--docs'>Counter</a>
388
+ - <a href='https://fluid-ui.vercel.app/?path=/docs/inputs-file-upload--docs'>File Upload</a>
389
+ - <a href='https://fluid-ui.vercel.app/?path=/docs/inputs-input--docs'>Input</a>
390
+ - <a href='https://fluid-ui.vercel.app/?path=/docs/inputs-password-input--docs'>Password Input</a>
391
+ - <a href='https://fluid-ui.vercel.app/?path=/docs/inputs-radiog-roup--docs'>Radio Group</a>
392
+ - <a href='https://fluid-ui.vercel.app/?path=/docs/inputs-range-input--docs'>Range Input</a>
393
+ - <a href='https://fluid-ui.vercel.app/?path=/docs/inputs-search-input--docs'>Search Input</a>
394
+ - <a href='https://fluid-ui.vercel.app/?path=/docs/inputs-select--docs'>Select</a>
395
+ - <a href='https://fluid-ui.vercel.app/?path=/docs/inputs-switch--docs'>Switch</a>
396
+ - <a href='https://fluid-ui.vercel.app/?path=/docs/inputs-textarea--docs'>Textarea</a>
397
+ - <a href='https://fluid-ui.vercel.app/?path=/docs/inputs-text-input--docs'>Text Input</a>
398
+
399
+ ### Forms
400
+
401
+ - <a href='https://fluid-ui.vercel.app/?path=/docs/forms-fieldset--docs'>Fieldset</a>
402
+ - <a href='https://fluid-ui.vercel.app/?path=/docs/forms-form--docs'>Form</a>
403
+ - <a href='https://fluid-ui.vercel.app/?path=/docs/forms-label--docs'>Label</a>
404
+
405
+ ### Menus
406
+
407
+ - <a href='https://fluid-ui.vercel.app/?path=/docs/menus-accordion--docs'>Accordion</a>
408
+ - <a href='https://fluid-ui.vercel.app/?path=/docs/menus-breadcrumbs--docs'>Breadcrumbs</a>
409
+ - <a href='https://fluid-ui.vercel.app/?path=/docs/menus-carousel--docs'>Carousel</a>
410
+ - <a href='https://fluid-ui.vercel.app/?path=/docs/menus-drawer--docs'>Drawer</a>
411
+ - <a href='https://fluid-ui.vercel.app/?path=/docs/menus-dropdown--docs'>Dropdown</a>
412
+ - <a href='https://fluid-ui.vercel.app/?path=/docs/menus-navbar--docs'>NavBar</a>
413
+ - <a href='https://fluid-ui.vercel.app/?path=/docs/menus-pagination--docs'>Pagination</a>
414
+ - <a href='https://fluid-ui.vercel.app/?path=/docs/menus-sidebar--docs'>Sidebar</a>
415
+ - <a href='https://fluid-ui.vercel.app/?path=/docs/menus-tabs--docs'>Tabs</a>
416
+
417
+ ### Feedback
418
+
419
+ - <a href='https://fluid-ui.vercel.app/?path=/docs/feedback-alert--docs'>Alert</a>
420
+ - <a href='https://fluid-ui.vercel.app/?path=/docs/feedback-badge--docs'>Badge</a>
421
+ - <a href='https://fluid-ui.vercel.app/?path=/docs/feedback-dialog--docs'>Dialog</a>
422
+ - <a href='https://fluid-ui.vercel.app/?path=/docs/feedback-loading--docs'>Loading</a>
423
+ - <a href='https://fluid-ui.vercel.app/?path=/docs/feedback-progress--docs'>Progress</a>
424
+ - <a href='https://fluid-ui.vercel.app/?path=/docs/feedback-ratings--docs'>Ratings</a>
425
+ - <a href='https://fluid-ui.vercel.app/?path=/docs/feedback-ticker--docs'>Ticker</a>
426
+ - <a href='https://fluid-ui.vercel.app/?path=/docs/feedback-toast--docs'>Toast</a>
427
+
428
+ ### Media
429
+
430
+ - <a href='https://fluid-ui.vercel.app/?path=/docs/media-card--docs'>Card</a>
431
+ - <a href='https://fluid-ui.vercel.app/?path=/docs/media-figure--docs'>Figure</a>
432
+ - <a href='https://fluid-ui.vercel.app/?path=/docs/media-gallery--docs'>Gallery</a>
433
+ - <a href='https://fluid-ui.vercel.app/?path=/docs/media-hero--docs'>Hero</a>
434
+ - <a href='https://fluid-ui.vercel.app/?path=/docs/media-icon--docs'>Icon</a>
435
+ - <a href='https://fluid-ui.vercel.app/?path=/docs/media-modal--docs'>Modal</a>
436
+ - <a href='https://fluid-ui.vercel.app/?path=/docs/media-placeholder--docs'>PlaceHolder</a>
437
+ - <a href='https://fluid-ui.vercel.app/?path=/docs/media-twitter-embed--docs'>Twitter Embed</a>
438
+ - <a href='https://fluid-ui.vercel.app/?path=/docs/media-twitter-embed--docs'>Twitter Timeline</a>
439
+ - <a href='https://fluid-ui.vercel.app/?path=/docs/media-video--docs'>Video</a>
440
+ - <a href='https://fluid-ui.vercel.app/?path=/docs/media-video-player--docs'>Video Player</a>
441
+ - <a href='https://fluid-ui.vercel.app/?path=/docs/media-youtube-embed--docs'>YouTube Embed</a>
442
+
443
+ ### Typography
444
+
445
+ - <a href='https://fluid-ui.vercel.app/?path=/docs/typography-blockquote--docs'>Blockquote</a>
446
+ - <a href='https://fluid-ui.vercel.app/?path=/docs/typography-codeblock--docs'>Codeblock</a>
447
+ - <a href='https://fluid-ui.vercel.app/?path=/docs/typography-heading--docs'>Heading</a>
448
+
449
+ ### Data Visualization
450
+
451
+ - <a href='https://fluid-ui.vercel.app/?path=/docs/data-visualization-data-table--docs'>Data
452
+ Table</a>
453
+ - <a href='https://fluid-ui.vercel.app/?path=/docs/data-visualization-pictogram--docs'>Pictogram</a>
454
+ - <a href='https://fluid-ui.vercel.app/?path=/docs/data-visualization-line-chart--docs'>Line
455
+ Chart</a>
456
+ - <a href='https://fluid-ui.vercel.app/?path=/docs/data-visualization-bar-chart--docs'>Bar Chart</a>
457
+ - <a href='https://fluid-ui.vercel.app/?path=/docs/data-visualization-mixed-chart--docs'>Mixed
458
+ Chart</a>
459
+ - <a href='https://fluid-ui.vercel.app/?path=/docs/data-visualization-pie-chart--docs'>Pie Chart</a>
460
+ - <a href='https://fluid-ui.vercel.app/?path=/docs/data-visualization-doughnut-chart--docs'>Doughnut
461
+ Chart</a>
462
+ - <a href='https://fluid-ui.vercel.app/?path=/docs/data-visualization-radar-chart--docs'>Radar
463
+ Chart</a>
464
+ - <a href='https://fluid-ui.vercel.app/?path=/docs/data-visualization-polar-area-chart--docs'>PolarArea
465
+ Chart</a>
466
+ - <a href='https://fluid-ui.vercel.app/?path=/docs/data-visualization-scatter-chart--docs'>Scatter
467
+ Chart</a>
468
+ - <a href='https://fluid-ui.vercel.app/?path=/docs/data-visualization-stat-bar--docs'>Stat Bar</a>
469
+
470
+ ### Time
471
+
472
+ - <a href='https://fluid-ui.vercel.app/?path=/docs/time-clock--docs'>Clock</a>
473
+
474
+ ### Maps
475
+
476
+ - <a href='https://fluid-ui.vercel.app/?path=/docs/maps-map--docs'>Map</a>
477
+
478
+ ### Social Media
479
+
480
+ - <a href='https://fluid-ui.vercel.app/?path=/docs/social-socialshare--docs'>Social Media Share</a>
481
+
482
+ ## Author
483
+
484
+ Fluid UI is developed and maintained by
485
+ [Stephen Mitchell](https://www.linkedin.com/in/stephen-m-52a3a4192).
package/index.d.ts ADDED
@@ -0,0 +1 @@
1
+ export * from './lib'
package/index.js ADDED
@@ -0,0 +1 @@
1
+ export * from './lib'
@@ -0,0 +1,17 @@
1
+ 'use client';
2
+ import { useEffect, useState } from 'react';
3
+ var useWindowWidth = function () {
4
+ var _a = useState(window.innerWidth), windowWidth = _a[0], setWindowWidth = _a[1];
5
+ useEffect(function () {
6
+ var handleResize = function () {
7
+ setWindowWidth(window.innerWidth);
8
+ };
9
+ window.addEventListener('resize', handleResize);
10
+ return function () {
11
+ window.removeEventListener('resize', handleResize);
12
+ };
13
+ }, []);
14
+ return windowWidth;
15
+ };
16
+ export default useWindowWidth;
17
+ //# sourceMappingURL=useWindowWidth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useWindowWidth.js","sourceRoot":"","sources":["../../../src/ui/@hooks/useWindowWidth.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAE3C,IAAM,cAAc,GAAG;IAChB,IAAA,KAAgC,QAAQ,CAAS,MAAM,CAAC,UAAU,CAAC,EAAlE,WAAW,QAAA,EAAE,cAAc,QAAuC,CAAA;IAEzE,SAAS,CAAC;QACT,IAAM,YAAY,GAAG;YACpB,cAAc,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;QAClC,CAAC,CAAA;QAED,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAA;QAE/C,OAAO;YACN,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAA;QACnD,CAAC,CAAA;IACF,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,OAAO,WAAW,CAAA;AACnB,CAAC,CAAA;AAED,eAAe,cAAc,CAAA","sourcesContent":["'use client'\n\nimport { useEffect, useState } from 'react'\n\nconst useWindowWidth = () => {\n\tconst [windowWidth, setWindowWidth] = useState<number>(window.innerWidth)\n\n\tuseEffect(() => {\n\t\tconst handleResize = () => {\n\t\t\tsetWindowWidth(window.innerWidth)\n\t\t}\n\n\t\twindow.addEventListener('resize', handleResize)\n\n\t\treturn () => {\n\t\t\twindow.removeEventListener('resize', handleResize)\n\t\t}\n\t}, [])\n\n\treturn windowWidth\n}\n\nexport default useWindowWidth\n"]}
@@ -0,0 +1,35 @@
1
+ export function merge() {
2
+ var objects = [];
3
+ for (var _i = 0; _i < arguments.length; _i++) {
4
+ objects[_i] = arguments[_i];
5
+ }
6
+ var validObjects = objects.filter(function (obj) { return obj != null && typeof obj === "object"; });
7
+ if (validObjects.length === 0)
8
+ return {};
9
+ if (validObjects.length === 1)
10
+ return validObjects[0];
11
+ var result = {};
12
+ for (var _a = 0, validObjects_1 = validObjects; _a < validObjects_1.length; _a++) {
13
+ var obj = validObjects_1[_a];
14
+ var keys = Object.keys(obj);
15
+ for (var _b = 0, keys_1 = keys; _b < keys_1.length; _b++) {
16
+ var key = keys_1[_b];
17
+ var currentValue = result[key];
18
+ var newValue = obj[key];
19
+ var isObject = function (v) { return v !== null && typeof v === "object" && !Array.isArray(v); };
20
+ if (isObject(currentValue) && isObject(newValue)) {
21
+ result[key] = merge(currentValue, newValue);
22
+ }
23
+ else {
24
+ if (Array.isArray(newValue)) {
25
+ result[key] = newValue.slice();
26
+ }
27
+ else {
28
+ result[key] = newValue;
29
+ }
30
+ }
31
+ }
32
+ }
33
+ return result;
34
+ }
35
+ //# sourceMappingURL=merge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge.js","sourceRoot":"","sources":["../../../src/ui/@utils/merge.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,KAAK;IACnB,iBAA6D;SAA7D,UAA6D,EAA7D,qBAA6D,EAA7D,IAA6D;QAA7D,4BAA6D;;IAE7D,IAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,UAAC,GAAG,IAAK,OAAA,GAAG,IAAI,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAtC,CAAsC,CAElF,CAAC;IACF,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAA6B,CAAC;IACpE,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC;IAEtD,IAAM,MAAM,GAA4B,EAAE,CAAC;IAE3C,KAAkB,UAAY,EAAZ,6BAAY,EAAZ,0BAAY,EAAZ,IAAY,EAAE,CAAC;QAA5B,IAAM,GAAG,qBAAA;QACZ,IAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC9B,KAAkB,UAAI,EAAJ,aAAI,EAAJ,kBAAI,EAAJ,IAAI,EAAE,CAAC;YAApB,IAAM,GAAG,aAAA;YACZ,IAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAY,CAAC;YAC5C,IAAM,QAAQ,GAAI,GAA+B,CAAC,GAAG,CAAY,CAAC;YAElE,IAAM,QAAQ,GAAG,UAAC,CAAU,IAAK,OAAA,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAxD,CAAwD,CAAC;YAE1F,IAAI,QAAQ,CAAC,YAAY,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAEjD,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CACjB,YAAuC,EACvC,QAAmC,CACpC,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAE5B,MAAM,CAAC,GAAG,CAAC,GAAI,QAAsB,CAAC,KAAK,EAAE,CAAC;gBAChD,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;gBACzB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC","sourcesContent":["export function merge(\n ...objects: Array<Record<string, unknown> | null | undefined>\n): Record<string, unknown> {\n const validObjects = objects.filter((obj) => obj != null && typeof obj === \"object\") as Array<\n Record<string, unknown>\n >;\n if (validObjects.length === 0) return {} as Record<string, unknown>;\n if (validObjects.length === 1) return validObjects[0];\n\n const result: Record<string, unknown> = {};\n\n for (const obj of validObjects) {\n const keys = Object.keys(obj);\n for (const key of keys) {\n const currentValue = result[key] as unknown;\n const newValue = (obj as Record<string, unknown>)[key] as unknown;\n\n const isObject = (v: unknown) => v !== null && typeof v === \"object\" && !Array.isArray(v);\n\n if (isObject(currentValue) && isObject(newValue)) {\n // both are plain objects -> deep merge\n result[key] = merge(\n currentValue as Record<string, unknown>,\n newValue as Record<string, unknown>\n );\n } else {\n if (Array.isArray(newValue)) {\n // Create a shallow copy of the array to avoid mutating the source\n result[key] = (newValue as unknown[]).slice();\n } else {\n result[key] = newValue;\n }\n }\n }\n }\n\n return result;\n}\n"]}
@@ -0,0 +1,28 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useState, useEffect, useMemo } from "react";
4
+ import { twMerge } from "tailwind-merge";
5
+ import { AccordionHead, AccordionCard } from "./atoms";
6
+ var sizes = {
7
+ sm: "text-sm",
8
+ md: "text-base",
9
+ lg: "text-lg",
10
+ };
11
+ var layouts = {
12
+ default: "mb-0 border border-t-0 first:border-t",
13
+ flush: "border border-x-0 border-t-0 last:border-b-0",
14
+ spaced: "mb-2 border",
15
+ };
16
+ var Accordion = function (_a) {
17
+ var _b = _a.className, className = _b === void 0 ? "" : _b, style = _a.style, _c = _a.size, size = _c === void 0 ? "md" : _c, data = _a.data, opened = _a.opened, _d = _a.layout, layout = _d === void 0 ? "default" : _d, _e = _a.icon, icon = _e === void 0 ? "symbol" : _e, _f = _a.iconPosition, iconPosition = _f === void 0 ? "right" : _f, iconColor = _a.iconColor, children = _a.children;
18
+ var _g = useState(""), open = _g[0], setOpen = _g[1];
19
+ useEffect(function () {
20
+ if (opened)
21
+ setOpen(opened);
22
+ }, [opened]);
23
+ var sizeClasses = useMemo(function () { return sizes[size]; }, [size]);
24
+ var layoutClasses = useMemo(function () { return layouts[layout]; }, [layout]);
25
+ return (_jsx("div", { className: twMerge("accordion group ".concat(sizeClasses), className), style: style, "data-testid": "accordion", children: data ? (data.map(function (item) { return (_jsxs("div", { className: "accordion-wrapper ".concat(layoutClasses, " bg-light text-dark dark:bg-dark dark:text-light border-slate-300 dark:border-slate-500"), children: [_jsx(AccordionHead, { id: item.id, name: item.name, title: item.title, icon: icon, iconPosition: iconPosition, iconColor: iconColor, layout: layout, open: open, setopen: setOpen }), _jsx(AccordionCard, { title: item.title || item.name, src: item.src, description: item.description, link: item.link })] }, item.id)); })) : (_jsx("div", { className: "accordion-children", children: children })) }));
26
+ };
27
+ export default Accordion;
28
+ //# sourceMappingURL=Accordion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Accordion.js","sourceRoot":"","sources":["../../../src/ui/accordion/Accordion.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,aAAa,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAIvD,IAAM,KAAK,GAAG;IACZ,EAAE,EAAE,SAAS;IACb,EAAE,EAAE,WAAW;IACf,EAAE,EAAE,SAAS;CACd,CAAC;AAEF,IAAM,OAAO,GAAG;IACd,OAAO,EAAE,uCAAuC;IAChD,KAAK,EAAE,8CAA8C;IACrD,MAAM,EAAE,aAAa;CACtB,CAAC;AAEF,IAAM,SAAS,GAAG,UAAC,EAWF;QAVf,iBAAc,EAAd,SAAS,mBAAG,EAAE,KAAA,EACd,KAAK,WAAA,EACL,YAAW,EAAX,IAAI,mBAAG,IAAI,KAAA,EACX,IAAI,UAAA,EACJ,MAAM,YAAA,EACN,cAAkB,EAAlB,MAAM,mBAAG,SAAS,KAAA,EAClB,YAAe,EAAf,IAAI,mBAAG,QAAQ,KAAA,EACf,oBAAsB,EAAtB,YAAY,mBAAG,OAAO,KAAA,EACtB,SAAS,eAAA,EACT,QAAQ,cAAA;IAEF,IAAA,KAAkB,QAAQ,CAAS,EAAE,CAAC,EAArC,IAAI,QAAA,EAAE,OAAO,QAAwB,CAAC;IAE7C,SAAS,CAAC;QACR,IAAI,MAAM;YAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,IAAM,WAAW,GAAG,OAAO,CAAC,cAAM,OAAA,KAAK,CAAC,IAAI,CAAC,EAAX,CAAW,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IACvD,IAAM,aAAa,GAAG,OAAO,CAAC,cAAM,OAAA,OAAO,CAAC,MAAM,CAAC,EAAf,CAAe,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAE/D,OAAO,CACL,cACE,SAAS,EAAE,OAAO,CAAC,0BAAmB,WAAW,CAAE,EAAE,SAAS,CAAC,EAC/D,KAAK,EAAE,KAAK,iBACA,WAAW,YAEtB,IAAI,CAAC,CAAC,CAAC,CACN,IAAI,CAAC,GAAG,CAAC,UAAC,IAAI,IAAK,OAAA,CACjB,eACE,SAAS,EAAE,4BAAqB,aAAa,4FAAyF,aAGtI,KAAC,aAAa,IACZ,EAAE,EAAE,IAAI,CAAC,EAAE,EACX,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,OAAO,GAChB,EAEF,KAAC,aAAa,IACZ,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,EAC9B,GAAG,EAAE,IAAI,CAAC,GAAG,EACb,WAAW,EAAE,IAAI,CAAC,WAAW,EAC7B,IAAI,EAAE,IAAI,CAAC,IAAI,GACf,KAnBG,IAAI,CAAC,EAAE,CAoBR,CACP,EAxBkB,CAwBlB,CAAC,CACH,CAAC,CAAC,CAAC,CACF,cAAK,SAAS,EAAC,oBAAoB,YAAE,QAAQ,GAAO,CACrD,GACG,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,SAAS,CAAC","sourcesContent":["\"use client\";\n\nimport React, { useState, useEffect, useMemo } from \"react\";\n\nimport { twMerge } from \"tailwind-merge\";\n\nimport { AccordionHead, AccordionCard } from \"./atoms\";\n\nimport { AccordionProps } from \"./types\";\n\nconst sizes = {\n sm: \"text-sm\",\n md: \"text-base\",\n lg: \"text-lg\",\n};\n\nconst layouts = {\n default: \"mb-0 border border-t-0 first:border-t\",\n flush: \"border border-x-0 border-t-0 last:border-b-0\",\n spaced: \"mb-2 border\",\n};\n\nconst Accordion = ({\n className = \"\",\n style,\n size = \"md\",\n data,\n opened,\n layout = \"default\",\n icon = \"symbol\",\n iconPosition = \"right\",\n iconColor,\n children,\n}: AccordionProps) => {\n const [open, setOpen] = useState<string>(\"\");\n\n useEffect(() => {\n if (opened) setOpen(opened);\n }, [opened]);\n\n const sizeClasses = useMemo(() => sizes[size], [size]);\n const layoutClasses = useMemo(() => layouts[layout], [layout]);\n\n return (\n <div\n className={twMerge(`accordion group ${sizeClasses}`, className)}\n style={style}\n data-testid=\"accordion\"\n >\n {data ? (\n data.map((item) => (\n <div\n className={`accordion-wrapper ${layoutClasses} bg-light text-dark dark:bg-dark dark:text-light border-slate-300 dark:border-slate-500`}\n key={item.id}\n >\n <AccordionHead\n id={item.id}\n name={item.name}\n title={item.title}\n icon={icon}\n iconPosition={iconPosition}\n iconColor={iconColor}\n layout={layout}\n open={open}\n setopen={setOpen}\n />\n\n <AccordionCard\n title={item.title || item.name}\n src={item.src}\n description={item.description}\n link={item.link}\n />\n </div>\n ))\n ) : (\n <div className=\"accordion-children\">{children}</div>\n )}\n </div>\n );\n};\n\nexport default Accordion;\n"]}
@@ -0,0 +1,9 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { AccordionSection } from "../atoms";
3
+ import { Card, CardBody, CardImage, CardFooter } from "../..";
4
+ var AccordionCard = function (_a) {
5
+ var src = _a.src, title = _a.title, description = _a.description, link = _a.link;
6
+ return (_jsx(AccordionSection, { children: _jsxs(Card, { layout: "row", className: "accordion-card p-2", outline: false, children: [src && _jsx(CardImage, { title: title, src: src, aspect: "landscape" }), _jsxs(CardBody, { children: [_jsx("p", { className: "line-clamp-2 max-w-prose", children: description }), _jsx(CardFooter, { link: link, linkLabel: title })] })] }) }));
7
+ };
8
+ export default AccordionCard;
9
+ //# sourceMappingURL=AccordionCard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AccordionCard.js","sourceRoot":"","sources":["../../../../src/ui/accordion/atoms/AccordionCard.tsx"],"names":[],"mappings":";AAIA,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5C,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAE9D,IAAM,aAAa,GAAG,UAAC,EAAqD;QAAnD,GAAG,SAAA,EAAE,KAAK,WAAA,EAAE,WAAW,iBAAA,EAAE,IAAI,UAAA;IACpD,OAAO,CACL,KAAC,gBAAgB,cACf,MAAC,IAAI,IAAC,MAAM,EAAC,KAAK,EAAC,SAAS,EAAC,oBAAoB,EAAC,OAAO,EAAE,KAAK,aAC7D,GAAG,IAAI,KAAC,SAAS,IAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAC,WAAW,GAAG,EAChE,MAAC,QAAQ,eACP,YAAG,SAAS,EAAC,0BAA0B,YAAE,WAAW,GAAK,EACzD,KAAC,UAAU,IAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,GAAI,IACnC,IACN,GACU,CACpB,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,aAAa,CAAC","sourcesContent":["import React from \"react\";\n\nimport { AccordionCardProps } from \"../types\";\n\nimport { AccordionSection } from \"../atoms\";\n\nimport { Card, CardBody, CardImage, CardFooter } from \"../..\";\n\nconst AccordionCard = ({ src, title, description, link }: AccordionCardProps) => {\n return (\n <AccordionSection>\n <Card layout=\"row\" className=\"accordion-card p-2\" outline={false}>\n {src && <CardImage title={title} src={src} aspect=\"landscape\" />}\n <CardBody>\n <p className=\"line-clamp-2 max-w-prose\">{description}</p>\n <CardFooter link={link} linkLabel={title} />\n </CardBody>\n </Card>\n </AccordionSection>\n );\n};\n\nexport default AccordionCard;\n"]}
@@ -0,0 +1,23 @@
1
+ "use client";
2
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useMemo } from "react";
4
+ import { Button } from "../..";
5
+ import { FaPlus, FaMinus, FaChevronLeft, FaChevronRight, FaChevronDown } from "react-icons/fa";
6
+ var iconStyles = "aspect-square text-current w-6 group-[.text-sm]:w-4 group-[.text-lg]:w-8";
7
+ var iconPositionStyles = {
8
+ left: "justify-end flex-row-reverse",
9
+ right: "justify-between",
10
+ };
11
+ var layoutStyles = {
12
+ default: "p-2",
13
+ spaced: "p-2",
14
+ flush: "py-2 px-0",
15
+ };
16
+ var AccordionHead = function (_a) {
17
+ var icon = _a.icon, _b = _a.iconPosition, iconPosition = _b === void 0 ? "right" : _b, _c = _a.iconColor, iconColor = _c === void 0 ? "current" : _c, _d = _a.layout, layout = _d === void 0 ? "default" : _d, id = _a.id, open = _a.open, setopen = _a.setopen, title = _a.title, name = _a.name;
18
+ var iconPositionClasses = useMemo(function () { return iconPositionStyles[iconPosition]; }, [iconPosition]);
19
+ var layoutnClasses = useMemo(function () { return layoutStyles[layout]; }, [layout]);
20
+ return (_jsxs("h3", { className: "accordion-head ".concat(iconPositionClasses, " ").concat(layoutnClasses, " gap-1 peer font-semibold opacity-90 m-0 flex cursor-pointer items-center text-xl group-[.text-sm]:text-lg group-[.text-lg]:text-2xl p-2 capitalize ").concat(open === id ? "open" : ""), onClick: function () { return setopen("".concat(open === id ? "" : id)); }, children: [title || name, _jsx(Button, { className: "accordion-btn shadow-none !p-0", layout: "circle", onClick: function () { return setopen("".concat(open === id ? "" : id)); }, btnBackground: "transparent", btnColor: iconColor, children: _jsxs(_Fragment, { children: [open === id ? (icon === "symbol" ? (_jsx(FaMinus, { className: iconStyles })) : (_jsx(FaChevronDown, { className: iconStyles }))) : icon === "symbol" ? (_jsx(FaPlus, { className: iconStyles })) : iconPosition === "left" ? (_jsx(FaChevronRight, { className: iconStyles })) : (_jsx(FaChevronLeft, { className: iconStyles })), _jsx("span", { className: "sr-only", children: "Toggle section" })] }) })] }));
21
+ };
22
+ export default AccordionHead;
23
+ //# sourceMappingURL=AccordionHead.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AccordionHead.js","sourceRoot":"","sources":["../../../../src/ui/accordion/atoms/AccordionHead.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAc,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAIvC,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/F,IAAM,UAAU,GAAG,0EAA0E,CAAC;AAE9F,IAAM,kBAAkB,GAAG;IACzB,IAAI,EAAE,8BAA8B;IACpC,KAAK,EAAE,iBAAiB;CACzB,CAAC;AAEF,IAAM,YAAY,GAAG;IACnB,OAAO,EAAE,KAAK;IACd,MAAM,EAAE,KAAK;IACb,KAAK,EAAE,WAAW;CACnB,CAAC;AAEF,IAAM,aAAa,GAAG,UAAC,EAUF;QATnB,IAAI,UAAA,EACJ,oBAAsB,EAAtB,YAAY,mBAAG,OAAO,KAAA,EACtB,iBAAqB,EAArB,SAAS,mBAAG,SAAS,KAAA,EACrB,cAAkB,EAAlB,MAAM,mBAAG,SAAS,KAAA,EAClB,EAAE,QAAA,EACF,IAAI,UAAA,EACJ,OAAO,aAAA,EACP,KAAK,WAAA,EACL,IAAI,UAAA;IAEJ,IAAM,mBAAmB,GAAG,OAAO,CAAC,cAAM,OAAA,kBAAkB,CAAC,YAAY,CAAC,EAAhC,CAAgC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;IAC5F,IAAM,cAAc,GAAG,OAAO,CAAC,cAAM,OAAA,YAAY,CAAC,MAAM,CAAC,EAApB,CAAoB,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IACrE,OAAO,CACL,cACE,SAAS,EAAE,yBAAkB,mBAAmB,cAAI,cAAc,kKAChE,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CACzB,EACF,OAAO,EAAE,cAAM,OAAA,OAAO,CAAC,UAAG,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAE,CAAC,EAAnC,CAAmC,aAEjD,KAAK,IAAI,IAAI,EAEd,KAAC,MAAM,IACL,SAAS,EAAC,gCAAgC,EAC1C,MAAM,EAAC,QAAQ,EACf,OAAO,EAAE,cAAM,OAAA,OAAO,CAAC,UAAG,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAE,CAAC,EAAnC,CAAmC,EAClD,aAAa,EAAC,aAAa,EAC3B,QAAQ,EAAE,SAAS,YAEnB,8BACG,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,CACb,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAClB,KAAC,OAAO,IAAC,SAAS,EAAE,UAAU,GAAI,CACnC,CAAC,CAAC,CAAC,CACF,KAAC,aAAa,IAAC,SAAS,EAAE,UAAU,GAAI,CACzC,CACF,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CACtB,KAAC,MAAM,IAAC,SAAS,EAAE,UAAU,GAAI,CAClC,CAAC,CAAC,CAAC,YAAY,KAAK,MAAM,CAAC,CAAC,CAAC,CAC5B,KAAC,cAAc,IAAC,SAAS,EAAE,UAAU,GAAI,CAC1C,CAAC,CAAC,CAAC,CACF,KAAC,aAAa,IAAC,SAAS,EAAE,UAAU,GAAI,CACzC,EAED,eAAM,SAAS,EAAC,SAAS,+BAAsB,IAC9C,GACI,IACN,CACN,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,aAAa,CAAC","sourcesContent":["\"use client\";\n\nimport React, { useMemo } from \"react\";\n\nimport { AccordionHeadProps } from \"../types\";\n\nimport { Button } from \"../..\";\n\nimport { FaPlus, FaMinus, FaChevronLeft, FaChevronRight, FaChevronDown } from \"react-icons/fa\";\n\nconst iconStyles = \"aspect-square text-current w-6 group-[.text-sm]:w-4 group-[.text-lg]:w-8\";\n\nconst iconPositionStyles = {\n left: \"justify-end flex-row-reverse\",\n right: \"justify-between\",\n};\n\nconst layoutStyles = {\n default: \"p-2\",\n spaced: \"p-2\",\n flush: \"py-2 px-0\",\n};\n\nconst AccordionHead = ({\n icon,\n iconPosition = \"right\",\n iconColor = \"current\",\n layout = \"default\",\n id,\n open,\n setopen,\n title,\n name,\n}: AccordionHeadProps) => {\n const iconPositionClasses = useMemo(() => iconPositionStyles[iconPosition], [iconPosition]);\n const layoutnClasses = useMemo(() => layoutStyles[layout], [layout]);\n return (\n <h3\n className={`accordion-head ${iconPositionClasses} ${layoutnClasses} gap-1 peer font-semibold opacity-90 m-0 flex cursor-pointer items-center text-xl group-[.text-sm]:text-lg group-[.text-lg]:text-2xl p-2 capitalize ${\n open === id ? \"open\" : \"\"\n }`}\n onClick={() => setopen(`${open === id ? \"\" : id}`)}\n >\n {title || name}\n\n <Button\n className=\"accordion-btn shadow-none !p-0\"\n layout=\"circle\"\n onClick={() => setopen(`${open === id ? \"\" : id}`)}\n btnBackground=\"transparent\"\n btnColor={iconColor}\n >\n <>\n {open === id ? (\n icon === \"symbol\" ? (\n <FaMinus className={iconStyles} />\n ) : (\n <FaChevronDown className={iconStyles} />\n )\n ) : icon === \"symbol\" ? (\n <FaPlus className={iconStyles} />\n ) : iconPosition === \"left\" ? (\n <FaChevronRight className={iconStyles} />\n ) : (\n <FaChevronLeft className={iconStyles} />\n )}\n\n <span className=\"sr-only\">Toggle section</span>\n </>\n </Button>\n </h3>\n );\n};\n\nexport default AccordionHead;\n"]}