diff --git a/src/Symfony/Bridge/Twig/Resources/views/Form/daisyui_5_layout.html.twig b/src/Symfony/Bridge/Twig/Resources/views/Form/daisyui_5_layout.html.twig
new file mode 100644
index 0000000000000..33b630adc1ea3
--- /dev/null
+++ b/src/Symfony/Bridge/Twig/Resources/views/Form/daisyui_5_layout.html.twig
@@ -0,0 +1,113 @@
+{% use 'form_div_layout.html.twig' %}
+
+{%- block form_row -%}
+ {%- set row_attr = row_attr|merge({ class: row_attr.class|default(row_class|default('flex flex-col mb-6')) }) -%}
+ {{- parent() -}}
+{%- endblock form_row -%}
+
+{%- block widget_attributes -%}
+ {%- set attr = attr|merge({ class: attr.class|default(widget_class|default('mt-1 w-full')) ~ (errors|length ? ' ' ~ widget_errors_class|default('input-error')) }) -%}
+ {{- parent() -}}
+{%- endblock widget_attributes -%}
+
+{%- block form_errors -%}
+ {%- if errors|length > 0 -%}
+
+ {%- for error in errors -%}
+ - {{ error.message }}
+ {%- endfor -%}
+
+ {%- endif -%}
+{%- endblock form_errors -%}
+
+{%- block form_help -%}
+ {%- set help_attr = help_attr|merge({class: (help_attr.class|default('mt-1 label'))|trim}) -%}
+ {{- parent() -}}
+{%- endblock form_help -%}
+
+{%- block form_label -%}
+ {%- set label_attr = label_attr|merge({ class: label_attr.class|default(label_class|default('label')) }) -%}
+ {{- parent() -}}
+{%- endblock form_label -%}
+
+{%- block button_widget -%}
+ {%- set attr = attr|merge({class: (attr.class|default('btn-neutral') ~ ' btn')|trim}) -%}
+ {{- parent() -}}
+{%- endblock button_widget %}
+
+{%- block submit_widget -%}
+ {%- set attr = attr|merge({class: (attr.class|default('btn-primary'))|trim}) -%}
+ {{- parent() -}}
+{%- endblock submit_widget %}
+
+{%- block choice_widget_expanded -%}
+ {%- set attr = attr|merge({ class: attr.class|default('mt-2') }) -%}
+
+ {%- for child in form %}
+
+ {% endfor -%}
+
+{%- endblock choice_widget_expanded -%}
+
+{%- block checkbox_row -%}
+ {%- set row_attr = row_attr|merge({ class: row_attr.class|default(row_class|default('mb-6')) }) -%}
+ {%- set widget_attr = {} -%}
+ {%- if help is not empty -%}
+ {%- set widget_attr = {attr: {'aria-describedby': id ~"_help"} } -%}
+ {%- endif -%}
+
+ {{- form_errors(form) -}}
+
+ {{- form_help(form) -}}
+
+{%- endblock checkbox_row -%}
+
+{%- block checkbox_widget -%}
+ {%- set widget_class = (widget_class|default('checkbox') ~ (errors|length ? ' checkbox-error')) -%}
+ {{- parent() -}}
+{%- endblock checkbox_widget -%}
+
+{% block radio_widget -%}
+{%- set widget_class = (widget_class|default('radio') ~ (errors|length ? ' radio-error')) -%}
+ {{- parent() -}}
+{%- endblock radio_widget %}
+
+{%- block choice_widget_collapsed -%}
+ {%- set attr = attr|merge({class: (attr.class|default('') ~ ' select mt-2')|trim}) -%}
+ {{- parent() -}}
+{%- endblock choice_widget_collapsed -%}
+
+{% block textarea_widget -%}
+ {% set attr = attr|merge({class: (attr.class|default('') ~ ' textarea mt-2')|trim}) %}
+ {{- parent() -}}
+{%- endblock textarea_widget %}
+
+{%- block range_widget -%}
+ {% set type = type|default('range') %}
+ {%- set widget_class = widget_class|default('range mt-2') -%}
+ {{- block('form_widget_simple') -}}
+{%- endblock range_widget %}
+
+{%- block file_widget -%}
+ {% set type = type|default('file') %}
+ {%- set widget_class = (widget_class|default('file-input mt-2') ~ (errors|length ? ' file-input-error')) -%}
+ {{- block('form_widget_simple') -}}
+{%- endblock file_widget %}
+
+{% block form_widget_simple -%}
+ {%- if type is not defined or type not in ['hidden', 'range', 'file'] %}
+ {%- set widget_class = ' input mt-2' %}
+ {%- set attr = attr|merge({class: (attr.class|default('') ~ widget_class)|trim}) -%}
+ {% endif -%}
+
+ {{- parent() -}}
+{%- endblock form_widget_simple %}
\ No newline at end of file