@jis3r/icons 1.16.0 → 1.18.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.
@@ -0,0 +1,98 @@
1
+ <script>
2
+ /**
3
+ * @typedef {Object} Props
4
+ * @property {string} [color]
5
+ * @property {number} [size]
6
+ * @property {number} [strokeWidth]
7
+ * @property {boolean} [isHovered]
8
+ * @property {string} [class]
9
+ */
10
+
11
+ /** @type {Props} */
12
+ let {
13
+ color = 'currentColor',
14
+ size = 24,
15
+ strokeWidth = 2,
16
+ isHovered = false,
17
+ class: className = ''
18
+ } = $props();
19
+
20
+ let hovered = $state(false);
21
+
22
+ function handleMouseEnter() {
23
+ hovered = true;
24
+ }
25
+
26
+ function handleMouseLeave() {
27
+ hovered = false;
28
+ }
29
+ </script>
30
+
31
+ <div
32
+ class={className}
33
+ aria-label="binary"
34
+ role="img"
35
+ onmouseenter={handleMouseEnter}
36
+ onmouseleave={handleMouseLeave}
37
+ >
38
+ <svg
39
+ xmlns="http://www.w3.org/2000/svg"
40
+ width={size}
41
+ height={size}
42
+ viewBox="0 0 24 24"
43
+ fill="none"
44
+ stroke={color}
45
+ stroke-width={strokeWidth}
46
+ stroke-linecap="round"
47
+ stroke-linejoin="round"
48
+ class="binary-icon"
49
+ class:animate={hovered}
50
+ >
51
+ <rect x={14} y={14} width={4} height={6} rx={2} class="binary-rect1" />
52
+ <rect x={6} y={4} width={4} height={6} rx={2} class="binary-rect2" />
53
+ <path d="M6 20h4 M6 14h2v6" class="binary-path1" />
54
+ <path d="M14 4h2v6 M14 10h4" class="binary-path2" />
55
+ </svg>
56
+ </div>
57
+
58
+ <style>
59
+ div {
60
+ display: inline-block;
61
+ }
62
+ .binary-icon {
63
+ overflow: visible;
64
+ }
65
+
66
+ .binary-rect1,
67
+ .binary-rect2,
68
+ .binary-path1,
69
+ .binary-path2 {
70
+ --duration: 0.25s;
71
+ --timing: cubic-bezier(0.34, 1.56, 0.64, 1);
72
+ transition: transform var(--duration) var(--timing);
73
+ }
74
+
75
+ .binary-icon.animate .binary-rect1,
76
+ .binary-icon.animate .binary-rect2,
77
+ .binary-icon.animate .binary-path1,
78
+ .binary-icon.animate .binary-path2 {
79
+ --duration: 0.4s;
80
+ --timing: ease-in-out;
81
+ }
82
+
83
+ .binary-icon.animate .binary-rect1 {
84
+ transform: translateX(-8px);
85
+ }
86
+
87
+ .binary-icon.animate .binary-rect2 {
88
+ transform: translateX(8px);
89
+ }
90
+
91
+ .binary-icon.animate .binary-path1 {
92
+ transform: translateY(-10px);
93
+ }
94
+
95
+ .binary-icon.animate .binary-path2 {
96
+ transform: translateY(10px);
97
+ }
98
+ </style>
@@ -0,0 +1,19 @@
1
+ export default Binary;
2
+ type Binary = {
3
+ $on?(type: string, callback: (e: any) => void): () => void;
4
+ $set?(props: Partial<Props>): void;
5
+ };
6
+ declare const Binary: import("svelte").Component<{
7
+ color?: string;
8
+ size?: number;
9
+ strokeWidth?: number;
10
+ isHovered?: boolean;
11
+ class?: string;
12
+ }, {}, "">;
13
+ type Props = {
14
+ color?: string;
15
+ size?: number;
16
+ strokeWidth?: number;
17
+ isHovered?: boolean;
18
+ class?: string;
19
+ };
@@ -55,6 +55,7 @@ import betweenHorizontalEnd from './between-horizontal-end.svelte';
55
55
  import betweenHorizontalStart from './between-horizontal-start.svelte';
56
56
  import betweenVerticalEnd from './between-vertical-end.svelte';
57
57
  import betweenVerticalStart from './between-vertical-start.svelte';
58
+ import binary from './binary.svelte';
58
59
  import blend from './blend.svelte';
59
60
  import blocks from './blocks.svelte';
60
61
  import bluetoothOff from './bluetooth-off.svelte';
@@ -413,6 +414,7 @@ import slidersHorizontal from './sliders-horizontal.svelte';
413
414
  import slidersVertical from './sliders-vertical.svelte';
414
415
  import smartphoneNfc from './smartphone-nfc.svelte';
415
416
  import snowflake from './snowflake.svelte';
