@jis3r/icons 1.11.0 → 1.12.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.
@@ -52,7 +52,7 @@
52
52
  <header
53
53
  class="bg-background bg-opacity-40 fixed top-0 z-50 h-[72px] w-full border-b backdrop-blur-xl"
54
54
  >
55
- <nav class="container flex items-center justify-between py-4">
55
+ <nav class="container mx-auto flex max-w-7xl items-center justify-between py-4">
56
56
  <a href="/" class="cursor-pointer text-base"> moving icons </a>
57
57
  <div class="flex gap-1">
58
58
  <Button
@@ -275,6 +275,7 @@ import layoutGrid from './layout-grid.svelte';
275
275
  import layoutPanelLeft from './layout-panel-left.svelte';
276
276
  import layoutPanelTop from './layout-panel-top.svelte';
277
277
  import layoutTemplate from './layout-template.svelte';
278
+ import lightbulb from './lightbulb.svelte';
278
279
  import lightbulbOff from './lightbulb-off.svelte';
279
280
  import link2Off from './link-2-off.svelte';
280
281
  import listCheck from './list-check.svelte';
@@ -3408,6 +3409,12 @@ let ICONS_LIST = [
3408
3409
  tags: ['window', 'webpage', 'block', 'section'],
3409
3410
  categories: ['layout']
3410
3411
  },
3412
+ {
3413
+ name: 'lightbulb',
3414
+ icon: lightbulb,
3415
+ tags: ['idea', 'bright', 'lights'],
3416
+ categories: ['photography']
3417
+ },
3411
3418
  {
3412
3419
  name: 'lightbulb-off',
3413
3420
  icon: lightbulbOff,
@@ -0,0 +1,142 @@
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
+ }, 1100);
26
+ }
27
+ </script>
28
+
29
+ <div class={className} aria-label="lightbulb" 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="lightbulb-icon"
41
+ class:animate={isHovered}
42
+ >
43
+ <path
44
+ d="M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5"
45
+ class="lightbulb-path1"
46
+ />
47
+ <path d="M9 18h6" class="lightbulb-path2" />
48
+ <path d="M10 22h4" class="lightbulb-path3" />
49
+ </svg>
50
+ </div>
51
+
52
+ <style>
53
+ div {
54
+ display: inline-block;
55
+ }
56
+
57
+ .lightbulb-icon {
58
+ overflow: visible;
59
+ }
60
+
61
+ .lightbulb-path1 {
62
+ transform-origin: bottom center;
63
+ transform-box: fill-box;
64
+ fill: transparent;
65
+ transition: fill 0s;
66
+ }
67
+
68
+ .lightbulb-path2 {
69
+ transform-origin: bottom center;
70
+ transform-box: fill-box;
71
+ }
72
+
73
+ .lightbulb-icon.animate .lightbulb-path1 {
74
+ animation:
75
+ lightbulb-rotate1 0.8s ease-in-out forwards,
76
+ lightbulb-fill-opacity 0.3s ease-in-out 0.4s forwards;
77
+ fill: currentColor;
78
+ fill-opacity: 0;
79
+ }
80
+
81
+ .lightbulb-icon:not(.animate) .lightbulb-path1 {
82
+ fill: transparent;
83
+ }
84
+
85
+ .lightbulb-icon.animate .lightbulb-path2 {
86
+ animation: lightbulb-rotate2 0.8s ease-in-out forwards;
87
+ }
88
+
89
+ @keyframes lightbulb-rotate1 {
90
+ 0% {
91
+ transform: rotate(0deg);
92
+ }
93
+ 40% {
94
+ transform: rotate(-20deg);
95
+ }
96
+ 60% {
97
+ transform: rotate(15deg);
98
+ }
99
+ 80% {
100
+ transform: rotate(-7deg);
101
+ }
102
+ 100% {
103
+ transform: rotate(0deg);
104
+ }
105
+ }
106
+
107
+ @keyframes lightbulb-fill-opacity {
108
+ 0% {
109
+ fill-opacity: 0;
110
+ }
111
+ 40% {
112
+ fill-opacity: 1;
113
+ }
114
+ 60% {
115
+ fill-opacity: 0;
116
+ }
117
+ 80% {
118
+ fill-opacity: 1;
119
+ }
120
+ 100% {
121
+ fill-opacity: 0;
122
+ }
123
+ }
124
+
125
+ @keyframes lightbulb-rotate2 {
126
+ 0% {
127
+ transform: rotate(0deg);
128
+ }
129
+ 40% {
130
+ transform: rotate(0deg);
131
+ }
132
+ 60% {
133
+ transform: rotate(10deg);
134
+ }
135
+ 80% {
136
+ transform: rotate(-5deg);
137
+ }
138
+ 100% {
139
+ transform: rotate(0deg);
140
+ }
141
+ }
142
+ </style>
@@ -0,0 +1,19 @@
1
+ export default Lightbulb;
2
+ type Lightbulb = {
3
+ $on?(type: string, callback: (e: any) => void): () => void;
4
+ $set?(props: Partial<Props>): void;
5
+ };
6
+ declare const Lightbulb: 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
@@ -276,6 +276,7 @@ export { default as LayoutPanelLeft } from "./icons/layout-panel-left.svelte";
276
276
  export { default as LayoutPanelTop } from "./icons/layout-panel-top.svelte";
277
277
  export { default as LayoutTemplate } from "./icons/layout-template.svelte";
278
278
  export { default as LightbulbOff } from "./icons/lightbulb-off.svelte";
279
+ export { default as Lightbulb } from "./icons/lightbulb.svelte";
279
280
  export { default as Link2Off } from "./icons/link-2-off.svelte";
280
281
  export { default as ListCheck } from "./icons/list-check.svelte";
281
282
  export { default as ListChecks } from "./icons/list-checks.svelte";
package/dist/index.js CHANGED
@@ -276,6 +276,7 @@ export { default as LayoutPanelLeft } from './icons/layout-panel-left.svelte';
276
276
  export { default as LayoutPanelTop } from './icons/layout-panel-top.svelte';
277
277
  export { default as LayoutTemplate } from './icons/layout-template.svelte';
278
278
  export { default as LightbulbOff } from './icons/lightbulb-off.svelte';
279
+ export { default as Lightbulb } from './icons/lightbulb.svelte';
279
280
  export { default as Link2Off } from './icons/link-2-off.svelte';
280
281
  export { default as ListCheck } from './icons/list-check.svelte';
281
282
  export { default as ListChecks } from './icons/list-checks.svelte';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jis3r/icons",
3
- "version": "1.11.0",
3
+ "version": "1.12.0",
4
4
  "description": "beautifully crafted, moving icons. for svelte.",
5
5
  "keywords": [
6
6
  "svelte",
@@ -49,7 +49,7 @@
49
49
  "@sveltejs/adapter-auto": "^6.0.1",
50
50
  "@sveltejs/kit": "^2.26.1",
51
51
  "@sveltejs/package": "^2.0.0",
52
- "@sveltejs/vite-plugin-svelte": "^5.0.3",
52
+ "@sveltejs/vite-plugin-svelte": "^6.2.1",
53
53
  "@tailwindcss/vite": "^4.1.16",
54
54
  "@types/eslint": "^9.6.0",
55
55
  "autoprefixer": "^10.4.20",