this.gui 1.0.16 → 1.0.18
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 +191 -23
- package/dist/style.css +1 -1
- package/dist/this-gui.es.js +2879 -1945
- package/dist/this-gui.umd.js +24 -24
- package/package.json +3 -4
- package/src/App.jsx +19 -40
- package/src/CreatePage.jsx +61 -0
- package/src/MDXEditor.jsx +51 -0
- package/src/Page.jsx +28 -0
- package/src/PageDashboard.jsx +56 -0
- package/src/SiteBuilder.jsx +95 -26
- package/src/example.json +43 -0
- package/src/scripts/ComponentRegistry.js +70 -0
- package/src/scripts/postinstall.js +60 -10
- package/src/scripts/renderComponents.js +11 -0
- package/src/stories/Atoms/Badge/Badge.css +1 -0
- package/src/stories/Atoms/Badge/Badge.stories.jsx +1 -0
- package/src/stories/Atoms/Button/Button.css +259 -58
- package/src/stories/Atoms/Button/Button.jsx +8 -11
- package/src/stories/Atoms/Button/Button.stories.jsx +65 -40
- package/src/stories/Atoms/Container/Container.css +420 -39
- package/src/stories/Atoms/Container/Container.jsx +98 -36
- package/src/stories/Atoms/Container/Container.stories.jsx +120 -79
- package/src/stories/Atoms/Grid/Grid.css +160 -0
- package/src/stories/Atoms/Grid/Grid.jsx +43 -0
- package/src/stories/Atoms/Grid/Grid.stories.jsx +84 -0
- package/src/stories/Atoms/Link/Link.css +6 -26
- package/src/stories/Atoms/Link/Link.jsx +11 -21
- package/src/stories/Atoms/ProgressBar/ProgressBar.css +1 -1
- package/src/stories/Atoms/ProgressBar/ProgressBar.jsx +1 -1
- package/src/stories/Atoms/ProgressBar/ProgressBar.stories.jsx +1 -1
- package/src/stories/Atoms/Section/Section.css +268 -0
- package/src/stories/Atoms/Section/Section.jsx +63 -0
- package/src/stories/Atoms/Section/Section.stories.jsx +46 -0
- package/src/stories/Atoms/TextArea/TextArea.css +1 -0
- package/src/stories/Atoms/TextArea/TextArea.jsx +1 -0
- package/src/stories/Atoms/TextArea/TextArea.stories.jsx +1 -0
- package/src/stories/Atoms/TextInput/TextInput.css +1 -0
- package/src/stories/Atoms/TextInput/TextInput.jsx +1 -0
- package/src/stories/Atoms/TextInput/TextInput.stories.jsx +1 -0
- package/src/stories/Atoms/Toggle/Toggle.css +1 -0
- package/src/stories/Atoms/Toggle/Toggle.jsx +1 -0
- package/src/stories/Atoms/Toggle/Toggle.stories.jsx +1 -0
- package/src/stories/Atoms/Tooltip/Tooltip.css +1 -0
- package/src/stories/Atoms/Tooltip/Tooltip.jsx +1 -0
- package/src/stories/Atoms/Tooltip/Tooltip.stories.jsx +1 -0
- package/src/stories/Atoms/Video/Video.css +1 -0
- package/src/stories/Atoms/Video/Video.jsx +1 -0
- package/src/stories/Atoms/Video/Video.stories.jsx +1 -0
- package/src/stories/Atoms/index.js +4 -0
- package/src/stories/Atoms/meta_Atoms.js +4 -1
- package/src/stories/Layouts/Accordion/Accordion.css +285 -8
- package/src/stories/Layouts/Accordion/Accordion.jsx +62 -19
- package/src/stories/Layouts/Accordion/Accordion.stories.jsx +30 -19
- package/src/stories/Layouts/index.js +0 -6
- package/src/stories/Layouts/meta_Layouts.js +2 -5
- package/src/stories/Molecules/Accordion/Accordion.css +1 -1
- package/src/stories/Molecules/Accordion/Accordion.jsx +1 -1
- package/src/stories/Molecules/Accordion/Accordion.stories.jsx +1 -1
- package/src/stories/Molecules/AudioPlayer/AudioPlayer.css +95 -2
- package/src/stories/Molecules/AudioPlayer/AudioPlayer.jsx +232 -13
- package/src/stories/Molecules/AudioPlayer/AudioPlayer.stories.jsx +46 -11
- package/src/stories/Molecules/AvatarWithName/AvatarWithName.css +128 -2
- package/src/stories/Molecules/AvatarWithName/AvatarWithName.jsx +69 -14
- package/src/stories/Molecules/AvatarWithName/AvatarWithName.stories.jsx +12 -12
- package/src/stories/Molecules/Breadcrumbs/Breadcrumbs.css +145 -2
- package/src/stories/Molecules/Breadcrumbs/Breadcrumbs.jsx +39 -13
- package/src/stories/Molecules/Breadcrumbs/Breadcrumbs.stories.jsx +27 -11
- package/src/stories/Molecules/ButtonGroup/ButtonGroup.css +463 -2
- package/src/stories/Molecules/ButtonGroup/ButtonGroup.jsx +34 -12
- package/src/stories/Molecules/ButtonGroup/ButtonGroup.stories.jsx +36 -12
- package/src/stories/Molecules/Card/Card.css +39 -2
- package/src/stories/Molecules/Card/Card.jsx +80 -13
- package/src/stories/Molecules/Card/Card.stories.jsx +27 -13
- package/src/stories/Molecules/ComparisonTable/ComparisonTable.css +33 -2
- package/src/stories/Molecules/ComparisonTable/ComparisonTable.jsx +91 -12
- package/src/stories/Molecules/ComparisonTable/ComparisonTable.stories.jsx +73 -12
- package/src/stories/Molecules/Dropdown/Dropdown.css +192 -0
- package/src/stories/Molecules/Dropdown/Dropdown.jsx +96 -0
- package/src/stories/Molecules/Dropdown/Dropdown.stories.jsx +45 -0
- package/src/stories/Molecules/index.js +2 -1
- package/src/stories/Molecules/meta_Molecules.js +6 -3
- package/src/themes/styles/neurons/light.css +94 -204
- package/dist/Styles.md +0 -446
- package/dist/context.md +0 -942
- package/src/Theme.jsx +0 -28
- package/src/components/CodeBlock.jsx +0 -22
- package/src/components/ComponentFactory.jsx +0 -36
- package/src/components/ComponentRegistry.js +0 -21
- package/src/scripts/generateComponents.js +0 -166
- package/src/scripts/verifyLayouts.js +0 -175
- package/src/scripts/verifyMolecules.js +0 -158
- package/src/scripts/verifyTemplates.js +0 -154
- package/src/scripts/verify_and_install_atoms.js +0 -211
- package/src/stories/Layouts/DropdownMenu/DropdownMenu.css +0 -16
- package/src/stories/Layouts/DropdownMenu/DropdownMenu.jsx +0 -31
- package/src/stories/Layouts/DropdownMenu/DropdownMenu.stories.jsx +0 -28
- package/src/stories/Layouts/Grid/Grid.css +0 -4
- package/src/stories/Layouts/Grid/Grid.jsx +0 -13
- package/src/stories/Layouts/Grid/Grid.stories.jsx +0 -28
- package/src/stories/Layouts/Section/Section.css +0 -16
- package/src/stories/Layouts/Section/Section.jsx +0 -31
- package/src/stories/Layouts/Section/Section.stories.jsx +0 -28
- /package/src/themes/{README.md → README_Styles.md} +0 -0
|
@@ -1,104 +1,145 @@
|
|
|
1
|
-
// src/stories/Atoms/Container/Container.stories.jsx
|
|
2
1
|
import React from 'react';
|
|
3
2
|
import { Container } from './Container';
|
|
4
|
-
import './Container.css';
|
|
5
3
|
|
|
6
4
|
export default {
|
|
7
5
|
title: 'Atoms/Layout/Container',
|
|
8
6
|
component: Container,
|
|
9
7
|
argTypes: {
|
|
8
|
+
size: {
|
|
9
|
+
control: { type: 'select' },
|
|
10
|
+
options: ['small', 'medium', 'large'],
|
|
11
|
+
},
|
|
10
12
|
border: {
|
|
11
|
-
control: '
|
|
12
|
-
|
|
13
|
+
control: { type: 'select' },
|
|
14
|
+
options: ['on', 'off'],
|
|
13
15
|
},
|
|
14
|
-
|
|
15
|
-
control: {
|
|
16
|
-
|
|
17
|
-
options: ['small', 'medium', 'large'],
|
|
18
|
-
},
|
|
19
|
-
description: 'Size of the container.',
|
|
16
|
+
align: {
|
|
17
|
+
control: { type: 'select' },
|
|
18
|
+
options: ['left', 'center', 'right'],
|
|
20
19
|
},
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
20
|
+
fluid: { control: 'boolean' },
|
|
21
|
+
padding: {
|
|
22
|
+
control: { type: 'select' },
|
|
23
|
+
options: ['sm', 'md', 'lg'],
|
|
24
24
|
},
|
|
25
|
-
|
|
26
|
-
control: '
|
|
27
|
-
|
|
25
|
+
marginTop: {
|
|
26
|
+
control: { type: 'select' },
|
|
27
|
+
options: ['sm', 'md', 'lg'],
|
|
28
28
|
},
|
|
29
|
-
|
|
30
|
-
control: {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
29
|
+
marginBottom: {
|
|
30
|
+
control: { type: 'select' },
|
|
31
|
+
options: ['sm', 'md', 'lg'],
|
|
32
|
+
},
|
|
33
|
+
marginLeft: {
|
|
34
|
+
control: { type: 'select' },
|
|
35
|
+
options: ['sm', 'md', 'lg'],
|
|
36
|
+
},
|
|
37
|
+
marginRight: {
|
|
38
|
+
control: { type: 'select' },
|
|
39
|
+
options: ['sm', 'md', 'lg'],
|
|
35
40
|
},
|
|
36
41
|
position: {
|
|
37
|
-
control: {
|
|
38
|
-
|
|
39
|
-
options: ['static', 'relative', 'absolute', 'fixed', 'sticky'],
|
|
40
|
-
},
|
|
41
|
-
description: 'CSS position property of the container.',
|
|
42
|
+
control: { type: 'select' },
|
|
43
|
+
options: ['relative', 'static', 'fixed', 'absolute', 'sticky'],
|
|
42
44
|
},
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
45
|
+
rounded: { control: 'boolean' }, // Add control for 'rounded' prop
|
|
46
|
+
borderColor: {
|
|
47
|
+
control: { type: 'select' },
|
|
48
|
+
options: [
|
|
49
|
+
'none',
|
|
50
|
+
'primary',
|
|
51
|
+
'secondary',
|
|
52
|
+
'link',
|
|
53
|
+
'focus',
|
|
54
|
+
'info',
|
|
55
|
+
'warning',
|
|
56
|
+
'alert',
|
|
57
|
+
'success',
|
|
58
|
+
'neutral',
|
|
59
|
+
'dark',
|
|
60
|
+
'classy-1',
|
|
61
|
+
'classy-2',
|
|
62
|
+
'classy-3',
|
|
63
|
+
'classy-4',
|
|
64
|
+
'classy-5',
|
|
65
|
+
'small-switch-1',
|
|
66
|
+
'small-switch-2',
|
|
67
|
+
'natural-1',
|
|
68
|
+
'natural-2',
|
|
69
|
+
'natural-3',
|
|
70
|
+
'grey-friend-1',
|
|
71
|
+
'grey-friend-2',
|
|
72
|
+
'shade-1',
|
|
73
|
+
'shade-2',
|
|
74
|
+
'shade-3',
|
|
75
|
+
'shade-4',
|
|
76
|
+
],
|
|
46
77
|
},
|
|
47
|
-
|
|
48
|
-
control: '
|
|
49
|
-
|
|
78
|
+
backgroundColor: {
|
|
79
|
+
control: { type: 'select' }, // Use 'select' control type
|
|
80
|
+
options: [
|
|
81
|
+
'none',
|
|
82
|
+
'primary',
|
|
83
|
+
'secondary',
|
|
84
|
+
'link',
|
|
85
|
+
'focus',
|
|
86
|
+
'info',
|
|
87
|
+
'warning',
|
|
88
|
+
'alert',
|
|
89
|
+
'success',
|
|
90
|
+
'neutral',
|
|
91
|
+
'dark',
|
|
92
|
+
'classy-1',
|
|
93
|
+
'classy-2',
|
|
94
|
+
'classy-3',
|
|
95
|
+
'classy-4',
|
|
96
|
+
'classy-5',
|
|
97
|
+
'small-switch-1',
|
|
98
|
+
'small-switch-2',
|
|
99
|
+
'natural-1',
|
|
100
|
+
'natural-2',
|
|
101
|
+
'natural-3',
|
|
102
|
+
'grey-friend-1',
|
|
103
|
+
'grey-friend-2',
|
|
104
|
+
'shade-1',
|
|
105
|
+
'shade-2',
|
|
106
|
+
'shade-3',
|
|
107
|
+
'shade-4',
|
|
108
|
+
],
|
|
50
109
|
},
|
|
51
110
|
},
|
|
52
111
|
};
|
|
53
112
|
|
|
54
|
-
|
|
55
|
-
* Small Container with Border and Left Alignment
|
|
56
|
-
*/
|
|
57
|
-
export const SmallWithBorderLeft = () => (
|
|
58
|
-
<Container border size="small" align="left">
|
|
59
|
-
<p>This is a small container with a border and left alignment.</p>
|
|
60
|
-
</Container>
|
|
61
|
-
);
|
|
113
|
+
const Template = (args) => <Container {...args}>Content goes here</Container>;
|
|
62
114
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
<Container fluid size="large" align="right">
|
|
77
|
-
<p>This is a large, fluid container without a border and right alignment.</p>
|
|
78
|
-
</Container>
|
|
79
|
-
);
|
|
115
|
+
export const Default = Template.bind({});
|
|
116
|
+
Default.args = {
|
|
117
|
+
size: 'medium',
|
|
118
|
+
border: 'on',
|
|
119
|
+
align: 'left',
|
|
120
|
+
fluid: false,
|
|
121
|
+
padding: 'md',
|
|
122
|
+
marginTop: 'md',
|
|
123
|
+
marginBottom: 'md',
|
|
124
|
+
marginLeft: 'md',
|
|
125
|
+
marginRight: 'md',
|
|
126
|
+
position: 'relative',
|
|
127
|
+
};
|
|
80
128
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
<p>This container is absolutely positioned.</p>
|
|
87
|
-
</Container>
|
|
88
|
-
);
|
|
129
|
+
export const Fluid = Template.bind({});
|
|
130
|
+
Fluid.args = {
|
|
131
|
+
...Default.args,
|
|
132
|
+
fluid: true,
|
|
133
|
+
};
|
|
89
134
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
135
|
+
export const Centered = Template.bind({});
|
|
136
|
+
Centered.args = {
|
|
137
|
+
...Default.args,
|
|
138
|
+
align: 'center',
|
|
139
|
+
};
|
|
94
140
|
|
|
95
|
-
export const
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
rounded: false,
|
|
100
|
-
fluid: false,
|
|
101
|
-
align: 'left',
|
|
102
|
-
position: 'static',
|
|
141
|
+
export const LargePadding = Template.bind({});
|
|
142
|
+
LargePadding.args = {
|
|
143
|
+
...Default.args,
|
|
144
|
+
padding: 'lg',
|
|
103
145
|
};
|
|
104
|
-
InteractiveContainer.storyName = 'Interactive Container';
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
/*this.GUI/src/stories/Atoms/Grid/Grid.css*/
|
|
2
|
+
/* Base Grid Styles */
|
|
3
|
+
.grid {
|
|
4
|
+
display: grid;
|
|
5
|
+
width: 100%;
|
|
6
|
+
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); /* Auto-fit responsive columns */
|
|
7
|
+
gap: 16px; /* Default gap between grid items */
|
|
8
|
+
padding: 16px;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
/* Grid item styling */
|
|
12
|
+
.grid > * {
|
|
13
|
+
background-color: var(--background-color);
|
|
14
|
+
padding: 16px;
|
|
15
|
+
display: flex;
|
|
16
|
+
justify-content: center;
|
|
17
|
+
align-items: center;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/* Border Styles for Grid Items when the border prop is true */
|
|
21
|
+
.grid--border > * {
|
|
22
|
+
border: 1px solid var(--border-color); /* Default border color */
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/* Rounded corners */
|
|
26
|
+
.grid--rounded > * {
|
|
27
|
+
border-radius: var(--border-radius, 8px); /* Apply rounded corners */
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/* Shadow Depth Variants */
|
|
31
|
+
.grid--shadow-small > * {
|
|
32
|
+
box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.2); /* Small shadow */
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.grid--shadow-medium > * {
|
|
36
|
+
box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.3); /* Medium shadow */
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.grid--shadow-large > * {
|
|
40
|
+
box-shadow: 0px 8px 16px rgba(0, 0, 0, 0.4); /* Large shadow */
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/* Responsive behavior: grid adjusts based on screen size */
|
|
44
|
+
@media (max-width: 768px) {
|
|
45
|
+
.grid {
|
|
46
|
+
grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); /* 2 columns on tablet */
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
@media (max-width: 480px) {
|
|
51
|
+
.grid {
|
|
52
|
+
grid-template-columns: 1fr; /* 1 column on mobile */
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/* Hover effect for visual feedback on grid items */
|
|
57
|
+
.grid > *:hover {
|
|
58
|
+
box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.2);
|
|
59
|
+
}
|
|
60
|
+
/* Border Color Variants (Using Theme Colors) */
|
|
61
|
+
.grid--primary > * {
|
|
62
|
+
border-color: var(--primary-color);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
.grid--secondary > * {
|
|
66
|
+
border-color: var(--secondary-color);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.grid--info > * {
|
|
70
|
+
border-color: var(--info-color);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
.grid--warning > * {
|
|
74
|
+
border-color: var(--warning-color);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.grid--alert > * {
|
|
78
|
+
border-color: var(--alert-color);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
.grid--success > * {
|
|
82
|
+
border-color: var(--success-color);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
.grid--neutral > * {
|
|
86
|
+
border-color: var(--neutral-color);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
.grid--dark > * {
|
|
90
|
+
border-color: var(--dark-color);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/* Classy Palette Variants */
|
|
94
|
+
.grid--classy-color-1 > * {
|
|
95
|
+
border-color: var(--classy-color-1);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
.grid--classy-color-2 > * {
|
|
99
|
+
border-color: var(--classy-color-2);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
.grid--classy-color-3 > * {
|
|
103
|
+
border-color: var(--classy-color-3);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
.grid--classy-color-4 > * {
|
|
107
|
+
border-color: var(--classy-color-4);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
.grid--classy-color-5 > * {
|
|
111
|
+
border-color: var(--classy-color-5);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/* Small Switch Palette */
|
|
115
|
+
.grid--small-switch-color-1 > * {
|
|
116
|
+
border-color: var(--small-switch-color-1);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
.grid--small-switch-color-2 > * {
|
|
120
|
+
border-color: var(--small-switch-color-2);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
/* Natural Palette */
|
|
124
|
+
.grid--natural-color-1 > * {
|
|
125
|
+
border-color: var(--natural-color-1);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
.grid--natural-color-2 > * {
|
|
129
|
+
border-color: var(--natural-color-2);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
.grid--natural-color-3 > * {
|
|
133
|
+
border-color: var(--natural-color-3);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/* Grey Friends */
|
|
137
|
+
.grid--grey-friend-1 > * {
|
|
138
|
+
border-color: var(--grey-friend-1);
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
.grid--grey-friend-2 > * {
|
|
142
|
+
border-color: var(--grey-friend-2);
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
/* Shades */
|
|
146
|
+
.grid--shade-1 > * {
|
|
147
|
+
border-color: var(--shade-1);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
.grid--shade-2 > * {
|
|
151
|
+
border-color: var(--shade-2);
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
.grid--shade-3 > * {
|
|
155
|
+
border-color: var(--shade-3);
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
.grid--shade-4 > * {
|
|
159
|
+
border-color: var(--shade-4);
|
|
160
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
//this.GUI/src/stories/Atoms/Grid/Grid.jsx
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import PropTypes from 'prop-types';
|
|
4
|
+
import './Grid.css'; // Import the revised grid styles
|
|
5
|
+
|
|
6
|
+
export const Grid = ({ gap, border, color, rounded, shadow, children }) => {
|
|
7
|
+
const gridClasses = [
|
|
8
|
+
'grid', // Base grid class
|
|
9
|
+
border ? `grid--border grid--${color}` : '', // Conditionally apply border and color
|
|
10
|
+
rounded ? 'grid--rounded' : '', // Conditionally apply rounded corners
|
|
11
|
+
shadow ? `grid--shadow-${shadow}` : '', // Conditionally apply shadow depth
|
|
12
|
+
].join(' ').trim();
|
|
13
|
+
|
|
14
|
+
return (
|
|
15
|
+
<div className={gridClasses} style={{ gap }}>
|
|
16
|
+
{children} {/* Grid items go here */}
|
|
17
|
+
</div>
|
|
18
|
+
);
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
Grid.propTypes = {
|
|
22
|
+
gap: PropTypes.string,
|
|
23
|
+
border: PropTypes.bool,
|
|
24
|
+
color: PropTypes.oneOf([
|
|
25
|
+
'primary', 'secondary', 'info', 'warning', 'alert', 'success', 'neutral', 'dark',
|
|
26
|
+
'classy-color-1', 'classy-color-2', 'classy-color-3', 'classy-color-4', 'classy-color-5',
|
|
27
|
+
'small-switch-color-1', 'small-switch-color-2',
|
|
28
|
+
'natural-color-1', 'natural-color-2', 'natural-color-3',
|
|
29
|
+
'grey-friend-1', 'grey-friend-2',
|
|
30
|
+
'shade-1', 'shade-2', 'shade-3', 'shade-4'
|
|
31
|
+
]),
|
|
32
|
+
rounded: PropTypes.bool, // Boolean for rounded corners
|
|
33
|
+
shadow: PropTypes.oneOf(['none', 'small', 'medium', 'large']), // Depth of shadow
|
|
34
|
+
children: PropTypes.node.isRequired,
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
Grid.defaultProps = {
|
|
38
|
+
gap: '16px', // Default gap between items
|
|
39
|
+
border: false, // Default to no border
|
|
40
|
+
color: 'primary', // Default border color
|
|
41
|
+
rounded: false, // Default to no rounded corners
|
|
42
|
+
shadow: 'none', // Default to no shadow
|
|
43
|
+
};
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
//this.GUI/src/stories/Atoms/Grid/Grid.stories.jsx
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { Grid } from './Grid';
|
|
4
|
+
|
|
5
|
+
export default {
|
|
6
|
+
title: 'Atoms/Layout/Grid',
|
|
7
|
+
component: Grid,
|
|
8
|
+
argTypes: {
|
|
9
|
+
gap: { control: 'text', defaultValue: '16px' },
|
|
10
|
+
border: { control: 'boolean', defaultValue: false },
|
|
11
|
+
rounded: { control: 'boolean', defaultValue: false },
|
|
12
|
+
shadow: {
|
|
13
|
+
control: 'select',
|
|
14
|
+
options: ['none', 'small', 'medium', 'large'],
|
|
15
|
+
defaultValue: 'none',
|
|
16
|
+
},
|
|
17
|
+
color: {
|
|
18
|
+
control: 'select',
|
|
19
|
+
options: [
|
|
20
|
+
'primary', 'secondary', 'info', 'warning', 'alert', 'success', 'neutral', 'dark',
|
|
21
|
+
'classy-color-1', 'classy-color-2', 'classy-color-3', 'classy-color-4', 'classy-color-5',
|
|
22
|
+
'small-switch-color-1', 'small-switch-color-2',
|
|
23
|
+
'natural-color-1', 'natural-color-2', 'natural-color-3',
|
|
24
|
+
'grey-friend-1', 'grey-friend-2',
|
|
25
|
+
'shade-1', 'shade-2', 'shade-3', 'shade-4'
|
|
26
|
+
],
|
|
27
|
+
defaultValue: 'primary',
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
export const ResponsiveGrid = (args) => (
|
|
33
|
+
<Grid {...args}>
|
|
34
|
+
<div>Item 1</div>
|
|
35
|
+
<div>Item 2</div>
|
|
36
|
+
<div>Item 3</div>
|
|
37
|
+
<div>Item 4</div>
|
|
38
|
+
<div>Item 5</div>
|
|
39
|
+
<div>Item 6</div>
|
|
40
|
+
<div>Item 7</div>
|
|
41
|
+
<div>Item 8</div>
|
|
42
|
+
<div>Item 9</div>
|
|
43
|
+
</Grid>
|
|
44
|
+
);
|
|
45
|
+
|
|
46
|
+
export const GridWithRoundedAndShadow = (args) => (
|
|
47
|
+
<Grid {...args} border={true} rounded={true} shadow="medium" color="primary">
|
|
48
|
+
<div>Item 1</div>
|
|
49
|
+
<div>Item 2</div>
|
|
50
|
+
<div>Item 3</div>
|
|
51
|
+
<div>Item 4</div>
|
|
52
|
+
<div>Item 5</div>
|
|
53
|
+
<div>Item 6</div>
|
|
54
|
+
<div>Item 7</div>
|
|
55
|
+
<div>Item 8</div>
|
|
56
|
+
<div>Item 9</div>
|
|
57
|
+
</Grid>
|
|
58
|
+
);
|
|
59
|
+
|
|
60
|
+
export const ColorfulGrid = (args) => (
|
|
61
|
+
<Grid {...args} color="alert">
|
|
62
|
+
<div>Item 1</div>
|
|
63
|
+
<div>Item 2</div>
|
|
64
|
+
<div>Item 3</div>
|
|
65
|
+
<div>Item 4</div>
|
|
66
|
+
<div>Item 5</div>
|
|
67
|
+
<div>Item 6</div>
|
|
68
|
+
<div>Item 7</div>
|
|
69
|
+
<div>Item 8</div>
|
|
70
|
+
<div>Item 9</div>
|
|
71
|
+
<div>Item 10</div>
|
|
72
|
+
<div>Item 11</div>
|
|
73
|
+
<div>Item 12</div>
|
|
74
|
+
<div>Item 13</div>
|
|
75
|
+
<div>Item 14</div>
|
|
76
|
+
<div>Item 15</div>
|
|
77
|
+
<div>Item 16</div>
|
|
78
|
+
<div>Item 17</div>
|
|
79
|
+
<div>Item 18</div>
|
|
80
|
+
<div>Item 19</div>
|
|
81
|
+
<div>Item 20</div>
|
|
82
|
+
<div>Item 21</div>
|
|
83
|
+
</Grid>
|
|
84
|
+
);
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
/* src/stories/Atoms/Link/Link.css */
|
|
2
|
-
|
|
3
1
|
.link {
|
|
4
2
|
color: var(--link-color);
|
|
5
3
|
font-size: var(--font-size-base);
|
|
@@ -7,36 +5,18 @@
|
|
|
7
5
|
transition: color var(--transition-speed) ease, text-decoration var(--transition-speed) ease;
|
|
8
6
|
}
|
|
9
7
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
.link--no-underline {
|
|
15
|
-
text-decoration: none;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
.link--bold {
|
|
19
|
-
font-weight: var(--font-weight-bold);
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
.link--external {
|
|
23
|
-
display: inline-flex;
|
|
24
|
-
align-items: center;
|
|
8
|
+
/* Hover states */
|
|
9
|
+
.link:hover {
|
|
10
|
+
color: var(--link-hover-color);
|
|
11
|
+
text-decoration: underline; /* Default hover behavior */
|
|
25
12
|
}
|
|
26
13
|
|
|
14
|
+
/* External link icon styling */
|
|
27
15
|
.link__external-icon {
|
|
28
16
|
margin-left: 0.25em;
|
|
29
17
|
font-size: 0.8em;
|
|
30
18
|
}
|
|
31
19
|
|
|
32
|
-
.link:hover {
|
|
33
|
-
color: var(--link-hover-color);
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
.link:hover.text-decoration {
|
|
37
|
-
text-decoration: underline;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
20
|
/* Experimental Preview Styles */
|
|
41
21
|
.link__preview {
|
|
42
22
|
position: fixed;
|
|
@@ -68,4 +48,4 @@
|
|
|
68
48
|
max-width: 90%;
|
|
69
49
|
max-height: 400px;
|
|
70
50
|
}
|
|
71
|
-
}
|
|
51
|
+
}
|
|
@@ -1,14 +1,12 @@
|
|
|
1
|
-
// src/stories/Atoms/Link/Link.jsx
|
|
2
1
|
import React, { useState } from 'react';
|
|
3
2
|
import PropTypes from 'prop-types';
|
|
4
|
-
import classNames from 'classnames';
|
|
5
3
|
import './Link.css';
|
|
6
4
|
|
|
7
5
|
export const Link = ({
|
|
8
6
|
text,
|
|
9
7
|
href,
|
|
10
|
-
underline = true,
|
|
11
|
-
bold = false,
|
|
8
|
+
underline = true, // Controls underline
|
|
9
|
+
bold = false, // Controls bold text
|
|
12
10
|
newWindow = false,
|
|
13
11
|
external = false,
|
|
14
12
|
experimentalPreview = false,
|
|
@@ -30,18 +28,19 @@ export const Link = ({
|
|
|
30
28
|
}
|
|
31
29
|
};
|
|
32
30
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
'
|
|
36
|
-
'
|
|
37
|
-
|
|
38
|
-
}
|
|
31
|
+
// Build dynamic inline styles based on props
|
|
32
|
+
const dynamicStyles = {
|
|
33
|
+
textDecoration: underline ? 'underline' : 'none',
|
|
34
|
+
fontWeight: bold ? 'bold' : 'normal',
|
|
35
|
+
...style, // Include any additional styles passed via props
|
|
36
|
+
};
|
|
39
37
|
|
|
40
38
|
return (
|
|
41
39
|
<>
|
|
42
40
|
<a
|
|
43
41
|
href={href}
|
|
44
|
-
className={
|
|
42
|
+
className={`link ${className}`} // Keep the base 'link' class for consistent styling
|
|
43
|
+
style={dynamicStyles} // Apply dynamic styles here
|
|
45
44
|
target={newWindow ? '_blank' : '_self'}
|
|
46
45
|
rel={newWindow ? 'noopener noreferrer' : undefined}
|
|
47
46
|
onMouseDown={handleMouseDown}
|
|
@@ -61,22 +60,13 @@ export const Link = ({
|
|
|
61
60
|
};
|
|
62
61
|
|
|
63
62
|
Link.propTypes = {
|
|
64
|
-
/** Text content of the link */
|
|
65
63
|
text: PropTypes.string.isRequired,
|
|
66
|
-
/** URL the link points to */
|
|
67
64
|
href: PropTypes.string.isRequired,
|
|
68
|
-
/** Whether the link is underlined */
|
|
69
65
|
underline: PropTypes.bool,
|
|
70
|
-
/** Whether the link text is bold */
|
|
71
66
|
bold: PropTypes.bool,
|
|
72
|
-
/** Whether the link opens in a new window */
|
|
73
67
|
newWindow: PropTypes.bool,
|
|
74
|
-
/** Whether the link is external */
|
|
75
68
|
external: PropTypes.bool,
|
|
76
|
-
/** Enable experimental preview on press */
|
|
77
69
|
experimentalPreview: PropTypes.bool,
|
|
78
|
-
/** Additional CSS classes */
|
|
79
70
|
className: PropTypes.string,
|
|
80
|
-
/** Inline styles */
|
|
81
71
|
style: PropTypes.object,
|
|
82
|
-
};
|
|
72
|
+
};
|