@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,5 +1,6 @@
1
1
  import React from 'react';
2
2
  import type { Meta, StoryObj } from '@storybook/react';
3
+ import { fn } from '@storybook/test';
3
4
  import { AtomixGlass } from '../AtomixGlass/AtomixGlass';
4
5
  import { BADGE, SIZES, THEME_COLORS } from '../../lib/constants/components';
5
6
  import { Badge } from './Badge';
@@ -25,28 +26,52 @@ const meta = {
25
26
  control: { type: 'select' },
26
27
  options: THEME_COLORS,
27
28
  description: 'The visual style of the badge',
28
- defaultValue: 'primary',
29
+ table: {
30
+ type: { summary: 'string' },
31
+ defaultValue: { summary: 'primary' },
32
+ },
29
33
  },
30
34
  size: {
31
35
  control: { type: 'select' },
32
36
  options: SIZES,
33
37
  description: 'The size of the badge',
34
- defaultValue: 'md',
38
+ table: {
39
+ type: { summary: 'string' },
40
+ defaultValue: { summary: 'md' },
41
+ },
35
42
  },
36
43
  disabled: {
37
44
  control: 'boolean',
38
45
  description: 'Whether the badge is disabled',
46
+ table: {
47
+ type: { summary: 'boolean' },
48
+ defaultValue: { summary: 'false' },
49
+ },
39
50
  },
40
51
  icon: {
41
- control: 'text',
52
+ control: 'object',
42
53
  description: 'Optional icon element to display in the badge',
54
+ table: {
55
+ type: { summary: 'ReactNode' },
56
+ },
43
57
  },
44
58
  glass: {
45
- control: 'boolean',
59
+ control: 'object',
46
60
  description: 'Enable glass morphism effect',
61
+ table: {
62
+ type: { summary: 'boolean | GlassConfig' },
63
+ defaultValue: { summary: 'false' },
64
+ },
65
+ },
66
+ label: {
67
+ control: 'text',
68
+ description: 'The text content of the badge',
69
+ table: {
70
+ type: { summary: 'string' },
71
+ },
47
72
  },
48
73
  },
49
- } satisfies Meta<typeof Badge>;
74
+ };
50
75
 
51
76
  export default meta;
52
77
  type Story = StoryObj<typeof meta>;
@@ -71,93 +96,16 @@ const Icon = () => (
71
96
  );
72
97
 
73
98
  /**
74
- * Primary badge variant - the main badge style.
99
+ * Basic badge usage with minimal props
75
100
  */
