diff --git a/backend/workflows/static/workflows/css/form_builder.css b/backend/workflows/static/workflows/css/form_builder.css
index 4f7ce6c..dc9b3e4 100644
--- a/backend/workflows/static/workflows/css/form_builder.css
+++ b/backend/workflows/static/workflows/css/form_builder.css
@@ -18,6 +18,121 @@ body {
backdrop-filter: blur(12px);
}
+.builder-workspace {
+ display: grid;
+ grid-template-columns: 280px minmax(0, 1fr);
+ gap: 18px;
+ align-items: start;
+}
+
+.builder-sidebar {
+ position: sticky;
+ top: 18px;
+ display: grid;
+ gap: 14px;
+}
+
+.builder-main {
+ min-width: 0;
+}
+
+.builder-sidebar-card {
+ padding: 16px;
+ border: 1px solid #d7e0ec;
+ border-radius: 18px;
+ background: linear-gradient(180deg, rgba(248, 251, 255, 0.98), rgba(255, 255, 255, 0.98));
+ box-shadow: 0 12px 24px rgba(15, 23, 42, 0.05);
+}
+
+.builder-sidebar-card h2 {
+ margin: 6px 0 8px;
+ font-size: 20px;
+ color: #142033;
+}
+
+.builder-sidebar-card p {
+ margin: 0;
+ color: #5f7089;
+ font-size: 13px;
+ line-height: 1.6;
+}
+
+.builder-sidebar-eyebrow {
+ display: inline-flex;
+ align-items: center;
+ min-height: 24px;
+ padding: 0 9px;
+ border-radius: 999px;
+ background: #eaf1ff;
+ color: #214d99;
+ font-size: 11px;
+ font-weight: 800;
+ letter-spacing: 0.04em;
+ text-transform: uppercase;
+}
+
+.builder-side-nav {
+ display: grid;
+ gap: 8px;
+}
+
+.builder-side-link {
+ display: grid;
+ gap: 4px;
+ padding: 14px 16px;
+ border: 1px solid #d7e0ec;
+ border-radius: 16px;
+ background: linear-gradient(180deg, #fbfdff, #ffffff);
+ color: #142033;
+ text-decoration: none;
+ transition: transform 0.16s ease, border-color 0.16s ease, box-shadow 0.16s ease;
+}
+
+.builder-side-link:hover {
+ transform: translateY(-1px);
+ border-color: #b8cae0;
+ box-shadow: 0 12px 24px rgba(15, 23, 42, 0.06);
+}
+
+.builder-side-link.is-active {
+ border-color: #9eb6d8;
+ background: linear-gradient(180deg, #eef5ff, #ffffff);
+ box-shadow: 0 12px 24px rgba(15, 23, 42, 0.08);
+}
+
+.builder-side-link-title {
+ font-size: 14px;
+ font-weight: 800;
+}
+
+.builder-side-link-meta {
+ color: #607086;
+ font-size: 12px;
+ font-weight: 700;
+}
+
+.builder-sidebar-stats {
+ display: grid;
+ gap: 12px;
+}
+
+.builder-side-stat {
+ display: grid;
+ gap: 2px;
+}
+
+.builder-side-stat strong {
+ font-size: 22px;
+ line-height: 1;
+ color: #163566;
+}
+
+.builder-side-stat span {
+ color: #607086;
+ font-size: 12px;
+ font-weight: 700;
+}
+
.builder-hero,
.builder-panel,
.builder-stat-card,
@@ -39,6 +154,14 @@ body {
max-width: 760px;
}
+.builder-hero-sub {
+ margin: 10px 0 0;
+ max-width: 640px;
+ color: #5c6d87;
+ font-size: 15px;
+ line-height: 1.6;
+}
+
.builder-eyebrow {
display: inline-flex;
align-items: center;
@@ -142,12 +265,91 @@ body {
box-shadow: 0 10px 24px rgba(15, 23, 42, 0.05);
}
+.builder-module-surface {
+ overflow: hidden;
+}
+
+.builder-module-hidden {
+ display: none;
+}
+
+.builder-module-nav {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 8px;
+ margin-bottom: 14px;
+}
+
+.builder-module-link {
+ display: inline-flex;
+ align-items: center;
+ min-height: 36px;
+ padding: 0 12px;
+ border: 1px solid #d1dbea;
+ border-radius: 999px;
+ background: #f7fbff;
+ color: #304159;
+ font-size: 13px;
+ font-weight: 800;
+ text-decoration: none;
+ transition: transform 0.16s ease, border-color 0.16s ease, background-color 0.16s ease, box-shadow 0.16s ease;
+}
+
+.builder-module-link:hover {
+ transform: translateY(-1px);
+ border-color: #adc2dd;
+ background: #ffffff;
+ box-shadow: 0 10px 18px rgba(15, 23, 42, 0.06);
+}
+
+.builder-module-link.is-active {
+ border-color: #164a99;
+ background: linear-gradient(135deg, #0f3b7a 0%, #1759b8 100%);
+ color: #ffffff;
+}
+
.builder-panel-head h2,
.options-head h2 {
margin: 0;
color: #142033;
}
+.builder-panel-copy,
+.options-copy {
+ min-width: 0;
+}
+
+.builder-panel-sub,
+.options-sub {
+ margin: 6px 0 0;
+ color: #61718a;
+ font-size: 13px;
+ line-height: 1.5;
+}
+
+.builder-panel-meta {
+ display: flex;
+ align-items: center;
+ gap: 10px;
+ flex-wrap: wrap;
+ justify-content: flex-end;
+}
+
+.builder-panel-count {
+ display: inline-flex;
+ align-items: center;
+ min-height: 30px;
+ padding: 0 10px;
+ border: 1px solid #d7e1ee;
+ border-radius: 999px;
+ background: #f8fbff;
+ color: #294567;
+ font-size: 12px;
+ font-weight: 800;
+ letter-spacing: 0.01em;
+ white-space: nowrap;
+}
+
.mini {
color: #61718a;
font-size: 13px;
@@ -234,114 +436,18 @@ body {
margin-bottom: 14px;
}
-.builder-accordion {
- padding: 0;
- overflow: hidden;
-}
-
-.nested-accordion {
- padding: 0;
- overflow: hidden;
-}
-
-.nested-accordion-summary {
- list-style: none;
- cursor: pointer;
- padding: 14px 16px;
- transition: background-color 0.18s ease;
-}
-
-.nested-accordion-summary::-webkit-details-marker {
- display: none;
-}
-
-.nested-accordion-summary .options-head {
- margin-bottom: 0;
-}
-
-.nested-accordion-summary:hover {
- background: rgba(242, 247, 255, 0.72);
-}
-
-.nested-accordion[open] .nested-accordion-summary {
- border-bottom: 1px solid rgba(201, 212, 226, 0.8);
-}
-
-.nested-accordion:not([open]) .builder-panel-toggle::after {
- transform: rotate(-90deg);
-}
-
-.nested-accordion[open] .builder-panel-toggle {
- color: #194ea7;
-}
-
-.nested-accordion-body {
- padding: 14px 16px 16px;
-}
-
-.nested-accordion[open] .nested-accordion-body {
- animation: builderReveal 0.24s ease;
-}
-
-.builder-panel-summary {
- list-style: none;
- cursor: pointer;
- padding: 14px 16px;
- transition: background-color 0.18s ease;
-}
-
-.builder-panel-summary::-webkit-details-marker {
- display: none;
-}
-
-.builder-panel-summary .builder-panel-head {
- margin-bottom: 0;
-}
-
-.builder-panel-summary:hover {
- background: rgba(242, 247, 255, 0.72);
-}
-
-.builder-panel-toggle {
- display: inline-flex;
- align-items: center;
- gap: 8px;
- color: #5f7089;
- font-size: 12px;
- font-weight: 700;
- text-transform: uppercase;
- letter-spacing: 0.04em;
-}
-
-.builder-panel-toggle::after {
- content: "▾";
- font-size: 13px;
- line-height: 1;
- transition: transform 0.18s ease;
-}
-
-.builder-accordion:not([open]) .builder-panel-toggle::after {
- transform: rotate(-90deg);
-}
-
-.builder-accordion[open] .builder-panel-toggle {
- color: #194ea7;
-}
-
-.builder-accordion[open] .builder-panel-toggle::before {
- content: "";
-}
-
-.builder-accordion[open] .builder-panel-summary {
- border-bottom: 1px solid rgba(201, 212, 226, 0.8);
+.module-card-body {
+ display: grid;
+ gap: 14px;
}
.builder-panel-body {
padding: 14px 16px 16px;
}
-.builder-accordion[open] .builder-panel-body {
- animation: builderReveal 0.24s ease;
+.builder-panel-body-static {
+ display: grid;
+ gap: 16px;
}
.builder-rule-layout {
@@ -355,6 +461,10 @@ body {
gap: 14px;
}
+.builder-module-card {
+ overflow: hidden;
+}
+
.preview-shell {
display: grid;
gap: 12px;
@@ -458,29 +568,43 @@ body {
.field-rule-list {
display: grid;
+ gap: 10px;
+ padding: 10px;
}
.field-rule-row {
display: grid;
- grid-template-columns: minmax(220px, 1.4fr) 120px 160px 120px;
- gap: 12px;
+ grid-template-columns: minmax(240px, 1.5fr) minmax(120px, 0.55fr) minmax(170px, 0.7fr) auto;
+ gap: 14px;
align-items: center;
- padding: 12px 14px;
- border-top: 1px solid #edf2f7;
+ padding: 14px;
+ border: 1px solid #e7edf6;
+ border-radius: 14px;
+ background: rgba(255, 255, 255, 0.96);
transition: background-color 0.18s ease;
}
.field-rule-row:first-child {
- border-top: 0;
+ border-top: 1px solid #e7edf6;
}
.field-rule-row:hover {
- background: rgba(246, 250, 255, 0.92);
+ background: rgba(246, 250, 255, 0.96);
}
.field-rule-main strong {
display: block;
color: #162133;
+ font-size: 14px;
+}
+
+.field-rule-meta {
+ margin-top: 8px;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ gap: 10px;
+ flex-wrap: wrap;
}
.field-rule-control {
@@ -491,6 +615,18 @@ body {
font-weight: 700;
}
+.field-rule-settings {
+ display: flex;
+ align-items: end;
+ justify-content: flex-end;
+ gap: 12px;
+ flex-wrap: wrap;
+}
+
+.field-rule-control-compact {
+ min-width: 120px;
+}
+
.field-rule-control input[type='checkbox'] {
width: 16px;
height: 16px;
@@ -501,6 +637,10 @@ body {
justify-content: flex-end;
}
+.field-rule-status-inline {
+ justify-content: flex-start;
+}
+
.conditional-rule-grid {
display: grid;
gap: 12px;
@@ -573,6 +713,33 @@ body {
.conditional-targets {
display: grid;
gap: 8px;
+ padding: 12px;
+ border: 1px solid #e7edf6;
+ border-radius: 14px;
+ background: #f9fbff;
+}
+
+.conditional-rule-summary {
+ display: grid;
+ gap: 8px;
+ padding: 12px;
+ border: 1px solid #dbe6f5;
+ border-radius: 14px;
+ background: linear-gradient(180deg, #f6faff, #ffffff);
+}
+
+.conditional-summary-prefix {
+ color: #294567;
+ font-size: 12px;
+ font-weight: 800;
+ text-transform: uppercase;
+ letter-spacing: 0.04em;
+}
+
+.conditional-summary-chips {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 8px;
}
.conditional-target-label {
@@ -594,6 +761,42 @@ body {
gap: 10px;
}
+.conditional-sentence-builder {
+ display: grid;
+ gap: 10px;
+}
+
+.conditional-sentence-row {
+ display: grid;
+ grid-template-columns: minmax(180px, 1.2fr) minmax(220px, 1.3fr) minmax(160px, 0.9fr) minmax(160px, 0.9fr);
+ gap: 10px;
+ align-items: end;
+ padding: 12px;
+ border: 1px solid #e5ebf3;
+ border-radius: 14px;
+ background: #f8fbff;
+}
+
+.conditional-sentence-label {
+ color: #33506f;
+ font-size: 12px;
+ font-weight: 800;
+ line-height: 1.45;
+ text-transform: uppercase;
+ letter-spacing: 0.04em;
+}
+
+.conditional-sentence-row select,
+.conditional-sentence-row input[type='text'] {
+ width: 100%;
+ min-height: 40px;
+ border: 1px solid #cbd5e1;
+ border-radius: 10px;
+ padding: 8px 10px;
+ box-sizing: border-box;
+ background: #fff;
+}
+
.conditional-clause-row {
display: grid;
grid-template-columns: 56px minmax(220px, 1.35fr) minmax(180px, 0.8fr) minmax(180px, 0.85fr);
@@ -666,14 +869,161 @@ body {
.columns {
display: grid;
- grid-template-columns: repeat(4, minmax(220px, 1fr));
+ grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
gap: 12px;
+ min-width: 0;
+}
+
+.structure-workspace {
+ display: grid;
+ grid-template-columns: 260px minmax(0, 1fr);
+ gap: 16px;
+ align-items: start;
+ min-width: 0;
+}
+
+.structure-sidebar {
+ display: grid;
+ gap: 12px;
+ position: sticky;
+ top: 18px;
+}
+
+.structure-canvas {
+ min-width: 0;
+ overflow: visible;
+ padding-bottom: 4px;
+ display: grid;
+ gap: 14px;
+}
+
+.structure-section-nav {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 10px;
+}
+
+.structure-section-pill {
+ display: inline-flex;
+ align-items: center;
+ gap: 10px;
+ min-height: 44px;
+ padding: 0 14px 0 10px;
+ border: 1px solid #d7e0ec;
+ border-radius: 16px;
+ background: linear-gradient(180deg, #fbfdff 0%, #ffffff 100%);
+ color: #142033;
+ text-decoration: none;
+ transition: transform 0.16s ease, border-color 0.16s ease, box-shadow 0.16s ease;
+}
+
+.structure-section-pill:hover {
+ transform: translateY(-1px);
+ border-color: #bfd0e4;
+ box-shadow: 0 10px 18px rgba(15, 23, 42, 0.06);
+}
+
+.structure-section-pill.is-active {
+ border-color: #9eb6d8;
+ background: linear-gradient(180deg, #eef5ff 0%, #ffffff 100%);
+ box-shadow: 0 12px 22px rgba(15, 23, 42, 0.08);
+}
+
+.structure-section-pill-index {
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ width: 24px;
+ height: 24px;
+ border-radius: 999px;
+ background: #eaf1ff;
+ color: #214d99;
+ font-size: 12px;
+ font-weight: 800;
+}
+
+.structure-section-pill-copy {
+ display: grid;
+ gap: 1px;
+}
+
+.structure-section-pill-copy strong {
+ font-size: 14px;
+ line-height: 1.2;
+}
+
+.structure-section-pill-copy span {
+ color: #607086;
+ font-size: 11px;
+ font-weight: 700;
+}
+
+.structure-card {
+ display: grid;
+ gap: 8px;
+ padding: 16px;
+ border: 1px solid #d7e0ec;
+ border-radius: 18px;
+ background: linear-gradient(180deg, #f8fbff 0%, #ffffff 100%);
+ box-shadow: 0 12px 24px rgba(15, 23, 42, 0.05);
+}
+
+.structure-card h3 {
+ margin: 0;
+ font-size: 17px;
+ color: #142033;
+}
+
+.structure-card p {
+ margin: 0;
+ color: #5f7089;
+ font-size: 13px;
+ line-height: 1.6;
+}
+
+.structure-card-muted {
+ background: linear-gradient(180deg, #fbfdff 0%, #ffffff 100%);
+}
+
+.structure-card-eyebrow {
+ display: inline-flex;
+ align-items: center;
+ min-height: 24px;
+ padding: 0 9px;
+ border-radius: 999px;
+ background: #eaf1ff;
+ color: #214d99;
+ font-size: 11px;
+ font-weight: 800;
+ letter-spacing: 0.04em;
+ text-transform: uppercase;
+}
+
+.structure-stat {
+ display: grid;
+ gap: 2px;
+}
+
+.structure-stat strong {
+ font-size: 22px;
+ line-height: 1;
+ color: #163566;
+}
+
+.structure-stat span {
+ color: #607086;
+ font-size: 12px;
+ font-weight: 700;
}
.columns.single {
grid-template-columns: minmax(320px, 1fr);
}
+.structure-columns-single {
+ grid-template-columns: 1fr;
+}
+
.column {
border: 1px solid #d7e0ec;
border-radius: 16px;
@@ -685,6 +1035,10 @@ body {
transition: transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease;
}
+.column.is-collapsed {
+ min-height: 0;
+}
+
.column:hover {
transform: translateY(-2px);
border-color: #bfd0e4;
@@ -721,10 +1075,30 @@ body {
flex: 1;
}
+.column.is-collapsed .dropzone {
+ display: none;
+}
+
+.btn-compact {
+ min-height: 34px;
+ padding: 0 12px;
+}
+
.dropzone.drag-over {
background: #ecf5ff;
}
+.structure-empty {
+ padding: 14px;
+ border: 1px dashed #cbd7e6;
+ border-radius: 14px;
+ background: #f8fbff;
+ color: #61718a;
+ font-size: 13px;
+ font-weight: 700;
+ text-align: center;
+}
+
.field-card {
background: rgba(255, 255, 255, 0.96);
border: 1px solid #d7dfeb;
@@ -815,8 +1189,9 @@ body {
}
.category-switch select,
-.option-table select,
.add-option-form input,
+.option-card input[type='text'],
+.option-table select,
.option-table input[type='text'] {
border: 1px solid #cbd5e1;
border-radius: 10px;
@@ -832,10 +1207,6 @@ body {
margin-bottom: 12px;
}
-.option-table-wrap {
- overflow-x: auto;
-}
-
.option-table {
width: 100%;
border-collapse: collapse;
@@ -852,6 +1223,9 @@ body {
.option-table th {
background: #f8fbff;
color: #3d4c63;
+ position: sticky;
+ top: 0;
+ z-index: 1;
}
.option-table-group-row th {
@@ -862,15 +1236,6 @@ body {
letter-spacing: 0.04em;
}
-.option-row {
- cursor: grab;
-}
-
-.option-row.dragging {
- opacity: 0.5;
- background: #ecf5ff;
-}
-
.drag-handle {
display: inline-flex;
align-items: center;
@@ -886,20 +1251,186 @@ body {
user-select: none;
}
+.option-card-list {
+ display: grid;
+ gap: 12px;
+}
+
+.option-card {
+ display: grid;
+ gap: 14px;
+ padding: 16px;
+ border: 1px solid #d7e0ec;
+ border-radius: 18px;
+ background: linear-gradient(180deg, #fbfdff 0%, #ffffff 100%);
+ box-shadow: 0 10px 18px rgba(15, 23, 42, 0.04);
+ cursor: grab;
+ transition: transform 0.16s ease, box-shadow 0.16s ease, border-color 0.16s ease;
+}
+
+.option-card:hover {
+ transform: translateY(-1px);
+ border-color: #c4d4e7;
+ box-shadow: 0 14px 24px rgba(15, 23, 42, 0.06);
+}
+
+.option-row.dragging {
+ opacity: 0.55;
+ background: #ecf5ff;
+ box-shadow: none;
+}
+
+.option-card-head {
+ display: flex;
+ align-items: flex-start;
+ justify-content: space-between;
+ gap: 16px;
+}
+
+.option-card-order {
+ display: flex;
+ align-items: flex-start;
+ gap: 12px;
+ min-width: 0;
+}
+
+.option-card-title-block {
+ display: grid;
+ gap: 4px;
+ min-width: 0;
+}
+
+.option-card-title-block strong {
+ color: #142033;
+ font-size: 15px;
+ line-height: 1.35;
+}
+
+.option-card-meta {
+ color: #61718a;
+ font-size: 12px;
+ font-weight: 700;
+}
+
+.option-card-actions {
+ display: flex;
+ align-items: center;
+ gap: 10px;
+ flex-wrap: wrap;
+ justify-content: flex-end;
+}
+
+.option-card-toggle {
+ display: inline-flex;
+ align-items: center;
+ gap: 8px;
+ min-height: 36px;
+ padding: 0 12px;
+ border: 1px solid #d7e1ee;
+ border-radius: 999px;
+ background: #f8fbff;
+ color: #294567;
+ font-size: 12px;
+ font-weight: 800;
+}
+
+.option-card-grid {
+ display: grid;
+ grid-template-columns: repeat(3, minmax(0, 1fr));
+ gap: 12px;
+}
+
+.option-empty-state {
+ padding: 18px;
+ border: 1px dashed #c8d5e7;
+ border-radius: 16px;
+ background: #f8fbff;
+ color: #61718a;
+ font-size: 14px;
+ font-weight: 700;
+ text-align: center;
+}
+
.options-actions {
margin-top: 12px;
display: flex;
justify-content: flex-end;
}
+.options-actions-sticky {
+ position: sticky;
+ bottom: 0;
+ z-index: 2;
+ padding-top: 12px;
+ background: linear-gradient(180deg, rgba(255, 255, 255, 0), rgba(255, 255, 255, 0.98) 32%);
+}
+
+.field-text-card-list {
+ display: grid;
+ gap: 12px;
+}
+
+.field-text-card {
+ display: grid;
+ gap: 12px;
+ padding: 16px;
+ border: 1px solid #d7e0ec;
+ border-radius: 18px;
+ background: linear-gradient(180deg, #fbfdff 0%, #ffffff 100%);
+ box-shadow: 0 10px 18px rgba(15, 23, 42, 0.04);
+}
+
+.field-text-card-head strong {
+ color: #142033;
+ font-size: 15px;
+}
+
+.field-text-card-grid {
+ display: grid;
+ grid-template-columns: repeat(2, minmax(0, 1fr));
+ gap: 12px;
+}
+
+.custom-fields-surface .builder-entity-form {
+ gap: 10px;
+ padding: 14px;
+}
+
+.custom-fields-surface .builder-entity-grid {
+ gap: 10px;
+}
+
+.custom-fields-surface .builder-group-stack {
+ gap: 10px;
+}
+
+.custom-fields-surface .builder-group-card {
+ border-radius: 16px;
+}
+
+.custom-fields-surface .builder-group-head {
+ padding: 10px 12px;
+}
+
+.custom-fields-surface .builder-entity-card {
+ padding: 14px;
+ gap: 10px;
+ border-radius: 14px;
+}
+
+.custom-fields-surface .builder-entity-card-head strong {
+ font-size: 14px;
+}
+
.builder-entity-form {
display: grid;
gap: 12px;
margin-bottom: 14px;
- padding: 14px;
+ padding: 16px;
border: 1px solid #d7e0ec;
- border-radius: 16px;
- background: linear-gradient(180deg, #fbfdff 0%, #ffffff 100%);
+ border-radius: 18px;
+ background: linear-gradient(180deg, #f8fbff 0%, #ffffff 100%);
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.9);
}
.builder-entity-head h3,
@@ -930,6 +1461,10 @@ body {
font-weight: 800;
}
+.builder-entity-control input[type='text'] {
+ width: 100%;
+}
+
.builder-entity-control-narrow {
max-width: 180px;
}
@@ -946,9 +1481,10 @@ body {
.builder-group-card {
border: 1px solid #d7e0ec;
- border-radius: 16px;
+ border-radius: 18px;
background: linear-gradient(180deg, #f8fbff 0%, #ffffff 100%);
overflow: hidden;
+ box-shadow: 0 10px 22px rgba(15, 23, 42, 0.04);
}
.builder-group-head {
@@ -962,12 +1498,13 @@ body {
}
.builder-entity-card {
- padding: 14px;
+ padding: 16px;
border: 1px solid #e5ebf3;
border-radius: 16px;
background: #ffffff;
display: grid;
gap: 12px;
+ box-shadow: 0 8px 18px rgba(15, 23, 42, 0.04);
}
.builder-entity-card-head {
@@ -998,6 +1535,14 @@ body {
overflow-wrap: anywhere;
}
+.builder-inline-meta {
+ margin-top: 8px;
+ display: flex;
+ align-items: center;
+ gap: 8px;
+ flex-wrap: wrap;
+}
+
.builder-switch,
.builder-switch-inline {
display: inline-flex;
@@ -1042,7 +1587,7 @@ body {
.section-rule-card {
display: grid;
- grid-template-columns: auto minmax(0, 1fr) auto;
+ grid-template-columns: auto auto minmax(0, 1fr) auto;
align-items: center;
gap: 12px;
padding: 14px 16px;
@@ -1063,6 +1608,20 @@ body {
background: linear-gradient(180deg, #f5f8fc, #fbfdff);
}
+.section-rule-order {
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ width: 30px;
+ height: 30px;
+ border-radius: 999px;
+ background: #eaf1ff;
+ color: #23457a;
+ font-size: 12px;
+ font-weight: 800;
+ box-shadow: inset 0 0 0 1px #cdddff;
+}
+
.section-rule-actions {
display: inline-flex;
align-items: center;
@@ -1172,9 +1731,6 @@ body {
transition: none;
}
- .builder-accordion[open] .builder-panel-body {
- animation: none;
- }
}
@media (max-width: 1220px) {
@@ -1182,9 +1738,30 @@ body {
.columns {
grid-template-columns: repeat(2, minmax(220px, 1fr));
}
+
+ .structure-workspace {
+ grid-template-columns: 1fr;
+ }
+
+ .structure-sidebar {
+ position: static;
+ grid-template-columns: repeat(2, minmax(220px, 1fr));
+ }
+
+ .structure-canvas {
+ overflow-x: visible;
+ }
}
@media (max-width: 900px) {
+ .builder-workspace {
+ grid-template-columns: 1fr;
+ }
+
+ .builder-sidebar {
+ position: static;
+ }
+
.builder-hero,
.builder-panel-head,
.options-head,
@@ -1197,6 +1774,10 @@ body {
justify-content: flex-start;
}
+ .builder-panel-meta {
+ justify-content: flex-start;
+ }
+
.builder-rule-layout {
grid-template-columns: 1fr;
}
@@ -1212,11 +1793,26 @@ body {
grid-template-columns: 1fr;
}
- .field-rule-row,
- .conditional-clause-row {
+ .structure-sidebar {
grid-template-columns: 1fr;
}
+ .field-rule-row,
+ .conditional-clause-row,
+ .conditional-sentence-row,
+ .field-text-card-grid {
+ grid-template-columns: 1fr;
+ }
+
+ .section-rule-card {
+ grid-template-columns: auto minmax(0, 1fr);
+ }
+
+ .section-rule-toggle {
+ grid-column: 1 / -1;
+ justify-content: flex-start;
+ }
+
.field-rule-status {
justify-content: flex-start;
}
diff --git a/backend/workflows/templates/workflows/form_builder.html b/backend/workflows/templates/workflows/form_builder.html
index 1380495..576a138 100644
--- a/backend/workflows/templates/workflows/form_builder.html
+++ b/backend/workflows/templates/workflows/form_builder.html
@@ -10,10 +10,51 @@
{% block shell_body %}
{% include 'workflows/includes/app_header.html' with header_show_home=1 header_inside_shell=1 %}
+
+
+
+
{% trans "Deployment Configuration" %}
{% trans "Form Builder" %}
+
{% trans "Steuern Sie Struktur, Regeln und Inhalte Ihrer Standard-Workflows an einem Ort." %}
{% for key, label in form_types %}
@@ -32,75 +73,150 @@
-
-
+
+
-
+
{% trans "Struktur & Reihenfolge" %}
+
{% trans "Ordnen Sie Abschnitte und Felder in der Reihenfolge, in der sie im Formular erscheinen sollen." %}
+
+
+ {{ columns|length }} {% trans "Abschnitte" %}
+ {{ builder_summary.configurable_field_count }} {% trans "konfigurierbare Felder" %}
-
{% trans "Geöffnet" %}
-
-
-
- {% for column in columns %}
-
-
-
{{ column.title }}
- {% blocktrans trimmed with count=column.items|length %}{{ count }} Feld/Felder{% endblocktrans %}
-
-
- {% for item in column.items %}
-
-
-
{{ item.label }}
-
{{ item.field_name }}
-
-
- {% if item.is_custom %}{% trans "Eigen" %} {% endif %}
- {% if item.locked %}{% trans "Fix" %} {% endif %}
- {% if not item.is_visible %}{% trans "Ausgeblendet" %} {% endif %}
- {% if item.is_required %}{% trans "Pflicht" %} {% endif %}
-
-
- {% endfor %}
-
-
- {% endfor %}
-
-
-
+
+
+
+
+
+ {% for column in columns %}
+
+ {{ forloop.counter }}
+
+ {{ column.title }}
+ {% blocktrans trimmed with count=column.items|length %}{{ count }} Feld/Felder{% endblocktrans %}
+
+
+ {% endfor %}
+
+
+
+ {% for column in columns %}
+ {% if active_structure_section == column.key %}
+
+
+
+
{{ column.title }}
+ {% blocktrans trimmed with count=column.items|length %}{{ count }} Feld/Felder{% endblocktrans %}
+
+
{% trans "Geöffnet" %}
+
+
+ {% for item in column.items %}
+
+
+
{{ item.label }}
+
{{ item.field_name }}
+
+
+ {% if item.is_custom %}{% trans "Eigen" %} {% endif %}
+ {% if item.locked %}{% trans "Fix" %} {% endif %}
+ {% if not item.is_visible %}{% trans "Ausgeblendet" %} {% endif %}
+ {% if item.is_required %}{% trans "Pflicht" %} {% endif %}
+
+
+ {% empty %}
+
{% trans "Noch keine Felder in diesem Abschnitt." %}
+ {% endfor %}
+
+
+ {% endif %}
+ {% endfor %}
+
+
+
+
+
+
+
+
-
+
{% trans "Sichtbarkeit & Regeln" %}
+
{% trans "Legen Sie fest, welche Teile sichtbar, erforderlich oder regelgesteuert sein sollen." %}
+
+
+ {{ builder_summary.hidden_field_count }} {% trans "ausgeblendet" %}
+ {{ builder_summary.hidden_section_count }} {% trans "versteckte Abschnitte" %}
-
{% trans "Öffnen" %}
-
-
+
+
+ {% trans "Abschnitte" %}
+ {% trans "Feldregeln" %}
+ {% if form_type == 'onboarding' %}
+ {% trans "Bedingte Logik" %}
+ {% endif %}
+
-
-
+ {% if active_module == 'section-rules' %}
+
+
-
{% trans "Abschnitte steuern" %}
-
{% trans "Öffnen" %}
+
+
{% trans "Abschnitte steuern" %}
+
{% trans "Reihenfolge und Sichtbarkeit der Formularabschnitte." %}
+
+
+ {{ section_rule_items|length }} {% trans "Abschnitte" %}
+
-
-