@syncfusion/ej2-react-form-builder 0.1.0-beta

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (145) hide show
  1. package/Common/CheckboxGroup.d.ts +13 -0
  2. package/Common/CheckboxGroup.js +50 -0
  3. package/Common/ConditionalRuleEngine.d.ts +296 -0
  4. package/Common/ConditionalRuleEngine.js +566 -0
  5. package/Common/CustomTabComponent.d.ts +17 -0
  6. package/Common/CustomTabComponent.js +30 -0
  7. package/Common/CustomValidationEngine.d.ts +58 -0
  8. package/Common/CustomValidationEngine.js +146 -0
  9. package/Common/DataGridComponent.d.ts +20 -0
  10. package/Common/DataGridComponent.js +273 -0
  11. package/Common/FormValidator.d.ts +485 -0
  12. package/Common/FormValidator.js +575 -0
  13. package/Common/MinMaxRuleEngine.d.ts +105 -0
  14. package/Common/MinMaxRuleEngine.js +365 -0
  15. package/Common/StaticHtmlRenderer.d.ts +14 -0
  16. package/Common/StaticHtmlRenderer.js +24 -0
  17. package/Common/expressions/DependencyTracker.d.ts +30 -0
  18. package/Common/expressions/DependencyTracker.js +128 -0
  19. package/Common/expressions/ExpressionEngine.d.ts +95 -0
  20. package/Common/expressions/ExpressionEngine.js +506 -0
  21. package/Common/expressions/ExpressionParser.d.ts +41 -0
  22. package/Common/expressions/ExpressionParser.js +269 -0
  23. package/Common/expressions/useGridExpressions.d.ts +12 -0
  24. package/Common/expressions/useGridExpressions.js +71 -0
  25. package/Common/globalFormId.d.ts +26 -0
  26. package/Common/globalFormId.js +45 -0
  27. package/Common/json-converter.d.ts +444 -0
  28. package/Common/json-converter.js +1184 -0
  29. package/Common/parser.d.ts +98 -0
  30. package/Common/parser.js +753 -0
  31. package/Common/utils.d.ts +130 -0
  32. package/Common/utils.js +574 -0
  33. package/README.md +53 -0
  34. package/index.d.ts +6 -0
  35. package/index.js +6 -0
  36. package/license +13 -0
  37. package/package.json +54 -0
  38. package/src/FormBuilder.d.ts +211 -0
  39. package/src/FormBuilder.js +1299 -0
  40. package/src/components/Database/ConnectionForm.d.ts +8 -0
  41. package/src/components/Database/ConnectionForm.js +28 -0
  42. package/src/components/TopBar.d.ts +10 -0
  43. package/src/components/TopBar.js +7 -0
  44. package/src/components/icons/ComponentIcons.d.ts +44 -0
  45. package/src/components/icons/ComponentIcons.js +40 -0
  46. package/src/components/layout/FormFieldWrapper.d.ts +41 -0
  47. package/src/components/layout/FormFieldWrapper.js +112 -0
  48. package/src/components/layout/LeftPane.d.ts +23 -0
  49. package/src/components/layout/LeftPane.js +310 -0
  50. package/src/components/layout/ListBoxPane.d.ts +24 -0
  51. package/src/components/layout/ListBoxPane.js +94 -0
  52. package/src/components/layout/MainSection.d.ts +39 -0
  53. package/src/components/layout/MainSection.js +1766 -0
  54. package/src/components/layout/Preview.d.ts +12 -0
  55. package/src/components/layout/Preview.js +337 -0
  56. package/src/components/layout/RightPane.d.ts +22 -0
  57. package/src/components/layout/RightPane.js +370 -0
  58. package/src/components/theme/ThemeSwitcher.d.ts +14 -0
  59. package/src/components/theme/ThemeSwitcher.js +24 -0
  60. package/src/components/theme/theme-constant.d.ts +37 -0
  61. package/src/components/theme/theme-constant.js +23 -0
  62. package/src/config/component-properties.json +4929 -0
  63. package/src/config/form-setting.json +56 -0
  64. package/src/config/locale.d.ts +449 -0
  65. package/src/config/locale.js +449 -0
  66. package/src/context/FormSchemaContext.d.ts +32 -0
  67. package/src/context/FormSchemaContext.js +155 -0
  68. package/src/context/LocalizationContext.d.ts +27 -0
  69. package/src/context/LocalizationContext.js +43 -0
  70. package/src/context/ThemeContext.d.ts +23 -0
  71. package/src/context/ThemeContext.js +161 -0
  72. package/src/context/contexts.d.ts +6 -0
  73. package/src/context/contexts.js +6 -0
  74. package/src/context/defaultFormSchema.d.ts +6 -0
  75. package/src/context/defaultFormSchema.js +20 -0
  76. package/src/defaultPalette.d.ts +9 -0
  77. package/src/defaultPalette.js +45 -0
  78. package/src/defaultTemplate.d.ts +3 -0
  79. package/src/defaultTemplate.js +185 -0
  80. package/src/import/schemaImportUtils.d.ts +24 -0
  81. package/src/import/schemaImportUtils.js +121 -0
  82. package/src/index.d.ts +16 -0
  83. package/src/index.js +6 -0
  84. package/src/types/ActionButtons.d.ts +44 -0
  85. package/src/types/ActionButtons.js +27 -0
  86. package/src/types/ComponentProperties.d.ts +33 -0
  87. package/src/types/ComponentProperties.js +2 -0
  88. package/src/types/FormSchema.d.ts +585 -0
  89. package/src/types/FormSchema.js +147 -0
  90. package/src/types/connection.d.ts +19 -0
  91. package/src/types/connection.js +9 -0
  92. package/src/utils/AttributesEditor.d.ts +13 -0
  93. package/src/utils/AttributesEditor.js +117 -0
  94. package/src/utils/ButtonGroupEditor.d.ts +15 -0
  95. package/src/utils/ButtonGroupEditor.js +141 -0
  96. package/src/utils/ChoiceBasedFieldEditor.d.ts +16 -0
  97. package/src/utils/ChoiceBasedFieldEditor.js +87 -0
  98. package/src/utils/ClipboardHelper.d.ts +26 -0
  99. package/src/utils/ClipboardHelper.js +83 -0
  100. package/src/utils/ColumnBuilder.d.ts +11 -0
  101. package/src/utils/ColumnBuilder.js +153 -0
  102. package/src/utils/ColumnSpanEditor.d.ts +8 -0
  103. package/src/utils/ColumnSpanEditor.js +98 -0
  104. package/src/utils/ConditionDataEditor.d.ts +29 -0
  105. package/src/utils/ConditionDataEditor.js +177 -0
  106. package/src/utils/ConditionalEditorUtils.d.ts +27 -0
  107. package/src/utils/ConditionalEditorUtils.js +310 -0
  108. package/src/utils/ConditionsEditor.d.ts +20 -0
  109. package/src/utils/ConditionsEditor.js +571 -0
  110. package/src/utils/CustomAccordion.d.ts +13 -0
  111. package/src/utils/CustomAccordion.js +38 -0
  112. package/src/utils/CustomValidationEditor.d.ts +11 -0
  113. package/src/utils/CustomValidationEditor.js +208 -0
  114. package/src/utils/DataSourceCollector.d.ts +3 -0
  115. package/src/utils/DataSourceCollector.js +252 -0
  116. package/src/utils/ExpressionEditor.d.ts +13 -0
  117. package/src/utils/ExpressionEditor.js +99 -0
  118. package/src/utils/FormSettingsPanel.d.ts +9 -0
  119. package/src/utils/FormSettingsPanel.js +60 -0
  120. package/src/utils/LookupConfig.d.ts +11 -0
  121. package/src/utils/LookupConfig.js +159 -0
  122. package/src/utils/MinMaxValueEditor.d.ts +25 -0
  123. package/src/utils/MinMaxValueEditor.js +188 -0
  124. package/src/utils/OptionsEditor.d.ts +8 -0
  125. package/src/utils/OptionsEditor.js +79 -0
  126. package/src/utils/PropertyRenderer.d.ts +22 -0
  127. package/src/utils/PropertyRenderer.js +210 -0
  128. package/src/utils/ValueRenderer.d.ts +2 -0
  129. package/src/utils/ValueRenderer.js +91 -0
  130. package/src/utils/ej2DbAdaptor.d.ts +6 -0
  131. package/src/utils/ej2DbAdaptor.js +38 -0
  132. package/src/utils/mappingHeuristics.d.ts +10 -0
  133. package/src/utils/mappingHeuristics.js +33 -0
  134. package/src/utils/renderComponent.d.ts +18 -0
  135. package/src/utils/renderComponent.js +300 -0
  136. package/styles/tailwind3.css +67 -0
  137. package/styles/themes/action-buttons.css +110 -0
  138. package/styles/themes/datagrid.css +380 -0
  139. package/styles/themes/drag-reorder.css +248 -0
  140. package/styles/themes/import-dialog.css +292 -0
  141. package/styles/themes/index.css +658 -0
  142. package/styles/themes/left-pane.css +253 -0
  143. package/styles/themes/options-editor.css +63 -0
  144. package/styles/themes/preview.css +702 -0
  145. package/styles/themes/property-dialog.css +371 -0
