agroptima-design-system 0.6.1 → 0.8.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agroptima-design-system",
3
- "version": "0.6.1",
3
+ "version": "0.8.0",
4
4
  "scripts": {
5
5
  "dev": "npm run storybook",
6
6
  "storybook": "storybook dev -p 6006 --ci",
@@ -0,0 +1,61 @@
1
+ @use '../settings/color_alias';
2
+ @use '../settings/typography/content' as typography;
3
+ @use '../settings/config';
4
+ @use '../settings/depth';
5
+
6
+ .badge {
7
+ display: flex;
8
+ justify-content: center;
9
+ align-items: center;
10
+ padding: 0 config.$space-2x 0.063rem config.$space-2x;
11
+ border: 1px solid transparent;
12
+ border-radius: config.$corner-radius-xxl;
13
+ width: fit-content;
14
+ text-align: center;
15
+
16
+ @include typography.footnote-primary;
17
+
18
+ &.info {
19
+ background: color_alias.$info-color-600;
20
+ color: color_alias.$neutral-white;
21
+ }
22
+
23
+ &.success {
24
+ background: color_alias.$success-color-1000;
25
+ color: color_alias.$neutral-color-900;
26
+ }
27
+
28
+ &.warning {
29
+ background: color_alias.$warning-color-1000;
30
+ color: color_alias.$neutral-color-900;
31
+ }
32
+
33
+ &.error {
34
+ background: color_alias.$error-color-600;
35
+ color: color_alias.$neutral-white;
36
+ }
37
+
38
+ &.info-outlined {
39
+ background: color_alias.$info-color-50;
40
+ color: color_alias.$neutral-color-1000;
41
+ border: 1px solid color_alias.$info-color-1000;
42
+ }
43
+
44
+ &.success-outlined {
45
+ background: color_alias.$success-color-50;
46
+ color: color_alias.$neutral-color-1000;
47
+ border: 1px solid color_alias.$success-color-300;
48
+ }
49
+
50
+ &.warning-outlined {
51
+ background: color_alias.$warning-color-50;
52
+ color: color_alias.$neutral-color-1000;
53
+ border: 1px solid color_alias.$warning-color-1000;
54
+ }
55
+
56
+ &.error-outlined {
57
+ background: color_alias.$error-color-50;
58
+ color: color_alias.$neutral-color-1000;
59
+ border: 1px solid color_alias.$error-color-1000;
60
+ }
61
+ }
@@ -0,0 +1,37 @@
1
+ import './Badge.scss'
2
+
3
+ export type Variant =
4
+ | 'info'
5
+ | 'success'
6
+ | 'warning'
7
+ | 'error'
8
+ | 'info-outlined'
9
+ | 'success-outlined'
10
+ | 'warning-outlined'
11
+ | 'error-outlined'
12
+
13
+ export interface BadgeProps extends React.ComponentPropsWithoutRef<'div'> {
14
+ variant?: Variant
15
+ text: string
16
+ accessibilityLabel: string
17
+ }
18
+
19
+ export function Badge({
20
+ variant = 'info',
21
+ text,
22
+ accessibilityLabel,
23
+ ...props
24
+ }: BadgeProps): React.JSX.Element {
25
+ const cssClasses = ['badge', variant].join(' ')
26
+
27
+ return (
28
+ <span
29
+ className={cssClasses}
30
+ role="status"
31
+ aria-label={accessibilityLabel}
32
+ {...props}
33
+ >
34
+ {text}
35
+ </span>
36
+ )
37
+ }
@@ -1,183 +1,285 @@
1
1
  @use '../settings/color_alias';
2
- @use '../settings/typography';
2
+ @use '../settings/typography/content' as typography;
3
3
  @use '../settings/config';
4
4
 
5
- .button {
6
- &.primary,
7
- &.primary-outlined,
8
- &.primary-ghost {
9
- --color-bg: #{color_alias.$primary-color-600};
10
- --color-bg-hover: #{color_alias.$primary-color-1000};
11
- --color-bg-hover-outlined: #{color_alias.$primary-color-50};
12
- --color-fg: #{color_alias.$neutral-white};
13
- --color-fg-reversed: #{color_alias.$primary-color-600};
14
- }
15
- &.error,
16
- &.error-outlined,
17
- &.error-ghost {
18
- --color-bg: #{color_alias.$error-color-600};
19
- --color-bg-hover: #{color_alias.$error-color-900};
20
- --color-bg-hover-outlined: #{color_alias.$error-color-50};
21
- --color-fg: #{color_alias.$neutral-white};
22
- --color-fg-reversed: #{color_alias.$error-color-600};
23
- }
24
- &.success,
25
- &.success-outlined,
26
- &.success-ghost {
27
- --color-bg: #{color_alias.$success-color-1000};
28
- --color-bg-hover: #{color_alias.$success-color-700};
29
- --color-bg-hover-outlined: #{color_alias.$success-color-50};
30
- --color-fg: #{color_alias.$neutral-color-900};
31
- --color-fg-reversed: #{color_alias.$success-color-1000};
32
- }
33
- &.warning,
34
- &.warning-outlined,
35
- &.warning-ghost {
36
- --color-bg: #{color_alias.$warning-color-1000};
37
- --color-bg-hover: #{color_alias.$warning-color-700};
38
- --color-bg-hover-outlined: #{color_alias.$warning-color-50};
39
- --color-fg: #{color_alias.$neutral-color-900};
40
- --color-fg-reversed: #{color_alias.$warning-color-1000};
41
- }
42
- &.info,
43
- &.info-outlined,
44
- &.info-ghost {
45
- --color-bg: #{color_alias.$info-color-600};
46
- --color-bg-hover: #{color_alias.$info-color-900};
47
- --color-bg-hover-outlined: #{color_alias.$info-color-50};
48
- --color-fg: #{color_alias.$neutral-white};
49
- --color-fg-reversed: #{color_alias.$info-color-600};
50
- }
51
- &.neutral,
52
- &.neutral-outlined,
53
- &.neutral-ghost {
54
- --color-bg: #{color_alias.$neutral-color-100};
55
- --color-bg-hover: #{color_alias.$neutral-color-300};
56
- --color-bg-hover-outlined: #{color_alias.$neutral-color-50};
57
- --color-fg: #{color_alias.$neutral-color-1000};
58
- --color-fg-reversed: #{color_alias.$neutral-color-1000};
59
- --color-fg-disabled: #{color_alias.$neutral-color-50};
5
+ @mixin button-style($main-color, $secondary-color, $hover-color) {
6
+ background: $main-color;
7
+ color: $secondary-color;
8
+
9
+ > .icon {
10
+ > svg {
11
+ fill: $secondary-color;
12
+ path {
13
+ fill: $secondary-color;
14
+ }
15
+ }
60
16
  }
61
17
 
62
- text-decoration: none;
18
+ &:not(:disabled):hover,
19
+ &:not(:disabled):active {
20
+ background: $hover-color;
21
+ }
22
+ }
63
23
 
24
+ .button {
64
25
  display: inline-flex;
65
- height: fit-content;
66
- background: var(--color-bg);
67
- border: 1px solid transparent;
68
- padding: config.$space-2x config.$space-3x;
69
- // padding: var(--space-2-x, .5em) var(--space-3-x, .75em);
70
26
  justify-content: center;
71
27
  align-items: center;
72
- gap: config.$space-1x;
73
28
  flex-shrink: 0;
29
+ gap: config.$space-1x;
30
+ cursor: default;
31
+ height: fit-content;
32
+ padding: config.$space-2x config.$space-3x;
74
33
  border-radius: config.$corner-radius-m;
75
- font: typography.$font-primary;
76
- color: var(--color-fg);
77
- > span {
34
+ text-decoration: none;
35
+ border: 1px solid transparent;
36
+
37
+ > .icon {
78
38
  width: config.$icon-size-3x;
79
39
  height: config.$icon-size-3x;
80
40
  > svg {
81
41
  width: 100%;
82
42
  height: 100%;
83
- fill: var(--color-fg);
84
- path {
85
- fill: var(--color-fg);
43
+ }
44
+ }
45
+
46
+ @include typography.body-medium;
47
+
48
+ &.primary {
49
+ @include button-style(
50
+ color_alias.$primary-color-600,
51
+ color_alias.$neutral-white,
52
+ color_alias.$primary-color-1000
53
+ );
54
+ }
55
+
56
+ &.primary-outlined {
57
+ @include button-style(
58
+ color_alias.$neutral-white,
59
+ color_alias.$primary-color-600,
60
+ color_alias.$primary-color-50
61
+ );
62
+ border: 1px solid color_alias.$primary-color-600;
63
+ }
64
+
65
+ &.primary-ghost {
66
+ @include button-style(
67
+ transparent,
68
+ color_alias.$primary-color-600,
69
+ transparent
70
+ );
71
+ &:not(:disabled):hover,
72
+ &:not(:disabled):active {
73
+ border: 1px solid color_alias.$primary-color-600;
74
+ }
75
+ }
76
+
77
+ &.error {
78
+ @include button-style(
79
+ color_alias.$error-color-600,
80
+ color_alias.$neutral-white,
81
+ color_alias.$error-color-900
82
+ );
83
+ }
84
+
85
+ &.error-outlined {
86
+ @include button-style(
87
+ color_alias.$neutral-white,
88
+ color_alias.$error-color-600,
89
+ color_alias.$error-color-50
90
+ );
91
+ border: 1px solid color_alias.$error-color-600;
92
+ }
93
+
94
+ &.error-ghost {
95
+ @include button-style(
96
+ transparent,
97
+ color_alias.$error-color-600,
98
+ transparent
99
+ );
100
+ &:not(:disabled):hover,
101
+ &:not(:disabled):active {
102
+ border: 1px solid color_alias.$error-color-600;
103
+ }
104
+ }
105
+
106
+ &.success {
107
+ @include button-style(
108
+ color_alias.$success-color-1000,
109
+ color_alias.$neutral-color-900,
110
+ color_alias.$success-color-700
111
+ );
112
+ &:not(:disabled):hover,
113
+ &:not(:disabled):active {
114
+ color: color_alias.$neutral-white;
115
+ > .icon {
116
+ > svg {
117
+ fill: color_alias.$neutral-white;
118
+ path {
119
+ fill: color_alias.$neutral-white;
120
+ }
121
+ }
86
122
  }
87
123
  }
88
124
  }
89
125
 
90
- &:not(:disabled):hover,
91
- &:not(:disabled):active {
92
- background: var(--color-bg-hover);
126
+ &.success-outlined {
127
+ @include button-style(
128
+ color_alias.$neutral-white,
129
+ color_alias.$neutral-color-900,
130
+ color_alias.$success-color-50
131
+ );
132
+ border: 1px solid color_alias.$success-color-1000;
133
+ }
134
+
135
+ &.success-ghost {
136
+ @include button-style(
137
+ transparent,
138
+ color_alias.$success-color-1000,
139
+ transparent
140
+ );
141
+ &:not(:disabled):hover,
142
+ &:not(:disabled):active {
143
+ border: 1px solid color_alias.$success-color-1000;
144
+ }
145
+ }
93
146
 
94
- &.success,
95
- &.warning {
147
+ &.warning {
148
+ @include button-style(
149
+ color_alias.$warning-color-1000,
150
+ color_alias.$neutral-color-900,
151
+ color_alias.$warning-color-700
152
+ );
153
+ &:not(:disabled):hover,
154
+ &:not(:disabled):active {
96
155
  color: color_alias.$neutral-white;
97
- svg,
98
- svg path {
99
- fill: color_alias.$neutral-white;
156
+ > .icon {
157
+ > svg {
158
+ fill: color_alias.$neutral-white;
159
+ path {
160
+ fill: color_alias.$neutral-white;
161
+ }
162
+ }
100
163
  }
101
164
  }
102
165
  }
103
166
 
104
- &:disabled {
105
- background: color_alias.$neutral-color-50;
106
- color: color_alias.$neutral-color-400;
107
- svg,
108
- svg path {
109
- fill: color_alias.$neutral-color-400;
167
+ &.warning-outlined {
168
+ @include button-style(
169
+ color_alias.$neutral-white,
170
+ color_alias.$neutral-color-900,
171
+ color_alias.$warning-color-50
172
+ );
173
+ border: 1px solid color_alias.$warning-color-1000;
174
+ }
175
+
176
+ &.warning-ghost {
177
+ @include button-style(
178
+ transparent,
179
+ color_alias.$warning-color-1000,
180
+ transparent
181
+ );
182
+ &:not(:disabled):hover,
183
+ &:not(:disabled):active {
184
+ border: 1px solid color_alias.$warning-color-1000;
110
185
  }
111
186
  }
112
187
 
113
- &.primary-outlined,
114
- &.error-outlined,
115
- &.info-outlined,
188
+ &.info {
189
+ @include button-style(
190
+ color_alias.$info-color-600,
191
+ color_alias.$neutral-white,
192
+ color_alias.$info-color-900
193
+ );
194
+ }
195
+
196
+ &.info-outlined {
197
+ @include button-style(
198
+ color_alias.$neutral-white,
199
+ color_alias.$info-color-600,
200
+ color_alias.$info-color-50
201
+ );
202
+ border: 1px solid color_alias.$info-color-600;
203
+ }
204
+
205
+ &.info-ghost {
206
+ @include button-style(
207
+ transparent,
208
+ color_alias.$info-color-600,
209
+ transparent
210
+ );
211
+ &:not(:disabled):hover,
212
+ &:not(:disabled):active {
213
+ border: 1px solid color_alias.$info-color-600;
214
+ }
215
+ }
216
+
217
+ &.neutral {
218
+ @include button-style(
219
+ color_alias.$neutral-color-100,
220
+ color_alias.$neutral-color-1000,
221
+ color_alias.$neutral-color-300
222
+ );
223
+ }
224
+
116
225
  &.neutral-outlined {
117
- background: color_alias.$neutral-white;
118
- color: var(--color-bg);
119
- border: 1px solid var(--color-bg);
120
- svg,
121
- svg path {
122
- fill: var(--color-bg);
226
+ @include button-style(
227
+ color_alias.$neutral-white,
228
+ color_alias.$neutral-color-1000,
229
+ color_alias.$neutral-color-50
230
+ );
231
+ border: 1px solid color_alias.$neutral-color-100;
232
+ }
233
+
234
+ &.neutral-ghost {
235
+ @include button-style(
236
+ transparent,
237
+ color_alias.$neutral-color-1000,
238
+ transparent
239
+ );
240
+ &:not(:disabled):hover,
241
+ &:not(:disabled):active {
242
+ border: 1px solid color_alias.$neutral-color-100;
123
243
  }
124
244
  }
125
245
 
126
- &.success-outlined,
127
- &.warning-outlined {
128
- background: color_alias.$neutral-white;
129
- color: var(--color-fg);
130
- border: 1px solid var(--color-bg);
131
- svg,
132
- svg path {
133
- fill: var(--color-fg);
246
+ &:disabled {
247
+ color: color_alias.$neutral-color-400;
248
+ > .icon {
249
+ > svg {
250
+ fill: color_alias.$neutral-color-400;
251
+ path {
252
+ fill: color_alias.$neutral-color-400;
253
+ }
254
+ }
134
255
  }
135
256
  }
136
257
 
258
+ &.primary,
259
+ &.error,
260
+ &.success,
261
+ &.warning,
262
+ &.info,
263
+ &.neutral,
137
264
  &.primary-outlined,
138
265
  &.error-outlined,
139
266
  &.success-outlined,
140
267
  &.warning-outlined,
141
268
  &.info-outlined,
142
269
  &.neutral-outlined {
143
- &:not(:disabled):hover,
144
- &:not(:disabled):active {
145
- background: var(--color-bg-hover-outlined);
146
- }
147
270
  &:disabled {
148
271
  background: color_alias.$neutral-color-50;
149
- border: none;
150
- color: color_alias.$neutral-color-400;
151
- svg,
152
- svg path {
153
- fill: color_alias.$neutral-color-400;
154
- }
155
272
  }
156
273
  }
157
274
 
158
- &.primary-ghost,
159
- &.error-ghost,
160
- &.success-ghost,
161
- &.warning-ghost,
162
- &.info-ghost,
163
- &.neutral-ghost {
164
- background: transparent;
165
- color: var(--color-fg-reversed);
166
- svg,
167
- svg path {
168
- fill: var(--color-fg-reversed);
169
- }
170
- &:not(:disabled):hover,
171
- &:not(:disabled):active {
172
- background: transparent;
173
- border: 1px solid var(--color-bg);
174
- }
275
+ &.primary-outlined,
276
+ &.error-outlined,
277
+ &.success-outlined,
278
+ &.warning-outlined,
279
+ &.info-outlined,
280
+ &.neutral-outlined {
175
281
  &:disabled {
176
- color: color_alias.$neutral-color-400;
177
- svg,
178
- svg path {
179
- fill: color_alias.$neutral-color-400;
180
- }
282
+ border: 1px solid transparent;
181
283
  }
182
284
  }
183
285
  }
@@ -1,5 +1,5 @@
1
1
  @use '../settings/color_alias';
2
- @use '../settings/typography';
2
+ @use '../settings/typography/cards_table' as typography;
3
3
  @use '../settings/config';
4
4
 
5
5
  .cards-table-list {
@@ -1,5 +1,5 @@
1
1
  @use '../settings/color_alias';
2
- @use '../settings/typography';
2
+ @use '../settings/typography/form' as typography;
3
3
  @use '../settings/config';
4
4
 
5
5
  .checkbox-group {
@@ -1,5 +1,5 @@
1
1
  @use '../settings/color_alias';
2
- @use '../settings/typography';
2
+ @use '../settings/typography/content' as typography;
3
3
  @use '../settings/config';
4
4
  @use '../settings/depth';
5
5
 
@@ -30,7 +30,8 @@
30
30
  }
31
31
 
32
32
  > p {
33
- @include typography.empty-state-text;
33
+ @include typography.body-regular-primary;
34
+ text-align: center;
34
35
  }
35
36
  }
36
37
  }
@@ -1,5 +1,4 @@
1
1
  @use '../settings/color_alias';
2
- @use '../settings/typography';
3
2
 
4
3
  .icon {
5
4
  display: inline-flex;
@@ -14,5 +14,9 @@ export const Icon: React.FC<IconProps> = ({ name, className, ...props }) => {
14
14
  className,
15
15
  name === 'Loading' ? 'rotate' : '',
16
16
  ].join(' ')
17
- return <span className={cssClasses}>{icons[name](props)}</span>
17
+ return (
18
+ <span role="img" title={name} className={cssClasses}>
19
+ {icons[name](props)}
20
+ </span>
21
+ )
18
22
  }
@@ -1,10 +1,10 @@
1
1
  @use '../settings/color_alias';
2
- @use '../settings/typography';
3
2
  @use '../settings/config';
4
3
 
5
4
  .icon-button {
6
5
  border: none;
7
6
  background: none;
7
+ cursor: default;
8
8
 
9
9
  > .icon {
10
10
  width: config.$icon-size-5x;
@@ -1,5 +1,5 @@
1
1
  @use '../settings/color_alias';
2
- @use '../settings/typography';
2
+ @use '../settings/typography/form' as typography;
3
3
  @use '../settings/config';
4
4
 
5
5
  .input-group {
@@ -13,7 +13,7 @@
13
13
 
14
14
  &:has(.input.invalid) {
15
15
  & .input-help-text {
16
- color: color_alias.$error-color-1000;
16
+ @include typography.form-help-text-error;
17
17
  }
18
18
  }
19
19