spb/autoscholar
Public
1/* biome-ignore-all lint/a11y/noSvgWithoutTitle: decorative icons are aria-hidden; labels live on the controls */2import type { SVGProps } from "react";34type P = SVGProps<SVGSVGElement> & { size?: number };5const base = (size = 18) => ({6 width: size,7 height: size,8 viewBox: "0 0 24 24",9 fill: "none",10 stroke: "currentColor",11 strokeWidth: 1.6,12 strokeLinecap: "round" as const,13 strokeLinejoin: "round" as const,14 "aria-hidden": true,15});16export const IconSearch = ({ size, ...p }: P) => (17 <svg {...base(size)} {...p}>18 <circle cx="11" cy="11" r="7" />19 <path d="m20 20-3.5-3.5" />20 </svg>21);22export const IconMenu = ({ size, ...p }: P) => (23 <svg {...base(size)} {...p}>24 <path d="M4 7h16M4 12h16M4 17h16" />25 </svg>26);27export const IconClose = ({ size, ...p }: P) => (28 <svg {...base(size)} {...p}>29 <path d="M6 6l12 12M18 6 6 18" />30 </svg>31);32export const IconArrow = ({ size, ...p }: P) => (33 <svg {...base(size)} {...p}>34 <path d="M5 12h14M13 6l6 6-6 6" />35 </svg>36);37export const IconSun = ({ size, ...p }: P) => (38 <svg {...base(size)} {...p}>39 <circle cx="12" cy="12" r="4" />40 <path d="M12 2v2m0 16v2M2 12h2m16 0h2M4.9 4.9l1.4 1.4m11.4 11.4 1.4 1.4M4.9 19.1l1.4-1.4m11.4-11.4 1.4-1.4" />41 </svg>42);43export const IconMoon = ({ size, ...p }: P) => (44 <svg {...base(size)} {...p}>45 <path d="M20 14.5A8 8 0 0 1 9.5 4a8 8 0 1 0 10.5 10.5Z" />46 </svg>47);48export const IconFilter = ({ size, ...p }: P) => (49 <svg {...base(size)} {...p}>50 <path d="M4 6h16M7 12h10M10 18h4" />51 </svg>52);53export const IconDownload = ({ size, ...p }: P) => (54 <svg {...base(size)} {...p}>55 <path d="M12 4v11m0 0 4-4m-4 4-4-4M5 20h14" />56 </svg>57);58export const IconExpand = ({ size, ...p }: P) => (59 <svg {...base(size)} {...p}>60 <path d="M4 9V4h5M20 15v5h-5M4 4l6 6m10 10-6-6" />61 </svg>62);63export const IconChevron = ({ size, ...p }: P) => (64 <svg {...base(size)} {...p}>65 <path d="m9 6 6 6-6 6" />66 </svg>67);68export const IconCheck = ({ size, ...p }: P) => (69 <svg {...base(size)} {...p}>70 <path d="m5 12 4.5 4.5L19 7" />71 </svg>72);73export const IconDoc = ({ size, ...p }: P) => (74 <svg {...base(size)} {...p}>75 <path d="M7 3h7l5 5v13H7z" />76 <path d="M14 3v5h5M9 13h6M9 17h6" />77 </svg>78);79export const IconCode = ({ size, ...p }: P) => (80 <svg {...base(size)} {...p}>81 <path d="m8 8-4 4 4 4m8-8 4 4-4 4m-6 2 4-12" />82 </svg>83);84export const IconData = ({ size, ...p }: P) => (85 <svg {...base(size)} {...p}>86 <ellipse cx="12" cy="6" rx="7" ry="3" />87 <path d="M5 6v6c0 1.7 3.1 3 7 3s7-1.3 7-3V6M5 12v6c0 1.7 3.1 3 7 3s7-1.3 7-3v-6" />88 </svg>89);90export const IconShield = ({ size, ...p }: P) => (91 <svg {...base(size)} {...p}>92 <path d="M12 3 5 6v6c0 4.5 3 7.5 7 9 4-1.5 7-4.5 7-9V6z" />93 <path d="m9 12 2 2 4-4" />94 </svg>95);96export const IconCpu = ({ size, ...p }: P) => (97 <svg {...base(size)} {...p}>98 <rect x="6" y="6" width="12" height="12" rx="2" />99 <rect x="10" y="10" width="4" height="4" />100 <path d="M9 2v4m6-4v4M9 18v4m6-4v4M2 9h4m-4 6h4m12-6h4m-4 6h4" />101 </svg>102);103export const IconClock = ({ size, ...p }: P) => (104 <svg {...base(size)} {...p}>105 <circle cx="12" cy="12" r="9" />106 <path d="M12 7v5l3 2" />107 </svg>108);109