@shohojdhara/atomix 0.1.30 → 0.2.1

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 (469) hide show
  1. package/CHANGELOG.md +0 -0
  2. package/LICENSE +0 -0
  3. package/README.md +151 -39
  4. package/dist/atomix.css +13529 -0
  5. package/dist/atomix.min.css +15 -0
  6. package/dist/index.d.ts +6112 -1757
  7. package/dist/index.esm.js +16852 -8364
  8. package/dist/index.esm.js.map +1 -1
  9. package/dist/index.js +16892 -8369
  10. package/dist/index.js.map +1 -1
  11. package/dist/index.min.js +1 -1
  12. package/dist/index.min.js.map +1 -1
  13. package/dist/themes/boomdevs.css +13241 -0
  14. package/dist/themes/boomdevs.min.css +353 -0
  15. package/dist/themes/esrar.css +15374 -0
  16. package/dist/themes/esrar.min.css +189 -0
  17. package/dist/themes/mashroom.css +28079 -0
  18. package/dist/themes/mashroom.min.css +403 -0
  19. package/dist/themes/shaj-default.css +14203 -0
  20. package/dist/themes/shaj-default.min.css +500 -0
  21. package/dist/themes/yabai.css +13711 -0
  22. package/dist/themes/yabai.min.css +189 -0
  23. package/package.json +126 -99
  24. package/src/components/Accordion/Accordion.stories.tsx +271 -0
  25. package/src/components/Accordion/Accordion.tsx +131 -0
  26. package/src/components/Accordion/index.ts +3 -0
  27. package/src/components/AtomixLogo/AtomixLogo.tsx +36 -0
  28. package/src/components/AtomixLogo/index.ts +3 -0
  29. package/src/components/AtomixLogo.tsx +40 -0
  30. package/src/components/Avatar/Avatar.stories.tsx +257 -0
  31. package/src/components/Avatar/Avatar.tsx +68 -0
  32. package/src/components/Avatar/AvatarGroup.tsx +73 -0
  33. package/src/components/Avatar/index.ts +3 -0
  34. package/src/components/Badge/Badge.stories.tsx +371 -0
  35. package/src/components/Badge/Badge.tsx +39 -0
  36. package/src/components/Badge/index.ts +3 -0
  37. package/src/components/Block/Block.stories.tsx +408 -0
  38. package/src/components/Block/Block.tsx +137 -0
  39. package/src/components/Block/index.ts +1 -0
  40. package/src/components/Breadcrumb/Breadcrumb.stories.tsx +106 -0
  41. package/src/components/Breadcrumb/Breadcrumb.tsx +112 -0
  42. package/src/components/Breadcrumb/index.ts +3 -0
  43. package/src/components/Button/Button.stories.tsx +312 -0
  44. package/src/components/Button/Button.tsx +69 -0
  45. package/src/components/Button/index.ts +3 -0
  46. package/src/components/Callout/Callout.stories.tsx +588 -0
  47. package/src/components/Callout/Callout.tsx +78 -0
  48. package/src/components/Callout/index.ts +1 -0
  49. package/src/components/Card/Card.stories.tsx +105 -0
  50. package/src/components/Card/Card.tsx +69 -0
  51. package/src/components/Card/ElevationCard.tsx +47 -0
  52. package/src/components/Card/index.ts +15 -0
  53. package/src/components/Chart/AdvancedChart.tsx +624 -0
  54. package/src/components/Chart/AnimatedChart.tsx +206 -0
  55. package/src/components/Chart/AreaChart.tsx +27 -0
  56. package/src/components/Chart/BarChart.tsx +148 -0
  57. package/src/components/Chart/BubbleChart.tsx +411 -0
  58. package/src/components/Chart/CandlestickChart.tsx +765 -0
  59. package/src/components/Chart/Chart.stories.tsx +527 -0
  60. package/src/components/Chart/Chart.tsx +218 -0
  61. package/src/components/Chart/ChartRenderer.tsx +322 -0
  62. package/src/components/Chart/ChartToolbar.tsx +436 -0
  63. package/src/components/Chart/ChartTooltip.tsx +101 -0
  64. package/src/components/Chart/DonutChart.tsx +370 -0
  65. package/src/components/Chart/FunnelChart.tsx +393 -0
  66. package/src/components/Chart/GaugeChart.tsx +550 -0
  67. package/src/components/Chart/HeatmapChart.tsx +614 -0
  68. package/src/components/Chart/LineChart.tsx +172 -0
  69. package/src/components/Chart/LineChartNew.tsx +167 -0
  70. package/src/components/Chart/MultiAxisChart.tsx +498 -0
  71. package/src/components/Chart/PieChart.tsx +103 -0
  72. package/src/components/Chart/RadarChart.tsx +332 -0
  73. package/src/components/Chart/RealTimeChart.tsx +436 -0
  74. package/src/components/Chart/ScatterChart.tsx +152 -0
  75. package/src/components/Chart/TreemapChart.tsx +574 -0
  76. package/src/components/Chart/WaterfallChart.tsx +450 -0
  77. package/src/components/Chart/index.ts +119 -0
  78. package/src/components/Chart/types.ts +338 -0
  79. package/src/components/ColorModeToggle/ColorModeToggle.stories.tsx +44 -0
  80. package/src/components/ColorModeToggle/ColorModeToggle.tsx +85 -0
  81. package/src/components/ColorModeToggle/index.ts +2 -0
  82. package/src/components/Countdown/Countdown.stories.tsx +46 -0
  83. package/src/components/Countdown/Countdown.tsx +90 -0
  84. package/src/components/Countdown/index.ts +2 -0
  85. package/src/components/DataTable/DataTable.stories.tsx +248 -0
  86. package/src/components/DataTable/DataTable.tsx +213 -0
  87. package/src/components/DataTable/index.ts +3 -0
  88. package/src/components/DatePicker/DatePicker.stories.tsx +364 -0
  89. package/src/components/DatePicker/DatePicker.tsx +504 -0
  90. package/src/components/DatePicker/index.ts +4 -0
  91. package/src/components/DatePicker/readme.md +106 -0
  92. package/src/components/DatePicker/types.ts +167 -0
  93. package/src/components/DatePicker/utils.ts +185 -0
  94. package/src/components/Dropdown/Dropdown.stories.tsx +358 -0
  95. package/src/components/Dropdown/Dropdown.tsx +352 -0
  96. package/src/components/Dropdown/index.ts +14 -0
  97. package/src/components/Dropdown/readme.md +151 -0
  98. package/src/components/EdgePanel/EdgePanel.stories.tsx +266 -0
  99. package/src/components/EdgePanel/EdgePanel.tsx +73 -0
  100. package/src/components/EdgePanel/index.ts +1 -0
  101. package/src/components/Form/Checkbox.stories.tsx +76 -0
  102. package/src/components/Form/Checkbox.tsx +69 -0
  103. package/src/components/Form/Form.stories.tsx +497 -0
  104. package/src/components/Form/Form.tsx +46 -0
  105. package/src/components/Form/FormGroup.stories.tsx +162 -0
  106. package/src/components/Form/FormGroup.tsx +53 -0
  107. package/src/components/Form/Input.stories.tsx +106 -0
  108. package/src/components/Form/Input.tsx +87 -0
  109. package/src/components/Form/Radio.stories.tsx +94 -0
  110. package/src/components/Form/Radio.tsx +65 -0
  111. package/src/components/Form/Select.stories.tsx +151 -0
  112. package/src/components/Form/Select.tsx +191 -0
  113. package/src/components/Form/Textarea.stories.tsx +123 -0
  114. package/src/components/Form/Textarea.tsx +78 -0
  115. package/src/components/Form/index.ts +7 -0
  116. package/src/components/Hero/Hero.stories.tsx +295 -0
  117. package/src/components/Hero/Hero.tsx +175 -0
  118. package/src/components/Hero/index.ts +6 -0
  119. package/src/components/Icon/Icon.tsx +87 -0
  120. package/src/components/Icon/index.ts +2 -0
  121. package/src/components/List/List.stories.tsx +122 -0
  122. package/src/components/List/List.tsx +35 -0
  123. package/src/components/List/ListGroup.tsx +35 -0
  124. package/src/components/List/index.ts +2 -0
  125. package/src/components/Messages/Messages.stories.tsx +160 -0
  126. package/src/components/Messages/Messages.tsx +172 -0
  127. package/src/components/Messages/index.ts +3 -0
  128. package/src/components/Modal/Modal.stories.tsx +284 -0
  129. package/src/components/Modal/Modal.tsx +198 -0
  130. package/src/components/Modal/README.md +169 -0
  131. package/src/components/Modal/index.ts +1 -0
  132. package/src/components/Navigation/Menu/MegaMenu.tsx +109 -0
  133. package/src/components/Navigation/Menu/Menu.stories.tsx +339 -0
  134. package/src/components/Navigation/Menu/Menu.tsx +111 -0
  135. package/src/components/Navigation/Nav/Nav.stories.tsx +456 -0
  136. package/src/components/Navigation/Nav/Nav.tsx +51 -0
  137. package/src/components/Navigation/Nav/NavDropdown.tsx +105 -0
  138. package/src/components/Navigation/Nav/NavItem.tsx +168 -0
  139. package/src/components/Navigation/Navbar/Navbar.stories.tsx +569 -0
  140. package/src/components/Navigation/Navbar/Navbar.tsx +150 -0
  141. package/src/components/Navigation/README.md +314 -0
  142. package/src/components/Navigation/SideMenu/SideMenu.README.md +494 -0
  143. package/src/components/Navigation/SideMenu/SideMenu.stories.tsx +609 -0
  144. package/src/components/Navigation/SideMenu/SideMenu.tsx +101 -0
  145. package/src/components/Navigation/SideMenu/SideMenuItem.tsx +103 -0
  146. package/src/components/Navigation/SideMenu/SideMenuList.tsx +41 -0
  147. package/src/components/Navigation/index.ts +23 -0
  148. package/src/components/Pagination/Pagination.stories.tsx +188 -0
  149. package/src/components/Pagination/Pagination.tsx +162 -0
  150. package/src/components/Pagination/index.ts +1 -0
  151. package/src/components/PhotoViewer/PhotoViewer.stories.tsx +397 -0
  152. package/src/components/PhotoViewer/PhotoViewer.tsx +246 -0
  153. package/src/components/PhotoViewer/PhotoViewerHeader.tsx +184 -0
  154. package/src/components/PhotoViewer/PhotoViewerImage.tsx +173 -0
  155. package/src/components/PhotoViewer/PhotoViewerInfo.tsx +91 -0
  156. package/src/components/PhotoViewer/PhotoViewerNavigation.tsx +85 -0
  157. package/src/components/PhotoViewer/PhotoViewerThumbnails.tsx +63 -0
  158. package/src/components/PhotoViewer/README.md +358 -0
  159. package/src/components/PhotoViewer/examples/ImageGallery.tsx +187 -0
  160. package/src/components/PhotoViewer/examples/SimpleGallery.tsx +73 -0
  161. package/src/components/PhotoViewer/examples/index.ts +2 -0
  162. package/src/components/PhotoViewer/index.ts +14 -0
  163. package/src/components/Popover/Popover.stories.tsx +143 -0
  164. package/src/components/Popover/Popover.tsx +137 -0
  165. package/src/components/Popover/index.ts +5 -0
  166. package/src/components/Popover/readme.md +120 -0
  167. package/src/components/ProductReview/ProductReview.stories.tsx +88 -0
  168. package/src/components/ProductReview/ProductReview.tsx +169 -0
  169. package/src/components/ProductReview/index.ts +3 -0
  170. package/src/components/Progress/Progress.stories.tsx +75 -0
  171. package/src/components/Progress/Progress.tsx +45 -0
  172. package/src/components/Progress/index.ts +1 -0
  173. package/src/components/Rating/Rating.stories.tsx +109 -0
  174. package/src/components/Rating/Rating.tsx +286 -0
  175. package/src/components/Rating/index.ts +6 -0
  176. package/src/components/River/River.stories.tsx +230 -0
  177. package/src/components/River/River.tsx +134 -0
  178. package/src/components/River/index.ts +2 -0
  179. package/src/components/SectionIntro/SectionIntro.stories.tsx +143 -0
  180. package/src/components/SectionIntro/SectionIntro.tsx +184 -0
  181. package/src/components/SectionIntro/index.ts +3 -0
  182. package/src/components/Slider/Slider.stories.tsx +241 -0
  183. package/src/components/Slider/Slider.tsx +225 -0
  184. package/src/components/Slider/index.ts +24 -0
  185. package/src/components/Spinner/Spinner.stories.tsx +65 -0
  186. package/src/components/Spinner/Spinner.tsx +36 -0
  187. package/src/components/Spinner/index.ts +2 -0
  188. package/src/components/Steps/Steps.stories.tsx +158 -0
  189. package/src/components/Steps/Steps.tsx +115 -0
  190. package/src/components/Steps/index.ts +3 -0
  191. package/src/components/Tab/Tab.stories.tsx +129 -0
  192. package/src/components/Tab/Tab.tsx +111 -0
  193. package/src/components/Tab/index.ts +2 -0
  194. package/src/components/Testimonial/Testimonial.stories.tsx +180 -0
  195. package/src/components/Testimonial/Testimonial.tsx +138 -0
  196. package/src/components/Testimonial/index.ts +3 -0
  197. package/src/components/Todo/Todo.stories.tsx +103 -0
  198. package/src/components/Todo/Todo.tsx +158 -0
  199. package/src/components/Todo/index.ts +1 -0
  200. package/src/components/Toggle/Toggle.stories.tsx +49 -0
  201. package/src/components/Toggle/Toggle.tsx +84 -0
  202. package/src/components/Toggle/index.ts +2 -0
  203. package/src/components/Tooltip/Tooltip.stories.tsx +115 -0
  204. package/src/components/Tooltip/Tooltip.tsx +150 -0
  205. package/src/components/Tooltip/index.ts +3 -0
  206. package/src/components/Upload/Upload.stories.tsx +220 -0
  207. package/src/components/Upload/Upload.tsx +354 -0
  208. package/src/components/Upload/index.ts +3 -0
  209. package/src/components/VideoPlayer/VideoPlayer.stories.tsx +484 -0
  210. package/src/components/VideoPlayer/VideoPlayer.tsx +574 -0
  211. package/src/components/VideoPlayer/index.ts +7 -0
  212. package/src/components/index.ts +111 -0
  213. package/src/layouts/Grid/Container.tsx +58 -0
  214. package/src/layouts/Grid/Grid.stories.tsx +861 -0
  215. package/src/layouts/Grid/Grid.tsx +68 -0
  216. package/src/layouts/Grid/GridCol.tsx +161 -0
  217. package/src/layouts/Grid/README.md +108 -0
  218. package/src/layouts/Grid/Row.tsx +70 -0
  219. package/src/layouts/Grid/index.ts +8 -0
  220. package/src/layouts/MasonryGrid/MasonryGrid.stories.tsx +387 -0
  221. package/src/layouts/MasonryGrid/MasonryGrid.tsx +408 -0
  222. package/src/layouts/MasonryGrid/MasonryGridItem.tsx +44 -0
  223. package/src/layouts/MasonryGrid/README.md +117 -0
  224. package/src/layouts/MasonryGrid/index.ts +4 -0
  225. package/src/layouts/index.ts +7 -0
  226. package/src/lib/README.md +89 -0
  227. package/src/lib/composables/index.ts +63 -0
  228. package/src/lib/composables/useAccordion.ts +129 -0
  229. package/src/lib/composables/useAmbientMode.ts +90 -0
  230. package/src/lib/composables/useBadge.ts +42 -0
  231. package/src/lib/composables/useBarChart.ts +365 -0
  232. package/src/lib/composables/useBlock.ts +56 -0
  233. package/src/lib/composables/useBreadcrumb.ts +81 -0
  234. package/src/lib/composables/useButton.ts +59 -0
  235. package/src/lib/composables/useCallout.ts +55 -0
  236. package/src/lib/composables/useCard.ts +155 -0
  237. package/src/lib/composables/useChart.ts +1082 -0
  238. package/src/lib/composables/useChartAnalytics.ts +505 -0
  239. package/src/lib/composables/useChartData.ts +38 -0
  240. package/src/lib/composables/useChartExport.ts +392 -0
  241. package/src/lib/composables/useChartInteraction.ts +34 -0
  242. package/src/lib/composables/useChartInteractions.ts +123 -0
  243. package/src/lib/composables/useChartPerformance.ts +323 -0
  244. package/src/lib/composables/useChartScale.ts +48 -0
  245. package/src/lib/composables/useChartToolbar.ts +532 -0
  246. package/src/lib/composables/useCheckbox.ts +70 -0
  247. package/src/lib/composables/useDataTable.ts +208 -0
  248. package/src/lib/composables/useDatePicker.ts +564 -0
  249. package/src/lib/composables/useDropdown.ts +272 -0
  250. package/src/lib/composables/useEdgePanel.ts +261 -0
  251. package/src/lib/composables/useForm.ts +62 -0
  252. package/src/lib/composables/useFormGroup.ts +51 -0
  253. package/src/lib/composables/useHero.ts +250 -0
  254. package/src/lib/composables/useInput.ts +58 -0
  255. package/src/lib/composables/useLineChart.ts +319 -0
  256. package/src/lib/composables/useMessages.ts +77 -0
  257. package/src/lib/composables/useModal.ts +110 -0
  258. package/src/lib/composables/useNavbar.ts +288 -0
  259. package/src/lib/composables/usePagination.ts +101 -0
  260. package/src/lib/composables/usePhotoViewer.ts +937 -0
  261. package/src/lib/composables/usePieChart.ts +362 -0
  262. package/src/lib/composables/usePopover.ts +354 -0
  263. package/src/lib/composables/useProgress.ts +74 -0
  264. package/src/lib/composables/useRadio.ts +47 -0
  265. package/src/lib/composables/useRating.ts +174 -0
  266. package/src/lib/composables/useRiver.ts +205 -0
  267. package/src/lib/composables/useSelect.ts +52 -0
  268. package/src/lib/composables/useSideMenu.ts +197 -0
  269. package/src/lib/composables/useSlider.ts +339 -0
  270. package/src/lib/composables/useSpinner.ts +42 -0
  271. package/src/lib/composables/useTextarea.ts +55 -0
  272. package/src/lib/composables/useTodo.ts +141 -0
  273. package/src/lib/composables/useVideoPlayer.ts +398 -0
  274. package/src/lib/constants/components.ts +1433 -0
  275. package/src/lib/constants/index.ts +4 -0
  276. package/src/lib/index.ts +11 -0
  277. package/src/lib/types/components.ts +4750 -0
  278. package/src/lib/types/index.ts +2 -0
  279. package/src/lib/utils/dom.ts +41 -0
  280. package/src/lib/utils/icons.ts +74 -0
  281. package/src/lib/utils/index.ts +55 -0
  282. package/src/lib/utils/useForkRef.test.tsx +64 -0
  283. package/src/lib/utils/useForkRef.ts +36 -0
  284. package/src/lib/utils.test.ts +14 -0
  285. package/src/styles/01-settings/_index.scss +2 -0
  286. package/src/styles/01-settings/_settings.accordion.scss +7 -5
  287. package/src/styles/01-settings/_settings.animations.scss +0 -0
  288. package/src/styles/01-settings/_settings.avatar-group.scss +6 -3
  289. package/src/styles/01-settings/_settings.avatar.scss +2 -2
  290. package/src/styles/01-settings/_settings.badge.scss +15 -9
  291. package/src/styles/01-settings/_settings.block.scss +11 -0
  292. package/src/styles/01-settings/_settings.border-radius.scss +12 -9
  293. package/src/styles/01-settings/_settings.border.scss +4 -1
  294. package/src/styles/01-settings/_settings.box-shadow.scss +1 -1
  295. package/src/styles/01-settings/_settings.breadcrumb.scss +9 -8
  296. package/src/styles/01-settings/_settings.breakpoints.scss +0 -0
  297. package/src/styles/01-settings/_settings.btn-group.scss +4 -1
  298. package/src/styles/01-settings/_settings.button.scss +19 -21
  299. package/src/styles/01-settings/_settings.callout.scss +42 -24
  300. package/src/styles/01-settings/_settings.card.scss +12 -10
  301. package/src/styles/01-settings/_settings.chart.scss +199 -0
  302. package/src/styles/01-settings/_settings.checkbox-group.scss +0 -0
  303. package/src/styles/01-settings/_settings.checkbox.scss +0 -0
  304. package/src/styles/01-settings/_settings.color-mode.scss +0 -0
  305. package/src/styles/01-settings/_settings.colors.scss +20 -0
  306. package/src/styles/01-settings/_settings.config.scss +1 -1
  307. package/src/styles/01-settings/_settings.countdown.scss +0 -0
  308. package/src/styles/01-settings/_settings.data-table.scss +0 -0
  309. package/src/styles/01-settings/_settings.datepicker.scss +0 -0
  310. package/src/styles/01-settings/_settings.dropdown.scss +0 -0
  311. package/src/styles/01-settings/_settings.edge-panel.scss +0 -0
  312. package/src/styles/01-settings/_settings.fonts.scss +1 -1
  313. package/src/styles/01-settings/_settings.form-group.scss +0 -0
  314. package/src/styles/01-settings/_settings.form.scss +0 -0
  315. package/src/styles/01-settings/_settings.grid.scss +3 -3
  316. package/src/styles/01-settings/_settings.hero.scss +1 -1
  317. package/src/styles/01-settings/_settings.input.scss +1 -1
  318. package/src/styles/01-settings/_settings.link.scss +0 -0
  319. package/src/styles/01-settings/_settings.list-group.scss +0 -0
  320. package/src/styles/01-settings/_settings.list.scss +0 -0
  321. package/src/styles/01-settings/_settings.maps.scss +43 -8
  322. package/src/styles/01-settings/_settings.masonry-grid.scss +0 -0
  323. package/src/styles/01-settings/_settings.menu.scss +0 -0
  324. package/src/styles/01-settings/_settings.messages.scss +0 -0
  325. package/src/styles/01-settings/_settings.modal.scss +1 -1
  326. package/src/styles/01-settings/_settings.nav.scss +0 -0
  327. package/src/styles/01-settings/_settings.navbar.scss +0 -0
  328. package/src/styles/01-settings/_settings.pagination.scss +0 -0
  329. package/src/styles/01-settings/_settings.photoviewer.scss +89 -23
  330. package/src/styles/01-settings/_settings.popover.scss +0 -0
  331. package/src/styles/01-settings/_settings.position.scss +0 -0
  332. package/src/styles/01-settings/_settings.progress.scss +0 -0
  333. package/src/styles/01-settings/_settings.rating.scss +0 -0
  334. package/src/styles/01-settings/_settings.river.scss +0 -0
  335. package/src/styles/01-settings/_settings.sectionintro.scss +0 -0
  336. package/src/styles/01-settings/_settings.select.scss +0 -0
  337. package/src/styles/01-settings/_settings.side-menu.scss +0 -0
  338. package/src/styles/01-settings/_settings.skeleton.scss +0 -0
  339. package/src/styles/01-settings/_settings.slider.scss +59 -0
  340. package/src/styles/01-settings/_settings.spacing.scss +11 -3
  341. package/src/styles/01-settings/_settings.spinner.scss +0 -0
  342. package/src/styles/01-settings/_settings.steps.scss +1 -1
  343. package/src/styles/01-settings/_settings.tabs.scss +4 -4
  344. package/src/styles/01-settings/_settings.testimonials.scss +0 -0
  345. package/src/styles/01-settings/_settings.todo.scss +0 -0
  346. package/src/styles/01-settings/_settings.toggle.scss +1 -1
  347. package/src/styles/01-settings/_settings.tooltip.scss +0 -0
  348. package/src/styles/01-settings/_settings.typography.scss +2 -0
  349. package/src/styles/01-settings/_settings.upload.scss +0 -0
  350. package/src/styles/01-settings/_settings.video-player.scss +64 -0
  351. package/src/styles/01-settings/_settings.z-layers.scss +0 -0
  352. package/src/styles/02-tools/_index.scss +1 -0
  353. package/src/styles/02-tools/_tools.animations.scss +82 -0
  354. package/src/styles/02-tools/_tools.border-radius.scss +0 -0
  355. package/src/styles/02-tools/_tools.breakpoints.scss +0 -0
  356. package/src/styles/02-tools/_tools.button.scss +5 -0
  357. package/src/styles/02-tools/_tools.clearfix.scss +0 -0
  358. package/src/styles/02-tools/_tools.color-functions.scss +0 -0
  359. package/src/styles/02-tools/_tools.color-mode.scss +1 -1
  360. package/src/styles/02-tools/_tools.component.scss +479 -0
  361. package/src/styles/02-tools/_tools.event.scss +0 -0
  362. package/src/styles/02-tools/_tools.grid.scss +0 -0
  363. package/src/styles/02-tools/_tools.hidden-visually.scss +0 -0
  364. package/src/styles/02-tools/_tools.hidden.scss +0 -0
  365. package/src/styles/02-tools/_tools.map-loop.scss +0 -0
  366. package/src/styles/02-tools/_tools.media-queries.scss +0 -0
  367. package/src/styles/02-tools/_tools.object-fit.scss +0 -0
  368. package/src/styles/02-tools/_tools.placeholder.scss +0 -0
  369. package/src/styles/02-tools/_tools.rem.scss +5 -1
  370. package/src/styles/02-tools/_tools.size.scss +0 -0
  371. package/src/styles/02-tools/_tools.spacing.scss +0 -0
  372. package/src/styles/02-tools/_tools.to-rgb.scss +0 -0
  373. package/src/styles/02-tools/_tools.transition.scss +0 -0
  374. package/src/styles/02-tools/_tools.utilities.scss +0 -0
  375. package/src/styles/02-tools/_tools.utility-api.scss +23 -2
  376. package/src/styles/03-generic/_generic.fonts.scss +0 -0
  377. package/src/styles/03-generic/_generic.reset.scss +0 -0
  378. package/src/styles/03-generic/_generic.root.scss +5 -1
  379. package/src/styles/03-generic/_generic.selection.scss +0 -0
  380. package/src/styles/03-generic/_index.scss +0 -0
  381. package/src/styles/04-elements/_elements.all.scss +0 -0
  382. package/src/styles/04-elements/_elements.body.scss +0 -0
  383. package/src/styles/04-elements/_elements.heading.scss +0 -0
  384. package/src/styles/04-elements/_elements.html.scss +0 -0
  385. package/src/styles/04-elements/_elements.links.scss +0 -0
  386. package/src/styles/04-elements/_index.scss +0 -0
  387. package/src/styles/05-objects/_index.scss +1 -0
  388. package/src/styles/05-objects/_objects.block.scss +122 -0
  389. package/src/styles/05-objects/_objects.container.scss +14 -10
  390. package/src/styles/05-objects/_objects.grid.scss +0 -0
  391. package/src/styles/05-objects/_objects.masonry-grid.scss +0 -0
  392. package/src/styles/06-components/_components.accordion.scss +3 -1
  393. package/src/styles/06-components/_components.avatar-group.scss +0 -0
  394. package/src/styles/06-components/_components.avatar.scss +0 -0
  395. package/src/styles/06-components/_components.badge.scss +9 -9
  396. package/src/styles/06-components/_components.breadcrumb.scss +0 -0
  397. package/src/styles/06-components/_components.btn-group.scss +0 -0
  398. package/src/styles/06-components/_components.button.scss +0 -0
  399. package/src/styles/06-components/_components.callout.scss +2 -1
  400. package/src/styles/06-components/_components.card.scss +0 -1
  401. package/src/styles/06-components/_components.chart.scss +2102 -0
  402. package/src/styles/06-components/_components.checkbox-group.scss +0 -0
  403. package/src/styles/06-components/_components.checkbox.scss +0 -0
  404. package/src/styles/06-components/_components.color-mode-toggle.scss +0 -0
  405. package/src/styles/06-components/_components.countdown.scss +0 -0
  406. package/src/styles/06-components/_components.data-table.scss +0 -0
  407. package/src/styles/06-components/_components.datepicker.scss +0 -0
  408. package/src/styles/06-components/_components.dropdown.scss +0 -0
  409. package/src/styles/06-components/_components.edge-panel.scss +0 -0
  410. package/src/styles/06-components/_components.form-group.scss +0 -0
  411. package/src/styles/06-components/_components.form.scss +0 -0
  412. package/src/styles/06-components/_components.hero.scss +1 -0
  413. package/src/styles/06-components/_components.icon.scss +2 -2
  414. package/src/styles/06-components/_components.image-gallery.scss +0 -0
  415. package/src/styles/06-components/_components.input.scss +0 -0
  416. package/src/styles/06-components/_components.list-group.scss +0 -0
  417. package/src/styles/06-components/_components.list.scss +0 -0
  418. package/src/styles/06-components/_components.menu.scss +0 -0
  419. package/src/styles/06-components/_components.messages.scss +0 -0
  420. package/src/styles/06-components/_components.modal.scss +3 -0
  421. package/src/styles/06-components/_components.nav.scss +0 -0
  422. package/src/styles/06-components/_components.navbar.scss +0 -0
  423. package/src/styles/06-components/_components.pagination.scss +0 -0
  424. package/src/styles/06-components/_components.photoviewer.scss +603 -545
  425. package/src/styles/06-components/_components.popover.scss +0 -0
  426. package/src/styles/06-components/_components.product-review.scss +0 -0
  427. package/src/styles/06-components/_components.progress.scss +0 -0
  428. package/src/styles/06-components/_components.rating.scss +0 -0
  429. package/src/styles/06-components/_components.river.scss +0 -0
  430. package/src/styles/06-components/_components.sectionintro.scss +0 -0
  431. package/src/styles/06-components/_components.select.scss +0 -0
  432. package/src/styles/06-components/_components.side-menu.scss +0 -0
  433. package/src/styles/06-components/_components.skeleton.scss +0 -0
  434. package/src/styles/06-components/_components.slider.scss +273 -0
  435. package/src/styles/06-components/_components.spinner.scss +0 -0
  436. package/src/styles/06-components/_components.steps.scss +1 -0
  437. package/src/styles/06-components/_components.tabs.scss +0 -0
  438. package/src/styles/06-components/_components.testimonials.scss +0 -0
  439. package/src/styles/06-components/_components.todo.scss +0 -0
  440. package/src/styles/06-components/_components.toggle.scss +0 -0
  441. package/src/styles/06-components/_components.tooltip.scss +4 -9
  442. package/src/styles/06-components/_components.upload.scss +0 -0
  443. package/src/styles/06-components/_components.video-player.scss +623 -0
  444. package/src/styles/06-components/_index.scss +3 -0
  445. package/src/styles/06-components/old.chart.styles.scss +2819 -0
  446. package/src/styles/99-utilities/_index.scss +0 -0
  447. package/src/styles/99-utilities/_utilities.background.scss +0 -0
  448. package/src/styles/99-utilities/_utilities.border.scss +0 -0
  449. package/src/styles/99-utilities/_utilities.clearfix.scss +0 -0
  450. package/src/styles/99-utilities/_utilities.display.scss +0 -0
  451. package/src/styles/99-utilities/_utilities.flex.scss +0 -0
  452. package/src/styles/99-utilities/_utilities.link.scss +0 -0
  453. package/src/styles/99-utilities/_utilities.object-fit.scss +0 -0
  454. package/src/styles/99-utilities/_utilities.opacity.scss +0 -0
  455. package/src/styles/99-utilities/_utilities.overflow.scss +0 -0
  456. package/src/styles/99-utilities/_utilities.position.scss +0 -0
  457. package/src/styles/99-utilities/_utilities.scss +2 -1
  458. package/src/styles/99-utilities/_utilities.shadow.scss +0 -0
  459. package/src/styles/99-utilities/_utilities.sizes.scss +0 -0
  460. package/src/styles/99-utilities/_utilities.spacing.scss +0 -0
  461. package/src/styles/99-utilities/_utilities.text.scss +5 -0
  462. package/src/styles/99-utilities/_utilities.visibility.scss +0 -0
  463. package/src/styles/99-utilities/_utilities.visually-hidden.scss +0 -0
  464. package/src/styles/99-utilities/_utilities.z-index.scss +0 -0
  465. package/src/styles/css-modules.d.ts +0 -0
  466. package/src/styles/index.scss +0 -0
  467. package/dist/index.css +0 -15
  468. package/dist/index.esm.css +0 -15
  469. package/dist/index.min.css +0 -15
