Flowfile 0.3.9__py3-none-any.whl → 0.5.1__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.
Files changed (201) hide show
  1. flowfile/__init__.py +8 -1
  2. flowfile/api.py +1 -3
  3. flowfile/web/static/assets/{CloudConnectionManager-c97c25f8.js → CloudConnectionManager-0dfba9f2.js} +2 -2
  4. flowfile/web/static/assets/{CloudStorageReader-f1ff509e.js → CloudStorageReader-d5b1b6c9.js} +11 -78
  5. flowfile/web/static/assets/{CloudStorageWriter-034f8b78.js → CloudStorageWriter-00d87aad.js} +12 -79
  6. flowfile/web/static/assets/{CloudStorageWriter-49c9a4b2.css → CloudStorageWriter-b0ee067f.css} +24 -24
  7. flowfile/web/static/assets/ColumnSelector-4685e75d.js +83 -0
  8. flowfile/web/static/assets/ColumnSelector-47996a16.css +10 -0
  9. flowfile/web/static/assets/ContextMenu-23e909da.js +41 -0
  10. flowfile/web/static/assets/{SettingsSection-9c836ecc.css → ContextMenu-4c74eef1.css} +0 -21
  11. flowfile/web/static/assets/ContextMenu-63cfa99b.css +26 -0
  12. flowfile/web/static/assets/ContextMenu-70ae0c79.js +41 -0
  13. flowfile/web/static/assets/ContextMenu-c13f91d0.css +26 -0
  14. flowfile/web/static/assets/ContextMenu-f149cf7c.js +41 -0
  15. flowfile/web/static/assets/{CrossJoin-41efa4cb.css → CrossJoin-1119d18e.css} +18 -18
  16. flowfile/web/static/assets/{CrossJoin-9e156ebe.js → CrossJoin-702a3edd.js} +14 -84
  17. flowfile/web/static/assets/CustomNode-74a37f74.css +32 -0
  18. flowfile/web/static/assets/CustomNode-b1519993.js +211 -0
  19. flowfile/web/static/assets/{DatabaseConnectionSettings-d5c625b3.js → DatabaseConnectionSettings-6f3e4ea5.js} +3 -3
  20. flowfile/web/static/assets/{DatabaseManager-265adc5e.js → DatabaseManager-cf5ef661.js} +2 -2
  21. flowfile/web/static/assets/{DatabaseReader-f50c6558.css → DatabaseReader-ae61773c.css} +0 -27
  22. flowfile/web/static/assets/{DatabaseReader-0b10551e.js → DatabaseReader-d38c7295.js} +14 -114
  23. flowfile/web/static/assets/{DatabaseWriter-c17c6916.js → DatabaseWriter-b04ef46a.js} +13 -74
  24. flowfile/web/static/assets/{ExploreData-5bdae813.css → ExploreData-2d0cf4db.css} +8 -14
  25. flowfile/web/static/assets/ExploreData-5fa10ed8.js +192 -0
  26. flowfile/web/static/assets/{ExternalSource-3a66556c.js → ExternalSource-d39af878.js} +8 -79
  27. flowfile/web/static/assets/{Filter-91ad87e7.js → Filter-9b6d08db.js} +12 -85
  28. flowfile/web/static/assets/{Filter-a9d08ba1.css → Filter-f62091b3.css} +3 -3
  29. flowfile/web/static/assets/{Formula-3c395ab1.js → Formula-6b04fb1d.js} +20 -87
  30. flowfile/web/static/assets/{Formula-29f19d21.css → Formula-bb96803d.css} +4 -4
  31. flowfile/web/static/assets/{FuzzyMatch-6857de82.css → FuzzyMatch-1010f966.css} +42 -42
  32. flowfile/web/static/assets/{FuzzyMatch-2df0d230.js → FuzzyMatch-999521f4.js} +16 -87
  33. flowfile/web/static/assets/{GraphSolver-d285877f.js → GraphSolver-17dd2198.js} +13 -159
  34. flowfile/web/static/assets/GraphSolver-f0cb7bfb.css +22 -0
  35. flowfile/web/static/assets/{GroupBy-0bd1cc6b.js → GroupBy-6b039e18.js} +12 -75
  36. flowfile/web/static/assets/{Unique-b5615727.css → GroupBy-b9505323.css} +8 -8
  37. flowfile/web/static/assets/{Join-5a78a203.js → Join-24d0f113.js} +15 -85
  38. flowfile/web/static/assets/{Join-f45eff22.css → Join-fd79b451.css} +20 -20
  39. flowfile/web/static/assets/{ManualInput-a71b52c6.css → ManualInput-3246a08d.css} +20 -20
  40. flowfile/web/static/assets/{ManualInput-93aef9d6.js → ManualInput-34639209.js} +11 -82
  41. flowfile/web/static/assets/MultiSelect-0e8724a3.js +5 -0
  42. flowfile/web/static/assets/MultiSelect.vue_vue_type_script_setup_true_lang-b0e538c2.js +63 -0
  43. flowfile/web/static/assets/NumericInput-3d63a470.js +5 -0
  44. flowfile/web/static/assets/NumericInput.vue_vue_type_script_setup_true_lang-e0edeccc.js +35 -0
  45. flowfile/web/static/assets/Output-283fe388.css +37 -0
  46. flowfile/web/static/assets/{Output-411ecaee.js → Output-edea9802.js} +62 -273
  47. flowfile/web/static/assets/{Pivot-89db4b04.js → Pivot-61d19301.js} +14 -138
  48. flowfile/web/static/assets/Pivot-cf333e3d.css +22 -0
  49. flowfile/web/static/assets/PivotValidation-891ddfb0.css +13 -0
  50. flowfile/web/static/assets/PivotValidation-c46cd420.css +13 -0
  51. flowfile/web/static/assets/PivotValidation-de9f43fe.js +61 -0
  52. flowfile/web/static/assets/PivotValidation-f97fec5b.js +61 -0
  53. flowfile/web/static/assets/{PolarsCode-a9f974f8.js → PolarsCode-bc3c9984.js} +13 -80
  54. flowfile/web/static/assets/Read-64a3f259.js +218 -0
  55. flowfile/web/static/assets/Read-e808b239.css +62 -0
  56. flowfile/web/static/assets/RecordCount-3d5039be.js +53 -0
  57. flowfile/web/static/assets/{RecordId-55ae7d36.js → RecordId-597510e0.js} +8 -80
  58. flowfile/web/static/assets/SQLQueryComponent-36cef432.css +27 -0
  59. flowfile/web/static/assets/SQLQueryComponent-df51adbe.js +38 -0
  60. flowfile/web/static/assets/{Sample-b4a18476.js → Sample-4be0a507.js} +8 -77
  61. flowfile/web/static/assets/{SecretManager-b066d13a.js → SecretManager-4839be57.js} +2 -2
  62. flowfile/web/static/assets/{Select-727688dc.js → Select-9b72f201.js} +11 -85
  63. flowfile/web/static/assets/SettingsSection-2e4d03c4.css +21 -0
  64. flowfile/web/static/assets/SettingsSection-5c696bee.css +20 -0
  65. flowfile/web/static/assets/SettingsSection-71e6b7e3.css +21 -0
  66. flowfile/web/static/assets/SettingsSection-7ded385d.js +45 -0
  67. flowfile/web/static/assets/{SettingsSection-695ac487.js → SettingsSection-e1e9c953.js} +2 -40
  68. flowfile/web/static/assets/SettingsSection-f0f75a42.js +53 -0
  69. flowfile/web/static/assets/SingleSelect-6c777aac.js +5 -0
  70. flowfile/web/static/assets/SingleSelect.vue_vue_type_script_setup_true_lang-33e3ff9b.js +62 -0
  71. flowfile/web/static/assets/SliderInput-7cb93e62.js +40 -0
  72. flowfile/web/static/assets/SliderInput-b8fb6a8c.css +4 -0
  73. flowfile/web/static/assets/{GroupBy-ab1ea74b.css → Sort-3643d625.css} +8 -8
  74. flowfile/web/static/assets/{Sort-be3339a8.js → Sort-6cbde21a.js} +12 -97
  75. flowfile/web/static/assets/TextInput-d9a40c11.js +5 -0
  76. flowfile/web/static/assets/TextInput.vue_vue_type_script_setup_true_lang-5896c375.js +32 -0
  77. flowfile/web/static/assets/{TextToRows-c92d1ec2.css → TextToRows-5d2c1190.css} +9 -9
  78. flowfile/web/static/assets/{TextToRows-7b8998da.js → TextToRows-c4fcbf4d.js} +14 -83
  79. flowfile/web/static/assets/ToggleSwitch-4ef91d19.js +5 -0
  80. flowfile/web/static/assets/ToggleSwitch.vue_vue_type_script_setup_true_lang-38478c20.js +31 -0
  81. flowfile/web/static/assets/{UnavailableFields-8b0cb48e.js → UnavailableFields-a03f512c.js} +2 -2
  82. flowfile/web/static/assets/{Union-8d9ac7f9.css → Union-af6c3d9b.css} +6 -6
  83. flowfile/web/static/assets/Union-bfe9b996.js +77 -0
  84. flowfile/web/static/assets/{Unique-af5a80b4.js → Unique-5d023a27.js} +23 -104
  85. flowfile/web/static/assets/{Sort-7ccfa0fe.css → Unique-f9fb0809.css} +8 -8
  86. flowfile/web/static/assets/Unpivot-1e422df3.css +30 -0
  87. flowfile/web/static/assets/{Unpivot-5195d411.js → Unpivot-91cc5354.js} +12 -166
  88. flowfile/web/static/assets/UnpivotValidation-0d240eeb.css +13 -0
  89. flowfile/web/static/assets/UnpivotValidation-7ee2de44.js +51 -0
  90. flowfile/web/static/assets/{ExploreData-18a4fe52.js → VueGraphicWalker-e51b9924.js} +4 -264
  91. flowfile/web/static/assets/VueGraphicWalker-ed5ab88b.css +6 -0
  92. flowfile/web/static/assets/{api-cb00cce6.js → api-c1bad5ca.js} +1 -1
  93. flowfile/web/static/assets/{api-023d1733.js → api-cf1221f0.js} +1 -1
  94. flowfile/web/static/assets/{designer-2197d782.css → designer-8da3ba3a.css} +859 -201
  95. flowfile/web/static/assets/{designer-6c322d8e.js → designer-9633482a.js} +2297 -733
  96. flowfile/web/static/assets/{documentation-4d1fafe1.js → documentation-ca400224.js} +1 -1
  97. flowfile/web/static/assets/{dropDown-0b46dd77.js → dropDown-614b998d.js} +1 -1
  98. flowfile/web/static/assets/{fullEditor-ec4e4f95.js → fullEditor-f7971590.js} +2 -2
  99. flowfile/web/static/assets/{genericNodeSettings-def5879b.js → genericNodeSettings-4fe5f36b.js} +3 -3
  100. flowfile/web/static/assets/{index-681a3ed0.css → index-50508d4d.css} +8 -0
  101. flowfile/web/static/assets/{index-683fc198.js → index-5429bbf8.js} +208 -31
  102. flowfile/web/static/assets/nodeInput-5d0d6b79.js +41 -0
  103. flowfile/web/static/assets/outputCsv-076b85ab.js +86 -0
  104. flowfile/web/static/assets/{Output-48f81019.css → outputCsv-9cc59e0b.css} +0 -143
  105. flowfile/web/static/assets/outputExcel-0fd17dbe.js +56 -0
  106. flowfile/web/static/assets/outputExcel-b41305c0.css +102 -0
  107. flowfile/web/static/assets/outputParquet-b61e0847.js +31 -0
  108. flowfile/web/static/assets/outputParquet-cf8cf3f2.css +4 -0
  109. flowfile/web/static/assets/readCsv-a8bb8b61.js +179 -0
  110. flowfile/web/static/assets/readCsv-c767cb37.css +52 -0
  111. flowfile/web/static/assets/readExcel-67b4aee0.js +201 -0
  112. flowfile/web/static/assets/readExcel-806d2826.css +64 -0
  113. flowfile/web/static/assets/readParquet-48c81530.css +19 -0
  114. flowfile/web/static/assets/readParquet-92ce1dbc.js +23 -0
  115. flowfile/web/static/assets/{secretApi-baceb6f9.js → secretApi-68435402.js} +1 -1
  116. flowfile/web/static/assets/{selectDynamic-de91449a.js → selectDynamic-92e25ee3.js} +7 -7
  117. flowfile/web/static/assets/{selectDynamic-b062bc9b.css → selectDynamic-aa913ff4.css} +16 -16
  118. flowfile/web/static/assets/user-defined-icon-0ae16c90.png +0 -0
  119. flowfile/web/static/assets/{vue-codemirror.esm-dc5e3348.js → vue-codemirror.esm-41b0e0d7.js} +65 -36
  120. flowfile/web/static/assets/{vue-content-loader.es-ba94b82f.js → vue-content-loader.es-2c8e608f.js} +1 -1
  121. flowfile/web/static/index.html +2 -2
  122. {flowfile-0.3.9.dist-info → flowfile-0.5.1.dist-info}/METADATA +5 -3
  123. {flowfile-0.3.9.dist-info → flowfile-0.5.1.dist-info}/RECORD +191 -121
  124. {flowfile-0.3.9.dist-info → flowfile-0.5.1.dist-info}/WHEEL +1 -1
  125. {flowfile-0.3.9.dist-info → flowfile-0.5.1.dist-info}/entry_points.txt +1 -0
  126. flowfile_core/__init__.py +3 -0
  127. flowfile_core/configs/flow_logger.py +5 -13
  128. flowfile_core/configs/node_store/__init__.py +30 -0
  129. flowfile_core/configs/node_store/nodes.py +383 -99
  130. flowfile_core/configs/node_store/user_defined_node_registry.py +193 -0
  131. flowfile_core/configs/settings.py +2 -1
  132. flowfile_core/database/connection.py +5 -21
  133. flowfile_core/fileExplorer/funcs.py +239 -121
  134. flowfile_core/flowfile/analytics/analytics_processor.py +1 -0
  135. flowfile_core/flowfile/code_generator/code_generator.py +62 -64
  136. flowfile_core/flowfile/flow_data_engine/create/funcs.py +73 -56
  137. flowfile_core/flowfile/flow_data_engine/flow_data_engine.py +77 -86
  138. flowfile_core/flowfile/flow_data_engine/flow_file_column/interface.py +4 -0
  139. flowfile_core/flowfile/flow_data_engine/flow_file_column/main.py +19 -34
  140. flowfile_core/flowfile/flow_data_engine/flow_file_column/type_registry.py +36 -0
  141. flowfile_core/flowfile/flow_data_engine/fuzzy_matching/prepare_for_fuzzy_match.py +23 -23
  142. flowfile_core/flowfile/flow_data_engine/join/utils.py +1 -1
  143. flowfile_core/flowfile/flow_data_engine/join/verify_integrity.py +9 -4
  144. flowfile_core/flowfile/flow_data_engine/subprocess_operations/subprocess_operations.py +212 -86
  145. flowfile_core/flowfile/flow_data_engine/utils.py +2 -0
  146. flowfile_core/flowfile/flow_graph.py +240 -54
  147. flowfile_core/flowfile/flow_node/flow_node.py +48 -13
  148. flowfile_core/flowfile/flow_node/models.py +2 -1
  149. flowfile_core/flowfile/handler.py +24 -5
  150. flowfile_core/flowfile/manage/compatibility_enhancements.py +404 -41
  151. flowfile_core/flowfile/manage/io_flowfile.py +394 -0
  152. flowfile_core/flowfile/node_designer/__init__.py +47 -0
  153. flowfile_core/flowfile/node_designer/_type_registry.py +197 -0
  154. flowfile_core/flowfile/node_designer/custom_node.py +371 -0
  155. flowfile_core/flowfile/node_designer/ui_components.py +277 -0
  156. flowfile_core/flowfile/schema_callbacks.py +17 -10
  157. flowfile_core/flowfile/setting_generator/settings.py +15 -10
  158. flowfile_core/main.py +5 -1
  159. flowfile_core/routes/routes.py +73 -30
  160. flowfile_core/routes/user_defined_components.py +55 -0
  161. flowfile_core/schemas/cloud_storage_schemas.py +0 -2
  162. flowfile_core/schemas/input_schema.py +228 -65
  163. flowfile_core/schemas/output_model.py +5 -2
  164. flowfile_core/schemas/schemas.py +153 -35
  165. flowfile_core/schemas/transform_schema.py +1083 -412
  166. flowfile_core/schemas/yaml_types.py +103 -0
  167. flowfile_core/types.py +156 -0
  168. flowfile_core/utils/validate_setup.py +3 -1
  169. flowfile_frame/__init__.py +3 -1
  170. flowfile_frame/flow_frame.py +31 -24
  171. flowfile_frame/flow_frame_methods.py +12 -9
  172. flowfile_worker/__init__.py +9 -35
  173. flowfile_worker/create/__init__.py +3 -21
  174. flowfile_worker/create/funcs.py +68 -56
  175. flowfile_worker/create/models.py +130 -62
  176. flowfile_worker/main.py +5 -2
  177. flowfile_worker/routes.py +52 -13
  178. shared/__init__.py +15 -0
  179. shared/storage_config.py +258 -0
  180. tools/migrate/README.md +56 -0
  181. tools/migrate/__init__.py +12 -0
  182. tools/migrate/__main__.py +131 -0
  183. tools/migrate/legacy_schemas.py +621 -0
  184. tools/migrate/migrate.py +598 -0
  185. tools/migrate/tests/__init__.py +0 -0
  186. tools/migrate/tests/conftest.py +23 -0
  187. tools/migrate/tests/test_migrate.py +627 -0
  188. tools/migrate/tests/test_migration_e2e.py +1010 -0
  189. tools/migrate/tests/test_node_migrations.py +813 -0
  190. flowfile/web/static/assets/GraphSolver-17fd26db.css +0 -68
  191. flowfile/web/static/assets/Pivot-f415e85f.css +0 -35
  192. flowfile/web/static/assets/Read-80dc1675.css +0 -197
  193. flowfile/web/static/assets/Read-c3b1929c.js +0 -701
  194. flowfile/web/static/assets/RecordCount-4e95f98e.js +0 -122
  195. flowfile/web/static/assets/Union-89fd73dc.js +0 -146
  196. flowfile/web/static/assets/Unpivot-246e9bbd.css +0 -77
  197. flowfile/web/static/assets/nodeTitle-a16db7c3.js +0 -227
  198. flowfile/web/static/assets/nodeTitle-f4b12bcb.css +0 -134
  199. flowfile_core/flowfile/manage/open_flowfile.py +0 -135
  200. {flowfile-0.3.9.dist-info → flowfile-0.5.1.dist-info/licenses}/LICENSE +0 -0
  201. /flowfile_core/flowfile/manage/manage_flowfile.py → /tools/__init__.py +0 -0
