@shohojdhara/atomix 0.3.14 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (343) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/build-tools/EXAMPLES.md +372 -0
  3. package/build-tools/README.md +242 -0
  4. package/build-tools/__tests__/error-handler.test.js +230 -0
  5. package/build-tools/__tests__/index.test.js +141 -0
  6. package/build-tools/__tests__/rollup-plugin.test.js +194 -0
  7. package/build-tools/__tests__/utils.test.js +161 -0
  8. package/build-tools/__tests__/vite-plugin.test.js +129 -0
  9. package/build-tools/__tests__/webpack-loader.test.js +190 -0
  10. package/build-tools/error-handler.js +308 -0
  11. package/build-tools/index.d.ts +44 -0
  12. package/build-tools/index.js +88 -0
  13. package/build-tools/package.json +50 -0
  14. package/build-tools/rollup-plugin.js +236 -0
  15. package/build-tools/types.d.ts +163 -0
  16. package/build-tools/utils.js +203 -0
  17. package/build-tools/vite-plugin.js +161 -0
  18. package/build-tools/webpack-loader.js +123 -0
  19. package/dist/atomix.css +21044 -2618
  20. package/dist/atomix.css.map +1 -1
  21. package/dist/atomix.min.css +77 -3
  22. package/dist/atomix.min.css.map +1 -1
  23. package/dist/build-tools/EXAMPLES.md +372 -0
  24. package/dist/build-tools/README.md +242 -0
  25. package/dist/build-tools/__tests__/error-handler.test.js +230 -0
  26. package/dist/build-tools/__tests__/index.test.js +141 -0
  27. package/dist/build-tools/__tests__/rollup-plugin.test.js +194 -0
  28. package/dist/build-tools/__tests__/utils.test.js +161 -0
  29. package/dist/build-tools/__tests__/vite-plugin.test.js +129 -0
  30. package/dist/build-tools/__tests__/webpack-loader.test.js +190 -0
  31. package/dist/build-tools/error-handler.js +308 -0
  32. package/dist/build-tools/index.d.ts +44 -0
  33. package/dist/build-tools/index.js +88 -0
  34. package/dist/build-tools/package.json +50 -0
  35. package/dist/build-tools/rollup-plugin.js +236 -0
  36. package/dist/build-tools/types.d.ts +163 -0
  37. package/dist/build-tools/utils.js +203 -0
  38. package/dist/build-tools/vite-plugin.js +161 -0
  39. package/dist/build-tools/webpack-loader.js +123 -0
  40. package/dist/charts.d.ts +1 -1
  41. package/dist/charts.js +86 -57
  42. package/dist/charts.js.map +1 -1
  43. package/dist/core.d.ts +1 -1
  44. package/dist/core.js +136 -112
  45. package/dist/core.js.map +1 -1
  46. package/dist/forms.d.ts +2 -5
  47. package/dist/forms.js +140 -128
  48. package/dist/forms.js.map +1 -1
  49. package/dist/heavy.d.ts +1 -1
  50. package/dist/heavy.js +136 -112
  51. package/dist/heavy.js.map +1 -1
  52. package/dist/index.d.ts +152 -78
  53. package/dist/index.esm.js +346 -340
  54. package/dist/index.esm.js.map +1 -1
  55. package/dist/index.js +359 -353
  56. package/dist/index.js.map +1 -1
  57. package/dist/index.min.js +1 -1
  58. package/dist/index.min.js.map +1 -1
  59. package/dist/layout.js.map +1 -1
  60. package/dist/theme.d.ts +9 -9
  61. package/dist/theme.js.map +1 -1
  62. package/package.json +23 -8
  63. package/scripts/atomix-cli.js +170 -73
  64. package/scripts/cli/__tests__/README.md +81 -0
  65. package/scripts/cli/__tests__/basic.test.js +115 -0
  66. package/scripts/cli/__tests__/component-generator.test.js +332 -0
  67. package/scripts/cli/__tests__/integration.test.js +327 -0
  68. package/scripts/cli/__tests__/test-setup.js +133 -0
  69. package/scripts/cli/__tests__/token-manager.test.js +251 -0
  70. package/scripts/cli/__tests__/utils.test.js +161 -0
  71. package/scripts/cli/component-generator.js +253 -299
  72. package/scripts/cli/dependency-checker.js +355 -0
  73. package/scripts/cli/interactive-init.js +46 -5
  74. package/scripts/cli/template-manager.js +0 -2
  75. package/scripts/cli/templates/common-templates.js +636 -0
  76. package/scripts/cli/templates/composable-templates.js +148 -126
  77. package/scripts/cli/templates/index.js +23 -16
  78. package/scripts/cli/templates/project-templates.js +151 -23
  79. package/scripts/cli/templates/react-templates.js +280 -210
  80. package/scripts/cli/templates/scss-templates.js +90 -91
  81. package/scripts/cli/templates/testing-templates.js +206 -27
  82. package/scripts/cli/templates/testing-utils.js +278 -0
  83. package/scripts/cli/templates/types-templates.js +70 -56
  84. package/scripts/cli/theme-bridge.js +8 -2
  85. package/scripts/cli/token-manager.js +318 -206
  86. package/scripts/cli/utils.js +0 -1
  87. package/src/components/Accordion/Accordion.stories.tsx +358 -850
  88. package/src/components/Accordion/Accordion.test.tsx +70 -50
  89. package/src/components/Accordion/Accordion.tsx +99 -94
  90. package/src/components/AtomixGlass/AtomixGlass.test.tsx +1 -1
  91. package/src/components/AtomixGlass/AtomixGlass.tsx +80 -39
  92. package/src/components/AtomixGlass/AtomixGlassContainer.tsx +103 -81
  93. package/src/components/AtomixGlass/GlassFilter.tsx +9 -16
  94. package/src/components/AtomixGlass/__snapshots__/AtomixGlass.test.tsx.snap +8 -7
  95. package/src/components/AtomixGlass/glass-utils.ts +6 -5
  96. package/src/components/AtomixGlass/shader-utils.ts +133 -52
  97. package/src/components/AtomixGlass/stories/Customization.stories.tsx +131 -0
  98. package/src/components/AtomixGlass/stories/Examples.stories.tsx +2957 -2853
  99. package/src/components/AtomixGlass/stories/Modes.stories.tsx +1 -1
  100. package/src/components/AtomixGlass/stories/Overview.stories.tsx +348 -0
  101. package/src/components/AtomixGlass/stories/Performance.stories.tsx +103 -0
  102. package/src/components/AtomixGlass/stories/Playground.stories.tsx +51 -36
  103. package/src/components/AtomixGlass/stories/{ShaderVariants.stories.tsx → Shaders.stories.tsx} +2 -2
  104. package/src/components/AtomixGlass/stories/shared-components.tsx +90 -190
  105. package/src/components/Avatar/Avatar.stories.tsx +195 -0
  106. package/src/components/Avatar/Avatar.tsx +58 -56
  107. package/src/components/Badge/Badge.stories.tsx +122 -352
  108. package/src/components/Badge/Badge.test.tsx +41 -41
  109. package/src/components/Badge/Badge.tsx +64 -62
  110. package/src/components/Block/Block.stories.tsx +30 -11
  111. package/src/components/Breadcrumb/Breadcrumb.stories.tsx +142 -23
  112. package/src/components/Breadcrumb/Breadcrumb.tsx +62 -60
  113. package/src/components/Button/Button.stories.tsx +454 -1126
  114. package/src/components/Button/Button.test.tsx +123 -0
  115. package/src/components/Button/Button.tsx +88 -60
  116. package/src/components/Button/ButtonGroup.stories.tsx +376 -215
  117. package/src/components/Button/ButtonGroup.tsx +4 -15
  118. package/src/components/Callout/Callout.stories.tsx +316 -568
  119. package/src/components/Card/Card.stories.tsx +292 -81
  120. package/src/components/Card/Card.tsx +30 -14
  121. package/src/components/Chart/AreaChart.tsx +1 -1
  122. package/src/components/Chart/CandlestickChart.tsx +23 -16
  123. package/src/components/Chart/Chart.stories.tsx +153 -16
  124. package/src/components/Chart/Chart.tsx +40 -44
  125. package/src/components/Chart/ChartRenderer.tsx +39 -12
  126. package/src/components/Chart/ChartToolbar.tsx +21 -5
  127. package/src/components/Chart/DonutChart.tsx +1 -1
  128. package/src/components/Chart/FunnelChart.tsx +4 -1
  129. package/src/components/Chart/GaugeChart.tsx +3 -1
  130. package/src/components/Chart/HeatmapChart.tsx +50 -37
  131. package/src/components/Chart/LineChart.tsx +3 -2
  132. package/src/components/Chart/MultiAxisChart.tsx +24 -16
  133. package/src/components/Chart/RadarChart.tsx +19 -17
  134. package/src/components/Chart/ScatterChart.tsx +29 -21
  135. package/src/components/ColorModeToggle/ColorModeToggle.stories.tsx +152 -66
  136. package/src/components/ColorModeToggle/ColorModeToggle.tsx +15 -3
  137. package/src/components/Countdown/Countdown.stories.tsx +114 -7
  138. package/src/components/DataTable/DataTable.stories.tsx +349 -144
  139. package/src/components/DataTable/DataTable.test.tsx +26 -148
  140. package/src/components/DataTable/DataTable.tsx +485 -456
  141. package/src/components/DatePicker/DatePicker.stories.tsx +310 -1066
  142. package/src/components/DatePicker/DatePicker.tsx +31 -26
  143. package/src/components/Dropdown/Dropdown.stories.tsx +153 -36
  144. package/src/components/Dropdown/Dropdown.tsx +313 -299
  145. package/src/components/EdgePanel/EdgePanel.stories.tsx +221 -25
  146. package/src/components/EdgePanel/EdgePanel.tsx +1 -3
  147. package/src/components/Footer/Footer.stories.tsx +396 -327
  148. package/src/components/Footer/Footer.tsx +130 -128
  149. package/src/components/Footer/FooterLink.tsx +2 -2
  150. package/src/components/Form/Checkbox.stories.tsx +140 -6
  151. package/src/components/Form/Checkbox.test.tsx +63 -0
  152. package/src/components/Form/Checkbox.tsx +122 -78
  153. package/src/components/Form/Form.stories.tsx +110 -19
  154. package/src/components/Form/FormGroup.stories.tsx +127 -4
  155. package/src/components/Form/Input.stories.tsx +22 -39
  156. package/src/components/Form/Input.test.tsx +38 -44
  157. package/src/components/Form/Radio.stories.tsx +146 -17
  158. package/src/components/Form/Radio.tsx +68 -66
  159. package/src/components/Form/Select.stories.tsx +140 -8
  160. package/src/components/Form/Select.tsx +184 -182
  161. package/src/components/Form/Textarea.stories.tsx +149 -6
  162. package/src/components/Form/Textarea.test.tsx +27 -32
  163. package/src/components/Hero/Hero.stories.tsx +372 -38
  164. package/src/components/Hero/Hero.tsx +201 -55
  165. package/src/components/Icon/index.ts +7 -1
  166. package/src/components/List/List.stories.tsx +141 -3
  167. package/src/components/List/List.tsx +19 -23
  168. package/src/components/Modal/Modal.stories.tsx +183 -43
  169. package/src/components/Modal/Modal.tsx +130 -127
  170. package/src/components/Navigation/Menu/MegaMenu.tsx +70 -70
  171. package/src/components/Navigation/Nav/NavDropdown.tsx +1 -5
  172. package/src/components/Navigation/SideMenu/SideMenu.stories.tsx +128 -28
  173. package/src/components/Navigation/SideMenu/SideMenu.tsx +5 -7
  174. package/src/components/Navigation/SideMenu/SideMenuItem.tsx +4 -5
  175. package/src/components/Pagination/Pagination.stories.tsx +7 -4
  176. package/src/components/Pagination/Pagination.tsx +199 -202
  177. package/src/components/PhotoViewer/PhotoViewer.tsx +4 -1
  178. package/src/components/Popover/Popover.stories.tsx +354 -97
  179. package/src/components/Popover/Popover.tsx +41 -37
  180. package/src/components/Progress/Progress.stories.tsx +160 -7
  181. package/src/components/River/River.stories.tsx +3 -2
  182. package/src/components/SectionIntro/SectionIntro.stories.tsx +239 -47
  183. package/src/components/Slider/Slider.stories.tsx +12 -4
  184. package/src/components/Spinner/Spinner.stories.tsx +104 -8
  185. package/src/components/Spinner/Spinner.test.tsx +23 -23
  186. package/src/components/Spinner/Spinner.tsx +43 -46
  187. package/src/components/Steps/Steps.stories.tsx +173 -42
  188. package/src/components/Tabs/Tabs.stories.tsx +141 -12
  189. package/src/components/Tabs/Tabs.tsx +74 -72
  190. package/src/components/Testimonial/Testimonial.stories.tsx +120 -3
  191. package/src/components/Todo/Todo.stories.tsx +198 -9
  192. package/src/components/Toggle/Toggle.stories.tsx +137 -36
  193. package/src/components/Toggle/Toggle.test.tsx +65 -70
  194. package/src/components/Toggle/Toggle.tsx +4 -1
  195. package/src/components/Tooltip/Tooltip.stories.tsx +194 -100
  196. package/src/components/Tooltip/Tooltip.tsx +104 -106
  197. package/src/components/Upload/Upload.stories.tsx +241 -150
  198. package/src/components/Upload/Upload.tsx +287 -283
  199. package/src/components/VideoPlayer/VideoPlayer.tsx +6 -1
  200. package/src/components/index.ts +13 -2
  201. package/src/layouts/Grid/Grid.stories.tsx +9 -3
  202. package/src/layouts/MasonryGrid/MasonryGrid.tsx +5 -1
  203. package/src/lib/README.md +2 -2
  204. package/src/lib/__tests__/theme-tools.test.ts +219 -0
  205. package/src/lib/composables/index.ts +2 -2
  206. package/src/lib/composables/shared-mouse-tracker.ts +13 -14
  207. package/src/lib/composables/useAtomixGlass.ts +126 -97
  208. package/src/lib/composables/useChartExport.ts +3 -8
  209. package/src/lib/composables/useDataTable.ts +72 -43
  210. package/src/lib/composables/useHero.ts +58 -14
  211. package/src/lib/composables/useHeroBackgroundSlider.ts +2 -9
  212. package/src/lib/composables/useInput.ts +10 -8
  213. package/src/lib/composables/useSideMenu.ts +6 -5
  214. package/src/lib/composables/useTooltip.ts +1 -2
  215. package/src/lib/composables/useVideoPlayer.ts +44 -35
  216. package/src/lib/config/index.ts +154 -154
  217. package/src/lib/constants/components.ts +9 -32
  218. package/src/lib/constants/cssVariables.ts +29 -29
  219. package/src/lib/hooks/__tests__/useComponentCustomization.test.ts +2 -6
  220. package/src/lib/hooks/index.ts +1 -1
  221. package/src/lib/hooks/useComponentCustomization.ts +11 -17
  222. package/src/lib/hooks/usePerformanceMonitor.ts +6 -7
  223. package/src/lib/patterns/__tests__/slots.test.ts +1 -1
  224. package/src/lib/patterns/index.ts +1 -1
  225. package/src/lib/patterns/slots.tsx +8 -13
  226. package/src/lib/storybook/InteractiveDemo.tsx +13 -18
  227. package/src/lib/storybook/PreviewContainer.tsx +1 -1
  228. package/src/lib/storybook/VariantsGrid.tsx +3 -7
  229. package/src/lib/storybook/index.ts +1 -1
  230. package/src/lib/theme/adapters/cssVariableMapper.ts +47 -74
  231. package/src/lib/theme/adapters/index.ts +3 -9
  232. package/src/lib/theme/adapters/themeAdapter.ts +41 -26
  233. package/src/lib/theme/config/index.ts +1 -1
  234. package/src/lib/theme/config/types.ts +2 -2
  235. package/src/lib/theme/config/validator.ts +10 -5
  236. package/src/lib/theme/constants/constants.ts +2 -2
  237. package/src/lib/theme/constants/index.ts +1 -2
  238. package/src/lib/theme/core/__tests__/createTheme.test.ts +20 -22
  239. package/src/lib/theme/core/composeTheme.ts +32 -26
  240. package/src/lib/theme/core/createTheme.ts +1 -1
  241. package/src/lib/theme/core/createThemeObject.ts +308 -301
  242. package/src/lib/theme/core/index.ts +3 -3
  243. package/src/lib/theme/devtools/CLI.ts +107 -105
  244. package/src/lib/theme/devtools/Comparator.tsx +50 -32
  245. package/src/lib/theme/devtools/DesignTokensCustomizer.stories.tsx +50 -48
  246. package/src/lib/theme/devtools/DesignTokensCustomizer.tsx +257 -63
  247. package/src/lib/theme/devtools/Inspector.tsx +75 -60
  248. package/src/lib/theme/devtools/LiveEditor.tsx +97 -76
  249. package/src/lib/theme/devtools/Preview.tsx +150 -106
  250. package/src/lib/theme/devtools/ThemeValidator.ts +29 -21
  251. package/src/lib/theme/devtools/index.ts +3 -9
  252. package/src/lib/theme/devtools/useHistory.ts +23 -21
  253. package/src/lib/theme/errors/errors.ts +12 -11
  254. package/src/lib/theme/errors/index.ts +2 -7
  255. package/src/lib/theme/generators/generateCSS.ts +9 -13
  256. package/src/lib/theme/generators/generateCSSNested.ts +1 -6
  257. package/src/lib/theme/generators/generateCSSVariables.ts +673 -630
  258. package/src/lib/theme/generators/index.ts +1 -4
  259. package/src/lib/theme/i18n/index.ts +1 -1
  260. package/src/lib/theme/i18n/rtl.ts +13 -13
  261. package/src/lib/theme/index.ts +7 -16
  262. package/src/lib/theme/runtime/ThemeApplicator.ts +4 -4
  263. package/src/lib/theme/runtime/ThemeContext.tsx +1 -1
  264. package/src/lib/theme/runtime/ThemeErrorBoundary.tsx +19 -23
  265. package/src/lib/theme/runtime/ThemeProvider.tsx +230 -239
  266. package/src/lib/theme/runtime/__tests__/ThemeProvider.integration.test.tsx +1 -1
  267. package/src/lib/theme/runtime/__tests__/ThemeProvider.test.tsx +24 -29
  268. package/src/lib/theme/runtime/index.ts +2 -5
  269. package/src/lib/theme/runtime/useTheme.ts +18 -18
  270. package/src/lib/theme/runtime/useThemeTokens.ts +22 -22
  271. package/src/lib/theme/test/testTheme.ts +15 -16
  272. package/src/lib/theme/tokens/index.ts +2 -7
  273. package/src/lib/theme/tokens/tokens.ts +25 -24
  274. package/src/lib/theme/types.ts +428 -411
  275. package/src/lib/theme/utils/__tests__/themeValidation.test.ts +3 -3
  276. package/src/lib/theme/utils/componentTheming.ts +18 -18
  277. package/src/lib/theme/utils/domUtils.ts +277 -289
  278. package/src/lib/theme/utils/index.ts +1 -2
  279. package/src/lib/theme/utils/injectCSS.ts +10 -14
  280. package/src/lib/theme/utils/naming.ts +20 -16
  281. package/src/lib/theme/utils/themeHelpers.ts +10 -12
  282. package/src/lib/theme/utils/themeUtils.ts +85 -86
  283. package/src/lib/theme/utils/themeValidation.ts +82 -33
  284. package/src/lib/theme-tools.ts +8 -6
  285. package/src/lib/types/components.ts +172 -71
  286. package/src/lib/types/partProps.ts +1 -1
  287. package/src/lib/utils/__tests__/csv.test.ts +45 -0
  288. package/src/lib/utils/componentUtils.ts +8 -12
  289. package/src/lib/utils/csv.ts +19 -0
  290. package/src/lib/utils/dataTableExport.ts +2 -15
  291. package/src/lib/utils/fontPreloader.ts +10 -19
  292. package/src/lib/utils/icons.ts +4 -1
  293. package/src/lib/utils/index.ts +2 -6
  294. package/src/lib/utils/memoryMonitor.ts +10 -8
  295. package/src/lib/utils/themeNaming.ts +2 -2
  296. package/src/styles/01-settings/_index.scss +1 -1
  297. package/src/styles/01-settings/_settings.accordion.scss +28 -7
  298. package/src/styles/01-settings/_settings.colors.scss +11 -11
  299. package/src/styles/01-settings/_settings.design-tokens.scss +61 -50
  300. package/src/styles/01-settings/_settings.navbar.scss +1 -1
  301. package/src/styles/01-settings/_settings.spacing.scss +3 -4
  302. package/src/styles/01-settings/_settings.tooltip.scss +1 -1
  303. package/src/styles/01-settings/_settings.typography.scss +4 -4
  304. package/src/styles/02-tools/_tools.button.scss +51 -21
  305. package/src/styles/02-tools/_tools.utility-api.scss +38 -12
  306. package/src/styles/03-generic/_generic.root.scss +4 -3
  307. package/src/styles/06-components/_components.accordion.scss +56 -14
  308. package/src/styles/06-components/_components.atomix-glass.scss +13 -9
  309. package/src/styles/06-components/_components.button.scss +16 -4
  310. package/src/styles/06-components/_components.callout.scss +27 -21
  311. package/src/styles/06-components/_components.card.scss +5 -14
  312. package/src/styles/06-components/_components.chart.scss +22 -19
  313. package/src/styles/06-components/_components.checkbox.scss +25 -17
  314. package/src/styles/06-components/_components.color-mode-toggle.scss +3 -1
  315. package/src/styles/06-components/_components.edge-panel.scss +9 -2
  316. package/src/styles/06-components/_components.footer.scss +1 -1
  317. package/src/styles/06-components/_components.side-menu.scss +5 -5
  318. package/src/styles/06-components/_components.toggle.scss +18 -0
  319. package/src/styles/06-components/_index.scss +1 -1
  320. package/src/styles/06-components/old.chart.styles.scss +0 -2
  321. package/src/styles/99-utilities/_index.scss +2 -0
  322. package/src/styles/99-utilities/_utilities.border.scss +69 -27
  323. package/src/styles/99-utilities/_utilities.display.scss +1 -1
  324. package/src/styles/99-utilities/_utilities.opacity.scss +10 -0
  325. package/src/styles/99-utilities/_utilities.position.scss +16 -9
  326. package/src/styles/99-utilities/_utilities.scss +2 -0
  327. package/src/styles/99-utilities/_utilities.sizes.scss +47 -18
  328. package/src/styles/99-utilities/_utilities.spacing.scss +118 -66
  329. package/src/styles/99-utilities/_utilities.text-gradient.scss +45 -0
  330. package/src/styles/99-utilities/_utilities.text.scss +67 -46
  331. package/themes/dark-complementary/README.md +98 -0
  332. package/themes/dark-complementary/index.scss +158 -0
  333. package/themes/default-light/README.md +81 -0
  334. package/themes/default-light/index.scss +154 -0
  335. package/themes/high-contrast/README.md +105 -0
  336. package/themes/high-contrast/index.scss +172 -0
  337. package/themes/test-theme/README.md +38 -0
  338. package/themes/test-theme/index.scss +47 -0
  339. package/scripts/cli/templates-original-backup.js +0 -1655
  340. package/scripts/cli/templates_backup.js +0 -684
  341. package/src/components/AtomixGlass/stories/AtomixGlass.stories.tsx +0 -1438
  342. package/src/lib/composables/useButton.ts +0 -93
  343. package/src/lib/composables/useCheckbox.ts +0 -70
