pixel-react 1.1.3 → 1.1.4

Sign up to get free protection for your applications and to get access to all the features.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "pixel-react",
3
3
  "description": "Great for pixel-perfect, design-focused components in React",
4
- "version": "1.1.3",
4
+ "version": "1.1.4",
5
5
  "main": "lib/index.js",
6
6
  "module": "lib/index.esm.js",
7
7
  "types": "lib/index.d.ts",
package/rollup.config.mjs CHANGED
@@ -14,7 +14,6 @@ const packageJson = requireFile('./package.json');
14
14
  export default [
15
15
  {
16
16
  input: 'src/index.ts',
17
- context: 'window',
18
17
  output: [
19
18
  {
20
19
  file: packageJson.main, // CJS output
@@ -32,8 +31,7 @@ export default [
32
31
  plugins: [
33
32
  peerDepsExternal(),
34
33
  resolve(),
35
-
36
- commonjs({ transformMixedEsModules: true }),
34
+ commonjs(),
37
35
  typescript(),
38
36
  postcss({
39
37
  extensions: ['.scss'],
@@ -53,11 +51,7 @@ export default [
53
51
  {
54
52
  input: 'lib/index.d.ts',
55
53
  output: [
56
- {
57
- file: 'lib/index.d.ts',
58
- format: 'es',
59
- inlineDynamicImports: true,
60
- },
54
+ { file: 'lib/index.d.ts', format: 'es', inlineDynamicImports: true },
61
55
  ],
62
56
  plugins: [dts()],
63
57
  external: [/\.scss$/],
@@ -1,5 +1,10 @@
1
1
  import type { Meta, StoryObj } from '@storybook/react';
2
2
  import AppHeader from './AppHeader';
3
+ import {
4
+ appHeaderMenuItemProps,
5
+ appHeaderSubMenuItemProps,
6
+ appHeaderQuickMenuItemProps,
7
+ } from './types';
3
8
  import Icon from '../Icon';
4
9
  import { useState } from 'react';
5
10
 
@@ -23,22 +28,23 @@ const defaultArgs = {
23
28
  };
24
29
 
25
30
  const headerMenuItems = [
31
+ { menuLabel: 'Dashboard', menuName: 'Dashboard', subMenuItems: [] },
26
32
  {
27
- menuName: 'Dashboard',
28
- subMenuItems: [],
29
- },
30
- {
33
+ menuLabel: 'Repo',
31
34
  menuName: 'Repo',
32
35
  subMenuItems: [
33
36
  {
37
+ subMenuLabel: 'Elements',
34
38
  subMenuName: 'Elements',
35
39
  quickMenuItems: [],
36
40
  },
37
41
  {
42
+ subMenuLabel: 'Program Elements',
38
43
  subMenuName: 'Program Elements',
39
44
  quickMenuItems: [],
40
45
  },
41
46
  {
47
+ subMenuLabel: 'Step Groups',
42
48
  subMenuName: 'Step Groups',
43
49
  quickMenuItems: [
44
50
  {
@@ -58,13 +64,16 @@ const headerMenuItems = [
58
64
  ],
59
65
  },
60
66
  {
67
+ menuLabel: 'Test Data',
61
68
  menuName: 'Test Data',
62
69
  subMenuItems: [],
63
70
  },
64
71
  {
72
+ menuLabel: 'Test Dev',
65
73
  menuName: 'Test Dev',
66
74
  subMenuItems: [
67
75
  {
76
+ subMenuLabel: 'Scripts',
68
77
  subMenuName: 'Scripts',
69
78
  quickMenuItems: [
70
79
  {
@@ -90,6 +99,7 @@ const headerMenuItems = [
90
99
  ],
91
100
  },
92
101
  {
102
+ subMenuLabel: 'Executions',
93
103
  subMenuName: 'Executions',
94
104
  quickMenuItems: [],
95
105
  },
@@ -121,14 +131,14 @@ export const Controlled: Story = {
121
131
  const [selectedMenuItem, setSelectedMenuItem] = useState('Test Data');
122
132
  const [selectedSubMenuItem, setSelectedSubMenuItem] = useState('');
123
133
  const [selectedQuickMenuItem, setSelectedQuickMenuItem] = useState('');
124
- const handleMenuClick = (item: string) => {
125
- setSelectedMenuItem(item);
134
+ const handleMenuClick = (item: appHeaderMenuItemProps) => {
135
+ setSelectedMenuItem(item.menuLabel);
126
136
  };
127
- const handleSubMenuClick = (item: string) => {
128
- setSelectedSubMenuItem(item);
137
+ const handleSubMenuClick = (item: appHeaderSubMenuItemProps) => {
138
+ setSelectedSubMenuItem(item.subMenuLabel);
129
139
  };
130
- const handleQuickMenuClick = (item: string) => {
131
- setSelectedQuickMenuItem(item);
140
+ const handleQuickMenuClick = (item: appHeaderQuickMenuItemProps) => {
141
+ setSelectedQuickMenuItem(item.quickMenuIconName);
132
142
  };
133
143
 
134
144
  return (
@@ -3,10 +3,14 @@ import Icon from '../Icon';
3
3
  import './AppHeader.scss';
4
4
  import classNames from 'classnames';
5
5
  import Typography from '../Typography';
6
+ import { checkEmpty } from '../../utils/checkEmpty/checkEmpty';
7
+ // import AllProjectsDropdown from '../AllProjectsDropdown';
6
8
 
7
9
  const AppHeader: React.FC<AppHeaderProps> = ({
8
10
  logoIconName = 'fireflink_icon',
11
+ leftContent,
9
12
  rightContent,
13
+ projectsList,
10
14
  appHeaderMenuItems,
11
15
  selectedMenu,
12
16
  selectedSubMenu,
@@ -21,35 +25,38 @@ const AppHeader: React.FC<AppHeaderProps> = ({
21
25
  <div className="ff-app-header-logo-icon">
22
26
  <Icon color="" name={logoIconName} height={24} width={21} />
23
27
  </div>
28
+ {leftContent && (
29
+ <div className="ff-app-header-left-content">{leftContent}</div>
30
+ )}
24
31
  <div className="ff-app-header-nav-bar">
25
- <div>All projects</div>
32
+ {checkEmpty(projectsList) && (
33
+ <div>{/* <AllProjectsDropdown /> */}</div>
34
+ )}
26
35
  <div className="ff-app-header-nav-bar-items fontSm">
27
36
  {appHeaderMenuItems.map((menuItem) => {
28
37
  return (
29
38
  <div
30
39
  className={classNames('ff-app-header-nav-bar-item', {
31
40
  ['ff-app-header-nav-bar-item--selected']:
32
- menuItem.menuName === selectedMenu,
41
+ menuItem.menuLabel === selectedMenu,
33
42
  })}
34
- key={menuItem.menuName}
35
- onClick={() => onMenuClick(menuItem.menuName)}
43
+ key={menuItem.menuLabel}
44
+ onClick={() => onMenuClick(menuItem)}
36
45
  >
37
46
  <Typography
38
47
  as="div"
39
48
  className="ff-app-header-nav-bar-item-label"
40
49
  lineHeight="18px"
41
50
  >
42
- {menuItem.menuName}
51
+ {menuItem.menuLabel}
43
52
  </Typography>
44
- {menuItem.menuName === selectedMenu &&
53
+ {menuItem.menuLabel === selectedMenu &&
45
54
  menuItem?.subMenuItems &&
46
55
  menuItem.subMenuItems.map((subMenuItem) => {
47
56
  return (
48
57
  <div
49
- key={subMenuItem.subMenuName}
50
- onClick={() =>
51
- onSubMenuClick(subMenuItem.subMenuName)
52
- }
58
+ key={subMenuItem.subMenuLabel}
59
+ onClick={() => onSubMenuClick(subMenuItem)}
53
60
  className="ff-app-header-submenu-container"
54
61
  >
55
62
  <Typography
@@ -58,14 +65,14 @@ const AppHeader: React.FC<AppHeaderProps> = ({
58
65
  'ff-app-header-nav-bar-submenu-item',
59
66
  {
60
67
  ['ff-app-header-nav-bar-submenu-item--selected']:
61
- subMenuItem.subMenuName === selectedSubMenu,
68
+ subMenuItem.subMenuLabel === selectedSubMenu,
62
69
  }
63
70
  )}
64
71
  lineHeight="18px"
65
72
  >
66
- {subMenuItem.subMenuName}
73
+ {subMenuItem.subMenuLabel}
67
74
  </Typography>
68
- {subMenuItem.subMenuName === selectedSubMenu &&
75
+ {subMenuItem.subMenuLabel === selectedSubMenu &&
69
76
  subMenuItem?.quickMenuItems && (
70
77
  <div className="ff-app-header-quickmenu-container">
71
78
  <div>
@@ -78,9 +85,7 @@ const AppHeader: React.FC<AppHeaderProps> = ({
78
85
  <div
79
86
  key={quickMenuItem.quickMenuIconName}
80
87
  onClick={() =>
81
- onQuickMenuClick(
82
- quickMenuItem.quickMenuName
83
- )
88
+ onQuickMenuClick(quickMenuItem)
84
89
  }
85
90
  className={classNames(
86
91
  'ff-app-header-nav-bar-quickmenu-item',
@@ -116,7 +121,9 @@ const AppHeader: React.FC<AppHeaderProps> = ({
116
121
  <Icon name="more" className="ff-app-header-more-icon" />
117
122
  </div>
118
123
  </div>
119
- <div className="ff-app-header-right-content">{rightContent}</div>
124
+ {rightContent && (
125
+ <div className="ff-app-header-right-content">{rightContent}</div>
126
+ )}
120
127
  </div>
121
128
  </>
122
129
  );
@@ -2,26 +2,30 @@ import { ReactNode } from 'react';
2
2
 
3
3
  export interface AppHeaderProps {
4
4
  logoIconName: string;
5
- rightContent: ReactNode;
6
- projectsList: string[];
5
+ leftContent?: ReactNode;
6
+ rightContent?: ReactNode;
7
+ projectsList?: string[];
7
8
  appHeaderMenuItems: appHeaderMenuItemProps[];
8
- appHeaderHiddenMenuItems: string[];
9
+ appHeaderHiddenMenuItems?: string[];
9
10
  selectedMenu: string;
10
- selectedSubMenu : string;
11
- selectedQuickMenu : string;
12
- onMenuClick ?: (text: any) => void;
13
- onSubMenuClick ?: (text: any) => void;
14
- onQuickMenuClick ?: (text: any) => void;
11
+ selectedSubMenu?: string;
12
+ selectedQuickMenu?: string;
13
+ onMenuClick?: (text: any) => void;
14
+ onSubMenuClick?: (text: any) => void;
15
+ onQuickMenuClick?: (text: any) => void;
15
16
  }
16
17
  export interface appHeaderMenuItemProps {
17
- menuName: string;
18
- subMenuItems: appHeaderSubMenuItemProps[];
18
+ menuLabel: string;
19
+ menuName?: string;
20
+ subMenuItems?: appHeaderSubMenuItemProps[];
19
21
  }
20
22
  export interface appHeaderSubMenuItemProps {
21
- subMenuName: string;
22
- quickMenuItems: appHeaderQuickMenuItemProps[];
23
+ subMenuLabel: string;
24
+ subMenuName?: string;
25
+ quickMenuItems?: appHeaderQuickMenuItemProps[];
23
26
  }
24
27
  export interface appHeaderQuickMenuItemProps {
25
- quickMenuName: string;
28
+ quickMenuLabel?: string;
29
+ quickMenuName?: string;
26
30
  quickMenuIconName: string;
27
31
  }
@@ -1 +1 @@
1
- export { default } from './Button';
1
+ export { default } from './Button';
package/lib/index.css DELETED
@@ -1,404 +0,0 @@
1
- .button {
2
- background-color: #71347b;
3
- }
4
- .ff-icon-container {
5
- display: flex;
6
- justify-content: center;
7
- align-items: center;
8
- }
9
-
10
- .ff-icon-click {
11
- cursor: pointer;
12
- padding: 5px;
13
- box-sizing: content-box;
14
- }
15
- .ff-icon-click:hover {
16
- border-radius: 50%;
17
- background-color: #ffffff;
18
- box-shadow: 0px 0px 16px rgba(0, 0, 0, 0.2509803922);
19
- }
20
- .ff-icon-click:hover > svg {
21
- color: #71347b;
22
- }
23
-
24
- .ff-icon-disabled {
25
- cursor: no-drop;
26
- }
27
- .ff-icon-disabled > svg {
28
- color: #cfd1e2;
29
- }
30
- .ff-icon-disabled:hover {
31
- box-shadow: none;
32
- }
33
- .ff-icon-disabled:hover > svg {
34
- color: #cfd1e2;
35
- }
36
- @font-face {
37
- font-family: "Montserrat-Medium", sans-serif;
38
- src: local("Montserrat-Medium"), url(../../fonts/Montserrat/Montserrat-Medium.ttf) format("truetype");
39
- }
40
- @font-face {
41
- font-family: "Montserrat-SemiBold", sans-serif;
42
- src: local("Montserrat-SemiBold"), url(../../fonts/Montserrat/Montserrat-SemiBold.ttf) format("truetype");
43
- }
44
- @font-face {
45
- font-family: "Poppins-Regular";
46
- src: local("Poppins-Regular"), url(../../fonts/Poppins/Poppins-Regular.ttf) format("truetype");
47
- }
48
- @font-face {
49
- font-family: "Poppins-Medium";
50
- src: local("Poppins-Medium"), url(../../fonts/Poppins/Poppins-Medium.ttf) format("truetype");
51
- }
52
- @font-face {
53
- font-family: "Poppins-SemiBold";
54
- src: local("Poppins-SemiBold"), url(../../fonts/Poppins/Poppins-SemiBold.ttf) format("truetype");
55
- }
56
- @font-face {
57
- font-family: "Poppins-Bold";
58
- src: local("Poppins-Bold"), url(../../fonts/Poppins/Poppins-Bold.ttf) format("truetype");
59
- }
60
- .fontPoppinsRegularXLg {
61
- font-family: Poppins-Regular !important;
62
- font-size: 18px !important;
63
- }
64
-
65
- .fontPoppinsRegularLg {
66
- font-family: Poppins-Regular !important;
67
- font-size: 16px !important;
68
- }
69
-
70
- .fontPoppinsRegularMd {
71
- font-family: Poppins-Regular !important;
72
- font-size: 14px !important;
73
- }
74
-
75
- .fontPoppinsRegularSm {
76
- font-family: Poppins-Regular !important;
77
- font-size: 12px !important;
78
- }
79
-
80
- .fontPoppinsRegularXs {
81
- font-family: Poppins-Regular !important;
82
- font-size: 10px !important;
83
- }
84
-
85
- .fontPoppinsRegularXs8px {
86
- font-family: Poppins-Regular !important;
87
- font-size: 8px !important;
88
- }
89
-
90
- .fontPoppinsRegularXs9px {
91
- font-family: Poppins-Regular !important;
92
- font-size: 9px !important;
93
- }
94
-
95
- .fontPoppinsMediumPageSubHeader {
96
- font-family: Poppins-Medium !important;
97
- font-size: 26px !important;
98
- }
99
-
100
- .fontPoppinsMediumXX2 {
101
- font-family: Poppins-Medium !important;
102
- font-size: 22px !important;
103
- }
104
-
105
- .fontPoppinsMediumXXlg {
106
- font-family: Poppins-Medium !important;
107
- font-size: 20px !important;
108
- }
109
-
110
- .fontPoppinsMediumXXlg {
111
- font-family: Poppins-Medium !important;
112
- font-size: 20px !important;
113
- }
114
-
115
- .fontPoppinsMediumLg {
116
- font-family: Poppins-Medium !important;
117
- font-size: 16px !important;
118
- }
119
-
120
- .fontPoppinsMediumMd {
121
- font-family: Poppins-Medium !important;
122
- font-size: 14px !important;
123
- }
124
-
125
- .fontPoppinsMediumSm {
126
- font-family: Poppins-Medium !important;
127
- font-size: 12px !important;
128
- }
129
-
130
- .fontPoppinsMediumSm11 {
131
- font-family: Poppins-Medium !important;
132
- font-size: 11px !important;
133
- }
134
-
135
- .fontPoppinsMediumXs {
136
- font-family: Poppins-Medium !important;
137
- font-size: 10px !important;
138
- }
139
-
140
- .fontPoppinsMediumXs8px {
141
- font-family: Poppins-Medium !important;
142
- font-size: 8px !important;
143
- }
144
-
145
- .fontPoppinsMediumXs8px {
146
- font-family: Poppins-Medium !important;
147
- font-size: 8px !important;
148
- }
149
-
150
- .fontPoppinsSemibold-size-50 {
151
- font-family: Poppins-SemiBold !important;
152
- font-size: 50px !important;
153
- }
154
-
155
- .fontPoppinsSemibold-size-42 {
156
- font-family: Poppins-SemiBold !important;
157
- font-size: 42px !important;
158
- }
159
-
160
- .fontPoppinsSemiboldPageHeader {
161
- font-family: Poppins-SemiBold !important;
162
- font-size: 36px !important;
163
- }
164
-
165
- .fontPoppinsSemiboldAlertHeader {
166
- font-family: Poppins-SemiBold !important;
167
- font-size: 32px !important;
168
- }
169
-
170
- .fontPoppinsSemibold-size-28 {
171
- font-family: Poppins-SemiBold !important;
172
- font-size: 28px !important;
173
- }
174
-
175
- .fontPoppinsSemibold-size-26 {
176
- font-family: Poppins-SemiBold !important;
177
- font-size: 26px !important;
178
- }
179
-
180
- .fontPoppinsSemiboldPageSubHeader {
181
- font-family: Poppins-SemiBold !important;
182
- font-size: 24px !important;
183
- }
184
-
185
- .fontPoppinsSemiboldXX2 {
186
- font-family: Poppins-SemiBold !important;
187
- font-size: 22px !important;
188
- }
189
-
190
- .fontPoppinsSemiboldXXlg {
191
- font-family: Poppins-SemiBold !important;
192
- font-size: 20px !important;
193
- }
194
-
195
- .fontPoppinsSemiboldXlg {
196
- font-family: Poppins-SemiBold !important;
197
- font-size: 18px !important;
198
- }
199
-
200
- .fontPoppinsSemiboldLg {
201
- font-family: Poppins-SemiBold !important;
202
- font-size: 16px !important;
203
- }
204
-
205
- .fontPoppinsSemiboldMd {
206
- font-family: Poppins-SemiBold !important;
207
- font-size: 14px !important;
208
- }
209
-
210
- .fontPoppinsSemiboldSm {
211
- font-family: Poppins-SemiBold !important;
212
- font-size: 12px !important;
213
- }
214
-
215
- .fontPoppinsSemiboldSm11 {
216
- font-family: Poppins-SemiBold !important;
217
- font-size: 11px !important;
218
- }
219
-
220
- .fontPoppinsSemiboldXs {
221
- font-family: Poppins-SemiBold !important;
222
- font-size: 10px !important;
223
- }
224
-
225
- .fontPoppinsSemiboldXs9px {
226
- font-family: Poppins-SemiBold !important;
227
- font-size: 9px !important;
228
- }
229
-
230
- .fontPoppinsSemiboldXs8px {
231
- font-family: Poppins-Medium !important;
232
- font-size: 8px !important;
233
- }
234
-
235
- .fontPoppinsSemiboldXXs {
236
- font-family: Poppins-SemiBold !important;
237
- font-size: 8px !important;
238
- }
239
-
240
- .fontMontserratMediumXs {
241
- font-family: Montserrat-Medium, sans-serif !important;
242
- font-size: 10px !important;
243
- }
244
-
245
- .fontMontserratMediumSm {
246
- font-family: Montserrat-Medium, sans-serif !important;
247
- font-size: 12px !important;
248
- }
249
-
250
- .fontMontserratMediumMd {
251
- font-family: Montserrat-Medium, sans-serif !important;
252
- font-size: 14px !important;
253
- }
254
-
255
- .fontMontserratSemiboldXs {
256
- font-family: Montserrat-SemiBold, sans-serif !important;
257
- font-size: 10px !important;
258
- }
259
-
260
- .fontMontserratSemiboldSm {
261
- font-family: Montserrat-SemiBold, sans-serif !important;
262
- font-size: 12px !important;
263
- }
264
-
265
- .fontMontserratSemiboldMd {
266
- font-family: Montserrat-SemiBold, sans-serif !important;
267
- font-size: 14px !important;
268
- }
269
-
270
- .fontMontserratSemiboldLg {
271
- font-family: Montserrat-SemiBold, sans-serif !important;
272
- font-size: 16px !important;
273
- }
274
-
275
- .ff--switch-container {
276
- position: relative;
277
- display: flex;
278
- align-items: center;
279
- }
280
- .ff--switch-container:disabled {
281
- opacity: 0.7;
282
- cursor: no-drop;
283
- }
284
- .ff--switch-container .ff--switch-checkbox {
285
- height: 0;
286
- width: 0;
287
- display: none;
288
- }
289
- .ff--switch-container .ff--switch-checkbox:checked + .ff--switch-label .ff--switch-button {
290
- left: calc(100% - 19px);
291
- right: -1px;
292
- border: 1px solid #71347b;
293
- background: #ffffff;
294
- transition: all 0.3s;
295
- box-shadow: 0px 0px 2px 0px #141a60;
296
- }
297
- .ff--switch-container .ff--switch-checkbox:checked + .ff--switch-label .ff--switch-button .ff-check-symbol {
298
- height: 6px;
299
- width: 3px;
300
- border-bottom: 2px solid #71347b;
301
- border-right: 2px solid #71347b;
302
- transform: rotate(45deg);
303
- border-bottom-right-radius: 2px;
304
- animation: checkmark 0.2s forwards;
305
- transition: all 0.1s;
306
- }
307
- .ff--switch-container .ff--switch-checkbox:checked + .ff--switch-label--primary {
308
- background: #71347b;
309
- transition: all 0.3s;
310
- }
311
- .ff--switch-container .ff--switch-checkbox:checked + .ff--switch-label:disabled {
312
- cursor: default;
313
- color: rgba(113, 52, 123, 0.5019607843);
314
- background: rgba(113, 52, 123, 0.5019607843);
315
- }
316
- .ff--switch-container .ff--switch-checkbox:disabled {
317
- cursor: no-drop;
318
- }
319
- .ff--switch-container .ff--switch-label {
320
- display: flex;
321
- align-items: center;
322
- justify-content: space-between;
323
- cursor: pointer;
324
- border-radius: 8px;
325
- position: relative;
326
- background: #cfd1e2;
327
- transition: all 0.3s;
328
- }
329
- .ff--switch-container .ff--switch-label--disabled {
330
- opacity: 0.5;
331
- cursor: no-drop;
332
- }
333
- .ff--switch-container .ff--switch-label .ff--switch-button {
334
- position: absolute;
335
- left: 0;
336
- width: 20px;
337
- height: 20px;
338
- border: 1px solid #cfd1e2;
339
- display: flex;
340
- background: #ffffff;
341
- border-radius: 50%;
342
- box-shadow: 0px 0px 2px 0px rgba(0, 0, 0, 0.2509803922);
343
- transition: all 0.3s;
344
- align-items: center;
345
- justify-content: center;
346
- box-sizing: border-box;
347
- }
348
- .ff--switch-container .ff--switch-label .ff--switch-button .ff-wrong-symbol {
349
- width: 8px;
350
- height: 8px;
351
- position: relative;
352
- display: flex;
353
- align-items: center;
354
- justify-content: center;
355
- }
356
- .ff--switch-container .ff--switch-label .ff--switch-button .ff-wrong-symbol .ff-cross-line {
357
- position: absolute;
358
- width: 100%;
359
- height: 2px;
360
- background-color: #aeb0c0;
361
- transition: all 0.3s;
362
- animation: crossmark 0.2s forwards;
363
- }
364
- .ff--switch-container .ff--switch-label .ff--switch-button .ff-wrong-symbol .ff-cross-line:first-child {
365
- transform: rotate(45deg);
366
- }
367
- .ff--switch-container .ff--switch-label .ff--switch-button .ff-wrong-symbol .ff-cross-line:last-child {
368
- transform: rotate(-45deg);
369
- }
370
- .ff--switch-container .default {
371
- width: 32px;
372
- height: 14px;
373
- }
374
- @keyframes checkmark {
375
- 0% {
376
- height: 0;
377
- width: 0;
378
- opacity: 0;
379
- }
380
- 50% {
381
- height: 3px;
382
- width: 3px;
383
- opacity: 1;
384
- }
385
- 100% {
386
- height: 6px;
387
- width: 3px;
388
- opacity: 1;
389
- }
390
- }
391
- @keyframes crossmark {
392
- 0% {
393
- width: 0;
394
- opacity: 0;
395
- }
396
- 50% {
397
- width: 50%;
398
- opacity: 1;
399
- }
400
- 100% {
401
- width: 100%;
402
- opacity: 1;
403
- }
404
- }