@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,4 @@
1
+ import type { IconProps } from './types.js';
2
+ declare const MessageSquareDot: import("svelte").Component<IconProps, {}, "">;
3
+ type MessageSquareDot = ReturnType<typeof MessageSquareDot>;
4
+ export default MessageSquareDot;
@@ -0,0 +1,99 @@
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-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-square-heart-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-heart-path1"
38
+ />
39
+ <path
40
+ d="M14.8 7.5a1.84 1.84 0 0 0-2.6 0l-.2.3-.3-.3a1.84 1.84 0 1 0-2.4 2.8L12 13l2.7-2.7c.9-.9.8-2.1.1-2.8"
41
+ class="message-square-heart-path2"
42
+ />
43
+ </g>
44
+ </svg>
45
+ </div>
46
+
47
+ <style>
48
+ div {
49
+ display: inline-block;
50
+ }
51
+ .message-square-heart-group {
52
+ transform-origin: bottom left;
53
+ }
54
+
55
+ .message-square-heart-path2 {
56
+ transform-origin: center;
57
+ }
58
+
59
+ .animate .message-square-heart-group {
60
+ animation: messageSquareHeartGroupAnimation 0.8s ease-in-out;
61
+ }
62
+
63
+ .animate .message-square-heart-path2 {
64
+ animation: messageSquareHeartPath2Animation 0.8s ease-in-out;
65
+ }
66
+
67
+ @keyframes messageSquareHeartGroupAnimation {
68
+ 0% {
69
+ transform: rotate(0deg);
70
+ }
71
+ 40% {
72
+ transform: rotate(8deg);
73
+ }
74
+ 60% {
75
+ transform: rotate(-8deg);
76
+ }
77
+ 80% {
78
+ transform: rotate(2deg);
79
+ }
80
+ 100% {
81
+ transform: rotate(0deg);
82
+ }
83
+ }
84
+
85
+ @keyframes messageSquareHeartPath2Animation {
86
+ 0% {
87
+ transform: scale(1);
88
+ }
89
+ 25% {
90
+ transform: scale(0.7);
91
+ }
92
+ 50% {
93
+ transform: scale(1.1);
94
+ }
95
+ 100% {
96
+ transform: scale(1);
97
+ }
98
+ }
99
+ </style>
@@ -0,0 +1,4 @@
1
+ import type { IconProps } from './types.js';
2
+ declare const MessageSquareHeart: import("svelte").Component<IconProps, {}, "">;
3
+ type MessageSquareHeart = ReturnType<typeof MessageSquareHeart>;
4
+ export default MessageSquareHeart;
@@ -0,0 +1,106 @@
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-quote" 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-quote-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-quote-path1"
38
+ />
39
+ <path d="M8 12a2 2 0 0 0 2-2V8H8" class="message-square-quote-path2" />
40
+ <path d="M14 12a2 2 0 0 0 2-2V8h-2" class="message-square-quote-path3" />
41
+ </g>
42
+ </svg>
43
+ </div>
44
+
45
+ <style>
46
+ div {
47
+ display: inline-block;
48
+ }
49
+ .message-square-quote-group {
50
+ transform-origin: bottom left;
51
+ }
52
+
53
+ .animate .message-square-quote-group {
54
+ animation: messageSquareQuoteGroupAnimation 0.8s ease-in-out;
55
+ }
56
+
57
+ .animate .message-square-quote-path2 {
58
+ animation: messageSquareQuotePath2Animation 0.6s ease-in-out;
59
+ }
60
+
61
+ .animate .message-square-quote-path3 {
62
+ animation: messageSquareQuotePath3Animation 0.6s ease-in-out;
63
+ }
64
+
65
+ @keyframes messageSquareQuoteGroupAnimation {
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 messageSquareQuotePath2Animation {
84
+ 0% {
85
+ transform: translate(0, 0);
86
+ }
87
+ 50% {
88
+ transform: translate(1.5px, -0.5px);
89
+ }
90
+ 100% {
91
+ transform: translate(0, 0);
92
+ }
93
+ }
94
+
95
+ @keyframes messageSquareQuotePath3Animation {
96
+ 0% {
97
+ transform: translate(0, 0);
98
+ }
99
+ 50% {
100
+ transform: translate(1px, -0.5px);
101
+ }
102
+ 100% {
103
+ transform: translate(0, 0);
104
+ }
105
+ }
106
+ </style>
@@ -0,0 +1,4 @@
1
+ import type { IconProps } from './types.js';
2
+ declare const MessageSquareQuote: import("svelte").Component<IconProps, {}, "">;
3
+ type MessageSquareQuote = ReturnType<typeof MessageSquareQuote>;
4
+ export default MessageSquareQuote;
@@ -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-square-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-square-x-icon"
33
+ >
34
+ <g class="message-square-x-group" class:animate>
35
+ <path
36
+ d="M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z"
37
+ />
38
+ <path d="m14.5 8.5-5 5" class="diagonal-1" />
39
+ <path d="m9.5 8.5 5 5" class="diagonal-2" />
40
+ </g>
41
+ </svg>
42
+ </div>
43
+
44
+ <style>
45
+ div {
46
+ display: inline-block;
47
+ }
48
+ .message-square-x-icon {
49
+ overflow: visible;
50
+ }
51
+
52
+ .message-square-x-group {
53
+ transform-origin: bottom left;
54
+ }
55
+
56
+ .message-square-x-group.animate {
57
+ animation: messageSquareAnimation 0.8s ease-in-out;
58
+ }
59
+
60
+ .diagonal-1,
61
+ .diagonal-2 {
62
+ stroke-dasharray: 7.1;
63
+ stroke-dashoffset: 0;
64
+ transition: stroke-dashoffset 0.15s ease-out;
65
+ }
66
+
67
+ .message-square-x-group.animate .diagonal-1 {
68
+ opacity: 0;
69
+ animation: lineAnimation 0.3s ease-out forwards;
70
+ }
71
+
72
+ .message-square-x-group.animate .diagonal-2 {
73
+ opacity: 0;
74
+ animation: lineAnimation 0.3s ease-out 0.25s forwards;
75
+ }
76
+
77
+ @keyframes messageSquareAnimation {
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: 7.1;
99
+ }
100
+ 15% {
101
+ opacity: 1;
102
+ stroke-dashoffset: 7.1;
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 MessageSquareX: import("svelte").Component<IconProps, {}, "">;
3
+ type MessageSquareX = ReturnType<typeof MessageSquareX>;
4
+ export default MessageSquareX;
@@ -49,7 +49,7 @@
49
49
  display: inline-block;
50
50
  }
51
51
  .redo-dot-icon {
52
- transform-origin: 14px 20px;
52
+ transform-origin: center 71.42857%; /* calc(20 / 28 * 100%) */
53
53
  transition: transform 0.3s ease;
54
54
  }
55
55
 
@@ -48,7 +48,7 @@
48
48
  display: inline-block;
49
49
  }