@@ -1,17 +1,71 @@
1
1
  import React from 'react';
2
2
  import type { Meta, StoryObj } from '@storybook/react';
3
+ import { fn } from '@storybook/test';
3
4
  import { Progress } from './Progress';
4
5
  import { THEME_COLORS, SIZES } from '../../lib/constants/components';
5
6
 
6
- const meta = {
7
+ const meta: Meta<typeof Progress> = {
7
8
  title: 'Components/Progress',
8
9
  component: Progress,
9
10
  parameters: {
10
11
  layout: 'centered',
11
12
  docs: {
12
13
  description: {
13
- component:
14
- 'The Progress component displays the completion status of a task or process. It provides visual feedback on progress through a horizontal bar that fills based on a percentage value. Progress bars support multiple variants, sizes, and can be used to show loading states, form completion, or any incremental process.',
14
+ component: `
15
+ # Progress
16
+
17
+ ## Overview
18
+
19
+ Progress displays the completion status of a task or process. It provides visual feedback on progress through a horizontal bar that fills based on a percentage value. Progress bars support multiple variants, sizes, and can be used to show loading states, form completion, or any incremental process.
20
+
21
+ ## Features
22
+
23
+ - Multiple color variants (primary, secondary, success, warning, error, etc.)
24
+ - Multiple size options (sm, md, lg)
25
+ - Percentage-based value tracking
26
+ - Accessible design
27
+ - Responsive behavior
28
+ - Smooth transitions
29
+
30
+ ## Accessibility
31
+
32
+ - Screen reader: Progress value announced appropriately
33
+ - ARIA support: Proper roles and properties for progress bar
34
+ - Keyboard support: Accessible via keyboard navigation
35
+ - Focus management: Focus indicators maintained for interactive elements
36
+
37
+ ## Usage Examples
38
+
39
+ ### Basic Usage
40
+
41
+ \`\`\`tsx
42
+ <Progress value={50} />
43
+ \`\`\`
44
+
45
+ ### With Variant and Size
46
+
47
+ \`\`\`tsx
48
+ <Progress
49
+ value={75}
50
+ variant="success"
51
+ size="lg"
52
+ />
53
+ \`\`\`
54
+
55
+ ## API Reference
56
+
57
+ ### Props
58
+
59
+ | Prop | Type | Default | Description |
60
+ | ---- | ---- | ------- | ----------- |
61
+ | value | number | 0 | The progress value as a percentage (0-100) |
62
+ | variant | ThemeColor | 'primary' | The color variant of the progress bar |
63
+ | size | 'sm' \\| 'md' \\| 'lg' | 'md' | The size of the progress bar |
64
+ | animated | boolean | false | Whether to animate the progress bar |
65
+ | striped | boolean | false | Whether to apply striped styling |
66
+ | label | string | - | Optional label to display with the progress |
67
+ | max | number | 100 | The maximum value for the progress bar |
68
+ `,
15
69
  },
16
70
  },
17
71
  },
@@ -27,26 +81,125 @@ const meta = {
27
81
  value: {
28
82
  control: { type: 'range', min: 0, max: 100 },
29
83
  description: 'The progress value as a percentage (0-100)',
30
- defaultValue: 50,
84
+ table: {
85
+ type: { summary: 'number' },
86
+ defaultValue: { summary: '0' },
87
+ },
31
88
  },
32
89
  variant: {
33
90
  control: { type: 'select' },
34
91
  options: THEME_COLORS,
35
92
  description: 'The color variant of the progress bar',
36
- defaultValue: 'primary',
93
+ table: {
94
+ type: { summary: 'ThemeColor' },
95
+ defaultValue: { summary: 'primary' },
96
+ },
37
97
  },
38
98
  size: {
39
99
  control: { type: 'select' },
40
100
  options: SIZES,
41
101
  description: 'The size of the progress bar',
42
- defaultValue: 'md',
102
+ table: {
103
+ type: { summary: '"sm" | "md" | "lg"' },
104
+ defaultValue: { summary: 'md' },
105
+ },
43
106
  },
44
107
  },
45
- } satisfies Meta<typeof Progress>;
108
+ };
46
109
 
