@gitlab/ui 92.4.0 → 93.0.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.
Files changed (43) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/dist/components/base/animated_icon/animated_chevron_right_down_icon.js +45 -0
  3. package/dist/components/base/animated_icon/animated_duo_chat_icon.js +45 -0
  4. package/dist/components/base/animated_icon/animated_notifications_icon.js +45 -0
  5. package/dist/components/base/animated_icon/animated_sidebar_icon.js +45 -0
  6. package/dist/components/base/animated_icon/animated_smile_icon.js +45 -0
  7. package/dist/components/base/animated_icon/animated_sort_icon.js +45 -0
  8. package/dist/components/base/animated_icon/animated_star_icon.js +45 -0
  9. package/dist/components/base/animated_icon/animated_todo_icon.js +45 -0
  10. package/dist/components/base/animated_icon/animated_upload_icon.js +45 -0
  11. package/dist/components/base/animated_icon/base_animated_icon.js +64 -0
  12. package/dist/components/base/broadcast_message/broadcast_message.js +1 -1
  13. package/dist/components/base/toast/toast.js +1 -1
  14. package/dist/components/base/token/token.js +1 -1
  15. package/dist/index.css +2 -2
  16. package/dist/index.css.map +1 -1
  17. package/dist/tailwind.css +1 -1
  18. package/dist/tailwind.css.map +1 -1
  19. package/dist/utility_classes.css +1 -1
  20. package/dist/utility_classes.css.map +1 -1
  21. package/package.json +4 -4
  22. package/src/components/base/animated_icon/animated_chevron_right_down_icon.vue +28 -0
  23. package/src/components/base/animated_icon/animated_duo_chat_icon.vue +39 -0
  24. package/src/components/base/animated_icon/animated_icon.md +4 -0
  25. package/src/components/base/animated_icon/animated_icon.scss +456 -0
  26. package/src/components/base/animated_icon/animated_notifications_icon.vue +49 -0
  27. package/src/components/base/animated_icon/animated_sidebar_icon.vue +35 -0
  28. package/src/components/base/animated_icon/animated_smile_icon.vue +37 -0
  29. package/src/components/base/animated_icon/animated_sort_icon.vue +84 -0
  30. package/src/components/base/animated_icon/animated_star_icon.vue +27 -0
  31. package/src/components/base/animated_icon/animated_todo_icon.vue +49 -0
  32. package/src/components/base/animated_icon/animated_upload_icon.vue +41 -0
  33. package/src/components/base/animated_icon/base_animated_icon.vue +39 -0
  34. package/src/components/base/broadcast_message/broadcast_message.scss +1 -0
  35. package/src/components/base/broadcast_message/broadcast_message.vue +1 -1
  36. package/src/components/base/toast/toast.js +1 -1
  37. package/src/components/base/toast/toast.scss +1 -0
  38. package/src/components/base/token/token.scss +1 -5
  39. package/src/components/base/token/token.vue +1 -6
  40. package/src/scss/components.scss +1 -1
  41. package/src/scss/utilities.scss +18 -0
  42. package/src/scss/utility-mixins/animation.scss +9 -0
  43. package/src/components/shared_components/close_button/close_button.scss +0 -21
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gitlab/ui",
3
- "version": "92.4.0",
3
+ "version": "93.0.0",
4
4
  "description": "GitLab UI Components",
5
5
  "license": "MIT",
6
6
  "main": "dist/index.js",
@@ -114,7 +114,7 @@
114
114
  "@gitlab/eslint-plugin": "20.2.1",
115
115
  "@gitlab/fonts": "^1.3.0",
116
116
  "@gitlab/stylelint-config": "6.2.2",
117
- "@gitlab/svgs": "3.115.0",
117
+ "@gitlab/svgs": "3.116.0",
118
118
  "@jest/test-sequencer": "^29.7.0",
119
119
  "@rollup/plugin-commonjs": "^11.1.0",
120
120
  "@rollup/plugin-node-resolve": "^7.1.3",
@@ -172,8 +172,8 @@
172
172
  "module-alias": "^2.2.2",
173
173
  "npm-run-all": "^4.1.5",
174
174
  "pikaday": "^1.8.0",
175
- "playwright": "^1.47.0",
176
- "playwright-core": "^1.47.0",
175
+ "playwright": "^1.47.1",
176
+ "playwright-core": "^1.47.1",
177
177
  "plop": "^2.5.4",
