diff --git a/changelog/_8471.md b/changelog/_8471.md
new file mode 100644
index 0000000000..6bc79ce533
--- /dev/null
+++ b/changelog/_8471.md
@@ -0,0 +1,16 @@
+### Fixed
+
+- fixed linting in: `project_bplan_detail.html`, `project_detail.html`, `module_detail.html`, `base.html`
+
+### Changed
+
+- moved `/components/_alert.scss` to components_dashboard folder
+
+### Added
+- introduced a reusable snippet `alerts.html` to enhance consistency and maintainability across alerts and prevent code duplication.
+- added snippet to `project_detail.html`, `module_detail.html`, `base.html`, `idea_create_form.html`, `idea_update_form.html`, `image_upload_widget.html`, `topic_create_form.html`, `topic_update_form.html`, `proposal_create_form.html`, `proposal_update_form.html`, `mapidea_create_form.html` ,`mapidea_update_form.html`
+- added alert__headline, .alert__content and alert__text to `/components_user_facing/_alert.scss`
+
+### Removed
+
+- removed messages class, @use "sass:color", $messages-margin-bottom form `/components_user_facing/_alert.scss`
\ No newline at end of file
diff --git a/meinberlin/apps/budgeting/templates/meinberlin_budgeting/proposal_create_form.html b/meinberlin/apps/budgeting/templates/meinberlin_budgeting/proposal_create_form.html
index fd5301dc28..4647b2ff39 100644
--- a/meinberlin/apps/budgeting/templates/meinberlin_budgeting/proposal_create_form.html
+++ b/meinberlin/apps/budgeting/templates/meinberlin_budgeting/proposal_create_form.html
@@ -1,32 +1,30 @@
-{% extends "base.html" %}
-{% load i18n %}
-
-{% block title %}{% translate 'Create a new proposal' %} — {{ block.super }}{% endblock %}
-{% block breadcrumbs %}
-
-{% endblock %}
-{% block content %}
-
-
{% translate 'Submit a new proposal for this project' %}
-
- {% if form.errors %}
-
- {% translate 'An error occurred while evaluating your data. Please check the data you entered again.' %}
-
- {% endif %}
-
- {% include "meinberlin_budgeting/includes/proposal_form.html" with proposal=proposal cancel=module.get_detail_url %}
-
-{% endblock %}
+{% extends "base.html" %}
+{% load i18n %}
+
+{% block title %}{% translate 'Create a new proposal' %} - {{ block.super }}{% endblock title %}
+{% block breadcrumbs %}
+
+{% endblock breadcrumbs %}
+{% block content %}
+
+
{% translate 'Submit a new proposal for this project' %}
+
+ {% if form.errors %}
+ {% include 'meinberlin_contrib/components/alert.html' with alert_message='Error during validation. Please check your entries.' alert_type='danger' %}
+ {% endif %}
+
+ {% include "meinberlin_budgeting/includes/proposal_form.html" with proposal=proposal cancel=module.get_detail_url %}
+
+{% endblock content %}
diff --git a/meinberlin/apps/contrib/templates/meinberlin_contrib/components/alert.html b/meinberlin/apps/contrib/templates/meinberlin_contrib/components/alert.html
new file mode 100644
index 0000000000..d60f92c1e7
--- /dev/null
+++ b/meinberlin/apps/contrib/templates/meinberlin_contrib/components/alert.html
@@ -0,0 +1,22 @@
+{% load i18n %}
+
+
+
+
+ {% if alert_headline %}
+
+ {% translate alert_headline %}
+
+ {% endif %}
+
+ {% translate alert_message %}
+
+
+
+
+
diff --git a/meinberlin/apps/ideas/templates/meinberlin_ideas/idea_create_form.html b/meinberlin/apps/ideas/templates/meinberlin_ideas/idea_create_form.html
index f723f39a34..344835bbc9 100644
--- a/meinberlin/apps/ideas/templates/meinberlin_ideas/idea_create_form.html
+++ b/meinberlin/apps/ideas/templates/meinberlin_ideas/idea_create_form.html
@@ -1,40 +1,40 @@
-{% extends "base.html" %}
-{% load i18n meinberlin_project_tags %}
-
-{% block title %}{% translate 'Create a new proposal' %} — {{ block.super }}{% endblock %}
-
-{% block breadcrumbs %}
-
-{% endblock %}
-
-{% block content %}
-
-
{% translate 'Submit a new idea for this project' %}
-
- {% if form.errors %}
-
{% translate 'An error occurred while evaluating your data. Please check the data you entered again.' %}
- {% endif %}
-
-
-
{{ module.name }}
- {% if module.description %}
-
{{ module.description }}
- {% else %}
-
{{ project.description }}
- {% endif %}
-
- {% include "meinberlin_ideas/includes/idea_form.html" with idea=idea cancel=module.get_detail_url %}
-
-{% endblock %}
+{% extends "base.html" %}
+{% load i18n meinberlin_project_tags %}
+
+{% block title %}{% translate 'Create a new proposal' %} - {{ block.super }}{% endblock title %}
+
+{% block breadcrumbs %}
+
+{% endblock breadcrumbs %}
+
+{% block content %}
+
+
{% translate 'Submit a new idea for this project' %}
+
+ {% if form.errors %}
+ {% include 'meinberlin_contrib/components/alert.html' with alert_message='Error during validation. Please check your entries.' alert_type='danger' %}
+ {% endif %}
+
+
+
{{ module.name }}
+ {% if module.description %}
+
{{ module.description }}
+ {% else %}
+
{{ project.description }}
+ {% endif %}
+
+ {% include "meinberlin_ideas/includes/idea_form.html" with idea=idea cancel=module.get_detail_url %}
+
+{% endblock content %}
diff --git a/meinberlin/apps/ideas/templates/meinberlin_ideas/idea_update_form.html b/meinberlin/apps/ideas/templates/meinberlin_ideas/idea_update_form.html
index a2d3e149f6..318296362c 100644
--- a/meinberlin/apps/ideas/templates/meinberlin_ideas/idea_update_form.html
+++ b/meinberlin/apps/ideas/templates/meinberlin_ideas/idea_update_form.html
@@ -1,33 +1,33 @@
-{% extends "base.html" %}
-{% load i18n %}
-
-{% block title %}{% blocktranslate with title=object.name %}Edit {{ title }}{% endblocktranslate %} — {{ block.super }}{% endblock %}
-
-{% block breadcrumbs %}
-
-{% endblock %}
-
-{% block content %}
-
-
{% translate 'Edit idea' %}
-
- {% if form.errors %}
-
{% translate 'An error occurred while evaluating your data. Please check the data you entered again.' %}
- {% endif %}
-
- {% include "meinberlin_ideas/includes/idea_form.html" with idea=idea cancel=object.get_absolute_url %}
-
-{% endblock %}
+{% extends "base.html" %}
+{% load i18n %}
+
+{% block title %}{% blocktranslate with title=object.name %}Edit {{ title }}{% endblocktranslate %} - {{ block.super }}{% endblock title %}
+
+{% block breadcrumbs %}
+
+{% endblock breadcrumbs %}
+
+{% block content %}
+
+
{% translate 'Edit idea' %}
+
+ {% if form.errors %}
+ {% include 'meinberlin_contrib/components/alert.html' with alert_message='Error during validation. Please check your entries.' alert_type='danger' %}
+ {% endif %}
+
+ {% include "meinberlin_ideas/includes/idea_form.html" with idea=idea cancel=object.get_absolute_url %}
+
+{% endblock content %}
diff --git a/meinberlin/apps/kiezkasse/templates/meinberlin_kiezkasse/proposal_create_form.html b/meinberlin/apps/kiezkasse/templates/meinberlin_kiezkasse/proposal_create_form.html
index a8d27a8d98..fd84058448 100644
--- a/meinberlin/apps/kiezkasse/templates/meinberlin_kiezkasse/proposal_create_form.html
+++ b/meinberlin/apps/kiezkasse/templates/meinberlin_kiezkasse/proposal_create_form.html
@@ -1,32 +1,29 @@
-{% extends "base.html" %}
-{% load i18n %}
-
-{% block title %}{% translate 'Create a new proposal' %}{% endblock %}
-{% block breadcrumbs %}
-
-{% endblock %}
-{% block content %}
-
-
{% translate 'Submit a new proposal for this project' %}
-
- {% if form.errors %}
-
- {% translate 'An error occurred while evaluating your data. Please check the data you entered again.' %}
-
- {% endif %}
-
- {% include "meinberlin_kiezkasse/includes/proposal_form.html" with proposal=proposal cancel=module.get_detail_url %}
-
-{% endblock %}
+{% extends "base.html" %}
+{% load i18n %}
+
+{% block title %}{% translate 'Create a new proposal' %}{% endblock title %}
+{% block breadcrumbs %}
+
+{% endblock breadcrumbs %}
+{% block content %}
+
+
{% translate 'Submit a new proposal for this project' %}
+ {% if form.errors %}
+ {% include 'meinberlin_contrib/components/alert.html' with alert_message='Error during validation. Please check your entries.' alert_type='danger' %}
+ {% endif %}
+
+ {% include "meinberlin_kiezkasse/includes/proposal_form.html" with proposal=proposal cancel=module.get_detail_url %}
+
+{% endblock content %}
diff --git a/meinberlin/apps/kiezkasse/templates/meinberlin_kiezkasse/proposal_update_form.html b/meinberlin/apps/kiezkasse/templates/meinberlin_kiezkasse/proposal_update_form.html
index c912ce79d4..24377597f1 100644
--- a/meinberlin/apps/kiezkasse/templates/meinberlin_kiezkasse/proposal_update_form.html
+++ b/meinberlin/apps/kiezkasse/templates/meinberlin_kiezkasse/proposal_update_form.html
@@ -1,35 +1,33 @@
-{% extends "base.html" %}
-{% load i18n %}
-
-{% block title %}{% blocktranslate with title=object.name %}Edit {{ title }}{% endblocktranslate %} — {{ block.super }}{% endblock %}
-
-{% block breadcrumbs %}
-
-{% endblock %}
-
-{% block content %}
-
-
{% translate 'Edit proposal' %}
-
- {% if form.errors %}
-
- {% translate 'An error occurred while evaluating your data. Please check the data you entered again.' %}
-
- {% endif %}
-
- {% include "meinberlin_kiezkasse/includes/proposal_form.html" with proposal=proposal cancel=object.get_absolute_url %}
-
-{% endblock %}
+{% extends "base.html" %}
+{% load i18n %}
+
+{% block title %}{% blocktranslate with title=object.name %}Edit {{ title }}{% endblocktranslate %} - {{ block.super }}{% endblock title %}
+
+{% block breadcrumbs %}
+
+{% endblock breadcrumbs %}
+
+{% block content %}
+
+
{% translate 'Edit proposal' %}
+
+ {% if form.errors %}
+ {% include 'meinberlin_contrib/components/alert.html' with alert_message='Error during validation. Please check your entries.' alert_type='danger' %}
+ {% endif %}
+
+ {% include "meinberlin_kiezkasse/includes/proposal_form.html" with proposal=proposal cancel=object.get_absolute_url %}
+
+{% endblock content %}
diff --git a/meinberlin/apps/mapideas/templates/meinberlin_mapideas/mapidea_create_form.html b/meinberlin/apps/mapideas/templates/meinberlin_mapideas/mapidea_create_form.html
index aab4ba6d38..b9cddde0b3 100644
--- a/meinberlin/apps/mapideas/templates/meinberlin_mapideas/mapidea_create_form.html
+++ b/meinberlin/apps/mapideas/templates/meinberlin_mapideas/mapidea_create_form.html
@@ -1,41 +1,39 @@
-{% extends "base.html" %}
-{% load i18n meinberlin_project_tags %}
-
-{% block title %}{% translate 'Create a new proposal' %} — {{ block.super }}{% endblock %}
-{% block breadcrumbs %}
-
-{% endblock %}
-{% block content %}
-
-
{% translate 'Submit a new idea for this project' %}
-
- {% if form.errors %}
-
- {% translate 'An error occurred while evaluating your data. Please check the data you entered again.' %}
-
- {% endif %}
-
-
-
{{ module.name }}
- {% if module.description %}
-
{{ module.description }}
- {% else %}
-
{{ project.description }}
- {% endif %}
-
-
- {% include "meinberlin_mapideas/includes/mapidea_form.html" with cancel=module.get_detail_url %}
-
-{% endblock %}
+{% extends "base.html" %}
+{% load i18n meinberlin_project_tags %}
+
+{% block title %}{% translate 'Create a new proposal' %} - {{ block.super }}{% endblock title %}
+{% block breadcrumbs %}
+
+{% endblock breadcrumbs %}
+{% block content %}
+
+
{% translate 'Submit a new idea for this project' %}
+
+ {% if form.errors %}
+ {% include 'meinberlin_contrib/components/alert.html' with alert_message='Error during validation. Please check your entries.' alert_type='danger' %}
+ {% endif %}
+
+
+
{{ module.name }}
+ {% if module.description %}
+
{{ module.description }}
+ {% else %}
+
{{ project.description }}
+ {% endif %}
+
+
+ {% include "meinberlin_mapideas/includes/mapidea_form.html" with cancel=module.get_detail_url %}
+
+{% endblock content %}
diff --git a/meinberlin/apps/mapideas/templates/meinberlin_mapideas/mapidea_update_form.html b/meinberlin/apps/mapideas/templates/meinberlin_mapideas/mapidea_update_form.html
index e0444ca8fe..80da7e925e 100644
--- a/meinberlin/apps/mapideas/templates/meinberlin_mapideas/mapidea_update_form.html
+++ b/meinberlin/apps/mapideas/templates/meinberlin_mapideas/mapidea_update_form.html
@@ -1,35 +1,33 @@
-{% extends "base.html" %}
-{% load i18n %}
-
-{% block title %}{% blocktranslate with title=object.name %}Edit {{ title }}{% endblocktranslate %} — {{ block.super }}{% endblock %}
-
-{% block breadcrumbs %}
-
-{% endblock %}
-
-{% block content %}
-
-
{% translate 'Edit idea' %}
-
- {% if form.errors %}
-
- {% translate 'An error occurred while evaluating your data. Please check the data you entered again.' %}
-
- {% endif %}
-
- {% include "meinberlin_mapideas/includes/mapidea_form.html" with cancel=object.get_absolute_url %}
-
-{% endblock %}
+{% extends "base.html" %}
+{% load i18n %}
+
+{% block title %}{% blocktranslate with title=object.name %}Edit {{ title }}{% endblocktranslate %} - {{ block.super }}{% endblock title %}
+
+{% block breadcrumbs %}
+
+{% endblock breadcrumbs %}
+
+{% block content %}
+
+
{% translate 'Edit idea' %}
+
+ {% if form.errors %}
+ {% include 'meinberlin_contrib/components/alert.html' with alert_message='Error during validation. Please check your entries.' alert_type='danger' %}
+ {% endif %}
+
+ {% include "meinberlin_mapideas/includes/mapidea_form.html" with cancel=object.get_absolute_url %}
+
+{% endblock content %}
diff --git a/meinberlin/apps/maptopicprio/templates/meinberlin_maptopicprio/maptopic_create_form.html b/meinberlin/apps/maptopicprio/templates/meinberlin_maptopicprio/maptopic_create_form.html
index a54f7af747..fcd0c5eba6 100644
--- a/meinberlin/apps/maptopicprio/templates/meinberlin_maptopicprio/maptopic_create_form.html
+++ b/meinberlin/apps/maptopicprio/templates/meinberlin_maptopicprio/maptopic_create_form.html
@@ -1,19 +1,19 @@
-{% extends "a4dashboard/base_dashboard_project.html" %}
-{% load i18n %}
-
-{% block title %}{% translate 'Add a new place' %} — {{ block.super }}{% endblock %}
-
-{% block dashboard_project_content %}
-
-
{% translate 'Add a new place' %}
-
- {% if form.errors %}
-
- {% translate 'An error occurred while evaluating your data. Please check the data you entered again.' %}
-
- {% endif %}
-
- {% url 'a4dashboard:maptopic-list' module_slug=module.slug as cancel %}
- {% include "meinberlin_maptopicprio/includes/maptopic_form.html" with cancel=cancel %}
-
-{% endblock %}
+{% extends "a4dashboard/base_dashboard_project.html" %}
+{% load i18n %}
+
+{% block title %}{% translate 'Add a new place' %} - {{ block.super }}{% endblock title %}
+
+{% block dashboard_project_content %}
+
+
{% translate 'Add a new place' %}
+
+ {% if form.errors %}
+
+ {% translate 'An error occurred while evaluating your data. Please check the data you entered again.' %}
+
+ {% endif %}
+
+ {% url 'a4dashboard:maptopic-list' module_slug=module.slug as cancel %}
+ {% include "meinberlin_maptopicprio/includes/maptopic_form.html" with cancel=cancel %}
+
+{% endblock dashboard_project_content %}
diff --git a/meinberlin/apps/projects/templates/meinberlin_projects/project_bplan_detail.html b/meinberlin/apps/projects/templates/meinberlin_projects/project_bplan_detail.html
index 523116cb40..da0dd0b162 100644
--- a/meinberlin/apps/projects/templates/meinberlin_projects/project_bplan_detail.html
+++ b/meinberlin/apps/projects/templates/meinberlin_projects/project_bplan_detail.html
@@ -1,31 +1,31 @@
-{% extends "meinberlin_projects/project_detail.html" %}
-{% load i18n rules react_follows thumbnail wagtailcore_tags meinberlin_project_tags offlineevent_tags contrib_tags ckeditor_tags %}
-
-{% block title %}{{project.name}} — {{ block.super }}{% endblock %}{
-
-{% block breadcrumbs %}
-
-{% endblock %}
-
-{% block content %}
-
-
- {# As bplan projects don't set the information and the result field, the default project detail, which is shown prior to the first phase, looks bad. #}
- {# This replaces the default project detail by a simple notice that the participation has not started yet. #}
-
-
{% translate 'Participation is not possible at the moment.' %}
-
- {% html_date project.modules.first.future_phases.first.start_date 'DATE_FORMAT' as start_date %}
- {% blocktranslate with date=start_date %}It starts on {{ date }}.{% endblocktrans %}
-
-
-
-{% endblock %}
+{% extends "meinberlin_projects/project_detail.html" %}
+{% load i18n rules react_follows thumbnail wagtailcore_tags meinberlin_project_tags offlineevent_tags contrib_tags ckeditor_tags %}
+
+{% block title %}{{ project.name }} — {{ block.super }}{% endblock title %}
+
+{% block breadcrumbs %}
+
+{% endblock breadcrumbs %}
+
+{% block content %}
+
+
+ {# As bplan projects don't set the information and the result field, the default project detail, which is shown prior to the first phase, looks bad. #}
+ {# This replaces the default project detail by a simple notice that the participation has not started yet. #}
+
+
{% translate 'Participation is not possible at the moment.' %}
+
+ {% html_date project.modules.first.future_phases.first.start_date 'DATE_FORMAT' as start_date %}
+ {% blocktranslate with date=start_date %}It starts on {{ date }}.{% endblocktrans %}
+
+
+
+{% endblock content %}
diff --git a/meinberlin/apps/projects/templates/meinberlin_projects/project_detail.html b/meinberlin/apps/projects/templates/meinberlin_projects/project_detail.html
index 084d1bd7f3..ea4147789b 100644
--- a/meinberlin/apps/projects/templates/meinberlin_projects/project_detail.html
+++ b/meinberlin/apps/projects/templates/meinberlin_projects/project_detail.html
@@ -12,13 +12,7 @@
{{ block.super }}
{% if project.is_draft %}
-
+ {% include 'meinberlin_contrib/components/alert.html' with alert_message='This project has not yet been published.' alert_type='info' %}
{% endif %}
{% endblock extra_messages %}
diff --git a/meinberlin/apps/topicprio/templates/meinberlin_topicprio/topic_create_form.html b/meinberlin/apps/topicprio/templates/meinberlin_topicprio/topic_create_form.html
index 58f53637d9..b3140ab2d0 100644
--- a/meinberlin/apps/topicprio/templates/meinberlin_topicprio/topic_create_form.html
+++ b/meinberlin/apps/topicprio/templates/meinberlin_topicprio/topic_create_form.html
@@ -1,19 +1,18 @@
-{% extends "a4dashboard/base_dashboard_project.html" %}
-{% load i18n %}
-
-{% block title %}{% translate 'Add a new topic' %} — {{ block.super }}{% endblock %}
-
-{% block dashboard_project_content %}
-
-
{% translate 'Add a new topic'%}
-
- {% if form.errors %}
-
- {% translate 'An error occurred while evaluating your data. Please check the data you entered again.' %}
-
- {% endif %}
-
- {% url 'a4dashboard:topic-list' module_slug=module.slug as cancel %}
- {% include "meinberlin_topicprio/includes/topic_form.html" with cancel=cancel %}
-
-{% endblock %}
+{% extends "a4dashboard/base_dashboard_project.html" %}
+{% load i18n %}
+
+{% block title %}{% translate 'Add a new topic' %} - {{ block.super }}{% endblock title %}
+
+{% block dashboard_project_content %}
+
+
+
{% translate 'Add a new topic' %}
+
+ {% if form.errors %}
+ {% include 'meinberlin_contrib/components/alert.html' with alert_message='Error during validation. Please check your entries.' alert_type='danger' %}
+ {% endif %}
+
+ {% url 'a4dashboard:topic-list' module_slug=module.slug as cancel %}
+ {% include "meinberlin_topicprio/includes/topic_form.html" with cancel=cancel %}
+
+{% endblock dashboard_project_content %}
diff --git a/meinberlin/apps/topicprio/templates/meinberlin_topicprio/topic_update_form.html b/meinberlin/apps/topicprio/templates/meinberlin_topicprio/topic_update_form.html
index 43a9f2cdbf..fa5a93dd70 100644
--- a/meinberlin/apps/topicprio/templates/meinberlin_topicprio/topic_update_form.html
+++ b/meinberlin/apps/topicprio/templates/meinberlin_topicprio/topic_update_form.html
@@ -1,19 +1,17 @@
-{% extends "a4dashboard/base_dashboard_project.html" %}
-{% load i18n %}
-
-{% block title %}{% blocktranslate with title=object.name %}Edit {{ title }}{% endblocktranslate %} — {{ block.super }}{% endblock %}
-
-{% block dashboard_project_content %}
-
-
{% translate 'Edit topic' %}
-
- {% if form.errors %}
-
- {% translate 'An error occurred while evaluating your data. Please check the data you entered again.' %}
-
- {% endif %}
-
- {% url 'a4dashboard:topic-list' module_slug=module.slug as cancel %}
- {% include "meinberlin_topicprio/includes/topic_form.html" with cancel=cancel %}
-
-{% endblock %}
+{% extends "a4dashboard/base_dashboard_project.html" %}
+{% load i18n %}
+
+{% block title %}{% blocktranslate with title=object.name %}Edit {{ title }}{% endblocktranslate %} - {{ block.super }}{% endblock title %}
+
+{% block dashboard_project_content %}
+
+
{% translate 'Edit topic' %}
+
+ {% if form.errors %}
+ {% include 'meinberlin_contrib/components/alert.html' with alert_message='Error during validation. Please check your entries.' alert_type='danger' %}
+ {% endif %}
+
+ {% url 'a4dashboard:topic-list' module_slug=module.slug as cancel %}
+ {% include "meinberlin_topicprio/includes/topic_form.html" with cancel=cancel %}
+
+{% endblock dashboard_project_content %}
diff --git a/meinberlin/assets/scss/components/_alert.scss b/meinberlin/assets/scss/components_dashboard/_alert.scss
similarity index 100%
rename from meinberlin/assets/scss/components/_alert.scss
rename to meinberlin/assets/scss/components_dashboard/_alert.scss
diff --git a/meinberlin/assets/scss/components_user_facing/_alert.scss b/meinberlin/assets/scss/components_user_facing/_alert.scss
index 5599371526..c3c89f2dc1 100644
--- a/meinberlin/assets/scss/components_user_facing/_alert.scss
+++ b/meinberlin/assets/scss/components_user_facing/_alert.scss
@@ -1,63 +1,60 @@
-@use "sass:color";
-
-$messages-margin-bottom: 25px;
-
-.messages {
- margin: 0 0 $messages-margin-bottom;
- padding: 0;
-
- li {
- display: block;
- }
-
- + .messages {
- margin-top: -$messages-margin-bottom;
- }
-}
-
-.alert {
- margin: 0;
- padding: $padding * 1.2 0;
- background-color: $message-light-blue;
- color: $text-base;
- text-align: center;
-}
-
-.alert--success {
- background-color: $message-light-green;
- color: $text-base;
-}
-
-.alert--error,
-.alert--danger {
- background-color: $message-light-red;
- color: $text-error;
-}
-
-.alert--warning {
- background-color: $message-light-yellow;
- color: $text-base;
-}
-
-.alert__close {
- float: right;
- color: inherit;
-}
-
-.alert--small {
- padding: 0.5em;
-}
-
-// If this directly follows the dialog box (see header.scss), add 16px
-// additional padding to the default value (see above).
-.messages:first-child > :first-child {
- padding-top: calc(16px + #{$padding * 1.2});
-}
-
-// compensate for margin-bottom on messages
-.project-header,
-.hero-unit {
- .messages + & {
- margin-top: -$messages-margin-bottom;
- }
-}
+.alert {
+ margin: $padding 0;
+ background-color: $message-light-blue;
+}
+
+.a4-alert__container {
+ display: flex;
+ justify-content: space-between;
+}
+
+.a4-alert__content {
+ padding: $padding * 1.375 $padding * 1.125;
+}
+
+.alert__headline {
+ margin: 0;
+ padding: 0;
+ color: inherit;
+}
+
+.alert__text {
+ margin: 0;
+ padding: 0;
+}
+
+.alert__close {
+ padding: $padding * 0.625;
+ height: fit-content;
+ color: inherit;
+}
+
+.alert--success {
+ background-color: $message-light-green;
+ color: $text-base;
+}
+
+.alert--error,
+.alert--danger {
+ background-color: $message-light-red;
+ color: $text-error;
+}
+
+.alert--warning {
+ background-color: $message-light-yellow;
+ color: $text-base;
+}
+
+.alert--small {
+ padding: 0.5em;
+}
+
+.alert:first-child {
+ margin: 0;
+ margin-bottom: $padding;
+}
+
+.alert:last-child {
+ margin: 0;
+ margin-top: $padding;
+}
\ No newline at end of file
diff --git a/meinberlin/assets/scss/style_dashboard.scss b/meinberlin/assets/scss/style_dashboard.scss
index 8f128ea712..593f663915 100644
--- a/meinberlin/assets/scss/style_dashboard.scss
+++ b/meinberlin/assets/scss/style_dashboard.scss
@@ -27,7 +27,7 @@
@import "components/action";
// @import "components/accordion";
-@import "components/alert";
+@import "components_dashboard/alert";
@import "components/blocks";
@import "components_dashboard/breadcrumbs";
@import "components_dashboard/button";
diff --git a/meinberlin/templates/a4images/image_upload_widget.html b/meinberlin/templates/a4images/image_upload_widget.html
index 43b4d213c7..0bb8635050 100644
--- a/meinberlin/templates/a4images/image_upload_widget.html
+++ b/meinberlin/templates/a4images/image_upload_widget.html
@@ -1,33 +1,35 @@
-{% load i18n %}
-
+{% load i18n %}
+
diff --git a/meinberlin/templates/a4modules/module_detail.html b/meinberlin/templates/a4modules/module_detail.html
index 46cee12b75..b0afb32b96 100644
--- a/meinberlin/templates/a4modules/module_detail.html
+++ b/meinberlin/templates/a4modules/module_detail.html
@@ -17,13 +17,7 @@
{{ block.super }}
{% if project.is_draft %}
-
+ {% include 'meinberlin_contrib/components/alert.html' with alert_message='This project has not yet been published.' alert_type='info' %}
{% endif %}
{% endblock extra_messages %}
diff --git a/meinberlin/templates/base.html b/meinberlin/templates/base.html
index f734a01947..373e0bc165 100644
--- a/meinberlin/templates/base.html
+++ b/meinberlin/templates/base.html
@@ -1,89 +1,84 @@
-
-{% load i18n userindicator static contrib_tags wagtailuserbar %}
-{% get_current_language as LANGUAGE_CODE %}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {% block extra_css %}
- {# Override this in templates to add extra stylesheets #}
-
- {% endblock extra_css %}
-
-
-
-
- {% block title %}{% translate "meinBerlin" %}{% endblock title %}
-
- {% block header_meta %}{% endblock header_meta %}
-
- {% block extra_js %}
- {# Override this in templates to add extra javascript #}
-
- {% endblock extra_js %}
-
- {% tracking_enabled as tracking %}
- {% if tracking %} {% tracking_code %} {% endif %}
-
-
-
- {% block header %}
- {% include "header.html" %}
- {% endblock %}
-
-
-
-
- {% if messages %}
-
- {% for message in messages %}
-
-
- {{ message }}
-
-
- {% endfor %}
-
- {% endif %}
-
- {% block extra_messages %}{% endblock extra_messages %}
-
- {% block super_content %}
- {% block content %}{% endblock content %}
- {% endblock super_content %}
-
- {% wagtailuserbar %}
-
-
- {% block footer %}
- {% include "footer.html" %}
- {% endblock footer %}
-
- {% block extra_js_deferred %}
- {# Override this in templates to add extra javascript #}
- {% endblock extra_js_deferred %}
-
-
+
+{% load i18n userindicator static contrib_tags wagtailuserbar %}
+{% get_current_language as LANGUAGE_CODE %}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {% block extra_css %}
+ {# Override this in templates to add extra stylesheets #}
+
+ {% endblock extra_css %}
+
+
+
+
+ {% block title %}{% translate "meinBerlin" %}{% endblock title %}
+
+ {% block header_meta %}{% endblock header_meta %}
+
+ {% block extra_js %}
+ {# Override this in templates to add extra javascript #}
+
+ {% endblock extra_js %}
+
+ {% tracking_enabled as tracking %}
+ {% if tracking %} {% tracking_code %} {% endif %}
+
+
+
+ {% block header %}
+ {% include "header.html" %}
+ {% endblock header %}
+
+
+
+
+ {% if messages %}
+ {% for message in messages %}
+ {% include 'meinberlin_contrib/components/alert.html' with alert_message=message|stringformat:"s" alert_headline=message.level_headline alert_type=message.level_tag %}
+ {% endfor %}
+
+ {% endif %}
+
+ {% block extra_messages %}{% endblock extra_messages %}
+
+ {% block super_content %}
+ {% block content %}{% endblock content %}
+ {% endblock super_content %}
+
+ {% wagtailuserbar %}
+
+
+ {% block footer %}
+ {% include "footer.html" %}
+ {% endblock footer %}
+
+ {% block extra_js_deferred %}
+ {# Override this in templates to add extra javascript #}
+ {% endblock extra_js_deferred %}
+
+