diff --git a/docs/Layout/errorPage.md b/docs/Layout/errorPage.md
index 32253f3..f5d2c5a 100644
--- a/docs/Layout/errorPage.md
+++ b/docs/Layout/errorPage.md
@@ -16,6 +16,9 @@ symfony console importmap:require "@enabel/enabel-bootstrap-theme/dist/css/error
If you serve the theme through a different path, override the `stylesheet` parameter (see below).
+> [!NOTE]
+> The default `symbol` and `logo` ship as `data:` URIs embedded in the component — the consuming app does not need to provide any image asset. To use a custom logo, pass a path (resolved through `asset()`) or your own `data:` URI; the template detects the prefix automatically.
+
## Parameters
| Parameter | Type | Description | Default |
@@ -26,8 +29,8 @@ If you serve the theme through a different path, override the `stylesheet` param
| `details` | `?string` | Optional small print (trace IDs, technical details) | `null` |
| `backUrl` | `?string` | URL of the "back home" button. Button is hidden when `null` | `null` |
| `backLabel` | `string` | Label of the "back home" button | `'Back to homepage'` |
-| `symbol` | `string` | Path to the watermark image (`.bg img`) | `'/images/enabel-symbol.png'` |
-| `logo` | `string` | Path to the bottom logo (`.logo img`) | `'/images/enabel-logo-email.png'` |
+| `symbol` | `string` | Watermark image. Accepts a `data:` URI (rendered as-is) or an asset path passed to `asset()` | Enabel mark embedded as `data:image/svg+xml;base64,…` |
+| `logo` | `string` | Bottom logo. Same `data:` vs asset path resolution as `symbol` | Enabel logo embedded as `data:image/png;base64,…` |
| `locale` | `string` | Value used for `` | `'en'` |
| `appName` | `string` | Application name used in the `
` tag and logo `alt` | `'Enabel'` |
| `stylesheet` | `string` | Path passed to `asset()` for the error CSS | `'vendor/@enabel/enabel-bootstrap-theme/dist/css/error.min.css'` |
@@ -45,6 +48,19 @@ If you serve the theme through a different path, override the `stylesheet` param
}) }}
```
+### With a custom logo (asset path)
+
+```twig
+{# templates/bundles/TwigBundle/Exception/error404.html.twig #}
+{{ component('Enabel:Ux:ErrorPage', {
+ statusCode: 404,
+ title: 'app.error.404.title'|trans,
+ message: 'app.error.404.message'|trans,
+ symbol: '/images/my-symbol.png',
+ logo: '/images/my-logo.png',
+}) }}
+```
+
### With back button and localized labels
```twig
diff --git a/src/Component/Layout/Defaults/error_page_logo.txt b/src/Component/Layout/Defaults/error_page_logo.txt
new file mode 100644
index 0000000..44a463d
--- /dev/null
+++ b/src/Component/Layout/Defaults/error_page_logo.txt
@@ -0,0 +1 @@
+data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAAAyCAYAAAC+jCIaAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFDGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDIgNzkuMTYwOTI0LCAyMDE3LzA3LzEzLTAxOjA2OjM5ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIiB4bXA6Q3JlYXRlRGF0ZT0iMjAyMi0wOS0zMFQxMjozMiswMjowMCIgeG1wOk1vZGlmeURhdGU9IjIwMjItMDktMzBUMTI6MzQ6NDUrMDI6MDAiIHhtcDpNZXRhZGF0YURhdGU9IjIwMjItMDktMzBUMTI6MzQ6NDUrMDI6MDAiIGRjOmZvcm1hdD0iaW1hZ2UvcG5nIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIiBwaG90b3Nob3A6SUNDUHJvZmlsZT0ic1JHQiBJRUM2MTk2Ni0yLjEiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NzA4ZDEwMzMtYmFkYS0wMDQxLWEw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
\ No newline at end of file
diff --git a/src/Component/Layout/Defaults/error_page_symbol.txt b/src/Component/Layout/Defaults/error_page_symbol.txt
new file mode 100644
index 0000000..63c8b03
--- /dev/null
+++ b/src/Component/Layout/Defaults/error_page_symbol.txt
@@ -0,0 +1 @@
+data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/Pgo8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDIwMDEwOTA0Ly9FTiIKICJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy1TVkctMjAwMTA5MDQvRFREL3N2ZzEwLmR0ZCI+CjxzdmcgdmVyc2lvbj0iMS4wIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiB3aWR0aD0iMjAwLjAwMDAwMHB0IiBoZWlnaHQ9IjIwMC4wMDAwMDBwdCIgdmlld0JveD0iMCAwIDIwMC4wMDAwMDAgMjAwLjAwMDAwMCIKIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaWRZTWlkIG1lZXQiPgo8bWV0YWRhdGE+CkNyZWF0ZWQgYnkgcG90cmFjZSAxLjE0LCB3cml0dGVuIGJ5IFBldGVyIFNlbGluZ2VyIDIwMDEtMjAxNwo8L21ldGFkYXRhPgo8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwyMDAuMDAwMDAwKSBzY2FsZSgwLjEwMDAwMCwtMC4xMDAwMDApIgpmaWxsPSIjMDAwMDAwIiBzdHJva2U9Im5vbmUiPgo8cGF0aCBkPSJNNTE4IDE1NzQgYy01MiAtMTIgLTE1OCAtNTggLTE1OCAtNjggMCAtMiA0NCAtMjggOTcgLTU2IDE4NCAtOTgKMzI1IC0yMjAgNDE0IC0zNTggbDQ3IC03MyAxMiA2OCBjMTggOTIgNDMgMTYzIDg5IDI0OSBsMzkgNzIgLTIxIDIwIGMtMzMgMzAKLTEyNiA4NiAtMTg0IDExMCAtMTE5IDUwIC0yMjkgNjIgLTMzNSAzNnoiLz4KPHBhdGggZD0iTTEzMjQgMTUyNiBjLTEwOCAtMzUgLTIyMiAtMTU0IC0yNzUgLTI4NyAtMzQgLTg2IC00NiAtMTMyIC04OSAtMzQ5Ci0yMyAtMTEzIC01MyAtMjM4IC02NiAtMjc5IC0xNCAtNDAgLTIzIC03NiAtMjAgLTc4IDMgLTMgNDcgMTUgOTkgNDAgMjUwIDExOAozNDAgMjI3IDQ0OCA1NDIgMjcgODEgNTcgMTYxIDY1IDE3OCAyOSA1NyA4NiAxMjcgMTIyIDE1MiBsMzYgMjQgLTY5IDMyIGMtNzkKMzcgLTE4MyA0OCAtMjUxIDI1eiIvPgo8cGF0aCBkPSJNNDY0IDY4NSBjLTI1IC0zOCAtOTQgLTIwMyAtOTQgLTIyNSAwIC0yMiA0NCAtMzggMTMxIC00NyAxMDcgLTExCjIzNSA0OCAyODkgMTMzIDI5IDQ2IDY2IDE0MSA1OCAxNDkgLTIgMiAtMjggLTIgLTU4IC0xMCAtNzUgLTIwIC0xMzMgLTE5Ci0yMjUgNSAtNDMgMTEgLTgwIDIwIC04MSAyMCAtMiAwIC0xMSAtMTEgLTIwIC0yNXoiLz4KPC9nPgo8L3N2Zz4K
\ No newline at end of file
diff --git a/src/Component/Layout/ErrorPage.php b/src/Component/Layout/ErrorPage.php
index a1f5a95..8bdfc65 100644
--- a/src/Component/Layout/ErrorPage.php
+++ b/src/Component/Layout/ErrorPage.php
@@ -14,6 +14,9 @@
class ErrorPage
{
+ private static ?string $defaultLogo = null;
+ private static ?string $defaultSymbol = null;
+
public int $statusCode;
public string $title;
public string $message;
@@ -48,8 +51,8 @@ public function configureOptions(OptionsResolver $resolver): void
'details' => null,
'backUrl' => null,
'backLabel' => 'Back to homepage',
- 'symbol' => '/images/enabel-symbol.png',
- 'logo' => '/images/enabel-logo-email.png',
+ 'symbol' => self::defaultSymbol(),
+ 'logo' => self::defaultLogo(),
'locale' => 'en',
'appName' => 'Enabel',
'stylesheet' => 'vendor/@enabel/enabel-bootstrap-theme/dist/css/error.min.css',
@@ -67,4 +70,14 @@ public function configureOptions(OptionsResolver $resolver): void
$resolver->setAllowedTypes('appName', 'string');
$resolver->setAllowedTypes('stylesheet', 'string');
}
+
+ private static function defaultLogo(): string
+ {
+ return self::$defaultLogo ??= trim((string) file_get_contents(__DIR__.'/Defaults/error_page_logo.txt'));
+ }
+
+ private static function defaultSymbol(): string
+ {
+ return self::$defaultSymbol ??= trim((string) file_get_contents(__DIR__.'/Defaults/error_page_symbol.txt'));
+ }
}
diff --git a/templates/layout/error_page.html.twig b/templates/layout/error_page.html.twig
index c31de0d..60013ab 100644
--- a/templates/layout/error_page.html.twig
+++ b/templates/layout/error_page.html.twig
@@ -7,7 +7,7 @@
-
+
{{ statusCode }}
@@ -15,7 +15,7 @@
{{ message }}
{% if backUrl %}{{ backLabel }}{% endif %}
{% if details %}{{ details }}{% endif %}
-
+
diff --git a/tests/Component/Layout/ErrorPageTest.php b/tests/Component/Layout/ErrorPageTest.php
index 3566b50..ae57c24 100644
--- a/tests/Component/Layout/ErrorPageTest.php
+++ b/tests/Component/Layout/ErrorPageTest.php
@@ -43,8 +43,8 @@ public function testComponentCanBeInstantiatedWithRequiredParameters(): void
$this->assertNull($component->details);
$this->assertNull($component->backUrl);
$this->assertSame('Back to homepage', $component->backLabel);
- $this->assertSame('/images/enabel-symbol.png', $component->symbol);
- $this->assertSame('/images/enabel-logo-email.png', $component->logo);
+ $this->assertStringStartsWith('data:image/svg+xml;base64,', $component->symbol);
+ $this->assertStringStartsWith('data:image/png;base64,', $component->logo);
$this->assertSame('en', $component->locale);
$this->assertSame('Enabel', $component->appName);
$this->assertSame('vendor/@enabel/enabel-bootstrap-theme/dist/css/error.min.css', $component->stylesheet);
@@ -154,6 +154,21 @@ public function testInvalidBackUrlTypeThrows(): void
]);
}
+ public function testCustomSymbolAndLogoPathsOverrideDataUriDefaults(): void
+ {
+ $component = new ErrorPage();
+ $data = $component->preMount([
+ 'statusCode' => 404,
+ 'title' => 'Not Found',
+ 'message' => 'Missing',
+ 'symbol' => '/images/custom-symbol.png',
+ 'logo' => '/images/custom-logo.png',
+ ]);
+
+ $this->assertSame('/images/custom-symbol.png', $data['symbol']);
+ $this->assertSame('/images/custom-logo.png', $data['logo']);
+ }
+
public function testPreMountPreservesAdditionalData(): void
{
$component = new ErrorPage();