@shohojdhara/atomix 0.3.13 → 0.3.15

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 (249) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/README.md +2 -0
  3. package/build-tools/EXAMPLES.md +372 -0
  4. package/build-tools/README.md +242 -0
  5. package/build-tools/__tests__/error-handler.test.js +230 -0
  6. package/build-tools/__tests__/index.test.js +141 -0
  7. package/build-tools/__tests__/rollup-plugin.test.js +194 -0
  8. package/build-tools/__tests__/utils.test.js +161 -0
  9. package/build-tools/__tests__/vite-plugin.test.js +129 -0
  10. package/build-tools/__tests__/webpack-loader.test.js +190 -0
  11. package/build-tools/error-handler.js +308 -0
  12. package/build-tools/index.d.ts +43 -0
  13. package/build-tools/index.js +88 -0
  14. package/build-tools/package.json +67 -0
  15. package/build-tools/rollup-plugin.js +236 -0
  16. package/build-tools/types.d.ts +163 -0
  17. package/build-tools/utils.js +203 -0
  18. package/build-tools/vite-plugin.js +161 -0
  19. package/build-tools/webpack-loader.js +123 -0
  20. package/dist/atomix.css +298 -167
  21. package/dist/atomix.css.map +1 -1
  22. package/dist/atomix.min.css +3 -3
  23. package/dist/atomix.min.css.map +1 -1
  24. package/dist/build-tools/EXAMPLES.md +372 -0
  25. package/dist/build-tools/README.md +242 -0
  26. package/dist/build-tools/__tests__/error-handler.test.js +230 -0
  27. package/dist/build-tools/__tests__/index.test.js +141 -0
  28. package/dist/build-tools/__tests__/rollup-plugin.test.js +194 -0
  29. package/dist/build-tools/__tests__/utils.test.js +161 -0
  30. package/dist/build-tools/__tests__/vite-plugin.test.js +129 -0
  31. package/dist/build-tools/__tests__/webpack-loader.test.js +190 -0
  32. package/dist/build-tools/error-handler.js +308 -0
  33. package/dist/build-tools/index.d.ts +43 -0
  34. package/dist/build-tools/index.js +88 -0
  35. package/dist/build-tools/package.json +67 -0
  36. package/dist/build-tools/rollup-plugin.js +236 -0
  37. package/dist/build-tools/types.d.ts +163 -0
  38. package/dist/build-tools/utils.js +203 -0
  39. package/dist/build-tools/vite-plugin.js +161 -0
  40. package/dist/build-tools/webpack-loader.js +123 -0
  41. package/dist/charts.d.ts +2 -2
  42. package/dist/charts.js +87 -58
  43. package/dist/charts.js.map +1 -1
  44. package/dist/core.d.ts +42 -12
  45. package/dist/core.js +175 -135
  46. package/dist/core.js.map +1 -1
  47. package/dist/forms.d.ts +30 -16
  48. package/dist/forms.js +146 -131
  49. package/dist/forms.js.map +1 -1
  50. package/dist/heavy.d.ts +2 -2
  51. package/dist/heavy.js +151 -118
  52. package/dist/heavy.js.map +1 -1
  53. package/dist/index.d.ts +130 -106
  54. package/dist/index.esm.js +1083 -465
  55. package/dist/index.esm.js.map +1 -1
  56. package/dist/index.js +1102 -483
  57. package/dist/index.js.map +1 -1
  58. package/dist/index.min.js +1 -1
  59. package/dist/index.min.js.map +1 -1
  60. package/dist/theme.d.ts +27 -2
  61. package/dist/theme.js +721 -108
  62. package/dist/theme.js.map +1 -1
  63. package/package.json +23 -8
  64. package/scripts/atomix-cli.js +749 -1153
  65. package/scripts/cli/__tests__/README.md +81 -0
  66. package/scripts/cli/__tests__/basic.test.js +115 -0
  67. package/scripts/cli/__tests__/component-generator.test.js +332 -0
  68. package/scripts/cli/__tests__/integration.test.js +327 -0
  69. package/scripts/cli/__tests__/test-setup.js +133 -0
  70. package/scripts/cli/__tests__/token-manager.test.js +251 -0
  71. package/scripts/cli/__tests__/utils.test.js +78 -118
  72. package/scripts/cli/component-generator.js +564 -0
  73. package/scripts/cli/dependency-checker.js +355 -0
  74. package/scripts/cli/documentation-sync.js +542 -0
  75. package/scripts/cli/interactive-init.js +129 -292
  76. package/scripts/cli/mappings.js +211 -0
  77. package/scripts/cli/migration-tools.js +95 -288
  78. package/scripts/cli/template-manager.js +105 -0
  79. package/scripts/cli/templates/README.md +123 -0
  80. package/scripts/cli/templates/common-templates.js +636 -0
  81. package/scripts/cli/templates/composable-templates.js +171 -0
  82. package/scripts/cli/templates/config-templates.js +126 -0
  83. package/scripts/cli/templates/index.js +102 -0
  84. package/scripts/cli/templates/project-templates.js +342 -0
  85. package/scripts/cli/templates/react-templates.js +331 -0
  86. package/scripts/cli/templates/scss-templates.js +155 -0
  87. package/scripts/cli/templates/storybook-templates.js +236 -0
  88. package/scripts/cli/templates/testing-templates.js +224 -0
  89. package/scripts/cli/templates/testing-utils.js +278 -0
  90. package/scripts/cli/templates/token-templates.js +447 -0
  91. package/scripts/cli/templates/types-templates.js +147 -0
  92. package/scripts/cli/templates.js +35 -0
  93. package/scripts/cli/theme-bridge.js +28 -16
  94. package/scripts/cli/token-manager.js +432 -247
  95. package/scripts/cli/utils.js +37 -26
  96. package/src/components/Accordion/Accordion.stories.tsx +369 -870
  97. package/src/components/Accordion/Accordion.test.tsx +57 -0
  98. package/src/components/Accordion/Accordion.tsx +4 -0
  99. package/src/components/AtomixGlass/AtomixGlass.tsx +80 -39
  100. package/src/components/AtomixGlass/AtomixGlassContainer.tsx +103 -81
  101. package/src/components/AtomixGlass/__snapshots__/AtomixGlass.test.tsx.snap +8 -7
  102. package/src/components/AtomixGlass/glass-utils.ts +2 -2
  103. package/src/components/AtomixGlass/shader-utils.ts +5 -0
  104. package/src/components/AtomixGlass/stories/Customization.stories.tsx +131 -0
  105. package/src/components/AtomixGlass/stories/Examples.stories.tsx +2965 -2861
  106. package/src/components/AtomixGlass/stories/Modes.stories.tsx +1 -1
  107. package/src/components/AtomixGlass/stories/Overview.stories.tsx +348 -0
  108. package/src/components/AtomixGlass/stories/Performance.stories.tsx +103 -0
  109. package/src/components/AtomixGlass/stories/Playground.stories.tsx +73 -59
  110. package/src/components/AtomixGlass/stories/{ShaderVariants.stories.tsx → Shaders.stories.tsx} +1 -1
  111. package/src/components/AtomixGlass/stories/shared-components.tsx +90 -190
  112. package/src/components/Avatar/Avatar.stories.tsx +239 -27
  113. package/src/components/Badge/Badge.stories.tsx +132 -373
  114. package/src/components/Badge/Badge.test.tsx +51 -0
  115. package/src/components/Badge/Badge.tsx +20 -1
  116. package/src/components/Block/Block.stories.tsx +26 -17
  117. package/src/components/Breadcrumb/Breadcrumb.stories.tsx +141 -23
  118. package/src/components/Breadcrumb/Breadcrumb.tsx +2 -2
  119. package/src/components/Button/Button.stories.tsx +463 -1126
  120. package/src/components/Button/Button.test.tsx +107 -0
  121. package/src/components/Button/Button.tsx +50 -54
  122. package/src/components/Button/ButtonGroup.stories.tsx +373 -217
  123. package/src/components/Button/README.md +5 -0
  124. package/src/components/Callout/Callout.stories.tsx +299 -644
  125. package/src/components/Callout/Callout.test.tsx +10 -10
  126. package/src/components/Callout/Callout.tsx +7 -7
  127. package/src/components/Callout/README.md +9 -8
  128. package/src/components/Card/Card.stories.tsx +248 -68
  129. package/src/components/Card/Card.tsx +2 -2
  130. package/src/components/Chart/Chart.stories.tsx +156 -14
  131. package/src/components/Chart/Chart.tsx +1 -1
  132. package/src/components/ColorModeToggle/ColorModeToggle.stories.tsx +151 -69
  133. package/src/components/Countdown/Countdown.stories.tsx +115 -8
  134. package/src/components/DataTable/DataTable.stories.tsx +346 -146
  135. package/src/components/DataTable/DataTable.tsx +14 -12
  136. package/src/components/DatePicker/DatePicker.stories.tsx +325 -1066
  137. package/src/components/Dropdown/Dropdown.stories.tsx +157 -37
  138. package/src/components/EdgePanel/EdgePanel.stories.tsx +230 -21
  139. package/src/components/Footer/Footer.stories.tsx +392 -328
  140. package/src/components/Form/Checkbox.stories.tsx +143 -9
  141. package/src/components/Form/Checkbox.test.tsx +63 -0
  142. package/src/components/Form/Checkbox.tsx +90 -52
  143. package/src/components/Form/Form.stories.tsx +121 -22
  144. package/src/components/Form/FormGroup.stories.tsx +128 -5
  145. package/src/components/Form/Input.stories.tsx +28 -16
  146. package/src/components/Form/Input.test.tsx +59 -0
  147. package/src/components/Form/Input.tsx +97 -95
  148. package/src/components/Form/Radio.stories.tsx +232 -97
  149. package/src/components/Form/Radio.tsx +2 -2
  150. package/src/components/Form/Select.stories.tsx +144 -12
  151. package/src/components/Form/Select.tsx +2 -2
  152. package/src/components/Form/Textarea.stories.tsx +171 -13
  153. package/src/components/Form/Textarea.test.tsx +45 -0
  154. package/src/components/Form/Textarea.tsx +88 -86
  155. package/src/components/Hero/Hero.stories.tsx +333 -32
  156. package/src/components/List/List.stories.tsx +143 -5
  157. package/src/components/Modal/Modal.stories.tsx +185 -46
  158. package/src/components/Navigation/Navbar/Navbar.stories.tsx +5 -5
  159. package/src/components/Navigation/Navbar/Navbar.tsx +1 -1
  160. package/src/components/Navigation/README.md +1 -1
  161. package/src/components/Pagination/Pagination.stories.tsx +5 -2
  162. package/src/components/Pagination/Pagination.tsx +1 -1
  163. package/src/components/PhotoViewer/PhotoViewer.stories.tsx +10 -10
  164. package/src/components/Popover/Popover.stories.tsx +449 -99
  165. package/src/components/ProductReview/ProductReview.tsx +1 -1
  166. package/src/components/Progress/Progress.stories.tsx +167 -5
  167. package/src/components/Progress/Progress.tsx +46 -46
  168. package/src/components/Rating/Rating.stories.tsx +4 -4
  169. package/src/components/Rating/Rating.tsx +8 -8
  170. package/src/components/River/River.stories.tsx +1 -1
  171. package/src/components/SectionIntro/SectionIntro.stories.tsx +240 -48
  172. package/src/components/Slider/Slider.stories.tsx +63 -63
  173. package/src/components/Spinner/Spinner.stories.tsx +104 -10
  174. package/src/components/Spinner/Spinner.test.tsx +35 -0
  175. package/src/components/Spinner/Spinner.tsx +9 -2
  176. package/src/components/Steps/Steps.stories.tsx +172 -43
  177. package/src/components/Tabs/Tabs.stories.tsx +136 -10
  178. package/src/components/Testimonial/Testimonial.stories.tsx +121 -4
  179. package/src/components/Todo/Todo.stories.tsx +198 -9
  180. package/src/components/Toggle/Toggle.stories.tsx +153 -43
  181. package/src/components/Toggle/Toggle.test.tsx +91 -0
  182. package/src/components/Toggle/Toggle.tsx +44 -27
  183. package/src/components/Tooltip/Tooltip.stories.tsx +194 -104
  184. package/src/components/Tooltip/Tooltip.tsx +1 -1
  185. package/src/components/Upload/Upload.stories.tsx +113 -24
  186. package/src/layouts/Grid/Grid.stories.tsx +49 -49
  187. package/src/layouts/MasonryGrid/MasonryGrid.stories.tsx +2 -2
  188. package/src/lib/README.md +2 -2
  189. package/src/lib/__tests__/theme-tools.test.ts +193 -0
  190. package/src/lib/composables/index.ts +2 -2
  191. package/src/lib/composables/useAccordion.ts +12 -3
  192. package/src/lib/composables/useAtomixGlass.ts +28 -56
  193. package/src/lib/composables/useBreadcrumb.ts +2 -2
  194. package/src/lib/composables/useCallout.ts +7 -7
  195. package/src/lib/composables/useChartExport.ts +2 -7
  196. package/src/lib/composables/useDataTable.ts +46 -29
  197. package/src/lib/composables/useNavbar.ts +1 -1
  198. package/src/lib/constants/components.ts +10 -33
  199. package/src/lib/storybook/InteractiveDemo.tsx +113 -0
  200. package/src/lib/storybook/PreviewContainer.tsx +36 -0
  201. package/src/lib/storybook/VariantsGrid.tsx +21 -0
  202. package/src/lib/storybook/index.ts +3 -0
  203. package/src/lib/theme/core/createThemeObject.ts +9 -5
  204. package/src/lib/theme/devtools/CLI.ts +155 -0
  205. package/src/lib/theme/devtools/DesignTokensCustomizer.stories.tsx +213 -0
  206. package/src/lib/theme/devtools/DesignTokensCustomizer.tsx +566 -0
  207. package/src/lib/theme/devtools/LiveEditor.tsx +2 -1
  208. package/src/lib/theme/devtools/index.ts +3 -0
  209. package/src/lib/theme/errors/errors.ts +8 -0
  210. package/src/lib/theme/runtime/ThemeProvider.tsx +117 -57
  211. package/src/lib/theme/runtime/__tests__/ThemeProvider.integration.test.tsx +305 -0
  212. package/src/lib/theme/runtime/__tests__/ThemeProvider.test.tsx +588 -0
  213. package/src/lib/theme/utils/__tests__/themeValidation.test.ts +264 -0
  214. package/src/lib/theme/utils/index.ts +1 -0
  215. package/src/lib/theme/utils/themeValidation.ts +501 -0
  216. package/src/lib/theme-tools.ts +32 -3
  217. package/src/lib/types/components.ts +82 -27
  218. package/src/lib/utils/__tests__/csv.test.ts +45 -0
  219. package/src/lib/utils/csv.ts +17 -0
  220. package/src/lib/utils/dataTableExport.ts +1 -10
  221. package/src/lib/utils/themeNaming.ts +1 -1
  222. package/src/styles/01-settings/_index.scss +2 -1
  223. package/src/styles/01-settings/_settings.accordion.scss +28 -7
  224. package/src/styles/01-settings/_settings.colors.scss +11 -11
  225. package/src/styles/01-settings/_settings.typography.scss +5 -5
  226. package/src/styles/02-tools/_tools.utility-api.scss +14 -0
  227. package/src/styles/06-components/_components.accordion.scss +56 -14
  228. package/src/styles/06-components/_components.callout.scss +29 -33
  229. package/src/styles/06-components/_components.checkbox.scss +23 -17
  230. package/src/styles/06-components/_index.scss +1 -1
  231. package/src/styles/99-utilities/_index.scss +2 -0
  232. package/src/styles/99-utilities/_utilities.display.scss +14 -3
  233. package/src/styles/99-utilities/_utilities.flex.scss +10 -10
  234. package/src/styles/99-utilities/_utilities.scss +3 -1
  235. package/src/styles/99-utilities/_utilities.text-gradient.scss +45 -0
  236. package/src/styles/99-utilities/_utilities.text.scss +28 -8
  237. package/themes/dark-complementary/README.md +98 -0
  238. package/themes/dark-complementary/index.scss +158 -0
  239. package/themes/default-light/README.md +81 -0
  240. package/themes/default-light/index.scss +154 -0
  241. package/themes/high-contrast/README.md +105 -0
  242. package/themes/high-contrast/index.scss +172 -0
  243. package/themes/test-theme/README.md +38 -0
  244. package/themes/test-theme/index.scss +47 -0
  245. package/scripts/cli/__tests__/cli-commands.test.js +0 -204
  246. package/scripts/cli/__tests__/vitest.config.js +0 -26
  247. package/src/components/AtomixGlass/stories/AtomixGlass.stories.tsx +0 -1438
  248. package/src/lib/composables/useButton.ts +0 -93
  249. package/src/lib/composables/useCheckbox.ts +0 -70
