@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.
- package/CHANGELOG.md +39 -0
- package/README.md +2 -0
- package/build-tools/EXAMPLES.md +372 -0
- package/build-tools/README.md +242 -0
- package/build-tools/__tests__/error-handler.test.js +230 -0
- package/build-tools/__tests__/index.test.js +141 -0
- package/build-tools/__tests__/rollup-plugin.test.js +194 -0
- package/build-tools/__tests__/utils.test.js +161 -0
- package/build-tools/__tests__/vite-plugin.test.js +129 -0
- package/build-tools/__tests__/webpack-loader.test.js +190 -0
- package/build-tools/error-handler.js +308 -0
- package/build-tools/index.d.ts +43 -0
- package/build-tools/index.js +88 -0
- package/build-tools/package.json +67 -0
- package/build-tools/rollup-plugin.js +236 -0
- package/build-tools/types.d.ts +163 -0
- package/build-tools/utils.js +203 -0
- package/build-tools/vite-plugin.js +161 -0
- package/build-tools/webpack-loader.js +123 -0
- package/dist/atomix.css +298 -167
- package/dist/atomix.css.map +1 -1
- package/dist/atomix.min.css +3 -3
- package/dist/atomix.min.css.map +1 -1
- package/dist/build-tools/EXAMPLES.md +372 -0
- package/dist/build-tools/README.md +242 -0
- package/dist/build-tools/__tests__/error-handler.test.js +230 -0
- package/dist/build-tools/__tests__/index.test.js +141 -0
- package/dist/build-tools/__tests__/rollup-plugin.test.js +194 -0
- package/dist/build-tools/__tests__/utils.test.js +161 -0
- package/dist/build-tools/__tests__/vite-plugin.test.js +129 -0
- package/dist/build-tools/__tests__/webpack-loader.test.js +190 -0
- package/dist/build-tools/error-handler.js +308 -0
- package/dist/build-tools/index.d.ts +43 -0
- package/dist/build-tools/index.js +88 -0
- package/dist/build-tools/package.json +67 -0
- package/dist/build-tools/rollup-plugin.js +236 -0
- package/dist/build-tools/types.d.ts +163 -0
- package/dist/build-tools/utils.js +203 -0
- package/dist/build-tools/vite-plugin.js +161 -0
- package/dist/build-tools/webpack-loader.js +123 -0
- package/dist/charts.d.ts +2 -2
- package/dist/charts.js +87 -58
- package/dist/charts.js.map +1 -1
- package/dist/core.d.ts +42 -12
- package/dist/core.js +175 -135
- package/dist/core.js.map +1 -1
- package/dist/forms.d.ts +30 -16
- package/dist/forms.js +146 -131
- package/dist/forms.js.map +1 -1
- package/dist/heavy.d.ts +2 -2
- package/dist/heavy.js +151 -118
- package/dist/heavy.js.map +1 -1
- package/dist/index.d.ts +130 -106
- package/dist/index.esm.js +1083 -465
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +1102 -483
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +1 -1
- package/dist/index.min.js.map +1 -1
- package/dist/theme.d.ts +27 -2
- package/dist/theme.js +721 -108
- package/dist/theme.js.map +1 -1
- package/package.json +23 -8
- package/scripts/atomix-cli.js +749 -1153
- package/scripts/cli/__tests__/README.md +81 -0
- package/scripts/cli/__tests__/basic.test.js +115 -0
- package/scripts/cli/__tests__/component-generator.test.js +332 -0
- package/scripts/cli/__tests__/integration.test.js +327 -0
- package/scripts/cli/__tests__/test-setup.js +133 -0
- package/scripts/cli/__tests__/token-manager.test.js +251 -0
- package/scripts/cli/__tests__/utils.test.js +78 -118
- package/scripts/cli/component-generator.js +564 -0
- package/scripts/cli/dependency-checker.js +355 -0
- package/scripts/cli/documentation-sync.js +542 -0
- package/scripts/cli/interactive-init.js +129 -292
- package/scripts/cli/mappings.js +211 -0
- package/scripts/cli/migration-tools.js +95 -288
- package/scripts/cli/template-manager.js +105 -0
- package/scripts/cli/templates/README.md +123 -0
- package/scripts/cli/templates/common-templates.js +636 -0
- package/scripts/cli/templates/composable-templates.js +171 -0
- package/scripts/cli/templates/config-templates.js +126 -0
- package/scripts/cli/templates/index.js +102 -0
- package/scripts/cli/templates/project-templates.js +342 -0
- package/scripts/cli/templates/react-templates.js +331 -0
- package/scripts/cli/templates/scss-templates.js +155 -0
- package/scripts/cli/templates/storybook-templates.js +236 -0
- package/scripts/cli/templates/testing-templates.js +224 -0
- package/scripts/cli/templates/testing-utils.js +278 -0
- package/scripts/cli/templates/token-templates.js +447 -0
- package/scripts/cli/templates/types-templates.js +147 -0
- package/scripts/cli/templates.js +35 -0
- package/scripts/cli/theme-bridge.js +28 -16
- package/scripts/cli/token-manager.js +432 -247
- package/scripts/cli/utils.js +37 -26
- package/src/components/Accordion/Accordion.stories.tsx +369 -870
- package/src/components/Accordion/Accordion.test.tsx +57 -0
- package/src/components/Accordion/Accordion.tsx +4 -0
- package/src/components/AtomixGlass/AtomixGlass.tsx +80 -39
- package/src/components/AtomixGlass/AtomixGlassContainer.tsx +103 -81
- package/src/components/AtomixGlass/__snapshots__/AtomixGlass.test.tsx.snap +8 -7
- package/src/components/AtomixGlass/glass-utils.ts +2 -2
- package/src/components/AtomixGlass/shader-utils.ts +5 -0
- package/src/components/AtomixGlass/stories/Customization.stories.tsx +131 -0
- package/src/components/AtomixGlass/stories/Examples.stories.tsx +2965 -2861
- package/src/components/AtomixGlass/stories/Modes.stories.tsx +1 -1
- package/src/components/AtomixGlass/stories/Overview.stories.tsx +348 -0
- package/src/components/AtomixGlass/stories/Performance.stories.tsx +103 -0
- package/src/components/AtomixGlass/stories/Playground.stories.tsx +73 -59
- package/src/components/AtomixGlass/stories/{ShaderVariants.stories.tsx → Shaders.stories.tsx} +1 -1
- package/src/components/AtomixGlass/stories/shared-components.tsx +90 -190
- package/src/components/Avatar/Avatar.stories.tsx +239 -27
- package/src/components/Badge/Badge.stories.tsx +132 -373
- package/src/components/Badge/Badge.test.tsx +51 -0
- package/src/components/Badge/Badge.tsx +20 -1
- package/src/components/Block/Block.stories.tsx +26 -17
- package/src/components/Breadcrumb/Breadcrumb.stories.tsx +141 -23
- package/src/components/Breadcrumb/Breadcrumb.tsx +2 -2
- package/src/components/Button/Button.stories.tsx +463 -1126
- package/src/components/Button/Button.test.tsx +107 -0
- package/src/components/Button/Button.tsx +50 -54
- package/src/components/Button/ButtonGroup.stories.tsx +373 -217
- package/src/components/Button/README.md +5 -0
- package/src/components/Callout/Callout.stories.tsx +299 -644
- package/src/components/Callout/Callout.test.tsx +10 -10
- package/src/components/Callout/Callout.tsx +7 -7
- package/src/components/Callout/README.md +9 -8
- package/src/components/Card/Card.stories.tsx +248 -68
- package/src/components/Card/Card.tsx +2 -2
- package/src/components/Chart/Chart.stories.tsx +156 -14
- package/src/components/Chart/Chart.tsx +1 -1
- package/src/components/ColorModeToggle/ColorModeToggle.stories.tsx +151 -69
- package/src/components/Countdown/Countdown.stories.tsx +115 -8
- package/src/components/DataTable/DataTable.stories.tsx +346 -146
- package/src/components/DataTable/DataTable.tsx +14 -12
- package/src/components/DatePicker/DatePicker.stories.tsx +325 -1066
- package/src/components/Dropdown/Dropdown.stories.tsx +157 -37
- package/src/components/EdgePanel/EdgePanel.stories.tsx +230 -21
- package/src/components/Footer/Footer.stories.tsx +392 -328
- package/src/components/Form/Checkbox.stories.tsx +143 -9
- package/src/components/Form/Checkbox.test.tsx +63 -0
- package/src/components/Form/Checkbox.tsx +90 -52
- package/src/components/Form/Form.stories.tsx +121 -22
- package/src/components/Form/FormGroup.stories.tsx +128 -5
- package/src/components/Form/Input.stories.tsx +28 -16
- package/src/components/Form/Input.test.tsx +59 -0
- package/src/components/Form/Input.tsx +97 -95
- package/src/components/Form/Radio.stories.tsx +232 -97
- package/src/components/Form/Radio.tsx +2 -2
- package/src/components/Form/Select.stories.tsx +144 -12
- package/src/components/Form/Select.tsx +2 -2
- package/src/components/Form/Textarea.stories.tsx +171 -13
- package/src/components/Form/Textarea.test.tsx +45 -0
- package/src/components/Form/Textarea.tsx +88 -86
- package/src/components/Hero/Hero.stories.tsx +333 -32
- package/src/components/List/List.stories.tsx +143 -5
- package/src/components/Modal/Modal.stories.tsx +185 -46
- package/src/components/Navigation/Navbar/Navbar.stories.tsx +5 -5
- package/src/components/Navigation/Navbar/Navbar.tsx +1 -1
- package/src/components/Navigation/README.md +1 -1
- package/src/components/Pagination/Pagination.stories.tsx +5 -2
- package/src/components/Pagination/Pagination.tsx +1 -1
- package/src/components/PhotoViewer/PhotoViewer.stories.tsx +10 -10
- package/src/components/Popover/Popover.stories.tsx +449 -99
- package/src/components/ProductReview/ProductReview.tsx +1 -1
- package/src/components/Progress/Progress.stories.tsx +167 -5
- package/src/components/Progress/Progress.tsx +46 -46
- package/src/components/Rating/Rating.stories.tsx +4 -4
- package/src/components/Rating/Rating.tsx +8 -8
- package/src/components/River/River.stories.tsx +1 -1
- package/src/components/SectionIntro/SectionIntro.stories.tsx +240 -48
- package/src/components/Slider/Slider.stories.tsx +63 -63
- package/src/components/Spinner/Spinner.stories.tsx +104 -10
- package/src/components/Spinner/Spinner.test.tsx +35 -0
- package/src/components/Spinner/Spinner.tsx +9 -2
- package/src/components/Steps/Steps.stories.tsx +172 -43
- package/src/components/Tabs/Tabs.stories.tsx +136 -10
- package/src/components/Testimonial/Testimonial.stories.tsx +121 -4
- package/src/components/Todo/Todo.stories.tsx +198 -9
- package/src/components/Toggle/Toggle.stories.tsx +153 -43
- package/src/components/Toggle/Toggle.test.tsx +91 -0
- package/src/components/Toggle/Toggle.tsx +44 -27
- package/src/components/Tooltip/Tooltip.stories.tsx +194 -104
- package/src/components/Tooltip/Tooltip.tsx +1 -1
- package/src/components/Upload/Upload.stories.tsx +113 -24
- package/src/layouts/Grid/Grid.stories.tsx +49 -49
- package/src/layouts/MasonryGrid/MasonryGrid.stories.tsx +2 -2
- package/src/lib/README.md +2 -2
- package/src/lib/__tests__/theme-tools.test.ts +193 -0
- package/src/lib/composables/index.ts +2 -2
- package/src/lib/composables/useAccordion.ts +12 -3
- package/src/lib/composables/useAtomixGlass.ts +28 -56
- package/src/lib/composables/useBreadcrumb.ts +2 -2
- package/src/lib/composables/useCallout.ts +7 -7
- package/src/lib/composables/useChartExport.ts +2 -7
- package/src/lib/composables/useDataTable.ts +46 -29
- package/src/lib/composables/useNavbar.ts +1 -1
- package/src/lib/constants/components.ts +10 -33
- package/src/lib/storybook/InteractiveDemo.tsx +113 -0
- package/src/lib/storybook/PreviewContainer.tsx +36 -0
- package/src/lib/storybook/VariantsGrid.tsx +21 -0
- package/src/lib/storybook/index.ts +3 -0
- package/src/lib/theme/core/createThemeObject.ts +9 -5
- package/src/lib/theme/devtools/CLI.ts +155 -0
- package/src/lib/theme/devtools/DesignTokensCustomizer.stories.tsx +213 -0
- package/src/lib/theme/devtools/DesignTokensCustomizer.tsx +566 -0
- package/src/lib/theme/devtools/LiveEditor.tsx +2 -1
- package/src/lib/theme/devtools/index.ts +3 -0
- package/src/lib/theme/errors/errors.ts +8 -0
- package/src/lib/theme/runtime/ThemeProvider.tsx +117 -57
- package/src/lib/theme/runtime/__tests__/ThemeProvider.integration.test.tsx +305 -0
- package/src/lib/theme/runtime/__tests__/ThemeProvider.test.tsx +588 -0
- package/src/lib/theme/utils/__tests__/themeValidation.test.ts +264 -0
- package/src/lib/theme/utils/index.ts +1 -0
- package/src/lib/theme/utils/themeValidation.ts +501 -0
- package/src/lib/theme-tools.ts +32 -3
- package/src/lib/types/components.ts +82 -27
- package/src/lib/utils/__tests__/csv.test.ts +45 -0
- package/src/lib/utils/csv.ts +17 -0
- package/src/lib/utils/dataTableExport.ts +1 -10
- package/src/lib/utils/themeNaming.ts +1 -1
- package/src/styles/01-settings/_index.scss +2 -1
- package/src/styles/01-settings/_settings.accordion.scss +28 -7
- package/src/styles/01-settings/_settings.colors.scss +11 -11
- package/src/styles/01-settings/_settings.typography.scss +5 -5
- package/src/styles/02-tools/_tools.utility-api.scss +14 -0
- package/src/styles/06-components/_components.accordion.scss +56 -14
- package/src/styles/06-components/_components.callout.scss +29 -33
- package/src/styles/06-components/_components.checkbox.scss +23 -17
- package/src/styles/06-components/_index.scss +1 -1
- package/src/styles/99-utilities/_index.scss +2 -0
- package/src/styles/99-utilities/_utilities.display.scss +14 -3
- package/src/styles/99-utilities/_utilities.flex.scss +10 -10
- package/src/styles/99-utilities/_utilities.scss +3 -1
- package/src/styles/99-utilities/_utilities.text-gradient.scss +45 -0
- package/src/styles/99-utilities/_utilities.text.scss +28 -8
- package/themes/dark-complementary/README.md +98 -0
- package/themes/dark-complementary/index.scss +158 -0
- package/themes/default-light/README.md +81 -0
- package/themes/default-light/index.scss +154 -0
- package/themes/high-contrast/README.md +105 -0
- package/themes/high-contrast/index.scss +172 -0
- package/themes/test-theme/README.md +38 -0
- package/themes/test-theme/index.scss +47 -0
- package/scripts/cli/__tests__/cli-commands.test.js +0 -204
- package/scripts/cli/__tests__/vitest.config.js +0 -26
- package/src/components/AtomixGlass/stories/AtomixGlass.stories.tsx +0 -1438
- package/src/lib/composables/useButton.ts +0 -93
- 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
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
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
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
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
|
-
|
|
58
|
-
|
|
58
|
+
// Custom styles for glass effect
|
|
59
|
+
const glassStyles = glass ? {} : {};
|
|
59
60
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
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
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
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
|
-
|
|
99
|
+
const glassProps = glass === true ? defaultGlassProps : { ...defaultGlassProps, ...glass };
|
|
98
100
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
+
return <AtomixGlass {...glassProps}>{textareaElement}</AtomixGlass>;
|
|
102
|
+
}
|
|
101
103
|
|
|
102
|
-
|
|
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
|
-
|
|
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
|
-
|
|
103
|
-
|
|
104
|
-
|
|
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
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
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
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
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
|
|
136
|
-
|
|
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
|
|
139
|
-
|
|
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
|
|
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
|
+
};
|