@@ -0,0 +1,702 @@
1
+ .main-section {
2
+ flex: 1;
3
+ display: flex;
4
+ flex-direction: column;
5
+ height: calc(100vh - var(--topbar-height));
6
+ background-color: rgb(var(--sf-color-background));
7
+ overflow: hidden;
8
+ }
9
+
10
+ .action-btn {
11
+ padding: 0.5rem 1rem;
12
+ border-radius: var(--border-radius);
13
+ font-size: var(--sf-font-size);
14
+ cursor: pointer;
15
+ transition: all 0.2s ease;
16
+ }
17
+
18
+ .action-btn:hover {
19
+ background-color: var(--dragover-background-color);
20
+ }
21
+
22
+ .main-content {
23
+ flex: 1;
24
+ overflow-y: auto;
25
+ margin-top: 48px;
26
+ scrollbar-width: thin;
27
+ background-color: rgb(var(--sf-color-background));
28
+ }
29
+
30
+ /* Form Preview Area */
31
+ .form-preview-area {
32
+ min-width: 100%;
33
+ width: fit-content;
34
+ background: var(--preview-area-color);
35
+ min-height: 100%;
36
+ padding: 1.5rem 2.5rem 1.5rem 2.5rem;
37
+ transition: background-color 0.2s ease;
38
+ }
39
+
40
+ .builder-container.e-component .form-preview-area:has(.empty-state) {
41
+ height: 100%;
42
+ }
43
+
44
+ .preview-main-content .form-preview-area {
45
+ height: calc(100dvh - 96px);
46
+ overflow-y: auto;
47
+ }
48
+
49
+ .builder-container.e-component .preview-main-content .form-preview-area {
50
+ height: 100%;
51
+ overflow-y: auto;
52
+ }
53
+
54
+ .preview-main-content .form-renderer-container {
55
+ background-color: var(--sf-bg-color);
56
+ }
57
+
58
+ .form-preview-area.dragging-over .empty-state .form-dropzone {
59
+ border: 2px dashed var(--dragover-border-color);
60
+ background: var(--dragover-background-color);
61
+ }
62
+
63
+ .form-preview-area.empty {
64
+ display: flex;
65
+ align-items: center;
66
+ justify-content: center;
67
+ }
68
+
69
+ .empty-state {
70
+ background: var(--form-container-bg);
71
+ padding: 30px;
72
+ min-height: calc(100dvh - var(--topbar-height) - 6rem);
73
+ margin: 0 auto;
74
+ text-align: center;
75
+ align-content: center;
76
+ overflow-x: auto;
77
+ overflow-y: hidden;
78
+ width: var(--form-width)
79
+ }
80
+
81
+ .builder-container.e-component .empty-state {
82
+ min-height: unset;
83
+ height: 100%;
84
+ }
85
+
86
+
87
+ .empty-state p {
88
+ margin: 0;
89
+ }
90
+
91
+ .form-components {
92
+ background: var(--form-container-bg);
93
+ padding: 30px;
94
+ padding-bottom: 40px;
95
+ min-height: calc(100% - var(--topbar-height) - 6rem);
96
+ margin: 0 auto;
97
+ overflow-x: auto;
98
+ overflow-y: hidden;
99
+ display: flex;
100
+ max-width: var(--form-width);
101
+ flex-direction: column;
102
+ gap: 1.5rem;
103
+ }
104
+
105
+ .builder-container.e-component .form-components {
106
+ min-height: unset;
107
+ height: 100%;
108
+ }
109
+
110
+ .form-renderer-container {
111
+ margin: 0 auto;
112
+ overflow-x: auto;
113
+ overflow-y: hidden;
114
+ min-height: calc(100dvh - var(--topbar-height) - 6rem);
115
+ }
116
+
117
+ .form-field {
118
+ display: flex;
119
+ flex-direction: column;
120
+ gap: 0.5rem;
121
+ }
122
+
123
+ /* Field content wrapper for label positioning */
124
+ .field-content {
125
+ display: flex;
126
+ width: 100%;
127
+ }
128
+
129
+ .field-content.label-top {
130
+ flex-direction: column;
131
+ gap: 0.5rem;
132
+ }
133
+
134
+ .field-content.label-bottom {
135
+ flex-direction: column-reverse;
136
+ gap: 0.5rem;
137
+ }
138
+
139
+ .field-content.label-left {
140
+ flex-direction: row;
141
+ align-items: center;
142
+ gap: 1rem;
143
+ }
144
+
145
+ .field-content.label-right {
146
+ flex-direction: row-reverse;
147
+ align-items: center;
148
+ gap: 1rem;
149
+ justify-content: flex-end;
150
+ }
151
+
152
+ /* When label is left/right, input should flex-grow */
153
+ .field-content.label-left .field-input,
154
+ .field-content.label-right .field-input {
155
+ flex: 1;
156
+ min-width: 0;
157
+ }
158
+
159
+ .field-label {
160
+ font-size: var(--sf-font-size);
161
+ font-weight: 500;
162
+ color: var(--jsonview-text-color);
163
+ margin: 0;
164
+ cursor: pointer;
165
+ flex-shrink: 0;
166
+ overflow: hidden;
167
+ text-overflow: ellipsis;
168
+ }
169
+
170
+ .field-description {
171
+ font-size: var(--sf-font-size-sm);
172
+ color: var(--jsonview-text-color);
173
+ }
174
+
175
+ .field-content:not(.layout-component):has(.e-small:not(.e-btn)) .field-label {
176
+ font-size: var(--sf-font-size-sm);
177
+ }
178
+
179
+ .field-content:not(.layout-component):has(.e-small:not(.e-btn)) .field-description {
180
+ font-size: var(--sf-font-size-xs);
181
+ }
182
+
183
+ /* bigger */
184
+ .field-content:not(.layout-component):has(.e-bigger:not(.e-btn)) .field-label {
185
+ font-size: var(--sf-font-size-lg);
186
+ }
187
+
188
+ .field-content:not(.layout-component):has(.e-bigger:not(.e-btn)) .field-description {
189
+ font-size: var(--sf-font-size);
190
+ }
191
+
192
+
193
+ .field-label .required {
194
+ color: #ef4444;
195
+ margin-left: 0.25rem;
196
+ }
197
+
198
+ .field-input {
199
+ width: 100%;
200
+ }
201
+
202
+ .field-input .e-switch-wrapper,
203
+ .field-input .e-checkbox-wrapper {
204
+ margin: 5px;
205
+ margin-left: 0px;
206
+ }
207
+
208
+ /* Split View Container */
209
+ .split-view-container {
210
+ padding: 30px 60px ;
211
+ height: 100%;
212
+ display: flex;
213
+ flex-direction: column;
214
+ background-color: var(--preview-area-color);
215
+ overflow: hidden;
216
+ }
217
+
218
+ .builder-container.e-component .split-view-container {
219
+ height: 100%;
220
+ }
221
+
222
+ .split-header {
223
+ display: flex;
224
+ align-items: center;
225
+ justify-content: center;
226
+ padding: 0.75rem 1.25rem;
227
+ background-color: #2d2d2d;
228
+ border-bottom: 1px solid #3d3d3d;
229
+ }
230
+
231
+ .download-btn {
232
+ padding: 0.5rem 1.25rem;
233
+ font-size: 0.875rem;
234
+ border: 1px solid var(--dragover-border-color);
235
+ border-radius: 0.375rem;
236
+ background-color: #3d3d3d;
237
+ color: #e0e0e0;
238
+ cursor: pointer;
239
+ transition: all 0.2s ease;
240
+ font-weight: 500;
241
+ }
242
+
243
+ .download-btn:hover {
244
+ border-color: #4fc3f7;
245
+ background-color: var(--dragover-border-color);
246
+ color: #ffffff;
247
+ }
248
+
249
+ .split-panels {
250
+ flex: 1;
251
+ display: grid;
252
+ border-radius: 12px;
253
+ grid-template-columns: 1fr;
254
+ gap: 0;
255
+ overflow: hidden;
256
+ }
257
+
258
+ .split-panel {
259
+ display: flex;
260
+ flex-direction: column;
261
+ border-right: 1px solid var(--jsonview-border-color);
262
+ overflow: hidden;
263
+ }
264
+
265
+ .split-panel:last-child {
266
+ border-right: none;
267
+ }
268
+
269
+ .split-panel .json-header {
270
+ background-color: var(--jsonview-header-color);
271
+ border-bottom: 1px solid var(--jsonview-border-color);
272
+ height: 48px;
273
+ padding: 0.875rem 1rem;
274
+ }
275
+
276
+ .split-panel .json-title {
277
+ color: rgb(var(--sf-color-on-surface));
278
+ font-size: 0.875rem;
279
+ }
280
+
281
+ .split-panel .json-title::before {
282
+ font-size: 1rem;
283
+ }
284
+
285
+ .split-panel .json-content {
286
+ flex: 1;
287
+ font-size: 12px;
288
+ padding: 1rem;
289
+ }
290
+
291
+ /* JSON Viewer */
292
+ .json-viewer {
293
+ height: 100%;
294
+ display: flex;
295
+ flex-direction: column;
296
+ overflow: hidden;
297
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
298
+ }
299
+
300
+ .json-header {
301
+ display: flex;
302
+ align-items: center;
303
+ justify-content: space-between;
304
+ padding: 1rem 1.25rem;
305
+ background-color: #2d2d2d;
306
+ border-bottom: 1px solid #3d3d3d;
307
+ }
308
+
309
+ .json-title {
310
+ font-size: 1rem;
311
+ font-weight: 500;
312
+ color: #ffffff;
313
+ display: flex;
314
+ align-items: center;
315
+ gap: 0.5rem;
316
+ }
317
+
318
+ .json-title::before {
319
+ content: '{ }';
320
+ font-size: 1.125rem;
321
+ }
322
+
323
+ .json-content {
324
+ flex: 1;
325
+ margin: 0;
326
+ padding: 1.25rem;
327
+ font-family: 'Consolas', 'Monaco', 'Courier New', monospace;
328
+ font-size: 13px;
329
+ line-height: 1.6;
330
+ color: var(--jsonview-text-color);
331
+ background-color: rgb(var(--sf-color-surface));
332
+ overflow: auto;
333
+ white-space: pre;
334
+ word-wrap: normal;
335
+ }
336
+
337
+ /* Syncfusion Component Overrides */
338
+ .field-input .e-input-group,
339
+ .field-input .e-control-wrapper {
340
+ width: 100%;
341
+ }
342
+
343
+ .field-input .e-float-input {
344
+ width: 100%;
345
+ }
346
+
347
+ /* Light mode - JSON viewer stays dark themed */
348
+ [data-theme="light"] .json-viewer {
349
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
350
+ }
351
+
352
+ /* Radio Button Group */
353
+ .form-field .field-input>.e-radio {
354
+ display: flex;
355
+ flex-direction: column;
356
+ gap: 0.75rem;
357
+ }
358
+
359
+ .form-field .e-radio+label {
360
+ margin-left: 0.5rem;
361
+ }
362
+
363
+
364
+
365
+ /* Layout Component Styles */
366
+ .form-panel {
367
+ border: 1px solid rgb(var(--sf-color-line-color));
368
+ border-radius: var(--border-radius);
369
+ padding: 0;
370
+ margin: 0;
371
+ }
372
+
373
+ .panel-legend {
374
+ font-size: 1.5rem;
375
+ font-weight: 600;
376
+ color: var(--jsonview-text-color);
377
+ padding: 0 0.5rem;
378
+ margin-left: 0.5rem;
379
+ }
380
+
381
+ .panel-drop-zone,
382
+ .tab-drop-zone {
383
+ padding: 0.8rem;
384
+ border: 2px dashed rgba(var(--sf-color-on-surface-variant), 0.3);
385
+ border-radius: var(--border-radius);
386
+ margin: 0.5rem;
387
+ transition: all 0.2s ease;
388
+ background-color: rgba(var(--sf-color-surface), 0.5);
389
+ }
390
+
391
+ .panel-drop-zone.empty,
392
+ .tab-drop-zone.empty {
393
+ min-height: 150px;
394
+ display: flex;
395
+ align-items: center;
396
+ justify-content: center;
397
+ }
398
+
399
+ .table-cell.drop-zone:has(> .drop-zone-text) {
400
+ align-content: center;
401
+ text-align: center;
402
+ height: 100px;
403
+ padding: 1rem;
404
+ }
405
+
406
+ .panel-drop-zone.dragging-over.empty,
407
+ .tab-drop-zone.dragging-over.empty {
408
+ border-color: var(--dragover-border-color);
409
+ background-color: var(--dragover-background-color);
410
+ }
411
+
412
+ .panel-children {
413
+ display: flex;
414
+ flex-direction: column;
415
+ gap: 1rem;
416
+ width: 100%;
417
+ }
418
+
419
+ .panel-child-field {
420
+ display: flex;
421
+ flex-direction: column;
422
+ gap: 0.5rem;
423
+ }
424
+
425
+ .drop-zone-text {
426
+ color: var(--jsonview-text-color);
427
+ opacity: 0.5;
428
+ font-size: 0.875rem;
429
+ margin: 0;
430
+ }
431
+
432
+ /* Table Layout */
433
+ .form-table {
434
+ width: 100%;
435
+ border: 1px solid rgb(var(--sf-color-line-color));
436
+ border-radius: var(--border-radius);
437
+ overflow-x: auto;
438
+ }
439
+
440
+ .table-grid {
441
+ display: table;
442
+ width: 100%;
443
+ border-collapse: separate;
444
+ border-spacing: 0px;
445
+ overflow-x: auto;
446
+ overflow-y: hidden;
447
+ }
448
+
449
+ .row {
450
+ display: table-row;
451
+ background: transparent;
452
+ }
453
+
454
+ .col, [class^="col-"] {
455
+ display: table-cell;
456
+ vertical-align: top;
457
+ min-height: 100%;
458
+ }
459
+
460
+ .col {
461
+ width: auto;
462
+ }
463
+ .col-1 {
464
+ width: 8.33333333%;
465
+ }
466
+ .col-2 {
467
+ width: 16.66666667%;
468
+ }
469
+ .col-3 {
470
+ width: 25%;
471
+ }
472
+ .col-4 {
473
+ width: 33.33333333%;
474
+ }
475
+ .col-5 {
476
+ width: 41.66666667%;
477
+ }
478
+ .col-6 {
479
+ width: 50%;
480
+ }
481
+ .col-7 {
482
+ width: 58.33333333%;
483
+ }
484
+ .col-8 {
485
+ width: 66.66666667%;
486
+ }
487
+ .col-9 {
488
+ width: 75%;
489
+ }
490
+ .col-10 {
491
+ width: 83.33333333%;
492
+ }
493
+ .col-11 {
494
+ width: 91.66666667%;
495
+ }
496
+ .col-12 {
497
+ width: auto;
498
+ }
499
+
500
+ .table-row {
501
+ border-bottom: 1px solid rgb(var(--sf-color-line-color));
502
+ }
503
+
504
+ .table-row:last-child {
505
+ border-bottom: none;
506
+ }
507
+
508
+ .table-cell {
509
+ padding: .8rem;
510
+ border-right: 1px solid rgb(var(--sf-color-line-color));
511
+ align-items: center;
512
+ }
513
+
514
+ .table-cell:last-child {
515
+ border-right: none;
516
+ }
517
+
518
+ .table-cell.drop-zone {
519
+ border: 2px dashed rgba(var(--sf-color-on-surface-variant), 0.3);
520
+ background-color: rgba(var(--sf-color-surface), 0.5);
521
+ transition: all 0.2s ease;
522
+ }
523
+
524
+ .table-cell.drop-zone.dragging-over:has(.drop-zone-text) {
525
+ border-color: var(--dragover-border-color);
526
+ background-color: var(--dragover-background-color);
527
+ border-width: 2px;
528
+ }
529
+
530
+ .table-row:last-child .table-cell.drop-zone {
531
+ border-bottom: 2px dashed rgba(var(--sf-color-on-surface-variant), 0.3);
532
+ }
533
+
534
+ .table-row:last-child .table-cell.drop-zone.dragging-over:has(.drop-zone-text) {
535
+ border-bottom: 2px dashed var(--dragover-border-color);
536
+ }
537
+
538
+ /* Nested components in table cells */
539
+ .table-cell .nested-components {
540
+ width: 100%;
541
+ display: flex;
542
+ flex-direction: column;
543
+ gap: 1rem;
544
+ }
545
+
546
+ .table-cell .nested-field {
547
+ display: flex;
548
+ flex-direction: column;
549
+ gap: 0.25rem;
550
+ }
551
+
552
+ .table-cell .nested-field-label {
553
+ font-size: 0.875rem;
554
+ font-weight: 500;
555
+ color: var(--jsonview-text-color);
556
+ cursor: pointer;
557
+ margin: 0;
558
+ }
559
+
560
+ .table-cell .nested-field-label .required {
561
+ color: #ef4444;
562
+ margin-left: 0.25rem;
563
+ }
564
+
565
+ .table-cell .nested-field-input {
566
+ width: 100%;
567
+ }
568
+
569
+ /* Tabs Layout with Syncfusion */
570
+ .form-tabs {
571
+ width: 100%;
572
+ }
573
+
574
+ .form-tabs .e-content {
575
+ padding: 0;
576
+ }
577
+
578
+ .form-tabs .e-content .e-item {
579
+ padding: 0;
580
+ }
581
+
582
+ .tab-drop-zone {
583
+ padding: .8rem;
584
+ border: 2px dashed rgba(var(--sf-color-on-surface-variant), 0.3);
585
+ border-radius: var(--border-radius);
586
+ display: flex;
587
+ flex-direction: column;
588
+ transition: all 0.2s ease;
589
+ background-color: rgba(var(--sf-color-surface), 0.5);
590
+ }
591
+
592
+ .tab-drop-zone.empty {
593
+ align-items: center;
594
+ justify-content: center;
595
+ }
596
+
597
+ .tab-children {
598
+ width: 100%;
599
+ display: flex;
600
+ flex-direction: column;
601
+ gap: 1rem;
602
+ }
603
+
604
+ .tab-child-field {
605
+ display: flex;
606
+ flex-direction: column;
607
+ gap: 0.5rem;
608
+ }
609
+
610
+ /* Layout components inside other layouts - no label */
611
+ .panel-child-field .field-input>.form-panel,
612
+ .panel-child-field .field-input>.form-table,
613
+ .panel-child-field .field-input>.form-tabs-container,
614
+ .tab-child-field .field-input>.form-panel,
615
+ .tab-child-field .field-input>.form-table,
616
+ .tab-child-field .field-input>.form-tabs-container,
617
+ .nested-field-input>.form-panel,
618
+ .nested-field-input>.form-table,
619
+ .nested-field-input>.form-tabs-container {
620
+ margin-top: 0;
621
+ }
622
+
623
+ .form-field-draggable.is-being-dragged .panel-drop-zone:hover,
624
+ .form-field-draggable.is-being-dragged .tab-drop-zone:hover,
625
+ .form-field-draggable.is-being-dragged .table-cell:hover {
626
+ border-color: rgba(var(--sf-color-on-surface-variant), 0.3) !important;
627
+ background-color: transparent !important;
628
+ }
629
+
630
+
631
+ .e-tooltip .e-msg-icon::before {
632
+ content: "\e800";
633
+ font-family: "e-icons";
634
+ color: var(--color-sf-msg-icon-color);
635
+ font-size: 16px;
636
+ height: 16px;
637
+ margin: 3px 4px;
638
+ display: flex;
639
+ line-height: 16px;
640
+ }
641
+
642
+ .e-dropdown-popup {
643
+ background: transparent;
644
+ z-index: 9999;
645
+ }
646
+
647
+ .e-dropdown-popup ul {
648
+ background-color: rgb(var(--sf-color-background));
649
+ }
650
+
651
+ .e-control.e-dialog {
652
+ overflow: auto;
653
+ }
654
+
655
+ .e-dialog .e-dlg-header {
656
+ width: 97%;
657
+ }
658
+
659
+ .e-dlg-header .db-dialog * {
660
+ font-size: 14px;
661
+ }
662
+
663
+ .e-dlg-header .db-dialog {
664
+ padding: 0px 18px;
665
+ }
666
+
667
+ .e-card .e-card-content {
668
+ padding: 10px !important;
669
+ }
670
+
671
+ .e-card > .e-card-content > .panel-drop-zone {
672
+ margin: 0px;
673
+ }
674
+
675
+ .e-tab:not(.custom-tab) .e-content > .e-item.e-active {
676
+ height: calc(100dvh - var(--topbar-height) - var(--topbar-height) - 6rem);
677
+ scrollbar-color: var(--scrollbar-thumb-hover) rgb(var(--sf-color-background));
678
+ }
679
+
680
+ .preview-main-content .e-tab:not(.custom-tab) .e-content > .e-item.e-active {
681
+ height: unset;
682
+ }
683
+
684
+ .builder-container.e-component .e-tab:not(.custom-tab) .e-content > .e-item.e-active {
685
+ height: 100%;
686
+ }
687
+
688
+ #radiogroup {
689
+ display: flex;
690
+ flex-direction: column;
691
+ gap: 0.75rem;
692
+ }
693
+
694
+ @container (max-width: 820px) {
695
+ .form-preview-area {
696
+ padding-left: 10px;
697
+ padding-right: 10px;
698
+ }
699
+ .split-view-container {
700
+ padding: 30px 20px;
701
+ }
702
+ }