@@ -1,9 +1,9 @@
1
1
 
2
- .button-group[data-v-e9cba087] {
2
+ .button-group[data-v-c0f9acc7] {
3
3
  display: flex;
4
4
  gap: 10px;
5
5
  }
6
- .button-group .el-button[data-v-e9cba087] {
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-e9cba087]: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-e9cba087]: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-e9cba087] {
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-e9cba087]: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-e9cba087]: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-e9cba087]: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-11a74179] {
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-11a74179] {
72
72
  display: flex;
73
73
  justify-content: center;
74
74
  }
75
- .browser-content[data-v-d5bb1173] {
75
+ .browser-content[data-v-11a74179] {
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-11a74179] {
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-11a74179] {
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-11a74179] {
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-11a74179]: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-11a74179] {
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-11a74179] {
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-11a74179] {
125
125
  flex: 1;
126
126
  }
127
- .browser-main[data-v-d5bb1173] {
127
+ .browser-main[data-v-11a74179] {
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-11a74179] {
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-11a74179]: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-11a74179] {
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-11a74179] {
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-11a74179] {
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-11a74179] {
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-11a74179] {
165
165
  flex: 1;
166
166
  min-width: 0;
167
167
  }
168
- .file-name[data-v-d5bb1173] {
168
+ .file-name[data-v-11a74179] {
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-11a74179] {
177
177
  font-size: 12px;
178
178
  color: #6b7280;
179
179
  }
180
- .browser-actions[data-v-d5bb1173] {
180
+ .browser-actions[data-v-11a74179] {
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-11a74179] {
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-11a74179],
196
+ .error-state[data-v-11a74179] {
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-11a74179] {
204
204
  color: #dc2626;
205
205
  }
206
- .hidden-file[data-v-d5bb1173] {
206
+ .hidden-file[data-v-11a74179] {
207
207
  opacity: 0.5;
208
208
  }
209
- .file-browser[data-v-d5bb1173] {
209
+ .file-browser[data-v-11a74179] {
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-11a74179] {
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-11a74179] {
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-11a74179] {
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-11a74179] {
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-11a74179] {
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-11a74179] {
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-11a74179] {
257
257
  display: inline-flex;
258
258
  align-items: center;
259
259
  justify-content: center;
@@ -261,14 +261,37 @@
261
261
  height: 32px;
262
262
  padding: 0;
263
263
  }
264
- .controls-row[data-v-d5bb1173] {
264
+ .controls-row[data-v-11a74179] {
265
265
  display: flex;
266
266
  align-items: center;
267
267
  gap: 16px;
268
268
  margin-top: 12px;
269
269
  }
270
+ .form-hint[data-v-11a74179] {
271
+ font-size: 12px;
272
+ color: #6b7280;
273
+ margin-top: 8px;
274
+ display: flex;
275
+ align-items: center;
276
+ gap: 6px;
277
+ flex-wrap: wrap;
278
+ }
279
+ .preview-label[data-v-11a74179] {
280
+ color: #374151;
281
+ }
282
+ .form-hint code[data-v-11a74179] {
283
+ background-color: #f3f4f6;
284
+ padding: 2px 6px;
285
+ border-radius: 4px;
286
+ font-family: monospace;
287
+ color: #1f2937;
288
+ }
289
+ .auto-extension-hint[data-v-11a74179] {
290
+ color: #9ca3af;
291
+ font-style: italic;
292
+ }
270
293
 
271
- .action-buttons[data-v-bc5487da] {
294
+ .action-buttons[data-v-3359ec07] {
272
295
  padding-left: 20px;
273
296
  display: flex;
274
297
  align-items: center;
@@ -281,7 +304,7 @@
281
304
  BlinkMacSystemFont,
282
305
  sans-serif;
283
306
  }
284
- .action-btn[data-v-bc5487da] {
307
+ .action-btn[data-v-3359ec07] {
285
308
  display: flex;
286
309
  align-items: center;
287
310
  gap: 6px;
@@ -298,22 +321,22 @@
298
321
  letter-spacing: 0.01em;
299
322
  box-shadow: 0 1px 2px rgba(1, 5, 13, 0.08); /* Slightly darker shadow */
300
323
  }
301
- .action-btn[data-v-bc5487da]:hover {
324
+ .action-btn[data-v-3359ec07]:hover {
302
325
  background-color: rgba(16, 24, 40, 0.08); /* Darker hover background */
303
326
  border-color: rgba(16, 24, 40, 0.18); /* Darker hover border */
304
327
  }
305
- .action-btn[data-v-bc5487da]:active {
328
+ .action-btn[data-v-3359ec07]:active {
306
329
  transform: translateY(1px);
307
330
  box-shadow: none;
308
331
  }
309
- .btn-icon[data-v-bc5487da] {
332
+ .btn-icon[data-v-3359ec07] {
310
333
  font-size: 16px;
311
334
  color: rgb(2, 27, 45); /* Darker icon color */
312
335
  }
313
- .btn-text[data-v-bc5487da] {
336
+ .btn-text[data-v-3359ec07] {
314
337
  white-space: nowrap;
315
338
  }
316
- .settings-modal-content[data-v-bc5487da] {
339
+ .settings-modal-content[data-v-3359ec07] {
317
340
  padding: 16px;
318
341
  font-family:
319
342
  "Inter",
@@ -322,23 +345,55 @@
322
345
  BlinkMacSystemFont,
323
346
  sans-serif;
324
347
  }
325
- .form-group[data-v-bc5487da] {
348
+ .form-group[data-v-3359ec07] {
326
349
  margin-bottom: 16px;
327
350
  }
328
- .form-group label[data-v-bc5487da] {
351
+ .form-group label[data-v-3359ec07] {
352
+ display: block;
353
+ margin-bottom: 8px;
354
+ font-size: 14px;
355
+ font-weight: 500;
356
+ color: rgba(16, 24, 40, 0.9);
357
+ }
358
+ .quick-create-modal[data-v-3359ec07] {
359
+ padding: 16px 0;
360
+ }
361
+ .quick-create-modal .form-group[data-v-3359ec07] {
362
+ margin-bottom: 20px;
363
+ }
364
+ .quick-create-modal label[data-v-3359ec07] {
329
365
  display: block;
330
366
  margin-bottom: 8px;
331
367
  font-size: 14px;
332
368
  font-weight: 500;
333
369
  color: rgba(16, 24, 40, 0.9);
334
370
  }
371
+ .preview-text[data-v-3359ec07] {
372
+ padding: 12px;
373
+ background-color: rgba(3, 11, 27, 0.03);
374
+ border: 1px solid rgba(16, 24, 40, 0.08);
375
+ border-radius: 6px;
376
+ font-size: 13px;
377
+ color: rgba(16, 24, 40, 0.7);
378
+ }
379
+ .preview-text code[data-v-3359ec07] {
380
+ background-color: rgba(16, 24, 40, 0.08);
381
+ padding: 2px 6px;
382
+ border-radius: 3px;
383
+ font-family: "Monaco", "Menlo", "Ubuntu Mono", monospace;
384
+ font-size: 12px;
385
+ }
386
+ .dialog-footer[data-v-3359ec07] {
387
+ display: flex;
388
+ gap: 8px;
389
+ }
335
390
 
336
- .status-wrapper[data-v-88e0f447] {
391
+ .status-wrapper[data-v-4aa2388b] {
337
392
  display: flex;
338
393
  align-items: center;
339
394
  gap: 12px;
340
395
  }
341
- .flow-card[data-v-88e0f447] {
396
+ .flow-card[data-v-4aa2388b] {
342
397
  position: relative;
343
398
  width: 40px;
344
399
  height: 40px;
@@ -347,22 +402,22 @@
347
402
  cursor: help;
348
403
  overflow: hidden;
349
404
  }
350
- .flow-card[data-v-88e0f447]:hover {
405
+ .flow-card[data-v-4aa2388b]:hover {
351
406
  transform: translateY(-0.5px);
352
407
  box-shadow: 0 4px 16px rgba(159, 129, 228, 0.25);
353
408
  }
354
- .flow-animation[data-v-88e0f447] {
409
+ .flow-animation[data-v-4aa2388b] {
355
410
  width: 100%;
356
411
  height: 100%;
357
412
  }
358
413
 
359
414
  /* Flow Container */
360
- .flow-container[data-v-88e0f447] {
415
+ .flow-container[data-v-4aa2388b] {
361
416
  fill: #8c8caa;
362
417
  }
363
418
 
364
419
  /* Extra Thick Flow Lines with Gradient */
365
- .flow-line[data-v-88e0f447] {
420
+ .flow-line[data-v-4aa2388b] {
366
421
  fill: none;
367
422
  stroke: url(#lineGradient);
368
423
  stroke-width: 8; /* Extra thick lines */
@@ -372,35 +427,35 @@
372
427
  }
373
428
 
374
429
  /* Animation only when flowing */
375
- .is-flowing .flow-line[data-v-88e0f447] {
376
- animation: flowMove-88e0f447 3s infinite linear;
430
+ .is-flowing .flow-line[data-v-4aa2388b] {
431
+ animation: flowMove-4aa2388b 3s infinite linear;
377
432
  }
378
- .is-flowing .flow-line-2[data-v-88e0f447] {
433
+ .is-flowing .flow-line-2[data-v-4aa2388b] {
379
434
  animation-delay: -1s;
380
435
  }
381
- .is-flowing .flow-line-3[data-v-88e0f447] {
436
+ .is-flowing .flow-line-3[data-v-4aa2388b] {
382
437
  animation-delay: -2s;
383
438
  }
384
439
 
385
440
  /* Flow Particles - only visible when running */
386
- .flow-particle[data-v-88e0f447] {
441
+ .flow-particle[data-v-4aa2388b] {
387
442
  fill: #5256c6;
388
443
  opacity: 0;
389
444
  }
390
- .is-flowing .flow-particle[data-v-88e0f447] {
391
- animation: particleFlow-88e0f447 3s infinite ease-in-out;
445
+ .is-flowing .flow-particle[data-v-4aa2388b] {
446
+ animation: particleFlow-4aa2388b 3s infinite ease-in-out;
392
447
  }
393
- .particle-1[data-v-88e0f447] {
448
+ .particle-1[data-v-4aa2388b] {
394
449
  animation-delay: 0s;
395
450
  }
396
- .particle-2[data-v-88e0f447] {
451
+ .particle-2[data-v-4aa2388b] {
397
452
  animation-delay: -1s;
398
453
  }
399
- .particle-3[data-v-88e0f447] {
454
+ .particle-3[data-v-4aa2388b] {
400
455
  animation-delay: -2s;
401
456
  }
402
457
  /* Control Button */
403
- .control-button[data-v-88e0f447] {
458
+ .control-button[data-v-4aa2388b] {
404
459
  display: flex;
405
460
  align-items: center;
406
461
  justify-content: center;
@@ -414,19 +469,19 @@
414
469
  transition: all 0.3s ease;
415
470
  box-shadow: 0 2px 8px rgba(76, 0, 255, 0.2);
416
471
  }
417
- .control-button[data-v-88e0f447]:hover {
472
+ .control-button[data-v-4aa2388b]:hover {
418
473
  background: #4834d4;
419
474
  color: white;
420
475
  transform: translateY(-1px);
421
476
  box-shadow: 0 4px 16px rgba(76, 0, 255, 0.3);
422
477
  }
423
- .control-button.is-active[data-v-88e0f447] {
478
+ .control-button.is-active[data-v-4aa2388b] {
424
479
  background: #4834d4;
425
480
  color: white;
426
481
  }
427
482
 
428
483
  /* Animations */
429
- @keyframes flowMove-88e0f447 {
484
+ @keyframes flowMove-4aa2388b {
430
485
  0% {
431
486
  transform: translateX(0);
432
487
  }
@@ -434,7 +489,7 @@
434
489
  transform: translateX(-70px);
435
490
  }
436
491
  }
437
- @keyframes particleFlow-88e0f447 {
492
+ @keyframes particleFlow-4aa2388b {
438
493
  0% {
439
494
  opacity: 0;
440
495
  transform: translateX(-10px) scale(0.8);
@@ -453,7 +508,144 @@
453
508
  }
454
509
  }
455
510
 
456
- .custom-node[data-v-74411a9e] {
511
+ .status-indicator[data-v-8ef0b204] {
512
+ position: relative;
513
+ display: flex;
514
+ align-items: center;
515
+ margin-right: 8px;
516
+ }
517
+ .status-indicator[data-v-8ef0b204]::before {
518
+ content: "";
519
+ display: block;
520
+ width: 10px;
521
+ height: 10px;
522
+ border-radius: 50%;
523
+ }
524
+ .status-indicator.success[data-v-8ef0b204]::before {
525
+ background-color: #4caf50;
526
+ }
527
+ .status-indicator.failure[data-v-8ef0b204]::before {
528
+ background-color: #f44336;
529
+ }
530
+ .status-indicator.warning[data-v-8ef0b204]::before {
531
+ background-color: #f09f5dd1;
532
+ }
533
+ .status-indicator.unknown[data-v-8ef0b204]::before {
534
+ background-color: #ffffff;
535
+ }
536
+ .status-indicator.running[data-v-8ef0b204]::before {
537
+ background-color: #0909ca;
538
+ animation: pulse-8ef0b204 1.5s cubic-bezier(0.4, 0, 0.6, 1) infinite;
539
+ box-shadow: 0 0 10px #0909ca;
540
+ }
541
+ @keyframes pulse-8ef0b204 {
542
+ 0% {
543
+ transform: scale(1);
544
+ opacity: 1;
545
+ box-shadow: 0 0 5px #0909ca;
546
+ }
547
+ 50% {
548
+ transform: scale(1.3);
549
+ opacity: 0.6;
550
+ box-shadow: 0 0 15px #0909ca;
551
+ }
552
+ 100% {
553
+ transform: scale(1);
554
+ opacity: 1;
555
+ box-shadow: 0 0 5px #0909ca;
556
+ }
557
+ }
558
+ .tooltip-text[data-v-8ef0b204] {
559
+ visibility: hidden;
560
+ width: 120px;
561
+ background-color: black;
562
+ color: #fff;
563
+ text-align: center;
564
+ border-radius: 6px;
565
+ padding: 5px 0;
566
+ position: absolute;
567
+ z-index: 1;
568
+ bottom: 100%;
569
+ left: 50%;
570
+ margin-left: -60px;
571
+ opacity: 0;
572
+ transition: opacity 0.3s;
573
+ }
574
+ .status-indicator:hover .tooltip-text[data-v-8ef0b204] {
575
+ visibility: visible;
576
+ opacity: 1;
577
+ }
578
+ .description-input[data-v-8ef0b204]:hover,
579
+ .description-input[data-v-8ef0b204]:focus {
580
+ background-color: #e7e7e7; /* Slightly darker on hover/focus */
581
+ box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.2); /* More pronounced shadow on hover/focus */
582
+ }
583
+ .component-wrapper[data-v-8ef0b204] {
584
+ position: relative; /* This makes the absolute positioning of the child relative to this container */
585
+ max-width: 60px;
586
+ overflow: visible; /* Allows children to visually overflow */
587
+ }
588
+ .description-display[data-v-8ef0b204] {
589
+ padding: 8px;
590
+ width: 200px !important;
591
+ max-height: 8px !important;
592
+ background-color: #ffffff; /* Light grey background */
593
+ border-radius: 4px; /* Rounded corners for a modern look */
594
+ cursor: pointer; /* Indicates the text can be clicked */
595
+ }
596
+ .overlay[data-v-8ef0b204] {
597
+ position: fixed; /* This is key for viewport-level positioning */
598
+ width: 200px; /* Or whatever width you prefer */
599
+ height: 200px; /* Or whatever height you prefer */
600
+ left: 50%; /* Center horizontally */
601
+ top: 50%; /* Center vertically */
602
+ transform: translate(-50%, -50%); /* Adjust based on its own dimensions */
603
+ z-index: 1000; /* High enough to float above everything else */
604
+ /* Your existing styles for background, padding, etc. */
605
+ }
606
+ .node-button[data-v-8ef0b204] {
607
+ background-color: #ffffff;
608
+ border-radius: 10px;
609
+ border-width: 0px;
610
+ }
611
+ .node-button[data-v-8ef0b204]:hover {
612
+ background-color: #f5f5f5;
613
+ transform: translateY(-1px);
614
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
615
+ }
616
+ .overlay-content[data-v-8ef0b204] {
617
+ padding: 20px;
618
+ border-radius: 10px;
619
+ box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
620
+ display: flex;
621
+ flex-direction: column;
622
+ align-items: stretch;
623
+ }
624
+ .overlay-prompt[data-v-8ef0b204] {
625
+ margin-bottom: 10px;
626
+ color: #333;
627
+ font-size: 16px;
628
+ }
629
+ .description-input[data-v-8ef0b204] {
630
+ margin-bottom: 10px;
631
+ border: 1px solid #ccc;
632
+ border-radius: 4px;
633
+ padding: 10px;
634
+ font-size: 14px;
635
+ height: 100px; /* Adjust based on your needs */
636
+ }
637
+ .selected[data-v-8ef0b204] {
638
+ border: 2px solid #828282;
639
+ }
640
+
641
+ .error-node[data-v-00eceaf3] {
642
+ padding: 8px;
643
+ background: #ffcccc;
644
+ border-radius: 4px;
645
+ font-size: 12px;
646
+ }
647
+
648
+ .custom-node[data-v-0887a495] {
457
649
  border-radius: 4px;
458
650
  padding: 1px;
459
651
  background-color: white;
@@ -462,10 +654,10 @@
462
654
  align-items: center;
463
655
  position: relative;
464
656
  }
465
- .selected[data-v-74411a9e] {
657
+ .selected[data-v-0887a495] {
466
658
  border: 2px solid #409eff;
467
659
  }
468
- .custom-node-header[data-v-74411a9e] {
660
+ .custom-node-header[data-v-0887a495] {
469
661
  font-weight: 100;
470
662
  font-size: small;
471
663
  width: 20px;
@@ -474,12 +666,12 @@
474
666
  text-overflow: ellipsis;
475
667
  font-family: "Roboto", "Source Sans Pro", Avenir, Helvetica, Arial, sans-serif;
476
668
  }
477
- .description-display[data-v-74411a9e] {
669
+ .description-display[data-v-0887a495] {
478
670
  position: relative;
479
671
  white-space: normal;
480
- min-width: 100px; /* Default minimum width */
672
+ min-width: 100px;
481
673
  max-width: 300px;
482
- width: auto; /* Allow dynamic width */
674
+ width: auto;
483
675
  padding: 2px 4px;
484
676
  cursor: pointer;
485
677
  background-color: rgba(185, 185, 185, 0.117);
@@ -489,7 +681,7 @@
489
681
  gap: 4px;
490
682
  border-radius: 4px;
491
683
  }
492
- .edit-icon[data-v-74411a9e] {
684
+ .edit-icon[data-v-0887a495] {
493
685
  opacity: 0;
494
686
  transition: opacity 0.2s;
495
687
  color: #0f275f;
@@ -498,26 +690,26 @@
498
690
  align-items: center;
499
691
  padding: 2px;
500
692
  }
501
- .description-display:hover .edit-icon[data-v-74411a9e] {
693
+ .description-display:hover .edit-icon[data-v-0887a495] {
502
694
  opacity: 1;
503
695
  }
504
- .edit-icon[data-v-74411a9e]:hover {
696
+ .edit-icon[data-v-0887a495]:hover {
505
697
  color: #051233;
506
698
  }
507
- .description-text[data-v-74411a9e] {
699
+ .description-text[data-v-0887a495] {
508
700
  margin: 0;
509
701
  white-space: pre-wrap;
510
702
  word-wrap: break-word;
511
703
  font-family: "Roboto", "Source Sans Pro", Avenir, Helvetica, Arial, sans-serif;
512
704
  }
513
- .edit-overlay[data-v-74411a9e] {
705
+ .edit-overlay[data-v-0887a495] {
514
706
  position: fixed;
515
707
  z-index: 1000;
516
708
  background: white;
517
709
  border-radius: 4px;
518
710
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
519
711
  }
520
- .description-input[data-v-74411a9e] {
712
+ .description-input[data-v-0887a495] {
521
713
  width: 200px;
522
714
  height: 75px;
523
715
  resize: both;
@@ -528,17 +720,15 @@
528
720
  font-family: "Roboto", "Source Sans Pro", Avenir, Helvetica, Arial, sans-serif;
529
721
  background-color: white;
530
722
  }
531
- .handle-input[data-v-74411a9e] {
723
+ .handle-input[data-v-0887a495] {
532
724
  position: absolute;
533
725
  left: -8px;
534
726
  }
535
- .handle-output[data-v-74411a9e] {
727
+ .handle-output[data-v-0887a495] {
536
728
  position: absolute;
537
729
  right: -8px;
538
730
  }
539
-
540
- /* Context Menu Styles */
541
- .context-menu[data-v-74411a9e] {
731
+ .context-menu[data-v-0887a495] {
542
732
  position: fixed;
543
733
  z-index: 10000;
544
734
  background-color: white;
@@ -548,7 +738,7 @@
548
738
  min-width: 120px;
549
739
  font-family: "Roboto", "Source Sans Pro", Avenir, Helvetica, Arial, sans-serif;
550
740
  }
551
- .context-menu-item[data-v-74411a9e] {
741
+ .context-menu-item[data-v-0887a495] {
552
742
  padding: 8px 12px;
553
743
  display: flex;
554
744
  align-items: center;
@@ -558,13 +748,13 @@
558
748
  transition: background-color 0.2s;
559
749
  font-family: "Roboto", "Source Sans Pro", Avenir, Helvetica, Arial, sans-serif;
560
750
  }
561
- .context-menu-item[data-v-74411a9e]:hover {
751
+ .context-menu-item[data-v-0887a495]:hover {
562
752
  background-color: #f5f5f5;
563
753
  }
564
- .context-menu-item svg[data-v-74411a9e] {
754
+ .context-menu-item svg[data-v-0887a495] {
565
755
  color: #555;
566
756
  }
567
- .context-menu-item span[data-v-74411a9e] {
757
+ .context-menu-item span[data-v-0887a495] {
568
758
  font-family: "Roboto", "Source Sans Pro", Avenir, Helvetica, Arial, sans-serif;
569
759
  }
570
760
 
@@ -623,7 +813,7 @@ to {
623
813
  }
624
814
  }
625
815
 
626
- .nodes-wrapper[data-v-a8d4b46b] {
816
+ .nodes-wrapper[data-v-63142f09] {
627
817
  display: flex;
628
818
  flex-direction: column;
629
819
  gap: 5px;
@@ -634,17 +824,17 @@ to {
634
824
  }
635
825
 
636
826
  /* Style for search input */
637
- .search-input[data-v-a8d4b46b] {
827
+ .search-input[data-v-63142f09] {
638
828
  padding: 8px 16px;
639
829
  margin-bottom: 8px;
640
830
  border: 1px solid #ccc;
641
831
  border-radius: 4px;
642
832
  }
643
- .category-container[data-v-a8d4b46b] {
833
+ .category-container[data-v-63142f09] {
644
834
  overflow: hidden;
645
835
  border-radius: 4px;
646
836
  }
647
- .category-header[data-v-a8d4b46b] {
837
+ .category-header[data-v-63142f09] {
648
838
  display: flex;
649
839
  align-items: center;
650
840
  justify-content: space-between;
@@ -656,25 +846,25 @@ to {
656
846
  transition: background-color 0.2s ease;
657
847
  height: 32px;
658
848
  }
659
- .category-header[data-v-a8d4b46b]:hover {
849
+ .category-header[data-v-63142f09]:hover {
660
850
  background-color: #f5f5f5;
661
851
  }
662
- .category-title[data-v-a8d4b46b] {
852
+ .category-title[data-v-63142f09] {
663
853
  font-size: small;
664
854
  font-weight: 200;
665
855
  color: #333;
666
856
  text-align: left;
667
857
  }
668
- .category-icon[data-v-a8d4b46b] {
858
+ .category-icon[data-v-63142f09] {
669
859
  font-size: 12px;
670
860
  color: #666;
671
861
  }
672
- .category-content[data-v-a8d4b46b] {
862
+ .category-content[data-v-63142f09] {
673
863
  display: flex;
674
864
  flex-direction: column;
675
865
  background-color: #fff;
676
866
  }
677
- .node-item[data-v-a8d4b46b] {
867
+ .node-item[data-v-63142f09] {
678
868
  display: flex;
679
869
  align-items: center;
680
870
  padding: 8px 16px;
@@ -684,38 +874,43 @@ to {
684
874
  border-bottom: 1px solid #eee;
685
875
  height: 32px;
686
876
  }
687
- .node-item[data-v-a8d4b46b]:last-child {
877
+ .node-item[data-v-63142f09]:last-child {
688
878
  border-bottom: none;
689
879
  }
690
- .node-item[data-v-a8d4b46b]:hover {
880
+ .node-item[data-v-63142f09]:hover {
691
881
  background-color: #f5f5f5;
692
882
  }
693
- .node-image[data-v-a8d4b46b] {
883
+ .node-image[data-v-63142f09] {
694
884
  width: 24px;
695
885
  height: 24px;
696
886
  margin-right: 10px;
697
887
  }
698
- .node-name[data-v-a8d4b46b] {
888
+ .node-name[data-v-63142f09] {
699
889
  font-size: 12px;
700
890
  color: #333;
701
891
  }
702
892
 
703
893
  /* Custom scrollbar */
704
- .nodes-wrapper[data-v-a8d4b46b]::-webkit-scrollbar {
894
+ .nodes-wrapper[data-v-63142f09]::-webkit-scrollbar {
705
895
  width: 8px;
706
896
  }
707
- .nodes-wrapper[data-v-a8d4b46b]::-webkit-scrollbar-track {
897
+ .nodes-wrapper[data-v-63142f09]::-webkit-scrollbar-track {
708
898
  background: transparent;
709
899
  }
710
- .nodes-wrapper[data-v-a8d4b46b]::-webkit-scrollbar-thumb {
900
+ .nodes-wrapper[data-v-63142f09]::-webkit-scrollbar-thumb {
711
901
  background-color: rgba(0, 0, 0, 0.1);
712
902
  border-radius: 4px;
713
903
  }
714
- .nodes-wrapper[data-v-a8d4b46b]::-webkit-scrollbar-thumb:hover {
904
+ .nodes-wrapper[data-v-63142f09]::-webkit-scrollbar-thumb:hover {
715
905
  background-color: rgba(0, 0, 0, 0.2);
716
906
  }
717
907
 
718
- .minimal-button[data-v-e3b23979] {
908
+ .intro-content[data-v-0db5c358] {
909
+ white-space: pre-wrap; /* Preserves whitespace and line breaks */
910
+ }
911
+
912
+ /* (Styles are unchanged) */
913
+ .minimal-button[data-v-47a34251] {
719
914
  background: none;
720
915
  border: none;
721
916
  padding: 4px;
@@ -729,16 +924,10 @@ to {
729
924
  width: 25px;
730
925
  height: 25px;
731
926
  }
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);
927
+ .minimal-button[data-tooltip="true"][data-v-47a34251]::after {
928
+ content: attr(data-tooltip-text);
740
929
  position: absolute;
741
- bottom: 100%;
930
+ top: calc(100% + 5px);
742
931
  left: 50%;
743
932
  transform: translateX(-50%);
744
933
  background-color: #333;
@@ -753,11 +942,12 @@ to {
753
942
  opacity 0.2s,
754
943
  visibility 0.2s;
755
944
  pointer-events: none;
945
+ z-index: 100000;
756
946
  }
757
- .minimal-button[data-v-e3b23979]::before {
947
+ .minimal-button[data-tooltip="true"][data-v-47a34251]::before {
758
948
  content: "";
759
949
  position: absolute;
760
- bottom: calc(100% - 4px);
950
+ top: 100%;
761
951
  left: 50%;
762
952
  transform: translateX(-50%);
763
953
  border-width: 4px;
@@ -769,32 +959,43 @@ to {
769
959
  opacity 0.2s,
770
960
  visibility 0.2s;
771
961
  pointer-events: none;
962
+ z-index: 100000;
772
963
  }
773
- .minimal-button[data-v-e3b23979]:hover::after,
774
- .minimal-button[data-v-e3b23979]:hover::before {
964
+ .minimal-button[data-tooltip="true"][data-v-47a34251]:hover::after,
965
+ .minimal-button[data-tooltip="true"][data-v-47a34251]:hover::before {
775
966
  opacity: 1;
776
967
  visibility: visible;
777
968
  }
778
- .move-handle[data-v-e3b23979] {
779
- cursor: grab;
969
+ .minimal-button .icon[data-v-47a34251] {
970
+ font-size: 16px;
780
971
  }
781
- .minimized-title[data-v-e3b23979] {
972
+ .minimal-button[data-v-47a34251]:hover {
973
+ color: #000;
974
+ background-color: #9facff;
975
+ }
976
+ .group-badge[data-v-47a34251] {
977
+ background-color: #074273;
978
+ color: white;
979
+ padding: 2px 6px;
980
+ border-radius: 3px;
981
+ font-size: 11px;
982
+ margin-right: 4px;
782
983
  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;
984
+ transition: background-color 0.2s;
985
+ user-select: none;
986
+ }
987
+ .title-text[data-v-47a34251] {
988
+ flex-grow: 1;
989
+ padding: 0 8px;
790
990
  font-size: 14px;
991
+ color: #333;
791
992
  }
792
- .overlay.minimized[data-v-e3b23979] {
793
- width: 150px;
794
- height: 30px;
993
+ .overlay.minimized[data-v-47a34251] {
994
+ width: auto !important;
995
+ height: 35px !important;
795
996
  cursor: default;
796
997
  }
797
- .overlay[data-v-e3b23979] {
998
+ .overlay[data-v-47a34251] {
798
999
  position: absolute;
799
1000
  width: auto;
800
1001
  max-width: 100%;
@@ -807,62 +1008,244 @@ to {
807
1008
  display: flex;
808
1009
  flex-direction: column;
809
1010
  cursor: move;
1011
+ transition: border-color 0.2s;
1012
+ overflow: hidden;
810
1013
  }
811
- .no-transition[data-v-e3b23979] {
1014
+ .no-transition[data-v-47a34251] {
812
1015
  transition: none !important;
813
1016
  }
814
- .header[data-v-e3b23979] {
1017
+ .header[data-v-47a34251] {
815
1018
  display: flex;
816
1019
  justify-content: flex-start;
817
1020
  align-items: center;
818
1021
  width: 100%;
819
1022
  padding: 4px;
820
- border-top-left-radius: 4px;
821
- border-top-right-radius: 4px;
822
- background-color: #fff;
1023
+ border-top-left-radius: 6px;
1024
+ border-top-right-radius: 6px;
1025
+ background: linear-gradient(135deg, #2189791d 0%, #15a2da25 100%);
1026
+ min-height: 35px;
1027
+ box-sizing: border-box;
1028
+ overflow: hidden;
823
1029
  }
824
- .content[data-v-e3b23979] {
1030
+ .content[data-v-47a34251] {
825
1031
  flex-grow: 1;
826
1032
  overflow: auto;
827
1033
  padding: 10px;
828
1034
  max-height: calc(100% - 50px);
829
1035
  box-sizing: border-box;
830
1036
  }
831
- .draggable-line[data-v-e3b23979] {
1037
+ .draggable-line[data-v-47a34251] {
832
1038
  position: absolute;
833
1039
  opacity: 1;
834
1040
  }
835
- .draggable-line.right-vertical[data-v-e3b23979] {
1041
+ .draggable-line.right-vertical[data-v-47a34251] {
836
1042
  top: 0;
837
1043
  right: 0;
838
1044
  width: 5px;
839
1045
  height: 100%;
840
1046
  cursor: ew-resize;
841
1047
  }
842
- .draggable-line.left-vertical[data-v-e3b23979] {
1048
+ .draggable-line.left-vertical[data-v-47a34251] {
843
1049
  top: 0;
844
1050
  left: 0;
845
1051
  width: 5px;
846
1052
  height: 100%;
847
1053
  cursor: ew-resize;
848
1054
  }
849
- .draggable-line.bottom-horizontal[data-v-e3b23979] {
1055
+ .draggable-line.bottom-horizontal[data-v-47a34251] {
850
1056
  bottom: 0;
851
1057
  left: 0;
852
1058
  width: 100%;
853
1059
  height: 5px;
854
1060
  cursor: ns-resize;
855
1061
  }
856
- .draggable-line.top-horizontal[data-v-e3b23979] {
1062
+ .draggable-line.top-horizontal[data-v-47a34251] {
857
1063
  top: 0;
858
1064
  left: 0;
859
1065
  width: 100%;
860
1066
  height: 5px;
861
1067
  cursor: ns-resize;
862
1068
  }
863
- .resizing-highlight-line[data-v-e3b23979] {
1069
+ .resizing-highlight-line[data-v-47a34251] {
864
1070
  background-color: #080b0e43;
865
1071
  }
1072
+ .draggable-line[data-v-47a34251]:hover {
1073
+ background-color: #2196f330;
1074
+ }
1075
+
1076
+ .layout-widget-wrapper[data-v-0bdaa52f] {
1077
+ position: fixed;
1078
+ z-index: 20000;
1079
+ }
1080
+ .trigger-btn[data-v-0bdaa52f] {
1081
+ width: 45px;
1082
+ height: 45px;
1083
+ border-radius: 50%;
1084
+ border: none;
1085
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
1086
+ box-shadow: 0 3px 10px rgba(0, 0, 0, 0.2);
1087
+ cursor: move;
1088
+ display: flex;
1089
+ align-items: center;
1090
+ justify-content: center;
1091
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
1092
+ position: relative;
1093
+ overflow: hidden;
1094
+ }
1095
+ .trigger-btn[data-v-0bdaa52f]:hover {
1096
+ width: 55px;
1097
+ height: 55px;
1098
+ box-shadow: 0 6px 20px rgba(102, 126, 234, 0.4);
1099
+ }
1100
+ .trigger-btn.is-open[data-v-0bdaa52f] {
1101
+ cursor: pointer;
1102
+ }
1103
+ .trigger-btn[data-v-0bdaa52f]::before {
1104
+ content: "";
1105
+ position: absolute;
1106
+ top: 50%;
1107
+ left: 50%;
1108
+ width: 0;
1109
+ height: 0;
1110
+ border-radius: 50%;
1111
+ background: rgba(255, 255, 255, 0.2);
1112
+ transform: translate(-50%, -50%);
1113
+ transition:
1114
+ width 0.6s,
1115
+ height 0.6s;
1116
+ }
1117
+ .trigger-btn[data-v-0bdaa52f]:hover::before {
1118
+ width: 100px;
1119
+ height: 100px;
1120
+ }
1121
+ .layout-icon[data-v-0bdaa52f] {
1122
+ color: white;
1123
+ transition: transform 0.3s ease;
1124
+ pointer-events: none;
1125
+ }
1126
+ .trigger-btn:hover .layout-icon[data-v-0bdaa52f] {
1127
+ transform: scale(1.1);
1128
+ }
1129
+ .trigger-btn.is-open .layout-icon[data-v-0bdaa52f] {
1130
+ transform: rotate(90deg);
1131
+ }
1132
+ .panel[data-v-0bdaa52f] {
1133
+ position: absolute;
1134
+ /* REMOVED: right: 60px; */
1135
+ /* REMOVED: bottom: 0; */
1136
+ width: 250px;
1137
+ background: white;
1138
+ border-radius: 12px;
1139
+ box-shadow: 0 5px 25px rgba(0, 0, 0, 0.15);
1140
+ overflow: hidden;
1141
+ display: flex;
1142
+ flex-direction: column;
1143
+ backdrop-filter: blur(10px);
1144
+ background: rgba(255, 255, 255, 0.98);
1145
+ }
1146
+ .panel-header[data-v-0bdaa52f] {
1147
+ display: flex;
1148
+ justify-content: space-between;
1149
+ align-items: center;
1150
+ padding: 12px 16px;
1151
+ border-bottom: 1px solid #f0f0f0;
1152
+ background: linear-gradient(135deg, #667eea10 0%, #764ba210 100%);
1153
+ }
1154
+ .panel-title[data-v-0bdaa52f] {
1155
+ font-weight: 600;
1156
+ font-size: 16px;
1157
+ color: #333;
1158
+ user-select: none;
1159
+ }
1160
+ .close-btn[data-v-0bdaa52f] {
1161
+ background: none;
1162
+ border: none;
1163
+ font-size: 20px;
1164
+ color: #888;
1165
+ cursor: pointer;
1166
+ padding: 0;
1167
+ line-height: 1;
1168
+ width: 24px;
1169
+ height: 24px;
1170
+ display: flex;
1171
+ align-items: center;
1172
+ justify-content: center;
1173
+ border-radius: 4px;
1174
+ transition: all 0.2s;
1175
+ }
1176
+ .close-btn[data-v-0bdaa52f]:hover {
1177
+ color: #333;
1178
+ background: rgba(0, 0, 0, 0.05);
1179
+ }
1180
+ .panel-body[data-v-0bdaa52f] {
1181
+ padding: 16px;
1182
+ display: flex;
1183
+ flex-direction: column;
1184
+ gap: 10px;
1185
+ }
1186
+ .control-btn[data-v-0bdaa52f] {
1187
+ background-color: #f8f9fa;
1188
+ color: #333;
1189
+ border: 1px solid #e0e0e0;
1190
+ border-radius: 8px;
1191
+ padding: 10px 16px;
1192
+ cursor: pointer;
1193
+ font-size: 14px;
1194
+ font-weight: 500;
1195
+ transition: all 0.2s ease;
1196
+ display: flex;
1197
+ align-items: center;
1198
+ gap: 8px;
1199
+ text-align: left;
1200
+ position: relative;
1201
+ overflow: hidden;
1202
+ }
1203
+ .control-btn[data-v-0bdaa52f]::before {
1204
+ content: "";
1205
+ position: absolute;
1206
+ top: 0;
1207
+ left: -100%;
1208
+ width: 100%;
1209
+ height: 100%;
1210
+ background: linear-gradient(90deg, transparent, rgba(102, 126, 234, 0.1), transparent);
1211
+ transition: left 0.5s;
1212
+ }
1213
+ .control-btn[data-v-0bdaa52f]:hover::before {
1214
+ left: 100%;
1215
+ }
1216
+ .control-btn[data-v-0bdaa52f]:hover {
1217
+ background-color: #f0f2ff;
1218
+ border-color: #667eea;
1219
+ transform: translateX(2px);
1220
+ }
1221
+
1222
+ /* Accent button style for Reset Layout Graph */
1223
+ .control-btn.accent[data-v-0bdaa52f] {
1224
+ background: linear-gradient(135deg, #667eea15 0%, #764ba215 100%);
1225
+ border-color: #764ba2;
1226
+ }
1227
+ .control-btn.accent[data-v-0bdaa52f]:hover {
1228
+ background: linear-gradient(135deg, #667eea25 0%, #764ba225 100%);
1229
+ border-color: #667eea;
1230
+ }
1231
+ .control-btn .icon[data-v-0bdaa52f] {
1232
+ font-size: 16px;
1233
+ min-width: 20px;
1234
+ }
1235
+
1236
+ /* Vue Transition Styles */
1237
+ .panel-fade-enter-active[data-v-0bdaa52f],
1238
+ .panel-fade-leave-active[data-v-0bdaa52f] {
1239
+ transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
1240
+ }
1241
+ .panel-fade-enter-from[data-v-0bdaa52f] {
1242
+ opacity: 0;
1243
+ transform: translateY(10px) scale(0.95);
1244
+ }
1245
+ .panel-fade-leave-to[data-v-0bdaa52f] {
1246
+ opacity: 0;
1247
+ transform: translateY(-10px) scale(0.95);
1248
+ }
866
1249
  .ag-icon {
867
1250
  font-family: var(--ag-icon-font-family);
868
1251
  font-weight: var(--ag-icon-font-weight);
@@ -9823,9 +10206,213 @@ input[class^=ag-][type=range]:disabled {
9823
10206
  transform: rotate(360deg);
9824
10207
  }
9825
10208
  }
10209
+ .table-container {
10210
+ display: flex;
10211
+ flex-direction: column;
10212
+ height: 100%;
10213
+ width: 100%;
10214
+ position: relative;
10215
+ }
10216
+
10217
+ /* Modern Outdated Data Banner Styles */
10218
+ .outdated-data-banner {
10219
+ position: absolute;
10220
+ top: 10px;
10221
+ left: 50%;
10222
+ transform: translateX(-50%);
10223
+ z-index: 100;
10224
+ display: flex;
10225
+ align-items: center;
10226
+ justify-content: space-between;
10227
+ min-width: 380px;
10228
+ max-width: 90%;
10229
+ padding: 12px 16px;
10230
+ background: linear-gradient(135deg, rgba(254, 243, 199, 0.98) 0%, rgba(253, 230, 138, 0.98) 100%);
10231
+ backdrop-filter: blur(10px);
10232
+ border: 1px solid rgba(251, 191, 36, 0.3);
10233
+ border-radius: 12px;
10234
+ box-shadow:
10235
+ 0 4px 20px rgba(251, 191, 36, 0.15),
10236
+ 0 2px 8px rgba(0, 0, 0, 0.05);
10237
+ font-size: 14px;
10238
+ animation: slideDown 0.3s cubic-bezier(0.4, 0, 0.2, 1);
10239
+ overflow: hidden;
10240
+ }
10241
+
10242
+ /* Shimmer effect */
10243
+ .outdated-data-banner::before {
10244
+ content: "";
10245
+ position: absolute;
10246
+ top: 0;
10247
+ left: -100%;
10248
+ width: 100%;
10249
+ height: 100%;
10250
+ background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.4), transparent);
10251
+ animation: shimmer 3s infinite;
10252
+ }
10253
+
10254
+ /* Warning icon animation */
10255
+ @keyframes pulse {
10256
+ 0%,
10257
+ 100% {
10258
+ transform: scale(1);
10259
+ }
10260
+ 50% {
10261
+ transform: scale(1.1);
10262
+ }
10263
+ }
10264
+ @keyframes shimmer {
10265
+ 0% {
10266
+ left: -100%;
10267
+ }
10268
+ 100% {
10269
+ left: 100%;
10270
+ }
10271
+ }
10272
+ @keyframes slideDown {
10273
+ from {
10274
+ opacity: 0;
10275
+ transform: translate(-50%, -20px);
10276
+ }
10277
+ to {
10278
+ opacity: 1;
10279
+ transform: translate(-50%, 0);
10280
+ }
10281
+ }
10282
+ .outdated-data-banner p {
10283
+ margin: 0;
10284
+ color: #78350f;
10285
+ font-weight: 500;
10286
+ display: flex;
10287
+ align-items: center;
10288
+ gap: 8px;
10289
+ position: relative;
10290
+ z-index: 1;
10291
+ }
10292
+
10293
+ /* Add warning icon */
10294
+ .outdated-data-banner p::before {
10295
+ content: "⚠️";
10296
+ font-size: 16px;
10297
+ animation: pulse 2s ease-in-out infinite;
10298
+ }
10299
+ .refresh-link-button {
10300
+ background: linear-gradient(135deg, #ffffff 0%, #fef3c7 100%);
10301
+ border: 1px solid #f59e0b;
10302
+ color: #92400e;
10303
+ border-radius: 6px;
10304
+ padding: 5px 14px;
10305
+ font-size: 13px;
10306
+ font-weight: 600;
10307
+ cursor: pointer;
10308
+ transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
10309
+ text-decoration: none;
10310
+ display: inline-flex;
10311
+ align-items: center;
10312
+ gap: 5px;
10313
+ position: relative;
10314
+ overflow: hidden;
10315
+ white-space: nowrap;
10316
+ margin-left: 4px;
10317
+ }
10318
+
10319
+ /* Refresh icon */
10320
+ .refresh-link-button::before {
10321
+ content: "↻";
10322
+ font-size: 14px;
10323
+ transition: transform 0.3s ease;
10324
+ }
10325
+ .refresh-link-button:hover {
10326
+ background: linear-gradient(135deg, #fbbf24 0%, #f59e0b 100%);
10327
+ color: white;
10328
+ border-color: #d97706;
10329
+ transform: translateY(-1px);
10330
+ box-shadow:
10331
+ 0 4px 12px rgba(245, 158, 11, 0.3),
10332
+ inset 0 1px 0 rgba(255, 255, 255, 0.2);
10333
+ }
10334
+ .refresh-link-button:hover::before {
10335
+ transform: rotate(180deg);
10336
+ }
10337
+ .refresh-link-button:active {
10338
+ transform: translateY(0);
10339
+ box-shadow:
10340
+ 0 2px 6px rgba(245, 158, 11, 0.2),
10341
+ inset 0 1px 2px rgba(0, 0, 0, 0.1);
10342
+ }
10343
+ .dismiss-button {
10344
+ background: rgba(255, 255, 255, 0.9);
10345
+ border: 1px solid rgba(251, 191, 36, 0.3);
10346
+ width: 24px;
10347
+ height: 24px;
10348
+ border-radius: 50%;
10349
+ font-size: 16px;
10350
+ line-height: 1;
10351
+ cursor: pointer;
10352
+ color: #92400e;
10353
+ display: flex;
10354
+ align-items: center;
10355
+ justify-content: center;
10356
+ transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
10357
+ flex-shrink: 0;
10358
+ margin-left: 12px;
10359
+ position: relative;
10360
+ z-index: 1;
10361
+ }
10362
+ .dismiss-button:hover {
10363
+ background: white;
10364
+ border-color: #f59e0b;
10365
+ color: #78350f;
10366
+ transform: rotate(90deg) scale(1.1);
10367
+ box-shadow: 0 3px 10px rgba(0, 0, 0, 0.1);
10368
+ }
10369
+ .dismiss-button:active {
10370
+ transform: rotate(90deg) scale(0.95);
10371
+ }
10372
+
10373
+ /* Fetch Data Section Styles */
10374
+ .fetch-data-section {
10375
+ padding: 20px;
10376
+ text-align: center;
10377
+ background-color: #f9fafb;
10378
+ border: 1px solid #e5e7eb;
10379
+ border-top: none;
10380
+ border-radius: 0 0 8px 8px;
10381
+ }
10382
+ .fetch-data-section p {
10383
+ color: #6b7280;
10384
+ font-size: 14px;
10385
+ margin-bottom: 12px;
10386
+ }
10387
+ .fetch-data-button {
10388
+ background-color: #3498db;
10389
+ color: white;
10390
+ border: none;
10391
+ padding: 8px 20px;
10392
+ font-size: 14px;
10393
+ border-radius: 6px;
10394
+ cursor: pointer;
10395
+ transition: all 0.2s ease;
10396
+ position: relative;
10397
+ }
10398
+ .fetch-data-button:hover:not(:disabled) {
10399
+ background-color: #2980b9;
10400
+ transform: translateY(-1px);
10401
+ box-shadow: 0 4px 12px rgba(52, 152, 219, 0.3);
10402
+ }
10403
+ .fetch-data-button:active:not(:disabled) {
10404
+ transform: translateY(0);
10405
+ }
10406
+ .fetch-data-button:disabled {
10407
+ background-color: #93c5fd;
10408
+ cursor: not-allowed;
10409
+ opacity: 0.7;
10410
+ }
10411
+
10412
+ /* AG Grid Theme Customization */
9826
10413
  .ag-theme-balham {
9827
10414
  max-width: 100%;
9828
- height: 100%;
10415
+ position: relative;
9829
10416
  --ag-odd-row-background-color: rgb(255, 255, 255);
9830
10417
  --ag-row-background-color: rgb(255, 255, 255);
9831
10418
  --ag-header-background-color: rgb(246, 247, 251);
@@ -9887,7 +10474,7 @@ input[class^=ag-][type=range]:disabled {
9887
10474
  -webkit-box-orient: vertical;
9888
10475
  }
9889
10476
 
9890
- .log-container[data-v-51d5bb55] {
10477
+ .log-container[data-v-9b3bdb24] {
9891
10478
  height: 100%;
9892
10479
  display: flex;
9893
10480
  flex-direction: column;
@@ -9896,7 +10483,7 @@ input[class^=ag-][type=range]:disabled {
9896
10483
  font-family: "Consolas", "Monaco", "Courier New", monospace;
9897
10484
  overflow-y: auto;
9898
10485
  }
9899
- .log-header[data-v-51d5bb55] {
10486
+ .log-header[data-v-9b3bdb24] {
9900
10487
  display: flex;
9901
10488
  justify-content: space-between;
9902
10489
  align-items: center;
@@ -9907,42 +10494,42 @@ input[class^=ag-][type=range]:disabled {
9907
10494
  top: 0;
9908
10495
  z-index: 10; /* Ensures it stays above the logs */
9909
10496
  }
9910
- .log-status[data-v-51d5bb55] {
10497
+ .log-status[data-v-9b3bdb24] {
9911
10498
  display: flex;
9912
10499
  align-items: center;
9913
10500
  gap: 8px;
9914
10501
  font-size: 0.9em;
9915
10502
  }
9916
- .status-indicator[data-v-51d5bb55] {
10503
+ .status-indicator[data-v-9b3bdb24] {
9917
10504
  width: 8px;
9918
10505
  height: 8px;
9919
10506
  border-radius: 50%;
9920
10507
  background-color: #666;
9921
10508
  }
9922
- .status-indicator.active[data-v-51d5bb55] {
10509
+ .status-indicator.active[data-v-9b3bdb24] {
9923
10510
  background-color: #4caf50;
9924
10511
  }
9925
- .status-indicator.error[data-v-51d5bb55] {
10512
+ .status-indicator.error[data-v-9b3bdb24] {
9926
10513
  background-color: #f44336;
9927
10514
  }
9928
- .log-controls[data-v-51d5bb55] {
10515
+ .log-controls[data-v-9b3bdb24] {
9929
10516
  display: flex;
9930
10517
  gap: 8px;
9931
10518
  }
9932
- .error-banner[data-v-51d5bb55] {
10519
+ .error-banner[data-v-9b3bdb24] {
9933
10520
  padding: 8px 12px;
9934
10521
  background-color: rgba(244, 67, 54, 0.2);
9935
10522
  color: #f44336;
9936
10523
  font-size: 0.9em;
9937
10524
  border-bottom: 1px solid #f44336;
9938
10525
  }
9939
- .empty-state[data-v-51d5bb55] {
10526
+ .empty-state[data-v-9b3bdb24] {
9940
10527
  padding: 16px;
9941
10528
  text-align: center;
9942
10529
  color: #777;
9943
10530
  font-style: italic;
9944
10531
  }
9945
- .logs[data-v-51d5bb55] {
10532
+ .logs[data-v-9b3bdb24] {
9946
10533
  flex-grow: 1;
9947
10534
  margin: 0;
9948
10535
  padding: 8px;
@@ -9952,24 +10539,24 @@ input[class^=ag-][type=range]:disabled {
9952
10539
  line-height: 1.8; /* Reduced line height */
9953
10540
  font-size: small;
9954
10541
  }
9955
- .logs.auto-scroll[data-v-51d5bb55] {
10542
+ .logs.auto-scroll[data-v-9b3bdb24] {
9956
10543
  scroll-behavior: smooth;
9957
10544
  }
9958
- [data-v-51d5bb55]::-webkit-scrollbar {
10545
+ [data-v-9b3bdb24]::-webkit-scrollbar {
9959
10546
  width: 12px;
9960
10547
  }
9961
- [data-v-51d5bb55]::-webkit-scrollbar-track {
10548
+ [data-v-9b3bdb24]::-webkit-scrollbar-track {
9962
10549
  background: #1e1e1e;
9963
10550
  }
9964
- [data-v-51d5bb55]::-webkit-scrollbar-thumb {
10551
+ [data-v-9b3bdb24]::-webkit-scrollbar-thumb {
9965
10552
  background: #424242;
9966
10553
  border-radius: 6px;
9967
10554
  border: 3px solid #1e1e1e;
9968
10555
  }
9969
- [data-v-51d5bb55]::-webkit-scrollbar-thumb:hover {
10556
+ [data-v-9b3bdb24]::-webkit-scrollbar-thumb:hover {
9970
10557
  background: #4f4f4f;
9971
10558
  }
9972
- .error-line[data-v-51d5bb55] {
10559
+ .error-line[data-v-9b3bdb24] {
9973
10560
  background-color: rgba(255, 0, 0, 0.2); /* Light red background */
9974
10561
  color: #ffcdd2; /* Light red text for better readability */
9975
10562
  }
@@ -10668,85 +11255,156 @@ main {
10668
11255
  background-color: rgba(80, 70, 230, 0.1);
10669
11256
  }
10670
11257
 
10671
- .canvas[data-v-cc07b037] {
10672
- height: calc(100vh - 50px);
11258
+ .canvas[data-v-24dbaac4] {
11259
+ height: calc(100vh - 100px); /* Adjusted for potentially taller header */
10673
11260
  }
10674
- .header[data-v-cc07b037] {
10675
- display: flex;
10676
- justify-content: space-between;
10677
- align-items: stretch;
10678
- height: 50px;
11261
+ .header[data-v-24dbaac4] {
10679
11262
  background-color: #f5f5f5;
10680
11263
  border-bottom: 1px solid #ececec;
10681
11264
  }
10682
- .left-section[data-v-cc07b037] {
10683
- min-width: 250px;
10684
- padding: 0 16px;
10685
- display: flex;
10686
- align-items: center;
11265
+
11266
+ /* Desktop layout - single row */
11267
+ @media (min-width: 1025px) {
11268
+ .header[data-v-24dbaac4] {
11269
+ display: flex;
11270
+ justify-content: space-between;
11271
+ align-items: stretch;
11272
+ height: 50px;
10687
11273
  }
10688
- .middle-section[data-v-cc07b037] {
10689
- flex: 1;
10690
- display: flex;
10691
- align-items: center;
10692
- overflow: hidden;
11274
+ .header-top[data-v-24dbaac4] {
11275
+ display: contents; /* Makes children behave as direct children of .header */
11276
+ }
11277
+ .header-bottom[data-v-24dbaac4] {
11278
+ display: contents;
11279
+ }
11280
+ .left-section[data-v-24dbaac4] {
11281
+ min-width: 250px;
11282
+ padding: 0 16px;
11283
+ display: flex;
11284
+ align-items: center;
11285
+ }
11286
+ .middle-section[data-v-24dbaac4] {
11287
+ flex: 1;
11288
+ display: flex;
11289
+ align-items: center;
11290
+ overflow: hidden;
11291
+ }
11292
+ .right-section[data-v-24dbaac4] {
11293
+ min-width: 150px;
11294
+ padding: 0 16px;
11295
+ display: flex;
11296
+ align-items: center;
11297
+ justify-content: flex-end;
11298
+ }
11299
+ .canvas[data-v-24dbaac4] {
11300
+ height: calc(100vh - 50px);
11301
+ }
11302
+ }
11303
+
11304
+ /* Mobile/tablet layout - stacked */
11305
+ @media (max-width: 1024px) {
11306
+ .header[data-v-24dbaac4] {
11307
+ height: auto;
11308
+ min-height: 80px;
11309
+ }
11310
+ .header-top[data-v-24dbaac4] {
11311
+ display: flex;
11312
+ justify-content: space-between;
11313
+ align-items: center;
11314
+ height: 50px;
11315
+ border-bottom: 1px solid #e5e7eb;
11316
+ }
11317
+ .header-bottom[data-v-24dbaac4] {
11318
+ display: flex;
11319
+ height: 40px;
11320
+ padding: 0 8px;
11321
+ }
11322
+ .left-section[data-v-24dbaac4] {
11323
+ padding: 0 12px;
11324
+ display: flex;
11325
+ align-items: center;
11326
+ }
11327
+ .middle-section[data-v-24dbaac4] {
11328
+ flex: 1;
11329
+ display: flex;
11330
+ align-items: center;
11331
+ overflow: hidden;
11332
+ padding: 0 8px;
11333
+ }
11334
+ .right-section[data-v-24dbaac4] {
11335
+ padding: 0 12px;
11336
+ display: flex;
11337
+ align-items: center;
11338
+ justify-content: flex-end;
11339
+ }
11340
+ .canvas[data-v-24dbaac4] {
11341
+ height: calc(100vh - 90px);
11342
+ }
11343
+ }
11344
+
11345
+ /* Very narrow screens */
11346
+ @media (max-width: 480px) {
11347
+ .left-section[data-v-24dbaac4] {
11348
+ padding: 0 8px;
11349
+ min-width: auto;
11350
+ }
11351
+ .right-section[data-v-24dbaac4] {
11352
+ padding: 0 8px;
11353
+ min-width: auto;
11354
+ }
11355
+ .middle-section[data-v-24dbaac4] {
11356
+ padding: 0 4px;
10693
11357
  }
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
11358
  }
10701
11359
 
10702
11360
  /* Loading state styles */
10703
- .loading-state[data-v-cc07b037] {
11361
+ .loading-state[data-v-24dbaac4] {
10704
11362
  height: calc(100vh - 50px);
10705
11363
  display: flex;
10706
11364
  justify-content: center;
10707
11365
  align-items: center;
10708
11366
  background-color: #f9fafb;
10709
11367
  }
10710
- .loading-state-content[data-v-cc07b037] {
11368
+ .loading-state-content[data-v-24dbaac4] {
10711
11369
  text-align: center;
10712
11370
  padding: 2rem;
10713
11371
  }
10714
- .loading-state-content p[data-v-cc07b037] {
11372
+ .loading-state-content p[data-v-24dbaac4] {
10715
11373
  color: #6b7280;
10716
11374
  margin-top: 1rem;
10717
11375
  }
10718
11376
 
10719
11377
  /* Empty state styles */
10720
- .empty-state[data-v-cc07b037] {
11378
+ .empty-state[data-v-24dbaac4] {
10721
11379
  height: calc(100vh - 50px);
10722
11380
  display: flex;
10723
11381
  justify-content: center;
10724
11382
  align-items: center;
10725
11383
  background-color: #f9fafb;
10726
11384
  }
10727
- .empty-state-content[data-v-cc07b037] {
11385
+ .empty-state-content[data-v-24dbaac4] {
10728
11386
  text-align: center;
10729
11387
  padding: 2rem;
10730
11388
  }
10731
- .empty-icon[data-v-cc07b037] {
11389
+ .empty-icon[data-v-24dbaac4] {
10732
11390
  font-size: 64px;
10733
11391
  color: #9ca3af;
10734
11392
  margin-bottom: 1rem;
10735
11393
  }
10736
- .empty-state h2[data-v-cc07b037] {
11394
+ .empty-state h2[data-v-24dbaac4] {
10737
11395
  color: #374151;
10738
11396
  margin-bottom: 0.5rem;
10739
11397
  }
10740
- .empty-state p[data-v-cc07b037] {
11398
+ .empty-state p[data-v-24dbaac4] {
10741
11399
  color: #6b7280;
10742
11400
  margin-bottom: 1.5rem;
10743
11401
  }
10744
- .action-button[data-v-cc07b037] {
11402
+ .action-button[data-v-24dbaac4] {
10745
11403
  display: inline-flex;
10746
11404
  align-items: center;
10747
11405
  gap: 0.5rem;
10748
11406
  margin: 0 0.5rem;
10749
11407
  }
10750
- .action-button .material-icons[data-v-cc07b037] {
11408
+ .action-button .material-icons[data-v-24dbaac4] {
10751
11409
  font-size: 18px;
10752
11410
  }