this.gui 1.0.17 → 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.
@@ -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: 'boolean',
12
- description: 'Add a border to the container.',
13
+ control: { type: 'select' },
14
+ options: ['on', 'off'],
13
15
  },
14
- size: {
15
- control: {
16
- type: 'select',
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
- rounded: {
22
- control: 'boolean',
23
- description: 'Apply rounded corners to the container.',
20
+ fluid: { control: 'boolean' },
21
+ padding: {
22
+ control: { type: 'select' },
23
+ options: ['sm', 'md', 'lg'],
24
24
  },
25
- fluid: {
26
- control: 'boolean',
27
- description: 'Make the container full-width.',
25
+ marginTop: {
26
+ control: { type: 'select' },
27
+ options: ['sm', 'md', 'lg'],
28
28
  },
29
- align: {
30
- control: {
31
- type: 'select',
32
- options: ['left', 'center', 'right'],
33
- },
34
- description: 'Alignment of the container.',
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
- type: 'select',
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
- className: {
44
- control: 'text',
45
- description: 'Additional CSS classes.',
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
- style: {
48
- control: 'object',
49
- description: 'Inline styles.',
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
- * Medium Rounded Container with Center Alignment
65
- */
66
- export const MediumRoundedCenter = () => (
67
- <Container rounded size="medium" align="center">
68
- <p>This is a medium-sized container with rounded corners and center alignment.</p>
69
- </Container>
70
- );
71
-
72
- /**
73
- * Large Fluid Container with Right Alignment
74
- */
75
- export const LargeFluidRight = () => (
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
- * Container with Absolute Positioning
83
- */
84
- export const AbsolutePositioned = () => (
85
- <Container position="absolute" style={{ top: '20px', left: '20px' }}>
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
- * Interactive Playground
92
- */
93
- const Template = (args) => <Container {...args}>This is an interactive container.</Container>;
135
+ export const Centered = Template.bind({});
136
+ Centered.args = {
137
+ ...Default.args,
138
+ align: 'center',
139
+ };
94
140
 
95
- export const InteractiveContainer = Template.bind({});
96
- InteractiveContainer.args = {
97
- border: false,
98
- size: 'medium',
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';
@@ -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
- .link--underline {
11
- text-decoration: underline;
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
- const linkClasses = classNames('link', className, {
34
- 'link--underline': underline,
35
- 'link--no-underline': !underline,
36
- 'link--bold': bold,
37
- 'link--external': external,
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={linkClasses}
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
+ };
@@ -1,124 +1,86 @@
1
1
  /* src/themes/styles/neurons/light.css */
2
2
  /* Design Tokens (CSS Variables) */
3
3
  :root {
4
- /* Primary Colors */
5
- --primary-color: #1F877D; /* Neurons teal */
6
- --primary-color-hover: #16655C; /* Darker teal for hover effects */
7
-
8
- /* Secondary Colors */
9
- --secondary-color: #39a182; /* Bright teal */
10
- --secondary-color-hover: #00877A; /* Darker teal for hover effects */
11
-
12
- /* Semantic Colors */
13
- --info-color: #008699; /* Light teal */
14
- --info-color-hover: #008799d; /* Adjusted color for hover */
15
-
16
- --warning-color: #FF6F61; /* Soft coral (Orange) */
17
- --warning-color-hover: #e65b54; /* Adjusted color for hover */
18
-
19
- --alert-color: #ffcc00; /* Yellow */
20
- --alert-color-hover: #F1C40F; /* Adjusted color for hover */
21
-
22
- --success-color: #00B4B8; /* Deep gray (Blueish) */
23
- --success-color-hover: #0095991; /* Darker blueish for hover */
24
-
25
- --neutral-color: #a4a4a4; /* Light gray */
26
- --neutral-color-hover: #CCCCCC; /* Medium gray for hover */
27
-
28
- --dark-color: #2C2C2C; /* Deep gray */
29
- --dark-color-hover: #1A1A1A; /* Darker gray for hover */
30
-
31
- /* Classy Palette */
32
- --classy-color-1: #16655c;
33
- --classy-color-2: #96b1ac;
34
- --classy-color-3: #637c78;
35
- --classy-color-4: #405b83;
36
- --classy-color-5: #738db8;
37
-
38
- /* Small Switch Palette */
39
- --small-switch-color-1: #deefe6;
40
- --small-switch-color-2: #4e8a6e;
41
-
42
- /* Natural Palette */
43
- --natural-color-1: #00aa96;
44
- --natural-color-2: #e8fefa;
45
- --natural-color-3: #e7fefe;
46
-
47
- /* Grey Friends */
48
- --grey-friend-1: #344b47;
49
- --grey-friend-2: #96b1ac;
50
-
51
- /* Shades */
52
- --shade-1: #3b847a;
53
- --shade-2: #5da59a;
54
- --shade-3: #7ec7bc;
55
- --shade-4: #a0eade;
56
-
57
-
58
- /* Text Colors */
59
- --text-color: #2C2C2C; /* Dark text color for contrast */
60
- --text-color-inverse: #FFFFFF; /* For buttons with dark backgrounds */
61
-
62
- /* Border Colors */
63
- --border-color: #DDDDDD; /* Light border color */
64
- --secondary-border-color: var(--secondary-color); /* For secondary buttons */
65
-
66
- /* Button Sizes */
67
- --button-font-size: 14px; /* Base button font size */
68
- --button-padding-vertical: 11px;
69
- --button-padding-horizontal: 21px;
70
- --button-padding: var(--button-padding-vertical) var(--button-padding-horizontal);
71
-
72
- /* Large and Small Sizes */
73
- --button-font-size-large: calc(var(--button-font-size) * 1.1); /* 10% larger */
74
- --button-font-size-small: calc(var(--button-font-size) * 0.9); /* 10% smaller */
75
-
76
- --button-padding-vertical-large: calc(var(--button-padding-vertical) * 1.1);
77
- --button-padding-horizontal-large: calc(var(--button-padding-horizontal) * 1.1);
78
- --button-padding-large: var(--button-padding-vertical-large) var(--button-padding-horizontal-large);
79
-
80
- --button-padding-vertical-small: calc(var(--button-padding-vertical) * 0.9);
81
- --button-padding-horizontal-small: calc(var(--button-padding-horizontal) * 0.9);
82
- --button-padding-small: var(--button-padding-vertical-small) var(--button-padding-horizontal-small);
83
-
84
- /* Background and Text */
85
- --background-color: #FFFFFF; /* Pure white background */
86
- --muted-text-color: #555555; /* Muted text color */
87
-
88
- /* Link Colors */
89
- --link-color: #1F877D; /* Neurons teal */
90
- --link-hover-color: #555555; /* Greyish color on hover */
91
-
92
- /* Typography */
93
- --font-family: 'Roboto', sans-serif;
94
- --font-size-base: 17px; /* Slightly larger base font size */
95
- --font-size-small: 15px;
96
- --font-size-large: 19px;
97
- --line-height: 1.6;
98
- --font-weight-regular: 400; /* Normal font weight */
99
- --font-weight-medium: 500; /* Medium font weight */
100
- --font-weight-bold: 600; /* Less heavy bold weight */
101
- --font-weight-heavy: 700; /* For headings */
102
-
103
- /* Spacing */
104
- --spacing-xs: 4px;
105
- --spacing-sm: 8px;
106
- --spacing-md: 16px;
107
- --spacing-lg: 32px;
108
-
109
- /* Borders */
110
- --border-radius: 6px; /* Slightly more rounded corners */
111
- --border-width: 1px;
112
-
113
- /* Shadows */
114
- --box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.1);
115
-
116
- /* Transitions */
117
- --transition-speed: 0.3s;
118
-
119
- /* Z-index */
120
- --z-index-modal: 1000;
121
- --z-index-tooltip: 1050;
4
+ /* Primary Colors */
5
+ --primary-color: #1F877D; /* Neurons teal */
6
+ --primary-color-hover: #16655C; /* Darker teal for hover effects */
7
+ /* Secondary Colors */
8
+ --secondary-color: #39a182; /* Bright teal */
9
+ --secondary-color-hover: #00877A; /* Darker teal for hover effects */
10
+ /* Link Colors */
11
+ --link-color: #1F877D; /* Neurons teal */
12
+ --link-hover-color: #008699; /* Greyish color on hover */
13
+ --link-visited-color: #555555; /* Optional: custom color for visited links */
14
+ /* onFocus Color */
15
+ --focus-color: #1E90FF; /* Dodger Blue */
16
+ /* Semantic Colors */
17
+ --info-color: #008699; /* Light teal */
18
+ --info-color-hover: #008799d; /* Adjusted color for hover */
19
+ --warning-color: #FF6F61; /* Soft coral (Orange) */
20
+ --warning-color-hover: #e65b54; /* Adjusted color for hover */
21
+ --alert-color: #ffcc00; /* Yellow */
22
+ --alert-color-hover: #F1C40F; /* Adjusted color for hover */
23
+ --success-color: #00B4B8; /* Deep gray (Blueish) */
24
+ --success-color-hover: #0095991; /* Darker blueish for hover */
25
+ --neutral-color: #a4a4a4; /* Light gray */
26
+ --neutral-color-hover: #CCCCCC; /* Medium gray for hover */
27
+ --dark-color: #2C2C2C; /* Deep gray */
28
+ --dark-color-hover: #1A1A1A; /* Darker gray for hover */
29
+ /* Classy Palette */
30
+ --classy-color-1: #16655c;
31
+ --classy-color-2: #96b1ac;
32
+ --classy-color-3: #637c78;
33
+ --classy-color-4: #405b83;
34
+ --classy-color-5: #738db8;
35
+ /* Small Switch Palette */
36
+ --small-switch-color-1: #deefe6;
37
+ --small-switch-color-2: #4e8a6e;
38
+ /* Natural Palette */
39
+ --natural-color-1: #00aa96;
40
+ --natural-color-2: #e8fefa;
41
+ --natural-color-3: #e7fefe;
42
+ /* Grey Friends */
43
+ --grey-friend-1: #344b47;
44
+ --grey-friend-2: #96b1ac;
45
+ /* Shades */
46
+ --shade-1: #3b847a;
47
+ --shade-2: #5da59a;
48
+ --shade-3: #7ec7bc;
49
+ --shade-4: #a0eade;
50
+ /* Typography */
51
+ --font-family: 'Roboto', sans-serif;
52
+ --font-size-base: 16px; /* Slightly larger base font size */
53
+ --font-size-small: 14px;
54
+ --font-size-large: 19px;
55
+ --line-height: 1.6;
56
+ --font-weight-regular: 400; /* Normal font weight */
57
+ --font-weight-medium: 500; /* Medium font weight */
58
+ --font-weight-bold: 600; /* Less heavy bold weight */
59
+ --font-weight-heavy: 700; /* For headings */
60
+ /* Text Colors */
61
+ --text-color: #2C2C2C; /* Dark text color for contrast */
62
+ --text-color-inverse: #FFFFFF; /* For buttons with dark backgrounds */
63
+ /* Background and Text */
64
+ --background-color: #FFFFFF; /* Pure white background */
65
+ --muted-text-color: #555555; /* Muted text color */
66
+ /* Spacing */
67
+ --spacing-xs: 6px;
68
+ --spacing-sm: 16px;
69
+ --spacing-md: 34px;
70
+ --spacing-lg: 55px;
71
+ /* Borders */
72
+ --border-radius: 8px; /* Slightly more rounded corners */
73
+ --border-width: 1px;
74
+ /* Border Colors */
75
+ --border-color: #DDDDDD; /* Light border color */
76
+ --secondary-border-color: var(--secondary-color); /* For secondary buttons */
77
+ /* Shadows */
78
+ --box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.1);
79
+ /* Transitions */
80
+ --transition-speed: 0.3s;
81
+ /* Z-index */
82
+ --z-index-modal: 1000;
83
+ --z-index-tooltip: 1050;
122
84
  }
123
85
 
124
86
  /* Global Reset */
@@ -156,92 +118,23 @@ p {
156
118
  color: var(--text-color);
157
119
  }
158
120
 
159
- /* Links */
160
- a {
121
+ /* Base link styles */
122
+ a, .link {
161
123
  color: var(--link-color);
162
- text-decoration: none;
163
- transition: color var(--transition-speed) ease;
164
- }
165
-
166
- a:hover {
167
- color: var(--link-hover-color);
168
- text-decoration: underline;
169
- }
170
-
171
-
172
- /* Forms */
173
- input, textarea, select {
174
- padding: var(--spacing-sm);
175
- border-radius: var(--border-radius);
176
- border: var(--border-width) solid var(--border-color);
177
124
  font-size: var(--font-size-base);
178
125
  font-family: var(--font-family);
179
- background-color: #FFFFFF;
180
- color: var(--text-color);
181
- transition: border-color var(--transition-speed) ease;
182
- }
183
-
184
- input:focus, textarea:focus, select:focus {
185
- border-color: var(--primary-color);
186
- outline: none;
187
- }
188
-
189
- /* Layout */
190
- .container {
191
- max-width: 1200px;
192
- margin: 0 auto;
193
- padding: var(--spacing-md);
194
- }
195
-
196
- .grid {
197
- display: flex;
198
- gap: var(--spacing-md);
199
- flex-wrap: wrap;
126
+ transition: color var(--transition-speed) ease, text-decoration var(--transition-speed) ease;
200
127
  }
201
128
 
202
- .grid__item {
203
- flex: 1;
204
- min-width: 200px;
205
- }
206
-
207
- /* Sidebar */
208
- .sidebar {
209
- background-color: #F8F8F8; /* Very light gray */
210
- padding: var(--spacing-md);
211
- border-right: var(--border-width) solid var(--border-color); /* Consistent border */
212
- }
213
-
214
- .sidebar__link {
215
- display: block;
216
- padding: var(--spacing-sm);
217
- color: var(--text-color);
218
- text-decoration: none;
219
- font-weight: var(--font-weight-medium);
220
- transition: background-color var(--transition-speed) ease, color var(--transition-speed) ease;
221
- }
222
-
223
- .sidebar__link:hover {
224
- background-color: #EEEEEE; /* Slightly darker on hover */
225
- color: var(--text-color);
226
- }
227
-
228
- /* Navbar */
229
- .navbar {
230
- background-color: #FFFFFF;
231
- padding: var(--spacing-md);
232
- border-bottom: var(--border-width) solid var(--border-color); /* Consistent border */
233
- }
234
-
235
- .navbar__link {
236
- color: var(--link-color);
237
- text-decoration: none;
238
- margin-right: var(--spacing-md);
239
- font-weight: var(--font-weight-medium);
240
- transition: color var(--transition-speed) ease;
129
+ a:hover, .link:hover {
130
+ color: var(--link-hover-color);
131
+ text-decoration: underline;
241
132
  }
242
133
 
243
- .navbar__link:hover {
244
- color: var(--link-hover-color);
134
+ /* Accessibility - global */
135
+ a:focus, button:focus, .link:focus {
136
+ outline: 2px solid var(--focus-color);
137
+ outline-offset: 2px;
245
138
  }
246
139
 
247
140
  /* Utility Classes */
@@ -251,12 +144,6 @@ input:focus, textarea:focus, select:focus {
251
144
  .d-flex { display: flex; }
252
145
  .flex-column { flex-direction: column; }
253
146
 
254
- /* Accessibility */
255
- a:focus, button:focus {
256
- outline: 2px solid var(--primary-color);
257
- outline-offset: 2px;
258
- }
259
-
260
147
  @media (prefers-reduced-motion: reduce) {
261
148
  * {
262
149
  animation: none;
@@ -277,4 +164,7 @@ a:focus, button:focus {
277
164
  .navbar {
278
165
  padding: var(--spacing-sm);
279
166
  }
280
- }
167
+ }
168
+
169
+
170
+