diff --git a/apps/logicsrc-web/public/openicon/set/nerd-fonts-LICENSE.txt b/apps/logicsrc-web/public/openicon/set/nerd-fonts-LICENSE.txt
new file mode 100644
index 0000000..06eb073
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/nerd-fonts-LICENSE.txt
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2014 Ryan L McIntyre
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/apps/logicsrc-web/public/openicon/set/nerd-openicon.woff2 b/apps/logicsrc-web/public/openicon/set/nerd-openicon.woff2
new file mode 100644
index 0000000..3856590
Binary files /dev/null and b/apps/logicsrc-web/public/openicon/set/nerd-openicon.woff2 differ
diff --git a/apps/logicsrc-web/public/openicon/set/openicon.json b/apps/logicsrc-web/public/openicon/set/openicon.json
new file mode 100644
index 0000000..4ceb82b
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/openicon.json
@@ -0,0 +1,6900 @@
+{
+ "openicon": "0.1",
+ "name": "OpenIcon",
+ "version": "2026-09-24",
+ "license": "MIT",
+ "homepage": "https://logicsrc.com/openicon",
+ "made_by": "ai",
+ "disclosure": "ai-generated",
+ "ai_model": "claude-opus-5-5",
+ "ai_provider": "Anthropic",
+ "grid": {
+ "size": 24,
+ "stroke": 2,
+ "padding": 2
+ },
+ "sizes": [
+ 16,
+ 20,
+ 24,
+ 32,
+ 48,
+ 64,
+ 128,
+ 256
+ ],
+ "formats": [
+ "svg",
+ "png",
+ "sprite"
+ ],
+ "sprite": "sprite.svg",
+ "sources": {
+ "nerd-fonts": "Nerd Fonts 3.4.0 glyph names (MIT)",
+ "simple-icons": "Simple Icons 16.32.0 (CC0-1.0)",
+ "font-awesome": "Font Awesome Free 7.3.1 brands (CC-BY-4.0)"
+ },
+ "categories": {
+ "action": "Actions",
+ "navigation": "Navigation",
+ "communication": "Communication",
+ "media": "Media",
+ "file": "Files and storage",
+ "status": "Status",
+ "time": "Time",
+ "commerce": "Commerce",
+ "dev": "Developer",
+ "device": "Devices",
+ "editor": "Editor",
+ "misc": "Everything else",
+ "brand": "Brands"
+ },
+ "icons": [
+ {
+ "key": "add",
+ "name": "Add",
+ "category": "action",
+ "aliases": [
+ "plus"
+ ],
+ "keywords": [
+ "new",
+ "create"
+ ],
+ "svg": "svg/add.svg",
+ "png": "png/{size}/add.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0415",
+ "nerd_name": "md-plus",
+ "unicode": "+",
+ "ascii": "+"
+ }
+ },
+ {
+ "key": "minus",
+ "name": "Minus",
+ "category": "action",
+ "keywords": [
+ "subtract",
+ "remove"
+ ],
+ "svg": "svg/minus.svg",
+ "png": "png/{size}/minus.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0374",
+ "nerd_name": "md-minus",
+ "unicode": "−",
+ "ascii": "-"
+ }
+ },
+ {
+ "key": "close",
+ "name": "Close",
+ "category": "action",
+ "aliases": [
+ "x-mark",
+ "times"
+ ],
+ "keywords": [
+ "x",
+ "dismiss",
+ "cancel"
+ ],
+ "svg": "svg/close.svg",
+ "png": "png/{size}/close.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0156",
+ "nerd_name": "md-close",
+ "unicode": "✕",
+ "ascii": "x"
+ }
+ },
+ {
+ "key": "check",
+ "name": "Check",
+ "category": "action",
+ "keywords": [
+ "done",
+ "ok",
+ "tick",
+ "confirm"
+ ],
+ "svg": "svg/check.svg",
+ "png": "png/{size}/check.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f012c",
+ "nerd_name": "md-check",
+ "unicode": "✓",
+ "ascii": "v"
+ }
+ },
+ {
+ "key": "check-circle",
+ "name": "Check circle",
+ "category": "action",
+ "keywords": [
+ "success",
+ "complete"
+ ],
+ "svg": "svg/check-circle.svg",
+ "png": "png/{size}/check-circle.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f05e1",
+ "nerd_name": "md-check_circle_outline",
+ "unicode": "✅",
+ "ascii": "(v)"
+ }
+ },
+ {
+ "key": "x-circle",
+ "name": "X circle",
+ "category": "action",
+ "keywords": [
+ "error-close"
+ ],
+ "svg": "svg/x-circle.svg",
+ "png": "png/{size}/x-circle.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f015a",
+ "nerd_name": "md-close_circle_outline",
+ "unicode": "❎",
+ "ascii": "(x)"
+ }
+ },
+ {
+ "key": "plus-circle",
+ "name": "Plus circle",
+ "category": "action",
+ "svg": "svg/plus-circle.svg",
+ "png": "png/{size}/plus-circle.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0419",
+ "nerd_name": "md-plus_circle_outline",
+ "unicode": "⊕",
+ "ascii": "(+)"
+ }
+ },
+ {
+ "key": "minus-circle",
+ "name": "Minus circle",
+ "category": "action",
+ "svg": "svg/minus-circle.svg",
+ "png": "png/{size}/minus-circle.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0377",
+ "nerd_name": "md-minus_circle_outline",
+ "unicode": "⊖",
+ "ascii": "(-)"
+ }
+ },
+ {
+ "key": "edit",
+ "name": "Edit",
+ "category": "action",
+ "aliases": [
+ "pencil"
+ ],
+ "keywords": [
+ "write",
+ "modify"
+ ],
+ "svg": "svg/edit.svg",
+ "png": "png/{size}/edit.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f03eb",
+ "nerd_name": "md-pencil",
+ "unicode": "✎",
+ "ascii": "/e"
+ }
+ },
+ {
+ "key": "delete",
+ "name": "Delete",
+ "category": "action",
+ "aliases": [
+ "trash",
+ "bin"
+ ],
+ "keywords": [
+ "remove"
+ ],
+ "svg": "svg/delete.svg",
+ "png": "png/{size}/delete.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0a7a",
+ "nerd_name": "md-trash_can_outline",
+ "unicode": "🗑",
+ "ascii": "del"
+ }
+ },
+ {
+ "key": "search",
+ "name": "Search",
+ "category": "action",
+ "aliases": [
+ "magnify",
+ "find"
+ ],
+ "keywords": [
+ "lookup"
+ ],
+ "svg": "svg/search.svg",
+ "png": "png/{size}/search.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0349",
+ "nerd_name": "md-magnify",
+ "unicode": "🔍",
+ "ascii": "?"
+ }
+ },
+ {
+ "key": "zoom-in",
+ "name": "Zoom in",
+ "category": "action",
+ "svg": "svg/zoom-in.svg",
+ "png": "png/{size}/zoom-in.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f06ed",
+ "nerd_name": "md-magnify_plus_outline",
+ "unicode": "🔎",
+ "ascii": "+?"
+ }
+ },
+ {
+ "key": "zoom-out",
+ "name": "Zoom out",
+ "category": "action",
+ "svg": "svg/zoom-out.svg",
+ "png": "png/{size}/zoom-out.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f06ec",
+ "nerd_name": "md-magnify_minus_outline",
+ "unicode": "🔎",
+ "ascii": "-?"
+ }
+ },
+ {
+ "key": "settings",
+ "name": "Settings",
+ "category": "action",
+ "aliases": [
+ "gear",
+ "cog",
+ "preferences"
+ ],
+ "keywords": [
+ "options"
+ ],
+ "svg": "svg/settings.svg",
+ "png": "png/{size}/settings.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0493",
+ "nerd_name": "md-cog",
+ "unicode": "⚙",
+ "ascii": "*"
+ }
+ },
+ {
+ "key": "sliders",
+ "name": "Sliders",
+ "category": "action",
+ "keywords": [
+ "adjust",
+ "controls",
+ "tune"
+ ],
+ "svg": "svg/sliders.svg",
+ "png": "png/{size}/sliders.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f1542",
+ "nerd_name": "md-tune_variant",
+ "unicode": "🎚",
+ "ascii": "=|="
+ }
+ },
+ {
+ "key": "filter",
+ "name": "Filter",
+ "category": "action",
+ "keywords": [
+ "funnel"
+ ],
+ "svg": "svg/filter.svg",
+ "png": "png/{size}/filter.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0233",
+ "nerd_name": "md-filter_outline",
+ "unicode": "⏷",
+ "ascii": "Y"
+ }
+ },
+ {
+ "key": "sort",
+ "name": "Sort",
+ "category": "action",
+ "keywords": [
+ "order"
+ ],
+ "svg": "svg/sort.svg",
+ "png": "png/{size}/sort.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f04ba",
+ "nerd_name": "md-sort",
+ "unicode": "⇅",
+ "ascii": "^v"
+ }
+ },
+ {
+ "key": "sort-asc",
+ "name": "Sort asc",
+ "category": "action",
+ "svg": "svg/sort-asc.svg",
+ "png": "png/{size}/sort-asc.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f04bc",
+ "nerd_name": "md-sort_ascending",
+ "unicode": "↑",
+ "ascii": "a-z"
+ }
+ },
+ {
+ "key": "sort-desc",
+ "name": "Sort desc",
+ "category": "action",
+ "svg": "svg/sort-desc.svg",
+ "png": "png/{size}/sort-desc.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f04bd",
+ "nerd_name": "md-sort_descending",
+ "unicode": "↓",
+ "ascii": "z-a"
+ }
+ },
+ {
+ "key": "menu",
+ "name": "Menu",
+ "category": "action",
+ "aliases": [
+ "hamburger"
+ ],
+ "keywords": [
+ "bars",
+ "navigation"
+ ],
+ "svg": "svg/menu.svg",
+ "png": "png/{size}/menu.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f035c",
+ "nerd_name": "md-menu",
+ "unicode": "☰",
+ "ascii": "="
+ }
+ },
+ {
+ "key": "more-horizontal",
+ "name": "More horizontal",
+ "category": "action",
+ "aliases": [
+ "ellipsis"
+ ],
+ "keywords": [
+ "overflow"
+ ],
+ "svg": "svg/more-horizontal.svg",
+ "png": "png/{size}/more-horizontal.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f01d8",
+ "nerd_name": "md-dots_horizontal",
+ "unicode": "⋯",
+ "ascii": "..."
+ }
+ },
+ {
+ "key": "more-vertical",
+ "name": "More vertical",
+ "category": "action",
+ "aliases": [
+ "kebab"
+ ],
+ "keywords": [
+ "overflow"
+ ],
+ "svg": "svg/more-vertical.svg",
+ "png": "png/{size}/more-vertical.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f01d9",
+ "nerd_name": "md-dots_vertical",
+ "unicode": "⋮",
+ "ascii": ":"
+ }
+ },
+ {
+ "key": "copy",
+ "name": "Copy",
+ "category": "action",
+ "aliases": [
+ "duplicate"
+ ],
+ "keywords": [
+ "clone"
+ ],
+ "svg": "svg/copy.svg",
+ "png": "png/{size}/copy.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f018f",
+ "nerd_name": "md-content_copy",
+ "unicode": "⧉",
+ "ascii": "cp"
+ }
+ },
+ {
+ "key": "clipboard",
+ "name": "Clipboard",
+ "category": "action",
+ "keywords": [
+ "paste"
+ ],
+ "svg": "svg/clipboard.svg",
+ "png": "png/{size}/clipboard.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f014c",
+ "nerd_name": "md-clipboard_outline",
+ "unicode": "📋",
+ "ascii": "[=]"
+ }
+ },
+ {
+ "key": "clipboard-check",
+ "name": "Clipboard check",
+ "category": "action",
+ "keywords": [
+ "copied"
+ ],
+ "svg": "svg/clipboard-check.svg",
+ "png": "png/{size}/clipboard-check.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f08a8",
+ "nerd_name": "md-clipboard_check_outline",
+ "unicode": "📋",
+ "ascii": "[v]"
+ }
+ },
+ {
+ "key": "cut",
+ "name": "Cut",
+ "category": "action",
+ "aliases": [
+ "scissors"
+ ],
+ "svg": "svg/cut.svg",
+ "png": "png/{size}/cut.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0190",
+ "nerd_name": "md-content_cut",
+ "unicode": "✂",
+ "ascii": "8<"
+ }
+ },
+ {
+ "key": "share",
+ "name": "Share",
+ "category": "action",
+ "svg": "svg/share.svg",
+ "png": "png/{size}/share.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f1514",
+ "nerd_name": "md-share_variant_outline",
+ "unicode": "⤴",
+ "ascii": "<"
+ }
+ },
+ {
+ "key": "share-out",
+ "name": "Share out",
+ "category": "action",
+ "keywords": [
+ "export"
+ ],
+ "svg": "svg/share-out.svg",
+ "png": "png/{size}/share-out.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0b93",
+ "nerd_name": "md-export_variant",
+ "unicode": "⇪",
+ "ascii": "^"
+ }
+ },
+ {
+ "key": "download",
+ "name": "Download",
+ "category": "action",
+ "keywords": [
+ "save-file"
+ ],
+ "svg": "svg/download.svg",
+ "png": "png/{size}/download.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f01da",
+ "nerd_name": "md-download",
+ "unicode": "⤓",
+ "ascii": "v_"
+ }
+ },
+ {
+ "key": "upload",
+ "name": "Upload",
+ "category": "action",
+ "svg": "svg/upload.svg",
+ "png": "png/{size}/upload.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0552",
+ "nerd_name": "md-upload",
+ "unicode": "⤒",
+ "ascii": "^_"
+ }
+ },
+ {
+ "key": "refresh",
+ "name": "Refresh",
+ "category": "action",
+ "aliases": [
+ "reload",
+ "sync"
+ ],
+ "svg": "svg/refresh.svg",
+ "png": "png/{size}/refresh.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0450",
+ "nerd_name": "md-refresh",
+ "unicode": "⟳",
+ "ascii": "@"
+ }
+ },
+ {
+ "key": "undo",
+ "name": "Undo",
+ "category": "action",
+ "svg": "svg/undo.svg",
+ "png": "png/{size}/undo.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f054c",
+ "nerd_name": "md-undo",
+ "unicode": "↶",
+ "ascii": "<-"
+ }
+ },
+ {
+ "key": "redo",
+ "name": "Redo",
+ "category": "action",
+ "svg": "svg/redo.svg",
+ "png": "png/{size}/redo.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f044e",
+ "nerd_name": "md-redo",
+ "unicode": "↷",
+ "ascii": "->"
+ }
+ },
+ {
+ "key": "save",
+ "name": "Save",
+ "category": "action",
+ "aliases": [
+ "floppy"
+ ],
+ "keywords": [
+ "disk"
+ ],
+ "svg": "svg/save.svg",
+ "png": "png/{size}/save.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0818",
+ "nerd_name": "md-content_save_outline",
+ "unicode": "💾",
+ "ascii": "[s]"
+ }
+ },
+ {
+ "key": "print",
+ "name": "Print",
+ "category": "action",
+ "aliases": [
+ "printer"
+ ],
+ "svg": "svg/print.svg",
+ "png": "png/{size}/print.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f1786",
+ "nerd_name": "md-printer_outline",
+ "unicode": "🖨",
+ "ascii": "prn"
+ }
+ },
+ {
+ "key": "external-link",
+ "name": "External link",
+ "category": "action",
+ "aliases": [
+ "open-in-new"
+ ],
+ "keywords": [
+ "open-new",
+ "launch"
+ ],
+ "svg": "svg/external-link.svg",
+ "png": "png/{size}/external-link.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f03cc",
+ "nerd_name": "md-open_in_new",
+ "unicode": "↗",
+ "ascii": "->]"
+ }
+ },
+ {
+ "key": "maximize",
+ "name": "Maximize",
+ "category": "action",
+ "aliases": [
+ "fullscreen"
+ ],
+ "keywords": [
+ "expand"
+ ],
+ "svg": "svg/maximize.svg",
+ "png": "png/{size}/maximize.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0293",
+ "nerd_name": "md-fullscreen",
+ "unicode": "⛶",
+ "ascii": "[ ]"
+ }
+ },
+ {
+ "key": "minimize",
+ "name": "Minimize",
+ "category": "action",
+ "aliases": [
+ "exit-fullscreen"
+ ],
+ "keywords": [
+ "collapse"
+ ],
+ "svg": "svg/minimize.svg",
+ "png": "png/{size}/minimize.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0294",
+ "nerd_name": "md-fullscreen_exit",
+ "unicode": "⊡",
+ "ascii": "]["
+ }
+ },
+ {
+ "key": "lock",
+ "name": "Lock",
+ "category": "action",
+ "keywords": [
+ "secure",
+ "private",
+ "password"
+ ],
+ "svg": "svg/lock.svg",
+ "png": "png/{size}/lock.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0341",
+ "nerd_name": "md-lock_outline",
+ "unicode": "🔒",
+ "ascii": "[#]"
+ }
+ },
+ {
+ "key": "unlock",
+ "name": "Unlock",
+ "category": "action",
+ "keywords": [
+ "open-lock"
+ ],
+ "svg": "svg/unlock.svg",
+ "png": "png/{size}/unlock.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0fc7",
+ "nerd_name": "md-lock_open_variant_outline",
+ "unicode": "🔓",
+ "ascii": "[ ]"
+ }
+ },
+ {
+ "key": "key",
+ "name": "Key",
+ "category": "action",
+ "keywords": [
+ "password",
+ "credential"
+ ],
+ "svg": "svg/key.svg",
+ "png": "png/{size}/key.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0dd6",
+ "nerd_name": "md-key_outline",
+ "unicode": "🔑",
+ "ascii": "o-"
+ }
+ },
+ {
+ "key": "eye",
+ "name": "Eye",
+ "category": "action",
+ "aliases": [
+ "show",
+ "view"
+ ],
+ "keywords": [
+ "visible"
+ ],
+ "svg": "svg/eye.svg",
+ "png": "png/{size}/eye.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f06d0",
+ "nerd_name": "md-eye_outline",
+ "unicode": "👁",
+ "ascii": "o"
+ }
+ },
+ {
+ "key": "eye-off",
+ "name": "Eye off",
+ "category": "action",
+ "aliases": [
+ "hide"
+ ],
+ "keywords": [
+ "hidden",
+ "invisible"
+ ],
+ "svg": "svg/eye-off.svg",
+ "png": "png/{size}/eye-off.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f06d1",
+ "nerd_name": "md-eye_off_outline",
+ "unicode": "🙈",
+ "ascii": "-o-"
+ }
+ },
+ {
+ "key": "pin",
+ "name": "Pin",
+ "category": "action",
+ "aliases": [
+ "thumbtack"
+ ],
+ "svg": "svg/pin.svg",
+ "png": "png/{size}/pin.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0931",
+ "nerd_name": "md-pin_outline",
+ "unicode": "📌",
+ "ascii": "-|"
+ }
+ },
+ {
+ "key": "bookmark",
+ "name": "Bookmark",
+ "category": "action",
+ "keywords": [
+ "save-for-later"
+ ],
+ "svg": "svg/bookmark.svg",
+ "png": "png/{size}/bookmark.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f00c3",
+ "nerd_name": "md-bookmark_outline",
+ "unicode": "🔖",
+ "ascii": "[]>"
+ }
+ },
+ {
+ "key": "star",
+ "name": "Star",
+ "category": "action",
+ "aliases": [
+ "favorite"
+ ],
+ "keywords": [
+ "rating"
+ ],
+ "svg": "svg/star.svg",
+ "png": "png/{size}/star.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f04d2",
+ "nerd_name": "md-star_outline",
+ "unicode": "★",
+ "ascii": "*"
+ }
+ },
+ {
+ "key": "heart",
+ "name": "Heart",
+ "category": "action",
+ "aliases": [
+ "love"
+ ],
+ "keywords": [
+ "like",
+ "favorite"
+ ],
+ "svg": "svg/heart.svg",
+ "png": "png/{size}/heart.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f02d5",
+ "nerd_name": "md-heart_outline",
+ "unicode": "♥",
+ "ascii": "<3"
+ }
+ },
+ {
+ "key": "thumbs-up",
+ "name": "Thumbs up",
+ "category": "action",
+ "aliases": [
+ "like"
+ ],
+ "keywords": [
+ "approve"
+ ],
+ "svg": "svg/thumbs-up.svg",
+ "png": "png/{size}/thumbs-up.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0514",
+ "nerd_name": "md-thumb_up_outline",
+ "unicode": "👍",
+ "ascii": "+1"
+ }
+ },
+ {
+ "key": "thumbs-down",
+ "name": "Thumbs down",
+ "category": "action",
+ "aliases": [
+ "dislike"
+ ],
+ "svg": "svg/thumbs-down.svg",
+ "png": "png/{size}/thumbs-down.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0512",
+ "nerd_name": "md-thumb_down_outline",
+ "unicode": "👎",
+ "ascii": "-1"
+ }
+ },
+ {
+ "key": "flag",
+ "name": "Flag",
+ "category": "action",
+ "keywords": [
+ "report"
+ ],
+ "svg": "svg/flag.svg",
+ "png": "png/{size}/flag.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f023d",
+ "nerd_name": "md-flag_outline",
+ "unicode": "⚑",
+ "ascii": "|>"
+ }
+ },
+ {
+ "key": "tag",
+ "name": "Tag",
+ "category": "action",
+ "aliases": [
+ "label"
+ ],
+ "svg": "svg/tag.svg",
+ "png": "png/{size}/tag.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f04fc",
+ "nerd_name": "md-tag_outline",
+ "unicode": "🏷",
+ "ascii": "#"
+ }
+ },
+ {
+ "key": "archive",
+ "name": "Archive",
+ "category": "action",
+ "svg": "svg/archive.svg",
+ "png": "png/{size}/archive.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f120e",
+ "nerd_name": "md-archive_outline",
+ "unicode": "🗄",
+ "ascii": "[_]"
+ }
+ },
+ {
+ "key": "inbox",
+ "name": "Inbox",
+ "category": "action",
+ "svg": "svg/inbox.svg",
+ "png": "png/{size}/inbox.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0687",
+ "nerd_name": "md-inbox",
+ "unicode": "📥",
+ "ascii": "[v]"
+ }
+ },
+ {
+ "key": "send",
+ "name": "Send",
+ "category": "action",
+ "aliases": [
+ "paper-plane"
+ ],
+ "keywords": [
+ "submit"
+ ],
+ "svg": "svg/send.svg",
+ "png": "png/{size}/send.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f1165",
+ "nerd_name": "md-send_outline",
+ "unicode": "➤",
+ "ascii": ">>"
+ }
+ },
+ {
+ "key": "reply",
+ "name": "Reply",
+ "category": "action",
+ "keywords": [
+ "respond"
+ ],
+ "svg": "svg/reply.svg",
+ "png": "png/{size}/reply.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f045a",
+ "nerd_name": "md-reply",
+ "unicode": "↩",
+ "ascii": "<-"
+ }
+ },
+ {
+ "key": "forward",
+ "name": "Forward",
+ "category": "action",
+ "svg": "svg/forward.svg",
+ "png": "png/{size}/forward.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0496",
+ "nerd_name": "md-share",
+ "unicode": "↪",
+ "ascii": "->"
+ }
+ },
+ {
+ "key": "log-in",
+ "name": "Log in",
+ "category": "action",
+ "aliases": [
+ "sign-in",
+ "login"
+ ],
+ "keywords": [
+ "enter"
+ ],
+ "svg": "svg/log-in.svg",
+ "png": "png/{size}/log-in.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0342",
+ "nerd_name": "md-login",
+ "unicode": "⇥",
+ "ascii": "->|"
+ }
+ },
+ {
+ "key": "log-out",
+ "name": "Log out",
+ "category": "action",
+ "aliases": [
+ "sign-out",
+ "logout"
+ ],
+ "keywords": [
+ "exit"
+ ],
+ "svg": "svg/log-out.svg",
+ "png": "png/{size}/log-out.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0343",
+ "nerd_name": "md-logout",
+ "unicode": "⇤",
+ "ascii": "|->"
+ }
+ },
+ {
+ "key": "power",
+ "name": "Power",
+ "category": "action",
+ "keywords": [
+ "shutdown",
+ "on-off"
+ ],
+ "svg": "svg/power.svg",
+ "png": "png/{size}/power.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0425",
+ "nerd_name": "md-power",
+ "unicode": "⏻",
+ "ascii": "(|)"
+ }
+ },
+ {
+ "key": "grid",
+ "name": "Grid",
+ "category": "action",
+ "keywords": [
+ "apps",
+ "tiles"
+ ],
+ "svg": "svg/grid.svg",
+ "png": "png/{size}/grid.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f11d9",
+ "nerd_name": "md-view_grid_outline",
+ "unicode": "▦",
+ "ascii": "::"
+ }
+ },
+ {
+ "key": "list",
+ "name": "List",
+ "category": "action",
+ "keywords": [
+ "rows"
+ ],
+ "svg": "svg/list.svg",
+ "png": "png/{size}/list.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0279",
+ "nerd_name": "md-format_list_bulleted",
+ "unicode": "☷",
+ "ascii": "-="
+ }
+ },
+ {
+ "key": "grip",
+ "name": "Grip",
+ "category": "action",
+ "keywords": [
+ "drag",
+ "handle"
+ ],
+ "svg": "svg/grip.svg",
+ "png": "png/{size}/grip.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f01db",
+ "nerd_name": "md-drag",
+ "unicode": "⠿",
+ "ascii": "::"
+ }
+ },
+ {
+ "key": "link",
+ "name": "Link",
+ "category": "action",
+ "keywords": [
+ "url",
+ "hyperlink",
+ "chain"
+ ],
+ "svg": "svg/link.svg",
+ "png": "png/{size}/link.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0339",
+ "nerd_name": "md-link_variant",
+ "unicode": "🔗",
+ "ascii": "~"
+ }
+ },
+ {
+ "key": "unlink",
+ "name": "Unlink",
+ "category": "action",
+ "keywords": [
+ "broken-link"
+ ],
+ "svg": "svg/unlink.svg",
+ "png": "png/{size}/unlink.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f033a",
+ "nerd_name": "md-link_variant_off",
+ "unicode": "⛓",
+ "ascii": "~/"
+ }
+ },
+ {
+ "key": "home",
+ "name": "Home",
+ "category": "navigation",
+ "aliases": [
+ "house"
+ ],
+ "keywords": [
+ "start"
+ ],
+ "svg": "svg/home.svg",
+ "png": "png/{size}/home.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f06a1",
+ "nerd_name": "md-home_outline",
+ "unicode": "🏠",
+ "ascii": "~"
+ }
+ },
+ {
+ "key": "arrow-up",
+ "name": "Arrow up",
+ "category": "navigation",
+ "svg": "svg/arrow-up.svg",
+ "png": "png/{size}/arrow-up.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f005d",
+ "nerd_name": "md-arrow_up",
+ "unicode": "↑",
+ "ascii": "^"
+ }
+ },
+ {
+ "key": "arrow-down",
+ "name": "Arrow down",
+ "category": "navigation",
+ "svg": "svg/arrow-down.svg",
+ "png": "png/{size}/arrow-down.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0045",
+ "nerd_name": "md-arrow_down",
+ "unicode": "↓",
+ "ascii": "v"
+ }
+ },
+ {
+ "key": "arrow-left",
+ "name": "Arrow left",
+ "category": "navigation",
+ "keywords": [
+ "back"
+ ],
+ "svg": "svg/arrow-left.svg",
+ "png": "png/{size}/arrow-left.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f004d",
+ "nerd_name": "md-arrow_left",
+ "unicode": "←",
+ "ascii": "<-"
+ }
+ },
+ {
+ "key": "arrow-right",
+ "name": "Arrow right",
+ "category": "navigation",
+ "keywords": [
+ "next"
+ ],
+ "svg": "svg/arrow-right.svg",
+ "png": "png/{size}/arrow-right.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0054",
+ "nerd_name": "md-arrow_right",
+ "unicode": "→",
+ "ascii": "->"
+ }
+ },
+ {
+ "key": "arrow-up-right",
+ "name": "Arrow up right",
+ "category": "navigation",
+ "svg": "svg/arrow-up-right.svg",
+ "png": "png/{size}/arrow-up-right.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f005c",
+ "nerd_name": "md-arrow_top_right",
+ "unicode": "↗",
+ "ascii": "/^"
+ }
+ },
+ {
+ "key": "chevron-up",
+ "name": "Chevron up",
+ "category": "navigation",
+ "svg": "svg/chevron-up.svg",
+ "png": "png/{size}/chevron-up.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0143",
+ "nerd_name": "md-chevron_up",
+ "unicode": "⌃",
+ "ascii": "^"
+ }
+ },
+ {
+ "key": "chevron-down",
+ "name": "Chevron down",
+ "category": "navigation",
+ "keywords": [
+ "expand"
+ ],
+ "svg": "svg/chevron-down.svg",
+ "png": "png/{size}/chevron-down.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0140",
+ "nerd_name": "md-chevron_down",
+ "unicode": "⌄",
+ "ascii": "v"
+ }
+ },
+ {
+ "key": "chevron-left",
+ "name": "Chevron left",
+ "category": "navigation",
+ "svg": "svg/chevron-left.svg",
+ "png": "png/{size}/chevron-left.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0141",
+ "nerd_name": "md-chevron_left",
+ "unicode": "‹",
+ "ascii": "<"
+ }
+ },
+ {
+ "key": "chevron-right",
+ "name": "Chevron right",
+ "category": "navigation",
+ "svg": "svg/chevron-right.svg",
+ "png": "png/{size}/chevron-right.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0142",
+ "nerd_name": "md-chevron_right",
+ "unicode": "›",
+ "ascii": ">"
+ }
+ },
+ {
+ "key": "chevrons-left",
+ "name": "Chevrons left",
+ "category": "navigation",
+ "keywords": [
+ "first"
+ ],
+ "svg": "svg/chevrons-left.svg",
+ "png": "png/{size}/chevrons-left.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f013d",
+ "nerd_name": "md-chevron_double_left",
+ "unicode": "«",
+ "ascii": "<<"
+ }
+ },
+ {
+ "key": "chevrons-right",
+ "name": "Chevrons right",
+ "category": "navigation",
+ "keywords": [
+ "last"
+ ],
+ "svg": "svg/chevrons-right.svg",
+ "png": "png/{size}/chevrons-right.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f013e",
+ "nerd_name": "md-chevron_double_right",
+ "unicode": "»",
+ "ascii": ">>"
+ }
+ },
+ {
+ "key": "enter",
+ "name": "Enter",
+ "category": "navigation",
+ "keywords": [
+ "return",
+ "corner-down-left"
+ ],
+ "svg": "svg/enter.svg",
+ "png": "png/{size}/enter.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0311",
+ "nerd_name": "md-keyboard_return",
+ "unicode": "↵",
+ "ascii": "<-|"
+ }
+ },
+ {
+ "key": "sidebar",
+ "name": "Sidebar",
+ "category": "navigation",
+ "keywords": [
+ "panel",
+ "drawer"
+ ],
+ "svg": "svg/sidebar.svg",
+ "png": "png/{size}/sidebar.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f10aa",
+ "nerd_name": "md-dock_left",
+ "unicode": "▥",
+ "ascii": "|="
+ }
+ },
+ {
+ "key": "compass",
+ "name": "Compass",
+ "category": "navigation",
+ "keywords": [
+ "explore"
+ ],
+ "svg": "svg/compass.svg",
+ "png": "png/{size}/compass.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f018c",
+ "nerd_name": "md-compass_outline",
+ "unicode": "🧭",
+ "ascii": "(N)"
+ }
+ },
+ {
+ "key": "map",
+ "name": "Map",
+ "category": "navigation",
+ "svg": "svg/map.svg",
+ "png": "png/{size}/map.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0982",
+ "nerd_name": "md-map_outline",
+ "unicode": "🗺",
+ "ascii": "[#]"
+ }
+ },
+ {
+ "key": "map-pin",
+ "name": "Map pin",
+ "category": "navigation",
+ "aliases": [
+ "location",
+ "marker"
+ ],
+ "keywords": [
+ "place",
+ "address"
+ ],
+ "svg": "svg/map-pin.svg",
+ "png": "png/{size}/map-pin.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f07d9",
+ "nerd_name": "md-map_marker_outline",
+ "unicode": "📍",
+ "ascii": "@"
+ }
+ },
+ {
+ "key": "navigation",
+ "name": "Navigation",
+ "category": "navigation",
+ "keywords": [
+ "gps",
+ "direction"
+ ],
+ "svg": "svg/navigation.svg",
+ "png": "png/{size}/navigation.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f18f1",
+ "nerd_name": "md-navigation_variant_outline",
+ "unicode": "➶",
+ "ascii": ">"
+ }
+ },
+ {
+ "key": "globe",
+ "name": "Globe",
+ "category": "navigation",
+ "aliases": [
+ "world",
+ "web"
+ ],
+ "keywords": [
+ "website",
+ "internet"
+ ],
+ "svg": "svg/globe.svg",
+ "png": "png/{size}/globe.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f059f",
+ "nerd_name": "md-web",
+ "unicode": "🌐",
+ "ascii": "(#)"
+ }
+ },
+ {
+ "key": "layers",
+ "name": "Layers",
+ "category": "navigation",
+ "keywords": [
+ "stack"
+ ],
+ "svg": "svg/layers.svg",
+ "png": "png/{size}/layers.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f09fe",
+ "nerd_name": "md-layers_outline",
+ "unicode": "☰",
+ "ascii": "="
+ }
+ },
+ {
+ "key": "mail",
+ "name": "Mail",
+ "category": "communication",
+ "aliases": [
+ "email",
+ "envelope"
+ ],
+ "keywords": [
+ "message",
+ "inbox"
+ ],
+ "svg": "svg/mail.svg",
+ "png": "png/{size}/mail.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f01f0",
+ "nerd_name": "md-email_outline",
+ "unicode": "✉",
+ "ascii": "@"
+ }
+ },
+ {
+ "key": "mail-open",
+ "name": "Mail open",
+ "category": "communication",
+ "keywords": [
+ "email-read"
+ ],
+ "svg": "svg/mail-open.svg",
+ "png": "png/{size}/mail-open.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f05ef",
+ "nerd_name": "md-email_open_outline",
+ "unicode": "📨",
+ "ascii": "@"
+ }
+ },
+ {
+ "key": "phone",
+ "name": "Phone",
+ "category": "communication",
+ "aliases": [
+ "telephone",
+ "call"
+ ],
+ "svg": "svg/phone.svg",
+ "png": "png/{size}/phone.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0df0",
+ "nerd_name": "md-phone_outline",
+ "unicode": "☎",
+ "ascii": "tel"
+ }
+ },
+ {
+ "key": "phone-call",
+ "name": "Phone call",
+ "category": "communication",
+ "keywords": [
+ "calling",
+ "ringing"
+ ],
+ "svg": "svg/phone-call.svg",
+ "png": "png/{size}/phone-call.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f1182",
+ "nerd_name": "md-phone_in_talk_outline",
+ "unicode": "📞",
+ "ascii": "tel"
+ }
+ },
+ {
+ "key": "phone-off",
+ "name": "Phone off",
+ "category": "communication",
+ "keywords": [
+ "hang-up"
+ ],
+ "svg": "svg/phone-off.svg",
+ "png": "png/{size}/phone-off.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f11a6",
+ "nerd_name": "md-phone_off_outline",
+ "unicode": "📵",
+ "ascii": "x-t"
+ }
+ },
+ {
+ "key": "sms",
+ "name": "Sms",
+ "category": "communication",
+ "keywords": [
+ "text-message",
+ "message-square"
+ ],
+ "svg": "svg/sms.svg",
+ "png": "png/{size}/sms.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f1170",
+ "nerd_name": "md-message_processing_outline",
+ "unicode": "💬",
+ "ascii": "sms"
+ }
+ },
+ {
+ "key": "chat",
+ "name": "Chat",
+ "category": "communication",
+ "aliases": [
+ "message",
+ "comment"
+ ],
+ "keywords": [
+ "talk",
+ "conversation"
+ ],
+ "svg": "svg/chat.svg",
+ "png": "png/{size}/chat.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0ede",
+ "nerd_name": "md-chat_outline",
+ "unicode": "💬",
+ "ascii": "()"
+ }
+ },
+ {
+ "key": "chat-dots",
+ "name": "Chat dots",
+ "category": "communication",
+ "keywords": [
+ "typing"
+ ],
+ "svg": "svg/chat-dots.svg",
+ "png": "png/{size}/chat-dots.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f12ca",
+ "nerd_name": "md-chat_processing_outline",
+ "unicode": "💬",
+ "ascii": "(..)"
+ }
+ },
+ {
+ "key": "at",
+ "name": "At",
+ "category": "communication",
+ "aliases": [
+ "at-sign",
+ "mention"
+ ],
+ "keywords": [
+ "handle",
+ "email-address"
+ ],
+ "svg": "svg/at.svg",
+ "png": "png/{size}/at.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0065",
+ "nerd_name": "md-at",
+ "unicode": "@",
+ "ascii": "@"
+ }
+ },
+ {
+ "key": "voicemail",
+ "name": "Voicemail",
+ "category": "communication",
+ "svg": "svg/voicemail.svg",
+ "png": "png/{size}/voicemail.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f057d",
+ "nerd_name": "md-voicemail",
+ "unicode": "⌨",
+ "ascii": "oo"
+ }
+ },
+ {
+ "key": "video",
+ "name": "Video",
+ "category": "communication",
+ "keywords": [
+ "camera-video",
+ "video-call"
+ ],
+ "svg": "svg/video.svg",
+ "png": "png/{size}/video.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0bdc",
+ "nerd_name": "md-video_outline",
+ "unicode": "📹",
+ "ascii": "[>"
+ }
+ },
+ {
+ "key": "mic",
+ "name": "Mic",
+ "category": "communication",
+ "aliases": [
+ "microphone"
+ ],
+ "keywords": [
+ "record",
+ "voice"
+ ],
+ "svg": "svg/mic.svg",
+ "png": "png/{size}/mic.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f036e",
+ "nerd_name": "md-microphone_outline",
+ "unicode": "🎤",
+ "ascii": "mic"
+ }
+ },
+ {
+ "key": "mic-off",
+ "name": "Mic off",
+ "category": "communication",
+ "keywords": [
+ "mute-mic"
+ ],
+ "svg": "svg/mic-off.svg",
+ "png": "png/{size}/mic-off.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f036d",
+ "nerd_name": "md-microphone_off",
+ "unicode": "🔇",
+ "ascii": "x-m"
+ }
+ },
+ {
+ "key": "bell",
+ "name": "Bell",
+ "category": "communication",
+ "aliases": [
+ "notification"
+ ],
+ "keywords": [
+ "alert",
+ "alarm"
+ ],
+ "svg": "svg/bell.svg",
+ "png": "png/{size}/bell.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f009c",
+ "nerd_name": "md-bell_outline",
+ "unicode": "🔔",
+ "ascii": "(!)"
+ }
+ },
+ {
+ "key": "bell-off",
+ "name": "Bell off",
+ "category": "communication",
+ "keywords": [
+ "mute",
+ "silent"
+ ],
+ "svg": "svg/bell-off.svg",
+ "png": "png/{size}/bell-off.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0a91",
+ "nerd_name": "md-bell_off_outline",
+ "unicode": "🔕",
+ "ascii": "(x)"
+ }
+ },
+ {
+ "key": "megaphone",
+ "name": "Megaphone",
+ "category": "communication",
+ "aliases": [
+ "bullhorn",
+ "announce"
+ ],
+ "keywords": [
+ "broadcast"
+ ],
+ "svg": "svg/megaphone.svg",
+ "png": "png/{size}/megaphone.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0b23",
+ "nerd_name": "md-bullhorn_outline",
+ "unicode": "📣",
+ "ascii": "<|"
+ }
+ },
+ {
+ "key": "rss",
+ "name": "Rss",
+ "category": "communication",
+ "keywords": [
+ "feed",
+ "subscribe"
+ ],
+ "svg": "svg/rss.svg",
+ "png": "png/{size}/rss.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f046b",
+ "nerd_name": "md-rss",
+ "unicode": "📡",
+ "ascii": "rss"
+ }
+ },
+ {
+ "key": "contact",
+ "name": "Contact",
+ "category": "communication",
+ "aliases": [
+ "address-book"
+ ],
+ "keywords": [
+ "contacts"
+ ],
+ "svg": "svg/contact.svg",
+ "png": "png/{size}/contact.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0dab",
+ "nerd_name": "md-card_account_details_outline",
+ "unicode": "📇",
+ "ascii": "[@]"
+ }
+ },
+ {
+ "key": "user",
+ "name": "User",
+ "category": "communication",
+ "aliases": [
+ "person",
+ "account",
+ "profile"
+ ],
+ "svg": "svg/user.svg",
+ "png": "png/{size}/user.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0013",
+ "nerd_name": "md-account_outline",
+ "unicode": "👤",
+ "ascii": "@"
+ }
+ },
+ {
+ "key": "users",
+ "name": "Users",
+ "category": "communication",
+ "aliases": [
+ "people",
+ "team"
+ ],
+ "keywords": [
+ "group",
+ "members"
+ ],
+ "svg": "svg/users.svg",
+ "png": "png/{size}/users.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f000f",
+ "nerd_name": "md-account_multiple_outline",
+ "unicode": "👥",
+ "ascii": "@@"
+ }
+ },
+ {
+ "key": "user-plus",
+ "name": "User plus",
+ "category": "communication",
+ "aliases": [
+ "add-user",
+ "invite"
+ ],
+ "keywords": [
+ "sign-up"
+ ],
+ "svg": "svg/user-plus.svg",
+ "png": "png/{size}/user-plus.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0801",
+ "nerd_name": "md-account_plus_outline",
+ "unicode": "👤",
+ "ascii": "@+"
+ }
+ },
+ {
+ "key": "user-minus",
+ "name": "User minus",
+ "category": "communication",
+ "keywords": [
+ "remove-user"
+ ],
+ "svg": "svg/user-minus.svg",
+ "png": "png/{size}/user-minus.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0aec",
+ "nerd_name": "md-account_minus_outline",
+ "unicode": "👤",
+ "ascii": "@-"
+ }
+ },
+ {
+ "key": "user-check",
+ "name": "User check",
+ "category": "communication",
+ "keywords": [
+ "verified-user"
+ ],
+ "svg": "svg/user-check.svg",
+ "png": "png/{size}/user-check.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0be2",
+ "nerd_name": "md-account_check_outline",
+ "unicode": "👤",
+ "ascii": "@v"
+ }
+ },
+ {
+ "key": "user-circle",
+ "name": "User circle",
+ "category": "communication",
+ "keywords": [
+ "avatar"
+ ],
+ "svg": "svg/user-circle.svg",
+ "png": "png/{size}/user-circle.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0b55",
+ "nerd_name": "md-account_circle_outline",
+ "unicode": "👤",
+ "ascii": "(@)"
+ }
+ },
+ {
+ "key": "id-card",
+ "name": "Id card",
+ "category": "communication",
+ "aliases": [
+ "identity"
+ ],
+ "keywords": [
+ "badge",
+ "license"
+ ],
+ "svg": "svg/id-card.svg",
+ "png": "png/{size}/id-card.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0dab",
+ "nerd_name": "md-card_account_details_outline",
+ "unicode": "🪪",
+ "ascii": "[id]"
+ }
+ },
+ {
+ "key": "play",
+ "name": "Play",
+ "category": "media",
+ "keywords": [
+ "start",
+ "run"
+ ],
+ "svg": "svg/play.svg",
+ "png": "png/{size}/play.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f040a",
+ "nerd_name": "md-play",
+ "unicode": "▶",
+ "ascii": ">"
+ }
+ },
+ {
+ "key": "pause",
+ "name": "Pause",
+ "category": "media",
+ "svg": "svg/pause.svg",
+ "png": "png/{size}/pause.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f03e4",
+ "nerd_name": "md-pause",
+ "unicode": "⏸",
+ "ascii": "||"
+ }
+ },
+ {
+ "key": "stop",
+ "name": "Stop",
+ "category": "media",
+ "svg": "svg/stop.svg",
+ "png": "png/{size}/stop.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f04db",
+ "nerd_name": "md-stop",
+ "unicode": "⏹",
+ "ascii": "[]"
+ }
+ },
+ {
+ "key": "skip-forward",
+ "name": "Skip forward",
+ "category": "media",
+ "keywords": [
+ "next-track"
+ ],
+ "svg": "svg/skip-forward.svg",
+ "png": "png/{size}/skip-forward.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f04ad",
+ "nerd_name": "md-skip_next",
+ "unicode": "⏭",
+ "ascii": ">|"
+ }
+ },
+ {
+ "key": "skip-back",
+ "name": "Skip back",
+ "category": "media",
+ "keywords": [
+ "previous-track"
+ ],
+ "svg": "svg/skip-back.svg",
+ "png": "png/{size}/skip-back.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f04ae",
+ "nerd_name": "md-skip_previous",
+ "unicode": "⏮",
+ "ascii": "|<"
+ }
+ },
+ {
+ "key": "fast-forward",
+ "name": "Fast forward",
+ "category": "media",
+ "svg": "svg/fast-forward.svg",
+ "png": "png/{size}/fast-forward.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0211",
+ "nerd_name": "md-fast_forward",
+ "unicode": "⏩",
+ "ascii": ">>"
+ }
+ },
+ {
+ "key": "rewind",
+ "name": "Rewind",
+ "category": "media",
+ "svg": "svg/rewind.svg",
+ "png": "png/{size}/rewind.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f045f",
+ "nerd_name": "md-rewind",
+ "unicode": "⏪",
+ "ascii": "<<"
+ }
+ },
+ {
+ "key": "repeat",
+ "name": "Repeat",
+ "category": "media",
+ "keywords": [
+ "loop"
+ ],
+ "svg": "svg/repeat.svg",
+ "png": "png/{size}/repeat.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0456",
+ "nerd_name": "md-repeat",
+ "unicode": "🔁",
+ "ascii": "<->"
+ }
+ },
+ {
+ "key": "shuffle",
+ "name": "Shuffle",
+ "category": "media",
+ "keywords": [
+ "random"
+ ],
+ "svg": "svg/shuffle.svg",
+ "png": "png/{size}/shuffle.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f049f",
+ "nerd_name": "md-shuffle_variant",
+ "unicode": "🔀",
+ "ascii": "><"
+ }
+ },
+ {
+ "key": "volume",
+ "name": "Volume",
+ "category": "media",
+ "aliases": [
+ "sound",
+ "speaker"
+ ],
+ "keywords": [
+ "audio"
+ ],
+ "svg": "svg/volume.svg",
+ "png": "png/{size}/volume.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f057e",
+ "nerd_name": "md-volume_high",
+ "unicode": "🔊",
+ "ascii": "<))"
+ }
+ },
+ {
+ "key": "volume-low",
+ "name": "Volume low",
+ "category": "media",
+ "svg": "svg/volume-low.svg",
+ "png": "png/{size}/volume-low.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0580",
+ "nerd_name": "md-volume_medium",
+ "unicode": "🔉",
+ "ascii": "<)"
+ }
+ },
+ {
+ "key": "volume-off",
+ "name": "Volume off",
+ "category": "media",
+ "aliases": [
+ "mute"
+ ],
+ "keywords": [
+ "silent"
+ ],
+ "svg": "svg/volume-off.svg",
+ "png": "png/{size}/volume-off.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0581",
+ "nerd_name": "md-volume_off",
+ "unicode": "🔇",
+ "ascii": "]"
+ }
+ },
+ {
+ "key": "folder",
+ "name": "Folder",
+ "category": "file",
+ "aliases": [
+ "directory"
+ ],
+ "svg": "svg/folder.svg",
+ "png": "png/{size}/folder.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0256",
+ "nerd_name": "md-folder_outline",
+ "unicode": "📁",
+ "ascii": "[d]"
+ }
+ },
+ {
+ "key": "folder-open",
+ "name": "Folder open",
+ "category": "file",
+ "svg": "svg/folder-open.svg",
+ "png": "png/{size}/folder-open.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0dcf",
+ "nerd_name": "md-folder_open_outline",
+ "unicode": "📂",
+ "ascii": "[d]"
+ }
+ },
+ {
+ "key": "folder-plus",
+ "name": "Folder plus",
+ "category": "file",
+ "keywords": [
+ "new-folder"
+ ],
+ "svg": "svg/folder-plus.svg",
+ "png": "png/{size}/folder-plus.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0b9d",
+ "nerd_name": "md-folder_plus_outline",
+ "unicode": "📁",
+ "ascii": "[d+]"
+ }
+ },
+ {
+ "key": "paperclip",
+ "name": "Paperclip",
+ "category": "file",
+ "aliases": [
+ "attachment",
+ "attach"
+ ],
+ "svg": "svg/paperclip.svg",
+ "png": "png/{size}/paperclip.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f03e2",
+ "nerd_name": "md-paperclip",
+ "unicode": "📎",
+ "ascii": "0/"
+ }
+ },
+ {
+ "key": "cloud",
+ "name": "Cloud",
+ "category": "file",
+ "svg": "svg/cloud.svg",
+ "png": "png/{size}/cloud.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0163",
+ "nerd_name": "md-cloud_outline",
+ "unicode": "☁",
+ "ascii": "(~)"
+ }
+ },
+ {
+ "key": "cloud-upload",
+ "name": "Cloud upload",
+ "category": "file",
+ "svg": "svg/cloud-upload.svg",
+ "png": "png/{size}/cloud-upload.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0b7e",
+ "nerd_name": "md-cloud_upload_outline",
+ "unicode": "☁",
+ "ascii": "(^)"
+ }
+ },
+ {
+ "key": "cloud-download",
+ "name": "Cloud download",
+ "category": "file",
+ "svg": "svg/cloud-download.svg",
+ "png": "png/{size}/cloud-download.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0b7d",
+ "nerd_name": "md-cloud_download_outline",
+ "unicode": "☁",
+ "ascii": "(v)"
+ }
+ },
+ {
+ "key": "database",
+ "name": "Database",
+ "category": "file",
+ "aliases": [
+ "db"
+ ],
+ "keywords": [
+ "storage",
+ "sql"
+ ],
+ "svg": "svg/database.svg",
+ "png": "png/{size}/database.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f1632",
+ "nerd_name": "md-database_outline",
+ "unicode": "🛢",
+ "ascii": "[=]"
+ }
+ },
+ {
+ "key": "server",
+ "name": "Server",
+ "category": "file",
+ "keywords": [
+ "host",
+ "rack"
+ ],
+ "svg": "svg/server.svg",
+ "png": "png/{size}/server.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f048b",
+ "nerd_name": "md-server",
+ "unicode": "🖥",
+ "ascii": "[:]"
+ }
+ },
+ {
+ "key": "hard-drive",
+ "name": "Hard drive",
+ "category": "file",
+ "keywords": [
+ "disk",
+ "storage"
+ ],
+ "svg": "svg/hard-drive.svg",
+ "png": "png/{size}/hard-drive.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f02ca",
+ "nerd_name": "md-harddisk",
+ "unicode": "🖴",
+ "ascii": "[o]"
+ }
+ },
+ {
+ "key": "package",
+ "name": "Package",
+ "category": "file",
+ "aliases": [
+ "box"
+ ],
+ "keywords": [
+ "module",
+ "npm-package"
+ ],
+ "svg": "svg/package.svg",
+ "png": "png/{size}/package.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f03d7",
+ "nerd_name": "md-package_variant_closed",
+ "unicode": "📦",
+ "ascii": "[#]"
+ }
+ },
+ {
+ "key": "book",
+ "name": "Book",
+ "category": "file",
+ "keywords": [
+ "docs",
+ "manual",
+ "read"
+ ],
+ "svg": "svg/book.svg",
+ "png": "png/{size}/book.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0b64",
+ "nerd_name": "md-book_outline",
+ "unicode": "📕",
+ "ascii": "[B]"
+ }
+ },
+ {
+ "key": "book-open",
+ "name": "Book open",
+ "category": "file",
+ "keywords": [
+ "docs",
+ "reading"
+ ],
+ "svg": "svg/book-open.svg",
+ "png": "png/{size}/book-open.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0b63",
+ "nerd_name": "md-book_open_outline",
+ "unicode": "📖",
+ "ascii": "[]"
+ }
+ },
+ {
+ "key": "newspaper",
+ "name": "Newspaper",
+ "category": "file",
+ "keywords": [
+ "news",
+ "article",
+ "blog"
+ ],
+ "svg": "svg/newspaper.svg",
+ "png": "png/{size}/newspaper.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f1004",
+ "nerd_name": "md-newspaper_variant_outline",
+ "unicode": "📰",
+ "ascii": "[n]"
+ }
+ },
+ {
+ "key": "info",
+ "name": "Info",
+ "category": "status",
+ "aliases": [
+ "information"
+ ],
+ "keywords": [
+ "about"
+ ],
+ "svg": "svg/info.svg",
+ "png": "png/{size}/info.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f02fd",
+ "nerd_name": "md-information_outline",
+ "unicode": "ℹ",
+ "ascii": "i"
+ }
+ },
+ {
+ "key": "warning",
+ "name": "Warning",
+ "category": "status",
+ "aliases": [
+ "alert-triangle",
+ "caution"
+ ],
+ "keywords": [
+ "alert"
+ ],
+ "svg": "svg/warning.svg",
+ "png": "png/{size}/warning.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f002a",
+ "nerd_name": "md-alert_outline",
+ "unicode": "⚠",
+ "ascii": "!"
+ }
+ },
+ {
+ "key": "error",
+ "name": "Error",
+ "category": "status",
+ "aliases": [
+ "alert-circle"
+ ],
+ "keywords": [
+ "danger",
+ "failure"
+ ],
+ "svg": "svg/error.svg",
+ "png": "png/{size}/error.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f05d6",
+ "nerd_name": "md-alert_circle_outline",
+ "unicode": "⛔",
+ "ascii": "!!"
+ }
+ },
+ {
+ "key": "help",
+ "name": "Help",
+ "category": "status",
+ "aliases": [
+ "question",
+ "faq"
+ ],
+ "keywords": [
+ "support"
+ ],
+ "svg": "svg/help.svg",
+ "png": "png/{size}/help.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0625",
+ "nerd_name": "md-help_circle_outline",
+ "unicode": "❓",
+ "ascii": "?"
+ }
+ },
+ {
+ "key": "ban",
+ "name": "Ban",
+ "category": "status",
+ "aliases": [
+ "blocked",
+ "forbidden"
+ ],
+ "keywords": [
+ "prohibited"
+ ],
+ "svg": "svg/ban.svg",
+ "png": "png/{size}/ban.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f073a",
+ "nerd_name": "md-cancel",
+ "unicode": "🚫",
+ "ascii": "(/)"
+ }
+ },
+ {
+ "key": "loader",
+ "name": "Loader",
+ "category": "status",
+ "aliases": [
+ "spinner",
+ "loading"
+ ],
+ "keywords": [
+ "busy"
+ ],
+ "svg": "svg/loader.svg",
+ "png": "png/{size}/loader.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0772",
+ "nerd_name": "md-loading",
+ "unicode": "◌",
+ "ascii": "..."
+ }
+ },
+ {
+ "key": "clock",
+ "name": "Clock",
+ "category": "status",
+ "keywords": [
+ "time"
+ ],
+ "svg": "svg/clock.svg",
+ "png": "png/{size}/clock.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0150",
+ "nerd_name": "md-clock_outline",
+ "unicode": "🕒",
+ "ascii": "(t)"
+ }
+ },
+ {
+ "key": "hourglass",
+ "name": "Hourglass",
+ "category": "status",
+ "aliases": [
+ "pending"
+ ],
+ "keywords": [
+ "wait"
+ ],
+ "svg": "svg/hourglass.svg",
+ "png": "png/{size}/hourglass.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f051f",
+ "nerd_name": "md-timer_sand",
+ "unicode": "⏳",
+ "ascii": "8"
+ }
+ },
+ {
+ "key": "activity",
+ "name": "Activity",
+ "category": "status",
+ "keywords": [
+ "pulse",
+ "health",
+ "monitor"
+ ],
+ "svg": "svg/activity.svg",
+ "png": "png/{size}/activity.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0430",
+ "nerd_name": "md-pulse",
+ "unicode": "📈",
+ "ascii": "/\\/"
+ }
+ },
+ {
+ "key": "zap",
+ "name": "Zap",
+ "category": "status",
+ "aliases": [
+ "bolt",
+ "lightning"
+ ],
+ "keywords": [
+ "fast",
+ "power"
+ ],
+ "svg": "svg/zap.svg",
+ "png": "png/{size}/zap.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f140c",
+ "nerd_name": "md-lightning_bolt_outline",
+ "unicode": "⚡",
+ "ascii": "/"
+ }
+ },
+ {
+ "key": "shield",
+ "name": "Shield",
+ "category": "status",
+ "keywords": [
+ "security",
+ "protection"
+ ],
+ "svg": "svg/shield.svg",
+ "png": "png/{size}/shield.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0499",
+ "nerd_name": "md-shield_outline",
+ "unicode": "🛡",
+ "ascii": "[S]"
+ }
+ },
+ {
+ "key": "shield-check",
+ "name": "Shield check",
+ "category": "status",
+ "keywords": [
+ "secure",
+ "verified",
+ "protected"
+ ],
+ "svg": "svg/shield-check.svg",
+ "png": "png/{size}/shield-check.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0cc8",
+ "nerd_name": "md-shield_check_outline",
+ "unicode": "🛡",
+ "ascii": "[v]"
+ }
+ },
+ {
+ "key": "bug",
+ "name": "Bug",
+ "category": "status",
+ "keywords": [
+ "issue",
+ "defect"
+ ],
+ "svg": "svg/bug.svg",
+ "png": "png/{size}/bug.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0a30",
+ "nerd_name": "md-bug_outline",
+ "unicode": "🐛",
+ "ascii": "bug"
+ }
+ },
+ {
+ "key": "sparkles",
+ "name": "Sparkles",
+ "category": "status",
+ "aliases": [
+ "ai",
+ "magic"
+ ],
+ "keywords": [
+ "new"
+ ],
+ "svg": "svg/sparkles.svg",
+ "png": "png/{size}/sparkles.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0674",
+ "nerd_name": "md-creation",
+ "unicode": "✨",
+ "ascii": "*+"
+ }
+ },
+ {
+ "key": "checkbox",
+ "name": "Checkbox",
+ "category": "status",
+ "aliases": [
+ "check-square"
+ ],
+ "keywords": [
+ "checked"
+ ],
+ "svg": "svg/checkbox.svg",
+ "png": "png/{size}/checkbox.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0135",
+ "nerd_name": "md-checkbox_marked_outline",
+ "unicode": "☑",
+ "ascii": "[x]"
+ }
+ },
+ {
+ "key": "checkbox-empty",
+ "name": "Checkbox empty",
+ "category": "status",
+ "aliases": [
+ "square"
+ ],
+ "keywords": [
+ "unchecked"
+ ],
+ "svg": "svg/checkbox-empty.svg",
+ "png": "png/{size}/checkbox-empty.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0131",
+ "nerd_name": "md-checkbox_blank_outline",
+ "unicode": "☐",
+ "ascii": "[ ]"
+ }
+ },
+ {
+ "key": "radio-on",
+ "name": "Radio on",
+ "category": "status",
+ "keywords": [
+ "selected"
+ ],
+ "svg": "svg/radio-on.svg",
+ "png": "png/{size}/radio-on.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f043e",
+ "nerd_name": "md-radiobox_marked",
+ "unicode": "◉",
+ "ascii": "(*)"
+ }
+ },
+ {
+ "key": "radio-off",
+ "name": "Radio off",
+ "category": "status",
+ "keywords": [
+ "circle",
+ "unselected"
+ ],
+ "svg": "svg/radio-off.svg",
+ "png": "png/{size}/radio-off.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f111",
+ "nerd_name": "fa-circle",
+ "unicode": "○",
+ "ascii": "( )"
+ }
+ },
+ {
+ "key": "toggle-on",
+ "name": "Toggle on",
+ "category": "status",
+ "keywords": [
+ "switch-on",
+ "enabled"
+ ],
+ "svg": "svg/toggle-on.svg",
+ "png": "png/{size}/toggle-on.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0521",
+ "nerd_name": "md-toggle_switch",
+ "unicode": "🔘",
+ "ascii": "[=o]"
+ }
+ },
+ {
+ "key": "toggle-off",
+ "name": "Toggle off",
+ "category": "status",
+ "keywords": [
+ "switch-off",
+ "disabled"
+ ],
+ "svg": "svg/toggle-off.svg",
+ "png": "png/{size}/toggle-off.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0a19",
+ "nerd_name": "md-toggle_switch_off_outline",
+ "unicode": "🔘",
+ "ascii": "[o=]"
+ }
+ },
+ {
+ "key": "online",
+ "name": "Online",
+ "category": "status",
+ "keywords": [
+ "status",
+ "presence",
+ "live"
+ ],
+ "svg": "svg/online.svg",
+ "png": "png/{size}/online.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0aa5",
+ "nerd_name": "md-circle_slice_8",
+ "unicode": "🟢",
+ "ascii": "(o)"
+ }
+ },
+ {
+ "key": "calendar",
+ "name": "Calendar",
+ "category": "time",
+ "aliases": [
+ "date"
+ ],
+ "keywords": [
+ "schedule",
+ "event"
+ ],
+ "svg": "svg/calendar.svg",
+ "png": "png/{size}/calendar.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0b66",
+ "nerd_name": "md-calendar_blank_outline",
+ "unicode": "📅",
+ "ascii": "[=]"
+ }
+ },
+ {
+ "key": "calendar-check",
+ "name": "Calendar check",
+ "category": "time",
+ "keywords": [
+ "booked"
+ ],
+ "svg": "svg/calendar-check.svg",
+ "png": "png/{size}/calendar-check.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0c44",
+ "nerd_name": "md-calendar_check_outline",
+ "unicode": "📅",
+ "ascii": "[v]"
+ }
+ },
+ {
+ "key": "calendar-plus",
+ "name": "Calendar plus",
+ "category": "time",
+ "keywords": [
+ "add-event"
+ ],
+ "svg": "svg/calendar-plus.svg",
+ "png": "png/{size}/calendar-plus.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f00f3",
+ "nerd_name": "md-calendar_plus",
+ "unicode": "📅",
+ "ascii": "[+]"
+ }
+ },
+ {
+ "key": "alarm",
+ "name": "Alarm",
+ "category": "time",
+ "aliases": [
+ "alarm-clock"
+ ],
+ "keywords": [
+ "reminder",
+ "wake"
+ ],
+ "svg": "svg/alarm.svg",
+ "png": "png/{size}/alarm.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0020",
+ "nerd_name": "md-alarm",
+ "unicode": "⏰",
+ "ascii": "(!)"
+ }
+ },
+ {
+ "key": "timer",
+ "name": "Timer",
+ "category": "time",
+ "aliases": [
+ "stopwatch"
+ ],
+ "keywords": [
+ "countdown"
+ ],
+ "svg": "svg/timer.svg",
+ "png": "png/{size}/timer.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f051b",
+ "nerd_name": "md-timer_outline",
+ "unicode": "⏱",
+ "ascii": "(:)"
+ }
+ },
+ {
+ "key": "history",
+ "name": "History",
+ "category": "time",
+ "aliases": [
+ "recent"
+ ],
+ "keywords": [
+ "past",
+ "log"
+ ],
+ "svg": "svg/history.svg",
+ "png": "png/{size}/history.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f02da",
+ "nerd_name": "md-history",
+ "unicode": "🕘",
+ "ascii": "<(t)"
+ }
+ },
+ {
+ "key": "cart",
+ "name": "Cart",
+ "category": "commerce",
+ "aliases": [
+ "shopping-cart"
+ ],
+ "keywords": [
+ "basket",
+ "checkout"
+ ],
+ "svg": "svg/cart.svg",
+ "png": "png/{size}/cart.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0111",
+ "nerd_name": "md-cart_outline",
+ "unicode": "🛒",
+ "ascii": "\\_/"
+ }
+ },
+ {
+ "key": "bag",
+ "name": "Bag",
+ "category": "commerce",
+ "aliases": [
+ "shopping-bag"
+ ],
+ "keywords": [
+ "shop"
+ ],
+ "svg": "svg/bag.svg",
+ "png": "png/{size}/bag.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f11d5",
+ "nerd_name": "md-shopping_outline",
+ "unicode": "🛍",
+ "ascii": "[u]"
+ }
+ },
+ {
+ "key": "credit-card",
+ "name": "Credit card",
+ "category": "commerce",
+ "aliases": [
+ "payment",
+ "card"
+ ],
+ "keywords": [
+ "billing"
+ ],
+ "svg": "svg/credit-card.svg",
+ "png": "png/{size}/credit-card.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f019b",
+ "nerd_name": "md-credit_card_outline",
+ "unicode": "💳",
+ "ascii": "[=]"
+ }
+ },
+ {
+ "key": "wallet",
+ "name": "Wallet",
+ "category": "commerce",
+ "keywords": [
+ "money",
+ "crypto-wallet"
+ ],
+ "svg": "svg/wallet.svg",
+ "png": "png/{size}/wallet.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0bdd",
+ "nerd_name": "md-wallet_outline",
+ "unicode": "👛",
+ "ascii": "[$]"
+ }
+ },
+ {
+ "key": "dollar",
+ "name": "Dollar",
+ "category": "commerce",
+ "aliases": [
+ "usd",
+ "currency"
+ ],
+ "keywords": [
+ "money",
+ "price"
+ ],
+ "svg": "svg/dollar.svg",
+ "png": "png/{size}/dollar.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f01c1",
+ "nerd_name": "md-currency_usd",
+ "unicode": "$",
+ "ascii": "$"
+ }
+ },
+ {
+ "key": "receipt",
+ "name": "Receipt",
+ "category": "commerce",
+ "aliases": [
+ "invoice"
+ ],
+ "keywords": [
+ "bill",
+ "order"
+ ],
+ "svg": "svg/receipt.svg",
+ "png": "png/{size}/receipt.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0449",
+ "nerd_name": "md-receipt",
+ "unicode": "🧾",
+ "ascii": "[$]"
+ }
+ },
+ {
+ "key": "gift",
+ "name": "Gift",
+ "category": "commerce",
+ "aliases": [
+ "present"
+ ],
+ "keywords": [
+ "reward"
+ ],
+ "svg": "svg/gift.svg",
+ "png": "png/{size}/gift.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f02a1",
+ "nerd_name": "md-gift_outline",
+ "unicode": "🎁",
+ "ascii": "[+]"
+ }
+ },
+ {
+ "key": "store",
+ "name": "Store",
+ "category": "commerce",
+ "aliases": [
+ "storefront"
+ ],
+ "keywords": [
+ "shop",
+ "marketplace"
+ ],
+ "svg": "svg/store.svg",
+ "png": "png/{size}/store.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f10c1",
+ "nerd_name": "md-storefront_outline",
+ "unicode": "🏪",
+ "ascii": "[S]"
+ }
+ },
+ {
+ "key": "truck",
+ "name": "Truck",
+ "category": "commerce",
+ "aliases": [
+ "shipping",
+ "delivery"
+ ],
+ "svg": "svg/truck.svg",
+ "png": "png/{size}/truck.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f129d",
+ "nerd_name": "md-truck_outline",
+ "unicode": "🚚",
+ "ascii": "[=o"
+ }
+ },
+ {
+ "key": "percent",
+ "name": "Percent",
+ "category": "commerce",
+ "aliases": [
+ "discount"
+ ],
+ "keywords": [
+ "sale",
+ "coupon"
+ ],
+ "svg": "svg/percent.svg",
+ "png": "png/{size}/percent.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f03f0",
+ "nerd_name": "md-percent",
+ "unicode": "%",
+ "ascii": "%"
+ }
+ },
+ {
+ "key": "coins",
+ "name": "Coins",
+ "category": "commerce",
+ "keywords": [
+ "money",
+ "tokens",
+ "credits"
+ ],
+ "svg": "svg/coins.svg",
+ "png": "png/{size}/coins.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f1890",
+ "nerd_name": "md-hand_coin_outline",
+ "unicode": "🪙",
+ "ascii": "(o)"
+ }
+ },
+ {
+ "key": "barcode",
+ "name": "Barcode",
+ "category": "commerce",
+ "keywords": [
+ "scan",
+ "sku"
+ ],
+ "svg": "svg/barcode.svg",
+ "png": "png/{size}/barcode.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0071",
+ "nerd_name": "md-barcode",
+ "unicode": "▥",
+ "ascii": "|||"
+ }
+ },
+ {
+ "key": "qr-code",
+ "name": "Qr code",
+ "category": "commerce",
+ "aliases": [
+ "qr"
+ ],
+ "keywords": [
+ "scan"
+ ],
+ "svg": "svg/qr-code.svg",
+ "png": "png/{size}/qr-code.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0432",
+ "nerd_name": "md-qrcode",
+ "unicode": "▦",
+ "ascii": "[#]"
+ }
+ },
+ {
+ "key": "terminal",
+ "name": "Terminal",
+ "category": "dev",
+ "aliases": [
+ "console",
+ "shell",
+ "cli"
+ ],
+ "keywords": [
+ "command-line"
+ ],
+ "svg": "svg/terminal.svg",
+ "png": "png/{size}/terminal.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f018d",
+ "nerd_name": "md-console",
+ "unicode": "⌨",
+ "ascii": ">_"
+ }
+ },
+ {
+ "key": "code",
+ "name": "Code",
+ "category": "dev",
+ "aliases": [
+ "source-code"
+ ],
+ "keywords": [
+ "source",
+ "html",
+ "develop"
+ ],
+ "svg": "svg/code.svg",
+ "png": "png/{size}/code.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0174",
+ "nerd_name": "md-code_tags",
+ "unicode": "⟨⟩",
+ "ascii": ">"
+ }
+ },
+ {
+ "key": "braces",
+ "name": "Braces",
+ "category": "dev",
+ "aliases": [
+ "json",
+ "curly-braces"
+ ],
+ "keywords": [
+ "object",
+ "curly"
+ ],
+ "svg": "svg/braces.svg",
+ "png": "png/{size}/braces.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0169",
+ "nerd_name": "md-code_braces",
+ "unicode": "{}",
+ "ascii": "{}"
+ }
+ },
+ {
+ "key": "git-branch",
+ "name": "Git branch",
+ "category": "dev",
+ "keywords": [
+ "branch"
+ ],
+ "svg": "svg/git-branch.svg",
+ "png": "png/{size}/git-branch.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f418",
+ "nerd_name": "oct-git_branch",
+ "unicode": "⎇",
+ "ascii": "Y"
+ }
+ },
+ {
+ "key": "git-commit",
+ "name": "Git commit",
+ "category": "dev",
+ "keywords": [
+ "commit"
+ ],
+ "svg": "svg/git-commit.svg",
+ "png": "png/{size}/git-commit.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f417",
+ "nerd_name": "oct-git_commit",
+ "unicode": "⊸",
+ "ascii": "-o-"
+ }
+ },
+ {
+ "key": "git-merge",
+ "name": "Git merge",
+ "category": "dev",
+ "keywords": [
+ "merge"
+ ],
+ "svg": "svg/git-merge.svg",
+ "png": "png/{size}/git-merge.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f419",
+ "nerd_name": "oct-git_merge",
+ "unicode": "⑂",
+ "ascii": ">-"
+ }
+ },
+ {
+ "key": "git-pull-request",
+ "name": "Git pull request",
+ "category": "dev",
+ "aliases": [
+ "pull-request",
+ "merge-request"
+ ],
+ "keywords": [
+ "pr"
+ ],
+ "svg": "svg/git-pull-request.svg",
+ "png": "png/{size}/git-pull-request.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f407",
+ "nerd_name": "oct-git_pull_request",
+ "unicode": "⇄",
+ "ascii": "PR"
+ }
+ },
+ {
+ "key": "cpu",
+ "name": "Cpu",
+ "category": "dev",
+ "aliases": [
+ "chip",
+ "processor"
+ ],
+ "keywords": [
+ "hardware"
+ ],
+ "svg": "svg/cpu.svg",
+ "png": "png/{size}/cpu.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f061a",
+ "nerd_name": "md-chip",
+ "unicode": "🔲",
+ "ascii": "[#]"
+ }
+ },
+ {
+ "key": "command",
+ "name": "Command",
+ "category": "dev",
+ "aliases": [
+ "cmd"
+ ],
+ "keywords": [
+ "shortcut",
+ "keyboard-shortcut"
+ ],
+ "svg": "svg/command.svg",
+ "png": "png/{size}/command.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0633",
+ "nerd_name": "md-apple_keyboard_command",
+ "unicode": "⌘",
+ "ascii": "cmd"
+ }
+ },
+ {
+ "key": "hash",
+ "name": "Hash",
+ "category": "dev",
+ "aliases": [
+ "hashtag"
+ ],
+ "keywords": [
+ "number",
+ "channel"
+ ],
+ "svg": "svg/hash.svg",
+ "png": "png/{size}/hash.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0423",
+ "nerd_name": "md-pound",
+ "unicode": "#",
+ "ascii": "#"
+ }
+ },
+ {
+ "key": "plug",
+ "name": "Plug",
+ "category": "dev",
+ "aliases": [
+ "integration"
+ ],
+ "keywords": [
+ "connect",
+ "api"
+ ],
+ "svg": "svg/plug.svg",
+ "png": "png/{size}/plug.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f1425",
+ "nerd_name": "md-power_plug_outline",
+ "unicode": "🔌",
+ "ascii": "-["
+ }
+ },
+ {
+ "key": "webhook",
+ "name": "Webhook",
+ "category": "dev",
+ "keywords": [
+ "callback",
+ "hook"
+ ],
+ "svg": "svg/webhook.svg",
+ "png": "png/{size}/webhook.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f062f",
+ "nerd_name": "md-webhook",
+ "unicode": "🪝",
+ "ascii": "<~>"
+ }
+ },
+ {
+ "key": "gauge",
+ "name": "Gauge",
+ "category": "dev",
+ "keywords": [
+ "speed",
+ "performance",
+ "dashboard",
+ "meter"
+ ],
+ "svg": "svg/gauge.svg",
+ "png": "png/{size}/gauge.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f029a",
+ "nerd_name": "md-gauge",
+ "unicode": "⏲",
+ "ascii": "(/)"
+ }
+ },
+ {
+ "key": "flask",
+ "name": "Flask",
+ "category": "dev",
+ "aliases": [
+ "experiment",
+ "lab"
+ ],
+ "keywords": [
+ "test",
+ "beta"
+ ],
+ "svg": "svg/flask.svg",
+ "png": "png/{size}/flask.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0096",
+ "nerd_name": "md-flask_outline",
+ "unicode": "⚗",
+ "ascii": "/_\\"
+ }
+ },
+ {
+ "key": "api",
+ "name": "Api",
+ "category": "dev",
+ "keywords": [
+ "endpoint",
+ "rest"
+ ],
+ "svg": "svg/api.svg",
+ "png": "png/{size}/api.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f109b",
+ "nerd_name": "md-api",
+ "unicode": "⚙",
+ "ascii": "api"
+ }
+ },
+ {
+ "key": "container",
+ "name": "Container",
+ "category": "dev",
+ "keywords": [
+ "docker",
+ "cube",
+ "image"
+ ],
+ "svg": "svg/container.svg",
+ "png": "png/{size}/container.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f01a7",
+ "nerd_name": "md-cube_outline",
+ "unicode": "📦",
+ "ascii": "[c]"
+ }
+ },
+ {
+ "key": "laptop",
+ "name": "Laptop",
+ "category": "device",
+ "aliases": [
+ "computer"
+ ],
+ "keywords": [
+ "notebook"
+ ],
+ "svg": "svg/laptop.svg",
+ "png": "png/{size}/laptop.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0322",
+ "nerd_name": "md-laptop",
+ "unicode": "💻",
+ "ascii": "[_]"
+ }
+ },
+ {
+ "key": "monitor",
+ "name": "Monitor",
+ "category": "device",
+ "aliases": [
+ "desktop",
+ "display"
+ ],
+ "keywords": [
+ "screen"
+ ],
+ "svg": "svg/monitor.svg",
+ "png": "png/{size}/monitor.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0379",
+ "nerd_name": "md-monitor",
+ "unicode": "🖥",
+ "ascii": "[ ]"
+ }
+ },
+ {
+ "key": "smartphone",
+ "name": "Smartphone",
+ "category": "device",
+ "aliases": [
+ "mobile",
+ "cellphone"
+ ],
+ "keywords": [
+ "phone-device",
+ "cell"
+ ],
+ "svg": "svg/smartphone.svg",
+ "png": "png/{size}/smartphone.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f011c",
+ "nerd_name": "md-cellphone",
+ "unicode": "📱",
+ "ascii": "[.]"
+ }
+ },
+ {
+ "key": "tablet",
+ "name": "Tablet",
+ "category": "device",
+ "keywords": [
+ "ipad"
+ ],
+ "svg": "svg/tablet.svg",
+ "png": "png/{size}/tablet.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f04f6",
+ "nerd_name": "md-tablet",
+ "unicode": "📱",
+ "ascii": "[..]"
+ }
+ },
+ {
+ "key": "watch",
+ "name": "Watch",
+ "category": "device",
+ "keywords": [
+ "smartwatch",
+ "wearable"
+ ],
+ "svg": "svg/watch.svg",
+ "png": "png/{size}/watch.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0589",
+ "nerd_name": "md-watch",
+ "unicode": "⌚",
+ "ascii": "(:)"
+ }
+ },
+ {
+ "key": "keyboard",
+ "name": "Keyboard",
+ "category": "device",
+ "keywords": [
+ "typing",
+ "input"
+ ],
+ "svg": "svg/keyboard.svg",
+ "png": "png/{size}/keyboard.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f097b",
+ "nerd_name": "md-keyboard_outline",
+ "unicode": "⌨",
+ "ascii": "[kb]"
+ }
+ },
+ {
+ "key": "mouse",
+ "name": "Mouse",
+ "category": "device",
+ "keywords": [
+ "pointer",
+ "click"
+ ],
+ "svg": "svg/mouse.svg",
+ "png": "png/{size}/mouse.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f037d",
+ "nerd_name": "md-mouse",
+ "unicode": "🖱",
+ "ascii": "(|)"
+ }
+ },
+ {
+ "key": "wifi",
+ "name": "Wifi",
+ "category": "device",
+ "keywords": [
+ "wireless",
+ "network",
+ "internet"
+ ],
+ "svg": "svg/wifi.svg",
+ "png": "png/{size}/wifi.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f05a9",
+ "nerd_name": "md-wifi",
+ "unicode": "📶",
+ "ascii": "((."
+ }
+ },
+ {
+ "key": "wifi-off",
+ "name": "Wifi off",
+ "category": "device",
+ "keywords": [
+ "offline",
+ "no-network"
+ ],
+ "svg": "svg/wifi-off.svg",
+ "png": "png/{size}/wifi-off.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f05aa",
+ "nerd_name": "md-wifi_off",
+ "unicode": "📵",
+ "ascii": "x(("
+ }
+ },
+ {
+ "key": "bluetooth",
+ "name": "Bluetooth",
+ "category": "device",
+ "keywords": [
+ "wireless",
+ "pair"
+ ],
+ "svg": "svg/bluetooth.svg",
+ "png": "png/{size}/bluetooth.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f00af",
+ "nerd_name": "md-bluetooth",
+ "unicode": "ᛒ",
+ "ascii": "B"
+ }
+ },
+ {
+ "key": "battery",
+ "name": "Battery",
+ "category": "device",
+ "keywords": [
+ "power",
+ "charge"
+ ],
+ "svg": "svg/battery.svg",
+ "png": "png/{size}/battery.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f008e",
+ "nerd_name": "md-battery_outline",
+ "unicode": "🔋",
+ "ascii": "[=="
+ }
+ },
+ {
+ "key": "battery-charging",
+ "name": "Battery charging",
+ "category": "device",
+ "keywords": [
+ "charging"
+ ],
+ "svg": "svg/battery-charging.svg",
+ "png": "png/{size}/battery-charging.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0084",
+ "nerd_name": "md-battery_charging",
+ "unicode": "🔌",
+ "ascii": "[=~"
+ }
+ },
+ {
+ "key": "cell-signal",
+ "name": "Cell signal",
+ "category": "device",
+ "aliases": [
+ "reception"
+ ],
+ "keywords": [
+ "bars",
+ "cellular"
+ ],
+ "svg": "svg/cell-signal.svg",
+ "png": "png/{size}/cell-signal.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f04a2",
+ "nerd_name": "md-signal",
+ "unicode": "📶",
+ "ascii": ".:|"
+ }
+ },
+ {
+ "key": "bold",
+ "name": "Bold",
+ "category": "editor",
+ "keywords": [
+ "strong"
+ ],
+ "svg": "svg/bold.svg",
+ "png": "png/{size}/bold.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0264",
+ "nerd_name": "md-format_bold",
+ "unicode": "𝐁",
+ "ascii": "B"
+ }
+ },
+ {
+ "key": "italic",
+ "name": "Italic",
+ "category": "editor",
+ "keywords": [
+ "emphasis"
+ ],
+ "svg": "svg/italic.svg",
+ "png": "png/{size}/italic.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0277",
+ "nerd_name": "md-format_italic",
+ "unicode": "𝐼",
+ "ascii": "/"
+ }
+ },
+ {
+ "key": "underline",
+ "name": "Underline",
+ "category": "editor",
+ "svg": "svg/underline.svg",
+ "png": "png/{size}/underline.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0287",
+ "nerd_name": "md-format_underline",
+ "unicode": "U̲",
+ "ascii": "_"
+ }
+ },
+ {
+ "key": "strikethrough",
+ "name": "Strikethrough",
+ "category": "editor",
+ "svg": "svg/strikethrough.svg",
+ "png": "png/{size}/strikethrough.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0280",
+ "nerd_name": "md-format_strikethrough",
+ "unicode": "S̶",
+ "ascii": "-s-"
+ }
+ },
+ {
+ "key": "heading",
+ "name": "Heading",
+ "category": "editor",
+ "keywords": [
+ "title",
+ "h1"
+ ],
+ "svg": "svg/heading.svg",
+ "png": "png/{size}/heading.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0274",
+ "nerd_name": "md-format_header_pound",
+ "unicode": "H",
+ "ascii": "H"
+ }
+ },
+ {
+ "key": "list-ordered",
+ "name": "List ordered",
+ "category": "editor",
+ "keywords": [
+ "numbered-list"
+ ],
+ "svg": "svg/list-ordered.svg",
+ "png": "png/{size}/list-ordered.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f027b",
+ "nerd_name": "md-format_list_numbered",
+ "unicode": "⒈",
+ "ascii": "1."
+ }
+ },
+ {
+ "key": "list-bullet",
+ "name": "List bullet",
+ "category": "editor",
+ "keywords": [
+ "bullet-list",
+ "unordered-list"
+ ],
+ "svg": "svg/list-bullet.svg",
+ "png": "png/{size}/list-bullet.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0279",
+ "nerd_name": "md-format_list_bulleted",
+ "unicode": "•",
+ "ascii": "*"
+ }
+ },
+ {
+ "key": "quote",
+ "name": "Quote",
+ "category": "editor",
+ "keywords": [
+ "blockquote",
+ "citation"
+ ],
+ "svg": "svg/quote.svg",
+ "png": "png/{size}/quote.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0757",
+ "nerd_name": "md-format_quote_open",
+ "unicode": "❝",
+ "ascii": "\""
+ }
+ },
+ {
+ "key": "align-left",
+ "name": "Align left",
+ "category": "editor",
+ "svg": "svg/align-left.svg",
+ "png": "png/{size}/align-left.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0262",
+ "nerd_name": "md-format_align_left",
+ "unicode": "⫷",
+ "ascii": "|="
+ }
+ },
+ {
+ "key": "align-center",
+ "name": "Align center",
+ "category": "editor",
+ "svg": "svg/align-center.svg",
+ "png": "png/{size}/align-center.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0260",
+ "nerd_name": "md-format_align_center",
+ "unicode": "≡",
+ "ascii": "="
+ }
+ },
+ {
+ "key": "align-right",
+ "name": "Align right",
+ "category": "editor",
+ "svg": "svg/align-right.svg",
+ "png": "png/{size}/align-right.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0263",
+ "nerd_name": "md-format_align_right",
+ "unicode": "⫸",
+ "ascii": "=|"
+ }
+ },
+ {
+ "key": "type",
+ "name": "Type",
+ "category": "editor",
+ "keywords": [
+ "text",
+ "font",
+ "typography"
+ ],
+ "svg": "svg/type.svg",
+ "png": "png/{size}/type.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0284",
+ "nerd_name": "md-format_text",
+ "unicode": "T",
+ "ascii": "T"
+ }
+ },
+ {
+ "key": "table",
+ "name": "Table",
+ "category": "editor",
+ "keywords": [
+ "spreadsheet",
+ "grid-data"
+ ],
+ "svg": "svg/table.svg",
+ "png": "png/{size}/table.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f04eb",
+ "nerd_name": "md-table",
+ "unicode": "▦",
+ "ascii": "[#]"
+ }
+ },
+ {
+ "key": "image-plus",
+ "name": "Image plus",
+ "category": "editor",
+ "keywords": [
+ "add-image",
+ "insert-image"
+ ],
+ "svg": "svg/image-plus.svg",
+ "png": "png/{size}/image-plus.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f087c",
+ "nerd_name": "md-image_plus",
+ "unicode": "🖼",
+ "ascii": "[+]"
+ }
+ },
+ {
+ "key": "sun",
+ "name": "Sun",
+ "category": "misc",
+ "aliases": [
+ "light-mode",
+ "day"
+ ],
+ "keywords": [
+ "weather"
+ ],
+ "svg": "svg/sun.svg",
+ "png": "png/{size}/sun.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f05a8",
+ "nerd_name": "md-white_balance_sunny",
+ "unicode": "☀",
+ "ascii": "*"
+ }
+ },
+ {
+ "key": "moon",
+ "name": "Moon",
+ "category": "misc",
+ "aliases": [
+ "dark-mode",
+ "night"
+ ],
+ "svg": "svg/moon.svg",
+ "png": "png/{size}/moon.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0594",
+ "nerd_name": "md-weather_night",
+ "unicode": "🌙",
+ "ascii": "C"
+ }
+ },
+ {
+ "key": "theme",
+ "name": "Theme",
+ "category": "misc",
+ "aliases": [
+ "contrast"
+ ],
+ "keywords": [
+ "appearance",
+ "light-dark"
+ ],
+ "svg": "svg/theme.svg",
+ "png": "png/{size}/theme.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f050e",
+ "nerd_name": "md-theme_light_dark",
+ "unicode": "◐",
+ "ascii": "(|)"
+ }
+ },
+ {
+ "key": "thermometer",
+ "name": "Thermometer",
+ "category": "misc",
+ "keywords": [
+ "temperature",
+ "weather"
+ ],
+ "svg": "svg/thermometer.svg",
+ "png": "png/{size}/thermometer.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f050f",
+ "nerd_name": "md-thermometer",
+ "unicode": "🌡",
+ "ascii": "|o"
+ }
+ },
+ {
+ "key": "droplet",
+ "name": "Droplet",
+ "category": "misc",
+ "keywords": [
+ "water",
+ "liquid",
+ "rain"
+ ],
+ "svg": "svg/droplet.svg",
+ "png": "png/{size}/droplet.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0e0a",
+ "nerd_name": "md-water_outline",
+ "unicode": "💧",
+ "ascii": "o"
+ }
+ },
+ {
+ "key": "leaf",
+ "name": "Leaf",
+ "category": "misc",
+ "keywords": [
+ "eco",
+ "nature",
+ "green"
+ ],
+ "svg": "svg/leaf.svg",
+ "png": "png/{size}/leaf.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f032a",
+ "nerd_name": "md-leaf",
+ "unicode": "🍃",
+ "ascii": "~"
+ }
+ },
+ {
+ "key": "building",
+ "name": "Building",
+ "category": "misc",
+ "aliases": [
+ "company",
+ "office"
+ ],
+ "keywords": [
+ "organization"
+ ],
+ "svg": "svg/building.svg",
+ "png": "png/{size}/building.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f151f",
+ "nerd_name": "md-office_building_outline",
+ "unicode": "🏢",
+ "ascii": "[#]"
+ }
+ },
+ {
+ "key": "briefcase",
+ "name": "Briefcase",
+ "category": "misc",
+ "aliases": [
+ "work",
+ "job"
+ ],
+ "keywords": [
+ "business"
+ ],
+ "svg": "svg/briefcase.svg",
+ "png": "png/{size}/briefcase.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0814",
+ "nerd_name": "md-briefcase_outline",
+ "unicode": "💼",
+ "ascii": "[b]"
+ }
+ },
+ {
+ "key": "award",
+ "name": "Award",
+ "category": "misc",
+ "keywords": [
+ "badge",
+ "achievement",
+ "certificate"
+ ],
+ "svg": "svg/award.svg",
+ "png": "png/{size}/award.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f1326",
+ "nerd_name": "md-medal_outline",
+ "unicode": "🏅",
+ "ascii": "(*)"
+ }
+ },
+ {
+ "key": "trophy",
+ "name": "Trophy",
+ "category": "misc",
+ "aliases": [
+ "prize"
+ ],
+ "keywords": [
+ "winner",
+ "leaderboard"
+ ],
+ "svg": "svg/trophy.svg",
+ "png": "png/{size}/trophy.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f053a",
+ "nerd_name": "md-trophy_outline",
+ "unicode": "🏆",
+ "ascii": "\\_/"
+ }
+ },
+ {
+ "key": "target",
+ "name": "Target",
+ "category": "misc",
+ "aliases": [
+ "goal",
+ "bullseye"
+ ],
+ "keywords": [
+ "aim"
+ ],
+ "svg": "svg/target.svg",
+ "png": "png/{size}/target.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f04fe",
+ "nerd_name": "md-target",
+ "unicode": "🎯",
+ "ascii": "(o)"
+ }
+ },
+ {
+ "key": "lightbulb",
+ "name": "Lightbulb",
+ "category": "misc",
+ "aliases": [
+ "idea"
+ ],
+ "keywords": [
+ "tip",
+ "hint"
+ ],
+ "svg": "svg/lightbulb.svg",
+ "png": "png/{size}/lightbulb.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0336",
+ "nerd_name": "md-lightbulb_outline",
+ "unicode": "💡",
+ "ascii": "i"
+ }
+ },
+ {
+ "key": "rocket",
+ "name": "Rocket",
+ "category": "misc",
+ "aliases": [
+ "deploy"
+ ],
+ "keywords": [
+ "launch",
+ "ship",
+ "startup"
+ ],
+ "svg": "svg/rocket.svg",
+ "png": "png/{size}/rocket.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f14df",
+ "nerd_name": "md-rocket_launch_outline",
+ "unicode": "🚀",
+ "ascii": "^"
+ }
+ },
+ {
+ "key": "coffee",
+ "name": "Coffee",
+ "category": "misc",
+ "keywords": [
+ "cafe",
+ "break",
+ "donate"
+ ],
+ "svg": "svg/coffee.svg",
+ "png": "png/{size}/coffee.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f06ca",
+ "nerd_name": "md-coffee_outline",
+ "unicode": "☕",
+ "ascii": "c[_]"
+ }
+ },
+ {
+ "key": "puzzle",
+ "name": "Puzzle",
+ "category": "misc",
+ "aliases": [
+ "plugin",
+ "extension"
+ ],
+ "keywords": [
+ "addon"
+ ],
+ "svg": "svg/puzzle.svg",
+ "png": "png/{size}/puzzle.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0a66",
+ "nerd_name": "md-puzzle_outline",
+ "unicode": "🧩",
+ "ascii": "[+]"
+ }
+ },
+ {
+ "key": "palette",
+ "name": "Palette",
+ "category": "misc",
+ "aliases": [
+ "color"
+ ],
+ "keywords": [
+ "design",
+ "theme-color"
+ ],
+ "svg": "svg/palette.svg",
+ "png": "png/{size}/palette.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0e0c",
+ "nerd_name": "md-palette_outline",
+ "unicode": "🎨",
+ "ascii": "(:)"
+ }
+ },
+ {
+ "key": "brush",
+ "name": "Brush",
+ "category": "misc",
+ "keywords": [
+ "paint",
+ "draw"
+ ],
+ "svg": "svg/brush.svg",
+ "png": "png/{size}/brush.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f00e3",
+ "nerd_name": "md-brush",
+ "unicode": "🖌",
+ "ascii": "/~"
+ }
+ },
+ {
+ "key": "pen-tool",
+ "name": "Pen tool",
+ "category": "misc",
+ "keywords": [
+ "vector",
+ "bezier"
+ ],
+ "svg": "svg/pen-tool.svg",
+ "png": "png/{size}/pen-tool.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0d13",
+ "nerd_name": "md-fountain_pen_tip",
+ "unicode": "✒",
+ "ascii": "_/"
+ }
+ },
+ {
+ "key": "ruler",
+ "name": "Ruler",
+ "category": "misc",
+ "keywords": [
+ "measure"
+ ],
+ "svg": "svg/ruler.svg",
+ "png": "png/{size}/ruler.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f046d",
+ "nerd_name": "md-ruler",
+ "unicode": "📏",
+ "ascii": "|-|"
+ }
+ },
+ {
+ "key": "crop",
+ "name": "Crop",
+ "category": "misc",
+ "svg": "svg/crop.svg",
+ "png": "png/{size}/crop.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f019e",
+ "nerd_name": "md-crop",
+ "unicode": "⌗",
+ "ascii": "[_"
+ }
+ },
+ {
+ "key": "move",
+ "name": "Move",
+ "category": "misc",
+ "keywords": [
+ "drag",
+ "pan",
+ "arrows"
+ ],
+ "svg": "svg/move.svg",
+ "png": "png/{size}/move.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f01be",
+ "nerd_name": "md-cursor_move",
+ "unicode": "✥",
+ "ascii": "+"
+ }
+ },
+ {
+ "key": "crosshair",
+ "name": "Crosshair",
+ "category": "misc",
+ "keywords": [
+ "aim",
+ "precise",
+ "locate"
+ ],
+ "svg": "svg/crosshair.svg",
+ "png": "png/{size}/crosshair.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f01a3",
+ "nerd_name": "md-crosshairs",
+ "unicode": "⌖",
+ "ascii": "-+-"
+ }
+ },
+ {
+ "key": "translate",
+ "name": "Translate",
+ "category": "misc",
+ "aliases": [
+ "language",
+ "i18n"
+ ],
+ "keywords": [
+ "localize"
+ ],
+ "svg": "svg/translate.svg",
+ "png": "png/{size}/translate.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f05ca",
+ "nerd_name": "md-translate",
+ "unicode": "🌐",
+ "ascii": "A/a"
+ }
+ },
+ {
+ "key": "accessibility",
+ "name": "Accessibility",
+ "category": "misc",
+ "aliases": [
+ "a11y"
+ ],
+ "keywords": [
+ "wheelchair",
+ "inclusive"
+ ],
+ "svg": "svg/accessibility.svg",
+ "png": "png/{size}/accessibility.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f02e6",
+ "nerd_name": "md-human",
+ "unicode": "♿",
+ "ascii": "a11y"
+ }
+ },
+ {
+ "key": "smile",
+ "name": "Smile",
+ "category": "misc",
+ "aliases": [
+ "happy"
+ ],
+ "keywords": [
+ "emoji",
+ "reaction"
+ ],
+ "svg": "svg/smile.svg",
+ "png": "png/{size}/smile.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f01f5",
+ "nerd_name": "md-emoticon_happy_outline",
+ "unicode": "🙂",
+ "ascii": ":)"
+ }
+ },
+ {
+ "key": "frown",
+ "name": "Frown",
+ "category": "misc",
+ "keywords": [
+ "sad",
+ "unhappy"
+ ],
+ "svg": "svg/frown.svg",
+ "png": "png/{size}/frown.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f01f8",
+ "nerd_name": "md-emoticon_sad_outline",
+ "unicode": "🙁",
+ "ascii": ":("
+ }
+ },
+ {
+ "key": "fingerprint",
+ "name": "Fingerprint",
+ "category": "misc",
+ "aliases": [
+ "biometric"
+ ],
+ "keywords": [
+ "passkey",
+ "touch-id"
+ ],
+ "svg": "svg/fingerprint.svg",
+ "png": "png/{size}/fingerprint.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0237",
+ "nerd_name": "md-fingerprint",
+ "unicode": "",
+ "ascii": "(@)"
+ }
+ },
+ {
+ "key": "anchor",
+ "name": "Anchor",
+ "category": "misc",
+ "keywords": [
+ "link-anchor",
+ "marine"
+ ],
+ "svg": "svg/anchor.svg",
+ "png": "png/{size}/anchor.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0031",
+ "nerd_name": "md-anchor",
+ "unicode": "⚓",
+ "ascii": "t"
+ }
+ },
+ {
+ "key": "umbrella",
+ "name": "Umbrella",
+ "category": "misc",
+ "keywords": [
+ "insurance",
+ "rain",
+ "cover"
+ ],
+ "svg": "svg/umbrella.svg",
+ "png": "png/{size}/umbrella.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f054b",
+ "nerd_name": "md-umbrella_outline",
+ "unicode": "☂",
+ "ascii": "T"
+ }
+ },
+ {
+ "key": "github",
+ "name": "GitHub",
+ "category": "brand",
+ "brand": true,
+ "trademark": "GitHub and its logo are trademarks of their owner. Use them to refer to GitHub, not to imply endorsement.",
+ "source": "simple-icons:github",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/github.svg",
+ "png": "png/{size}/github.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f02a4",
+ "nerd_name": "md-github",
+ "unicode": "🐙",
+ "ascii": "gh"
+ }
+ },
+ {
+ "key": "gitlab",
+ "name": "GitLab",
+ "category": "brand",
+ "brand": true,
+ "trademark": "GitLab and its logo are trademarks of their owner. Use them to refer to GitLab, not to imply endorsement.",
+ "source": "simple-icons:gitlab",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/gitlab.svg",
+ "png": "png/{size}/gitlab.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0ba0",
+ "nerd_name": "md-gitlab",
+ "unicode": "🦊",
+ "ascii": "gl"
+ }
+ },
+ {
+ "key": "bitbucket",
+ "name": "Bitbucket",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Bitbucket and its logo are trademarks of their owner. Use them to refer to Bitbucket, not to imply endorsement.",
+ "source": "simple-icons:bitbucket",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/bitbucket.svg",
+ "png": "png/{size}/bitbucket.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f00a8",
+ "nerd_name": "md-bitbucket",
+ "unicode": "🪣",
+ "ascii": "bb"
+ }
+ },
+ {
+ "key": "codeberg",
+ "name": "Codeberg",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Codeberg and its logo are trademarks of their owner. Use them to refer to Codeberg, not to imply endorsement.",
+ "source": "simple-icons:codeberg",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/codeberg.svg",
+ "png": "png/{size}/codeberg.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f330",
+ "nerd_name": "linux-codeberg",
+ "unicode": "⛰",
+ "ascii": "cb"
+ }
+ },
+ {
+ "key": "gitea",
+ "name": "Gitea",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Gitea and its logo are trademarks of their owner. Use them to refer to Gitea, not to imply endorsement.",
+ "source": "simple-icons:gitea",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/gitea.svg",
+ "png": "png/{size}/gitea.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f339",
+ "nerd_name": "linux-gitea",
+ "unicode": "🍵",
+ "ascii": "gt"
+ }
+ },
+ {
+ "key": "sourcehut",
+ "name": "SourceHut",
+ "category": "brand",
+ "brand": true,
+ "trademark": "SourceHut and its logo are trademarks of their owner. Use them to refer to SourceHut, not to imply endorsement.",
+ "source": "simple-icons:sourcehut",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/sourcehut.svg",
+ "png": "png/{size}/sourcehut.png",
+ "tui": {
+ "unicode": "◯",
+ "ascii": "srht"
+ }
+ },
+ {
+ "key": "npm",
+ "name": "npm",
+ "category": "brand",
+ "brand": true,
+ "trademark": "npm and its logo are trademarks of their owner. Use them to refer to npm, not to imply endorsement.",
+ "source": "simple-icons:npm",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/npm.svg",
+ "png": "png/{size}/npm.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f06f7",
+ "nerd_name": "md-npm",
+ "unicode": "📦",
+ "ascii": "npm"
+ }
+ },
+ {
+ "key": "docker",
+ "name": "Docker",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Docker and its logo are trademarks of their owner. Use them to refer to Docker, not to imply endorsement.",
+ "source": "simple-icons:docker",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/docker.svg",
+ "png": "png/{size}/docker.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0868",
+ "nerd_name": "md-docker",
+ "unicode": "🐳",
+ "ascii": "dkr"
+ }
+ },
+ {
+ "key": "kubernetes",
+ "name": "Kubernetes",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Kubernetes and its logo are trademarks of their owner. Use them to refer to Kubernetes, not to imply endorsement.",
+ "source": "simple-icons:kubernetes",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/kubernetes.svg",
+ "png": "png/{size}/kubernetes.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f10fe",
+ "nerd_name": "md-kubernetes",
+ "unicode": "☸",
+ "ascii": "k8s"
+ }
+ },
+ {
+ "key": "nodejs",
+ "name": "Node.js",
+ "category": "brand",
+ "aliases": [
+ "node"
+ ],
+ "brand": true,
+ "trademark": "Node.js and its logo are trademarks of their owner. Use them to refer to Node.js, not to imply endorsement.",
+ "source": "simple-icons:nodedotjs",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/nodejs.svg",
+ "png": "png/{size}/nodejs.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0399",
+ "nerd_name": "md-nodejs",
+ "unicode": "⬢",
+ "ascii": "node"
+ }
+ },
+ {
+ "key": "deno",
+ "name": "Deno",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Deno and its logo are trademarks of their owner. Use them to refer to Deno, not to imply endorsement.",
+ "source": "simple-icons:deno",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/deno.svg",
+ "png": "png/{size}/deno.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "e7c0",
+ "nerd_name": "dev-denojs",
+ "unicode": "🦕",
+ "ascii": "deno"
+ }
+ },
+ {
+ "key": "bun",
+ "name": "Bun",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Bun and its logo are trademarks of their owner. Use them to refer to Bun, not to imply endorsement.",
+ "source": "simple-icons:bun",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/bun.svg",
+ "png": "png/{size}/bun.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "e76f",
+ "nerd_name": "dev-bun",
+ "unicode": "🥟",
+ "ascii": "bun"
+ }
+ },
+ {
+ "key": "typescript",
+ "name": "TypeScript",
+ "category": "brand",
+ "brand": true,
+ "trademark": "TypeScript and its logo are trademarks of their owner. Use them to refer to TypeScript, not to imply endorsement.",
+ "source": "simple-icons:typescript",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/typescript.svg",
+ "png": "png/{size}/typescript.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f06e6",
+ "nerd_name": "md-language_typescript",
+ "unicode": "TS",
+ "ascii": "ts"
+ }
+ },
+ {
+ "key": "javascript",
+ "name": "JavaScript",
+ "category": "brand",
+ "brand": true,
+ "trademark": "JavaScript and its logo are trademarks of their owner. Use them to refer to JavaScript, not to imply endorsement.",
+ "source": "simple-icons:javascript",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/javascript.svg",
+ "png": "png/{size}/javascript.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f031e",
+ "nerd_name": "md-language_javascript",
+ "unicode": "JS",
+ "ascii": "js"
+ }
+ },
+ {
+ "key": "python",
+ "name": "Python",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Python and its logo are trademarks of their owner. Use them to refer to Python, not to imply endorsement.",
+ "source": "simple-icons:python",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/python.svg",
+ "png": "png/{size}/python.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0320",
+ "nerd_name": "md-language_python",
+ "unicode": "🐍",
+ "ascii": "py"
+ }
+ },
+ {
+ "key": "rust",
+ "name": "Rust",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Rust and its logo are trademarks of their owner. Use them to refer to Rust, not to imply endorsement.",
+ "source": "simple-icons:rust",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/rust.svg",
+ "png": "png/{size}/rust.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f1617",
+ "nerd_name": "md-language_rust",
+ "unicode": "🦀",
+ "ascii": "rs"
+ }
+ },
+ {
+ "key": "go",
+ "name": "Go",
+ "category": "brand",
+ "aliases": [
+ "golang"
+ ],
+ "brand": true,
+ "trademark": "Go and its logo are trademarks of their owner. Use them to refer to Go, not to imply endorsement.",
+ "source": "simple-icons:go",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/go.svg",
+ "png": "png/{size}/go.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f07d3",
+ "nerd_name": "md-language_go",
+ "unicode": "🐹",
+ "ascii": "go"
+ }
+ },
+ {
+ "key": "stack-overflow",
+ "name": "Stack Overflow",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Stack Overflow and its logo are trademarks of their owner. Use them to refer to Stack Overflow, not to imply endorsement.",
+ "source": "simple-icons:stackoverflow",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/stack-overflow.svg",
+ "png": "png/{size}/stack-overflow.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f04cc",
+ "nerd_name": "md-stack_overflow",
+ "unicode": "📚",
+ "ascii": "so"
+ }
+ },
+ {
+ "key": "vercel",
+ "name": "Vercel",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Vercel and its logo are trademarks of their owner. Use them to refer to Vercel, not to imply endorsement.",
+ "source": "simple-icons:vercel",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/vercel.svg",
+ "png": "png/{size}/vercel.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0536",
+ "nerd_name": "md-triangle",
+ "unicode": "▲",
+ "ascii": "vc"
+ }
+ },
+ {
+ "key": "netlify",
+ "name": "Netlify",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Netlify and its logo are trademarks of their owner. Use them to refer to Netlify, not to imply endorsement.",
+ "source": "simple-icons:netlify",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/netlify.svg",
+ "png": "png/{size}/netlify.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "e83c",
+ "nerd_name": "dev-netlify",
+ "unicode": "◆",
+ "ascii": "ntl"
+ }
+ },
+ {
+ "key": "cloudflare",
+ "name": "Cloudflare",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Cloudflare and its logo are trademarks of their owner. Use them to refer to Cloudflare, not to imply endorsement.",
+ "source": "simple-icons:cloudflare",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/cloudflare.svg",
+ "png": "png/{size}/cloudflare.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "e792",
+ "nerd_name": "dev-cloudflare",
+ "unicode": "☁",
+ "ascii": "cf"
+ }
+ },
+ {
+ "key": "railway",
+ "name": "Railway",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Railway and its logo are trademarks of their owner. Use them to refer to Railway, not to imply endorsement.",
+ "source": "simple-icons:railway",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/railway.svg",
+ "png": "png/{size}/railway.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "e883",
+ "nerd_name": "dev-railway",
+ "unicode": "🚆",
+ "ascii": "rly"
+ }
+ },
+ {
+ "key": "supabase",
+ "name": "Supabase",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Supabase and its logo are trademarks of their owner. Use them to refer to Supabase, not to imply endorsement.",
+ "source": "simple-icons:supabase",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/supabase.svg",
+ "png": "png/{size}/supabase.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "e8b6",
+ "nerd_name": "dev-supabase",
+ "unicode": "⚡",
+ "ascii": "sb"
+ }
+ },
+ {
+ "key": "anthropic",
+ "name": "Anthropic",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Anthropic and its logo are trademarks of their owner. Use them to refer to Anthropic, not to imply endorsement.",
+ "source": "simple-icons:anthropic",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/anthropic.svg",
+ "png": "png/{size}/anthropic.png",
+ "tui": {
+ "unicode": "Ⓐ",
+ "ascii": "ant"
+ }
+ },
+ {
+ "key": "claude",
+ "name": "Claude",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Claude and its logo are trademarks of their owner. Use them to refer to Claude, not to imply endorsement.",
+ "source": "simple-icons:claude",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/claude.svg",
+ "png": "png/{size}/claude.png",
+ "tui": {
+ "unicode": "✳",
+ "ascii": "cl"
+ }
+ },
+ {
+ "key": "figma",
+ "name": "Figma",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Figma and its logo are trademarks of their owner. Use them to refer to Figma, not to imply endorsement.",
+ "source": "simple-icons:figma",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/figma.svg",
+ "png": "png/{size}/figma.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "ef47",
+ "nerd_name": "fa-figma",
+ "unicode": "🎨",
+ "ascii": "fig"
+ }
+ },
+ {
+ "key": "notion",
+ "name": "Notion",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Notion and its logo are trademarks of their owner. Use them to refer to Notion, not to imply endorsement.",
+ "source": "simple-icons:notion",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/notion.svg",
+ "png": "png/{size}/notion.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "e848",
+ "nerd_name": "dev-notion",
+ "unicode": "Ⓝ",
+ "ascii": "ntn"
+ }
+ },
+ {
+ "key": "trello",
+ "name": "Trello",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Trello and its logo are trademarks of their owner. Use them to refer to Trello, not to imply endorsement.",
+ "source": "simple-icons:trello",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/trello.svg",
+ "png": "png/{size}/trello.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0532",
+ "nerd_name": "md-trello",
+ "unicode": "▤",
+ "ascii": "tr"
+ }
+ },
+ {
+ "key": "jira",
+ "name": "Jira",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Jira and its logo are trademarks of their owner. Use them to refer to Jira, not to imply endorsement.",
+ "source": "simple-icons:jira",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/jira.svg",
+ "png": "png/{size}/jira.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0303",
+ "nerd_name": "md-jira",
+ "unicode": "◈",
+ "ascii": "jira"
+ }
+ },
+ {
+ "key": "keybase",
+ "name": "Keybase",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Keybase and its logo are trademarks of their owner. Use them to refer to Keybase, not to imply endorsement.",
+ "source": "simple-icons:keybase",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/keybase.svg",
+ "png": "png/{size}/keybase.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "edbf",
+ "nerd_name": "fa-keybase",
+ "unicode": "🔑",
+ "ascii": "kb"
+ }
+ },
+ {
+ "key": "x",
+ "name": "X",
+ "category": "brand",
+ "aliases": [
+ "twitter"
+ ],
+ "brand": true,
+ "trademark": "X and its logo are trademarks of their owner. Use them to refer to X, not to imply endorsement.",
+ "source": "simple-icons:x",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/x.svg",
+ "png": "png/{size}/x.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0b05",
+ "nerd_name": "md-alpha_x",
+ "unicode": "𝕏",
+ "ascii": "x"
+ }
+ },
+ {
+ "key": "bluesky",
+ "name": "Bluesky",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Bluesky and its logo are trademarks of their owner. Use them to refer to Bluesky, not to imply endorsement.",
+ "source": "simple-icons:bluesky",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/bluesky.svg",
+ "png": "png/{size}/bluesky.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f1589",
+ "nerd_name": "md-butterfly",
+ "unicode": "🦋",
+ "ascii": "bsky"
+ }
+ },
+ {
+ "key": "mastodon",
+ "name": "Mastodon",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Mastodon and its logo are trademarks of their owner. Use them to refer to Mastodon, not to imply endorsement.",
+ "source": "simple-icons:mastodon",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/mastodon.svg",
+ "png": "png/{size}/mastodon.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0ad1",
+ "nerd_name": "md-mastodon",
+ "unicode": "🐘",
+ "ascii": "mdn"
+ }
+ },
+ {
+ "key": "threads",
+ "name": "Threads",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Threads and its logo are trademarks of their owner. Use them to refer to Threads, not to imply endorsement.",
+ "source": "simple-icons:threads",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/threads.svg",
+ "png": "png/{size}/threads.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0065",
+ "nerd_name": "md-at",
+ "unicode": "@",
+ "ascii": "th"
+ }
+ },
+ {
+ "key": "instagram",
+ "name": "Instagram",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Instagram and its logo are trademarks of their owner. Use them to refer to Instagram, not to imply endorsement.",
+ "source": "simple-icons:instagram",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/instagram.svg",
+ "png": "png/{size}/instagram.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f02fe",
+ "nerd_name": "md-instagram",
+ "unicode": "📷",
+ "ascii": "ig"
+ }
+ },
+ {
+ "key": "facebook",
+ "name": "Facebook",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Facebook and its logo are trademarks of their owner. Use them to refer to Facebook, not to imply endorsement.",
+ "source": "simple-icons:facebook",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/facebook.svg",
+ "png": "png/{size}/facebook.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f020c",
+ "nerd_name": "md-facebook",
+ "unicode": "ⓕ",
+ "ascii": "fb"
+ }
+ },
+ {
+ "key": "tiktok",
+ "name": "TikTok",
+ "category": "brand",
+ "brand": true,
+ "trademark": "TikTok and its logo are trademarks of their owner. Use them to refer to TikTok, not to imply endorsement.",
+ "source": "simple-icons:tiktok",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/tiktok.svg",
+ "png": "png/{size}/tiktok.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0387",
+ "nerd_name": "md-music_note",
+ "unicode": "♪",
+ "ascii": "tt"
+ }
+ },
+ {
+ "key": "youtube",
+ "name": "YouTube",
+ "category": "brand",
+ "brand": true,
+ "trademark": "YouTube and its logo are trademarks of their owner. Use them to refer to YouTube, not to imply endorsement.",
+ "source": "simple-icons:youtube",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/youtube.svg",
+ "png": "png/{size}/youtube.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f05c3",
+ "nerd_name": "md-youtube",
+ "unicode": "▶",
+ "ascii": "yt"
+ }
+ },
+ {
+ "key": "twitch",
+ "name": "Twitch",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Twitch and its logo are trademarks of their owner. Use them to refer to Twitch, not to imply endorsement.",
+ "source": "simple-icons:twitch",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/twitch.svg",
+ "png": "png/{size}/twitch.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0543",
+ "nerd_name": "md-twitch",
+ "unicode": "📺",
+ "ascii": "ttv"
+ }
+ },
+ {
+ "key": "kick",
+ "name": "Kick",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Kick and its logo are trademarks of their owner. Use them to refer to Kick, not to imply endorsement.",
+ "source": "simple-icons:kick",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/kick.svg",
+ "png": "png/{size}/kick.png",
+ "tui": {
+ "unicode": "Ⓚ",
+ "ascii": "kick"
+ }
+ },
+ {
+ "key": "reddit",
+ "name": "Reddit",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Reddit and its logo are trademarks of their owner. Use them to refer to Reddit, not to imply endorsement.",
+ "source": "simple-icons:reddit",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/reddit.svg",
+ "png": "png/{size}/reddit.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f044d",
+ "nerd_name": "md-reddit",
+ "unicode": "👽",
+ "ascii": "rd"
+ }
+ },
+ {
+ "key": "pinterest",
+ "name": "Pinterest",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Pinterest and its logo are trademarks of their owner. Use them to refer to Pinterest, not to imply endorsement.",
+ "source": "simple-icons:pinterest",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/pinterest.svg",
+ "png": "png/{size}/pinterest.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0407",
+ "nerd_name": "md-pinterest",
+ "unicode": "📌",
+ "ascii": "pin"
+ }
+ },
+ {
+ "key": "snapchat",
+ "name": "Snapchat",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Snapchat and its logo are trademarks of their owner. Use them to refer to Snapchat, not to imply endorsement.",
+ "source": "simple-icons:snapchat",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/snapchat.svg",
+ "png": "png/{size}/snapchat.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f04b6",
+ "nerd_name": "md-snapchat",
+ "unicode": "👻",
+ "ascii": "snap"
+ }
+ },
+ {
+ "key": "tumblr",
+ "name": "Tumblr",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Tumblr and its logo are trademarks of their owner. Use them to refer to Tumblr, not to imply endorsement.",
+ "source": "simple-icons:tumblr",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/tumblr.svg",
+ "png": "png/{size}/tumblr.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f173",
+ "nerd_name": "fa-tumblr",
+ "unicode": "ⓣ",
+ "ascii": "tb"
+ }
+ },
+ {
+ "key": "discord",
+ "name": "Discord",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Discord and its logo are trademarks of their owner. Use them to refer to Discord, not to imply endorsement.",
+ "source": "simple-icons:discord",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/discord.svg",
+ "png": "png/{size}/discord.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f066f",
+ "nerd_name": "md-discord",
+ "unicode": "🎮",
+ "ascii": "dc"
+ }
+ },
+ {
+ "key": "telegram",
+ "name": "Telegram",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Telegram and its logo are trademarks of their owner. Use them to refer to Telegram, not to imply endorsement.",
+ "source": "simple-icons:telegram",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/telegram.svg",
+ "png": "png/{size}/telegram.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f2c6",
+ "nerd_name": "fa-telegram",
+ "unicode": "✈",
+ "ascii": "tg"
+ }
+ },
+ {
+ "key": "signal",
+ "name": "Signal",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Signal and its logo are trademarks of their owner. Use them to refer to Signal, not to imply endorsement.",
+ "source": "simple-icons:signal",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/signal.svg",
+ "png": "png/{size}/signal.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f116d",
+ "nerd_name": "md-message_lock_outline",
+ "unicode": "💬",
+ "ascii": "sig"
+ }
+ },
+ {
+ "key": "whatsapp",
+ "name": "WhatsApp",
+ "category": "brand",
+ "brand": true,
+ "trademark": "WhatsApp and its logo are trademarks of their owner. Use them to refer to WhatsApp, not to imply endorsement.",
+ "source": "simple-icons:whatsapp",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/whatsapp.svg",
+ "png": "png/{size}/whatsapp.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f05a3",
+ "nerd_name": "md-whatsapp",
+ "unicode": "📞",
+ "ascii": "wa"
+ }
+ },
+ {
+ "key": "messenger",
+ "name": "Messenger",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Messenger and its logo are trademarks of their owner. Use them to refer to Messenger, not to imply endorsement.",
+ "source": "simple-icons:messenger",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/messenger.svg",
+ "png": "png/{size}/messenger.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f020e",
+ "nerd_name": "md-facebook_messenger",
+ "unicode": "💬",
+ "ascii": "msg"
+ }
+ },
+ {
+ "key": "wechat",
+ "name": "WeChat",
+ "category": "brand",
+ "brand": true,
+ "trademark": "WeChat and its logo are trademarks of their owner. Use them to refer to WeChat, not to imply endorsement.",
+ "source": "simple-icons:wechat",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/wechat.svg",
+ "png": "png/{size}/wechat.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0611",
+ "nerd_name": "md-wechat",
+ "unicode": "💬",
+ "ascii": "wx"
+ }
+ },
+ {
+ "key": "line",
+ "name": "LINE",
+ "category": "brand",
+ "brand": true,
+ "trademark": "LINE and its logo are trademarks of their owner. Use them to refer to LINE, not to imply endorsement.",
+ "source": "simple-icons:line",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/line.svg",
+ "png": "png/{size}/line.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f2fb",
+ "nerd_name": "fa-line",
+ "unicode": "💬",
+ "ascii": "line"
+ }
+ },
+ {
+ "key": "matrix",
+ "name": "Matrix",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Matrix and its logo are trademarks of their owner. Use them to refer to Matrix, not to imply endorsement.",
+ "source": "simple-icons:matrix",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/matrix.svg",
+ "png": "png/{size}/matrix.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0628",
+ "nerd_name": "md-matrix",
+ "unicode": "Ⓜ",
+ "ascii": "[m]"
+ }
+ },
+ {
+ "key": "element",
+ "name": "Element",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Element and its logo are trademarks of their owner. Use them to refer to Element, not to imply endorsement.",
+ "source": "simple-icons:element",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/element.svg",
+ "png": "png/{size}/element.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0628",
+ "nerd_name": "md-matrix",
+ "unicode": "Ⓔ",
+ "ascii": "el"
+ }
+ },
+ {
+ "key": "zulip",
+ "name": "Zulip",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Zulip and its logo are trademarks of their owner. Use them to refer to Zulip, not to imply endorsement.",
+ "source": "simple-icons:zulip",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/zulip.svg",
+ "png": "png/{size}/zulip.png",
+ "tui": {
+ "unicode": "Ⓩ",
+ "ascii": "zl"
+ }
+ },
+ {
+ "key": "mattermost",
+ "name": "Mattermost",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Mattermost and its logo are trademarks of their owner. Use them to refer to Mattermost, not to imply endorsement.",
+ "source": "simple-icons:mattermost",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/mattermost.svg",
+ "png": "png/{size}/mattermost.png",
+ "tui": {
+ "unicode": "Ⓜ",
+ "ascii": "mm"
+ }
+ },
+ {
+ "key": "rocketchat",
+ "name": "Rocket.Chat",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Rocket.Chat and its logo are trademarks of their owner. Use them to refer to Rocket.Chat, not to imply endorsement.",
+ "source": "simple-icons:rocketdotchat",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/rocketchat.svg",
+ "png": "png/{size}/rocketchat.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "ed20",
+ "nerd_name": "fa-rocketchat",
+ "unicode": "🚀",
+ "ascii": "rc"
+ }
+ },
+ {
+ "key": "xmpp",
+ "name": "XMPP",
+ "category": "brand",
+ "brand": true,
+ "trademark": "XMPP and its logo are trademarks of their owner. Use them to refer to XMPP, not to imply endorsement.",
+ "source": "simple-icons:xmpp",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/xmpp.svg",
+ "png": "png/{size}/xmpp.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f07ff",
+ "nerd_name": "md-xmpp",
+ "unicode": "💬",
+ "ascii": "xmpp"
+ }
+ },
+ {
+ "key": "lemmy",
+ "name": "Lemmy",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Lemmy and its logo are trademarks of their owner. Use them to refer to Lemmy, not to imply endorsement.",
+ "source": "simple-icons:lemmy",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/lemmy.svg",
+ "png": "png/{size}/lemmy.png",
+ "tui": {
+ "unicode": "🐭",
+ "ascii": "lmy"
+ }
+ },
+ {
+ "key": "pixelfed",
+ "name": "Pixelfed",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Pixelfed and its logo are trademarks of their owner. Use them to refer to Pixelfed, not to imply endorsement.",
+ "source": "simple-icons:pixelfed",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/pixelfed.svg",
+ "png": "png/{size}/pixelfed.png",
+ "tui": {
+ "unicode": "🖼",
+ "ascii": "pxf"
+ }
+ },
+ {
+ "key": "peertube",
+ "name": "PeerTube",
+ "category": "brand",
+ "brand": true,
+ "trademark": "PeerTube and its logo are trademarks of their owner. Use them to refer to PeerTube, not to imply endorsement.",
+ "source": "simple-icons:peertube",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/peertube.svg",
+ "png": "png/{size}/peertube.png",
+ "tui": {
+ "unicode": "▶",
+ "ascii": "pt"
+ }
+ },
+ {
+ "key": "misskey",
+ "name": "Misskey",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Misskey and its logo are trademarks of their owner. Use them to refer to Misskey, not to imply endorsement.",
+ "source": "simple-icons:misskey",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/misskey.svg",
+ "png": "png/{size}/misskey.png",
+ "tui": {
+ "unicode": "Ⓜ",
+ "ascii": "mk"
+ }
+ },
+ {
+ "key": "farcaster",
+ "name": "Farcaster",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Farcaster and its logo are trademarks of their owner. Use them to refer to Farcaster, not to imply endorsement.",
+ "source": "simple-icons:farcaster",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/farcaster.svg",
+ "png": "png/{size}/farcaster.png",
+ "tui": {
+ "unicode": "⛩",
+ "ascii": "fc"
+ }
+ },
+ {
+ "key": "google-meet",
+ "name": "Google Meet",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Google Meet and its logo are trademarks of their owner. Use them to refer to Google Meet, not to imply endorsement.",
+ "source": "simple-icons:googlemeet",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/google-meet.svg",
+ "png": "png/{size}/google-meet.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0bdc",
+ "nerd_name": "md-video_outline",
+ "unicode": "📹",
+ "ascii": "meet"
+ }
+ },
+ {
+ "key": "zoom",
+ "name": "Zoom",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Zoom and its logo are trademarks of their owner. Use them to refer to Zoom, not to imply endorsement.",
+ "source": "simple-icons:zoom",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/zoom.svg",
+ "png": "png/{size}/zoom.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0567",
+ "nerd_name": "md-video",
+ "unicode": "📹",
+ "ascii": "zm"
+ }
+ },
+ {
+ "key": "gmail",
+ "name": "Gmail",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Gmail and its logo are trademarks of their owner. Use them to refer to Gmail, not to imply endorsement.",
+ "source": "simple-icons:gmail",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/gmail.svg",
+ "png": "png/{size}/gmail.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f02ab",
+ "nerd_name": "md-gmail",
+ "unicode": "✉",
+ "ascii": "gm"
+ }
+ },
+ {
+ "key": "proton-mail",
+ "name": "Proton Mail",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Proton Mail and its logo are trademarks of their owner. Use them to refer to Proton Mail, not to imply endorsement.",
+ "source": "simple-icons:protonmail",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/proton-mail.svg",
+ "png": "png/{size}/proton-mail.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f01f1",
+ "nerd_name": "md-email_lock",
+ "unicode": "✉",
+ "ascii": "pm"
+ }
+ },
+ {
+ "key": "spotify",
+ "name": "Spotify",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Spotify and its logo are trademarks of their owner. Use them to refer to Spotify, not to imply endorsement.",
+ "source": "simple-icons:spotify",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/spotify.svg",
+ "png": "png/{size}/spotify.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f04c7",
+ "nerd_name": "md-spotify",
+ "unicode": "🎵",
+ "ascii": "spot"
+ }
+ },
+ {
+ "key": "apple-music",
+ "name": "Apple Music",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Apple Music and its logo are trademarks of their owner. Use them to refer to Apple Music, not to imply endorsement.",
+ "source": "simple-icons:applemusic",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/apple-music.svg",
+ "png": "png/{size}/apple-music.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f2eb",
+ "nerd_name": "fa-itunes_note",
+ "unicode": "🎵",
+ "ascii": "am"
+ }
+ },
+ {
+ "key": "soundcloud",
+ "name": "SoundCloud",
+ "category": "brand",
+ "brand": true,
+ "trademark": "SoundCloud and its logo are trademarks of their owner. Use them to refer to SoundCloud, not to imply endorsement.",
+ "source": "simple-icons:soundcloud",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/soundcloud.svg",
+ "png": "png/{size}/soundcloud.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f04c0",
+ "nerd_name": "md-soundcloud",
+ "unicode": "☁",
+ "ascii": "sc"
+ }
+ },
+ {
+ "key": "bandcamp",
+ "name": "Bandcamp",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Bandcamp and its logo are trademarks of their owner. Use them to refer to Bandcamp, not to imply endorsement.",
+ "source": "simple-icons:bandcamp",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/bandcamp.svg",
+ "png": "png/{size}/bandcamp.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f2d5",
+ "nerd_name": "fa-bandcamp",
+ "unicode": "◢",
+ "ascii": "bc"
+ }
+ },
+ {
+ "key": "vimeo",
+ "name": "Vimeo",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Vimeo and its logo are trademarks of their owner. Use them to refer to Vimeo, not to imply endorsement.",
+ "source": "simple-icons:vimeo",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/vimeo.svg",
+ "png": "png/{size}/vimeo.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0577",
+ "nerd_name": "md-vimeo",
+ "unicode": "ⓥ",
+ "ascii": "vm"
+ }
+ },
+ {
+ "key": "medium",
+ "name": "Medium",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Medium and its logo are trademarks of their owner. Use them to refer to Medium, not to imply endorsement.",
+ "source": "simple-icons:medium",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/medium.svg",
+ "png": "png/{size}/medium.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f23a",
+ "nerd_name": "fa-medium",
+ "unicode": "Ⓜ",
+ "ascii": "md"
+ }
+ },
+ {
+ "key": "substack",
+ "name": "Substack",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Substack and its logo are trademarks of their owner. Use them to refer to Substack, not to imply endorsement.",
+ "source": "simple-icons:substack",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/substack.svg",
+ "png": "png/{size}/substack.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0fb1",
+ "nerd_name": "md-email_newsletter",
+ "unicode": "✉",
+ "ascii": "ss"
+ }
+ },
+ {
+ "key": "dev-to",
+ "name": "DEV Community",
+ "category": "brand",
+ "brand": true,
+ "trademark": "DEV Community and its logo are trademarks of their owner. Use them to refer to DEV Community, not to imply endorsement.",
+ "source": "simple-icons:devdotto",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/dev-to.svg",
+ "png": "png/{size}/dev-to.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "eef4",
+ "nerd_name": "fa-dev",
+ "unicode": "DEV",
+ "ascii": "dev"
+ }
+ },
+ {
+ "key": "hashnode",
+ "name": "Hashnode",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Hashnode and its logo are trademarks of their owner. Use them to refer to Hashnode, not to imply endorsement.",
+ "source": "simple-icons:hashnode",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/hashnode.svg",
+ "png": "png/{size}/hashnode.png",
+ "tui": {
+ "unicode": "#",
+ "ascii": "hn#"
+ }
+ },
+ {
+ "key": "ghost",
+ "name": "Ghost",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Ghost and its logo are trademarks of their owner. Use them to refer to Ghost, not to imply endorsement.",
+ "source": "simple-icons:ghost",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/ghost.svg",
+ "png": "png/{size}/ghost.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f02a0",
+ "nerd_name": "md-ghost",
+ "unicode": "👻",
+ "ascii": "gst"
+ }
+ },
+ {
+ "key": "wordpress",
+ "name": "WordPress",
+ "category": "brand",
+ "brand": true,
+ "trademark": "WordPress and its logo are trademarks of their owner. Use them to refer to WordPress, not to imply endorsement.",
+ "source": "simple-icons:wordpress",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/wordpress.svg",
+ "png": "png/{size}/wordpress.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f05b4",
+ "nerd_name": "md-wordpress",
+ "unicode": "Ⓦ",
+ "ascii": "wp"
+ }
+ },
+ {
+ "key": "product-hunt",
+ "name": "Product Hunt",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Product Hunt and its logo are trademarks of their owner. Use them to refer to Product Hunt, not to imply endorsement.",
+ "source": "simple-icons:producthunt",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/product-hunt.svg",
+ "png": "png/{size}/product-hunt.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f288",
+ "nerd_name": "fa-product_hunt",
+ "unicode": "Ⓟ",
+ "ascii": "ph"
+ }
+ },
+ {
+ "key": "y-combinator",
+ "name": "Y Combinator",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Y Combinator and its logo are trademarks of their owner. Use them to refer to Y Combinator, not to imply endorsement.",
+ "source": "simple-icons:ycombinator",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/y-combinator.svg",
+ "png": "png/{size}/y-combinator.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f23b",
+ "nerd_name": "fa-y_combinator",
+ "unicode": "Ⓨ",
+ "ascii": "yc"
+ }
+ },
+ {
+ "key": "dribbble",
+ "name": "Dribbble",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Dribbble and its logo are trademarks of their owner. Use them to refer to Dribbble, not to imply endorsement.",
+ "source": "simple-icons:dribbble",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/dribbble.svg",
+ "png": "png/{size}/dribbble.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f17d",
+ "nerd_name": "fa-dribbble",
+ "unicode": "🏀",
+ "ascii": "drb"
+ }
+ },
+ {
+ "key": "behance",
+ "name": "Behance",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Behance and its logo are trademarks of their owner. Use them to refer to Behance, not to imply endorsement.",
+ "source": "simple-icons:behance",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/behance.svg",
+ "png": "png/{size}/behance.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f1b4",
+ "nerd_name": "fa-behance",
+ "unicode": "Bē",
+ "ascii": "be"
+ }
+ },
+ {
+ "key": "patreon",
+ "name": "Patreon",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Patreon and its logo are trademarks of their owner. Use them to refer to Patreon, not to imply endorsement.",
+ "source": "simple-icons:patreon",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/patreon.svg",
+ "png": "png/{size}/patreon.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0882",
+ "nerd_name": "md-patreon",
+ "unicode": "Ⓟ",
+ "ascii": "pat"
+ }
+ },
+ {
+ "key": "ko-fi",
+ "name": "Ko-fi",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Ko-fi and its logo are trademarks of their owner. Use them to refer to Ko-fi, not to imply endorsement.",
+ "source": "simple-icons:kofi",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/ko-fi.svg",
+ "png": "png/{size}/ko-fi.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0176",
+ "nerd_name": "md-coffee",
+ "unicode": "☕",
+ "ascii": "kofi"
+ }
+ },
+ {
+ "key": "buy-me-a-coffee",
+ "name": "Buy Me a Coffee",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Buy Me a Coffee and its logo are trademarks of their owner. Use them to refer to Buy Me a Coffee, not to imply endorsement.",
+ "source": "simple-icons:buymeacoffee",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/buy-me-a-coffee.svg",
+ "png": "png/{size}/buy-me-a-coffee.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0176",
+ "nerd_name": "md-coffee",
+ "unicode": "☕",
+ "ascii": "bmc"
+ }
+ },
+ {
+ "key": "paypal",
+ "name": "PayPal",
+ "category": "brand",
+ "brand": true,
+ "trademark": "PayPal and its logo are trademarks of their owner. Use them to refer to PayPal, not to imply endorsement.",
+ "source": "simple-icons:paypal",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/paypal.svg",
+ "png": "png/{size}/paypal.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f1ed",
+ "nerd_name": "fa-paypal",
+ "unicode": "Ⓟ",
+ "ascii": "pp"
+ }
+ },
+ {
+ "key": "stripe",
+ "name": "Stripe",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Stripe and its logo are trademarks of their owner. Use them to refer to Stripe, not to imply endorsement.",
+ "source": "simple-icons:stripe",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/stripe.svg",
+ "png": "png/{size}/stripe.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "ed53",
+ "nerd_name": "fa-stripe",
+ "unicode": "Ⓢ",
+ "ascii": "str"
+ }
+ },
+ {
+ "key": "bitcoin",
+ "name": "Bitcoin",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Bitcoin and its logo are trademarks of their owner. Use them to refer to Bitcoin, not to imply endorsement.",
+ "source": "simple-icons:bitcoin",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/bitcoin.svg",
+ "png": "png/{size}/bitcoin.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0813",
+ "nerd_name": "md-bitcoin",
+ "unicode": "₿",
+ "ascii": "btc"
+ }
+ },
+ {
+ "key": "ethereum",
+ "name": "Ethereum",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Ethereum and its logo are trademarks of their owner. Use them to refer to Ethereum, not to imply endorsement.",
+ "source": "simple-icons:ethereum",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/ethereum.svg",
+ "png": "png/{size}/ethereum.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f086a",
+ "nerd_name": "md-ethereum",
+ "unicode": "Ξ",
+ "ascii": "eth"
+ }
+ },
+ {
+ "key": "etsy",
+ "name": "Etsy",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Etsy and its logo are trademarks of their owner. Use them to refer to Etsy, not to imply endorsement.",
+ "source": "simple-icons:etsy",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/etsy.svg",
+ "png": "png/{size}/etsy.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f2d7",
+ "nerd_name": "fa-etsy",
+ "unicode": "Ⓔ",
+ "ascii": "etsy"
+ }
+ },
+ {
+ "key": "shopify",
+ "name": "Shopify",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Shopify and its logo are trademarks of their owner. Use them to refer to Shopify, not to imply endorsement.",
+ "source": "simple-icons:shopify",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/shopify.svg",
+ "png": "png/{size}/shopify.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f049a",
+ "nerd_name": "md-shopping",
+ "unicode": "🛍",
+ "ascii": "shp"
+ }
+ },
+ {
+ "key": "ebay",
+ "name": "eBay",
+ "category": "brand",
+ "brand": true,
+ "trademark": "eBay and its logo are trademarks of their owner. Use them to refer to eBay, not to imply endorsement.",
+ "source": "simple-icons:ebay",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/ebay.svg",
+ "png": "png/{size}/ebay.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "edbe",
+ "nerd_name": "fa-ebay",
+ "unicode": "ⓔ",
+ "ascii": "ebay"
+ }
+ },
+ {
+ "key": "apple",
+ "name": "Apple",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Apple and its logo are trademarks of their owner. Use them to refer to Apple, not to imply endorsement.",
+ "source": "simple-icons:apple",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/apple.svg",
+ "png": "png/{size}/apple.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0035",
+ "nerd_name": "md-apple",
+ "unicode": "🍎",
+ "ascii": "mac"
+ }
+ },
+ {
+ "key": "google",
+ "name": "Google",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Google and its logo are trademarks of their owner. Use them to refer to Google, not to imply endorsement.",
+ "source": "simple-icons:google",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/google.svg",
+ "png": "png/{size}/google.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f02ad",
+ "nerd_name": "md-google",
+ "unicode": "Ⓖ",
+ "ascii": "g"
+ }
+ },
+ {
+ "key": "android",
+ "name": "Android",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Android and its logo are trademarks of their owner. Use them to refer to Android, not to imply endorsement.",
+ "source": "simple-icons:android",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/android.svg",
+ "png": "png/{size}/android.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0032",
+ "nerd_name": "md-android",
+ "unicode": "🤖",
+ "ascii": "and"
+ }
+ },
+ {
+ "key": "linux",
+ "name": "Linux",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Linux and its logo are trademarks of their owner. Use them to refer to Linux, not to imply endorsement.",
+ "source": "simple-icons:linux",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/linux.svg",
+ "png": "png/{size}/linux.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f033d",
+ "nerd_name": "md-linux",
+ "unicode": "🐧",
+ "ascii": "lnx"
+ }
+ },
+ {
+ "key": "ubuntu",
+ "name": "Ubuntu",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Ubuntu and its logo are trademarks of their owner. Use them to refer to Ubuntu, not to imply endorsement.",
+ "source": "simple-icons:ubuntu",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/ubuntu.svg",
+ "png": "png/{size}/ubuntu.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0548",
+ "nerd_name": "md-ubuntu",
+ "unicode": "◎",
+ "ascii": "ubu"
+ }
+ },
+ {
+ "key": "debian",
+ "name": "Debian",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Debian and its logo are trademarks of their owner. Use them to refer to Debian, not to imply endorsement.",
+ "source": "simple-icons:debian",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/debian.svg",
+ "png": "png/{size}/debian.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f08da",
+ "nerd_name": "md-debian",
+ "unicode": "🌀",
+ "ascii": "deb"
+ }
+ },
+ {
+ "key": "firefox",
+ "name": "Firefox",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Firefox and its logo are trademarks of their owner. Use them to refer to Firefox, not to imply endorsement.",
+ "source": "simple-icons:firefox",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/firefox.svg",
+ "png": "png/{size}/firefox.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0239",
+ "nerd_name": "md-firefox",
+ "unicode": "🦊",
+ "ascii": "ff"
+ }
+ },
+ {
+ "key": "chrome",
+ "name": "Chrome",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Chrome and its logo are trademarks of their owner. Use them to refer to Chrome, not to imply endorsement.",
+ "source": "simple-icons:googlechrome",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/chrome.svg",
+ "png": "png/{size}/chrome.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f02af",
+ "nerd_name": "md-google_chrome",
+ "unicode": "◉",
+ "ascii": "chr"
+ }
+ },
+ {
+ "key": "safari",
+ "name": "Safari",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Safari and its logo are trademarks of their owner. Use them to refer to Safari, not to imply endorsement.",
+ "source": "simple-icons:safari",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/safari.svg",
+ "png": "png/{size}/safari.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0039",
+ "nerd_name": "md-apple_safari",
+ "unicode": "🧭",
+ "ascii": "saf"
+ }
+ },
+ {
+ "key": "brave",
+ "name": "Brave",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Brave and its logo are trademarks of their owner. Use them to refer to Brave, not to imply endorsement.",
+ "source": "simple-icons:brave",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/brave.svg",
+ "png": "png/{size}/brave.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0499",
+ "nerd_name": "md-shield_outline",
+ "unicode": "🦁",
+ "ascii": "brv"
+ }
+ },
+ {
+ "key": "tor",
+ "name": "Tor",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Tor and its logo are trademarks of their owner. Use them to refer to Tor, not to imply endorsement.",
+ "source": "simple-icons:torproject",
+ "license": "CC0-1.0",
+ "made_by": "human",
+ "svg": "svg/tor.svg",
+ "png": "png/{size}/tor.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f371",
+ "nerd_name": "linux-tor",
+ "unicode": "🧅",
+ "ascii": "tor"
+ }
+ },
+ {
+ "key": "slack",
+ "name": "Slack",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Slack and its logo are trademarks of their owner. Use them to refer to Slack, not to imply endorsement.",
+ "source": "font-awesome:slack",
+ "license": "CC-BY-4.0",
+ "made_by": "human",
+ "svg": "svg/slack.svg",
+ "png": "png/{size}/slack.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f04b1",
+ "nerd_name": "md-slack",
+ "unicode": "#",
+ "ascii": "slk"
+ }
+ },
+ {
+ "key": "linkedin",
+ "name": "LinkedIn",
+ "category": "brand",
+ "brand": true,
+ "trademark": "LinkedIn and its logo are trademarks of their owner. Use them to refer to LinkedIn, not to imply endorsement.",
+ "source": "font-awesome:linkedin",
+ "license": "CC-BY-4.0",
+ "made_by": "human",
+ "svg": "svg/linkedin.svg",
+ "png": "png/{size}/linkedin.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f033b",
+ "nerd_name": "md-linkedin",
+ "unicode": "ⓘ",
+ "ascii": "in"
+ }
+ },
+ {
+ "key": "windows",
+ "name": "Windows",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Windows and its logo are trademarks of their owner. Use them to refer to Windows, not to imply endorsement.",
+ "source": "font-awesome:windows",
+ "license": "CC-BY-4.0",
+ "made_by": "human",
+ "svg": "svg/windows.svg",
+ "png": "png/{size}/windows.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f05b3",
+ "nerd_name": "md-microsoft_windows",
+ "unicode": "⊞",
+ "ascii": "win"
+ }
+ },
+ {
+ "key": "microsoft",
+ "name": "Microsoft",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Microsoft and its logo are trademarks of their owner. Use them to refer to Microsoft, not to imply endorsement.",
+ "source": "font-awesome:microsoft",
+ "license": "CC-BY-4.0",
+ "made_by": "human",
+ "svg": "svg/microsoft.svg",
+ "png": "png/{size}/microsoft.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0372",
+ "nerd_name": "md-microsoft",
+ "unicode": "⊞",
+ "ascii": "ms"
+ }
+ },
+ {
+ "key": "hacker-news",
+ "name": "Hacker News",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Hacker News and its logo are trademarks of their owner. Use them to refer to Hacker News, not to imply endorsement.",
+ "source": "font-awesome:hacker-news",
+ "license": "CC-BY-4.0",
+ "made_by": "human",
+ "svg": "svg/hacker-news.svg",
+ "png": "png/{size}/hacker-news.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f1d4",
+ "nerd_name": "fa-hacker_news",
+ "unicode": "Ⓨ",
+ "ascii": "hn"
+ }
+ },
+ {
+ "key": "openai",
+ "name": "OpenAI",
+ "category": "brand",
+ "brand": true,
+ "trademark": "OpenAI and its logo are trademarks of their owner. Use them to refer to OpenAI, not to imply endorsement.",
+ "source": "font-awesome:openai",
+ "license": "CC-BY-4.0",
+ "made_by": "human",
+ "svg": "svg/openai.svg",
+ "png": "png/{size}/openai.png",
+ "tui": {
+ "unicode": "✺",
+ "ascii": "oai"
+ }
+ },
+ {
+ "key": "skype",
+ "name": "Skype",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Skype and its logo are trademarks of their owner. Use them to refer to Skype, not to imply endorsement.",
+ "source": "font-awesome:skype",
+ "license": "CC-BY-4.0",
+ "made_by": "human",
+ "svg": "svg/skype.svg",
+ "png": "png/{size}/skype.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f04af",
+ "nerd_name": "md-skype",
+ "unicode": "Ⓢ",
+ "ascii": "sky"
+ }
+ },
+ {
+ "key": "codepen",
+ "name": "CodePen",
+ "category": "brand",
+ "brand": true,
+ "trademark": "CodePen and its logo are trademarks of their owner. Use them to refer to CodePen, not to imply endorsement.",
+ "source": "font-awesome:codepen",
+ "license": "CC-BY-4.0",
+ "made_by": "human",
+ "svg": "svg/codepen.svg",
+ "png": "png/{size}/codepen.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f0175",
+ "nerd_name": "md-codepen",
+ "unicode": "⬡",
+ "ascii": "cpn"
+ }
+ },
+ {
+ "key": "amazon",
+ "name": "Amazon",
+ "category": "brand",
+ "brand": true,
+ "trademark": "Amazon and its logo are trademarks of their owner. Use them to refer to Amazon, not to imply endorsement.",
+ "source": "font-awesome:amazon",
+ "license": "CC-BY-4.0",
+ "made_by": "human",
+ "svg": "svg/amazon.svg",
+ "png": "png/{size}/amazon.png",
+ "tui": {
+ "nerd": "",
+ "nerd_code": "f270",
+ "nerd_name": "fa-amazon",
+ "unicode": "ⓐ",
+ "ascii": "amz"
+ }
+ }
+ ]
+}
diff --git a/apps/logicsrc-web/public/openicon/set/svg/accessibility.svg b/apps/logicsrc-web/public/openicon/set/svg/accessibility.svg
new file mode 100644
index 0000000..5b7a6b2
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/accessibility.svg
@@ -0,0 +1 @@
+Accessibility
diff --git a/apps/logicsrc-web/public/openicon/set/svg/activity.svg b/apps/logicsrc-web/public/openicon/set/svg/activity.svg
new file mode 100644
index 0000000..a88ca51
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/activity.svg
@@ -0,0 +1 @@
+Activity
diff --git a/apps/logicsrc-web/public/openicon/set/svg/add.svg b/apps/logicsrc-web/public/openicon/set/svg/add.svg
new file mode 100644
index 0000000..a31cd80
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/add.svg
@@ -0,0 +1 @@
+Add
diff --git a/apps/logicsrc-web/public/openicon/set/svg/alarm.svg b/apps/logicsrc-web/public/openicon/set/svg/alarm.svg
new file mode 100644
index 0000000..fa6885d
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/alarm.svg
@@ -0,0 +1 @@
+Alarm
diff --git a/apps/logicsrc-web/public/openicon/set/svg/align-center.svg b/apps/logicsrc-web/public/openicon/set/svg/align-center.svg
new file mode 100644
index 0000000..885fb9f
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/align-center.svg
@@ -0,0 +1 @@
+Align center
diff --git a/apps/logicsrc-web/public/openicon/set/svg/align-left.svg b/apps/logicsrc-web/public/openicon/set/svg/align-left.svg
new file mode 100644
index 0000000..162e0ae
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/align-left.svg
@@ -0,0 +1 @@
+Align left
diff --git a/apps/logicsrc-web/public/openicon/set/svg/align-right.svg b/apps/logicsrc-web/public/openicon/set/svg/align-right.svg
new file mode 100644
index 0000000..74f1957
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/align-right.svg
@@ -0,0 +1 @@
+Align right
diff --git a/apps/logicsrc-web/public/openicon/set/svg/amazon.svg b/apps/logicsrc-web/public/openicon/set/svg/amazon.svg
new file mode 100644
index 0000000..7bd503a
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/amazon.svg
@@ -0,0 +1 @@
+Amazon
diff --git a/apps/logicsrc-web/public/openicon/set/svg/anchor.svg b/apps/logicsrc-web/public/openicon/set/svg/anchor.svg
new file mode 100644
index 0000000..f3da4f4
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/anchor.svg
@@ -0,0 +1 @@
+Anchor
diff --git a/apps/logicsrc-web/public/openicon/set/svg/android.svg b/apps/logicsrc-web/public/openicon/set/svg/android.svg
new file mode 100644
index 0000000..2449db7
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/android.svg
@@ -0,0 +1 @@
+Android
diff --git a/apps/logicsrc-web/public/openicon/set/svg/anthropic.svg b/apps/logicsrc-web/public/openicon/set/svg/anthropic.svg
new file mode 100644
index 0000000..b89b6f3
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/anthropic.svg
@@ -0,0 +1 @@
+Anthropic
diff --git a/apps/logicsrc-web/public/openicon/set/svg/api.svg b/apps/logicsrc-web/public/openicon/set/svg/api.svg
new file mode 100644
index 0000000..a96a4b5
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/api.svg
@@ -0,0 +1 @@
+Api
diff --git a/apps/logicsrc-web/public/openicon/set/svg/apple-music.svg b/apps/logicsrc-web/public/openicon/set/svg/apple-music.svg
new file mode 100644
index 0000000..db69b02
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/apple-music.svg
@@ -0,0 +1 @@
+Apple Music
diff --git a/apps/logicsrc-web/public/openicon/set/svg/apple.svg b/apps/logicsrc-web/public/openicon/set/svg/apple.svg
new file mode 100644
index 0000000..a35e2d5
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/apple.svg
@@ -0,0 +1 @@
+Apple
diff --git a/apps/logicsrc-web/public/openicon/set/svg/archive.svg b/apps/logicsrc-web/public/openicon/set/svg/archive.svg
new file mode 100644
index 0000000..d608ed8
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/archive.svg
@@ -0,0 +1 @@
+Archive
diff --git a/apps/logicsrc-web/public/openicon/set/svg/arrow-down.svg b/apps/logicsrc-web/public/openicon/set/svg/arrow-down.svg
new file mode 100644
index 0000000..91806bd
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/arrow-down.svg
@@ -0,0 +1 @@
+Arrow down
diff --git a/apps/logicsrc-web/public/openicon/set/svg/arrow-left.svg b/apps/logicsrc-web/public/openicon/set/svg/arrow-left.svg
new file mode 100644
index 0000000..ac4ed1b
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/arrow-left.svg
@@ -0,0 +1 @@
+Arrow left
diff --git a/apps/logicsrc-web/public/openicon/set/svg/arrow-right.svg b/apps/logicsrc-web/public/openicon/set/svg/arrow-right.svg
new file mode 100644
index 0000000..08fc856
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/arrow-right.svg
@@ -0,0 +1 @@
+Arrow right
diff --git a/apps/logicsrc-web/public/openicon/set/svg/arrow-up-right.svg b/apps/logicsrc-web/public/openicon/set/svg/arrow-up-right.svg
new file mode 100644
index 0000000..b6647b2
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/arrow-up-right.svg
@@ -0,0 +1 @@
+Arrow up right
diff --git a/apps/logicsrc-web/public/openicon/set/svg/arrow-up.svg b/apps/logicsrc-web/public/openicon/set/svg/arrow-up.svg
new file mode 100644
index 0000000..4762b0e
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/arrow-up.svg
@@ -0,0 +1 @@
+Arrow up
diff --git a/apps/logicsrc-web/public/openicon/set/svg/at.svg b/apps/logicsrc-web/public/openicon/set/svg/at.svg
new file mode 100644
index 0000000..6b3256b
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/at.svg
@@ -0,0 +1 @@
+At
diff --git a/apps/logicsrc-web/public/openicon/set/svg/award.svg b/apps/logicsrc-web/public/openicon/set/svg/award.svg
new file mode 100644
index 0000000..c127975
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/award.svg
@@ -0,0 +1 @@
+Award
diff --git a/apps/logicsrc-web/public/openicon/set/svg/bag.svg b/apps/logicsrc-web/public/openicon/set/svg/bag.svg
new file mode 100644
index 0000000..7b3611e
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/bag.svg
@@ -0,0 +1 @@
+Bag
diff --git a/apps/logicsrc-web/public/openicon/set/svg/ban.svg b/apps/logicsrc-web/public/openicon/set/svg/ban.svg
new file mode 100644
index 0000000..cf07095
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/ban.svg
@@ -0,0 +1 @@
+Ban
diff --git a/apps/logicsrc-web/public/openicon/set/svg/bandcamp.svg b/apps/logicsrc-web/public/openicon/set/svg/bandcamp.svg
new file mode 100644
index 0000000..a83b474
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/bandcamp.svg
@@ -0,0 +1 @@
+Bandcamp
diff --git a/apps/logicsrc-web/public/openicon/set/svg/barcode.svg b/apps/logicsrc-web/public/openicon/set/svg/barcode.svg
new file mode 100644
index 0000000..ad13c06
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/barcode.svg
@@ -0,0 +1 @@
+Barcode
diff --git a/apps/logicsrc-web/public/openicon/set/svg/battery-charging.svg b/apps/logicsrc-web/public/openicon/set/svg/battery-charging.svg
new file mode 100644
index 0000000..8fc7e11
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/battery-charging.svg
@@ -0,0 +1 @@
+Battery charging
diff --git a/apps/logicsrc-web/public/openicon/set/svg/battery.svg b/apps/logicsrc-web/public/openicon/set/svg/battery.svg
new file mode 100644
index 0000000..c65ef1e
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/battery.svg
@@ -0,0 +1 @@
+Battery
diff --git a/apps/logicsrc-web/public/openicon/set/svg/behance.svg b/apps/logicsrc-web/public/openicon/set/svg/behance.svg
new file mode 100644
index 0000000..f17cec1
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/behance.svg
@@ -0,0 +1 @@
+Behance
diff --git a/apps/logicsrc-web/public/openicon/set/svg/bell-off.svg b/apps/logicsrc-web/public/openicon/set/svg/bell-off.svg
new file mode 100644
index 0000000..d36ac0f
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/bell-off.svg
@@ -0,0 +1 @@
+Bell off
diff --git a/apps/logicsrc-web/public/openicon/set/svg/bell.svg b/apps/logicsrc-web/public/openicon/set/svg/bell.svg
new file mode 100644
index 0000000..8761b09
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/bell.svg
@@ -0,0 +1 @@
+Bell
diff --git a/apps/logicsrc-web/public/openicon/set/svg/bitbucket.svg b/apps/logicsrc-web/public/openicon/set/svg/bitbucket.svg
new file mode 100644
index 0000000..e736f92
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/bitbucket.svg
@@ -0,0 +1 @@
+Bitbucket
diff --git a/apps/logicsrc-web/public/openicon/set/svg/bitcoin.svg b/apps/logicsrc-web/public/openicon/set/svg/bitcoin.svg
new file mode 100644
index 0000000..6ac9d6d
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/bitcoin.svg
@@ -0,0 +1 @@
+Bitcoin
diff --git a/apps/logicsrc-web/public/openicon/set/svg/bluesky.svg b/apps/logicsrc-web/public/openicon/set/svg/bluesky.svg
new file mode 100644
index 0000000..5b2c9a4
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/bluesky.svg
@@ -0,0 +1 @@
+Bluesky
diff --git a/apps/logicsrc-web/public/openicon/set/svg/bluetooth.svg b/apps/logicsrc-web/public/openicon/set/svg/bluetooth.svg
new file mode 100644
index 0000000..1954c3b
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/bluetooth.svg
@@ -0,0 +1 @@
+Bluetooth
diff --git a/apps/logicsrc-web/public/openicon/set/svg/bold.svg b/apps/logicsrc-web/public/openicon/set/svg/bold.svg
new file mode 100644
index 0000000..93a9fdc
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/bold.svg
@@ -0,0 +1 @@
+Bold
diff --git a/apps/logicsrc-web/public/openicon/set/svg/book-open.svg b/apps/logicsrc-web/public/openicon/set/svg/book-open.svg
new file mode 100644
index 0000000..a3758c6
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/book-open.svg
@@ -0,0 +1 @@
+Book open
diff --git a/apps/logicsrc-web/public/openicon/set/svg/book.svg b/apps/logicsrc-web/public/openicon/set/svg/book.svg
new file mode 100644
index 0000000..5ae2838
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/book.svg
@@ -0,0 +1 @@
+Book
diff --git a/apps/logicsrc-web/public/openicon/set/svg/bookmark.svg b/apps/logicsrc-web/public/openicon/set/svg/bookmark.svg
new file mode 100644
index 0000000..bb7b388
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/bookmark.svg
@@ -0,0 +1 @@
+Bookmark
diff --git a/apps/logicsrc-web/public/openicon/set/svg/braces.svg b/apps/logicsrc-web/public/openicon/set/svg/braces.svg
new file mode 100644
index 0000000..73d1bcb
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/braces.svg
@@ -0,0 +1 @@
+Braces
diff --git a/apps/logicsrc-web/public/openicon/set/svg/brave.svg b/apps/logicsrc-web/public/openicon/set/svg/brave.svg
new file mode 100644
index 0000000..ed9cf45
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/brave.svg
@@ -0,0 +1 @@
+Brave
diff --git a/apps/logicsrc-web/public/openicon/set/svg/briefcase.svg b/apps/logicsrc-web/public/openicon/set/svg/briefcase.svg
new file mode 100644
index 0000000..0fccc8d
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/briefcase.svg
@@ -0,0 +1 @@
+Briefcase
diff --git a/apps/logicsrc-web/public/openicon/set/svg/brush.svg b/apps/logicsrc-web/public/openicon/set/svg/brush.svg
new file mode 100644
index 0000000..f291904
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/brush.svg
@@ -0,0 +1 @@
+Brush
diff --git a/apps/logicsrc-web/public/openicon/set/svg/bug.svg b/apps/logicsrc-web/public/openicon/set/svg/bug.svg
new file mode 100644
index 0000000..9661d02
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/bug.svg
@@ -0,0 +1 @@
+Bug
diff --git a/apps/logicsrc-web/public/openicon/set/svg/building.svg b/apps/logicsrc-web/public/openicon/set/svg/building.svg
new file mode 100644
index 0000000..ab4b145
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/building.svg
@@ -0,0 +1 @@
+Building
diff --git a/apps/logicsrc-web/public/openicon/set/svg/bun.svg b/apps/logicsrc-web/public/openicon/set/svg/bun.svg
new file mode 100644
index 0000000..07b025e
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/bun.svg
@@ -0,0 +1 @@
+Bun
diff --git a/apps/logicsrc-web/public/openicon/set/svg/buy-me-a-coffee.svg b/apps/logicsrc-web/public/openicon/set/svg/buy-me-a-coffee.svg
new file mode 100644
index 0000000..0c0e119
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/buy-me-a-coffee.svg
@@ -0,0 +1 @@
+Buy Me a Coffee
diff --git a/apps/logicsrc-web/public/openicon/set/svg/calendar-check.svg b/apps/logicsrc-web/public/openicon/set/svg/calendar-check.svg
new file mode 100644
index 0000000..f9a1e36
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/calendar-check.svg
@@ -0,0 +1 @@
+Calendar check
diff --git a/apps/logicsrc-web/public/openicon/set/svg/calendar-plus.svg b/apps/logicsrc-web/public/openicon/set/svg/calendar-plus.svg
new file mode 100644
index 0000000..f778d41
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/calendar-plus.svg
@@ -0,0 +1 @@
+Calendar plus
diff --git a/apps/logicsrc-web/public/openicon/set/svg/calendar.svg b/apps/logicsrc-web/public/openicon/set/svg/calendar.svg
new file mode 100644
index 0000000..6da38dc
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/calendar.svg
@@ -0,0 +1 @@
+Calendar
diff --git a/apps/logicsrc-web/public/openicon/set/svg/camera.svg b/apps/logicsrc-web/public/openicon/set/svg/camera.svg
new file mode 100644
index 0000000..741d4a2
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/camera.svg
@@ -0,0 +1 @@
+Camera
diff --git a/apps/logicsrc-web/public/openicon/set/svg/cart.svg b/apps/logicsrc-web/public/openicon/set/svg/cart.svg
new file mode 100644
index 0000000..4cd7f78
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/cart.svg
@@ -0,0 +1 @@
+Cart
diff --git a/apps/logicsrc-web/public/openicon/set/svg/cast.svg b/apps/logicsrc-web/public/openicon/set/svg/cast.svg
new file mode 100644
index 0000000..0e7bd0a
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/cast.svg
@@ -0,0 +1 @@
+Cast
diff --git a/apps/logicsrc-web/public/openicon/set/svg/cell-signal.svg b/apps/logicsrc-web/public/openicon/set/svg/cell-signal.svg
new file mode 100644
index 0000000..ba4ae09
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/cell-signal.svg
@@ -0,0 +1 @@
+Cell signal
diff --git a/apps/logicsrc-web/public/openicon/set/svg/chat-dots.svg b/apps/logicsrc-web/public/openicon/set/svg/chat-dots.svg
new file mode 100644
index 0000000..90d7a63
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/chat-dots.svg
@@ -0,0 +1 @@
+Chat dots
diff --git a/apps/logicsrc-web/public/openicon/set/svg/chat.svg b/apps/logicsrc-web/public/openicon/set/svg/chat.svg
new file mode 100644
index 0000000..2054928
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/chat.svg
@@ -0,0 +1 @@
+Chat
diff --git a/apps/logicsrc-web/public/openicon/set/svg/check-circle.svg b/apps/logicsrc-web/public/openicon/set/svg/check-circle.svg
new file mode 100644
index 0000000..7047881
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/check-circle.svg
@@ -0,0 +1 @@
+Check circle
diff --git a/apps/logicsrc-web/public/openicon/set/svg/check.svg b/apps/logicsrc-web/public/openicon/set/svg/check.svg
new file mode 100644
index 0000000..ac15f10
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/check.svg
@@ -0,0 +1 @@
+Check
diff --git a/apps/logicsrc-web/public/openicon/set/svg/checkbox-empty.svg b/apps/logicsrc-web/public/openicon/set/svg/checkbox-empty.svg
new file mode 100644
index 0000000..eef905e
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/checkbox-empty.svg
@@ -0,0 +1 @@
+Checkbox empty
diff --git a/apps/logicsrc-web/public/openicon/set/svg/checkbox.svg b/apps/logicsrc-web/public/openicon/set/svg/checkbox.svg
new file mode 100644
index 0000000..7adf6e0
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/checkbox.svg
@@ -0,0 +1 @@
+Checkbox
diff --git a/apps/logicsrc-web/public/openicon/set/svg/chevron-down.svg b/apps/logicsrc-web/public/openicon/set/svg/chevron-down.svg
new file mode 100644
index 0000000..85ff799
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/chevron-down.svg
@@ -0,0 +1 @@
+Chevron down
diff --git a/apps/logicsrc-web/public/openicon/set/svg/chevron-left.svg b/apps/logicsrc-web/public/openicon/set/svg/chevron-left.svg
new file mode 100644
index 0000000..2f2970c
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/chevron-left.svg
@@ -0,0 +1 @@
+Chevron left
diff --git a/apps/logicsrc-web/public/openicon/set/svg/chevron-right.svg b/apps/logicsrc-web/public/openicon/set/svg/chevron-right.svg
new file mode 100644
index 0000000..a8c8fa5
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/chevron-right.svg
@@ -0,0 +1 @@
+Chevron right
diff --git a/apps/logicsrc-web/public/openicon/set/svg/chevron-up.svg b/apps/logicsrc-web/public/openicon/set/svg/chevron-up.svg
new file mode 100644
index 0000000..f0b6f0a
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/chevron-up.svg
@@ -0,0 +1 @@
+Chevron up
diff --git a/apps/logicsrc-web/public/openicon/set/svg/chevrons-left.svg b/apps/logicsrc-web/public/openicon/set/svg/chevrons-left.svg
new file mode 100644
index 0000000..dcc6327
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/chevrons-left.svg
@@ -0,0 +1 @@
+Chevrons left
diff --git a/apps/logicsrc-web/public/openicon/set/svg/chevrons-right.svg b/apps/logicsrc-web/public/openicon/set/svg/chevrons-right.svg
new file mode 100644
index 0000000..476c950
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/chevrons-right.svg
@@ -0,0 +1 @@
+Chevrons right
diff --git a/apps/logicsrc-web/public/openicon/set/svg/chrome.svg b/apps/logicsrc-web/public/openicon/set/svg/chrome.svg
new file mode 100644
index 0000000..2d91bdc
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/chrome.svg
@@ -0,0 +1 @@
+Chrome
diff --git a/apps/logicsrc-web/public/openicon/set/svg/claude.svg b/apps/logicsrc-web/public/openicon/set/svg/claude.svg
new file mode 100644
index 0000000..1408e42
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/claude.svg
@@ -0,0 +1 @@
+Claude
diff --git a/apps/logicsrc-web/public/openicon/set/svg/clipboard-check.svg b/apps/logicsrc-web/public/openicon/set/svg/clipboard-check.svg
new file mode 100644
index 0000000..08a933b
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/clipboard-check.svg
@@ -0,0 +1 @@
+Clipboard check
diff --git a/apps/logicsrc-web/public/openicon/set/svg/clipboard.svg b/apps/logicsrc-web/public/openicon/set/svg/clipboard.svg
new file mode 100644
index 0000000..b324262
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/clipboard.svg
@@ -0,0 +1 @@
+Clipboard
diff --git a/apps/logicsrc-web/public/openicon/set/svg/clock.svg b/apps/logicsrc-web/public/openicon/set/svg/clock.svg
new file mode 100644
index 0000000..09ffd02
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/clock.svg
@@ -0,0 +1 @@
+Clock
diff --git a/apps/logicsrc-web/public/openicon/set/svg/close.svg b/apps/logicsrc-web/public/openicon/set/svg/close.svg
new file mode 100644
index 0000000..223d2e1
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/close.svg
@@ -0,0 +1 @@
+Close
diff --git a/apps/logicsrc-web/public/openicon/set/svg/cloud-download.svg b/apps/logicsrc-web/public/openicon/set/svg/cloud-download.svg
new file mode 100644
index 0000000..c4b39e9
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/cloud-download.svg
@@ -0,0 +1 @@
+Cloud download
diff --git a/apps/logicsrc-web/public/openicon/set/svg/cloud-upload.svg b/apps/logicsrc-web/public/openicon/set/svg/cloud-upload.svg
new file mode 100644
index 0000000..9e69aae
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/cloud-upload.svg
@@ -0,0 +1 @@
+Cloud upload
diff --git a/apps/logicsrc-web/public/openicon/set/svg/cloud.svg b/apps/logicsrc-web/public/openicon/set/svg/cloud.svg
new file mode 100644
index 0000000..72f1b5a
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/cloud.svg
@@ -0,0 +1 @@
+Cloud
diff --git a/apps/logicsrc-web/public/openicon/set/svg/cloudflare.svg b/apps/logicsrc-web/public/openicon/set/svg/cloudflare.svg
new file mode 100644
index 0000000..c68d3ba
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/cloudflare.svg
@@ -0,0 +1 @@
+Cloudflare
diff --git a/apps/logicsrc-web/public/openicon/set/svg/code.svg b/apps/logicsrc-web/public/openicon/set/svg/code.svg
new file mode 100644
index 0000000..8e89a8c
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/code.svg
@@ -0,0 +1 @@
+Code
diff --git a/apps/logicsrc-web/public/openicon/set/svg/codeberg.svg b/apps/logicsrc-web/public/openicon/set/svg/codeberg.svg
new file mode 100644
index 0000000..3eb1923
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/codeberg.svg
@@ -0,0 +1 @@
+Codeberg
diff --git a/apps/logicsrc-web/public/openicon/set/svg/codepen.svg b/apps/logicsrc-web/public/openicon/set/svg/codepen.svg
new file mode 100644
index 0000000..a1cf7e1
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/codepen.svg
@@ -0,0 +1 @@
+CodePen
diff --git a/apps/logicsrc-web/public/openicon/set/svg/coffee.svg b/apps/logicsrc-web/public/openicon/set/svg/coffee.svg
new file mode 100644
index 0000000..ed1fef6
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/coffee.svg
@@ -0,0 +1 @@
+Coffee
diff --git a/apps/logicsrc-web/public/openicon/set/svg/coins.svg b/apps/logicsrc-web/public/openicon/set/svg/coins.svg
new file mode 100644
index 0000000..9226e3f
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/coins.svg
@@ -0,0 +1 @@
+Coins
diff --git a/apps/logicsrc-web/public/openicon/set/svg/command.svg b/apps/logicsrc-web/public/openicon/set/svg/command.svg
new file mode 100644
index 0000000..8286524
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/command.svg
@@ -0,0 +1 @@
+Command
diff --git a/apps/logicsrc-web/public/openicon/set/svg/compass.svg b/apps/logicsrc-web/public/openicon/set/svg/compass.svg
new file mode 100644
index 0000000..7c987ff
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/compass.svg
@@ -0,0 +1 @@
+Compass
diff --git a/apps/logicsrc-web/public/openicon/set/svg/contact.svg b/apps/logicsrc-web/public/openicon/set/svg/contact.svg
new file mode 100644
index 0000000..edd2022
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/contact.svg
@@ -0,0 +1 @@
+Contact
diff --git a/apps/logicsrc-web/public/openicon/set/svg/container.svg b/apps/logicsrc-web/public/openicon/set/svg/container.svg
new file mode 100644
index 0000000..b2ea163
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/container.svg
@@ -0,0 +1 @@
+Container
diff --git a/apps/logicsrc-web/public/openicon/set/svg/copy.svg b/apps/logicsrc-web/public/openicon/set/svg/copy.svg
new file mode 100644
index 0000000..6a474b6
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/copy.svg
@@ -0,0 +1 @@
+Copy
diff --git a/apps/logicsrc-web/public/openicon/set/svg/cpu.svg b/apps/logicsrc-web/public/openicon/set/svg/cpu.svg
new file mode 100644
index 0000000..04b8fbb
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/cpu.svg
@@ -0,0 +1 @@
+Cpu
diff --git a/apps/logicsrc-web/public/openicon/set/svg/credit-card.svg b/apps/logicsrc-web/public/openicon/set/svg/credit-card.svg
new file mode 100644
index 0000000..cbb2526
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/credit-card.svg
@@ -0,0 +1 @@
+Credit card
diff --git a/apps/logicsrc-web/public/openicon/set/svg/crop.svg b/apps/logicsrc-web/public/openicon/set/svg/crop.svg
new file mode 100644
index 0000000..9a9e8da
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/crop.svg
@@ -0,0 +1 @@
+Crop
diff --git a/apps/logicsrc-web/public/openicon/set/svg/crosshair.svg b/apps/logicsrc-web/public/openicon/set/svg/crosshair.svg
new file mode 100644
index 0000000..ac9209d
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/crosshair.svg
@@ -0,0 +1 @@
+Crosshair
diff --git a/apps/logicsrc-web/public/openicon/set/svg/cut.svg b/apps/logicsrc-web/public/openicon/set/svg/cut.svg
new file mode 100644
index 0000000..8666ce0
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/cut.svg
@@ -0,0 +1 @@
+Cut
diff --git a/apps/logicsrc-web/public/openicon/set/svg/database.svg b/apps/logicsrc-web/public/openicon/set/svg/database.svg
new file mode 100644
index 0000000..da0bd07
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/database.svg
@@ -0,0 +1 @@
+Database
diff --git a/apps/logicsrc-web/public/openicon/set/svg/debian.svg b/apps/logicsrc-web/public/openicon/set/svg/debian.svg
new file mode 100644
index 0000000..c4a0000
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/debian.svg
@@ -0,0 +1 @@
+Debian
diff --git a/apps/logicsrc-web/public/openicon/set/svg/delete.svg b/apps/logicsrc-web/public/openicon/set/svg/delete.svg
new file mode 100644
index 0000000..7e247e1
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/delete.svg
@@ -0,0 +1 @@
+Delete
diff --git a/apps/logicsrc-web/public/openicon/set/svg/deno.svg b/apps/logicsrc-web/public/openicon/set/svg/deno.svg
new file mode 100644
index 0000000..4844c71
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/deno.svg
@@ -0,0 +1 @@
+Deno
diff --git a/apps/logicsrc-web/public/openicon/set/svg/dev-to.svg b/apps/logicsrc-web/public/openicon/set/svg/dev-to.svg
new file mode 100644
index 0000000..990f78c
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/dev-to.svg
@@ -0,0 +1 @@
+DEV Community
diff --git a/apps/logicsrc-web/public/openicon/set/svg/discord.svg b/apps/logicsrc-web/public/openicon/set/svg/discord.svg
new file mode 100644
index 0000000..ed4e322
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/discord.svg
@@ -0,0 +1 @@
+Discord
diff --git a/apps/logicsrc-web/public/openicon/set/svg/docker.svg b/apps/logicsrc-web/public/openicon/set/svg/docker.svg
new file mode 100644
index 0000000..770d8a2
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/docker.svg
@@ -0,0 +1 @@
+Docker
diff --git a/apps/logicsrc-web/public/openicon/set/svg/dollar.svg b/apps/logicsrc-web/public/openicon/set/svg/dollar.svg
new file mode 100644
index 0000000..d06f7e2
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/dollar.svg
@@ -0,0 +1 @@
+Dollar
diff --git a/apps/logicsrc-web/public/openicon/set/svg/download.svg b/apps/logicsrc-web/public/openicon/set/svg/download.svg
new file mode 100644
index 0000000..0d4a79a
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/download.svg
@@ -0,0 +1 @@
+Download
diff --git a/apps/logicsrc-web/public/openicon/set/svg/dribbble.svg b/apps/logicsrc-web/public/openicon/set/svg/dribbble.svg
new file mode 100644
index 0000000..3cd1be0
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/dribbble.svg
@@ -0,0 +1 @@
+Dribbble
diff --git a/apps/logicsrc-web/public/openicon/set/svg/droplet.svg b/apps/logicsrc-web/public/openicon/set/svg/droplet.svg
new file mode 100644
index 0000000..e958c30
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/droplet.svg
@@ -0,0 +1 @@
+Droplet
diff --git a/apps/logicsrc-web/public/openicon/set/svg/ebay.svg b/apps/logicsrc-web/public/openicon/set/svg/ebay.svg
new file mode 100644
index 0000000..8b21f8a
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/ebay.svg
@@ -0,0 +1 @@
+eBay
diff --git a/apps/logicsrc-web/public/openicon/set/svg/edit.svg b/apps/logicsrc-web/public/openicon/set/svg/edit.svg
new file mode 100644
index 0000000..9b4fcd4
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/edit.svg
@@ -0,0 +1 @@
+Edit
diff --git a/apps/logicsrc-web/public/openicon/set/svg/element.svg b/apps/logicsrc-web/public/openicon/set/svg/element.svg
new file mode 100644
index 0000000..cb98e1f
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/element.svg
@@ -0,0 +1 @@
+Element
diff --git a/apps/logicsrc-web/public/openicon/set/svg/enter.svg b/apps/logicsrc-web/public/openicon/set/svg/enter.svg
new file mode 100644
index 0000000..2b93a4e
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/enter.svg
@@ -0,0 +1 @@
+Enter
diff --git a/apps/logicsrc-web/public/openicon/set/svg/error.svg b/apps/logicsrc-web/public/openicon/set/svg/error.svg
new file mode 100644
index 0000000..54ae12e
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/error.svg
@@ -0,0 +1 @@
+Error
diff --git a/apps/logicsrc-web/public/openicon/set/svg/ethereum.svg b/apps/logicsrc-web/public/openicon/set/svg/ethereum.svg
new file mode 100644
index 0000000..72849a0
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/ethereum.svg
@@ -0,0 +1 @@
+Ethereum
diff --git a/apps/logicsrc-web/public/openicon/set/svg/etsy.svg b/apps/logicsrc-web/public/openicon/set/svg/etsy.svg
new file mode 100644
index 0000000..bc55816
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/etsy.svg
@@ -0,0 +1 @@
+Etsy
diff --git a/apps/logicsrc-web/public/openicon/set/svg/external-link.svg b/apps/logicsrc-web/public/openicon/set/svg/external-link.svg
new file mode 100644
index 0000000..867a6b0
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/external-link.svg
@@ -0,0 +1 @@
+External link
diff --git a/apps/logicsrc-web/public/openicon/set/svg/eye-off.svg b/apps/logicsrc-web/public/openicon/set/svg/eye-off.svg
new file mode 100644
index 0000000..2bd20da
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/eye-off.svg
@@ -0,0 +1 @@
+Eye off
diff --git a/apps/logicsrc-web/public/openicon/set/svg/eye.svg b/apps/logicsrc-web/public/openicon/set/svg/eye.svg
new file mode 100644
index 0000000..b90e2d7
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/eye.svg
@@ -0,0 +1 @@
+Eye
diff --git a/apps/logicsrc-web/public/openicon/set/svg/facebook.svg b/apps/logicsrc-web/public/openicon/set/svg/facebook.svg
new file mode 100644
index 0000000..4f6ce0c
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/facebook.svg
@@ -0,0 +1 @@
+Facebook
diff --git a/apps/logicsrc-web/public/openicon/set/svg/farcaster.svg b/apps/logicsrc-web/public/openicon/set/svg/farcaster.svg
new file mode 100644
index 0000000..b24d28a
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/farcaster.svg
@@ -0,0 +1 @@
+Farcaster
diff --git a/apps/logicsrc-web/public/openicon/set/svg/fast-forward.svg b/apps/logicsrc-web/public/openicon/set/svg/fast-forward.svg
new file mode 100644
index 0000000..d8a38d7
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/fast-forward.svg
@@ -0,0 +1 @@
+Fast forward
diff --git a/apps/logicsrc-web/public/openicon/set/svg/figma.svg b/apps/logicsrc-web/public/openicon/set/svg/figma.svg
new file mode 100644
index 0000000..c2caffd
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/figma.svg
@@ -0,0 +1 @@
+Figma
diff --git a/apps/logicsrc-web/public/openicon/set/svg/file-code.svg b/apps/logicsrc-web/public/openicon/set/svg/file-code.svg
new file mode 100644
index 0000000..3c0d064
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/file-code.svg
@@ -0,0 +1 @@
+File code
diff --git a/apps/logicsrc-web/public/openicon/set/svg/file-plus.svg b/apps/logicsrc-web/public/openicon/set/svg/file-plus.svg
new file mode 100644
index 0000000..6e5d132
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/file-plus.svg
@@ -0,0 +1 @@
+File plus
diff --git a/apps/logicsrc-web/public/openicon/set/svg/file-text.svg b/apps/logicsrc-web/public/openicon/set/svg/file-text.svg
new file mode 100644
index 0000000..336d2cc
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/file-text.svg
@@ -0,0 +1 @@
+File text
diff --git a/apps/logicsrc-web/public/openicon/set/svg/file.svg b/apps/logicsrc-web/public/openicon/set/svg/file.svg
new file mode 100644
index 0000000..164527e
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/file.svg
@@ -0,0 +1 @@
+File
diff --git a/apps/logicsrc-web/public/openicon/set/svg/film.svg b/apps/logicsrc-web/public/openicon/set/svg/film.svg
new file mode 100644
index 0000000..257e229
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/film.svg
@@ -0,0 +1 @@
+Film
diff --git a/apps/logicsrc-web/public/openicon/set/svg/filter.svg b/apps/logicsrc-web/public/openicon/set/svg/filter.svg
new file mode 100644
index 0000000..cae2fc3
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/filter.svg
@@ -0,0 +1 @@
+Filter
diff --git a/apps/logicsrc-web/public/openicon/set/svg/fingerprint.svg b/apps/logicsrc-web/public/openicon/set/svg/fingerprint.svg
new file mode 100644
index 0000000..b44ba2c
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/fingerprint.svg
@@ -0,0 +1 @@
+Fingerprint
diff --git a/apps/logicsrc-web/public/openicon/set/svg/firefox.svg b/apps/logicsrc-web/public/openicon/set/svg/firefox.svg
new file mode 100644
index 0000000..204843c
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/firefox.svg
@@ -0,0 +1 @@
+Firefox
diff --git a/apps/logicsrc-web/public/openicon/set/svg/flag.svg b/apps/logicsrc-web/public/openicon/set/svg/flag.svg
new file mode 100644
index 0000000..47ce8ca
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/flag.svg
@@ -0,0 +1 @@
+Flag
diff --git a/apps/logicsrc-web/public/openicon/set/svg/flask.svg b/apps/logicsrc-web/public/openicon/set/svg/flask.svg
new file mode 100644
index 0000000..ae57629
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/flask.svg
@@ -0,0 +1 @@
+Flask
diff --git a/apps/logicsrc-web/public/openicon/set/svg/folder-open.svg b/apps/logicsrc-web/public/openicon/set/svg/folder-open.svg
new file mode 100644
index 0000000..fada49d
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/folder-open.svg
@@ -0,0 +1 @@
+Folder open
diff --git a/apps/logicsrc-web/public/openicon/set/svg/folder-plus.svg b/apps/logicsrc-web/public/openicon/set/svg/folder-plus.svg
new file mode 100644
index 0000000..6488672
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/folder-plus.svg
@@ -0,0 +1 @@
+Folder plus
diff --git a/apps/logicsrc-web/public/openicon/set/svg/folder.svg b/apps/logicsrc-web/public/openicon/set/svg/folder.svg
new file mode 100644
index 0000000..be85601
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/folder.svg
@@ -0,0 +1 @@
+Folder
diff --git a/apps/logicsrc-web/public/openicon/set/svg/forward.svg b/apps/logicsrc-web/public/openicon/set/svg/forward.svg
new file mode 100644
index 0000000..f8f66c1
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/forward.svg
@@ -0,0 +1 @@
+Forward
diff --git a/apps/logicsrc-web/public/openicon/set/svg/frown.svg b/apps/logicsrc-web/public/openicon/set/svg/frown.svg
new file mode 100644
index 0000000..897c3cc
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/frown.svg
@@ -0,0 +1 @@
+Frown
diff --git a/apps/logicsrc-web/public/openicon/set/svg/gauge.svg b/apps/logicsrc-web/public/openicon/set/svg/gauge.svg
new file mode 100644
index 0000000..3732f48
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/gauge.svg
@@ -0,0 +1 @@
+Gauge
diff --git a/apps/logicsrc-web/public/openicon/set/svg/ghost.svg b/apps/logicsrc-web/public/openicon/set/svg/ghost.svg
new file mode 100644
index 0000000..7a8f4bb
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/ghost.svg
@@ -0,0 +1 @@
+Ghost
diff --git a/apps/logicsrc-web/public/openicon/set/svg/gift.svg b/apps/logicsrc-web/public/openicon/set/svg/gift.svg
new file mode 100644
index 0000000..60d1d41
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/gift.svg
@@ -0,0 +1 @@
+Gift
diff --git a/apps/logicsrc-web/public/openicon/set/svg/git-branch.svg b/apps/logicsrc-web/public/openicon/set/svg/git-branch.svg
new file mode 100644
index 0000000..354220d
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/git-branch.svg
@@ -0,0 +1 @@
+Git branch
diff --git a/apps/logicsrc-web/public/openicon/set/svg/git-commit.svg b/apps/logicsrc-web/public/openicon/set/svg/git-commit.svg
new file mode 100644
index 0000000..29c030d
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/git-commit.svg
@@ -0,0 +1 @@
+Git commit
diff --git a/apps/logicsrc-web/public/openicon/set/svg/git-merge.svg b/apps/logicsrc-web/public/openicon/set/svg/git-merge.svg
new file mode 100644
index 0000000..aa10f9e
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/git-merge.svg
@@ -0,0 +1 @@
+Git merge
diff --git a/apps/logicsrc-web/public/openicon/set/svg/git-pull-request.svg b/apps/logicsrc-web/public/openicon/set/svg/git-pull-request.svg
new file mode 100644
index 0000000..ba1fd39
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/git-pull-request.svg
@@ -0,0 +1 @@
+Git pull request
diff --git a/apps/logicsrc-web/public/openicon/set/svg/gitea.svg b/apps/logicsrc-web/public/openicon/set/svg/gitea.svg
new file mode 100644
index 0000000..e325999
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/gitea.svg
@@ -0,0 +1 @@
+Gitea
diff --git a/apps/logicsrc-web/public/openicon/set/svg/github.svg b/apps/logicsrc-web/public/openicon/set/svg/github.svg
new file mode 100644
index 0000000..b06a1c9
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/github.svg
@@ -0,0 +1 @@
+GitHub
diff --git a/apps/logicsrc-web/public/openicon/set/svg/gitlab.svg b/apps/logicsrc-web/public/openicon/set/svg/gitlab.svg
new file mode 100644
index 0000000..2f86cef
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/gitlab.svg
@@ -0,0 +1 @@
+GitLab
diff --git a/apps/logicsrc-web/public/openicon/set/svg/globe.svg b/apps/logicsrc-web/public/openicon/set/svg/globe.svg
new file mode 100644
index 0000000..fd71903
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/globe.svg
@@ -0,0 +1 @@
+Globe
diff --git a/apps/logicsrc-web/public/openicon/set/svg/gmail.svg b/apps/logicsrc-web/public/openicon/set/svg/gmail.svg
new file mode 100644
index 0000000..ef12c14
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/gmail.svg
@@ -0,0 +1 @@
+Gmail
diff --git a/apps/logicsrc-web/public/openicon/set/svg/go.svg b/apps/logicsrc-web/public/openicon/set/svg/go.svg
new file mode 100644
index 0000000..50ab8dd
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/go.svg
@@ -0,0 +1 @@
+Go
diff --git a/apps/logicsrc-web/public/openicon/set/svg/google-meet.svg b/apps/logicsrc-web/public/openicon/set/svg/google-meet.svg
new file mode 100644
index 0000000..687fd04
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/google-meet.svg
@@ -0,0 +1 @@
+Google Meet
diff --git a/apps/logicsrc-web/public/openicon/set/svg/google.svg b/apps/logicsrc-web/public/openicon/set/svg/google.svg
new file mode 100644
index 0000000..84c7209
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/google.svg
@@ -0,0 +1 @@
+Google
diff --git a/apps/logicsrc-web/public/openicon/set/svg/grid.svg b/apps/logicsrc-web/public/openicon/set/svg/grid.svg
new file mode 100644
index 0000000..0068bd9
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/grid.svg
@@ -0,0 +1 @@
+Grid
diff --git a/apps/logicsrc-web/public/openicon/set/svg/grip.svg b/apps/logicsrc-web/public/openicon/set/svg/grip.svg
new file mode 100644
index 0000000..246300a
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/grip.svg
@@ -0,0 +1 @@
+Grip
diff --git a/apps/logicsrc-web/public/openicon/set/svg/hacker-news.svg b/apps/logicsrc-web/public/openicon/set/svg/hacker-news.svg
new file mode 100644
index 0000000..f2c3177
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/hacker-news.svg
@@ -0,0 +1 @@
+Hacker News
diff --git a/apps/logicsrc-web/public/openicon/set/svg/hard-drive.svg b/apps/logicsrc-web/public/openicon/set/svg/hard-drive.svg
new file mode 100644
index 0000000..562d332
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/hard-drive.svg
@@ -0,0 +1 @@
+Hard drive
diff --git a/apps/logicsrc-web/public/openicon/set/svg/hash.svg b/apps/logicsrc-web/public/openicon/set/svg/hash.svg
new file mode 100644
index 0000000..b6cd5f5
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/hash.svg
@@ -0,0 +1 @@
+Hash
diff --git a/apps/logicsrc-web/public/openicon/set/svg/hashnode.svg b/apps/logicsrc-web/public/openicon/set/svg/hashnode.svg
new file mode 100644
index 0000000..fbcf5d3
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/hashnode.svg
@@ -0,0 +1 @@
+Hashnode
diff --git a/apps/logicsrc-web/public/openicon/set/svg/heading.svg b/apps/logicsrc-web/public/openicon/set/svg/heading.svg
new file mode 100644
index 0000000..71acc4f
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/heading.svg
@@ -0,0 +1 @@
+Heading
diff --git a/apps/logicsrc-web/public/openicon/set/svg/headphones.svg b/apps/logicsrc-web/public/openicon/set/svg/headphones.svg
new file mode 100644
index 0000000..15665ea
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/headphones.svg
@@ -0,0 +1 @@
+Headphones
diff --git a/apps/logicsrc-web/public/openicon/set/svg/heart.svg b/apps/logicsrc-web/public/openicon/set/svg/heart.svg
new file mode 100644
index 0000000..d95de8a
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/heart.svg
@@ -0,0 +1 @@
+Heart
diff --git a/apps/logicsrc-web/public/openicon/set/svg/help.svg b/apps/logicsrc-web/public/openicon/set/svg/help.svg
new file mode 100644
index 0000000..dc16517
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/help.svg
@@ -0,0 +1 @@
+Help
diff --git a/apps/logicsrc-web/public/openicon/set/svg/history.svg b/apps/logicsrc-web/public/openicon/set/svg/history.svg
new file mode 100644
index 0000000..3f2cc1e
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/history.svg
@@ -0,0 +1 @@
+History
diff --git a/apps/logicsrc-web/public/openicon/set/svg/home.svg b/apps/logicsrc-web/public/openicon/set/svg/home.svg
new file mode 100644
index 0000000..09e1a91
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/home.svg
@@ -0,0 +1 @@
+Home
diff --git a/apps/logicsrc-web/public/openicon/set/svg/hourglass.svg b/apps/logicsrc-web/public/openicon/set/svg/hourglass.svg
new file mode 100644
index 0000000..d9d806f
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/hourglass.svg
@@ -0,0 +1 @@
+Hourglass
diff --git a/apps/logicsrc-web/public/openicon/set/svg/id-card.svg b/apps/logicsrc-web/public/openicon/set/svg/id-card.svg
new file mode 100644
index 0000000..e82239c
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/id-card.svg
@@ -0,0 +1 @@
+Id card
diff --git a/apps/logicsrc-web/public/openicon/set/svg/image-plus.svg b/apps/logicsrc-web/public/openicon/set/svg/image-plus.svg
new file mode 100644
index 0000000..ba4bcce
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/image-plus.svg
@@ -0,0 +1 @@
+Image plus
diff --git a/apps/logicsrc-web/public/openicon/set/svg/image.svg b/apps/logicsrc-web/public/openicon/set/svg/image.svg
new file mode 100644
index 0000000..787d26b
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/image.svg
@@ -0,0 +1 @@
+Image
diff --git a/apps/logicsrc-web/public/openicon/set/svg/inbox.svg b/apps/logicsrc-web/public/openicon/set/svg/inbox.svg
new file mode 100644
index 0000000..e64d7cc
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/inbox.svg
@@ -0,0 +1 @@
+Inbox
diff --git a/apps/logicsrc-web/public/openicon/set/svg/info.svg b/apps/logicsrc-web/public/openicon/set/svg/info.svg
new file mode 100644
index 0000000..45af705
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/info.svg
@@ -0,0 +1 @@
+Info
diff --git a/apps/logicsrc-web/public/openicon/set/svg/instagram.svg b/apps/logicsrc-web/public/openicon/set/svg/instagram.svg
new file mode 100644
index 0000000..6a620a3
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/instagram.svg
@@ -0,0 +1 @@
+Instagram
diff --git a/apps/logicsrc-web/public/openicon/set/svg/italic.svg b/apps/logicsrc-web/public/openicon/set/svg/italic.svg
new file mode 100644
index 0000000..9bda47b
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/italic.svg
@@ -0,0 +1 @@
+Italic
diff --git a/apps/logicsrc-web/public/openicon/set/svg/javascript.svg b/apps/logicsrc-web/public/openicon/set/svg/javascript.svg
new file mode 100644
index 0000000..fc5e8ce
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/javascript.svg
@@ -0,0 +1 @@
+JavaScript
diff --git a/apps/logicsrc-web/public/openicon/set/svg/jira.svg b/apps/logicsrc-web/public/openicon/set/svg/jira.svg
new file mode 100644
index 0000000..b83e6c0
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/jira.svg
@@ -0,0 +1 @@
+Jira
diff --git a/apps/logicsrc-web/public/openicon/set/svg/key.svg b/apps/logicsrc-web/public/openicon/set/svg/key.svg
new file mode 100644
index 0000000..eb9d31f
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/key.svg
@@ -0,0 +1 @@
+Key
diff --git a/apps/logicsrc-web/public/openicon/set/svg/keybase.svg b/apps/logicsrc-web/public/openicon/set/svg/keybase.svg
new file mode 100644
index 0000000..a8c82a1
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/keybase.svg
@@ -0,0 +1 @@
+Keybase
diff --git a/apps/logicsrc-web/public/openicon/set/svg/keyboard.svg b/apps/logicsrc-web/public/openicon/set/svg/keyboard.svg
new file mode 100644
index 0000000..f31cd8c
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/keyboard.svg
@@ -0,0 +1 @@
+Keyboard
diff --git a/apps/logicsrc-web/public/openicon/set/svg/kick.svg b/apps/logicsrc-web/public/openicon/set/svg/kick.svg
new file mode 100644
index 0000000..16553bf
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/kick.svg
@@ -0,0 +1 @@
+Kick
diff --git a/apps/logicsrc-web/public/openicon/set/svg/ko-fi.svg b/apps/logicsrc-web/public/openicon/set/svg/ko-fi.svg
new file mode 100644
index 0000000..e8aa7db
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/ko-fi.svg
@@ -0,0 +1 @@
+Ko-fi
diff --git a/apps/logicsrc-web/public/openicon/set/svg/kubernetes.svg b/apps/logicsrc-web/public/openicon/set/svg/kubernetes.svg
new file mode 100644
index 0000000..a439b98
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/kubernetes.svg
@@ -0,0 +1 @@
+Kubernetes
diff --git a/apps/logicsrc-web/public/openicon/set/svg/laptop.svg b/apps/logicsrc-web/public/openicon/set/svg/laptop.svg
new file mode 100644
index 0000000..3a517de
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/laptop.svg
@@ -0,0 +1 @@
+Laptop
diff --git a/apps/logicsrc-web/public/openicon/set/svg/layers.svg b/apps/logicsrc-web/public/openicon/set/svg/layers.svg
new file mode 100644
index 0000000..2b121cd
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/layers.svg
@@ -0,0 +1 @@
+Layers
diff --git a/apps/logicsrc-web/public/openicon/set/svg/leaf.svg b/apps/logicsrc-web/public/openicon/set/svg/leaf.svg
new file mode 100644
index 0000000..8d9d54b
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/leaf.svg
@@ -0,0 +1 @@
+Leaf
diff --git a/apps/logicsrc-web/public/openicon/set/svg/lemmy.svg b/apps/logicsrc-web/public/openicon/set/svg/lemmy.svg
new file mode 100644
index 0000000..4baf1ab
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/lemmy.svg
@@ -0,0 +1 @@
+Lemmy
diff --git a/apps/logicsrc-web/public/openicon/set/svg/lightbulb.svg b/apps/logicsrc-web/public/openicon/set/svg/lightbulb.svg
new file mode 100644
index 0000000..00ef238
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/lightbulb.svg
@@ -0,0 +1 @@
+Lightbulb
diff --git a/apps/logicsrc-web/public/openicon/set/svg/line.svg b/apps/logicsrc-web/public/openicon/set/svg/line.svg
new file mode 100644
index 0000000..ec9d8e4
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/line.svg
@@ -0,0 +1 @@
+LINE
diff --git a/apps/logicsrc-web/public/openicon/set/svg/link.svg b/apps/logicsrc-web/public/openicon/set/svg/link.svg
new file mode 100644
index 0000000..abb19e4
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/link.svg
@@ -0,0 +1 @@
+Link
diff --git a/apps/logicsrc-web/public/openicon/set/svg/linkedin.svg b/apps/logicsrc-web/public/openicon/set/svg/linkedin.svg
new file mode 100644
index 0000000..8803141
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/linkedin.svg
@@ -0,0 +1 @@
+LinkedIn
diff --git a/apps/logicsrc-web/public/openicon/set/svg/linux.svg b/apps/logicsrc-web/public/openicon/set/svg/linux.svg
new file mode 100644
index 0000000..0578152
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/linux.svg
@@ -0,0 +1 @@
+Linux
diff --git a/apps/logicsrc-web/public/openicon/set/svg/list-bullet.svg b/apps/logicsrc-web/public/openicon/set/svg/list-bullet.svg
new file mode 100644
index 0000000..a5f0a2f
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/list-bullet.svg
@@ -0,0 +1 @@
+List bullet
diff --git a/apps/logicsrc-web/public/openicon/set/svg/list-ordered.svg b/apps/logicsrc-web/public/openicon/set/svg/list-ordered.svg
new file mode 100644
index 0000000..799feed
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/list-ordered.svg
@@ -0,0 +1 @@
+List ordered
diff --git a/apps/logicsrc-web/public/openicon/set/svg/list.svg b/apps/logicsrc-web/public/openicon/set/svg/list.svg
new file mode 100644
index 0000000..83ea60d
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/list.svg
@@ -0,0 +1 @@
+List
diff --git a/apps/logicsrc-web/public/openicon/set/svg/loader.svg b/apps/logicsrc-web/public/openicon/set/svg/loader.svg
new file mode 100644
index 0000000..4ef8aff
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/loader.svg
@@ -0,0 +1 @@
+Loader
diff --git a/apps/logicsrc-web/public/openicon/set/svg/lock.svg b/apps/logicsrc-web/public/openicon/set/svg/lock.svg
new file mode 100644
index 0000000..fb0a00b
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/lock.svg
@@ -0,0 +1 @@
+Lock
diff --git a/apps/logicsrc-web/public/openicon/set/svg/log-in.svg b/apps/logicsrc-web/public/openicon/set/svg/log-in.svg
new file mode 100644
index 0000000..0b03658
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/log-in.svg
@@ -0,0 +1 @@
+Log in
diff --git a/apps/logicsrc-web/public/openicon/set/svg/log-out.svg b/apps/logicsrc-web/public/openicon/set/svg/log-out.svg
new file mode 100644
index 0000000..0a4224f
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/log-out.svg
@@ -0,0 +1 @@
+Log out
diff --git a/apps/logicsrc-web/public/openicon/set/svg/mail-open.svg b/apps/logicsrc-web/public/openicon/set/svg/mail-open.svg
new file mode 100644
index 0000000..1c6ac05
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/mail-open.svg
@@ -0,0 +1 @@
+Mail open
diff --git a/apps/logicsrc-web/public/openicon/set/svg/mail.svg b/apps/logicsrc-web/public/openicon/set/svg/mail.svg
new file mode 100644
index 0000000..85a45fb
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/mail.svg
@@ -0,0 +1 @@
+Mail
diff --git a/apps/logicsrc-web/public/openicon/set/svg/map-pin.svg b/apps/logicsrc-web/public/openicon/set/svg/map-pin.svg
new file mode 100644
index 0000000..ae0c858
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/map-pin.svg
@@ -0,0 +1 @@
+Map pin
diff --git a/apps/logicsrc-web/public/openicon/set/svg/map.svg b/apps/logicsrc-web/public/openicon/set/svg/map.svg
new file mode 100644
index 0000000..2f6b32e
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/map.svg
@@ -0,0 +1 @@
+Map
diff --git a/apps/logicsrc-web/public/openicon/set/svg/mastodon.svg b/apps/logicsrc-web/public/openicon/set/svg/mastodon.svg
new file mode 100644
index 0000000..3fb26d8
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/mastodon.svg
@@ -0,0 +1 @@
+Mastodon
diff --git a/apps/logicsrc-web/public/openicon/set/svg/matrix.svg b/apps/logicsrc-web/public/openicon/set/svg/matrix.svg
new file mode 100644
index 0000000..6265ded
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/matrix.svg
@@ -0,0 +1 @@
+Matrix
diff --git a/apps/logicsrc-web/public/openicon/set/svg/mattermost.svg b/apps/logicsrc-web/public/openicon/set/svg/mattermost.svg
new file mode 100644
index 0000000..02b4178
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/mattermost.svg
@@ -0,0 +1 @@
+Mattermost
diff --git a/apps/logicsrc-web/public/openicon/set/svg/maximize.svg b/apps/logicsrc-web/public/openicon/set/svg/maximize.svg
new file mode 100644
index 0000000..a30c4ae
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/maximize.svg
@@ -0,0 +1 @@
+Maximize
diff --git a/apps/logicsrc-web/public/openicon/set/svg/medium.svg b/apps/logicsrc-web/public/openicon/set/svg/medium.svg
new file mode 100644
index 0000000..58f0aae
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/medium.svg
@@ -0,0 +1 @@
+Medium
diff --git a/apps/logicsrc-web/public/openicon/set/svg/megaphone.svg b/apps/logicsrc-web/public/openicon/set/svg/megaphone.svg
new file mode 100644
index 0000000..05e3c72
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/megaphone.svg
@@ -0,0 +1 @@
+Megaphone
diff --git a/apps/logicsrc-web/public/openicon/set/svg/menu.svg b/apps/logicsrc-web/public/openicon/set/svg/menu.svg
new file mode 100644
index 0000000..e8d6af6
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/menu.svg
@@ -0,0 +1 @@
+Menu
diff --git a/apps/logicsrc-web/public/openicon/set/svg/messenger.svg b/apps/logicsrc-web/public/openicon/set/svg/messenger.svg
new file mode 100644
index 0000000..73c5992
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/messenger.svg
@@ -0,0 +1 @@
+Messenger
diff --git a/apps/logicsrc-web/public/openicon/set/svg/mic-off.svg b/apps/logicsrc-web/public/openicon/set/svg/mic-off.svg
new file mode 100644
index 0000000..4324465
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/mic-off.svg
@@ -0,0 +1 @@
+Mic off
diff --git a/apps/logicsrc-web/public/openicon/set/svg/mic.svg b/apps/logicsrc-web/public/openicon/set/svg/mic.svg
new file mode 100644
index 0000000..ec21284
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/mic.svg
@@ -0,0 +1 @@
+Mic
diff --git a/apps/logicsrc-web/public/openicon/set/svg/microsoft.svg b/apps/logicsrc-web/public/openicon/set/svg/microsoft.svg
new file mode 100644
index 0000000..23d4de7
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/microsoft.svg
@@ -0,0 +1 @@
+Microsoft
diff --git a/apps/logicsrc-web/public/openicon/set/svg/minimize.svg b/apps/logicsrc-web/public/openicon/set/svg/minimize.svg
new file mode 100644
index 0000000..e05b0b1
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/minimize.svg
@@ -0,0 +1 @@
+Minimize
diff --git a/apps/logicsrc-web/public/openicon/set/svg/minus-circle.svg b/apps/logicsrc-web/public/openicon/set/svg/minus-circle.svg
new file mode 100644
index 0000000..7d2eba4
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/minus-circle.svg
@@ -0,0 +1 @@
+Minus circle
diff --git a/apps/logicsrc-web/public/openicon/set/svg/minus.svg b/apps/logicsrc-web/public/openicon/set/svg/minus.svg
new file mode 100644
index 0000000..d4233f6
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/minus.svg
@@ -0,0 +1 @@
+Minus
diff --git a/apps/logicsrc-web/public/openicon/set/svg/misskey.svg b/apps/logicsrc-web/public/openicon/set/svg/misskey.svg
new file mode 100644
index 0000000..00aac96
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/misskey.svg
@@ -0,0 +1 @@
+Misskey
diff --git a/apps/logicsrc-web/public/openicon/set/svg/monitor.svg b/apps/logicsrc-web/public/openicon/set/svg/monitor.svg
new file mode 100644
index 0000000..25beffa
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/monitor.svg
@@ -0,0 +1 @@
+Monitor
diff --git a/apps/logicsrc-web/public/openicon/set/svg/moon.svg b/apps/logicsrc-web/public/openicon/set/svg/moon.svg
new file mode 100644
index 0000000..068e14d
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/moon.svg
@@ -0,0 +1 @@
+Moon
diff --git a/apps/logicsrc-web/public/openicon/set/svg/more-horizontal.svg b/apps/logicsrc-web/public/openicon/set/svg/more-horizontal.svg
new file mode 100644
index 0000000..affb78d
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/more-horizontal.svg
@@ -0,0 +1 @@
+More horizontal
diff --git a/apps/logicsrc-web/public/openicon/set/svg/more-vertical.svg b/apps/logicsrc-web/public/openicon/set/svg/more-vertical.svg
new file mode 100644
index 0000000..b351980
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/more-vertical.svg
@@ -0,0 +1 @@
+More vertical
diff --git a/apps/logicsrc-web/public/openicon/set/svg/mouse.svg b/apps/logicsrc-web/public/openicon/set/svg/mouse.svg
new file mode 100644
index 0000000..05e20f9
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/mouse.svg
@@ -0,0 +1 @@
+Mouse
diff --git a/apps/logicsrc-web/public/openicon/set/svg/move.svg b/apps/logicsrc-web/public/openicon/set/svg/move.svg
new file mode 100644
index 0000000..afaea08
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/move.svg
@@ -0,0 +1 @@
+Move
diff --git a/apps/logicsrc-web/public/openicon/set/svg/music.svg b/apps/logicsrc-web/public/openicon/set/svg/music.svg
new file mode 100644
index 0000000..baf8f05
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/music.svg
@@ -0,0 +1 @@
+Music
diff --git a/apps/logicsrc-web/public/openicon/set/svg/navigation.svg b/apps/logicsrc-web/public/openicon/set/svg/navigation.svg
new file mode 100644
index 0000000..6bc3ca8
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/navigation.svg
@@ -0,0 +1 @@
+Navigation
diff --git a/apps/logicsrc-web/public/openicon/set/svg/netlify.svg b/apps/logicsrc-web/public/openicon/set/svg/netlify.svg
new file mode 100644
index 0000000..0f5a51d
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/netlify.svg
@@ -0,0 +1 @@
+Netlify
diff --git a/apps/logicsrc-web/public/openicon/set/svg/newspaper.svg b/apps/logicsrc-web/public/openicon/set/svg/newspaper.svg
new file mode 100644
index 0000000..0da5a37
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/newspaper.svg
@@ -0,0 +1 @@
+Newspaper
diff --git a/apps/logicsrc-web/public/openicon/set/svg/nodejs.svg b/apps/logicsrc-web/public/openicon/set/svg/nodejs.svg
new file mode 100644
index 0000000..dd5c825
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/nodejs.svg
@@ -0,0 +1 @@
+Node.js
diff --git a/apps/logicsrc-web/public/openicon/set/svg/notion.svg b/apps/logicsrc-web/public/openicon/set/svg/notion.svg
new file mode 100644
index 0000000..f2f96bb
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/notion.svg
@@ -0,0 +1 @@
+Notion
diff --git a/apps/logicsrc-web/public/openicon/set/svg/npm.svg b/apps/logicsrc-web/public/openicon/set/svg/npm.svg
new file mode 100644
index 0000000..2da4ec9
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/npm.svg
@@ -0,0 +1 @@
+npm
diff --git a/apps/logicsrc-web/public/openicon/set/svg/online.svg b/apps/logicsrc-web/public/openicon/set/svg/online.svg
new file mode 100644
index 0000000..ebb061f
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/online.svg
@@ -0,0 +1 @@
+Online
diff --git a/apps/logicsrc-web/public/openicon/set/svg/openai.svg b/apps/logicsrc-web/public/openicon/set/svg/openai.svg
new file mode 100644
index 0000000..bcdbd3e
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/openai.svg
@@ -0,0 +1 @@
+OpenAI
diff --git a/apps/logicsrc-web/public/openicon/set/svg/package.svg b/apps/logicsrc-web/public/openicon/set/svg/package.svg
new file mode 100644
index 0000000..90a87ec
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/package.svg
@@ -0,0 +1 @@
+Package
diff --git a/apps/logicsrc-web/public/openicon/set/svg/palette.svg b/apps/logicsrc-web/public/openicon/set/svg/palette.svg
new file mode 100644
index 0000000..987aceb
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/palette.svg
@@ -0,0 +1 @@
+Palette
diff --git a/apps/logicsrc-web/public/openicon/set/svg/paperclip.svg b/apps/logicsrc-web/public/openicon/set/svg/paperclip.svg
new file mode 100644
index 0000000..423dd8a
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/paperclip.svg
@@ -0,0 +1 @@
+Paperclip
diff --git a/apps/logicsrc-web/public/openicon/set/svg/patreon.svg b/apps/logicsrc-web/public/openicon/set/svg/patreon.svg
new file mode 100644
index 0000000..9841649
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/patreon.svg
@@ -0,0 +1 @@
+Patreon
diff --git a/apps/logicsrc-web/public/openicon/set/svg/pause.svg b/apps/logicsrc-web/public/openicon/set/svg/pause.svg
new file mode 100644
index 0000000..39310b0
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/pause.svg
@@ -0,0 +1 @@
+Pause
diff --git a/apps/logicsrc-web/public/openicon/set/svg/paypal.svg b/apps/logicsrc-web/public/openicon/set/svg/paypal.svg
new file mode 100644
index 0000000..a96fa52
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/paypal.svg
@@ -0,0 +1 @@
+PayPal
diff --git a/apps/logicsrc-web/public/openicon/set/svg/peertube.svg b/apps/logicsrc-web/public/openicon/set/svg/peertube.svg
new file mode 100644
index 0000000..948d33b
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/peertube.svg
@@ -0,0 +1 @@
+PeerTube
diff --git a/apps/logicsrc-web/public/openicon/set/svg/pen-tool.svg b/apps/logicsrc-web/public/openicon/set/svg/pen-tool.svg
new file mode 100644
index 0000000..dddba1a
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/pen-tool.svg
@@ -0,0 +1 @@
+Pen tool
diff --git a/apps/logicsrc-web/public/openicon/set/svg/percent.svg b/apps/logicsrc-web/public/openicon/set/svg/percent.svg
new file mode 100644
index 0000000..a27cda0
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/percent.svg
@@ -0,0 +1 @@
+Percent
diff --git a/apps/logicsrc-web/public/openicon/set/svg/phone-call.svg b/apps/logicsrc-web/public/openicon/set/svg/phone-call.svg
new file mode 100644
index 0000000..0095203
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/phone-call.svg
@@ -0,0 +1 @@
+Phone call
diff --git a/apps/logicsrc-web/public/openicon/set/svg/phone-off.svg b/apps/logicsrc-web/public/openicon/set/svg/phone-off.svg
new file mode 100644
index 0000000..52987f4
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/phone-off.svg
@@ -0,0 +1 @@
+Phone off
diff --git a/apps/logicsrc-web/public/openicon/set/svg/phone.svg b/apps/logicsrc-web/public/openicon/set/svg/phone.svg
new file mode 100644
index 0000000..8b157b2
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/phone.svg
@@ -0,0 +1 @@
+Phone
diff --git a/apps/logicsrc-web/public/openicon/set/svg/pin.svg b/apps/logicsrc-web/public/openicon/set/svg/pin.svg
new file mode 100644
index 0000000..78e8696
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/pin.svg
@@ -0,0 +1 @@
+Pin
diff --git a/apps/logicsrc-web/public/openicon/set/svg/pinterest.svg b/apps/logicsrc-web/public/openicon/set/svg/pinterest.svg
new file mode 100644
index 0000000..9ae6289
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/pinterest.svg
@@ -0,0 +1 @@
+Pinterest
diff --git a/apps/logicsrc-web/public/openicon/set/svg/pixelfed.svg b/apps/logicsrc-web/public/openicon/set/svg/pixelfed.svg
new file mode 100644
index 0000000..4d95fac
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/pixelfed.svg
@@ -0,0 +1 @@
+Pixelfed
diff --git a/apps/logicsrc-web/public/openicon/set/svg/play.svg b/apps/logicsrc-web/public/openicon/set/svg/play.svg
new file mode 100644
index 0000000..3140633
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/play.svg
@@ -0,0 +1 @@
+Play
diff --git a/apps/logicsrc-web/public/openicon/set/svg/plug.svg b/apps/logicsrc-web/public/openicon/set/svg/plug.svg
new file mode 100644
index 0000000..58e1bfd
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/plug.svg
@@ -0,0 +1 @@
+Plug
diff --git a/apps/logicsrc-web/public/openicon/set/svg/plus-circle.svg b/apps/logicsrc-web/public/openicon/set/svg/plus-circle.svg
new file mode 100644
index 0000000..f49211b
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/plus-circle.svg
@@ -0,0 +1 @@
+Plus circle
diff --git a/apps/logicsrc-web/public/openicon/set/svg/power.svg b/apps/logicsrc-web/public/openicon/set/svg/power.svg
new file mode 100644
index 0000000..9a08d5e
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/power.svg
@@ -0,0 +1 @@
+Power
diff --git a/apps/logicsrc-web/public/openicon/set/svg/print.svg b/apps/logicsrc-web/public/openicon/set/svg/print.svg
new file mode 100644
index 0000000..fc6d905
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/print.svg
@@ -0,0 +1 @@
+Print
diff --git a/apps/logicsrc-web/public/openicon/set/svg/product-hunt.svg b/apps/logicsrc-web/public/openicon/set/svg/product-hunt.svg
new file mode 100644
index 0000000..28f57cd
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/product-hunt.svg
@@ -0,0 +1 @@
+Product Hunt
diff --git a/apps/logicsrc-web/public/openicon/set/svg/proton-mail.svg b/apps/logicsrc-web/public/openicon/set/svg/proton-mail.svg
new file mode 100644
index 0000000..9306c33
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/proton-mail.svg
@@ -0,0 +1 @@
+Proton Mail
diff --git a/apps/logicsrc-web/public/openicon/set/svg/puzzle.svg b/apps/logicsrc-web/public/openicon/set/svg/puzzle.svg
new file mode 100644
index 0000000..c55807e
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/puzzle.svg
@@ -0,0 +1 @@
+Puzzle
diff --git a/apps/logicsrc-web/public/openicon/set/svg/python.svg b/apps/logicsrc-web/public/openicon/set/svg/python.svg
new file mode 100644
index 0000000..f4ca594
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/python.svg
@@ -0,0 +1 @@
+Python
diff --git a/apps/logicsrc-web/public/openicon/set/svg/qr-code.svg b/apps/logicsrc-web/public/openicon/set/svg/qr-code.svg
new file mode 100644
index 0000000..d77b1e3
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/qr-code.svg
@@ -0,0 +1 @@
+Qr code
diff --git a/apps/logicsrc-web/public/openicon/set/svg/quote.svg b/apps/logicsrc-web/public/openicon/set/svg/quote.svg
new file mode 100644
index 0000000..c3db2a9
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/quote.svg
@@ -0,0 +1 @@
+Quote
diff --git a/apps/logicsrc-web/public/openicon/set/svg/radio-off.svg b/apps/logicsrc-web/public/openicon/set/svg/radio-off.svg
new file mode 100644
index 0000000..1df756b
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/radio-off.svg
@@ -0,0 +1 @@
+Radio off
diff --git a/apps/logicsrc-web/public/openicon/set/svg/radio-on.svg b/apps/logicsrc-web/public/openicon/set/svg/radio-on.svg
new file mode 100644
index 0000000..71812be
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/radio-on.svg
@@ -0,0 +1 @@
+Radio on
diff --git a/apps/logicsrc-web/public/openicon/set/svg/radio.svg b/apps/logicsrc-web/public/openicon/set/svg/radio.svg
new file mode 100644
index 0000000..fb8cd40
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/radio.svg
@@ -0,0 +1 @@
+Radio
diff --git a/apps/logicsrc-web/public/openicon/set/svg/railway.svg b/apps/logicsrc-web/public/openicon/set/svg/railway.svg
new file mode 100644
index 0000000..d794dc2
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/railway.svg
@@ -0,0 +1 @@
+Railway
diff --git a/apps/logicsrc-web/public/openicon/set/svg/receipt.svg b/apps/logicsrc-web/public/openicon/set/svg/receipt.svg
new file mode 100644
index 0000000..1d7d173
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/receipt.svg
@@ -0,0 +1 @@
+Receipt
diff --git a/apps/logicsrc-web/public/openicon/set/svg/reddit.svg b/apps/logicsrc-web/public/openicon/set/svg/reddit.svg
new file mode 100644
index 0000000..25eb3f9
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/reddit.svg
@@ -0,0 +1 @@
+Reddit
diff --git a/apps/logicsrc-web/public/openicon/set/svg/redo.svg b/apps/logicsrc-web/public/openicon/set/svg/redo.svg
new file mode 100644
index 0000000..182a06f
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/redo.svg
@@ -0,0 +1 @@
+Redo
diff --git a/apps/logicsrc-web/public/openicon/set/svg/refresh.svg b/apps/logicsrc-web/public/openicon/set/svg/refresh.svg
new file mode 100644
index 0000000..5848815
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/refresh.svg
@@ -0,0 +1 @@
+Refresh
diff --git a/apps/logicsrc-web/public/openicon/set/svg/repeat.svg b/apps/logicsrc-web/public/openicon/set/svg/repeat.svg
new file mode 100644
index 0000000..50df46e
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/repeat.svg
@@ -0,0 +1 @@
+Repeat
diff --git a/apps/logicsrc-web/public/openicon/set/svg/reply.svg b/apps/logicsrc-web/public/openicon/set/svg/reply.svg
new file mode 100644
index 0000000..cf29fbc
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/reply.svg
@@ -0,0 +1 @@
+Reply
diff --git a/apps/logicsrc-web/public/openicon/set/svg/rewind.svg b/apps/logicsrc-web/public/openicon/set/svg/rewind.svg
new file mode 100644
index 0000000..33ef6d2
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/rewind.svg
@@ -0,0 +1 @@
+Rewind
diff --git a/apps/logicsrc-web/public/openicon/set/svg/rocket.svg b/apps/logicsrc-web/public/openicon/set/svg/rocket.svg
new file mode 100644
index 0000000..8d9235f
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/rocket.svg
@@ -0,0 +1 @@
+Rocket
diff --git a/apps/logicsrc-web/public/openicon/set/svg/rocketchat.svg b/apps/logicsrc-web/public/openicon/set/svg/rocketchat.svg
new file mode 100644
index 0000000..f18fa78
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/rocketchat.svg
@@ -0,0 +1 @@
+Rocket.Chat
diff --git a/apps/logicsrc-web/public/openicon/set/svg/rss.svg b/apps/logicsrc-web/public/openicon/set/svg/rss.svg
new file mode 100644
index 0000000..139e0ad
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/rss.svg
@@ -0,0 +1 @@
+Rss
diff --git a/apps/logicsrc-web/public/openicon/set/svg/ruler.svg b/apps/logicsrc-web/public/openicon/set/svg/ruler.svg
new file mode 100644
index 0000000..ee2195a
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/ruler.svg
@@ -0,0 +1 @@
+Ruler
diff --git a/apps/logicsrc-web/public/openicon/set/svg/rust.svg b/apps/logicsrc-web/public/openicon/set/svg/rust.svg
new file mode 100644
index 0000000..a828fb2
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/rust.svg
@@ -0,0 +1 @@
+Rust
diff --git a/apps/logicsrc-web/public/openicon/set/svg/safari.svg b/apps/logicsrc-web/public/openicon/set/svg/safari.svg
new file mode 100644
index 0000000..faca252
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/safari.svg
@@ -0,0 +1 @@
+Safari
diff --git a/apps/logicsrc-web/public/openicon/set/svg/save.svg b/apps/logicsrc-web/public/openicon/set/svg/save.svg
new file mode 100644
index 0000000..fcf7c5f
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/save.svg
@@ -0,0 +1 @@
+Save
diff --git a/apps/logicsrc-web/public/openicon/set/svg/search.svg b/apps/logicsrc-web/public/openicon/set/svg/search.svg
new file mode 100644
index 0000000..b9c999b
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/search.svg
@@ -0,0 +1 @@
+Search
diff --git a/apps/logicsrc-web/public/openicon/set/svg/send.svg b/apps/logicsrc-web/public/openicon/set/svg/send.svg
new file mode 100644
index 0000000..6749ee3
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/send.svg
@@ -0,0 +1 @@
+Send
diff --git a/apps/logicsrc-web/public/openicon/set/svg/server.svg b/apps/logicsrc-web/public/openicon/set/svg/server.svg
new file mode 100644
index 0000000..c2853df
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/server.svg
@@ -0,0 +1 @@
+Server
diff --git a/apps/logicsrc-web/public/openicon/set/svg/settings.svg b/apps/logicsrc-web/public/openicon/set/svg/settings.svg
new file mode 100644
index 0000000..ae3eb5c
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/settings.svg
@@ -0,0 +1 @@
+Settings
diff --git a/apps/logicsrc-web/public/openicon/set/svg/share-out.svg b/apps/logicsrc-web/public/openicon/set/svg/share-out.svg
new file mode 100644
index 0000000..fe7d8f3
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/share-out.svg
@@ -0,0 +1 @@
+Share out
diff --git a/apps/logicsrc-web/public/openicon/set/svg/share.svg b/apps/logicsrc-web/public/openicon/set/svg/share.svg
new file mode 100644
index 0000000..3842aee
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/share.svg
@@ -0,0 +1 @@
+Share
diff --git a/apps/logicsrc-web/public/openicon/set/svg/shield-check.svg b/apps/logicsrc-web/public/openicon/set/svg/shield-check.svg
new file mode 100644
index 0000000..61225f8
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/shield-check.svg
@@ -0,0 +1 @@
+Shield check
diff --git a/apps/logicsrc-web/public/openicon/set/svg/shield.svg b/apps/logicsrc-web/public/openicon/set/svg/shield.svg
new file mode 100644
index 0000000..f0182de
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/shield.svg
@@ -0,0 +1 @@
+Shield
diff --git a/apps/logicsrc-web/public/openicon/set/svg/shopify.svg b/apps/logicsrc-web/public/openicon/set/svg/shopify.svg
new file mode 100644
index 0000000..5525d50
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/shopify.svg
@@ -0,0 +1 @@
+Shopify
diff --git a/apps/logicsrc-web/public/openicon/set/svg/shuffle.svg b/apps/logicsrc-web/public/openicon/set/svg/shuffle.svg
new file mode 100644
index 0000000..cc87df2
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/shuffle.svg
@@ -0,0 +1 @@
+Shuffle
diff --git a/apps/logicsrc-web/public/openicon/set/svg/sidebar.svg b/apps/logicsrc-web/public/openicon/set/svg/sidebar.svg
new file mode 100644
index 0000000..193f4d9
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/sidebar.svg
@@ -0,0 +1 @@
+Sidebar
diff --git a/apps/logicsrc-web/public/openicon/set/svg/signal.svg b/apps/logicsrc-web/public/openicon/set/svg/signal.svg
new file mode 100644
index 0000000..16c88dc
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/signal.svg
@@ -0,0 +1 @@
+Signal
diff --git a/apps/logicsrc-web/public/openicon/set/svg/skip-back.svg b/apps/logicsrc-web/public/openicon/set/svg/skip-back.svg
new file mode 100644
index 0000000..031b8a8
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/skip-back.svg
@@ -0,0 +1 @@
+Skip back
diff --git a/apps/logicsrc-web/public/openicon/set/svg/skip-forward.svg b/apps/logicsrc-web/public/openicon/set/svg/skip-forward.svg
new file mode 100644
index 0000000..6d2825c
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/skip-forward.svg
@@ -0,0 +1 @@
+Skip forward
diff --git a/apps/logicsrc-web/public/openicon/set/svg/skype.svg b/apps/logicsrc-web/public/openicon/set/svg/skype.svg
new file mode 100644
index 0000000..205b357
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/skype.svg
@@ -0,0 +1 @@
+Skype
diff --git a/apps/logicsrc-web/public/openicon/set/svg/slack.svg b/apps/logicsrc-web/public/openicon/set/svg/slack.svg
new file mode 100644
index 0000000..6772c76
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/slack.svg
@@ -0,0 +1 @@
+Slack
diff --git a/apps/logicsrc-web/public/openicon/set/svg/sliders.svg b/apps/logicsrc-web/public/openicon/set/svg/sliders.svg
new file mode 100644
index 0000000..06696f4
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/sliders.svg
@@ -0,0 +1 @@
+Sliders
diff --git a/apps/logicsrc-web/public/openicon/set/svg/smartphone.svg b/apps/logicsrc-web/public/openicon/set/svg/smartphone.svg
new file mode 100644
index 0000000..e0cef05
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/smartphone.svg
@@ -0,0 +1 @@
+Smartphone
diff --git a/apps/logicsrc-web/public/openicon/set/svg/smile.svg b/apps/logicsrc-web/public/openicon/set/svg/smile.svg
new file mode 100644
index 0000000..208a5ef
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/smile.svg
@@ -0,0 +1 @@
+Smile
diff --git a/apps/logicsrc-web/public/openicon/set/svg/sms.svg b/apps/logicsrc-web/public/openicon/set/svg/sms.svg
new file mode 100644
index 0000000..270b768
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/sms.svg
@@ -0,0 +1 @@
+Sms
diff --git a/apps/logicsrc-web/public/openicon/set/svg/snapchat.svg b/apps/logicsrc-web/public/openicon/set/svg/snapchat.svg
new file mode 100644
index 0000000..b058b44
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/snapchat.svg
@@ -0,0 +1 @@
+Snapchat
diff --git a/apps/logicsrc-web/public/openicon/set/svg/sort-asc.svg b/apps/logicsrc-web/public/openicon/set/svg/sort-asc.svg
new file mode 100644
index 0000000..299749e
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/sort-asc.svg
@@ -0,0 +1 @@
+Sort asc
diff --git a/apps/logicsrc-web/public/openicon/set/svg/sort-desc.svg b/apps/logicsrc-web/public/openicon/set/svg/sort-desc.svg
new file mode 100644
index 0000000..4c4ab41
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/sort-desc.svg
@@ -0,0 +1 @@
+Sort desc
diff --git a/apps/logicsrc-web/public/openicon/set/svg/sort.svg b/apps/logicsrc-web/public/openicon/set/svg/sort.svg
new file mode 100644
index 0000000..ceccbbd
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/sort.svg
@@ -0,0 +1 @@
+Sort
diff --git a/apps/logicsrc-web/public/openicon/set/svg/soundcloud.svg b/apps/logicsrc-web/public/openicon/set/svg/soundcloud.svg
new file mode 100644
index 0000000..2d921b0
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/soundcloud.svg
@@ -0,0 +1 @@
+SoundCloud
diff --git a/apps/logicsrc-web/public/openicon/set/svg/sourcehut.svg b/apps/logicsrc-web/public/openicon/set/svg/sourcehut.svg
new file mode 100644
index 0000000..3b6e567
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/sourcehut.svg
@@ -0,0 +1 @@
+SourceHut
diff --git a/apps/logicsrc-web/public/openicon/set/svg/sparkles.svg b/apps/logicsrc-web/public/openicon/set/svg/sparkles.svg
new file mode 100644
index 0000000..abc01c6
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/sparkles.svg
@@ -0,0 +1 @@
+Sparkles
diff --git a/apps/logicsrc-web/public/openicon/set/svg/spotify.svg b/apps/logicsrc-web/public/openicon/set/svg/spotify.svg
new file mode 100644
index 0000000..a6a8daf
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/spotify.svg
@@ -0,0 +1 @@
+Spotify
diff --git a/apps/logicsrc-web/public/openicon/set/svg/stack-overflow.svg b/apps/logicsrc-web/public/openicon/set/svg/stack-overflow.svg
new file mode 100644
index 0000000..3c7c357
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/stack-overflow.svg
@@ -0,0 +1 @@
+Stack Overflow
diff --git a/apps/logicsrc-web/public/openicon/set/svg/star.svg b/apps/logicsrc-web/public/openicon/set/svg/star.svg
new file mode 100644
index 0000000..38f4b53
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/star.svg
@@ -0,0 +1 @@
+Star
diff --git a/apps/logicsrc-web/public/openicon/set/svg/stop.svg b/apps/logicsrc-web/public/openicon/set/svg/stop.svg
new file mode 100644
index 0000000..1641d52
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/stop.svg
@@ -0,0 +1 @@
+Stop
diff --git a/apps/logicsrc-web/public/openicon/set/svg/store.svg b/apps/logicsrc-web/public/openicon/set/svg/store.svg
new file mode 100644
index 0000000..9fae168
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/store.svg
@@ -0,0 +1 @@
+Store
diff --git a/apps/logicsrc-web/public/openicon/set/svg/strikethrough.svg b/apps/logicsrc-web/public/openicon/set/svg/strikethrough.svg
new file mode 100644
index 0000000..99659b7
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/strikethrough.svg
@@ -0,0 +1 @@
+Strikethrough
diff --git a/apps/logicsrc-web/public/openicon/set/svg/stripe.svg b/apps/logicsrc-web/public/openicon/set/svg/stripe.svg
new file mode 100644
index 0000000..f40b0a0
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/stripe.svg
@@ -0,0 +1 @@
+Stripe
diff --git a/apps/logicsrc-web/public/openicon/set/svg/substack.svg b/apps/logicsrc-web/public/openicon/set/svg/substack.svg
new file mode 100644
index 0000000..c4102e7
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/substack.svg
@@ -0,0 +1 @@
+Substack
diff --git a/apps/logicsrc-web/public/openicon/set/svg/sun.svg b/apps/logicsrc-web/public/openicon/set/svg/sun.svg
new file mode 100644
index 0000000..39b57ea
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/sun.svg
@@ -0,0 +1 @@
+Sun
diff --git a/apps/logicsrc-web/public/openicon/set/svg/supabase.svg b/apps/logicsrc-web/public/openicon/set/svg/supabase.svg
new file mode 100644
index 0000000..fc4d2dd
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/supabase.svg
@@ -0,0 +1 @@
+Supabase
diff --git a/apps/logicsrc-web/public/openicon/set/svg/table.svg b/apps/logicsrc-web/public/openicon/set/svg/table.svg
new file mode 100644
index 0000000..a9dc98c
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/table.svg
@@ -0,0 +1 @@
+Table
diff --git a/apps/logicsrc-web/public/openicon/set/svg/tablet.svg b/apps/logicsrc-web/public/openicon/set/svg/tablet.svg
new file mode 100644
index 0000000..82aa01c
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/tablet.svg
@@ -0,0 +1 @@
+Tablet
diff --git a/apps/logicsrc-web/public/openicon/set/svg/tag.svg b/apps/logicsrc-web/public/openicon/set/svg/tag.svg
new file mode 100644
index 0000000..ad093ac
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/tag.svg
@@ -0,0 +1 @@
+Tag
diff --git a/apps/logicsrc-web/public/openicon/set/svg/target.svg b/apps/logicsrc-web/public/openicon/set/svg/target.svg
new file mode 100644
index 0000000..d80f5c4
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/target.svg
@@ -0,0 +1 @@
+Target
diff --git a/apps/logicsrc-web/public/openicon/set/svg/telegram.svg b/apps/logicsrc-web/public/openicon/set/svg/telegram.svg
new file mode 100644
index 0000000..f3c9f5b
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/telegram.svg
@@ -0,0 +1 @@
+Telegram
diff --git a/apps/logicsrc-web/public/openicon/set/svg/terminal.svg b/apps/logicsrc-web/public/openicon/set/svg/terminal.svg
new file mode 100644
index 0000000..7776fcf
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/terminal.svg
@@ -0,0 +1 @@
+Terminal
diff --git a/apps/logicsrc-web/public/openicon/set/svg/theme.svg b/apps/logicsrc-web/public/openicon/set/svg/theme.svg
new file mode 100644
index 0000000..31b4191
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/theme.svg
@@ -0,0 +1 @@
+Theme
diff --git a/apps/logicsrc-web/public/openicon/set/svg/thermometer.svg b/apps/logicsrc-web/public/openicon/set/svg/thermometer.svg
new file mode 100644
index 0000000..965b39e
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/thermometer.svg
@@ -0,0 +1 @@
+Thermometer
diff --git a/apps/logicsrc-web/public/openicon/set/svg/threads.svg b/apps/logicsrc-web/public/openicon/set/svg/threads.svg
new file mode 100644
index 0000000..0981a60
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/threads.svg
@@ -0,0 +1 @@
+Threads
diff --git a/apps/logicsrc-web/public/openicon/set/svg/thumbs-down.svg b/apps/logicsrc-web/public/openicon/set/svg/thumbs-down.svg
new file mode 100644
index 0000000..a32fd64
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/thumbs-down.svg
@@ -0,0 +1 @@
+Thumbs down
diff --git a/apps/logicsrc-web/public/openicon/set/svg/thumbs-up.svg b/apps/logicsrc-web/public/openicon/set/svg/thumbs-up.svg
new file mode 100644
index 0000000..612a5aa
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/thumbs-up.svg
@@ -0,0 +1 @@
+Thumbs up
diff --git a/apps/logicsrc-web/public/openicon/set/svg/tiktok.svg b/apps/logicsrc-web/public/openicon/set/svg/tiktok.svg
new file mode 100644
index 0000000..ca19338
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/tiktok.svg
@@ -0,0 +1 @@
+TikTok
diff --git a/apps/logicsrc-web/public/openicon/set/svg/timer.svg b/apps/logicsrc-web/public/openicon/set/svg/timer.svg
new file mode 100644
index 0000000..fbf55c3
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/timer.svg
@@ -0,0 +1 @@
+Timer
diff --git a/apps/logicsrc-web/public/openicon/set/svg/toggle-off.svg b/apps/logicsrc-web/public/openicon/set/svg/toggle-off.svg
new file mode 100644
index 0000000..b238c19
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/toggle-off.svg
@@ -0,0 +1 @@
+Toggle off
diff --git a/apps/logicsrc-web/public/openicon/set/svg/toggle-on.svg b/apps/logicsrc-web/public/openicon/set/svg/toggle-on.svg
new file mode 100644
index 0000000..65840e6
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/toggle-on.svg
@@ -0,0 +1 @@
+Toggle on
diff --git a/apps/logicsrc-web/public/openicon/set/svg/tor.svg b/apps/logicsrc-web/public/openicon/set/svg/tor.svg
new file mode 100644
index 0000000..3113a9d
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/tor.svg
@@ -0,0 +1 @@
+Tor
diff --git a/apps/logicsrc-web/public/openicon/set/svg/translate.svg b/apps/logicsrc-web/public/openicon/set/svg/translate.svg
new file mode 100644
index 0000000..10b4935
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/translate.svg
@@ -0,0 +1 @@
+Translate
diff --git a/apps/logicsrc-web/public/openicon/set/svg/trello.svg b/apps/logicsrc-web/public/openicon/set/svg/trello.svg
new file mode 100644
index 0000000..45c135f
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/trello.svg
@@ -0,0 +1 @@
+Trello
diff --git a/apps/logicsrc-web/public/openicon/set/svg/trophy.svg b/apps/logicsrc-web/public/openicon/set/svg/trophy.svg
new file mode 100644
index 0000000..be95cbb
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/trophy.svg
@@ -0,0 +1 @@
+Trophy
diff --git a/apps/logicsrc-web/public/openicon/set/svg/truck.svg b/apps/logicsrc-web/public/openicon/set/svg/truck.svg
new file mode 100644
index 0000000..1c5cd1b
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/truck.svg
@@ -0,0 +1 @@
+Truck
diff --git a/apps/logicsrc-web/public/openicon/set/svg/tumblr.svg b/apps/logicsrc-web/public/openicon/set/svg/tumblr.svg
new file mode 100644
index 0000000..534dff7
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/tumblr.svg
@@ -0,0 +1 @@
+Tumblr
diff --git a/apps/logicsrc-web/public/openicon/set/svg/tv.svg b/apps/logicsrc-web/public/openicon/set/svg/tv.svg
new file mode 100644
index 0000000..d8daf1b
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/tv.svg
@@ -0,0 +1 @@
+Tv
diff --git a/apps/logicsrc-web/public/openicon/set/svg/twitch.svg b/apps/logicsrc-web/public/openicon/set/svg/twitch.svg
new file mode 100644
index 0000000..219447f
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/twitch.svg
@@ -0,0 +1 @@
+Twitch
diff --git a/apps/logicsrc-web/public/openicon/set/svg/type.svg b/apps/logicsrc-web/public/openicon/set/svg/type.svg
new file mode 100644
index 0000000..08c36e5
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/type.svg
@@ -0,0 +1 @@
+Type
diff --git a/apps/logicsrc-web/public/openicon/set/svg/typescript.svg b/apps/logicsrc-web/public/openicon/set/svg/typescript.svg
new file mode 100644
index 0000000..4ba08b8
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/typescript.svg
@@ -0,0 +1 @@
+TypeScript
diff --git a/apps/logicsrc-web/public/openicon/set/svg/ubuntu.svg b/apps/logicsrc-web/public/openicon/set/svg/ubuntu.svg
new file mode 100644
index 0000000..97a8450
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/ubuntu.svg
@@ -0,0 +1 @@
+Ubuntu
diff --git a/apps/logicsrc-web/public/openicon/set/svg/umbrella.svg b/apps/logicsrc-web/public/openicon/set/svg/umbrella.svg
new file mode 100644
index 0000000..87ef8c4
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/umbrella.svg
@@ -0,0 +1 @@
+Umbrella
diff --git a/apps/logicsrc-web/public/openicon/set/svg/underline.svg b/apps/logicsrc-web/public/openicon/set/svg/underline.svg
new file mode 100644
index 0000000..7d0c1f7
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/underline.svg
@@ -0,0 +1 @@
+Underline
diff --git a/apps/logicsrc-web/public/openicon/set/svg/undo.svg b/apps/logicsrc-web/public/openicon/set/svg/undo.svg
new file mode 100644
index 0000000..28e1ee0
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/undo.svg
@@ -0,0 +1 @@
+Undo
diff --git a/apps/logicsrc-web/public/openicon/set/svg/unlink.svg b/apps/logicsrc-web/public/openicon/set/svg/unlink.svg
new file mode 100644
index 0000000..f05c2d6
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/unlink.svg
@@ -0,0 +1 @@
+Unlink
diff --git a/apps/logicsrc-web/public/openicon/set/svg/unlock.svg b/apps/logicsrc-web/public/openicon/set/svg/unlock.svg
new file mode 100644
index 0000000..e7e4004
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/unlock.svg
@@ -0,0 +1 @@
+Unlock
diff --git a/apps/logicsrc-web/public/openicon/set/svg/upload.svg b/apps/logicsrc-web/public/openicon/set/svg/upload.svg
new file mode 100644
index 0000000..6aa749e
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/upload.svg
@@ -0,0 +1 @@
+Upload
diff --git a/apps/logicsrc-web/public/openicon/set/svg/user-check.svg b/apps/logicsrc-web/public/openicon/set/svg/user-check.svg
new file mode 100644
index 0000000..ac0e368
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/user-check.svg
@@ -0,0 +1 @@
+User check
diff --git a/apps/logicsrc-web/public/openicon/set/svg/user-circle.svg b/apps/logicsrc-web/public/openicon/set/svg/user-circle.svg
new file mode 100644
index 0000000..685c76e
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/user-circle.svg
@@ -0,0 +1 @@
+User circle
diff --git a/apps/logicsrc-web/public/openicon/set/svg/user-minus.svg b/apps/logicsrc-web/public/openicon/set/svg/user-minus.svg
new file mode 100644
index 0000000..7018633
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/user-minus.svg
@@ -0,0 +1 @@
+User minus
diff --git a/apps/logicsrc-web/public/openicon/set/svg/user-plus.svg b/apps/logicsrc-web/public/openicon/set/svg/user-plus.svg
new file mode 100644
index 0000000..4c20e81
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/user-plus.svg
@@ -0,0 +1 @@
+User plus
diff --git a/apps/logicsrc-web/public/openicon/set/svg/user.svg b/apps/logicsrc-web/public/openicon/set/svg/user.svg
new file mode 100644
index 0000000..fc57687
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/user.svg
@@ -0,0 +1 @@
+User
diff --git a/apps/logicsrc-web/public/openicon/set/svg/users.svg b/apps/logicsrc-web/public/openicon/set/svg/users.svg
new file mode 100644
index 0000000..cf3b72c
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/users.svg
@@ -0,0 +1 @@
+Users
diff --git a/apps/logicsrc-web/public/openicon/set/svg/vercel.svg b/apps/logicsrc-web/public/openicon/set/svg/vercel.svg
new file mode 100644
index 0000000..df401d1
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/vercel.svg
@@ -0,0 +1 @@
+Vercel
diff --git a/apps/logicsrc-web/public/openicon/set/svg/video.svg b/apps/logicsrc-web/public/openicon/set/svg/video.svg
new file mode 100644
index 0000000..c63ba02
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/video.svg
@@ -0,0 +1 @@
+Video
diff --git a/apps/logicsrc-web/public/openicon/set/svg/vimeo.svg b/apps/logicsrc-web/public/openicon/set/svg/vimeo.svg
new file mode 100644
index 0000000..a984bb9
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/vimeo.svg
@@ -0,0 +1 @@
+Vimeo
diff --git a/apps/logicsrc-web/public/openicon/set/svg/voicemail.svg b/apps/logicsrc-web/public/openicon/set/svg/voicemail.svg
new file mode 100644
index 0000000..a722276
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/voicemail.svg
@@ -0,0 +1 @@
+Voicemail
diff --git a/apps/logicsrc-web/public/openicon/set/svg/volume-low.svg b/apps/logicsrc-web/public/openicon/set/svg/volume-low.svg
new file mode 100644
index 0000000..20e09d8
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/volume-low.svg
@@ -0,0 +1 @@
+Volume low
diff --git a/apps/logicsrc-web/public/openicon/set/svg/volume-off.svg b/apps/logicsrc-web/public/openicon/set/svg/volume-off.svg
new file mode 100644
index 0000000..7394c8d
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/volume-off.svg
@@ -0,0 +1 @@
+Volume off
diff --git a/apps/logicsrc-web/public/openicon/set/svg/volume.svg b/apps/logicsrc-web/public/openicon/set/svg/volume.svg
new file mode 100644
index 0000000..afd7150
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/volume.svg
@@ -0,0 +1 @@
+Volume
diff --git a/apps/logicsrc-web/public/openicon/set/svg/wallet.svg b/apps/logicsrc-web/public/openicon/set/svg/wallet.svg
new file mode 100644
index 0000000..2de9d54
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/wallet.svg
@@ -0,0 +1 @@
+Wallet
diff --git a/apps/logicsrc-web/public/openicon/set/svg/warning.svg b/apps/logicsrc-web/public/openicon/set/svg/warning.svg
new file mode 100644
index 0000000..57ba596
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/warning.svg
@@ -0,0 +1 @@
+Warning
diff --git a/apps/logicsrc-web/public/openicon/set/svg/watch.svg b/apps/logicsrc-web/public/openicon/set/svg/watch.svg
new file mode 100644
index 0000000..bda30b1
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/watch.svg
@@ -0,0 +1 @@
+Watch
diff --git a/apps/logicsrc-web/public/openicon/set/svg/webhook.svg b/apps/logicsrc-web/public/openicon/set/svg/webhook.svg
new file mode 100644
index 0000000..de8c827
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/webhook.svg
@@ -0,0 +1 @@
+Webhook
diff --git a/apps/logicsrc-web/public/openicon/set/svg/wechat.svg b/apps/logicsrc-web/public/openicon/set/svg/wechat.svg
new file mode 100644
index 0000000..70300bb
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/wechat.svg
@@ -0,0 +1 @@
+WeChat
diff --git a/apps/logicsrc-web/public/openicon/set/svg/whatsapp.svg b/apps/logicsrc-web/public/openicon/set/svg/whatsapp.svg
new file mode 100644
index 0000000..46ddcba
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/whatsapp.svg
@@ -0,0 +1 @@
+WhatsApp
diff --git a/apps/logicsrc-web/public/openicon/set/svg/wifi-off.svg b/apps/logicsrc-web/public/openicon/set/svg/wifi-off.svg
new file mode 100644
index 0000000..4ddec27
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/wifi-off.svg
@@ -0,0 +1 @@
+Wifi off
diff --git a/apps/logicsrc-web/public/openicon/set/svg/wifi.svg b/apps/logicsrc-web/public/openicon/set/svg/wifi.svg
new file mode 100644
index 0000000..807b84b
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/wifi.svg
@@ -0,0 +1 @@
+Wifi
diff --git a/apps/logicsrc-web/public/openicon/set/svg/windows.svg b/apps/logicsrc-web/public/openicon/set/svg/windows.svg
new file mode 100644
index 0000000..4b608f8
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/windows.svg
@@ -0,0 +1 @@
+Windows
diff --git a/apps/logicsrc-web/public/openicon/set/svg/wordpress.svg b/apps/logicsrc-web/public/openicon/set/svg/wordpress.svg
new file mode 100644
index 0000000..f7671ae
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/wordpress.svg
@@ -0,0 +1 @@
+WordPress
diff --git a/apps/logicsrc-web/public/openicon/set/svg/x-circle.svg b/apps/logicsrc-web/public/openicon/set/svg/x-circle.svg
new file mode 100644
index 0000000..b4e76f7
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/x-circle.svg
@@ -0,0 +1 @@
+X circle
diff --git a/apps/logicsrc-web/public/openicon/set/svg/x.svg b/apps/logicsrc-web/public/openicon/set/svg/x.svg
new file mode 100644
index 0000000..31e23fc
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/x.svg
@@ -0,0 +1 @@
+X
diff --git a/apps/logicsrc-web/public/openicon/set/svg/xmpp.svg b/apps/logicsrc-web/public/openicon/set/svg/xmpp.svg
new file mode 100644
index 0000000..ceff104
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/xmpp.svg
@@ -0,0 +1 @@
+XMPP
diff --git a/apps/logicsrc-web/public/openicon/set/svg/y-combinator.svg b/apps/logicsrc-web/public/openicon/set/svg/y-combinator.svg
new file mode 100644
index 0000000..9ba7fe8
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/y-combinator.svg
@@ -0,0 +1 @@
+Y Combinator
diff --git a/apps/logicsrc-web/public/openicon/set/svg/youtube.svg b/apps/logicsrc-web/public/openicon/set/svg/youtube.svg
new file mode 100644
index 0000000..9b26f1d
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/youtube.svg
@@ -0,0 +1 @@
+YouTube
diff --git a/apps/logicsrc-web/public/openicon/set/svg/zap.svg b/apps/logicsrc-web/public/openicon/set/svg/zap.svg
new file mode 100644
index 0000000..5a186f4
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/zap.svg
@@ -0,0 +1 @@
+Zap
diff --git a/apps/logicsrc-web/public/openicon/set/svg/zoom-in.svg b/apps/logicsrc-web/public/openicon/set/svg/zoom-in.svg
new file mode 100644
index 0000000..ee6ea1d
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/zoom-in.svg
@@ -0,0 +1 @@
+Zoom in
diff --git a/apps/logicsrc-web/public/openicon/set/svg/zoom-out.svg b/apps/logicsrc-web/public/openicon/set/svg/zoom-out.svg
new file mode 100644
index 0000000..3b189da
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/zoom-out.svg
@@ -0,0 +1 @@
+Zoom out
diff --git a/apps/logicsrc-web/public/openicon/set/svg/zoom.svg b/apps/logicsrc-web/public/openicon/set/svg/zoom.svg
new file mode 100644
index 0000000..3987a79
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/zoom.svg
@@ -0,0 +1 @@
+Zoom
diff --git a/apps/logicsrc-web/public/openicon/set/svg/zulip.svg b/apps/logicsrc-web/public/openicon/set/svg/zulip.svg
new file mode 100644
index 0000000..cd82e90
--- /dev/null
+++ b/apps/logicsrc-web/public/openicon/set/svg/zulip.svg
@@ -0,0 +1 @@
+Zulip
diff --git a/apps/logicsrc-web/src/app/openicon/gallery.module.css b/apps/logicsrc-web/src/app/openicon/gallery.module.css
new file mode 100644
index 0000000..57ec511
--- /dev/null
+++ b/apps/logicsrc-web/src/app/openicon/gallery.module.css
@@ -0,0 +1,407 @@
+/* Nerd Font symbols, subset to the glyphs OpenIcon uses (38 KB; MIT, see nerd-fonts-LICENSE.txt). */
+@font-face {
+ font-family: "OpenIcon Nerd Symbols";
+ src: url("/openicon/set/nerd-openicon.woff2") format("woff2");
+ font-display: block;
+}
+
+.gallery {
+ --line: #e3e6e0;
+ --muted: #5b6b7a;
+ --accent: #0a7d59;
+ --tile: 32px;
+}
+
+.notice {
+ color: var(--muted);
+ padding: 2rem 0;
+}
+
+.toolbar {
+ position: sticky;
+ top: 0;
+ z-index: 3;
+ display: grid;
+ gap: 0.6rem;
+ padding: 0.75rem 0 0.8rem;
+ background: #f6f7f4;
+ border-bottom: 1px solid var(--line);
+ margin-bottom: 1rem;
+}
+
+.search {
+ width: 100%;
+ font: inherit;
+ font-size: 1rem;
+ padding: 0.7rem 0.95rem;
+ border: 1px solid #cfd5cc;
+ border-radius: 0.6rem;
+ background: #fff;
+}
+
+.search:focus,
+.tile:focus-visible,
+.seg:focus-visible,
+.chip:focus-visible {
+ outline: 2px solid var(--accent);
+ outline-offset: 2px;
+}
+
+.controls {
+ display: flex;
+ flex-wrap: wrap;
+ align-items: center;
+ gap: 0.6rem 0.9rem;
+}
+
+.segmented {
+ display: inline-flex;
+ border: 1px solid #cfd5cc;
+ border-radius: 0.55rem;
+ overflow: hidden;
+ background: #fff;
+}
+
+.seg,
+.segOn {
+ padding: 0.4rem 0.75rem;
+ font-size: 0.86rem;
+ background: #fff;
+ color: #101418;
+ border-right: 1px solid #e3e6e0;
+}
+
+.segmented > :last-child {
+ border-right: 0;
+}
+
+.segOn {
+ background: var(--accent);
+ color: #fff;
+}
+
+.control {
+ display: inline-flex;
+ align-items: center;
+ gap: 0.45rem;
+ font-size: 0.8rem;
+ color: var(--muted);
+}
+
+.control input[type="range"] {
+ width: 8rem;
+ accent-color: var(--accent);
+}
+
+.control input[type="color"] {
+ width: 2rem;
+ height: 1.8rem;
+ padding: 0;
+ border: 1px solid #cfd5cc;
+ border-radius: 0.35rem;
+ background: #fff;
+}
+
+.count {
+ margin-left: auto;
+ font-size: 0.85rem;
+ color: var(--muted);
+ display: inline-flex;
+ gap: 0.5rem;
+}
+
+.reset {
+ background: none;
+ padding: 0;
+ color: var(--accent);
+ font-size: 0.85rem;
+}
+
+.chips {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 0.35rem;
+}
+
+.chip,
+.chipOn {
+ padding: 0.28rem 0.68rem;
+ border-radius: 999px;
+ font-size: 0.83rem;
+ border: 1px solid #cfd5cc;
+ background: #fff;
+ color: #101418;
+}
+
+.chip small,
+.chipOn small {
+ color: var(--muted);
+ margin-left: 0.15rem;
+}
+
+.chipOn {
+ background: var(--accent);
+ border-color: var(--accent);
+ color: #fff;
+}
+
+.chipOn small {
+ color: #d7f3e8;
+}
+
+.hint {
+ margin: -0.3rem 0 0.8rem;
+ font-size: 0.84rem;
+ color: var(--muted);
+}
+
+.grid {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+ display: grid;
+ grid-template-columns: repeat(auto-fill, minmax(calc(var(--tile) + 4.2rem), 1fr));
+ gap: 0.45rem;
+}
+
+.tile {
+ width: 100%;
+ display: grid;
+ justify-items: center;
+ align-content: center;
+ gap: 0.45rem;
+ min-height: calc(var(--tile) + 3.2rem);
+ padding: 0.7rem 0.3rem 0.5rem;
+ border: 1px solid var(--line);
+ border-radius: 0.7rem;
+ background: #fff;
+ color: #101418;
+ transition:
+ transform 0.12s ease,
+ box-shadow 0.12s ease,
+ border-color 0.12s ease;
+}
+
+.tile:hover {
+ transform: translateY(-2px);
+ border-color: #b9c9bf;
+ box-shadow: 0 6px 16px rgb(16 20 24 / 8%);
+}
+
+.tileOn {
+ border-color: var(--accent);
+ box-shadow: 0 0 0 2px var(--accent);
+}
+
+.gridTerminal .tile {
+ background: #11161b;
+ border-color: #232b33;
+ color: #d8e3dc;
+}
+
+.gridTerminal .tile:hover {
+ border-color: #3a4a55;
+}
+
+.gridTerminal .label {
+ color: #7f909c;
+}
+
+.glyph,
+.glyphNerd {
+ font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, "Segoe UI Symbol", "Noto Sans Symbols 2", "Apple Symbols",
+ system-ui, monospace;
+ line-height: 1;
+ min-height: 1em;
+ white-space: pre;
+}
+
+.glyphNerd {
+ font-family: "OpenIcon Nerd Symbols", ui-monospace, SFMono-Regular, Menlo, "Segoe UI Symbol", "Noto Sans Symbols 2",
+ "Apple Symbols", system-ui, monospace;
+}
+
+.fallback {
+ position: relative;
+}
+
+.fallback::after {
+ content: "";
+ position: absolute;
+ top: 0.45rem;
+ right: 0.45rem;
+ width: 0.4rem;
+ height: 0.4rem;
+ border-radius: 999px;
+ background: #d9a441;
+}
+
+.label {
+ max-width: 100%;
+ font-size: 0.68rem;
+ color: var(--muted);
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+
+.detail {
+ position: fixed;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ z-index: 20;
+ width: min(24rem, 100vw);
+ overflow-y: auto;
+ padding: 1.4rem 1.3rem 2rem;
+ background: #fff;
+ border-left: 1px solid var(--line);
+ box-shadow: -18px 0 40px rgb(16 20 24 / 12%);
+}
+
+.close {
+ position: absolute;
+ top: 0.6rem;
+ right: 0.8rem;
+ width: 2rem;
+ height: 2rem;
+ border-radius: 999px;
+ background: #f1f3ef;
+ font-size: 1.3rem;
+ line-height: 1;
+}
+
+.hero {
+ display: flex;
+ align-items: center;
+ gap: 1.4rem;
+ padding: 1.2rem;
+ border-radius: 0.9rem;
+ background: radial-gradient(circle at 30% 20%, #ffffff, #eef1ec);
+}
+
+.heroSmall {
+ display: flex;
+ align-items: flex-end;
+ gap: 0.8rem;
+}
+
+.detail h3 {
+ margin: 1rem 0 0.4rem;
+ font-size: 1.25rem;
+}
+
+.facts {
+ display: grid;
+ grid-template-columns: auto 1fr;
+ gap: 0.3rem 0.9rem;
+ margin: 0.6rem 0;
+ font-size: 0.86rem;
+}
+
+.facts dt {
+ color: var(--muted);
+}
+
+.facts dd {
+ margin: 0;
+}
+
+.trademark {
+ font-size: 0.8rem;
+ color: #8a5a00;
+ background: #fdf6e8;
+ border-radius: 0.5rem;
+ padding: 0.5rem 0.65rem;
+}
+
+.tui {
+ width: 100%;
+ border-collapse: collapse;
+ font-size: 0.85rem;
+ margin: 0.8rem 0;
+}
+
+.tui caption {
+ text-align: left;
+ color: var(--muted);
+ font-size: 0.78rem;
+ margin-bottom: 0.3rem;
+}
+
+.tui th {
+ text-align: left;
+ font-weight: 600;
+ padding: 0.35rem 0.5rem 0.35rem 0;
+ white-space: nowrap;
+}
+
+.tui td {
+ padding: 0.35rem 0.5rem 0.35rem 0;
+ border-top: 1px solid #f0f2ee;
+}
+
+.tui .glyph,
+.tui .glyphNerd {
+ font-size: 1.3rem;
+}
+
+.actions,
+.downloads {
+ display: flex;
+ flex-wrap: wrap;
+ align-items: center;
+ gap: 0.4rem 0.8rem;
+ margin-bottom: 0.8rem;
+ font-size: 0.86rem;
+}
+
+.downloads span {
+ color: var(--muted);
+}
+
+.copy {
+ padding: 0.35rem 0.7rem;
+ border-radius: 0.45rem;
+ border: 1px solid #cfd5cc;
+ background: #fff;
+ color: #101418;
+ font-size: 0.82rem;
+}
+
+.copy:hover {
+ border-color: var(--accent);
+ color: var(--accent);
+}
+
+.keywords {
+ font-size: 0.8rem;
+ color: var(--muted);
+}
+
+@media (max-width: 640px) {
+ .toolbar {
+ position: static;
+ }
+ .chips {
+ flex-wrap: nowrap;
+ overflow-x: auto;
+ padding-bottom: 0.2rem;
+ }
+ .chips > * {
+ flex: none;
+ }
+ .count {
+ margin-left: 0;
+ width: 100%;
+ }
+}
+
+.heroHq {
+ display: grid;
+ justify-items: center;
+ gap: 0.2rem;
+ margin-left: auto;
+ font-size: 0.7rem;
+ color: var(--muted);
+}
diff --git a/apps/logicsrc-web/src/app/openicon/gallery.tsx b/apps/logicsrc-web/src/app/openicon/gallery.tsx
new file mode 100644
index 0000000..aa3f9bc
--- /dev/null
+++ b/apps/logicsrc-web/src/app/openicon/gallery.tsx
@@ -0,0 +1,528 @@
+"use client";
+
+import { useCallback, useEffect, useMemo, useState } from "react";
+import type { CSSProperties, ReactNode } from "react";
+import styles from "./gallery.module.css";
+import { GALLERY_SET, OPENICON_RAW } from "./set";
+
+/**
+ * The OpenIcon reference set, filterable, with the terminal view beside the
+ * vector one: every icon can be shown as its SVG or as the glyph hqtui's
+ * icon() would print (Nerd Font, Unicode or ASCII), which is the point of
+ * the spec's tui block.
+ *
+ * Icons are drawn as CSS masks over the chosen colour, the same way
+ * currentColor would colour them inline, without 370 inline SVGs.
+ * Filters live in the query string.
+ */
+
+type Icon = {
+ key: string;
+ name: string;
+ category: string;
+ aliases?: string[];
+ keywords?: string[];
+ brand?: boolean;
+ trademark?: string;
+ source?: string;
+ license?: string;
+ made_by?: string;
+ svg: string;
+ png?: string;
+ /** The optional full-colour style; simple (the line icon) is canonical. */
+ hq?: { png?: string; webp?: string; svg?: string; made_by?: string; hex?: string };
+ tui?: { nerd?: string; nerd_code?: string; nerd_name?: string; unicode?: string; ascii?: string };
+};
+
+type IconSet = {
+ name: string;
+ version: string;
+ license: string;
+ sizes: number[];
+ categories: Record;
+ icons: Icon[];
+};
+
+type View = "svg" | "nerd" | "unicode" | "ascii";
+
+const VIEWS: Array<[View, string]> = [
+ ["svg", "SVG"],
+ ["nerd", "Nerd Font"],
+ ["unicode", "Unicode"],
+ ["ascii", "ASCII"]
+];
+
+type Filters = {
+ q: string;
+ /** simple: the line icon in the chosen colour; hq: the full-colour style. */
+ style: "simple" | "hq";
+ category: string;
+ kind: "" | "ui" | "brand";
+ view: View;
+ size: number;
+ color: string;
+};
+
+const DEFAULTS: Filters = { q: "", style: "simple", category: "", kind: "", view: "svg", size: 32, color: "#101418" };
+
+function readFilters(): Filters {
+ const p = new URLSearchParams(window.location.search);
+ const view = p.get("view") as View | null;
+ const kind = p.get("kind");
+ const size = Number(p.get("size"));
+ const color = p.get("color");
+ return {
+ q: p.get("q") ?? "",
+ style: p.get("style") === "hq" ? "hq" : "simple",
+ category: p.get("category") ?? "",
+ kind: kind === "ui" || kind === "brand" ? kind : "",
+ view: view && VIEWS.some(([v]) => v === view) ? view : "svg",
+ size: size >= 16 && size <= 96 ? size : DEFAULTS.size,
+ color: color && /^#[0-9a-f]{6}$/i.test(color) ? color : DEFAULTS.color
+ };
+}
+
+function writeFilters(f: Filters, selected: string | null): void {
+ const p = new URLSearchParams(window.location.search);
+ for (const key of ["q", "style", "category", "kind", "view", "size", "color", "icon"]) p.delete(key);
+ if (f.q) p.set("q", f.q);
+ if (f.style === "hq") p.set("style", "hq");
+ if (f.category) p.set("category", f.category);
+ if (f.kind) p.set("kind", f.kind);
+ if (f.view !== "svg") p.set("view", f.view);
+ if (f.size !== DEFAULTS.size) p.set("size", String(f.size));
+ if (f.color !== DEFAULTS.color) p.set("color", f.color);
+ if (selected) p.set("icon", selected);
+ const query = p.toString();
+ window.history.replaceState(null, "", `${query ? `?${query}` : window.location.pathname}${window.location.hash}`);
+}
+
+const glyphOf = (icon: Icon, view: View): string => {
+ const t = icon.tui ?? {};
+ if (view === "nerd") return t.nerd ?? t.unicode ?? t.ascii ?? "";
+ if (view === "unicode") return t.unicode ?? t.ascii ?? "";
+ return t.ascii ?? "";
+};
+
+const maskStyle = (icon: Icon, color: string, size: number): CSSProperties => {
+ const url = `url("${GALLERY_SET}/${icon.svg}")`;
+ return {
+ width: size,
+ height: size,
+ background: color,
+ WebkitMaskImage: url,
+ maskImage: url,
+ WebkitMaskRepeat: "no-repeat",
+ maskRepeat: "no-repeat",
+ WebkitMaskSize: "contain",
+ maskSize: "contain",
+ WebkitMaskPosition: "center",
+ maskPosition: "center"
+ };
+};
+
+/** The HQ artwork for an icon at a size, or null when it has none. */
+const hqSrc = (icon: Icon, size: number): string | null => {
+ const hq = icon.hq;
+ if (!hq) return null;
+ if (hq.svg) return `${GALLERY_SET}/${hq.svg}`;
+ const template = hq.webp ?? hq.png;
+ return template ? `${GALLERY_SET}/${template.replace("{size}", String(size > 64 ? 128 : 64))}` : null;
+};
+
+function Art({ icon, style, color, size }: { icon: Icon; style: Filters["style"]; color: string; size: number }): ReactNode {
+ const src = style === "hq" ? hqSrc(icon, size * 2) : null;
+ if (src) {
+ // eslint-disable-next-line @next/next/no-img-element
+ return ;
+ }
+ return ;
+}
+
+export function Gallery(): ReactNode {
+ const [set, setSet] = useState(null);
+ const [error, setError] = useState(null);
+ const [filters, setFilters] = useState(DEFAULTS);
+ const [query, setQuery] = useState("");
+ const [selected, setSelected] = useState(null);
+ const [ready, setReady] = useState(false);
+
+ useEffect(() => {
+ const initial = readFilters();
+ setFilters(initial);
+ setQuery(initial.q);
+ setSelected(new URLSearchParams(window.location.search).get("icon"));
+ setReady(true);
+ fetch(`${GALLERY_SET}/openicon.json`)
+ .then((r) => {
+ if (!r.ok) throw new Error(`HTTP ${r.status}`);
+ return r.json() as Promise;
+ })
+ .then(setSet)
+ .catch((reason: Error) => setError(reason.message));
+ }, []);
+
+ useEffect(() => {
+ const timer = window.setTimeout(() => setFilters((f) => (f.q === query ? f : { ...f, q: query })), 120);
+ return () => window.clearTimeout(timer);
+ }, [query]);
+
+ useEffect(() => {
+ if (ready) writeFilters(filters, selected);
+ }, [filters, selected, ready]);
+
+ const update = useCallback((key: K, value: Filters[K]) => {
+ setFilters((f) => ({ ...f, [key]: value }));
+ }, []);
+
+ const hay = useMemo(
+ () =>
+ new Map(
+ (set?.icons ?? []).map((i) => [
+ i.key,
+ [i.key, i.name, i.category, ...(i.aliases ?? []), ...(i.keywords ?? []), i.tui?.nerd_name ?? ""]
+ .join(" ")
+ .toLowerCase()
+ ])
+ ),
+ [set]
+ );
+
+ const matches = useCallback(
+ (i: Icon, skipCategory = false): boolean => {
+ if (!skipCategory && filters.category && i.category !== filters.category) return false;
+ if (filters.kind === "brand" && !i.brand) return false;
+ if (filters.kind === "ui" && i.brand) return false;
+ if (filters.q) {
+ const h = hay.get(i.key) ?? "";
+ for (const word of filters.q.toLowerCase().split(/\s+/).filter(Boolean)) if (!h.includes(word)) return false;
+ }
+ return true;
+ },
+ [filters, hay]
+ );
+
+ const results = useMemo(() => (set ? set.icons.filter((i) => matches(i)) : []), [set, matches]);
+ const counts = useMemo(() => {
+ const c = new Map();
+ for (const i of set?.icons ?? []) if (matches(i, true)) c.set(i.category, (c.get(i.category) ?? 0) + 1);
+ return c;
+ }, [set, matches]);
+
+ const current = selected && set ? (set.icons.find((i) => i.key === selected) ?? null) : null;
+
+ useEffect(() => {
+ if (!current) return;
+ const onKey = (event: KeyboardEvent): void => {
+ if (event.key === "Escape") setSelected(null);
+ if (event.key !== "ArrowRight" && event.key !== "ArrowLeft") return;
+ const at = results.findIndex((i) => i.key === current.key);
+ const next = results[at + (event.key === "ArrowRight" ? 1 : -1)];
+ if (at !== -1 && next) {
+ event.preventDefault();
+ setSelected(next.key);
+ }
+ };
+ window.addEventListener("keydown", onKey);
+ return () => window.removeEventListener("keydown", onKey);
+ }, [current, results]);
+
+ if (error) return The set could not be loaded ({error}).
;
+ if (!set) return Loading the set…
;
+
+ const brands = set.icons.filter((i) => i.brand).length;
+ const hqCount = set.icons.filter((i) => i.hq).length;
+ const terminal = filters.view !== "svg";
+ const active = filters.q || filters.category || filters.kind;
+
+ return (
+
+
+
setQuery(e.target.value)}
+ aria-label="Search icons"
+ />
+
+
+ {hqCount ? (
+
+ {(
+ [
+ ["simple", "Simple"],
+ ["hq", `HQ ${hqCount}`]
+ ] as const
+ ).map(([v, label]) => (
+ setFilters((f) => ({ ...f, style: v, view: "svg" }))}
+ title={v === "hq" ? "The full-colour style" : "The line icon, in any colour"}
+ >
+ {label}
+
+ ))}
+
+ ) : null}
+
+ {VIEWS.map(([v, label]) => (
+ update("view", v)}
+ title={v === "svg" ? "The vector icon" : `The ${label} glyph hqtui's icon() prints`}
+ >
+ {label}
+
+ ))}
+
+
+ {(
+ [
+ ["", `All ${set.icons.length}`],
+ ["ui", `UI ${set.icons.length - brands}`],
+ ["brand", `Brands ${brands}`]
+ ] as const
+ ).map(([k, label]) => (
+ update("kind", k)}
+ >
+ {label}
+
+ ))}
+
+
+ Size {filters.size}px
+ update("size", Number(e.target.value))}
+ />
+
+ {!terminal && filters.style === "simple" ? (
+
+ Colour
+ update("color", e.target.value)} />
+
+ ) : null}
+
+ {results.length} {results.length === 1 ? "icon" : "icons"}
+ {active ? (
+ {
+ setQuery("");
+ setFilters((f) => ({ ...DEFAULTS, view: f.view, size: f.size, color: f.color }));
+ }}
+ >
+ Reset
+
+ ) : null}
+
+
+
+
+ update("category", "")}
+ >
+ All categories
+
+ {Object.entries(set.categories).map(([key, label]) => (
+ update("category", filters.category === key ? "" : key)}
+ >
+ {label} {counts.get(key) ?? 0}
+
+ ))}
+
+
+
+ {terminal ? (
+
+ What icon("{current?.key ?? "mail"}") prints in hqtui with the glyph mode set to{" "}
+ {filters.view}
+ {filters.view === "nerd" ? " (Nerd Font symbols served subset from this page)" : ""}.
+
+ ) : null}
+
+ {results.length === 0 ? (
+
Nothing matches. Try an alias (email, trash) or fewer words.
+ ) : (
+
+ {results.map((i) => (
+
+ setSelected(i.key)}
+ title={filters.view === "nerd" && !i.tui?.nerd ? `${i.name}: no Nerd Font glyph, Unicode shown` : i.name}
+ >
+ {terminal ? (
+
+ {glyphOf(i, filters.view)}
+
+ ) : (
+
+ )}
+ {i.key}
+
+
+ ))}
+
+ )}
+
+ {current ? (
+
setSelected(null)} />
+ ) : null}
+
+ );
+}
+
+function Detail({ icon, set, color, onClose }: { icon: Icon; set: IconSet; color: string; onClose: () => void }): ReactNode {
+ const [svgText, setSvgText] = useState("");
+ useEffect(() => {
+ setSvgText("");
+ fetch(`${GALLERY_SET}/${icon.svg}`)
+ .then((r) => (r.ok ? r.text() : ""))
+ .then((t) => setSvgText(t.trim()))
+ .catch(() => setSvgText(""));
+ }, [icon.svg]);
+
+ const t = icon.tui ?? {};
+ const img = ` `;
+ return (
+
+
+ ×
+
+
+
+
+ {[16, 24, 32].map((size) => (
+
+ ))}
+
+ {icon.hq ? (
+
+ ) : null}
+
+ {icon.name}
+
+ Key
+
+ {icon.key}
+
+ {icon.aliases?.length ? (
+ <>
+ Aliases
+ {icon.aliases.join(", ")}
+ >
+ ) : null}
+ Category
+ {set.categories[icon.category] ?? icon.category}
+ {icon.brand ? (
+ <>
+ Source
+
+ {icon.source} · {icon.license}
+
+ >
+ ) : null}
+
+ {icon.trademark ? {icon.trademark}
: null}
+
+
+ In a terminal (hqtui icon())
+
+
+ Nerd Font
+ {t.nerd ?? "none"}
+ {t.nerd_code ? U+{t.nerd_code.toUpperCase()} : null}
+ {t.nerd ? Copy : null}
+
+
+ Unicode
+ {t.unicode}
+
+ {t.unicode ? (
+
+ {[...t.unicode].map((c) => `U+${c.codePointAt(0)!.toString(16).toUpperCase()}`).join(" ")}
+
+ ) : null}
+
+ {t.unicode ? Copy : null}
+
+
+ ASCII
+ {t.ascii}
+
+ {t.ascii ? Copy : null}
+
+
+
+
+
+ {svgText ? (
+
+ Copy SVG
+
+ ) : null}
+
+ Copy <img>
+
+
+ Copy icon("{icon.key}")
+
+
+
+
Download
+
+ SVG
+
+ {icon.hq?.png
+ ? [128, 256]
+ .map((s) => (
+
+ HQ PNG {s}
+
+ ))
+ : null}
+ {icon.png
+ ? [24, 64, 128, 256]
+ .filter((s) => set.sizes.includes(s))
+ .map((s) => (
+
+ PNG {s}
+
+ ))
+ : null}
+
+ {icon.keywords?.length ? {icon.keywords.join(" · ")}
: null}
+
+ );
+}
diff --git a/apps/logicsrc-web/src/app/openicon/page.tsx b/apps/logicsrc-web/src/app/openicon/page.tsx
index 2856c7d..e5da308 100644
--- a/apps/logicsrc-web/src/app/openicon/page.tsx
+++ b/apps/logicsrc-web/src/app/openicon/page.tsx
@@ -3,6 +3,8 @@ import type { ReactNode } from "react";
import type { Metadata } from "next";
import { SiteShell } from "@/components/site-shell";
import { mono, pre, table, td, th } from "../openontology/ui";
+import { Gallery } from "./gallery";
+import { OPENICON_REPO } from "./set";
export const metadata: Metadata = {
title: "OpenIcon · LogicSRC",
@@ -11,14 +13,6 @@ export const metadata: Metadata = {
alternates: { canonical: "/openicon" }
};
-/** From the reference set, profullstack/openicon; copied into public/openicon. */
-const SAMPLE = [
- "mail", "phone", "chat", "at", "link", "search", "settings", "filter", "menu", "add", "edit", "delete",
- "copy", "share", "download", "upload", "refresh", "bell", "calendar", "user", "users", "lock", "key", "eye",
- "home", "map-pin", "globe", "cloud", "database", "package", "terminal", "code", "git-branch", "git-pull-request",
- "rocket", "sparkles", "rss", "github", "x", "bluesky", "mastodon", "discord", "slack", "signal", "whatsapp",
- "youtube", "npm"
-];
/** key, Nerd Font codepoint, Unicode, ASCII: straight from openicon.json. */
const GLYPHS: Array<[string, string, string, string]> = [
@@ -95,33 +89,17 @@ export default function OpenIconPage(): ReactNode {
-
-
-
The reference set
-
- 370 icons: 259 drawn on a 24x24 grid with 2px strokes, 111 brand logos from Simple Icons and Font Awesome
- Free. profullstack/openicon .
+
+
+
The reference set: all 370
+
+ 259 icons drawn on a 24x24 grid with 2px strokes, and 111 brand logos from Simple Icons and Font Awesome
+ Free. Search by name, alias or keyword, filter by category or brand, and switch between the SVG and the
+ glyph a terminal gets (Nerd Font, Unicode, ASCII). Click one for its glyphs, SVG and downloads. The files
+ are in profullstack/openicon .
-
- {SAMPLE.map((key) => (
-
- {/* eslint-disable-next-line @next/next/no-img-element */}
-
- {key}
-
- ))}
-
+
diff --git a/apps/logicsrc-web/src/app/openicon/set.ts b/apps/logicsrc-web/src/app/openicon/set.ts
new file mode 100644
index 0000000..9013443
--- /dev/null
+++ b/apps/logicsrc-web/src/app/openicon/set.ts
@@ -0,0 +1,11 @@
+/**
+ * Where the OpenIcon reference set lives. A plain module so a server
+ * component can import the strings (from a "use client" file it would get
+ * client references instead).
+ */
+
+/** openicon.json, the SVGs and the subset Nerd Font, served by this site. */
+export const GALLERY_SET = "/openicon/set";
+/** PNGs at every size and the sprite live in the set's repository. */
+export const OPENICON_RAW = "https://raw.githubusercontent.com/profullstack/openicon/main";
+export const OPENICON_REPO = "https://github.com/profullstack/openicon";