github.com/turbot/steampipe@v1.7.0-rc.0.0.20240517123944-7cef272d4458/ui/dashboard/src/icons/heroIcons.ts (about) 1 import kebabCase from "lodash/kebabCase"; 2 import * as outline from "@heroicons/react/24/outline"; 3 import * as solid from "@heroicons/react/24/solid"; 4 5 const migratedV2IconNames = { 6 adjustments: "adjustments-vertical", 7 annotation: "chat-bubble-bottom-center-text", 8 archive: "archive-box", 9 "arrow-circle-down": "arrow-down-circle", 10 "arrow-circle-left": "arrow-left-circle", 11 "arrow-circle-right": "arrow-right-circle", 12 "arrow-circle-up": "arrow-up-circle", 13 "arrow-narrow-down": "arrow-long-down", 14 "arrow-narrow-left": "arrow-long-left", 15 "arrow-narrow-right": "arrow-long-right", 16 "arrow-narrow-up": "arrow-long-up", 17 "arrow-sm-left": "arrow-small-left", 18 "arrow-sm-right": "arrow-small-right", 19 "arrow-sm-up": "arrow-small-up", 20 "arrow-sm-down": "arrow-small-down", 21 "arrows-expand": "arrows-pointing-out", 22 "badge-check": "check-badge", 23 ban: "no-symbol", 24 "bookmark-alt": "bookmark-square", 25 cash: "banknotes", 26 "chart-square-bar": "chart-bar-square", 27 "chat-alt-2": "chat-bubble-left-right", 28 "chat-alt": "chat-bubble-left-ellipsis", 29 chat: "chat-bubble-oval-left-ellipsis", 30 chip: "cpu-chip", 31 "clipboard-check": "clipboard-document-check", 32 "clipboard-copy": "clipboard-document", 33 "clipboard-list": "clipboard-document-list", 34 "cloud-download": "cloud-arrow-down", 35 "cloud-upload": "cloud-arrow-up", 36 code: "code-bracket", 37 collection: "rectangle-stack", 38 "color-swatch": "swatch", 39 "cursor-click": "cursor-arrow-rays", 40 database: "circle-stack", 41 "desktop-computer": "computer-desktop", 42 "device-mobile": "device-phone-mobile", 43 "document-add": "document-plus", 44 "document-download": "document-arrow-down", 45 "document-remove": "document-minus", 46 "document-report": "document-chart-bar", 47 "document-search": "document-magnifying-glass", 48 "dots-circle-horizontal": "ellipsis-horizontal-circle", 49 "dots-horizontal": "ellipsis-horizontal", 50 "dots-vertical": "ellipsis-vertical", 51 download: "arrow-down-tray", 52 duplicate: "square-2-stack", 53 "emoji-happy": "face-smile", 54 "emoji-sad": "face-frown", 55 exclamation: "exclamation-triangle", 56 "external-link": "arrow-top-right-on-square", 57 "eye-off": "eye-slash", 58 "fast-forward": "forward", 59 filter: "funnel", 60 "folder-add": "folder-plus", 61 "folder-download": "folder-arrow-down", 62 "folder-remove": "folder-minus", 63 globe: "globe-americas", 64 hand: "hand-raised", 65 "inbox-in": "inbox-arrow-down", 66 library: "building-library", 67 "lightning-bolt": "bolt", 68 "location-marker": "map-pin", 69 login: "arrow-left-on-rectangle", 70 logout: "arrow-right-on-rectangle", 71 "mail-open": "envelope-open", 72 mail: "envelope", 73 "menu-alt-1": "bars-3-center-left", 74 "menu-alt-2": "bars-3-bottom-left", 75 "menu-alt-3": "bars-3-bottom-right", 76 "menu-alt-4": "bars-2", 77 menu: "bars-3", 78 "minus-sm": "minus-small", 79 "music-note": "musical-note", 80 "office-building": "building-office", 81 "pencil-alt": "pencil-square", 82 "phone-incoming": "phone-arrow-down-left", 83 "phone-missed-call": "phone-x-mark", 84 "phone-outgoing": "phone-arrow-up-right", 85 photograph: "photo", 86 "plus-sm": "plus-small", 87 puzzle: "puzzle-piece", 88 qrcode: "qr-code", 89 "receipt-tax": "receipt-percent", 90 refresh: "arrow-path", 91 reply: "arrow-uturn-left", 92 rewind: "backward", 93 "save-as": "arrow-down-on-square-stack", 94 save: "arrow-down-on-square", 95 "search-circle": "magnifying-glass-circle", 96 search: "magnifying-glass", 97 selector: "chevron-up-down", 98 "sort-ascending": "bars-arrow-up", 99 "sort-descending": "bars-arrow-down", 100 speakerphone: "megaphone", 101 "status-offline": "signal-slash", 102 "status-online": "signal", 103 support: "lifebuoy", 104 "switch-horizontal": "arrow-right-left", 105 "switch-vertical": "arrow-up-down", 106 table: "table-cells", 107 template: "rectangle-group", 108 terminal: "command-line", 109 "thumb-down": "hand-thumb-down", 110 "thumb-up": "hand-thumb-up", 111 translate: "language", 112 "trending-down": "arrow-trending-down", 113 "trending-up": "arrow-trending-up", 114 upload: "arrow-up-tray", 115 "user-add": "user-plus", 116 "user-remove": "user-minus", 117 "view-boards": "view-columns", 118 "view-grid-add": "squares-plus", 119 "view-grid": "squares-2x2", 120 "view-list": "bars-4", 121 "volume-off": "speaker-x-mark", 122 "volume-up": "speaker-wave", 123 x: "x-mark", 124 "zoom-in": "magnifying-glass-plus", 125 "zoom-out": "magnifying-glass-minus", 126 }; 127 128 const kebabCaseExceptions = { 129 Square3Stack3D: "square-3-stack-3d", 130 Squares2X2: "squares-2x2", 131 }; 132 133 const convertIconName = (name) => { 134 let condensedName = name; 135 const iconOccurrence = name.lastIndexOf("Icon"); 136 if (iconOccurrence >= 0) { 137 condensedName = condensedName.substring(0, iconOccurrence); 138 } 139 return kebabCaseExceptions[condensedName] || kebabCase(condensedName); 140 }; 141 142 const icons = {}; 143 144 Object.entries(outline).forEach(([name, exported]) => { 145 const iconName = convertIconName(name); 146 icons[iconName] = exported; 147 icons[`heroicons-outline:${iconName}`] = exported; 148 }); 149 150 Object.entries(solid).forEach(([name, exported]) => { 151 const iconName = convertIconName(name); 152 icons[`heroicons-solid:${iconName}`] = exported; 153 }); 154 155 Object.entries(migratedV2IconNames).forEach(([name, mappedName]) => { 156 const mappedIcon = icons[mappedName]; 157 icons[name] = mappedIcon; 158 icons[`heroicons-outline:${name}`] = mappedIcon; 159 icons[`heroicons-solid:${name}`] = mappedIcon; 160 }); 161 162 export { icons };