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