@jis3r/icons 2.2.0 → 2.4.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 (33) hide show
  1. package/dist/icons/message-circle-code.svelte +109 -0
  2. package/dist/icons/message-circle-code.svelte.d.ts +4 -0
  3. package/dist/icons/message-circle-dashed.svelte +81 -0
  4. package/dist/icons/message-circle-dashed.svelte.d.ts +4 -0
  5. package/dist/icons/message-circle-heart.svelte +96 -0
  6. package/dist/icons/message-circle-heart.svelte.d.ts +4 -0
  7. package/dist/icons/message-circle-x.svelte +109 -0
  8. package/dist/icons/message-circle-x.svelte.d.ts +4 -0
  9. package/dist/icons/message-square-code.svelte +112 -0
  10. package/dist/icons/message-square-code.svelte.d.ts +4 -0
  11. package/dist/icons/message-square-dashed.svelte +82 -0
  12. package/dist/icons/message-square-dashed.svelte.d.ts +4 -0
  13. package/dist/icons/message-square-dot.svelte +89 -0
  14. package/dist/icons/message-square-dot.svelte.d.ts +4 -0
  15. package/dist/icons/message-square-heart.svelte +99 -0
  16. package/dist/icons/message-square-heart.svelte.d.ts +4 -0
  17. package/dist/icons/message-square-quote.svelte +106 -0
  18. package/dist/icons/message-square-quote.svelte.d.ts +4 -0
  19. package/dist/icons/message-square-x.svelte +109 -0
  20. package/dist/icons/message-square-x.svelte.d.ts +4 -0
  21. package/dist/icons/redo-dot.svelte +1 -1
  22. package/dist/icons/redo.svelte +1 -1
  23. package/dist/icons/standalone-props.d.ts +6 -0
  24. package/dist/icons/standalone-props.js +14 -0
  25. package/dist/icons/undo-dot.svelte +1 -1
  26. package/dist/icons/undo.svelte +1 -1
  27. package/dist/icons/user-check.svelte +46 -3
  28. package/dist/icons/user-pen.svelte +46 -2
  29. package/dist/icons/user-x.svelte +124 -0
  30. package/dist/icons/user-x.svelte.d.ts +4 -0
  31. package/dist/index.d.ts +13 -0
  32. package/dist/index.js +11 -0
  33. package/package.json +3 -2
