@shohojdhara/atomix 0.3.4 → 0.3.6

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 (237) hide show
  1. package/README.md +101 -199
  2. package/atomix.config.ts +241 -0
  3. package/dist/atomix.css +269 -189
  4. package/dist/atomix.css.map +1 -0
  5. package/dist/atomix.min.css +15179 -11
  6. package/dist/atomix.min.css.map +1 -0
  7. package/dist/charts.d.ts +1929 -0
  8. package/dist/charts.js +6477 -0
  9. package/dist/charts.js.map +1 -0
  10. package/dist/core.d.ts +1289 -0
  11. package/dist/core.js +3373 -0
  12. package/dist/core.js.map +1 -0
  13. package/dist/forms.d.ts +1085 -0
  14. package/dist/forms.js +2466 -0
  15. package/dist/forms.js.map +1 -0
  16. package/dist/heavy.d.ts +636 -0
  17. package/dist/heavy.js +4566 -0
  18. package/dist/heavy.js.map +1 -0
  19. package/dist/index.d.ts +5171 -4792
  20. package/dist/index.esm.js +6098 -4563
  21. package/dist/index.esm.js.map +1 -1
  22. package/dist/index.js +6291 -4747
  23. package/dist/index.js.map +1 -1
  24. package/dist/index.min.js +1 -1
  25. package/dist/index.min.js.map +1 -1
  26. package/dist/layout.d.ts +300 -0
  27. package/dist/layout.js +336 -0
  28. package/dist/layout.js.map +1 -0
  29. package/dist/theme.d.ts +2122 -0
  30. package/dist/theme.js +6084 -0
  31. package/dist/theme.js.map +1 -0
  32. package/package.json +59 -27
  33. package/scripts/atomix-cli.js +544 -16
  34. package/scripts/cli/__tests__/cli-commands.test.js +204 -0
  35. package/scripts/cli/__tests__/utils.test.js +201 -0
  36. package/scripts/cli/__tests__/vitest.config.js +26 -0
  37. package/scripts/cli/interactive-init.js +1 -1
  38. package/scripts/cli/token-manager.js +32 -7
  39. package/scripts/cli/utils.js +347 -0
  40. package/src/components/Accordion/Accordion.stories.tsx +50 -17
  41. package/src/components/Accordion/Accordion.tsx +5 -54
  42. package/src/components/Accordion/index.ts +1 -1
  43. package/src/components/AtomixGlass/AtomixGlass.tsx +65 -31
  44. package/src/components/AtomixGlass/AtomixGlassContainer.tsx +11 -4
  45. package/src/components/AtomixGlass/stories/AtomixGlass.stories.tsx +1 -32
  46. package/src/components/AtomixGlass/stories/Examples.stories.tsx +2 -2
  47. package/src/components/AtomixGlass/stories/shared-components.tsx +0 -31
  48. package/src/components/Avatar/Avatar.stories.tsx +7 -0
  49. package/src/components/Avatar/Avatar.tsx +3 -3
  50. package/src/components/Badge/Badge.stories.tsx +91 -13
  51. package/src/components/Badge/Badge.tsx +3 -3
  52. package/src/components/Block/Block.stories.tsx +7 -23
  53. package/src/components/Breadcrumb/Breadcrumb.stories.tsx +7 -0
  54. package/src/components/Breadcrumb/Breadcrumb.tsx +3 -3
  55. package/src/components/Button/Button.stories.tsx +141 -22
  56. package/src/components/Button/ButtonGroup.stories.tsx +315 -0
  57. package/src/components/Button/ButtonGroup.tsx +67 -0
  58. package/src/components/Button/index.ts +2 -0
  59. package/src/components/Callout/Callout.stories.tsx +8 -6
  60. package/src/components/Card/Card.stories.tsx +82 -28
  61. package/src/components/Card/ElevationCard.tsx +1 -1
  62. package/src/components/Chart/AnimatedChart.tsx +19 -18
  63. package/src/components/Chart/AreaChart.tsx +5 -2
  64. package/src/components/Chart/BarChart.tsx +1 -1
  65. package/src/components/Chart/BubbleChart.tsx +6 -6
  66. package/src/components/Chart/CandlestickChart.tsx +0 -1
  67. package/src/components/Chart/Chart.stories.tsx +5 -7
  68. package/src/components/Chart/Chart.tsx +0 -16
  69. package/src/components/Chart/ChartRenderer.tsx +1 -1
  70. package/src/components/Chart/ChartToolbar.tsx +1 -0
  71. package/src/components/Chart/DonutChart.tsx +0 -1
  72. package/src/components/Chart/FunnelChart.tsx +1 -2
  73. package/src/components/Chart/GaugeChart.tsx +0 -1
  74. package/src/components/Chart/HeatmapChart.tsx +0 -1
  75. package/src/components/Chart/LineChart.tsx +0 -1
  76. package/src/components/Chart/MultiAxisChart.tsx +0 -1
  77. package/src/components/Chart/PieChart.tsx +0 -1
  78. package/src/components/Chart/RadarChart.tsx +19 -13
  79. package/src/components/Chart/ScatterChart.tsx +3 -4
  80. package/src/components/Chart/TreemapChart.tsx +2 -1
  81. package/src/components/Chart/WaterfallChart.tsx +0 -2
  82. package/src/components/Chart/types.ts +12 -2
  83. package/src/components/Chart/utils.ts +4 -3
  84. package/src/components/ColorModeToggle/ColorModeToggle.stories.tsx +7 -0
  85. package/src/components/DataTable/DataTable.stories.tsx +23 -16
  86. package/src/components/DataTable/DataTable.tsx +3 -3
  87. package/src/components/DatePicker/DatePicker.stories.tsx +27 -19
  88. package/src/components/Dropdown/Dropdown.stories.tsx +11 -19
  89. package/src/components/Dropdown/Dropdown.tsx +12 -9
  90. package/src/components/EdgePanel/EdgePanel.stories.tsx +1 -0
  91. package/src/components/Footer/Footer.stories.tsx +8 -6
  92. package/src/components/Footer/FooterLink.tsx +9 -2
  93. package/src/components/Footer/FooterSection.tsx +3 -3
  94. package/src/components/Form/Checkbox.stories.tsx +7 -0
  95. package/src/components/Form/Checkbox.tsx +3 -3
  96. package/src/components/Form/Form.stories.tsx +7 -0
  97. package/src/components/Form/FormGroup.stories.tsx +9 -1
  98. package/src/components/Form/Input.stories.tsx +69 -16
  99. package/src/components/Form/Input.tsx +4 -2
  100. package/src/components/Form/Radio.stories.tsx +9 -1
  101. package/src/components/Form/Radio.tsx +3 -3
  102. package/src/components/Form/Select.stories.tsx +9 -1
  103. package/src/components/Form/Select.tsx +3 -3
  104. package/src/components/Form/Textarea.stories.tsx +10 -2
  105. package/src/components/Form/Textarea.tsx +4 -2
  106. package/src/components/Hero/Hero.stories.tsx +7 -0
  107. package/src/components/List/List.stories.tsx +10 -3
  108. package/src/components/List/List.tsx +3 -3
  109. package/src/components/List/ListGroup.tsx +3 -1
  110. package/src/components/Messages/Messages.stories.tsx +8 -7
  111. package/src/components/Modal/Modal.stories.tsx +17 -6
  112. package/src/components/Modal/Modal.tsx +3 -3
  113. package/src/components/Navigation/Menu/MegaMenu.tsx +9 -3
  114. package/src/components/Navigation/Menu/Menu.stories.tsx +7 -0
  115. package/src/components/Navigation/Menu/Menu.tsx +9 -3
  116. package/src/components/Navigation/Nav/Nav.stories.tsx +7 -0
  117. package/src/components/Navigation/Navbar/Navbar.stories.tsx +1 -0
  118. package/src/components/Navigation/SideMenu/SideMenu.stories.tsx +1 -1
  119. package/src/components/Pagination/Pagination.stories.tsx +188 -111
  120. package/src/components/Pagination/Pagination.tsx +88 -7
  121. package/src/components/PhotoViewer/PhotoViewer.stories.tsx +10 -5
  122. package/src/components/PhotoViewer/PhotoViewerImage.tsx +2 -2
  123. package/src/components/Popover/Popover.stories.tsx +191 -115
  124. package/src/components/Popover/Popover.tsx +4 -4
  125. package/src/components/ProductReview/ProductReview.stories.tsx +80 -58
  126. package/src/components/Progress/Progress.stories.tsx +79 -49
  127. package/src/components/Progress/Progress.tsx +6 -2
  128. package/src/components/Rating/Rating.stories.tsx +109 -84
  129. package/src/components/Rating/Rating.tsx +5 -2
  130. package/src/components/River/River.stories.tsx +194 -114
  131. package/src/components/SectionIntro/SectionIntro.stories.tsx +19 -9
  132. package/src/components/Slider/Slider.stories.tsx +7 -0
  133. package/src/components/Slider/Slider.tsx +10 -9
  134. package/src/components/Spinner/Spinner.stories.tsx +15 -11
  135. package/src/components/Spinner/Spinner.tsx +3 -3
  136. package/src/components/Steps/Steps.stories.tsx +132 -98
  137. package/src/components/Tabs/Tabs.stories.tsx +163 -112
  138. package/src/components/Tabs/Tabs.tsx +3 -3
  139. package/src/components/Testimonial/Testimonial.stories.tsx +114 -68
  140. package/src/components/Todo/Todo.stories.tsx +38 -12
  141. package/src/components/Toggle/Toggle.stories.tsx +61 -28
  142. package/src/components/Tooltip/Tooltip.stories.tsx +318 -200
  143. package/src/components/Tooltip/Tooltip.tsx +3 -3
  144. package/src/components/Upload/Upload.stories.tsx +122 -84
  145. package/src/components/VideoPlayer/VideoPlayer.stories.tsx +7 -24
  146. package/src/components/index.ts +6 -2
  147. package/src/layouts/MasonryGrid/MasonryGrid.tsx +2 -2
  148. package/src/lib/composables/useAtomixGlass.ts +2 -3
  149. package/src/lib/composables/useChartPerformance.ts +102 -78
  150. package/src/lib/composables/useChartScale.ts +10 -0
  151. package/src/lib/composables/useHero.ts +9 -2
  152. package/src/lib/composables/useHeroBackgroundSlider.ts +5 -3
  153. package/src/lib/composables/useNavbar.ts +0 -10
  154. package/src/lib/composables/useSideMenu.ts +1 -0
  155. package/src/lib/composables/useVideoPlayer.ts +3 -2
  156. package/src/lib/config/loader.ts +57 -14
  157. package/src/lib/constants/components.ts +10 -0
  158. package/src/lib/hooks/index.ts +0 -1
  159. package/src/lib/hooks/useComponentCustomization.ts +11 -15
  160. package/src/lib/hooks/usePerformanceMonitor.ts +149 -0
  161. package/src/lib/patterns/index.ts +2 -2
  162. package/src/lib/patterns/slots.tsx +2 -2
  163. package/src/lib/theme/README.md +174 -0
  164. package/src/lib/theme/adapters/index.ts +31 -0
  165. package/src/lib/theme/adapters/themeAdapter.ts +287 -0
  166. package/src/lib/theme/config/__tests__/configLoader.test.ts +207 -0
  167. package/src/lib/theme/config/configLoader.ts +254 -0
  168. package/src/lib/theme/config/loader.ts +37 -48
  169. package/src/lib/theme/config/types.ts +2 -2
  170. package/src/lib/theme/config/validator.ts +15 -91
  171. package/src/lib/theme/{constants.ts → constants/constants.ts} +0 -18
  172. package/src/lib/theme/constants/index.ts +8 -0
  173. package/src/lib/theme/core/ThemeRegistry.ts +19 -6
  174. package/src/lib/theme/core/__tests__/createTheme.test.ts +132 -0
  175. package/src/lib/theme/core/composeTheme.ts +155 -0
  176. package/src/lib/theme/core/createTheme.ts +94 -0
  177. package/src/lib/theme/{createTheme.ts → core/createThemeObject.ts} +10 -6
  178. package/src/lib/theme/core/index.ts +5 -19
  179. package/src/lib/theme/devtools/Comparator.tsx +346 -22
  180. package/src/lib/theme/devtools/IMPROVEMENTS.md +139 -38
  181. package/src/lib/theme/devtools/Inspector.tsx +335 -51
  182. package/src/lib/theme/devtools/LiveEditor.tsx +489 -112
  183. package/src/lib/theme/devtools/Preview.tsx +471 -221
  184. package/src/lib/theme/{core → devtools}/ThemeValidator.ts +6 -3
  185. package/src/lib/theme/devtools/index.ts +14 -4
  186. package/src/lib/theme/devtools/useHistory.ts +130 -0
  187. package/src/lib/theme/errors/index.ts +12 -0
  188. package/src/lib/theme/generators/cssFile.ts +79 -0
  189. package/src/lib/theme/generators/generateCSS.ts +89 -0
  190. package/src/lib/theme/{generateCSSVariables.ts → generators/generateCSSVariables.ts} +4 -14
  191. package/src/lib/theme/generators/index.ts +19 -0
  192. package/src/lib/theme/i18n/rtl.ts +7 -7
  193. package/src/lib/theme/index.ts +120 -15
  194. package/src/lib/theme/runtime/ThemeApplicator.ts +53 -95
  195. package/src/lib/theme/{ThemeContext.tsx → runtime/ThemeContext.tsx} +1 -1
  196. package/src/lib/theme/runtime/ThemeErrorBoundary.tsx +4 -4
  197. package/src/lib/theme/runtime/ThemeProvider.tsx +456 -179
  198. package/src/lib/theme/runtime/index.ts +1 -2
  199. package/src/lib/theme/runtime/useTheme.ts +1 -2
  200. package/src/lib/theme/test/testTheme.ts +385 -0
  201. package/src/lib/theme/tokens/index.ts +12 -0
  202. package/src/lib/theme/tokens/tokens.ts +721 -0
  203. package/src/lib/theme/types.ts +6 -42
  204. package/src/lib/theme/{utils.ts → utils/domUtils.ts} +2 -2
  205. package/src/lib/theme/utils/index.ts +11 -0
  206. package/src/lib/theme/utils/injectCSS.ts +90 -0
  207. package/src/lib/theme/utils/themeHelpers.ts +78 -0
  208. package/src/lib/theme/{themeUtils.ts → utils/themeUtils.ts} +1 -1
  209. package/src/lib/theme-tools.ts +8 -9
  210. package/src/lib/types/components.ts +93 -34
  211. package/src/lib/types/partProps.ts +0 -16
  212. package/src/lib/utils/componentUtils.ts +1 -1
  213. package/src/lib/utils/fontPreloader.ts +148 -0
  214. package/src/lib/utils/index.ts +11 -0
  215. package/src/lib/utils/memoryMonitor.ts +189 -0
  216. package/src/styles/01-settings/_settings.design-tokens.scss +4 -1
  217. package/src/styles/01-settings/_settings.fonts.scss +2 -5
  218. package/src/styles/02-tools/_tools.button.scss +66 -79
  219. package/src/styles/06-components/_components.atomix-glass.scss +13 -3
  220. package/src/styles/06-components/_components.navbar.scss +0 -6
  221. package/src/styles/06-components/_components.pagination.scss +88 -0
  222. package/scripts/build-themes.js +0 -208
  223. package/scripts/sync-theme-config.js +0 -309
  224. package/src/components/AtomixGlass/atomixGLass.old.tsx +0 -1263
  225. package/src/lib/theme/composeTheme.ts +0 -370
  226. package/src/lib/theme/core/ThemeCache.ts +0 -283
  227. package/src/lib/theme/core/ThemeEngine.test.ts +0 -146
  228. package/src/lib/theme/core/ThemeEngine.ts +0 -657
  229. package/src/lib/theme/createThemeFromConfig.ts +0 -132
  230. package/src/lib/theme/devtools/CLI.ts +0 -364
  231. package/src/lib/theme/runtime/ThemeManager.test.ts +0 -192
  232. package/src/lib/theme/runtime/ThemeManager.ts +0 -442
  233. package/src/styles/03-generic/_generated-root.css +0 -5
  234. package/src/themes/README.md +0 -442
  235. package/src/themes/themes.config.js +0 -35
  236. /package/src/lib/theme/{cssVariableMapper.ts → adapters/cssVariableMapper.ts} +0 -0
  237. /package/src/lib/theme/{errors.ts → errors/errors.ts} +0 -0
