feat: improved UX
CI / test (push) Successful in 58s
CI / build (push) Successful in 28s

This commit is contained in:
2026-07-20 12:55:19 +02:00
parent 55186a0891
commit 1a77cd77fb
6 changed files with 183 additions and 155 deletions
+69 -65
View File
@@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: crochet\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-20 10:32+0000\n"
"POT-Creation-Date: 2026-07-20 10:46+0000\n"
"Language: en\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -57,13 +57,13 @@ msgid "Actualizado el %(date)s"
msgstr "Updated on %(date)s"
#: crochet/templates/crochet/account_home.html:44
#: crochet/templates/crochet/pattern.html:143
#: crochet/templates/crochet/pattern.html:189
#: crochet/templates/crochet/pattern.html:158
#: crochet/templates/crochet/pattern.html:204
msgid "Vista previa"
msgstr "Preview"
#: crochet/templates/crochet/account_home.html:48
#: crochet/templates/crochet/pattern.html:38
#: crochet/templates/crochet/pattern.html:50
msgid "Eliminar"
msgstr "Delete"
@@ -162,228 +162,232 @@ msgstr ""
"to edit it."
# crochet/templates/crochet/pattern.html
#: crochet/templates/crochet/pattern.html:30
#: crochet/templates/crochet/pattern.html:33
msgid "No se ha podido guardar. Inténtalo de nuevo."
msgstr "Couldn't save. Please try again."
#: crochet/templates/crochet/pattern.html:30
#: crochet/templates/crochet/pattern.html:33
msgid "Guardar"
msgstr "Save"
#: crochet/templates/crochet/pattern.html:33
#: crochet/templates/crochet/pattern.html:36
msgid "Ver patrón"
msgstr "View pattern"
#: crochet/templates/crochet/pattern.html:34
#: crochet/templates/crochet/pattern.html:37
msgid "Exportar a PDF"
msgstr "Export to PDF"
#: crochet/templates/crochet/pattern.html:45
#: crochet/templates/crochet/pattern.html:44
msgid "Más opciones"
msgstr "More options"
#: crochet/templates/crochet/pattern.html:60
msgid "Guardado"
msgstr "Saved"
#: crochet/templates/crochet/pattern.html:52
#: crochet/templates/crochet/pattern.html:67
msgid "Personalización de página"
msgstr "Page customization"
#: crochet/templates/crochet/pattern.html:56
#: crochet/templates/crochet/pattern.html:71
msgid "Título del patrón"
msgstr "Pattern title"
#: crochet/templates/crochet/pattern.html:57
#: crochet/templates/crochet/pattern.html:72
msgid "Título del patrón..."
msgstr "Pattern title..."
#: crochet/templates/crochet/pattern.html:60
#: crochet/templates/crochet/pattern.html:75
msgid "Autor"
msgstr "Author"
#: crochet/templates/crochet/pattern.html:61
#: crochet/templates/crochet/pattern.html:76
msgid "Autor..."
msgstr "Author..."
#: crochet/templates/crochet/pattern.html:66
#: crochet/templates/crochet/pattern.html:81
msgid "Imagen de portada"
msgstr "Cover image"
#: crochet/templates/crochet/pattern.html:69
#: crochet/templates/crochet/pattern.html:84
msgid "No se ha podido subir la imagen de portada. Inténtalo de nuevo."
msgstr "Couldn't upload the cover image. Please try again."
#: crochet/templates/crochet/pattern.html:83
#: crochet/templates/crochet/pattern.html:167
#: crochet/templates/crochet/pattern.html:98
#: crochet/templates/crochet/pattern.html:182
msgid "Color del texto"
msgstr "Text color"
#: crochet/templates/crochet/pattern.html:87
#: crochet/templates/crochet/pattern.html:102
msgid "Color de acento (títulos)"
msgstr "Accent color (headings)"
#: crochet/templates/crochet/pattern.html:91
#: crochet/templates/crochet/pattern.html:167
#: crochet/templates/crochet/pattern.html:106
#: crochet/templates/crochet/pattern.html:182
msgid "Color de fondo"
msgstr "Background color"
#: crochet/templates/crochet/pattern.html:95
#: crochet/templates/crochet/pattern.html:110
msgid "Tipografía"
msgstr "Font"
#: crochet/templates/crochet/pattern.html:101
#: crochet/templates/crochet/pattern.html:116
msgid "Monoespaciada"
msgstr "Monospace"
#: crochet/templates/crochet/pattern.html:105
#: crochet/templates/crochet/pattern.html:120
msgid "Tamaño de letra"
msgstr "Font size"
#: crochet/templates/crochet/pattern.html:107
#: crochet/templates/crochet/pattern.html:122
msgid "Pequeño"
msgstr "Small"
#: crochet/templates/crochet/pattern.html:108
#: crochet/templates/crochet/pattern.html:123
msgid "Normal"
msgstr "Normal"
#: crochet/templates/crochet/pattern.html:109
#: crochet/templates/crochet/pattern.html:124
msgid "Grande"
msgstr "Large"
#: crochet/templates/crochet/pattern.html:113
#: crochet/templates/crochet/pattern.html:128
msgid "Alineación del texto"
msgstr "Text alignment"
#: crochet/templates/crochet/pattern.html:115
#: crochet/templates/crochet/pattern.html:130
msgid "Izquierda"
msgstr "Left"
#: crochet/templates/crochet/pattern.html:116
#: crochet/templates/crochet/pattern.html:131
msgid "Centrado"
msgstr "Center"
#: crochet/templates/crochet/pattern.html:117
#: crochet/templates/crochet/pattern.html:132
msgid "Justificado"
msgstr "Justify"
#: crochet/templates/crochet/pattern.html:121
#: crochet/templates/crochet/pattern.html:136
msgid "Tamaño de página"
msgstr "Page size"
#: crochet/templates/crochet/pattern.html:126
#: crochet/templates/crochet/pattern.html:141
msgid "Carta (Letter)"
msgstr "Letter"
#: crochet/templates/crochet/pattern.html:131
#: crochet/templates/crochet/pattern.html:146
msgid "Orientación"
msgstr "Orientation"
#: crochet/templates/crochet/pattern.html:133
#: crochet/templates/crochet/pattern.html:148
msgid "Vertical"
msgstr "Portrait"
#: crochet/templates/crochet/pattern.html:134
#: crochet/templates/crochet/pattern.html:149
msgid "Horizontal"
msgstr "Landscape"
#: crochet/templates/crochet/pattern.html:142
#: crochet/templates/crochet/pattern.html:150
#: crochet/templates/crochet/pattern.html:157
#: crochet/templates/crochet/pattern.html:165
msgid "Secciones"
msgstr "Sections"
#: crochet/templates/crochet/pattern.html:152
#: crochet/templates/crochet/pattern.html:167
msgid "Colapsar todo"
msgstr "Collapse all"
#: crochet/templates/crochet/pattern.html:152
#: crochet/templates/crochet/pattern.html:167
msgid "Expandir todo"
msgstr "Expand all"
#: crochet/templates/crochet/pattern.html:157
#: crochet/templates/crochet/pattern.html:172
msgid "Añadir sección"
msgstr "Add section"
#: crochet/templates/crochet/pattern.html:160
#: crochet/templates/crochet/pattern.html:175
msgid "Título"
msgstr "Title"
#: crochet/templates/crochet/pattern.html:160
#: crochet/templates/crochet/pattern.html:175
msgid "Título..."
msgstr "Title..."
#: crochet/templates/crochet/pattern.html:162
#: crochet/templates/crochet/pattern.html:177
msgid "Subtítulo"
msgstr "Subtitle"
#: crochet/templates/crochet/pattern.html:162
#: crochet/templates/crochet/pattern.html:177
msgid "Subtítulo..."
msgstr "Subtitle..."
#: crochet/templates/crochet/pattern.html:164
#: crochet/templates/crochet/pattern.html:179
msgid "Texto"
msgstr "Text"
#: crochet/templates/crochet/pattern.html:164
#: crochet/templates/crochet/pattern.html:179
msgid "Escribe aquí..."
msgstr "Write here..."
#: crochet/templates/crochet/pattern.html:166
#: crochet/templates/crochet/pattern.html:167
#: crochet/templates/crochet/pattern.html:181
#: crochet/templates/crochet/pattern.html:182
msgid "Nota"
msgstr "Note"
#: crochet/templates/crochet/pattern.html:166
#: crochet/templates/crochet/pattern.html:181
msgid "Escribe una nota o consejo..."
msgstr "Write a note or tip..."
#: crochet/templates/crochet/pattern.html:169
#: crochet/templates/crochet/pattern.html:184
msgid "Materiales"
msgstr "Materials"
#: crochet/templates/crochet/pattern.html:169
#: crochet/templates/crochet/pattern.html:184
msgid "Añadir material..."
msgstr "Add material..."
#: crochet/templates/crochet/pattern.html:169
#: crochet/templates/crochet/pattern.html:184
msgid "Añadir línea"
msgstr "Add line"
#: crochet/templates/crochet/pattern.html:171
#: crochet/templates/crochet/pattern.html:173
#: crochet/templates/crochet/pattern.html:186
#: crochet/templates/crochet/pattern.html:188
msgid "Imagen"
msgstr "Image"
#: crochet/templates/crochet/pattern.html:173
#: crochet/templates/crochet/pattern.html:188
msgid "No se ha podido subir la imagen. Inténtalo de nuevo."
msgstr "Couldn't upload the image. Please try again."
#: crochet/templates/crochet/pattern.html:175
#: crochet/templates/crochet/pattern.html:190
msgid "Patrón"
msgstr "Pattern"
#: crochet/templates/crochet/pattern.html:175
#: crochet/templates/crochet/pattern.html:190
msgid "Elementos"
msgstr "Elements"
#: crochet/templates/crochet/pattern.html:177
#: crochet/templates/crochet/pattern.html:192
msgid "Grupo"
msgstr "Group"
#: crochet/templates/crochet/pattern.html:181
#: crochet/templates/crochet/pattern.html:196
msgid "Arrastrar para reordenar"
msgstr "Drag to reorder"
#: crochet/templates/crochet/pattern.html:182
#: crochet/templates/crochet/pattern.html:197
msgid "Colapsar / expandir"
msgstr "Collapse / expand"
#: crochet/templates/crochet/pattern.html:183
#: crochet/templates/crochet/pattern.html:198
msgid "Duplicar sección"
msgstr "Duplicate section"
#: crochet/templates/crochet/pattern.html:184
#: crochet/templates/crochet/pattern.html:199
msgid "Eliminar sección"
msgstr "Delete section"
#: crochet/templates/crochet/pattern.html:185
#: crochet/templates/crochet/pattern.html:200
msgid ""
"¿Seguro que quieres eliminar este grupo? Se eliminarán también todas las "
"secciones que contiene."
@@ -391,7 +395,7 @@ msgstr ""
"Are you sure you want to delete this group? All sections inside it will also "
"be deleted."
#: crochet/templates/crochet/pattern.html:191
#: crochet/templates/crochet/pattern.html:206
msgid "Añade una sección para ver aquí el resultado."
msgstr "Add a section to see the result here."
+78 -74
View File
@@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: crochet\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-20 10:32+0000\n"
"POT-Creation-Date: 2026-07-20 10:46+0000\n"
"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -57,13 +57,13 @@ msgid "Actualizado el %(date)s"
msgstr ""
#: crochet/templates/crochet/account_home.html:44
#: crochet/templates/crochet/pattern.html:143
#: crochet/templates/crochet/pattern.html:189
#: crochet/templates/crochet/pattern.html:158
#: crochet/templates/crochet/pattern.html:204
msgid "Vista previa"
msgstr ""
#: crochet/templates/crochet/account_home.html:48
#: crochet/templates/crochet/pattern.html:38
#: crochet/templates/crochet/pattern.html:50
msgid "Eliminar"
msgstr ""
@@ -153,234 +153,238 @@ msgid ""
"podrá editarlo."
msgstr ""
#: crochet/templates/crochet/pattern.html:30
#: crochet/templates/crochet/pattern.html:33
msgid "No se ha podido guardar. Inténtalo de nuevo."
msgstr ""
#: crochet/templates/crochet/pattern.html:30
#: crochet/templates/crochet/pattern.html:33
msgid "Guardar"
msgstr ""
#: crochet/templates/crochet/pattern.html:33
#: crochet/templates/crochet/pattern.html:36
msgid "Ver patrón"
msgstr ""
#: crochet/templates/crochet/pattern.html:34
#: crochet/templates/crochet/pattern.html:37
msgid "Exportar a PDF"
msgstr ""
#: crochet/templates/crochet/pattern.html:45
msgid "Guardado"
msgstr ""
#: crochet/templates/crochet/pattern.html:52
msgid "Personalización de página"
msgstr ""
#: crochet/templates/crochet/pattern.html:56
msgid "Título del patrón"
msgstr ""
#: crochet/templates/crochet/pattern.html:57
msgid "Título del patrón..."
#: crochet/templates/crochet/pattern.html:44
msgid "Más opciones"
msgstr ""
#: crochet/templates/crochet/pattern.html:60
msgid "Guardado"
msgstr ""
#: crochet/templates/crochet/pattern.html:67
msgid "Personalización de página"
msgstr ""
#: crochet/templates/crochet/pattern.html:71
msgid "Título del patrón"
msgstr ""
#: crochet/templates/crochet/pattern.html:72
msgid "Título del patrón..."
msgstr ""
#: crochet/templates/crochet/pattern.html:75
msgid "Autor"
msgstr ""
#: crochet/templates/crochet/pattern.html:61
#: crochet/templates/crochet/pattern.html:76
msgid "Autor..."
msgstr ""
#: crochet/templates/crochet/pattern.html:66
#: crochet/templates/crochet/pattern.html:81
msgid "Imagen de portada"
msgstr ""
#: crochet/templates/crochet/pattern.html:69
#: crochet/templates/crochet/pattern.html:84
msgid "No se ha podido subir la imagen de portada. Inténtalo de nuevo."
msgstr ""
#: crochet/templates/crochet/pattern.html:83
#: crochet/templates/crochet/pattern.html:167
#: crochet/templates/crochet/pattern.html:98
#: crochet/templates/crochet/pattern.html:182
msgid "Color del texto"
msgstr ""
#: crochet/templates/crochet/pattern.html:87
#: crochet/templates/crochet/pattern.html:102
msgid "Color de acento (títulos)"
msgstr ""
#: crochet/templates/crochet/pattern.html:91
#: crochet/templates/crochet/pattern.html:167
#: crochet/templates/crochet/pattern.html:106
#: crochet/templates/crochet/pattern.html:182
msgid "Color de fondo"
msgstr ""
#: crochet/templates/crochet/pattern.html:95
#: crochet/templates/crochet/pattern.html:110
msgid "Tipografía"
msgstr ""
#: crochet/templates/crochet/pattern.html:101
#: crochet/templates/crochet/pattern.html:116
msgid "Monoespaciada"
msgstr ""
#: crochet/templates/crochet/pattern.html:105
#: crochet/templates/crochet/pattern.html:120
msgid "Tamaño de letra"
msgstr ""
#: crochet/templates/crochet/pattern.html:107
#: crochet/templates/crochet/pattern.html:122
msgid "Pequeño"
msgstr ""
#: crochet/templates/crochet/pattern.html:108
#: crochet/templates/crochet/pattern.html:123
msgid "Normal"
msgstr ""
#: crochet/templates/crochet/pattern.html:109
#: crochet/templates/crochet/pattern.html:124
msgid "Grande"
msgstr ""
#: crochet/templates/crochet/pattern.html:113
#: crochet/templates/crochet/pattern.html:128
msgid "Alineación del texto"
msgstr ""
#: crochet/templates/crochet/pattern.html:115
#: crochet/templates/crochet/pattern.html:130
msgid "Izquierda"
msgstr ""
#: crochet/templates/crochet/pattern.html:116
#: crochet/templates/crochet/pattern.html:131
msgid "Centrado"
msgstr ""
#: crochet/templates/crochet/pattern.html:117
#: crochet/templates/crochet/pattern.html:132
msgid "Justificado"
msgstr ""
#: crochet/templates/crochet/pattern.html:121
#: crochet/templates/crochet/pattern.html:136
msgid "Tamaño de página"
msgstr ""
#: crochet/templates/crochet/pattern.html:126
#: crochet/templates/crochet/pattern.html:141
msgid "Carta (Letter)"
msgstr ""
#: crochet/templates/crochet/pattern.html:131
#: crochet/templates/crochet/pattern.html:146
msgid "Orientación"
msgstr ""
#: crochet/templates/crochet/pattern.html:133
#: crochet/templates/crochet/pattern.html:148
msgid "Vertical"
msgstr ""
#: crochet/templates/crochet/pattern.html:134
#: crochet/templates/crochet/pattern.html:149
msgid "Horizontal"
msgstr ""
#: crochet/templates/crochet/pattern.html:142
#: crochet/templates/crochet/pattern.html:150
#: crochet/templates/crochet/pattern.html:157
#: crochet/templates/crochet/pattern.html:165
msgid "Secciones"
msgstr ""
#: crochet/templates/crochet/pattern.html:152
#: crochet/templates/crochet/pattern.html:167
msgid "Colapsar todo"
msgstr ""
#: crochet/templates/crochet/pattern.html:152
#: crochet/templates/crochet/pattern.html:167
msgid "Expandir todo"
msgstr ""
#: crochet/templates/crochet/pattern.html:157
#: crochet/templates/crochet/pattern.html:172
msgid "Añadir sección"
msgstr ""
#: crochet/templates/crochet/pattern.html:160
#: crochet/templates/crochet/pattern.html:175
msgid "Título"
msgstr ""
#: crochet/templates/crochet/pattern.html:160
#: crochet/templates/crochet/pattern.html:175
msgid "Título..."
msgstr ""
#: crochet/templates/crochet/pattern.html:162
#: crochet/templates/crochet/pattern.html:177
msgid "Subtítulo"
msgstr ""
#: crochet/templates/crochet/pattern.html:162
#: crochet/templates/crochet/pattern.html:177
msgid "Subtítulo..."
msgstr ""
#: crochet/templates/crochet/pattern.html:164
#: crochet/templates/crochet/pattern.html:179
msgid "Texto"
msgstr ""
#: crochet/templates/crochet/pattern.html:164
#: crochet/templates/crochet/pattern.html:179
msgid "Escribe aquí..."
msgstr ""
#: crochet/templates/crochet/pattern.html:166
#: crochet/templates/crochet/pattern.html:167
#: crochet/templates/crochet/pattern.html:181
#: crochet/templates/crochet/pattern.html:182
msgid "Nota"
msgstr ""
#: crochet/templates/crochet/pattern.html:166
#: crochet/templates/crochet/pattern.html:181
msgid "Escribe una nota o consejo..."
msgstr ""
#: crochet/templates/crochet/pattern.html:169
#: crochet/templates/crochet/pattern.html:184
msgid "Materiales"
msgstr ""
#: crochet/templates/crochet/pattern.html:169
#: crochet/templates/crochet/pattern.html:184
msgid "Añadir material..."
msgstr ""
#: crochet/templates/crochet/pattern.html:169
#: crochet/templates/crochet/pattern.html:184
msgid "Añadir línea"
msgstr ""
#: crochet/templates/crochet/pattern.html:171
#: crochet/templates/crochet/pattern.html:173
#: crochet/templates/crochet/pattern.html:186
#: crochet/templates/crochet/pattern.html:188
msgid "Imagen"
msgstr ""
#: crochet/templates/crochet/pattern.html:173
#: crochet/templates/crochet/pattern.html:188
msgid "No se ha podido subir la imagen. Inténtalo de nuevo."
msgstr ""
#: crochet/templates/crochet/pattern.html:175
#: crochet/templates/crochet/pattern.html:190
msgid "Patrón"
msgstr ""
#: crochet/templates/crochet/pattern.html:175
#: crochet/templates/crochet/pattern.html:190
msgid "Elementos"
msgstr ""
#: crochet/templates/crochet/pattern.html:177
#: crochet/templates/crochet/pattern.html:192
msgid "Grupo"
msgstr ""
#: crochet/templates/crochet/pattern.html:181
#: crochet/templates/crochet/pattern.html:196
msgid "Arrastrar para reordenar"
msgstr ""
#: crochet/templates/crochet/pattern.html:182
#: crochet/templates/crochet/pattern.html:197
msgid "Colapsar / expandir"
msgstr ""
#: crochet/templates/crochet/pattern.html:183
#: crochet/templates/crochet/pattern.html:198
msgid "Duplicar sección"
msgstr ""
#: crochet/templates/crochet/pattern.html:184
#: crochet/templates/crochet/pattern.html:199
msgid "Eliminar sección"
msgstr ""
#: crochet/templates/crochet/pattern.html:185
#: crochet/templates/crochet/pattern.html:200
msgid ""
"¿Seguro que quieres eliminar este grupo? Se eliminarán también todas las "
"secciones que contiene."
msgstr ""
#: crochet/templates/crochet/pattern.html:191
#: crochet/templates/crochet/pattern.html:206
msgid "Añade una sección para ver aquí el resultado."
msgstr ""
+3 -2
View File
@@ -89,10 +89,11 @@ body {
/* En pantallas pequeñas, "Secciones" y "Vista previa" se comportan como
pestañas: solo se muestra una a la vez (ver .tabs en pattern.html). A
partir del breakpoint md ambos paneles se muestran siempre, lado a lado.
partir del breakpoint lg (1024px, ver lg:flex-row/lg:w-1/2/lg:hidden en
pattern.html) ambos paneles se muestran siempre, lado a lado.
Se restringe a "screen" para que nunca afecte a la exportación a PDF
(@media print más abajo), sea cual sea el ancho de pantalla del usuario. */
@media screen and (max-width: 767px) {
@media screen and (max-width: 1023px) {
.panel-hidden-mobile {
display: none;
}
+1 -1
View File
@@ -11,7 +11,7 @@ import './storage.js';
import './cover-image.js';
// Mismo punto de corte que .panel-hidden-mobile (ver css/main.css).
const MOBILE_BREAKPOINT_QUERY = '(max-width: 767px)';
const MOBILE_BREAKPOINT_QUERY = '(max-width: 1023px)';
// El propio patrón (sections/pageSettings ya guardados) viaja embebido en la
// plantilla Django, ver {{ pattern_data|json_script:"pattern-data" }} en
+1 -1
View File
@@ -1,5 +1,5 @@
// Pestañas (solo en móvil, ver css/main.css): alternar entre el panel de
// "Secciones" y el de "Vista previa". A partir del breakpoint md la clase
// "Secciones" y el de "Vista previa". A partir del breakpoint lg la clase
// `panel-hidden-mobile` no tiene efecto y ambos paneles quedan visibles
// permanentemente, lado a lado. También la exportación a PDF, que se apoya
// en showTab() para asegurarse de que "Vista previa" esté visible antes de
+27 -8
View File
@@ -18,13 +18,21 @@
<main>
{% trans '¿Seguro que quieres eliminar este patrón? No podrás deshacerlo.' as delete_confirm_message %}
<header class="flex flex-wrap items-center justify-end gap-2 p-4 no-print">
<div class="flex gap-2 items-center">
<header class="flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2 p-4 no-print">
<!-- Idioma del contenido del patrón (qué versión de título/texto se
edita), no el de la interfaz: va aparte del resto de acciones,
no dentro de este grupo. -->
<section>
<h4>{% trans 'Idioma del patrón' %}</h4>
<select id="language-select" class="select select-sm select-bordered">
<option value="es" {% if lang == 'es' %}selected{% endif %}>Español</option>
<option value="en" {% if lang == 'en' %}selected{% endif %}>English</option>
</select>
</section>
<div class="flex flex-wrap items-center gap-2">
<button id="save-pattern" type="button" class="btn btn-sm btn-outline"
data-save-url="{% url 'crochet:pattern_save' pattern.uuid %}"
data-error-message="{% trans 'No se ha podido guardar. Inténtalo de nuevo.' %}">{% trans 'Guardar' %}</button>
@@ -32,11 +40,23 @@
<a href="{% url 'crochet:pattern_detail' pattern.uuid %}" target="_blank" rel="noopener"
class="btn btn-sm btn-outline">{% trans 'Ver patrón' %}</a>
<button id="export-pdf" type="button" class="btn btn-sm btn-primary">{% trans 'Exportar a PDF' %}</button>
<!-- Eliminar va detrás de un menú aparte, no como un botón más al
lado de guardar/exportar: al ser destructiva y poco frecuente,
mezclarla con el resto aumenta el riesgo de pulsarla sin
querer, sobre todo en móvil. -->
<div class="dropdown dropdown-end">
<button type="button" tabindex="0" class="btn btn-sm btn-outline btn-square" aria-label="{% trans 'Más opciones' %}"></button>
<ul tabindex="0" class="dropdown-content menu menu-sm bg-base-100 border border-base-300 rounded-box z-10 w-40 p-2 shadow">
<li>
<form method="post" action="{% url 'crochet:pattern_delete' pattern.uuid %}"
onsubmit="return confirm('{{ delete_confirm_message }}')">
{% csrf_token %}
<button type="submit" class="btn btn-sm btn-outline btn-error">{% trans 'Eliminar' %}</button>
<button type="submit" class="w-full text-left text-error">{% trans 'Eliminar' %}</button>
</form>
</li>
</ul>
</div>
</div>
</header>
@@ -138,14 +158,14 @@
</div>
</details>
<div class="tabs tabs-boxed w-fit mb-4 md:hidden no-print">
<div class="tabs tabs-boxed w-fit mb-4 lg:hidden no-print">
<button id="tab-sections" type="button" class="tab tab-active">{% trans 'Secciones' %}</button>
<button id="tab-output" type="button" class="tab">{% trans 'Vista previa' %}</button>
</div>
<div class="flex flex-col md:flex-row gap-4">
<div class="flex flex-col lg:flex-row gap-4">
<section id="panel-top" class="w-full md:w-1/2 border border-base-300 rounded-box p-4 no-print">
<section id="panel-top" class="w-full lg:w-1/2 border border-base-300 rounded-box p-4 no-print">
<div class="flex items-center justify-between mb-2">
<h2 class="text-lg font-semibold">{% trans 'Secciones' %}</h2>
<button id="toggle-collapse-all" type="button" class="btn btn-xs btn-outline"
@@ -185,8 +205,7 @@
data-remove-confirm="{% trans '¿Seguro que quieres eliminar este grupo? Se eliminarán también todas las secciones que contiene.' %}"></div>
</section>
<section id="panel-output" class="w-full md:w-1/2 border border-base-300 rounded-box p-4 panel-hidden-mobile">
<h2 id="preview-title" class="text-lg font-semibold mb-2 no-print">{% trans 'Vista previa' %}</h2>
<section id="panel-output" class="w-full lg:w-1/2 border border-base-300 rounded-box p-4 panel-hidden-mobile">
<div id="panel-output-text"
data-empty-message="{% trans 'Añade una sección para ver aquí el resultado.' %}"></div>
</section>