50
50
  .redo-icon {
51
- transform-origin: 14px 20px;
51
+ transform-origin: center 71.42857%; /* calc(20 / 28 * 100%) */
52
52
  transition: transform 0.3s ease;
53
53
  }
54
54
 
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Shared replacement for icon source when inlining IconProps (e.g. standalone snippets, registry).
3
+ * Keep in sync with src/lib/icons/types.ts when IconProps changes.
4
+ */
5
+ export const ICON_PROPS_IMPORT: RegExp;
6
+ export const INLINED_ICON_PROPS: "interface IconProps {\n\t\tcolor?: string;\n\t\tsize?: number;\n\t\tstrokeWidth?: number;\n\t\tanimate?: boolean;\n\t\tclass?: string;\n\t}\n\n";
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Shared replacement for icon source when inlining IconProps (e.g. standalone snippets, registry).
3
+ * Keep in sync with src/lib/icons/types.ts when IconProps changes.
4
+ */
5
+ export const ICON_PROPS_IMPORT = /import type \{ IconProps \} from '\.\/types\.js';\n\n?/;
6
+ export const INLINED_ICON_PROPS = `interface IconProps {
7
+ color?: string;
8
+ size?: number;
9
+ strokeWidth?: number;
10
+ animate?: boolean;
11
+ class?: string;
12
+ }
13
+
14
+ `;
@@ -49,7 +49,7 @@
49
49
  display: inline-block;