@@ -1,103 +1,145 @@
1
1
  import React from 'react';
2
- import { StoryFn, Meta } from '@storybook/react';
2
+ import type { Meta, StoryObj } from '@storybook/react';
3
3
  import { Testimonial } from './Testimonial';
4
- import type { TestimonialProps } from './Testimonial';
5
4
 
6
- export default {
5
+ const meta = {
7
6
  title: 'Components/Testimonial',
8
7
  component: Testimonial,
8
+ parameters: {
9
+ layout: 'centered',
10
+ docs: {
11
+ description: {
12
+ component:
13
+ 'The Testimonial component displays customer reviews, quotes, or endorsements with author information and avatars. It supports multiple sizes, skeleton loading states, and can display rich content. Testimonials are ideal for showcasing social proof, customer feedback, or featured quotes on landing pages and marketing sites.',
14
+ },
15
+ },
16
+ },
17
+ tags: ['autodocs'],
9
18
  argTypes: {
10
19
  size: {
11
20
  control: { type: 'select', options: ['', 'sm', 'lg'] },
12
- defaultValue: '',
21
+ description: 'Size variant of the testimonial',
13
22
  },
14
23
  skeleton: {
15
- control: { type: 'boolean' },
16
- defaultValue: false,
24
+ control: 'boolean',
25
+ description: 'Whether to show skeleton loading state',
17
26
  },
18
27
  },
19
- } as Meta<typeof Testimonial>;
28
+ } satisfies Meta<typeof Testimonial>;
20
29
 