@@ -8,99 +8,101 @@ import { AtomixGlass } from '../AtomixGlass/AtomixGlass';
8
8
  */
9
9
  export const Textarea = memo(
10
10
  forwardRef<HTMLTextAreaElement, TextareaProps>(
11
- (
12
- {
13
- value,
14
- onChange,
15
- onBlur,
16
- onFocus,
17
- placeholder,
18
- className = '',
19
- style,
20
- disabled = false,
21
- required = false,
22
- readOnly = false,
23
- id,
24
- name,
25
- rows = 4,
26
- cols,
27
- maxLength,
28
- minLength,
29
- size = 'md',
30
- variant,
31
- invalid = false,
32
- valid = false,
33
- autoFocus = false,
34
- ariaLabel,
35
- ariaDescribedBy,
36
- glass,
37
- },
38
- ref
39
- ) => {
40
- const { generateTextareaClass } = useTextarea({
41
- size,
42
- variant,
43
- disabled,
44
- invalid,
45
- valid,
46
- });
11
+ (
12
+ {
13
+ value,
14
+ defaultValue,
15
+ onChange,
16
+ onBlur,
17
+ onFocus,
18
+ placeholder,
19
+ className = '',
20
+ style,
21
+ disabled = false,
22
+ required = false,
23
+ readOnly = false,
24
+ id,
25
+ name,
26
+ rows = 4,
27
+ cols,
28
+ maxLength,
29
+ minLength,
30
+ size = 'md',
31
+ variant,
32
+ invalid = false,
33
+ valid = false,
34
+ autoFocus = false,
35
+ 'aria-label': ariaLabel,
36
+ 'aria-describedby': ariaDescribedBy,
37
+ glass,
38
+ },
39
+ ref
40
+ ) => {
41
+ const { generateTextareaClass } = useTextarea({
42
+ size,
43
+ variant,
44
+ disabled,
45
+ invalid,
46
+ valid,
47
+ });
47
48
 
48
- const textareaClass = generateTextareaClass({
49
- className: `${className} ${glass ? 'c-input--glass' : ''}`.trim(),
50
- size,
51
- variant,
52
- disabled,
53
- invalid,
54
- valid,
55
- });
49
+ const textareaClass = generateTextareaClass({
50
+ className: `${className} ${glass ? 'c-input--glass' : ''}`.trim(),
51
+ size,
52
+ variant,
53
+ disabled,
54
+ invalid,
55
+ valid,
56
+ });
56
57
 
57
- // Custom styles for glass effect
58
- const glassStyles = glass ? {} : {};
58
+ // Custom styles for glass effect
59
+ const glassStyles = glass ? {} : {};
59
60
 
60
- const textareaElement = (
61
- <textarea
62
- ref={ref}
63
- className={textareaClass}
64
- value={value}
65
- onChange={onChange}
66
- onBlur={onBlur}
67
- onFocus={onFocus}
68
- placeholder={placeholder}
69
- disabled={disabled}
70
- required={required}
71
- readOnly={readOnly}
72
- id={id}
73
- name={name}
74
- rows={rows}
75
- cols={cols}
76
- maxLength={maxLength}
77
- minLength={minLength}
78
- autoFocus={autoFocus}
79
- aria-label={ariaLabel}
80
- aria-describedby={ariaDescribedBy}
81
- aria-invalid={invalid}
82
- style={glass ? { ...glassStyles, ...style } : style}
83
- />
84
- );
61
+ const textareaElement = (
62
+ <textarea
63
+ ref={ref}
64
+ className={textareaClass}
65
+ value={value}
66
+ defaultValue={defaultValue}
67
+ onChange={onChange}
68
+ onBlur={onBlur}
69
+ onFocus={onFocus}
70
+ placeholder={placeholder}
71
+ disabled={disabled}
72
+ required={required}
73
+ readOnly={readOnly}
74
+ id={id}
75
+ name={name}
76
+ rows={rows}
77
+ cols={cols}
78
+ maxLength={maxLength}
79
+ minLength={minLength}
80
+ autoFocus={autoFocus}
81
+ aria-label={ariaLabel}
82
+ aria-describedby={ariaDescribedBy}
83
+ aria-invalid={invalid}
84
+ style={glass ? { ...glassStyles, ...style } : style}
85
+ />
86
+ );
85
87
 
86
- if (glass) {
87
- // Default glass settings for textareas
88
- const defaultGlassProps = {
89
- displacementScale: 60,
90
- blurAmount: 1,
91
- saturation: 180,
92
- aberrationIntensity: 1,
93
- cornerRadius: 8,
94
- mode: 'shader' as const,
95
- };
88
+ if (glass) {
89
+ // Default glass settings for textareas
90
+ const defaultGlassProps = {
91
+ displacementScale: 60,
92
+ blurAmount: 1,
93
+ saturation: 180,
94
+ aberrationIntensity: 1,
95
+ cornerRadius: 8,
96
+ mode: 'shader' as const,
97
+ };
96
98
 
97
- const glassProps = glass === true ? defaultGlassProps : { ...defaultGlassProps, ...glass };
99
+ const glassProps = glass === true ? defaultGlassProps : { ...defaultGlassProps, ...glass };
98
100
 
99
- return <AtomixGlass {...glassProps}>{textareaElement}</AtomixGlass>;
100
- }
101
+ return <AtomixGlass {...glassProps}>{textareaElement}</AtomixGlass>;
102
+ }
101
103
 
102
- return textareaElement;
103
- }
104
+ return textareaElement;
105
+ }
104
106
  )
105
107
  );