76
- export const Primary: Story = {
101
+ export const BasicUsage: Story = {
77
102
  args: {
78
- label: 'Primary',
103
+ label: 'Badge',
79
104
  variant: 'primary',
80
105
  size: 'md',
81
106
  },
82
107
  };
83
108
 
84
- /**
85
- * Secondary badge variant - used for secondary information.
86
- */
87
- export const Secondary: Story = {
88
- args: {
89
- label: 'Secondary',
90
- variant: 'secondary',
91
- size: 'md',
92
- },
93
- };
94
-
95
- /**
96
- * Success badge variant - indicates successful or positive status.
97
- */
98
- export const Success: Story = {
99
- args: {
100
- label: 'Success',
101
- variant: 'success',
102
- size: 'md',
103
- },
104
- };
105
-
106
- /**
107
- * Info badge variant - used for informational status.
108
- */
109
- export const Info: Story = {
110
- args: {
111
- label: 'Info',
112
- variant: 'info',
113
- size: 'md',
114
- },
115
- };
116
-
117
- /**
118
- * Warning badge variant - indicates caution or warning status.
119
- */
120
- export const Warning: Story = {
121
- args: {
122
- label: 'Warning',
123
- variant: 'warning',
124
- size: 'md',
125
- },
126
- };
127
-
128
- /**
129
- * Error badge variant - indicates error or critical status.
130
- */
131
- export const Error: Story = {
132
- args: {
133
- label: 'Error',
134
- variant: 'error',
135
- size: 'md',
136
- },
137
- };
138
-
139
- /**
140
- * Light badge variant - light color scheme.
141
- */
142
- export const Light: Story = {
143
- args: {
144
- label: 'Light',
145
- variant: 'light',
146
- size: 'md',
147
- },
148
- };
149
-
150
- /**
151
- * Dark badge variant - dark color scheme.
152
- */
153
- export const Dark: Story = {
154
- args: {
155
- label: 'Dark',
156
- variant: 'dark',
157
- size: 'md',
158
- },
159
- };
160
-
161
109
  /**
162
110
  * Small size badge variant.
163
111
  */
@@ -192,44 +140,45 @@ export const Large: Story = {
192
140
  };
193
141
 
194
142
  /**
195
- * Disabled badge state - non-interactive badge.
143
+ * Shows all badge states (default, disabled)
196
144
  */
197
- export const Disabled: Story = {
145
+ export const AllStates: Story = {
198
146
  args: {
199
- label: 'Disabled',
147
+ label: 'All States',
200
148
  variant: 'primary',
201
- size: 'md',
202
- disabled: true,
203
149
  },
150
+ render: () => (
151
+ <div className="u-flex u-flex-wrap u-gap-2">
152
+ <Badge label="Default" variant="primary" />
153
+ <Badge label="Disabled" variant="primary" disabled={true} />
154
+ </div>
155
+ ),
204
156
  };
205
157
 
206
158
  /**
207
- * Badge with icon - displays an icon alongside the label.
159
+ * Shows badges with icons in different positions
208
160
  */
209
- export const WithIcon: Story = {
161
+ export const WithIcons: Story = {
210
162
  args: {
211
- label: 'With Icon',
163
+ label: 'With Icons',
212
164
  variant: 'primary',
213
- size: 'md',
214
- icon: <Icon />,
215
165
  },
166
+ render: () => (
167
+ <div className="u-flex u-flex-wrap u-gap-2">
168
+ <Badge label="With Icon" variant="primary" icon={<Icon />} />
169
+ <Badge label="Icon Only" variant="secondary" icon={<Icon />} />
170
+ </div>
171
+ ),
216
172
  };
217
173
 
218
174
  /**
219
- * Showcase of all badge color variants in a single view.
175
+ * Shows all available badge color variants
220
176
  */
221
177
  export const AllVariants: Story = {
222
178
  args: {
223
- label: 'Badge',
179
+ label: 'All Variants',
224
180
  variant: 'primary',
225
181
  },
226
- parameters: {
227
- docs: {
228
- description: {
229
- story: 'Displays all available badge color variants for easy comparison and selection.',
230
- },
231
- },
232
- },
233
182
  render: () => (
234
183
  <div className="u-flex u-flex-wrap u-gap-2">
235
184
  {THEME_COLORS.map(color => (
@@ -240,20 +189,13 @@ export const AllVariants: Story = {
240
189
  };
241
190
 
242
191
  /**
243
- * Showcase of all badge sizes (small, medium, large) in a single view.
192
+ * Shows all available badge sizes
244
193
  */
245
194
  export const AllSizes: Story = {
246
195
  args: {
247
- label: 'Badge',
196
+ label: 'All Sizes',
248
197
  variant: 'primary',
249
198
  },
250
- parameters: {
251
- docs: {
252
- description: {
253
- story: 'Compares all available badge sizes to help choose the appropriate size for your use case.',
254
- },
255
- },
256
- },
257
199
  render: () => (
258
200
  <div className="u-flex u-items-center u-gap-2">
259
201
  <Badge label="Small" variant="primary" size="sm" />
@@ -264,44 +206,40 @@ export const AllSizes: Story = {
264
206
  };
265
207
 
266
208
  /**
267
- * Badge examples with different content types (numeric, status, with icons).
209
+ * Shows numeric badges commonly used for notifications
268
210
  */
269
- export const WithDifferentContent: Story = {
211
+ export const NumericBadges: Story = {
270
212
  args: {
271
- label: 'Badge with different content',
213
+ label: 'Numeric Badges',
214
+ variant: 'primary',
272
215
  },
273
216
  render: () => (
274
- <div className="u-flex u-flex-column u-gap-4">
275
- <div>
276
- <h3 className="u-mt-0 u-mb-2">Numeric Badges</h3>
277
- <div className="u-flex u-gap-2">
278
- <Badge label="1" variant="primary" />
279
- <Badge label="2" variant="secondary" />
280
- <Badge label="3" variant="success" />
281
- <Badge label="4" variant="error" />
282
- <Badge label="5" variant="warning" />
283
- <Badge label="6" variant="info" />
284
- </div>
285
- </div>
286
- <div>
287
- <h3 className="u-mt-0 u-mb-2">Status Badges</h3>
288
- <div className="u-flex u-gap-2">
289
- <Badge label="New" variant="primary" />
290
- <Badge label="Active" variant="success" />
291
- <Badge label="Pending" variant="warning" />
292
- <Badge label="Failed" variant="error" />
293
- <Badge label="Blocked" variant="secondary" />
294
- </div>
295
- </div>
296
- <div>
297
- <h3 className="u-mt-0 u-mb-2">Badges with Icons</h3>
298
- <div className="u-flex u-gap-2">
299
- <Badge label="Info" variant="info" icon={<Icon />} />
300
- <Badge label="Warning" variant="warning" icon={<Icon />} />
301
- <Badge label="Success" variant="success" icon={<Icon />} />
302
- <Badge label="Error" variant="error" icon={<Icon />} />
303
- </div>
304
- </div>
217
+ <div className="u-flex u-gap-2">
218
+ <Badge label="1" variant="primary" />
219
+ <Badge label="2" variant="secondary" />
220
+ <Badge label="9+" variant="success" />
221
+ <Badge label="12" variant="error" />
222
+ <Badge label="5" variant="warning" />
223
+ <Badge label="42" variant="info" />
224
+ </div>
225
+ ),
226
+ };
227
+
228
+ /**
229
+ * Shows status badges with different semantic meanings
230
+ */
231
+ export const StatusBadges: Story = {
232
+ args: {
233
+ label: 'Status Badges',
234
+ variant: 'primary',
235
+ },
236
+ render: () => (
237
+ <div className="u-flex u-flex-wrap u-gap-2">
238
+ <Badge label="New" variant="primary" />
239
+ <Badge label="Active" variant="success" />
240
+ <Badge label="Pending" variant="warning" />
241
+ <Badge label="Failed" variant="error" />
242
+ <Badge label="Archived" variant="secondary" />
305
243
  </div>
306
244
  ),
307
245
  };
@@ -316,7 +254,8 @@ export const UsageExamples: Story = {
316
254
  parameters: {
317
255
  docs: {
318
256
  description: {
319
- story: 'Practical examples demonstrating how badges can be used in real-world scenarios such as navigation menus, product cards, and task lists.',
257
+ story:
258
+ 'Practical examples demonstrating how badges can be used in real-world scenarios such as navigation menus, product cards, and task lists.',
320
259
  },
321
260
  },
322
261
  },
@@ -342,7 +281,7 @@ export const UsageExamples: Story = {
342
281
 
343
282
  <div>
344
283
  <h3 className="u-mt-0 u-mb-2">In cards</h3>
345
- <div className="u-p-4 u-shadow u-flex u-flex-column u-gap-2">
284
+ <div className="u-p-4 u-rounded-lg u-shadow-md u-bg-white u-flex u-flex-column u-gap-2">
346
285
  <div className="u-flex u-justify-between">
347
286
  <h4 className="u-m-0">Product Title</h4>
348
287
  <Badge label="Sale" variant="error" />
@@ -357,18 +296,12 @@ export const UsageExamples: Story = {
357
296
 
358
297
  <div>
359
298
  <h3 className="u-mt-0 u-mb-2">In lists</h3>
360
- <ul className="u-p-0 u-m-0" style={{ listStyle: 'none' }}>
361
- <li
362
- className="u-py-2 u-flex u-justify-between"
363
- style={{ borderBottom: '1px solid #e0e0e0' }}
364
- >
299
+ <ul className="u-p-0 u-m-0 u-list-none">
300
+ <li className="u-py-2 u-flex u-justify-between u-border-b u-border-gray-200">
365
301
  <span>Task 1</span>
366
302
  <Badge label="Completed" variant="success" size="sm" />
367
303
  </li>
368
- <li
369
- className="u-py-2 u-flex u-justify-between"
370
- style={{ borderBottom: '1px solid #e0e0e0' }}
371
- >
304
+ <li className="u-py-2 u-flex u-justify-between u-border-b u-border-gray-200">
372
305
  <span>Task 2</span>
373
306
  <Badge label="In Progress" variant="warning" size="sm" />
374
307
  </li>
@@ -383,192 +316,55 @@ export const UsageExamples: Story = {
383
316
  };
384
317
 
385
318
  /**
386
- * Theme-aware badges demonstrating how they adapt to different theme modes.
319
+ * Shows badge accessibility features
387
320
  */
388
- export const ThemeAwareBadges: Story = {
321
+ export const AccessibilityFeatures: Story = {
389
322
  args: {
390
- label: 'Badge',
323
+ label: 'Accessibility Features',
391
324
  variant: 'primary',
392
325
  },
326
+ parameters: {
327
+ docs: {
328
+ description: {
329
+ story:
330
+ 'Examples of accessible badge implementations with proper ARIA labels and keyboard navigation support.',
331
+ },
332
+ },
333
+ },
393
334
  render: () => (
394
- <div className="u-flex u-flex-column u-gap-6">
335
+ <div className="u-flex u-flex-column u-gap-4">
395
336
  <div>
396
- <h3 className="u-mt-0 u-mb-2">Theme Aware Badges</h3>
397
- <p className="u-mb-4">
398
- The badges below demonstrate how they adapt to different theme modes.
399
- </p>
400
- <div className="u-flex u-gap-5 u-mt-4">
401
- <div className="u-p-5 u-shadow u-flex-1">
402
- <h4 className="u-mt-0">Current Theme</h4>
403
- <div className="u-flex u-flex-wrap u-gap-2">
404
- {THEME_COLORS.map(color => (
405
- <Badge key={color} label={color} variant={color} />
406
- ))}
407
- </div>
408
- </div>
337
+ <h3 className="u-mt-0 u-mb-2">With ARIA Labels</h3>
338
+ <div className="u-flex u-gap-2">
339
+ <Badge label="Inbox" variant="primary" aria-label="3 new messages" />
340
+ <Badge label="Alert" variant="error" aria-label="Critical notification" />
409
341
  </div>
410
342
  </div>
411
343
 
412
344
  <div>
413
- <h3 className="u-mt-2 u-mb-2">Accessibility Considerations</h3>
414
- <p className="u-mb-2">
415
- Our badges are designed to maintain proper contrast in both light and dark modes.
416
- </p>
417
- <div className="u-flex u-flex-column u-gap-2 u-mt-2">
418
- <div className="u-flex u-items-center u-gap-2">
419
- <span className="u-inline-block" style={{ width: '120px' }}>
420
- Primary:
421
- </span>
422
- <Badge label="New Feature" variant="primary" />
423
- </div>
424
- <div className="u-flex u-items-center u-gap-2">
425
- <span className="u-inline-block" style={{ width: '120px' }}>
426
- Success:
427
- </span>
428
- <Badge label="Completed" variant="success" />
429
- </div>
430
- <div className="u-flex u-items-center u-gap-2">
431
- <span className="u-inline-block" style={{ width: '120px' }}>
432
- Warning:
433
- </span>
434
- <Badge label="In Progress" variant="warning" />
435
- </div>
436
- <div className="u-flex u-items-center u-gap-2">
437
- <span className="u-inline-block" style={{ width: '120px' }}>
438
- Error:
439
- </span>
440
- <Badge label="Failed" variant="error" />
441
- </div>
345
+ <h3 className="u-mt-0 u-mb-2">Interactive Badges</h3>
346
+ <div className="u-flex u-gap-2">
347
+ <Badge label="Closable Tag" variant="info" />
442
348
  </div>
443
349
  </div>
444
-
445
- <div className="u-mt-4">
446
- <p>
447
- Use the Color Mode toggle in the Storybook toolbar to switch between light and dark mode!
448
- </p>
449
- </div>
450
350
  </div>
451
351
  ),
452
352
  };
453
353
 
454
354
  /**
455
- * Badge with glass morphism effect - primary variant.
355
+ * Shows badges with glass effect enabled
456
356
  */
457
- export const GlassPrimary: Story = {
357
+ export const WithGlassEffect: Story = {
458
358
  args: {
459
- label: 'Glass Primary',
359
+ label: 'Glass Effect',
460
360
  variant: 'primary',
461
- size: 'md',
462
- glass: true,
463
- },
464
- decorators: [
465
- Story => (
466
- <div
467
- style={{
468
- background:
469
- 'url(https://cdn.pixabay.com/photo/2021/06/14/22/46/milky-way-6337038_1280.jpg)',
470
- backgroundSize: 'cover',
471
- backgroundPosition: 'center',
472
- padding: '10rem 25rem',
473
- borderRadius: '8px',
474
- }}
475
- >
476
- <Story />
477
- </div>
478
- ),
479
- ],
480
- };
481
-
482
- export const GlassSecondary: Story = {
483
- args: {
484
- label: 'Glass Secondary',
485
- variant: 'secondary',
486
- size: 'md',
487
- glass: true,
488
- },
489
- decorators: [
490
- Story => (
491
- <div
492
- style={{
493
- background:
494
- 'url(https://images.unsplash.com/photo-1584384689201-e0bcbe2c7f1d?ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&q=80&w=1287)',
495
- backgroundSize: 'cover',
496
- backgroundPosition: 'center',
497
- padding: '10rem 25rem',
498
- borderRadius: '8px',
499
- }}
500
- >
501
- <Story />
502
- </div>
503
- ),
504
- ],
505
- };
506
-
507
- export const GlassSuccess: Story = {
508
- args: {
509
- label: 'Glass Success',
510
- variant: 'success',
511
- size: 'md',
512
- glass: true,
513
- },
514
- decorators: [
515
- Story => (
516
- <div
517
- style={{
518
- background: 'url(https://cdn.pixabay.com/photo/2025/07/29/15/55/mantis-9742906_1280.jpg)',
519
- backgroundSize: 'cover',
520
- backgroundPosition: 'center',
521
- padding: '10rem 25rem',
522
- borderRadius: '8px',
523
- }}
524
- >
525
- <Story />
526
- </div>
527
- ),
528
- ],
529
- };
530
-
531
- export const GlassWithIcon: Story = {
532
- args: {
533
- label: 'Glass with Icon',
534
- variant: 'primary',
535
- size: 'md',
536
- icon: <Icon />,
537
- glass: true,
538
- },
539
- decorators: [
540
- Story => (
541
- <div
542
- style={{
543
- background:
544
- 'url(https://cdn.pixabay.com/photo/2023/07/07/20/42/grasshopper-8113345_1280.jpg)',
545
- backgroundSize: 'cover',
546
- backgroundPosition: 'center',
547
- padding: '10rem 25rem',
548
- borderRadius: '8px',
549
- }}
550
- >
551
- <Story />
552
- </div>
553
- ),
554
- ],
555
- };
556
-
557
- export const GlassAllVariants: Story = {
558
- args: {
559
- label: 'Glass Badge',
560
- variant: 'primary',
561
- glass: true,
562
361
  },
563
362
  render: () => (
564
363
  <div
364
+ className="u-bg-cover u-bg-center u-rounded-xl u-p-24"
565
365
  style={{
566
- background:
366
+ backgroundImage:
567
367
  'url(https://cdn.pixabay.com/photo/2023/07/07/20/42/grasshopper-8113345_1280.jpg)',
568
- backgroundSize: 'cover',
569
- backgroundPosition: 'center',
570
- padding: '10rem 25rem',
571
- borderRadius: '8px',
572
368
  }}
573
369
  >
574
370
  <div className="u-flex u-flex-wrap u-gap-2">
@@ -580,33 +376,10 @@ export const GlassAllVariants: Story = {
580
376
  ),
581
377
  };
582
378
 
583
- export const GlassAllSizes: Story = {
584
- args: {
585
- label: 'Glass Badge',
586
- variant: 'primary',
587
- glass: true,
588
- },
589
- render: () => (
590
- <div
591
- style={{
592
- background:
593
- 'url(https://cdn.pixabay.com/photo/2025/07/18/15/17/grasshopper-9721629_1280.jpg)',
594
- backgroundSize: 'cover',
595
- backgroundPosition: 'center',
596
- padding: '10rem 25rem',
597
- borderRadius: '8px',
598
- }}
599
- >
600
- <div className="u-flex u-items-center u-gap-2">
601
- <Badge label="Small" variant="primary" size="sm" glass={true} />
602
- <Badge label="Medium" variant="primary" size="md" glass={true} />
603
- <Badge label="Large" variant="primary" size="lg" glass={true} />
604
- </div>
605
- </div>
606
- ),
607
- };
608
-
609
- export const GlassCustomSettings: Story = {
379
+ /**
380
+ * Shows badges with custom glass settings
381
+ */
382
+ export const WithCustomGlassSettings: Story = {
610
383
  args: {
611
384
  label: 'Custom Glass',
612
385
  variant: 'primary',
@@ -618,18 +391,15 @@ export const GlassCustomSettings: Story = {
618
391
  aberrationIntensity: 1,
619
392
  cornerRadius: 16,
620
393
  mode: 'polar',
621
- } as any,
394
+ },
622
395
  },
623
396
  decorators: [
624
397
  Story => (
625
398
  <div
399
+ className="u-bg-cover u-bg-center u-rounded-xl u-p-24"
626
400
  style={{
627
- background:
401
+ backgroundImage:
628
402
  'url(https://cdn.pixabay.com/photo/2021/06/14/22/46/milky-way-6337038_1280.jpg)',
629
- backgroundSize: 'cover',
630
- backgroundPosition: 'center',
631
- padding: '10rem 25rem',
632
- borderRadius: '8px',
633
403
  }}
634
404
  >
635
405
  <Story />