@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
@@ -28,8 +28,8 @@ export const Default: Story = {
28
28
  { label: 'Home', href: '/' },
29
29
  { label: 'Products', href: '/products' },
30
30
  { label: 'Category', href: '/products/category' },
31
- { label: 'Product Name', active: true }
32
- ]
31
+ { label: 'Product Name', active: true },
32
+ ],
33
33
  },
34
34
  };
35
35
 
@@ -37,27 +37,27 @@ export const Default: Story = {
37
37
  export const WithIcons: Story = {
38
38
  args: {
39
39
  items: [
40
- {
41
- label: 'Home',
42
- href: '/',
43
- icon: <Icon name="House" size="sm" />
40
+ {
41
+ label: 'Home',
42
+ href: '/',
43
+ icon: <Icon name="House" size="sm" />,
44
+ },
45
+ {
46
+ label: 'Products',
47
+ href: '/products',
48
+ icon: <Icon name="Package" size="sm" />,
44
49
  },
45
- {
46
- label: 'Products',
47
- href: '/products',
48
- icon: <Icon name="Package" size="sm" />
50
+ {
51
+ label: 'Category',
52
+ href: '/products/category',
53
+ icon: <Icon name="Folder" size="sm" />,
49
54
  },
50
- {
51
- label: 'Category',
52
- href: '/products/category',
53
- icon: <Icon name="Folder" size="sm" />
55
+ {
56
+ label: 'Product Name',
57
+ active: true,
58
+ icon: <Icon name="Tag" size="sm" />,
54
59
  },
55
- {
56
- label: 'Product Name',
57
- active: true,
58
- icon: <Icon name="Tag" size="sm" />
59
- }
60
- ]
60
+ ],
61
61
  },
62
62
  };
63
63
 
@@ -68,9 +68,9 @@ export const CustomDivider: Story = {
68
68
  { label: 'Home', href: '/' },
69
69
  { label: 'Products', href: '/products' },
70
70
  { label: 'Category', href: '/products/category' },
71
- { label: 'Product Name', active: true }
71
+ { label: 'Product Name', active: true },
72
72
  ],
73
- divider: '/'
73
+ divider: '/',
74
74
  },
75
75
  };
76
76
 
@@ -78,31 +78,31 @@ export const CustomDivider: Story = {
78
78
  export const WithClickHandlers: Story = {
79
79
  args: {
80
80
  items: [
81
- {
82
- label: 'Home',
83
- href: '/',
84
- onClick: (e) => {
81
+ {
82
+ label: 'Home',
83
+ href: '/',
84
+ onClick: e => {
85
85
  e.preventDefault();
86
86
  alert('Home clicked');
87
- }
87
+ },
88
88
  },
89
- {
90
- label: 'Products',
91
- href: '/products',
92
- onClick: (e) => {
89
+ {
90
+ label: 'Products',
91
+ href: '/products',
92
+ onClick: e => {
93
93
  e.preventDefault();
94
94
  alert('Products clicked');
95
- }
95
+ },
96
96
  },
97
- {
98
- label: 'Category',
99
- href: '/products/category',
100
- onClick: (e) => {
97
+ {
98
+ label: 'Category',
99
+ href: '/products/category',
100
+ onClick: e => {
101
101
  e.preventDefault();
102
102
  alert('Category clicked');
103
- }
103
+ },
104
104
  },
105
- { label: 'Product Name', active: true }
106
- ]
105
+ { label: 'Product Name', active: true },
106
+ ],
107
107
  },
108
- };
108
+ };
@@ -6,22 +6,22 @@ export interface BreadcrumbItem {
6
6
  * Text to display
7
7
  */
8
8
  label: string;
9
-
9
+
10
10
  /**
11
11
  * URL for the breadcrumb item
12
12
  */
13
13
  href?: string;
14
-
14
+
15
15
  /**
16
16
  * Whether this item is active (current page)
17
17
  */
18
18
  active?: boolean;
19
-
19
+
20
20
  /**
21
21
  * Optional icon to display before the label
22
22
  */
23
23
  icon?: ReactNode;
24
-
24
+
25
25
  /**
26
26
  * Optional click handler
27
27
  */
@@ -33,17 +33,17 @@ export interface BreadcrumbProps {
33
33
  * Array of breadcrumb items
34
34
  */
35
35
  items: BreadcrumbItem[];
36
-
36
+
37
37
  /**
38
38
  * Custom divider character or element
39
39
  */
40
40
  divider?: ReactNode;
41
-
41
+
42
42
  /**
43
43
  * Additional className
44
44
  */
45
45
  className?: string;
46
-
46
+
47
47
  /**
48
48
  * Aria label for the navigation
49
49
  */
@@ -53,13 +53,10 @@ export const Breadcrumb: React.FC<BreadcrumbProps> = ({
53
53
  items,
54
54
  divider,
55
55
  className = '',
56
- ariaLabel = 'Breadcrumb'
56
+ ariaLabel = 'Breadcrumb',
57
57
  }) => {
58
- const breadcrumbClasses = [
59
- BREADCRUMB.CLASSES.BASE,
60
- className
61
- ].filter(Boolean).join(' ');
62
-
58
+ const breadcrumbClasses = [BREADCRUMB.CLASSES.BASE, className].filter(Boolean).join(' ');
59
+
63
60
  return (
64
61
  <nav aria-label={ariaLabel}>
65
62
  <ol className={breadcrumbClasses}>
@@ -67,30 +64,26 @@ export const Breadcrumb: React.FC<BreadcrumbProps> = ({
67
64
  const isLast = index === items.length - 1;
68
65
  const itemClasses = [
69
66
  BREADCRUMB.CLASSES.ITEM,
70
- item.active || isLast ? BREADCRUMB.CLASSES.ACTIVE : ''
71
- ].filter(Boolean).join(' ');
72
-
67
+ item.active || isLast ? BREADCRUMB.CLASSES.ACTIVE : '',
68
+ ]
69
+ .filter(Boolean)
70
+ .join(' ');
71
+
73
72
  const linkContent = (
74
73
  <>
75
74
  {item.icon && <span className="c-breadcrumb__icon">{item.icon}</span>}
76
75
  {item.label}
77
76
  </>
78
77
  );
79
-
78
+
80
79
  return (
81
80
  <li key={index} className={itemClasses}>
82
81
  {item.href && !item.active ? (
83
- <a
84
- href={item.href}
85
- className={BREADCRUMB.CLASSES.LINK}
86
- onClick={item.onClick}
87
- >
82
+ <a href={item.href} className={BREADCRUMB.CLASSES.LINK} onClick={item.onClick}>
88
83
  {linkContent}
89
84
  </a>
90
85
  ) : (
91
- <span className={BREADCRUMB.CLASSES.LINK}>
92
- {linkContent}
93
- </span>
86
+ <span className={BREADCRUMB.CLASSES.LINK}>{linkContent}</span>
94
87
  )}
95
88
  </li>
96
89
  );
@@ -102,4 +95,4 @@ export const Breadcrumb: React.FC<BreadcrumbProps> = ({
102
95
 
103
96
  Breadcrumb.displayName = 'Breadcrumb';
104
97
 
105
- export default Breadcrumb;
98
+ export default Breadcrumb;
@@ -1,3 +1,3 @@
1
1
  export { Breadcrumb } from './Breadcrumb';
2
2
  export { default } from './Breadcrumb';
3
- export type { BreadcrumbProps, BreadcrumbItem } from './Breadcrumb';
3
+ export type { BreadcrumbProps, BreadcrumbItem } from './Breadcrumb';
@@ -10,7 +10,7 @@ const DEFAULT_OPTIONS: BreadcrumbOptions = {
10
10
  items: [],
11
11
  divider: BREADCRUMB.DEFAULTS.DIVIDER,
12
12
  className: '',
13
- ariaLabel: 'Breadcrumb'
13
+ ariaLabel: 'Breadcrumb',
14
14
  };
15
15
 
16
16
  /**
@@ -19,14 +19,14 @@ const DEFAULT_OPTIONS: BreadcrumbOptions = {
19
19
  export default class Breadcrumb implements BreadcrumbInstance {
20
20
  // DOM element
21
21
  private element: HTMLElement;
22
-
22
+
23
23
  // Options
24
24
  private options: BreadcrumbOptions;
25
25
 
26
26
  // DOM references
27
27
  private navElement: HTMLElement = document.createElement('nav');
28
28
  private listElement: HTMLOListElement = document.createElement('ol');
29
-
29
+
30
30
  // Composables
31
31
  private breadcrumbUtils = useBreadcrumb();
32
32
 
@@ -37,22 +37,21 @@ export default class Breadcrumb implements BreadcrumbInstance {
37
37
  */
38
38
  constructor(element: string | HTMLElement, options: Partial<BreadcrumbOptions> = {}) {
39
39
  // Get element reference
40
- this.element = typeof element === 'string'
41
- ? document.querySelector(element) as HTMLElement
42
- : element;
43
-
40
+ this.element =
41
+ typeof element === 'string' ? (document.querySelector(element) as HTMLElement) : element;
42
+
44
43
  if (!this.element) {
45
44
  throw new Error('Breadcrumb: element not found');
46
45
  }
47
-
46
+
48
47
  // Merge default options with provided options
49
48
  this.options = { ...DEFAULT_OPTIONS, ...options };
50
-
49
+
51
50
  // Ensure items is always an array
52
51
  if (!this.options.items) {
53
52
  this.options.items = [];
54
53
  }
55
-
54
+
56
55
  // Initialize the component
57
56
  this._initialize();
58
57
  }
@@ -64,14 +63,14 @@ export default class Breadcrumb implements BreadcrumbInstance {
64
63
  private _initialize(): void {
65
64
  // Clear element
66
65
  this.element.innerHTML = '';
67
-
66
+
68
67
  // Reset DOM elements
69
68
  this.navElement = document.createElement('nav');
70
69
  this.listElement = document.createElement('ol');
71
-
70
+
72
71
  // Create structure
73
72
  this._createStructure();
74
-
73
+
75
74
  // Append to DOM
76
75
  this.element.appendChild(this.navElement);
77
76
  }
@@ -85,52 +84,55 @@ export default class Breadcrumb implements BreadcrumbInstance {
85
84
  if (this.options.ariaLabel) {
86
85
  this.navElement.setAttribute('aria-label', this.options.ariaLabel);
87
86
  }
88
-
87
+
89
88
  // Create list element
90
89
  this.listElement.className = this.breadcrumbUtils.generateBreadcrumbClass(this.options);
91
-
90
+
92
91
  // Add items
93
92
  const items = this.options.items || [];
94
93
  if (items.length > 0) {
95
94
  items.forEach((item, index) => {
96
95
  const isLast = index === items.length - 1;
97
-
96
+
98
97
  // Create list item
99
98
  const listItem = document.createElement('li');
100
99
  listItem.className = this.breadcrumbUtils.generateItemClass(item, isLast);
101
-
100
+
102
101
  // Create link or span
103
102
  let linkElement: HTMLAnchorElement | HTMLSpanElement;
104
-
103
+
105
104
  if (this.breadcrumbUtils.isItemLink(item, isLast)) {
106
105
  linkElement = document.createElement('a');
107
106
  (linkElement as HTMLAnchorElement).href = item.href || '#';
108
-
107
+
109
108
  if (typeof item.onClick === 'function') {
110
- (linkElement as HTMLAnchorElement).addEventListener('click', item.onClick as EventListener);
109
+ (linkElement as HTMLAnchorElement).addEventListener(
110
+ 'click',
111
+ item.onClick as EventListener
112
+ );
111
113
  }
112
114
  } else {
113
115
  linkElement = document.createElement('span');
114
116
  }
115
-
117
+
116
118
  linkElement.className = BREADCRUMB.CLASSES.LINK;
117
-
119
+
118
120
  // Add icon if provided
119
121
  if (item.icon) {
120
122
  const iconElement = createIconElement(item.icon, 16, 'c-breadcrumb__icon');
121
123
  iconElement.style.marginRight = '4px';
122
124
  linkElement.appendChild(iconElement);
123
125
  }
124
-
126
+
125
127
  // Add label text
126
128
  const labelText = document.createTextNode(item.label);
127
129
  linkElement.appendChild(labelText);
128
-
130
+
129
131
  listItem.appendChild(linkElement);
130
132
  this.listElement.appendChild(listItem);
131
133
  });
132
134
  }
133
-
135
+
134
136
  this.navElement.appendChild(this.listElement);
135
137
  }
136
138
 
@@ -141,12 +143,12 @@ export default class Breadcrumb implements BreadcrumbInstance {
141
143
  public update(options: Partial<BreadcrumbOptions>): void {
142
144
  // Update options
143
145
  this.options = { ...this.options, ...options };
144
-
146
+
145
147
  // Ensure items is always an array
146
148
  if (!this.options.items) {
147
149
  this.options.items = [];
148
150
  }
149
-
151
+
150
152
  // Re-initialize
151
153
  this._initialize();
152
154
  }
@@ -162,7 +164,7 @@ export default class Breadcrumb implements BreadcrumbInstance {
162
164
  // No need to remove event listeners as we're removing the elements
163
165
  });
164
166
  }
165
-
167
+
166
168
  // Remove DOM elements
167
169
  this.element.innerHTML = '';
168
170
  }
@@ -177,19 +179,19 @@ export default class Breadcrumb implements BreadcrumbInstance {
177
179
  return Array.from(elements).map(element => {
178
180
  // Try to get options from data attributes
179
181
  const options: BreadcrumbOptions = {};
180
-
182
+
181
183
  // Get aria label
182
184
  const ariaLabel = element.getAttribute('data-aria-label');
183
185
  if (ariaLabel) options.ariaLabel = ariaLabel;
184
-
186
+
185
187
  // Get class name
186
188
  const className = element.getAttribute('data-class-name');
187
189
  if (className) options.className = className;
188
-
190
+
189
191
  // Get divider
190
192
  const divider = element.getAttribute('data-divider');
191
193
  if (divider) options.divider = divider;
192
-
194
+
193
195
  // Get items from data attribute
194
196
  const itemsAttr = element.getAttribute('data-items');
195
197
  if (itemsAttr) {
@@ -199,8 +201,8 @@ export default class Breadcrumb implements BreadcrumbInstance {
199
201
  console.error('Invalid JSON in data-items attribute', e);
200
202
  }
201
203
  }
202
-
204
+
203
205
  return new Breadcrumb(element as HTMLElement, options);
204
206
  });
205
207
  }
206
- }
208
+ }
@@ -2,4 +2,4 @@ import Breadcrumb from './breadcrumb';
2
2
  import type { BreadcrumbItem, BreadcrumbOptions, BreadcrumbInstance } from './types';
3
3
 
4
4
  export type { BreadcrumbItem, BreadcrumbOptions, BreadcrumbInstance };
5
- export default Breadcrumb;
5
+ export default Breadcrumb;
@@ -6,22 +6,22 @@ export interface BreadcrumbItem {
6
6
  * Item label text
7
7
  */
8
8
  label: string;
9
-
9
+
10
10
  /**
11
11
  * Optional URL for the breadcrumb item
12
12
  */
13
13
  href?: string;
14
-
14
+
15
15
  /**
16
16
  * Whether this item is active/current
17
17
  */
18
18
  active?: boolean;
19
-
19
+
20
20
  /**
21
21
  * Icon name from Phosphor Icons
22
22
  */
23
23
  icon?: string;
24
-
24
+
25
25
  /**
26
26
  * Optional click handler
27
27
  */
@@ -36,17 +36,17 @@ export interface BreadcrumbOptions {
36
36
  * Array of breadcrumb items
37
37
  */
38
38
  items?: BreadcrumbItem[];
39
-
39
+
40
40
  /**
41
41
  * Divider character or string between items
42
42
  */
43
43
  divider?: string;
44
-
44
+
45
45
  /**
46
46
  * Additional CSS class names
47
47
  */
48
48
  className?: string;
49
-
49
+
50
50
  /**
51
51
  * Accessible label for the breadcrumb navigation
52
52
  */
@@ -61,9 +61,9 @@ export interface BreadcrumbInstance {
61
61
  * Update the breadcrumb with new options
62
62
  */
63
63
  update: (options: Partial<BreadcrumbOptions>) => void;
64
-
64
+
65
65
  /**
66
66
  * Destroy the breadcrumb component
67
67
  */
68
68
  destroy: () => void;
69
- }
69
+ }
@@ -12,32 +12,46 @@ const meta = {
12
12
  variant: {
13
13
  control: { type: 'select' },
14
14
  options: [
15
- 'primary', 'secondary', 'success', 'info', 'warning', 'danger', 'light', 'dark',
16
- 'outline-primary', 'outline-secondary', 'outline-success', 'outline-info',
17
- 'outline-warning', 'outline-danger', 'outline-light', 'outline-dark', 'link'
15
+ 'primary',
16
+ 'secondary',
17
+ 'success',
18
+ 'info',
19
+ 'warning',
20
+ 'danger',
21
+ 'light',
22
+ 'dark',
23
+ 'outline-primary',
24
+ 'outline-secondary',
25
+ 'outline-success',
26
+ 'outline-info',
27
+ 'outline-warning',
28
+ 'outline-danger',
29
+ 'outline-light',
30
+ 'outline-dark',
31
+ 'link',
18
32
  ],
19
- description: 'The visual style of the button'
33
+ description: 'The visual style of the button',
20
34
  },
21
35
  size: {
22
36
  control: { type: 'select' },
23
37
  options: ['sm', 'md', 'lg'],
24
- description: 'The size of the button'
38
+ description: 'The size of the button',
25
39
  },
26
40
  disabled: {
27
41
  control: 'boolean',
28
- description: 'Whether the button is disabled'
42
+ description: 'Whether the button is disabled',
29
43
  },
30
44
  icon: {
31
45
  control: 'text',
32
- description: 'Optional icon element to display in the button'
46
+ description: 'Optional icon element to display in the button',
33
47
  },
34
48
  iconOnly: {
35
49
  control: 'boolean',
36
- description: 'Whether the button should only display an icon'
50
+ description: 'Whether the button should only display an icon',
37
51
  },
38
52
  rounded: {
39
53
  control: 'boolean',
40
- description: 'Whether the button should have a fully rounded (pill) shape'
54
+ description: 'Whether the button should have a fully rounded (pill) shape',
41
55
  },
42
56
  },
43
57
  } satisfies Meta<typeof Button>;
@@ -47,7 +61,17 @@ type Story = StoryObj<typeof meta>;
47
61
 
48
62
  // Mock icon component for stories
49
63
  const Icon = () => (
50
- <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round">
64
+ <svg
65
+ xmlns="http://www.w3.org/2000/svg"
66
+ width="24"
67
+ height="24"
68
+ viewBox="0 0 24 24"
69
+ fill="none"
70
+ stroke="currentColor"
71
+ strokeWidth="2"
72
+ strokeLinecap="round"
73
+ strokeLinejoin="round"
74
+ >
51
75
  <path d="M12 5v14M5 12h14" />
52
76
  </svg>
53
77
  );
@@ -186,7 +210,7 @@ export const IconOnly: Story = {
186
210
  export const AllVariants: Story = {
187
211
  args: {
188
212
  label: 'Button',
189
- variant: "success",
213
+ variant: 'success',
190
214
  },
191
215
  render: () => (
192
216
  <div className="u-d-flex u-flex-wrap u-gap-2">
@@ -243,7 +267,7 @@ export const IconButtonVariants: Story = {
243
267
  label: 'Button',
244
268
  variant: 'primary',
245
269
  icon: <Icon />,
246
- iconOnly: true
270
+ iconOnly: true,
247
271
  },
248
272
  render: () => (
249
273
  <div className="u-d-flex u-flex-wrap u-gap-2">
@@ -10,45 +10,58 @@ export type ButtonAsProp = {
10
10
  [key: string]: any;
11
11
  };
12
12
 
13
- export const Button = forwardRef<HTMLButtonElement, ButtonProps & ButtonAsProp>(({
14
- label,
15
- children,
16
- onClick,
17
- variant = 'primary',
18
- size = 'md',
19
- disabled = false,
20
- icon,
21
- iconOnly = false,
22
- rounded = false,
23
- className = '',
24
- as: Component = 'button',
25
- ...props
26
- }, ref) => {
27
- const { generateButtonClass, handleClick } = useButton({
28
- variant, size, disabled, rounded
29
- });
30
-
31
- const buttonClass = generateButtonClass({
32
- variant, size, disabled, rounded, iconOnly, className
33
- });
34
-
35
- // Handle the case when the button is rendered as a link or another component
36
- const buttonProps = {
37
- ref,
38
- className: buttonClass,
39
- onClick: handleClick(onClick),
40
- disabled,
41
- 'aria-disabled': disabled,
42
- ...props,
43
- };
44
-
45
- return (
46
- <Component {...buttonProps}>
47
- {icon && <span className="button__icon">{icon}</span>}
48
- {!iconOnly && <span className="button__label">{label || children}</span>}
49
- </Component>
50
- );
51
- });
13
+ export const Button = forwardRef<HTMLButtonElement, ButtonProps & ButtonAsProp>(
14
+ (
15
+ {
16
+ label,
17
+ children,
18
+ onClick,
19
+ variant = 'primary',
20
+ size = 'md',
21
+ disabled = false,
22
+ icon,
23
+ iconOnly = false,
24
+ rounded = false,
25
+ className = '',
26
+ as: Component = 'button',
27
+ ...props
28
+ },
29
+ ref
30
+ ) => {
31
+ const { generateButtonClass, handleClick } = useButton({
32
+ variant,
33
+ size,
34
+ disabled,
35
+ rounded,
36
+ });
37
+
38
+ const buttonClass = generateButtonClass({
39
+ variant,
40
+ size,
41
+ disabled,
42
+ rounded,
43
+ iconOnly,
44
+ className,
45
+ });
46
+
47
+ // Handle the case when the button is rendered as a link or another component
48
+ const buttonProps = {
49
+ ref,
50
+ className: buttonClass,
51
+ onClick: handleClick(onClick),
52
+ disabled,
53
+ 'aria-disabled': disabled,
54
+ ...props,
55
+ };
56
+
57
+ return (
58
+ <Component {...buttonProps}>
59
+ {icon && <span className="button__icon">{icon}</span>}
60
+ {!iconOnly && <span className="button__label">{label || children}</span>}
61
+ </Component>
62
+ );
63
+ }
64
+ );
52
65
 
53
66
  Button.displayName = 'Button';
54
67