queen-mq 0.1.6 → 0.2.11

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 (85) hide show
  1. package/README.md +166 -2078
  2. package/{src → client-js}/benchmark/consumer.js +5 -3
  3. package/{src → client-js}/benchmark/producer.js +9 -4
  4. package/client-js/client/client.js +1511 -0
  5. package/{src → client-js}/client/index.js +1 -4
  6. package/{src → client-js}/client/utils/http.js +3 -2
  7. package/{src → client-js}/client/utils/retry.js +7 -1
  8. package/client-js/test/advanced-client-tests.js +761 -0
  9. package/{src → client-js}/test/advanced-pattern-tests.js +2 -2
  10. package/{src → client-js}/test/bus-mode-tests.js +6 -6
  11. package/{src → client-js}/test/core-tests.js +8 -3
  12. package/{src → client-js}/test/edge-case-tests.js +4 -3
  13. package/client-js/test/human.js +162 -0
  14. package/client-js/test/qos0-tests.js +334 -0
  15. package/{src → client-js}/test/test-new.js +78 -1
  16. package/package.json +8 -29
  17. package/init-db.js +0 -20
  18. package/src/client/client.js +0 -586
  19. package/src/cluster-server.js +0 -242
  20. package/src/config.js +0 -229
  21. package/src/database/connection.js +0 -129
  22. package/src/database/poolManager.js +0 -199
  23. package/src/database/schema-v2.sql +0 -278
  24. package/src/managers/eventManager.js +0 -59
  25. package/src/managers/queueManagerOptimized.js +0 -1431
  26. package/src/managers/resourceCache.js +0 -96
  27. package/src/managers/systemEventManager.js +0 -132
  28. package/src/routes/ack.js +0 -26
  29. package/src/routes/configure.js +0 -46
  30. package/src/routes/messages.js +0 -368
  31. package/src/routes/pop.js +0 -69
  32. package/src/routes/push.js +0 -28
  33. package/src/routes/resources.js +0 -330
  34. package/src/routes/status.js +0 -1037
  35. package/src/server.js +0 -1528
  36. package/src/test/MIGRATION_ISSUES.md +0 -174
  37. package/src/test/test.js +0 -4524
  38. package/src/utils/streaming.js +0 -231
  39. package/src/webapp-dist/assets/Analytics-DJrE4Rz2.css +0 -1
  40. package/src/webapp-dist/assets/Analytics-HEMXKmfJ.js +0 -1
  41. package/src/webapp-dist/assets/ConfirmDialog-YEoCdE7x.js +0 -1
  42. package/src/webapp-dist/assets/ConsumerGroups-CC5VJywp.css +0 -1
  43. package/src/webapp-dist/assets/ConsumerGroups-D8Z20HhZ.js +0 -1
  44. package/src/webapp-dist/assets/Dashboard-BRFOz6it.css +0 -1
  45. package/src/webapp-dist/assets/Dashboard-Bpx9I32h.js +0 -1
  46. package/src/webapp-dist/assets/LoadingSpinner-BPttXcbs.js +0 -1
  47. package/src/webapp-dist/assets/Messages-BOfVHKma.css +0 -1
  48. package/src/webapp-dist/assets/Messages-EKURCbLl.js +0 -1
  49. package/src/webapp-dist/assets/QueueDetail-BXXA7xoZ.css +0 -1
  50. package/src/webapp-dist/assets/QueueDetail-Bmxg0KiA.js +0 -1
  51. package/src/webapp-dist/assets/Queues-CvrJkrZT.css +0 -1
  52. package/src/webapp-dist/assets/Queues-yUx9_3-9.js +0 -1
  53. package/src/webapp-dist/assets/StatusBadge-C1bBtXHh.css +0 -1
  54. package/src/webapp-dist/assets/StatusBadge-C6N84XmO.js +0 -1
  55. package/src/webapp-dist/assets/analytics-BapTekLM.js +0 -1
  56. package/src/webapp-dist/assets/colors-5z6Q_kUr.js +0 -18
  57. package/src/webapp-dist/assets/index-B7w2bKT6.css +0 -1
  58. package/src/webapp-dist/assets/index-CUSnwYTH.js +0 -31
  59. package/src/webapp-dist/assets/messages-CRV6E-xU.js +0 -1
  60. package/src/webapp-dist/assets/queen-logo-blue.svg +0 -210
  61. package/src/webapp-dist/assets/queen-logo-cyan.svg +0 -210
  62. package/src/webapp-dist/assets/queen-logo-indigo.svg +0 -210
  63. package/src/webapp-dist/assets/queen-logo-orange.svg +0 -210
  64. package/src/webapp-dist/assets/queen-logo-pink.svg +0 -210
  65. package/src/webapp-dist/assets/queen-logo-purple.svg +0 -210
  66. package/src/webapp-dist/assets/queen-logo-rose.svg +0 -239
  67. package/src/webapp-dist/assets/queen-logo.svg +0 -263
  68. package/src/webapp-dist/assets/queues-BdUbxfBC.js +0 -1
  69. package/src/webapp-dist/assets/resources-Bs9U-ceF.js +0 -1
  70. package/src/webapp-dist/index.html +0 -15
  71. package/src/websocket/wsServer.js +0 -228
  72. /package/{src → client-js}/benchmark/consumer_multi.js +0 -0
  73. /package/{src → client-js}/benchmark/producer_multi.js +0 -0
  74. /package/{src → client-js}/client/utils/loadBalancer.js +0 -0
  75. /package/{src → client-js}/services/encryptionService.js +0 -0
  76. /package/{src → client-js}/services/evictionService.js +0 -0
  77. /package/{src → client-js}/services/retentionService.js +0 -0
  78. /package/{src → client-js}/services/startupSync.js +0 -0
  79. /package/{src → client-js}/test/README.md +0 -0
  80. /package/{src → client-js}/test/enterprise-tests.js +0 -0
  81. /package/{src → client-js}/test/partition-locking-tests.js +0 -0
  82. /package/{src → client-js}/test/utils.js +0 -0
  83. /package/{src → client-js}/test/window-buffer-test.js +0 -0
  84. /package/{src → client-js}/utils/logger.js +0 -0
  85. /package/{src → client-js}/utils/uuid.js +0 -0