106
108
 
@@ -1,4 +1,5 @@
1
1
  import type { Meta, StoryObj } from '@storybook/react';
2
+ import { fn } from '@storybook/test';
2
3
  import { HERO } from '../../lib/constants/components';
3
4
  import { Button } from '../Button/Button';
4
5
  import { Hero } from './Hero';
@@ -22,6 +23,33 @@ const RIGHT_CLASS = HERO.CLASSES.RIGHT;
22
23
  const LEFT_CLASS = HERO.CLASSES.LEFT;
23
24
  const FULL_VH_CLASS = HERO.CLASSES.FULL_VH;
24
25
 
26
+ // Define missing variables
27
+ const demoText = 'Our design system helps you build beautiful, consistent, and accessible user interfaces faster than ever before. With a carefully crafted collection of components and guidelines, you can easily create stunning UIs that stand out.';
28
+
29
+ const showcaseText = 'This is an example of showcase text demonstrating the capabilities of the Atomix design system. Create beautiful interfaces with ease and consistency.';
30
+
31
+ const primaryActionButtons = (
32
+ <>
33
+ <Button variant="primary" size="lg" className="u-mr-3" onClick={fn()}>
34
+ Get Started
35
+ </Button>
36
+ <Button variant="secondary" size="lg" onClick={fn()}>
37
+ Learn More
38
+ </Button>
39
+ </>
40
+ );
41
+
42
+ const showcaseActionButtons = (
43
+ <>
44
+ <Button variant="primary" size="lg" className="u-mr-3" onClick={fn()}>
45
+ View Demo
46
+ </Button>
47
+ <Button variant="outline" size="lg" onClick={fn()}>
48
+ Contact Us
49
+ </Button>
50
+ </>
51
+ );
52
+
25
53
  const meta = {
26
54
  title: 'Components/Hero',
27
55
  component: Hero,
@@ -29,8 +57,78 @@ const meta = {
29
57
  layout: 'padded',
30
58
  docs: {
31
59
  description: {
32
- component:
33
- 'The Hero component creates prominent banner sections typically used at the top of pages. It provides a flexible layout for titles, subtitles, text content, call-to-action buttons, and images. Heroes are ideal for landing pages, marketing sections, or any area requiring prominent visual presentation.',
60
+ component: `
61
+ # Hero
62
+
63
+ ## Overview
64
+
65
+ Hero creates prominent banner sections typically used at the top of pages. It provides a flexible layout for titles, subtitles, text content, call-to-action buttons, and images. Heroes are ideal for landing pages, marketing sections, or any area requiring prominent visual presentation.
66
+
67
+ ## Features
68
+
69
+ - Flexible content layout
70
+ - Customizable alignment (left, center, right)
71
+ - Background image support
72
+ - Overlay options
73
+ - Full viewport height option
74
+ - Parallax effect
75
+ - Video background support
76
+ - Responsive design
77
+ - Customizable column sizing
78
+ - Content width control
79
+
80
+ ## Accessibility
81
+
82
+ - Screen reader: Title and content announced properly
83
+ - ARIA support: Proper roles and properties for hero components
84
+ - Keyboard support: Accessible via keyboard navigation
85
+ - Focus management: Maintains focus on interactive elements
86
+
87
+ ## Usage Examples
88
+
89
+ ### Basic Usage
90
+
91
+ \`\`\`tsx
92
+ <Hero
93
+ title="Hero Title"
94
+ subtitle="Hero Subtitle"
95
+ text="Hero text content"
96
+ />
97
+ \`\`\`
98
+
99
+ ### With Image
100
+
101
+ \`\`\`tsx
102
+ <Hero
103
+ title="Hero Title"
104
+ text="Hero text content"
105
+ imageSrc="/path/to/image.jpg"
106
+ imageAlt="Description of image"
107
+ />
108
+ \`\`\`
109
+
110
+ ## API Reference
111
+
112
+ ### Props
113
+
114
+ | Prop | Type | Default | Description |
115
+ | ---- | ---- | ------- | ----------- |
116
+ | title | string | - | Hero title |
117
+ | subtitle | string | - | Hero subtitle |
118
+ | text | string | - | Hero text content |
119
+ | imageSrc | string | - | Image source URL |
120
+ | imageAlt | string | - | Image alt text |
121
+ | alignment | 'left' \\| 'center' \\| 'right' | 'left' | Content alignment |
122
+ | backgroundImageSrc | string | - | Background image source URL |
123
+ | showOverlay | boolean | false | Show background overlay |
124
+ | fullViewportHeight | boolean | false | Make hero full viewport height |
125
+ | imageColSize | number | 6 | Image column size (1-12) |
126
+ | contentColSize | number | 6 | Content column size (1-12) |
127
+ | contentWidth | string | '536px' | Custom width for the hero content |
128
+ | parallax | boolean | false | Enable parallax effect on background image |
129
+ | parallaxIntensity | number | 0.5 | Parallax effect intensity (0-1) |
130
+ | videoBackground | string | - | Video background URL |
131
+ `,
34
132
  },
35
133
  },
36
134
  },
@@ -39,77 +137,122 @@ const meta = {
39
137
  title: {
40
138
  control: 'text',
41
139
  description: 'Hero title',
140
+ table: {
141
+ type: { summary: 'string' },
142
+ defaultValue: { summary: '-' },
143
+ },
42
144
  },
43
145
  subtitle: {
44
146
  control: 'text',
45
147
  description: 'Hero subtitle',
148
+ table: {
149
+ type: { summary: 'string' },
150
+ defaultValue: { summary: '-' },
151
+ },
46
152
  },
47
153
  text: {
48
154
  control: 'text',
49
155
  description: 'Hero text content',
156
+ table: {
157
+ type: { summary: 'string' },
158
+ defaultValue: { summary: '-' },
159
+ },
50
160
  },
51
161
  imageSrc: {
52
162
  control: 'text',
53
163
  description: 'Image source URL',
164
+ table: {
165
+ type: { summary: 'string' },
166
+ defaultValue: { summary: '-' },
167
+ },
54
168
  },
55
169
  imageAlt: {
56
170
  control: 'text',
57
171
  description: 'Image alt text',
172
+ table: {
173
+ type: { summary: 'string' },
174
+ defaultValue: { summary: '-' },
175
+ },
58
176
  },
59
177
  alignment: {
60
178
  control: { type: 'select', options: ['left', 'center', 'right'] },
61
179
  description: 'Content alignment',
180
+ table: {
181
+ type: { summary: '"left" | "center" | "right"' },
182
+ defaultValue: { summary: 'left' },
183
+ },
62
184
  },
63
185
  backgroundImageSrc: {
64
186
  control: 'text',
65
187
  description: 'Background image source URL',
188
+ table: {
189
+ type: { summary: 'string' },
190
+ defaultValue: { summary: '-' },
191
+ },
66
192
  },
67
193
  showOverlay: {
68
194
  control: 'boolean',
69
195
  description: 'Show background overlay',
196
+ table: {
197
+ type: { summary: 'boolean' },
198
+ defaultValue: { summary: false },
199
+ },
70
200
  },
71
201
  fullViewportHeight: {
72
202
  control: 'boolean',
73
203
  description: 'Make hero full viewport height',
204
+ table: {
205
+ type: { summary: 'boolean' },
206
+ defaultValue: { summary: false },
207
+ },
74
208
  },
75
209
  imageColSize: {
76
210
  control: { type: 'range', min: 1, max: 12, step: 1 },
77
211
  description: 'Image column size (1-12)',
212
+ table: {
213
+ type: { summary: 'number' },
214
+ defaultValue: { summary: 6 },
215
+ },
78
216
  },
79
217
  contentColSize: {
80
218
  control: { type: 'range', min: 1, max: 12, step: 1 },
81
219
  description: 'Content column size (1-12)',
220
+ table: {
221
+ type: { summary: 'number' },
222
+ defaultValue: { summary: 6 },
223
+ },
82
224
  },
83
225
  contentWidth: {
84
226
  control: 'text',
85
227
  description: 'Custom width for the hero content (e.g., "800px", "50%")',
86
228
  table: {
229
+ type: { summary: 'string' },
87
230
  defaultValue: { summary: '536px' },
88
231
  },
89
232
  },
90
233
  parallax: {
91
234
  control: 'boolean',
92
235
  description: 'Enable parallax effect on background image',
236
+ table: {
237
+ type: { summary: 'boolean' },
238
+ defaultValue: { summary: false },
239
+ },
93
240
  },
94
241
  parallaxIntensity: {
95
242
  control: { type: 'range', min: 0, max: 1, step: 0.1 },
96
243
  description: 'Parallax effect intensity (0-1)',
244
+ table: {
245
+ type: { summary: 'number' },
246
+ defaultValue: { summary: 0.5 },
247
+ },
97
248
  },
98
249
  videoBackground: {
99
250
  control: 'text',
100
251
  description: 'Video background URL',
101
- },
102
- glass: {
103
- control: 'object',
104
- description: 'Glass effect properties or boolean to enable/disable',
105
- },
106
- videoOptions: {
107
- control: 'object',
108
- description: 'Video background options',
109
- },
110
- backgroundSlider: {
111
- control: 'object',
112
- description: 'Background slider configuration with multiple images/videos',
252
+ table: {
253
+ type: { summary: 'string' },
254
+ defaultValue: { summary: '-' },
255
+ },
113
256
  },
114
257
  },
115
258
  } satisfies Meta<typeof Hero>;
