@shohojdhara/atomix 0.3.14 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +20 -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 +44 -0
- package/build-tools/index.js +88 -0
- package/build-tools/package.json +50 -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 +21044 -2618
- package/dist/atomix.css.map +1 -1
- package/dist/atomix.min.css +77 -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 +44 -0
- package/dist/build-tools/index.js +88 -0
- package/dist/build-tools/package.json +50 -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 +1 -1
- package/dist/charts.js +86 -57
- package/dist/charts.js.map +1 -1
- package/dist/core.d.ts +1 -1
- package/dist/core.js +136 -112
- package/dist/core.js.map +1 -1
- package/dist/forms.d.ts +2 -5
- package/dist/forms.js +140 -128
- package/dist/forms.js.map +1 -1
- package/dist/heavy.d.ts +1 -1
- package/dist/heavy.js +136 -112
- package/dist/heavy.js.map +1 -1
- package/dist/index.d.ts +152 -78
- package/dist/index.esm.js +346 -340
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +359 -353
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +1 -1
- package/dist/index.min.js.map +1 -1
- package/dist/layout.js.map +1 -1
- package/dist/theme.d.ts +9 -9
- package/dist/theme.js.map +1 -1
- package/package.json +23 -8
- package/scripts/atomix-cli.js +170 -73
- 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 +161 -0
- package/scripts/cli/component-generator.js +253 -299
- package/scripts/cli/dependency-checker.js +355 -0
- package/scripts/cli/interactive-init.js +46 -5
- package/scripts/cli/template-manager.js +0 -2
- package/scripts/cli/templates/common-templates.js +636 -0
- package/scripts/cli/templates/composable-templates.js +148 -126
- package/scripts/cli/templates/index.js +23 -16
- package/scripts/cli/templates/project-templates.js +151 -23
- package/scripts/cli/templates/react-templates.js +280 -210
- package/scripts/cli/templates/scss-templates.js +90 -91
- package/scripts/cli/templates/testing-templates.js +206 -27
- package/scripts/cli/templates/testing-utils.js +278 -0
- package/scripts/cli/templates/types-templates.js +70 -56
- package/scripts/cli/theme-bridge.js +8 -2
- package/scripts/cli/token-manager.js +318 -206
- package/scripts/cli/utils.js +0 -1
- package/src/components/Accordion/Accordion.stories.tsx +358 -850
- package/src/components/Accordion/Accordion.test.tsx +70 -50
- package/src/components/Accordion/Accordion.tsx +99 -94
- package/src/components/AtomixGlass/AtomixGlass.test.tsx +1 -1
- package/src/components/AtomixGlass/AtomixGlass.tsx +80 -39
- package/src/components/AtomixGlass/AtomixGlassContainer.tsx +103 -81
- package/src/components/AtomixGlass/GlassFilter.tsx +9 -16
- package/src/components/AtomixGlass/__snapshots__/AtomixGlass.test.tsx.snap +8 -7
- package/src/components/AtomixGlass/glass-utils.ts +6 -5
- package/src/components/AtomixGlass/shader-utils.ts +133 -52
- package/src/components/AtomixGlass/stories/Customization.stories.tsx +131 -0
- package/src/components/AtomixGlass/stories/Examples.stories.tsx +2957 -2853
- 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 +51 -36
- package/src/components/AtomixGlass/stories/{ShaderVariants.stories.tsx → Shaders.stories.tsx} +2 -2
- package/src/components/AtomixGlass/stories/shared-components.tsx +90 -190
- package/src/components/Avatar/Avatar.stories.tsx +195 -0
- package/src/components/Avatar/Avatar.tsx +58 -56
- package/src/components/Badge/Badge.stories.tsx +122 -352
- package/src/components/Badge/Badge.test.tsx +41 -41
- package/src/components/Badge/Badge.tsx +64 -62
- package/src/components/Block/Block.stories.tsx +30 -11
- package/src/components/Breadcrumb/Breadcrumb.stories.tsx +142 -23
- package/src/components/Breadcrumb/Breadcrumb.tsx +62 -60
- package/src/components/Button/Button.stories.tsx +454 -1126
- package/src/components/Button/Button.test.tsx +123 -0
- package/src/components/Button/Button.tsx +88 -60
- package/src/components/Button/ButtonGroup.stories.tsx +376 -215
- package/src/components/Button/ButtonGroup.tsx +4 -15
- package/src/components/Callout/Callout.stories.tsx +316 -568
- package/src/components/Card/Card.stories.tsx +292 -81
- package/src/components/Card/Card.tsx +30 -14
- package/src/components/Chart/AreaChart.tsx +1 -1
- package/src/components/Chart/CandlestickChart.tsx +23 -16
- package/src/components/Chart/Chart.stories.tsx +153 -16
- package/src/components/Chart/Chart.tsx +40 -44
- package/src/components/Chart/ChartRenderer.tsx +39 -12
- package/src/components/Chart/ChartToolbar.tsx +21 -5
- package/src/components/Chart/DonutChart.tsx +1 -1
- package/src/components/Chart/FunnelChart.tsx +4 -1
- package/src/components/Chart/GaugeChart.tsx +3 -1
- package/src/components/Chart/HeatmapChart.tsx +50 -37
- package/src/components/Chart/LineChart.tsx +3 -2
- package/src/components/Chart/MultiAxisChart.tsx +24 -16
- package/src/components/Chart/RadarChart.tsx +19 -17
- package/src/components/Chart/ScatterChart.tsx +29 -21
- package/src/components/ColorModeToggle/ColorModeToggle.stories.tsx +152 -66
- package/src/components/ColorModeToggle/ColorModeToggle.tsx +15 -3
- package/src/components/Countdown/Countdown.stories.tsx +114 -7
- package/src/components/DataTable/DataTable.stories.tsx +349 -144
- package/src/components/DataTable/DataTable.test.tsx +26 -148
- package/src/components/DataTable/DataTable.tsx +485 -456
- package/src/components/DatePicker/DatePicker.stories.tsx +310 -1066
- package/src/components/DatePicker/DatePicker.tsx +31 -26
- package/src/components/Dropdown/Dropdown.stories.tsx +153 -36
- package/src/components/Dropdown/Dropdown.tsx +313 -299
- package/src/components/EdgePanel/EdgePanel.stories.tsx +221 -25
- package/src/components/EdgePanel/EdgePanel.tsx +1 -3
- package/src/components/Footer/Footer.stories.tsx +396 -327
- package/src/components/Footer/Footer.tsx +130 -128
- package/src/components/Footer/FooterLink.tsx +2 -2
- package/src/components/Form/Checkbox.stories.tsx +140 -6
- package/src/components/Form/Checkbox.test.tsx +63 -0
- package/src/components/Form/Checkbox.tsx +122 -78
- package/src/components/Form/Form.stories.tsx +110 -19
- package/src/components/Form/FormGroup.stories.tsx +127 -4
- package/src/components/Form/Input.stories.tsx +22 -39
- package/src/components/Form/Input.test.tsx +38 -44
- package/src/components/Form/Radio.stories.tsx +146 -17
- package/src/components/Form/Radio.tsx +68 -66
- package/src/components/Form/Select.stories.tsx +140 -8
- package/src/components/Form/Select.tsx +184 -182
- package/src/components/Form/Textarea.stories.tsx +149 -6
- package/src/components/Form/Textarea.test.tsx +27 -32
- package/src/components/Hero/Hero.stories.tsx +372 -38
- package/src/components/Hero/Hero.tsx +201 -55
- package/src/components/Icon/index.ts +7 -1
- package/src/components/List/List.stories.tsx +141 -3
- package/src/components/List/List.tsx +19 -23
- package/src/components/Modal/Modal.stories.tsx +183 -43
- package/src/components/Modal/Modal.tsx +130 -127
- package/src/components/Navigation/Menu/MegaMenu.tsx +70 -70
- package/src/components/Navigation/Nav/NavDropdown.tsx +1 -5
- package/src/components/Navigation/SideMenu/SideMenu.stories.tsx +128 -28
- package/src/components/Navigation/SideMenu/SideMenu.tsx +5 -7
- package/src/components/Navigation/SideMenu/SideMenuItem.tsx +4 -5
- package/src/components/Pagination/Pagination.stories.tsx +7 -4
- package/src/components/Pagination/Pagination.tsx +199 -202
- package/src/components/PhotoViewer/PhotoViewer.tsx +4 -1
- package/src/components/Popover/Popover.stories.tsx +354 -97
- package/src/components/Popover/Popover.tsx +41 -37
- package/src/components/Progress/Progress.stories.tsx +160 -7
- package/src/components/River/River.stories.tsx +3 -2
- package/src/components/SectionIntro/SectionIntro.stories.tsx +239 -47
- package/src/components/Slider/Slider.stories.tsx +12 -4
- package/src/components/Spinner/Spinner.stories.tsx +104 -8
- package/src/components/Spinner/Spinner.test.tsx +23 -23
- package/src/components/Spinner/Spinner.tsx +43 -46
- package/src/components/Steps/Steps.stories.tsx +173 -42
- package/src/components/Tabs/Tabs.stories.tsx +141 -12
- package/src/components/Tabs/Tabs.tsx +74 -72
- package/src/components/Testimonial/Testimonial.stories.tsx +120 -3
- package/src/components/Todo/Todo.stories.tsx +198 -9
- package/src/components/Toggle/Toggle.stories.tsx +137 -36
- package/src/components/Toggle/Toggle.test.tsx +65 -70
- package/src/components/Toggle/Toggle.tsx +4 -1
- package/src/components/Tooltip/Tooltip.stories.tsx +194 -100
- package/src/components/Tooltip/Tooltip.tsx +104 -106
- package/src/components/Upload/Upload.stories.tsx +241 -150
- package/src/components/Upload/Upload.tsx +287 -283
- package/src/components/VideoPlayer/VideoPlayer.tsx +6 -1
- package/src/components/index.ts +13 -2
- package/src/layouts/Grid/Grid.stories.tsx +9 -3
- package/src/layouts/MasonryGrid/MasonryGrid.tsx +5 -1
- package/src/lib/README.md +2 -2
- package/src/lib/__tests__/theme-tools.test.ts +219 -0
- package/src/lib/composables/index.ts +2 -2
- package/src/lib/composables/shared-mouse-tracker.ts +13 -14
- package/src/lib/composables/useAtomixGlass.ts +126 -97
- package/src/lib/composables/useChartExport.ts +3 -8
- package/src/lib/composables/useDataTable.ts +72 -43
- package/src/lib/composables/useHero.ts +58 -14
- package/src/lib/composables/useHeroBackgroundSlider.ts +2 -9
- package/src/lib/composables/useInput.ts +10 -8
- package/src/lib/composables/useSideMenu.ts +6 -5
- package/src/lib/composables/useTooltip.ts +1 -2
- package/src/lib/composables/useVideoPlayer.ts +44 -35
- package/src/lib/config/index.ts +154 -154
- package/src/lib/constants/components.ts +9 -32
- package/src/lib/constants/cssVariables.ts +29 -29
- package/src/lib/hooks/__tests__/useComponentCustomization.test.ts +2 -6
- package/src/lib/hooks/index.ts +1 -1
- package/src/lib/hooks/useComponentCustomization.ts +11 -17
- package/src/lib/hooks/usePerformanceMonitor.ts +6 -7
- package/src/lib/patterns/__tests__/slots.test.ts +1 -1
- package/src/lib/patterns/index.ts +1 -1
- package/src/lib/patterns/slots.tsx +8 -13
- package/src/lib/storybook/InteractiveDemo.tsx +13 -18
- package/src/lib/storybook/PreviewContainer.tsx +1 -1
- package/src/lib/storybook/VariantsGrid.tsx +3 -7
- package/src/lib/storybook/index.ts +1 -1
- package/src/lib/theme/adapters/cssVariableMapper.ts +47 -74
- package/src/lib/theme/adapters/index.ts +3 -9
- package/src/lib/theme/adapters/themeAdapter.ts +41 -26
- package/src/lib/theme/config/index.ts +1 -1
- package/src/lib/theme/config/types.ts +2 -2
- package/src/lib/theme/config/validator.ts +10 -5
- package/src/lib/theme/constants/constants.ts +2 -2
- package/src/lib/theme/constants/index.ts +1 -2
- package/src/lib/theme/core/__tests__/createTheme.test.ts +20 -22
- package/src/lib/theme/core/composeTheme.ts +32 -26
- package/src/lib/theme/core/createTheme.ts +1 -1
- package/src/lib/theme/core/createThemeObject.ts +308 -301
- package/src/lib/theme/core/index.ts +3 -3
- package/src/lib/theme/devtools/CLI.ts +107 -105
- package/src/lib/theme/devtools/Comparator.tsx +50 -32
- package/src/lib/theme/devtools/DesignTokensCustomizer.stories.tsx +50 -48
- package/src/lib/theme/devtools/DesignTokensCustomizer.tsx +257 -63
- package/src/lib/theme/devtools/Inspector.tsx +75 -60
- package/src/lib/theme/devtools/LiveEditor.tsx +97 -76
- package/src/lib/theme/devtools/Preview.tsx +150 -106
- package/src/lib/theme/devtools/ThemeValidator.ts +29 -21
- package/src/lib/theme/devtools/index.ts +3 -9
- package/src/lib/theme/devtools/useHistory.ts +23 -21
- package/src/lib/theme/errors/errors.ts +12 -11
- package/src/lib/theme/errors/index.ts +2 -7
- package/src/lib/theme/generators/generateCSS.ts +9 -13
- package/src/lib/theme/generators/generateCSSNested.ts +1 -6
- package/src/lib/theme/generators/generateCSSVariables.ts +673 -630
- package/src/lib/theme/generators/index.ts +1 -4
- package/src/lib/theme/i18n/index.ts +1 -1
- package/src/lib/theme/i18n/rtl.ts +13 -13
- package/src/lib/theme/index.ts +7 -16
- package/src/lib/theme/runtime/ThemeApplicator.ts +4 -4
- package/src/lib/theme/runtime/ThemeContext.tsx +1 -1
- package/src/lib/theme/runtime/ThemeErrorBoundary.tsx +19 -23
- package/src/lib/theme/runtime/ThemeProvider.tsx +230 -239
- package/src/lib/theme/runtime/__tests__/ThemeProvider.integration.test.tsx +1 -1
- package/src/lib/theme/runtime/__tests__/ThemeProvider.test.tsx +24 -29
- package/src/lib/theme/runtime/index.ts +2 -5
- package/src/lib/theme/runtime/useTheme.ts +18 -18
- package/src/lib/theme/runtime/useThemeTokens.ts +22 -22
- package/src/lib/theme/test/testTheme.ts +15 -16
- package/src/lib/theme/tokens/index.ts +2 -7
- package/src/lib/theme/tokens/tokens.ts +25 -24
- package/src/lib/theme/types.ts +428 -411
- package/src/lib/theme/utils/__tests__/themeValidation.test.ts +3 -3
- package/src/lib/theme/utils/componentTheming.ts +18 -18
- package/src/lib/theme/utils/domUtils.ts +277 -289
- package/src/lib/theme/utils/index.ts +1 -2
- package/src/lib/theme/utils/injectCSS.ts +10 -14
- package/src/lib/theme/utils/naming.ts +20 -16
- package/src/lib/theme/utils/themeHelpers.ts +10 -12
- package/src/lib/theme/utils/themeUtils.ts +85 -86
- package/src/lib/theme/utils/themeValidation.ts +82 -33
- package/src/lib/theme-tools.ts +8 -6
- package/src/lib/types/components.ts +172 -71
- package/src/lib/types/partProps.ts +1 -1
- package/src/lib/utils/__tests__/csv.test.ts +45 -0
- package/src/lib/utils/componentUtils.ts +8 -12
- package/src/lib/utils/csv.ts +19 -0
- package/src/lib/utils/dataTableExport.ts +2 -15
- package/src/lib/utils/fontPreloader.ts +10 -19
- package/src/lib/utils/icons.ts +4 -1
- package/src/lib/utils/index.ts +2 -6
- package/src/lib/utils/memoryMonitor.ts +10 -8
- package/src/lib/utils/themeNaming.ts +2 -2
- package/src/styles/01-settings/_index.scss +1 -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.design-tokens.scss +61 -50
- package/src/styles/01-settings/_settings.navbar.scss +1 -1
- package/src/styles/01-settings/_settings.spacing.scss +3 -4
- package/src/styles/01-settings/_settings.tooltip.scss +1 -1
- package/src/styles/01-settings/_settings.typography.scss +4 -4
- package/src/styles/02-tools/_tools.button.scss +51 -21
- package/src/styles/02-tools/_tools.utility-api.scss +38 -12
- package/src/styles/03-generic/_generic.root.scss +4 -3
- package/src/styles/06-components/_components.accordion.scss +56 -14
- package/src/styles/06-components/_components.atomix-glass.scss +13 -9
- package/src/styles/06-components/_components.button.scss +16 -4
- package/src/styles/06-components/_components.callout.scss +27 -21
- package/src/styles/06-components/_components.card.scss +5 -14
- package/src/styles/06-components/_components.chart.scss +22 -19
- package/src/styles/06-components/_components.checkbox.scss +25 -17
- package/src/styles/06-components/_components.color-mode-toggle.scss +3 -1
- package/src/styles/06-components/_components.edge-panel.scss +9 -2
- package/src/styles/06-components/_components.footer.scss +1 -1
- package/src/styles/06-components/_components.side-menu.scss +5 -5
- package/src/styles/06-components/_components.toggle.scss +18 -0
- package/src/styles/06-components/_index.scss +1 -1
- package/src/styles/06-components/old.chart.styles.scss +0 -2
- package/src/styles/99-utilities/_index.scss +2 -0
- package/src/styles/99-utilities/_utilities.border.scss +69 -27
- package/src/styles/99-utilities/_utilities.display.scss +1 -1
- package/src/styles/99-utilities/_utilities.opacity.scss +10 -0
- package/src/styles/99-utilities/_utilities.position.scss +16 -9
- package/src/styles/99-utilities/_utilities.scss +2 -0
- package/src/styles/99-utilities/_utilities.sizes.scss +47 -18
- package/src/styles/99-utilities/_utilities.spacing.scss +118 -66
- package/src/styles/99-utilities/_utilities.text-gradient.scss +45 -0
- package/src/styles/99-utilities/_utilities.text.scss +67 -46
- 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/templates-original-backup.js +0 -1655
- package/scripts/cli/templates_backup.js +0 -684
- 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
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import type { Meta, StoryObj } from '@storybook/react';
|
|
3
|
+
import { fn } from '@storybook/test';
|
|
3
4
|
import { Spinner } from './Spinner';
|
|
4
5
|
import { THEME_COLORS, SIZES } from '../../lib/constants/components';
|
|
5
6
|
|
|
@@ -10,8 +11,56 @@ const meta = {
|
|
|
10
11
|
layout: 'centered',
|
|
11
12
|
docs: {
|
|
12
13
|
description: {
|
|
13
|
-
component:
|
|
14
|
-
|
|
14
|
+
component: `
|
|
15
|
+
# Spinner
|
|
16
|
+
|
|
17
|
+
## Overview
|
|
18
|
+
|
|
19
|
+
Spinner provides visual feedback during loading states. It displays an animated loading indicator that can be customized with different variants and sizes. Use spinners to indicate that content is being loaded or processed.
|
|
20
|
+
|
|
21
|
+
## Features
|
|
22
|
+
|
|
23
|
+
- Multiple color variants
|
|
24
|
+
- Multiple size options
|
|
25
|
+
- Fullscreen mode
|
|
26
|
+
- Smooth animations
|
|
27
|
+
- Accessible design
|
|
28
|
+
- Responsive behavior
|
|
29
|
+
|
|
30
|
+
## Accessibility
|
|
31
|
+
|
|
32
|
+
- Screen reader: Loading state announced appropriately
|
|
33
|
+
- ARIA support: Proper roles and properties for spinner components
|
|
34
|
+
- Keyboard support: Accessible via keyboard navigation
|
|
35
|
+
- Focus management: Focus indicators maintained for interactive elements
|
|
36
|
+
|
|
37
|
+
## Usage Examples
|
|
38
|
+
|
|
39
|
+
### Basic Usage
|
|
40
|
+
|
|
41
|
+
\`\`\`tsx
|
|
42
|
+
<Spinner />
|
|
43
|
+
\`\`\`
|
|
44
|
+
|
|
45
|
+
### With Variant and Size
|
|
46
|
+
|
|
47
|
+
\`\`\`tsx
|
|
48
|
+
<Spinner
|
|
49
|
+
variant="primary"
|
|
50
|
+
size="lg"
|
|
51
|
+
/>
|
|
52
|
+
\`\`\`
|
|
53
|
+
|
|
54
|
+
## API Reference
|
|
55
|
+
|
|
56
|
+
### Props
|
|
57
|
+
|
|
58
|
+
| Prop | Type | Default | Description |
|
|
59
|
+
| ---- | ---- | ------- | ----------- |
|
|
60
|
+
| variant | ThemeColor | 'primary' | The color variant of the spinner |
|
|
61
|
+
| size | 'sm' \\| 'md' \\| 'lg' | 'md' | The size of the spinner |
|
|
62
|
+
| fullscreen | boolean | false | Whether the spinner should be centered and fixed in the viewport |
|
|
63
|
+
`,
|
|
15
64
|
},
|
|
16
65
|
},
|
|
17
66
|
},
|
|
@@ -21,15 +70,27 @@ const meta = {
|
|
|
21
70
|
control: { type: 'select' },
|
|
22
71
|
options: THEME_COLORS,
|
|
23
72
|
description: 'The color variant of the spinner',
|
|
73
|
+
table: {
|
|
74
|
+
type: { summary: 'ThemeColor' },
|
|
75
|
+
defaultValue: { summary: 'primary' },
|
|
76
|
+
},
|
|
24
77
|
},
|
|
25
78
|
size: {
|
|
26
79
|
control: { type: 'select' },
|
|
27
80
|
options: SIZES,
|
|
28
81
|
description: 'The size of the spinner',
|
|
82
|
+
table: {
|
|
83
|
+
type: { summary: '"sm" | "md" | "lg"' },
|
|
84
|
+
defaultValue: { summary: 'md' },
|
|
85
|
+
},
|
|
29
86
|
},
|
|
30
87
|
fullscreen: {
|
|
31
88
|
control: 'boolean',
|
|
32
89
|
description: 'Whether the spinner should be centered and fixed in the viewport',
|
|
90
|
+
table: {
|
|
91
|
+
type: { summary: 'boolean' },
|
|
92
|
+
defaultValue: { summary: false },
|
|
93
|
+
},
|
|
33
94
|
},
|
|
34
95
|
},
|
|
35
96
|
} satisfies Meta<typeof Spinner>;
|
|
@@ -37,17 +98,22 @@ const meta = {
|
|
|
37
98
|
export default meta;
|
|
38
99
|
type Story = StoryObj<typeof meta>;
|
|
39
100
|
|
|
40
|
-
|
|
41
|
-
export const Default: Story = {
|
|
101
|
+
export const BasicUsage: Story = {
|
|
42
102
|
args: {
|
|
43
103
|
variant: 'primary',
|
|
44
104
|
size: 'md',
|
|
45
105
|
fullscreen: false,
|
|
46
106
|
},
|
|
107
|
+
parameters: {
|
|
108
|
+
docs: {
|
|
109
|
+
description: {
|
|
110
|
+
story: 'Basic spinner with default settings.',
|
|
111
|
+
},
|
|
112
|
+
},
|
|
113
|
+
},
|
|
47
114
|
};
|
|
48
115
|
|
|
49
|
-
|
|
50
|
-
export const Sizes: Story = {
|
|
116
|
+
export const AllSizes: Story = {
|
|
51
117
|
render: () => (
|
|
52
118
|
<div className="u-flex u-flex-wrap u-gap-3 u-items-center">
|
|
53
119
|
<Spinner size="sm" />
|
|
@@ -55,10 +121,16 @@ export const Sizes: Story = {
|
|
|
55
121
|
<Spinner size="lg" />
|
|
56
122
|
</div>
|
|
57
123
|
),
|
|
124
|
+
parameters: {
|
|
125
|
+
docs: {
|
|
126
|
+
description: {
|
|
127
|
+
story: 'Spinner in all available sizes.',
|
|
128
|
+
},
|
|
129
|
+
},
|
|
130
|
+
},
|
|
58
131
|
};
|
|
59
132
|
|
|
60
|
-
|
|
61
|
-
export const ColorVariants: Story = {
|
|
133
|
+
export const AllVariants: Story = {
|
|
62
134
|
render: () => (
|
|
63
135
|
<div className="u-flex u-flex-wrap u-gap-3 u-items-center">
|
|
64
136
|
{THEME_COLORS.map(color => (
|
|
@@ -66,4 +138,28 @@ export const ColorVariants: Story = {
|
|
|
66
138
|
))}
|
|
67
139
|
</div>
|
|
68
140
|
),
|
|
141
|
+
parameters: {
|
|
142
|
+
docs: {
|
|
143
|
+
description: {
|
|
144
|
+
story: 'Spinner in all available color variants.',
|
|
145
|
+
},
|
|
146
|
+
},
|
|
147
|
+
},
|
|
148
|
+
};
|
|
149
|
+
|
|
150
|
+
export const Fullscreen: Story = {
|
|
151
|
+
render: () => (
|
|
152
|
+
<div
|
|
153
|
+
style={{ height: '200px', display: 'flex', alignItems: 'center', justifyContent: 'center' }}
|
|
154
|
+
>
|
|
155
|
+
<Spinner fullscreen={true} variant="primary" size="lg" />
|
|
156
|
+
</div>
|
|
157
|
+
),
|
|
158
|
+
parameters: {
|
|
159
|
+
docs: {
|
|
160
|
+
description: {
|
|
161
|
+
story: 'Fullscreen spinner centered in the viewport.',
|
|
162
|
+
},
|
|
163
|
+
},
|
|
164
|
+
},
|
|
69
165
|
};
|
|
@@ -4,32 +4,32 @@ import { Spinner } from './Spinner';
|
|
|
4
4
|
|
|
5
5
|
// Mock AtomixGlass component
|
|
6
6
|
vi.mock('../AtomixGlass/AtomixGlass', () => ({
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
7
|
+
AtomixGlass: ({ children, ...props }: any) => (
|
|
8
|
+
<div data-testid="atomix-glass" data-glass-props={JSON.stringify(props)}>
|
|
9
|
+
{children}
|
|
10
|
+
</div>
|
|
11
|
+
),
|
|
12
12
|
}));
|
|
13
13
|
|
|
14
14
|
describe('Spinner Component', () => {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
15
|
+
it('renders with default accessibility props', () => {
|
|
16
|
+
render(<Spinner />);
|
|
17
|
+
const spinner = screen.getByRole('status');
|
|
18
|
+
expect(spinner).toBeInTheDocument();
|
|
19
|
+
expect(spinner).toHaveAttribute('aria-label', 'Loading');
|
|
20
|
+
expect(screen.getByText('Loading...')).toBeInTheDocument();
|
|
21
|
+
});
|
|
22
22
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
23
|
+
it('renders with custom accessibility props', () => {
|
|
24
|
+
render(<Spinner role="alert" aria-label="Please wait" />);
|
|
25
|
+
const spinner = screen.getByRole('alert');
|
|
26
|
+
expect(spinner).toBeInTheDocument();
|
|
27
|
+
expect(spinner).toHaveAttribute('aria-label', 'Please wait');
|
|
28
|
+
expect(screen.getByText('Please wait')).toBeInTheDocument();
|
|
29
|
+
});
|
|
30
30
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
31
|
+
it('renders as glass when enabled', () => {
|
|
32
|
+
render(<Spinner glass />);
|
|
33
|
+
expect(screen.getByTestId('atomix-glass')).toBeInTheDocument();
|
|
34
|
+
});
|
|
35
35
|
});
|
|
@@ -4,53 +4,50 @@ import { useSpinner } from '../../lib/composables/useSpinner';
|
|
|
4
4
|
import { SPINNER } from '../../lib/constants/components';
|
|
5
5
|
import { AtomixGlass } from '../AtomixGlass/AtomixGlass';
|
|
6
6
|
|
|
7
|
-
export const Spinner: React.FC<SpinnerProps> = memo(
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
className={spinnerClass}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
return <AtomixGlass {...glassProps}>{spinnerContent}</AtomixGlass>;
|
|
7
|
+
export const Spinner: React.FC<SpinnerProps> = memo(
|
|
8
|
+
({
|
|
9
|
+
size = 'md',
|
|
10
|
+
variant = 'primary',
|
|
11
|
+
fullscreen = false,
|
|
12
|
+
className = '',
|
|
13
|
+
style,
|
|
14
|
+
glass,
|
|
15
|
+
'aria-label': ariaLabel,
|
|
16
|
+
role = 'status',
|
|
17
|
+
}) => {
|
|
18
|
+
const { generateSpinnerClass } = useSpinner({
|
|
19
|
+
size,
|
|
20
|
+
variant,
|
|
21
|
+
fullscreen,
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
const spinnerClass = generateSpinnerClass({
|
|
25
|
+
size,
|
|
26
|
+
variant,
|
|
27
|
+
fullscreen,
|
|
28
|
+
className: `${className} ${glass ? 'c-spinner--glass' : ''}`.trim(),
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
const spinnerContent = (
|
|
32
|
+
<div className={spinnerClass} style={style} role={role} aria-label={ariaLabel || 'Loading'}>
|
|
33
|
+
<span className={SPINNER.VISUALLY_HIDDEN}>{ariaLabel || 'Loading...'}</span>
|
|
34
|
+
</div>
|
|
35
|
+
);
|
|
36
|
+
|
|
37
|
+
if (glass) {
|
|
38
|
+
const defaultGlassProps = {
|
|
39
|
+
displacementScale: 20,
|
|
40
|
+
blurAmount: 1,
|
|
41
|
+
cornerRadius: 999,
|
|
42
|
+
mode: 'shader' as const,
|
|
43
|
+
};
|
|
44
|
+
const glassProps = glass === true ? defaultGlassProps : { ...defaultGlassProps, ...glass };
|
|
45
|
+
return <AtomixGlass {...glassProps}>{spinnerContent}</AtomixGlass>;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
return spinnerContent;
|
|
50
49
|
}
|
|
51
|
-
|
|
52
|
-
return spinnerContent;
|
|
53
|
-
});
|
|
50
|
+
);
|
|
54
51
|
|
|
55
52
|
export type { SpinnerProps };
|
|
56
53
|
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import type { Meta, StoryObj } from '@storybook/react';
|
|
3
|
+
import { fn } from '@storybook/test';
|
|
3
4
|
import { Steps } from './Steps';
|
|
4
5
|
|
|
5
6
|
const meta = {
|
|
@@ -9,26 +10,105 @@ const meta = {
|
|
|
9
10
|
layout: 'padded',
|
|
10
11
|
docs: {
|
|
11
12
|
description: {
|
|
12
|
-
component:
|
|
13
|
-
|
|
13
|
+
component: `
|
|
14
|
+
# Steps
|
|
15
|
+
|
|
16
|
+
## Overview
|
|
17
|
+
|
|
18
|
+
Steps component displays a sequence of steps in a process or workflow. It provides visual progress indication and can be displayed horizontally or vertically. Steps are ideal for multi-step forms, onboarding flows, or any process that requires clear progress visualization.
|
|
19
|
+
|
|
20
|
+
## Features
|
|
21
|
+
|
|
22
|
+
- Horizontal and vertical orientations
|
|
23
|
+
- Active step indication
|
|
24
|
+
- Customizable step content
|
|
25
|
+
- Glass morphism effect
|
|
26
|
+
- Accessible design
|
|
27
|
+
- Responsive behavior
|
|
28
|
+
|
|
29
|
+
## Accessibility
|
|
30
|
+
|
|
31
|
+
- Screen reader: Step status and progress announced appropriately
|
|
32
|
+
- ARIA support: Proper roles and properties for step components
|
|
33
|
+
- Keyboard support: Accessible via keyboard navigation
|
|
34
|
+
- Focus management: Maintains focus on interactive elements
|
|
35
|
+
|
|
36
|
+
## Usage Examples
|
|
37
|
+
|
|
38
|
+
### Basic Usage
|
|
39
|
+
|
|
40
|
+
\`\`\`tsx
|
|
41
|
+
<Steps
|
|
42
|
+
items={[
|
|
43
|
+
{ number: 1, text: 'Step 1' },
|
|
44
|
+
{ number: 2, text: 'Step 2' },
|
|
45
|
+
{ number: 3, text: 'Step 3' },
|
|
46
|
+
]}
|
|
47
|
+
activeIndex={1}
|
|
48
|
+
/>
|
|
49
|
+
\`\`\`
|
|
50
|
+
|
|
51
|
+
### Vertical Orientation
|
|
52
|
+
|
|
53
|
+
\`\`\`tsx
|
|
54
|
+
<Steps
|
|
55
|
+
items={[
|
|
56
|
+
{ number: 1, text: 'Step 1' },
|
|
57
|
+
{ number: 2, text: 'Step 2' },
|
|
58
|
+
{ number: 3, text: 'Step 3' },
|
|
59
|
+
]}
|
|
60
|
+
activeIndex={1}
|
|
61
|
+
vertical={true}
|
|
62
|
+
/>
|
|
63
|
+
\`\`\`
|
|
64
|
+
|
|
65
|
+
## API Reference
|
|
66
|
+
|
|
67
|
+
### Props
|
|
68
|
+
|
|
69
|
+
| Prop | Type | Default | Description |
|
|
70
|
+
| ---- | ---- | ------- | ----------- |
|
|
71
|
+
| activeIndex | number | 1 | The index of the currently active step |
|
|
72
|
+
| vertical | boolean | false | Whether to display steps vertically |
|
|
73
|
+
| glass | boolean | false | Enable glass morphism effect |
|
|
74
|
+
| items | StepItem[] | [] | Array of step items with number and text |
|
|
75
|
+
`,
|
|
14
76
|
},
|
|
15
77
|
},
|
|
16
78
|
},
|
|
17
79
|
tags: ['autodocs'],
|
|
18
80
|
argTypes: {
|
|
19
81
|
activeIndex: {
|
|
20
|
-
control: { type: 'number' },
|
|
82
|
+
control: { type: 'number', min: 0 },
|
|
21
83
|
description: 'The index of the currently active step',
|
|
22
|
-
|
|
84
|
+
table: {
|
|
85
|
+
type: { summary: 'number' },
|
|
86
|
+
defaultValue: { summary: 1 },
|
|
87
|
+
},
|
|
23
88
|
},
|
|
24
89
|
vertical: {
|
|
25
90
|
control: { type: 'boolean' },
|
|
26
91
|
description: 'Whether to display steps vertically',
|
|
27
|
-
|
|
92
|
+
table: {
|
|
93
|
+
type: { summary: 'boolean' },
|
|
94
|
+
defaultValue: { summary: false },
|
|
95
|
+
},
|
|
28
96
|
},
|
|
29
97
|
glass: {
|
|
30
98
|
control: 'boolean',
|
|
31
99
|
description: 'Enable glass morphism effect',
|
|
100
|
+
table: {
|
|
101
|
+
type: { summary: 'boolean' },
|
|
102
|
+
defaultValue: { summary: false },
|
|
103
|
+
},
|
|
104
|
+
},
|
|
105
|
+
items: {
|
|
106
|
+
control: { type: 'object' },
|
|
107
|
+
description: 'Array of step items with number and text',
|
|
108
|
+
table: {
|
|
109
|
+
type: { summary: 'StepItem[]' },
|
|
110
|
+
defaultValue: { summary: '[]' },
|
|
111
|
+
},
|
|
32
112
|
},
|
|
33
113
|
},
|
|
34
114
|
} satisfies Meta<typeof Steps>;
|
|
@@ -36,13 +116,8 @@ const meta = {
|
|
|
36
116
|
export default meta;
|
|
37
117
|
type Story = StoryObj<typeof meta>;
|
|
38
118
|
|
|
39
|
-
//
|
|
40
|
-
export const
|
|
41
|
-
render: args => (
|
|
42
|
-
<div style={{ padding: '30px' }}>
|
|
43
|
-
<Steps {...args} />
|
|
44
|
-
</div>
|
|
45
|
-
),
|
|
119
|
+
// Basic horizontal steps
|
|
120
|
+
export const BasicHorizontal: Story = {
|
|
46
121
|
args: {
|
|
47
122
|
items: [
|
|
48
123
|
{ number: 1, text: 'Step 1' },
|
|
@@ -54,15 +129,22 @@ export const Default: Story = {
|
|
|
54
129
|
activeIndex: 1,
|
|
55
130
|
vertical: false,
|
|
56
131
|
},
|
|
57
|
-
};
|
|
58
|
-
|
|
59
|
-
// Vertical steps
|
|
60
|
-
export const Vertical: Story = {
|
|
61
132
|
render: args => (
|
|
62
133
|
<div style={{ padding: '30px' }}>
|
|
63
134
|
<Steps {...args} />
|
|
64
135
|
</div>
|
|
65
136
|
),
|
|
137
|
+
parameters: {
|
|
138
|
+
docs: {
|
|
139
|
+
description: {
|
|
140
|
+
story: 'Default horizontal steps with basic configuration.',
|
|
141
|
+
},
|
|
142
|
+
},
|
|
143
|
+
},
|
|
144
|
+
};
|
|
145
|
+
|
|
146
|
+
// Vertical steps
|
|
147
|
+
export const BasicVertical: Story = {
|
|
66
148
|
args: {
|
|
67
149
|
items: [
|
|
68
150
|
{ number: 1, text: 'Step 1' },
|
|
@@ -74,6 +156,18 @@ export const Vertical: Story = {
|
|
|
74
156
|
activeIndex: 1,
|
|
75
157
|
vertical: true,
|
|
76
158
|
},
|
|
159
|
+
render: args => (
|
|
160
|
+
<div style={{ padding: '30px' }}>
|
|
161
|
+
<Steps {...args} />
|
|
162
|
+
</div>
|
|
163
|
+
),
|
|
164
|
+
parameters: {
|
|
165
|
+
docs: {
|
|
166
|
+
description: {
|
|
167
|
+
story: 'Steps displayed in vertical orientation.',
|
|
168
|
+
},
|
|
169
|
+
},
|
|
170
|
+
},
|
|
77
171
|
};
|
|
78
172
|
|
|
79
173
|
// Steps with custom content
|
|
@@ -100,20 +194,17 @@ export const WithCustomContent: Story = {
|
|
|
100
194
|
text: 'Preferences',
|
|
101
195
|
content: <p style={{ marginTop: '10px', fontSize: '0.85em' }}>Select your preferences</p>,
|
|
102
196
|
},
|
|
103
|
-
{
|
|
104
|
-
number: 4,
|
|
105
|
-
text: 'Payment',
|
|
106
|
-
content: <p style={{ marginTop: '10px', fontSize: '0.85em' }}>Add payment information</p>,
|
|
107
|
-
},
|
|
108
|
-
{
|
|
109
|
-
number: 5,
|
|
110
|
-
text: 'Confirmation',
|
|
111
|
-
content: <p style={{ marginTop: '10px', fontSize: '0.85em' }}>Complete your signup</p>,
|
|
112
|
-
},
|
|
113
197
|
],
|
|
114
198
|
activeIndex: 1,
|
|
115
199
|
vertical: false,
|
|
116
200
|
},
|
|
201
|
+
parameters: {
|
|
202
|
+
docs: {
|
|
203
|
+
description: {
|
|
204
|
+
story: 'Steps with custom content in each step.',
|
|
205
|
+
},
|
|
206
|
+
},
|
|
207
|
+
},
|
|
117
208
|
};
|
|
118
209
|
|
|
119
210
|
// Steps with custom icons instead of numbers
|
|
@@ -152,9 +243,18 @@ export const WithIcons: Story = {
|
|
|
152
243
|
};
|
|
153
244
|
|
|
154
245
|
// Interactive steps with buttons for navigation
|
|
155
|
-
const
|
|
246
|
+
const InteractiveStepsTemplate: React.FC<{ onStepChange?: (index: number) => void }> = ({
|
|
247
|
+
onStepChange,
|
|
248
|
+
}) => {
|
|
156
249
|
const [activeStep, setActiveStep] = React.useState(0);
|
|
157
250
|
|
|
251
|
+
const handleStepChange = (stepIndex: number) => {
|
|
252
|
+
setActiveStep(stepIndex);
|
|
253
|
+
if (onStepChange) {
|
|
254
|
+
onStepChange(stepIndex);
|
|
255
|
+
}
|
|
256
|
+
};
|
|
257
|
+
|
|
158
258
|
const items = [
|
|
159
259
|
{ number: 1, text: 'Step 1' },
|
|
160
260
|
{ number: 2, text: 'Step 2' },
|
|
@@ -165,37 +265,47 @@ const InteractiveSteps: React.FC = () => {
|
|
|
165
265
|
|
|
166
266
|
return (
|
|
167
267
|
<div>
|
|
168
|
-
<Steps items={items} activeIndex={activeStep} onStepChange={
|
|
169
|
-
<div style={{ marginTop: '30px', display: 'flex', gap: '10px' }}>
|
|
268
|
+
<Steps items={items} activeIndex={activeStep} onStepChange={handleStepChange} />
|
|
269
|
+
<div style={{ marginTop: '30px', display: 'flex', gap: '10px', justifyContent: 'center' }}>
|
|
170
270
|
<button
|
|
171
271
|
className="c-btn c-btn--primary"
|
|
172
|
-
onClick={() =>
|
|
272
|
+
onClick={() => handleStepChange(Math.max(0, activeStep - 1))}
|
|
173
273
|
disabled={activeStep === 0}
|
|
174
274
|
>
|
|
175
275
|
Previous
|
|
176
276
|
</button>
|
|
177
277
|
<button
|
|
178
278
|
className="c-btn c-btn--primary"
|
|
179
|
-
onClick={() =>
|
|
279
|
+
onClick={() => handleStepChange(Math.min(items.length - 1, activeStep + 1))}
|
|
180
280
|
disabled={activeStep === items.length - 1}
|
|
181
281
|
>
|
|
182
282
|
Next
|
|
183
283
|
</button>
|
|
284
|
+
<span style={{ marginLeft: '15px', alignSelf: 'center' }}>
|
|
285
|
+
Current step: {activeStep + 1} of {items.length}
|
|
286
|
+
</span>
|
|
184
287
|
</div>
|
|
185
288
|
</div>
|
|
186
289
|
);
|
|
187
290
|
};
|
|
188
291
|
|
|
189
292
|
export const Interactive: Story = {
|
|
190
|
-
args: {} as any,
|
|
191
293
|
render: () => (
|
|
192
294
|
<div style={{ padding: '30px' }}>
|
|
193
|
-
<
|
|
295
|
+
<InteractiveStepsTemplate />
|
|
194
296
|
</div>
|
|
195
297
|
),
|
|
298
|
+
parameters: {
|
|
299
|
+
docs: {
|
|
300
|
+
description: {
|
|
301
|
+
story: 'Interactive steps with navigation controls to demonstrate state management.',
|
|
302
|
+
},
|
|
303
|
+
},
|
|
304
|
+
},
|
|
196
305
|
};
|
|
197
306
|
|
|
198
|
-
|
|
307
|
+
// Glass effect horizontal
|
|
308
|
+
export const GlassHorizontal: Story = {
|
|
199
309
|
args: {
|
|
200
310
|
items: [
|
|
201
311
|
{ number: 1, text: 'Glass Step 1' },
|
|
@@ -208,7 +318,7 @@ export const Glass: Story = {
|
|
|
208
318
|
vertical: false,
|
|
209
319
|
glass: true,
|
|
210
320
|
},
|
|
211
|
-
render:
|
|
321
|
+
render: args => (
|
|
212
322
|
<div
|
|
213
323
|
style={{
|
|
214
324
|
background: 'linear-gradient(135deg, #667eea 0%, #764ba2 100%)',
|
|
@@ -225,8 +335,16 @@ export const Glass: Story = {
|
|
|
225
335
|
</div>
|
|
226
336
|
</div>
|
|
227
337
|
),
|
|
338
|
+
parameters: {
|
|
339
|
+
docs: {
|
|
340
|
+
description: {
|
|
341
|
+
story: 'Horizontal steps with glass morphism effect applied.',
|
|
342
|
+
},
|
|
343
|
+
},
|
|
344
|
+
},
|
|
228
345
|
};
|
|
229
346
|
|
|
347
|
+
// Glass effect vertical
|
|
230
348
|
export const GlassVertical: Story = {
|
|
231
349
|
args: {
|
|
232
350
|
items: [
|
|
@@ -240,7 +358,7 @@ export const GlassVertical: Story = {
|
|
|
240
358
|
vertical: true,
|
|
241
359
|
glass: true,
|
|
242
360
|
},
|
|
243
|
-
render:
|
|
361
|
+
render: args => (
|
|
244
362
|
<div
|
|
245
363
|
style={{
|
|
246
364
|
background:
|
|
@@ -260,8 +378,16 @@ export const GlassVertical: Story = {
|
|
|
260
378
|
</div>
|
|
261
379
|
</div>
|
|
262
380
|
),
|
|
381
|
+
parameters: {
|
|
382
|
+
docs: {
|
|
383
|
+
description: {
|
|
384
|
+
story: 'Vertical steps with glass morphism effect applied.',
|
|
385
|
+
},
|
|
386
|
+
},
|
|
387
|
+
},
|
|
263
388
|
};
|
|
264
389
|
|
|
390
|
+
// Glass effect with custom configuration
|
|
265
391
|
export const GlassCustom: Story = {
|
|
266
392
|
args: {
|
|
267
393
|
items: [
|
|
@@ -279,9 +405,9 @@ export const GlassCustom: Story = {
|
|
|
279
405
|
saturation: 200,
|
|
280
406
|
aberrationIntensity: 0.8,
|
|
281
407
|
cornerRadius: 12,
|
|
282
|
-
}
|
|
408
|
+
},
|
|
283
409
|
},
|
|
284
|
-
render:
|
|
410
|
+
render: args => (
|
|
285
411
|
<div
|
|
286
412
|
style={{
|
|
287
413
|
background: 'linear-gradient(45deg, #ff6b6b, #4ecdc4, #45b7d1, #96ceb4, #feca57)',
|
|
@@ -295,18 +421,23 @@ export const GlassCustom: Story = {
|
|
|
295
421
|
justifyContent: 'center',
|
|
296
422
|
}}
|
|
297
423
|
>
|
|
298
|
-
<style>
|
|
299
|
-
{`
|
|
424
|
+
<style>{`
|
|
300
425
|
@keyframes gradient {
|
|
301
426
|
0% { background-position: 0% 50%; }
|
|
302
427
|
50% { background-position: 100% 50%; }
|
|
303
428
|
100% { background-position: 0% 50%; }
|
|
304
429
|
}
|
|
305
|
-
`}
|
|
306
|
-
</style>
|
|
430
|
+
`}</style>
|
|
307
431
|
<div style={{ width: '100%', maxWidth: '800px' }}>
|
|
308
432
|
<Steps {...args} />
|
|
309
433
|
</div>
|
|
310
434
|
</div>
|
|
311
435
|
),
|
|
436
|
+
parameters: {
|
|
437
|
+
docs: {
|
|
438
|
+
description: {
|
|
439
|
+
story: 'Horizontal steps with custom glass morphism effect parameters.',
|
|
440
|
+
},
|
|
441
|
+
},
|
|
442
|
+
},
|
|
312
443
|
};
|