21
- const Template: StoryFn<typeof Testimonial> = args => (
22
- <div style={{ padding: '30px' }}>
23
- <Testimonial {...args} />
24
- </div>
25
- );
30
+ export default meta;
31
+ type Story = StoryObj<typeof meta>;
26
32
 
27
33
  // 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',
34
+ export const Default: Story = {
35
+ render: args => (
36
+ <div style={{ padding: '30px' }}>
37
+ <Testimonial {...args} />
38
+ </div>
39
+ ),
40
+ args: {
41
+ quote:
42
+ 'The intuitive interface, seamless syncing across devices, and helpful features have made me more productive than ever before.',
43
+ author: {
44
+ name: 'Emily Rodriguez',
45
+ role: 'Software Engineer, Acme',
46
+ avatarSrc:
47
+ 'https://images.unsplash.com/photo-1500648767791-00dcc994a43e?q=80&w=3000&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D',
48
+ avatarAlt: 'Emily Rodriguez',
49
+ },
50
+ size: '',
38
51
  },
39
- size: '',
40
52
  };
41
53
 
42
54
  // 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',
55
+ export const Large: Story = {
56
+ render: args => (
57
+ <div style={{ padding: '30px' }}>
58
+ <Testimonial {...args} />
59
+ </div>
60
+ ),
61
+ args: {
62
+ quote:
63
+ 'The intuitive interface, seamless syncing across devices, and helpful features have made me more productive than ever before.',
64
+ author: {
65
+ name: 'Emily Rodriguez',
66
+ role: 'Software Engineer, Acme',
67
+ avatarSrc:
68
+ 'https://images.unsplash.com/photo-1500648767791-00dcc994a43e?q=80&w=3000&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D',
69
+ avatarAlt: 'Emily Rodriguez',
70
+ },
71
+ size: 'lg',
53
72
  },
54
- size: 'lg',
55
73
  };
