main
tsx 82 lines 3.9 KB
Raw
1 export function IconFeed({ size = 18 }: { size?: number }) {
2 return (
3 <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth={1.5} strokeLinecap="round" strokeLinejoin="round">
4 <rect x="3" y="3" width="7" height="7" /><rect x="14" y="3" width="7" height="7" />
5 <rect x="3" y="14" width="7" height="7" /><rect x="14" y="14" width="7" height="7" />
6 </svg>
7 );
8 }
9 export function IconStudio({ size = 18 }: { size?: number }) {
10 return (
11 <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth={1.5} strokeLinecap="round" strokeLinejoin="round">
12 <path d="M12 2L2 7l10 5 10-5-10-5z" /><path d="M2 17l10 5 10-5" /><path d="M2 12l10 5 10-5" />
13 </svg>
14 );
15 }
16 export function IconMe({ size = 18 }: { size?: number }) {
17 return (
18 <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth={1.5} strokeLinecap="round" strokeLinejoin="round">
19 <circle cx="12" cy="8" r="4" /><path d="M4 20c0-4 3.6-7 8-7s8 3 8 7" />
20 </svg>
21 );
22 }
23 export function IconHeart({ filled }: { filled: boolean }) {
24 return (
25 <svg width="24" height="24" viewBox="0 0 24 24" fill={filled ? "#fff" : "none"}>
26 <path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l8.78-8.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"
27 stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round" />
28 </svg>
29 );
30 }
31 export function IconComment() {
32 return (
33 <svg width="24" height="24" viewBox="0 0 24 24" fill="none">
34 <path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"
35 stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round" />
36 </svg>
37 );
38 }
39 export function IconBookmark({ filled }: { filled: boolean }) {
40 return (
41 <svg width="24" height="24" viewBox="0 0 24 24" fill={filled ? "#fff" : "none"}>
42 <path d="M19 21l-7-5-7 5V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z"
43 stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round" />
44 </svg>
45 );
46 }
47 export function IconShare() {
48 return (
49 <svg width="24" height="24" viewBox="0 0 24 24" fill="none">
50 <line x1="22" y1="2" x2="11" y2="13" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" />
51 <polygon points="22 2 15 22 11 13 2 9 22 2" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round" />
52 </svg>
53 );
54 }
55 export function IconStar() {
56 return (
57 <svg width="12" height="12" viewBox="0 0 24 24" className="fill-yellow-400">
58 <path d="M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z" />
59 </svg>
60 );
61 }
62 export function IconPin() {
63 return (
64 <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" className="text-nord-white/30 shrink-0">
65 <path d="M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z" /><circle cx="12" cy="10" r="3" />
66 </svg>
67 );
68 }
69 export function IconPhone() {
70 return (
71 <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" className="text-nord-white/30 shrink-0">
72 <path d="M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72c.127.96.361 1.903.7 2.81a2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45c.907.339 1.85.573 2.81.7A2 2 0 0 1 22 16.92z" />
73 </svg>
74 );
75 }
76 export function IconClock() {
77 return (
78 <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" className="text-nord-white/30 shrink-0">
79 <circle cx="12" cy="12" r="10" /><polyline points="12 6 12 12 16 14" />
80 </svg>
81 );
82 }