@jis3r/icons 1.16.0 → 1.17.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.
@@ -413,6 +413,7 @@ import slidersHorizontal from './sliders-horizontal.svelte';
413
413
  import slidersVertical from './sliders-vertical.svelte';
414
414
  import smartphoneNfc from './smartphone-nfc.svelte';
415
415
  import snowflake from './snowflake.svelte';
416
+ import sparkles from './sparkles.svelte';
416
417
  import speech from './speech.svelte';
417
418
  import spellCheck from './spell-check.svelte';
418
419
  import squareArrowDown from './square-arrow-down.svelte';
@@ -5007,6 +5008,12 @@ let ICONS_LIST = [
5007
5008
  tags: ['cold', 'weather', 'freeze', 'snow', 'winter'],
5008
5009
  categories: ['weather', 'seasons']
5009
5010
  },
5011
+ {
5012
+ name: 'sparkles',
5013
+ icon: sparkles,
5014
+ tags: ['stars', 'effect', 'filter', 'night', 'magic'],
5015
+ categories: ['cursors', 'multimedia', 'gaming', 'weather']
5016
+ },
5010
5017
  {
5011
5018
  name: 'speech',
5012
5019
  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
@@ -413,6 +413,7 @@ export { default as SlidersHorizontal } from "./icons/sliders-horizontal.svelte"
413
413
  export { default as SlidersVertical } from "./icons/sliders-vertical.svelte";
414
414
  export { default as SmartphoneNfc } from "./icons/smartphone-nfc.svelte";
415
415
  export { default as Snowflake } from "./icons/snowflake.svelte";
416
+ export { default as Sparkles } from "./icons/sparkles.svelte";
416
417
  export { default as Speech } from "./icons/speech.svelte";
417
418
  export { default as SpellCheck } from "./icons/spell-check.svelte";
418
419
  export { default as SquareArrowDownLeft } from "./icons/square-arrow-down-left.svelte";
package/dist/index.js CHANGED
@@ -413,6 +413,7 @@ export { default as SlidersHorizontal } from './icons/sliders-horizontal.svelte'
413
413
  export { default as SlidersVertical } from './icons/sliders-vertical.svelte';
414
414
  export { default as SmartphoneNfc } from './icons/smartphone-nfc.svelte';
415
415
  export { default as Snowflake } from './icons/snowflake.svelte';
416
+ export { default as Sparkles } from './icons/sparkles.svelte';
416
417
  export { default as Speech } from './icons/speech.svelte';
417
418
  export { default as SpellCheck } from './icons/spell-check.svelte';
418
419
  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.17.0",
4
4
  "description": "beautifully crafted, moving icons. for svelte.",
5
5
  "keywords": [
6
6
  "svelte",