SPB Git

spb/autoscholar

Public
3.2 KB · 109 lines tsx
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
Files · main
Menu

Theme