@@ -117,26 +260,84 @@ const meta = {
117
260
  export default meta;
118
261
  type Story = StoryObj<typeof meta>;
119
262
 
120
- // Helper for button actions
121
- const primaryActionButtons = (
122
- <>
123
- <Button label="Get Started" variant="primary" />
124
- <Button label="Learn More" variant="outline-secondary" />
125
- </>
126
- );
263
+ export const BasicUsage: Story = {
264
+ args: {
265
+ title: 'Discover Amazing Things',
266
+ subtitle: 'With Atomix Design System',
267
+ text: 'Our design system helps you build beautiful, consistent, and accessible user interfaces faster than ever before.',
268
+ alignment: 'center',
269
+ fullViewportHeight: true,
270
+ },
271
+ parameters: {
272
+ docs: {
273
+ description: {
274
+ story: 'Basic hero section with centered content and full viewport height.',
275
+ },
276
+ },
277
+ },
278
+ };
127
279
 
128
- const showcaseActionButtons = (
129
- <>
130
- <Button label="Explore Components" variant="primary" />
131
- <Button label="View Documentation" variant="outline-secondary" />
132
- </>
133
- );
280
+ export const WithImage: Story = {
281
+ args: {
282
+ title: 'Beautiful Interfaces',
283
+ subtitle: 'Crafted with Atomix',
284
+ text: 'Create stunning user experiences with our carefully designed components and guidelines.',
285
+ imageSrc: 'https://images.unsplash.com/photo-1517245386807-bb43f82c33c4?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1170&q=80',
286
+ imageAlt: 'Laptop with design interface',
287
+ alignment: 'left',
288
+ fullViewportHeight: false,
289
+ },
290
+ parameters: {
291
+ docs: {
292
+ description: {
293
+ story: 'Hero section with accompanying image on the side.',
294
+ },
295
+ },
296
+ },
297
+ };
134
298
 
135
- const demoText =
136
- 'Build modern, responsive interfaces with a clean, consistent design language. Our component library helps you create beautiful user experiences with minimal effort.';
299
+ export const WithBackgroundImage: Story = {
300
+ args: {
301
+ title: 'Adventure Awaits',
302
+ subtitle: 'Begin Your Journey',
303
+ text: 'Explore new possibilities and create amazing products with our design system.',
304
+ backgroundImageSrc: 'https://images.unsplash.com/photo-1506744038136-46273834b3fb?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1170&q=80',
305
+ showOverlay: true,
306
+ alignment: 'center',
307
+ fullViewportHeight: true,
308
+ },
309
+ parameters: {
310
+ docs: {
311
+ description: {
312
+ story: 'Hero section with background image and overlay.',
313
+ },
314
+ },
315
+ },
316
+ };
137
317
 
138
- const showcaseText =
139
- 'Atomix provides a complete design system with powerful, flexible components that follow best practices for accessibility, performance, and user experience.';
318
+ export const WithActions: Story = {
319
+ render: (args) => (
320
+ <Hero {...args}>
321
+ <div className={ACTIONS_CLASS}>
322
+ <Button variant="primary" size="lg" className="u-mr-3">Get Started</Button>
323
+ <Button variant="secondary" size="lg">Learn More</Button>
324
+ </div>
325
+ </Hero>
326
+ ),
327
+ args: {
328
+ title: 'Ready to Get Started?',
329
+ text: 'Join thousands of satisfied users who have transformed their design workflow.',
330
+ alignment: 'center',
331
+ fullViewportHeight: true,
332
+ },
333
+ parameters: {
334
+ docs: {
335
+ description: {
336
+ story: 'Hero section with call-to-action buttons.',
337
+ },
338
+ },
339
+ },
340
+ };
140
341
 
141
342
  /**
142
343
  * Default Hero component with right-aligned content and image
@@ -229,7 +430,7 @@ export const CenterAligned: Story = {
229
430
  /**
230
431
  * Hero with background image
231
432
  */
232
- export const WithBackgroundImage: Story = {
433
+ export const UniqueWithBackgroundImage: Story = {
233
434
  args: {
234
435
  ...Default.args,
235
436
  title: 'Powerful Design System',
@@ -649,3 +850,103 @@ export const FullHeightSlider: Story = {
649
850
  },
650
851
  },
651
852
  };
853
+
854
+ // Enhanced preview examples showcasing the most impressive capabilities
855
+ /**
856
+ * Premium showcase combining multiple advanced features
857
+ */
858
+ export const PremiumShowcase: Story = {
859
+ args: {
860
+ title: 'Premium Hero Experience',
861
+ subtitle: 'Advanced Capabilities Combined',
862
+ text: 'This hero combines multiple advanced features: glass effect, background slider with videos, full viewport height, and interactive elements for a premium user experience.',
863
+ alignment: 'center',
864
+ showOverlay: true,
865
+ fullViewportHeight: true,
866
+ glass: {
867
+ displacementScale: 50,
868
+ blurAmount: 2,
869
+ saturation: 150,
870
+ aberrationIntensity: 0.5,
871
+ cornerRadius: 20,
872
+ overLight: true,
873
+ mode: 'advanced',
874
+ },
875
+ actions: (
876
+ <>
877
+ <Button variant="primary" size="lg" className="u-mr-3" onClick={fn()}>
878
+ Explore Features
879
+ </Button>
880
+ <Button variant="secondary" size="lg" onClick={fn()}>
881
+ Get Started Now
882
+ </Button>
883
+ </>
884
+ ),
885
+ contentWidth: '900px',
886
+ backgroundSlider: {
887
+ slides: [
888
+ {
889
+ type: 'video',
890
+ src: 'https://cdn.pixabay.com/video/2023/08/17/173860-844114591_large.mp4',
891
+ videoOptions: {
892
+ autoplay: true,
893
+ loop: true,
894
+ muted: true,
895
+ posterUrl: 'https://picsum.photos/id/1015/1920/1080',
896
+ },
897
+ },
898
+ {
899
+ type: 'image',
900
+ src: 'https://picsum.photos/id/1018/1920/1080',
901
+ alt: 'Stunning landscape',
902
+ },
903
+ {
904
+ type: 'video',
905
+ src: 'https://cdn.pixabay.com/video/2023/11/18/189639-886016299_large.mp4',
906
+ videoOptions: {
907
+ autoplay: true,
908
+ loop: true,
909
+ muted: true,
910
+ posterUrl: 'https://picsum.photos/id/1025/1920/1080',
911
+ },
912
+ },
913
+ ],
914
+ autoplay: {
915
+ delay: 6000,
916
+ pauseOnHover: true,
917
+ },
918
+ loop: true,
919
+ transition: 'slide',
920
+ transitionDuration: 2000,
921
+ },
922
+ },
923
+ parameters: {
924
+ docs: {
925
+ description: {
926
+ story: 'Premium showcase combining multiple advanced features: glass effect, background slider with videos, full viewport height, and interactive elements.',
927
+ },
928
+ },
929
+ },
930
+ };
931
+
932
+ /**
933
+ * Minimalist design focusing on typography and content
934
+ */
935
+ export const MinimalistDesign: Story = {
936
+ args: {
937
+ title: 'Focus on What Matters',
938
+ subtitle: 'Clean & Minimal Approach',
939
+ text: 'Sometimes simplicity speaks louder than complexity. This minimalist hero focuses purely on your content with subtle animations and refined typography.',
940
+ alignment: 'center',
941
+ fullViewportHeight: true,
942
+ showOverlay: false,
943
+ contentWidth: '700px',
944
+ },
945
+ parameters: {
946
+ docs: {
947
+ description: {
948
+ story: 'Minimalist design focusing on typography and content, with subtle animations and refined aesthetics.',
949
+ },
950
+ },
951
+ },
952
+ };