@shohojdhara/atomix 0.1.16 → 0.1.18

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 (525) hide show
  1. package/CONTRIBUTING.md +151 -0
  2. package/NEXTJS_INTEGRATION.md +358 -0
  3. package/README.md +168 -119
  4. package/babel.config.js +58 -0
  5. package/css.d.ts +10 -0
  6. package/dist/css/atomix.css +1 -2
  7. package/dist/js/194.js +1 -2
  8. package/dist/js/244.js +1 -0
  9. package/dist/js/atomix.react.cjs.js +1 -0
  10. package/dist/js/atomix.react.esm.js +1 -2
  11. package/dist/js/atomix.react.umd.js +1 -2
  12. package/dist/js/chunks/cjs/202.9d3b1ef1eaa0d5c8a309.js +1 -0
  13. package/dist/js/chunks/cjs/308.6ea9685ea38ead4120d0.js +1 -0
  14. package/dist/js/chunks/cjs/54.73db6922594e421ba6b1.js +1 -0
  15. package/dist/js/chunks/cjs/619.51feecaadcab819780d4.js +1 -0
  16. package/dist/js/chunks/cjs/690.90f6d11164081cbcbc4d.js +1 -0
  17. package/dist/js/chunks/cjs/894.24877561df336a8dfd14.js +1 -0
  18. package/dist/js/chunks/cjs/897.6c2a71fae95338890de7.js +1 -0
  19. package/dist/js/chunks/esm/{202.ff48d27672233280e021.js → 202.82aa7b3244e53c9edb72.js} +1 -2
  20. package/dist/js/chunks/esm/{308.f873332126eba90e5c62.js → 308.27e1e4005705ae320432.js} +1 -2
  21. package/dist/js/chunks/esm/{54.4db919e5e4e5cc6d7c72.js → 54.ece1fd6964f98d4d994f.js} +1 -2
  22. package/dist/js/chunks/esm/{619.afc5a718eff77fa423b5.js → 619.ebeb0298432a066ac05c.js} +1 -2
  23. package/dist/js/chunks/esm/{690.a9e968c7497d61e56cdc.js → 690.c5f412cc979b55740359.js} +1 -2
  24. package/dist/js/chunks/esm/{894.f1091a4a8758c26d29e4.js → 894.3604ddc9367d75191198.js} +1 -2
  25. package/dist/js/chunks/esm/{897.561a50f7d043d42169da.js → 897.a4aab2fad9401693eb12.js} +1 -2
  26. package/dist/js/chunks/umd/{202.dac7605cc555b6bda542.js → 202.5017dd0403d696bf1644.js} +1 -2
  27. package/dist/js/chunks/umd/{308.6709979849dcbdb90c9b.js → 308.4bc14b9d7b16b6ee0ab8.js} +1 -2
  28. package/dist/js/chunks/umd/{54.403470e1f7d0ef4424a7.js → 54.7fdfb4a031989470a70d.js} +1 -2
  29. package/dist/js/chunks/umd/{619.fa05ea98c10270eb64c5.js → 619.84a0c35ecee695250085.js} +1 -2
  30. package/dist/js/chunks/umd/{690.aa7054d1c53e5402c2d6.js → 690.d7041094a34a4a434be2.js} +1 -2
  31. package/dist/js/chunks/umd/{894.3e1eaf0a2aadf4434390.js → 894.c127ee4e9513c22ee97d.js} +1 -2
  32. package/dist/js/chunks/umd/{897.554ea37be4453698c167.js → 897.26932ac837a39fc91907.js} +1 -2
  33. package/dist/types/components/Badge/index.d.ts +3 -3
  34. package/dist/types/components/{Navbar → Navigation/Menu}/MegaMenu.d.ts +1 -1
  35. package/dist/types/components/{Navbar → Navigation/Menu}/Menu.d.ts +1 -1
  36. package/dist/types/components/Navigation/Nav/Nav.d.ts +20 -0
  37. package/dist/types/components/{Navbar → Navigation/Nav}/NavDropdown.d.ts +1 -1
  38. package/dist/types/components/Navigation/Nav/NavItem.d.ts +33 -0
  39. package/dist/types/components/Navigation/Navbar/Navbar.d.ts +19 -0
  40. package/dist/types/components/Navigation/SideMenu/SideMenu.d.ts +20 -0
  41. package/dist/types/components/Navigation/SideMenu/SideMenuItem.d.ts +30 -0
  42. package/dist/types/components/Navigation/SideMenu/SideMenuList.d.ts +17 -0
  43. package/dist/types/components/Navigation/index.d.ts +10 -0
  44. package/dist/types/components/PhotoViewer/PhotoViewer.d.ts +2 -2
  45. package/dist/types/components/PhotoViewer/PhotoViewerHeader.d.ts +2 -2
  46. package/dist/types/components/Tab/index.d.ts +2 -2
  47. package/dist/types/components/Toggle/index.d.ts +2 -2
  48. package/dist/types/components/Tooltip/index.d.ts +3 -3
  49. package/dist/types/components/index.d.ts +1 -1
  50. package/dist/types/lib/composables/index.d.ts +1 -0
  51. package/dist/types/lib/composables/useDatePicker.d.ts +1 -1
  52. package/dist/types/lib/composables/useDropdown.d.ts +1 -1
  53. package/dist/types/lib/composables/useModal.d.ts +1 -1
  54. package/dist/types/lib/composables/usePhotoViewer.d.ts +1 -1
  55. package/dist/types/lib/composables/useRating.d.ts +1 -1
  56. package/dist/types/lib/composables/useSideMenu.d.ts +28 -0
  57. package/dist/types/lib/constants/components.d.ts +72 -0
  58. package/dist/types/lib/types/components.d.ts +103 -0
  59. package/examples/nextjs-example.tsx +271 -0
  60. package/implementation-guide.md +505 -0
  61. package/next.config.js +69 -0
  62. package/package.json +80 -42
  63. package/postcss.config.js +28 -0
  64. package/src/Introduction.mdx +3 -5
  65. package/src/assets/fonts/HelveticaNeue/stylesheet.css +140 -127
  66. package/src/components/Accordion/Accordion.stories.tsx +58 -45
  67. package/src/components/Accordion/Accordion.tsx +14 -4
  68. package/src/components/Accordion/scripts/accordionInteractions.ts +9 -9
  69. package/src/components/Accordion/scripts/bundle.ts +1 -1
  70. package/src/components/Accordion/scripts/index.ts +3 -3
  71. package/src/components/AtomixLogo.tsx +13 -19
  72. package/src/components/Avatar/Avatar.stories.tsx +24 -21
  73. package/src/components/Avatar/Avatar.tsx +5 -8
  74. package/src/components/Avatar/AvatarGroup.tsx +11 -11
  75. package/src/components/Avatar/index.ts +1 -1
  76. package/src/components/Avatar/scripts/index.ts +66 -71
  77. package/src/components/Badge/Badge.stories.tsx +51 -21
  78. package/src/components/Badge/Badge.tsx +14 -12
  79. package/src/components/Badge/index.ts +3 -3
  80. package/src/components/Breadcrumb/Breadcrumb.stories.tsx +40 -40
  81. package/src/components/Breadcrumb/Breadcrumb.tsx +19 -26
  82. package/src/components/Breadcrumb/index.ts +1 -1
  83. package/src/components/Breadcrumb/scripts/breadcrumb.ts +36 -34
  84. package/src/components/Breadcrumb/scripts/index.ts +1 -1
  85. package/src/components/Breadcrumb/scripts/types.ts +9 -9
  86. package/src/components/Button/Button.stories.tsx +36 -12
  87. package/src/components/Button/Button.tsx +52 -39
  88. package/src/components/Button/index.ts +1 -1
  89. package/src/components/Button/scripts/buttonInteractions.ts +9 -9
  90. package/src/components/Button/scripts/index.ts +1 -1
  91. package/src/components/Callout/Callout.stories.tsx +207 -114
  92. package/src/components/Callout/Callout.tsx +12 -12
  93. package/src/components/Callout/index.ts +1 -1
  94. package/src/components/Callout/scripts/CalloutInteractions.ts +58 -48
  95. package/src/components/Callout/scripts/bundle.ts +2 -2
  96. package/src/components/Callout/scripts/index.ts +19 -15
  97. package/src/components/Card/Card.stories.tsx +2 -2
  98. package/src/components/Card/Card.tsx +49 -72
  99. package/src/components/Card/ElevationCard.tsx +4 -8
  100. package/src/components/Card/index.ts +1 -1
  101. package/src/components/Card/scripts/bundle.ts +7 -7
  102. package/src/components/Card/scripts/cardInteractions.ts +24 -24
  103. package/src/components/Card/scripts/index.ts +25 -26
  104. package/src/components/ColorModeToggle/ColorModeToggle.stories.tsx +6 -3
  105. package/src/components/ColorModeToggle/ColorModeToggle.tsx +12 -15
  106. package/src/components/ColorModeToggle/index.ts +1 -1
  107. package/src/components/Countdown/Countdown.stories.tsx +6 -2
  108. package/src/components/Countdown/Countdown.tsx +56 -48
  109. package/src/components/Countdown/index.ts +1 -1
  110. package/src/components/Countdown/scripts/index.ts +33 -28
  111. package/src/components/DataTable/DataTable.stories.tsx +23 -18
  112. package/src/components/DataTable/DataTable.tsx +39 -39
  113. package/src/components/DataTable/index.ts +1 -1
  114. package/src/components/DataTable/scripts/bundle.ts +8 -3
  115. package/src/components/DataTable/scripts/index.ts +182 -164
  116. package/src/components/DatePicker/DatePicker.stories.tsx +136 -148
  117. package/src/components/DatePicker/DatePicker.tsx +461 -420
  118. package/src/components/DatePicker/scripts/bundle.ts +12 -7
  119. package/src/components/DatePicker/scripts/componentInteractions.ts +76 -46
  120. package/src/components/DatePicker/scripts/index.ts +176 -156
  121. package/src/components/DatePicker/types.ts +32 -32
  122. package/src/components/DatePicker/utils.ts +41 -30
  123. package/src/components/Dropdown/Dropdown.stories.tsx +85 -55
  124. package/src/components/Dropdown/Dropdown.tsx +97 -88
  125. package/src/components/Dropdown/index.ts +5 -10
  126. package/src/components/Dropdown/scripts/bundle.ts +10 -10
  127. package/src/components/Dropdown/scripts/componentInteractions.ts +10 -2
  128. package/src/components/Dropdown/scripts/index.ts +122 -117
  129. package/src/components/EdgePanel/EdgePanel.stories.tsx +142 -58
  130. package/src/components/EdgePanel/EdgePanel.tsx +7 -13
  131. package/src/components/EdgePanel/index.ts +1 -1
  132. package/src/components/EdgePanel/scripts/bundle.ts +5 -5
  133. package/src/components/EdgePanel/scripts/edgePanelInteractions.ts +26 -26
  134. package/src/components/EdgePanel/scripts/index.ts +53 -53
  135. package/src/components/Form/Checkbox.stories.tsx +2 -2
  136. package/src/components/Form/Checkbox.tsx +13 -7
  137. package/src/components/Form/Form.stories.tsx +144 -218
  138. package/src/components/Form/Form.tsx +6 -6
  139. package/src/components/Form/FormGroup.stories.tsx +21 -38
  140. package/src/components/Form/FormGroup.tsx +18 -20
  141. package/src/components/Form/Input.stories.tsx +1 -1
  142. package/src/components/Form/Input.tsx +18 -8
  143. package/src/components/Form/Radio.stories.tsx +12 -25
  144. package/src/components/Form/Radio.tsx +11 -6
  145. package/src/components/Form/Select.stories.tsx +6 -6
  146. package/src/components/Form/Select.tsx +31 -33
  147. package/src/components/Form/Textarea.stories.tsx +7 -2
  148. package/src/components/Form/Textarea.tsx +17 -8
  149. package/src/components/Form/index.ts +1 -1
  150. package/src/components/Hero/Hero.stories.tsx +44 -42
  151. package/src/components/Hero/Hero.tsx +28 -38
  152. package/src/components/Hero/index.ts +1 -1
  153. package/src/components/Hero/scripts/bundle.ts +6 -6
  154. package/src/components/Hero/scripts/heroInteractions.ts +24 -29
  155. package/src/components/Hero/scripts/index.ts +16 -17
  156. package/src/components/Icon/Icon.tsx +16 -18
  157. package/src/components/Icon/index.ts +1 -1
  158. package/src/components/List/List.stories.tsx +1 -3
  159. package/src/components/List/List.tsx +6 -10
  160. package/src/components/List/ListGroup.tsx +1 -1
  161. package/src/components/List/index.ts +1 -1
  162. package/src/components/Messages/Messages.stories.tsx +30 -29
  163. package/src/components/Messages/Messages.tsx +60 -55
  164. package/src/components/Messages/index.ts +1 -1
  165. package/src/components/Messages/scripts/bundle.ts +1 -6
  166. package/src/components/Messages/scripts/componentInteractions.ts +32 -37
  167. package/src/components/Messages/scripts/index.ts +61 -55
  168. package/src/components/Modal/Modal.stories.tsx +77 -53
  169. package/src/components/Modal/Modal.tsx +63 -62
  170. package/src/components/Modal/index.ts +1 -1
  171. package/src/components/Modal/scripts/bundle.ts +3 -3
  172. package/src/components/Modal/scripts/index.ts +96 -84
  173. package/src/components/Modal/scripts/modalInteractions.ts +16 -14
  174. package/src/components/{Navbar → Navigation/Menu}/MegaMenu.tsx +50 -59
  175. package/src/components/Navigation/Menu/Menu.stories.tsx +340 -0
  176. package/src/components/Navigation/Menu/Menu.tsx +110 -0
  177. package/src/components/Navigation/Nav/Nav.stories.tsx +458 -0
  178. package/src/components/Navigation/Nav/Nav.tsx +50 -0
  179. package/src/components/Navigation/Nav/NavDropdown.tsx +105 -0
  180. package/src/components/Navigation/Nav/NavItem.tsx +159 -0
  181. package/src/components/{Navbar → Navigation/Navbar}/Navbar.stories.tsx +198 -104
  182. package/src/components/Navigation/Navbar/Navbar.tsx +150 -0
  183. package/src/components/Navigation/README.md +314 -0
  184. package/src/components/Navigation/SideMenu/SideMenu.README.md +494 -0
  185. package/src/components/Navigation/SideMenu/SideMenu.stories.tsx +618 -0
  186. package/src/components/Navigation/SideMenu/SideMenu.tsx +101 -0
  187. package/src/components/Navigation/SideMenu/SideMenuItem.tsx +95 -0
  188. package/src/components/Navigation/SideMenu/SideMenuList.tsx +41 -0
  189. package/src/components/Navigation/index.ts +23 -0
  190. package/src/components/Navigation/scripts/NavbarInteractions.ts +171 -0
  191. package/src/components/Navigation/scripts/SideMenu.ts +319 -0
  192. package/src/components/Navigation/scripts/SideMenuBundle.ts +69 -0
  193. package/src/components/Navigation/scripts/SideMenuInteractions.ts +250 -0
  194. package/src/components/Navigation/scripts/bundle.ts +58 -0
  195. package/src/components/Navigation/scripts/index.ts +248 -0
  196. package/src/components/Pagination/Pagination.stories.tsx +34 -33
  197. package/src/components/Pagination/Pagination.tsx +25 -35
  198. package/src/components/Pagination/index.ts +1 -1
  199. package/src/components/Pagination/scripts/index.ts +42 -37
  200. package/src/components/PhotoViewer/PhotoViewer.stories.tsx +48 -48
  201. package/src/components/PhotoViewer/PhotoViewer.tsx +29 -46
  202. package/src/components/PhotoViewer/PhotoViewerHeader.tsx +20 -26
  203. package/src/components/PhotoViewer/PhotoViewerImage.tsx +19 -17
  204. package/src/components/PhotoViewer/PhotoViewerInfo.tsx +13 -5
  205. package/src/components/PhotoViewer/PhotoViewerNavigation.tsx +5 -5
  206. package/src/components/PhotoViewer/PhotoViewerThumbnails.tsx +31 -30
  207. package/src/components/PhotoViewer/examples/ImageGallery.tsx +27 -37
  208. package/src/components/PhotoViewer/examples/SimpleGallery.tsx +19 -13
  209. package/src/components/PhotoViewer/examples/index.ts +1 -1
  210. package/src/components/PhotoViewer/index.ts +1 -1
  211. package/src/components/PhotoViewer/scripts/PhotoViewerInteractions.ts +43 -33
  212. package/src/components/PhotoViewer/scripts/bundle.ts +14 -14
  213. package/src/components/PhotoViewer/scripts/index.ts +173 -129
  214. package/src/components/Popover/Popover.stories.tsx +11 -12
  215. package/src/components/Popover/Popover.tsx +36 -36
  216. package/src/components/Popover/index.ts +1 -1
  217. package/src/components/Popover/scripts/bundle.ts +1 -1
  218. package/src/components/Popover/scripts/componentInteractions.ts +34 -46
  219. package/src/components/Popover/scripts/index.ts +64 -53
  220. package/src/components/ProductReview/ProductReview.stories.tsx +10 -8
  221. package/src/components/ProductReview/ProductReview.tsx +28 -32
  222. package/src/components/ProductReview/scripts/componentInteractions.ts +20 -20
  223. package/src/components/Progress/Progress.tsx +36 -34
  224. package/src/components/Progress/scripts/bundle.ts +7 -2
  225. package/src/components/Progress/scripts/componentInteractions.ts +29 -23
  226. package/src/components/Progress/scripts/index.ts +45 -39
  227. package/src/components/Rating/Rating.stories.tsx +3 -16
  228. package/src/components/Rating/Rating.tsx +250 -231
  229. package/src/components/Rating/scripts/bundle.ts +11 -6
  230. package/src/components/Rating/scripts/index.ts +85 -80
  231. package/src/components/Rating/scripts/ratingInteractions.ts +27 -24
  232. package/src/components/River/River.stories.tsx +70 -24
  233. package/src/components/River/River.tsx +28 -38
  234. package/src/components/River/index.ts +1 -1
  235. package/src/components/River/scripts/index.ts +11 -12
  236. package/src/components/SectionIntro/SectionIntro.stories.tsx +12 -9
  237. package/src/components/SectionIntro/SectionIntro.tsx +25 -31
  238. package/src/components/SectionIntro/scripts/componentInteractions.ts +1 -1
  239. package/src/components/SectionIntro/scripts/index.ts +30 -16
  240. package/src/components/Spinner/Spinner.stories.tsx +5 -7
  241. package/src/components/Spinner/Spinner.tsx +11 -6
  242. package/src/components/Spinner/index.ts +2 -2
  243. package/src/components/Steps/Steps.stories.tsx +44 -48
  244. package/src/components/Steps/Steps.tsx +20 -20
  245. package/src/components/Steps/index.ts +1 -1
  246. package/src/components/Steps/scripts/index.ts +9 -9
  247. package/src/components/Tab/Tab.stories.tsx +14 -6
  248. package/src/components/Tab/Tab.tsx +16 -18
  249. package/src/components/Tab/index.ts +2 -2
  250. package/src/components/Tab/scripts/index.ts +13 -13
  251. package/src/components/Testimonial/Testimonial.stories.tsx +54 -51
  252. package/src/components/Testimonial/Testimonial.tsx +18 -19
  253. package/src/components/Testimonial/index.ts +1 -1
  254. package/src/components/Testimonial/scripts/index.ts +19 -8
  255. package/src/components/Todo/Todo.stories.tsx +7 -24
  256. package/src/components/Todo/Todo.tsx +35 -46
  257. package/src/components/Todo/index.ts +1 -1
  258. package/src/components/Todo/scripts/bundle.ts +1 -1
  259. package/src/components/Todo/scripts/index.ts +99 -81
  260. package/src/components/Todo/scripts/todoInteractions.ts +12 -12
  261. package/src/components/Todo/scripts/types.ts +3 -3
  262. package/src/components/Toggle/Toggle.stories.tsx +2 -2
  263. package/src/components/Toggle/Toggle.tsx +18 -18
  264. package/src/components/Toggle/index.ts +2 -2
  265. package/src/components/Toggle/scripts/bundle.ts +7 -2
  266. package/src/components/Toggle/scripts/index.ts +14 -10
  267. package/src/components/Toggle/scripts/toggleInteractions.ts +11 -14
  268. package/src/components/Tooltip/Tooltip.stories.tsx +13 -6
  269. package/src/components/Tooltip/Tooltip.tsx +25 -15
  270. package/src/components/Tooltip/index.ts +3 -3
  271. package/src/components/Tooltip/scripts/bundle.ts +0 -1
  272. package/src/components/Tooltip/scripts/index.ts +44 -41
  273. package/src/components/Tooltip/scripts/tooltipInteractions.ts +22 -22
  274. package/src/components/Upload/Upload.stories.tsx +28 -34
  275. package/src/components/Upload/Upload.tsx +86 -71
  276. package/src/components/Upload/index.ts +1 -1
  277. package/src/components/Upload/scripts/index.ts +58 -43
  278. package/src/components/index.ts +5 -6
  279. package/src/design-tokens/BoxShadow/BoxShadow.stories.tsx +13 -10
  280. package/src/design-tokens/Colors/colors.scss +10 -7
  281. package/src/design-tokens/Colors/colors.stories.tsx +46 -59
  282. package/src/design-tokens/Spacing/Spacing.scss +7 -5
  283. package/src/design-tokens/Spacing/Spacing.stories.tsx +19 -18
  284. package/src/design-tokens/Typography/Typography.scss +88 -25
  285. package/src/design-tokens/Typography/Typography.stories.tsx +22 -25
  286. package/src/docs/implementation-guide.mdx +2 -2
  287. package/src/htmlComponentsEntry.ts +23 -23
  288. package/src/index.ts +1 -1
  289. package/src/layouts/Grid/Container.tsx +6 -10
  290. package/src/layouts/Grid/Grid.stories.tsx +72 -34
  291. package/src/layouts/Grid/Grid.tsx +6 -13
  292. package/src/layouts/Grid/GridCol.tsx +29 -26
  293. package/src/layouts/Grid/Row.tsx +6 -13
  294. package/src/layouts/MasonryGrid/MasonryGrid.stories.tsx +79 -72
  295. package/src/layouts/MasonryGrid/MasonryGrid.tsx +23 -25
  296. package/src/layouts/MasonryGrid/MasonryGridItem.tsx +4 -12
  297. package/src/layouts/index.ts +3 -4
  298. package/src/lib/composables/index.ts +3 -3
  299. package/src/lib/composables/useAccordion.ts +15 -6
  300. package/src/lib/composables/useBadge.ts +3 -3
  301. package/src/lib/composables/useBreadcrumb.ts +6 -12
  302. package/src/lib/composables/useButton.ts +3 -3
  303. package/src/lib/composables/useCallout.ts +3 -3
  304. package/src/lib/composables/useCard.ts +50 -28
  305. package/src/lib/composables/useCheckbox.ts +7 -7
  306. package/src/lib/composables/useDataTable.ts +61 -57
  307. package/src/lib/composables/useDatePicker.ts +255 -231
  308. package/src/lib/composables/useDropdown.ts +90 -75
  309. package/src/lib/composables/useEdgePanel.ts +50 -47
  310. package/src/lib/composables/useForm.ts +4 -7
  311. package/src/lib/composables/useFormGroup.ts +11 -12
  312. package/src/lib/composables/useHero.ts +36 -38
  313. package/src/lib/composables/useInput.ts +9 -10
  314. package/src/lib/composables/useMessages.ts +12 -14
  315. package/src/lib/composables/useModal.ts +37 -34
  316. package/src/lib/composables/useNavbar.ts +33 -22
  317. package/src/lib/composables/usePagination.ts +3 -10
  318. package/src/lib/composables/usePhotoViewer.ts +625 -578
  319. package/src/lib/composables/usePopover.ts +68 -62
  320. package/src/lib/composables/useProgress.ts +9 -12
  321. package/src/lib/composables/useRadio.ts +4 -4
  322. package/src/lib/composables/useRating.ts +82 -70
  323. package/src/lib/composables/useRiver.ts +28 -31
  324. package/src/lib/composables/useSelect.ts +7 -8
  325. package/src/lib/composables/useSideMenu.ts +197 -0
  326. package/src/lib/composables/useSpinner.ts +3 -3
  327. package/src/lib/composables/useTextarea.ts +8 -9
  328. package/src/lib/composables/useTodo.ts +14 -18
  329. package/src/lib/constants/components.ts +191 -118
  330. package/src/lib/constants/index.ts +1 -1
  331. package/src/lib/types/components.ts +454 -324
  332. package/src/lib/utils/dom.ts +2 -6
  333. package/src/lib/utils/icons.ts +20 -12
  334. package/src/lib/utils/index.ts +2 -2
  335. package/src/lib/utils/useForkRef.ts +1 -2
  336. package/src/styles/01-settings/_index.scss +59 -59
  337. package/src/styles/01-settings/_settings.accordion.scss +21 -21
  338. package/src/styles/01-settings/_settings.animations.scss +2 -2
  339. package/src/styles/01-settings/_settings.avatar-group.scss +14 -14
  340. package/src/styles/01-settings/_settings.avatar.scss +31 -31
  341. package/src/styles/01-settings/_settings.badge.scss +11 -11
  342. package/src/styles/01-settings/_settings.border-radius.scss +10 -9
  343. package/src/styles/01-settings/_settings.border.scss +7 -7
  344. package/src/styles/01-settings/_settings.box-shadow.scss +24 -12
  345. package/src/styles/01-settings/_settings.breadcrumb.scss +18 -18
  346. package/src/styles/01-settings/_settings.btn-group.scss +1 -1
  347. package/src/styles/01-settings/_settings.button.scss +63 -49
  348. package/src/styles/01-settings/_settings.callout.scss +27 -7
  349. package/src/styles/01-settings/_settings.card.scss +27 -30
  350. package/src/styles/01-settings/_settings.checkbox-group.scss +2 -3
  351. package/src/styles/01-settings/_settings.checkbox.scss +17 -18
  352. package/src/styles/01-settings/_settings.color-mode.scss +1 -1
  353. package/src/styles/01-settings/_settings.colors.scss +197 -214
  354. package/src/styles/01-settings/_settings.config.scss +1 -3
  355. package/src/styles/01-settings/_settings.countdown.scss +14 -14
  356. package/src/styles/01-settings/_settings.data-table.scss +6 -6
  357. package/src/styles/01-settings/_settings.datepicker.scss +40 -42
  358. package/src/styles/01-settings/_settings.dropdown.scss +30 -30
  359. package/src/styles/01-settings/_settings.edge-panel.scss +16 -16
  360. package/src/styles/01-settings/_settings.fonts.scss +14 -12
  361. package/src/styles/01-settings/_settings.form-group.scss +10 -10
  362. package/src/styles/01-settings/_settings.form.scss +3 -3
  363. package/src/styles/01-settings/_settings.grid.scss +1 -1
  364. package/src/styles/01-settings/_settings.hero.scss +23 -23
  365. package/src/styles/01-settings/_settings.input.scss +32 -32
  366. package/src/styles/01-settings/_settings.link.scss +6 -6
  367. package/src/styles/01-settings/_settings.list-group.scss +12 -12
  368. package/src/styles/01-settings/_settings.list.scss +2 -2
  369. package/src/styles/01-settings/_settings.maps.scss +183 -188
  370. package/src/styles/01-settings/_settings.masonry-grid.scss +2 -2
  371. package/src/styles/01-settings/_settings.menu.scss +35 -38
  372. package/src/styles/01-settings/_settings.messages.scss +71 -77
  373. package/src/styles/01-settings/_settings.modal.scss +24 -24
  374. package/src/styles/01-settings/_settings.nav.scss +15 -15
  375. package/src/styles/01-settings/_settings.navbar.scss +39 -12
  376. package/src/styles/01-settings/_settings.pagination.scss +21 -21
  377. package/src/styles/01-settings/_settings.photoviewer.scss +1 -1
  378. package/src/styles/01-settings/_settings.popover.scss +3 -3
  379. package/src/styles/01-settings/_settings.position.scss +2 -2
  380. package/src/styles/01-settings/_settings.progress.scss +15 -18
  381. package/src/styles/01-settings/_settings.rating.scss +7 -7
  382. package/src/styles/01-settings/_settings.river.scss +25 -25
  383. package/src/styles/01-settings/_settings.sectionintro.scss +15 -16
  384. package/src/styles/01-settings/_settings.select.scss +31 -31
  385. package/src/styles/01-settings/_settings.side-menu.scss +64 -16
  386. package/src/styles/01-settings/_settings.skeleton.scss +12 -12
  387. package/src/styles/01-settings/_settings.spacing.scss +62 -33
  388. package/src/styles/01-settings/_settings.spinner.scss +10 -10
  389. package/src/styles/01-settings/_settings.steps.scss +22 -22
  390. package/src/styles/01-settings/_settings.tabs.scss +25 -25
  391. package/src/styles/01-settings/_settings.testimonials.scss +17 -19
  392. package/src/styles/01-settings/_settings.todo.scss +1 -1
  393. package/src/styles/01-settings/_settings.toggle.scss +26 -26
  394. package/src/styles/01-settings/_settings.tooltip.scss +15 -15
  395. package/src/styles/01-settings/_settings.typography.scss +65 -48
  396. package/src/styles/01-settings/_settings.upload.scss +70 -77
  397. package/src/styles/01-settings/_settings.z-layers.scss +1 -1
  398. package/src/styles/02-tools/_index.scss +19 -19
  399. package/src/styles/02-tools/_tools.animations.scss +4 -4
  400. package/src/styles/02-tools/_tools.border-radius.scss +4 -5
  401. package/src/styles/02-tools/_tools.breakpoints.scss +33 -34
  402. package/src/styles/02-tools/_tools.button.scss +49 -25
  403. package/src/styles/02-tools/_tools.color-mode.scss +11 -11
  404. package/src/styles/02-tools/_tools.event.scss +1 -1
  405. package/src/styles/02-tools/_tools.hidden-visually.scss +1 -1
  406. package/src/styles/02-tools/_tools.hidden.scss +1 -1
  407. package/src/styles/02-tools/_tools.map-loop.scss +9 -9
  408. package/src/styles/02-tools/_tools.media-queries.scss +5 -3
  409. package/src/styles/02-tools/_tools.object-fit.scss +3 -3
  410. package/src/styles/02-tools/_tools.placeholder.scss +0 -1
  411. package/src/styles/02-tools/_tools.rem.scss +1 -1
  412. package/src/styles/02-tools/_tools.spacing.scss +8 -34
  413. package/src/styles/02-tools/_tools.to-rgb.scss +3 -3
  414. package/src/styles/02-tools/_tools.transition.scss +1 -1
  415. package/src/styles/02-tools/_tools.utility-api.scss +29 -14
  416. package/src/styles/03-generic/_generic.fonts.scss +0 -1
  417. package/src/styles/03-generic/_generic.reset.scss +13 -8
  418. package/src/styles/03-generic/_generic.root.scss +5 -5
  419. package/src/styles/03-generic/_index.scss +4 -4
  420. package/src/styles/04-elements/_elements.all.scss +2 -2
  421. package/src/styles/04-elements/_elements.body.scss +1 -2
  422. package/src/styles/04-elements/_elements.heading.scss +37 -21
  423. package/src/styles/04-elements/_elements.links.scss +0 -1
  424. package/src/styles/04-elements/_index.scss +5 -5
  425. package/src/styles/05-objects/_index.scss +3 -3
  426. package/src/styles/05-objects/_objects.container.scss +5 -4
  427. package/src/styles/05-objects/_objects.grid.scss +12 -12
  428. package/src/styles/05-objects/_objects.masonry-grid.scss +80 -74
  429. package/src/styles/06-components/_components.accordion.scss +12 -6
  430. package/src/styles/06-components/_components.avatar-group.scss +9 -8
  431. package/src/styles/06-components/_components.avatar.scss +78 -77
  432. package/src/styles/06-components/_components.badge.scss +48 -48
  433. package/src/styles/06-components/_components.breadcrumb.scss +57 -58
  434. package/src/styles/06-components/_components.btn-group.scss +22 -22
  435. package/src/styles/06-components/_components.button.scss +118 -110
  436. package/src/styles/06-components/_components.callout.scss +21 -15
  437. package/src/styles/06-components/_components.card.scss +6 -10
  438. package/src/styles/06-components/_components.checkbox-group.scss +9 -10
  439. package/src/styles/06-components/_components.checkbox.scss +10 -17
  440. package/src/styles/06-components/_components.color-mode-toggle.scss +6 -6
  441. package/src/styles/06-components/_components.countdown.scss +53 -54
  442. package/src/styles/06-components/_components.data-table.scss +40 -36
  443. package/src/styles/06-components/_components.datepicker.scss +95 -73
  444. package/src/styles/06-components/_components.dropdown.scss +15 -9
  445. package/src/styles/06-components/_components.edge-panel.scss +87 -46
  446. package/src/styles/06-components/_components.form-group.scss +5 -4
  447. package/src/styles/06-components/_components.hero.scss +128 -132
  448. package/src/styles/06-components/_components.icon.scss +16 -16
  449. package/src/styles/06-components/_components.image-gallery.scss +9 -7
  450. package/src/styles/06-components/_components.input.scss +18 -16
  451. package/src/styles/06-components/_components.list-group.scss +52 -51
  452. package/src/styles/06-components/_components.list.scss +15 -15
  453. package/src/styles/06-components/_components.menu.scss +225 -220
  454. package/src/styles/06-components/_components.messages.scss +45 -32
  455. package/src/styles/06-components/_components.modal.scss +0 -1
  456. package/src/styles/06-components/_components.nav.scss +56 -11
  457. package/src/styles/06-components/_components.navbar.scss +278 -202
  458. package/src/styles/06-components/_components.pagination.scss +7 -6
  459. package/src/styles/06-components/_components.photoviewer.scss +121 -116
  460. package/src/styles/06-components/_components.popover.scss +10 -10
  461. package/src/styles/06-components/_components.product-review.scss +3 -3
  462. package/src/styles/06-components/_components.progress.scss +32 -35
  463. package/src/styles/06-components/_components.rating.scss +9 -8
  464. package/src/styles/06-components/_components.river.scss +4 -2
  465. package/src/styles/06-components/_components.sectionintro.scss +19 -26
  466. package/src/styles/06-components/_components.select.scss +7 -8
  467. package/src/styles/06-components/_components.side-menu.scss +154 -28
  468. package/src/styles/06-components/_components.skeleton.scss +0 -1
  469. package/src/styles/06-components/_components.spinner.scss +2 -4
  470. package/src/styles/06-components/_components.steps.scss +76 -77
  471. package/src/styles/06-components/_components.tabs.scss +17 -12
  472. package/src/styles/06-components/_components.testimonials.scss +49 -52
  473. package/src/styles/06-components/_components.todo.scss +26 -26
  474. package/src/styles/06-components/_components.tooltip.scss +114 -115
  475. package/src/styles/06-components/_components.upload.scss +8 -18
  476. package/src/styles/06-components/_index.scss +48 -48
  477. package/src/styles/99-utilities/_index.scss +18 -18
  478. package/src/styles/99-utilities/_utilities.background.scss +13 -13
  479. package/src/styles/99-utilities/_utilities.border.scss +30 -30
  480. package/src/styles/99-utilities/_utilities.clearfix.scss +1 -1
  481. package/src/styles/99-utilities/_utilities.display.scss +5 -4
  482. package/src/styles/99-utilities/_utilities.flex.scss +19 -19
  483. package/src/styles/99-utilities/_utilities.link.scss +52 -35
  484. package/src/styles/99-utilities/_utilities.object-fit.scss +3 -3
  485. package/src/styles/99-utilities/_utilities.opacity.scss +6 -6
  486. package/src/styles/99-utilities/_utilities.overflow.scss +4 -4
  487. package/src/styles/99-utilities/_utilities.position.scss +8 -8
  488. package/src/styles/99-utilities/_utilities.shadow.scss +13 -13
  489. package/src/styles/99-utilities/_utilities.sizes.scss +17 -17
  490. package/src/styles/99-utilities/_utilities.spacing.scss +72 -37
  491. package/src/styles/99-utilities/_utilities.text.scss +15 -15
  492. package/src/styles/99-utilities/_utilities.visibility.scss +8 -8
  493. package/src/styles/99-utilities/_utilities.visually-hidden.scss +1 -1
  494. package/src/styles/99-utilities/_utilities.z-index.scss +2 -2
  495. package/tsconfig.json +74 -0
  496. package/webpack.config.js +463 -0
  497. package/NPM_PUBLISHING.md +0 -221
  498. package/dist/css/atomix.css.map +0 -1
  499. package/dist/js/194.js.map +0 -1
  500. package/dist/js/atomix.react.esm.js.map +0 -1
  501. package/dist/js/atomix.react.umd.js.map +0 -1
  502. package/dist/js/chunks/esm/202.ff48d27672233280e021.js.map +0 -1
  503. package/dist/js/chunks/esm/308.f873332126eba90e5c62.js.map +0 -1
  504. package/dist/js/chunks/esm/54.4db919e5e4e5cc6d7c72.js.map +0 -1
  505. package/dist/js/chunks/esm/619.afc5a718eff77fa423b5.js.map +0 -1
  506. package/dist/js/chunks/esm/690.a9e968c7497d61e56cdc.js.map +0 -1
  507. package/dist/js/chunks/esm/894.f1091a4a8758c26d29e4.js.map +0 -1
  508. package/dist/js/chunks/esm/897.561a50f7d043d42169da.js.map +0 -1
  509. package/dist/js/chunks/umd/202.dac7605cc555b6bda542.js.map +0 -1
  510. package/dist/js/chunks/umd/308.6709979849dcbdb90c9b.js.map +0 -1
  511. package/dist/js/chunks/umd/54.403470e1f7d0ef4424a7.js.map +0 -1
  512. package/dist/js/chunks/umd/619.fa05ea98c10270eb64c5.js.map +0 -1
  513. package/dist/js/chunks/umd/690.aa7054d1c53e5402c2d6.js.map +0 -1
  514. package/dist/js/chunks/umd/894.3e1eaf0a2aadf4434390.js.map +0 -1
  515. package/dist/js/chunks/umd/897.554ea37be4453698c167.js.map +0 -1
  516. package/dist/types/components/Navbar/Nav.d.ts +0 -5
  517. package/dist/types/components/Navbar/NavItem.d.ts +0 -5
  518. package/dist/types/components/Navbar/Navbar.d.ts +0 -5
  519. package/dist/types/components/Navbar/index.d.ts +0 -6
  520. package/src/components/Navbar/Menu.tsx +0 -122
  521. package/src/components/Navbar/Nav.tsx +0 -35
  522. package/src/components/Navbar/NavDropdown.tsx +0 -108
  523. package/src/components/Navbar/NavItem.tsx +0 -128
  524. package/src/components/Navbar/Navbar.tsx +0 -124
  525. package/src/components/Navbar/index.ts +0 -6