@@ -1,210 +0,0 @@
1
- <svg viewBox="0 0 120 120" fill="none" xmlns="http://www.w3.org/2000/svg">
2
-
3
- <!-- Decorative sparkles -->
4
- <g id="sparkles">
5
- <circle cx="25" cy="30" r="1" fill="url(#sparkleGradient)" opacity="0.8">
6
- <animate attributeName="opacity" values="0.8;0.3;0.8" dur="3s" repeatCount="indefinite"/>
7
- </circle>
8
- <circle cx="95" cy="35" r="1.5" fill="url(#sparkleGradient)" opacity="0.6">
9
- <animate attributeName="opacity" values="0.6;1;0.6" dur="2.5s" repeatCount="indefinite"/>
10
- </circle>
11
- <circle cx="90" cy="85" r="1" fill="url(#sparkleGradient)" opacity="0.7">
12
- <animate attributeName="opacity" values="0.7;0.4;0.7" dur="2s" repeatCount="indefinite"/>
13
- </circle>
14
- <circle cx="30" cy="90" r="1.2" fill="url(#sparkleGradient)" opacity="0.5">
15
- <animate attributeName="opacity" values="0.5;0.9;0.5" dur="2.8s" repeatCount="indefinite"/>
16
- </circle>
17
- </g>
18
-
19
- <!-- Queue lines flowing -->
20
- <g id="queue-lines">
21
- <g opacity="0.8">
22
- <rect x="15" y="65" width="20" height="3" rx="1.5" fill="url(#queueGradient1)">
23
- <animate attributeName="x" values="15;20;15" dur="4s" repeatCount="indefinite"/>
24
- </rect>
25
- <rect x="18" y="72" width="15" height="3" rx="1.5" fill="url(#queueGradient2)">
26
- <animate attributeName="x" values="18;23;18" dur="3.5s" repeatCount="indefinite"/>
27
- </rect>
28
- <rect x="12" y="79" width="25" height="3" rx="1.5" fill="url(#queueGradient3)">
29
- <animate attributeName="x" values="12;17;12" dur="4.5s" repeatCount="indefinite"/>
30
- </rect>
31
- </g>
32
- <g opacity="0.8">
33
- <rect x="85" y="65" width="20" height="3" rx="1.5" fill="url(#queueGradient1)">
34
- <animate attributeName="x" values="85;80;85" dur="4s" repeatCount="indefinite"/>
35
- </rect>
36
- <rect x="87" y="72" width="15" height="3" rx="1.5" fill="url(#queueGradient2)">
37
- <animate attributeName="x" values="87;82;87" dur="3.5s" repeatCount="indefinite"/>
38
- </rect>
39
- <rect x="83" y="79" width="25" height="3" rx="1.5" fill="url(#queueGradient3)">
40
- <animate attributeName="x" values="83;78;83" dur="4.5s" repeatCount="indefinite"/>
41
- </rect>
42
- </g>
43
- </g>
44
-
45
- <!-- Main duck -->
46
- <g id="queen-duck" transform="translate(60, 60)">
47
- <ellipse cx="0" cy="35" rx="25" ry="8" fill="#000000" opacity="0.15"/>
48
- <path d="M -20 5 Q -25 15 -22 28 Q -18 38 -5 40 L 5 40 Q 18 38 22 28 Q 25 15 20 5 Q 15 -2 8 -3 L -8 -3 Q -15 -2 -20 5 Z"
49
- fill="url(#bodyGradient)" stroke="url(#bodyStroke)" stroke-width="1.5"/>
50
- <ellipse cx="0" cy="15" rx="12" ry="15" fill="url(#chestHighlight)" opacity="0.6"/>
51
- <path d="M -18 8 Q -23 12 -22 20 Q -20 25 -15 22 Q -12 18 -13 12 Z"
52
- fill="url(#wingGradient)" stroke="url(#wingStroke)" stroke-width="0.8" opacity="0.9"/>
53
- <path d="M 18 8 Q 23 12 22 20 Q 20 25 15 22 Q 12 18 13 12 Z"
54
- fill="url(#wingGradient)" stroke="url(#wingStroke)" stroke-width="0.8" opacity="0.9"/>
55
- <path d="M -5 -3 Q -6 -8 -5 -12 L 5 -12 Q 6 -8 5 -3" fill="url(#neckGradient)" stroke="none"/>
56
- <ellipse cx="0" cy="-18" rx="12" ry="13" fill="url(#headGradient)" stroke="url(#headStroke)" stroke-width="1.2"/>
57
- <ellipse cx="-2" cy="-20" rx="6" ry="7" fill="url(#headHighlight)" opacity="0.5"/>
58
- <path d="M 8 -18 Q 14 -18 15 -17 Q 15 -15 14 -14 Q 13 -13 8 -14 Z"
59
- fill="url(#beakGradient)" stroke="#FCD34D" stroke-width="0.8"/>
60
- <ellipse cx="4" cy="-19" rx="3" ry="3.5" fill="white"/>
61
- <ellipse cx="4.5" cy="-19" rx="2" ry="2.5" fill="url(#eyeGradient)"/>
62
- <circle cx="5" cy="-19.5" r="1" fill="#1F2937"/>
63
- <circle cx="5.5" cy="-20" r="0.4" fill="white"/>
64
- <path d="M 6 -22 L 7 -23.5 M 7 -21.5 L 8.5 -22.5 M 7.5 -21 L 9 -21.5"
65
- stroke="#1F2937" stroke-width="0.4" fill="none" stroke-linecap="round"/>
66
- <ellipse cx="1" cy="-15" rx="2.5" ry="1.5" fill="#FFB6C1" opacity="0.4"/>
67
-
68
- <g id="crown" transform="translate(0, -32)">
69
- <ellipse cx="0" cy="2" rx="12" ry="3" fill="#000000" opacity="0.1"/>
70
- <path d="M -12 0 L -10 -8 L -6 -3 L -3 -10 L 0 -5 L 3 -10 L 6 -3 L 10 -8 L 12 0 Q 10 2 0 2 Q -10 2 -12 0 Z"
71
- fill="url(#crownGradient)" stroke="url(#crownStroke)" stroke-width="1.2" stroke-linejoin="round"/>
72
- <path d="M -10 0 L -8 -6 L -5 -2 L -2 -8 L 0 -4 L 2 -8 L 5 -2 L 8 -6 L 10 0"
73
- fill="none" stroke="#FEF3C7" stroke-width="0.5" opacity="0.6"/>
74
- <circle cx="0" cy="-2" r="2.5" fill="url(#centerJewelGradient)" stroke="#f97316" stroke-width="0.5"/>
75
- <circle cx="0" cy="-2" r="1.5" fill="url(#jewelSparkle)" opacity="0.8"/>
76
- <circle cx="-6" cy="-1" r="1.8" fill="url(#leftJewelGradient)" stroke="#fb923c" stroke-width="0.4"/>
77
- <circle cx="6" cy="-1" r="1.8" fill="url(#rightJewelGradient)" stroke="#ea580c" stroke-width="0.4"/>
78
- <circle cx="-3" cy="-4" r="1" fill="#fdba74" opacity="0.9"/>
79
- <circle cx="3" cy="-4" r="1" fill="#fdba74" opacity="0.9"/>
80
- <circle cx="0" cy="-10" r="1.2" fill="#FEF3C7"/>
81
- <circle cx="-6" cy="-8" r="1" fill="#FEF3C7"/>
82
- <circle cx="6" cy="-8" r="1" fill="#FEF3C7"/>
83
- </g>
84
-
85
- <g id="tail" transform="translate(-22, 25)">
86
- <path d="M 0 0 Q -3 3 -2 7 Q -1 9 1 8 Q 2 5 0 0" fill="url(#tailGradient)" opacity="0.8"/>
87
- <path d="M 2 -1 Q -1 2 0 6 Q 1 8 3 7 Q 4 4 2 -1" fill="url(#tailGradient)" opacity="0.7"/>
88
- <path d="M 4 -2 Q 1 1 2 5 Q 3 7 5 6 Q 6 3 4 -2" fill="url(#tailGradient)" opacity="0.6"/>
89
- </g>
90
- </g>
91
-
92
- <defs>
93
- <radialGradient id="sparkleGradient">
94
- <stop offset="0%" style="stop-color:#fb923c;stop-opacity:1" />
95
- <stop offset="100%" style="stop-color:#fdba74;stop-opacity:0" />
96
- </radialGradient>
97
-
98
- <linearGradient id="queueGradient1" x1="0%" y1="0%" x2="100%" y2="0%">
99
- <stop offset="0%" style="stop-color:#f97316;stop-opacity:0.3" />
100
- <stop offset="50%" style="stop-color:#f97316;stop-opacity:1" />
101
- <stop offset="100%" style="stop-color:#f97316;stop-opacity:0.3" />
102
- </linearGradient>
103
-
104
- <linearGradient id="queueGradient2" x1="0%" y1="0%" x2="100%" y2="0%">
105
- <stop offset="0%" style="stop-color:#3B82F6;stop-opacity:0.3" />
106
- <stop offset="50%" style="stop-color:#3B82F6;stop-opacity:1" />
107
- <stop offset="100%" style="stop-color:#3B82F6;stop-opacity:0.3" />
108
- </linearGradient>
109
-
110
- <linearGradient id="queueGradient3" x1="0%" y1="0%" x2="100%" y2="0%">
111
- <stop offset="0%" style="stop-color:#F59E0B;stop-opacity:0.3" />
112
- <stop offset="50%" style="stop-color:#F59E0B;stop-opacity:1" />
113
- <stop offset="100%" style="stop-color:#F59E0B;stop-opacity:0.3" />
114
- </linearGradient>
115
-
116
- <radialGradient id="bodyGradient" cx="50%" cy="30%">
117
- <stop offset="0%" style="stop-color:#fed7aa;stop-opacity:1" />
118
- <stop offset="70%" style="stop-color:#fdba74;stop-opacity:1" />
119
- <stop offset="100%" style="stop-color:#f97316;stop-opacity:1" />
120
- </radialGradient>
121
-
122
- <linearGradient id="bodyStroke" x1="0%" y1="0%" x2="0%" y2="100%">
123
- <stop offset="0%" style="stop-color:#fb923c;stop-opacity:1" />
124
- <stop offset="100%" style="stop-color:#ea580c;stop-opacity:1" />
125
- </linearGradient>
126
-
127
- <radialGradient id="chestHighlight">
128
- <stop offset="0%" style="stop-color:#FFFFFF;stop-opacity:0.8" />
129
- <stop offset="100%" style="stop-color:#fff7ed;stop-opacity:0.2" />
130
- </radialGradient>
131
-
132
- <linearGradient id="wingGradient" x1="0%" y1="0%" x2="100%" y2="100%">
133
- <stop offset="0%" style="stop-color:#fdba74;stop-opacity:1" />
134
- <stop offset="100%" style="stop-color:#ea580c;stop-opacity:1" />
135
- </linearGradient>
136
-
137
- <linearGradient id="wingStroke">
138
- <stop offset="0%" style="stop-color:#f97316;stop-opacity:1" />
139
- <stop offset="100%" style="stop-color:#c2410c;stop-opacity:1" />
140
- </linearGradient>
141
-
142
- <linearGradient id="neckGradient" x1="0%" y1="100%" x2="0%" y2="0%">
143
- <stop offset="0%" style="stop-color:#fdba74;stop-opacity:1" />
144
- <stop offset="100%" style="stop-color:#fed7aa;stop-opacity:1" />
145
- </linearGradient>
146
-
147
- <radialGradient id="headGradient" cx="40%" cy="40%">
148
- <stop offset="0%" style="stop-color:#ffedd5;stop-opacity:1" />
149
- <stop offset="60%" style="stop-color:#fed7aa;stop-opacity:1" />
150
- <stop offset="100%" style="stop-color:#fb923c;stop-opacity:1" />
151
- </radialGradient>
152
-
153
- <linearGradient id="headStroke">
154
- <stop offset="0%" style="stop-color:#fb923c;stop-opacity:1" />
155
- <stop offset="100%" style="stop-color:#f97316;stop-opacity:1" />
156
- </linearGradient>
157
-
158
- <radialGradient id="headHighlight">
159
- <stop offset="0%" style="stop-color:#FFFFFF;stop-opacity:1" />
160
- <stop offset="100%" style="stop-color:#fff7ed;stop-opacity:0" />
161
- </radialGradient>
162
-
163
- <linearGradient id="beakGradient" x1="0%" y1="0%" x2="100%" y2="0%">
164
- <stop offset="0%" style="stop-color:#FDE68A;stop-opacity:1" />
165
- <stop offset="100%" style="stop-color:#FCD34D;stop-opacity:1" />
166
- </linearGradient>
167
-
168
- <radialGradient id="eyeGradient">
169
- <stop offset="0%" style="stop-color:#92400E;stop-opacity:1" />
170
- <stop offset="100%" style="stop-color:#451A03;stop-opacity:1" />
171
- </radialGradient>
172
-
173
- <linearGradient id="crownGradient" x1="0%" y1="100%" x2="0%" y2="0%">
174
- <stop offset="0%" style="stop-color:#FDE68A;stop-opacity:1" />
175
- <stop offset="50%" style="stop-color:#FCD34D;stop-opacity:1" />
176
- <stop offset="100%" style="stop-color:#FEF3C7;stop-opacity:1" />
177
- </linearGradient>
178
-
179
- <linearGradient id="crownStroke">
180
- <stop offset="0%" style="stop-color:#FCD34D;stop-opacity:1" />
181
- <stop offset="100%" style="stop-color:#FBBF24;stop-opacity:1" />
182
- </linearGradient>
183
-
184
- <radialGradient id="centerJewelGradient">
185
- <stop offset="0%" style="stop-color:#ffedd5;stop-opacity:1" />
186
- <stop offset="100%" style="stop-color:#f97316;stop-opacity:1" />
187
- </radialGradient>
188
-
189
- <radialGradient id="leftJewelGradient">
190
- <stop offset="0%" style="stop-color:#fed7aa;stop-opacity:1" />
191
- <stop offset="100%" style="stop-color:#ea580c;stop-opacity:1" />
192
- </radialGradient>
193
-
194
- <radialGradient id="rightJewelGradient">
195
- <stop offset="0%" style="stop-color:#ffedd5;stop-opacity:1" />
196
- <stop offset="100%" style="stop-color:#c2410c;stop-opacity:1" />
197
- </radialGradient>
198
-
199
- <radialGradient id="jewelSparkle">
200
- <stop offset="0%" style="stop-color:#FFFFFF;stop-opacity:1" />
201
- <stop offset="100%" style="stop-color:#FFFFFF;stop-opacity:0" />
202
- </radialGradient>
203
-
204
- <linearGradient id="tailGradient" x1="0%" y1="0%" x2="100%" y2="100%">
205
- <stop offset="0%" style="stop-color:#fb923c;stop-opacity:1" />
206
- <stop offset="100%" style="stop-color:#ea580c;stop-opacity:1" />
207
- </linearGradient>
208
- </defs>
209
- </svg>
210
-
@@ -1,210 +0,0 @@
1
- <svg viewBox="0 0 120 120" fill="none" xmlns="http://www.w3.org/2000/svg">
2
-
3
- <!-- Decorative sparkles -->
4
- <g id="sparkles">
5
- <circle cx="25" cy="30" r="1" fill="url(#sparkleGradient)" opacity="0.8">
6
- <animate attributeName="opacity" values="0.8;0.3;0.8" dur="3s" repeatCount="indefinite"/>
7
- </circle>
8
- <circle cx="95" cy="35" r="1.5" fill="url(#sparkleGradient)" opacity="0.6">
9
- <animate attributeName="opacity" values="0.6;1;0.6" dur="2.5s" repeatCount="indefinite"/>
10
- </circle>
11
- <circle cx="90" cy="85" r="1" fill="url(#sparkleGradient)" opacity="0.7">
12
- <animate attributeName="opacity" values="0.7;0.4;0.7" dur="2s" repeatCount="indefinite"/>
13
- </circle>
14
- <circle cx="30" cy="90" r="1.2" fill="url(#sparkleGradient)" opacity="0.5">
15
- <animate attributeName="opacity" values="0.5;0.9;0.5" dur="2.8s" repeatCount="indefinite"/>
16
- </circle>
17
- </g>
18
-
19
- <!-- Queue lines -->
20
- <g id="queue-lines">
21
- <g opacity="0.8">
22
- <rect x="15" y="65" width="20" height="3" rx="1.5" fill="url(#queueGradient1)">
23
- <animate attributeName="x" values="15;20;15" dur="4s" repeatCount="indefinite"/>
24
- </rect>
25
- <rect x="18" y="72" width="15" height="3" rx="1.5" fill="url(#queueGradient2)">
26
- <animate attributeName="x" values="18;23;18" dur="3.5s" repeatCount="indefinite"/>
27
- </rect>
28
- <rect x="12" y="79" width="25" height="3" rx="1.5" fill="url(#queueGradient3)">
29
- <animate attributeName="x" values="12;17;12" dur="4.5s" repeatCount="indefinite"/>
30
- </rect>
31
- </g>
32
- <g opacity="0.8">
33
- <rect x="85" y="65" width="20" height="3" rx="1.5" fill="url(#queueGradient1)">
34
- <animate attributeName="x" values="85;80;85" dur="4s" repeatCount="indefinite"/>
35
- </rect>
36
- <rect x="87" y="72" width="15" height="3" rx="1.5" fill="url(#queueGradient2)">
37
- <animate attributeName="x" values="87;82;87" dur="3.5s" repeatCount="indefinite"/>
38
- </rect>
39
- <rect x="83" y="79" width="25" height="3" rx="1.5" fill="url(#queueGradient3)">
40
- <animate attributeName="x" values="83;78;83" dur="4.5s" repeatCount="indefinite"/>
41
- </rect>
42
- </g>
43
- </g>
44
-
45
- <!-- Main duck -->
46
- <g id="queen-duck" transform="translate(60, 60)">
47
- <ellipse cx="0" cy="35" rx="25" ry="8" fill="#000000" opacity="0.15"/>
48
- <path d="M -20 5 Q -25 15 -22 28 Q -18 38 -5 40 L 5 40 Q 18 38 22 28 Q 25 15 20 5 Q 15 -2 8 -3 L -8 -3 Q -15 -2 -20 5 Z"
49
- fill="url(#bodyGradient)" stroke="url(#bodyStroke)" stroke-width="1.5"/>
50
- <ellipse cx="0" cy="15" rx="12" ry="15" fill="url(#chestHighlight)" opacity="0.6"/>
51
- <path d="M -18 8 Q -23 12 -22 20 Q -20 25 -15 22 Q -12 18 -13 12 Z"
52
- fill="url(#wingGradient)" stroke="url(#wingStroke)" stroke-width="0.8" opacity="0.9"/>
53
- <path d="M 18 8 Q 23 12 22 20 Q 20 25 15 22 Q 12 18 13 12 Z"
54
- fill="url(#wingGradient)" stroke="url(#wingStroke)" stroke-width="0.8" opacity="0.9"/>
55
- <path d="M -5 -3 Q -6 -8 -5 -12 L 5 -12 Q 6 -8 5 -3" fill="url(#neckGradient)" stroke="none"/>
56
- <ellipse cx="0" cy="-18" rx="12" ry="13" fill="url(#headGradient)" stroke="url(#headStroke)" stroke-width="1.2"/>
57
- <ellipse cx="-2" cy="-20" rx="6" ry="7" fill="url(#headHighlight)" opacity="0.5"/>
58
- <path d="M 8 -18 Q 14 -18 15 -17 Q 15 -15 14 -14 Q 13 -13 8 -14 Z"
59
- fill="url(#beakGradient)" stroke="#FCD34D" stroke-width="0.8"/>
60
- <ellipse cx="4" cy="-19" rx="3" ry="3.5" fill="white"/>
61
- <ellipse cx="4.5" cy="-19" rx="2" ry="2.5" fill="url(#eyeGradient)"/>
62
- <circle cx="5" cy="-19.5" r="1" fill="#1F2937"/>
63
- <circle cx="5.5" cy="-20" r="0.4" fill="white"/>
64
- <path d="M 6 -22 L 7 -23.5 M 7 -21.5 L 8.5 -22.5 M 7.5 -21 L 9 -21.5"
65
- stroke="#1F2937" stroke-width="0.4" fill="none" stroke-linecap="round"/>
66
- <ellipse cx="1" cy="-15" rx="2.5" ry="1.5" fill="#FFB6C1" opacity="0.4"/>
67
-
68
- <g id="crown" transform="translate(0, -32)">
69
- <ellipse cx="0" cy="2" rx="12" ry="3" fill="#000000" opacity="0.1"/>
70
- <path d="M -12 0 L -10 -8 L -6 -3 L -3 -10 L 0 -5 L 3 -10 L 6 -3 L 10 -8 L 12 0 Q 10 2 0 2 Q -10 2 -12 0 Z"
71
- fill="url(#crownGradient)" stroke="url(#crownStroke)" stroke-width="1.2" stroke-linejoin="round"/>
72
- <path d="M -10 0 L -8 -6 L -5 -2 L -2 -8 L 0 -4 L 2 -8 L 5 -2 L 8 -6 L 10 0"
73
- fill="none" stroke="#FEF3C7" stroke-width="0.5" opacity="0.6"/>
74
- <circle cx="0" cy="-2" r="2.5" fill="url(#centerJewelGradient)" stroke="#ec4899" stroke-width="0.5"/>
75
- <circle cx="0" cy="-2" r="1.5" fill="url(#jewelSparkle)" opacity="0.8"/>
76
- <circle cx="-6" cy="-1" r="1.8" fill="url(#leftJewelGradient)" stroke="#f472b6" stroke-width="0.4"/>
77
- <circle cx="6" cy="-1" r="1.8" fill="url(#rightJewelGradient)" stroke="#db2777" stroke-width="0.4"/>
78
- <circle cx="-3" cy="-4" r="1" fill="#f9a8d4" opacity="0.9"/>
79
- <circle cx="3" cy="-4" r="1" fill="#f9a8d4" opacity="0.9"/>
80
- <circle cx="0" cy="-10" r="1.2" fill="#FEF3C7"/>
81
- <circle cx="-6" cy="-8" r="1" fill="#FEF3C7"/>
82
- <circle cx="6" cy="-8" r="1" fill="#FEF3C7"/>
83
- </g>
84
-
85
- <g id="tail" transform="translate(-22, 25)">
86
- <path d="M 0 0 Q -3 3 -2 7 Q -1 9 1 8 Q 2 5 0 0" fill="url(#tailGradient)" opacity="0.8"/>
87
- <path d="M 2 -1 Q -1 2 0 6 Q 1 8 3 7 Q 4 4 2 -1" fill="url(#tailGradient)" opacity="0.7"/>
88
- <path d="M 4 -2 Q 1 1 2 5 Q 3 7 5 6 Q 6 3 4 -2" fill="url(#tailGradient)" opacity="0.6"/>
89
- </g>
90
- </g>
91
-
92
- <defs>
93
- <radialGradient id="sparkleGradient">
94
- <stop offset="0%" style="stop-color:#f472b6;stop-opacity:1" />
95
- <stop offset="100%" style="stop-color:#f9a8d4;stop-opacity:0" />
96
- </radialGradient>
97
-
98
- <linearGradient id="queueGradient1" x1="0%" y1="0%" x2="100%" y2="0%">
99
- <stop offset="0%" style="stop-color:#ec4899;stop-opacity:0.3" />
100
- <stop offset="50%" style="stop-color:#ec4899;stop-opacity:1" />
101
- <stop offset="100%" style="stop-color:#ec4899;stop-opacity:0.3" />
102
- </linearGradient>
103
-
104
- <linearGradient id="queueGradient2" x1="0%" y1="0%" x2="100%" y2="0%">
105
- <stop offset="0%" style="stop-color:#3B82F6;stop-opacity:0.3" />
106
- <stop offset="50%" style="stop-color:#3B82F6;stop-opacity:1" />
107
- <stop offset="100%" style="stop-color:#3B82F6;stop-opacity:0.3" />
108
- </linearGradient>
109
-
110
- <linearGradient id="queueGradient3" x1="0%" y1="0%" x2="100%" y2="0%">
111
- <stop offset="0%" style="stop-color:#F59E0B;stop-opacity:0.3" />
112
- <stop offset="50%" style="stop-color:#F59E0B;stop-opacity:1" />
113
- <stop offset="100%" style="stop-color:#F59E0B;stop-opacity:0.3" />
114
- </linearGradient>
115
-
116
- <radialGradient id="bodyGradient" cx="50%" cy="30%">
117
- <stop offset="0%" style="stop-color:#fbcfe8;stop-opacity:1" />
118
- <stop offset="70%" style="stop-color:#f9a8d4;stop-opacity:1" />
119
- <stop offset="100%" style="stop-color:#ec4899;stop-opacity:1" />
120
- </radialGradient>
121
-
122
- <linearGradient id="bodyStroke" x1="0%" y1="0%" x2="0%" y2="100%">
123
- <stop offset="0%" style="stop-color:#f472b6;stop-opacity:1" />
124
- <stop offset="100%" style="stop-color:#db2777;stop-opacity:1" />
125
- </linearGradient>
126
-
127
- <radialGradient id="chestHighlight">
128
- <stop offset="0%" style="stop-color:#FFFFFF;stop-opacity:0.8" />
129
- <stop offset="100%" style="stop-color:#fdf2f8;stop-opacity:0.2" />
130
- </radialGradient>
131
-
132
- <linearGradient id="wingGradient" x1="0%" y1="0%" x2="100%" y2="100%">
133
- <stop offset="0%" style="stop-color:#f9a8d4;stop-opacity:1" />
134
- <stop offset="100%" style="stop-color:#db2777;stop-opacity:1" />
135
- </linearGradient>
136
-
137
- <linearGradient id="wingStroke">
138
- <stop offset="0%" style="stop-color:#ec4899;stop-opacity:1" />
139
- <stop offset="100%" style="stop-color:#be185d;stop-opacity:1" />
140
- </linearGradient>
141
-
142
- <linearGradient id="neckGradient" x1="0%" y1="100%" x2="0%" y2="0%">
143
- <stop offset="0%" style="stop-color:#f9a8d4;stop-opacity:1" />
144
- <stop offset="100%" style="stop-color:#fbcfe8;stop-opacity:1" />
145
- </linearGradient>
146
-
147
- <radialGradient id="headGradient" cx="40%" cy="40%">
148
- <stop offset="0%" style="stop-color:#fce7f3;stop-opacity:1" />
149
- <stop offset="60%" style="stop-color:#fbcfe8;stop-opacity:1" />
150
- <stop offset="100%" style="stop-color:#f472b6;stop-opacity:1" />
151
- </radialGradient>
152
-
153
- <linearGradient id="headStroke">
154
- <stop offset="0%" style="stop-color:#f472b6;stop-opacity:1" />
155
- <stop offset="100%" style="stop-color:#ec4899;stop-opacity:1" />
156
- </linearGradient>
157
-
158
- <radialGradient id="headHighlight">
159
- <stop offset="0%" style="stop-color:#FFFFFF;stop-opacity:1" />
160
- <stop offset="100%" style="stop-color:#fdf2f8;stop-opacity:0" />
161
- </radialGradient>
162
-
163
- <linearGradient id="beakGradient" x1="0%" y1="0%" x2="100%" y2="0%">
164
- <stop offset="0%" style="stop-color:#FDE68A;stop-opacity:1" />
165
- <stop offset="100%" style="stop-color:#FCD34D;stop-opacity:1" />
166
- </linearGradient>
167
-
168
- <radialGradient id="eyeGradient">
169
- <stop offset="0%" style="stop-color:#92400E;stop-opacity:1" />
170
- <stop offset="100%" style="stop-color:#451A03;stop-opacity:1" />
171
- </radialGradient>
172
-
173
- <linearGradient id="crownGradient" x1="0%" y1="100%" x2="0%" y2="0%">
174
- <stop offset="0%" style="stop-color:#FDE68A;stop-opacity:1" />
175
- <stop offset="50%" style="stop-color:#FCD34D;stop-opacity:1" />
176
- <stop offset="100%" style="stop-color:#FEF3C7;stop-opacity:1" />
177
- </linearGradient>
178
-
179
- <linearGradient id="crownStroke">
180
- <stop offset="0%" style="stop-color:#FCD34D;stop-opacity:1" />
181
- <stop offset="100%" style="stop-color:#FBBF24;stop-opacity:1" />
182
- </linearGradient>
183
-
184
- <radialGradient id="centerJewelGradient">
185
- <stop offset="0%" style="stop-color:#fce7f3;stop-opacity:1" />
186
- <stop offset="100%" style="stop-color:#ec4899;stop-opacity:1" />
187
- </radialGradient>
188
-
189
- <radialGradient id="leftJewelGradient">
190
- <stop offset="0%" style="stop-color:#fbcfe8;stop-opacity:1" />
191
- <stop offset="100%" style="stop-color:#db2777;stop-opacity:1" />
192
- </radialGradient>
193
-
194
- <radialGradient id="rightJewelGradient">
195
- <stop offset="0%" style="stop-color:#fce7f3;stop-opacity:1" />
196
- <stop offset="100%" style="stop-color:#be185d;stop-opacity:1" />
197
- </radialGradient>
198
-
199
- <radialGradient id="jewelSparkle">
200
- <stop offset="0%" style="stop-color:#FFFFFF;stop-opacity:1" />
201
- <stop offset="100%" style="stop-color:#FFFFFF;stop-opacity:0" />
202
- </radialGradient>
203
-
204
- <linearGradient id="tailGradient" x1="0%" y1="0%" x2="100%" y2="100%">
205
- <stop offset="0%" style="stop-color:#f472b6;stop-opacity:1" />
206
- <stop offset="100%" style="stop-color:#db2777;stop-opacity:1" />
207
- </linearGradient>
208
- </defs>
209
- </svg>
210
-
@@ -1,210 +0,0 @@
1
- <svg viewBox="0 0 120 120" fill="none" xmlns="http://www.w3.org/2000/svg">
2
-
3
- <!-- Decorative sparkles -->
4
- <g id="sparkles">
5
- <circle cx="25" cy="30" r="1" fill="url(#sparkleGradient)" opacity="0.8">
6
- <animate attributeName="opacity" values="0.8;0.3;0.8" dur="3s" repeatCount="indefinite"/>
7
- </circle>
8
- <circle cx="95" cy="35" r="1.5" fill="url(#sparkleGradient)" opacity="0.6">
9
- <animate attributeName="opacity" values="0.6;1;0.6" dur="2.5s" repeatCount="indefinite"/>
10
- </circle>
11
- <circle cx="90" cy="85" r="1" fill="url(#sparkleGradient)" opacity="0.7">
12
- <animate attributeName="opacity" values="0.7;0.4;0.7" dur="2s" repeatCount="indefinite"/>
13
- </circle>
14
- <circle cx="30" cy="90" r="1.2" fill="url(#sparkleGradient)" opacity="0.5">
15
- <animate attributeName="opacity" values="0.5;0.9;0.5" dur="2.8s" repeatCount="indefinite"/>
16
- </circle>
17
- </g>
18
-
19
- <!-- Queue lines -->
20
- <g id="queue-lines">
21
- <g opacity="0.8">
22
- <rect x="15" y="65" width="20" height="3" rx="1.5" fill="url(#queueGradient1)">
23
- <animate attributeName="x" values="15;20;15" dur="4s" repeatCount="indefinite"/>
24
- </rect>
25
- <rect x="18" y="72" width="15" height="3" rx="1.5" fill="url(#queueGradient2)">
26
- <animate attributeName="x" values="18;23;18" dur="3.5s" repeatCount="indefinite"/>
27
- </rect>
28
- <rect x="12" y="79" width="25" height="3" rx="1.5" fill="url(#queueGradient3)">
29
- <animate attributeName="x" values="12;17;12" dur="4.5s" repeatCount="indefinite"/>
30
- </rect>
31
- </g>
32
- <g opacity="0.8">
33
- <rect x="85" y="65" width="20" height="3" rx="1.5" fill="url(#queueGradient1)">
34
- <animate attributeName="x" values="85;80;85" dur="4s" repeatCount="indefinite"/>
35
- </rect>
36
- <rect x="87" y="72" width="15" height="3" rx="1.5" fill="url(#queueGradient2)">
37
- <animate attributeName="x" values="87;82;87" dur="3.5s" repeatCount="indefinite"/>
38
- </rect>
39
- <rect x="83" y="79" width="25" height="3" rx="1.5" fill="url(#queueGradient3)">
40
- <animate attributeName="x" values="83;78;83" dur="4.5s" repeatCount="indefinite"/>
41
- </rect>
42
- </g>
43
- </g>
44
-
45
- <!-- Main duck -->
46
- <g id="queen-duck" transform="translate(60, 60)">
47
- <ellipse cx="0" cy="35" rx="25" ry="8" fill="#000000" opacity="0.15"/>
48
- <path d="M -20 5 Q -25 15 -22 28 Q -18 38 -5 40 L 5 40 Q 18 38 22 28 Q 25 15 20 5 Q 15 -2 8 -3 L -8 -3 Q -15 -2 -20 5 Z"
49
- fill="url(#bodyGradient)" stroke="url(#bodyStroke)" stroke-width="1.5"/>
50
- <ellipse cx="0" cy="15" rx="12" ry="15" fill="url(#chestHighlight)" opacity="0.6"/>
51
- <path d="M -18 8 Q -23 12 -22 20 Q -20 25 -15 22 Q -12 18 -13 12 Z"
52
- fill="url(#wingGradient)" stroke="url(#wingStroke)" stroke-width="0.8" opacity="0.9"/>
53
- <path d="M 18 8 Q 23 12 22 20 Q 20 25 15 22 Q 12 18 13 12 Z"
54
- fill="url(#wingGradient)" stroke="url(#wingStroke)" stroke-width="0.8" opacity="0.9"/>
55
- <path d="M -5 -3 Q -6 -8 -5 -12 L 5 -12 Q 6 -8 5 -3" fill="url(#neckGradient)" stroke="none"/>
56
- <ellipse cx="0" cy="-18" rx="12" ry="13" fill="url(#headGradient)" stroke="url(#headStroke)" stroke-width="1.2"/>
57
- <ellipse cx="-2" cy="-20" rx="6" ry="7" fill="url(#headHighlight)" opacity="0.5"/>
58
- <path d="M 8 -18 Q 14 -18 15 -17 Q 15 -15 14 -14 Q 13 -13 8 -14 Z"
59
- fill="url(#beakGradient)" stroke="#FCD34D" stroke-width="0.8"/>
60
- <ellipse cx="4" cy="-19" rx="3" ry="3.5" fill="white"/>
61
- <ellipse cx="4.5" cy="-19" rx="2" ry="2.5" fill="url(#eyeGradient)"/>
62
- <circle cx="5" cy="-19.5" r="1" fill="#1F2937"/>
63
- <circle cx="5.5" cy="-20" r="0.4" fill="white"/>
64
- <path d="M 6 -22 L 7 -23.5 M 7 -21.5 L 8.5 -22.5 M 7.5 -21 L 9 -21.5"
65
- stroke="#1F2937" stroke-width="0.4" fill="none" stroke-linecap="round"/>
66
- <ellipse cx="1" cy="-15" rx="2.5" ry="1.5" fill="#FFB6C1" opacity="0.4"/>
67
-
68
- <g id="crown" transform="translate(0, -32)">
69
- <ellipse cx="0" cy="2" rx="12" ry="3" fill="#000000" opacity="0.1"/>
70
- <path d="M -12 0 L -10 -8 L -6 -3 L -3 -10 L 0 -5 L 3 -10 L 6 -3 L 10 -8 L 12 0 Q 10 2 0 2 Q -10 2 -12 0 Z"
71
- fill="url(#crownGradient)" stroke="url(#crownStroke)" stroke-width="1.2" stroke-linejoin="round"/>
72
- <path d="M -10 0 L -8 -6 L -5 -2 L -2 -8 L 0 -4 L 2 -8 L 5 -2 L 8 -6 L 10 0"
73
- fill="none" stroke="#FEF3C7" stroke-width="0.5" opacity="0.6"/>
74
- <circle cx="0" cy="-2" r="2.5" fill="url(#centerJewelGradient)" stroke="#a855f7" stroke-width="0.5"/>
75
- <circle cx="0" cy="-2" r="1.5" fill="url(#jewelSparkle)" opacity="0.8"/>
76
- <circle cx="-6" cy="-1" r="1.8" fill="url(#leftJewelGradient)" stroke="#c084fc" stroke-width="0.4"/>
77
- <circle cx="6" cy="-1" r="1.8" fill="url(#rightJewelGradient)" stroke="#9333ea" stroke-width="0.4"/>
78
- <circle cx="-3" cy="-4" r="1" fill="#d8b4fe" opacity="0.9"/>
79
- <circle cx="3" cy="-4" r="1" fill="#d8b4fe" opacity="0.9"/>
80
- <circle cx="0" cy="-10" r="1.2" fill="#FEF3C7"/>
81
- <circle cx="-6" cy="-8" r="1" fill="#FEF3C7"/>
82
- <circle cx="6" cy="-8" r="1" fill="#FEF3C7"/>
83
- </g>
84
-
85
- <g id="tail" transform="translate(-22, 25)">
86
- <path d="M 0 0 Q -3 3 -2 7 Q -1 9 1 8 Q 2 5 0 0" fill="url(#tailGradient)" opacity="0.8"/>
87
- <path d="M 2 -1 Q -1 2 0 6 Q 1 8 3 7 Q 4 4 2 -1" fill="url(#tailGradient)" opacity="0.7"/>
88
- <path d="M 4 -2 Q 1 1 2 5 Q 3 7 5 6 Q 6 3 4 -2" fill="url(#tailGradient)" opacity="0.6"/>
89
- </g>
90
- </g>
91
-
92
- <defs>
93
- <radialGradient id="sparkleGradient">
94
- <stop offset="0%" style="stop-color:#c084fc;stop-opacity:1" />
95
- <stop offset="100%" style="stop-color:#d8b4fe;stop-opacity:0" />
96
- </radialGradient>
97
-
98
- <linearGradient id="queueGradient1" x1="0%" y1="0%" x2="100%" y2="0%">
99
- <stop offset="0%" style="stop-color:#a855f7;stop-opacity:0.3" />
100
- <stop offset="50%" style="stop-color:#a855f7;stop-opacity:1" />
101
- <stop offset="100%" style="stop-color:#a855f7;stop-opacity:0.3" />
102
- </linearGradient>
103
-
104
- <linearGradient id="queueGradient2" x1="0%" y1="0%" x2="100%" y2="0%">
105
- <stop offset="0%" style="stop-color:#3B82F6;stop-opacity:0.3" />
106
- <stop offset="50%" style="stop-color:#3B82F6;stop-opacity:1" />
107
- <stop offset="100%" style="stop-color:#3B82F6;stop-opacity:0.3" />
108
- </linearGradient>
109
-
110
- <linearGradient id="queueGradient3" x1="0%" y1="0%" x2="100%" y2="0%">
111
- <stop offset="0%" style="stop-color:#F59E0B;stop-opacity:0.3" />
112
- <stop offset="50%" style="stop-color:#F59E0B;stop-opacity:1" />
113
- <stop offset="100%" style="stop-color:#F59E0B;stop-opacity:0.3" />
114
- </linearGradient>
115
-
116
- <radialGradient id="bodyGradient" cx="50%" cy="30%">
117
- <stop offset="0%" style="stop-color:#e9d5ff;stop-opacity:1" />
118
- <stop offset="70%" style="stop-color:#d8b4fe;stop-opacity:1" />
119
- <stop offset="100%" style="stop-color:#a855f7;stop-opacity:1" />
120
- </radialGradient>
121
-
122
- <linearGradient id="bodyStroke" x1="0%" y1="0%" x2="0%" y2="100%">
123
- <stop offset="0%" style="stop-color:#c084fc;stop-opacity:1" />
124
- <stop offset="100%" style="stop-color:#9333ea;stop-opacity:1" />
125
- </linearGradient>
126
-
127
- <radialGradient id="chestHighlight">
128
- <stop offset="0%" style="stop-color:#FFFFFF;stop-opacity:0.8" />
129
- <stop offset="100%" style="stop-color:#faf5ff;stop-opacity:0.2" />
130
- </radialGradient>
131
-
132
- <linearGradient id="wingGradient" x1="0%" y1="0%" x2="100%" y2="100%">
133
- <stop offset="0%" style="stop-color:#d8b4fe;stop-opacity:1" />
134
- <stop offset="100%" style="stop-color:#9333ea;stop-opacity:1" />
135
- </linearGradient>
136
-
137
- <linearGradient id="wingStroke">
138
- <stop offset="0%" style="stop-color:#a855f7;stop-opacity:1" />
139
- <stop offset="100%" style="stop-color:#7e22ce;stop-opacity:1" />
140
- </linearGradient>
141
-
142
- <linearGradient id="neckGradient" x1="0%" y1="100%" x2="0%" y2="0%">
143
- <stop offset="0%" style="stop-color:#d8b4fe;stop-opacity:1" />
144
- <stop offset="100%" style="stop-color:#e9d5ff;stop-opacity:1" />
145
- </linearGradient>
146
-
147
- <radialGradient id="headGradient" cx="40%" cy="40%">
148
- <stop offset="0%" style="stop-color:#f3e8ff;stop-opacity:1" />
149
- <stop offset="60%" style="stop-color:#e9d5ff;stop-opacity:1" />
150
- <stop offset="100%" style="stop-color:#c084fc;stop-opacity:1" />
151
- </radialGradient>
152
-
153
- <linearGradient id="headStroke">
154
- <stop offset="0%" style="stop-color:#c084fc;stop-opacity:1" />
155
- <stop offset="100%" style="stop-color:#a855f7;stop-opacity:1" />
156
- </linearGradient>
157
-
158
- <radialGradient id="headHighlight">
159
- <stop offset="0%" style="stop-color:#FFFFFF;stop-opacity:1" />
160
- <stop offset="100%" style="stop-color:#faf5ff;stop-opacity:0" />
161
- </radialGradient>
162
-
163
- <linearGradient id="beakGradient" x1="0%" y1="0%" x2="100%" y2="0%">
164
- <stop offset="0%" style="stop-color:#FDE68A;stop-opacity:1" />
165
- <stop offset="100%" style="stop-color:#FCD34D;stop-opacity:1" />
166
- </linearGradient>
167
-
168
- <radialGradient id="eyeGradient">
169
- <stop offset="0%" style="stop-color:#92400E;stop-opacity:1" />
170
- <stop offset="100%" style="stop-color:#451A03;stop-opacity:1" />
171
- </radialGradient>
172
-
173
- <linearGradient id="crownGradient" x1="0%" y1="100%" x2="0%" y2="0%">
174
- <stop offset="0%" style="stop-color:#FDE68A;stop-opacity:1" />
175
- <stop offset="50%" style="stop-color:#FCD34D;stop-opacity:1" />
176
- <stop offset="100%" style="stop-color:#FEF3C7;stop-opacity:1" />
177
- </linearGradient>
178
-
179
- <linearGradient id="crownStroke">
180
- <stop offset="0%" style="stop-color:#FCD34D;stop-opacity:1" />
181
- <stop offset="100%" style="stop-color:#FBBF24;stop-opacity:1" />
182
- </linearGradient>
183
-
184
- <radialGradient id="centerJewelGradient">
185
- <stop offset="0%" style="stop-color:#f3e8ff;stop-opacity:1" />
186
- <stop offset="100%" style="stop-color:#a855f7;stop-opacity:1" />
187
- </radialGradient>
188
-
189
- <radialGradient id="leftJewelGradient">
190
- <stop offset="0%" style="stop-color:#e9d5ff;stop-opacity:1" />
191
- <stop offset="100%" style="stop-color:#9333ea;stop-opacity:1" />
192
- </radialGradient>
193
-
194
- <radialGradient id="rightJewelGradient">
195
- <stop offset="0%" style="stop-color:#f3e8ff;stop-opacity:1" />
196
- <stop offset="100%" style="stop-color:#7e22ce;stop-opacity:1" />
197
- </radialGradient>
198
-
199
- <radialGradient id="jewelSparkle">
200
- <stop offset="0%" style="stop-color:#FFFFFF;stop-opacity:1" />
201
- <stop offset="100%" style="stop-color:#FFFFFF;stop-opacity:0" />
202
- </radialGradient>
203
-
204
- <linearGradient id="tailGradient" x1="0%" y1="0%" x2="100%" y2="100%">
205
- <stop offset="0%" style="stop-color:#c084fc;stop-opacity:1" />
206
- <stop offset="100%" style="stop-color:#9333ea;stop-opacity:1" />
207
- </linearGradient>
208
- </defs>
209
- </svg>
210
-