@@ -0,0 +1,158 @@
1
+ import React from 'react';
2
+ import { StoryFn, Meta } from '@storybook/react';
3
+ import { fn } from '@storybook/test';
4
+ import { Steps } from './Steps';
5
+ import type { StepsProps } from './Steps';
6
+
7
+ export default {
8
+ title: 'Components/Steps',
9
+ component: Steps,
10
+ argTypes: {
11
+ activeIndex: {
12
+ control: { type: 'number' },
13
+ defaultValue: 1,
14
+ },
15
+ vertical: {
16
+ control: { type: 'boolean' },
17
+ defaultValue: false,
18
+ },
19
+ },
20
+ } as Meta<typeof Steps>;
21
+
22
+ const Template: StoryFn<typeof Steps> = args => (
23
+ <div style={{ padding: '30px' }}>
24
+ <Steps {...args} />
25
+ </div>
26
+ );
27
+
28
+ // Default horizontal steps
29
+ export const Default = Template.bind({});
30
+ Default.args = {
31
+ items: [
32
+ { number: 1, text: 'Step 1' },
33
+ { number: 2, text: 'Step 2' },
34
+ { number: 3, text: 'Step 3' },
35
+ { number: 4, text: 'Step 4' },
36
+ { number: 5, text: 'Step 5' },
37
+ ],
38
+ activeIndex: 1,
39
+ vertical: false,
40
+ };
41
+
42
+ // Vertical steps
43
+ export const Vertical = Template.bind({});
44
+ Vertical.args = {
45
+ items: [
46
+ { number: 1, text: 'Step 1' },
47
+ { number: 2, text: 'Step 2' },
48
+ { number: 3, text: 'Step 3' },
49
+ { number: 4, text: 'Step 4' },
50
+ { number: 5, text: 'Step 5' },
51
+ ],
52
+ activeIndex: 1,
53
+ vertical: true,
54
+ };
55
+
56
+ // Steps with custom content
57
+ export const WithCustomContent = Template.bind({});
58
+ WithCustomContent.args = {
59
+ items: [
60
+ {
61
+ number: 1,
62
+ text: 'Registration',
63
+ content: <p style={{ marginTop: '10px', fontSize: '0.85em' }}>Create your account</p>,
64
+ },
65
+ {
66
+ number: 2,
67
+ text: 'Personal Info',
68
+ content: <p style={{ marginTop: '10px', fontSize: '0.85em' }}>Tell us about yourself</p>,
69
+ },
70
+ {
71
+ number: 3,
72
+ text: 'Preferences',
73
+ content: <p style={{ marginTop: '10px', fontSize: '0.85em' }}>Select your preferences</p>,
74
+ },
75
+ {
76
+ number: 4,
77
+ text: 'Payment',
78
+ content: <p style={{ marginTop: '10px', fontSize: '0.85em' }}>Add payment information</p>,
79
+ },
80
+ {
81
+ number: 5,
82
+ text: 'Confirmation',
83
+ content: <p style={{ marginTop: '10px', fontSize: '0.85em' }}>Complete your signup</p>,
84
+ },
85
+ ],
86
+ activeIndex: 1,
87
+ vertical: false,
88
+ };
89
+
90
+ // Steps with custom icons instead of numbers
91
+ export const WithIcons = Template.bind({});
92
+ WithIcons.args = {
93
+ items: [
94
+ {
95
+ number: <i className="icon-lux-user" style={{ fontSize: '16px' }}></i>,
96
+ text: 'Account',
97
+ },
98
+ {
99
+ number: <i className="icon-lux-settings" style={{ fontSize: '16px' }}></i>,
100
+ text: 'Settings',
101
+ },
102
+ {
103
+ number: <i className="icon-lux-calendar" style={{ fontSize: '16px' }}></i>,
104
+ text: 'Schedule',
105
+ },
106
+ {
107
+ number: <i className="icon-lux-card" style={{ fontSize: '16px' }}></i>,
108
+ text: 'Payment',
109
+ },
110
+ {
111
+ number: <i className="icon-lux-check" style={{ fontSize: '16px' }}></i>,
112
+ text: 'Complete',
113
+ },
114
+ ],
115
+ activeIndex: 1,
116
+ vertical: false,
117
+ };
118
+
119
+ // Interactive steps with buttons for navigation
120
+ const InteractiveSteps: React.FC = () => {
121
+ const [activeStep, setActiveStep] = React.useState(0);
122
+
123
+ const items = [
124
+ { number: 1, text: 'Step 1' },
125
+ { number: 2, text: 'Step 2' },
126
+ { number: 3, text: 'Step 3' },
127
+ { number: 4, text: 'Step 4' },
128
+ { number: 5, text: 'Step 5' },
129
+ ];
130
+
131
+ return (
132
+ <div>
133
+ <Steps items={items} activeIndex={activeStep} onStepChange={setActiveStep} />
134
+ <div style={{ marginTop: '30px', display: 'flex', gap: '10px' }}>
135
+ <button
136
+ className="c-btn c-btn--primary"
137
+ onClick={() => setActiveStep(Math.max(0, activeStep - 1))}
138
+ disabled={activeStep === 0}
139
+ >
140
+ Previous
141
+ </button>
142
+ <button
143
+ className="c-btn c-btn--primary"
144
+ onClick={() => setActiveStep(Math.min(items.length - 1, activeStep + 1))}
145
+ disabled={activeStep === items.length - 1}
146
+ >
147
+ Next
148
+ </button>
149
+ </div>
150
+ </div>
151
+ );
152
+ };
153
+
154
+ export const Interactive: StoryFn<typeof Steps> = () => (
155
+ <div style={{ padding: '30px' }}>
156
+ <InteractiveSteps />
157
+ </div>
158
+ );
@@ -0,0 +1,115 @@
1
+ import React, { useEffect, useState, ReactNode } from 'react';
2
+ import { STEPS } from '../../lib/constants/components';
3
+
4
+ export interface StepItem {
5
+ /**
6
+ * The number for the step
7
+ */
8
+ number: number | string | ReactNode;
9
+
10
+ /**
11
+ * The text label for the step
12
+ */
13
+ text: string;
14
+
15
+ /**
16
+ * Optional custom content for the step
17
+ */
18
+ content?: React.ReactNode;
19
+ }
20
+
21
+ export interface StepsProps {
22
+ /**
23
+ * Array of step items
24
+ */
25
+ items: StepItem[];
26
+
27
+ /**
28
+ * Current active step index (0-based)
29
+ */
30
+ activeIndex?: number;
31
+
32
+ /**
33
+ * Whether to display steps vertically
34
+ */
35
+ vertical?: boolean;
36
+
37
+ /**
38
+ * Called when active step changes
39
+ */
40
+ onStepChange?: (index: number) => void;
41
+
42
+ /**
43
+ * Additional CSS class
44
+ */
45
+ className?: string;
46
+ }
47
+
48
+ /**
49
+ * Steps component for displaying a sequence of steps
50
+ */
51
+ export const Steps: React.FC<StepsProps> = ({
52
+ items,
53
+ activeIndex = 0,
54
+ vertical = false,
55
+ onStepChange,
56
+ className = '',
57
+ }) => {
58
+ const [currentStep, setCurrentStep] = useState(activeIndex);
59
+
60
+ // Update steps when activeIndex prop changes
61
+ useEffect(() => {
62
+ if (currentStep !== activeIndex) {
63
+ setCurrentStep(activeIndex);
64
+ }
65
+ }, [activeIndex]);
66
+
67
+ // Method to go to next step
68
+ const goToNextStep = () => {
69
+ const nextIndex = currentStep + 1;
70
+ if (nextIndex < items.length) {
71
+ setCurrentStep(nextIndex);
72
+ if (onStepChange) {
73
+ onStepChange(nextIndex);
74
+ }
75
+ }
76
+ };
77
+
78
+ // Method to go to previous step
79
+ const goToPreviousStep = () => {
80
+ const prevIndex = currentStep - 1;
81
+ if (prevIndex >= 0) {
82
+ setCurrentStep(prevIndex);
83
+ if (onStepChange) {
84
+ onStepChange(prevIndex);
85
+ }
86
+ }
87
+ };
88
+
89
+ return (
90
+ <div
91
+ className={`c-steps ${vertical ? STEPS.CLASSES.VERTICAL : ''} ${className}`}
92
+ role="navigation"
93
+ aria-label="Steps"
94
+ >
95
+ {items.map((item, index) => (
96
+ <div
97
+ key={`step-${index}`}
98
+ className={`c-steps__item ${index <= currentStep ? STEPS.CLASSES.ACTIVE : ''} ${index < currentStep ? STEPS.CLASSES.COMPLETED : ''}`}
99
+ aria-current={index === currentStep ? 'step' : undefined}
100
+ >
101
+ <div className="c-steps__line"></div>
102
+ <div className="c-steps__content">
103
+ <div className="c-steps__number">{item.number}</div>
104
+ <div className="c-steps__text">{item.text}</div>
105
+ {item.content && <div className="c-steps__custom-content">{item.content}</div>}
106
+ </div>
107
+ </div>
108
+ ))}
109
+ </div>
110
+ );
111
+ };
112
+
113
+ Steps.displayName = 'Steps';
114
+
115
+ export default Steps;
@@ -0,0 +1,3 @@
1
+ export { Steps } from './Steps';
2
+ export type { StepsProps, StepItem } from './Steps';
3
+ export { default } from './Steps';
@@ -0,0 +1,129 @@
1
+ import React from 'react';
2
+ import { StoryFn, Meta } from '@storybook/react';
3
+ import { fn } from '@storybook/test';
4
+ import { Tab } from './Tab';
5
+
6
+ export default {
7
+ title: 'Components/Tab',
8
+ component: Tab,
9
+ argTypes: {
10
+ activeIndex: {
11
+ control: { type: 'number' },
12
+ defaultValue: 0,
13
+ },
14
+ },
15
+ } as Meta<typeof Tab>;
16
+
17
+ const Template: StoryFn<typeof Tab> = args => (
18
+ <div style={{ maxWidth: '600px', margin: '0 auto', padding: '30px' }}>
19
+ <Tab {...args} />
20
+ </div>
21
+ );
22
+
23
+ export const Default = Template.bind({});
24
+ Default.args = {
25
+ items: [
26
+ {
27
+ label: 'Tab 1',
28
+ content: <p>This is the content for Tab 1. Default tab content.</p>,
29
+ },
30
+ {
31
+ label: 'Tab 2',
32
+ content: <p>This is the content for Tab 2. It contains different information.</p>,
33
+ },
34
+ {
35
+ label: 'Tab 3',
36
+ content: <p>This is the content for Tab 3. Another unique content section.</p>,
37
+ },
38
+ ],
39
+ activeIndex: 0,
40
+ };
41
+
42
+ export const WithDifferentActiveTab = Template.bind({});
43
+ WithDifferentActiveTab.args = {
44
+ items: [
45
+ {
46
+ label: 'Tab 1',
47
+ content: <p>This is the content for Tab 1.</p>,
48
+ },
49
+ {
50
+ label: 'Tab 2',
51
+ content: <p>This is the content for Tab 2. It's initially active.</p>,
52
+ },
53
+ {
54
+ label: 'Tab 3',
55
+ content: <p>This is the content for Tab 3.</p>,
56
+ },
57
+ ],
58
+ activeIndex: 1,
59
+ };
60
+
61
+ export const WithRichContent = Template.bind({});
62
+ WithRichContent.args = {
63
+ items: [
64
+ {
65
+ label: 'Features',
66
+ content: (
67
+ <div>
68
+ <h3>Key Features</h3>
69
+ <ul>
70
+ <li>Responsive design</li>
71
+ <li>Accessible navigation</li>
72
+ <li>Smooth transitions</li>
73
+ </ul>
74
+ </div>
75
+ ),
76
+ },
77
+ {
78
+ label: 'Specifications',
79
+ content: (
80
+ <div>
81
+ <h3>Technical Specifications</h3>
82
+ <table style={{ width: '100%', borderCollapse: 'collapse' }}>
83
+ <thead>
84
+ <tr>
85
+ <th style={{ border: '1px solid #ddd', padding: '8px', textAlign: 'left' }}>
86
+ Property
87
+ </th>
88
+ <th style={{ border: '1px solid #ddd', padding: '8px', textAlign: 'left' }}>
89
+ Value
90
+ </th>
91
+ </tr>
92
+ </thead>
93
+ <tbody>
94
+ <tr>
95
+ <td style={{ border: '1px solid #ddd', padding: '8px' }}>Size</td>
96
+ <td style={{ border: '1px solid #ddd', padding: '8px' }}>Medium</td>
97
+ </tr>
98
+ <tr>
99
+ <td style={{ border: '1px solid #ddd', padding: '8px' }}>Material</td>
100
+ <td style={{ border: '1px solid #ddd', padding: '8px' }}>Aluminum</td>
101
+ </tr>
102
+ </tbody>
103
+ </table>
104
+ </div>
105
+ ),
106
+ },
107
+ {
108
+ label: 'Reviews',
109
+ content: (
110
+ <div>
111
+ <h3>Customer Reviews</h3>
112
+ <div style={{ padding: '10px', marginBottom: '10px', backgroundColor: '#f9f9f9' }}>
113
+ <p style={{ marginBottom: '5px' }}>
114
+ <strong>John D.</strong> ★★★★★
115
+ </p>
116
+ <p>Great product, highly recommended!</p>
117
+ </div>
118
+ <div style={{ padding: '10px', backgroundColor: '#f9f9f9' }}>
119
+ <p style={{ marginBottom: '5px' }}>
120
+ <strong>Sarah T.</strong> ★★★★☆
121
+ </p>
122
+ <p>Very good quality and fast shipping.</p>
123
+ </div>
124
+ </div>
125
+ ),
126
+ },
127
+ ],
128
+ activeIndex: 0,
129
+ };
@@ -0,0 +1,111 @@
1
+ import React, { useState, ReactNode } from 'react';
2
+ import { TAB } from '../../lib/constants/components';
3
+
4
+ export interface TabItemProps {
5
+ /**
6
+ * Label for the tab
7
+ */
8
+ label: string;
9
+
10
+ /**
11
+ * Content of the tab panel
12
+ */
13
+ content: ReactNode;
14
+
15
+ /**
16
+ * Whether the tab is initially active
17
+ */
18
+ isActive?: boolean;
19
+
20
+ /**
21
+ * Additional CSS class for the tab
22
+ */
23
+ className?: string;
24
+ }
25
+
26
+ export interface TabProps {
27
+ /**
28
+ * Array of tab items
29
+ */
30
+ items: TabItemProps[];
31
+
32
+ /**
33
+ * Initial active tab index
34
+ */
35
+ activeIndex?: number;
36
+
37
+ /**
38
+ * Callback when tab changes
39
+ */
40
+ onTabChange?: (index: number) => void;
41
+
42
+ /**
43
+ * Additional CSS class for the tab component
44
+ */
45
+ className?: string;
46
+ }
47
+
48
+ /**
49
+ * Tab component for switching between different content panels
50
+ */
51
+ export const Tab: React.FC<TabProps> = ({
52
+ items,
53
+ activeIndex = TAB.DEFAULTS.ACTIVE_INDEX,
54
+ onTabChange,
55
+ className = '',
56
+ }) => {
57
+ const [currentTab, setCurrentTab] = useState(activeIndex);
58
+
59
+ // Handle tab change
60
+ const handleTabClick = (index: number) => {
61
+ setCurrentTab(index);
62
+ if (onTabChange) {
63
+ onTabChange(index);
64
+ }
65
+ };
66
+
67
+ return (
68
+ <div className={`c-tabs js-atomix-tab ${className}`}>
69
+ <ul className="c-tabs__nav">
70
+ {items.map((item, index) => (
71
+ <li className="c-tabs__nav-item" key={`tab-nav-${index}`}>
72
+ <button
73
+ className={`c-tabs__nav-btn ${index === currentTab ? TAB.CLASSES.ACTIVE : ''}`}
74
+ onClick={() => handleTabClick(index)}
75
+ data-tabindex={index}
76
+ role="tab"
77
+ aria-selected={index === currentTab}
78
+ aria-controls={`tab-panel-${index}`}
79
+ >
80
+ {item.label}
81
+ </button>
82
+ </li>
83
+ ))}
84
+ </ul>
85
+ <div className="c-tabs__panels">
86
+ {items.map((item, index) => (
87
+ <div
88
+ className={`c-tabs__panel ${index === currentTab ? TAB.CLASSES.ACTIVE : ''}`}
89
+ key={`tab-panel-${index}`}
90
+ data-tabindex={index}
91
+ id={`tab-panel-${index}`}
92
+ role="tabpanel"
93
+ aria-labelledby={`tab-nav-${index}`}
94
+ style={{
95
+ height: index === currentTab ? 'auto' : '0px',
96
+ opacity: index === currentTab ? 1 : 0,
97
+ overflow: 'hidden',
98
+ transition: 'height 0.3s ease, opacity 0.3s ease',
99
+ }}
100
+ >
101
+ <div className="c-tabs__panel-body">{item.content}</div>
102
+ </div>
103
+ ))}
104
+ </div>
105
+ </div>
106
+ );
107
+ };
108
+
109
+ Tab.displayName = 'Tab';
110
+
111
+ export default Tab;
@@ -0,0 +1,2 @@
1
+ export { Tab } from './Tab';
2
+ export type { TabProps, TabItemProps } from './Tab';
@@ -0,0 +1,180 @@
1
+ import React from 'react';
2
+ import { StoryFn, Meta } from '@storybook/react';
3
+ import { Testimonial } from './Testimonial';
4
+ import type { TestimonialProps } from './Testimonial';
5
+
6
+ export default {
7
+ title: 'Components/Testimonial',
8
+ component: Testimonial,
9
+ argTypes: {
10
+ size: {
11
+ control: { type: 'select', options: ['', 'sm', 'lg'] },
12
+ defaultValue: '',
13
+ },
14
+ skeleton: {
15
+ control: { type: 'boolean' },
16
+ defaultValue: false,
17
+ },
18
+ },
19
+ } as Meta<typeof Testimonial>;
20
+
21
+ const Template: StoryFn<typeof Testimonial> = args => (
22
+ <div style={{ padding: '30px' }}>
23
+ <Testimonial {...args} />
24
+ </div>
25
+ );
26
+
27
+ // Default testimonial
28
+ export const Default = Template.bind({});
29
+ Default.args = {
30
+ quote:
31
+ 'The intuitive interface, seamless syncing across devices, and helpful features have made me more productive than ever before.',
32
+ author: {
33
+ name: 'Emily Rodriguez',
34
+ role: 'Software Engineer, Acme',
35
+ avatarSrc:
36
+ 'https://images.unsplash.com/photo-1500648767791-00dcc994a43e?q=80&w=3000&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D',
37
+ avatarAlt: 'Emily Rodriguez',
38
+ },
39
+ size: '',
40
+ };
41
+
42
+ // Large testimonial
43
+ export const Large = Template.bind({});
44
+ Large.args = {
45
+ quote:
46
+ 'The intuitive interface, seamless syncing across devices, and helpful features have made me more productive than ever before.',
47
+ author: {
48
+ name: 'Emily Rodriguez',
49
+ role: 'Software Engineer, Acme',
50
+ avatarSrc:
51
+ 'https://images.unsplash.com/photo-1500648767791-00dcc994a43e?q=80&w=3000&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D',
52
+ avatarAlt: 'Emily Rodriguez',
53
+ },
54
+ size: 'lg',
55
+ };
56
+
57
+ // Small testimonial
58
+ export const Small = Template.bind({});
59
+ Small.args = {
60
+ quote:
61
+ 'The intuitive interface, seamless syncing across devices, and helpful features have made me more productive than ever before.',
62
+ author: {
63
+ name: 'Emily Rodriguez',
64
+ role: 'Software Engineer, Acme',
65
+ avatarSrc:
66
+ 'https://images.unsplash.com/photo-1500648767791-00dcc994a43e?q=80&w=3000&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D',
67
+ avatarAlt: 'Emily Rodriguez',
68
+ },
69
+ size: 'sm',
70
+ };
71
+
72
+ // Skeleton loading state
73
+ export const Skeleton = Template.bind({});
74
+ Skeleton.args = {
75
+ skeleton: true,
76
+ size: '',
77
+ };
78
+
79
+ // Large skeleton
80
+ export const LargeSkeleton = Template.bind({});
81
+ LargeSkeleton.args = {
82
+ skeleton: true,
83
+ size: 'lg',
84
+ };
85
+
86
+ // With rich content in quote
87
+ export const RichContent = Template.bind({});
88
+ RichContent.args = {
89
+ quote: (
90
+ <>
91
+ <p>"I feel more in charge of my schedule and less overwhelmed. Highly recommended for</p>
92
+ <p>professionals and anyone aiming to enhance their productivity."</p>
93
+ </>
94
+ ),
95
+ author: {
96
+ name: 'John Smith',
97
+ role: 'Product Manager, XYZ Corp',
98
+ avatarSrc:
99
+ 'https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?q=80&w=3000&auto=format&fit=crop&ixlib=rb-4.0.3',
100
+ avatarAlt: 'John Smith',
101
+ },
102
+ };
103
+
104
+ // Grid of testimonials
105
+ const TestimonialGrid: React.FC = () => {
106
+ return (
107
+ <div className="o-container">
108
+ <div className="o-grid">
109
+ <div className="o-grid__col o-grid__col--4">
110
+ <Testimonial
111
+ size="sm"
112
+ quote="The intuitive interface, seamless syncing across devices, and helpful features have made me more productive than ever before."
113
+ author={{
114
+ name: 'Emily Rodriguez',
115
+ role: 'Software Engineer, Acme',
116
+ avatarSrc:
117
+ 'https://images.unsplash.com/photo-1500648767791-00dcc994a43e?q=80&w=3000&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D',
118
+ avatarAlt: 'Emily Rodriguez',
119
+ }}
120
+ />
121
+ </div>
122
+ <div className="o-grid__col o-grid__col--4">
123
+ <Testimonial
124
+ size="sm"
125
+ quote="I feel more in charge of my schedule and less overwhelmed. Highly recommended for professionals and anyone aiming to enhance their productivity."
126
+ author={{
127
+ name: 'John Smith',
128
+ role: 'Product Manager, XYZ Corp',
129
+ avatarSrc:
130
+ 'https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?q=80&w=3000&auto=format&fit=crop&ixlib=rb-4.0.3',
131
+ avatarAlt: 'John Smith',
132
+ }}
133
+ />
134
+ </div>
135
+ <div className="o-grid__col o-grid__col--4">
136
+ <Testimonial
137
+ size="sm"
138
+ quote="I've tried numerous productivity apps in the past, but this one truly stands out. It strikes the perfect balance between simplicity and functionality."
139
+ author={{
140
+ name: 'Sarah Johnson',
141
+ role: 'Marketing Director, ABC Inc',
142
+ avatarSrc:
143
+ 'https://images.unsplash.com/photo-1544005313-94ddf0286df2?q=80&w=3000&auto=format&fit=crop&ixlib=rb-4.0.3',
144
+ avatarAlt: 'Sarah Johnson',
145
+ }}
146
+ />
147
+ </div>
148
+ </div>
149
+ </div>
150
+ );
151
+ };
152
+
153
+ export const TestimonialGridLayout: StoryFn<typeof Testimonial> = () => <TestimonialGrid />;
154
+
155
+ // Testimonial with image
156
+ const TestimonialWithImage: React.FC = () => {
157
+ return (
158
+ <div className="o-container">
159
+ <div className="o-grid u-align-items-center">
160
+ <div className="o-grid__col o-grid__col--6">
161
+ <Testimonial
162
+ quote="The intuitive interface, seamless syncing across devices, and helpful features have made me more productive than ever before."
163
+ author={{
164
+ name: 'Emily Rodriguez',
165
+ role: 'Software Engineer, Acme',
166
+ avatarSrc:
167
+ 'https://images.unsplash.com/photo-1500648767791-00dcc994a43e?q=80&w=3000&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D',
168
+ avatarAlt: 'Emily Rodriguez',
169
+ }}
170
+ />
171
+ </div>
172
+ <div className="o-grid__col o-grid__col--6">
173
+ <img src="https://unsplash.it/g/727/250" alt="Image" className="c-river__image" />
174
+ </div>
175
+ </div>
176
+ </div>
177
+ );
178
+ };
179
+
180
+ export const WithImage: StoryFn<typeof Testimonial> = () => <TestimonialWithImage />;