Files
WebDrop/web/src/ui/Icon.tsx
T

66 lines
2.6 KiB
TypeScript

const PATHS = {
folder: 'M3 7V5h6l2 2h10v13H3z',
lock: 'M8 11V8a4 4 0 018 0v3 M6 11h12v9H6z',
share: 'M12 4v11 M8 8l4-4 4 4 M5 14v6h14v-6',
copy: 'M9 9h10v11H9z M5 15V4h10',
download: 'M12 4v11 M8 11l4 4 4-4 M5 20h14',
eye: 'M2 12s4-7 10-7 10 7 10 7-4 7-10 7S2 12 2 12z M12 9a3 3 0 100 6 3 3 0 000-6z',
file: 'M7 3h7l5 5v13H7z M14 3v5h5',
image: 'M4 5h16v14H4z M4 16l5-5 4 4 3-3 4 4 M9 9.5h.01',
video: 'M4 6h12v12H4z M16 10l5-3v10l-5-3',
archive: 'M5 4h14v4H5z M6 8v12h12V8 M10 12h4',
text: 'M5 6h14 M5 10h14 M5 14h14 M5 18h9',
send: 'M4 12l16-8-6 16-3-7z',
clip: 'M20 11l-8 8a5 5 0 01-7-7l8-8a3.5 3.5 0 015 5l-8 8a2 2 0 01-3-3l7-7',
close: 'M6 6l12 12 M18 6L6 18',
plus: 'M12 5v14 M5 12h14',
check: 'M5 12l5 5 9-10',
edit: 'M4 20h4L19 9l-4-4L4 16z',
trash: 'M5 7h14 M9 7V4h6v3 M7 7l1 13h8l1-13',
desktop: 'M3 5h18v11H3z M9 20h6 M12 16v4',
phone: 'M8 3h8v18H8z M11 18h2',
tablet: 'M5 4h14v16H5z M11 17h2',
more: 'M5 12h.01 M12 12h.01 M19 12h.01',
undo: 'M9 14L4 9l5-5 M4 9h10a6 6 0 010 12h-3',
warn: 'M12 4l9 16H3z M12 10v4 M12 17h.01',
sun: 'M12 8a4 4 0 100 8 4 4 0 000-8z M12 2v2 M12 20v2 M2 12h2 M20 12h2 M5 5l1.5 1.5 M17.5 17.5L19 19 M5 19l1.5-1.5 M17.5 6.5L19 5',
moon: 'M20 14A8 8 0 0110 4a8 8 0 1010 10z',
auto: 'M12 4a8 8 0 100 16 8 8 0 000-16z M12 4v16',
search: 'M11 4a7 7 0 100 14 7 7 0 000-14z M16 16l5 5',
scan: 'M4 8V5a1 1 0 011-1h3 M16 4h3a1 1 0 011 1v3 M20 16v3a1 1 0 01-1 1h-3 M8 20H5a1 1 0 01-1-1v-3 M8 12h8',
camera: 'M4 8h3l2-3h6l2 3h3v11H4z M12 11a3.5 3.5 0 100 7 3.5 3.5 0 000-7z',
paste: 'M9 4h6v3H9z M7 5H5v16h14V5h-2',
history: 'M4 12a8 8 0 108-8 M4 4v5h5 M12 8v4l3 2',
chevronRight: 'M9 6l6 6-6 6',
chevronDown: 'M6 9l6 6 6-6',
chevronLeft: 'M15 6l-6 6 6 6',
panelRight: 'M4 5h16v14H4z M15 5v14',
bell: 'M6 16V11a6 6 0 0112 0v5l2 2H4z M10 20h4',
settings: 'M12 8a4 4 0 100 8 4 4 0 000-8z M19.4 15a1.7 1.7 0 00.34 1.87l.06.06-1.7 2.94-.08-.02a1.7 1.7 0 00-1.72.58l-.05.07h-3.4l-.04-.08a1.7 1.7 0 00-1.7-.6l-.09.03-1.7-2.94.06-.07A1.7 1.7 0 009.7 15l-.08-.05v-3.4l.08-.04a1.7 1.7 0 00.6-1.7l-.03-.09 2.94-1.7.07.06a1.7 1.7 0 001.87.34l.06-.04h3.4l.04.08a1.7 1.7 0 001.7.6l.09-.03 1.7 2.94-.06.07A1.7 1.7 0 0021.8 14l.08.05v3.4z',
} as const;
export type IconName = keyof typeof PATHS;
interface Props {
name: IconName;
size?: number;
}
export function Icon({ name, size = 20 }: Props) {
return (
<svg
width={size}
height={size}
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
strokeWidth="1.5"
strokeLinecap="round"
strokeLinejoin="round"
aria-hidden="true"
>
<path d={PATHS[name]} />
</svg>
);
}