@jis3r/icons 1.2.0 → 1.6.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 (70) hide show
  1. package/dist/components/navbar.svelte +78 -0
  2. package/dist/components/navbar.svelte.d.ts +6 -0
  3. package/dist/components/ui/badge/badge.svelte.d.ts +2 -30
  4. package/dist/components/ui/button/button.svelte.d.ts +2 -62
  5. package/dist/components/ui/card/card-description.svelte +1 -1
  6. package/dist/components/ui/card/card-title.svelte +1 -1
  7. package/dist/components/ui/card/card.svelte +1 -1
  8. package/dist/components/ui/input/input.svelte +2 -2
  9. package/dist/components/ui/tooltip/tooltip-content.svelte +1 -1
  10. package/dist/icons/arrow-down-0-1.svelte.d.ts +3 -3
  11. package/dist/icons/arrow-down-1-0.svelte.d.ts +3 -3
  12. package/dist/icons/arrow-up-0-1.svelte.d.ts +3 -3
  13. package/dist/icons/arrow-up-1-0.svelte.d.ts +3 -3
  14. package/dist/icons/book-up-2.svelte.d.ts +3 -3
  15. package/dist/icons/bookmark-check.svelte +26 -2
  16. package/dist/icons/bookmark-minus.svelte +108 -0
  17. package/dist/icons/bookmark-minus.svelte.d.ts +19 -0
  18. package/dist/icons/bookmark-plus.svelte +114 -0
  19. package/dist/icons/bookmark-plus.svelte.d.ts +19 -0
  20. package/dist/icons/bookmark-x.svelte +114 -0
  21. package/dist/icons/{file-warning.svelte.d.ts → bookmark-x.svelte.d.ts} +3 -3
  22. package/dist/icons/bookmark.svelte +81 -0
  23. package/dist/icons/{align-center.svelte.d.ts → bookmark.svelte.d.ts} +3 -3
  24. package/dist/icons/bot.svelte +94 -0
  25. package/dist/icons/{file-check-2.svelte.d.ts → bot.svelte.d.ts} +3 -3
  26. package/dist/icons/calendar-check-2.svelte.d.ts +3 -3
  27. package/dist/icons/clock-1.svelte.d.ts +3 -3
  28. package/dist/icons/clock-10.svelte.d.ts +3 -3
  29. package/dist/icons/clock-11.svelte.d.ts +3 -3
  30. package/dist/icons/clock-12.svelte.d.ts +3 -3
  31. package/dist/icons/clock-2.svelte.d.ts +3 -3
  32. package/dist/icons/clock-3.svelte.d.ts +3 -3
  33. package/dist/icons/clock-4.svelte.d.ts +3 -3
  34. package/dist/icons/clock-5.svelte.d.ts +3 -3
  35. package/dist/icons/clock-6.svelte.d.ts +3 -3
  36. package/dist/icons/clock-7.svelte.d.ts +3 -3
  37. package/dist/icons/clock-8.svelte.d.ts +3 -3
  38. package/dist/icons/clock-9.svelte.d.ts +3 -3
  39. package/dist/icons/dice-1.svelte.d.ts +3 -3
  40. package/dist/icons/dice-2.svelte.d.ts +3 -3
  41. package/dist/icons/dice-3.svelte.d.ts +3 -3
  42. package/dist/icons/dice-4.svelte.d.ts +3 -3
  43. package/dist/icons/dice-5.svelte.d.ts +3 -3
  44. package/dist/icons/dice-6.svelte.d.ts +3 -3
  45. package/dist/icons/disc-3.svelte.d.ts +3 -3
  46. package/dist/icons/{file-check-2.svelte → file-check-corner.svelte} +9 -7
  47. package/dist/icons/file-check-corner.svelte.d.ts +19 -0
  48. package/dist/icons/{file-warning.svelte → file-exclamation-point.svelte} +6 -1
  49. package/dist/icons/file-exclamation-point.svelte.d.ts +19 -0
  50. package/dist/icons/grid-2x2-check.svelte.d.ts +3 -3
  51. package/dist/icons/index.js +73 -17
  52. package/dist/icons/link-2-off.svelte.d.ts +3 -3
  53. package/dist/icons/maximize-2.svelte.d.ts +3 -3
  54. package/dist/icons/minimize-2.svelte.d.ts +3 -3
  55. package/dist/icons/mouse-pointer-2.svelte.d.ts +3 -3
  56. package/dist/icons/move-diagonal-2.svelte.d.ts +3 -3
  57. package/dist/icons/navigation-2-off.svelte.d.ts +3 -3
  58. package/dist/icons/paperclip.svelte +81 -0
  59. package/dist/icons/paperclip.svelte.d.ts +19 -0
  60. package/dist/icons/sliders-horizontal.svelte +185 -0
  61. package/dist/icons/sliders-horizontal.svelte.d.ts +19 -0
  62. package/dist/icons/sliders-vertical.svelte +185 -0
  63. package/dist/icons/sliders-vertical.svelte.d.ts +19 -0
  64. package/dist/icons/{align-center.svelte → text-align-center.svelte} +1 -1
  65. package/dist/icons/text-align-center.svelte.d.ts +19 -0
  66. package/dist/icons/trash-2.svelte.d.ts +3 -3
  67. package/dist/index.d.ts +11 -3
  68. package/dist/index.js +11 -3
  69. package/dist/utils/icons.js +4 -2
  70. package/package.json +20 -9
