diff options
Diffstat (limited to 'client/simple/theme_icons.ts')
| -rw-r--r-- | client/simple/theme_icons.ts | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/client/simple/theme_icons.ts b/client/simple/theme_icons.ts new file mode 100644 index 000000000..5bb06a020 --- /dev/null +++ b/client/simple/theme_icons.ts @@ -0,0 +1,82 @@ +/** + * Generate icons.html for the jinja templates of the simple theme. + */ + +import { dirname, resolve } from "node:path"; +import { argv } from "node:process"; +import type { Config as SvgoConfig } from "svgo"; +import { type IconSet, type JinjaMacro, jinja_svg_sets } from "./tools/jinja_svg_catalog.ts"; + +const HERE = `${dirname(argv[1] || "")}/`; +const dest = resolve(HERE, "../../searx/templates/simple/icons.html"); + +const searxng_jinja_macros: JinjaMacro[] = [ + { name: "icon", class: "sxng-icon-set" }, + { name: "icon_small", class: "sxng-icon-set-small" }, + { name: "icon_big", class: "sxng-icon-set-big" } +]; + +const sxng_icon_opts: SvgoConfig = { + multipass: true, + plugins: [ + "removeTitle", + "removeXMLNS", + { + name: "addAttributesToSVGElement", + params: { + attributes: [{ "aria-hidden": "true" }] + } + } + ] +}; + +const simple_icons: IconSet[] = [ + { + base: resolve(HERE, "node_modules/ionicons/dist/svg"), + set: { + alert: "alert-outline.svg", + appstore: "apps-outline.svg", + book: "book-outline.svg", + close: "close-outline.svg", + download: "download-outline.svg", + "ellipsis-vertical": "ellipsis-vertical-outline.svg", + "file-tray-full": "file-tray-full-outline.svg", + film: "film-outline.svg", + globe: "globe-outline.svg", + heart: "heart-outline.svg", + image: "image-outline.svg", + layers: "layers-outline.svg", + leecher: "arrow-down.svg", + location: "location-outline.svg", + magnet: "magnet-outline.svg", + "musical-notes": "musical-notes-outline.svg", + "navigate-down": "chevron-down-outline.svg", + "navigate-left": "chevron-back-outline.svg", + "navigate-right": "chevron-forward-outline.svg", + "navigate-up": "chevron-up-outline.svg", + people: "people-outline.svg", + play: "play-outline.svg", + radio: "radio-outline.svg", + save: "save-outline.svg", + school: "school-outline.svg", + search: "search-outline.svg", + seeder: "swap-vertical.svg", + settings: "settings-outline.svg", + tv: "tv-outline.svg" + }, + svgo_opts: sxng_icon_opts + }, + // some of the ionicons are not suitable for a dark theme, we fixed the svg + // manually in src/svg/ionicons + // - https://github.com/searxng/searxng/pull/4284#issuecomment-2680550342 + { + base: resolve(HERE, "src/svg/ionicons"), + set: { + "information-circle": "information-circle-outline.svg", + newspaper: "newspaper-outline.svg" + }, + svgo_opts: sxng_icon_opts + } +]; + +jinja_svg_sets(dest, searxng_jinja_macros, simple_icons); |