@@ -0,0 +1,109 @@
1
+ <script lang="ts">
2
+ import type { IconProps } from './types.js';
3
+
4
+ let {
5
+ color = 'currentColor',
6
+ size = 24,
7
+ strokeWidth = 2,
8
+ animate = false,
9
+ class: className = ''
10
+ }: IconProps = $props();
11
+
12
+ function handleMouseEnter() {
13
+ if (animate) return;
14
+ animate = true;
15
+ setTimeout(() => {
16
+ animate = false;
17
+ }, 800);
18
+ }
19
+ </script>
20
+
21
+ <div class={className} aria-label="message-circle-code" role="img" onmouseenter={handleMouseEnter}>
22
+ <svg
23
+ xmlns="http://www.w3.org/2000/svg"
24
+ width={size}
25
+ height={size}
26
+ viewBox="0 0 24 24"
27
+ fill="none"
28
+ stroke={color}
29
+ stroke-width={strokeWidth}
30
+ stroke-linecap="round"
31
+ stroke-linejoin="round"
32
+ class:animate
33
+ >
34
+ <g class="message-circle-code-group">
35
+ <path d="M7.9 20A9 9 0 1 0 4 16.1L2 22Z" class="message-circle-code-path1" />
36
+ <path d="M10 9.5 8 12l2 2.5" class="message-circle-code-path2" />
37
+ <path d="m14 9.5 2 2.5-2 2.5" class="message-circle-code-path3" />
38
+ </g>
39
+ </svg>
40
+ </div>
41
+
42
+ <style>
43
+ div {
44
+ display: inline-block;
45
+ }
46
+ .message-circle-code-group {
47
+ transform-origin: bottom left;
48
+ }
49
+
50
+ .animate .message-circle-code-group {
51
+ animation: messageCircleCodeGroupAnimation 0.8s ease-in-out;
52
+ }
53
+
54
+ .animate .message-circle-code-path2 {
55
+ animation: messageCircleCodePath2Animation 0.6s ease-in-out;
56
+ }
57
+
58
+ .animate .message-circle-code-path3 {
59
+ animation: messageCircleCodePath3Animation 0.6s ease-in-out;
60
+ }
61
+
62
+ @keyframes messageCircleCodeGroupAnimation {
63
+ 0% {
64
+ transform: rotate(0deg);
65
+ }
66
+ 40% {
67
+ transform: rotate(8deg);
68
+ }
69
+ 60% {
70
+ transform: rotate(-8deg);
71
+ }
72
+ 80% {
73
+ transform: rotate(2deg);
74
+ }
75
+ 100% {
76
+ transform: rotate(0deg);
77
+ }
78
+ }
79
+
80
+ @keyframes messageCircleCodePath2Animation {
81
+ 0% {
82
+ transform: translateX(0);
83
+ }
84
+ 33.33% {
85
+ transform: translateX(-1.5px);
86
+ }
87
+ 66.67% {
88
+ transform: translateX(0.75px);
89
+ }
90
+ 100% {
91
+ transform: translateX(0);
92
+ }
93
+ }
94
+
95
+ @keyframes messageCircleCodePath3Animation {
96
+ 0% {
97
+ transform: translateX(0);
98
+ }
99
+ 33.33% {
100
+ transform: translateX(1.5px);
101
+ }
102
+ 66.67% {
103
+ transform: translateX(-0.75px);
104
+ }
105
+ 100% {
106
+ transform: translateX(0);
107
+ }
108
+ }
109
+ </style>
@@ -0,0 +1,4 @@
1
+ import type { IconProps } from './types.js';
2
+ declare const MessageCircleCode: import("svelte").Component<IconProps, {}, "">;
3
+ type MessageCircleCode = ReturnType<typeof MessageCircleCode>;
4
+ export default MessageCircleCode;
@@ -0,0 +1,81 @@
1
+ <script lang="ts">
2
+ import type { IconProps } from './types.js';
3
+
4
+ let {
5
+ color = 'currentColor',
6
+ size = 24,
7
+ strokeWidth = 2,
8
+ animate = false,
9
+ class: className = ''
10
+ }: IconProps = $props();
11
+
12
+ function handleMouseEnter() {
13
+ if (animate) return;
14
+ animate = true;
15
+ setTimeout(() => {
16
+ animate = false;
17
+ }, 800);
18
+ }
19
+ </script>
20
+
21
+ <div
22
+ class={className}
23
+ aria-label="message-circle-dashed"
24
+ role="img"
25
+ onmouseenter={handleMouseEnter}
26
+ >
27
+ <svg
28
+ xmlns="http://www.w3.org/2000/svg"
29
+ width={size}
30
+ height={size}
31
+ viewBox="0 0 24 24"
32
+ fill="none"
33
+ stroke={color}
34
+ stroke-width={strokeWidth}
35
+ stroke-linecap="round"
36
+ stroke-linejoin="round"
37
+ class:animate
38
+ >
39
+ <g class="message-circle-dashed-group">
40
+ <path d="M13.5 3.1c-.5 0-1-.1-1.5-.1s-1 .1-1.5.1" class="message-circle-dashed-path1" />
41
+ <path d="M19.3 6.8a10.45 10.45 0 0 0-2.1-2.1" class="message-circle-dashed-path2" />
42
+ <path d="M20.9 13.5c.1-.5.1-1 .1-1.5s-.1-1-.1-1.5" class="message-circle-dashed-path3" />
43
+ <path d="M17.2 19.3a10.45 10.45 0 0 0 2.1-2.1" class="message-circle-dashed-path4" />
44
+ <path d="M10.5 20.9c.5.1 1 .1 1.5.1s1-.1 1.5-.1" class="message-circle-dashed-path5" />
45
+ <path d="M3.5 17.5 2 22l4.5-1.5" class="message-circle-dashed-path6" />
46
+ <path d="M3.1 10.5c0 .5-.1 1-.1 1.5s.1 1 .1 1.5" class="message-circle-dashed-path7" />
47
+ <path d="M6.8 4.7a10.45 10.45 0 0 0-2.1 2.1" class="message-circle-dashed-path8" />
48
+ </g>
49
+ </svg>
50
+ </div>
51
+
52
+ <style>
53
+ div {
54
+ display: inline-block;
55
+ }
56
+ .message-circle-dashed-group {
57
+ transform-origin: bottom left;
58
+ }
59
+
60
+ .animate .message-circle-dashed-group {
61
+ animation: messageCircleDashedGroupAnimation 0.8s ease-in-out;
62
+ }
63
+
64
+ @keyframes messageCircleDashedGroupAnimation {
65
+ 0% {
66
+ transform: rotate(0deg);
67
+ }
68
+ 40% {
69
+ transform: rotate(8deg);
70
+ }
71
+ 60% {
72
+ transform: rotate(-8deg);
73
+ }
74
+ 80% {
75
+ transform: rotate(2deg);
76
+ }
77
+ 100% {
78
+ transform: rotate(0deg);
79
+ }
80
+ }
81
+ </style>
@@ -0,0 +1,4 @@
1
+ import type { IconProps } from './types.js';
2
+ declare const MessageCircleDashed: import("svelte").Component<IconProps, {}, "">;
3
+ type MessageCircleDashed = ReturnType<typeof MessageCircleDashed>;
4
+ export default MessageCircleDashed;
@@ -0,0 +1,96 @@
1
+ <script lang="ts">
2
+ import type { IconProps } from './types.js';
3
+
4
+ let {
5
+ color = 'currentColor',
6
+ size = 24,
7
+ strokeWidth = 2,
8
+ animate = false,
9
+ class: className = ''
10
+ }: IconProps = $props();
11
+
12
+ function handleMouseEnter() {
13
+ if (animate) return;
14
+ animate = true;
15
+ setTimeout(() => {
16
+ animate = false;
17
+ }, 800);
18
+ }
19
+ </script>
20
+
21
+ <div class={className} aria-label="message-circle-heart" role="img" onmouseenter={handleMouseEnter}>
22
+ <svg
23
+ xmlns="http://www.w3.org/2000/svg"
24
+ width={size}
25
+ height={size}
26
+ viewBox="0 0 24 24"
27
+ fill="none"
28
+ stroke={color}
29
+ stroke-width={strokeWidth}
30
+ stroke-linecap="round"
31
+ stroke-linejoin="round"
32
+ class:animate
33
+ >
34
+ <g class="message-circle-heart-group">
35
+ <path d="M7.9 20A9 9 0 1 0 4 16.1L2 22Z" class="message-circle-heart-path1" />
36
+ <path
37
+ d="M15.8 9.2a2.5 2.5 0 0 0-3.5 0l-.3.4-.35-.3a2.42 2.42 0 1 0-3.2 3.6l3.6 3.5 3.6-3.5c1.2-1.2 1.1-2.7.2-3.7"
38
+ class="message-circle-heart-path2"
39
+ />
40
+ </g>
41
+ </svg>
42
+ </div>
43
+
44
+ <style>
45
+ div {
46
+ display: inline-block;
47
+ }
48
+ .message-circle-heart-group {
49
+ transform-origin: bottom left;
50
+ }
51
+
52
+ .message-circle-heart-path2 {
53
+ transform-origin: center;
54
+ }
55
+
56
+ .animate .message-circle-heart-group {
57
+ animation: messageCircleHeartGroupAnimation 0.8s ease-in-out;
58
+ }
59
+
60
+ .animate .message-circle-heart-path2 {
61
+ animation: messageCircleHeartPath2Animation 0.8s ease-in-out;
62
+ }
63
+
64
+ @keyframes messageCircleHeartGroupAnimation {
65
+ 0% {
66
+ transform: rotate(0deg);
67
+ }
68
+ 40% {
69
+ transform: rotate(8deg);
70
+ }
71
+ 60% {
72
+ transform: rotate(-8deg);
73
+ }
74
+ 80% {
75
+ transform: rotate(2deg);
76
+ }
77
+ 100% {
78
+ transform: rotate(0deg);
79
+ }
80
+ }
81
+
82
+ @keyframes messageCircleHeartPath2Animation {
83
+ 0% {
84
+ transform: scale(1);
85
+ }
86
+ 25% {
87
+ transform: scale(0.7);
88
+ }
89
+ 50% {
90
+ transform: scale(1.1);
91
+ }
92
+ 100% {
93
+ transform: scale(1);
94
+ }
95
+ }
96
+ </style>
@@ -0,0 +1,4 @@
1
+ import type { IconProps } from './types.js';
2
+ declare const MessageCircleHeart: import("svelte").Component<IconProps, {}, "">;
3
+ type MessageCircleHeart = ReturnType<typeof MessageCircleHeart>;
4
+ export default MessageCircleHeart;
@@ -0,0 +1,109 @@
1
+ <script lang="ts">
2
+ import type { IconProps } from './types.js';
3
+
4
+ let {
5
+ color = 'currentColor',
6
+ size = 24,
7
+ strokeWidth = 2,
8
+ animate = false,
9
+ class: className = ''
10
+ }: IconProps = $props();
11
+
12
+ function handleMouseEnter() {
13
+ if (animate) return;
14
+ animate = true;
15
+ setTimeout(() => {
16
+ animate = false;
17
+ }, 800);
18
+ }
19
+ </script>
20
+
21
+ <div class={className} aria-label="message-circle-x" role="img" onmouseenter={handleMouseEnter}>
22
+ <svg
23
+ xmlns="http://www.w3.org/2000/svg"
24
+ width={size}
25
+ height={size}
26
+ viewBox="0 0 24 24"
27
+ fill="none"
28
+ stroke={color}
29
+ stroke-width={strokeWidth}
30
+ stroke-linecap="round"
31
+ stroke-linejoin="round"
32
+ class="message-circle-x-icon"
33
+ >
34
+ <g class="message-circle-x-group" class:animate>
35
+ <path
36
+ d="M2.992 16.342a2 2 0 0 1 .094 1.167l-1.065 3.29a1 1 0 0 0 1.236 1.168l3.413-.998a2 2 0 0 1 1.099.092 10 10 0 1 0-4.777-4.719"
37
+ />
38
+ <path d="m15 9-6 6" class="diagonal-1" />
39
+ <path d="m9 9 6 6" class="diagonal-2" />
40
+ </g>
41
+ </svg>
42
+ </div>
43
+
44
+ <style>
45
+ div {
46
+ display: inline-block;
47
+ }
48
+ .message-circle-x-icon {
49
+ overflow: visible;
50
+ }
51
+
52
+ .message-circle-x-group {
53
+ transform-origin: bottom left;
54
+ }
55
+
56
+ .message-circle-x-group.animate {
57
+ animation: messageCircleAnimation 0.8s ease-in-out;
58
+ }
59
+
60
+ .diagonal-1,
61
+ .diagonal-2 {
62
+ stroke-dasharray: 8.5;
63
+ stroke-dashoffset: 0;
64
+ transition: stroke-dashoffset 0.15s ease-out;
65
+ }
66
+
67
+ .message-circle-x-group.animate .diagonal-1 {
68
+ opacity: 0;
69
+ animation: lineAnimation 0.3s ease-out forwards;
70
+ }
71
+
72
+ .message-circle-x-group.animate .diagonal-2 {
73
+ opacity: 0;
74
+ animation: lineAnimation 0.3s ease-out 0.25s forwards;
75
+ }
76
+
77
+ @keyframes messageCircleAnimation {
78
+ 0% {
79
+ transform: rotate(0deg);
80
+ }
81
+ 40% {
82
+ transform: rotate(8deg);
83
+ }
84
+ 60% {
85
+ transform: rotate(-8deg);
86
+ }
87
+ 80% {
88
+ transform: rotate(2deg);
89
+ }
90
+ 100% {
91
+ transform: rotate(0deg);
92
+ }
93
+ }
94
+
95
+ @keyframes lineAnimation {
96
+ 0% {
97
+ opacity: 0;
98
+ stroke-dashoffset: 8.5;
99
+ }
100
+ 15% {
101
+ opacity: 1;
102
+ stroke-dashoffset: 8.5;
103
+ }
104
+ 100% {
105
+ opacity: 1;
106
+ stroke-dashoffset: 0;
107
+ }
108
+ }
109
+ </style>
@@ -0,0 +1,4 @@
1
+ import type { IconProps } from './types.js';
2
+ declare const MessageCircleX: import("svelte").Component<IconProps, {}, "">;
3
+ type MessageCircleX = ReturnType<typeof MessageCircleX>;
4
+ export default MessageCircleX;
@@ -0,0 +1,112 @@
1
+ <script lang="ts">
2
+ import type { IconProps } from './types.js';
3
+
4
+ let {
5
+ color = 'currentColor',
6
+ size = 24,
7
+ strokeWidth = 2,
8
+ animate = false,
9
+ class: className = ''
10
+ }: IconProps = $props();
11
+
12
+ function handleMouseEnter() {
13
+ if (animate) return;
14
+ animate = true;
15
+ setTimeout(() => {
16
+ animate = false;
17
+ }, 800);
18
+ }
19
+ </script>
20
+
21
+ <div class={className} aria-label="message-square-code" role="img" onmouseenter={handleMouseEnter}>
22
+ <svg
23
+ xmlns="http://www.w3.org/2000/svg"
24
+ width={size}
25
+ height={size}
26
+ viewBox="0 0 24 24"
27
+ fill="none"
28
+ stroke={color}
29
+ stroke-width={strokeWidth}
30
+ stroke-linecap="round"
31
+ stroke-linejoin="round"
32
+ class:animate
33
+ >
34
+ <g class="message-square-code-group">
35
+ <path
36
+ d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"
37
+ class="message-square-code-path1"
38
+ />
39
+ <path d="M10 7.5 8 10l2 2.5" class="message-square-code-path2" />
40
+ <path d="m14 7.5 2 2.5-2 2.5" class="message-square-code-path3" />
41
+ </g>
42
+ </svg>
43
+ </div>
44
+
45
+ <style>
46
+ div {
47
+ display: inline-block;
48
+ }
49
+ .message-square-code-group {
50
+ transform-origin: bottom left;
51
+ }
52
+
53
+ .animate .message-square-code-group {
54
+ animation: messageSquareCodeGroupAnimation 0.8s ease-in-out;
55
+ }
56
+
57
+ .animate .message-square-code-path2 {
58
+ animation: messageSquareCodePath2Animation 0.6s ease-in-out;
59
+ }
60
+
61
+ .animate .message-square-code-path3 {
62
+ animation: messageSquareCodePath3Animation 0.6s ease-in-out;
63
+ }
64
+
65
+ @keyframes messageSquareCodeGroupAnimation {
66
+ 0% {
67
+ transform: rotate(0deg);
68
+ }
69
+ 40% {
70
+ transform: rotate(8deg);
71
+ }
72
+ 60% {
73
+ transform: rotate(-8deg);
74
+ }
75
+ 80% {
76
+ transform: rotate(2deg);
77
+ }
78
+ 100% {
79
+ transform: rotate(0deg);
80
+ }
81
+ }
82
+
83
+ @keyframes messageSquareCodePath2Animation {
84
+ 0% {
85
+ transform: translateX(0);
86
+ }
87
+ 33.33% {
88
+ transform: translateX(-1.5px);
89
+ }
90
+ 66.67% {
91
+ transform: translateX(0.75px);
92
+ }
93
+ 100% {
94
+ transform: translateX(0);
95
+ }
96
+ }
97
+
98
+ @keyframes messageSquareCodePath3Animation {
99
+ 0% {
100
+ transform: translateX(0);
101
+ }
102
+ 33.33% {
103
+ transform: translateX(1.5px);
104
+ }
105
+ 66.67% {
106
+ transform: translateX(-0.75px);
107
+ }
108
+ 100% {
109
+ transform: translateX(0);
110
+ }
111
+ }
112
+ </style>
@@ -0,0 +1,4 @@
1
+ import type { IconProps } from './types.js';
2
+ declare const MessageSquareCode: import("svelte").Component<IconProps, {}, "">;
3
+ type MessageSquareCode = ReturnType<typeof MessageSquareCode>;
4
+ export default MessageSquareCode;
@@ -0,0 +1,82 @@
1
+ <script lang="ts">
2
+ import type { IconProps } from './types.js';
3
+
4
+ let {
5
+ color = 'currentColor',
6
+ size = 24,
7
+ strokeWidth = 2,
8
+ animate = false,
9
+ class: className = ''
10
+ }: IconProps = $props();
11
+
12
+ function handleMouseEnter() {
13
+ if (animate) return;
14
+ animate = true;
15
+ setTimeout(() => {
16
+ animate = false;
17
+ }, 800);
18
+ }
19
+ </script>
20
+
21
+ <div
22
+ class={className}
23
+ aria-label="message-square-dashed"
24
+ role="img"
25
+ onmouseenter={handleMouseEnter}
26
+ >
27
+ <svg
28
+ xmlns="http://www.w3.org/2000/svg"
29
+ width={size}
30
+ height={size}
31
+ viewBox="0 0 24 24"
32
+ fill="none"
33
+ stroke={color}
34
+ stroke-width={strokeWidth}
35
+ stroke-linecap="round"
36
+ stroke-linejoin="round"
37
+ class:animate
38
+ >
39
+ <g class="message-square-dashed-group">
40
+ <path d="M5 3a2 2 0 0 0-2 2" class="message-square-dashed-path1" />
41
+ <path d="M9 3h1" class="message-square-dashed-path2" />
42
+ <path d="M14 3h1" class="message-square-dashed-path3" />
43
+ <path d="M19 3a2 2 0 0 1 2 2" class="message-square-dashed-path4" />
44
+ <path d="M21 9v1" class="message-square-dashed-path5" />
45
+ <path d="M21 14v1a2 2 0 0 1-2 2" class="message-square-dashed-path6" />
46
+ <path d="M14 17h1" class="message-square-dashed-path7" />
47
+ <path d="M10 17H7l-4 4v-7" class="message-square-dashed-path8" />
48
+ <path d="M3 9v1" class="message-square-dashed-path9" />
49
+ </g>
50
+ </svg>
51
+ </div>
52
+
53
+ <style>
54
+ div {
55
+ display: inline-block;
56
+ }
57
+ .message-square-dashed-group {
58
+ transform-origin: bottom left;
59
+ }
60
+
61
+ .animate .message-square-dashed-group {
62
+ animation: messageSquareDashedGroupAnimation 0.8s ease-in-out;
63
+ }
64
+
65
+ @keyframes messageSquareDashedGroupAnimation {
66
+ 0% {
67
+ transform: rotate(0deg);
68
+ }
69
+ 40% {
70
+ transform: rotate(8deg);
71
+ }
72
+ 60% {
73
+ transform: rotate(-8deg);
74
+ }
75
+ 80% {
76
+ transform: rotate(2deg);
77
+ }
78
+ 100% {
79
+ transform: rotate(0deg);
80
+ }
81
+ }
82
+ </style>
@@ -0,0 +1,4 @@
1
+ import type { IconProps } from './types.js';
2
+ declare const MessageSquareDashed: import("svelte").Component<IconProps, {}, "">;
3
+ type MessageSquareDashed = ReturnType<typeof MessageSquareDashed>;
4
+ export default MessageSquareDashed;
@@ -0,0 +1,89 @@
1
+ <script lang="ts">
2
+ import type { IconProps } from './types.js';
3
+
4
+ let {
5
+ color = 'currentColor',
6
+ size = 24,
7
+ strokeWidth = 2,
8
+ animate = false,
9
+ class: className = ''
10
+ }: IconProps = $props();
11
+
12
+ function handleMouseEnter() {
13
+ if (animate) return;
14
+ animate = true;
15
+ setTimeout(() => {
16
+ animate = false;
17
+ }, 800);
18
+ }
19
+ </script>
20
+
21
+ <div class={className} aria-label="message-square-dot" role="img" onmouseenter={handleMouseEnter}>
22
+ <svg
23
+ xmlns="http://www.w3.org/2000/svg"
24
+ width={size}
25
+ height={size}
26
+ viewBox="0 0 24 24"
27
+ fill="none"
28
+ stroke={color}
29
+ stroke-width={strokeWidth}
30
+ stroke-linecap="round"
31
+ stroke-linejoin="round"
32
+ class:animate
33
+ >
34
+ <g class="message-square-dot-group">
35
+ <path
36
+ d="M11.7 3H5a2 2 0 0 0-2 2v16l4-4h12a2 2 0 0 0 2-2v-2.7"
37
+ class="message-square-dot-path"
38
+ />
39
+ <circle cx="18" cy="6" r="3" class="message-square-dot-circle" />
40
+ </g>
41
+ </svg>
42
+ </div>
43
+
44
+ <style>
45
+ div {
46
+ display: inline-block;
47
+ }
48
+ .message-square-dot-group {
49
+ transform-origin: bottom left;
50
+ }
51
+
52
+ .animate .message-square-dot-group {
53
+ animation: messageSquareDotGroupAnimation 0.8s ease-in-out;
54
+ }
55
+
56
+ .animate .message-square-dot-circle {
57
+ animation: messageSquareDotCircleAnimation 0.6s ease-in-out;
58
+ }
59
+
60
+ @keyframes messageSquareDotGroupAnimation {
61
+ 0% {
62
+ transform: rotate(0deg);
63
+ }
64
+ 40% {
65
+ transform: rotate(8deg);
66
+ }
67
+ 60% {
68
+ transform: rotate(-8deg);
69
+ }
70
+ 80% {
71
+ transform: rotate(2deg);
72
+ }
73
+ 100% {
74
+ transform: rotate(0deg);
75
+ }
76
+ }
77
+
78
+ @keyframes messageSquareDotCircleAnimation {
79
+ 0% {
80
+ transform: translate(0, 0);
81
+ }
82
+ 50% {
83
+ transform: translate(-2px, 2px);
84
+ }
85
+ 100% {
86
+ transform: translate(0, 0);
87
+ }
88
+ }
89
+ </style>