417
+ import sparkles from './sparkles.svelte';
416
418
  import speech from './speech.svelte';
417
419
  import spellCheck from './spell-check.svelte';
418
420
  import squareArrowDown from './square-arrow-down.svelte';
@@ -1117,6 +1119,12 @@ let ICONS_LIST = [
1117
1119
  ],
1118
1120
  categories: ['layout', 'design', 'tools']
1119
1121
  },
1122
+ {
1123
+ name: 'binary',
1124
+ icon: binary,
1125
+ tags: ['code', 'digits', 'computer', 'zero', 'one', 'boolean'],
1126
+ categories: ['text', 'development']
1127
+ },
1120
1128
  {
1121
1129
  name: 'blend',
1122
1130
  icon: blend,
@@ -5007,6 +5015,12 @@ let ICONS_LIST = [
5007
5015
  tags: ['cold', 'weather', 'freeze', 'snow', 'winter'],
5008
5016
  categories: ['weather', 'seasons']
5009
5017
  },
5018
+ {
5019
+ name: 'sparkles',
5020
+ icon: sparkles,
5021
+ tags: ['stars', 'effect', 'filter', 'night', 'magic'],
5022
+ categories: ['cursors', 'multimedia', 'gaming', 'weather']
5023
+ },
5010
5024
  {
5011
5025
  name: 'speech',
5012
5026
  icon: speech,
@@ -0,0 +1,153 @@
1
+ <script>
2
+ /**
3
+ * @typedef {Object} Props
4
+ * @property {string} [color]
5
+ * @property {number} [size]
6
+ * @property {number} [strokeWidth]
7
+ * @property {boolean} [isHovered]
8
+ * @property {string} [class]
9
+ */
10
+
11
+ /** @type {Props} */
12
+ let {
13
+ color = 'currentColor',
14
+ size = 24,
15
+ strokeWidth = 2,
16
+ isHovered = false,
17
+ class: className = ''
18
+ } = $props();
19
+
20
+ function handleMouseEnter() {
21
+ isHovered = true;
22
+
23
+ setTimeout(() => {
24
+ isHovered = false;
25
+ }, 750);
26
+ }
27
+ </script>
28
+
29
+ <div class={className} aria-label="sparkles" role="img" onmouseenter={handleMouseEnter}>
30
+ <svg
31
+ xmlns="http://www.w3.org/2000/svg"
32
+ width={size}
33
+ height={size}
34
+ viewBox="0 0 24 24"
35
+ fill="none"
36
+ stroke={color}
37
+ stroke-width={strokeWidth}
38
+ stroke-linecap="round"
39
+ stroke-linejoin="round"
40
+ class="sparkles-icon"
41
+ class:animate={isHovered}
42
+ >
43
+ <g class="sparkles-group">
44
+ <path
45
+ d="M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z"
46
+ class="sparkles-path"
47
+ />
48
+ </g>
49
+ <path d="M20 2v4 M22 4h-4" class="sparkles-plus" />
50
+ <circle cx="4" cy="20" r="2" class="sparkles-circle" />
51
+ </svg>
52
+ </div>
53
+
54
+ <style>
55
+ div {
56
+ display: inline-block;
57
+ }
58
+
59
+ .sparkles-icon {
60
+ overflow: visible;
61
+ }
62
+
63
+ .sparkles-group {
64
+ transform-origin: center;
65
+ transition: transform 0.6s ease-in-out;
66
+ }
67
+
68
+ .sparkles-icon.animate .sparkles-group {
69
+ animation: scaleGroup 0.6s ease-in-out;
70
+ }
71
+
72
+ .sparkles-plus {
73
+ opacity: 1;
74
+ transform: scale(1);
75
+ transform-origin: center;
76
+ transform-box: fill-box;
77
+ transition:
78
+ opacity 0.2s ease-in-out,
79
+ transform 0.2s ease-in-out;
80
+ }
81
+
82
+ .sparkles-icon.animate .sparkles-plus {
83
+ animation: pulsePlus 0.75s ease-in-out;
84
+ }
85
+
86
+ .sparkles-circle {
87
+ opacity: 1;
88
+ transform: scale(1);
89
+ transform-origin: center;
90
+ transform-box: fill-box;
91
+ transition:
92
+ opacity 0.2s ease-in-out,
93
+ transform 0.2s ease-in-out;
94
+ }
95
+
96
+ .sparkles-icon.animate .sparkles-circle {
97
+ animation: pulseCircle 0.6s ease-in-out;
98
+ }
99
+
100
+ @keyframes scaleGroup {
101
+ 0% {
102
+ transform: scale(1);
103
+ }
104
+ 33.33% {
105
+ transform: scale(0.9);
106
+ }
107
+ 66.67% {
108
+ transform: scale(1.1);
109
+ }
110
+ 100% {
111
+ transform: scale(1);
112
+ }
113
+ }
114
+
115
+ @keyframes pulsePlus {
116
+ 0%,
117
+ 20% {
118
+ opacity: 1;
119
+ transform: scale(1);
120
+ }
121
+ 46.67% {
122
+ opacity: 0;
123
+ transform: scale(0);
124
+ }
125
+ 73.33% {
126
+ opacity: 0;
127
+ transform: scale(0);
128
+ }
129
+ 100% {
130
+ opacity: 1;
131
+ transform: scale(1);
132
+ }
133
+ }
134
+
135
+ @keyframes pulseCircle {
136
+ 0% {
137
+ opacity: 1;
138
+ transform: scale(1);
139
+ }
140
+ 33.33% {
141
+ opacity: 0;
142
+ transform: scale(0);
143
+ }
144
+ 66.67% {
145
+ opacity: 0;
146
+ transform: scale(0);
147
+ }
148
+ 100% {
149
+ opacity: 1;
150
+ transform: scale(1);
151
+ }
152
+ }
153
+ </style>
@@ -0,0 +1,19 @@
1
+ export default Sparkles;
2
+ type Sparkles = {
3
+ $on?(type: string, callback: (e: any) => void): () => void;
4
+ $set?(props: Partial<Props>): void;
5
+ };
6
+ declare const Sparkles: import("svelte").Component<{
7
+ color?: string;
8
+ size?: number;
9
+ strokeWidth?: number;
10
+ isHovered?: boolean;
11
+ class?: string;
12
+ }, {}, "">;
13
+ type Props = {
14
+ color?: string;
15
+ size?: number;
16
+ strokeWidth?: number;
17
+ isHovered?: boolean;
18
+ class?: string;
19
+ };
package/dist/index.d.ts CHANGED
@@ -55,6 +55,7 @@ export { default as BetweenHorizontalEnd } from "./icons/between-horizontal-end.
55
55
  export { default as BetweenHorizontalStart } from "./icons/between-horizontal-start.svelte";
56
56
  export { default as BetweenVerticalEnd } from "./icons/between-vertical-end.svelte";
57
57
  export { default as BetweenVerticalStart } from "./icons/between-vertical-start.svelte";
58
+ export { default as Binary } from "./icons/binary.svelte";
58
59
  export { default as Blend } from "./icons/blend.svelte";
59
60
  export { default as Blocks } from "./icons/blocks.svelte";
60
61
  export { default as BluetoothOff } from "./icons/bluetooth-off.svelte";
@@ -413,6 +414,7 @@ export { default as SlidersHorizontal } from "./icons/sliders-horizontal.svelte"
413
414
  export { default as SlidersVertical } from "./icons/sliders-vertical.svelte";
414
415
  export { default as SmartphoneNfc } from "./icons/smartphone-nfc.svelte";
415
416
  export { default as Snowflake } from "./icons/snowflake.svelte";
417
+ export { default as Sparkles } from "./icons/sparkles.svelte";
416
418
  export { default as Speech } from "./icons/speech.svelte";
417
419
  export { default as SpellCheck } from "./icons/spell-check.svelte";
418
420
  export { default as SquareArrowDownLeft } from "./icons/square-arrow-down-left.svelte";
package/dist/index.js CHANGED
@@ -55,6 +55,7 @@ export { default as BetweenHorizontalEnd } from './icons/between-horizontal-end.
55
55
  export { default as BetweenHorizontalStart } from './icons/between-horizontal-start.svelte';
56
56
  export { default as BetweenVerticalEnd } from './icons/between-vertical-end.svelte';
57
57
  export { default as BetweenVerticalStart } from './icons/between-vertical-start.svelte';
58
+ export { default as Binary } from './icons/binary.svelte';
58
59
  export { default as Blend } from './icons/blend.svelte';
59
60
  export { default as Blocks } from './icons/blocks.svelte';
60
61
  export { default as BluetoothOff } from './icons/bluetooth-off.svelte';
@@ -413,6 +414,7 @@ export { default as SlidersHorizontal } from './icons/sliders-horizontal.svelte'
413
414
  export { default as SlidersVertical } from './icons/sliders-vertical.svelte';
414
415
  export { default as SmartphoneNfc } from './icons/smartphone-nfc.svelte';
415
416
  export { default as Snowflake } from './icons/snowflake.svelte';
417
+ export { default as Sparkles } from './icons/sparkles.svelte';
416
418
  export { default as Speech } from './icons/speech.svelte';
417
419
  export { default as SpellCheck } from './icons/spell-check.svelte';
418
420
  export { default as SquareArrowDownLeft } from './icons/square-arrow-down-left.svelte';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jis3r/icons",
3
- "version": "1.16.0",
3
+ "version": "1.18.0",
4
4
  "description": "beautifully crafted, moving icons. for svelte.",
5
5
  "keywords": [
6
6
  "svelte",