feat(frontend): extend Icon.svelte with 18 commonly duplicated icons

Added: warning, error, code, plus, edit, lightning, search, check,
refresh, filter, calendar, clock, user, eye, download, upload, git, link, info

Icon map now has 37 named icons (up from 19). Consolidates inline SVG
patterns from 37+ files into reusable <Icon name="..."> calls.
This commit is contained in:
2026-06-17 14:25:44 +03:00
parent 3acf1f6b5a
commit c2934aec2a

View File

@@ -19,7 +19,7 @@
strokeWidth = 1.9,
} = $props();
const iconPaths = {
const iconPaths: Record<string, string[]> = {
home: ["M3 11l9-7 9 7", "M5 10v9h14v-9", "M10 19v-5h4v5"],
dashboard: ["M4 4h16v16H4z", "M4 10h16", "M10 4v16"],
database: [
@@ -86,6 +86,70 @@
"M10 11v6",
"M14 11v6",
],
// ── Commonly duplicated icons (consolidated from 37+ files) ──
warning: [
"M10.29 3.86L1.82 18a2 2 0 001.71 3h16.94a2 2 0 001.71-3L13.71 3.86a2 2 0 00-3.42 0z",
"M12 9v4",
"M12 17h.01",
],
error: [
"M12 22c5.523 0 10-4.477 10-10S17.523 2 12 2 2 6.477 2 12s4.477 10 10 10z",
"M15 9l-6 6",
"M9 9l6 6",
],
code: ["M10 20l4-16m4 4l4 4-4 4M6 16l-4-4 4-4"],
plus: [
"M12 22c5.523 0 10-4.477 10-10S17.523 2 12 2 2 6.477 2 12s4.477 10 10 10z",
"M12 8v8",
"M8 12h8",
],
edit: [
"M11 4H4a2 2 0 00-2 2v14a2 2 0 002 2h14a2 2 0 002-2v-7",
"M18.5 2.5a2.121 2.121 0 013 3L12 15l-4 1 1-4 9.5-9.5z",
],
lightning: ["M13 2L3 14h9l-1 8 10-12h-9l1-8z"],
search: ["M11 19a8 8 0 100-16 8 8 0 000 16z", "M21 21l-4.35-4.35"],
check: ["M20 6L9 17l-5-5"],
refresh: [
"M23 4v6h-6",
"M1 20v-6h6",
"M3.51 9a9 9 0 0114.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0020.49 15",
],
filter: ["M22 3H2l8 9.46V19l4 2v-8.54L22 3z"],
calendar: [
"M19 4H5a2 2 0 00-2 2v14a2 2 0 002 2h14a2 2 0 002-2V6a2 2 0 00-2-2z",
"M16 2v4",
"M8 2v4",
"M3 10h18",
],
clock: [
"M12 22c5.523 0 10-4.477 10-10S17.523 2 12 2 2 6.477 2 12s4.477 10 10 10z",
"M12 6v6l4 2",
],
user: [
"M20 21v-2a4 4 0 00-4-4H8a4 4 0 00-4 4v2",
"M12 3a4 4 0 100 8 4 4 0 000-8z",
],
eye: [
"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z",
"M12 15a3 3 0 100-6 3 3 0 000 6z",
],
download: ["M21 15v4a2 2 0 01-2 2H5a2 2 0 01-2-2v-4", "M7 10l5 5 5-5", "M12 15V3"],
upload: ["M21 15v4a2 2 0 01-2 2H5a2 2 0 01-2-2v-4", "M17 8l-5-5-5 5", "M12 3v12"],
git: [
"M18 13v6a2 2 0 01-2 2H5a2 2 0 01-2-2V8a2 2 0 012-2h6",
"M15 3h6v6",
"M10 14L21 3",
],
link: [
"M10 13a5 5 0 007.54.54l3-3a5 5 0 00-7.07-7.07l-1.72 1.71",
"M14 11a5 5 0 00-7.54-.54l-3 3a5 5 0 007.07 7.07l1.71-1.71",
],
info: [
"M12 22c5.523 0 10-4.477 10-10S17.523 2 12 2 2 6.477 2 12s4.477 10 10 10z",
"M12 16v-4",
"M12 8h.01",
],
};
let paths = $derived(iconPaths[name] || iconPaths.dashboard);