1export function HeartIcon({ filled = false, size = 18 }) {
2 return filled ? (
3 <svg
4 width={size}
5 height={size}
6 viewBox="0 0 24 24"
7 fill="currentColor"
8 stroke="none"
9 >
10 <path d="M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z" />
11 </svg>
12 ) : (
13 <svg
14 width={size}
15 height={size}
16 viewBox="0 0 24 24"
17 fill="none"
18 stroke="currentColor"
19 strokeWidth="2"
20 strokeLinecap="round"
21 strokeLinejoin="round"
22 >
23 <path d="M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z" />
24 </svg>
25 );
26}
27
28export function MessageIcon({ size = 18 }) {
29 return (
30 <svg
31 width={size}
32 height={size}
33 viewBox="0 0 24 24"
34 fill="none"
35 stroke="currentColor"
36 strokeWidth="2"
37 strokeLinecap="round"
38 strokeLinejoin="round"
39 >
40 <path d="m3 21 1.9-5.7a8.5 8.5 0 1 1 3.8 3.8z" />
41 </svg>
42 );
43}
44
45export function ShareIcon({ size = 18 }) {
46 return (
47 <svg
48 width={size}
49 height={size}
50 viewBox="0 0 24 24"
51 fill="none"
52 stroke="currentColor"
53 strokeWidth="2"
54 strokeLinecap="round"
55 strokeLinejoin="round"
56 >
57 <path d="M4 12v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8" />
58 <polyline points="16 6 12 2 8 6" />
59 <line x1="12" x2="12" y1="2" y2="15" />
60 </svg>
61 );
62}
63
64export function TrashIcon({ size = 18 }) {
65 return (
66 <svg
67 width={size}
68 height={size}
69 viewBox="0 0 24 24"
70 fill="none"
71 stroke="currentColor"
72 strokeWidth="2"
73 strokeLinecap="round"
74 strokeLinejoin="round"
75 >
76 <path d="M3 6h18" />
77 <path d="M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6" />
78 <path d="M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2" />
79 </svg>
80 );
81}
82
83export function LinkIcon({ size = 18 }) {
84 return (
85 <svg
86 width={size}
87 height={size}
88 viewBox="0 0 24 24"
89 fill="none"
90 stroke="currentColor"
91 strokeWidth="2"
92 strokeLinecap="round"
93 strokeLinejoin="round"
94 >
95 <path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71" />
96 <path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71" />
97 </svg>
98 );
99}
100
101export function ExternalLinkIcon({ size = 14 }) {
102 return (
103 <svg
104 width={size}
105 height={size}
106 viewBox="0 0 24 24"
107 fill="none"
108 stroke="currentColor"
109 strokeWidth="2"
110 strokeLinecap="round"
111 strokeLinejoin="round"
112 >
113 <path d="M15 3h6v6" />
114 <path d="M10 14 21 3" />
115 <path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6" />
116 </svg>
117 );
118}
119
120export function PenIcon({ size = 18 }) {
121 return (
122 <svg
123 width={size}
124 height={size}
125 viewBox="0 0 24 24"
126 fill="none"
127 stroke="currentColor"
128 strokeWidth="2"
129 strokeLinecap="round"
130 strokeLinejoin="round"
131 >
132 <path d="M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5Z" />
133 </svg>
134 );
135}
136
137export function HighlightIcon({ size = 18 }) {
138 return (
139 <svg
140 width={size}
141 height={size}
142 viewBox="0 0 24 24"
143 fill="none"
144 stroke="currentColor"
145 strokeWidth="2"
146 strokeLinecap="round"
147 strokeLinejoin="round"
148 >
149 <path d="m9 11-6 6v3h9l3-3" />
150 <path d="m22 12-4.6 4.6a2 2 0 0 1-2.8 0l-5.2-5.2a2 2 0 0 1 0-2.8L14 4" />
151 </svg>
152 );
153}
154
155export function BookmarkIcon({ size = 18 }) {
156 return (
157 <svg
158 width={size}
159 height={size}
160 viewBox="0 0 24 24"
161 fill="none"
162 stroke="currentColor"
163 strokeWidth="2"
164 strokeLinecap="round"
165 strokeLinejoin="round"
166 >
167 <path d="m19 21-7-4-7 4V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v16z" />
168 </svg>
169 );
170}
171
172export function TagIcon({ size = 18 }) {
173 return (
174 <svg
175 width={size}
176 height={size}
177 viewBox="0 0 24 24"
178 fill="none"
179 stroke="currentColor"
180 strokeWidth="2"
181 strokeLinecap="round"
182 strokeLinejoin="round"
183 >
184 <path d="M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z" />
185 <circle cx="7.5" cy="7.5" r=".5" fill="currentColor" />
186 </svg>
187 );
188}
189
190export function AlertIcon({ size = 18 }) {
191 return (
192 <svg
193 width={size}
194 height={size}
195 viewBox="0 0 24 24"
196 fill="none"
197 stroke="currentColor"
198 strokeWidth="2"
199 strokeLinecap="round"
200 strokeLinejoin="round"
201 >
202 <circle cx="12" cy="12" r="10" />
203 <line x1="12" x2="12" y1="8" y2="12" />
204 <line x1="12" x2="12.01" y1="16" y2="16" />
205 </svg>
206 );
207}
208
209export function FileTextIcon({ size = 18 }) {
210 return (
211 <svg
212 width={size}
213 height={size}
214 viewBox="0 0 24 24"
215 fill="none"
216 stroke="currentColor"
217 strokeWidth="2"
218 strokeLinecap="round"
219 strokeLinejoin="round"
220 >
221 <path d="M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z" />
222 <path d="M14 2v4a2 2 0 0 0 2 2h4" />
223 <path d="M10 9H8" />
224 <path d="M16 13H8" />
225 <path d="M16 17H8" />
226 </svg>
227 );
228}
229
230export function SearchIcon({ size = 18 }) {
231 return (
232 <svg
233 width={size}
234 height={size}
235 viewBox="0 0 24 24"
236 fill="none"
237 stroke="currentColor"
238 strokeWidth="2"
239 strokeLinecap="round"
240 strokeLinejoin="round"
241 >
242 <circle cx="11" cy="11" r="8" />
243 <path d="m21 21-4.3-4.3" />
244 </svg>
245 );
246}
247
248export function InboxIcon({ size = 18 }) {
249 return (
250 <svg
251 width={size}
252 height={size}
253 viewBox="0 0 24 24"
254 fill="none"
255 stroke="currentColor"
256 strokeWidth="2"
257 strokeLinecap="round"
258 strokeLinejoin="round"
259 >
260 <polyline points="22 12 16 12 14 15 10 15 8 12 2 12" />
261 <path d="M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z" />
262 </svg>
263 );
264}
265
266export function BlueskyIcon({ size = 18, color = "currentColor" }) {
267 return (
268 <svg
269 xmlns="http://www.w3.org/2000/svg"
270 viewBox="0 0 512 512"
271 width={size}
272 height={size}
273 >
274 <path
275 fill={color}
276 d="M111.8 62.2C170.2 105.9 233 194.7 256 242.4c23-47.6 85.8-136.4 144.2-180.2c42.1-31.6 110.3-56 110.3 21.8c0 15.5-8.9 130.5-14.1 149.2C478.2 298 412 314.6 353.1 304.5c102.9 17.5 129.1 75.5 72.5 133.5c-107.4 110.2-154.3-27.6-166.3-62.9l0 0c-1.7-4.9-2.6-7.8-3.3-7.8s-1.6 3-3.3 7.8l0 0c-12 35.3-59 173.1-166.3 62.9c-56.5-58-30.4-116 72.5-133.5C100 314.6 33.8 298 15.7 233.1C10.4 214.4 1.5 99.4 1.5 83.9c0-77.8 68.2-53.4 110.3-21.8z"
277 />
278 </svg>
279 );
280}
281
282export function LogoutIcon({ size = 18 }) {
283 return (
284 <svg
285 width={size}
286 height={size}
287 viewBox="0 0 24 24"
288 fill="none"
289 stroke="currentColor"
290 strokeWidth="2"
291 strokeLinecap="round"
292 strokeLinejoin="round"
293 >
294 <path d="M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4" />
295 <polyline points="16 17 21 12 16 7" />
296 <line x1="21" x2="9" y1="12" y2="12" />
297 </svg>
298 );
299}
300
301export function BellIcon({ size = 18 }) {
302 return (
303 <svg
304 width={size}
305 height={size}
306 viewBox="0 0 24 24"
307 fill="none"
308 stroke="currentColor"
309 strokeWidth="2"
310 strokeLinecap="round"
311 strokeLinejoin="round"
312 >
313 <path d="M6 8a6 6 0 0 1 12 0c0 7 3 9 3 9H3s3-2 3-9" />
314 <path d="M10.3 21a1.94 1.94 0 0 0 3.4 0" />
315 </svg>
316 );
317}
318
319export function ReplyIcon({ size = 18 }) {
320 return (
321 <svg
322 width={size}
323 height={size}
324 viewBox="0 0 24 24"
325 fill="none"
326 stroke="currentColor"
327 strokeWidth="2"
328 strokeLinecap="round"
329 strokeLinejoin="round"
330 >
331 <polyline points="9 17 4 12 9 7" />
332 <path d="M20 18v-2a4 4 0 0 0-4-4H4" />
333 </svg>
334 );
335}
336
337export function AturiIcon({ size = 18 }) {
338 return (
339 <svg
340 width={size}
341 height={size}
342 viewBox="0 0 24 24"
343 fill="none"
344 stroke="currentColor"
345 strokeWidth="2"
346 strokeLinecap="round"
347 strokeLinejoin="round"
348 >
349 <path d="M11 20A7 7 0 0 1 9.8 6.1C15.5 5 17 4.48 19 2c1 2 2 4.18 2 8 0 5.5-4.78 10-10 10Z" />
350 <path d="M2 21c0-3 1.85-5.36 5.08-6C9.5 14.52 12 13 13 12" />
351 </svg>
352 );
353}