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 };