@@ -1 +0,0 @@
1
- {"version":3,"file":"js/chunks/esm/202.ff48d27672233280e021.js","mappings":"qLAwBA,MAAMA,EAAgC,CACpCC,YAAa,EACbC,UAAU,GAMZ,MAAMC,EACIC,SACAC,SACAC,QACAC,OACAN,YAORO,WAAAA,CAAYJ,EAA4BE,EAAU,CAAC,GACjDG,KAAKL,SAAWA,GAAYM,EAAAA,GAAMC,UAAUD,MAC5CD,KAAKJ,SACiB,iBAAbD,EACHQ,SAASC,cAA2BT,GACpCA,EACNK,KAAKH,QAAU,IAAKN,KAAoBM,GACxCG,KAAKF,OAAS,KACdE,KAAKR,YAAcQ,KAAKH,QAAQL,aAAe,EAC/CQ,KAAKK,aACP,CAKQA,WAAAA,GACDL,KAAKJ,WAEVI,KAAKM,sBAGDN,KAAKH,QAAQJ,WAAaO,KAAKJ,SAASW,UAAUC,SAASP,EAAAA,GAAMQ,QAAQC,WAC3EV,KAAKJ,SAASW,UAAUI,IAAIV,EAAAA,GAAMQ,QAAQC,UAG5CV,KAAKY,UAAUZ,KAAKR,aACtB,CAKQc,mBAAAA,GACDN,KAAKJ,WAEVI,KAAKF,OAASE,KAAKJ,SAASiB,iBAA8BZ,EAAAA,GAAMC,UAAUY,MAC5E,CAMOF,SAAAA,CAAUG,GACVf,KAAKF,QAAUiB,GAAQ,GAAcf,KAAKF,OAAOkB,OAArBD,IAGjCf,KAAKF,OAAOmB,SAAQ,CAACC,EAAMC,KACjBJ,EAAJI,GAEFD,EAAKX,UAAUI,IAAIV,EAAAA,GAAMQ,QAAQW,QACjCF,EAAKX,UAAUI,IAAIV,EAAAA,GAAMQ,QAAQY,YACxBF,IAAMJ,GAEfG,EAAKX,UAAUI,IAAIV,EAAAA,GAAMQ,QAAQW,QACjCF,EAAKX,UAAUe,OAAOrB,EAAAA,GAAMQ,QAAQY,aAGpCH,EAAKX,UAAUe,OAAOrB,EAAAA,GAAMQ,QAAQW,QACpCF,EAAKX,UAAUe,OAAOrB,EAAAA,GAAMQ,QAAQY,WACtC,IAGFrB,KAAKR,YAAcuB,EACrB,CAKOQ,IAAAA,IACmBvB,KAAKF,QAAQkB,QAAU,GAAK,EAAhDhB,KAAKR,aACPQ,KAAKY,UAAUZ,KAAKR,YAAc,EAEtC,CAKOgC,QAAAA,GACDxB,KAAKR,YAAc,GACrBQ,KAAKY,UAAUZ,KAAKR,YAAc,EAEtC,CAKOiC,OAAAA,GACL,EAUG,SAASC,EAAgB/B,EAAWM,EAAAA,GAAMC,UAAUD,MAAOJ,EAAU,CAAC,GAC3E,MAAM8B,EAAkC,GAClCC,EAAgBzB,SAASU,iBAA8BlB,GAE7D,OAAKiC,EAAcZ,QAEnBY,EAAcX,SAASY,IACrB,IACE,MAAMC,EAAW,IAAIpC,EAAMmC,EAAShC,GACpC8B,EAAeI,KAAKD,EACtB,CAAE,MAAOE,GAET,KAGKL,GAX2BA,CAYpC,CAEA,S","sources":["webpack://@shohojdhara/atomix/./src/components/Steps/scripts/index.ts"],"sourcesContent":["import { STEPS } from '../../../lib/constants/components';\n\n/**\n * Interface for Steps options\n */\ninterface StepsOptions {\n activeIndex?: number;\n vertical?: boolean;\n [key: string]: any;\n}\n\n/**\n * Interface for Steps instance\n */\ninterface StepsInstance {\n setActive: (index: number) => void;\n next: () => void;\n previous: () => void;\n destroy: () => void;\n}\n\n/**\n * Default options for the Steps component\n */\nconst DEFAULT_OPTIONS: StepsOptions = {\n activeIndex: 0,\n vertical: false\n};\n\n/**\n * Class representing a Steps component\n */\nclass Steps implements StepsInstance {\n private selector: string | Element;\n private $element: HTMLElement | null;\n private options: StepsOptions;\n private $items: NodeListOf<HTMLElement> | null;\n private activeIndex: number;\n\n /**\n * Creates an instance of Steps\n * @param selector - CSS selector string or DOM Element\n * @param options - Custom options to override defaults\n */\n constructor(selector: string | Element, options = {}) {\n this.selector = selector || STEPS.SELECTORS.STEPS;\n this.$element =\n typeof selector === 'string'\n ? document.querySelector<HTMLElement>(selector)\n : selector as HTMLElement;\n this.options = { ...DEFAULT_OPTIONS, ...options } as StepsOptions;\n this.$items = null;\n this.activeIndex = this.options.activeIndex || 0;\n this._initialize();\n }\n\n /**\n * Initialize the steps component\n */\n private _initialize(): void {\n if (!this.$element) return;\n\n this._initializeElements();\n \n // Set vertical mode if specified\n if (this.options.vertical && !this.$element.classList.contains(STEPS.CLASSES.VERTICAL)) {\n this.$element.classList.add(STEPS.CLASSES.VERTICAL);\n }\n \n this.setActive(this.activeIndex);\n }\n\n /**\n * Initialize DOM elements\n */\n private _initializeElements(): void {\n if (!this.$element) return;\n \n this.$items = this.$element.querySelectorAll<HTMLElement>(STEPS.SELECTORS.ITEM);\n }\n\n /**\n * Sets the active step\n * @param index - The index of the step to make active\n */\n public setActive(index: number): void {\n if (!this.$items || index < 0 || index >= this.$items.length) return;\n \n // Update all items\n this.$items.forEach((item, i) => {\n if (i < index) {\n // Steps before active are completed\n item.classList.add(STEPS.CLASSES.ACTIVE);\n item.classList.add(STEPS.CLASSES.COMPLETED);\n } else if (i === index) {\n // Current step is active but not completed\n item.classList.add(STEPS.CLASSES.ACTIVE);\n item.classList.remove(STEPS.CLASSES.COMPLETED);\n } else {\n // Future steps are neither active nor completed\n item.classList.remove(STEPS.CLASSES.ACTIVE);\n item.classList.remove(STEPS.CLASSES.COMPLETED);\n }\n });\n \n this.activeIndex = index;\n }\n\n /**\n * Moves to the next step\n */\n public next(): void {\n if (this.activeIndex < (this.$items?.length || 0) - 1) {\n this.setActive(this.activeIndex + 1);\n }\n }\n\n /**\n * Moves to the previous step\n */\n public previous(): void {\n if (this.activeIndex > 0) {\n this.setActive(this.activeIndex - 1);\n }\n }\n\n /**\n * Clean up event listeners\n */\n public destroy(): void {\n // No specific cleanup needed for steps component\n }\n}\n\n/**\n * Initialize all steps in the document\n * @param {string|Element} selector - CSS selector string or DOM Element\n * @param {Object} options - Custom options to override defaults\n * @returns {StepsInstance[]} Array of Steps instances\n */\nexport function initializeSteps(selector = STEPS.SELECTORS.STEPS, options = {}): StepsInstance[] {\n const stepsInstances: StepsInstance[] = [];\n const stepsElements = document.querySelectorAll<HTMLElement>(selector);\n\n if (!stepsElements.length) return stepsInstances;\n\n stepsElements.forEach((element) => {\n try {\n const instance = new Steps(element, options);\n stepsInstances.push(instance);\n } catch (error) {\n console.error('Error initializing steps:', error);\n }\n });\n\n return stepsInstances;\n}\n\nexport default Steps; "],"names":["DEFAULT_OPTIONS","activeIndex","vertical","Steps","selector","$element","options","$items","constructor","this","STEPS","SELECTORS","document","querySelector","_initialize","_initializeElements","classList","contains","CLASSES","VERTICAL","add","setActive","querySelectorAll","ITEM","index","length","forEach","item","i","ACTIVE","COMPLETED","remove","next","previous","destroy","initializeSteps","stepsInstances","stepsElements","element","instance","push","error"],"sourceRoot":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"js/chunks/esm/308.f873332126eba90e5c62.js","mappings":"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","sources":["webpack://@shohojdhara/atomix/./src/components/Upload/scripts/index.ts"],"sourcesContent":["import { UPLOAD } from '../../../lib/constants/components';\n\n/**\n * Interface for Upload options\n */\ninterface UploadOptions {\n disabled?: boolean;\n maxSizeInMB?: number;\n acceptedFileTypes?: string[];\n multiple?: boolean;\n onFileSelect?: (files: File[]) => void;\n onFileUpload?: (file: File, progress: number) => void;\n onFileUploadComplete?: (file: File) => void;\n onFileUploadError?: (file: File, error: string) => void;\n [key: string]: any;\n}\n\n/**\n * Interface for Upload instance\n */\ninterface UploadInstance {\n setStatus: (status: 'idle' | 'loading' | 'success' | 'error', message?: string) => void;\n setProgress: (percentage: number, timeLeft?: string) => void;\n setFile: (file: File | null) => void;\n disable: () => void;\n enable: () => void;\n destroy: () => void;\n}\n\n/**\n * Default options for the Upload component\n */\nconst DEFAULT_OPTIONS: UploadOptions = {\n disabled: false,\n maxSizeInMB: 5,\n acceptedFileTypes: ['application/pdf', 'application/vnd.ms-excel', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'image/jpeg', 'image/png'],\n multiple: false\n};\n\n/**\n * Class representing an Upload component\n */\nclass Upload implements UploadInstance {\n private selector: string | Element;\n private $element: HTMLElement | null;\n private $input: HTMLInputElement | null;\n private $button: HTMLButtonElement | null;\n private $loader: HTMLElement | null;\n private $loaderTitle: HTMLElement | null;\n private $loaderProgress: HTMLElement | null;\n private $loaderClose: HTMLButtonElement | null;\n private options: UploadOptions;\n private currentFile: File | null;\n private dragCounter: number;\n\n /**\n * Creates an instance of Upload\n * @param selector - CSS selector string or DOM Element\n * @param options - Custom options to override defaults\n */\n constructor(selector: string | Element, options = {}) {\n this.selector = selector || UPLOAD.SELECTORS.UPLOAD;\n this.$element =\n typeof selector === 'string'\n ? document.querySelector<HTMLElement>(selector)\n : selector as HTMLElement;\n this.options = { ...DEFAULT_OPTIONS, ...options } as UploadOptions;\n this.$input = null;\n this.$button = null;\n this.$loader = null;\n this.$loaderTitle = null;\n this.$loaderProgress = null;\n this.$loaderClose = null;\n this.currentFile = null;\n this.dragCounter = 0;\n this._initialize();\n }\n\n /**\n * Initialize the upload component\n */\n private _initialize(): void {\n if (!this.$element) return;\n\n // Create a hidden file input element\n this._createHiddenInput();\n\n // Get references to elements\n this.$button = this.$element.querySelector<HTMLButtonElement>(UPLOAD.SELECTORS.BUTTON);\n this.$loader = this.$element.querySelector<HTMLElement>(UPLOAD.SELECTORS.LOADER);\n this.$loaderTitle = this.$element?.querySelector<HTMLElement>(UPLOAD.SELECTORS.LOADER_TITLE);\n this.$loaderProgress = this.$element?.querySelector<HTMLElement>(UPLOAD.SELECTORS.LOADER_PROGRESS);\n this.$loaderClose = this.$element?.querySelector<HTMLButtonElement>(UPLOAD.SELECTORS.LOADER_CLOSE);\n\n // Apply disabled state if specified\n if (this.options.disabled) {\n this.disable();\n }\n\n // Set up event listeners\n this._setupEventListeners();\n }\n\n /**\n * Creates a hidden file input element and appends it to the element\n */\n private _createHiddenInput(): void {\n if (!this.$element) return;\n\n // Create input element\n const input = document.createElement('input');\n input.type = 'file';\n input.style.display = 'none';\n input.accept = this.options.acceptedFileTypes?.join(',') || '';\n input.multiple = !!this.options.multiple;\n \n // Append to element\n this.$element.appendChild(input);\n this.$input = input;\n }\n\n /**\n * Set up all event listeners\n */\n private _setupEventListeners(): void {\n if (!this.$element || !this.$input || !this.$button) return;\n\n // Button click handler\n this.$button.addEventListener('click', this._handleButtonClick.bind(this));\n\n // Input change handler\n this.$input.addEventListener('change', this._handleFileSelect.bind(this));\n\n // Drag and drop handlers\n this.$element.addEventListener('dragenter', this._handleDragEnter.bind(this));\n this.$element.addEventListener('dragleave', this._handleDragLeave.bind(this));\n this.$element.addEventListener('dragover', this._handleDragOver.bind(this));\n this.$element.addEventListener('drop', this._handleDrop.bind(this));\n\n // Close button handler\n if (this.$loaderClose) {\n this.$loaderClose.addEventListener('click', this._handleClose.bind(this));\n }\n }\n\n /**\n * Handle button click\n */\n private _handleButtonClick(event: MouseEvent): void {\n event.preventDefault();\n if (this.$input && !this.options.disabled) {\n this.$input.click();\n }\n }\n\n /**\n * Handle file selection from the input element\n */\n private _handleFileSelect(event: Event): void {\n if (!this.$input?.files?.length) return;\n \n const files = Array.from(this.$input.files);\n this._processFiles(files);\n }\n\n /**\n * Handle drag enter event\n */\n private _handleDragEnter(event: DragEvent): void {\n event.preventDefault();\n if (this.options.disabled) return;\n \n this.dragCounter++;\n if (this.dragCounter === 1) {\n this.$element?.classList.add(UPLOAD.CLASSES.DRAGGING);\n }\n }\n\n /**\n * Handle drag leave event\n */\n private _handleDragLeave(event: DragEvent): void {\n event.preventDefault();\n if (this.options.disabled) return;\n \n this.dragCounter--;\n if (this.dragCounter === 0) {\n this.$element?.classList.remove(UPLOAD.CLASSES.DRAGGING);\n }\n }\n\n /**\n * Handle drag over event\n */\n private _handleDragOver(event: DragEvent): void {\n event.preventDefault();\n if (this.options.disabled) return;\n }\n\n /**\n * Handle drop event\n */\n private _handleDrop(event: DragEvent): void {\n event.preventDefault();\n if (this.options.disabled) return;\n \n this.dragCounter = 0;\n this.$element?.classList.remove(UPLOAD.CLASSES.DRAGGING);\n \n if (!event.dataTransfer?.files.length) return;\n \n const files = Array.from(event.dataTransfer.files);\n this._processFiles(files);\n }\n\n /**\n * Handle close button click\n */\n private _handleClose(event: MouseEvent): void {\n event.preventDefault();\n \n // Reset state\n this.setStatus('idle');\n this.setFile(null);\n \n // Reset input\n if (this.$input) {\n this.$input.value = '';\n }\n }\n\n /**\n * Process the selected files\n */\n private _processFiles(files: File[]): void {\n if (!files.length) return;\n \n // If multiple is not allowed, take only the first file\n const filesToProcess = this.options.multiple ? files : [files[0]];\n \n // Validate files\n const validFiles = filesToProcess.filter(file => this._validateFile(file));\n \n // Notify about file selection\n if (validFiles.length && this.options.onFileSelect) {\n this.options.onFileSelect(validFiles);\n }\n \n // Process the first valid file\n if (validFiles.length) {\n this.setFile(validFiles[0]);\n this._simulateUpload(validFiles[0]);\n }\n }\n\n /**\n * Validate a file based on size and type\n */\n private _validateFile(file: File): boolean {\n const maxSizeInBytes = (this.options.maxSizeInMB || 5) * 1024 * 1024;\n \n // Check file size\n if (file.size > maxSizeInBytes) {\n this.setStatus('error', `File too large. Maximum size is ${this.options.maxSizeInMB}MB.`);\n return false;\n }\n \n // Check file type if acceptedFileTypes is provided\n if (this.options.acceptedFileTypes?.length) {\n const isAcceptedType = this.options.acceptedFileTypes.some(type => {\n // Handle wildcards like image/*\n if (type.endsWith('/*')) {\n const mainType = type.split('/')[0];\n return file.type.startsWith(`${mainType}/`);\n }\n return file.type === type;\n });\n \n if (!isAcceptedType) {\n this.setStatus('error', 'File type not supported.');\n return false;\n }\n }\n \n return true;\n }\n\n /**\n * Simulate a file upload process\n * In a real implementation, this would be replaced with actual upload logic\n */\n private _simulateUpload(file: File): void {\n this.setStatus('loading');\n let progress = 0;\n \n const interval = setInterval(() => {\n progress += 5;\n \n if (progress < 100) {\n this.setProgress(progress, `${Math.ceil((100 - progress) / 5)} seconds left`);\n \n if (this.options.onFileUpload) {\n this.options.onFileUpload(file, progress);\n }\n } else {\n clearInterval(interval);\n this.setStatus('success', 'Upload successful');\n \n if (this.options.onFileUploadComplete) {\n this.options.onFileUploadComplete(file);\n }\n }\n }, 500);\n }\n\n /**\n * Set current file\n */\n public setFile(file: File | null): void {\n this.currentFile = file;\n \n if (file && this.$loaderTitle) {\n this.$loaderTitle.textContent = file.name;\n }\n }\n\n /**\n * Set upload progress\n */\n public setProgress(percentage: number, timeLeft?: string): void {\n if (!this.$element || !this.$loaderProgress) return;\n \n // Set percentage as CSS variable\n this.$element.style.setProperty(UPLOAD.ATTRIBUTES.PERCENTAGE, percentage.toString());\n \n // Update the loader elements if they exist\n const $par = this.$element.querySelector<HTMLElement>(UPLOAD.SELECTORS.LOADER_PAR);\n const $time = this.$element.querySelector<HTMLElement>(UPLOAD.SELECTORS.LOADER_TIME);\n \n if ($par) {\n $par.textContent = `${percentage}%`;\n }\n \n if ($time && timeLeft) {\n $time.textContent = timeLeft;\n }\n }\n\n /**\n * Set upload status\n */\n public setStatus(status: 'idle' | 'loading' | 'success' | 'error', message?: string): void {\n if (!this.$element) return;\n \n // Remove all status classes\n this.$element.classList.remove(\n UPLOAD.CLASSES.LOADING,\n UPLOAD.CLASSES.SUCCESS,\n UPLOAD.CLASSES.ERROR\n );\n \n // Add appropriate class based on status\n switch (status) {\n case 'loading':\n this.$element.classList.add(UPLOAD.CLASSES.LOADING);\n break;\n case 'success':\n this.$element.classList.add(UPLOAD.CLASSES.SUCCESS);\n break;\n case 'error':\n this.$element.classList.add(UPLOAD.CLASSES.ERROR);\n break;\n }\n \n // Update message if provided and loader exists\n if (message && this.$loaderProgress) {\n this.$loaderProgress.textContent = message;\n }\n }\n\n /**\n * Disable the upload component\n */\n public disable(): void {\n if (!this.$element || !this.$button) return;\n \n this.$element.classList.add(UPLOAD.CLASSES.DISABLED);\n this.$button.disabled = true;\n this.options.disabled = true;\n }\n\n /**\n * Enable the upload component\n */\n public enable(): void {\n if (!this.$element || !this.$button) return;\n \n this.$element.classList.remove(UPLOAD.CLASSES.DISABLED);\n this.$button.disabled = false;\n this.options.disabled = false;\n }\n\n /**\n * Clean up event listeners\n */\n public destroy(): void {\n if (!this.$element || !this.$input || !this.$button) return;\n \n // Remove event listeners\n this.$button.removeEventListener('click', this._handleButtonClick.bind(this));\n this.$input.removeEventListener('change', this._handleFileSelect.bind(this));\n this.$element.removeEventListener('dragenter', this._handleDragEnter.bind(this));\n this.$element.removeEventListener('dragleave', this._handleDragLeave.bind(this));\n this.$element.removeEventListener('dragover', this._handleDragOver.bind(this));\n this.$element.removeEventListener('drop', this._handleDrop.bind(this));\n \n if (this.$loaderClose) {\n this.$loaderClose.removeEventListener('click', this._handleClose.bind(this));\n }\n \n // Remove input element\n if (this.$input.parentNode) {\n this.$input.parentNode.removeChild(this.$input);\n }\n }\n}\n\n/**\n * Initialize all upload components in the document\n * @param {string|Element} selector - CSS selector string or DOM Element\n * @param {Object} options - Custom options to override defaults\n * @returns {UploadInstance[]} Array of Upload instances\n */\nexport function initializeUploads(selector = UPLOAD.SELECTORS.UPLOAD, options = {}): UploadInstance[] {\n const uploadInstances: UploadInstance[] = [];\n const uploadElements = document.querySelectorAll<HTMLElement>(typeof selector === 'string' ? selector : UPLOAD.SELECTORS.UPLOAD);\n\n if (!uploadElements.length) return uploadInstances;\n\n uploadElements.forEach((element) => {\n try {\n const instance = new Upload(element, options);\n uploadInstances.push(instance);\n } catch (error) {\n console.error('Error initializing upload:', error);\n }\n });\n\n return uploadInstances;\n}\n\nexport default Upload; "],"names":["DEFAULT_OPTIONS","disabled","maxSizeInMB","acceptedFileTypes","multiple","Upload","selector","$element","$input","$button","$loader","$loaderTitle","$loaderProgress","$loaderClose","options","currentFile","dragCounter","constructor","this","UPLOAD","SELECTORS","document","querySelector","_initialize","_createHiddenInput","BUTTON","LOADER","LOADER_TITLE","LOADER_PROGRESS","LOADER_CLOSE","disable","_setupEventListeners","input","createElement","type","style","display","accept","join","appendChild","addEventListener","_handleButtonClick","bind","_handleFileSelect","_handleDragEnter","_handleDragLeave","_handleDragOver","_handleDrop","_handleClose","event","preventDefault","click","files","length","Array","from","_processFiles","classList","add","CLASSES","DRAGGING","remove","dataTransfer","setStatus","setFile","value","validFiles","filter","file","_validateFile","onFileSelect","_simulateUpload","size","some","endsWith","mainType","split","startsWith","progress","interval","setInterval","setProgress","Math","ceil","onFileUpload","clearInterval","onFileUploadComplete","textContent","name","percentage","timeLeft","setProperty","ATTRIBUTES","PERCENTAGE","$par","LOADER_PAR","$time","LOADER_TIME","status","message","LOADING","SUCCESS","ERROR","DISABLED","enable","destroy","removeEventListener","parentNode","removeChild","initializeUploads","uploadInstances","uploadElements","querySelectorAll","forEach","element","instance","push","error"],"sourceRoot":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"js/chunks/esm/54.4db919e5e4e5cc6d7c72.js","mappings":"kLAyBA,MAAMA,EAAkB,CACtBC,SAAUC,EAAAA,GAAIC,UAAUC,UACxBC,OAAQH,EAAAA,GAAIC,UAAUG,QACtBC,OAAQL,EAAAA,GAAIC,UAAUK,OACtBC,WAAYP,EAAAA,GAAIC,UAAUO,aAC1BC,YAAaT,EAAAA,GAAIU,QAAQC,OACzBC,YAAaZ,EAAAA,GAAIa,SAASC,cAM5B,MAAMC,EACIC,SACAC,SACAC,QACAC,UACAC,QACAC,YAORC,WAAAA,CAAYN,EAA4BE,EAAU,CAAC,GACjDK,KAAKP,SAAWA,GAAYhB,EAAAA,GAAIC,UAAUD,IAC1CuB,KAAKN,SACiB,iBAAbD,EACHQ,SAASC,cAA2BT,GACpCA,EACNO,KAAKL,QAAU,IAAKpB,KAAoBoB,GACxCK,KAAKJ,UAAY,KACjBI,KAAKH,QAAU,KACfG,KAAKF,YAAc,KACnBE,KAAKG,aACP,CAKQA,WAAAA,GACDH,KAAKN,WAEVM,KAAKI,sBACLJ,KAAKK,SAASL,KAAKL,QAAQN,aAC3BW,KAAKM,cACP,CAKQF,mBAAAA,GACDJ,KAAKN,WAEVM,KAAKJ,UAAYI,KAAKN,SAASa,iBAA8BP,KAAKL,QAAQnB,UAC1EwB,KAAKH,QAAUG,KAAKN,SAASa,iBAA8BP,KAAKL,QAAQb,QACxEkB,KAAKF,YAAcE,KAAKN,SAASa,iBAA8BP,KAAKL,QAAQX,YAC9E,CAKQsB,WAAAA,GACDN,KAAKJ,WAEVI,KAAKJ,UAAUY,SAASC,IACtB,MAAMC,EAAMD,EAAKP,cAA2BF,KAAKL,QAAQf,QACrD8B,GACFA,EAAIC,iBAAiB,SAAS,IAAMX,KAAKY,gBAAgBF,IAC3D,GAEJ,CAMQE,eAAAA,CAAgBF,GACtB,MAAMG,EAAWH,EAAII,QAAQC,cACZC,IAAbH,IAEJb,KAAKiB,eACLjB,KAAKK,SAASQ,GAChB,CAKQI,YAAAA,GACDjB,KAAKH,SAAYG,KAAKJ,YAE3BI,KAAKH,QAAQW,SAASU,IACpBA,EAAMC,MAAMC,OAAS,MACrBF,EAAMG,UAAUC,OAAOtB,KAAKL,QAAQT,aACpCgC,EAAMC,MAAMI,QAAU,GAAG,IAG3BvB,KAAKJ,UAAUY,SAASC,IACtB,MAAMC,EAAMD,EAAKP,cAA2BF,KAAKL,QAAQf,QACrD8B,GACFA,EAAIW,UAAUC,OAAOtB,KAAKL,QAAQT,YACpC,IAEJ,CAMQmB,QAAAA,CAASmB,GACVxB,KAAKH,SAAYG,KAAKJ,WAAcI,KAAKF,cAE9CE,KAAKH,QAAQW,SAAQ,CAACU,EAAOO,KAC3B,GAAIP,EAAMJ,QAAQC,UAAYS,KAAkB,CAC9C,MAAME,EAAY1B,KAAKF,cAAc2B,GACjCC,IACFR,EAAMG,UAAUM,IAAI3B,KAAKL,QAAQT,aACjC0C,uBAAsB,KACpBV,EAAMC,MAAMC,OAAYM,EAAUG,aAAb,KACrBX,EAAMC,MAAMI,QAAU,GAAG,IAG/B,KAGFvB,KAAKJ,UAAUY,SAAQ,CAACsB,EAASC,KAC/B,MAAMrB,EAAMoB,EAAQ5B,cAA2BF,KAAKL,QAAQf,QACxD8B,GAAOA,EAAII,QAAQC,UAAYS,MACjCd,EAAIW,UAAUM,IAAI3B,KAAKL,QAAQT,YACjC,IAEJ,CAKO8C,OAAAA,GACAhC,KAAKN,UAAaM,KAAKJ,WAE5BI,KAAKJ,UAAUY,SAASC,IACtB,MAAMC,EAAMD,EAAKP,cAA2BF,KAAKL,QAAQf,QACrD8B,GAEFA,EAAIuB,oBAAoB,SAAS,IAAMjC,KAAKY,gBAAgBF,IAC9D,GAEJ,EASK,SAASwB,EAAezC,EAAWhB,EAAAA,GAAIC,UAAUD,IAAKkB,EAAU,CAAC,GACtE,MAAMwC,EAA8B,GAC9BC,EAAcnC,SAASM,iBAA8Bd,GAE3D,OAAK2C,EAAYC,QAEjBD,EAAY5B,SAAS8B,IACnB,IACE,MAAMC,EAAW,IAAI/C,EAAI8C,EAAS3C,GAClCwC,EAAaK,KAAKD,EACpB,CAAE,MAAOE,GAET,KAGKN,GAXyBA,CAYlC,CAEA,S","sources":["webpack://@shohojdhara/atomix/./src/components/Tab/scripts/index.ts"],"sourcesContent":["import { TAB } from '../../../lib/constants/components';\n\n/**\n * Interface for Tab options\n */\ninterface TabOptions {\n navItems: string;\n navBtn: string;\n panels: string;\n panelBodys: string;\n activeClass: string;\n activeIndex: number;\n [key: string]: any;\n}\n\n/**\n * Interface for Tab instance\n */\ninterface TabInstance {\n destroy: () => void;\n}\n\n/**\n * Default options for the tab component\n */\nconst DEFAULT_OPTIONS = {\n navItems: TAB.SELECTORS.NAV_ITEMS,\n navBtn: TAB.SELECTORS.NAV_BTN,\n panels: TAB.SELECTORS.PANELS,\n panelBodys: TAB.SELECTORS.PANEL_BODIES,\n activeClass: TAB.CLASSES.ACTIVE,\n activeIndex: TAB.DEFAULTS.ACTIVE_INDEX\n};\n\n/**\n * Class representing a Tab component\n */\nclass Tab implements TabInstance {\n private selector: string | Element;\n private $element: HTMLElement | null;\n private options: TabOptions;\n private $navItems: NodeListOf<HTMLElement> | null;\n private $panels: NodeListOf<HTMLElement> | null;\n private $panelBodys: NodeListOf<HTMLElement> | null;\n\n /**\n * Creates an instance of Tab\n * @param selector - CSS selector string or DOM Element\n * @param options - Custom options to override defaults\n */\n constructor(selector: string | Element, options = {}) {\n this.selector = selector || TAB.SELECTORS.TAB;\n this.$element =\n typeof selector === 'string'\n ? document.querySelector<HTMLElement>(selector)\n : selector as HTMLElement;\n this.options = { ...DEFAULT_OPTIONS, ...options } as TabOptions;\n this.$navItems = null;\n this.$panels = null;\n this.$panelBodys = null;\n this._initialize();\n }\n\n /**\n * Initialize the tab component\n */\n private _initialize(): void {\n if (!this.$element) return;\n\n this._initializeElements();\n this._showTab(this.options.activeIndex);\n this._bindEvents();\n }\n\n /**\n * Initialize DOM elements\n */\n private _initializeElements(): void {\n if (!this.$element) return;\n \n this.$navItems = this.$element.querySelectorAll<HTMLElement>(this.options.navItems);\n this.$panels = this.$element.querySelectorAll<HTMLElement>(this.options.panels);\n this.$panelBodys = this.$element.querySelectorAll<HTMLElement>(this.options.panelBodys);\n }\n\n /**\n * Bind event listeners\n */\n private _bindEvents(): void {\n if (!this.$navItems) return;\n \n this.$navItems.forEach((item) => {\n const btn = item.querySelector<HTMLElement>(this.options.navBtn);\n if (btn) {\n btn.addEventListener('click', () => this._handleTabClick(btn));\n }\n });\n }\n\n /**\n * Handle tab click event\n * @param btn - The clicked tab button\n */\n private _handleTabClick(btn: HTMLElement): void {\n const tabIndex = btn.dataset.tabindex;\n if (tabIndex === undefined) return;\n \n this._hideAllTabs();\n this._showTab(tabIndex);\n }\n\n /**\n * Hide all tabs\n */\n private _hideAllTabs(): void {\n if (!this.$panels || !this.$navItems) return;\n \n this.$panels.forEach((panel) => {\n panel.style.height = '0px';\n panel.classList.remove(this.options.activeClass);\n panel.style.opacity = '0';\n });\n\n this.$navItems.forEach((item) => {\n const btn = item.querySelector<HTMLElement>(this.options.navBtn);\n if (btn) {\n btn.classList.remove(this.options.activeClass);\n }\n });\n }\n\n /**\n * Show tab at specified index\n * @param index - The index of tab to show\n */\n private _showTab(index: number | string): void {\n if (!this.$panels || !this.$navItems || !this.$panelBodys) return;\n \n this.$panels.forEach((panel, pIndex) => {\n if (panel.dataset.tabindex == index.toString()) {\n const panelBody = this.$panelBodys?.[pIndex];\n if (panelBody) {\n panel.classList.add(this.options.activeClass);\n requestAnimationFrame(() => {\n panel.style.height = `${panelBody.clientHeight}px`;\n panel.style.opacity = '1';\n });\n }\n }\n });\n\n this.$navItems.forEach((navItem, nIndex) => {\n const btn = navItem.querySelector<HTMLElement>(this.options.navBtn);\n if (btn && btn.dataset.tabindex == index.toString()) {\n btn.classList.add(this.options.activeClass);\n }\n });\n }\n\n /**\n * Clean up event listeners\n */\n public destroy(): void {\n if (!this.$element || !this.$navItems) return;\n\n this.$navItems.forEach((item) => {\n const btn = item.querySelector<HTMLElement>(this.options.navBtn);\n if (btn) {\n // Need to recreate the bound function to remove it correctly\n btn.removeEventListener('click', () => this._handleTabClick(btn));\n }\n });\n }\n}\n\n/**\n * Initialize all tabs in the document\n * @param {string|Element} selector - CSS selector string or DOM Element\n * @param {Object} options - Custom options to override defaults\n * @returns {TabInstance[]} Array of Tab instances\n */\nexport function initializeTabs(selector = TAB.SELECTORS.TAB, options = {}): TabInstance[] {\n const tabInstances: TabInstance[] = [];\n const tabElements = document.querySelectorAll<HTMLElement>(selector);\n\n if (!tabElements.length) return tabInstances;\n\n tabElements.forEach((element) => {\n try {\n const instance = new Tab(element, options);\n tabInstances.push(instance);\n } catch (error) {\n console.error('Error initializing tab:', error);\n }\n });\n\n return tabInstances;\n}\n\nexport default Tab; "],"names":["DEFAULT_OPTIONS","navItems","TAB","SELECTORS","NAV_ITEMS","navBtn","NAV_BTN","panels","PANELS","panelBodys","PANEL_BODIES","activeClass","CLASSES","ACTIVE","activeIndex","DEFAULTS","ACTIVE_INDEX","Tab","selector","$element","options","$navItems","$panels","$panelBodys","constructor","this","document","querySelector","_initialize","_initializeElements","_showTab","_bindEvents","querySelectorAll","forEach","item","btn","addEventListener","_handleTabClick","tabIndex","dataset","tabindex","undefined","_hideAllTabs","panel","style","height","classList","remove","opacity","index","pIndex","panelBody","add","requestAnimationFrame","clientHeight","navItem","nIndex","destroy","removeEventListener","initializeTabs","tabInstances","tabElements","length","element","instance","push","error"],"sourceRoot":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"js/chunks/esm/619.afc5a718eff77fa423b5.js","mappings":"sLA0BA,MAAMA,EAAgC,CACpCC,QAAQ,EACRC,UAAU,EACVC,SAAS,EACTC,aAAa,GAMf,MAAMC,EACIC,SACAC,QAORC,WAAAA,CAAYC,EAAsBF,EAAU,CAAC,GAC3CG,KAAKJ,SAAWG,EAChBC,KAAKH,QAAU,IAAKP,KAAoBO,GACxCG,KAAKC,MACP,CAKAA,IAAAA,GACMD,KAAKH,QAAQK,cACfF,KAAKJ,SAASO,MAAMC,YAClBC,EAAAA,GAAMC,WAAWC,cACjBP,KAAKH,QAAQK,cAKbF,KAAKH,QAAQW,oBACfR,KAAKS,sBAET,CAKQA,oBAAAA,GACN,IAAKT,KAAKJ,WAAaI,KAAKH,QAAQW,mBAAoB,OAGxD,IAAIE,EAAMV,KAAKJ,SAASe,cAAcN,EAAAA,GAAMO,UAAUC,IAEtD,IAAKH,EAAK,CAERA,EAAMI,SAASC,cAAc,OAC7BL,EAAIM,UAAYX,EAAAA,GAAMO,UAAUC,GAAGI,QAAQ,IAAK,IAGhD,MAAMC,EAAWJ,SAASC,cAAc,OAOxC,GANAG,EAASC,IAAMnB,KAAKH,QAAQW,mBAC5BU,EAASE,IAAM,aACfF,EAASF,UAAYX,EAAAA,GAAMO,UAAUS,SAASJ,QAAQ,IAAK,IAC3DP,EAAIY,YAAYJ,GAGZlB,KAAKH,QAAQH,YAAa,CAC5B,MAAM6B,EAAWT,SAASC,cAAc,OACxCQ,EAASP,UAAYX,EAAAA,GAAMO,UAAUY,QAAQP,QAAQ,IAAK,IAC1DP,EAAIY,YAAYC,EAClB,CAGIvB,KAAKJ,SAAS6B,WAChBzB,KAAKJ,SAAS8B,aAAahB,EAAKV,KAAKJ,SAAS6B,YAE9CzB,KAAKJ,SAAS0B,YAAYZ,EAE9B,CACF,CAKAiB,OAAAA,GACE,EAUG,SAASC,EAAiBC,EAAWxB,EAAAA,GAAMO,UAAUP,MAAOR,EAAU,CAAC,GAC5E,MAAMiC,EAAkC,GAClCC,EAAgBjB,SAASkB,iBAAkD,iBAAbH,EAAwBA,EAAWxB,EAAAA,GAAMO,UAAUP,OAEvH,OAAK0B,EAAcE,QAEnBF,EAAcG,SAASnC,IACrB,IACE,MAAMoC,EAAW,IAAIxC,EAAMI,EAASF,GACpCiC,EAAeM,KAAKD,EACtB,CAAE,MAAOE,GAET,KAGKP,GAX2BA,CAYpC,CAEA,S","sources":["webpack://@shohojdhara/atomix/./src/components/River/scripts/index.ts"],"sourcesContent":["import { RIVER } from '../../../lib/constants/components';\n\n/**\n * Interface for River options\n */\ninterface RiverOptions {\n center?: boolean;\n breakout?: boolean;\n reverse?: boolean;\n backgroundImageSrc?: string;\n showOverlay?: boolean;\n contentWidth?: string;\n [key: string]: any;\n}\n\n/**\n * Interface for River instance\n */\ninterface RiverInstance {\n init(): void;\n destroy(): void;\n}\n\n/**\n * Default options for the River component\n */\nconst DEFAULT_OPTIONS: RiverOptions = {\n center: false,\n breakout: false,\n reverse: false,\n showOverlay: true\n};\n\n/**\n * Class representing a River component\n */\nclass River implements RiverInstance {\n private $element: HTMLElement;\n private options: RiverOptions;\n\n /**\n * Creates an instance of River\n * @param element - The river element\n * @param options - Custom options to override defaults\n */\n constructor(element: HTMLElement, options = {}) {\n this.$element = element;\n this.options = { ...DEFAULT_OPTIONS, ...options };\n this.init();\n }\n\n /**\n * Initialize the river component\n */\n init(): void {\n if (this.options.contentWidth) {\n this.$element.style.setProperty(\n RIVER.ATTRIBUTES.CONTENT_WIDTH,\n this.options.contentWidth\n );\n }\n\n // Add background image if provided\n if (this.options.backgroundImageSrc) {\n this.setupBackgroundImage();\n }\n }\n\n /**\n * Setup background image\n */\n private setupBackgroundImage(): void {\n if (!this.$element || !this.options.backgroundImageSrc) return;\n\n // Check if background already exists\n let $bg = this.$element.querySelector(RIVER.SELECTORS.BG);\n \n if (!$bg) {\n // Create background container\n $bg = document.createElement('div');\n $bg.className = RIVER.SELECTORS.BG.replace('.', '');\n \n // Create background image\n const $bgImage = document.createElement('img');\n $bgImage.src = this.options.backgroundImageSrc;\n $bgImage.alt = 'Background';\n $bgImage.className = RIVER.SELECTORS.BG_IMAGE.replace('.', '');\n $bg.appendChild($bgImage);\n \n // Create overlay if needed\n if (this.options.showOverlay) {\n const $overlay = document.createElement('div');\n $overlay.className = RIVER.SELECTORS.OVERLAY.replace('.', '');\n $bg.appendChild($overlay);\n }\n \n // Add background to the element (as first child)\n if (this.$element.firstChild) {\n this.$element.insertBefore($bg, this.$element.firstChild);\n } else {\n this.$element.appendChild($bg);\n }\n }\n }\n\n /**\n * Clean up component\n */\n destroy(): void {\n // Remove any event listeners or cleanup here\n }\n}\n\n/**\n * Initialize all river components in the document\n * @param selector - CSS selector string or DOM Element\n * @param options - Custom options to override defaults\n * @returns Array of River instances\n */\nexport function initializeRivers(selector = RIVER.SELECTORS.RIVER, options = {}): RiverInstance[] {\n const riverInstances: RiverInstance[] = [];\n const riverElements = document.querySelectorAll<HTMLElement>(typeof selector === 'string' ? selector : RIVER.SELECTORS.RIVER);\n\n if (!riverElements.length) return riverInstances;\n\n riverElements.forEach((element) => {\n try {\n const instance = new River(element, options);\n riverInstances.push(instance);\n } catch (error) {\n console.error('Error initializing river:', error);\n }\n });\n\n return riverInstances;\n}\n\nexport default River; "],"names":["DEFAULT_OPTIONS","center","breakout","reverse","showOverlay","River","$element","options","constructor","element","this","init","contentWidth","style","setProperty","RIVER","ATTRIBUTES","CONTENT_WIDTH","backgroundImageSrc","setupBackgroundImage","$bg","querySelector","SELECTORS","BG","document","createElement","className","replace","$bgImage","src","alt","BG_IMAGE","appendChild","$overlay","OVERLAY","firstChild","insertBefore","destroy","initializeRivers","selector","riverInstances","riverElements","querySelectorAll","length","forEach","instance","push","error"],"sourceRoot":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"js/chunks/esm/690.a9e968c7497d61e56cdc.js","mappings":"6LAwBA,MAAMA,EAAuC,CAC3CC,UAAW,OACXC,aAAa,EACbC,KAAM,KACNC,UAAU,GAMZ,MAAMC,EACIC,SACAC,SACAC,QAORC,WAAAA,CAAYH,EAA4BE,EAAU,CAAC,GACjDE,KAAKJ,SAAWA,GAAYK,EAAAA,GAAcC,UAAUD,cACpDD,KAAKH,SACiB,iBAAbD,EACHO,SAASC,cAA2BR,GACpCA,EACNI,KAAKF,QAAU,IAAKR,KAAoBQ,GACxCE,KAAKK,aACP,CAKQA,WAAAA,GACN,GAAKL,KAAKH,WAGqB,WAA3BG,KAAKF,QAAQP,WAA2BS,KAAKH,SAASS,UAAUC,SAASN,EAAAA,GAAcO,QAAQC,SACjGT,KAAKH,SAASS,UAAUI,IAAIT,EAAAA,GAAcO,QAAQC,QAI1B,OAAtBT,KAAKF,QAAQL,MAAkBO,KAAKH,SAASS,UAAUC,SAASN,EAAAA,GAAcO,QAAQG,OAEzD,OAAtBX,KAAKF,QAAQL,MAAkBO,KAAKH,SAASS,UAAUC,SAASN,EAAAA,GAAcO,QAAQI,QAC/FZ,KAAKH,SAASS,UAAUI,IAAIT,EAAAA,GAAcO,QAAQI,OAFlDZ,KAAKH,SAASS,UAAUI,IAAIT,EAAAA,GAAcO,QAAQG,OAMhDX,KAAKF,QAAQe,oBAAoB,CACnC,IAAIC,EAAYd,KAAKH,SAASO,cAAc,uBAG5C,IAAKU,EAAW,CACdA,EAAYX,SAASY,cAAc,OACnCD,EAAUE,UAAY,qBAEtB,MAAMC,EAAad,SAASY,cAAc,OAQ1C,GAPAE,EAAWD,UAAY,2BACvBC,EAAWC,IAAMlB,KAAKF,QAAQe,mBAC9BI,EAAWE,IAAM,aAEjBL,EAAUM,YAAYH,GAGlBjB,KAAKF,QAAQN,YAAa,CAC5B,MAAM6B,EAAiBlB,SAASY,cAAc,OAC9CM,EAAeL,UAAY,0BAC3BF,EAAUM,YAAYC,EACxB,CAGArB,KAAKH,SAASyB,aAAaR,EAAWd,KAAKH,SAAS0B,WACtD,CACF,CACF,CAKOC,OAAAA,GACL,GAAKxB,KAAKH,WAGVG,KAAKH,SAASS,UAAUmB,OAAOxB,EAAAA,GAAcO,QAAQC,QAGrDT,KAAKH,SAASS,UAAUmB,OAAOxB,EAAAA,GAAcO,QAAQG,OACrDX,KAAKH,SAASS,UAAUmB,OAAOxB,EAAAA,GAAcO,QAAQI,OAGjDZ,KAAKF,QAAQe,oBAAoB,CACnC,MAAMC,EAAYd,KAAKH,SAASO,cAAc,uBAC1CU,GACFd,KAAKH,SAAS6B,YAAYZ,EAE9B,CACF,EASK,SAASa,EAAwB/B,EAAWK,EAAAA,GAAcC,UAAUD,cAAeH,EAAU,CAAC,GACnG,MAAM8B,EAAgD,GAChDC,EAAuB1B,SAAS2B,iBAAkD,iBAAblC,EAAwBA,EAAWK,EAAAA,GAAcC,UAAUD,eAEtI,OAAK4B,EAAqBE,QAE1BF,EAAqBG,SAASC,IAC5B,IACE,MAAMC,EAAW,IAAIvC,EAAasC,EAASnC,GAC3C8B,EAAsBO,KAAKD,EAC7B,CAAE,MAAOE,GAET,KAGKR,GAXkCA,CAY3C,CAEA,S","sources":["webpack://@shohojdhara/atomix/./src/components/SectionIntro/scripts/index.ts"],"sourcesContent":["import { SECTION_INTRO } from '../../../lib/constants/components';\n\n/**\n * Interface for SectionIntro options\n */\ninterface SectionIntroOptions {\n alignment?: 'left' | 'center' | 'right';\n backgroundImageSrc?: string;\n showOverlay?: boolean;\n size?: 'sm' | 'md' | 'lg';\n skeleton?: boolean;\n [key: string]: any;\n}\n\n/**\n * Interface for SectionIntro instance\n */\ninterface SectionIntroInstance {\n destroy: () => void;\n}\n\n/**\n * Default options for the SectionIntro component\n */\nconst DEFAULT_OPTIONS: SectionIntroOptions = {\n alignment: 'left',\n showOverlay: false,\n size: 'md',\n skeleton: false\n};\n\n/**\n * Class representing a SectionIntro component\n */\nclass SectionIntro implements SectionIntroInstance {\n private selector: string | Element;\n private $element: HTMLElement | null;\n private options: SectionIntroOptions;\n\n /**\n * Creates an instance of SectionIntro\n * @param selector - CSS selector string or DOM Element\n * @param options - Custom options to override defaults\n */\n constructor(selector: string | Element, options = {}) {\n this.selector = selector || SECTION_INTRO.SELECTORS.SECTION_INTRO;\n this.$element =\n typeof selector === 'string'\n ? document.querySelector<HTMLElement>(selector)\n : selector as HTMLElement;\n this.options = { ...DEFAULT_OPTIONS, ...options } as SectionIntroOptions;\n this._initialize();\n }\n\n /**\n * Initialize the section intro component\n */\n private _initialize(): void {\n if (!this.$element) return;\n\n // Apply alignment classes if needed\n if (this.options.alignment === 'center' && !this.$element.classList.contains(SECTION_INTRO.CLASSES.CENTER)) {\n this.$element.classList.add(SECTION_INTRO.CLASSES.CENTER);\n }\n\n // Apply size classes if specified\n if (this.options.size === 'sm' && !this.$element.classList.contains(SECTION_INTRO.CLASSES.SMALL)) {\n this.$element.classList.add(SECTION_INTRO.CLASSES.SMALL);\n } else if (this.options.size === 'lg' && !this.$element.classList.contains(SECTION_INTRO.CLASSES.LARGE)) {\n this.$element.classList.add(SECTION_INTRO.CLASSES.LARGE);\n }\n\n // Add background image if provided\n if (this.options.backgroundImageSrc) {\n let bgElement = this.$element.querySelector('.c-sectionintro__bg');\n \n // Create background element if it doesn't exist\n if (!bgElement) {\n bgElement = document.createElement('div');\n bgElement.className = 'c-sectionintro__bg';\n \n const imgElement = document.createElement('img');\n imgElement.className = 'c-sectionintro__bg-image';\n imgElement.src = this.options.backgroundImageSrc;\n imgElement.alt = 'Background';\n \n bgElement.appendChild(imgElement);\n \n // Add overlay if needed\n if (this.options.showOverlay) {\n const overlayElement = document.createElement('div');\n overlayElement.className = 'c-sectionintro__overlay';\n bgElement.appendChild(overlayElement);\n }\n \n // Insert at the beginning of the element\n this.$element.insertBefore(bgElement, this.$element.firstChild);\n }\n }\n }\n\n /**\n * Clean up event listeners and remove added elements\n */\n public destroy(): void {\n if (!this.$element) return;\n \n // Remove alignment classes\n this.$element.classList.remove(SECTION_INTRO.CLASSES.CENTER);\n \n // Remove size classes\n this.$element.classList.remove(SECTION_INTRO.CLASSES.SMALL);\n this.$element.classList.remove(SECTION_INTRO.CLASSES.LARGE);\n \n // Remove background if it was dynamically added\n if (this.options.backgroundImageSrc) {\n const bgElement = this.$element.querySelector('.c-sectionintro__bg');\n if (bgElement) {\n this.$element.removeChild(bgElement);\n }\n }\n }\n}\n\n/**\n * Initialize all section intros in the document\n * @param {string|Element} selector - CSS selector string or DOM Element\n * @param {Object} options - Custom options to override defaults\n * @returns {SectionIntroInstance[]} Array of SectionIntro instances\n */\nexport function initializeSectionIntros(selector = SECTION_INTRO.SELECTORS.SECTION_INTRO, options = {}): SectionIntroInstance[] {\n const sectionIntroInstances: SectionIntroInstance[] = [];\n const sectionIntroElements = document.querySelectorAll<HTMLElement>(typeof selector === 'string' ? selector : SECTION_INTRO.SELECTORS.SECTION_INTRO);\n\n if (!sectionIntroElements.length) return sectionIntroInstances;\n\n sectionIntroElements.forEach((element) => {\n try {\n const instance = new SectionIntro(element, options);\n sectionIntroInstances.push(instance);\n } catch (error) {\n console.error('Error initializing section intro:', error);\n }\n });\n\n return sectionIntroInstances;\n}\n\nexport default SectionIntro;\n"],"names":["DEFAULT_OPTIONS","alignment","showOverlay","size","skeleton","SectionIntro","selector","$element","options","constructor","this","SECTION_INTRO","SELECTORS","document","querySelector","_initialize","classList","contains","CLASSES","CENTER","add","SMALL","LARGE","backgroundImageSrc","bgElement","createElement","className","imgElement","src","alt","appendChild","overlayElement","insertBefore","firstChild","destroy","remove","removeChild","initializeSectionIntros","sectionIntroInstances","sectionIntroElements","querySelectorAll","length","forEach","element","instance","push","error"],"sourceRoot":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"js/chunks/esm/894.f1091a4a8758c26d29e4.js","mappings":"4LAqBA,MAAMA,EAAsC,CAC1CC,KAAM,GACNC,UAAU,GAMZ,MAAMC,EACIC,SACAC,SACAC,QAORC,WAAAA,CAAYH,EAA4BE,EAAU,CAAC,GACjDE,KAAKJ,SAAWA,GAAYK,EAAAA,GAAYC,UAAUD,YAClDD,KAAKH,SACiB,iBAAbD,EACHO,SAASC,cAA2BR,GACpCA,EACNI,KAAKF,QAAU,IAAKN,KAAoBM,GACxCE,KAAKK,aACP,CAKQA,WAAAA,GACDL,KAAKH,WAGgB,OAAtBG,KAAKF,QAAQL,MAAkBO,KAAKH,SAASS,UAAUC,SAASN,EAAAA,GAAYO,QAAQC,OAEvD,OAAtBT,KAAKF,QAAQL,MAAkBO,KAAKH,SAASS,UAAUC,SAASN,EAAAA,GAAYO,QAAQE,QAC7FV,KAAKH,SAASS,UAAUK,IAAIV,EAAAA,GAAYO,QAAQE,OAFhDV,KAAKH,SAASS,UAAUK,IAAIV,EAAAA,GAAYO,QAAQC,OAIpD,CAKOG,OAAAA,GACL,EAUG,SAASC,EAAuBjB,EAAWK,EAAAA,GAAYC,UAAUD,YAAaH,EAAU,CAAC,GAC9F,MAAMgB,EAA8C,GAC9CC,EAAsBZ,SAASa,iBAAkD,iBAAbpB,EAAwBA,EAAWK,EAAAA,GAAYC,UAAUD,aAEnI,OAAKc,EAAoBE,QAEzBF,EAAoBG,SAASC,IAC3B,IACE,MAAMC,EAAW,IAAIzB,EAAYwB,EAASrB,GAC1CgB,EAAqBO,KAAKD,EAC5B,CAAE,MAAOE,GAET,KAGKR,GAXiCA,CAY1C,CAEA,S","sources":["webpack://@shohojdhara/atomix/./src/components/Testimonial/scripts/index.ts"],"sourcesContent":["import { TESTIMONIAL } from '../../../lib/constants/components';\n\n/**\n * Interface for Testimonial options\n */\ninterface TestimonialOptions {\n size?: 'sm' | 'lg' | '';\n skeleton?: boolean;\n [key: string]: any;\n}\n\n/**\n * Interface for Testimonial instance\n */\ninterface TestimonialInstance {\n destroy: () => void;\n}\n\n/**\n * Default options for the Testimonial component\n */\nconst DEFAULT_OPTIONS: TestimonialOptions = {\n size: '',\n skeleton: false\n};\n\n/**\n * Class representing a Testimonial component\n */\nclass Testimonial implements TestimonialInstance {\n private selector: string | Element;\n private $element: HTMLElement | null;\n private options: TestimonialOptions;\n\n /**\n * Creates an instance of Testimonial\n * @param selector - CSS selector string or DOM Element\n * @param options - Custom options to override defaults\n */\n constructor(selector: string | Element, options = {}) {\n this.selector = selector || TESTIMONIAL.SELECTORS.TESTIMONIAL;\n this.$element =\n typeof selector === 'string'\n ? document.querySelector<HTMLElement>(selector)\n : selector as HTMLElement;\n this.options = { ...DEFAULT_OPTIONS, ...options } as TestimonialOptions;\n this._initialize();\n }\n\n /**\n * Initialize the testimonial component\n */\n private _initialize(): void {\n if (!this.$element) return;\n\n // Apply size classes if specified\n if (this.options.size === 'sm' && !this.$element.classList.contains(TESTIMONIAL.CLASSES.SMALL)) {\n this.$element.classList.add(TESTIMONIAL.CLASSES.SMALL);\n } else if (this.options.size === 'lg' && !this.$element.classList.contains(TESTIMONIAL.CLASSES.LARGE)) {\n this.$element.classList.add(TESTIMONIAL.CLASSES.LARGE);\n }\n }\n\n /**\n * Clean up event listeners\n */\n public destroy(): void {\n // No specific cleanup needed for testimonial component\n }\n}\n\n/**\n * Initialize all testimonials in the document\n * @param {string|Element} selector - CSS selector string or DOM Element\n * @param {Object} options - Custom options to override defaults\n * @returns {TestimonialInstance[]} Array of Testimonial instances\n */\nexport function initializeTestimonials(selector = TESTIMONIAL.SELECTORS.TESTIMONIAL, options = {}): TestimonialInstance[] {\n const testimonialInstances: TestimonialInstance[] = [];\n const testimonialElements = document.querySelectorAll<HTMLElement>(typeof selector === 'string' ? selector : TESTIMONIAL.SELECTORS.TESTIMONIAL);\n\n if (!testimonialElements.length) return testimonialInstances;\n\n testimonialElements.forEach((element) => {\n try {\n const instance = new Testimonial(element, options);\n testimonialInstances.push(instance);\n } catch (error) {\n console.error('Error initializing testimonial:', error);\n }\n });\n\n return testimonialInstances;\n}\n\nexport default Testimonial; "],"names":["DEFAULT_OPTIONS","size","skeleton","Testimonial","selector","$element","options","constructor","this","TESTIMONIAL","SELECTORS","document","querySelector","_initialize","classList","contains","CLASSES","SMALL","LARGE","add","destroy","initializeTestimonials","testimonialInstances","testimonialElements","querySelectorAll","length","forEach","element","instance","push","error"],"sourceRoot":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"js/chunks/esm/897.561a50f7d043d42169da.js","mappings":"sLAcA,MAAMA,EACIC,QACAC,KAMRC,WAAAA,CAAYF,GACVG,KAAKH,QAAUA,EACfG,KAAKF,MAAO,EACZE,KAAKC,aACP,CAKQA,WAAAA,GACND,KAAKE,cAEDF,KAAKH,QAAQM,UAAUC,SAASC,EAAAA,GAAOC,QAAQC,SACjDP,KAAKF,MAAO,EAEhB,CAKQI,WAAAA,GACNF,KAAKH,QAAQW,iBAAiB,QAASR,KAAKS,cAAcC,KAAKV,MACjE,CAKQS,aAAAA,GACDT,KAAKF,KAGRE,KAAKW,UAFLX,KAAKY,QAIT,CAKOA,MAAAA,GACLZ,KAAKH,QAAQM,UAAUU,IAAIR,EAAAA,GAAOC,QAAQC,OAC1CP,KAAKF,MAAO,EAGZE,KAAKH,QAAQiB,cAAc,IAAIC,YAAY,YAAa,CACtDC,SAAS,IAEb,CAKOL,OAAAA,GACLX,KAAKH,QAAQM,UAAUc,OAAOZ,EAAAA,GAAOC,QAAQC,OAC7CP,KAAKF,MAAO,EAGZE,KAAKH,QAAQiB,cAAc,IAAIC,YAAY,aAAc,CACvDC,SAAS,IAEb,CAKOE,OAAAA,GACLlB,KAAKH,QAAQsB,oBAAoB,QAASnB,KAAKS,cACjD,EAOK,SAASW,IACd,MAAMC,EAAoC,GACpCC,EAAiBC,SAASC,iBAA8BnB,EAAAA,GAAOoB,UAAUpB,QAE/E,OAAKiB,EAAeI,QAEpBJ,EAAeK,SAAS9B,IACtB,IACE,MAAM+B,EAAW,IAAIhC,EAAOC,GAC5BwB,EAAgBQ,KAAKD,EACvB,CAAE,MAAOE,GAET,KAGKT,GAX4BA,CAYrC,CAEA,S","sources":["webpack://@shohojdhara/atomix/./src/components/Toggle/scripts/index.ts"],"sourcesContent":["import { TOGGLE } from '../../../lib/constants/components';\n\n/**\n * Interface for Toggle instance\n */\ninterface ToggleInstance {\n turnOn: () => void;\n turnOff: () => void;\n destroy: () => void;\n}\n\n/**\n * Class representing a Toggle component\n */\nclass Toggle implements ToggleInstance {\n private element: HTMLElement;\n private isOn: boolean;\n\n /**\n * Creates an instance of Toggle\n * @param element - The toggle container element\n */\n constructor(element: HTMLElement) {\n this.element = element;\n this.isOn = false;\n this._initialize();\n }\n\n /**\n * Initialize the toggle component\n */\n private _initialize(): void {\n this._bindEvents();\n // Check if toggle should be initially on\n if (this.element.classList.contains(TOGGLE.CLASSES.IS_ON)) {\n this.isOn = true;\n }\n }\n\n /**\n * Bind event listeners\n */\n private _bindEvents(): void {\n this.element.addEventListener('click', this._handleToggle.bind(this));\n }\n\n /**\n * Handle toggle click\n */\n private _handleToggle(): void {\n if (!this.isOn) {\n this.turnOn();\n } else {\n this.turnOff();\n }\n }\n\n /**\n * Turn on the toggle\n */\n public turnOn(): void {\n this.element.classList.add(TOGGLE.CLASSES.IS_ON);\n this.isOn = true;\n \n // Dispatch custom event\n this.element.dispatchEvent(new CustomEvent('toggle:on', { \n bubbles: true \n }));\n }\n\n /**\n * Turn off the toggle\n */\n public turnOff(): void {\n this.element.classList.remove(TOGGLE.CLASSES.IS_ON);\n this.isOn = false;\n \n // Dispatch custom event\n this.element.dispatchEvent(new CustomEvent('toggle:off', { \n bubbles: true \n }));\n }\n\n /**\n * Clean up event listeners\n */\n public destroy(): void {\n this.element.removeEventListener('click', this._handleToggle);\n }\n}\n\n/**\n * Initialize all toggles in the document\n * @returns Array of toggle instances\n */\nexport function initializeToggles(): ToggleInstance[] {\n const toggleInstances: ToggleInstance[] = [];\n const toggleElements = document.querySelectorAll<HTMLElement>(TOGGLE.SELECTORS.TOGGLE);\n\n if (!toggleElements.length) return toggleInstances;\n\n toggleElements.forEach((element) => {\n try {\n const instance = new Toggle(element);\n toggleInstances.push(instance);\n } catch (error) {\n console.error('Error initializing toggle:', error);\n }\n });\n\n return toggleInstances;\n}\n\nexport default Toggle; "],"names":["Toggle","element","isOn","constructor","this","_initialize","_bindEvents","classList","contains","TOGGLE","CLASSES","IS_ON","addEventListener","_handleToggle","bind","turnOff","turnOn","add","dispatchEvent","CustomEvent","bubbles","remove","destroy","removeEventListener","initializeToggles","toggleInstances","toggleElements","document","querySelectorAll","SELECTORS","length","forEach","instance","push","error"],"sourceRoot":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"js/chunks/umd/202.dac7605cc555b6bda542.js","mappings":"gKAwBA,MAAMA,EAAgC,CACpCC,YAAa,EACbC,UAAU,GAMZ,MAAMC,EACIC,SACAC,SACAC,QACAC,OACAN,YAORO,WAAAA,CAAYJ,EAA4BE,EAAU,CAAC,GACjDG,KAAKL,SAAWA,GAAYM,EAAAA,GAAMC,UAAUD,MAC5CD,KAAKJ,SACiB,iBAAbD,EACHQ,SAASC,cAA2BT,GACpCA,EACNK,KAAKH,QAAU,IAAKN,KAAoBM,GACxCG,KAAKF,OAAS,KACdE,KAAKR,YAAcQ,KAAKH,QAAQL,aAAe,EAC/CQ,KAAKK,aACP,CAKQA,WAAAA,GACDL,KAAKJ,WAEVI,KAAKM,sBAGDN,KAAKH,QAAQJ,WAAaO,KAAKJ,SAASW,UAAUC,SAASP,EAAAA,GAAMQ,QAAQC,WAC3EV,KAAKJ,SAASW,UAAUI,IAAIV,EAAAA,GAAMQ,QAAQC,UAG5CV,KAAKY,UAAUZ,KAAKR,aACtB,CAKQc,mBAAAA,GACDN,KAAKJ,WAEVI,KAAKF,OAASE,KAAKJ,SAASiB,iBAA8BZ,EAAAA,GAAMC,UAAUY,MAC5E,CAMOF,SAAAA,CAAUG,GACVf,KAAKF,QAAUiB,GAAQ,GAAcf,KAAKF,OAAOkB,OAArBD,IAGjCf,KAAKF,OAAOmB,SAAQ,CAACC,EAAMC,KACjBJ,EAAJI,GAEFD,EAAKX,UAAUI,IAAIV,EAAAA,GAAMQ,QAAQW,QACjCF,EAAKX,UAAUI,IAAIV,EAAAA,GAAMQ,QAAQY,YACxBF,IAAMJ,GAEfG,EAAKX,UAAUI,IAAIV,EAAAA,GAAMQ,QAAQW,QACjCF,EAAKX,UAAUe,OAAOrB,EAAAA,GAAMQ,QAAQY,aAGpCH,EAAKX,UAAUe,OAAOrB,EAAAA,GAAMQ,QAAQW,QACpCF,EAAKX,UAAUe,OAAOrB,EAAAA,GAAMQ,QAAQY,WACtC,IAGFrB,KAAKR,YAAcuB,EACrB,CAKOQ,IAAAA,IACmBvB,KAAKF,QAAQkB,QAAU,GAAK,EAAhDhB,KAAKR,aACPQ,KAAKY,UAAUZ,KAAKR,YAAc,EAEtC,CAKOgC,QAAAA,GACDxB,KAAKR,YAAc,GACrBQ,KAAKY,UAAUZ,KAAKR,YAAc,EAEtC,CAKOiC,OAAAA,GACL,EAUG,SAASC,EAAgB/B,EAAWM,EAAAA,GAAMC,UAAUD,MAAOJ,EAAU,CAAC,GAC3E,MAAM8B,EAAkC,GAClCC,EAAgBzB,SAASU,iBAA8BlB,GAE7D,OAAKiC,EAAcZ,QAEnBY,EAAcX,SAASY,IACrB,IACE,MAAMC,EAAW,IAAIpC,EAAMmC,EAAShC,GACpC8B,EAAeI,KAAKD,EACtB,CAAE,MAAOE,GAET,KAGKL,GAX2BA,CAYpC,CAEA,S","sources":["webpack://Atomix/./src/components/Steps/scripts/index.ts"],"sourcesContent":["import { STEPS } from '../../../lib/constants/components';\n\n/**\n * Interface for Steps options\n */\ninterface StepsOptions {\n activeIndex?: number;\n vertical?: boolean;\n [key: string]: any;\n}\n\n/**\n * Interface for Steps instance\n */\ninterface StepsInstance {\n setActive: (index: number) => void;\n next: () => void;\n previous: () => void;\n destroy: () => void;\n}\n\n/**\n * Default options for the Steps component\n */\nconst DEFAULT_OPTIONS: StepsOptions = {\n activeIndex: 0,\n vertical: false\n};\n\n/**\n * Class representing a Steps component\n */\nclass Steps implements StepsInstance {\n private selector: string | Element;\n private $element: HTMLElement | null;\n private options: StepsOptions;\n private $items: NodeListOf<HTMLElement> | null;\n private activeIndex: number;\n\n /**\n * Creates an instance of Steps\n * @param selector - CSS selector string or DOM Element\n * @param options - Custom options to override defaults\n */\n constructor(selector: string | Element, options = {}) {\n this.selector = selector || STEPS.SELECTORS.STEPS;\n this.$element =\n typeof selector === 'string'\n ? document.querySelector<HTMLElement>(selector)\n : selector as HTMLElement;\n this.options = { ...DEFAULT_OPTIONS, ...options } as StepsOptions;\n this.$items = null;\n this.activeIndex = this.options.activeIndex || 0;\n this._initialize();\n }\n\n /**\n * Initialize the steps component\n */\n private _initialize(): void {\n if (!this.$element) return;\n\n this._initializeElements();\n \n // Set vertical mode if specified\n if (this.options.vertical && !this.$element.classList.contains(STEPS.CLASSES.VERTICAL)) {\n this.$element.classList.add(STEPS.CLASSES.VERTICAL);\n }\n \n this.setActive(this.activeIndex);\n }\n\n /**\n * Initialize DOM elements\n */\n private _initializeElements(): void {\n if (!this.$element) return;\n \n this.$items = this.$element.querySelectorAll<HTMLElement>(STEPS.SELECTORS.ITEM);\n }\n\n /**\n * Sets the active step\n * @param index - The index of the step to make active\n */\n public setActive(index: number): void {\n if (!this.$items || index < 0 || index >= this.$items.length) return;\n \n // Update all items\n this.$items.forEach((item, i) => {\n if (i < index) {\n // Steps before active are completed\n item.classList.add(STEPS.CLASSES.ACTIVE);\n item.classList.add(STEPS.CLASSES.COMPLETED);\n } else if (i === index) {\n // Current step is active but not completed\n item.classList.add(STEPS.CLASSES.ACTIVE);\n item.classList.remove(STEPS.CLASSES.COMPLETED);\n } else {\n // Future steps are neither active nor completed\n item.classList.remove(STEPS.CLASSES.ACTIVE);\n item.classList.remove(STEPS.CLASSES.COMPLETED);\n }\n });\n \n this.activeIndex = index;\n }\n\n /**\n * Moves to the next step\n */\n public next(): void {\n if (this.activeIndex < (this.$items?.length || 0) - 1) {\n this.setActive(this.activeIndex + 1);\n }\n }\n\n /**\n * Moves to the previous step\n */\n public previous(): void {\n if (this.activeIndex > 0) {\n this.setActive(this.activeIndex - 1);\n }\n }\n\n /**\n * Clean up event listeners\n */\n public destroy(): void {\n // No specific cleanup needed for steps component\n }\n}\n\n/**\n * Initialize all steps in the document\n * @param {string|Element} selector - CSS selector string or DOM Element\n * @param {Object} options - Custom options to override defaults\n * @returns {StepsInstance[]} Array of Steps instances\n */\nexport function initializeSteps(selector = STEPS.SELECTORS.STEPS, options = {}): StepsInstance[] {\n const stepsInstances: StepsInstance[] = [];\n const stepsElements = document.querySelectorAll<HTMLElement>(selector);\n\n if (!stepsElements.length) return stepsInstances;\n\n stepsElements.forEach((element) => {\n try {\n const instance = new Steps(element, options);\n stepsInstances.push(instance);\n } catch (error) {\n console.error('Error initializing steps:', error);\n }\n });\n\n return stepsInstances;\n}\n\nexport default Steps; "],"names":["DEFAULT_OPTIONS","activeIndex","vertical","Steps","selector","$element","options","$items","constructor","this","STEPS","SELECTORS","document","querySelector","_initialize","_initializeElements","classList","contains","CLASSES","VERTICAL","add","setActive","querySelectorAll","ITEM","index","length","forEach","item","i","ACTIVE","COMPLETED","remove","next","previous","destroy","initializeSteps","stepsInstances","stepsElements","element","instance","push","error"],"sourceRoot":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"js/chunks/umd/308.6709979849dcbdb90c9b.js","mappings":"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","sources":["webpack://Atomix/./src/components/Upload/scripts/index.ts"],"sourcesContent":["import { UPLOAD } from '../../../lib/constants/components';\n\n/**\n * Interface for Upload options\n */\ninterface UploadOptions {\n disabled?: boolean;\n maxSizeInMB?: number;\n acceptedFileTypes?: string[];\n multiple?: boolean;\n onFileSelect?: (files: File[]) => void;\n onFileUpload?: (file: File, progress: number) => void;\n onFileUploadComplete?: (file: File) => void;\n onFileUploadError?: (file: File, error: string) => void;\n [key: string]: any;\n}\n\n/**\n * Interface for Upload instance\n */\ninterface UploadInstance {\n setStatus: (status: 'idle' | 'loading' | 'success' | 'error', message?: string) => void;\n setProgress: (percentage: number, timeLeft?: string) => void;\n setFile: (file: File | null) => void;\n disable: () => void;\n enable: () => void;\n destroy: () => void;\n}\n\n/**\n * Default options for the Upload component\n */\nconst DEFAULT_OPTIONS: UploadOptions = {\n disabled: false,\n maxSizeInMB: 5,\n acceptedFileTypes: ['application/pdf', 'application/vnd.ms-excel', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'image/jpeg', 'image/png'],\n multiple: false\n};\n\n/**\n * Class representing an Upload component\n */\nclass Upload implements UploadInstance {\n private selector: string | Element;\n private $element: HTMLElement | null;\n private $input: HTMLInputElement | null;\n private $button: HTMLButtonElement | null;\n private $loader: HTMLElement | null;\n private $loaderTitle: HTMLElement | null;\n private $loaderProgress: HTMLElement | null;\n private $loaderClose: HTMLButtonElement | null;\n private options: UploadOptions;\n private currentFile: File | null;\n private dragCounter: number;\n\n /**\n * Creates an instance of Upload\n * @param selector - CSS selector string or DOM Element\n * @param options - Custom options to override defaults\n */\n constructor(selector: string | Element, options = {}) {\n this.selector = selector || UPLOAD.SELECTORS.UPLOAD;\n this.$element =\n typeof selector === 'string'\n ? document.querySelector<HTMLElement>(selector)\n : selector as HTMLElement;\n this.options = { ...DEFAULT_OPTIONS, ...options } as UploadOptions;\n this.$input = null;\n this.$button = null;\n this.$loader = null;\n this.$loaderTitle = null;\n this.$loaderProgress = null;\n this.$loaderClose = null;\n this.currentFile = null;\n this.dragCounter = 0;\n this._initialize();\n }\n\n /**\n * Initialize the upload component\n */\n private _initialize(): void {\n if (!this.$element) return;\n\n // Create a hidden file input element\n this._createHiddenInput();\n\n // Get references to elements\n this.$button = this.$element.querySelector<HTMLButtonElement>(UPLOAD.SELECTORS.BUTTON);\n this.$loader = this.$element.querySelector<HTMLElement>(UPLOAD.SELECTORS.LOADER);\n this.$loaderTitle = this.$element?.querySelector<HTMLElement>(UPLOAD.SELECTORS.LOADER_TITLE);\n this.$loaderProgress = this.$element?.querySelector<HTMLElement>(UPLOAD.SELECTORS.LOADER_PROGRESS);\n this.$loaderClose = this.$element?.querySelector<HTMLButtonElement>(UPLOAD.SELECTORS.LOADER_CLOSE);\n\n // Apply disabled state if specified\n if (this.options.disabled) {\n this.disable();\n }\n\n // Set up event listeners\n this._setupEventListeners();\n }\n\n /**\n * Creates a hidden file input element and appends it to the element\n */\n private _createHiddenInput(): void {\n if (!this.$element) return;\n\n // Create input element\n const input = document.createElement('input');\n input.type = 'file';\n input.style.display = 'none';\n input.accept = this.options.acceptedFileTypes?.join(',') || '';\n input.multiple = !!this.options.multiple;\n \n // Append to element\n this.$element.appendChild(input);\n this.$input = input;\n }\n\n /**\n * Set up all event listeners\n */\n private _setupEventListeners(): void {\n if (!this.$element || !this.$input || !this.$button) return;\n\n // Button click handler\n this.$button.addEventListener('click', this._handleButtonClick.bind(this));\n\n // Input change handler\n this.$input.addEventListener('change', this._handleFileSelect.bind(this));\n\n // Drag and drop handlers\n this.$element.addEventListener('dragenter', this._handleDragEnter.bind(this));\n this.$element.addEventListener('dragleave', this._handleDragLeave.bind(this));\n this.$element.addEventListener('dragover', this._handleDragOver.bind(this));\n this.$element.addEventListener('drop', this._handleDrop.bind(this));\n\n // Close button handler\n if (this.$loaderClose) {\n this.$loaderClose.addEventListener('click', this._handleClose.bind(this));\n }\n }\n\n /**\n * Handle button click\n */\n private _handleButtonClick(event: MouseEvent): void {\n event.preventDefault();\n if (this.$input && !this.options.disabled) {\n this.$input.click();\n }\n }\n\n /**\n * Handle file selection from the input element\n */\n private _handleFileSelect(event: Event): void {\n if (!this.$input?.files?.length) return;\n \n const files = Array.from(this.$input.files);\n this._processFiles(files);\n }\n\n /**\n * Handle drag enter event\n */\n private _handleDragEnter(event: DragEvent): void {\n event.preventDefault();\n if (this.options.disabled) return;\n \n this.dragCounter++;\n if (this.dragCounter === 1) {\n this.$element?.classList.add(UPLOAD.CLASSES.DRAGGING);\n }\n }\n\n /**\n * Handle drag leave event\n */\n private _handleDragLeave(event: DragEvent): void {\n event.preventDefault();\n if (this.options.disabled) return;\n \n this.dragCounter--;\n if (this.dragCounter === 0) {\n this.$element?.classList.remove(UPLOAD.CLASSES.DRAGGING);\n }\n }\n\n /**\n * Handle drag over event\n */\n private _handleDragOver(event: DragEvent): void {\n event.preventDefault();\n if (this.options.disabled) return;\n }\n\n /**\n * Handle drop event\n */\n private _handleDrop(event: DragEvent): void {\n event.preventDefault();\n if (this.options.disabled) return;\n \n this.dragCounter = 0;\n this.$element?.classList.remove(UPLOAD.CLASSES.DRAGGING);\n \n if (!event.dataTransfer?.files.length) return;\n \n const files = Array.from(event.dataTransfer.files);\n this._processFiles(files);\n }\n\n /**\n * Handle close button click\n */\n private _handleClose(event: MouseEvent): void {\n event.preventDefault();\n \n // Reset state\n this.setStatus('idle');\n this.setFile(null);\n \n // Reset input\n if (this.$input) {\n this.$input.value = '';\n }\n }\n\n /**\n * Process the selected files\n */\n private _processFiles(files: File[]): void {\n if (!files.length) return;\n \n // If multiple is not allowed, take only the first file\n const filesToProcess = this.options.multiple ? files : [files[0]];\n \n // Validate files\n const validFiles = filesToProcess.filter(file => this._validateFile(file));\n \n // Notify about file selection\n if (validFiles.length && this.options.onFileSelect) {\n this.options.onFileSelect(validFiles);\n }\n \n // Process the first valid file\n if (validFiles.length) {\n this.setFile(validFiles[0]);\n this._simulateUpload(validFiles[0]);\n }\n }\n\n /**\n * Validate a file based on size and type\n */\n private _validateFile(file: File): boolean {\n const maxSizeInBytes = (this.options.maxSizeInMB || 5) * 1024 * 1024;\n \n // Check file size\n if (file.size > maxSizeInBytes) {\n this.setStatus('error', `File too large. Maximum size is ${this.options.maxSizeInMB}MB.`);\n return false;\n }\n \n // Check file type if acceptedFileTypes is provided\n if (this.options.acceptedFileTypes?.length) {\n const isAcceptedType = this.options.acceptedFileTypes.some(type => {\n // Handle wildcards like image/*\n if (type.endsWith('/*')) {\n const mainType = type.split('/')[0];\n return file.type.startsWith(`${mainType}/`);\n }\n return file.type === type;\n });\n \n if (!isAcceptedType) {\n this.setStatus('error', 'File type not supported.');\n return false;\n }\n }\n \n return true;\n }\n\n /**\n * Simulate a file upload process\n * In a real implementation, this would be replaced with actual upload logic\n */\n private _simulateUpload(file: File): void {\n this.setStatus('loading');\n let progress = 0;\n \n const interval = setInterval(() => {\n progress += 5;\n \n if (progress < 100) {\n this.setProgress(progress, `${Math.ceil((100 - progress) / 5)} seconds left`);\n \n if (this.options.onFileUpload) {\n this.options.onFileUpload(file, progress);\n }\n } else {\n clearInterval(interval);\n this.setStatus('success', 'Upload successful');\n \n if (this.options.onFileUploadComplete) {\n this.options.onFileUploadComplete(file);\n }\n }\n }, 500);\n }\n\n /**\n * Set current file\n */\n public setFile(file: File | null): void {\n this.currentFile = file;\n \n if (file && this.$loaderTitle) {\n this.$loaderTitle.textContent = file.name;\n }\n }\n\n /**\n * Set upload progress\n */\n public setProgress(percentage: number, timeLeft?: string): void {\n if (!this.$element || !this.$loaderProgress) return;\n \n // Set percentage as CSS variable\n this.$element.style.setProperty(UPLOAD.ATTRIBUTES.PERCENTAGE, percentage.toString());\n \n // Update the loader elements if they exist\n const $par = this.$element.querySelector<HTMLElement>(UPLOAD.SELECTORS.LOADER_PAR);\n const $time = this.$element.querySelector<HTMLElement>(UPLOAD.SELECTORS.LOADER_TIME);\n \n if ($par) {\n $par.textContent = `${percentage}%`;\n }\n \n if ($time && timeLeft) {\n $time.textContent = timeLeft;\n }\n }\n\n /**\n * Set upload status\n */\n public setStatus(status: 'idle' | 'loading' | 'success' | 'error', message?: string): void {\n if (!this.$element) return;\n \n // Remove all status classes\n this.$element.classList.remove(\n UPLOAD.CLASSES.LOADING,\n UPLOAD.CLASSES.SUCCESS,\n UPLOAD.CLASSES.ERROR\n );\n \n // Add appropriate class based on status\n switch (status) {\n case 'loading':\n this.$element.classList.add(UPLOAD.CLASSES.LOADING);\n break;\n case 'success':\n this.$element.classList.add(UPLOAD.CLASSES.SUCCESS);\n break;\n case 'error':\n this.$element.classList.add(UPLOAD.CLASSES.ERROR);\n break;\n }\n \n // Update message if provided and loader exists\n if (message && this.$loaderProgress) {\n this.$loaderProgress.textContent = message;\n }\n }\n\n /**\n * Disable the upload component\n */\n public disable(): void {\n if (!this.$element || !this.$button) return;\n \n this.$element.classList.add(UPLOAD.CLASSES.DISABLED);\n this.$button.disabled = true;\n this.options.disabled = true;\n }\n\n /**\n * Enable the upload component\n */\n public enable(): void {\n if (!this.$element || !this.$button) return;\n \n this.$element.classList.remove(UPLOAD.CLASSES.DISABLED);\n this.$button.disabled = false;\n this.options.disabled = false;\n }\n\n /**\n * Clean up event listeners\n */\n public destroy(): void {\n if (!this.$element || !this.$input || !this.$button) return;\n \n // Remove event listeners\n this.$button.removeEventListener('click', this._handleButtonClick.bind(this));\n this.$input.removeEventListener('change', this._handleFileSelect.bind(this));\n this.$element.removeEventListener('dragenter', this._handleDragEnter.bind(this));\n this.$element.removeEventListener('dragleave', this._handleDragLeave.bind(this));\n this.$element.removeEventListener('dragover', this._handleDragOver.bind(this));\n this.$element.removeEventListener('drop', this._handleDrop.bind(this));\n \n if (this.$loaderClose) {\n this.$loaderClose.removeEventListener('click', this._handleClose.bind(this));\n }\n \n // Remove input element\n if (this.$input.parentNode) {\n this.$input.parentNode.removeChild(this.$input);\n }\n }\n}\n\n/**\n * Initialize all upload components in the document\n * @param {string|Element} selector - CSS selector string or DOM Element\n * @param {Object} options - Custom options to override defaults\n * @returns {UploadInstance[]} Array of Upload instances\n */\nexport function initializeUploads(selector = UPLOAD.SELECTORS.UPLOAD, options = {}): UploadInstance[] {\n const uploadInstances: UploadInstance[] = [];\n const uploadElements = document.querySelectorAll<HTMLElement>(typeof selector === 'string' ? selector : UPLOAD.SELECTORS.UPLOAD);\n\n if (!uploadElements.length) return uploadInstances;\n\n uploadElements.forEach((element) => {\n try {\n const instance = new Upload(element, options);\n uploadInstances.push(instance);\n } catch (error) {\n console.error('Error initializing upload:', error);\n }\n });\n\n return uploadInstances;\n}\n\nexport default Upload; "],"names":["DEFAULT_OPTIONS","disabled","maxSizeInMB","acceptedFileTypes","multiple","Upload","selector","$element","$input","$button","$loader","$loaderTitle","$loaderProgress","$loaderClose","options","currentFile","dragCounter","constructor","this","UPLOAD","SELECTORS","document","querySelector","_initialize","_createHiddenInput","BUTTON","LOADER","LOADER_TITLE","LOADER_PROGRESS","LOADER_CLOSE","disable","_setupEventListeners","input","createElement","type","style","display","accept","join","appendChild","addEventListener","_handleButtonClick","bind","_handleFileSelect","_handleDragEnter","_handleDragLeave","_handleDragOver","_handleDrop","_handleClose","event","preventDefault","click","files","length","Array","from","_processFiles","classList","add","CLASSES","DRAGGING","remove","dataTransfer","setStatus","setFile","value","validFiles","filter","file","_validateFile","onFileSelect","_simulateUpload","size","some","endsWith","mainType","split","startsWith","progress","interval","setInterval","setProgress","Math","ceil","onFileUpload","clearInterval","onFileUploadComplete","textContent","name","percentage","timeLeft","setProperty","ATTRIBUTES","PERCENTAGE","$par","LOADER_PAR","$time","LOADER_TIME","status","message","LOADING","SUCCESS","ERROR","DISABLED","enable","destroy","removeEventListener","parentNode","removeChild","initializeUploads","uploadInstances","uploadElements","querySelectorAll","forEach","element","instance","push","error"],"sourceRoot":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"js/chunks/umd/54.403470e1f7d0ef4424a7.js","mappings":"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","sources":["webpack://Atomix/./src/components/Tab/scripts/index.ts"],"sourcesContent":["import { TAB } from '../../../lib/constants/components';\n\n/**\n * Interface for Tab options\n */\ninterface TabOptions {\n navItems: string;\n navBtn: string;\n panels: string;\n panelBodys: string;\n activeClass: string;\n activeIndex: number;\n [key: string]: any;\n}\n\n/**\n * Interface for Tab instance\n */\ninterface TabInstance {\n destroy: () => void;\n}\n\n/**\n * Default options for the tab component\n */\nconst DEFAULT_OPTIONS = {\n navItems: TAB.SELECTORS.NAV_ITEMS,\n navBtn: TAB.SELECTORS.NAV_BTN,\n panels: TAB.SELECTORS.PANELS,\n panelBodys: TAB.SELECTORS.PANEL_BODIES,\n activeClass: TAB.CLASSES.ACTIVE,\n activeIndex: TAB.DEFAULTS.ACTIVE_INDEX\n};\n\n/**\n * Class representing a Tab component\n */\nclass Tab implements TabInstance {\n private selector: string | Element;\n private $element: HTMLElement | null;\n private options: TabOptions;\n private $navItems: NodeListOf<HTMLElement> | null;\n private $panels: NodeListOf<HTMLElement> | null;\n private $panelBodys: NodeListOf<HTMLElement> | null;\n\n /**\n * Creates an instance of Tab\n * @param selector - CSS selector string or DOM Element\n * @param options - Custom options to override defaults\n */\n constructor(selector: string | Element, options = {}) {\n this.selector = selector || TAB.SELECTORS.TAB;\n this.$element =\n typeof selector === 'string'\n ? document.querySelector<HTMLElement>(selector)\n : selector as HTMLElement;\n this.options = { ...DEFAULT_OPTIONS, ...options } as TabOptions;\n this.$navItems = null;\n this.$panels = null;\n this.$panelBodys = null;\n this._initialize();\n }\n\n /**\n * Initialize the tab component\n */\n private _initialize(): void {\n if (!this.$element) return;\n\n this._initializeElements();\n this._showTab(this.options.activeIndex);\n this._bindEvents();\n }\n\n /**\n * Initialize DOM elements\n */\n private _initializeElements(): void {\n if (!this.$element) return;\n \n this.$navItems = this.$element.querySelectorAll<HTMLElement>(this.options.navItems);\n this.$panels = this.$element.querySelectorAll<HTMLElement>(this.options.panels);\n this.$panelBodys = this.$element.querySelectorAll<HTMLElement>(this.options.panelBodys);\n }\n\n /**\n * Bind event listeners\n */\n private _bindEvents(): void {\n if (!this.$navItems) return;\n \n this.$navItems.forEach((item) => {\n const btn = item.querySelector<HTMLElement>(this.options.navBtn);\n if (btn) {\n btn.addEventListener('click', () => this._handleTabClick(btn));\n }\n });\n }\n\n /**\n * Handle tab click event\n * @param btn - The clicked tab button\n */\n private _handleTabClick(btn: HTMLElement): void {\n const tabIndex = btn.dataset.tabindex;\n if (tabIndex === undefined) return;\n \n this._hideAllTabs();\n this._showTab(tabIndex);\n }\n\n /**\n * Hide all tabs\n */\n private _hideAllTabs(): void {\n if (!this.$panels || !this.$navItems) return;\n \n this.$panels.forEach((panel) => {\n panel.style.height = '0px';\n panel.classList.remove(this.options.activeClass);\n panel.style.opacity = '0';\n });\n\n this.$navItems.forEach((item) => {\n const btn = item.querySelector<HTMLElement>(this.options.navBtn);\n if (btn) {\n btn.classList.remove(this.options.activeClass);\n }\n });\n }\n\n /**\n * Show tab at specified index\n * @param index - The index of tab to show\n */\n private _showTab(index: number | string): void {\n if (!this.$panels || !this.$navItems || !this.$panelBodys) return;\n \n this.$panels.forEach((panel, pIndex) => {\n if (panel.dataset.tabindex == index.toString()) {\n const panelBody = this.$panelBodys?.[pIndex];\n if (panelBody) {\n panel.classList.add(this.options.activeClass);\n requestAnimationFrame(() => {\n panel.style.height = `${panelBody.clientHeight}px`;\n panel.style.opacity = '1';\n });\n }\n }\n });\n\n this.$navItems.forEach((navItem, nIndex) => {\n const btn = navItem.querySelector<HTMLElement>(this.options.navBtn);\n if (btn && btn.dataset.tabindex == index.toString()) {\n btn.classList.add(this.options.activeClass);\n }\n });\n }\n\n /**\n * Clean up event listeners\n */\n public destroy(): void {\n if (!this.$element || !this.$navItems) return;\n\n this.$navItems.forEach((item) => {\n const btn = item.querySelector<HTMLElement>(this.options.navBtn);\n if (btn) {\n // Need to recreate the bound function to remove it correctly\n btn.removeEventListener('click', () => this._handleTabClick(btn));\n }\n });\n }\n}\n\n/**\n * Initialize all tabs in the document\n * @param {string|Element} selector - CSS selector string or DOM Element\n * @param {Object} options - Custom options to override defaults\n * @returns {TabInstance[]} Array of Tab instances\n */\nexport function initializeTabs(selector = TAB.SELECTORS.TAB, options = {}): TabInstance[] {\n const tabInstances: TabInstance[] = [];\n const tabElements = document.querySelectorAll<HTMLElement>(selector);\n\n if (!tabElements.length) return tabInstances;\n\n tabElements.forEach((element) => {\n try {\n const instance = new Tab(element, options);\n tabInstances.push(instance);\n } catch (error) {\n console.error('Error initializing tab:', error);\n }\n });\n\n return tabInstances;\n}\n\nexport default Tab; "],"names":["DEFAULT_OPTIONS","navItems","TAB","SELECTORS","NAV_ITEMS","navBtn","NAV_BTN","panels","PANELS","panelBodys","PANEL_BODIES","activeClass","CLASSES","ACTIVE","activeIndex","DEFAULTS","ACTIVE_INDEX","Tab","selector","$element","options","$navItems","$panels","$panelBodys","constructor","this","document","querySelector","_initialize","_initializeElements","_showTab","_bindEvents","querySelectorAll","forEach","item","btn","addEventListener","_handleTabClick","tabIndex","dataset","tabindex","undefined","_hideAllTabs","panel","style","height","classList","remove","opacity","index","pIndex","panelBody","add","requestAnimationFrame","clientHeight","navItem","nIndex","destroy","removeEventListener","initializeTabs","tabInstances","tabElements","length","element","instance","push","error"],"sourceRoot":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"js/chunks/umd/619.fa05ea98c10270eb64c5.js","mappings":"iKA0BA,MAAMA,EAAgC,CACpCC,QAAQ,EACRC,UAAU,EACVC,SAAS,EACTC,aAAa,GAMf,MAAMC,EACIC,SACAC,QAORC,WAAAA,CAAYC,EAAsBF,EAAU,CAAC,GAC3CG,KAAKJ,SAAWG,EAChBC,KAAKH,QAAU,IAAKP,KAAoBO,GACxCG,KAAKC,MACP,CAKAA,IAAAA,GACMD,KAAKH,QAAQK,cACfF,KAAKJ,SAASO,MAAMC,YAClBC,EAAAA,GAAMC,WAAWC,cACjBP,KAAKH,QAAQK,cAKbF,KAAKH,QAAQW,oBACfR,KAAKS,sBAET,CAKQA,oBAAAA,GACN,IAAKT,KAAKJ,WAAaI,KAAKH,QAAQW,mBAAoB,OAGxD,IAAIE,EAAMV,KAAKJ,SAASe,cAAcN,EAAAA,GAAMO,UAAUC,IAEtD,IAAKH,EAAK,CAERA,EAAMI,SAASC,cAAc,OAC7BL,EAAIM,UAAYX,EAAAA,GAAMO,UAAUC,GAAGI,QAAQ,IAAK,IAGhD,MAAMC,EAAWJ,SAASC,cAAc,OAOxC,GANAG,EAASC,IAAMnB,KAAKH,QAAQW,mBAC5BU,EAASE,IAAM,aACfF,EAASF,UAAYX,EAAAA,GAAMO,UAAUS,SAASJ,QAAQ,IAAK,IAC3DP,EAAIY,YAAYJ,GAGZlB,KAAKH,QAAQH,YAAa,CAC5B,MAAM6B,EAAWT,SAASC,cAAc,OACxCQ,EAASP,UAAYX,EAAAA,GAAMO,UAAUY,QAAQP,QAAQ,IAAK,IAC1DP,EAAIY,YAAYC,EAClB,CAGIvB,KAAKJ,SAAS6B,WAChBzB,KAAKJ,SAAS8B,aAAahB,EAAKV,KAAKJ,SAAS6B,YAE9CzB,KAAKJ,SAAS0B,YAAYZ,EAE9B,CACF,CAKAiB,OAAAA,GACE,EAUG,SAASC,EAAiBC,EAAWxB,EAAAA,GAAMO,UAAUP,MAAOR,EAAU,CAAC,GAC5E,MAAMiC,EAAkC,GAClCC,EAAgBjB,SAASkB,iBAAkD,iBAAbH,EAAwBA,EAAWxB,EAAAA,GAAMO,UAAUP,OAEvH,OAAK0B,EAAcE,QAEnBF,EAAcG,SAASnC,IACrB,IACE,MAAMoC,EAAW,IAAIxC,EAAMI,EAASF,GACpCiC,EAAeM,KAAKD,EACtB,CAAE,MAAOE,GAET,KAGKP,GAX2BA,CAYpC,CAEA,S","sources":["webpack://Atomix/./src/components/River/scripts/index.ts"],"sourcesContent":["import { RIVER } from '../../../lib/constants/components';\n\n/**\n * Interface for River options\n */\ninterface RiverOptions {\n center?: boolean;\n breakout?: boolean;\n reverse?: boolean;\n backgroundImageSrc?: string;\n showOverlay?: boolean;\n contentWidth?: string;\n [key: string]: any;\n}\n\n/**\n * Interface for River instance\n */\ninterface RiverInstance {\n init(): void;\n destroy(): void;\n}\n\n/**\n * Default options for the River component\n */\nconst DEFAULT_OPTIONS: RiverOptions = {\n center: false,\n breakout: false,\n reverse: false,\n showOverlay: true\n};\n\n/**\n * Class representing a River component\n */\nclass River implements RiverInstance {\n private $element: HTMLElement;\n private options: RiverOptions;\n\n /**\n * Creates an instance of River\n * @param element - The river element\n * @param options - Custom options to override defaults\n */\n constructor(element: HTMLElement, options = {}) {\n this.$element = element;\n this.options = { ...DEFAULT_OPTIONS, ...options };\n this.init();\n }\n\n /**\n * Initialize the river component\n */\n init(): void {\n if (this.options.contentWidth) {\n this.$element.style.setProperty(\n RIVER.ATTRIBUTES.CONTENT_WIDTH,\n this.options.contentWidth\n );\n }\n\n // Add background image if provided\n if (this.options.backgroundImageSrc) {\n this.setupBackgroundImage();\n }\n }\n\n /**\n * Setup background image\n */\n private setupBackgroundImage(): void {\n if (!this.$element || !this.options.backgroundImageSrc) return;\n\n // Check if background already exists\n let $bg = this.$element.querySelector(RIVER.SELECTORS.BG);\n \n if (!$bg) {\n // Create background container\n $bg = document.createElement('div');\n $bg.className = RIVER.SELECTORS.BG.replace('.', '');\n \n // Create background image\n const $bgImage = document.createElement('img');\n $bgImage.src = this.options.backgroundImageSrc;\n $bgImage.alt = 'Background';\n $bgImage.className = RIVER.SELECTORS.BG_IMAGE.replace('.', '');\n $bg.appendChild($bgImage);\n \n // Create overlay if needed\n if (this.options.showOverlay) {\n const $overlay = document.createElement('div');\n $overlay.className = RIVER.SELECTORS.OVERLAY.replace('.', '');\n $bg.appendChild($overlay);\n }\n \n // Add background to the element (as first child)\n if (this.$element.firstChild) {\n this.$element.insertBefore($bg, this.$element.firstChild);\n } else {\n this.$element.appendChild($bg);\n }\n }\n }\n\n /**\n * Clean up component\n */\n destroy(): void {\n // Remove any event listeners or cleanup here\n }\n}\n\n/**\n * Initialize all river components in the document\n * @param selector - CSS selector string or DOM Element\n * @param options - Custom options to override defaults\n * @returns Array of River instances\n */\nexport function initializeRivers(selector = RIVER.SELECTORS.RIVER, options = {}): RiverInstance[] {\n const riverInstances: RiverInstance[] = [];\n const riverElements = document.querySelectorAll<HTMLElement>(typeof selector === 'string' ? selector : RIVER.SELECTORS.RIVER);\n\n if (!riverElements.length) return riverInstances;\n\n riverElements.forEach((element) => {\n try {\n const instance = new River(element, options);\n riverInstances.push(instance);\n } catch (error) {\n console.error('Error initializing river:', error);\n }\n });\n\n return riverInstances;\n}\n\nexport default River; "],"names":["DEFAULT_OPTIONS","center","breakout","reverse","showOverlay","River","$element","options","constructor","element","this","init","contentWidth","style","setProperty","RIVER","ATTRIBUTES","CONTENT_WIDTH","backgroundImageSrc","setupBackgroundImage","$bg","querySelector","SELECTORS","BG","document","createElement","className","replace","$bgImage","src","alt","BG_IMAGE","appendChild","$overlay","OVERLAY","firstChild","insertBefore","destroy","initializeRivers","selector","riverInstances","riverElements","querySelectorAll","length","forEach","instance","push","error"],"sourceRoot":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"js/chunks/umd/690.aa7054d1c53e5402c2d6.js","mappings":"wKAwBA,MAAMA,EAAuC,CAC3CC,UAAW,OACXC,aAAa,EACbC,KAAM,KACNC,UAAU,GAMZ,MAAMC,EACIC,SACAC,SACAC,QAORC,WAAAA,CAAYH,EAA4BE,EAAU,CAAC,GACjDE,KAAKJ,SAAWA,GAAYK,EAAAA,GAAcC,UAAUD,cACpDD,KAAKH,SACiB,iBAAbD,EACHO,SAASC,cAA2BR,GACpCA,EACNI,KAAKF,QAAU,IAAKR,KAAoBQ,GACxCE,KAAKK,aACP,CAKQA,WAAAA,GACN,GAAKL,KAAKH,WAGqB,WAA3BG,KAAKF,QAAQP,WAA2BS,KAAKH,SAASS,UAAUC,SAASN,EAAAA,GAAcO,QAAQC,SACjGT,KAAKH,SAASS,UAAUI,IAAIT,EAAAA,GAAcO,QAAQC,QAI1B,OAAtBT,KAAKF,QAAQL,MAAkBO,KAAKH,SAASS,UAAUC,SAASN,EAAAA,GAAcO,QAAQG,OAEzD,OAAtBX,KAAKF,QAAQL,MAAkBO,KAAKH,SAASS,UAAUC,SAASN,EAAAA,GAAcO,QAAQI,QAC/FZ,KAAKH,SAASS,UAAUI,IAAIT,EAAAA,GAAcO,QAAQI,OAFlDZ,KAAKH,SAASS,UAAUI,IAAIT,EAAAA,GAAcO,QAAQG,OAMhDX,KAAKF,QAAQe,oBAAoB,CACnC,IAAIC,EAAYd,KAAKH,SAASO,cAAc,uBAG5C,IAAKU,EAAW,CACdA,EAAYX,SAASY,cAAc,OACnCD,EAAUE,UAAY,qBAEtB,MAAMC,EAAad,SAASY,cAAc,OAQ1C,GAPAE,EAAWD,UAAY,2BACvBC,EAAWC,IAAMlB,KAAKF,QAAQe,mBAC9BI,EAAWE,IAAM,aAEjBL,EAAUM,YAAYH,GAGlBjB,KAAKF,QAAQN,YAAa,CAC5B,MAAM6B,EAAiBlB,SAASY,cAAc,OAC9CM,EAAeL,UAAY,0BAC3BF,EAAUM,YAAYC,EACxB,CAGArB,KAAKH,SAASyB,aAAaR,EAAWd,KAAKH,SAAS0B,WACtD,CACF,CACF,CAKOC,OAAAA,GACL,GAAKxB,KAAKH,WAGVG,KAAKH,SAASS,UAAUmB,OAAOxB,EAAAA,GAAcO,QAAQC,QAGrDT,KAAKH,SAASS,UAAUmB,OAAOxB,EAAAA,GAAcO,QAAQG,OACrDX,KAAKH,SAASS,UAAUmB,OAAOxB,EAAAA,GAAcO,QAAQI,OAGjDZ,KAAKF,QAAQe,oBAAoB,CACnC,MAAMC,EAAYd,KAAKH,SAASO,cAAc,uBAC1CU,GACFd,KAAKH,SAAS6B,YAAYZ,EAE9B,CACF,EASK,SAASa,EAAwB/B,EAAWK,EAAAA,GAAcC,UAAUD,cAAeH,EAAU,CAAC,GACnG,MAAM8B,EAAgD,GAChDC,EAAuB1B,SAAS2B,iBAAkD,iBAAblC,EAAwBA,EAAWK,EAAAA,GAAcC,UAAUD,eAEtI,OAAK4B,EAAqBE,QAE1BF,EAAqBG,SAASC,IAC5B,IACE,MAAMC,EAAW,IAAIvC,EAAasC,EAASnC,GAC3C8B,EAAsBO,KAAKD,EAC7B,CAAE,MAAOE,GAET,KAGKR,GAXkCA,CAY3C,CAEA,S","sources":["webpack://Atomix/./src/components/SectionIntro/scripts/index.ts"],"sourcesContent":["import { SECTION_INTRO } from '../../../lib/constants/components';\n\n/**\n * Interface for SectionIntro options\n */\ninterface SectionIntroOptions {\n alignment?: 'left' | 'center' | 'right';\n backgroundImageSrc?: string;\n showOverlay?: boolean;\n size?: 'sm' | 'md' | 'lg';\n skeleton?: boolean;\n [key: string]: any;\n}\n\n/**\n * Interface for SectionIntro instance\n */\ninterface SectionIntroInstance {\n destroy: () => void;\n}\n\n/**\n * Default options for the SectionIntro component\n */\nconst DEFAULT_OPTIONS: SectionIntroOptions = {\n alignment: 'left',\n showOverlay: false,\n size: 'md',\n skeleton: false\n};\n\n/**\n * Class representing a SectionIntro component\n */\nclass SectionIntro implements SectionIntroInstance {\n private selector: string | Element;\n private $element: HTMLElement | null;\n private options: SectionIntroOptions;\n\n /**\n * Creates an instance of SectionIntro\n * @param selector - CSS selector string or DOM Element\n * @param options - Custom options to override defaults\n */\n constructor(selector: string | Element, options = {}) {\n this.selector = selector || SECTION_INTRO.SELECTORS.SECTION_INTRO;\n this.$element =\n typeof selector === 'string'\n ? document.querySelector<HTMLElement>(selector)\n : selector as HTMLElement;\n this.options = { ...DEFAULT_OPTIONS, ...options } as SectionIntroOptions;\n this._initialize();\n }\n\n /**\n * Initialize the section intro component\n */\n private _initialize(): void {\n if (!this.$element) return;\n\n // Apply alignment classes if needed\n if (this.options.alignment === 'center' && !this.$element.classList.contains(SECTION_INTRO.CLASSES.CENTER)) {\n this.$element.classList.add(SECTION_INTRO.CLASSES.CENTER);\n }\n\n // Apply size classes if specified\n if (this.options.size === 'sm' && !this.$element.classList.contains(SECTION_INTRO.CLASSES.SMALL)) {\n this.$element.classList.add(SECTION_INTRO.CLASSES.SMALL);\n } else if (this.options.size === 'lg' && !this.$element.classList.contains(SECTION_INTRO.CLASSES.LARGE)) {\n this.$element.classList.add(SECTION_INTRO.CLASSES.LARGE);\n }\n\n // Add background image if provided\n if (this.options.backgroundImageSrc) {\n let bgElement = this.$element.querySelector('.c-sectionintro__bg');\n \n // Create background element if it doesn't exist\n if (!bgElement) {\n bgElement = document.createElement('div');\n bgElement.className = 'c-sectionintro__bg';\n \n const imgElement = document.createElement('img');\n imgElement.className = 'c-sectionintro__bg-image';\n imgElement.src = this.options.backgroundImageSrc;\n imgElement.alt = 'Background';\n \n bgElement.appendChild(imgElement);\n \n // Add overlay if needed\n if (this.options.showOverlay) {\n const overlayElement = document.createElement('div');\n overlayElement.className = 'c-sectionintro__overlay';\n bgElement.appendChild(overlayElement);\n }\n \n // Insert at the beginning of the element\n this.$element.insertBefore(bgElement, this.$element.firstChild);\n }\n }\n }\n\n /**\n * Clean up event listeners and remove added elements\n */\n public destroy(): void {\n if (!this.$element) return;\n \n // Remove alignment classes\n this.$element.classList.remove(SECTION_INTRO.CLASSES.CENTER);\n \n // Remove size classes\n this.$element.classList.remove(SECTION_INTRO.CLASSES.SMALL);\n this.$element.classList.remove(SECTION_INTRO.CLASSES.LARGE);\n \n // Remove background if it was dynamically added\n if (this.options.backgroundImageSrc) {\n const bgElement = this.$element.querySelector('.c-sectionintro__bg');\n if (bgElement) {\n this.$element.removeChild(bgElement);\n }\n }\n }\n}\n\n/**\n * Initialize all section intros in the document\n * @param {string|Element} selector - CSS selector string or DOM Element\n * @param {Object} options - Custom options to override defaults\n * @returns {SectionIntroInstance[]} Array of SectionIntro instances\n */\nexport function initializeSectionIntros(selector = SECTION_INTRO.SELECTORS.SECTION_INTRO, options = {}): SectionIntroInstance[] {\n const sectionIntroInstances: SectionIntroInstance[] = [];\n const sectionIntroElements = document.querySelectorAll<HTMLElement>(typeof selector === 'string' ? selector : SECTION_INTRO.SELECTORS.SECTION_INTRO);\n\n if (!sectionIntroElements.length) return sectionIntroInstances;\n\n sectionIntroElements.forEach((element) => {\n try {\n const instance = new SectionIntro(element, options);\n sectionIntroInstances.push(instance);\n } catch (error) {\n console.error('Error initializing section intro:', error);\n }\n });\n\n return sectionIntroInstances;\n}\n\nexport default SectionIntro;\n"],"names":["DEFAULT_OPTIONS","alignment","showOverlay","size","skeleton","SectionIntro","selector","$element","options","constructor","this","SECTION_INTRO","SELECTORS","document","querySelector","_initialize","classList","contains","CLASSES","CENTER","add","SMALL","LARGE","backgroundImageSrc","bgElement","createElement","className","imgElement","src","alt","appendChild","overlayElement","insertBefore","firstChild","destroy","remove","removeChild","initializeSectionIntros","sectionIntroInstances","sectionIntroElements","querySelectorAll","length","forEach","element","instance","push","error"],"sourceRoot":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"js/chunks/umd/894.3e1eaf0a2aadf4434390.js","mappings":"uKAqBA,MAAMA,EAAsC,CAC1CC,KAAM,GACNC,UAAU,GAMZ,MAAMC,EACIC,SACAC,SACAC,QAORC,WAAAA,CAAYH,EAA4BE,EAAU,CAAC,GACjDE,KAAKJ,SAAWA,GAAYK,EAAAA,GAAYC,UAAUD,YAClDD,KAAKH,SACiB,iBAAbD,EACHO,SAASC,cAA2BR,GACpCA,EACNI,KAAKF,QAAU,IAAKN,KAAoBM,GACxCE,KAAKK,aACP,CAKQA,WAAAA,GACDL,KAAKH,WAGgB,OAAtBG,KAAKF,QAAQL,MAAkBO,KAAKH,SAASS,UAAUC,SAASN,EAAAA,GAAYO,QAAQC,OAEvD,OAAtBT,KAAKF,QAAQL,MAAkBO,KAAKH,SAASS,UAAUC,SAASN,EAAAA,GAAYO,QAAQE,QAC7FV,KAAKH,SAASS,UAAUK,IAAIV,EAAAA,GAAYO,QAAQE,OAFhDV,KAAKH,SAASS,UAAUK,IAAIV,EAAAA,GAAYO,QAAQC,OAIpD,CAKOG,OAAAA,GACL,EAUG,SAASC,EAAuBjB,EAAWK,EAAAA,GAAYC,UAAUD,YAAaH,EAAU,CAAC,GAC9F,MAAMgB,EAA8C,GAC9CC,EAAsBZ,SAASa,iBAAkD,iBAAbpB,EAAwBA,EAAWK,EAAAA,GAAYC,UAAUD,aAEnI,OAAKc,EAAoBE,QAEzBF,EAAoBG,SAASC,IAC3B,IACE,MAAMC,EAAW,IAAIzB,EAAYwB,EAASrB,GAC1CgB,EAAqBO,KAAKD,EAC5B,CAAE,MAAOE,GAET,KAGKR,GAXiCA,CAY1C,CAEA,S","sources":["webpack://Atomix/./src/components/Testimonial/scripts/index.ts"],"sourcesContent":["import { TESTIMONIAL } from '../../../lib/constants/components';\n\n/**\n * Interface for Testimonial options\n */\ninterface TestimonialOptions {\n size?: 'sm' | 'lg' | '';\n skeleton?: boolean;\n [key: string]: any;\n}\n\n/**\n * Interface for Testimonial instance\n */\ninterface TestimonialInstance {\n destroy: () => void;\n}\n\n/**\n * Default options for the Testimonial component\n */\nconst DEFAULT_OPTIONS: TestimonialOptions = {\n size: '',\n skeleton: false\n};\n\n/**\n * Class representing a Testimonial component\n */\nclass Testimonial implements TestimonialInstance {\n private selector: string | Element;\n private $element: HTMLElement | null;\n private options: TestimonialOptions;\n\n /**\n * Creates an instance of Testimonial\n * @param selector - CSS selector string or DOM Element\n * @param options - Custom options to override defaults\n */\n constructor(selector: string | Element, options = {}) {\n this.selector = selector || TESTIMONIAL.SELECTORS.TESTIMONIAL;\n this.$element =\n typeof selector === 'string'\n ? document.querySelector<HTMLElement>(selector)\n : selector as HTMLElement;\n this.options = { ...DEFAULT_OPTIONS, ...options } as TestimonialOptions;\n this._initialize();\n }\n\n /**\n * Initialize the testimonial component\n */\n private _initialize(): void {\n if (!this.$element) return;\n\n // Apply size classes if specified\n if (this.options.size === 'sm' && !this.$element.classList.contains(TESTIMONIAL.CLASSES.SMALL)) {\n this.$element.classList.add(TESTIMONIAL.CLASSES.SMALL);\n } else if (this.options.size === 'lg' && !this.$element.classList.contains(TESTIMONIAL.CLASSES.LARGE)) {\n this.$element.classList.add(TESTIMONIAL.CLASSES.LARGE);\n }\n }\n\n /**\n * Clean up event listeners\n */\n public destroy(): void {\n // No specific cleanup needed for testimonial component\n }\n}\n\n/**\n * Initialize all testimonials in the document\n * @param {string|Element} selector - CSS selector string or DOM Element\n * @param {Object} options - Custom options to override defaults\n * @returns {TestimonialInstance[]} Array of Testimonial instances\n */\nexport function initializeTestimonials(selector = TESTIMONIAL.SELECTORS.TESTIMONIAL, options = {}): TestimonialInstance[] {\n const testimonialInstances: TestimonialInstance[] = [];\n const testimonialElements = document.querySelectorAll<HTMLElement>(typeof selector === 'string' ? selector : TESTIMONIAL.SELECTORS.TESTIMONIAL);\n\n if (!testimonialElements.length) return testimonialInstances;\n\n testimonialElements.forEach((element) => {\n try {\n const instance = new Testimonial(element, options);\n testimonialInstances.push(instance);\n } catch (error) {\n console.error('Error initializing testimonial:', error);\n }\n });\n\n return testimonialInstances;\n}\n\nexport default Testimonial; "],"names":["DEFAULT_OPTIONS","size","skeleton","Testimonial","selector","$element","options","constructor","this","TESTIMONIAL","SELECTORS","document","querySelector","_initialize","classList","contains","CLASSES","SMALL","LARGE","add","destroy","initializeTestimonials","testimonialInstances","testimonialElements","querySelectorAll","length","forEach","element","instance","push","error"],"sourceRoot":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"js/chunks/umd/897.554ea37be4453698c167.js","mappings":"iKAcA,MAAMA,EACIC,QACAC,KAMRC,WAAAA,CAAYF,GACVG,KAAKH,QAAUA,EACfG,KAAKF,MAAO,EACZE,KAAKC,aACP,CAKQA,WAAAA,GACND,KAAKE,cAEDF,KAAKH,QAAQM,UAAUC,SAASC,EAAAA,GAAOC,QAAQC,SACjDP,KAAKF,MAAO,EAEhB,CAKQI,WAAAA,GACNF,KAAKH,QAAQW,iBAAiB,QAASR,KAAKS,cAAcC,KAAKV,MACjE,CAKQS,aAAAA,GACDT,KAAKF,KAGRE,KAAKW,UAFLX,KAAKY,QAIT,CAKOA,MAAAA,GACLZ,KAAKH,QAAQM,UAAUU,IAAIR,EAAAA,GAAOC,QAAQC,OAC1CP,KAAKF,MAAO,EAGZE,KAAKH,QAAQiB,cAAc,IAAIC,YAAY,YAAa,CACtDC,SAAS,IAEb,CAKOL,OAAAA,GACLX,KAAKH,QAAQM,UAAUc,OAAOZ,EAAAA,GAAOC,QAAQC,OAC7CP,KAAKF,MAAO,EAGZE,KAAKH,QAAQiB,cAAc,IAAIC,YAAY,aAAc,CACvDC,SAAS,IAEb,CAKOE,OAAAA,GACLlB,KAAKH,QAAQsB,oBAAoB,QAASnB,KAAKS,cACjD,EAOK,SAASW,IACd,MAAMC,EAAoC,GACpCC,EAAiBC,SAASC,iBAA8BnB,EAAAA,GAAOoB,UAAUpB,QAE/E,OAAKiB,EAAeI,QAEpBJ,EAAeK,SAAS9B,IACtB,IACE,MAAM+B,EAAW,IAAIhC,EAAOC,GAC5BwB,EAAgBQ,KAAKD,EACvB,CAAE,MAAOE,GAET,KAGKT,GAX4BA,CAYrC,CAEA,S","sources":["webpack://Atomix/./src/components/Toggle/scripts/index.ts"],"sourcesContent":["import { TOGGLE } from '../../../lib/constants/components';\n\n/**\n * Interface for Toggle instance\n */\ninterface ToggleInstance {\n turnOn: () => void;\n turnOff: () => void;\n destroy: () => void;\n}\n\n/**\n * Class representing a Toggle component\n */\nclass Toggle implements ToggleInstance {\n private element: HTMLElement;\n private isOn: boolean;\n\n /**\n * Creates an instance of Toggle\n * @param element - The toggle container element\n */\n constructor(element: HTMLElement) {\n this.element = element;\n this.isOn = false;\n this._initialize();\n }\n\n /**\n * Initialize the toggle component\n */\n private _initialize(): void {\n this._bindEvents();\n // Check if toggle should be initially on\n if (this.element.classList.contains(TOGGLE.CLASSES.IS_ON)) {\n this.isOn = true;\n }\n }\n\n /**\n * Bind event listeners\n */\n private _bindEvents(): void {\n this.element.addEventListener('click', this._handleToggle.bind(this));\n }\n\n /**\n * Handle toggle click\n */\n private _handleToggle(): void {\n if (!this.isOn) {\n this.turnOn();\n } else {\n this.turnOff();\n }\n }\n\n /**\n * Turn on the toggle\n */\n public turnOn(): void {\n this.element.classList.add(TOGGLE.CLASSES.IS_ON);\n this.isOn = true;\n \n // Dispatch custom event\n this.element.dispatchEvent(new CustomEvent('toggle:on', { \n bubbles: true \n }));\n }\n\n /**\n * Turn off the toggle\n */\n public turnOff(): void {\n this.element.classList.remove(TOGGLE.CLASSES.IS_ON);\n this.isOn = false;\n \n // Dispatch custom event\n this.element.dispatchEvent(new CustomEvent('toggle:off', { \n bubbles: true \n }));\n }\n\n /**\n * Clean up event listeners\n */\n public destroy(): void {\n this.element.removeEventListener('click', this._handleToggle);\n }\n}\n\n/**\n * Initialize all toggles in the document\n * @returns Array of toggle instances\n */\nexport function initializeToggles(): ToggleInstance[] {\n const toggleInstances: ToggleInstance[] = [];\n const toggleElements = document.querySelectorAll<HTMLElement>(TOGGLE.SELECTORS.TOGGLE);\n\n if (!toggleElements.length) return toggleInstances;\n\n toggleElements.forEach((element) => {\n try {\n const instance = new Toggle(element);\n toggleInstances.push(instance);\n } catch (error) {\n console.error('Error initializing toggle:', error);\n }\n });\n\n return toggleInstances;\n}\n\nexport default Toggle; "],"names":["Toggle","element","isOn","constructor","this","_initialize","_bindEvents","classList","contains","TOGGLE","CLASSES","IS_ON","addEventListener","_handleToggle","bind","turnOff","turnOn","add","dispatchEvent","CustomEvent","bubbles","remove","destroy","removeEventListener","initializeToggles","toggleInstances","toggleElements","document","querySelectorAll","SELECTORS","length","forEach","instance","push","error"],"sourceRoot":""}
@@ -1,5 +0,0 @@
1
- import React from 'react';
2
- import { NavProps } from '../../lib/types/components';
3
- export declare const Nav: React.FC<NavProps>;
4
- export type { NavProps };
5
- export default Nav;
@@ -1,5 +0,0 @@
1
- import React from 'react';
2
- import { NavItemProps } from '../../lib/types/components';
3
- export declare const NavItem: React.FC<NavItemProps>;
4
- export type { NavItemProps };
5
- export default NavItem;
@@ -1,5 +0,0 @@
1
- import React from 'react';
2
- import { NavbarProps } from '../../lib/types/components';
3
- export declare const Navbar: React.FC<NavbarProps>;
4
- export type { NavbarProps };
5
- export default Navbar;
@@ -1,6 +0,0 @@
1
- export { Navbar } from './Navbar';
2
- export { Nav } from './Nav';
3
- export { NavItem } from './NavItem';
4
- export { NavDropdown } from './NavDropdown';
5
- export { Menu, MenuItem, MenuDivider } from './Menu';
6
- export { MegaMenu, MegaMenuColumn, MegaMenuLink } from './MegaMenu';
@@ -1,122 +0,0 @@
1
- import React, { forwardRef, ReactNode } from 'react';
2
- import { MenuProps, MenuItemProps } from '../../lib/types/components';
3
- import { Icon } from '../Icon/Icon';
4
-
5
- export const Menu: React.FC<MenuProps> = forwardRef<HTMLDivElement, MenuProps>(({
6
- children,
7
- className = '',
8
- disabled = false
9
- }, ref) => {
10
- return (
11
- <div ref={ref} className={`c-menu ${className}`}>
12
- <ul className="c-menu__list" role="menu">
13
- {React.Children.map(children, child => {
14
- if (React.isValidElement(child)) {
15
- // Pass disabled prop down to all children if Menu is disabled
16
- return React.cloneElement(child, {
17
- ...child.props,
18
- disabled: disabled ? true : child.props.disabled
19
- });
20
- }
21
- return child;
22
- })}
23
- </ul>
24
- </div>
25
- );
26
- });
27
-
28
- export type { MenuProps, MenuItemProps, MenuDividerProps };
29
-
30
- export default Menu;
31
-
32
- interface MenuDividerProps {
33
- /**
34
- * Additional CSS class names
35
- */
36
- className?: string;
37
- }
38
-
39
- export const MenuItem: React.FC<MenuItemProps> = forwardRef<HTMLLIElement, MenuItemProps>(({
40
- children,
41
- href = '#',
42
- icon,
43
- active = false,
44
- disabled = false,
45
- onClick,
46
- className = ''
47
- }, ref) => {
48
- const handleClick = (e: React.MouseEvent) => {
49
- if (disabled) {
50
- e.preventDefault();
51
- return;
52
- }
53
-
54
- if (onClick) {
55
- onClick();
56
- }
57
- };
58
-
59
- const itemClass = `c-menu__item ${active ? 'is-active' : ''} ${disabled ? 'is-disabled' : ''} ${className}`;
60
-
61
- return (
62
- <li ref={ref} className={itemClass} role="menuitem">
63
- <a
64
- href={href}
65
- className="c-menu__link"
66
- onClick={handleClick}
67
- aria-disabled={disabled}
68
- aria-current={active ? 'page' : undefined}
69
- >
70
- {icon && (
71
- typeof icon === 'string' ? (
72
- icon.startsWith('c-icon-') ? (
73
- <Icon
74
- name={mapIconName(icon.replace('c-icon-', ''))}
75
- size="sm"
76
- className="c-menu__icon"
77
- />
78
- ) : (
79
- <i className={`c-menu__icon ${icon}`}>
80
- {typeof icon !== 'string' && icon}
81
- </i>
82
- )
83
- ) : (
84
- <span className="c-menu__icon">
85
- {icon}
86
- </span>
87
- )
88
- )}
89
- {children}
90
- </a>
91
- </li>
92
- );
93
- });
94
-
95
- // Map icon-lux names to Phosphor icon names
96
- export const mapIconName = (luxIconName: string): any => {
97
- const iconMap: Record<string, any> = {
98
- 'circle': 'Circle',
99
- 'caret-down': 'CaretDown',
100
- 'caret-up': 'CaretUp',
101
- 'caret-right': 'CaretRight',
102
- 'user': 'User',
103
- 'settings': 'Gear',
104
- 'sign-out': 'SignOut',
105
- 'file': 'File',
106
- 'bookmark': 'Bookmark',
107
- 'question-circle': 'Question',
108
- 'bell': 'Bell',
109
- 'search': 'MagnifyingGlass',
110
- // Add more mappings as needed
111
- };
112
-
113
- return iconMap[luxIconName] || 'Circle'; // Default to Circle if no mapping found
114
- };
115
-
116
- export const MenuDivider: React.FC<MenuDividerProps> = forwardRef<HTMLLIElement, MenuDividerProps>(({
117
- className = ''
118
- }, ref) => {
119
- return (
120
- <li ref={ref} className={`c-menu__divider ${className}`} role="separator"></li>
121
- );
122
- });
@@ -1,35 +0,0 @@
1
- import React, { forwardRef } from 'react';
2
- import { NavProps } from '../../lib/types/components';
3
- import { useNav } from '../../lib/composables/useNavbar';
4
-
5
- export const Nav: React.FC<NavProps> = forwardRef<HTMLUListElement, NavProps>(({
6
- children,
7
- alignment = 'start',
8
- className = '',
9
- disabled = false
10
- }, ref) => {
11
- const { generateNavClass } = useNav({ alignment });
12
-
13
- const navClass = generateNavClass({ alignment, className });
14
-
15
- return (
16
- <ul ref={ref} className={navClass} role="menubar" aria-orientation="horizontal">
17
- {React.Children.map(children, child => {
18
- if (React.isValidElement(child)) {
19
- // Pass disabled prop down to all children if Nav is disabled
20
- return React.cloneElement(child, {
21
- ...child.props,
22
- disabled: disabled ? true : child.props.disabled
23
- });
24
- }
25
- return child;
26
- })}
27
- </ul>
28
- );
29
- });
30
-
31
- export type { NavProps };
32
-
33
- Nav.displayName = 'Nav';
34
-
35
- export default Nav;