@@ -26,7 +26,12 @@
26
26
  }
27
27
  </script>
28
28
 
29
- <div class={className} aria-label="file-warning" role="img" onmouseenter={handleMouseEnter}>
29
+ <div
30
+ class={className}
31
+ aria-label="file-exclamation-point"
32
+ role="img"
33
+ onmouseenter={handleMouseEnter}
34
+ >
30
35
  <svg
31
36
  xmlns="http://www.w3.org/2000/svg"
32
37
  width={size}
@@ -0,0 +1,19 @@
1
+ export default FileExclamationPoint;
2
+ type FileExclamationPoint = {
3
+ $on?(type: string, callback: (e: any) => void): () => void;
4
+ $set?(props: Partial<Props>): void;
5
+ };
6
+ declare const FileExclamationPoint: 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
+ };
@@ -1,9 +1,9 @@
1
- export default Grid_2x2Check;
2
- type Grid_2x2Check = {
1
+ export default Grid2x2Check;
2
+ type Grid2x2Check = {
3
3
  $on?(type: string, callback: (e: any) => void): () => void;
4
4
  $set?(props: Partial<Props>): void;
5
5
  };
6
- declare const Grid_2x2Check: import("svelte").Component<{
6
+ declare const Grid2x2Check: import("svelte").Component<{
7
7
  color?: string;
8
8
  size?: number;
9
9
  strokeWidth?: number;
@@ -2,7 +2,6 @@ import activity from './activity.svelte';
2
2
  import alarmClock from './alarm-clock.svelte';
3
3
  import alarmClockCheck from './alarm-clock-check.svelte';
4
4
  import alarmClockOff from './alarm-clock-off.svelte';
5
- import alignCenter from './align-center.svelte';
6
5
  import alignHorizontalSpaceAround from './align-horizontal-space-around.svelte';
7
6
  import alignVerticalSpaceAround from './align-vertical-space-around.svelte';
8
7
  import anvil from './anvil.svelte';
@@ -70,8 +69,12 @@ import bookHeart from './book-heart.svelte';
70
69
  import bookImage from './book-image.svelte';
71
70
  import bookKey from './book-key.svelte';
72
71
  import bookLock from './book-lock.svelte';
72
+ import bookmark from './bookmark.svelte';
73
73
  import bookmarkCheck from './bookmark-check.svelte';
74
74
  import bookMarked from './book-marked.svelte';
75
+ import bookmarkMinus from './bookmark-minus.svelte';
76
+ import bookmarkPlus from './bookmark-plus.svelte';
77
+ import bookmarkX from './bookmark-x.svelte';
75
78
  import bookMinus from './book-minus.svelte';
76
79
  import bookOpenCheck from './book-open-check.svelte';
77
80
  import bookPlus from './book-plus.svelte';
@@ -81,6 +84,7 @@ import bookUp from './book-up.svelte';
81
84
  import bookUp2 from './book-up-2.svelte';
82
85
  import bookUser from './book-user.svelte';
83
86
  import bookX from './book-x.svelte';
87
+ import bot from './bot.svelte';
84
88
  import botOff from './bot-off.svelte';
85
89
  import boxes from './boxes.svelte';
86
90
  import brainCog from './brain-cog.svelte';
@@ -203,9 +207,10 @@ import fileChartColumn from './file-chart-column.svelte';
203
207
  import fileChartColumnIncreasing from './file-chart-column-increasing.svelte';
204
208
  import fileChartLine from './file-chart-line.svelte';
205
209
  import fileCheck from './file-check.svelte';
206
- import fileCheck2 from './file-check-2.svelte';
210
+ import fileCheckCorner from './file-check-corner.svelte';
207
211
  import fileCog from './file-cog.svelte';
208
212
  import fileDown from './file-down.svelte';
213
+ import fileExclamationPoint from './file-exclamation-point.svelte';
209
214
  import fileMinus from './file-minus.svelte';
210
215
  import filePen from './file-pen.svelte';
211
216
  import filePenLine from './file-pen-line.svelte';
@@ -214,7 +219,6 @@ import fileQuestionMark from './file-question-mark.svelte';
214
219
  import fileStack from './file-stack.svelte';
215
220
  import fileTerminal from './file-terminal.svelte';
216
221
  import fileUp from './file-up.svelte';
217
- import fileWarning from './file-warning.svelte';
218
222
  import fishOff from './fish-off.svelte';
219
223
  import flagOff from './flag-off.svelte';
220
224
  import flashlightOff from './flashlight-off.svelte';
@@ -333,6 +337,7 @@ import panelRightClose from './panel-right-close.svelte';
333
337
  import panelRightOpen from './panel-right-open.svelte';
334
338
  import panelTopClose from './panel-top-close.svelte';
335
339
  import panelTopOpen from './panel-top-open.svelte';
340
+ import paperclip from './paperclip.svelte';
336
341
  import pen from './pen.svelte';
337
342
  import pencil from './pencil.svelte';
338
343
  import pencilLine from './pencil-line.svelte';
@@ -394,6 +399,8 @@ import signalLow from './signal-low.svelte';
394
399
  import signalMedium from './signal-medium.svelte';
395
400
  import signalZero from './signal-zero.svelte';
396
401
  import signature from './signature.svelte';
402
+ import slidersHorizontal from './sliders-horizontal.svelte';
403
+ import slidersVertical from './sliders-vertical.svelte';
397
404
  import smartphoneNfc from './smartphone-nfc.svelte';
398
405
  import snowflake from './snowflake.svelte';
399
406
  import speech from './speech.svelte';
@@ -432,6 +439,7 @@ import sword from './sword.svelte';
432
439
  import tag from './tag.svelte';
433
440
  import telescope from './telescope.svelte';
434
441
  import terminal from './terminal.svelte';
442
+ import textAlignCenter from './text-align-center.svelte';
435
443
  import textCursor from './text-cursor.svelte';
436
444
  import textCursorInput from './text-cursor-input.svelte';
437
445
  import textSearch from './text-search.svelte';
@@ -536,12 +544,6 @@ let ICONS_LIST = [
536
544
  tags: ['morning', 'turn-off'],
537
545
  categories: ['devices', 'notifications', 'time']
538
546
  },
539
- {
540
- name: 'align-center',
541
- icon: alignCenter,
542
- tags: ['text', 'alignment', 'center'],
543
- categories: ['text']
544
- },
545
547
  {
546
548
  name: 'align-horizontal-space-around',
547
549
  icon: alignHorizontalSpaceAround,
@@ -1740,12 +1742,42 @@ let ICONS_LIST = [
1740
1742
  ],
1741
1743
  categories: ['text', 'gaming']
1742
1744
  },
1745
+ {
1746
+ name: 'bookmark',
1747
+ icon: bookmark,
1748
+ tags: ['read', 'clip', 'marker', 'tag'],
1749
+ categories: ['account']
1750
+ },
1743
1751
  {
1744
1752
  name: 'bookmark-check',
1745
1753
  icon: bookmarkCheck,
1746
1754
  tags: ['read', 'finished', 'complete', 'clip', 'marker', 'tag', 'task', 'todo'],
1747
1755
  categories: ['account']
1748
1756
  },
1757
+ {
1758
+ name: 'bookmark-minus',
1759
+ icon: bookmarkMinus,
1760
+ tags: ['delete', 'remove'],
1761
+ categories: ['account']
1762
+ },
1763
+ {
1764
+ name: 'bookmark-plus',
1765
+ icon: bookmarkPlus,
1766
+ tags: ['add'],
1767
+ categories: ['account']
1768
+ },
1769
+ {
1770
+ name: 'bookmark-x',
1771
+ icon: bookmarkX,
1772
+ tags: ['read', 'clip', 'marker', 'tag', 'cancel', 'close', 'delete', 'remove', 'clear'],
1773
+ categories: ['account']
1774
+ },
1775
+ {
1776
+ name: 'bot',
1777
+ icon: bot,
1778
+ tags: ['robot', 'ai', 'chat', 'assistant'],
1779
+ categories: ['development', 'social']
1780
+ },
1749
1781
  {
1750
1782
  name: 'bot-off',
1751
1783
  icon: botOff,
@@ -2787,8 +2819,8 @@ let ICONS_LIST = [
2787
2819
  categories: ['files']
2788
2820
  },
2789
2821
  {
2790
- name: 'file-check-2',
2791
- icon: fileCheck2,
2822
+ name: 'file-check-corner',
2823
+ icon: fileCheckCorner,
2792
2824
  tags: ['done', 'document', 'todo', 'tick', 'complete', 'task'],
2793
2825
  categories: ['files']
2794
2826
  },
@@ -2804,6 +2836,12 @@ let ICONS_LIST = [
2804
2836
  tags: ['download', 'import', 'export'],
2805
2837
  categories: ['files', 'arrows']
2806
2838
  },
2839
+ {
2840
+ name: 'file-exclamation-point',
2841
+ icon: fileExclamationPoint,
2842
+ tags: ['hidden', 'warning', 'alert', 'danger', 'protected', 'exclamation mark'],
2843
+ categories: ['files', 'notifications']
2844
+ },
2807
2845
  {
2808
2846
  name: 'file-minus',
2809
2847
  icon: fileMinus,
@@ -2852,12 +2890,6 @@ let ICONS_LIST = [
2852
2890
  tags: ['upload', 'import', 'export'],
2853
2891
  categories: ['files', 'arrows']
2854
2892
  },
2855
- {
2856
- name: 'file-warning',
2857
- icon: fileWarning,
2858
- tags: ['hidden', 'warning', 'alert', 'danger', 'protected', 'exclamation mark'],
2859
- categories: ['files', 'notifications']
2860
- },
2861
2893
  {
2862
2894
  name: 'fish-off',
2863
2895
  icon: fishOff,
@@ -3919,6 +3951,12 @@ let ICONS_LIST = [
3919
3951
  tags: ['menu bar', 'drawer', 'show', 'reveal', 'chevron', 'down'],
3920
3952
  categories: ['layout', 'arrows']
3921
3953
  },
3954
+ {
3955
+ name: 'paperclip',
3956
+ icon: paperclip,
3957
+ tags: ['attachment', 'file'],
3958
+ categories: ['text', 'design', 'files', 'mail']
3959
+ },
3922
3960
  {
3923
3961
  name: 'pen',
3924
3962
  icon: pen,
@@ -4822,6 +4860,18 @@ let ICONS_LIST = [
4822
4860
  ],
4823
4861
  categories: ['text']
4824
4862
  },
4863
+ {
4864
+ name: 'sliders-horizontal',
4865
+ icon: slidersHorizontal,
4866
+ tags: ['settings', 'filters', 'controls'],
4867
+ categories: ['account']
4868
+ },
4869
+ {
4870
+ name: 'sliders-vertical',
4871
+ icon: slidersVertical,
4872
+ tags: ['settings', 'controls'],
4873
+ categories: ['account']
4874
+ },
4825
4875
  {
4826
4876
  name: 'smartphone-nfc',
4827
4877
  icon: smartphoneNfc,
@@ -5202,6 +5252,12 @@ let ICONS_LIST = [
5202
5252
  tags: ['code', 'command line', 'prompt', 'shell'],
5203
5253
  categories: ['development']
5204
5254
  },
5255
+ {
5256
+ name: 'text-align-center',
5257
+ icon: textAlignCenter,
5258
+ tags: ['text', 'alignment', 'center'],
5259
+ categories: ['text']
5260
+ },
5205
5261
  {
5206
5262
  name: 'text-cursor',
5207
5263
  icon: textCursor,
@@ -1,9 +1,9 @@
1
- export default Link_2Off;
2
- type Link_2Off = {
1
+ export default Link2Off;
2
+ type Link2Off = {
3
3
  $on?(type: string, callback: (e: any) => void): () => void;
4
4
  $set?(props: Partial<Props>): void;
5
5
  };
6
- declare const Link_2Off: import("svelte").Component<{
6
+ declare const Link2Off: import("svelte").Component<{
7
7
  color?: string;
8
8
  size?: number;
9
9
  strokeWidth?: number;
@@ -1,9 +1,9 @@
1
- export default Maximize_2;
2
- type Maximize_2 = {
1
+ export default Maximize2;
2
+ type Maximize2 = {
3
3
  $on?(type: string, callback: (e: any) => void): () => void;
4
4
  $set?(props: Partial<Props>): void;
5
5
  };
6
- declare const Maximize_2: import("svelte").Component<{
6
+ declare const Maximize2: import("svelte").Component<{
7
7
  color?: string;
8
8
  size?: number;
9
9
  strokeWidth?: number;
@@ -1,9 +1,9 @@
1
- export default Minimize_2;
2
- type Minimize_2 = {
1
+ export default Minimize2;
2
+ type Minimize2 = {
3
3
  $on?(type: string, callback: (e: any) => void): () => void;
4
4
  $set?(props: Partial<Props>): void;
5
5
  };
6
- declare const Minimize_2: import("svelte").Component<{
6
+ declare const Minimize2: import("svelte").Component<{
7
7
  color?: string;
8
8
  size?: number;
9
9
  strokeWidth?: number;
@@ -1,9 +1,9 @@
1
- export default MousePointer_2;
2
- type MousePointer_2 = {
1
+ export default MousePointer2;
2
+ type MousePointer2 = {
3
3
  $on?(type: string, callback: (e: any) => void): () => void;
4
4
  $set?(props: Partial<Props>): void;
5
5
  };
6
- declare const MousePointer_2: import("svelte").Component<{
6
+ declare const MousePointer2: import("svelte").Component<{
7
7
  color?: string;
8
8
  size?: number;
9
9
  strokeWidth?: number;
@@ -1,9 +1,9 @@
1
- export default MoveDiagonal_2;
2
- type MoveDiagonal_2 = {
1
+ export default MoveDiagonal2;
2
+ type MoveDiagonal2 = {
3
3
  $on?(type: string, callback: (e: any) => void): () => void;
4
4
  $set?(props: Partial<Props>): void;
5
5
  };
6
- declare const MoveDiagonal_2: import("svelte").Component<{
6
+ declare const MoveDiagonal2: import("svelte").Component<{
7
7
  color?: string;
8
8
  size?: number;
9
9
  strokeWidth?: number;
@@ -1,9 +1,9 @@
1
- export default Navigation_2Off;
2
- type Navigation_2Off = {
1
+ export default Navigation2Off;
2
+ type Navigation2Off = {
3
3
  $on?(type: string, callback: (e: any) => void): () => void;
4
4
  $set?(props: Partial<Props>): void;
5
5
  };
6
- declare const Navigation_2Off: import("svelte").Component<{
6
+ declare const Navigation2Off: import("svelte").Component<{
7
7
  color?: string;
8
8
  size?: number;
9
9
  strokeWidth?: number;
@@ -0,0 +1,81 @@
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
+ }, 600);
26
+ }
27
+ </script>
28
+
29
+ <div class={className} aria-label="paperclip" 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="paperclip-icon"
41
+ class:animate={isHovered}
42
+ >
43
+ <path
44
+ d="m16 6-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551"
45
+ class="paperclip-path"
46
+ />
47
+ </svg>
48
+ </div>
49
+
50
+ <style>
51
+ div {
52
+ display: inline-block;
53
+ }
54
+ .paperclip-icon {
55
+ overflow: visible;
56
+ }
57
+
58
+ .paperclip-path {
59
+ stroke-dasharray: 87;
60
+ stroke-dashoffset: 0;
61
+ transition:
62
+ stroke-dashoffset 0.6s ease-in,
63
+ opacity 0.1s ease-in;
64
+ }
65
+
66
+ .paperclip-icon.animate .paperclip-path {
67
+ animation: drawPath 0.6s ease-in forwards;
68
+ }
69
+
70
+ @keyframes drawPath {
71
+ 0% {
72
+ stroke-dashoffset: 87;
73
+ }
74
+ 15% {
75
+ stroke-dashoffset: 87;
76
+ }
77
+ 100% {
78
+ stroke-dashoffset: 174;
79
+ }
80
+ }
81
+ </style>
@@ -0,0 +1,19 @@
1
+ export default Paperclip;
2
+ type Paperclip = {
3
+ $on?(type: string, callback: (e: any) => void): () => void;
4
+ $set?(props: Partial<Props>): void;
5
+ };
6
+ declare const Paperclip: 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
+ };
@@ -0,0 +1,185 @@
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 = 28,
15
+ strokeWidth = 2,
16
+ isHovered = false,
17
+ class: className = ''
18
+ } = $props();
19
+
20
+ // Group 1 coordinates
21
+ let line1a_x2 = $state(14);
22
+ let line1b_x1 = $state(10);
23
+ let line1c_x1 = $state(14);
24
+ let line1c_x2 = $state(14);
25
+
26
+ // Group 2 coordinates
27
+ let line2a_x2 = $state(12);
28
+ let line2b_x1 = $state(8);
29
+ let line2c_x1 = $state(8);
30
+ let line2c_x2 = $state(8);
31
+
32
+ // Group 3 coordinates
33
+ let line3a_x2 = $state(12);
34
+ let line3b_x1 = $state(16);
35
+ let line3c_x1 = $state(16);
36
+ let line3c_x2 = $state(16);
37
+
38
+ function animateValue(start, end, duration, callback) {
39
+ return new Promise((resolve) => {
40
+ const startTime = performance.now();
41
+ const animate = (currentTime) => {
42
+ const elapsed = currentTime - startTime;
43
+ const progress = Math.min(elapsed / duration, 1);
44
+
45
+ // Spring-like easing: cubic-bezier(0.34, 1.56, 0.64, 1)
46
+ const eased =
47
+ progress < 0.5
48
+ ? 4 * progress * progress * progress
49
+ : 1 - Math.pow(-2 * progress + 2, 3) / 2;
50
+
51
+ const current = start + (end - start) * eased;
52
+ callback(current);
53
+
54
+ if (progress < 1) {
55
+ requestAnimationFrame(animate);
56
+ } else {
57
+ resolve();
58
+ }
59
+ };
60
+ requestAnimationFrame(animate);
61
+ });
62
+ }
63
+
64
+ function handleMouseEnter() {
65
+ isHovered = true;
66
+
67
+ // Animate all values simultaneously
68
+ Promise.all([
69
+ animateValue(14, 10, 400, (val) => {
70
+ line1a_x2 = val;
71
+ }),
72
+ animateValue(10, 5, 400, (val) => {
73
+ line1b_x1 = val;
74
+ }),
75
+ animateValue(14, 9, 400, (val) => {
76
+ line1c_x1 = val;
77
+ line1c_x2 = val;
78
+ }),
79
+ animateValue(12, 18, 400, (val) => {
80
+ line2a_x2 = val;
81
+ }),
82
+ animateValue(8, 13, 400, (val) => {
83
+ line2b_x1 = val;
84
+ }),
85
+ animateValue(8, 14, 400, (val) => {
86
+ line2c_x1 = val;
87
+ line2c_x2 = val;
88
+ }),
89
+ animateValue(12, 4, 400, (val) => {
90
+ line3a_x2 = val;
91
+ }),
92
+ animateValue(16, 8, 400, (val) => {
93
+ line3b_x1 = val;
94
+ }),
95
+ animateValue(16, 8, 400, (val) => {
96
+ line3c_x1 = val;
97
+ line3c_x2 = val;
98
+ })
99
+ ]);
100
+ }
101
+
102
+ function handleMouseLeave() {
103
+ isHovered = false;
104
+
105
+ // Reset all values to normal
106
+ Promise.all([
107
+ animateValue(line1a_x2, 14, 400, (val) => {
108
+ line1a_x2 = val;
109
+ }),
110
+ animateValue(line1b_x1, 10, 400, (val) => {
111
+ line1b_x1 = val;
112
+ }),
113
+ animateValue(line1c_x1, 14, 400, (val) => {
114
+ line1c_x1 = val;
115
+ line1c_x2 = val;
116
+ }),
117
+ animateValue(line2a_x2, 12, 400, (val) => {
118
+ line2a_x2 = val;
119
+ }),
120
+ animateValue(line2b_x1, 8, 400, (val) => {
121
+ line2b_x1 = val;
122
+ }),
123
+ animateValue(line2c_x1, 8, 400, (val) => {
124
+ line2c_x1 = val;
125
+ line2c_x2 = val;
126
+ }),
127
+ animateValue(line3a_x2, 12, 400, (val) => {
128
+ line3a_x2 = val;
129
+ }),
130
+ animateValue(line3b_x1, 16, 400, (val) => {
131
+ line3b_x1 = val;
132
+ }),
133
+ animateValue(line3c_x1, 16, 400, (val) => {
134
+ line3c_x1 = val;
135
+ line3c_x2 = val;
136
+ })
137
+ ]);
138
+ }
139
+ </script>
140
+
141
+ <div
142
+ class={className}
143
+ aria-label="sliders-horizontal"
144
+ role="img"
145
+ onmouseenter={handleMouseEnter}
146
+ onmouseleave={handleMouseLeave}
147
+ >
148
+ <svg
149
+ xmlns="http://www.w3.org/2000/svg"
150
+ width={size}
151
+ height={size}
152
+ viewBox="0 0 24 24"
153
+ fill="none"
154
+ stroke={color}
155
+ stroke-width={strokeWidth}
156
+ stroke-linecap="round"
157
+ stroke-linejoin="round"
158
+ class="sliders-icon"
159
+ >
160
+ <!-- Group 1 -->
161
+ <line x1="21" x2={line1a_x2} y1="4" y2="4" />
162
+ <line x1={line1b_x1} x2="3" y1="4" y2="4" />
163
+ <line x1={line1c_x1} x2={line1c_x2} y1="2" y2="6" />
164
+
165
+ <!-- Group 2 -->
166
+ <line x1="21" x2={line2a_x2} y1="12" y2="12" />
167
+ <line x1={line2b_x1} x2="3" y1="12" y2="12" />
168
+ <line x1={line2c_x1} x2={line2c_x2} y1="10" y2="14" />
169
+
170
+ <!-- Group 3 -->
171
+ <line x1="3" x2={line3a_x2} y1="20" y2="20" />
172
+ <line x1={line3b_x1} x2="21" y1="20" y2="20" />
173
+ <line x1={line3c_x1} x2={line3c_x2} y1="18" y2="22" />
174
+ </svg>
175
+ </div>
176
+
177
+ <style>
178
+ div {
179
+ display: inline-block;
180
+ }
181
+
182
+ .sliders-icon {
183
+ overflow: visible;
184
+ }
185
+ </style>
@@ -0,0 +1,19 @@
1
+ export default SlidersHorizontal;
2
+ type SlidersHorizontal = {
3
+ $on?(type: string, callback: (e: any) => void): () => void;
4
+ $set?(props: Partial<Props>): void;
5
+ };
6
+ declare const SlidersHorizontal: 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
+ };