diff --git a/.storybook/main.ts b/.storybook/main.ts index efab537f9..854f1da7c 100644 --- a/.storybook/main.ts +++ b/.storybook/main.ts @@ -1,4 +1,11 @@ import { StorybookConfig } from "@storybook/vue3-vite"; +import { createReadStream } from "node:fs"; + +// serve test logos so the custom branding stories can render them +const customLogos = { + "/custom-logo-light": "tests/custom-logo-light.svg", + "/custom-logo-dark": "tests/custom-logo-dark.svg", +}; export default { stories: ["../assets/js/**/*.stories.@(js|ts)"], @@ -10,4 +17,21 @@ export default { core: { disableTelemetry: true, }, + viteFinal: (config) => ({ + ...config, + plugins: [ + ...(config.plugins ?? []), + { + name: "evcc-custom-logos", + configureServer(server) { + server.middlewares.use((req, res, next) => { + const file = customLogos[req.url?.split("?")[0] as keyof typeof customLogos]; + if (!file) return next(); + res.setHeader("Content-Type", "image/svg+xml"); + createReadStream(file).pipe(res); + }); + }, + }, + ], + }), } satisfies StorybookConfig; diff --git a/assets/js/components/AboutModal.stories.ts b/assets/js/components/AboutModal.stories.ts index 089c8e461..dbeb8031d 100644 --- a/assets/js/components/AboutModal.stories.ts +++ b/assets/js/components/AboutModal.stories.ts @@ -52,6 +52,11 @@ export default { hasUpdater: { control: "boolean" }, uploadMessage: { control: "text" }, uploadProgress: { control: "number" }, + customLogo: { control: "boolean" }, + customBrand: { control: "text" }, + customWebsite: { control: "text" }, + customEmail: { control: "text" }, + customPhone: { control: "text" }, }, } as Meta; @@ -102,3 +107,14 @@ export const DevBuild = Template.bind({}); DevBuild.args = { installed: "0.0.0", }; + +export const CustomBranding = Template.bind({}); +CustomBranding.args = { + installed: "0.303.1", + availableVersion: "0.303.1", + customLogo: true, + customBrand: "G1GA HEMS", + customWebsite: "https://example.com/hems", + customEmail: "support@example.com", + customPhone: "+49 123 456789", +}; diff --git a/assets/js/components/AboutModal.vue b/assets/js/components/AboutModal.vue index 21fd167db..751187df1 100644 --- a/assets/js/components/AboutModal.vue +++ b/assets/js/components/AboutModal.vue @@ -1,5 +1,5 @@