178
178
  "postcss": "8.4.28",
179
179
  "postcss-loader": "^7.0.2",
@@ -0,0 +1,28 @@
1
+ <script>
2
+ import GlBaseAnimatedIcon from './base_animated_icon.vue';
3
+
4
+ export default {
5
+ name: 'GlAnimatedChevronRightDownIcon',
6
+ extends: GlBaseAnimatedIcon,
7
+ };
8
+ </script>
9
+ <template>
10
+ <svg
11
+ :class="iconStateClass"
12
+ :aria-label="ariaLabel"
13
+ width="16"
14
+ height="16"
15
+ viewBox="0 0 16 16"
16
+ fill="none"
17
+ xmlns="http://www.w3.org/2000/svg"
18
+ >
19
+ <path
20
+ class="gl-animated-chevron-right-down-arrow"
21
+ d="M6.75 4.75L10 8L6.75 11.25"
22
+ stroke="currentColor"
23
+ stroke-width="1.5"
24
+ stroke-linecap="round"
25
+ stroke-linejoin="round"
26
+ />
27
+ </svg>
28
+ </template>
@@ -0,0 +1,39 @@
1
+ <script>
2
+ import GlBaseAnimatedIcon from './base_animated_icon.vue';
3
+
4
+ export default {
5
+ name: 'GlAnimatedDuoChatIcon',
6
+ extends: GlBaseAnimatedIcon,
7
+ };
8
+ </script>
9
+ <template>
10
+ <svg
11
+ :class="iconStateClass"
12
+ :aria-label="ariaLabel"
13
+ width="16"
14
+ height="16"
15
+ viewBox="0 0 16 16"
16
+ fill="none"
17
+ xmlns="http://www.w3.org/2000/svg"
18
+ >
19
+ <path
20
+ d="M3.75297 12.25V11.5H3.44253L3.2229 11.7194L3.75297 12.25ZM0.75 15.25H0C0 15.5533 0.182651 15.8267 0.462816 15.9428C0.742981 16.059 1.06551 15.9949 1.28007 15.7806L0.75 15.25ZM7.74 1C7.32579 1 6.99 1.33579 6.99 1.75C6.99 2.16421 7.32579 2.5 7.74 2.5V1ZM1.5 6.75C1.5 6.33579 1.16421 6 0.75 6C0.335786 6 0 6.33579 0 6.75H1.5ZM14.5 4V10H16V4H14.5ZM13 11.5H3.75297V13H13V11.5ZM3.2229 11.7194L0.219933 14.7194L1.28007 15.7806L4.28304 12.7806L3.2229 11.7194ZM7.74 2.5H13V1H7.74V2.5ZM1.5 15.25V6.75H0V15.25H1.5ZM14.5 10C14.5 10.8284 13.8284 11.5 13 11.5V13C14.6569 13 16 11.6569 16 10H14.5ZM16 4C16 2.34315 14.6569 1 13 1V2.5C13.8284 2.5 14.5 3.17157 14.5 4H16Z"
21
+ fill="currentColor"
22
+ stroke-width="0"
23
+ />
24
+ <path
25
+ class="gl-animated-duo-chat-small-sparkle"
26
+ fill-rule="evenodd"
27
+ clip-rule="evenodd"
28
+ d="M8.56489 5.39914C8.37631 4.86695 7.62369 4.86695 7.43511 5.39914L6.99787 6.63314C6.93751 6.80349 6.80349 6.93751 6.63314 6.99787L5.39914 7.43511C4.86695 7.62369 4.86695 8.37631 5.39914 8.56489L6.63314 9.00213C6.80349 9.06249 6.93751 9.19651 6.99787 9.36686L7.43511 10.6009C7.62369 11.133 8.37631 11.133 8.56489 10.6009L9.00213 9.36686C9.06249 9.19651 9.19651 9.06249 9.36686 9.00213L10.6009 8.56489C11.133 8.37631 11.133 7.62369 10.6009 7.43511L9.36686 6.99787C9.19651 6.93751 9.06249 6.80349 9.00213 6.63314L8.56489 5.39914Z"
29
+ fill="currentColor"
30
+ stroke-width="0"
31
+ />
32
+ <path
33
+ class="gl-animated-duo-chat-big-sparkle"
34
+ d="M8.56489 5.39914C8.37631 4.86695 7.62369 4.86695 7.43511 5.39914L6.99787 6.63314C6.93751 6.80349 6.80349 6.93751 6.63314 6.99787L5.39914 7.43511C4.86695 7.62369 4.86695 8.37631 5.39914 8.56489L6.63314 9.00213C6.80349 9.06249 6.93751 9.19651 6.99787 9.36686L7.43511 10.6009C7.62369 11.133 8.37631 11.133 8.56489 10.6009L9.00213 9.36686C9.06249 9.19651 9.19651 9.06249 9.36686 9.00213L10.6009 8.56489C11.133 8.37631 11.133 7.62369 10.6009 7.43511L9.36686 6.99787C9.19651 6.93751 9.06249 6.80349 9.00213 6.63314L8.56489 5.39914Z"
35
+ fill="currentColor"
36
+ stroke-width="0"
37
+ />
38
+ </svg>
39
+ </template>
@@ -0,0 +1,4 @@
1
+ ## Usage
2
+
3
+ The `GlAnimatedIcon` component can be used to render animated SVG
4
+ with any other interactive Pajamas component that can switch `GlAnimatedIcon` state.
@@ -0,0 +1,456 @@
1
+ .gl-animated-icon {
2
+ display: flex;
3
+ fill: none !important;
4
+ stroke: currentColor !important;
5
+
6
+ * {
7
+ @include gl-prefers-reduced-motion-transition;
8
+ @include gl-prefers-reduced-motion-animation;
9
+ transition: all $gl-transition-duration-medium $gl-easing-out-cubic;
10
+ animation-duration: $gl-transition-duration-slow;
11
+ animation-timing-function: $gl-easing-out-cubic;
12
+ animation-fill-mode: both;
13
+ }
14
+ }
15
+
16
+ /* * * * * * * * * * * * * * * * *
17
+ * animated_chevron_right_down_icon.vue
18
+ * * * * * * * * * * * * * * * * */
19
+
20
+ .gl-animated-chevron-right-down-arrow {
21
+ transform-origin: center center;
22
+ }
23
+
24
+ /* on state */
25
+ .gl-animated-icon-on {
26
+ .gl-animated-chevron-right-down-arrow {
27
+ rotate: 90deg;
28
+ }
29
+ }
30
+
31
+ /* off state */
32
+ .gl-animated-icon-off {
33
+ .gl-animated-chevron-right-down-arrow {
34
+ rotate: 0deg;
35
+ }
36
+ }
37
+
38
+ /* * * * * * * * * * * * * * * * *
39
+ * animated_duo_chat_icon.vue
40
+ * * * * * * * * * * * * * * * * */
41
+
42
+ .gl-animated-duo-chat-small-sparkle,
43
+ .gl-animated-duo-chat-big-sparkle {
44
+ transform-origin: 50% 50%;
45
+ }
46
+
47
+ /* on state */
48
+ .gl-animated-icon-on .gl-animated-duo-chat-small-sparkle,
49
+ .gl-animated-icon-on .gl-animated-duo-chat-big-sparkle {
50
+ animation-name: gl-animated-duo-chat-sparkle;
51
+ animation-duration: 2s;
52
+ animation-iteration-count: infinite;
53
+ }
54
+
55
+ .gl-animated-icon-on .gl-animated-duo-chat-small-sparkle {
56
+ animation-delay: -0.5s;
57
+ }
58
+
59
+ .gl-animated-icon-on .gl-animated-duo-chat-big-sparkle {
60
+ animation-delay: -1.5s;
61
+ }
62
+
63
+ @keyframes gl-animated-duo-chat-sparkle {
64
+ 0% {
65
+ translate: -45% -45%;
66
+ scale: 0;
67
+ }
68
+
69
+ 20%,
70
+ 45% {
71
+ translate: -31% -31%;
72
+ scale: 1;
73
+ }
74
+
75
+ 50%,
76
+ 80% {
77
+ translate: 0 -6%;
78
+ scale: 0.8;
79
+ }
80
+
81
+ 100% {
82
+ translate: 0 -6%;
83
+ scale: 0;
84
+ }
85
+ }
86
+
87
+ /* off state */
88
+ .gl-animated-duo-chat-small-sparkle {
89
+ translate: 0 -6%;
90
+ scale: 0.8;
91
+ }
92
+
93
+ .gl-animated-duo-chat-big-sparkle {
94
+ translate: -31% -31%;
95
+ scale: 1;
96
+ }
97
+
98
+ @media (prefers-reduced-motion) {
99
+ .gl-animated-icon-on .gl-animated-duo-chat-small-sparkle,
100
+ .gl-animated-icon-on .gl-animated-duo-chat-big-sparkle {
101
+ animation-name: none;
102
+ }
103
+ }
104
+
105
+ /* * * * * * * * * * * * * * * * *
106
+ * animated_notifications_icon.vue
107
+ * * * * * * * * * * * * * * * * */
108
+
109
+ /* on state */
110
+ .gl-animated-icon-on .gl-animated-notifications-bottom-part {
111
+ stroke-dasharray: 80% 100%;
112
+ stroke-dashoffset: -43%;
113
+ }
114
+
115
+ .gl-animated-icon-on .gl-animated-notifications-top-part {
116
+ stroke-dashoffset: 0;
117
+ }
118
+
119
+ .gl-animated-icon-on .gl-animated-notifications-line {
120
+ stroke-dasharray: 115% 120%;
121
+ stroke-dashoffset: 0;
122
+ }
123
+
124
+ /* off state */
125
+ .gl-animated-icon-off .gl-animated-notifications-bottom-part {
126
+ stroke-dasharray: 145% 100%;
127
+ stroke-dashoffset: 0;
128
+ }
129
+
130
+ .gl-animated-icon-off .gl-animated-notifications-top-part {
131
+ stroke-dasharray: 100% 100%;
132
+ stroke-dashoffset: 0;
133
+ }
134
+
135
+ .gl-animated-icon-off .gl-animated-notifications-line {
136
+ stroke-dasharray: 115% 120%;
137
+ stroke-dashoffset: -111%;
138
+ }
139
+
140
+ /* * * * * * * * * * * * * * * * *
141
+ * animated_sidebar_icon.vue
142
+ * * * * * * * * * * * * * * * * */
143
+
144
+ /* on state */
145
+ .gl-animated-icon-on .gl-animated-sidebar-line {
146
+ translate: 1% 0;
147
+ transition-timing-function: linear(0 0%, 5 60%, 1 100%);
148
+ }
149
+
150
+ /* off state */
151
+ .gl-animated-icon-off .gl-animated-sidebar-line {
152
+ translate: -1% 0;
153
+ transition-timing-function: linear(0 0%, 5 60%, 1 100%);
154
+ }
155
+
156
+ /* * * * * * * * * * * * * * * * *
157
+ * animated_smile_icon.vue
158
+ * * * * * * * * * * * * * * * * */
159
+
160
+ .gl-animated-smile-big-smile {
161
+ transform-origin: 50% 70%;
162
+ }
163
+
164
+ .gl-animated-smile-eyes circle {
165
+ fill: currentColor !important;
166
+ }
167
+
168
+ /* on state */
169
+ .gl-animated-icon-on .gl-animated-smile-eyes {
170
+ transition-timing-function: linear(0 0%, -1 20%, 1 100%);
171
+ translate: 0 -6%;
172
+ }
173
+
174
+ .gl-animated-icon-on .gl-animated-smile-big-smile {
175
+ scale: 1;
176
+ transition-delay: 0.1s;
177
+ }
178
+
179
+ .gl-animated-icon-on .gl-animated-smile-slight-smile {
180
+ stroke-dasharray: 10% 100%;
181
+ stroke-dashoffset: -8%;
182
+ }
183
+
184
+ /* off state */
185
+ .gl-animated-icon-off .gl-animated-smile-eyes {
186
+ translate: 0 0;
187
+ }
188
+
189
+ .gl-animated-icon-off .gl-animated-smile-big-smile {
190
+ scale: 0.1;
191
+ }
192
+
193
+ .gl-animated-icon-off .gl-animated-smile-slight-smile {
194
+ stroke-dasharray: 30% 100%;
195
+ stroke-dashoffset: 0;
196
+ }
197
+
198
+ /* * * * * * * * * * * * * * * * *
199
+ * animated_sort_icon.vue
200
+ * * * * * * * * * * * * * * * * */
201
+
202
+ .gl-animated-sort-icon {
203
+ overflow: visible;
204
+ }
205
+
206
+ /* off state */
207
+ .gl-animated-icon-off .gl-animated {
208
+ animation-name: gl-animated-star-off;
209
+ }
210
+
211
+ .gl-animated-sort-arrow-left,
212
+ .gl-animated-sort-arrow-right {
213
+ transform-origin: 18.7% 6.7%;
214
+ }
215
+
216
+ .gl-animated-icon-off .gl-animated-sort-arrow-left,
217
+ .gl-animated-icon-off .gl-animated-sort-arrow-right {
218
+ rotate: 0deg;
219
+ translate: 0 10%;
220
+ }
221
+
222
+ .gl-animated-icon-off .gl-animated-sort-long-line-off,
223
+ .gl-animated-icon-off .gl-animated-sort-medium-line-off,
224
+ .gl-animated-icon-off .gl-animated-sort-short-line-off {
225
+ opacity: 0;
226
+ transition-delay: -1s;
227
+ }
228
+
229
+ .gl-animated-icon-off .gl-animated-sort-long-line-on {
230
+ transition-delay: 0.05s;
231
+ }
232
+
233
+ .gl-animated-icon-off .gl-animated-sort-medium-line-on {
234
+ transition-delay: 0.1s;
235
+ }
236
+
237
+ .gl-animated-icon-off .gl-animated-sort-short-line-on {
238
+ transition-delay: 0.15s;
239
+ }
240
+
241
+ .gl-animated-icon-off .gl-animated-sort-line {
242
+ translate: 0 -7%;
243
+ }
244
+
245
+ /* on state */
246
+ .gl-animated-icon-on .gl-animated-sort-arrow-left {
247
+ rotate: 90deg;
248
+ translate: 0 77%;
249
+ }
250
+
251
+ .gl-animated-icon-on .gl-animated-sort-arrow-right {
252
+ rotate: -90deg;
253
+ translate: 0 77%;
254
+ }
255
+
256
+ .gl-animated-icon-on .gl-animated-sort-long-line-on,
257
+ .gl-animated-icon-on .gl-animated-sort-medium-line-on,
258
+ .gl-animated-icon-on .gl-animated-sort-short-line-on {
259
+ opacity: 0;
260
+ transition-delay: -1s;
261
+ }
262
+
263
+ .gl-animated-icon-on .gl-animated-sort-long-line-off {
264
+ transition-delay: 0.15s;
265
+ }
266
+
267
+ .gl-animated-icon-on .gl-animated-sort-medium-line-off {
268
+ transition-delay: 0.1s;
269
+ }
270
+
271
+ .gl-animated-icon-on .gl-animated-sort-short-line-off {
272
+ transition-delay: 0.05s;
273
+ }
274
+
275
+ .gl-animated-icon-on .gl-animated-sort-line {
276
+ translate: 0 0;
277
+ }
278
+
279
+
280
+ /* * * * * * * * * * * * * * * * *
281
+ * animated_star_icon.vue
282
+ * * * * * * * * * * * * * * * * */
283
+
284
+ .gl-animated-star-shape {
285
+ transform-origin: center center;
286
+ }
287
+
288
+ /* on state */
289
+ .gl-animated-icon-on .gl-animated-star-shape {
290
+ animation-name: gl-animated-star-on;
291
+ }
292
+
293
+ @keyframes gl-animated-star-on {
294
+ 0%,
295
+ 25% {
296
+ fill: transparent;
297
+ }
298
+
299
+ 50% {
300
+ fill: currentColor;
301
+ }
302
+
303
+ 100% {
304
+ fill: currentColor;
305
+ }
306
+
307
+ 0%,
308
+ 100% {
309
+ scale: 1;
310
+ }
311
+
312
+ 25% {
313
+ scale: 0.7;
314
+ }
315
+
316
+ 50% {
317
+ scale: 1.1;
318
+ }
319
+ }
320
+
321
+ /* off state */
322
+ .gl-animated-icon-off .gl-animated-star-shape {
323
+ animation-name: gl-animated-star-off;
324
+ }
325
+
326
+ @keyframes gl-animated-star-off {
327
+ 0%,
328
+ 25% {
329
+ fill: currentColor;
330
+ }
331
+
332
+ 50% {
333
+ fill: transparent;
334
+ }
335
+
336
+ 100% {
337
+ fill: transparent;
338
+ }
339
+
340
+ 0%,
341
+ 100% {
342
+ scale: 1;
343
+ }
344
+
345
+ 25% {
346
+ scale: 0.7;
347
+ }
348
+
349
+ 50% {
350
+ scale: 1.1;
351
+ }
352
+ }
353
+
354
+
355
+ /* * * * * * * * * * * * * * * * *
356
+ * animated_todo_icon.vue
357
+ * * * * * * * * * * * * * * * * */
358
+
359
+ /* on state */
360
+ .gl-animated-icon-on .gl-animated-todo-box {
361
+ stroke-dasharray: 240% 100%;
362
+ stroke-dashoffset: -19%;
363
+ }
364
+
365
+ .gl-animated-icon-on .gl-animated-todo-plus-line {
366
+ stroke-dasharray: 0% 100%;
367
+ stroke-dashoffset: -14%;
368
+ translate: 14% 7%;
369
+ }
370
+
371
+ .gl-animated-icon-on .gl-animated-todo-check {
372
+ stroke-dasharray: 76% 100%;
373
+ stroke-dashoffset: 0;
374
+ }
375
+
376
+ /* off state */
377
+ .gl-animated-icon-off .gl-animated-todo-box {
378
+ stroke-dasharray: 215% 100%;
379
+ stroke-dashoffset: -12%;
380
+ }
381
+
382
+ .gl-animated-icon-off .gl-animated-todo-plus-line {
383
+ stroke-dasharray: 30% 100%;
384
+ stroke-dashoffset: 0;
385
+ translate: 0 0;
386
+ }
387
+
388
+ .gl-animated-icon-off .gl-animated-todo-check {
389
+ stroke-dasharray: 76% 100%;
390
+ stroke-dashoffset: -76%;
391
+ }
392
+
393
+ /* * * * * * * * * * * * * * * * *
394
+ * animated_upload_icon.vue
395
+ * * * * * * * * * * * * * * * * */
396
+
397
+ .gl-animated-upload-line {
398
+ stroke-dasharray: 70% 100%;
399
+ }
400
+
401
+ /* on state */
402
+ .gl-animated-icon-on .gl-animated-upload-line {
403
+ animation-name: gl-animated-upload-line;
404
+ animation-duration: 2s;
405
+ animation-iteration-count: infinite;
406
+ }
407
+
408
+ @keyframes gl-animated-upload-line {
409
+ 0%,
410
+ 60%,
411
+ 100% {
412
+ translate: 0 0;
413
+ stroke-dashoffset: 0;
414
+ }
415
+
416
+ 10% {
417
+ translate: 0% 20%;
418
+ stroke-dashoffset: -20%;
419
+ }
420
+
421
+ 40% {
422
+ translate: 0 -10%;
423
+ stroke-dashoffset: 0;
424
+ }
425
+
426
+ 55% {
427
+ translate: 0 5%;
428
+ stroke-dashoffset: -5%;
429
+ }
430
+ }
431
+
432
+ .gl-animated-icon-on .gl-animated-upload-arrow {
433
+ animation-name: gl-animated-upload-arrow;
434
+ animation-duration: 2s;
435
+ animation-iteration-count: infinite;
436
+ }
437
+
438
+ @keyframes gl-animated-upload-arrow {
439
+ 0%,
440
+ 60%,
441
+ 100% {
442
+ translate: 0 0;
443
+ }
444
+
445
+ 10% {
446
+ translate: 0 20%;
447
+ }
448
+
449
+ 40% {
450
+ translate: 0 -8%;
451
+ }
452
+
453
+ 55% {
454
+ translate: 0 8%;
455
+ }
456
+ }
@@ -0,0 +1,49 @@
1
+ <script>
2
+ import GlBaseAnimatedIcon from './base_animated_icon.vue';
3
+
4
+ export default {
5
+ name: 'GlAnimatedNotificationIcon',
6
+ extends: GlBaseAnimatedIcon,
7
+ };
8
+ </script>
9
+ <template>
10
+ <svg
11
+ :class="iconStateClass"
12
+ :aria-label="ariaLabel"
13
+ width="16"
14
+ height="16"
15
+ viewBox="0 0 16 16"
16
+ fill="none"
17
+ xmlns="http://www.w3.org/2000/svg"
18
+ >
19
+ <path
20
+ class="gl-animated-notifications-bottom-part"
21
+ d="M3.72 11.25L2.35519 12.837C2.21579 12.9991 2.33095 13.25 2.54473 13.25H13.4428C13.6586 13.25 13.773 12.995 13.6296 12.8338L12.22 11.25V7C12.22 6.06556 11.9184 5.20155 11.4073 4.5"
22
+ stroke="currentColor"
23
+ stroke-width="1.5"
24
+ stroke-linecap="round"
25
+ />
26
+ <path
27
+ class="gl-animated-notifications-top-part"
28
+ d="M3.72 11.75V7C3.72 4.65279 5.62279 2.75 7.97 2.75C9.38277 2.75 10.6345 3.43933 11.4073 4.5"
29
+ stroke="currentColor"
30
+ stroke-width="1.5"
31
+ stroke-linecap="round"
32
+ />
33
+ <path
34
+ class="gl-animated-notifications-line"
35
+ d="M1.75 14.25L14.2461 1.75391"
36
+ stroke="currentColor"
37
+ stroke-width="1.5"
38
+ stroke-linecap="round"
39
+ />
40
+ <path
41
+ d="M6 13H10V13C10 14.1046 9.10457 15 8 15V15C6.89543 15 6 14.1046 6 13V13Z"
42
+ fill="currentColor"
43
+ />
44
+ <path
45
+ d="M7 2C7 1.44772 7.44772 1 8 1V1C8.55228 1 9 1.44772 9 2V2C9 2.55228 8.55228 3 8 3V3C7.44772 3 7 2.55228 7 2V2Z"
46
+ fill="currentColor"
47
+ />
48
+ </svg>
49
+ </template>
@@ -0,0 +1,35 @@
1
+ <script>
2
+ import GlBaseAnimatedIcon from './base_animated_icon.vue';
3
+
4
+ export default {
5
+ name: 'GlAnimatedSidebarIcon',
6
+ extends: GlBaseAnimatedIcon,
7
+ };
8
+ </script>
9
+ <template>
10
+ <svg
11
+ :class="iconStateClass"
12
+ :aria-label="ariaLabel"
13
+ width="16"
14
+ height="16"
15
+ viewBox="0 0 16 16"
16
+ fill="none"
17
+ xmlns="http://www.w3.org/2000/svg"
18
+ >
19
+ <rect
20
+ x="1.75"
21
+ y="1.75"
22
+ width="12.5"
23
+ height="12.5"
24
+ rx="1.25"
25
+ stroke="currentColor"
26
+ stroke-width="1.5"
27
+ />
28
+ <path
29
+ class="gl-animated-sidebar-line"
30
+ d="M5.25 2V14"
31
+ stroke="currentColor"
32
+ stroke-width="1.5"
33
+ />
34
+ </svg>
35
+ </template>
@@ -0,0 +1,37 @@
1
+ <script>
2
+ import GlBaseAnimatedIcon from './base_animated_icon.vue';
3
+
4
+ export default {
5
+ name: 'GlAnimatedSmileIcon',
6
+ extends: GlBaseAnimatedIcon,
7
+ };
8
+ </script>
9
+ <template>
10
+ <svg
11
+ :class="iconStateClass"
12
+ :aria-label="ariaLabel"
13
+ width="16"
14
+ height="16"
15
+ viewBox="0 0 16 16"
16
+ fill="none"
17
+ xmlns="http://www.w3.org/2000/svg"
18
+ >
19
+ <g class="gl-animated-smile-eyes">
20
+ <circle cy="7" cx="6" r="0.5" />
21
+ <circle cy="7" cx="10" r="0.5" />
22
+ </g>
23
+ <path
24
+ class="gl-animated-smile-big-smile"
25
+ d="M8 12C9.65685 12 11 10.6569 11 9H5C5 10.6569 6.34315 12 8 12Z"
26
+ fill="currentColor"
27
+ />
28
+ <path
29
+ class="gl-animated-smile-slight-smile"
30
+ d="M6.3 10C6.46667 10.3333 7 11 8 11C9 11 9.53333 10.3333 9.7 10"
31
+ stroke="currentColor"
32
+ stroke-width="1.5"
33
+ stroke-linecap="round"
34
+ />
35
+ <circle cx="8" cy="8" r="7.25" stroke="currentColor" stroke-width="1.5" />
36
+ </svg>
37
+ </template>