Flowfile 0.3.8__py3-none-any.whl → 0.3.10__py3-none-any.whl

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.

Potentially problematic release.


This version of Flowfile might be problematic. Click here for more details.

Files changed (161) hide show
  1. flowfile/__init__.py +4 -3
  2. flowfile/api.py +1 -1
  3. flowfile/web/static/assets/{CloudConnectionManager-c20a740f.js → CloudConnectionManager-d7c2c028.js} +2 -2
  4. flowfile/web/static/assets/{CloudStorageReader-960b400a.js → CloudStorageReader-d467329f.js} +11 -78
  5. flowfile/web/static/assets/{CloudStorageWriter-e3decbdd.js → CloudStorageWriter-071b8b00.js} +12 -79
  6. flowfile/web/static/assets/{CloudStorageWriter-49c9a4b2.css → CloudStorageWriter-b0ee067f.css} +24 -24
  7. flowfile/web/static/assets/ContextMenu-2dea5e27.js +41 -0
  8. flowfile/web/static/assets/{SettingsSection-9c836ecc.css → ContextMenu-4c74eef1.css} +0 -21
  9. flowfile/web/static/assets/ContextMenu-63cfa99b.css +26 -0
  10. flowfile/web/static/assets/ContextMenu-785554c4.js +41 -0
  11. flowfile/web/static/assets/ContextMenu-a51e19ea.js +41 -0
  12. flowfile/web/static/assets/ContextMenu-c13f91d0.css +26 -0
  13. flowfile/web/static/assets/{CrossJoin-41efa4cb.css → CrossJoin-1119d18e.css} +18 -18
  14. flowfile/web/static/assets/{CrossJoin-d67e2405.js → CrossJoin-cf68ec7a.js} +14 -84
  15. flowfile/web/static/assets/{DatabaseConnectionSettings-a81e0f7e.js → DatabaseConnectionSettings-435c5dd8.js} +3 -3
  16. flowfile/web/static/assets/{DatabaseManager-9ea35e84.js → DatabaseManager-349e33a8.js} +2 -2
  17. flowfile/web/static/assets/{DatabaseReader-9578bfa5.js → DatabaseReader-8075bd28.js} +14 -114
  18. flowfile/web/static/assets/{DatabaseReader-f50c6558.css → DatabaseReader-ae61773c.css} +0 -27
  19. flowfile/web/static/assets/{DatabaseWriter-19531098.js → DatabaseWriter-3e2dda89.js} +13 -74
  20. flowfile/web/static/assets/{ExploreData-5bdae813.css → ExploreData-2d0cf4db.css} +8 -14
  21. flowfile/web/static/assets/ExploreData-76ec698c.js +192 -0
  22. flowfile/web/static/assets/{ExternalSource-2297ef96.js → ExternalSource-609a265c.js} +8 -79
  23. flowfile/web/static/assets/{Filter-f211c03a.js → Filter-97cff793.js} +12 -85
  24. flowfile/web/static/assets/{Filter-a9d08ba1.css → Filter-f62091b3.css} +3 -3
  25. flowfile/web/static/assets/{Formula-4207ea31.js → Formula-09de0ec9.js} +18 -85
  26. flowfile/web/static/assets/{Formula-29f19d21.css → Formula-bb96803d.css} +4 -4
  27. flowfile/web/static/assets/{FuzzyMatch-6857de82.css → FuzzyMatch-1010f966.css} +42 -42
  28. flowfile/web/static/assets/{FuzzyMatch-bf120df0.js → FuzzyMatch-bdf70248.js} +16 -87
  29. flowfile/web/static/assets/{GraphSolver-5bb7497a.js → GraphSolver-0b5a0e05.js} +13 -159
  30. flowfile/web/static/assets/GraphSolver-f0cb7bfb.css +22 -0
  31. flowfile/web/static/assets/{Unique-b5615727.css → GroupBy-b9505323.css} +8 -8
  32. flowfile/web/static/assets/{GroupBy-92c81b65.js → GroupBy-eaddadde.js} +12 -75
  33. flowfile/web/static/assets/{Join-4e49a274.js → Join-3313371b.js} +15 -85
  34. flowfile/web/static/assets/{Join-f45eff22.css → Join-fd79b451.css} +20 -20
  35. flowfile/web/static/assets/{ManualInput-a71b52c6.css → ManualInput-3246a08d.css} +20 -20
  36. flowfile/web/static/assets/{ManualInput-90998ae8.js → ManualInput-e8bfc0be.js} +11 -82
  37. flowfile/web/static/assets/{Output-81e3e917.js → Output-7303bb09.js} +13 -243
  38. flowfile/web/static/assets/Output-ddc9079f.css +37 -0
  39. flowfile/web/static/assets/{Pivot-a3419842.js → Pivot-3b1c54ef.js} +14 -138
  40. flowfile/web/static/assets/Pivot-cf333e3d.css +22 -0
  41. flowfile/web/static/assets/PivotValidation-3bb36c8f.js +61 -0
  42. flowfile/web/static/assets/PivotValidation-891ddfb0.css +13 -0
  43. flowfile/web/static/assets/PivotValidation-c46cd420.css +13 -0
  44. flowfile/web/static/assets/PivotValidation-eaa819c0.js +61 -0
  45. flowfile/web/static/assets/{PolarsCode-72710deb.js → PolarsCode-aa12e25d.js} +13 -80
  46. flowfile/web/static/assets/Read-6b17491f.css +62 -0
  47. flowfile/web/static/assets/Read-a2bfc618.js +243 -0
  48. flowfile/web/static/assets/RecordCount-aa0dc082.js +53 -0
  49. flowfile/web/static/assets/{RecordId-10baf191.js → RecordId-48ee1a3b.js} +8 -80
  50. flowfile/web/static/assets/SQLQueryComponent-36cef432.css +27 -0
  51. flowfile/web/static/assets/SQLQueryComponent-e149dbf2.js +38 -0
  52. flowfile/web/static/assets/{Sample-3ed9a0ae.js → Sample-f06cb97a.js} +8 -77
  53. flowfile/web/static/assets/{SecretManager-0d49c0e8.js → SecretManager-37f34886.js} +2 -2
  54. flowfile/web/static/assets/{Select-8a02a0b3.js → Select-b60e6c47.js} +11 -85
  55. flowfile/web/static/assets/SettingsSection-2e4d03c4.css +21 -0
  56. flowfile/web/static/assets/SettingsSection-5c696bee.css +20 -0
  57. flowfile/web/static/assets/SettingsSection-70e5a7b1.js +53 -0
  58. flowfile/web/static/assets/SettingsSection-71e6b7e3.css +21 -0
  59. flowfile/web/static/assets/{SettingsSection-4c0f45f5.js → SettingsSection-75b6cf4f.js} +2 -40
  60. flowfile/web/static/assets/SettingsSection-e57a672e.js +45 -0
  61. flowfile/web/static/assets/{GroupBy-ab1ea74b.css → Sort-3643d625.css} +8 -8
  62. flowfile/web/static/assets/{Sort-f55c9f9d.js → Sort-51b1ee4d.js} +12 -97
  63. flowfile/web/static/assets/{TextToRows-5dbc2145.js → TextToRows-26835f8f.js} +14 -83
  64. flowfile/web/static/assets/{TextToRows-c92d1ec2.css → TextToRows-5d2c1190.css} +9 -9
  65. flowfile/web/static/assets/{UnavailableFields-a1768e52.js → UnavailableFields-88a4cd0c.js} +2 -2
  66. flowfile/web/static/assets/Union-4d0088eb.js +77 -0
  67. flowfile/web/static/assets/{Union-8d9ac7f9.css → Union-af6c3d9b.css} +6 -6
  68. flowfile/web/static/assets/{Unique-46b250da.js → Unique-7d554a62.js} +22 -91
  69. flowfile/web/static/assets/{Sort-7ccfa0fe.css → Unique-f9fb0809.css} +8 -8
  70. flowfile/web/static/assets/Unpivot-1e422df3.css +30 -0
  71. flowfile/web/static/assets/{Unpivot-25ac84cc.js → Unpivot-4668595c.js} +12 -166
  72. flowfile/web/static/assets/UnpivotValidation-0d240eeb.css +13 -0
  73. flowfile/web/static/assets/UnpivotValidation-d4f0e0e8.js +51 -0
  74. flowfile/web/static/assets/{ExploreData-40476474.js → VueGraphicWalker-5324d566.js} +4 -264
  75. flowfile/web/static/assets/VueGraphicWalker-ed5ab88b.css +6 -0
  76. flowfile/web/static/assets/{api-6ef0dcef.js → api-271ed117.js} +1 -1
  77. flowfile/web/static/assets/{api-a0abbdc7.js → api-31e4fea6.js} +1 -1
  78. flowfile/web/static/assets/{designer-186f2e71.css → designer-091bdc3f.css} +819 -184
  79. flowfile/web/static/assets/{designer-13eabd83.js → designer-bf3d9487.js} +2214 -680
  80. flowfile/web/static/assets/{documentation-b87e7f6f.js → documentation-4d0a1cea.js} +1 -1
  81. flowfile/web/static/assets/{dropDown-13564764.js → dropDown-025888df.js} +1 -1
  82. flowfile/web/static/assets/{fullEditor-fd2cd6f9.js → fullEditor-1df991ec.js} +2 -2
  83. flowfile/web/static/assets/{genericNodeSettings-71e11604.js → genericNodeSettings-d3b2b2ac.js} +3 -3
  84. flowfile/web/static/assets/{index-f6c15e76.js → index-d0518598.js} +210 -31
  85. flowfile/web/static/assets/{Output-48f81019.css → outputCsv-9cc59e0b.css} +0 -143
  86. flowfile/web/static/assets/outputCsv-d8457527.js +86 -0
  87. flowfile/web/static/assets/outputExcel-b41305c0.css +102 -0
  88. flowfile/web/static/assets/outputExcel-be89153e.js +56 -0
  89. flowfile/web/static/assets/outputParquet-cf8cf3f2.css +4 -0
  90. flowfile/web/static/assets/outputParquet-fabb445a.js +31 -0
  91. flowfile/web/static/assets/readCsv-bca3ed53.css +52 -0
  92. flowfile/web/static/assets/readCsv-e8359522.js +178 -0
  93. flowfile/web/static/assets/readExcel-dabaf51b.js +203 -0
  94. flowfile/web/static/assets/readExcel-e1b381ea.css +64 -0
  95. flowfile/web/static/assets/readParquet-cee068e2.css +19 -0
  96. flowfile/web/static/assets/readParquet-e0771ef2.js +26 -0
  97. flowfile/web/static/assets/{secretApi-dd636aa2.js → secretApi-ce823eee.js} +1 -1
  98. flowfile/web/static/assets/{selectDynamic-af36165e.js → selectDynamic-5476546e.js} +7 -7
  99. flowfile/web/static/assets/{selectDynamic-b062bc9b.css → selectDynamic-aa913ff4.css} +16 -16
  100. flowfile/web/static/assets/{vue-codemirror.esm-2847001e.js → vue-codemirror.esm-9ed00d50.js} +29 -33
  101. flowfile/web/static/assets/{vue-content-loader.es-0371da73.js → vue-content-loader.es-7bca2d9b.js} +1 -1
  102. flowfile/web/static/index.html +1 -1
  103. {flowfile-0.3.8.dist-info → flowfile-0.3.10.dist-info}/METADATA +2 -1
  104. {flowfile-0.3.8.dist-info → flowfile-0.3.10.dist-info}/RECORD +147 -117
  105. flowfile_core/configs/flow_logger.py +5 -13
  106. flowfile_core/configs/node_store/nodes.py +303 -44
  107. flowfile_core/configs/settings.py +6 -3
  108. flowfile_core/database/connection.py +5 -21
  109. flowfile_core/fileExplorer/funcs.py +239 -121
  110. flowfile_core/flowfile/code_generator/code_generator.py +36 -0
  111. flowfile_core/flowfile/flow_data_engine/flow_data_engine.py +60 -80
  112. flowfile_core/flowfile/flow_data_engine/flow_file_column/main.py +61 -0
  113. flowfile_core/flowfile/flow_data_engine/fuzzy_matching/prepare_for_fuzzy_match.py +44 -3
  114. flowfile_core/flowfile/flow_data_engine/subprocess_operations/models.py +3 -3
  115. flowfile_core/flowfile/flow_data_engine/subprocess_operations/subprocess_operations.py +33 -10
  116. flowfile_core/flowfile/flow_graph.py +223 -118
  117. flowfile_core/flowfile/flow_node/flow_node.py +56 -19
  118. flowfile_core/flowfile/flow_node/models.py +0 -2
  119. flowfile_core/flowfile/flow_node/schema_callback.py +138 -43
  120. flowfile_core/flowfile/graph_tree/graph_tree.py +250 -0
  121. flowfile_core/flowfile/graph_tree/models.py +15 -0
  122. flowfile_core/flowfile/handler.py +22 -3
  123. flowfile_core/flowfile/manage/compatibility_enhancements.py +1 -1
  124. flowfile_core/flowfile/{flow_data_engine/fuzzy_matching/settings_validator.py → schema_callbacks.py} +72 -16
  125. flowfile_core/flowfile/setting_generator/settings.py +2 -2
  126. flowfile_core/flowfile/util/execution_orderer.py +9 -0
  127. flowfile_core/flowfile/util/node_skipper.py +8 -0
  128. flowfile_core/main.py +4 -1
  129. flowfile_core/routes/routes.py +59 -10
  130. flowfile_core/schemas/input_schema.py +0 -1
  131. flowfile_core/schemas/output_model.py +5 -2
  132. flowfile_core/schemas/schemas.py +48 -3
  133. flowfile_core/schemas/transform_schema.py +28 -38
  134. flowfile_frame/__init__.py +1 -4
  135. flowfile_frame/flow_frame.py +33 -4
  136. flowfile_frame/flow_frame.pyi +2 -0
  137. flowfile_worker/__init__.py +6 -35
  138. flowfile_worker/funcs.py +7 -3
  139. flowfile_worker/main.py +5 -2
  140. flowfile_worker/models.py +3 -1
  141. flowfile_worker/routes.py +47 -5
  142. shared/__init__.py +15 -0
  143. shared/storage_config.py +243 -0
  144. flowfile/web/static/assets/GraphSolver-17fd26db.css +0 -68
  145. flowfile/web/static/assets/Pivot-f415e85f.css +0 -35
  146. flowfile/web/static/assets/Read-80dc1675.css +0 -197
  147. flowfile/web/static/assets/Read-c4059daf.js +0 -701
  148. flowfile/web/static/assets/RecordCount-c2b5e095.js +0 -122
  149. flowfile/web/static/assets/Union-f2aefdc9.js +0 -146
  150. flowfile/web/static/assets/Unpivot-246e9bbd.css +0 -77
  151. flowfile/web/static/assets/nodeTitle-988d9efe.js +0 -227
  152. flowfile/web/static/assets/nodeTitle-f4b12bcb.css +0 -134
  153. flowfile_worker/polars_fuzzy_match/matcher.py +0 -435
  154. flowfile_worker/polars_fuzzy_match/models.py +0 -36
  155. flowfile_worker/polars_fuzzy_match/pre_process.py +0 -213
  156. flowfile_worker/polars_fuzzy_match/process.py +0 -86
  157. flowfile_worker/polars_fuzzy_match/utils.py +0 -50
  158. {flowfile-0.3.8.dist-info → flowfile-0.3.10.dist-info}/LICENSE +0 -0
  159. {flowfile-0.3.8.dist-info → flowfile-0.3.10.dist-info}/WHEEL +0 -0
  160. {flowfile-0.3.8.dist-info → flowfile-0.3.10.dist-info}/entry_points.txt +0 -0
  161. {flowfile_worker/polars_fuzzy_match → flowfile_core/flowfile/graph_tree}/__init__.py +0 -0
