diff --git a/assets/images/logo/inventree.png b/assets/images/logo/inventree.png index e4626e0abe..b11dfcac84 100644 Binary files a/assets/images/logo/inventree.png and b/assets/images/logo/inventree.png differ diff --git a/assets/images/logo/inventree.svg b/assets/images/logo/inventree.svg index f2bb05ffae..bfa0393089 100644 --- a/assets/images/logo/inventree.svg +++ b/assets/images/logo/inventree.svg @@ -2,49 +2,52 @@ + inkscape:export-xdpi="192" + inkscape:export-ydpi="192" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:dc="http://purl.org/dc/elements/1.1/"> + units="px" + inkscape:showpageshadow="2" + inkscape:pagecheckerboard="0" + inkscape:deskcolor="#d1d1d1" /> + pattern-nodetypes="cc" + lpeversion="0" + hide_knot="false" /> @@ -64,7 +69,6 @@ image/svg+xml - @@ -76,216 +80,60 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - + id="path4896" + d="m -122.54394,388.79361 -119.41589,68.9448 118.6972,68.52986 119.87989,-69.21269 z" + style="font-variation-settings:normal;vector-effect:none;fill:#c9944d;fill-opacity:1;stroke:#ffffff;stroke-width:14.5919;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;paint-order:normal;stop-color:#000000" /> + sodipodi:nodetypes="ccccc" /> - - - - + id="path4900" + d="m -3.38274,457.05558 -119.1612,-68.26197 0.46401,-137.32759 118.83593,68.44974 z" + style="font-variation-settings:normal;vector-effect:none;fill:#c9944d;fill-opacity:1;stroke:#ffffff;stroke-width:14.5919;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;paint-order:normal;stop-color:#000000" /> + id="path4926" + d="m -62.96019,422.92278 -59.58061,-34.13099 0.23201,-68.6638 59.41797,34.22484 z" + style="fill:#90a8d8;fill-opacity:1;stroke:#ffffff;stroke-width:14.2746;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> - - - - - - + id="path4922" + d="m -122.5408,388.79179 -59.70796,34.47241 59.34862,34.26492 59.93995,-34.60634 z" + style="fill:#5e81c7;fill-opacity:1;stroke:#ffffff;stroke-width:14.2746;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + + + + diff --git a/assets/images/logo/inventree_logo_large.png b/assets/images/logo/inventree_logo_large.png deleted file mode 100644 index 845e718536..0000000000 Binary files a/assets/images/logo/inventree_logo_large.png and /dev/null differ diff --git a/assets/images/logo/inventree_logo_old.svg b/assets/images/logo/inventree_logo_old.svg deleted file mode 100644 index a65006db56..0000000000 --- a/assets/images/logo/inventree_logo_old.svg +++ /dev/null @@ -1,213 +0,0 @@ - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/backend/InvenTree/InvenTree/api.py b/src/backend/InvenTree/InvenTree/api.py index 1dfc53fa5c..ae4123d76c 100644 --- a/src/backend/InvenTree/InvenTree/api.py +++ b/src/backend/InvenTree/InvenTree/api.py @@ -307,7 +307,7 @@ class InfoView(APIView): 'docker_mode': settings.DOCKER, 'default_locale': settings.LANGUAGE_CODE, 'customize': { - 'logo': helpers.getLogoImage(), + 'logo': helpers.getLogoImage(backup=False), 'splash': helpers.getSplashScreen(), 'login_message': helpers.getCustomOption('login_message'), 'navbar_message': helpers.getCustomOption('navbar_message'), diff --git a/src/backend/InvenTree/InvenTree/helpers.py b/src/backend/InvenTree/InvenTree/helpers.py index 7b7cef24d5..e9efdb14a3 100644 --- a/src/backend/InvenTree/InvenTree/helpers.py +++ b/src/backend/InvenTree/InvenTree/helpers.py @@ -5,7 +5,6 @@ import hashlib import inspect import io import json -import os.path import re from decimal import Decimal, InvalidOperation from pathlib import Path @@ -262,8 +261,14 @@ def checkStaticFile(*args) -> bool: return static_storage.exists(str(fn)) -def getLogoImage(as_file=False, custom=True): - """Return the InvenTree logo image, or a custom logo if available.""" +def getLogoImage(as_file: bool = False, custom: bool = True, backup: bool = True): + """Return the InvenTree logo image, or a custom logo if available. + + Arguments: + as_file: Return a file path instead of a URL (default = False) + custom: Use a custom logo if available (default = True) + backup: Use a backup logo if available (default = True) + """ if custom and settings.CUSTOM_LOGO: static_storage = StaticFilesStorage() @@ -279,14 +284,17 @@ def getLogoImage(as_file=False, custom=True): return f'file://{storage.path(settings.CUSTOM_LOGO)}' return storage.url(settings.CUSTOM_LOGO) - # If we have got to this point, return the default logo - if as_file: - path = settings.STATIC_ROOT.joinpath('img/inventree.png') - return f'file://{path}' - return getStaticUrl('img/inventree.png') + # If we have got to this point, return the default logo (if requested) + if backup: + if as_file: + path = settings.STATIC_ROOT.joinpath('img/inventree.png') + return f'file://{path}' + return getStaticUrl('img/inventree.png') + + return None -def getSplashScreen(custom=True): +def getSplashScreen(custom: bool = True): """Return the InvenTree splash screen, or a custom splash if available.""" static_storage = StaticFilesStorage() @@ -307,24 +315,6 @@ def getCustomOption(reference: str): return settings.CUSTOMIZE.get(reference, None) -def TestIfImageURL(url): - """Test if an image URL (or filename) looks like a valid image format. - - Simply tests the extension against a set of allowed values - """ - return os.path.splitext(os.path.basename(url))[-1].lower() in [ - '.jpg', - '.jpeg', - '.j2k', - '.png', - '.bmp', - '.tif', - '.tiff', - '.webp', - '.gif', - ] - - def str2bool(text, test=True) -> bool: """Test if a string 'looks' like a boolean value. diff --git a/src/backend/InvenTree/InvenTree/static/img/favicon/android-icon-144x144.png b/src/backend/InvenTree/InvenTree/static/img/favicon/android-icon-144x144.png index f810274aec..29d80bd30c 100644 Binary files a/src/backend/InvenTree/InvenTree/static/img/favicon/android-icon-144x144.png and b/src/backend/InvenTree/InvenTree/static/img/favicon/android-icon-144x144.png differ diff --git a/src/backend/InvenTree/InvenTree/static/img/favicon/android-icon-192x192.png b/src/backend/InvenTree/InvenTree/static/img/favicon/android-icon-192x192.png index a4d1885ed6..c40686c889 100644 Binary files a/src/backend/InvenTree/InvenTree/static/img/favicon/android-icon-192x192.png and b/src/backend/InvenTree/InvenTree/static/img/favicon/android-icon-192x192.png differ diff --git a/src/backend/InvenTree/InvenTree/static/img/favicon/android-icon-36x36.png b/src/backend/InvenTree/InvenTree/static/img/favicon/android-icon-36x36.png index 69d8a76a39..ff693dc738 100644 Binary files a/src/backend/InvenTree/InvenTree/static/img/favicon/android-icon-36x36.png and b/src/backend/InvenTree/InvenTree/static/img/favicon/android-icon-36x36.png differ diff --git a/src/backend/InvenTree/InvenTree/static/img/favicon/android-icon-48x48.png b/src/backend/InvenTree/InvenTree/static/img/favicon/android-icon-48x48.png index e71145b370..e3bbd5ffc9 100644 Binary files a/src/backend/InvenTree/InvenTree/static/img/favicon/android-icon-48x48.png and b/src/backend/InvenTree/InvenTree/static/img/favicon/android-icon-48x48.png differ diff --git a/src/backend/InvenTree/InvenTree/static/img/favicon/android-icon-72x72.png b/src/backend/InvenTree/InvenTree/static/img/favicon/android-icon-72x72.png index 31e3fdc063..1cd3333778 100644 Binary files a/src/backend/InvenTree/InvenTree/static/img/favicon/android-icon-72x72.png and b/src/backend/InvenTree/InvenTree/static/img/favicon/android-icon-72x72.png differ diff --git a/src/backend/InvenTree/InvenTree/static/img/favicon/android-icon-96x96.png b/src/backend/InvenTree/InvenTree/static/img/favicon/android-icon-96x96.png index aa1e58b5af..567e530717 100644 Binary files a/src/backend/InvenTree/InvenTree/static/img/favicon/android-icon-96x96.png and b/src/backend/InvenTree/InvenTree/static/img/favicon/android-icon-96x96.png differ diff --git a/src/backend/InvenTree/InvenTree/static/img/favicon/apple-icon-114x114.png b/src/backend/InvenTree/InvenTree/static/img/favicon/apple-icon-114x114.png index 6f06cfb989..c8e85c4f35 100644 Binary files a/src/backend/InvenTree/InvenTree/static/img/favicon/apple-icon-114x114.png and b/src/backend/InvenTree/InvenTree/static/img/favicon/apple-icon-114x114.png differ diff --git a/src/backend/InvenTree/InvenTree/static/img/favicon/apple-icon-120x120.png b/src/backend/InvenTree/InvenTree/static/img/favicon/apple-icon-120x120.png index 77f26c1d55..84f55315e2 100644 Binary files a/src/backend/InvenTree/InvenTree/static/img/favicon/apple-icon-120x120.png and b/src/backend/InvenTree/InvenTree/static/img/favicon/apple-icon-120x120.png differ diff --git a/src/backend/InvenTree/InvenTree/static/img/favicon/apple-icon-144x144.png b/src/backend/InvenTree/InvenTree/static/img/favicon/apple-icon-144x144.png index f810274aec..29d80bd30c 100644 Binary files a/src/backend/InvenTree/InvenTree/static/img/favicon/apple-icon-144x144.png and b/src/backend/InvenTree/InvenTree/static/img/favicon/apple-icon-144x144.png differ diff --git a/src/backend/InvenTree/InvenTree/static/img/favicon/apple-icon-152x152.png b/src/backend/InvenTree/InvenTree/static/img/favicon/apple-icon-152x152.png index e9932969ad..4e0265c0be 100644 Binary files a/src/backend/InvenTree/InvenTree/static/img/favicon/apple-icon-152x152.png and b/src/backend/InvenTree/InvenTree/static/img/favicon/apple-icon-152x152.png differ diff --git a/src/backend/InvenTree/InvenTree/static/img/favicon/apple-icon-180x180.png b/src/backend/InvenTree/InvenTree/static/img/favicon/apple-icon-180x180.png index 63a3bf1467..ab2c200c24 100644 Binary files a/src/backend/InvenTree/InvenTree/static/img/favicon/apple-icon-180x180.png and b/src/backend/InvenTree/InvenTree/static/img/favicon/apple-icon-180x180.png differ diff --git a/src/backend/InvenTree/InvenTree/static/img/favicon/apple-icon-57x57.png b/src/backend/InvenTree/InvenTree/static/img/favicon/apple-icon-57x57.png index 9b821a63d4..f2821b7a54 100644 Binary files a/src/backend/InvenTree/InvenTree/static/img/favicon/apple-icon-57x57.png and b/src/backend/InvenTree/InvenTree/static/img/favicon/apple-icon-57x57.png differ diff --git a/src/backend/InvenTree/InvenTree/static/img/favicon/apple-icon-60x60.png b/src/backend/InvenTree/InvenTree/static/img/favicon/apple-icon-60x60.png index 171adbdc97..fc1a6a8c20 100644 Binary files a/src/backend/InvenTree/InvenTree/static/img/favicon/apple-icon-60x60.png and b/src/backend/InvenTree/InvenTree/static/img/favicon/apple-icon-60x60.png differ diff --git a/src/backend/InvenTree/InvenTree/static/img/favicon/apple-icon-72x72.png b/src/backend/InvenTree/InvenTree/static/img/favicon/apple-icon-72x72.png index 31e3fdc063..1cd3333778 100644 Binary files a/src/backend/InvenTree/InvenTree/static/img/favicon/apple-icon-72x72.png and b/src/backend/InvenTree/InvenTree/static/img/favicon/apple-icon-72x72.png differ diff --git a/src/backend/InvenTree/InvenTree/static/img/favicon/apple-icon-76x76.png b/src/backend/InvenTree/InvenTree/static/img/favicon/apple-icon-76x76.png index 8ba68d7421..96b3e59ec9 100644 Binary files a/src/backend/InvenTree/InvenTree/static/img/favicon/apple-icon-76x76.png and b/src/backend/InvenTree/InvenTree/static/img/favicon/apple-icon-76x76.png differ diff --git a/src/backend/InvenTree/InvenTree/static/img/favicon/apple-icon-precomposed.png b/src/backend/InvenTree/InvenTree/static/img/favicon/apple-icon-precomposed.png index b971323c6c..ab2c200c24 100644 Binary files a/src/backend/InvenTree/InvenTree/static/img/favicon/apple-icon-precomposed.png and b/src/backend/InvenTree/InvenTree/static/img/favicon/apple-icon-precomposed.png differ diff --git a/src/backend/InvenTree/InvenTree/static/img/favicon/apple-icon.png b/src/backend/InvenTree/InvenTree/static/img/favicon/apple-icon.png index b971323c6c..ab2c200c24 100644 Binary files a/src/backend/InvenTree/InvenTree/static/img/favicon/apple-icon.png and b/src/backend/InvenTree/InvenTree/static/img/favicon/apple-icon.png differ diff --git a/src/backend/InvenTree/InvenTree/static/img/favicon/favicon-16x16.png b/src/backend/InvenTree/InvenTree/static/img/favicon/favicon-16x16.png index e0da7c028e..034f4bd920 100644 Binary files a/src/backend/InvenTree/InvenTree/static/img/favicon/favicon-16x16.png and b/src/backend/InvenTree/InvenTree/static/img/favicon/favicon-16x16.png differ diff --git a/src/backend/InvenTree/InvenTree/static/img/favicon/favicon-32x32.png b/src/backend/InvenTree/InvenTree/static/img/favicon/favicon-32x32.png index 9594ce7474..ad76bf77cf 100644 Binary files a/src/backend/InvenTree/InvenTree/static/img/favicon/favicon-32x32.png and b/src/backend/InvenTree/InvenTree/static/img/favicon/favicon-32x32.png differ diff --git a/src/backend/InvenTree/InvenTree/static/img/favicon/favicon-96x96.png b/src/backend/InvenTree/InvenTree/static/img/favicon/favicon-96x96.png index aa1e58b5af..567e530717 100644 Binary files a/src/backend/InvenTree/InvenTree/static/img/favicon/favicon-96x96.png and b/src/backend/InvenTree/InvenTree/static/img/favicon/favicon-96x96.png differ diff --git a/src/backend/InvenTree/InvenTree/static/img/favicon/favicon.ico b/src/backend/InvenTree/InvenTree/static/img/favicon/favicon.ico index c9b535a0c1..b78151d019 100644 Binary files a/src/backend/InvenTree/InvenTree/static/img/favicon/favicon.ico and b/src/backend/InvenTree/InvenTree/static/img/favicon/favicon.ico differ diff --git a/src/backend/InvenTree/InvenTree/static/img/favicon/ms-icon-144x144.png b/src/backend/InvenTree/InvenTree/static/img/favicon/ms-icon-144x144.png index f810274aec..29d80bd30c 100644 Binary files a/src/backend/InvenTree/InvenTree/static/img/favicon/ms-icon-144x144.png and b/src/backend/InvenTree/InvenTree/static/img/favicon/ms-icon-144x144.png differ diff --git a/src/backend/InvenTree/InvenTree/static/img/favicon/ms-icon-150x150.png b/src/backend/InvenTree/InvenTree/static/img/favicon/ms-icon-150x150.png index 3a3d76897e..62bfcef7bd 100644 Binary files a/src/backend/InvenTree/InvenTree/static/img/favicon/ms-icon-150x150.png and b/src/backend/InvenTree/InvenTree/static/img/favicon/ms-icon-150x150.png differ diff --git a/src/backend/InvenTree/InvenTree/static/img/favicon/ms-icon-310x310.png b/src/backend/InvenTree/InvenTree/static/img/favicon/ms-icon-310x310.png index fc66cd4af0..48aade2e76 100644 Binary files a/src/backend/InvenTree/InvenTree/static/img/favicon/ms-icon-310x310.png and b/src/backend/InvenTree/InvenTree/static/img/favicon/ms-icon-310x310.png differ diff --git a/src/backend/InvenTree/InvenTree/static/img/favicon/ms-icon-70x70.png b/src/backend/InvenTree/InvenTree/static/img/favicon/ms-icon-70x70.png index d5e5bcbb98..d79cb8bbf3 100644 Binary files a/src/backend/InvenTree/InvenTree/static/img/favicon/ms-icon-70x70.png and b/src/backend/InvenTree/InvenTree/static/img/favicon/ms-icon-70x70.png differ diff --git a/src/backend/InvenTree/InvenTree/static/img/inventree.png b/src/backend/InvenTree/InvenTree/static/img/inventree.png index e4626e0abe..b11dfcac84 100644 Binary files a/src/backend/InvenTree/InvenTree/static/img/inventree.png and b/src/backend/InvenTree/InvenTree/static/img/inventree.png differ diff --git a/src/backend/InvenTree/InvenTree/tests.py b/src/backend/InvenTree/InvenTree/tests.py index 7934f91324..3448d16178 100644 --- a/src/backend/InvenTree/InvenTree/tests.py +++ b/src/backend/InvenTree/InvenTree/tests.py @@ -643,14 +643,6 @@ class TestHelpers(TestCase): InvenTree.helpers_model.construct_absolute_url(url), expected ) - def test_image_url(self): - """Test if a filename looks like an image.""" - for name in ['ape.png', 'bat.GiF', 'apple.WeBP', 'BiTMap.Bmp']: - self.assertTrue(helpers.TestIfImageURL(name)) - - for name in ['no.doc', 'nah.pdf', 'whatpng']: - self.assertFalse(helpers.TestIfImageURL(name)) - def test_str2bool(self): """Test string to boolean conversion.""" for s in ['yes', 'Y', 'ok', '1', 'OK', 'Ok', 'tRuE', 'oN']: diff --git a/src/frontend/src/assets/inventree.svg b/src/frontend/src/assets/inventree.svg index 1404d2cdaa..bfa0393089 100644 --- a/src/frontend/src/assets/inventree.svg +++ b/src/frontend/src/assets/inventree.svg @@ -1 +1,139 @@ - + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + diff --git a/src/frontend/src/components/items/InvenTreeLogo.tsx b/src/frontend/src/components/items/InvenTreeLogo.tsx index b03f321980..067b830fa5 100644 --- a/src/frontend/src/components/items/InvenTreeLogo.tsx +++ b/src/frontend/src/components/items/InvenTreeLogo.tsx @@ -4,8 +4,8 @@ import { type ReactNode, forwardRef } from 'react'; import { NavLink } from 'react-router-dom'; import { useShallow } from 'zustand/react/shallow'; +import InvenTreeIcon from '../../assets/inventree.svg'; import { useServerApiState } from '../../states/ServerApiState'; -import InvenTreeIcon from './inventree.svg'; export const InvenTreeLogoHomeButton = forwardRef( (props, ref) => { @@ -26,16 +26,32 @@ export const InvenTreeLogoHomeButton = forwardRef( * - Uses the custom logo if one is defined on the server * - Otherwise, uses the default logo */ -export function InvenTreeLogo(): ReactNode { +export function InvenTreeLogo({ + size = 36 +}: { + size?: number; +}): ReactNode { const [server] = useServerApiState( useShallow((state) => [state.server, state.fetchServerApiState]) ); if (server.server && server.customize?.logo) { return ( - {t`InvenTree + {t`InvenTree ); } - return {t`InvenTree; + return ( + {t`InvenTree + ); } diff --git a/src/frontend/src/components/items/inventree.svg b/src/frontend/src/components/items/inventree.svg deleted file mode 100644 index 1404d2cdaa..0000000000 --- a/src/frontend/src/components/items/inventree.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/src/frontend/src/components/nav/NavHoverMenu.tsx b/src/frontend/src/components/nav/NavHoverMenu.tsx index 21e8555e03..b5f4087cf1 100644 --- a/src/frontend/src/components/nav/NavHoverMenu.tsx +++ b/src/frontend/src/components/nav/NavHoverMenu.tsx @@ -8,7 +8,11 @@ export function NavHoverMenu({ openDrawer: () => void; }>) { return ( - openDrawer()} aria-label='navigation-menu'> + openDrawer()} + aria-label='navigation-menu' + style={{ display: 'flex', alignItems: 'center', height: 38 }} + > );