50
50
  }
51
51
  .undo-dot-icon {
52
- transform-origin: 14px 20px;
52
+ transform-origin: center 71.42857%; /* calc(20 / 28 * 100%) */
53
53
  transition: transform 0.3s ease;
54
54
  }
55
55
 
@@ -48,7 +48,7 @@
48
48
  display: inline-block;
49
49
  }
50
50
  .undo-icon {
51
- transform-origin: 14px 20px;
51
+ transform-origin: center 71.42857%; /* calc(20 / 28 * 100%) */
52
52
  transition: transform 0.3s ease;
53
53
  }
54
54
 
@@ -14,7 +14,7 @@
14
14
  animate = true;
15
15
  setTimeout(() => {
16
16
  animate = false;
17
- }, 500);
17
+ }, 600);
18
18
  }
19
19
  </script>
20
20
 
@@ -32,8 +32,8 @@
32
32
  class="user-check-icon"
33
33
  class:animate
34
34
  >
35
- <path d="M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2" />
36
- <circle cx="9" cy="7" r="4" />
35
+ <path d="M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2" class="user-path" />
36
+ <circle cx="9" cy="7" r="4" class="user-circle" />
37
37
  <polyline points="16 11 18 13 22 9" class="check-path" />
38
38
  </svg>
39
39
  </div>
@@ -55,6 +55,49 @@
55
55
  .user-check-icon.animate .check-path {
56
56
  animation: checkAnimation 0.5s ease-out backwards;
57
57
  }