47
110
  export default meta;
48
111
  type Story = StoryObj<typeof meta>;
49
112
 
113
+ export const BasicUsage: Story = {
114
+ args: {
115
+ value: 50,
116
+ variant: 'primary',
117
+ size: 'md',
118
+ },
119
+ parameters: {
120
+ docs: {
121
+ description: {
122
+ story: 'Basic progress bar with default settings.',
123
+ },
124
+ },
125
+ },
126
+ };
127
+
128
+ export const AllVariants: Story = {
129
+ args: { value: 0 },
130
+ render: () => (
131
+ <div style={{ display: 'flex', flexDirection: 'column', gap: '1rem', width: '100%' }}>
132
+ <div>
133
+ <strong>Primary:</strong> <Progress value={75} variant="primary" />
134
+ </div>
135
+ <div>
136
+ <strong>Secondary:</strong> <Progress value={60} variant="secondary" />
137
+ </div>
138
+ <div>
139
+ <strong>Success:</strong> <Progress value={100} variant="success" />
140
+ </div>
141
+ <div>
142
+ <strong>Warning:</strong> <Progress value={45} variant="warning" />
143
+ </div>
144
+ <div>
145
+ <strong>Error:</strong> <Progress value={30} variant="error" />
146
+ </div>
147
+ </div>
148
+ ),
149
+ parameters: {
150
+ docs: {
151
+ description: {
152
+ story: 'Progress bars with all available color variants.',
153
+ },
154
+ },
155
+ },
156
+ };
157
+
158
+ export const AllSizes: Story = {
159
+ args: { value: 0 },
160
+ render: () => (
161
+ <div style={{ display: 'flex', flexDirection: 'column', gap: '1rem', width: '100%' }}>
162
+ <div>
163
+ <strong>Small:</strong> <Progress value={60} size="sm" />
164
+ </div>
165
+ <div>
166
+ <strong>Medium:</strong> <Progress value={70} size="md" />
167
+ </div>
168
+ <div>
169
+ <strong>Large:</strong> <Progress value={80} size="lg" />
170
+ </div>
171
+ </div>
172
+ ),
173
+ parameters: {
174
+ docs: {
175
+ description: {
176
+ story: 'Progress bars with all available sizes.',
177
+ },
178
+ },
179
+ },
180
+ };
181
+
182
+ export const WithLabel: Story = {
183
+ args: {
184
+ value: 75,
185
+ variant: 'primary',
186
+ size: 'md',
187
+ },
188
+ render: args => (
189
+ <div style={{ display: 'flex', flexDirection: 'column', gap: '8px' }}>
190
+ <label>Processing files: 75%</label>
191
+ <Progress {...args} />
192
+ </div>
193
+ ),
194
+ parameters: {
195
+ docs: {
196
+ description: {
197
+ story: 'Progress bar with a label showing current value.',
198
+ },
199
+ },
200
+ },
201
+ };
202
+
50
203
  // Default Progress