56
74
 
57
75
  // 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',
76
+ export const Small: Story = {
77
+ render: args => (
78
+ <div style={{ padding: '30px' }}>
79
+ <Testimonial {...args} />
80
+ </div>
81
+ ),
82
+ args: {
83
+ quote:
84
+ 'The intuitive interface, seamless syncing across devices, and helpful features have made me more productive than ever before.',
85
+ author: {
86
+ name: 'Emily Rodriguez',
87
+ role: 'Software Engineer, Acme',
88
+ avatarSrc:
89
+ 'https://images.unsplash.com/photo-1500648767791-00dcc994a43e?q=80&w=3000&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D',
90
+ avatarAlt: 'Emily Rodriguez',
91
+ },
92
+ size: 'sm',
68
93
  },
69
- size: 'sm',
70
94
  };
71
95
 
72
96
  // Skeleton loading state
73
- export const Skeleton = Template.bind({});
74
- Skeleton.args = {
75
- skeleton: true,
76
- size: '',
97
+ export const Skeleton: Story = {
98
+ render: args => (
99
+ <div style={{ padding: '30px' }}>
100
+ <Testimonial {...args} />
101
+ </div>
102
+ ),
103
+ args: {
104
+ skeleton: true,
105
+ size: '',
106
+ },
77
107
  };
78
108
 
79
109
  // Large skeleton
80
- export const LargeSkeleton = Template.bind({});
81
- LargeSkeleton.args = {
82
- skeleton: true,
83
- size: 'lg',
110
+ export const LargeSkeleton: Story = {
111
+ render: args => (
112
+ <div style={{ padding: '30px' }}>
113
+ <Testimonial {...args} />
114
+ </div>
115
+ ),
116
+ args: {
117
+ skeleton: true,
118
+ size: 'lg',
119
+ },
84
120
  };
85
121
 
86
122
  // 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
- </>
123
+ export const RichContent: Story = {
124
+ render: args => (
125
+ <div style={{ padding: '30px' }}>
126
+ <Testimonial {...args} />
127
+ </div>
94
128
  ),
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',
129
+ args: {
130
+ quote: (
131
+ <>
132
+ <p>"I feel more in charge of my schedule and less overwhelmed. Highly recommended for</p>
133
+ <p>professionals and anyone aiming to enhance their productivity."</p>
134
+ </>
135
+ ),
136
+ author: {
137
+ name: 'John Smith',
138
+ role: 'Product Manager, XYZ Corp',
139
+ avatarSrc:
140
+ 'https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?q=80&w=3000&auto=format&fit=crop&ixlib=rb-4.0.3',
141
+ avatarAlt: 'John Smith',
142
+ },
101
143
  },
102
144
  };
103
145
 
@@ -150,7 +192,9 @@ const TestimonialGrid: React.FC = () => {
150
192
  );
151
193
  };
152
194
 
153
- export const TestimonialGridLayout: StoryFn<typeof Testimonial> = () => <TestimonialGrid />;
195
+ export const TestimonialGridLayout: Story = {
196
+ render: () => <TestimonialGrid />,
197
+ };
154
198
 
155
199
  // Testimonial with image
156
200
  const TestimonialWithImage: React.FC = () => {
@@ -177,4 +221,6 @@ const TestimonialWithImage: React.FC = () => {
177
221
  );
178
222
  };
179
223
 
180
- export const WithImage: StoryFn<typeof Testimonial> = () => <TestimonialWithImage />;
224
+ export const WithImage: Story = {
225
+ render: () => <TestimonialWithImage />,
226
+ };
@@ -1,30 +1,56 @@
1
- import { Meta, StoryObj } from '@storybook/react';
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
2
  import { generateUUID } from '../../lib/utils';
3
3
  import { Todo } from './Todo';
4
+ import { SIZES } from '../../lib/constants/components';
4
5
 
5
- const meta: Meta<typeof Todo> = {
6
+ const meta = {
6
7
  title: 'Components/Todo',
7
8
  component: Todo,
8
9
  parameters: {
9
10
  layout: 'centered',
11
+ docs: {
12
+ description: {
13
+ component:
14
+ 'The Todo component provides a complete todo list interface with the ability to add, complete, and manage tasks. It supports multiple sizes, can show or hide completed items, and provides a clean interface for task management. Ideal for task tracking, project management, or any scenario requiring a simple todo list.',
15
+ },
16
+ },
10
17
  },
18
+ tags: ['autodocs'],
11
19
  argTypes: {
12
- items: { control: 'object' },
13
- title: { control: 'text' },
14
-
20
+ items: {
21
+ control: 'object',
22
+ description: 'Array of todo items',
23
+ },
24
+ title: {
25
+ control: 'text',
26
+ description: 'Title of the todo list',
27
+ },
15
28
  size: {
16
29
  control: { type: 'select' },
17
- options: ['sm', 'md', 'lg'],
30
+ options: SIZES,
31
+ description: 'Size of the todo component',
32
+ },
33
+ placeholder: {
34
+ control: 'text',
35
+ description: 'Placeholder text for the input field',
36
+ },
37
+ showCompleted: {
38
+ control: 'boolean',
39
+ description: 'Whether to show completed items',
40
+ },
41
+ className: {
42
+ control: 'text',
43
+ description: 'Additional CSS class names',
44
+ },
45
+ disabled: {
46
+ control: 'boolean',
47
+ description: 'Whether the todo list is disabled',
18
48
  },
19
- placeholder: { control: 'text' },
20
- showCompleted: { control: 'boolean' },
21
- className: { control: 'text' },
22
- disabled: { control: 'boolean' },
23
49
  },
24
- };
50
+ } satisfies Meta<typeof Todo>;
25
51
 
26
52
  export default meta;
27
- type Story = StoryObj<typeof Todo>;
53
+ type Story = StoryObj<typeof meta>;
28
54
 
29
55
  export const Default: Story = {
30
56
  args: {
@@ -1,18 +1,29 @@
1
1
  import React from 'react';
2
- import { StoryFn, Meta } from '@storybook/react';
3
- import { fn } from '@storybook/test';
2
+ import type { Meta, StoryObj } from '@storybook/react';
4
3
  import { Toggle } from './Toggle';
5
4
 
6
- export default {
5
+ const meta = {
7
6
  title: 'Components/Toggle',
8
7
  component: Toggle,
8
+ parameters: {
9
+ layout: 'centered',
10
+ docs: {
11
+ description: {
12
+ component:
13
+ 'The Toggle component provides an on/off switch control for binary choices. It offers a more visually distinct alternative to checkboxes for settings, preferences, or feature toggles. Toggles support disabled states and can include glass morphism effects.',
14
+ },
15
+ },
16
+ },
17
+ tags: ['autodocs'],
9
18
  argTypes: {
10
19
  initialOn: {
11
20
  control: { type: 'boolean' },
21
+ description: 'Whether the toggle is initially on',
12
22
  defaultValue: false,
13
23
  },
14
24
  disabled: {
15
25
  control: { type: 'boolean' },
26
+ description: 'Whether the toggle is disabled',
16
27
  defaultValue: false,
17
28
  },
18
29
  glass: {
@@ -20,39 +31,60 @@ export default {
20
31
  description: 'Enable glass morphism effect',
21
32
  },
22
33
  },
23
- } as Meta<typeof Toggle>;
34
+ } satisfies Meta<typeof Toggle>;
24
35
 
25
- const Template: StoryFn<typeof Toggle> = args => (
26
- <div style={{ display: 'flex', justifyContent: 'center', padding: '30px' }}>
27
- <Toggle {...args} />
28
- </div>
29
- );
36
+ export default meta;
37
+ type Story = StoryObj<typeof meta>;
30
38
 
31
- export const Default = Template.bind({});
32
- Default.args = {
33
- initialOn: false,
34
- disabled: false,
39
+ export const Default: Story = {
40
+ render: args => (
41
+ <div style={{ display: 'flex', justifyContent: 'center', padding: '30px' }}>
42
+ <Toggle {...args} />
43
+ </div>
44
+ ),
45
+ args: {
46
+ initialOn: false,
47
+ disabled: false,
48
+ },
35
49
  };
36
50
 
37
- export const InitiallyOn = Template.bind({});
38
- InitiallyOn.args = {
39
- initialOn: true,
40
- disabled: false,
51
+ export const InitiallyOn: Story = {
52
+ render: args => (
53
+ <div style={{ display: 'flex', justifyContent: 'center', padding: '30px' }}>
54
+ <Toggle {...args} />
55
+ </div>
56
+ ),
57
+ args: {
58
+ initialOn: true,
59
+ disabled: false,
60
+ },
41
61
  };
42
62
 
43
- export const Disabled = Template.bind({});
44
- Disabled.args = {
45
- initialOn: false,
46
- disabled: true,
63
+ export const Disabled: Story = {
64
+ render: args => (
65
+ <div style={{ display: 'flex', justifyContent: 'center', padding: '30px' }}>
66
+ <Toggle {...args} />
67
+ </div>
68
+ ),
69
+ args: {
70
+ initialOn: false,
71
+ disabled: true,
72
+ },
47
73
  };
48
74
 
49
- export const DisabledOn = Template.bind({});
50
- DisabledOn.args = {
51
- initialOn: true,
52
- disabled: true,
75
+ export const DisabledOn: Story = {
76
+ render: args => (
77
+ <div style={{ display: 'flex', justifyContent: 'center', padding: '30px' }}>
78
+ <Toggle {...args} />
79
+ </div>
80
+ ),
81
+ args: {
82
+ initialOn: true,
83
+ disabled: true,
84
+ },
53
85
  };
54
86
 
55
- export const Glass = {
87
+ export const Glass: Story = {
56
88
  args: {
57
89
  initialOn: false,
58
90
  disabled: false,
@@ -75,7 +107,7 @@ export const Glass = {
75
107
  ),
76
108
  };
77
109
 
78
- export const GlassOn = {
110
+ export const GlassOn: Story = {
79
111
  args: {
80
112
  initialOn: true,
81
113
  disabled: false,
@@ -101,7 +133,7 @@ export const GlassOn = {
101
133
  ),
102
134
  };
103
135
 
104
- export const GlassCustom = {
136
+ export const GlassCustom: Story = {
105
137
  args: {
106
138
  initialOn: false,
107
139
  disabled: false,
@@ -111,6 +143,7 @@ export const GlassCustom = {
111
143
  saturation: 200,
112
144
  aberrationIntensity: 0.8,
113
145
  cornerRadius: 12,
146
+ children: <div>Custom glass</div>,
114
147
  },
115
148
  },
116
149
  render: (args: any) => (