Switch from iconoir icons to nerdfont icons to reduce binary size and improve load times
- commit
- 1a9b0aa829c7d723199aa65066654300e26e2211
- author
- bnema · · 2023-10-21 07:59 UTC
- parent
- f5cd8ac
- signature
- unsigned
8 files · +44 -74
this diff is incomplete: 1 file is too large to show. the totals above count everything; clone the repository to read the rest.
M internal/httpserve/middleware/requirelogin.go +27 -28
| @@ -1,14 +1,13 @@ | |||
| 1 | 1 | package middleware | |
| 2 | 2 | ||
| 3 | 3 | import ( | |
| 4 | - | "fmt" | |
| 5 | 4 | "log" | |
| 6 | 5 | "net/http" | |
| 7 | 6 | "time" | |
| 8 | 7 | ||
| 9 | 8 | "github.com/bnema/gordon/internal/app" | |
| 10 | 9 | "github.com/bnema/gordon/internal/db/queries" | |
| 11 | - | "github.com/labstack/echo-contrib/session" | |
| 10 | + | // "github.com/labstack/echo-contrib/session" | |
| 12 | 11 | "github.com/labstack/echo/v4" | |
| 13 | 12 | ) | |
| 14 | 13 | ||
| @@ -25,32 +24,32 @@ func RequireLogin(a *app.App) echo.MiddlewareFunc { | |||
| 25 | 24 | } | |
| 26 | 25 | ||
| 27 | 26 | func validateSessionAndUser(c echo.Context, a *app.App) error { | |
| 28 | - | sess, err := session.Get("session", c) | |
| 29 | - | if err != nil { | |
| 30 | - | return err | |
| 31 | - | } | |
| 32 | - | ||
| 33 | - | if cookieExpired, err := isCookieExpired(c); err != nil || cookieExpired { | |
| 34 | - | return err | |
| 35 | - | } | |
| 36 | - | ||
| 37 | - | accountID, ok := sess.Values["accountID"].(string) | |
| 38 | - | if !ok { | |
| 39 | - | return fmt.Errorf("invalid account ID type") | |
| 40 | - | } | |
| 41 | - | ||
| 42 | - | sessionID, ok := sess.Values["sessionID"].(string) | |
| 43 | - | if !ok { | |
| 44 | - | return fmt.Errorf("invalid session ID type") | |
| 45 | - | } | |
| 46 | - | ||
| 47 | - | if accountCheck, err := isAccountIDInDB(a, accountID); err != nil || !accountCheck { | |
| 48 | - | return err | |
| 49 | - | } | |
| 50 | - | ||
| 51 | - | if sessionExpired, err := isSessionExpiredInDB(a, accountID, sessionID); err != nil || sessionExpired { | |
| 52 | - | return err | |
| 53 | - | } | |
| 27 | + | // sess, err := session.Get("session", c) | |
| 28 | + | // if err != nil { | |
| 29 | + | // return err | |
| 30 | + | // } | |
| 31 | + | ||
| 32 | + | // if cookieExpired, err := isCookieExpired(c); err != nil || cookieExpired { | |
| 33 | + | // return err | |
| 34 | + | // } | |
| 35 | + | ||
| 36 | + | // accountID, ok := sess.Values["accountID"].(string) | |
| 37 | + | // if !ok { | |
| 38 | + | // return fmt.Errorf("invalid account ID type") | |
| 39 | + | // } | |
| 40 | + | ||
| 41 | + | // sessionID, ok := sess.Values["sessionID"].(string) | |
| 42 | + | // if !ok { | |
| 43 | + | // return fmt.Errorf("invalid session ID type") | |
| 44 | + | // } | |
| 45 | + | ||
| 46 | + | // if accountCheck, err := isAccountIDInDB(a, accountID); err != nil || !accountCheck { | |
| 47 | + | // return err | |
| 48 | + | // } | |
| 49 | + | ||
| 50 | + | // if sessionExpired, err := isSessionExpiredInDB(a, accountID, sessionID); err != nil || sessionExpired { | |
| 51 | + | // return err | |
| 52 | + | // } | |
| 54 | 53 | ||
| 55 | 54 | return nil | |
| 56 | 55 | } | |
| @@ -1,14 +1,13 @@ | |||||
| 1 | package middleware | 1 | package middleware | ||
| 2 | 2 | ||||
| 3 | import ( | 3 | import ( | ||
| 4 | - | "fmt" | |||
| 5 | "log" | 4 | "log" | ||
| 6 | "net/http" | 5 | "net/http" | ||
| 7 | "time" | 6 | "time" | ||
| 8 | 7 | ||||
| 9 | "github.com/bnema/gordon/internal/app" | 8 | "github.com/bnema/gordon/internal/app" | ||
| 10 | "github.com/bnema/gordon/internal/db/queries" | 9 | "github.com/bnema/gordon/internal/db/queries" | ||
| 11 | - | "github.com/labstack/echo-contrib/session" | 10 | + | // "github.com/labstack/echo-contrib/session" |
| 12 | "github.com/labstack/echo/v4" | 11 | "github.com/labstack/echo/v4" | ||
| 13 | ) | 12 | ) | ||
| 14 | 13 | ||||
| @@ -25,32 +24,32 @@ func RequireLogin(a *app.App) echo.MiddlewareFunc { | |||||
| 25 | } | 24 | } | ||
| 26 | 25 | ||||
| 27 | func validateSessionAndUser(c echo.Context, a *app.App) error { | 26 | func validateSessionAndUser(c echo.Context, a *app.App) error { | ||
| 28 | - | sess, err := session.Get("session", c) | 27 | + | // sess, err := session.Get("session", c) |
| 29 | - | if err != nil { | 28 | + | // if err != nil { |
| 30 | - | return err | 29 | + | // return err |
| 31 | - | } | 30 | + | // } |
| 32 | - | 31 | + | ||
| 33 | - | if cookieExpired, err := isCookieExpired(c); err != nil || cookieExpired { | 32 | + | // if cookieExpired, err := isCookieExpired(c); err != nil || cookieExpired { |
| 34 | - | return err | 33 | + | // return err |
| 35 | - | } | 34 | + | // } |
| 36 | - | 35 | + | ||
| 37 | - | accountID, ok := sess.Values["accountID"].(string) | 36 | + | // accountID, ok := sess.Values["accountID"].(string) |
| 38 | - | if !ok { | 37 | + | // if !ok { |
| 39 | - | return fmt.Errorf("invalid account ID type") | 38 | + | // return fmt.Errorf("invalid account ID type") |
| 40 | - | } | 39 | + | // } |
| 41 | - | 40 | + | ||
| 42 | - | sessionID, ok := sess.Values["sessionID"].(string) | 41 | + | // sessionID, ok := sess.Values["sessionID"].(string) |
| 43 | - | if !ok { | 42 | + | // if !ok { |
| 44 | - | return fmt.Errorf("invalid session ID type") | 43 | + | // return fmt.Errorf("invalid session ID type") |
| 45 | - | } | 44 | + | // } |
| 46 | - | 45 | + | ||
| 47 | - | if accountCheck, err := isAccountIDInDB(a, accountID); err != nil || !accountCheck { | 46 | + | // if accountCheck, err := isAccountIDInDB(a, accountID); err != nil || !accountCheck { |
| 48 | - | return err | 47 | + | // return err |
| 49 | - | } | 48 | + | // } |
| 50 | - | 49 | + | ||
| 51 | - | if sessionExpired, err := isSessionExpiredInDB(a, accountID, sessionID); err != nil || sessionExpired { | 50 | + | // if sessionExpired, err := isSessionExpiredInDB(a, accountID, sessionID); err != nil || sessionExpired { |
| 52 | - | return err | 51 | + | // return err |
| 53 | - | } | 52 | + | // } |
| 54 | 53 | ||||
| 55 | return nil | 54 | return nil | ||
| 56 | } | 55 | } | ||
M internal/templating/models/html/fragments/containerlist.gohtml +4 -4
| @@ -40,7 +40,7 @@ | |||
| 40 | 40 | hx-swap="outerHTML" | |
| 41 | 41 | class="py-2 px-4" | |
| 42 | 42 | > | |
| 43 | - | <span title="Start the container" class="iconoir-play text-xl text-blue-600 font-bold hover:text-gordonmascot-hblue"></span> | |
| 43 | + | <span title="Start the container" class="iconf text-xl text-blue-600 hover:text-gordonmascot-hblue"></span> | |
| 44 | 44 | </button> | |
| 45 | 45 | <!-- EDIT --> | |
| 46 | 46 | <button | |
| @@ -52,7 +52,7 @@ | |||
| 52 | 52 | class="py-2 px-4" | |
| 53 | 53 | data-active="false" | |
| 54 | 54 | > | |
| 55 | - | <span title="Edit the container" class="iconoir-edit text-xl text-blue-600 font-bold hover:text-gordonmascot-hblue"></span> | |
| 55 | + | <span title="Edit the container" class="iconf text-2xl text-blue-600 hover:text-gordonmascot-hblue"></span> | |
| 56 | 56 | </button> | |
| 57 | 57 | <!-- stop --> | |
| 58 | 58 | <button | |
| @@ -64,7 +64,7 @@ | |||
| 64 | 64 | hx-confirm="{{index $Lang "manager" "content" "confirm-container-stop"}}" | |
| 65 | 65 | class="py-2 px-4" | |
| 66 | 66 | > | |
| 67 | - | <span title="Stop the container" class="iconoir-system-shut text-xl text-red-600 font-bold hover:text-red-900"></span> | |
| 67 | + | <span title="Stop the container" class="iconf text-xl text-red-600 hover:text-red-900"></span> | |
| 68 | 68 | </button> | |
| 69 | 69 | <!-- REMOVE --> | |
| 70 | 70 | <button | |
| @@ -77,7 +77,7 @@ | |||
| 77 | 77 | class="py-2 px-4" | |
| 78 | 78 | > | |
| 79 | 79 | <!-- iconoir trash --> | |
| 80 | - | <span title="Remove the container" class="iconoir-trash text-xl text-red-600 font-bold hover:text-red-900"></span> | |
| 80 | + | <span title="Remove the container" class="iconf text-xl text-red-600 hover:text-red-900"></span> | |
| 81 | 81 | </button> | |
| 82 | 82 | </td> | |
| 83 | 83 | </tr> | |
| @@ -40,7 +40,7 @@ | |||||
| 40 | hx-swap="outerHTML" | 40 | hx-swap="outerHTML" | ||
| 41 | class="py-2 px-4" | 41 | class="py-2 px-4" | ||
| 42 | > | 42 | > | ||
| 43 | - | <span title="Start the container" class="iconoir-play text-xl text-blue-600 font-bold hover:text-gordonmascot-hblue"></span> | 43 | + | <span title="Start the container" class="iconf text-xl text-blue-600 hover:text-gordonmascot-hblue"></span> |
| 44 | </button> | 44 | </button> | ||
| 45 | <!-- EDIT --> | 45 | <!-- EDIT --> | ||
| 46 | <button | 46 | <button | ||
| @@ -52,7 +52,7 @@ | |||||
| 52 | class="py-2 px-4" | 52 | class="py-2 px-4" | ||
| 53 | data-active="false" | 53 | data-active="false" | ||
| 54 | > | 54 | > | ||
| 55 | - | <span title="Edit the container" class="iconoir-edit text-xl text-blue-600 font-bold hover:text-gordonmascot-hblue"></span> | 55 | + | <span title="Edit the container" class="iconf text-2xl text-blue-600 hover:text-gordonmascot-hblue"></span> |
| 56 | </button> | 56 | </button> | ||
| 57 | <!-- stop --> | 57 | <!-- stop --> | ||
| 58 | <button | 58 | <button | ||
| @@ -64,7 +64,7 @@ | |||||
| 64 | hx-confirm="{{index $Lang "manager" "content" "confirm-container-stop"}}" | 64 | hx-confirm="{{index $Lang "manager" "content" "confirm-container-stop"}}" | ||
| 65 | class="py-2 px-4" | 65 | class="py-2 px-4" | ||
| 66 | > | 66 | > | ||
| 67 | - | <span title="Stop the container" class="iconoir-system-shut text-xl text-red-600 font-bold hover:text-red-900"></span> | 67 | + | <span title="Stop the container" class="iconf text-xl text-red-600 hover:text-red-900"></span> |
| 68 | </button> | 68 | </button> | ||
| 69 | <!-- REMOVE --> | 69 | <!-- REMOVE --> | ||
| 70 | <button | 70 | <button | ||
| @@ -77,7 +77,7 @@ | |||||
| 77 | class="py-2 px-4" | 77 | class="py-2 px-4" | ||
| 78 | > | 78 | > | ||
| 79 | <!-- iconoir trash --> | 79 | <!-- iconoir trash --> | ||
| 80 | - | <span title="Remove the container" class="iconoir-trash text-xl text-red-600 font-bold hover:text-red-900"></span> | 80 | + | <span title="Remove the container" class="iconf text-xl text-red-600 hover:text-red-900"></span> |
| 81 | </button> | 81 | </button> | ||
| 82 | </td> | 82 | </td> | ||
| 83 | </tr> | 83 | </tr> | ||
M internal/templating/models/html/fragments/header.gohtml +0 -8
| @@ -11,12 +11,4 @@ | |||
| 11 | 11 | <script defer src="/libs/hyperscript.min.js"></script> | |
| 12 | 12 | <script defer src="/assets/js/custom.js"></script> | |
| 13 | 13 | <!-- script wait for the page to be loaded and insert <link rel="stylesheet" href="/libs/iconoir.css" /> --> | |
| 14 | - | <script> | |
| 15 | - | document.addEventListener("DOMContentLoaded", function () { | |
| 16 | - | var linkElement = document.createElement("link"); | |
| 17 | - | linkElement.setAttribute("rel", "stylesheet"); | |
| 18 | - | linkElement.setAttribute("href", "/libs/iconoir.css"); | |
| 19 | - | document.head.appendChild(linkElement); | |
| 20 | - | }); | |
| 21 | - | </script> | |
| 22 | 14 | </head> | |
| @@ -11,12 +11,4 @@ | |||||
| 11 | <script defer src="/libs/hyperscript.min.js"></script> | 11 | <script defer src="/libs/hyperscript.min.js"></script> | ||
| 12 | <script defer src="/assets/js/custom.js"></script> | 12 | <script defer src="/assets/js/custom.js"></script> | ||
| 13 | <!-- script wait for the page to be loaded and insert <link rel="stylesheet" href="/libs/iconoir.css" /> --> | 13 | <!-- script wait for the page to be loaded and insert <link rel="stylesheet" href="/libs/iconoir.css" /> --> | ||
| 14 | - | <script> | |||
| 15 | - | document.addEventListener("DOMContentLoaded", function () { | |||
| 16 | - | var linkElement = document.createElement("link"); | |||
| 17 | - | linkElement.setAttribute("rel", "stylesheet"); | |||
| 18 | - | linkElement.setAttribute("href", "/libs/iconoir.css"); | |||
| 19 | - | document.head.appendChild(linkElement); | |||
| 20 | - | }); | |||
| 21 | - | </script> | |||
| 22 | </head> | 14 | </head> | ||
M internal/templating/models/html/fragments/imagelist.gohtml +5 -4
| @@ -8,10 +8,11 @@ | |||
| 8 | 8 | hx-get="/htmx/upload-image" | |
| 9 | 9 | hx-target="#upload-image" | |
| 10 | 10 | hx-swap="innerHTML" | |
| 11 | + | title="Manually upload a .tar container image" | |
| 11 | 12 | _="on click toggle between .visible and .hidden on #upload-image then add .hidden to #create-container" | |
| 12 | 13 | > | |
| 13 | 14 | ||
| 14 | - | <span class="iconoir-upload text-xl align-middle"></span> | |
| 15 | + | <span class="iconf text-xl align-middle"> </span> | |
| 15 | 16 | Upload | |
| 16 | 17 | </button> | |
| 17 | 18 | </div> | |
| @@ -39,7 +40,7 @@ | |||
| 39 | 40 | class="py-2 px-4" | |
| 40 | 41 | _="on click toggle between .visible and .hidden on #create-container then add .hidden to #upload-image" | |
| 41 | 42 | > | |
| 42 | - | <span title="Deploy a container using this image" class="iconoir-add-circle text-xl text-blue-800 font-bold"></span> | |
| 43 | + | <span title="Deploy a container using this image" class="iconf text-xl text-blue-600 hover:text-gordonmascot-hblue"></span> | |
| 43 | 44 | </button> | |
| 44 | 45 | ||
| 45 | 46 | <button | |
| @@ -51,7 +52,7 @@ | |||
| 51 | 52 | hx-confirm="Are you sure you want to delete this container image?" | |
| 52 | 53 | class="py-2 px-4" | |
| 53 | 54 | > | |
| 54 | - | <span title="Remove this image" class="iconoir-trash text-xl text-red-600 font-bold"></span> | |
| 55 | + | <span title="Remove this image" class="iconf text-xl text-red-600 hover:text-red-900"></span> | |
| 55 | 56 | </button> | |
| 56 | 57 | </td> | |
| 57 | 58 | </tr> | |
| @@ -71,4 +72,4 @@ | |||
| 71 | 72 | </table> | |
| 72 | 73 | <div id="upload-image"></div> | |
| 73 | 74 | <div id="create-container"></div> | |
| 74 | - | </div>⏎̸ | |
| 75 | + | </div> | |
| @@ -8,10 +8,11 @@ | |||||
| 8 | hx-get="/htmx/upload-image" | 8 | hx-get="/htmx/upload-image" | ||
| 9 | hx-target="#upload-image" | 9 | hx-target="#upload-image" | ||
| 10 | hx-swap="innerHTML" | 10 | hx-swap="innerHTML" | ||
| 11 | + | title="Manually upload a .tar container image" | |||
| 11 | _="on click toggle between .visible and .hidden on #upload-image then add .hidden to #create-container" | 12 | _="on click toggle between .visible and .hidden on #upload-image then add .hidden to #create-container" | ||
| 12 | > | 13 | > | ||
| 13 | 14 | ||||
| 14 | - | <span class="iconoir-upload text-xl align-middle"></span> | 15 | + | <span class="iconf text-xl align-middle"> </span> |
| 15 | Upload | 16 | Upload | ||
| 16 | </button> | 17 | </button> | ||
| 17 | </div> | 18 | </div> | ||
| @@ -39,7 +40,7 @@ | |||||
| 39 | class="py-2 px-4" | 40 | class="py-2 px-4" | ||
| 40 | _="on click toggle between .visible and .hidden on #create-container then add .hidden to #upload-image" | 41 | _="on click toggle between .visible and .hidden on #create-container then add .hidden to #upload-image" | ||
| 41 | > | 42 | > | ||
| 42 | - | <span title="Deploy a container using this image" class="iconoir-add-circle text-xl text-blue-800 font-bold"></span> | 43 | + | <span title="Deploy a container using this image" class="iconf text-xl text-blue-600 hover:text-gordonmascot-hblue"></span> |
| 43 | </button> | 44 | </button> | ||
| 44 | 45 | ||||
| 45 | <button | 46 | <button | ||
| @@ -51,7 +52,7 @@ | |||||
| 51 | hx-confirm="Are you sure you want to delete this container image?" | 52 | hx-confirm="Are you sure you want to delete this container image?" | ||
| 52 | class="py-2 px-4" | 53 | class="py-2 px-4" | ||
| 53 | > | 54 | > | ||
| 54 | - | <span title="Remove this image" class="iconoir-trash text-xl text-red-600 font-bold"></span> | 55 | + | <span title="Remove this image" class="iconf text-xl text-red-600 hover:text-red-900"></span> |
| 55 | </button> | 56 | </button> | ||
| 56 | </td> | 57 | </td> | ||
| 57 | </tr> | 58 | </tr> | ||
| @@ -71,4 +72,4 @@ | |||||
| 71 | </table> | 72 | </table> | ||
| 72 | <div id="upload-image"></div> | 73 | <div id="upload-image"></div> | ||
| 73 | <div id="create-container"></div> | 74 | <div id="create-container"></div> | ||
| 74 | - | </div>⏎̸ | 75 | + | </div> |
M internal/templating/models/html/fragments/menu.gohtml +4 -4
| @@ -27,13 +27,13 @@ | |||
| 27 | 27 | <a | |
| 28 | 28 | href="/admin/settings" | |
| 29 | 29 | title="User settings" | |
| 30 | - | class="iconoir-settings text-gordonmascot-mblue text-lg md:text-2xl" | |
| 31 | - | ></a> | |
| 30 | + | class="iconf text-gordonmascot-mblue text-lg md:text-xl" | |
| 31 | + | ></a> | |
| 32 | 32 | <a | |
| 33 | 33 | href="/admin/logout" | |
| 34 | 34 | title="Logout" | |
| 35 | - | class="iconoir-log-out text-gordonmascot-mblue text-lg md:text-2xl" | |
| 36 | - | ></a> | |
| 35 | + | class="iconf text-gordonmascot-mblue text-lg md:text-xl" | |
| 36 | + | ></a> | |
| 37 | 37 | </div> | |
| 38 | 38 | </div> | |
| 39 | 39 | ||
| @@ -27,13 +27,13 @@ | |||||
| 27 | <a | 27 | <a | ||
| 28 | href="/admin/settings" | 28 | href="/admin/settings" | ||
| 29 | title="User settings" | 29 | title="User settings" | ||
| 30 | - | class="iconoir-settings text-gordonmascot-mblue text-lg md:text-2xl" | 30 | + | class="iconf text-gordonmascot-mblue text-lg md:text-xl" |
| 31 | - | ></a> | 31 | + | ></a> |
| 32 | <a | 32 | <a | ||
| 33 | href="/admin/logout" | 33 | href="/admin/logout" | ||
| 34 | title="Logout" | 34 | title="Logout" | ||
| 35 | - | class="iconoir-log-out text-gordonmascot-mblue text-lg md:text-2xl" | 35 | + | class="iconf text-gordonmascot-mblue text-lg md:text-xl" |
| 36 | - | ></a> | 36 | + | ></a> |
| 37 | </div> | 37 | </div> | ||
| 38 | </div> | 38 | </div> | ||
| 39 | 39 | ||||
M internal/webui/public/assets/css/custom.css +2 -2
| @@ -103,10 +103,10 @@ | |||
| 103 | 103 | font-family: "IBMPlexSans-Regular", sans-serif; | |
| 104 | 104 | } | |
| 105 | 105 | ||
| 106 | - | .JetBrainsMonoNF { | |
| 106 | + | .JetBrainsMonoNF, .iconf{ | |
| 107 | 107 | font-family: "JetBrainsMono-Nerd-Font-Regular", sans-serif; | |
| 108 | 108 | } | |
| 109 | 109 | ||
| 110 | - | .JetBrainsMonoBoldNF { | |
| 110 | + | .JetBrainsMonoBoldNF, .iconfb{ | |
| 111 | 111 | font-family: "JetBrainsMono-Nerd-Font-Bold", sans-serif; | |
| 112 | 112 | } | |
| @@ -103,10 +103,10 @@ | |||||
| 103 | font-family: "IBMPlexSans-Regular", sans-serif; | 103 | font-family: "IBMPlexSans-Regular", sans-serif; | ||
| 104 | } | 104 | } | ||
| 105 | 105 | ||||
| 106 | - | .JetBrainsMonoNF { | 106 | + | .JetBrainsMonoNF, .iconf{ |
| 107 | font-family: "JetBrainsMono-Nerd-Font-Regular", sans-serif; | 107 | font-family: "JetBrainsMono-Nerd-Font-Regular", sans-serif; | ||
| 108 | } | 108 | } | ||
| 109 | 109 | ||||
| 110 | - | .JetBrainsMonoBoldNF { | 110 | + | .JetBrainsMonoBoldNF, .iconfb{ |
| 111 | font-family: "JetBrainsMono-Nerd-Font-Bold", sans-serif; | 111 | font-family: "JetBrainsMono-Nerd-Font-Bold", sans-serif; | ||
| 112 | } | 112 | } | ||
M internal/webui/public/assets/css/tailwind.css +2 -2
| @@ -1156,11 +1156,11 @@ video { | |||
| 1156 | 1156 | font-family: "IBMPlexSans-Regular", sans-serif; | |
| 1157 | 1157 | } | |
| 1158 | 1158 | ||
| 1159 | - | .JetBrainsMonoNF { | |
| 1159 | + | .JetBrainsMonoNF, .iconf{ | |
| 1160 | 1160 | font-family: "JetBrainsMono-Nerd-Font-Regular", sans-serif; | |
| 1161 | 1161 | } | |
| 1162 | 1162 | ||
| 1163 | - | .JetBrainsMonoBoldNF { | |
| 1163 | + | .JetBrainsMonoBoldNF, .iconfb{ | |
| 1164 | 1164 | font-family: "JetBrainsMono-Nerd-Font-Bold", sans-serif; | |
| 1165 | 1165 | } | |
| 1166 | 1166 | ||
| @@ -1156,11 +1156,11 @@ video { | |||||
| 1156 | font-family: "IBMPlexSans-Regular", sans-serif; | 1156 | font-family: "IBMPlexSans-Regular", sans-serif; | ||
| 1157 | } | 1157 | } | ||
| 1158 | 1158 | ||||
| 1159 | - | .JetBrainsMonoNF { | 1159 | + | .JetBrainsMonoNF, .iconf{ |
| 1160 | font-family: "JetBrainsMono-Nerd-Font-Regular", sans-serif; | 1160 | font-family: "JetBrainsMono-Nerd-Font-Regular", sans-serif; | ||
| 1161 | } | 1161 | } | ||
| 1162 | 1162 | ||||
| 1163 | - | .JetBrainsMonoBoldNF { | 1163 | + | .JetBrainsMonoBoldNF, .iconfb{ |
| 1164 | font-family: "JetBrainsMono-Nerd-Font-Bold", sans-serif; | 1164 | font-family: "JetBrainsMono-Nerd-Font-Bold", sans-serif; | ||
| 1165 | } | 1165 | } | ||
| 1166 | 1166 | ||||
D internal/webui/public/libs/iconoir.css +0 -22 too large to show in the browser
too large to show in the browser