51
204
  export const Default: Story = {
52
205
  args: {
@@ -172,7 +172,8 @@ export const ContentColumns: Story = {
172
172
  <div>
173
173
  <p className="c-river__text">
174
174
  Use content columns to create custom layouts with different types of content. This
175
- approach gives you more control over the structure and presentation of your information.
175
+ approach gives you more control over the structure and presentation of your
176
+ information.
176
177
  </p>
177
178
  <p className="c-river__text">
178
179
  Perfect for featuring important statistics, quotes, or highlighting key information
@@ -199,7 +200,7 @@ export const CustomTitle: Story = {
199
200
  </div>
200
201
  ),
201
202
  args: {
202
- title: <h1 className="c-river__title u-text-gradient">Custom Title with Gradient</h1>,
203
+ title: <h1 className="c-river__title u-text-gradient-primary">Custom Title with Gradient</h1>,
203
204
  text: 'The sun had set, leaving the sky painted in shades of orange and pink as the stars twinkled above. The air was filled with the sound of crickets and the rustle of leaves in the gentle breeze.',
204
205
  actions: (
205
206
  <a href="#" className="c-btn u-pl-0">
@@ -2,6 +2,7 @@ import type { Meta, StoryObj } from '@storybook/react';
2
2
  import { Button } from '../Button';
3
3
  import { SectionIntro } from './SectionIntro';
4
4
  import { SIZES } from '../../lib/constants/components';
5
+ import { fn } from '@storybook/test';
5
6
 
6
7
  const meta = {
7
8
  title: 'Components/SectionIntro',
@@ -17,33 +18,129 @@ const meta = {
17
18
  },
18
19
  tags: ['autodocs'],
19
20
  argTypes: {
20
- title: { control: 'text', description: 'Main title text' },
21
- label: { control: 'text', description: 'Label text displayed above the title' },
22
- text: { control: 'text', description: 'Description text content' },
21
+ title: {
22
+ control: 'text',
23
+ description: 'Main title text (supports ReactNode)',
24
+ table: {
25
+ type: { summary: 'ReactNode' },
26
+ defaultValue: { summary: 'undefined' },
27
+ },
28
+ },
29
+ label: {
30
+ control: 'text',
31
+ description: 'Label text displayed above the title (supports ReactNode)',
32
+ table: {
33
+ type: { summary: 'ReactNode' },
34
+ defaultValue: { summary: 'undefined' },
35
+ },
36
+ },
37
+ text: {
38
+ control: 'text',
39
+ description: 'Description text content (supports ReactNode)',
40
+ table: {
41
+ type: { summary: 'ReactNode' },
42
+ defaultValue: { summary: 'undefined' },
43
+ },
44
+ },
23
45
  alignment: {
24
- control: { type: 'select' },
46
+ control: { type: 'radio', options: ['left', 'center', 'right'] },
25
47
  options: ['left', 'center', 'right'],
26
48
  description: 'Text alignment',
49
+ table: {
50
+ type: { summary: '"left" | "center" | "right"' },
51
+ defaultValue: { summary: 'left' },
52
+ },
27
53
  },
28
54
  size: {
29
- control: { type: 'select' },
55
+ control: { type: 'radio', options: SIZES },
30
56
  options: SIZES,
31
57
  description: 'Size variant',
58
+ table: {
59
+ type: { summary: '"sm" | "md" | "lg"' },
60
+ defaultValue: { summary: 'md' },
61
+ },
62
+ },
63
+ skeleton: {
64
+ control: 'boolean',
65
+ description: 'Show skeleton loading state',
66
+ table: {
67
+ type: { summary: 'boolean' },
68
+ defaultValue: { summary: false },
69
+ },
70
+ },
71
+ showOverlay: {
72
+ control: 'boolean',
73
+ description: 'Whether to show an overlay on the background',
74
+ table: {
75
+ type: { summary: 'boolean' },
76
+ defaultValue: { summary: false },
77
+ },
78
+ },
79
+ actions: {
80
+ control: { type: 'text' },
81
+ description: 'Call to action elements (supports ReactNode)',
82
+ table: {
83
+ type: { summary: 'ReactNode' },
84
+ defaultValue: { summary: 'undefined' },
85
+ },
86
+ },
87
+ backgroundImageSrc: {
88
+ control: 'text',
89
+ description: 'URL for the background image',
90
+ table: {
91
+ type: { summary: 'string' },
92
+ defaultValue: { summary: 'undefined' },
93
+ },
94
+ },
95
+ imageSrc: {
96
+ control: 'text',
97
+ description: 'URL for the foreground image',
98
+ table: {
99
+ type: { summary: 'string' },
100
+ defaultValue: { summary: 'undefined' },
101
+ },
102
+ },
103
+ imageAlt: {
104
+ control: 'text',
105
+ description: 'Alt text for the image',
106
+ table: {
107
+ type: { summary: 'string' },
108
+ defaultValue: { summary: 'Section image' },
109
+ },
110
+ },
111
+ className: {
112
+ control: 'text',
113
+ description: 'Additional CSS class',
114
+ table: {
115
+ type: { summary: 'string' },
116
+ defaultValue: { summary: '' },
117
+ },
118
+ },
119
+ style: {
120
+ control: 'object',
121
+ description: 'Custom style object for the section intro',
122
+ table: {
123
+ type: { summary: 'CSSProperties' },
124
+ defaultValue: { summary: '{}' },
125
+ },
32
126
  },
33
- skeleton: { control: 'boolean' },
34
- showOverlay: { control: 'boolean' },
35
- actions: { control: false },
36
- backgroundImageSrc: { control: 'text' },
37
- imageSrc: { control: 'text' },
38
- imageAlt: { control: 'text', description: 'Alt text for the image' },
127
+ },
128
+ args: {
129
+ title: 'Our Mission',
130
+ label: 'About Us',
131
+ text: 'We are dedicated to creating beautiful, functional, and accessible components that help developers build amazing websites and applications.',
132
+ alignment: 'left',
133
+ size: 'md',
134
+ // Adding a mock function for any potential event handling
135
+ onClick: fn(),
39
136
  },
40
137
  } satisfies Meta<typeof SectionIntro>;
41
138
 
42
139
  export default meta;
43
140
  type Story = StoryObj<typeof meta>;
44
141
 
45
- // Default SectionIntro
46
- export const Default: Story = {
142
+ // Basic usage example
143
+ export const BasicUsage: Story = {
47
144
  args: {
48
145
  title: 'Our Mission',
49
146
  label: 'About Us',
@@ -51,89 +148,174 @@ export const Default: Story = {
51
148
  alignment: 'left',
52
149
  size: 'md',
53
150
  },
151
+ parameters: {
152
+ docs: {
153
+ description: {
154
+ story: 'Basic usage of the SectionIntro component with title, label, and text.',
155
+ },
156
+ },
157
+ },
54
158
  };
55
159
 
56
- // Left-aligned with actions
160
+ // With actions example
57
161
  export const WithActions: Story = {
58
162
  args: {
59
- ...Default.args,
163
+ title: 'Ready to get started?',
164
+ label: 'Take Action',
165
+ text: 'Join thousands of satisfied users who have transformed their workflow with our components.',
166
+ alignment: 'center',
167
+ size: 'md',
60
168
  actions: (
61
- <div className="u-flex u-gap-md">
62
- <Button label="Learn More" />
63
- <Button label="Contact Us" variant="secondary" />
169
+ <div className="u-flex u-gap-4">
170
+ <Button label="Get Started" />
171
+ <Button label="Learn More" variant="secondary" />
64
172
  </div>
65
173
  ),
66
174
  },
175
+ parameters: {
176
+ docs: {
177
+ description: {
178
+ story: 'SectionIntro with call-to-action buttons.',
179
+ },
180
+ },
181
+ },
67
182
  };
68
183
 
69
- // Center-aligned
70
- export const Centered: Story = {
184
+ // Center-aligned example
185
+ export const CenterAligned: Story = {
71
186
  args: {
72
- ...Default.args,
73
- alignment: 'center',
187
+ title: 'Discover Our Vision',
188
+ label: 'Our Vision',
74
189
  text: 'We are dedicated to creating beautiful, functional, and accessible components that help developers build amazing websites and applications.',
190
+ alignment: 'center',
191
+ size: 'md',
192
+ },
193
+ parameters: {
194
+ docs: {
195
+ description: {
196
+ story: 'Center-aligned SectionIntro content.',
197
+ },
198
+ },
75
199
  },
76
200
  };
77
201
 
78
- // Right-aligned
202
+ // Right-aligned example
79
203
  export const RightAligned: Story = {
80
204
  args: {
81
- ...Default.args,
82
- alignment: 'right',
205
+ title: 'Our Approach',
206
+ label: 'Methodology',
83
207
  text: 'We are dedicated to creating beautiful, functional, and accessible components that help developers build amazing websites and applications.',
208
+ alignment: 'right',
209
+ size: 'md',
210
+ },
211
+ parameters: {
212
+ docs: {
213
+ description: {
214
+ story: 'Right-aligned SectionIntro content.',
215
+ },
216
+ },
84
217
  },
85
218
  };
86
219
 
87
- // With background image
88
- export const WithBackground: Story = {
220
+ // With background image example
221
+ export const WithBackgroundImage: Story = {
89
222
  args: {
90
- ...Default.args,
91
- backgroundImageSrc:
92
- 'https://images.unsplash.com/photo-1557682250-33bd709cbe85?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=1470&q=80',
93
- showOverlay: true,
94
- alignment: 'center',
95
223
  title: 'Discover Our Vision',
96
224
  label: 'About Us',
97
225
  text: 'We are dedicated to creating beautiful, functional, and accessible components that help developers build amazing websites and applications.',
226
+ alignment: 'center',
227
+ size: 'md',
228
+ backgroundImageSrc:
229
+ 'https://images.unsplash.com/photo-1557682250-33bd709cbe85?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=1470&q=80',
230
+ showOverlay: true,
231
+ },
232
+ parameters: {
233
+ docs: {
234
+ description: {
235
+ story: 'SectionIntro with a background image and overlay.',
236
+ },
237
+ },
98
238
  },
99
239
  };
100
240
 
101
- // With image
102
- export const WithImage: Story = {
241
+ // With foreground image example
242
+ export const WithForegroundImage: Story = {
103
243
  args: {
104
- ...Default.args,
244
+ title: 'Team Collaboration',
245
+ label: 'Our Team',
246
+ text: 'We are dedicated to creating beautiful, functional, and accessible components that help developers build amazing websites and applications.',
247
+ alignment: 'left',
248
+ size: 'md',
105
249
  imageSrc:
106
250
  'https://images.unsplash.com/photo-1581291518633-83b4ebd1d83e?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=1470&q=80',
107
251
  imageAlt: 'Team collaboration',
108
252
  },
253
+ parameters: {
254
+ docs: {
255
+ description: {
256
+ story: 'SectionIntro with a foreground image.',
257
+ },
258
+ },
259
+ },
109
260
  };
110
261
 
111
- // Small size
112
- export const Small: Story = {
262
+ // Small size example
263
+ export const SmallSize: Story = {
113
264
  args: {
114
- ...Default.args,
265
+ title: 'Compact View',
266
+ label: 'Small Size',
267
+ text: 'This is a smaller version of the SectionIntro component.',
268
+ alignment: 'left',
115
269
  size: 'sm',
116
270
  },
271
+ parameters: {
272
+ docs: {
273
+ description: {
274
+ story: 'Small-sized SectionIntro for compact layouts.',
275
+ },
276
+ },
277
+ },
117
278
  };
118
279
 
119
- // Large size
120
- export const Large: Story = {
280
+ // Large size example
281
+ export const LargeSize: Story = {
121
282
  args: {
122
- ...Default.args,
283
+ title: 'Impressive Header',
284
+ label: 'Large Size',
285
+ text: 'This is a larger version of the SectionIntro component suitable for hero sections and prominent displays.',
286
+ alignment: 'center',
123
287
  size: 'lg',
124
288
  },
289
+ parameters: {
290
+ docs: {
291
+ description: {
292
+ story: 'Large-sized SectionIntro for prominent displays.',
293
+ },
294
+ },
295
+ },
125
296
  };
126
297
 
127
- // Skeleton loading state
128
- export const Skeleton: Story = {
298
+ // Skeleton loading state example
299
+ export const SkeletonLoading: Story = {
129
300
  args: {
130
- ...Default.args,
301
+ title: 'Loading Content',
302
+ label: 'Please Wait',
303
+ text: 'Content is being loaded...',
304
+ alignment: 'left',
305
+ size: 'md',
131
306
  skeleton: true,
132
307
  },
308
+ parameters: {
309
+ docs: {
310
+ description: {
311
+ story: 'Skeleton loading state of the SectionIntro component.',
312
+ },
313
+ },
314
+ },
133
315
  };
134
316
 
135
- // Full example with all features
136
- export const FullExample: Story = {
317
+ // Full featured example
318
+ export const FullFeaturedExample: Story = {
137
319
  args: {
138
320
  title: 'Building the Future Together',
139
321
  label: 'Our Vision',
@@ -143,11 +325,21 @@ export const FullExample: Story = {
143
325
  backgroundImageSrc:
144
326
  'https://images.unsplash.com/photo-1579546929518-9e396f3cc809?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=1470&q=80',
145
327
  showOverlay: true,
328
+ imageSrc:
329
+ 'https://images.unsplash.com/photo-1468436139062-f6fdfcd1e6cd?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=1470&q=80',
330
+ imageAlt: 'Mountain landscape',
146
331
  actions: (
147
- <div className="u-flex u-gap-md u-justify-center">
332
+ <div className="u-flex u-justify-center u-gap-4">
148
333
  <Button label="Get Started" size="lg" />
149
334
  <Button label="Learn More" size="lg" variant="secondary" />
150
335
  </div>
151
336
  ),
152
337
  },
338
+ parameters: {
339
+ docs: {
340
+ description: {
341
+ story: 'Full featured SectionIntro with all options enabled.',
342
+ },
343
+ },
344
+ },
153
345
  };
@@ -225,7 +225,9 @@ const basicSlides: SliderSlide[] = [
225
225
  >
226
226
  <div className="u-text-center">
227
227
  <h2 className="u-text-3 u-c-white u-mb-3">Developer Friendly</h2>
228
- <p className="u-text-base u-c-white u-mb-4">Well documented with clear APIs and examples</p>
228
+ <p className="u-text-base u-c-white u-mb-4">
229
+ Well documented with clear APIs and examples
230
+ </p>
229
231
  <Button variant="primary">View Docs</Button>
230
232
  </div>
231
233
  </div>
@@ -295,7 +297,9 @@ const basicSlides: SliderSlide[] = [
295
297
  >
296
298
  <div className="u-text-center">
297
299
  <h2 className="u-text-3 u-c-white u-mb-3">RTL Support</h2>
298
- <p className="u-text-base u-c-white u-mb-4">Full right-to-left language support built-in</p>
300
+ <p className="u-text-base u-c-white u-mb-4">
301
+ Full right-to-left language support built-in
302
+ </p>
299
303
  <Button variant="info">Learn More</Button>
300
304
  </div>
301
305
  </div>
@@ -317,7 +321,9 @@ const basicSlides: SliderSlide[] = [
317
321
  >
318
322
  <div className="u-text-center">
319
323
  <h2 className="u-text-3 u-c-white u-mb-3">Open Source</h2>
320
- <p className="u-text-base u-c-white u-mb-4">Free to use and contribute to the community</p>
324
+ <p className="u-text-base u-c-white u-mb-4">
325
+ Free to use and contribute to the community
326
+ </p>
321
327
  <Button variant="success">View on GitHub</Button>
322
328
  </div>
323
329
  </div>
@@ -342,7 +348,9 @@ const productSlides: SliderSlide[] = [
342
348
  }}
343
349
  />
344
350
  <h3 className="u-text-4 u-font-bold u-mb-2">Premium Plan</h3>
345
- <p className="u-text-sm u-c-muted u-mb-3">Perfect for small teams and growing businesses</p>
351
+ <p className="u-text-sm u-c-muted u-mb-3">
352
+ Perfect for small teams and growing businesses
353
+ </p>
346
354
  <div className="u-mb-4">
347
355
  <span className="u-text-1 u-font-bold">$29</span>
348
356
  <span className="u-text-sm u-c-muted">/month</span>