queen-mq 0.1.5 → 0.2.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 (135) hide show
  1. package/README.md +467 -1775
  2. package/package.json +12 -14
  3. package/src/client/client.js +664 -5
  4. package/src/managers/queueManagerOptimized.js +250 -47
  5. package/src/routes/ack.js +3 -3
  6. package/src/server.js +131 -3
  7. package/src/test/advanced-client-tests.js +761 -0
  8. package/src/test/advanced-pattern-tests.js +2 -2
  9. package/src/test/bus-mode-tests.js +6 -6
  10. package/src/test/core-tests.js +1 -1
  11. package/src/test/edge-case-tests.js +2 -2
  12. package/src/test/test-new.js +36 -1
  13. package/src/webapp-dist/assets/Analytics-DJrE4Rz2.css +1 -0
  14. package/src/webapp-dist/assets/Analytics-HEMXKmfJ.js +1 -0
  15. package/src/webapp-dist/assets/ConfirmDialog-YEoCdE7x.js +1 -0
  16. package/src/webapp-dist/assets/ConsumerGroups-CC5VJywp.css +1 -0
  17. package/src/webapp-dist/assets/ConsumerGroups-D8Z20HhZ.js +1 -0
  18. package/src/webapp-dist/assets/Dashboard-BRFOz6it.css +1 -0
  19. package/src/webapp-dist/assets/Dashboard-Bpx9I32h.js +1 -0
  20. package/src/webapp-dist/assets/LoadingSpinner-BPttXcbs.js +1 -0
  21. package/src/webapp-dist/assets/Messages-BOfVHKma.css +1 -0
  22. package/src/webapp-dist/assets/Messages-EKURCbLl.js +1 -0
  23. package/src/webapp-dist/assets/QueueDetail-BXXA7xoZ.css +1 -0
  24. package/src/webapp-dist/assets/QueueDetail-Bmxg0KiA.js +1 -0
  25. package/src/webapp-dist/assets/Queues-CvrJkrZT.css +1 -0
  26. package/src/webapp-dist/assets/Queues-yUx9_3-9.js +1 -0
  27. package/src/webapp-dist/assets/StatusBadge-C1bBtXHh.css +1 -0
  28. package/src/webapp-dist/assets/StatusBadge-C6N84XmO.js +1 -0
  29. package/src/webapp-dist/assets/analytics-BapTekLM.js +1 -0
  30. package/src/webapp-dist/assets/colors-5z6Q_kUr.js +18 -0
  31. package/src/webapp-dist/assets/index-B7w2bKT6.css +1 -0
  32. package/src/webapp-dist/assets/index-CUSnwYTH.js +31 -0
  33. package/src/webapp-dist/assets/messages-CRV6E-xU.js +1 -0
  34. package/src/webapp-dist/assets/queues-BdUbxfBC.js +1 -0
  35. package/src/webapp-dist/assets/resources-Bs9U-ceF.js +1 -0
  36. package/{webapp → src/webapp-dist}/index.html +2 -1
  37. package/API.md +0 -1226
  38. package/AUTH.md +0 -2044
  39. package/CHANGELOG_STATIC_SERVING.md +0 -213
  40. package/DEPLOYMENT.md +0 -425
  41. package/PROGRAMMATIC_SERVER.md +0 -239
  42. package/WEBAPP.md +0 -1889
  43. package/assets/dashboard-01.png +0 -0
  44. package/assets/dashboard.png +0 -0
  45. package/examples/batch-processing.js +0 -58
  46. package/examples/bus-mode.js +0 -239
  47. package/examples/continuous-consumer-optimized.js +0 -215
  48. package/examples/continuous-consumer.js +0 -159
  49. package/examples/continuous-producer.js +0 -343
  50. package/examples/mixed-mode.js +0 -277
  51. package/examples/multi-server-test.js +0 -305
  52. package/examples/programmatic-server.js +0 -58
  53. package/examples/server-with-frontend.js +0 -46
  54. package/examples/single.js +0 -64
  55. package/examples/smartchat-dealyed.js +0 -42
  56. package/examples/smartchat.js +0 -52
  57. package/examples/test-cache-invalidation.js +0 -119
  58. package/examples/test-cache-multi-server.js +0 -245
  59. package/examples/test-complete-client.js +0 -260
  60. package/examples/test-connection-recovery.js +0 -66
  61. package/examples/test-dashboard-api.js +0 -200
  62. package/examples/test-minimal-client.js +0 -112
  63. package/examples/test-queue-creation-policy.js +0 -137
  64. package/examples/test-traceid.js +0 -147
  65. package/server.log +0 -1
  66. package/test-keepalive-v2.sh +0 -22
  67. package/webapp/COLOR_GUIDE.md +0 -118
  68. package/webapp/README.md +0 -143
  69. package/webapp/package-lock.json +0 -3184
  70. package/webapp/package.json +0 -25
  71. package/webapp/postcss.config.js +0 -7
  72. package/webapp/public/assets/queen-logo-blue.svg +0 -210
  73. package/webapp/public/assets/queen-logo-cyan.svg +0 -210
  74. package/webapp/public/assets/queen-logo-indigo.svg +0 -210
  75. package/webapp/public/assets/queen-logo-orange.svg +0 -210
  76. package/webapp/public/assets/queen-logo-pink.svg +0 -210
  77. package/webapp/public/assets/queen-logo-purple.svg +0 -210
  78. package/webapp/public/assets/queen-logo-rose.svg +0 -239
  79. package/webapp/public/assets/queen-logo.svg +0 -263
  80. package/webapp/src/App.vue +0 -19
  81. package/webapp/src/api/analytics.js +0 -10
  82. package/webapp/src/api/client.js +0 -34
  83. package/webapp/src/api/consumers.js +0 -52
  84. package/webapp/src/api/health.js +0 -7
  85. package/webapp/src/api/messages.js +0 -26
  86. package/webapp/src/api/queues.js +0 -14
  87. package/webapp/src/api/resources.js +0 -8
  88. package/webapp/src/assets/styles/main.css +0 -357
  89. package/webapp/src/components/analytics/AnalyticsFilters.vue +0 -87
  90. package/webapp/src/components/analytics/AnalyticsMetrics.vue +0 -57
  91. package/webapp/src/components/analytics/MessageDistributionChart.vue +0 -111
  92. package/webapp/src/components/analytics/MessageFlowChart.vue +0 -173
  93. package/webapp/src/components/analytics/TimeRangeSelector.vue +0 -27
  94. package/webapp/src/components/analytics/TopQueuesChart.vue +0 -132
  95. package/webapp/src/components/common/ConfirmDialog.vue +0 -56
  96. package/webapp/src/components/common/LoadingSpinner.vue +0 -6
  97. package/webapp/src/components/common/MetricCard.vue +0 -43
  98. package/webapp/src/components/common/StatusBadge.vue +0 -45
  99. package/webapp/src/components/dashboard/MessageStatusCard.vue +0 -50
  100. package/webapp/src/components/dashboard/PerformanceCard.vue +0 -38
  101. package/webapp/src/components/dashboard/ThroughputChart.vue +0 -182
  102. package/webapp/src/components/dashboard/TopQueuesTable.vue +0 -53
  103. package/webapp/src/components/layout/AppLayout.vue +0 -110
  104. package/webapp/src/components/layout/AppSidebar.vue +0 -304
  105. package/webapp/src/components/messages/MessageDetailPanel.vue +0 -242
  106. package/webapp/src/components/messages/MessageFilters.vue +0 -101
  107. package/webapp/src/components/queue-detail/PartitionList.vue +0 -79
  108. package/webapp/src/components/queue-detail/PushMessageModal.vue +0 -175
  109. package/webapp/src/components/queue-detail/QueueConfig.vue +0 -63
  110. package/webapp/src/components/queue-detail/QueueDetailHeader.vue +0 -53
  111. package/webapp/src/components/queue-detail/RecentMessages.vue +0 -76
  112. package/webapp/src/components/queues/CreateQueueModal.vue +0 -193
  113. package/webapp/src/components/queues/QueueFilters.vue +0 -90
  114. package/webapp/src/composables/useApi.js +0 -34
  115. package/webapp/src/composables/useTheme.js +0 -36
  116. package/webapp/src/main.js +0 -11
  117. package/webapp/src/router/index.js +0 -42
  118. package/webapp/src/utils/colors.js +0 -96
  119. package/webapp/src/utils/formatters.js +0 -49
  120. package/webapp/src/views/Analytics.vue +0 -377
  121. package/webapp/src/views/ConsumerGroups.vue +0 -433
  122. package/webapp/src/views/Dashboard.vue +0 -418
  123. package/webapp/src/views/Messages.vue +0 -363
  124. package/webapp/src/views/QueueDetail.vue +0 -582
  125. package/webapp/src/views/Queues.vue +0 -496
  126. package/webapp/tailwind.config.js +0 -25
  127. package/webapp/vite.config.js +0 -10
  128. /package/{assets → src/webapp-dist/assets}/queen-logo-blue.svg +0 -0
  129. /package/{assets → src/webapp-dist/assets}/queen-logo-cyan.svg +0 -0
  130. /package/{assets → src/webapp-dist/assets}/queen-logo-indigo.svg +0 -0
  131. /package/{assets → src/webapp-dist/assets}/queen-logo-orange.svg +0 -0
  132. /package/{assets → src/webapp-dist/assets}/queen-logo-pink.svg +0 -0
  133. /package/{assets → src/webapp-dist/assets}/queen-logo-purple.svg +0 -0
  134. /package/{assets → src/webapp-dist/assets}/queen-logo-rose.svg +0 -0
  135. /package/{assets → src/webapp-dist/assets}/queen-logo.svg +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 -->
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="#6366f1" 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="#818cf8" stroke-width="0.4"/>
77
- <circle cx="6" cy="-1" r="1.8" fill="url(#rightJewelGradient)" stroke="#4f46e5" stroke-width="0.4"/>
78
- <circle cx="-3" cy="-4" r="1" fill="#a5b4fc" opacity="0.9"/>
79
- <circle cx="3" cy="-4" r="1" fill="#a5b4fc" 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:#818cf8;stop-opacity:1" />
95
- <stop offset="100%" style="stop-color:#a5b4fc;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:#6366f1;stop-opacity:0.3" />
100
- <stop offset="50%" style="stop-color:#6366f1;stop-opacity:1" />
101
- <stop offset="100%" style="stop-color:#6366f1;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:#c7d2fe;stop-opacity:1" />
118
- <stop offset="70%" style="stop-color:#a5b4fc;stop-opacity:1" />
119
- <stop offset="100%" style="stop-color:#6366f1;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:#818cf8;stop-opacity:1" />
124
- <stop offset="100%" style="stop-color:#4f46e5;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:#eef2ff;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:#a5b4fc;stop-opacity:1" />
134
- <stop offset="100%" style="stop-color:#4f46e5;stop-opacity:1" />
135
- </linearGradient>
136
-
137
- <linearGradient id="wingStroke">
138
- <stop offset="0%" style="stop-color:#6366f1;stop-opacity:1" />
139
- <stop offset="100%" style="stop-color:#4338ca;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:#a5b4fc;stop-opacity:1" />
144
- <stop offset="100%" style="stop-color:#c7d2fe;stop-opacity:1" />
145
- </linearGradient>
146
-
147
- <radialGradient id="headGradient" cx="40%" cy="40%">
148
- <stop offset="0%" style="stop-color:#e0e7ff;stop-opacity:1" />
149
- <stop offset="60%" style="stop-color:#c7d2fe;stop-opacity:1" />
150
- <stop offset="100%" style="stop-color:#818cf8;stop-opacity:1" />
151
- </radialGradient>
152
-
153
- <linearGradient id="headStroke">
154
- <stop offset="0%" style="stop-color:#818cf8;stop-opacity:1" />
155
- <stop offset="100%" style="stop-color:#6366f1;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:#eef2ff;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:#e0e7ff;stop-opacity:1" />
186
- <stop offset="100%" style="stop-color:#6366f1;stop-opacity:1" />
187
- </radialGradient>
188
-
189
- <radialGradient id="leftJewelGradient">
190
- <stop offset="0%" style="stop-color:#c7d2fe;stop-opacity:1" />
191
- <stop offset="100%" style="stop-color:#4f46e5;stop-opacity:1" />
192
- </radialGradient>
193
-
194
- <radialGradient id="rightJewelGradient">
195
- <stop offset="0%" style="stop-color:#e0e7ff;stop-opacity:1" />
196
- <stop offset="100%" style="stop-color:#4338ca;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:#818cf8;stop-opacity:1" />
206
- <stop offset="100%" style="stop-color:#4f46e5;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 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
-