@@ -1,9 +1,9 @@
1
1
 
2
- .button-group[data-v-fad9205d] {
2
+ .button-group[data-v-c0f9acc7] {
3
3
  display: flex;
4
4
  gap: 10px;
5
5
  }
6
- .button-group .el-button[data-v-fad9205d] {
6
+ .button-group .el-button[data-v-c0f9acc7] {
7
7
  display: flex;
8
8
  align-items: center;
9
9
  gap: 6px;
@@ -20,20 +20,20 @@
20
20
  }
21
21
 
22
22
  /* Run button - normal state */
23
- .button-group .el-button[data-v-fad9205d]:first-child:not([disabled]) {
23
+ .button-group .el-button[data-v-c0f9acc7]:first-child:not([disabled]) {
24
24
  background-color: rgb(2, 27, 45) !important;
25
25
  border: 1px solid rgb(17, 64, 97) !important;
26
26
  color: white !important;
27
27
  }
28
28
 
29
29
  /* Run button - hover state */
30
- .button-group .el-button[data-v-fad9205d]:first-child:not([disabled]):hover {
30
+ .button-group .el-button[data-v-c0f9acc7]:first-child:not([disabled]):hover {
31
31
  background-color: rgba(65, 55, 200, 0.95) !important;
32
32
  border-color: rgba(65, 55, 200, 1) !important;
33
33
  }
34
34
 
35
35
  /* Run button - disabled state */
36
- .button-group .el-button:first-child[disabled][data-v-fad9205d] {
36
+ .button-group .el-button:first-child[disabled][data-v-c0f9acc7] {
37
37
  background-color: rgba(16, 24, 40, 0.3) !important;
38
38
  border: 1px solid rgba(16, 24, 40, 0.2) !important;
39
39
  color: rgba(255, 255, 255, 0.8) !important;
@@ -41,25 +41,25 @@
41
41
  }
42
42
 
43
43
  /* Cancel button */
44
- .button-group .el-button[data-v-fad9205d]:nth-child(2) {
44
+ .button-group .el-button[data-v-c0f9acc7]:nth-child(2) {
45
45
  background-color: rgba(220, 53, 69, 0.9) !important;
46
46
  border: 1px solid rgba(220, 53, 69, 0.95) !important;
47
47
  color: white !important;
48
48
  }
49
49
 
50
50
  /* Cancel button - hover state */
51
- .button-group .el-button[data-v-fad9205d]:nth-child(2):hover {
51
+ .button-group .el-button[data-v-c0f9acc7]:nth-child(2):hover {
52
52
  background-color: rgba(200, 35, 51, 0.95) !important;
53
53
  border-color: rgba(200, 35, 51, 1) !important;
54
54
  }
55
55
 
56
56
  /* Active state for both buttons */
57
- .button-group .el-button[data-v-fad9205d]:active {
57
+ .button-group .el-button[data-v-c0f9acc7]:active {
58
58
  transform: translateY(1px);
59
59
  box-shadow: none;
60
60
  }
61
61
 
62
- .browser-title[data-v-d5bb1173] {
62
+ .browser-title[data-v-b74852a7] {
63
63
  display: flex;
64
64
  align-items: center;
65
65
  gap: 8px;
@@ -68,28 +68,28 @@
68
68
  font-weight: 600;
69
69
  color: #333;
70
70
  }
71
- .mode-selector[data-v-d5bb1173] {
71
+ .mode-selector[data-v-b74852a7] {
72
72
  display: flex;
73
73
  justify-content: center;
74
74
  }
75
- .browser-content[data-v-d5bb1173] {
75
+ .browser-content[data-v-b74852a7] {
76
76
  display: flex;
77
77
  flex-direction: column;
78
78
  height: calc(100% - 116px); /* Adjust based on header height */
79
79
  overflow: hidden;
80
80
  }
81
- .browser-toolbar[data-v-d5bb1173] {
81
+ .browser-toolbar[data-v-b74852a7] {
82
82
  padding: 16px;
83
83
  background-color: #fff;
84
84
  border-bottom: 1px solid #e9ecef;
85
85
  }
86
- .path-navigation[data-v-d5bb1173] {
86
+ .path-navigation[data-v-b74852a7] {
87
87
  display: flex;
88
88
  align-items: center;
89
89
  gap: 12px;
90
90
  margin-bottom: 12px;
91
91
  }
92
- .nav-button[data-v-d5bb1173] {
92
+ .nav-button[data-v-b74852a7] {
93
93
  display: inline-flex;
94
94
  align-items: center;
95
95
  gap: 4px;
@@ -102,11 +102,11 @@
102
102
  cursor: pointer;
103
103
  transition: all 0.2s ease;
104
104
  }
105
- .nav-button[data-v-d5bb1173]:hover:not(:disabled) {
105
+ .nav-button[data-v-b74852a7]:hover:not(:disabled) {
106
106
  background-color: #f8f9fa;
107
107
  border-color: #ced4da;
108
108
  }
109
- .current-path[data-v-d5bb1173] {
109
+ .current-path[data-v-b74852a7] {
110
110
  flex: 1;
111
111
  padding: 8px 12px;
112
112
  background-color: #f8f9fa;
@@ -115,57 +115,57 @@
115
115
  font-family: monospace;
116
116
  color: #495057;
117
117
  }
118
- .search-container[data-v-d5bb1173] {
118
+ .search-container[data-v-b74852a7] {
119
119
  display: flex;
120
120
  align-items: center;
121
121
  gap: 16px;
122
122
  flex: 1;
123
123
  }
124
- .search-input[data-v-d5bb1173] {
124
+ .search-input[data-v-b74852a7] {
125
125
  flex: 1;
126
126
  }
127
- .browser-main[data-v-d5bb1173] {
127
+ .browser-main[data-v-b74852a7] {
128
128
  flex: 1;
129
129
  overflow-y: auto;
130
130
  padding: 16px;
131
131
  }
132
- .file-item[data-v-d5bb1173] {
132
+ .file-item[data-v-b74852a7] {
133
133
  border: 1px solid #e9ecef;
134
134
  border-radius: 8px;
135
135
  overflow: hidden;
136
136
  transition: all 0.2s ease;
137
137
  }
138
- .file-item[data-v-d5bb1173]:hover {
138
+ .file-item[data-v-b74852a7]:hover {
139
139
  transform: translateY(-2px);
140
140
  box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
141
141
  }
142
- .file-item.selected[data-v-d5bb1173] {
142
+ .file-item.selected[data-v-b74852a7] {
143
143
  border-color: #3b82f6;
144
144
  background-color: #eff6ff;
145
145
  }
146
- .file-item-content[data-v-d5bb1173] {
146
+ .file-item-content[data-v-b74852a7] {
147
147
  padding: 12px;
148
148
  display: flex;
149
149
  align-items: center;
150
150
  gap: 12px;
151
151
  }
152
- .file-icon-wrapper[data-v-d5bb1173] {
152
+ .file-icon-wrapper[data-v-b74852a7] {
153
153
  display: flex;
154
154
  align-items: center;
155
155
  justify-content: center;
156
156
  width: 30px;
157
157
  height: 30px;
158
158
  }
159
- .file-icon[data-v-d5bb1173] {
159
+ .file-icon[data-v-b74852a7] {
160
160
  width: 24px;
161
161
  height: 24px;
162
162
  color: #6b7280;
163
163
  }
164
- .file-details[data-v-d5bb1173] {
164
+ .file-details[data-v-b74852a7] {
165
165
  flex: 1;
166
166
  min-width: 0;
167
167
  }
168
- .file-name[data-v-d5bb1173] {
168
+ .file-name[data-v-b74852a7] {
169
169
  font-weight: 500;
170
170
  color: #1f2937;
171
171
  margin-bottom: 4px;
@@ -173,11 +173,11 @@
173
173
  overflow: hidden;
174
174
  text-overflow: ellipsis;
175
175
  }
176
- .file-info[data-v-d5bb1173] {
176
+ .file-info[data-v-b74852a7] {
177
177
  font-size: 12px;
178
178
  color: #6b7280;
179
179
  }
180
- .browser-actions[data-v-d5bb1173] {
180
+ .browser-actions[data-v-b74852a7] {
181
181
  padding: 16px;
182
182
  background-color: #f8f9fa;
183
183
  border-top: 1px solid #e9ecef;
@@ -188,25 +188,25 @@
188
188
  box-sizing: border-box;
189
189
  gap: 12px; /* Add gap between buttons */
190
190
  }
191
- .selected-file[data-v-d5bb1173] {
191
+ .selected-file[data-v-b74852a7] {
192
192
  color: #6b7280;
193
193
  font-size: 14px;
194
194
  }
195
- .loading-state[data-v-d5bb1173],
196
- .error-state[data-v-d5bb1173] {
195
+ .loading-state[data-v-b74852a7],
196
+ .error-state[data-v-b74852a7] {
197
197
  display: flex;
198
198
  align-items: center;
199
199
  justify-content: center;
200
200
  height: 200px;
201
201
  color: #6b7280;
202
202
  }
203
- .error-state[data-v-d5bb1173] {
203
+ .error-state[data-v-b74852a7] {
204
204
  color: #dc2626;
205
205
  }
206
- .hidden-file[data-v-d5bb1173] {
206
+ .hidden-file[data-v-b74852a7] {
207
207
  opacity: 0.5;
208
208
  }
209
- .file-browser[data-v-d5bb1173] {
209
+ .file-browser[data-v-b74852a7] {
210
210
  display: flex;
211
211
  flex-direction: column;
212
212
  height: 70vh; /* Set to 70% of viewport height */
@@ -214,20 +214,20 @@
214
214
  border-radius: 8px;
215
215
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
216
216
  }
217
- .browser-content[data-v-d5bb1173] {
217
+ .browser-content[data-v-b74852a7] {
218
218
  display: flex;
219
219
  flex-direction: column;
220
220
  flex: 1;
221
221
  min-height: 0; /* Enable proper flex child scrolling */
222
222
  overflow: hidden;
223
223
  }
224
- .browser-main[data-v-d5bb1173] {
224
+ .browser-main[data-v-b74852a7] {
225
225
  flex: 1;
226
226
  overflow-y: auto; /* Make this section scrollable */
227
227
  padding: 16px;
228
228
  min-height: 0; /* Enable proper flex child scrolling */
229
229
  }
230
- .grid-container[data-v-d5bb1173] {
230
+ .grid-container[data-v-b74852a7] {
231
231
  display: grid;
232
232
  grid-template-columns: repeat(auto-fill, minmax(205px, 1fr));
233
233
  gap: 16px;
@@ -235,25 +235,25 @@
235
235
  }
236
236
 
237
237
  /* Optional: if you want to maintain icon size consistency */
238
- .file-icon[data-v-d5bb1173] {
238
+ .file-icon[data-v-b74852a7] {
239
239
  width: 24px;
240
240
  height: 24px;
241
241
  object-fit: contain;
242
242
  }
243
243
 
244
244
  /* Add new styles for sort controls */
245
- .search-and-sort-container[data-v-d5bb1173] {
245
+ .search-and-sort-container[data-v-b74852a7] {
246
246
  display: flex;
247
247
  flex-direction: column;
248
248
  gap: 12px;
249
249
  }
250
- .sort-controls[data-v-d5bb1173] {
250
+ .sort-controls[data-v-b74852a7] {
251
251
  display: flex;
252
252
  align-items: center;
253
253
  gap: 8px;
254
254
  min-width: 180px; /* Prevent select from being too narrow */
255
255
  }
256
- .sort-direction-button[data-v-d5bb1173] {
256
+ .sort-direction-button[data-v-b74852a7] {
257
257
  display: inline-flex;
258
258
  align-items: center;
259
259
  justify-content: center;
@@ -261,14 +261,14 @@
261
261
  height: 32px;
262
262
  padding: 0;
263
263
  }
264
- .controls-row[data-v-d5bb1173] {
264
+ .controls-row[data-v-b74852a7] {
265
265
  display: flex;
266
266
  align-items: center;
267
267
  gap: 16px;
268
268
  margin-top: 12px;
269
269
  }
270
270
 
271
- .action-buttons[data-v-7b6ecb3e] {
271
+ .action-buttons[data-v-2566c44c] {
272
272
  padding-left: 20px;
273
273
  display: flex;
274
274
  align-items: center;
@@ -281,7 +281,7 @@
281
281
  BlinkMacSystemFont,
282
282
  sans-serif;
283
283
  }
284
- .action-btn[data-v-7b6ecb3e] {
284
+ .action-btn[data-v-2566c44c] {
285
285
  display: flex;
286
286
  align-items: center;
287
287
  gap: 6px;
@@ -298,22 +298,22 @@
298
298
  letter-spacing: 0.01em;
299
299
  box-shadow: 0 1px 2px rgba(1, 5, 13, 0.08); /* Slightly darker shadow */
300
300
  }
301
- .action-btn[data-v-7b6ecb3e]:hover {
301
+ .action-btn[data-v-2566c44c]:hover {
302
302
  background-color: rgba(16, 24, 40, 0.08); /* Darker hover background */
303
303
  border-color: rgba(16, 24, 40, 0.18); /* Darker hover border */
304
304
  }
305
- .action-btn[data-v-7b6ecb3e]:active {
305
+ .action-btn[data-v-2566c44c]:active {
306
306
  transform: translateY(1px);
307
307
  box-shadow: none;
308
308
  }
309
- .btn-icon[data-v-7b6ecb3e] {
309
+ .btn-icon[data-v-2566c44c] {
310
310
  font-size: 16px;
311
311
  color: rgb(2, 27, 45); /* Darker icon color */
312
312
  }
313
- .btn-text[data-v-7b6ecb3e] {
313
+ .btn-text[data-v-2566c44c] {
314
314
  white-space: nowrap;
315
315
  }
316
- .settings-modal-content[data-v-7b6ecb3e] {
316
+ .settings-modal-content[data-v-2566c44c] {
317
317
  padding: 16px;
318
318
  font-family:
319
319
  "Inter",
@@ -322,23 +322,55 @@
322
322
  BlinkMacSystemFont,
323
323
  sans-serif;
324
324
  }
325
- .form-group[data-v-7b6ecb3e] {
325
+ .form-group[data-v-2566c44c] {
326
326
  margin-bottom: 16px;
327
327
  }
328
- .form-group label[data-v-7b6ecb3e] {
328
+ .form-group label[data-v-2566c44c] {
329
329
  display: block;
330
330
  margin-bottom: 8px;
331
331
  font-size: 14px;
332
332
  font-weight: 500;
333
333
  color: rgba(16, 24, 40, 0.9);
334
334
  }
335
+ .quick-create-modal[data-v-2566c44c] {
336
+ padding: 16px 0;
337
+ }
338
+ .quick-create-modal .form-group[data-v-2566c44c] {
339
+ margin-bottom: 20px;
340
+ }
341
+ .quick-create-modal label[data-v-2566c44c] {
342
+ display: block;
343
+ margin-bottom: 8px;
344
+ font-size: 14px;
345
+ font-weight: 500;
346
+ color: rgba(16, 24, 40, 0.9);
347
+ }
348
+ .preview-text[data-v-2566c44c] {
349
+ padding: 12px;
350
+ background-color: rgba(3, 11, 27, 0.03);
351
+ border: 1px solid rgba(16, 24, 40, 0.08);
352
+ border-radius: 6px;
353
+ font-size: 13px;
354
+ color: rgba(16, 24, 40, 0.7);
355
+ }
356
+ .preview-text code[data-v-2566c44c] {
357
+ background-color: rgba(16, 24, 40, 0.08);
358
+ padding: 2px 6px;
359
+ border-radius: 3px;
360
+ font-family: "Monaco", "Menlo", "Ubuntu Mono", monospace;
361
+ font-size: 12px;
362
+ }
363
+ .dialog-footer[data-v-2566c44c] {
364
+ display: flex;
365
+ gap: 8px;
366
+ }
335
367
 
336
- .status-wrapper[data-v-88e0f447] {
368
+ .status-wrapper[data-v-4aa2388b] {
337
369
  display: flex;
338
370
  align-items: center;
339
371
  gap: 12px;
340
372
  }
341
- .flow-card[data-v-88e0f447] {
373
+ .flow-card[data-v-4aa2388b] {
342
374
  position: relative;
343
375
  width: 40px;
344
376
  height: 40px;
@@ -347,22 +379,22 @@
347
379
  cursor: help;
348
380
  overflow: hidden;
349
381
  }
350
- .flow-card[data-v-88e0f447]:hover {
382
+ .flow-card[data-v-4aa2388b]:hover {
351
383
  transform: translateY(-0.5px);
352
384
  box-shadow: 0 4px 16px rgba(159, 129, 228, 0.25);
353
385
  }
354
- .flow-animation[data-v-88e0f447] {
386
+ .flow-animation[data-v-4aa2388b] {
355
387
  width: 100%;
356
388
  height: 100%;
357
389
  }
358
390
 
359
391
  /* Flow Container */
360
- .flow-container[data-v-88e0f447] {
392
+ .flow-container[data-v-4aa2388b] {
361
393
  fill: #8c8caa;
362
394
  }
363
395
 
364
396
  /* Extra Thick Flow Lines with Gradient */
365
- .flow-line[data-v-88e0f447] {
397
+ .flow-line[data-v-4aa2388b] {
366
398
  fill: none;
367
399
  stroke: url(#lineGradient);
368
400
  stroke-width: 8; /* Extra thick lines */
@@ -372,35 +404,35 @@
372
404
  }
373
405
 
374
406
  /* Animation only when flowing */
375
- .is-flowing .flow-line[data-v-88e0f447] {
376
- animation: flowMove-88e0f447 3s infinite linear;
407
+ .is-flowing .flow-line[data-v-4aa2388b] {
408
+ animation: flowMove-4aa2388b 3s infinite linear;
377
409
  }
378
- .is-flowing .flow-line-2[data-v-88e0f447] {
410
+ .is-flowing .flow-line-2[data-v-4aa2388b] {
379
411
  animation-delay: -1s;
380
412
  }
381
- .is-flowing .flow-line-3[data-v-88e0f447] {
413
+ .is-flowing .flow-line-3[data-v-4aa2388b] {
382
414
  animation-delay: -2s;
383
415
  }
384
416
 
385
417
  /* Flow Particles - only visible when running */
386
- .flow-particle[data-v-88e0f447] {
418
+ .flow-particle[data-v-4aa2388b] {
387
419
  fill: #5256c6;
388
420
  opacity: 0;
389
421
  }
390
- .is-flowing .flow-particle[data-v-88e0f447] {
391
- animation: particleFlow-88e0f447 3s infinite ease-in-out;
422
+ .is-flowing .flow-particle[data-v-4aa2388b] {
423
+ animation: particleFlow-4aa2388b 3s infinite ease-in-out;
392
424
  }
393
- .particle-1[data-v-88e0f447] {
425
+ .particle-1[data-v-4aa2388b] {
394
426
  animation-delay: 0s;
395
427
  }
396
- .particle-2[data-v-88e0f447] {
428
+ .particle-2[data-v-4aa2388b] {
397
429
  animation-delay: -1s;
398
430
  }
399
- .particle-3[data-v-88e0f447] {
431
+ .particle-3[data-v-4aa2388b] {
400
432
  animation-delay: -2s;
401
433
  }
402
434
  /* Control Button */
403
- .control-button[data-v-88e0f447] {
435
+ .control-button[data-v-4aa2388b] {
404
436
  display: flex;
405
437
  align-items: center;
406
438
  justify-content: center;
@@ -414,19 +446,19 @@
414
446
  transition: all 0.3s ease;
415
447
  box-shadow: 0 2px 8px rgba(76, 0, 255, 0.2);
416
448
  }
417
- .control-button[data-v-88e0f447]:hover {
449
+ .control-button[data-v-4aa2388b]:hover {
418
450
  background: #4834d4;
419
451
  color: white;
420
452
  transform: translateY(-1px);
421
453
  box-shadow: 0 4px 16px rgba(76, 0, 255, 0.3);
422
454
  }
423
- .control-button.is-active[data-v-88e0f447] {
455
+ .control-button.is-active[data-v-4aa2388b] {
424
456
  background: #4834d4;
425
457
  color: white;
426
458
  }
427
459
 
428
460
  /* Animations */
429
- @keyframes flowMove-88e0f447 {
461
+ @keyframes flowMove-4aa2388b {
430
462
  0% {
431
463
  transform: translateX(0);
432
464
  }
@@ -434,7 +466,7 @@
434
466
  transform: translateX(-70px);
435
467
  }
436
468
  }
437
- @keyframes particleFlow-88e0f447 {
469
+ @keyframes particleFlow-4aa2388b {
438
470
  0% {
439
471
  opacity: 0;
440
472
  transform: translateX(-10px) scale(0.8);
@@ -453,7 +485,144 @@
453
485
  }
454
486
  }
455
487
 
456
- .custom-node[data-v-74411a9e] {
488
+ .status-indicator[data-v-3af13a13] {
489
+ position: relative;
490
+ display: flex;
491
+ align-items: center;
492
+ margin-right: 8px;
493
+ }
494
+ .status-indicator[data-v-3af13a13]::before {
495
+ content: "";
496
+ display: block;
497
+ width: 10px;
498
+ height: 10px;
499
+ border-radius: 50%;
500
+ }
501
+ .status-indicator.success[data-v-3af13a13]::before {
502
+ background-color: #4caf50;
503
+ }
504
+ .status-indicator.failure[data-v-3af13a13]::before {
505
+ background-color: #f44336;
506
+ }
507
+ .status-indicator.warning[data-v-3af13a13]::before {
508
+ background-color: #f09f5dd1;
509
+ }
510
+ .status-indicator.unknown[data-v-3af13a13]::before {
511
+ background-color: #ffffff;
512
+ }
513
+ .status-indicator.running[data-v-3af13a13]::before {
514
+ background-color: #0909ca;
515
+ animation: pulse-3af13a13 1.5s cubic-bezier(0.4, 0, 0.6, 1) infinite;
516
+ box-shadow: 0 0 10px #0909ca;
517
+ }
518
+ @keyframes pulse-3af13a13 {
519
+ 0% {
520
+ transform: scale(1);
521
+ opacity: 1;
522
+ box-shadow: 0 0 5px #0909ca;
523
+ }
524
+ 50% {
525
+ transform: scale(1.3);
526
+ opacity: 0.6;
527
+ box-shadow: 0 0 15px #0909ca;
528
+ }
529
+ 100% {
530
+ transform: scale(1);
531
+ opacity: 1;
532
+ box-shadow: 0 0 5px #0909ca;
533
+ }
534
+ }
535
+ .tooltip-text[data-v-3af13a13] {
536
+ visibility: hidden;
537
+ width: 120px;
538
+ background-color: black;
539
+ color: #fff;
540
+ text-align: center;
541
+ border-radius: 6px;
542
+ padding: 5px 0;
543
+ position: absolute;
544
+ z-index: 1;
545
+ bottom: 100%;
546
+ left: 50%;
547
+ margin-left: -60px;
548
+ opacity: 0;
549
+ transition: opacity 0.3s;
550
+ }
551
+ .status-indicator:hover .tooltip-text[data-v-3af13a13] {
552
+ visibility: visible;
553
+ opacity: 1;
554
+ }
555
+ .description-input[data-v-3af13a13]:hover,
556
+ .description-input[data-v-3af13a13]:focus {
557
+ background-color: #e7e7e7; /* Slightly darker on hover/focus */
558
+ box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.2); /* More pronounced shadow on hover/focus */
559
+ }
560
+ .component-wrapper[data-v-3af13a13] {
561
+ position: relative; /* This makes the absolute positioning of the child relative to this container */
562
+ max-width: 60px;
563
+ overflow: visible; /* Allows children to visually overflow */
564
+ }
565
+ .description-display[data-v-3af13a13] {
566
+ padding: 8px;
567
+ width: 200px !important;
568
+ max-height: 8px !important;
569
+ background-color: #ffffff; /* Light grey background */
570
+ border-radius: 4px; /* Rounded corners for a modern look */
571
+ cursor: pointer; /* Indicates the text can be clicked */
572
+ }
573
+ .overlay[data-v-3af13a13] {
574
+ position: fixed; /* This is key for viewport-level positioning */
575
+ width: 200px; /* Or whatever width you prefer */
576
+ height: 200px; /* Or whatever height you prefer */
577
+ left: 50%; /* Center horizontally */
578
+ top: 50%; /* Center vertically */
579
+ transform: translate(-50%, -50%); /* Adjust based on its own dimensions */
580
+ z-index: 1000; /* High enough to float above everything else */
581
+ /* Your existing styles for background, padding, etc. */
582
+ }
583
+ .node-button[data-v-3af13a13] {
584
+ background-color: #ffffff;
585
+ border-radius: 10px;
586
+ border-width: 0.5px;
587
+ }
588
+ .node-button[data-v-3af13a13]:hover {
589
+ background-color: #f5f5f5;
590
+ transform: translateY(-1px);
591
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
592
+ }
593
+ .overlay-content[data-v-3af13a13] {
594
+ padding: 20px;
595
+ border-radius: 10px;
596
+ box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
597
+ display: flex;
598
+ flex-direction: column;
599
+ align-items: stretch;
600
+ }
601
+ .overlay-prompt[data-v-3af13a13] {
602
+ margin-bottom: 10px;
603
+ color: #333;
604
+ font-size: 16px;
605
+ }
606
+ .description-input[data-v-3af13a13] {
607
+ margin-bottom: 10px;
608
+ border: 1px solid #ccc;
609
+ border-radius: 4px;
610
+ padding: 10px;
611
+ font-size: 14px;
612
+ height: 100px; /* Adjust based on your needs */
613
+ }
614
+ .selected[data-v-3af13a13] {
615
+ border: 2px solid #828282;
616
+ }
617
+
618
+ .error-node[data-v-9657d658] {
619
+ padding: 8px;
620
+ background: #ffcccc;
621
+ border-radius: 4px;
622
+ font-size: 12px;
623
+ }
624
+
625
+ .custom-node[data-v-e5db3d68] {
457
626
  border-radius: 4px;
458
627
  padding: 1px;
459
628
  background-color: white;
@@ -462,10 +631,10 @@
462
631
  align-items: center;
463
632
  position: relative;
464
633
  }
465
- .selected[data-v-74411a9e] {
634
+ .selected[data-v-e5db3d68] {
466
635
  border: 2px solid #409eff;
467
636
  }
468
- .custom-node-header[data-v-74411a9e] {
637
+ .custom-node-header[data-v-e5db3d68] {
469
638
  font-weight: 100;
470
639
  font-size: small;
471
640
  width: 20px;
@@ -474,12 +643,12 @@
474
643
  text-overflow: ellipsis;
475
644
  font-family: "Roboto", "Source Sans Pro", Avenir, Helvetica, Arial, sans-serif;
476
645
  }
477
- .description-display[data-v-74411a9e] {
646
+ .description-display[data-v-e5db3d68] {
478
647
  position: relative;
479
648
  white-space: normal;
480
- min-width: 100px; /* Default minimum width */
649
+ min-width: 100px;
481
650
  max-width: 300px;
482
- width: auto; /* Allow dynamic width */
651
+ width: auto;
483
652
  padding: 2px 4px;
484
653
  cursor: pointer;
485
654
  background-color: rgba(185, 185, 185, 0.117);
@@ -489,7 +658,7 @@
489
658
  gap: 4px;
490
659
  border-radius: 4px;
491
660
  }
492
- .edit-icon[data-v-74411a9e] {
661
+ .edit-icon[data-v-e5db3d68] {
493
662
  opacity: 0;
494
663
  transition: opacity 0.2s;
495
664
  color: #0f275f;
@@ -498,26 +667,26 @@
498
667
  align-items: center;
499
668
  padding: 2px;
500
669
  }
501
- .description-display:hover .edit-icon[data-v-74411a9e] {
670
+ .description-display:hover .edit-icon[data-v-e5db3d68] {
502
671
  opacity: 1;
503
672
  }
504
- .edit-icon[data-v-74411a9e]:hover {
673
+ .edit-icon[data-v-e5db3d68]:hover {
505
674
  color: #051233;
506
675
  }
507
- .description-text[data-v-74411a9e] {
676
+ .description-text[data-v-e5db3d68] {
508
677
  margin: 0;
509
678
  white-space: pre-wrap;
510
679
  word-wrap: break-word;
511
680
  font-family: "Roboto", "Source Sans Pro", Avenir, Helvetica, Arial, sans-serif;
512
681
  }
513
- .edit-overlay[data-v-74411a9e] {
682
+ .edit-overlay[data-v-e5db3d68] {
514
683
  position: fixed;
515
684
  z-index: 1000;
516
685
  background: white;
517
686
  border-radius: 4px;
518
687
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
519
688
  }
520
- .description-input[data-v-74411a9e] {
689
+ .description-input[data-v-e5db3d68] {
521
690
  width: 200px;
522
691
  height: 75px;
523
692
  resize: both;
@@ -528,17 +697,15 @@
528
697
  font-family: "Roboto", "Source Sans Pro", Avenir, Helvetica, Arial, sans-serif;
529
698
  background-color: white;
530
699
  }
531
- .handle-input[data-v-74411a9e] {
700
+ .handle-input[data-v-e5db3d68] {
532
701
  position: absolute;
533
702
  left: -8px;
534
703
  }
535
- .handle-output[data-v-74411a9e] {
704
+ .handle-output[data-v-e5db3d68] {
536
705
  position: absolute;
537
706
  right: -8px;
538
707
  }
539
-
540
- /* Context Menu Styles */
541
- .context-menu[data-v-74411a9e] {
708
+ .context-menu[data-v-e5db3d68] {
542
709
  position: fixed;
543
710
  z-index: 10000;
544
711
  background-color: white;
@@ -548,7 +715,7 @@
548
715
  min-width: 120px;
549
716
  font-family: "Roboto", "Source Sans Pro", Avenir, Helvetica, Arial, sans-serif;
550
717
  }
551
- .context-menu-item[data-v-74411a9e] {
718
+ .context-menu-item[data-v-e5db3d68] {
552
719
  padding: 8px 12px;
553
720
  display: flex;
554
721
  align-items: center;
@@ -558,13 +725,13 @@
558
725
  transition: background-color 0.2s;
559
726
  font-family: "Roboto", "Source Sans Pro", Avenir, Helvetica, Arial, sans-serif;
560
727
  }
561
- .context-menu-item[data-v-74411a9e]:hover {
728
+ .context-menu-item[data-v-e5db3d68]:hover {
562
729
  background-color: #f5f5f5;
563
730
  }
564
- .context-menu-item svg[data-v-74411a9e] {
731
+ .context-menu-item svg[data-v-e5db3d68] {
565
732
  color: #555;
566
733
  }
567
- .context-menu-item span[data-v-74411a9e] {
734
+ .context-menu-item span[data-v-e5db3d68] {
568
735
  font-family: "Roboto", "Source Sans Pro", Avenir, Helvetica, Arial, sans-serif;
569
736
  }
570
737
 
@@ -715,7 +882,12 @@ to {
715
882
  background-color: rgba(0, 0, 0, 0.2);
716
883
  }
717
884
 
718
- .minimal-button[data-v-e3b23979] {
885
+ .intro-content[data-v-0db5c358] {
886
+ white-space: pre-wrap; /* Preserves whitespace and line breaks */
887
+ }
888
+
889
+ /* (Styles are unchanged) */
890
+ .minimal-button[data-v-47a34251] {
719
891
  background: none;
720
892
  border: none;
721
893
  padding: 4px;
@@ -729,16 +901,10 @@ to {
729
901
  width: 25px;
730
902
  height: 25px;
731
903
  }
732
- .minimal-button .icon[data-v-e3b23979] {
733
- font-size: 16px;
734
- }
735
- .minimal-button[data-v-e3b23979]:hover {
736
- color: #000;
737
- }
738
- .minimal-button[data-v-e3b23979]::after {
739
- content: attr(title);
904
+ .minimal-button[data-tooltip="true"][data-v-47a34251]::after {
905
+ content: attr(data-tooltip-text);
740
906
  position: absolute;
741
- bottom: 100%;
907
+ top: calc(100% + 5px);
742
908
  left: 50%;
743
909
  transform: translateX(-50%);
744
910
  background-color: #333;
@@ -753,11 +919,12 @@ to {
753
919
  opacity 0.2s,
754
920
  visibility 0.2s;
755
921
  pointer-events: none;
922
+ z-index: 100000;
756
923
  }
757
- .minimal-button[data-v-e3b23979]::before {
924
+ .minimal-button[data-tooltip="true"][data-v-47a34251]::before {
758
925
  content: "";
759
926
  position: absolute;
760
- bottom: calc(100% - 4px);
927
+ top: 100%;
761
928
  left: 50%;
762
929
  transform: translateX(-50%);
763
930
  border-width: 4px;
@@ -769,32 +936,43 @@ to {
769
936
  opacity 0.2s,
770
937
  visibility 0.2s;
771
938
  pointer-events: none;
939
+ z-index: 100000;
772
940
  }
773
- .minimal-button[data-v-e3b23979]:hover::after,
774
- .minimal-button[data-v-e3b23979]:hover::before {
941
+ .minimal-button[data-tooltip="true"][data-v-47a34251]:hover::after,
942
+ .minimal-button[data-tooltip="true"][data-v-47a34251]:hover::before {
775
943
  opacity: 1;
776
944
  visibility: visible;
777
945
  }
778
- .move-handle[data-v-e3b23979] {
779
- cursor: grab;
946
+ .minimal-button .icon[data-v-47a34251] {
947
+ font-size: 16px;
948
+ }
949
+ .minimal-button[data-v-47a34251]:hover {
950
+ color: #000;
951
+ background-color: #9facff;
780
952
  }
781
- .minimized-title[data-v-e3b23979] {
953
+ .group-badge[data-v-47a34251] {
954
+ background-color: #074273;
955
+ color: white;
956
+ padding: 2px 6px;
957
+ border-radius: 3px;
958
+ font-size: 11px;
959
+ margin-right: 4px;
782
960
  cursor: pointer;
783
- background-color: #f0f0f0;
784
- color: #333;
785
- padding: 4px 10px;
786
- border-radius: 4px;
787
- display: flex;
788
- justify-content: center;
789
- align-items: center;
961
+ transition: background-color 0.2s;
962
+ user-select: none;
963
+ }
964
+ .title-text[data-v-47a34251] {
965
+ flex-grow: 1;
966
+ padding: 0 8px;
790
967
  font-size: 14px;
968
+ color: #333;
791
969
  }
792
- .overlay.minimized[data-v-e3b23979] {
793
- width: 150px;
794
- height: 30px;
970
+ .overlay.minimized[data-v-47a34251] {
971
+ width: auto !important;
972
+ height: 35px !important;
795
973
  cursor: default;
796
974
  }
797
- .overlay[data-v-e3b23979] {
975
+ .overlay[data-v-47a34251] {
798
976
  position: absolute;
799
977
  width: auto;
800
978
  max-width: 100%;
@@ -807,62 +985,244 @@ to {
807
985
  display: flex;
808
986
  flex-direction: column;
809
987
  cursor: move;
988
+ transition: border-color 0.2s;
989
+ overflow: hidden;
810
990
  }
811
- .no-transition[data-v-e3b23979] {
991
+ .no-transition[data-v-47a34251] {
812
992
  transition: none !important;
813
993
  }
814
- .header[data-v-e3b23979] {
994
+ .header[data-v-47a34251] {
815
995
  display: flex;
816
996
  justify-content: flex-start;
817
997
  align-items: center;
818
998
  width: 100%;
819
999
  padding: 4px;
820
- border-top-left-radius: 4px;
821
- border-top-right-radius: 4px;
822
- background-color: #fff;
1000
+ border-top-left-radius: 6px;
1001
+ border-top-right-radius: 6px;
1002
+ background: linear-gradient(135deg, #2189791d 0%, #15a2da25 100%);
1003
+ min-height: 35px;
1004
+ box-sizing: border-box;
1005
+ overflow: hidden;
823
1006
  }
824
- .content[data-v-e3b23979] {
1007
+ .content[data-v-47a34251] {
825
1008
  flex-grow: 1;
826
1009
  overflow: auto;
827
1010
  padding: 10px;
828
1011
  max-height: calc(100% - 50px);
829
1012
  box-sizing: border-box;
830
1013
  }
831
- .draggable-line[data-v-e3b23979] {
1014
+ .draggable-line[data-v-47a34251] {
832
1015
  position: absolute;
833
1016
  opacity: 1;
834
1017
  }
835
- .draggable-line.right-vertical[data-v-e3b23979] {
1018
+ .draggable-line.right-vertical[data-v-47a34251] {
836
1019
  top: 0;
837
1020
  right: 0;
838
1021
  width: 5px;
839
1022
  height: 100%;
840
1023
  cursor: ew-resize;
841
1024
  }
842
- .draggable-line.left-vertical[data-v-e3b23979] {
1025
+ .draggable-line.left-vertical[data-v-47a34251] {
843
1026
  top: 0;
844
1027
  left: 0;
845
1028
  width: 5px;
846
1029
  height: 100%;
847
1030
  cursor: ew-resize;
848
1031
  }
849
- .draggable-line.bottom-horizontal[data-v-e3b23979] {
1032
+ .draggable-line.bottom-horizontal[data-v-47a34251] {
850
1033
  bottom: 0;
851
1034
  left: 0;
852
1035
  width: 100%;
853
1036
  height: 5px;
854
1037
  cursor: ns-resize;
855
1038
  }
856
- .draggable-line.top-horizontal[data-v-e3b23979] {
1039
+ .draggable-line.top-horizontal[data-v-47a34251] {
857
1040
  top: 0;
858
1041
  left: 0;
859
1042
  width: 100%;
860
1043
  height: 5px;
861
1044
  cursor: ns-resize;
862
1045
  }
863
- .resizing-highlight-line[data-v-e3b23979] {
1046
+ .resizing-highlight-line[data-v-47a34251] {
864
1047
  background-color: #080b0e43;
865
1048
  }
1049
+ .draggable-line[data-v-47a34251]:hover {
1050
+ background-color: #2196f330;
1051
+ }
1052
+
1053
+ .layout-widget-wrapper[data-v-0bdaa52f] {
1054
+ position: fixed;
1055
+ z-index: 20000;
1056
+ }
1057
+ .trigger-btn[data-v-0bdaa52f] {
1058
+ width: 45px;
1059
+ height: 45px;
1060
+ border-radius: 50%;
1061
+ border: none;
1062
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
1063
+ box-shadow: 0 3px 10px rgba(0, 0, 0, 0.2);
1064
+ cursor: move;
1065
+ display: flex;
1066
+ align-items: center;
1067
+ justify-content: center;
1068
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
1069
+ position: relative;
1070
+ overflow: hidden;
1071
+ }
1072
+ .trigger-btn[data-v-0bdaa52f]:hover {
1073
+ width: 55px;
1074
+ height: 55px;
1075
+ box-shadow: 0 6px 20px rgba(102, 126, 234, 0.4);
1076
+ }
1077
+ .trigger-btn.is-open[data-v-0bdaa52f] {
1078
+ cursor: pointer;
1079
+ }
1080
+ .trigger-btn[data-v-0bdaa52f]::before {
1081
+ content: "";
1082
+ position: absolute;
1083
+ top: 50%;
1084
+ left: 50%;
1085
+ width: 0;
1086
+ height: 0;
1087
+ border-radius: 50%;
1088
+ background: rgba(255, 255, 255, 0.2);
1089
+ transform: translate(-50%, -50%);
1090
+ transition:
1091
+ width 0.6s,
1092
+ height 0.6s;
1093
+ }
1094
+ .trigger-btn[data-v-0bdaa52f]:hover::before {
1095
+ width: 100px;
1096
+ height: 100px;
1097
+ }
1098
+ .layout-icon[data-v-0bdaa52f] {
1099
+ color: white;
1100
+ transition: transform 0.3s ease;
1101
+ pointer-events: none;
1102
+ }
1103
+ .trigger-btn:hover .layout-icon[data-v-0bdaa52f] {
1104
+ transform: scale(1.1);
1105
+ }
1106
+ .trigger-btn.is-open .layout-icon[data-v-0bdaa52f] {
1107
+ transform: rotate(90deg);
1108
+ }
1109
+ .panel[data-v-0bdaa52f] {
1110
+ position: absolute;
1111
+ /* REMOVED: right: 60px; */
1112
+ /* REMOVED: bottom: 0; */
1113
+ width: 250px;
1114
+ background: white;
1115
+ border-radius: 12px;
1116
+ box-shadow: 0 5px 25px rgba(0, 0, 0, 0.15);
1117
+ overflow: hidden;
1118
+ display: flex;
1119
+ flex-direction: column;
1120
+ backdrop-filter: blur(10px);
1121
+ background: rgba(255, 255, 255, 0.98);
1122
+ }
1123
+ .panel-header[data-v-0bdaa52f] {
1124
+ display: flex;
1125
+ justify-content: space-between;
1126
+ align-items: center;
1127
+ padding: 12px 16px;
1128
+ border-bottom: 1px solid #f0f0f0;
1129
+ background: linear-gradient(135deg, #667eea10 0%, #764ba210 100%);
1130
+ }
1131
+ .panel-title[data-v-0bdaa52f] {
1132
+ font-weight: 600;
1133
+ font-size: 16px;
1134
+ color: #333;
1135
+ user-select: none;
1136
+ }
1137
+ .close-btn[data-v-0bdaa52f] {
1138
+ background: none;
1139
+ border: none;
1140
+ font-size: 20px;
1141
+ color: #888;
1142
+ cursor: pointer;
1143
+ padding: 0;
1144
+ line-height: 1;
1145
+ width: 24px;
1146
+ height: 24px;
1147
+ display: flex;
1148
+ align-items: center;
1149
+ justify-content: center;
1150
+ border-radius: 4px;
1151
+ transition: all 0.2s;
1152
+ }
1153
+ .close-btn[data-v-0bdaa52f]:hover {
1154
+ color: #333;
1155
+ background: rgba(0, 0, 0, 0.05);
1156
+ }
1157
+ .panel-body[data-v-0bdaa52f] {
1158
+ padding: 16px;
1159
+ display: flex;
1160
+ flex-direction: column;
1161
+ gap: 10px;
1162
+ }
1163
+ .control-btn[data-v-0bdaa52f] {
1164
+ background-color: #f8f9fa;
1165
+ color: #333;
1166
+ border: 1px solid #e0e0e0;
1167
+ border-radius: 8px;
1168
+ padding: 10px 16px;
1169
+ cursor: pointer;
1170
+ font-size: 14px;
1171
+ font-weight: 500;
1172
+ transition: all 0.2s ease;
1173
+ display: flex;
1174
+ align-items: center;
1175
+ gap: 8px;
1176
+ text-align: left;
1177
+ position: relative;
1178
+ overflow: hidden;
1179
+ }
1180
+ .control-btn[data-v-0bdaa52f]::before {
1181
+ content: "";
1182
+ position: absolute;
1183
+ top: 0;
1184
+ left: -100%;
1185
+ width: 100%;
1186
+ height: 100%;
1187
+ background: linear-gradient(90deg, transparent, rgba(102, 126, 234, 0.1), transparent);
1188
+ transition: left 0.5s;
1189
+ }
1190
+ .control-btn[data-v-0bdaa52f]:hover::before {
1191
+ left: 100%;
1192
+ }
1193
+ .control-btn[data-v-0bdaa52f]:hover {
1194
+ background-color: #f0f2ff;
1195
+ border-color: #667eea;
1196
+ transform: translateX(2px);
1197
+ }
1198
+
1199
+ /* Accent button style for Reset Layout Graph */
1200
+ .control-btn.accent[data-v-0bdaa52f] {
1201
+ background: linear-gradient(135deg, #667eea15 0%, #764ba215 100%);
1202
+ border-color: #764ba2;
1203
+ }
1204
+ .control-btn.accent[data-v-0bdaa52f]:hover {
1205
+ background: linear-gradient(135deg, #667eea25 0%, #764ba225 100%);
1206
+ border-color: #667eea;
1207
+ }
1208
+ .control-btn .icon[data-v-0bdaa52f] {
1209
+ font-size: 16px;
1210
+ min-width: 20px;
1211
+ }
1212
+
1213
+ /* Vue Transition Styles */
1214
+ .panel-fade-enter-active[data-v-0bdaa52f],
1215
+ .panel-fade-leave-active[data-v-0bdaa52f] {
1216
+ transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
1217
+ }
1218
+ .panel-fade-enter-from[data-v-0bdaa52f] {
1219
+ opacity: 0;
1220
+ transform: translateY(10px) scale(0.95);
1221
+ }
1222
+ .panel-fade-leave-to[data-v-0bdaa52f] {
1223
+ opacity: 0;
1224
+ transform: translateY(-10px) scale(0.95);
1225
+ }
866
1226
  .ag-icon {
867
1227
  font-family: var(--ag-icon-font-family);
868
1228
  font-weight: var(--ag-icon-font-weight);
@@ -9823,9 +10183,213 @@ input[class^=ag-][type=range]:disabled {
9823
10183
  transform: rotate(360deg);
9824
10184
  }
9825
10185
  }
10186
+ .table-container {
10187
+ display: flex;
10188
+ flex-direction: column;
10189
+ height: 100%;
10190
+ width: 100%;
10191
+ position: relative;
10192
+ }
10193
+
10194
+ /* Modern Outdated Data Banner Styles */
10195
+ .outdated-data-banner {
10196
+ position: absolute;
10197
+ top: 10px;
10198
+ left: 50%;
10199
+ transform: translateX(-50%);
10200
+ z-index: 100;
10201
+ display: flex;
10202
+ align-items: center;
10203
+ justify-content: space-between;
10204
+ min-width: 380px;
10205
+ max-width: 90%;
10206
+ padding: 12px 16px;
10207
+ background: linear-gradient(135deg, rgba(254, 243, 199, 0.98) 0%, rgba(253, 230, 138, 0.98) 100%);
10208
+ backdrop-filter: blur(10px);
10209
+ border: 1px solid rgba(251, 191, 36, 0.3);
10210
+ border-radius: 12px;
10211
+ box-shadow:
10212
+ 0 4px 20px rgba(251, 191, 36, 0.15),
10213
+ 0 2px 8px rgba(0, 0, 0, 0.05);
10214
+ font-size: 14px;
10215
+ animation: slideDown 0.3s cubic-bezier(0.4, 0, 0.2, 1);
10216
+ overflow: hidden;
10217
+ }
10218
+
10219
+ /* Shimmer effect */
10220
+ .outdated-data-banner::before {
10221
+ content: "";
10222
+ position: absolute;
10223
+ top: 0;
10224
+ left: -100%;
10225
+ width: 100%;
10226
+ height: 100%;
10227
+ background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.4), transparent);
10228
+ animation: shimmer 3s infinite;
10229
+ }
10230
+
10231
+ /* Warning icon animation */
10232
+ @keyframes pulse {
10233
+ 0%,
10234
+ 100% {
10235
+ transform: scale(1);
10236
+ }
10237
+ 50% {
10238
+ transform: scale(1.1);
10239
+ }
10240
+ }
10241
+ @keyframes shimmer {
10242
+ 0% {
10243
+ left: -100%;
10244
+ }
10245
+ 100% {
10246
+ left: 100%;
10247
+ }
10248
+ }
10249
+ @keyframes slideDown {
10250
+ from {
10251
+ opacity: 0;
10252
+ transform: translate(-50%, -20px);
10253
+ }
10254
+ to {
10255
+ opacity: 1;
10256
+ transform: translate(-50%, 0);
10257
+ }
10258
+ }
10259
+ .outdated-data-banner p {
10260
+ margin: 0;
10261
+ color: #78350f;
10262
+ font-weight: 500;
10263
+ display: flex;
10264
+ align-items: center;
10265
+ gap: 8px;
10266
+ position: relative;
10267
+ z-index: 1;
10268
+ }
10269
+
10270
+ /* Add warning icon */
10271
+ .outdated-data-banner p::before {
10272
+ content: "⚠️";
10273
+ font-size: 16px;
10274
+ animation: pulse 2s ease-in-out infinite;
10275
+ }
10276
+ .refresh-link-button {
10277
+ background: linear-gradient(135deg, #ffffff 0%, #fef3c7 100%);
10278
+ border: 1px solid #f59e0b;
10279
+ color: #92400e;
10280
+ border-radius: 6px;
10281
+ padding: 5px 14px;
10282
+ font-size: 13px;
10283
+ font-weight: 600;
10284
+ cursor: pointer;
10285
+ transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
10286
+ text-decoration: none;
10287
+ display: inline-flex;
10288
+ align-items: center;
10289
+ gap: 5px;
10290
+ position: relative;
10291
+ overflow: hidden;
10292
+ white-space: nowrap;
10293
+ margin-left: 4px;
10294
+ }
10295
+
10296
+ /* Refresh icon */
10297
+ .refresh-link-button::before {
10298
+ content: "↻";
10299
+ font-size: 14px;
10300
+ transition: transform 0.3s ease;
10301
+ }
10302
+ .refresh-link-button:hover {
10303
+ background: linear-gradient(135deg, #fbbf24 0%, #f59e0b 100%);
10304
+ color: white;
10305
+ border-color: #d97706;
10306
+ transform: translateY(-1px);
10307
+ box-shadow:
10308
+ 0 4px 12px rgba(245, 158, 11, 0.3),
10309
+ inset 0 1px 0 rgba(255, 255, 255, 0.2);
10310
+ }
10311
+ .refresh-link-button:hover::before {
10312
+ transform: rotate(180deg);
10313
+ }
10314
+ .refresh-link-button:active {
10315
+ transform: translateY(0);
10316
+ box-shadow:
10317
+ 0 2px 6px rgba(245, 158, 11, 0.2),
10318
+ inset 0 1px 2px rgba(0, 0, 0, 0.1);
10319
+ }
10320
+ .dismiss-button {
10321
+ background: rgba(255, 255, 255, 0.9);
10322
+ border: 1px solid rgba(251, 191, 36, 0.3);
10323
+ width: 24px;
10324
+ height: 24px;
10325
+ border-radius: 50%;
10326
+ font-size: 16px;
10327
+ line-height: 1;
10328
+ cursor: pointer;
10329
+ color: #92400e;
10330
+ display: flex;
10331
+ align-items: center;
10332
+ justify-content: center;
10333
+ transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
10334
+ flex-shrink: 0;
10335
+ margin-left: 12px;
10336
+ position: relative;
10337
+ z-index: 1;
10338
+ }
10339
+ .dismiss-button:hover {
10340
+ background: white;
10341
+ border-color: #f59e0b;
10342
+ color: #78350f;
10343
+ transform: rotate(90deg) scale(1.1);
10344
+ box-shadow: 0 3px 10px rgba(0, 0, 0, 0.1);
10345
+ }
10346
+ .dismiss-button:active {
10347
+ transform: rotate(90deg) scale(0.95);
10348
+ }
10349
+
10350
+ /* Fetch Data Section Styles */
10351
+ .fetch-data-section {
10352
+ padding: 20px;
10353
+ text-align: center;
10354
+ background-color: #f9fafb;
10355
+ border: 1px solid #e5e7eb;
10356
+ border-top: none;
10357
+ border-radius: 0 0 8px 8px;
10358
+ }
10359
+ .fetch-data-section p {
10360
+ color: #6b7280;
10361
+ font-size: 14px;
10362
+ margin-bottom: 12px;
10363
+ }
10364
+ .fetch-data-button {
10365
+ background-color: #3498db;
10366
+ color: white;
10367
+ border: none;
10368
+ padding: 8px 20px;
10369
+ font-size: 14px;
10370
+ border-radius: 6px;
10371
+ cursor: pointer;
10372
+ transition: all 0.2s ease;
10373
+ position: relative;
10374
+ }
10375
+ .fetch-data-button:hover:not(:disabled) {
10376
+ background-color: #2980b9;
10377
+ transform: translateY(-1px);
10378
+ box-shadow: 0 4px 12px rgba(52, 152, 219, 0.3);
10379
+ }
10380
+ .fetch-data-button:active:not(:disabled) {
10381
+ transform: translateY(0);
10382
+ }
10383
+ .fetch-data-button:disabled {
10384
+ background-color: #93c5fd;
10385
+ cursor: not-allowed;
10386
+ opacity: 0.7;
10387
+ }
10388
+
10389
+ /* AG Grid Theme Customization */
9826
10390
  .ag-theme-balham {
9827
10391
  max-width: 100%;
9828
- height: 100%;
10392
+ position: relative;
9829
10393
  --ag-odd-row-background-color: rgb(255, 255, 255);
9830
10394
  --ag-row-background-color: rgb(255, 255, 255);
9831
10395
  --ag-header-background-color: rgb(246, 247, 251);
@@ -9887,7 +10451,7 @@ input[class^=ag-][type=range]:disabled {
9887
10451
  -webkit-box-orient: vertical;
9888
10452
  }
9889
10453
 
9890
- .log-container[data-v-51d5bb55] {
10454
+ .log-container[data-v-9b3bdb24] {
9891
10455
  height: 100%;
9892
10456
  display: flex;
9893
10457
  flex-direction: column;
@@ -9896,7 +10460,7 @@ input[class^=ag-][type=range]:disabled {
9896
10460
  font-family: "Consolas", "Monaco", "Courier New", monospace;
9897
10461
  overflow-y: auto;
9898
10462
  }
9899
- .log-header[data-v-51d5bb55] {
10463
+ .log-header[data-v-9b3bdb24] {
9900
10464
  display: flex;
9901
10465
  justify-content: space-between;
9902
10466
  align-items: center;
@@ -9907,42 +10471,42 @@ input[class^=ag-][type=range]:disabled {
9907
10471
  top: 0;
9908
10472
  z-index: 10; /* Ensures it stays above the logs */
9909
10473
  }
9910
- .log-status[data-v-51d5bb55] {
10474
+ .log-status[data-v-9b3bdb24] {
9911
10475
  display: flex;
9912
10476
  align-items: center;
9913
10477
  gap: 8px;
9914
10478
  font-size: 0.9em;
9915
10479
  }
9916
- .status-indicator[data-v-51d5bb55] {
10480
+ .status-indicator[data-v-9b3bdb24] {
9917
10481
  width: 8px;
9918
10482
  height: 8px;
9919
10483
  border-radius: 50%;
9920
10484
  background-color: #666;
9921
10485
  }
9922
- .status-indicator.active[data-v-51d5bb55] {
10486
+ .status-indicator.active[data-v-9b3bdb24] {
9923
10487
  background-color: #4caf50;
9924
10488
  }
9925
- .status-indicator.error[data-v-51d5bb55] {
10489
+ .status-indicator.error[data-v-9b3bdb24] {
9926
10490
  background-color: #f44336;
9927
10491
  }
9928
- .log-controls[data-v-51d5bb55] {
10492
+ .log-controls[data-v-9b3bdb24] {
9929
10493
  display: flex;
9930
10494
  gap: 8px;
9931
10495
  }
9932
- .error-banner[data-v-51d5bb55] {
10496
+ .error-banner[data-v-9b3bdb24] {
9933
10497
  padding: 8px 12px;
9934
10498
  background-color: rgba(244, 67, 54, 0.2);
9935
10499
  color: #f44336;
9936
10500
  font-size: 0.9em;
9937
10501
  border-bottom: 1px solid #f44336;
9938
10502
  }
9939
- .empty-state[data-v-51d5bb55] {
10503
+ .empty-state[data-v-9b3bdb24] {
9940
10504
  padding: 16px;
9941
10505
  text-align: center;
9942
10506
  color: #777;
9943
10507
  font-style: italic;
9944
10508
  }
9945
- .logs[data-v-51d5bb55] {
10509
+ .logs[data-v-9b3bdb24] {
9946
10510
  flex-grow: 1;
9947
10511
  margin: 0;
9948
10512
  padding: 8px;
@@ -9952,24 +10516,24 @@ input[class^=ag-][type=range]:disabled {
9952
10516
  line-height: 1.8; /* Reduced line height */
9953
10517
  font-size: small;
9954
10518
  }
9955
- .logs.auto-scroll[data-v-51d5bb55] {
10519
+ .logs.auto-scroll[data-v-9b3bdb24] {
9956
10520
  scroll-behavior: smooth;
9957
10521
  }
9958
- [data-v-51d5bb55]::-webkit-scrollbar {
10522
+ [data-v-9b3bdb24]::-webkit-scrollbar {
9959
10523
  width: 12px;
9960
10524
  }
9961
- [data-v-51d5bb55]::-webkit-scrollbar-track {
10525
+ [data-v-9b3bdb24]::-webkit-scrollbar-track {
9962
10526
  background: #1e1e1e;
9963
10527
  }
9964
- [data-v-51d5bb55]::-webkit-scrollbar-thumb {
10528
+ [data-v-9b3bdb24]::-webkit-scrollbar-thumb {
9965
10529
  background: #424242;
9966
10530
  border-radius: 6px;
9967
10531
  border: 3px solid #1e1e1e;
9968
10532
  }
9969
- [data-v-51d5bb55]::-webkit-scrollbar-thumb:hover {
10533
+ [data-v-9b3bdb24]::-webkit-scrollbar-thumb:hover {
9970
10534
  background: #4f4f4f;
9971
10535
  }
9972
- .error-line[data-v-51d5bb55] {
10536
+ .error-line[data-v-9b3bdb24] {
9973
10537
  background-color: rgba(255, 0, 0, 0.2); /* Light red background */
9974
10538
  color: #ffcdd2; /* Light red text for better readability */
9975
10539
  }
@@ -10668,85 +11232,156 @@ main {
10668
11232
  background-color: rgba(80, 70, 230, 0.1);
10669
11233
  }
10670
11234
 
10671
- .canvas[data-v-cc07b037] {
10672
- height: calc(100vh - 50px);
11235
+ .canvas[data-v-24dbaac4] {
11236
+ height: calc(100vh - 100px); /* Adjusted for potentially taller header */
10673
11237
  }
10674
- .header[data-v-cc07b037] {
10675
- display: flex;
10676
- justify-content: space-between;
10677
- align-items: stretch;
10678
- height: 50px;
11238
+ .header[data-v-24dbaac4] {
10679
11239
  background-color: #f5f5f5;
10680
11240
  border-bottom: 1px solid #ececec;
10681
11241
  }
10682
- .left-section[data-v-cc07b037] {
10683
- min-width: 250px;
10684
- padding: 0 16px;
10685
- display: flex;
10686
- align-items: center;
11242
+
11243
+ /* Desktop layout - single row */
11244
+ @media (min-width: 1025px) {
11245
+ .header[data-v-24dbaac4] {
11246
+ display: flex;
11247
+ justify-content: space-between;
11248
+ align-items: stretch;
11249
+ height: 50px;
10687
11250
  }
10688
- .middle-section[data-v-cc07b037] {
10689
- flex: 1;
10690
- display: flex;
10691
- align-items: center;
10692
- overflow: hidden;
11251
+ .header-top[data-v-24dbaac4] {
11252
+ display: contents; /* Makes children behave as direct children of .header */
11253
+ }
11254
+ .header-bottom[data-v-24dbaac4] {
11255
+ display: contents;
11256
+ }
11257
+ .left-section[data-v-24dbaac4] {
11258
+ min-width: 250px;
11259
+ padding: 0 16px;
11260
+ display: flex;
11261
+ align-items: center;
11262
+ }
11263
+ .middle-section[data-v-24dbaac4] {
11264
+ flex: 1;
11265
+ display: flex;
11266
+ align-items: center;
11267
+ overflow: hidden;
11268
+ }
11269
+ .right-section[data-v-24dbaac4] {
11270
+ min-width: 150px;
11271
+ padding: 0 16px;
11272
+ display: flex;
11273
+ align-items: center;
11274
+ justify-content: flex-end;
11275
+ }
11276
+ .canvas[data-v-24dbaac4] {
11277
+ height: calc(100vh - 50px);
11278
+ }
11279
+ }
11280
+
11281
+ /* Mobile/tablet layout - stacked */
11282
+ @media (max-width: 1024px) {
11283
+ .header[data-v-24dbaac4] {
11284
+ height: auto;
11285
+ min-height: 80px;
11286
+ }
11287
+ .header-top[data-v-24dbaac4] {
11288
+ display: flex;
11289
+ justify-content: space-between;
11290
+ align-items: center;
11291
+ height: 50px;
11292
+ border-bottom: 1px solid #e5e7eb;
11293
+ }
11294
+ .header-bottom[data-v-24dbaac4] {
11295
+ display: flex;
11296
+ height: 40px;
11297
+ padding: 0 8px;
11298
+ }
11299
+ .left-section[data-v-24dbaac4] {
11300
+ padding: 0 12px;
11301
+ display: flex;
11302
+ align-items: center;
11303
+ }
11304
+ .middle-section[data-v-24dbaac4] {
11305
+ flex: 1;
11306
+ display: flex;
11307
+ align-items: center;
11308
+ overflow: hidden;
11309
+ padding: 0 8px;
11310
+ }
11311
+ .right-section[data-v-24dbaac4] {
11312
+ padding: 0 12px;
11313
+ display: flex;
11314
+ align-items: center;
11315
+ justify-content: flex-end;
11316
+ }
11317
+ .canvas[data-v-24dbaac4] {
11318
+ height: calc(100vh - 90px);
11319
+ }
11320
+ }
11321
+
11322
+ /* Very narrow screens */
11323
+ @media (max-width: 480px) {
11324
+ .left-section[data-v-24dbaac4] {
11325
+ padding: 0 8px;
11326
+ min-width: auto;
11327
+ }
11328
+ .right-section[data-v-24dbaac4] {
11329
+ padding: 0 8px;
11330
+ min-width: auto;
11331
+ }
11332
+ .middle-section[data-v-24dbaac4] {
11333
+ padding: 0 4px;
10693
11334
  }
10694
- .right-section[data-v-cc07b037] {
10695
- min-width: 150px;
10696
- padding: 0 16px;
10697
- display: flex;
10698
- align-items: center;
10699
- justify-content: flex-end;
10700
11335
  }
10701
11336
 
10702
11337
  /* Loading state styles */
10703
- .loading-state[data-v-cc07b037] {
11338
+ .loading-state[data-v-24dbaac4] {
10704
11339
  height: calc(100vh - 50px);
10705
11340
  display: flex;
10706
11341
  justify-content: center;
10707
11342
  align-items: center;
10708
11343
  background-color: #f9fafb;
10709
11344
  }
10710
- .loading-state-content[data-v-cc07b037] {
11345
+ .loading-state-content[data-v-24dbaac4] {
10711
11346
  text-align: center;
10712
11347
  padding: 2rem;
10713
11348
  }
10714
- .loading-state-content p[data-v-cc07b037] {
11349
+ .loading-state-content p[data-v-24dbaac4] {
10715
11350
  color: #6b7280;
10716
11351
  margin-top: 1rem;
10717
11352
  }
10718
11353
 
10719
11354
  /* Empty state styles */
10720
- .empty-state[data-v-cc07b037] {
11355
+ .empty-state[data-v-24dbaac4] {
10721
11356
  height: calc(100vh - 50px);
10722
11357
  display: flex;
10723
11358
  justify-content: center;
10724
11359
  align-items: center;
10725
11360
  background-color: #f9fafb;
10726
11361
  }
10727
- .empty-state-content[data-v-cc07b037] {
11362
+ .empty-state-content[data-v-24dbaac4] {
10728
11363
  text-align: center;
10729
11364
  padding: 2rem;
10730
11365
  }
10731
- .empty-icon[data-v-cc07b037] {
11366
+ .empty-icon[data-v-24dbaac4] {
10732
11367
  font-size: 64px;
10733
11368
  color: #9ca3af;
10734
11369
  margin-bottom: 1rem;
10735
11370
  }
10736
- .empty-state h2[data-v-cc07b037] {
11371
+ .empty-state h2[data-v-24dbaac4] {
10737
11372
  color: #374151;
10738
11373
  margin-bottom: 0.5rem;
10739
11374
  }
10740
- .empty-state p[data-v-cc07b037] {
11375
+ .empty-state p[data-v-24dbaac4] {
10741
11376
  color: #6b7280;
10742
11377
  margin-bottom: 1.5rem;
10743
11378
  }
10744
- .action-button[data-v-cc07b037] {
11379
+ .action-button[data-v-24dbaac4] {
10745
11380
  display: inline-flex;
10746
11381
  align-items: center;
10747
11382
  gap: 0.5rem;
10748
11383
  margin: 0 0.5rem;
10749
11384
  }
10750
- .action-button .material-icons[data-v-cc07b037] {
11385
+ .action-button .material-icons[data-v-24dbaac4] {
10751
11386
  font-size: 18px;
10752
11387
  }