# HG changeset patch # User Arnaud Vergnet <arnaud.vergnet@logilab.fr> # Date 1712240418 -7200 # Thu Apr 04 16:20:18 2024 +0200 # Node ID f7bd8e9c9153d5ec8af07ea41a70d60c7a4ceea3 # Parent 809ff43d836d5d56adae698b14a02422cb460f1c feat(frontend): allow specifying env var for the logo base64 diff --git a/frontend/.env.development b/frontend/.env.development --- a/frontend/.env.development +++ b/frontend/.env.development @@ -1,2 +1,55 @@ RODOLF_API_URL="http://localhost:8080/api" -RODOLF_APP_TITLE="Rodolf Dev" \ No newline at end of file +RODOLF_APP_TITLE="Rodolf Dev" +RODOLF_APP_LOGO_B64="/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcU +FhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgo +KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCABgAGADASIA +AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA +AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3 +ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm +p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA +AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx +BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK +U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3 +uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD6ppGY +KpZiAAMkntS1i+Npmt/BmvTxkh47C4dSPURsRQBe0fU7LWdNg1DS7iO5sp13RTRnKsM4yPyNXK8u ++CGsTXuh2Wn2ccI0TSdMtbeScg7pLtow7qpzjaikA99ze1enxusiK8bKyMMhlOQRSTuhyVnYdRRR +TEFFFFABWdrutWGhWSXeqT+RbtNHAHKkgO7BVzgcDJHJ4FXppY4YnlmdY4kUszucBQOpJPQV5H8e +9UuYvCF3IJYbnw5qVi0SSxAMYLofvIJNwPKOVC+x2nvSbshxV3Y9forL0fUo5vDVlqd3KkUUlpHc +SSSMFVQUDEkngCr9rcQ3dvHPazRzQSLuSSNgysPUEcEUxGD8Q9P1rU/CN/a+GL82GqsoMMoOCcHJ +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" \ No newline at end of file diff --git a/frontend/.env.production b/frontend/.env.production --- a/frontend/.env.production +++ b/frontend/.env.production @@ -1,2 +1,55 @@ RODOLF_API_URL="https://rodolf-api.k.intra.logilab.fr/api" -RODOLF_APP_TITLE="Rodolf" \ No newline at end of file +RODOLF_APP_TITLE="Rodolf" +RODOLF_APP_LOGO_B64="/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcU +FhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgo +KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCABgAGADASIA +AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA +AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3 +ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm +p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA +AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx +BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK +U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3 +uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD6ppGY +KpZiAAMkntS1i+Npmt/BmvTxkh47C4dSPURsRQBe0fU7LWdNg1DS7iO5sp13RTRnKsM4yPyNXK8u ++CGsTXuh2Wn2ccI0TSdMtbeScg7pLtow7qpzjaikA99ze1enxusiK8bKyMMhlOQRSTuhyVnYdRRR +TEFFFFABWdrutWGhWSXeqT+RbtNHAHKkgO7BVzgcDJHJ4FXppY4YnlmdY4kUszucBQOpJPQV5H8e +9UuYvCF3IJYbnw5qVi0SSxAMYLofvIJNwPKOVC+x2nvSbshxV3Y9forL0fUo5vDVlqd3KkUUlpHc +SSSMFVQUDEkngCr9rcQ3dvHPazRzQSLuSSNgysPUEcEUxGD8Q9P1rU/CN/a+GL82GqsoMMoOCcHJ +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" \ No newline at end of file diff --git a/frontend/src/app/favicon.ico b/frontend/src/app/favicon.ico deleted file mode 100644 index 363dd74afa299b5625f37d0bf4330e3057da04f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc$@<O00001 diff --git a/frontend/src/app/layout.tsx b/frontend/src/app/layout.tsx --- a/frontend/src/app/layout.tsx +++ b/frontend/src/app/layout.tsx @@ -14,6 +14,7 @@ }) { const API_ENDPOINT = process.env.RODOLF_API_URL; const APP_TITLE = process.env.RODOLF_APP_TITLE; + const APP_LOGO = process.env.RODOLF_APP_LOGO; if (!API_ENDPOINT) { throw new Error("No api endpoint configured"); @@ -23,7 +24,11 @@ <html lang="en"> <body style={{ margin: 0 }}> <AppRouterCacheProvider> - <BaseLayout endpoint={API_ENDPOINT} title={APP_TITLE ?? "Rodolf"}> + <BaseLayout + endpoint={API_ENDPOINT} + title={APP_TITLE ?? "Rodolf"} + logoBase64={APP_LOGO} + > {children} </BaseLayout> </AppRouterCacheProvider> diff --git a/frontend/src/components/BaseLayout.tsx b/frontend/src/components/BaseLayout.tsx --- a/frontend/src/components/BaseLayout.tsx +++ b/frontend/src/components/BaseLayout.tsx @@ -10,7 +10,12 @@ children, endpoint, title, -}: PropsWithChildren<{ endpoint: string; title: string }>) { + logoBase64, +}: PropsWithChildren<{ + endpoint: string; + title: string; + logoBase64?: string; +}>) { return ( <ClientProvider endpoint={endpoint}> <CustomThemeProvider> @@ -20,7 +25,7 @@ sx={{ minHeight: "100vh", display: "flex" }} > <Stack flex={1}> - <Header title={title} /> + <Header title={title} logoBase64={logoBase64} /> <Box paddingTop={1} paddingBottom={1} flex={1}> {children} </Box> diff --git a/frontend/src/components/Header.tsx b/frontend/src/components/Header.tsx --- a/frontend/src/components/Header.tsx +++ b/frontend/src/components/Header.tsx @@ -19,9 +19,10 @@ type HeaderProps = { title: string; + logoBase64: string | undefined; }; -export function Header({ title }: HeaderProps) { +export function Header({ title, logoBase64 }: HeaderProps) { const pathname = usePathname(); const loggedIn = pathname !== "/login"; const logout = useApiLogout(); @@ -59,7 +60,11 @@ alignItems={"center"} > <Image - src={"/rodolf.jpg"} + src={ + logoBase64 + ? `data:image/png;base64,${logoBase64}` + : "/rodolf.jpg" + } alt={"Rodolf logo"} width={50} height={50}