58
+ .user-path,
59
+ .user-circle {
60
+ transition: transform 0.6s ease-in-out;
61
+ }
62
+
63
+ .user-check-icon.animate .user-path {
64
+ animation: pathBounce 0.6s ease-in-out;
65
+ }
66
+
67
+ .user-check-icon.animate .user-circle {
68
+ animation: circleBounce 0.6s ease-in-out;
69
+ }
70
+
71
+ @keyframes pathBounce {
72
+ 0% {
73
+ transform: translateY(0);
74
+ }
75
+ 33% {
76
+ transform: translateY(2px);
77
+ }
78
+ 66% {
79
+ transform: translateY(-2px);
80
+ }
81
+ 100% {
82
+ transform: translateY(0);
83
+ }
84
+ }
85
+
86
+ @keyframes circleBounce {
87
+ 0% {
88
+ transform: translateY(0);
89
+ }
90
+ 33% {
91
+ transform: translateY(4px);
92
+ }
93
+ 66% {
94
+ transform: translateY(-2px);
95
+ }
96
+ 100% {
97
+ transform: translateY(0);
98
+ }
99
+ }
100
+
58
101
  @keyframes checkAnimation {
59
102
  0% {
60
103
  stroke-dashoffset: 9;
@@ -30,14 +30,15 @@
30
30
  stroke-linecap="round"
31
31
  stroke-linejoin="round"
32
32
  class="user-pen-icon"
33
+ class:animate
33
34
  >
34
- <path d="M11.5 15H7a4 4 0 0 0-4 4v2" />
35
+ <path d="M11.5 15H7a4 4 0 0 0-4 4v2" class="user-path" />
35
36
  <path
36
37
  d="M21.378 16.626a1 1 0 0 0-3.004-3.004l-4.01 4.012a2 2 0 0 0-.506.854l-.837 2.87a.5.5 0 0 0 .62.62l2.87-.837a2 2 0 0 0 .854-.506z"
37
38
  class="pen"
38
39
  class:animate
39
40
  />
40
- <circle cx="10" cy="7" r="4" />
41
+ <circle cx="10" cy="7" r="4" class="user-circle" />
41
42
  </svg>
42
43
  </div>
43
44
 
@@ -58,6 +59,49 @@
58
59
  animation: penWiggle 0.5s ease-in-out 2;
59
60
  }
60
61
 
62
+ .user-path,
63
+ .user-circle {
64
+ transition: transform 0.6s ease-in-out;
65
+ }
66
+
67
+ .user-pen-icon.animate .user-path {
68
+ animation: pathBounce 0.6s ease-in-out;
69
+ }
70
+
71
+ .user-pen-icon.animate .user-circle {
72
+ animation: circleBounce 0.6s ease-in-out;
73
+ }
74
+
75
+ @keyframes pathBounce {
76
+ 0% {
77
+ transform: translateY(0);
78
+ }
79
+ 33% {
80
+ transform: translateY(2px);
81
+ }
82
+ 66% {
83
+ transform: translateY(-2px);
84
+ }
85
+ 100% {
86
+ transform: translateY(0);
87
+ }
88
+ }
89
+
90
+ @keyframes circleBounce {
91
+ 0% {
92
+ transform: translateY(0);
93
+ }
94
+ 33% {
95
+ transform: translateY(4px);
96
+ }
97
+ 66% {
98
+ transform: translateY(-2px);
99
+ }
100
+ 100% {
101
+ transform: translateY(0);
102
+ }
103
+ }
104
+
61
105
  @keyframes penWiggle {
62
106
  0%,
63
107
  100% {
@@ -0,0 +1,124 @@
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
+ }, 600);
18
+ }
19
+ </script>
20
+
21
+ <div class={className} aria-label="user-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="user-x-icon"
33
+ class:animate
34
+ >
35
+ <path d="M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2" class="user-path" />
36
+ <circle cx="9" cy="7" r="4" class="user-circle" />
37
+ <line x1="22" x2="17" y1="8" y2="13" class="diagonal-1" />
38
+ <line x1="17" x2="22" y1="8" y2="13" class="diagonal-2" />
39
+ </svg>
40
+ </div>
41
+
42
+ <style>
43
+ div {
44
+ display: inline-block;
45
+ }
46
+ .user-x-icon {
47
+ overflow: visible;
48
+ }
49
+
50
+ .user-path,
51
+ .user-circle {
52
+ transition: transform 0.6s ease-in-out;
53
+ }
54
+
55
+ .user-x-icon.animate .user-path {
56
+ animation: pathBounce 0.6s ease-in-out;
57
+ }
58
+
59
+ .user-x-icon.animate .user-circle {
60
+ animation: circleBounce 0.6s ease-in-out;
61
+ }
62
+
63
+ .diagonal-1,
64
+ .diagonal-2 {
65
+ stroke-dasharray: 7.1;
66
+ stroke-dashoffset: 0;
67
+ transition: stroke-dashoffset 0.15s ease-out;
68
+ }
69
+
70
+ .user-x-icon.animate .diagonal-1 {
71
+ opacity: 0;
72
+ animation: lineAnimation 0.3s ease-out forwards;
73
+ }
74
+
75
+ .user-x-icon.animate .diagonal-2 {
76
+ opacity: 0;
77
+ animation: lineAnimation 0.3s ease-out 0.25s forwards;
78
+ }
79
+
80
+ @keyframes pathBounce {
81
+ 0% {
82
+ transform: translateY(0);
83
+ }
84
+ 33% {
85
+ transform: translateY(2px);
86
+ }
87
+ 66% {
88
+ transform: translateY(-2px);
89
+ }
90
+ 100% {
91
+ transform: translateY(0);
92
+ }
93
+ }
94
+
95
+ @keyframes circleBounce {
96
+ 0% {
97
+ transform: translateY(0);
98
+ }
99
+ 33% {
100
+ transform: translateY(4px);
101
+ }
102
+ 66% {
103
+ transform: translateY(-2px);
104
+ }
105
+ 100% {
106
+ transform: translateY(0);
107
+ }
108
+ }
109
+
110
+ @keyframes lineAnimation {
111
+ 0% {
112
+ opacity: 0;
113
+ stroke-dashoffset: 7.1;
114
+ }
115
+ 15% {
116
+ opacity: 1;
117
+ stroke-dashoffset: 7.1;
118
+ }
119
+ 100% {
120
+ opacity: 1;
121
+ stroke-dashoffset: 0;
122
+ }
123
+ }
124
+ </style>
@@ -0,0 +1,4 @@
1
+ import type { IconProps } from './types.js';
2
+ declare const UserX: import("svelte").Component<IconProps, {}, "">;
3
+ type UserX = ReturnType<typeof UserX>;
4
+ export default UserX;