Flowfile 0.5.1__py3-none-any.whl → 0.5.4__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 (346) hide show
  1. build_backends/main.py +25 -22
  2. build_backends/main_prd.py +10 -19
  3. flowfile/__init__.py +194 -74
  4. flowfile/__main__.py +10 -7
  5. flowfile/api.py +51 -57
  6. flowfile/web/__init__.py +14 -9
  7. flowfile/web/static/assets/AdminView-f53bad23.css +129 -0
  8. flowfile/web/static/assets/AdminView-f9847d67.js +713 -0
  9. flowfile/web/static/assets/CloudConnectionView-cf85f943.css +72 -0
  10. flowfile/web/static/assets/{CloudConnectionManager-0dfba9f2.js → CloudConnectionView-faace55b.js} +11 -11
  11. flowfile/web/static/assets/{CloudStorageReader-29d14fcc.css → CloudStorageReader-24c54524.css} +27 -27
  12. flowfile/web/static/assets/{CloudStorageReader-d5b1b6c9.js → CloudStorageReader-d86ecaa7.js} +10 -8
  13. flowfile/web/static/assets/{CloudStorageWriter-00d87aad.js → CloudStorageWriter-0f4d9a44.js} +10 -8
  14. flowfile/web/static/assets/{CloudStorageWriter-b0ee067f.css → CloudStorageWriter-60547855.css} +26 -26
  15. flowfile/web/static/assets/ColumnActionInput-c44b7aee.css +159 -0
  16. flowfile/web/static/assets/ColumnActionInput-f4189ae0.js +330 -0
  17. flowfile/web/static/assets/{ColumnSelector-47996a16.css → ColumnSelector-371637fb.css} +2 -2
  18. flowfile/web/static/assets/{ColumnSelector-4685e75d.js → ColumnSelector-e66b33da.js} +3 -5
  19. flowfile/web/static/assets/ContextMenu-49463352.js +9 -0
  20. flowfile/web/static/assets/ContextMenu-dd5f3f25.js +9 -0
  21. flowfile/web/static/assets/ContextMenu-f709b884.js +9 -0
  22. flowfile/web/static/assets/ContextMenu.vue_vue_type_script_setup_true_lang-a1bd6314.js +59 -0
  23. flowfile/web/static/assets/{CrossJoin-702a3edd.js → CrossJoin-24694b8f.js} +12 -10
  24. flowfile/web/static/assets/{CrossJoin-1119d18e.css → CrossJoin-71b4cc10.css} +20 -20
  25. flowfile/web/static/assets/{CustomNode-b1519993.js → CustomNode-569d45ff.js} +43 -24
  26. flowfile/web/static/assets/CustomNode-edb9b939.css +42 -0
  27. flowfile/web/static/assets/{DatabaseConnectionSettings-0c04b2e5.css → DatabaseConnectionSettings-c20a1e16.css} +23 -21
  28. flowfile/web/static/assets/{DatabaseConnectionSettings-6f3e4ea5.js → DatabaseConnectionSettings-cfc08938.js} +5 -4
  29. flowfile/web/static/assets/{DatabaseReader-ae61773c.css → DatabaseReader-5bf8c75b.css} +41 -46
  30. flowfile/web/static/assets/{DatabaseReader-d38c7295.js → DatabaseReader-701feabb.js} +25 -15
  31. flowfile/web/static/assets/{DatabaseManager-cf5ef661.js → DatabaseView-0482e5b5.js} +11 -11
  32. flowfile/web/static/assets/DatabaseView-6655afd6.css +57 -0
  33. flowfile/web/static/assets/{DatabaseWriter-b04ef46a.js → DatabaseWriter-16721989.js} +17 -10
  34. flowfile/web/static/assets/{DatabaseWriter-2f570e53.css → DatabaseWriter-bdcf2c8b.css} +29 -27
  35. flowfile/web/static/assets/{designer-8da3ba3a.css → DesignerView-49abb835.css} +783 -663
  36. flowfile/web/static/assets/{designer-9633482a.js → DesignerView-f64749fb.js} +1292 -3253
  37. flowfile/web/static/assets/{documentation-ca400224.js → DocumentationView-61bd2990.js} +5 -5
  38. flowfile/web/static/assets/{documentation-12216a74.css → DocumentationView-9ea6e871.css} +9 -9
  39. flowfile/web/static/assets/{ExploreData-2d0cf4db.css → ExploreData-10c5acc8.css} +13 -12
  40. flowfile/web/static/assets/{ExploreData-5fa10ed8.js → ExploreData-e2735b13.js} +18 -9
  41. flowfile/web/static/assets/{ExternalSource-d39af878.js → ExternalSource-2535c3b2.js} +9 -7
  42. flowfile/web/static/assets/{ExternalSource-e37b6275.css → ExternalSource-7ac7373f.css} +20 -20
  43. flowfile/web/static/assets/Filter-2cdbc93c.js +287 -0
  44. flowfile/web/static/assets/Filter-7494ea97.css +48 -0
  45. flowfile/web/static/assets/{Formula-bb96803d.css → Formula-53d58c43.css} +7 -7
  46. flowfile/web/static/assets/{Formula-6b04fb1d.js → Formula-fcda3c2c.js} +13 -11
  47. flowfile/web/static/assets/{FuzzyMatch-1010f966.css → FuzzyMatch-ad6361d6.css} +68 -69
  48. flowfile/web/static/assets/{FuzzyMatch-999521f4.js → FuzzyMatch-f8d3b7d3.js} +12 -10
  49. flowfile/web/static/assets/{Pivot-cf333e3d.css → GraphSolver-4b4d7db9.css} +5 -5
  50. flowfile/web/static/assets/{GraphSolver-17dd2198.js → GraphSolver-72eaa695.js} +14 -12
  51. flowfile/web/static/assets/GroupBy-5792782d.css +9 -0
  52. flowfile/web/static/assets/{GroupBy-6b039e18.js → GroupBy-8aa0598b.js} +9 -7
  53. flowfile/web/static/assets/{Join-fd79b451.css → Join-28b5e18f.css} +22 -22
  54. flowfile/web/static/assets/{Join-24d0f113.js → Join-e40f0ffa.js} +13 -11
  55. flowfile/web/static/assets/LoginView-5111c9ae.js +134 -0
  56. flowfile/web/static/assets/LoginView-d325d632.css +172 -0
  57. flowfile/web/static/assets/ManualInput-3702e677.css +293 -0
  58. flowfile/web/static/assets/{ManualInput-34639209.js → ManualInput-9b6f3224.js} +170 -116
  59. flowfile/web/static/assets/{MultiSelect-0e8724a3.js → MultiSelect-ef28e19e.js} +2 -2
  60. flowfile/web/static/assets/{MultiSelect.vue_vue_type_script_setup_true_lang-b0e538c2.js → MultiSelect.vue_vue_type_script_setup_true_lang-83b3bbfd.js} +1 -1
  61. flowfile/web/static/assets/NodeDesigner-94cd4dd3.css +1429 -0
  62. flowfile/web/static/assets/NodeDesigner-d2b7ee2b.js +2712 -0
  63. flowfile/web/static/assets/{NumericInput-3d63a470.js → NumericInput-1d789794.js} +2 -2
  64. flowfile/web/static/assets/{NumericInput.vue_vue_type_script_setup_true_lang-e0edeccc.js → NumericInput.vue_vue_type_script_setup_true_lang-7775f83e.js} +5 -2
  65. flowfile/web/static/assets/Output-692dd25d.css +37 -0
  66. flowfile/web/static/assets/{Output-edea9802.js → Output-cefef801.js} +14 -10
  67. flowfile/web/static/assets/{GraphSolver-f0cb7bfb.css → Pivot-0eda81b4.css} +5 -5
  68. flowfile/web/static/assets/{Pivot-61d19301.js → Pivot-bab1b75b.js} +12 -10
  69. flowfile/web/static/assets/PivotValidation-0e905b1a.css +13 -0
  70. flowfile/web/static/assets/PivotValidation-41b57ad6.css +13 -0
  71. flowfile/web/static/assets/{PivotValidation-f97fec5b.js → PivotValidation-e7941f91.js} +3 -3
  72. flowfile/web/static/assets/{PivotValidation-de9f43fe.js → PivotValidation-fba09336.js} +3 -3
  73. flowfile/web/static/assets/{PolarsCode-650322d1.css → PolarsCode-2b1f1f23.css} +4 -4
  74. flowfile/web/static/assets/{PolarsCode-bc3c9984.js → PolarsCode-740e40fa.js} +18 -9
  75. flowfile/web/static/assets/PopOver-862d7e28.js +939 -0
  76. flowfile/web/static/assets/PopOver-d96599db.css +33 -0
  77. flowfile/web/static/assets/{Read-64a3f259.js → Read-225cc63f.js} +16 -12
  78. flowfile/web/static/assets/{Read-e808b239.css → Read-90f366bc.css} +15 -15
  79. flowfile/web/static/assets/{RecordCount-3d5039be.js → RecordCount-ffc71eca.js} +6 -4
  80. flowfile/web/static/assets/{RecordId-597510e0.js → RecordId-a70bb8df.js} +9 -7
  81. flowfile/web/static/assets/{SQLQueryComponent-df51adbe.js → SQLQueryComponent-15a421f5.js} +3 -3
  82. flowfile/web/static/assets/SQLQueryComponent-edb90b98.css +29 -0
  83. flowfile/web/static/assets/{Sample-4be0a507.js → Sample-6c26afc7.js} +6 -4
  84. flowfile/web/static/assets/SecretSelector-6329f743.css +43 -0
  85. flowfile/web/static/assets/SecretSelector-ceed9496.js +113 -0
  86. flowfile/web/static/assets/{SecretManager-4839be57.js → SecretsView-214d255a.js} +35 -36
  87. flowfile/web/static/assets/SecretsView-aa291340.css +38 -0
  88. flowfile/web/static/assets/{Select-9b72f201.js → Select-8fc29999.js} +9 -7
  89. flowfile/web/static/assets/{SettingsSection-71e6b7e3.css → SettingsSection-07fbbc39.css} +4 -4
  90. flowfile/web/static/assets/{SettingsSection-5c696bee.css → SettingsSection-26fe48d4.css} +4 -4
  91. flowfile/web/static/assets/{SettingsSection-7ded385d.js → SettingsSection-3f70e4c3.js} +3 -3
  92. flowfile/web/static/assets/{SettingsSection-f0f75a42.js → SettingsSection-83090218.js} +3 -3
  93. flowfile/web/static/assets/{SettingsSection-2e4d03c4.css → SettingsSection-8f980839.css} +4 -4
  94. flowfile/web/static/assets/{SettingsSection-e1e9c953.js → SettingsSection-9f0d1725.js} +3 -3
  95. flowfile/web/static/assets/SetupView-3fa0aa03.js +160 -0
  96. flowfile/web/static/assets/SetupView-e2da3442.css +230 -0
  97. flowfile/web/static/assets/{SingleSelect-6c777aac.js → SingleSelect-a4a568cb.js} +2 -2
  98. flowfile/web/static/assets/{SingleSelect.vue_vue_type_script_setup_true_lang-33e3ff9b.js → SingleSelect.vue_vue_type_script_setup_true_lang-c8ebdd33.js} +1 -1
  99. flowfile/web/static/assets/{SliderInput-7cb93e62.js → SliderInput-be533e71.js} +7 -4
  100. flowfile/web/static/assets/SliderInput-f2e4f23c.css +4 -0
  101. flowfile/web/static/assets/{Sort-6cbde21a.js → Sort-154dad81.js} +9 -7
  102. flowfile/web/static/assets/Sort-4abb7fae.css +9 -0
  103. flowfile/web/static/assets/{TextInput-d9a40c11.js → TextInput-454e2bda.js} +2 -2
  104. flowfile/web/static/assets/{TextInput.vue_vue_type_script_setup_true_lang-5896c375.js → TextInput.vue_vue_type_script_setup_true_lang-e86510d0.js} +5 -2
  105. flowfile/web/static/assets/{TextToRows-5d2c1190.css → TextToRows-12afb4f4.css} +10 -10
  106. flowfile/web/static/assets/{TextToRows-c4fcbf4d.js → TextToRows-ea73433d.js} +11 -10
  107. flowfile/web/static/assets/{ToggleSwitch-4ef91d19.js → ToggleSwitch-9d7b30f1.js} +2 -2
  108. flowfile/web/static/assets/{ToggleSwitch.vue_vue_type_script_setup_true_lang-38478c20.js → ToggleSwitch.vue_vue_type_script_setup_true_lang-00f2580e.js} +1 -1
  109. flowfile/web/static/assets/{UnavailableFields-5edd5322.css → UnavailableFields-394a1f78.css} +14 -14
  110. flowfile/web/static/assets/{UnavailableFields-a03f512c.js → UnavailableFields-b72a2c72.js} +4 -4
  111. flowfile/web/static/assets/{Union-bfe9b996.js → Union-1e44f263.js} +8 -6
  112. flowfile/web/static/assets/{Union-af6c3d9b.css → Union-d6a8d7d5.css} +7 -7
  113. flowfile/web/static/assets/Unique-2b705521.css +3 -0
  114. flowfile/web/static/assets/{Unique-5d023a27.js → Unique-a3bc6d0a.js} +13 -10
  115. flowfile/web/static/assets/{Unpivot-1e422df3.css → Unpivot-b6ad6427.css} +7 -7
  116. flowfile/web/static/assets/{Unpivot-91cc5354.js → Unpivot-e27935fc.js} +11 -9
  117. flowfile/web/static/assets/{UnpivotValidation-7ee2de44.js → UnpivotValidation-72497680.js} +3 -3
  118. flowfile/web/static/assets/UnpivotValidation-d5ca3b7b.css +13 -0
  119. flowfile/web/static/assets/{VueGraphicWalker-ed5ab88b.css → VueGraphicWalker-430f0b86.css} +1 -1
  120. flowfile/web/static/assets/{VueGraphicWalker-e51b9924.js → VueGraphicWalker-d9ab70a3.js} +4 -4
  121. flowfile/web/static/assets/{api-cf1221f0.js → api-a2102880.js} +1 -1
  122. flowfile/web/static/assets/{api-c1bad5ca.js → api-f75042b0.js} +1 -1
  123. flowfile/web/static/assets/{dropDown-35135ba8.css → dropDown-1d6acbd9.css} +41 -41
  124. flowfile/web/static/assets/{dropDown-614b998d.js → dropDown-2798a109.js} +3 -3
  125. flowfile/web/static/assets/{fullEditor-f7971590.js → fullEditor-cf7d7d93.js} +11 -10
  126. flowfile/web/static/assets/{fullEditor-178376bb.css → fullEditor-fe9f7e18.css} +77 -65
  127. flowfile/web/static/assets/{genericNodeSettings-4fe5f36b.js → genericNodeSettings-14eac1c3.js} +5 -5
  128. flowfile/web/static/assets/{genericNodeSettings-924759c7.css → genericNodeSettings-3b2507ea.css} +10 -10
  129. flowfile/web/static/assets/{index-5429bbf8.js → index-387a6f18.js} +41806 -40958
  130. flowfile/web/static/assets/index-6b367bb5.js +38 -0
  131. flowfile/web/static/assets/{index-50508d4d.css → index-e96ab018.css} +2184 -569
  132. flowfile/web/static/assets/index-f0a6e5a5.js +2696 -0
  133. flowfile/web/static/assets/node.types-2c15bb7e.js +82 -0
  134. flowfile/web/static/assets/nodeInput-ed2ae8d7.js +2 -0
  135. flowfile/web/static/assets/{outputCsv-076b85ab.js → outputCsv-3c1757e8.js} +3 -3
  136. flowfile/web/static/assets/outputCsv-b9a072af.css +2499 -0
  137. flowfile/web/static/assets/{outputExcel-0fd17dbe.js → outputExcel-686e1f48.js} +3 -3
  138. flowfile/web/static/assets/{outputExcel-b41305c0.css → outputExcel-f5d272b2.css} +26 -26
  139. flowfile/web/static/assets/outputParquet-54597c3c.css +4 -0
  140. flowfile/web/static/assets/{outputParquet-b61e0847.js → outputParquet-df28faa7.js} +4 -4
  141. flowfile/web/static/assets/{readCsv-c767cb37.css → readCsv-3bfac4c3.css} +15 -15
  142. flowfile/web/static/assets/{readCsv-a8bb8b61.js → readCsv-e37eee21.js} +3 -3
  143. flowfile/web/static/assets/{readExcel-806d2826.css → readExcel-3db6b763.css} +13 -13
  144. flowfile/web/static/assets/{readExcel-67b4aee0.js → readExcel-a13f14bb.js} +5 -5
  145. flowfile/web/static/assets/{readParquet-92ce1dbc.js → readParquet-344cf746.js} +3 -3
  146. flowfile/web/static/assets/{readParquet-48c81530.css → readParquet-c5244ad5.css} +4 -4
  147. flowfile/web/static/assets/secrets.api-ae198c5c.js +65 -0
  148. flowfile/web/static/assets/{selectDynamic-92e25ee3.js → selectDynamic-6b4b0767.js} +5 -5
  149. flowfile/web/static/assets/{selectDynamic-aa913ff4.css → selectDynamic-f2fb394f.css} +21 -20
  150. flowfile/web/static/assets/{vue-codemirror.esm-41b0e0d7.js → vue-codemirror.esm-31ba0e0b.js} +31 -640
  151. flowfile/web/static/assets/{vue-content-loader.es-2c8e608f.js → vue-content-loader.es-4469c8ff.js} +1 -1
  152. flowfile/web/static/index.html +2 -2
  153. {flowfile-0.5.1.dist-info → flowfile-0.5.4.dist-info}/METADATA +3 -4
  154. flowfile-0.5.4.dist-info/RECORD +407 -0
  155. flowfile_core/__init__.py +13 -6
  156. flowfile_core/auth/jwt.py +51 -16
  157. flowfile_core/auth/models.py +32 -7
  158. flowfile_core/auth/password.py +89 -0
  159. flowfile_core/auth/secrets.py +64 -19
  160. flowfile_core/configs/__init__.py +9 -7
  161. flowfile_core/configs/flow_logger.py +15 -14
  162. flowfile_core/configs/node_store/__init__.py +72 -4
  163. flowfile_core/configs/node_store/nodes.py +155 -172
  164. flowfile_core/configs/node_store/user_defined_node_registry.py +108 -27
  165. flowfile_core/configs/settings.py +28 -15
  166. flowfile_core/database/connection.py +7 -6
  167. flowfile_core/database/init_db.py +96 -2
  168. flowfile_core/database/models.py +3 -1
  169. flowfile_core/fileExplorer/__init__.py +17 -0
  170. flowfile_core/fileExplorer/funcs.py +145 -57
  171. flowfile_core/fileExplorer/utils.py +10 -11
  172. flowfile_core/flowfile/_extensions/real_time_interface.py +10 -8
  173. flowfile_core/flowfile/analytics/analytics_processor.py +26 -24
  174. flowfile_core/flowfile/analytics/graphic_walker.py +11 -12
  175. flowfile_core/flowfile/analytics/utils.py +1 -1
  176. flowfile_core/flowfile/code_generator/__init__.py +11 -0
  177. flowfile_core/flowfile/code_generator/code_generator.py +706 -247
  178. flowfile_core/flowfile/connection_manager/_connection_manager.py +6 -5
  179. flowfile_core/flowfile/connection_manager/models.py +1 -1
  180. flowfile_core/flowfile/database_connection_manager/db_connections.py +60 -44
  181. flowfile_core/flowfile/database_connection_manager/models.py +1 -1
  182. flowfile_core/flowfile/extensions.py +17 -12
  183. flowfile_core/flowfile/flow_data_engine/cloud_storage_reader.py +34 -32
  184. flowfile_core/flowfile/flow_data_engine/create/funcs.py +115 -83
  185. flowfile_core/flowfile/flow_data_engine/flow_data_engine.py +493 -423
  186. flowfile_core/flowfile/flow_data_engine/flow_file_column/interface.py +2 -2
  187. flowfile_core/flowfile/flow_data_engine/flow_file_column/main.py +92 -52
  188. flowfile_core/flowfile/flow_data_engine/flow_file_column/polars_type.py +12 -11
  189. flowfile_core/flowfile/flow_data_engine/flow_file_column/type_registry.py +6 -6
  190. flowfile_core/flowfile/flow_data_engine/flow_file_column/utils.py +26 -30
  191. flowfile_core/flowfile/flow_data_engine/fuzzy_matching/prepare_for_fuzzy_match.py +31 -20
  192. flowfile_core/flowfile/flow_data_engine/join/__init__.py +1 -1
  193. flowfile_core/flowfile/flow_data_engine/join/utils.py +11 -9
  194. flowfile_core/flowfile/flow_data_engine/join/verify_integrity.py +14 -15
  195. flowfile_core/flowfile/flow_data_engine/pivot_table.py +5 -7
  196. flowfile_core/flowfile/flow_data_engine/polars_code_parser.py +95 -82
  197. flowfile_core/flowfile/flow_data_engine/read_excel_tables.py +66 -65
  198. flowfile_core/flowfile/flow_data_engine/sample_data.py +27 -21
  199. flowfile_core/flowfile/flow_data_engine/subprocess_operations/__init__.py +1 -1
  200. flowfile_core/flowfile/flow_data_engine/subprocess_operations/models.py +13 -11
  201. flowfile_core/flowfile/flow_data_engine/subprocess_operations/subprocess_operations.py +190 -127
  202. flowfile_core/flowfile/flow_data_engine/threaded_processes.py +8 -8
  203. flowfile_core/flowfile/flow_data_engine/utils.py +99 -67
  204. flowfile_core/flowfile/flow_graph.py +920 -571
  205. flowfile_core/flowfile/flow_graph_utils.py +31 -49
  206. flowfile_core/flowfile/flow_node/flow_node.py +379 -258
  207. flowfile_core/flowfile/flow_node/models.py +53 -41
  208. flowfile_core/flowfile/flow_node/schema_callback.py +14 -19
  209. flowfile_core/flowfile/graph_tree/graph_tree.py +41 -41
  210. flowfile_core/flowfile/handler.py +80 -30
  211. flowfile_core/flowfile/manage/compatibility_enhancements.py +209 -126
  212. flowfile_core/flowfile/manage/io_flowfile.py +54 -57
  213. flowfile_core/flowfile/node_designer/__init__.py +19 -13
  214. flowfile_core/flowfile/node_designer/_type_registry.py +34 -37
  215. flowfile_core/flowfile/node_designer/custom_node.py +162 -36
  216. flowfile_core/flowfile/node_designer/ui_components.py +278 -34
  217. flowfile_core/flowfile/schema_callbacks.py +71 -51
  218. flowfile_core/flowfile/setting_generator/__init__.py +0 -1
  219. flowfile_core/flowfile/setting_generator/setting_generator.py +6 -5
  220. flowfile_core/flowfile/setting_generator/settings.py +64 -53
  221. flowfile_core/flowfile/sources/external_sources/base_class.py +12 -10
  222. flowfile_core/flowfile/sources/external_sources/custom_external_sources/external_source.py +27 -17
  223. flowfile_core/flowfile/sources/external_sources/custom_external_sources/sample_users.py +9 -9
  224. flowfile_core/flowfile/sources/external_sources/factory.py +0 -1
  225. flowfile_core/flowfile/sources/external_sources/sql_source/models.py +45 -31
  226. flowfile_core/flowfile/sources/external_sources/sql_source/sql_source.py +198 -73
  227. flowfile_core/flowfile/sources/external_sources/sql_source/utils.py +250 -196
  228. flowfile_core/flowfile/util/calculate_layout.py +9 -13
  229. flowfile_core/flowfile/util/execution_orderer.py +25 -17
  230. flowfile_core/flowfile/util/node_skipper.py +4 -4
  231. flowfile_core/flowfile/utils.py +19 -21
  232. flowfile_core/main.py +26 -19
  233. flowfile_core/routes/auth.py +284 -11
  234. flowfile_core/routes/cloud_connections.py +25 -25
  235. flowfile_core/routes/logs.py +21 -29
  236. flowfile_core/routes/public.py +46 -4
  237. flowfile_core/routes/routes.py +70 -34
  238. flowfile_core/routes/secrets.py +25 -27
  239. flowfile_core/routes/user_defined_components.py +483 -4
  240. flowfile_core/run_lock.py +0 -1
  241. flowfile_core/schemas/__init__.py +4 -6
  242. flowfile_core/schemas/analysis_schemas/graphic_walker_schemas.py +55 -55
  243. flowfile_core/schemas/cloud_storage_schemas.py +96 -66
  244. flowfile_core/schemas/input_schema.py +231 -144
  245. flowfile_core/schemas/output_model.py +49 -34
  246. flowfile_core/schemas/schemas.py +116 -89
  247. flowfile_core/schemas/transform_schema.py +518 -263
  248. flowfile_core/schemas/yaml_types.py +21 -7
  249. flowfile_core/secret_manager/secret_manager.py +123 -18
  250. flowfile_core/types.py +29 -9
  251. flowfile_core/utils/arrow_reader.py +7 -6
  252. flowfile_core/utils/excel_file_manager.py +3 -3
  253. flowfile_core/utils/fileManager.py +7 -7
  254. flowfile_core/utils/fl_executor.py +8 -10
  255. flowfile_core/utils/utils.py +4 -4
  256. flowfile_core/utils/validate_setup.py +5 -4
  257. flowfile_frame/__init__.py +117 -51
  258. flowfile_frame/adapters.py +2 -9
  259. flowfile_frame/adding_expr.py +73 -32
  260. flowfile_frame/cloud_storage/frame_helpers.py +27 -23
  261. flowfile_frame/cloud_storage/secret_manager.py +12 -26
  262. flowfile_frame/config.py +2 -5
  263. flowfile_frame/database/__init__.py +36 -0
  264. flowfile_frame/database/connection_manager.py +205 -0
  265. flowfile_frame/database/frame_helpers.py +249 -0
  266. flowfile_frame/expr.py +311 -218
  267. flowfile_frame/expr.pyi +160 -159
  268. flowfile_frame/expr_name.py +23 -23
  269. flowfile_frame/flow_frame.py +571 -476
  270. flowfile_frame/flow_frame.pyi +123 -104
  271. flowfile_frame/flow_frame_methods.py +227 -246
  272. flowfile_frame/group_frame.py +50 -20
  273. flowfile_frame/join.py +2 -2
  274. flowfile_frame/lazy.py +129 -87
  275. flowfile_frame/lazy_methods.py +83 -30
  276. flowfile_frame/list_name_space.py +55 -50
  277. flowfile_frame/selectors.py +148 -68
  278. flowfile_frame/series.py +9 -7
  279. flowfile_frame/utils.py +19 -21
  280. flowfile_worker/__init__.py +12 -7
  281. flowfile_worker/configs.py +41 -33
  282. flowfile_worker/create/__init__.py +14 -9
  283. flowfile_worker/create/funcs.py +114 -77
  284. flowfile_worker/create/models.py +46 -43
  285. flowfile_worker/create/pl_types.py +14 -15
  286. flowfile_worker/create/read_excel_tables.py +34 -41
  287. flowfile_worker/create/utils.py +22 -19
  288. flowfile_worker/external_sources/s3_source/main.py +18 -51
  289. flowfile_worker/external_sources/s3_source/models.py +34 -27
  290. flowfile_worker/external_sources/sql_source/main.py +8 -5
  291. flowfile_worker/external_sources/sql_source/models.py +13 -9
  292. flowfile_worker/flow_logger.py +10 -8
  293. flowfile_worker/funcs.py +214 -155
  294. flowfile_worker/main.py +11 -17
  295. flowfile_worker/models.py +35 -28
  296. flowfile_worker/process_manager.py +2 -3
  297. flowfile_worker/routes.py +121 -90
  298. flowfile_worker/secrets.py +114 -21
  299. flowfile_worker/spawner.py +89 -54
  300. flowfile_worker/utils.py +3 -2
  301. shared/__init__.py +2 -7
  302. shared/storage_config.py +25 -13
  303. test_utils/postgres/commands.py +3 -2
  304. test_utils/postgres/fixtures.py +9 -9
  305. test_utils/s3/commands.py +1 -1
  306. test_utils/s3/data_generator.py +3 -4
  307. test_utils/s3/demo_data_generator.py +4 -7
  308. test_utils/s3/fixtures.py +7 -5
  309. tools/migrate/__init__.py +1 -1
  310. tools/migrate/__main__.py +16 -29
  311. tools/migrate/legacy_schemas.py +251 -190
  312. tools/migrate/migrate.py +193 -181
  313. tools/migrate/tests/conftest.py +1 -3
  314. tools/migrate/tests/test_migrate.py +36 -41
  315. tools/migrate/tests/test_migration_e2e.py +28 -29
  316. tools/migrate/tests/test_node_migrations.py +50 -20
  317. flowfile/web/static/assets/CloudConnectionManager-2dfdce2f.css +0 -86
  318. flowfile/web/static/assets/ContextMenu-23e909da.js +0 -41
  319. flowfile/web/static/assets/ContextMenu-4c74eef1.css +0 -26
  320. flowfile/web/static/assets/ContextMenu-63cfa99b.css +0 -26
  321. flowfile/web/static/assets/ContextMenu-70ae0c79.js +0 -41
  322. flowfile/web/static/assets/ContextMenu-c13f91d0.css +0 -26
  323. flowfile/web/static/assets/ContextMenu-f149cf7c.js +0 -41
  324. flowfile/web/static/assets/CustomNode-74a37f74.css +0 -32
  325. flowfile/web/static/assets/DatabaseManager-30fa27e5.css +0 -64
  326. flowfile/web/static/assets/Filter-9b6d08db.js +0 -164
  327. flowfile/web/static/assets/Filter-f62091b3.css +0 -20
  328. flowfile/web/static/assets/GroupBy-b9505323.css +0 -51
  329. flowfile/web/static/assets/ManualInput-3246a08d.css +0 -96
  330. flowfile/web/static/assets/Output-283fe388.css +0 -37
  331. flowfile/web/static/assets/PivotValidation-891ddfb0.css +0 -13
  332. flowfile/web/static/assets/PivotValidation-c46cd420.css +0 -13
  333. flowfile/web/static/assets/SQLQueryComponent-36cef432.css +0 -27
  334. flowfile/web/static/assets/SliderInput-b8fb6a8c.css +0 -4
  335. flowfile/web/static/assets/Sort-3643d625.css +0 -51
  336. flowfile/web/static/assets/Unique-f9fb0809.css +0 -51
  337. flowfile/web/static/assets/UnpivotValidation-0d240eeb.css +0 -13
  338. flowfile/web/static/assets/nodeInput-5d0d6b79.js +0 -41
  339. flowfile/web/static/assets/outputCsv-9cc59e0b.css +0 -2499
  340. flowfile/web/static/assets/outputParquet-cf8cf3f2.css +0 -4
  341. flowfile/web/static/assets/secretApi-68435402.js +0 -46
  342. flowfile/web/static/assets/vue-codemirror-bccfde04.css +0 -32
  343. flowfile-0.5.1.dist-info/RECORD +0 -388
  344. {flowfile-0.5.1.dist-info → flowfile-0.5.4.dist-info}/WHEEL +0 -0
  345. {flowfile-0.5.1.dist-info → flowfile-0.5.4.dist-info}/entry_points.txt +0 -0
  346. {flowfile-0.5.1.dist-info → flowfile-0.5.4.dist-info}/licenses/LICENSE +0 -0
@@ -1,9 +1,9 @@
1
1
 
2
- .button-group[data-v-c0f9acc7] {
2
+ .button-group[data-v-182a7a87] {
3
3
  display: flex;
4
4
  gap: 10px;
5
5
  }
6
- .button-group .el-button[data-v-c0f9acc7] {
6
+ .button-group .el-button[data-v-182a7a87] {
7
7
  display: flex;
8
8
  align-items: center;
9
9
  gap: 6px;
@@ -15,219 +15,282 @@
15
15
  font-size: 13px;
16
16
  font-weight: 500 !important;
17
17
  letter-spacing: 0.01em;
18
- box-shadow: 0 1px 2px rgba(1, 5, 13, 0.08);
18
+ box-shadow: var(--shadow-xs);
19
19
  flex-shrink: 0;
20
20
  }
21
21
 
22
22
  /* Run button - normal state */
23
- .button-group .el-button[data-v-c0f9acc7]:first-child:not([disabled]) {
24
- background-color: rgb(2, 27, 45) !important;
25
- border: 1px solid rgb(17, 64, 97) !important;
26
- color: white !important;
23
+ .button-group .el-button[data-v-182a7a87]:first-child:not([disabled]) {
24
+ background-color: var(--primary-blue) !important;
25
+ border: 1px solid var(--primary-blue-light) !important;
26
+ color: var(--color-text-inverse) !important;
27
27
  }
28
28
 
29
29
  /* Run button - hover state */
30
- .button-group .el-button[data-v-c0f9acc7]:first-child:not([disabled]):hover {
31
- background-color: rgba(65, 55, 200, 0.95) !important;
32
- border-color: rgba(65, 55, 200, 1) !important;
30
+ .button-group .el-button[data-v-182a7a87]:first-child:not([disabled]):hover {
31
+ background-color: var(--color-button-primary) !important;
32
+ border-color: var(--color-button-primary) !important;
33
33
  }
34
34
 
35
35
  /* Run button - disabled state */
36
- .button-group .el-button:first-child[disabled][data-v-c0f9acc7] {
37
- background-color: rgba(16, 24, 40, 0.3) !important;
38
- border: 1px solid rgba(16, 24, 40, 0.2) !important;
39
- color: rgba(255, 255, 255, 0.8) !important;
36
+ .button-group .el-button:first-child[disabled][data-v-182a7a87] {
37
+ background-color: var(--color-gray-400) !important;
38
+ border: 1px solid var(--color-gray-400) !important;
39
+ color: var(--color-text-inverse) !important;
40
40
  cursor: not-allowed;
41
+ opacity: 0.7;
41
42
  }
42
43
 
43
44
  /* Cancel button */
44
- .button-group .el-button[data-v-c0f9acc7]:nth-child(2) {
45
- background-color: rgba(220, 53, 69, 0.9) !important;
46
- border: 1px solid rgba(220, 53, 69, 0.95) !important;
47
- color: white !important;
45
+ .button-group .el-button[data-v-182a7a87]:nth-child(2) {
46
+ background-color: var(--color-danger) !important;
47
+ border: 1px solid var(--color-danger) !important;
48
+ color: var(--color-text-inverse) !important;
48
49
  }
49
50
 
50
51
  /* Cancel button - hover state */
51
- .button-group .el-button[data-v-c0f9acc7]:nth-child(2):hover {
52
- background-color: rgba(200, 35, 51, 0.95) !important;
53
- border-color: rgba(200, 35, 51, 1) !important;
52
+ .button-group .el-button[data-v-182a7a87]:nth-child(2):hover {
53
+ background-color: var(--color-danger-hover) !important;
54
+ border-color: var(--color-danger-hover) !important;
54
55
  }
55
56
 
56
57
  /* Active state for both buttons */
57
- .button-group .el-button[data-v-c0f9acc7]:active {
58
+ .button-group .el-button[data-v-182a7a87]:active {
58
59
  transform: translateY(1px);
59
60
  box-shadow: none;
60
61
  }
61
62
 
62
- .browser-title[data-v-11a74179] {
63
+ .browser-title[data-v-bcb824aa] {
63
64
  display: flex;
64
65
  align-items: center;
65
66
  gap: 8px;
66
67
  margin-bottom: 16px;
67
68
  font-size: 18px;
68
69
  font-weight: 600;
69
- color: #333;
70
+ color: var(--color-text-primary);
70
71
  }
71
- .mode-selector[data-v-11a74179] {
72
+ .mode-selector[data-v-bcb824aa] {
72
73
  display: flex;
73
74
  justify-content: center;
74
75
  }
75
- .browser-content[data-v-11a74179] {
76
+ .browser-content[data-v-bcb824aa] {
76
77
  display: flex;
77
78
  flex-direction: column;
78
79
  height: calc(100% - 116px); /* Adjust based on header height */
79
80
  overflow: hidden;
80
81
  }
81
- .browser-toolbar[data-v-11a74179] {
82
+ .browser-toolbar[data-v-bcb824aa] {
82
83
  padding: 16px;
83
- background-color: #fff;
84
- border-bottom: 1px solid #e9ecef;
84
+ background-color: var(--color-background-primary);
85
+ border-bottom: 1px solid var(--color-border-primary);
86
+ }
87
+ .browser-action-btn[data-v-bcb824aa] {
88
+ background-color: var(--color-file-browser-bg);
89
+ color: var(--color-text-inverse);
85
90
  }
86
- .path-navigation[data-v-11a74179] {
91
+ .path-navigation[data-v-bcb824aa] {
87
92
  display: flex;
88
93
  align-items: center;
89
94
  gap: 12px;
90
95
  margin-bottom: 12px;
91
96
  }
92
- .nav-button[data-v-11a74179] {
97
+ .nav-button[data-v-bcb824aa] {
93
98
  display: inline-flex;
94
99
  align-items: center;
95
100
  gap: 4px;
96
101
  padding: 8px 16px;
97
- border: 1px solid #dee2e6;
102
+ border: 1px solid var(--color-border-primary);
98
103
  border-radius: 4px;
99
- background-color: white;
100
- color: #495057;
104
+ background-color: var(--color-background-primary);
105
+ color: var(--color-text-secondary);
101
106
  font-size: 14px;
102
107
  cursor: pointer;
103
108
  transition: all 0.2s ease;
104
109
  }
105
- .nav-button[data-v-11a74179]:hover:not(:disabled) {
106
- background-color: #f8f9fa;
107
- border-color: #ced4da;
110
+ .nav-button[data-v-bcb824aa]:hover:not(:disabled) {
111
+ background-color: var(--color-background-secondary);
112
+ border-color: var(--color-border-secondary);
108
113
  }
109
- .current-path[data-v-11a74179] {
114
+ .current-path[data-v-bcb824aa] {
110
115
  flex: 1;
111
116
  padding: 8px 12px;
112
- background-color: #f8f9fa;
113
- border: 1px solid #dee2e6;
117
+ background-color: var(--color-background-secondary);
118
+ border: 1px solid var(--color-border-primary);
114
119
  border-radius: 4px;
115
- font-family: monospace;
116
- color: #495057;
120
+ font-family: var(--font-family-mono);
121
+ color: var(--color-text-secondary);
117
122
  }
118
- .search-container[data-v-11a74179] {
123
+ .search-container[data-v-bcb824aa] {
119
124
  display: flex;
120
125
  align-items: center;
121
126
  gap: 16px;
122
127
  flex: 1;
123
128
  }
124
- .search-input[data-v-11a74179] {
129
+ .search-input[data-v-bcb824aa] {
125
130
  flex: 1;
126
131
  }
127
- .browser-main[data-v-11a74179] {
132
+ .browser-main[data-v-bcb824aa] {
128
133
  flex: 1;
129
134
  overflow-y: auto;
130
135
  padding: 16px;
131
136
  }
132
- .file-item[data-v-11a74179] {
133
- border: 1px solid #e9ecef;
137
+ .file-item[data-v-bcb824aa] {
138
+ border: 1px solid var(--color-border-primary);
134
139
  border-radius: 8px;
135
140
  overflow: hidden;
136
141
  transition: all 0.2s ease;
137
142
  }
138
- .file-item[data-v-11a74179]:hover {
143
+ .file-item[data-v-bcb824aa]:hover {
139
144
  transform: translateY(-2px);
140
- box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
145
+ box-shadow: var(--shadow-sm);
146
+ }
147
+ .file-item.selected[data-v-bcb824aa] {
148
+ border-color: var(--color-info);
149
+ border-width: 2px;
150
+ background-color: var(--color-background-selected);
151
+ box-shadow: var(--shadow-md);
152
+ position: relative;
141
153
  }
142
- .file-item.selected[data-v-11a74179] {
143
- border-color: #3b82f6;
144
- background-color: #eff6ff;
154
+ .file-item.selected[data-v-bcb824aa]::after {
155
+ content: "check_circle";
156
+ font-family: "Material Icons";
157
+ position: absolute;
158
+ top: 6px;
159
+ right: 6px;
160
+ color: var(--color-info);
161
+ font-size: 18px;
162
+ background: var(--color-background-primary);
163
+ border-radius: 50%;
145
164
  }
146
- .file-item-content[data-v-11a74179] {
165
+ .file-item-content[data-v-bcb824aa] {
147
166
  padding: 12px;
148
167
  display: flex;
149
168
  align-items: center;
150
169
  gap: 12px;
151
170
  }
152
- .file-icon-wrapper[data-v-11a74179] {
171
+ .file-icon-wrapper[data-v-bcb824aa] {
153
172
  display: flex;
154
173
  align-items: center;
155
174
  justify-content: center;
156
175
  width: 30px;
157
176
  height: 30px;
158
177
  }
159
- .file-icon[data-v-11a74179] {
178
+ .file-icon[data-v-bcb824aa] {
160
179
  width: 24px;
161
180
  height: 24px;
162
- color: #6b7280;
181
+ color: var(--color-text-tertiary);
163
182
  }
164
- .file-details[data-v-11a74179] {
183
+ .file-details[data-v-bcb824aa] {
165
184
  flex: 1;
166
185
  min-width: 0;
167
186
  }
168
- .file-name[data-v-11a74179] {
187
+ .file-name[data-v-bcb824aa] {
169
188
  font-weight: 500;
170
- color: #1f2937;
189
+ color: var(--color-text-primary);
171
190
  margin-bottom: 4px;
172
191
  white-space: nowrap;
173
192
  overflow: hidden;
174
193
  text-overflow: ellipsis;
175
194
  }
176
- .file-info[data-v-11a74179] {
195
+ .file-info[data-v-bcb824aa] {
177
196
  font-size: 12px;
178
- color: #6b7280;
197
+ color: var(--color-text-secondary);
179
198
  }
180
- .browser-actions[data-v-11a74179] {
199
+ .browser-actions[data-v-bcb824aa] {
181
200
  padding: 16px;
182
- background-color: #f8f9fa;
183
- border-top: 1px solid #e9ecef;
201
+ background-color: var(--color-background-secondary);
202
+ border-top: 1px solid var(--color-border-primary);
184
203
  display: flex;
185
204
  justify-content: flex-end;
186
205
  align-items: center;
187
206
  height: 72px;
188
207
  box-sizing: border-box;
189
- gap: 12px; /* Add gap between buttons */
208
+ gap: 12px;
190
209
  }
191
- .selected-file[data-v-11a74179] {
192
- color: #6b7280;
210
+ .selected-file[data-v-bcb824aa] {
211
+ color: var(--color-text-secondary);
193
212
  font-size: 14px;
194
213
  }
195
- .loading-state[data-v-11a74179],
196
- .error-state[data-v-11a74179] {
214
+ .loading-state[data-v-bcb824aa],
215
+ .error-state[data-v-bcb824aa],
216
+ .empty-state[data-v-bcb824aa] {
197
217
  display: flex;
198
218
  align-items: center;
199
219
  justify-content: center;
200
220
  height: 200px;
201
- color: #6b7280;
221
+ color: var(--color-text-secondary);
222
+ }
223
+ .error-state[data-v-bcb824aa] {
224
+ color: var(--color-danger);
225
+ }
226
+ .error-content[data-v-bcb824aa] {
227
+ display: flex;
228
+ flex-direction: column;
229
+ align-items: center;
230
+ gap: 12px;
231
+ text-align: center;
232
+ }
233
+ .error-icon[data-v-bcb824aa] {
234
+ font-size: 48px;
235
+ color: var(--color-danger, #ef4444);
236
+ }
237
+ .error-message[data-v-bcb824aa] {
238
+ max-width: 300px;
202
239
  }
203
- .error-state[data-v-11a74179] {
204
- color: #dc2626;
240
+ .empty-state[data-v-bcb824aa] {
241
+ flex-direction: column;
242
+ gap: 8px;
243
+ color: var(--color-text-secondary);
205
244
  }
206
- .hidden-file[data-v-11a74179] {
245
+ .empty-state .material-icons[data-v-bcb824aa] {
246
+ font-size: 48px;
207
247
  opacity: 0.5;
208
248
  }
209
- .file-browser[data-v-11a74179] {
249
+
250
+ /* Refresh button styling */
251
+ .refresh-button[data-v-bcb824aa] {
252
+ padding: 8px;
253
+ min-width: auto;
254
+ }
255
+ .refresh-button .material-icons[data-v-bcb824aa] {
256
+ transition: transform 0.3s ease;
257
+ }
258
+ .refresh-button .material-icons.spin[data-v-bcb824aa] {
259
+ animation: spin-bcb824aa 1s linear infinite;
260
+ }
261
+ @keyframes spin-bcb824aa {
262
+ from {
263
+ transform: rotate(0deg);
264
+ }
265
+ to {
266
+ transform: rotate(360deg);
267
+ }
268
+ }
269
+ .hidden-file[data-v-bcb824aa] {
270
+ opacity: 0.5;
271
+ }
272
+ .file-browser[data-v-bcb824aa] {
210
273
  display: flex;
211
274
  flex-direction: column;
212
275
  height: 70vh; /* Set to 70% of viewport height */
213
- background-color: white;
276
+ background-color: var(--color-background-primary);
214
277
  border-radius: 8px;
215
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
278
+ box-shadow: var(--shadow-md);
216
279
  }
217
- .browser-content[data-v-11a74179] {
280
+ .browser-content[data-v-bcb824aa] {
218
281
  display: flex;
219
282
  flex-direction: column;
220
283
  flex: 1;
221
284
  min-height: 0; /* Enable proper flex child scrolling */
222
285
  overflow: hidden;
223
286
  }
224
- .browser-main[data-v-11a74179] {
287
+ .browser-main[data-v-bcb824aa] {
225
288
  flex: 1;
226
289
  overflow-y: auto; /* Make this section scrollable */
227
290
  padding: 16px;
228
291
  min-height: 0; /* Enable proper flex child scrolling */
229
292
  }
230
- .grid-container[data-v-11a74179] {
293
+ .grid-container[data-v-bcb824aa] {
231
294
  display: grid;
232
295
  grid-template-columns: repeat(auto-fill, minmax(205px, 1fr));
233
296
  gap: 16px;
@@ -235,25 +298,25 @@
235
298
  }
236
299
 
237
300
  /* Optional: if you want to maintain icon size consistency */
238
- .file-icon[data-v-11a74179] {
301
+ .file-icon[data-v-bcb824aa] {
239
302
  width: 24px;
240
303
  height: 24px;
241
304
  object-fit: contain;
242
305
  }
243
306
 
244
307
  /* Add new styles for sort controls */
245
- .search-and-sort-container[data-v-11a74179] {
308
+ .search-and-sort-container[data-v-bcb824aa] {
246
309
  display: flex;
247
310
  flex-direction: column;
248
311
  gap: 12px;
249
312
  }
250
- .sort-controls[data-v-11a74179] {
313
+ .sort-controls[data-v-bcb824aa] {
251
314
  display: flex;
252
315
  align-items: center;
253
316
  gap: 8px;
254
317
  min-width: 180px; /* Prevent select from being too narrow */
255
318
  }
256
- .sort-direction-button[data-v-11a74179] {
319
+ .sort-direction-button[data-v-bcb824aa] {
257
320
  display: inline-flex;
258
321
  align-items: center;
259
322
  justify-content: center;
@@ -261,139 +324,142 @@
261
324
  height: 32px;
262
325
  padding: 0;
263
326
  }
264
- .controls-row[data-v-11a74179] {
327
+ .controls-row[data-v-bcb824aa] {
265
328
  display: flex;
266
329
  align-items: center;
267
330
  gap: 16px;
268
331
  margin-top: 12px;
269
332
  }
270
- .form-hint[data-v-11a74179] {
333
+ .form-hint[data-v-bcb824aa] {
271
334
  font-size: 12px;
272
- color: #6b7280;
335
+ color: var(--color-text-tertiary);
273
336
  margin-top: 8px;
274
337
  display: flex;
275
338
  align-items: center;
276
339
  gap: 6px;
277
340
  flex-wrap: wrap;
278
341
  }
279
- .preview-label[data-v-11a74179] {
280
- color: #374151;
342
+ .preview-label[data-v-bcb824aa] {
343
+ color: var(--color-text-secondary);
281
344
  }
282
- .form-hint code[data-v-11a74179] {
283
- background-color: #f3f4f6;
345
+ .form-hint code[data-v-bcb824aa] {
346
+ background-color: var(--color-background-secondary);
284
347
  padding: 2px 6px;
285
348
  border-radius: 4px;
286
349
  font-family: monospace;
287
- color: #1f2937;
350
+ color: var(--color-text-primary);
288
351
  }
289
- .auto-extension-hint[data-v-11a74179] {
290
- color: #9ca3af;
352
+ .auto-extension-hint[data-v-bcb824aa] {
353
+ color: var(--color-text-muted);
291
354
  font-style: italic;
292
355
  }
293
356
 
294
- .action-buttons[data-v-3359ec07] {
295
- padding-left: 20px;
357
+ .action-buttons[data-v-92d73926] {
358
+ padding-left: var(--spacing-5);
296
359
  display: flex;
297
360
  align-items: center;
298
- gap: 12px;
361
+ gap: var(--spacing-2);
299
362
  height: 50px;
300
- font-family:
301
- "Inter",
302
- "Roboto",
303
- -apple-system,
304
- BlinkMacSystemFont,
305
- sans-serif;
363
+ font-family: var(--font-family-base);
306
364
  }
307
- .action-btn[data-v-3359ec07] {
365
+ .action-btn[data-v-92d73926] {
308
366
  display: flex;
309
367
  align-items: center;
310
- gap: 6px;
311
- padding: 8px 12px;
312
- height: 36px;
313
- background-color: rgba(3, 11, 27, 0.05); /* Slightly darker background */
314
- border: 1px solid rgba(16, 24, 40, 0.12); /* Darker border */
315
- border-radius: 6px;
368
+ gap: var(--spacing-1-5);
369
+ padding: var(--spacing-2) var(--spacing-3);
370
+ height: 34px;
371
+ background-color: var(--color-background-primary);
372
+ border: 1px solid var(--color-border-light);
373
+ border-radius: var(--border-radius-lg);
316
374
  cursor: pointer;
317
- transition: all 0.2s ease;
318
- color: rgb(2, 27, 45); /* Darker text color */
319
- font-size: 13px;
320
- font-weight: 500;
321
- letter-spacing: 0.01em;
322
- box-shadow: 0 1px 2px rgba(1, 5, 13, 0.08); /* Slightly darker shadow */
375
+ transition: all var(--transition-fast);
376
+ color: var(--color-text-primary);
377
+ font-size: var(--font-size-sm);
378
+ font-weight: var(--font-weight-medium);
379
+ box-shadow: var(--shadow-xs);
323
380
  }
324
- .action-btn[data-v-3359ec07]:hover {
325
- background-color: rgba(16, 24, 40, 0.08); /* Darker hover background */
326
- border-color: rgba(16, 24, 40, 0.18); /* Darker hover border */
381
+ .action-btn[data-v-92d73926]:hover {
382
+ background-color: var(--color-background-tertiary);
383
+ border-color: var(--color-border-secondary);
327
384
  }
328
- .action-btn[data-v-3359ec07]:active {
385
+ .action-btn[data-v-92d73926]:active {
329
386
  transform: translateY(1px);
330
387
  box-shadow: none;
331
388
  }
332
- .btn-icon[data-v-3359ec07] {
333
- font-size: 16px;
334
- color: rgb(2, 27, 45); /* Darker icon color */
389
+ .action-btn.active[data-v-92d73926] {
390
+ background-color: var(--color-accent-subtle);
391
+ border-color: var(--color-accent);
392
+ color: var(--color-accent);
335
393
  }
336
- .btn-text[data-v-3359ec07] {
394
+ .btn-icon[data-v-92d73926] {
395
+ font-size: 18px;
396
+ color: var(--color-text-secondary);
397
+ -webkit-font-smoothing: antialiased;
398
+ -moz-osx-font-smoothing: grayscale;
399
+ text-rendering: optimizeLegibility;
400
+ }
401
+ .action-btn:hover .btn-icon[data-v-92d73926] {
402
+ color: var(--color-text-primary);
403
+ }
404
+ .action-btn.active .btn-icon[data-v-92d73926] {
405
+ color: var(--color-accent);
406
+ }
407
+ .btn-text[data-v-92d73926] {
337
408
  white-space: nowrap;
338
409
  }
339
- .settings-modal-content[data-v-3359ec07] {
340
- padding: 16px;
341
- font-family:
342
- "Inter",
343
- "Roboto",
344
- -apple-system,
345
- BlinkMacSystemFont,
346
- sans-serif;
347
- }
348
- .form-group[data-v-3359ec07] {
349
- margin-bottom: 16px;
410
+ .settings-modal-content[data-v-92d73926] {
411
+ padding: var(--spacing-4);
412
+ font-family: var(--font-family-base);
413
+ }
414
+ .form-group[data-v-92d73926] {
415
+ margin-bottom: var(--spacing-4);
350
416
  }
351
- .form-group label[data-v-3359ec07] {
417
+ .form-group label[data-v-92d73926] {
352
418
  display: block;
353
- margin-bottom: 8px;
354
- font-size: 14px;
355
- font-weight: 500;
356
- color: rgba(16, 24, 40, 0.9);
419
+ margin-bottom: var(--spacing-2);
420
+ font-size: var(--font-size-sm);
421
+ font-weight: var(--font-weight-medium);
422
+ color: var(--color-text-primary);
357
423
  }
358
- .quick-create-modal[data-v-3359ec07] {
359
- padding: 16px 0;
424
+ .quick-create-modal[data-v-92d73926] {
425
+ padding: var(--spacing-4) 0;
360
426
  }
361
- .quick-create-modal .form-group[data-v-3359ec07] {
362
- margin-bottom: 20px;
427
+ .quick-create-modal .form-group[data-v-92d73926] {
428
+ margin-bottom: var(--spacing-5);
363
429
  }
364
- .quick-create-modal label[data-v-3359ec07] {
430
+ .quick-create-modal label[data-v-92d73926] {
365
431
  display: block;
366
- margin-bottom: 8px;
367
- font-size: 14px;
368
- font-weight: 500;
369
- color: rgba(16, 24, 40, 0.9);
432
+ margin-bottom: var(--spacing-2);
433
+ font-size: var(--font-size-sm);
434
+ font-weight: var(--font-weight-medium);
435
+ color: var(--color-text-primary);
370
436
  }
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);
437
+ .preview-text[data-v-92d73926] {
438
+ padding: var(--spacing-3);
439
+ background-color: var(--color-background-muted);
440
+ border: 1px solid var(--color-border-light);
441
+ border-radius: var(--border-radius-md);
442
+ font-size: var(--font-size-md);
443
+ color: var(--color-text-secondary);
378
444
  }
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;
445
+ .preview-text code[data-v-92d73926] {
446
+ background-color: var(--color-background-tertiary);
447
+ padding: 2px var(--spacing-1-5);
448
+ border-radius: var(--border-radius-sm);
449
+ font-family: var(--font-family-mono);
450
+ font-size: var(--font-size-sm);
385
451
  }
386
- .dialog-footer[data-v-3359ec07] {
452
+ .dialog-footer[data-v-92d73926] {
387
453
  display: flex;
388
- gap: 8px;
454
+ gap: var(--spacing-2);
389
455
  }
390
456
 
391
- .status-wrapper[data-v-4aa2388b] {
457
+ .status-wrapper[data-v-0ee1952b] {
392
458
  display: flex;
393
459
  align-items: center;
394
460
  gap: 12px;
395
461
  }
396
- .flow-card[data-v-4aa2388b] {
462
+ .flow-card[data-v-0ee1952b] {
397
463
  position: relative;
398
464
  width: 40px;
399
465
  height: 40px;
@@ -402,22 +468,22 @@
402
468
  cursor: help;
403
469
  overflow: hidden;
404
470
  }
405
- .flow-card[data-v-4aa2388b]:hover {
471
+ .flow-card[data-v-0ee1952b]:hover {
406
472
  transform: translateY(-0.5px);
407
- box-shadow: 0 4px 16px rgba(159, 129, 228, 0.25);
473
+ box-shadow: var(--shadow-lg);
408
474
  }
409
- .flow-animation[data-v-4aa2388b] {
475
+ .flow-animation[data-v-0ee1952b] {
410
476
  width: 100%;
411
477
  height: 100%;
412
478
  }
413
479
 
414
480
  /* Flow Container */
415
- .flow-container[data-v-4aa2388b] {
481
+ .flow-container[data-v-0ee1952b] {
416
482
  fill: #8c8caa;
417
483
  }
418
484
 
419
485
  /* Extra Thick Flow Lines with Gradient */
420
- .flow-line[data-v-4aa2388b] {
486
+ .flow-line[data-v-0ee1952b] {
421
487
  fill: none;
422
488
  stroke: url(#lineGradient);
423
489
  stroke-width: 8; /* Extra thick lines */
@@ -427,35 +493,35 @@
427
493
  }
428
494
 
429
495
  /* Animation only when flowing */
430
- .is-flowing .flow-line[data-v-4aa2388b] {
431
- animation: flowMove-4aa2388b 3s infinite linear;
496
+ .is-flowing .flow-line[data-v-0ee1952b] {
497
+ animation: flowMove-0ee1952b 3s infinite linear;
432
498
  }
433
- .is-flowing .flow-line-2[data-v-4aa2388b] {
499
+ .is-flowing .flow-line-2[data-v-0ee1952b] {
434
500
  animation-delay: -1s;
435
501
  }
436
- .is-flowing .flow-line-3[data-v-4aa2388b] {
502
+ .is-flowing .flow-line-3[data-v-0ee1952b] {
437
503
  animation-delay: -2s;
438
504
  }
439
505
 
440
506
  /* Flow Particles - only visible when running */
441
- .flow-particle[data-v-4aa2388b] {
507
+ .flow-particle[data-v-0ee1952b] {
442
508
  fill: #5256c6;
443
509
  opacity: 0;
444
510
  }
445
- .is-flowing .flow-particle[data-v-4aa2388b] {
446
- animation: particleFlow-4aa2388b 3s infinite ease-in-out;
511
+ .is-flowing .flow-particle[data-v-0ee1952b] {
512
+ animation: particleFlow-0ee1952b 3s infinite ease-in-out;
447
513
  }
448
- .particle-1[data-v-4aa2388b] {
514
+ .particle-1[data-v-0ee1952b] {
449
515
  animation-delay: 0s;
450
516
  }
451
- .particle-2[data-v-4aa2388b] {
517
+ .particle-2[data-v-0ee1952b] {
452
518
  animation-delay: -1s;
453
519
  }
454
- .particle-3[data-v-4aa2388b] {
520
+ .particle-3[data-v-0ee1952b] {
455
521
  animation-delay: -2s;
456
522
  }
457
523
  /* Control Button */
458
- .control-button[data-v-4aa2388b] {
524
+ .control-button[data-v-0ee1952b] {
459
525
  display: flex;
460
526
  align-items: center;
461
527
  justify-content: center;
@@ -463,25 +529,25 @@
463
529
  height: 32px;
464
530
  border-radius: 50%;
465
531
  border: none;
466
- background: #8c8caa;
467
- color: #4834d4;
532
+ background: var(--color-gray-400);
533
+ color: var(--color-button-primary);
468
534
  cursor: pointer;
469
535
  transition: all 0.3s ease;
470
- box-shadow: 0 2px 8px rgba(76, 0, 255, 0.2);
536
+ box-shadow: var(--shadow-sm);
471
537
  }
472
- .control-button[data-v-4aa2388b]:hover {
473
- background: #4834d4;
474
- color: white;
538
+ .control-button[data-v-0ee1952b]:hover {
539
+ background: var(--color-button-primary);
540
+ color: var(--color-text-inverse);
475
541
  transform: translateY(-1px);
476
- box-shadow: 0 4px 16px rgba(76, 0, 255, 0.3);
542
+ box-shadow: var(--shadow-md);
477
543
  }
478
- .control-button.is-active[data-v-4aa2388b] {
479
- background: #4834d4;
480
- color: white;
544
+ .control-button.is-active[data-v-0ee1952b] {
545
+ background: var(--color-button-primary);
546
+ color: var(--color-text-inverse);
481
547
  }
482
548
 
483
549
  /* Animations */
484
- @keyframes flowMove-4aa2388b {
550
+ @keyframes flowMove-0ee1952b {
485
551
  0% {
486
552
  transform: translateX(0);
487
553
  }
@@ -489,7 +555,7 @@
489
555
  transform: translateX(-70px);
490
556
  }
491
557
  }
492
- @keyframes particleFlow-4aa2388b {
558
+ @keyframes particleFlow-0ee1952b {
493
559
  0% {
494
560
  opacity: 0;
495
561
  transform: translateX(-10px) scale(0.8);
@@ -508,37 +574,37 @@
508
574
  }
509
575
  }
510
576
 
511
- .status-indicator[data-v-8ef0b204] {
577
+ .status-indicator[data-v-4064b904] {
512
578
  position: relative;
513
579
  display: flex;
514
580
  align-items: center;
515
581
  margin-right: 8px;
516
582
  }
517
- .status-indicator[data-v-8ef0b204]::before {
583
+ .status-indicator[data-v-4064b904]::before {
518
584
  content: "";
519
585
  display: block;
520
586
  width: 10px;
521
587
  height: 10px;
522
588
  border-radius: 50%;
523
589
  }
524
- .status-indicator.success[data-v-8ef0b204]::before {
590
+ .status-indicator.success[data-v-4064b904]::before {
525
591
  background-color: #4caf50;
526
592
  }
527
- .status-indicator.failure[data-v-8ef0b204]::before {
593
+ .status-indicator.failure[data-v-4064b904]::before {
528
594
  background-color: #f44336;
529
595
  }
530
- .status-indicator.warning[data-v-8ef0b204]::before {
596
+ .status-indicator.warning[data-v-4064b904]::before {
531
597
  background-color: #f09f5dd1;
532
598
  }
533
- .status-indicator.unknown[data-v-8ef0b204]::before {
534
- background-color: #ffffff;
599
+ .status-indicator.unknown[data-v-4064b904]::before {
600
+ background-color: var(--color-text-muted);
535
601
  }
536
- .status-indicator.running[data-v-8ef0b204]::before {
602
+ .status-indicator.running[data-v-4064b904]::before {
537
603
  background-color: #0909ca;
538
- animation: pulse-8ef0b204 1.5s cubic-bezier(0.4, 0, 0.6, 1) infinite;
604
+ animation: pulse-4064b904 1.5s cubic-bezier(0.4, 0, 0.6, 1) infinite;
539
605
  box-shadow: 0 0 10px #0909ca;
540
606
  }
541
- @keyframes pulse-8ef0b204 {
607
+ @keyframes pulse-4064b904 {
542
608
  0% {
543
609
  transform: scale(1);
544
610
  opacity: 1;
@@ -555,11 +621,11 @@
555
621
  box-shadow: 0 0 5px #0909ca;
556
622
  }
557
623
  }
558
- .tooltip-text[data-v-8ef0b204] {
624
+ .tooltip-text[data-v-4064b904] {
559
625
  visibility: hidden;
560
626
  width: 120px;
561
- background-color: black;
562
- color: #fff;
627
+ background-color: var(--color-gray-800);
628
+ color: var(--color-text-inverse);
563
629
  text-align: center;
564
630
  border-radius: 6px;
565
631
  padding: 5px 0;
@@ -571,29 +637,29 @@
571
637
  opacity: 0;
572
638
  transition: opacity 0.3s;
573
639
  }
574
- .status-indicator:hover .tooltip-text[data-v-8ef0b204] {
640
+ .status-indicator:hover .tooltip-text[data-v-4064b904] {
575
641
  visibility: visible;
576
642
  opacity: 1;
577
643
  }
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 */
644
+ .description-input[data-v-4064b904]:hover,
645
+ .description-input[data-v-4064b904]:focus {
646
+ background-color: var(--color-background-tertiary);
647
+ box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.2);
582
648
  }
583
- .component-wrapper[data-v-8ef0b204] {
649
+ .component-wrapper[data-v-4064b904] {
584
650
  position: relative; /* This makes the absolute positioning of the child relative to this container */
585
651
  max-width: 60px;
586
652
  overflow: visible; /* Allows children to visually overflow */
587
653
  }
588
- .description-display[data-v-8ef0b204] {
654
+ .description-display[data-v-4064b904] {
589
655
  padding: 8px;
590
656
  width: 200px !important;
591
657
  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 */
658
+ background-color: var(--color-background-primary);
659
+ border-radius: 4px;
660
+ cursor: pointer;
595
661
  }
596
- .overlay[data-v-8ef0b204] {
662
+ .overlay[data-v-4064b904] {
597
663
  position: fixed; /* This is key for viewport-level positioning */
598
664
  width: 200px; /* Or whatever width you prefer */
599
665
  height: 200px; /* Or whatever height you prefer */
@@ -603,70 +669,72 @@
603
669
  z-index: 1000; /* High enough to float above everything else */
604
670
  /* Your existing styles for background, padding, etc. */
605
671
  }
606
- .node-button[data-v-8ef0b204] {
607
- background-color: #ffffff;
672
+ .node-button[data-v-4064b904] {
673
+ background-color: #dedede;
608
674
  border-radius: 10px;
609
675
  border-width: 0px;
610
676
  }
611
- .node-button[data-v-8ef0b204]:hover {
612
- background-color: #f5f5f5;
677
+ .node-button[data-v-4064b904]:hover {
678
+ background-color: var(--color-background-hover);
613
679
  transform: translateY(-1px);
614
- box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
680
+ box-shadow: var(--shadow-sm);
615
681
  }
616
- .overlay-content[data-v-8ef0b204] {
682
+ .overlay-content[data-v-4064b904] {
617
683
  padding: 20px;
618
684
  border-radius: 10px;
619
- box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
685
+ box-shadow: var(--shadow-md);
620
686
  display: flex;
621
687
  flex-direction: column;
622
688
  align-items: stretch;
623
689
  }
624
- .overlay-prompt[data-v-8ef0b204] {
690
+ .overlay-prompt[data-v-4064b904] {
625
691
  margin-bottom: 10px;
626
- color: #333;
692
+ color: var(--color-text-primary);
627
693
  font-size: 16px;
628
694
  }
629
- .description-input[data-v-8ef0b204] {
695
+ .description-input[data-v-4064b904] {
630
696
  margin-bottom: 10px;
631
- border: 1px solid #ccc;
697
+ border: 1px solid var(--color-border-primary);
632
698
  border-radius: 4px;
633
699
  padding: 10px;
634
700
  font-size: 14px;
635
- height: 100px; /* Adjust based on your needs */
701
+ height: 100px;
702
+ background-color: var(--color-background-primary);
703
+ color: var(--color-text-primary);
636
704
  }
637
- .selected[data-v-8ef0b204] {
638
- border: 2px solid #828282;
705
+ .selected[data-v-4064b904] {
706
+ border: 2px solid var(--color-accent);
639
707
  }
640
708
 
641
- .error-node[data-v-00eceaf3] {
709
+ .error-node[data-v-840d2e40] {
642
710
  padding: 8px;
643
- background: #ffcccc;
644
- border-radius: 4px;
711
+ background: var(--color-node-error-bg);
712
+ border-radius: var(--border-radius-sm);
645
713
  font-size: 12px;
646
714
  }
647
715
 
648
- .custom-node[data-v-0887a495] {
716
+ .custom-node[data-v-e650ee69] {
649
717
  border-radius: 4px;
650
718
  padding: 1px;
651
- background-color: white;
719
+ background-color: var(--color-background-primary);
652
720
  display: flex;
653
721
  flex-direction: column;
654
722
  align-items: center;
655
723
  position: relative;
656
724
  }
657
- .selected[data-v-0887a495] {
725
+ .selected[data-v-e650ee69] {
658
726
  border: 2px solid #409eff;
659
727
  }
660
- .custom-node-header[data-v-0887a495] {
728
+ .custom-node-header[data-v-e650ee69] {
661
729
  font-weight: 100;
662
730
  font-size: small;
663
731
  width: 20px;
664
732
  white-space: nowrap;
665
733
  overflow: visible;
666
734
  text-overflow: ellipsis;
667
- font-family: "Roboto", "Source Sans Pro", Avenir, Helvetica, Arial, sans-serif;
735
+ font-family: var(--font-family-base);
668
736
  }
669
- .description-display[data-v-0887a495] {
737
+ .description-display[data-v-e650ee69] {
670
738
  position: relative;
671
739
  white-space: normal;
672
740
  min-width: 100px;
@@ -674,71 +742,75 @@
674
742
  width: auto;
675
743
  padding: 2px 4px;
676
744
  cursor: pointer;
677
- background-color: rgba(185, 185, 185, 0.117);
678
- font-family: "Roboto", "Source Sans Pro", Avenir, Helvetica, Arial, sans-serif;
745
+ background-color: var(--color-background-secondary);
746
+ font-family: var(--font-family-base);
679
747
  display: flex;
680
748
  align-items: flex-start;
681
749
  gap: 4px;
682
750
  border-radius: 4px;
751
+ color: var(--color-text-primary);
683
752
  }
684
- .edit-icon[data-v-0887a495] {
753
+ .edit-icon[data-v-e650ee69] {
685
754
  opacity: 0;
686
755
  transition: opacity 0.2s;
687
- color: #0f275f;
756
+ color: var(--color-accent);
688
757
  cursor: pointer;
689
758
  display: flex;
690
759
  align-items: center;
691
760
  padding: 2px;
692
761
  }
693
- .description-display:hover .edit-icon[data-v-0887a495] {
762
+ .description-display:hover .edit-icon[data-v-e650ee69] {
694
763
  opacity: 1;
695
764
  }
696
- .edit-icon[data-v-0887a495]:hover {
697
- color: #051233;
765
+ .edit-icon[data-v-e650ee69]:hover {
766
+ color: var(--color-accent-hover);
698
767
  }
699
- .description-text[data-v-0887a495] {
768
+ .description-text[data-v-e650ee69] {
700
769
  margin: 0;
701
770
  white-space: pre-wrap;
702
771
  word-wrap: break-word;
703
- font-family: "Roboto", "Source Sans Pro", Avenir, Helvetica, Arial, sans-serif;
772
+ font-family: var(--font-family-base);
773
+ font-size: var(--font-size-xs);
704
774
  }
705
- .edit-overlay[data-v-0887a495] {
775
+ .edit-overlay[data-v-e650ee69] {
706
776
  position: fixed;
707
777
  z-index: 1000;
708
- background: white;
778
+ background: var(--color-background-primary);
709
779
  border-radius: 4px;
710
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
780
+ box-shadow: var(--shadow-lg);
711
781
  }
712
- .description-input[data-v-0887a495] {
782
+ .description-input[data-v-e650ee69] {
713
783
  width: 200px;
714
784
  height: 75px;
715
785
  resize: both;
716
786
  padding: 4px;
717
- border: 1px solid #0f275f;
787
+ border: 1px solid var(--color-accent);
718
788
  border-radius: 4px;
719
789
  font-size: small;
720
- font-family: "Roboto", "Source Sans Pro", Avenir, Helvetica, Arial, sans-serif;
721
- background-color: white;
790
+ font-family: var(--font-family-base);
791
+ background-color: var(--color-background-primary);
792
+ color: var(--color-text-primary);
722
793
  }
723
- .handle-input[data-v-0887a495] {
794
+ .handle-input[data-v-e650ee69] {
724
795
  position: absolute;
725
796
  left: -8px;
726
797
  }
727
- .handle-output[data-v-0887a495] {
798
+ .handle-output[data-v-e650ee69] {
728
799
  position: absolute;
729
800
  right: -8px;
730
801
  }
731
- .context-menu[data-v-0887a495] {
802
+ .context-menu[data-v-e650ee69] {
732
803
  position: fixed;
733
- z-index: 10000;
734
- background-color: white;
804
+ z-index: var(--z-index-canvas-context-menu, 100002);
805
+ background-color: var(--color-background-primary);
806
+ border: 1px solid var(--color-border-primary);
735
807
  border-radius: 4px;
736
- box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2);
808
+ box-shadow: var(--shadow-lg);
737
809
  padding: 4px 0;
738
810
  min-width: 120px;
739
- font-family: "Roboto", "Source Sans Pro", Avenir, Helvetica, Arial, sans-serif;
811
+ font-family: var(--font-family-base);
740
812
  }
741
- .context-menu-item[data-v-0887a495] {
813
+ .context-menu-item[data-v-e650ee69] {
742
814
  padding: 8px 12px;
743
815
  display: flex;
744
816
  align-items: center;
@@ -746,192 +818,243 @@
746
818
  cursor: pointer;
747
819
  font-size: 13px;
748
820
  transition: background-color 0.2s;
749
- font-family: "Roboto", "Source Sans Pro", Avenir, Helvetica, Arial, sans-serif;
821
+ font-family: var(--font-family-base);
822
+ color: var(--color-text-primary);
823
+ }
824
+ .context-menu-item[data-v-e650ee69]:hover {
825
+ background-color: var(--color-background-hover);
750
826
  }
751
- .context-menu-item[data-v-0887a495]:hover {
752
- background-color: #f5f5f5;
827
+ .context-menu-item svg[data-v-e650ee69] {
828
+ color: var(--color-text-secondary);
753
829
  }
754
- .context-menu-item svg[data-v-0887a495] {
755
- color: #555;
830
+ .context-menu-item span[data-v-e650ee69] {
831
+ font-family: var(--font-family-base);
832
+ }
833
+ .context-menu-divider[data-v-e650ee69] {
834
+ height: 1px;
835
+ background-color: var(--color-border-primary);
836
+ margin: 4px 0;
756
837
  }
757
- .context-menu-item span[data-v-0887a495] {
758
- font-family: "Roboto", "Source Sans Pro", Avenir, Helvetica, Arial, sans-serif;
838
+ .context-menu-item-danger[data-v-e650ee69] {
839
+ color: #dc3545;
840
+ }
841
+ .context-menu-item-danger[data-v-e650ee69]:hover {
842
+ background-color: rgba(220, 53, 69, 0.1);
843
+ }
844
+ .context-menu-item-danger svg[data-v-e650ee69] {
845
+ color: #dc3545;
759
846
  }
760
847
 
761
- .code-container[data-v-8bafe064] {
848
+ .code-container[data-v-b36d237e] {
762
849
  max-width: 1200px;
763
850
  margin: 0 auto;
764
851
  padding: 20px;
765
852
  }
766
- .code-header[data-v-8bafe064] {
853
+ .code-header[data-v-b36d237e] {
767
854
  display: flex;
768
855
  justify-content: space-between;
769
856
  align-items: center;
770
857
  margin-bottom: 20px;
771
858
  }
772
- .code-header h4[data-v-8bafe064] {
859
+ .code-header h4[data-v-b36d237e] {
773
860
  margin: 0;
774
861
  }
775
- .header-actions[data-v-8bafe064] {
862
+ .header-actions[data-v-b36d237e] {
776
863
  display: flex;
777
864
  gap: 12px;
778
865
  }
779
- .export-button[data-v-8bafe064],
780
- .refresh-button[data-v-8bafe064] {
866
+ .export-button[data-v-b36d237e],
867
+ .refresh-button[data-v-b36d237e] {
781
868
  display: flex;
782
869
  align-items: center;
783
870
  gap: 8px;
784
871
  padding: 8px 16px;
785
- background: #007acc;
786
- color: white;
872
+ background: var(--color-accent);
873
+ color: var(--color-text-inverse);
787
874
  border: none;
788
- border-radius: 6px;
875
+ border-radius: var(--border-radius-md);
789
876
  cursor: pointer;
790
- font-size: 14px;
791
- transition: background 0.2s;
877
+ font-size: var(--font-size-base);
878
+ transition: background var(--transition-fast);
792
879
  }
793
- .export-button[data-v-8bafe064]:hover,
794
- .refresh-button[data-v-8bafe064]:hover:not(:disabled) {
795
- background: #005a9e;
880
+ .export-button[data-v-b36d237e]:hover,
881
+ .refresh-button[data-v-b36d237e]:hover:not(:disabled) {
882
+ background: var(--color-accent-hover);
796
883
  }
797
- .refresh-button[data-v-8bafe064]:disabled {
798
- background: #6c757d;
884
+ .refresh-button[data-v-b36d237e]:disabled {
885
+ background: var(--color-gray-500);
799
886
  cursor: not-allowed;
800
887
  }
801
- .spinner[data-v-8bafe064] {
888
+ .spinner[data-v-b36d237e] {
802
889
  display: inline-block;
803
890
  width: 14px;
804
891
  height: 14px;
805
- border: 2px solid #ffffff;
892
+ border: 2px solid var(--color-text-inverse);
806
893
  border-radius: 50%;
807
894
  border-top-color: transparent;
808
- animation: spin-8bafe064 0.8s linear infinite;
895
+ animation: spin-b36d237e 0.8s linear infinite;
809
896
  }
810
- @keyframes spin-8bafe064 {
897
+ @keyframes spin-b36d237e {
811
898
  to {
812
899
  transform: rotate(360deg);
813
900
  }
814
901
  }
815
902
 
816
- .nodes-wrapper[data-v-63142f09] {
903
+ .nodes-wrapper[data-v-0930336a] {
817
904
  display: flex;
818
905
  flex-direction: column;
819
- gap: 5px;
820
- padding: 6px;
821
- background-color: #fff;
822
- border-radius: 8px;
823
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
906
+ gap: var(--spacing-1);
907
+ padding: var(--spacing-1-5);
908
+ background-color: var(--color-background-primary);
909
+ border-radius: var(--border-radius-lg);
910
+ box-shadow: var(--shadow-sm);
824
911
  }
825
912
 
826
913
  /* Style for search input */
827
- .search-input[data-v-63142f09] {
828
- padding: 8px 16px;
829
- margin-bottom: 8px;
830
- border: 1px solid #ccc;
831
- border-radius: 4px;
914
+ .search-input[data-v-0930336a] {
915
+ padding: var(--spacing-2) var(--spacing-4);
916
+ color: var(--color-text-primary);
917
+ margin-bottom: var(--spacing-2);
918
+ border: 1px solid var(--color-border-primary);
919
+ border-radius: var(--border-radius-md);
920
+ font-size: var(--font-size-sm);
921
+ background-color: var(--color-background-primary);
922
+ transition: border-color var(--transition-fast);
923
+ }
924
+ .search-input[data-v-0930336a]:focus {
925
+ outline: none;
926
+ border-color: var(--input-border-focus);
832
927
  }
833
- .category-container[data-v-63142f09] {
928
+ .category-container[data-v-0930336a] {
834
929
  overflow: hidden;
835
- border-radius: 4px;
930
+ border-radius: var(--border-radius-sm);
836
931
  }
837
- .category-header[data-v-63142f09] {
932
+ .category-header[data-v-0930336a] {
838
933
  display: flex;
839
934
  align-items: center;
840
935
  justify-content: space-between;
841
936
  width: 100%;
842
- padding: 8px 16px;
843
- background-color: #fafafa;
937
+ padding: var(--spacing-2) var(--spacing-4);
938
+ background-color: var(--color-background-muted);
844
939
  border: none;
845
940
  cursor: pointer;
846
- transition: background-color 0.2s ease;
941
+ transition: background-color var(--transition-fast);
847
942
  height: 32px;
848
943
  }
849
- .category-header[data-v-63142f09]:hover {
850
- background-color: #f5f5f5;
944
+ .category-header[data-v-0930336a]:hover {
945
+ background-color: var(--color-background-tertiary);
851
946
  }
852
- .category-title[data-v-63142f09] {
853
- font-size: small;
854
- font-weight: 200;
855
- color: #333;
947
+ .category-title[data-v-0930336a] {
948
+ font-size: var(--font-size-xs);
949
+ font-weight: var(--font-weight-normal);
950
+ color: var(--color-text-primary);
856
951
  text-align: left;
857
952
  }
858
- .category-icon[data-v-63142f09] {
859
- font-size: 12px;
860
- color: #666;
953
+ .category-icon[data-v-0930336a] {
954
+ font-size: var(--font-size-sm);
955
+ color: var(--color-text-secondary);
861
956
  }
862
- .category-content[data-v-63142f09] {
957
+ .category-content[data-v-0930336a] {
863
958
  display: flex;
864
959
  flex-direction: column;
865
- background-color: #fff;
960
+ background-color: var(--color-background-primary);
866
961
  }
867
- .node-item[data-v-63142f09] {
962
+ .node-item[data-v-0930336a] {
868
963
  display: flex;
869
964
  align-items: center;
870
- padding: 8px 16px;
965
+ padding: var(--spacing-2) var(--spacing-4);
871
966
  cursor: pointer;
872
967
  user-select: none;
873
- transition: background-color 0.2s ease;
874
- border-bottom: 1px solid #eee;
968
+ transition: background-color var(--transition-fast);
969
+ border-bottom: 1px solid var(--color-border-light);
875
970
  height: 32px;
876
971
  }
877
- .node-item[data-v-63142f09]:last-child {
972
+ .node-item[data-v-0930336a]:last-child {
878
973
  border-bottom: none;
879
974
  }
880
- .node-item[data-v-63142f09]:hover {
881
- background-color: #f5f5f5;
975
+ .node-item[data-v-0930336a]:hover {
976
+ background-color: var(--color-background-tertiary);
882
977
  }
883
- .node-image[data-v-63142f09] {
978
+ .node-image[data-v-0930336a] {
884
979
  width: 24px;
885
980
  height: 24px;
886
- margin-right: 10px;
981
+ margin-right: var(--spacing-2-5);
887
982
  }
888
- .node-name[data-v-63142f09] {
889
- font-size: 12px;
890
- color: #333;
983
+ .node-name[data-v-0930336a] {
984
+ font-size: var(--font-size-sm);
985
+ color: var(--color-text-primary);
891
986
  }
892
987
 
893
988
  /* Custom scrollbar */
894
- .nodes-wrapper[data-v-63142f09]::-webkit-scrollbar {
895
- width: 8px;
989
+ .nodes-wrapper[data-v-0930336a]::-webkit-scrollbar {
990
+ width: 6px;
896
991
  }
897
- .nodes-wrapper[data-v-63142f09]::-webkit-scrollbar-track {
992
+ .nodes-wrapper[data-v-0930336a]::-webkit-scrollbar-track {
898
993
  background: transparent;
899
994
  }
900
- .nodes-wrapper[data-v-63142f09]::-webkit-scrollbar-thumb {
901
- background-color: rgba(0, 0, 0, 0.1);
902
- border-radius: 4px;
995
+ .nodes-wrapper[data-v-0930336a]::-webkit-scrollbar-thumb {
996
+ background-color: var(--color-gray-300);
997
+ border-radius: var(--border-radius-full);
903
998
  }
904
- .nodes-wrapper[data-v-63142f09]::-webkit-scrollbar-thumb:hover {
905
- background-color: rgba(0, 0, 0, 0.2);
999
+ .nodes-wrapper[data-v-0930336a]::-webkit-scrollbar-thumb:hover {
1000
+ background-color: var(--color-gray-400);
906
1001
  }
907
1002
 
908
- .intro-content[data-v-0db5c358] {
909
- white-space: pre-wrap; /* Preserves whitespace and line breaks */
1003
+ .listbox-wrapper[data-v-02f7d886] {
1004
+ color: var(--color-text-primary);
1005
+ }
1006
+ .listbox-title[data-v-02f7d886] {
1007
+ color: var(--color-text-primary);
1008
+ font-weight: var(--font-weight-medium);
1009
+ }
1010
+ .title[data-v-02f7d886] {
1011
+ color: var(--color-text-primary);
1012
+ font-weight: var(--font-weight-medium);
1013
+ }
1014
+ .intro-content[data-v-02f7d886] {
1015
+ white-space: pre-wrap;
1016
+ color: var(--color-text-secondary);
1017
+ }
1018
+ .listbox-expandable[data-v-02f7d886] {
1019
+ --el-collapse-header-background-color: transparent;
1020
+ --el-collapse-content-background-color: transparent;
1021
+ border: none;
1022
+ }
1023
+ .listbox-expandable[data-v-02f7d886] .el-collapse-item__header {
1024
+ background-color: transparent;
1025
+ border: none;
1026
+ }
1027
+ .listbox-expandable[data-v-02f7d886] .el-collapse-item__wrap {
1028
+ background-color: transparent;
1029
+ border: none;
1030
+ }
1031
+ .listbox-expandable[data-v-02f7d886] .el-collapse-item__content {
1032
+ background-color: transparent;
910
1033
  }
911
1034
 
912
1035
  /* (Styles are unchanged) */
913
- .minimal-button[data-v-47a34251] {
1036
+ .minimal-button[data-v-c293e868] {
914
1037
  background: none;
915
1038
  border: none;
916
1039
  padding: 4px;
917
1040
  margin: 0 2px;
918
1041
  font-size: 16px;
919
1042
  cursor: pointer;
920
- color: #333;
1043
+ color: var(--color-text-primary);
921
1044
  position: relative;
922
- background-color: #b6c1ff;
1045
+ background-color: var(--color-background-tertiary);
923
1046
  border-radius: 4px;
924
1047
  width: 25px;
925
1048
  height: 25px;
926
1049
  }
927
- .minimal-button[data-tooltip="true"][data-v-47a34251]::after {
1050
+ .minimal-button[data-tooltip="true"][data-v-c293e868]::after {
928
1051
  content: attr(data-tooltip-text);
929
1052
  position: absolute;
930
1053
  top: calc(100% + 5px);
931
1054
  left: 50%;
932
1055
  transform: translateX(-50%);
933
- background-color: #333;
934
- color: #fff;
1056
+ background-color: var(--color-gray-800);
1057
+ color: var(--color-text-inverse);
935
1058
  padding: 4px 8px;
936
1059
  border-radius: 4px;
937
1060
  white-space: nowrap;
@@ -944,7 +1067,7 @@ to {
944
1067
  pointer-events: none;
945
1068
  z-index: 100000;
946
1069
  }
947
- .minimal-button[data-tooltip="true"][data-v-47a34251]::before {
1070
+ .minimal-button[data-tooltip="true"][data-v-c293e868]::before {
948
1071
  content: "";
949
1072
  position: absolute;
950
1073
  top: 100%;
@@ -952,7 +1075,7 @@ to {
952
1075
  transform: translateX(-50%);
953
1076
  border-width: 4px;
954
1077
  border-style: solid;
955
- border-color: transparent transparent #333 transparent;
1078
+ border-color: transparent transparent var(--color-gray-800) transparent;
956
1079
  opacity: 0;
957
1080
  visibility: hidden;
958
1081
  transition:
@@ -961,21 +1084,21 @@ to {
961
1084
  pointer-events: none;
962
1085
  z-index: 100000;
963
1086
  }
964
- .minimal-button[data-tooltip="true"][data-v-47a34251]:hover::after,
965
- .minimal-button[data-tooltip="true"][data-v-47a34251]:hover::before {
1087
+ .minimal-button[data-tooltip="true"][data-v-c293e868]:hover::after,
1088
+ .minimal-button[data-tooltip="true"][data-v-c293e868]:hover::before {
966
1089
  opacity: 1;
967
1090
  visibility: visible;
968
1091
  }
969
- .minimal-button .icon[data-v-47a34251] {
1092
+ .minimal-button .icon[data-v-c293e868] {
970
1093
  font-size: 16px;
971
1094
  }
972
- .minimal-button[data-v-47a34251]:hover {
973
- color: #000;
974
- background-color: #9facff;
1095
+ .minimal-button[data-v-c293e868]:hover {
1096
+ color: var(--color-text-primary);
1097
+ background-color: var(--color-background-hover);
975
1098
  }
976
- .group-badge[data-v-47a34251] {
977
- background-color: #074273;
978
- color: white;
1099
+ .group-badge[data-v-c293e868] {
1100
+ background-color: var(--color-accent);
1101
+ color: var(--color-text-inverse);
979
1102
  padding: 2px 6px;
980
1103
  border-radius: 3px;
981
1104
  font-size: 11px;
@@ -984,37 +1107,38 @@ to {
984
1107
  transition: background-color 0.2s;
985
1108
  user-select: none;
986
1109
  }
987
- .title-text[data-v-47a34251] {
1110
+ .title-text[data-v-c293e868] {
988
1111
  flex-grow: 1;
989
1112
  padding: 0 8px;
990
1113
  font-size: 14px;
991
- color: #333;
1114
+ color: var(--color-text-primary);
992
1115
  }
993
- .overlay.minimized[data-v-47a34251] {
1116
+ .overlay.minimized[data-v-c293e868] {
994
1117
  width: auto !important;
995
1118
  height: 35px !important;
996
1119
  cursor: default;
997
1120
  }
998
- .overlay[data-v-47a34251] {
1121
+ .overlay[data-v-c293e868] {
999
1122
  position: absolute;
1000
1123
  width: auto;
1001
1124
  max-width: 100%;
1002
1125
  height: auto;
1003
1126
  max-height: 100%;
1004
1127
  box-sizing: border-box;
1005
- background-color: #f9f9f9;
1006
- box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
1128
+ background-color: var(--color-background-primary);
1129
+ box-shadow: var(--shadow-md);
1007
1130
  border-radius: 8px;
1008
1131
  display: flex;
1009
1132
  flex-direction: column;
1010
1133
  cursor: move;
1011
1134
  transition: border-color 0.2s;
1012
1135
  overflow: hidden;
1136
+ border: 1px solid var(--color-border-primary);
1013
1137
  }
1014
- .no-transition[data-v-47a34251] {
1138
+ .no-transition[data-v-c293e868] {
1015
1139
  transition: none !important;
1016
1140
  }
1017
- .header[data-v-47a34251] {
1141
+ .header[data-v-c293e868] {
1018
1142
  display: flex;
1019
1143
  justify-content: flex-start;
1020
1144
  align-items: center;
@@ -1022,68 +1146,73 @@ to {
1022
1146
  padding: 4px;
1023
1147
  border-top-left-radius: 6px;
1024
1148
  border-top-right-radius: 6px;
1025
- background: linear-gradient(135deg, #2189791d 0%, #15a2da25 100%);
1149
+ background: var(--color-background-secondary);
1150
+ border-bottom: 1px solid var(--color-border-primary);
1026
1151
  min-height: 35px;
1027
1152
  box-sizing: border-box;
1028
1153
  overflow: hidden;
1029
1154
  }
1030
- .content[data-v-47a34251] {
1155
+ .content[data-v-c293e868] {
1031
1156
  flex-grow: 1;
1032
1157
  overflow: auto;
1033
1158
  padding: 10px;
1034
1159
  max-height: calc(100% - 50px);
1035
1160
  box-sizing: border-box;
1036
1161
  }
1037
- .draggable-line[data-v-47a34251] {
1162
+ .draggable-line[data-v-c293e868] {
1038
1163
  position: absolute;
1039
1164
  opacity: 1;
1040
1165
  }
1041
- .draggable-line.right-vertical[data-v-47a34251] {
1166
+ .draggable-line.right-vertical[data-v-c293e868] {
1042
1167
  top: 0;
1043
1168
  right: 0;
1044
1169
  width: 5px;
1045
1170
  height: 100%;
1046
1171
  cursor: ew-resize;
1047
1172
  }
1048
- .draggable-line.left-vertical[data-v-47a34251] {
1173
+ .draggable-line.left-vertical[data-v-c293e868] {
1049
1174
  top: 0;
1050
1175
  left: 0;
1051
1176
  width: 5px;
1052
1177
  height: 100%;
1053
1178
  cursor: ew-resize;
1054
1179
  }
1055
- .draggable-line.bottom-horizontal[data-v-47a34251] {
1180
+ .draggable-line.bottom-horizontal[data-v-c293e868] {
1056
1181
  bottom: 0;
1057
1182
  left: 0;
1058
1183
  width: 100%;
1059
1184
  height: 5px;
1060
1185
  cursor: ns-resize;
1061
1186
  }
1062
- .draggable-line.top-horizontal[data-v-47a34251] {
1187
+ .draggable-line.top-horizontal[data-v-c293e868] {
1063
1188
  top: 0;
1064
1189
  left: 0;
1065
1190
  width: 100%;
1066
1191
  height: 5px;
1067
1192
  cursor: ns-resize;
1068
1193
  }
1069
- .resizing-highlight-line[data-v-47a34251] {
1194
+ .resizing-highlight-line[data-v-c293e868] {
1070
1195
  background-color: #080b0e43;
1071
1196
  }
1072
- .draggable-line[data-v-47a34251]:hover {
1197
+ .draggable-line[data-v-c293e868]:hover {
1073
1198
  background-color: #2196f330;
1074
1199
  }
1075
1200
 
1076
- .layout-widget-wrapper[data-v-0bdaa52f] {
1201
+ .layout-widget-wrapper[data-v-d6625e59] {
1077
1202
  position: fixed;
1078
1203
  z-index: 20000;
1079
1204
  }
1080
- .trigger-btn[data-v-0bdaa52f] {
1205
+ .trigger-btn[data-v-d6625e59] {
1081
1206
  width: 45px;
1082
1207
  height: 45px;
1083
1208
  border-radius: 50%;
1084
1209
  border: none;
1085
- background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
1086
- box-shadow: 0 3px 10px rgba(0, 0, 0, 0.2);
1210
+ background: linear-gradient(
1211
+ 135deg,
1212
+ var(--color-gradient-purple-start) 0%,
1213
+ var(--color-gradient-purple-end) 100%
1214
+ );
1215
+ box-shadow: var(--shadow-md);
1087
1216
  cursor: move;
1088
1217
  display: flex;
1089
1218
  align-items: center;
@@ -1092,15 +1221,15 @@ to {
1092
1221
  position: relative;
1093
1222
  overflow: hidden;
1094
1223
  }
1095
- .trigger-btn[data-v-0bdaa52f]:hover {
1224
+ .trigger-btn[data-v-d6625e59]:hover {
1096
1225
  width: 55px;
1097
1226
  height: 55px;
1098
- box-shadow: 0 6px 20px rgba(102, 126, 234, 0.4);
1227
+ box-shadow: var(--shadow-lg);
1099
1228
  }
1100
- .trigger-btn.is-open[data-v-0bdaa52f] {
1229
+ .trigger-btn.is-open[data-v-d6625e59] {
1101
1230
  cursor: pointer;
1102
1231
  }
1103
- .trigger-btn[data-v-0bdaa52f]::before {
1232
+ .trigger-btn[data-v-d6625e59]::before {
1104
1233
  content: "";
1105
1234
  position: absolute;
1106
1235
  top: 50%;
@@ -1108,60 +1237,58 @@ to {
1108
1237
  width: 0;
1109
1238
  height: 0;
1110
1239
  border-radius: 50%;
1111
- background: rgba(255, 255, 255, 0.2);
1240
+ background: var(--color-white-alpha-20);
1112
1241
  transform: translate(-50%, -50%);
1113
1242
  transition:
1114
1243
  width 0.6s,
1115
1244
  height 0.6s;
1116
1245
  }
1117
- .trigger-btn[data-v-0bdaa52f]:hover::before {
1246
+ .trigger-btn[data-v-d6625e59]:hover::before {
1118
1247
  width: 100px;
1119
1248
  height: 100px;
1120
1249
  }
1121
- .layout-icon[data-v-0bdaa52f] {
1122
- color: white;
1250
+ .layout-icon[data-v-d6625e59] {
1251
+ color: var(--color-text-inverse);
1123
1252
  transition: transform 0.3s ease;
1124
1253
  pointer-events: none;
1125
1254
  }
1126
- .trigger-btn:hover .layout-icon[data-v-0bdaa52f] {
1255
+ .trigger-btn:hover .layout-icon[data-v-d6625e59] {
1127
1256
  transform: scale(1.1);
1128
1257
  }
1129
- .trigger-btn.is-open .layout-icon[data-v-0bdaa52f] {
1258
+ .trigger-btn.is-open .layout-icon[data-v-d6625e59] {
1130
1259
  transform: rotate(90deg);
1131
1260
  }
1132
- .panel[data-v-0bdaa52f] {
1261
+ .panel[data-v-d6625e59] {
1133
1262
  position: absolute;
1134
- /* REMOVED: right: 60px; */
1135
- /* REMOVED: bottom: 0; */
1136
1263
  width: 250px;
1137
- background: white;
1264
+ background: var(--color-background-primary);
1138
1265
  border-radius: 12px;
1139
- box-shadow: 0 5px 25px rgba(0, 0, 0, 0.15);
1266
+ box-shadow: var(--shadow-xl);
1140
1267
  overflow: hidden;
1141
1268
  display: flex;
1142
1269
  flex-direction: column;
1143
1270
  backdrop-filter: blur(10px);
1144
- background: rgba(255, 255, 255, 0.98);
1271
+ border: 1px solid var(--color-border-primary);
1145
1272
  }
1146
- .panel-header[data-v-0bdaa52f] {
1273
+ .panel-header[data-v-d6625e59] {
1147
1274
  display: flex;
1148
1275
  justify-content: space-between;
1149
1276
  align-items: center;
1150
1277
  padding: 12px 16px;
1151
- border-bottom: 1px solid #f0f0f0;
1152
- background: linear-gradient(135deg, #667eea10 0%, #764ba210 100%);
1278
+ border-bottom: 1px solid var(--color-border-primary);
1279
+ background: var(--color-background-secondary);
1153
1280
  }
1154
- .panel-title[data-v-0bdaa52f] {
1281
+ .panel-title[data-v-d6625e59] {
1155
1282
  font-weight: 600;
1156
1283
  font-size: 16px;
1157
- color: #333;
1284
+ color: var(--color-text-primary);
1158
1285
  user-select: none;
1159
1286
  }
1160
- .close-btn[data-v-0bdaa52f] {
1287
+ .close-btn[data-v-d6625e59] {
1161
1288
  background: none;
1162
1289
  border: none;
1163
1290
  font-size: 20px;
1164
- color: #888;
1291
+ color: var(--color-text-muted);
1165
1292
  cursor: pointer;
1166
1293
  padding: 0;
1167
1294
  line-height: 1;
@@ -1173,20 +1300,20 @@ to {
1173
1300
  border-radius: 4px;
1174
1301
  transition: all 0.2s;
1175
1302
  }
1176
- .close-btn[data-v-0bdaa52f]:hover {
1177
- color: #333;
1178
- background: rgba(0, 0, 0, 0.05);
1303
+ .close-btn[data-v-d6625e59]:hover {
1304
+ color: var(--color-text-primary);
1305
+ background: var(--color-background-hover);
1179
1306
  }
1180
- .panel-body[data-v-0bdaa52f] {
1307
+ .panel-body[data-v-d6625e59] {
1181
1308
  padding: 16px;
1182
1309
  display: flex;
1183
1310
  flex-direction: column;
1184
1311
  gap: 10px;
1185
1312
  }
1186
- .control-btn[data-v-0bdaa52f] {
1187
- background-color: #f8f9fa;
1188
- color: #333;
1189
- border: 1px solid #e0e0e0;
1313
+ .control-btn[data-v-d6625e59] {
1314
+ background-color: var(--color-background-secondary);
1315
+ color: var(--color-text-primary);
1316
+ border: 1px solid var(--color-border-primary);
1190
1317
  border-radius: 8px;
1191
1318
  padding: 10px 16px;
1192
1319
  cursor: pointer;
@@ -1200,49 +1327,62 @@ to {
1200
1327
  position: relative;
1201
1328
  overflow: hidden;
1202
1329
  }
1203
- .control-btn[data-v-0bdaa52f]::before {
1330
+ .control-btn[data-v-d6625e59]::before {
1204
1331
  content: "";
1205
1332
  position: absolute;
1206
1333
  top: 0;
1207
1334
  left: -100%;
1208
1335
  width: 100%;
1209
1336
  height: 100%;
1210
- background: linear-gradient(90deg, transparent, rgba(102, 126, 234, 0.1), transparent);
1337
+ background: linear-gradient(
1338
+ 90deg,
1339
+ transparent,
1340
+ var(--color-focus-ring-purple-light),
1341
+ transparent
1342
+ );
1211
1343
  transition: left 0.5s;
1212
1344
  }
1213
- .control-btn[data-v-0bdaa52f]:hover::before {
1345
+ .control-btn[data-v-d6625e59]:hover::before {
1214
1346
  left: 100%;
1215
1347
  }
1216
- .control-btn[data-v-0bdaa52f]:hover {
1217
- background-color: #f0f2ff;
1218
- border-color: #667eea;
1348
+ .control-btn[data-v-d6625e59]:hover {
1349
+ background-color: var(--color-background-hover);
1350
+ border-color: var(--color-accent);
1219
1351
  transform: translateX(2px);
1220
1352
  }
1221
1353
 
1222
1354
  /* 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] {
1355
+ .control-btn.accent[data-v-d6625e59] {
1356
+ background: linear-gradient(
1357
+ 135deg,
1358
+ var(--color-focus-ring-purple-light) 0%,
1359
+ var(--color-focus-ring-purple-light) 100%
1360
+ );
1361
+ border-color: var(--color-gradient-purple-end);
1362
+ }
1363
+ .control-btn.accent[data-v-d6625e59]:hover {
1364
+ background: linear-gradient(
1365
+ 135deg,
1366
+ var(--color-focus-ring-purple) 0%,
1367
+ var(--color-focus-ring-purple) 100%
1368
+ );
1369
+ border-color: var(--color-gradient-purple-start);
1370
+ }
1371
+ .control-btn .icon[data-v-d6625e59] {
1232
1372
  font-size: 16px;
1233
1373
  min-width: 20px;
1234
1374
  }
1235
1375
 
1236
1376
  /* Vue Transition Styles */
1237
- .panel-fade-enter-active[data-v-0bdaa52f],
1238
- .panel-fade-leave-active[data-v-0bdaa52f] {
1377
+ .panel-fade-enter-active[data-v-d6625e59],
1378
+ .panel-fade-leave-active[data-v-d6625e59] {
1239
1379
  transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
1240
1380
  }
1241
- .panel-fade-enter-from[data-v-0bdaa52f] {
1381
+ .panel-fade-enter-from[data-v-d6625e59] {
1242
1382
  opacity: 0;
1243
1383
  transform: translateY(10px) scale(0.95);
1244
1384
  }
1245
- .panel-fade-leave-to[data-v-0bdaa52f] {
1385
+ .panel-fade-leave-to[data-v-d6625e59] {
1246
1386
  opacity: 0;
1247
1387
  transform: translateY(-10px) scale(0.95);
1248
1388
  }
@@ -10184,7 +10324,8 @@ input[class^=ag-][type=range]:disabled {
10184
10324
  left: 0;
10185
10325
  right: 0;
10186
10326
  bottom: 0;
10187
- background-color: rgba(255, 255, 255, 0.8);
10327
+ background-color: var(--color-background-primary);
10328
+ opacity: 0.9;
10188
10329
  display: flex;
10189
10330
  justify-content: center;
10190
10331
  align-items: center;
@@ -10193,8 +10334,8 @@ input[class^=ag-][type=range]:disabled {
10193
10334
  .spinner {
10194
10335
  width: 50px;
10195
10336
  height: 50px;
10196
- border: 5px solid #f3f3f3;
10197
- border-top: 5px solid #3498db;
10337
+ border: 5px solid var(--color-border-primary);
10338
+ border-top: 5px solid var(--color-accent);
10198
10339
  border-radius: 50%;
10199
10340
  animation: spin 1s linear infinite;
10200
10341
  }
@@ -10281,7 +10422,7 @@ to {
10281
10422
  }
10282
10423
  .outdated-data-banner p {
10283
10424
  margin: 0;
10284
- color: #78350f;
10425
+ color: var(--color-warning-darker);
10285
10426
  font-weight: 500;
10286
10427
  display: flex;
10287
10428
  align-items: center;
@@ -10297,9 +10438,13 @@ to {
10297
10438
  animation: pulse 2s ease-in-out infinite;
10298
10439
  }
10299
10440
  .refresh-link-button {
10300
- background: linear-gradient(135deg, #ffffff 0%, #fef3c7 100%);
10301
- border: 1px solid #f59e0b;
10302
- color: #92400e;
10441
+ background: linear-gradient(
10442
+ 135deg,
10443
+ var(--color-background-primary) 0%,
10444
+ var(--color-warning-light) 100%
10445
+ );
10446
+ border: 1px solid var(--color-warning);
10447
+ color: var(--color-warning-dark);
10303
10448
  border-radius: 6px;
10304
10449
  padding: 5px 14px;
10305
10450
  font-size: 13px;
@@ -10323,13 +10468,11 @@ to {
10323
10468
  transition: transform 0.3s ease;
10324
10469
  }
10325
10470
  .refresh-link-button:hover {
10326
- background: linear-gradient(135deg, #fbbf24 0%, #f59e0b 100%);
10327
- color: white;
10328
- border-color: #d97706;
10471
+ background: linear-gradient(135deg, var(--color-warning) 0%, var(--color-warning-hover) 100%);
10472
+ color: var(--color-text-inverse);
10473
+ border-color: var(--color-warning-hover);
10329
10474
  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);
10475
+ box-shadow: var(--shadow-md);
10333
10476
  }
10334
10477
  .refresh-link-button:hover::before {
10335
10478
  transform: rotate(180deg);
@@ -10341,15 +10484,15 @@ to {
10341
10484
  inset 0 1px 2px rgba(0, 0, 0, 0.1);
10342
10485
  }
10343
10486
  .dismiss-button {
10344
- background: rgba(255, 255, 255, 0.9);
10345
- border: 1px solid rgba(251, 191, 36, 0.3);
10487
+ background: var(--color-background-primary);
10488
+ border: 1px solid var(--color-warning);
10346
10489
  width: 24px;
10347
10490
  height: 24px;
10348
10491
  border-radius: 50%;
10349
10492
  font-size: 16px;
10350
10493
  line-height: 1;
10351
10494
  cursor: pointer;
10352
- color: #92400e;
10495
+ color: var(--color-warning-dark);
10353
10496
  display: flex;
10354
10497
  align-items: center;
10355
10498
  justify-content: center;
@@ -10360,11 +10503,11 @@ to {
10360
10503
  z-index: 1;
10361
10504
  }
10362
10505
  .dismiss-button:hover {
10363
- background: white;
10364
- border-color: #f59e0b;
10365
- color: #78350f;
10506
+ background: var(--color-background-hover);
10507
+ border-color: var(--color-warning);
10508
+ color: var(--color-warning-darker);
10366
10509
  transform: rotate(90deg) scale(1.1);
10367
- box-shadow: 0 3px 10px rgba(0, 0, 0, 0.1);
10510
+ box-shadow: var(--shadow-sm);
10368
10511
  }
10369
10512
  .dismiss-button:active {
10370
10513
  transform: rotate(90deg) scale(0.95);
@@ -10374,19 +10517,19 @@ to {
10374
10517
  .fetch-data-section {
10375
10518
  padding: 20px;
10376
10519
  text-align: center;
10377
- background-color: #f9fafb;
10378
- border: 1px solid #e5e7eb;
10520
+ background-color: var(--color-background-secondary);
10521
+ border: 1px solid var(--color-border-primary);
10379
10522
  border-top: none;
10380
10523
  border-radius: 0 0 8px 8px;
10381
10524
  }
10382
10525
  .fetch-data-section p {
10383
- color: #6b7280;
10526
+ color: var(--color-text-secondary);
10384
10527
  font-size: 14px;
10385
10528
  margin-bottom: 12px;
10386
10529
  }
10387
10530
  .fetch-data-button {
10388
- background-color: #3498db;
10389
- color: white;
10531
+ background-color: var(--color-button-secondary);
10532
+ color: var(--color-text-inverse);
10390
10533
  border: none;
10391
10534
  padding: 8px 20px;
10392
10535
  font-size: 14px;
@@ -10396,15 +10539,15 @@ to {
10396
10539
  position: relative;
10397
10540
  }
10398
10541
  .fetch-data-button:hover:not(:disabled) {
10399
- background-color: #2980b9;
10542
+ background-color: var(--color-button-secondary-hover);
10400
10543
  transform: translateY(-1px);
10401
- box-shadow: 0 4px 12px rgba(52, 152, 219, 0.3);
10544
+ box-shadow: var(--shadow-md);
10402
10545
  }
10403
10546
  .fetch-data-button:active:not(:disabled) {
10404
10547
  transform: translateY(0);
10405
10548
  }
10406
10549
  .fetch-data-button:disabled {
10407
- background-color: #93c5fd;
10550
+ background-color: var(--color-button-secondary-light);
10408
10551
  cursor: not-allowed;
10409
10552
  opacity: 0.7;
10410
10553
  }
@@ -10413,35 +10556,42 @@ to {
10413
10556
  .ag-theme-balham {
10414
10557
  max-width: 100%;
10415
10558
  position: relative;
10416
- --ag-odd-row-background-color: rgb(255, 255, 255);
10417
- --ag-row-background-color: rgb(255, 255, 255);
10418
- --ag-header-background-color: rgb(246, 247, 251);
10419
- }
10420
-
10421
- .hide-results-button[data-v-8ed83347] {
10559
+ --ag-background-color: var(--color-background-primary);
10560
+ --ag-odd-row-background-color: var(--color-background-primary);
10561
+ --ag-row-background-color: var(--color-background-primary);
10562
+ --ag-header-background-color: var(--color-background-secondary);
10563
+ --ag-header-foreground-color: var(--color-text-primary);
10564
+ --ag-foreground-color: var(--color-text-primary);
10565
+ --ag-border-color: var(--color-border-primary);
10566
+ --ag-secondary-foreground-color: var(--color-text-secondary);
10567
+ --ag-row-hover-color: var(--color-background-hover);
10568
+ --ag-selected-row-background-color: var(--color-background-selected);
10569
+ }
10570
+
10571
+ .hide-results-button[data-v-469df264] {
10422
10572
  margin-bottom: 10px;
10423
10573
  }
10424
- .flow-summary[data-v-8ed83347] {
10574
+ .flow-summary[data-v-469df264] {
10425
10575
  margin-left: 10px;
10426
10576
  font-weight: bold;
10427
- color: #333;
10577
+ color: var(--color-text-primary);
10428
10578
  }
10429
- .node-card[data-v-8ed83347] {
10579
+ .node-card[data-v-469df264] {
10430
10580
  padding: 15px;
10431
10581
  }
10432
- .node-details p[data-v-8ed83347] {
10582
+ .node-details p[data-v-469df264] {
10433
10583
  margin: 5px 0;
10434
10584
  }
10435
- .success[data-v-8ed83347] {
10436
- color: green;
10585
+ .success[data-v-469df264] {
10586
+ color: var(--color-success);
10437
10587
  }
10438
- .failure[data-v-8ed83347] {
10439
- color: red;
10588
+ .failure[data-v-469df264] {
10589
+ color: var(--color-danger);
10440
10590
  }
10441
- .running[data-v-8ed83347] {
10442
- animation: pulse-8ed83347 1.5s infinite;
10591
+ .running[data-v-469df264] {
10592
+ animation: pulse-469df264 1.5s infinite;
10443
10593
  }
10444
- @keyframes pulse-8ed83347 {
10594
+ @keyframes pulse-469df264 {
10445
10595
  0% {
10446
10596
  opacity: 1;
10447
10597
  }
@@ -10452,21 +10602,21 @@ to {
10452
10602
  opacity: 1;
10453
10603
  }
10454
10604
  }
10455
- .node-info[data-v-8ed83347] {
10605
+ .node-info[data-v-469df264] {
10456
10606
  display: flex;
10457
10607
  flex-direction: column;
10458
10608
  gap: 4px;
10459
10609
  }
10460
- .node-title[data-v-8ed83347] {
10610
+ .node-title[data-v-469df264] {
10461
10611
  margin: 0;
10462
10612
  font-size: 16px;
10463
10613
  font-weight: 600;
10464
- color: #303133;
10614
+ color: var(--color-text-primary);
10465
10615
  }
10466
- .node-description[data-v-8ed83347] {
10616
+ .node-description[data-v-469df264] {
10467
10617
  margin: 0;
10468
10618
  font-size: 14px;
10469
- color: #606266;
10619
+ color: var(--color-text-secondary);
10470
10620
  line-height: 1.4;
10471
10621
  overflow: hidden;
10472
10622
  text-overflow: ellipsis;
@@ -10474,62 +10624,62 @@ to {
10474
10624
  -webkit-box-orient: vertical;
10475
10625
  }
10476
10626
 
10477
- .log-container[data-v-9b3bdb24] {
10627
+ .log-container[data-v-0ab12658] {
10478
10628
  height: 100%;
10479
10629
  display: flex;
10480
10630
  flex-direction: column;
10481
- background-color: #1e1e1e;
10482
- color: #d4d4d4;
10483
- font-family: "Consolas", "Monaco", "Courier New", monospace;
10631
+ background-color: var(--color-code-bg);
10632
+ color: var(--color-code-text);
10633
+ font-family: var(--font-family-mono);
10484
10634
  overflow-y: auto;
10485
10635
  }
10486
- .log-header[data-v-9b3bdb24] {
10636
+ .log-header[data-v-0ab12658] {
10487
10637
  display: flex;
10488
10638
  justify-content: space-between;
10489
10639
  align-items: center;
10490
10640
  padding: 8px;
10491
- background-color: #252526;
10492
- border-bottom: 1px solid #333;
10641
+ background-color: var(--color-gray-800);
10642
+ border-bottom: 1px solid var(--color-border-primary);
10493
10643
  position: sticky;
10494
10644
  top: 0;
10495
10645
  z-index: 10; /* Ensures it stays above the logs */
10496
10646
  }
10497
- .log-status[data-v-9b3bdb24] {
10647
+ .log-status[data-v-0ab12658] {
10498
10648
  display: flex;
10499
10649
  align-items: center;
10500
10650
  gap: 8px;
10501
10651
  font-size: 0.9em;
10502
10652
  }
10503
- .status-indicator[data-v-9b3bdb24] {
10653
+ .status-indicator[data-v-0ab12658] {
10504
10654
  width: 8px;
10505
10655
  height: 8px;
10506
10656
  border-radius: 50%;
10507
- background-color: #666;
10657
+ background-color: var(--color-gray-500);
10508
10658
  }
10509
- .status-indicator.active[data-v-9b3bdb24] {
10510
- background-color: #4caf50;
10659
+ .status-indicator.active[data-v-0ab12658] {
10660
+ background-color: var(--color-success);
10511
10661
  }
10512
- .status-indicator.error[data-v-9b3bdb24] {
10513
- background-color: #f44336;
10662
+ .status-indicator.error[data-v-0ab12658] {
10663
+ background-color: var(--color-danger);
10514
10664
  }
10515
- .log-controls[data-v-9b3bdb24] {
10665
+ .log-controls[data-v-0ab12658] {
10516
10666
  display: flex;
10517
10667
  gap: 8px;
10518
10668
  }
10519
- .error-banner[data-v-9b3bdb24] {
10669
+ .error-banner[data-v-0ab12658] {
10520
10670
  padding: 8px 12px;
10521
- background-color: rgba(244, 67, 54, 0.2);
10522
- color: #f44336;
10671
+ background-color: var(--color-danger-light);
10672
+ color: var(--color-danger);
10523
10673
  font-size: 0.9em;
10524
- border-bottom: 1px solid #f44336;
10674
+ border-bottom: 1px solid var(--color-danger);
10525
10675
  }
10526
- .empty-state[data-v-9b3bdb24] {
10676
+ .empty-state[data-v-0ab12658] {
10527
10677
  padding: 16px;
10528
10678
  text-align: center;
10529
- color: #777;
10679
+ color: var(--color-text-muted);
10530
10680
  font-style: italic;
10531
10681
  }
10532
- .logs[data-v-9b3bdb24] {
10682
+ .logs[data-v-0ab12658] {
10533
10683
  flex-grow: 1;
10534
10684
  margin: 0;
10535
10685
  padding: 8px;
@@ -10539,63 +10689,32 @@ to {
10539
10689
  line-height: 1.8; /* Reduced line height */
10540
10690
  font-size: small;
10541
10691
  }
10542
- .logs.auto-scroll[data-v-9b3bdb24] {
10692
+ .logs.auto-scroll[data-v-0ab12658] {
10543
10693
  scroll-behavior: smooth;
10544
10694
  }
10545
- [data-v-9b3bdb24]::-webkit-scrollbar {
10695
+ [data-v-0ab12658]::-webkit-scrollbar {
10546
10696
  width: 12px;
10547
10697
  }
10548
- [data-v-9b3bdb24]::-webkit-scrollbar-track {
10549
- background: #1e1e1e;
10698
+ [data-v-0ab12658]::-webkit-scrollbar-track {
10699
+ background: var(--color-code-bg);
10550
10700
  }
10551
- [data-v-9b3bdb24]::-webkit-scrollbar-thumb {
10552
- background: #424242;
10701
+ [data-v-0ab12658]::-webkit-scrollbar-thumb {
10702
+ background: var(--color-gray-600);
10553
10703
  border-radius: 6px;
10554
- border: 3px solid #1e1e1e;
10704
+ border: 3px solid var(--color-code-bg);
10555
10705
  }
10556
- [data-v-9b3bdb24]::-webkit-scrollbar-thumb:hover {
10557
- background: #4f4f4f;
10706
+ [data-v-0ab12658]::-webkit-scrollbar-thumb:hover {
10707
+ background: var(--color-gray-500);
10558
10708
  }
10559
- .error-line[data-v-9b3bdb24] {
10560
- background-color: rgba(255, 0, 0, 0.2); /* Light red background */
10561
- color: #ffcdd2; /* Light red text for better readability */
10709
+ .error-line[data-v-0ab12658] {
10710
+ background-color: var(--color-danger-light);
10711
+ color: var(--color-danger);
10562
10712
  }
10563
10713
 
10564
- .context-menu[data-v-7db4e6fc] {
10565
- position: fixed;
10714
+ /* Context menu styles are now centralized in styles/components/_context-menu.css */
10715
+ /* Component-specific overrides only */
10716
+ .context-menu[data-v-9260496a] {
10566
10717
  min-width: 200px;
10567
- background-color: white;
10568
- border-radius: 4px;
10569
- box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2);
10570
- z-index: 10000;
10571
- overflow: hidden;
10572
- }
10573
- .context-menu-header[data-v-7db4e6fc] {
10574
- padding: 8px 12px;
10575
- font-weight: bold;
10576
- background-color: #f5f5f5;
10577
- border-bottom: 1px solid #e0e0e0;
10578
- font-size: 14px;
10579
- }
10580
- .context-menu-items[data-v-7db4e6fc] {
10581
- max-height: 300px;
10582
- overflow-y: auto;
10583
- }
10584
- .context-menu-item[data-v-7db4e6fc] {
10585
- display: flex;
10586
- align-items: center;
10587
- padding: 8px 12px;
10588
- cursor: pointer;
10589
- transition: background-color 0.2s;
10590
- font-size: 14px;
10591
- }
10592
- .context-menu-item[data-v-7db4e6fc]:hover {
10593
- background-color: #f5f5f5;
10594
- }
10595
- .context-menu-icon[data-v-7db4e6fc] {
10596
- margin-right: 8px;
10597
- width: 20px;
10598
- text-align: center;
10599
10718
  }
10600
10719
  .vue-flow {
10601
10720
  position: relative;
@@ -11086,7 +11205,13 @@ body,
11086
11205
  filter: invert(100%);
11087
11206
  }
11088
11207
  .animated-bg-gradient {
11089
- background: linear-gradient(122deg, #6f3381, #81c7d4, #fedfe1, #fffffb);
11208
+ background: linear-gradient(
11209
+ 122deg,
11210
+ var(--color-gradient-canvas-1),
11211
+ var(--color-gradient-canvas-2),
11212
+ var(--color-gradient-canvas-3),
11213
+ var(--color-gradient-canvas-4)
11214
+ );
11090
11215
  background-size: 800% 800%;
11091
11216
  -webkit-animation: gradient 4s ease infinite;
11092
11217
  -moz-animation: gradient 4s ease infinite;
@@ -11134,277 +11259,272 @@ main {
11134
11259
  position: relative;
11135
11260
  }
11136
11261
 
11137
- .dialog-footer[data-v-28bc5fb2] {
11262
+ .dialog-footer[data-v-e2fb0741] {
11138
11263
  display: flex;
11139
11264
  justify-content: flex-end;
11140
11265
  gap: 10px;
11141
11266
  }
11142
11267
 
11143
- .flow-tabs-container[data-v-0aac27a5] {
11268
+ .flow-tabs-container[data-v-1d0bca1e] {
11144
11269
  width: 100%;
11145
- font-family:
11146
- "Inter",
11147
- "Roboto",
11148
- -apple-system,
11149
- BlinkMacSystemFont,
11150
- sans-serif;
11270
+ font-family: var(--font-family-base);
11151
11271
  }
11152
- .flow-tabs[data-v-0aac27a5] {
11272
+ .flow-tabs[data-v-1d0bca1e] {
11153
11273
  display: flex;
11154
11274
  align-items: center;
11155
11275
  overflow-x: auto;
11156
- background-color: rgba(16, 24, 40, 0.02);
11157
- border-bottom: 1px solid rgba(16, 24, 40, 0.08);
11276
+ background-color: var(--color-background-secondary);
11277
+ border-bottom: 1px solid var(--color-border-primary);
11158
11278
  height: 42px;
11159
- padding-left: 4px;
11279
+ padding-left: var(--spacing-1);
11160
11280
  scrollbar-width: thin;
11161
11281
  }
11162
- .flow-tabs[data-v-0aac27a5]::-webkit-scrollbar {
11282
+ .flow-tabs[data-v-1d0bca1e]::-webkit-scrollbar {
11163
11283
  height: 4px;
11164
11284
  }
11165
- .flow-tabs[data-v-0aac27a5]::-webkit-scrollbar-track {
11285
+ .flow-tabs[data-v-1d0bca1e]::-webkit-scrollbar-track {
11166
11286
  background: transparent;
11167
11287
  }
11168
- .flow-tabs[data-v-0aac27a5]::-webkit-scrollbar-thumb {
11169
- background-color: rgba(16, 24, 40, 0.2);
11170
- border-radius: 2px;
11288
+ .flow-tabs[data-v-1d0bca1e]::-webkit-scrollbar-thumb {
11289
+ background-color: var(--color-gray-300);
11290
+ border-radius: var(--border-radius-full);
11171
11291
  }
11172
- .flow-tab[data-v-0aac27a5] {
11292
+ .flow-tab[data-v-1d0bca1e] {
11173
11293
  display: flex;
11174
11294
  align-items: center;
11175
- padding: 0 16px;
11295
+ padding: 0 var(--spacing-4);
11176
11296
  height: 38px;
11177
11297
  background-color: transparent;
11178
- border-right: 1px solid rgba(16, 24, 40, 0.06);
11298
+ border-right: 1px solid var(--color-border-light);
11179
11299
  cursor: pointer;
11180
11300
  min-width: 120px;
11181
11301
  max-width: 180px;
11182
11302
  position: relative;
11183
11303
  user-select: none;
11184
- border-radius: 6px 6px 0 0;
11304
+ border-radius: var(--border-radius-md) var(--border-radius-md) 0 0;
11185
11305
  margin-right: 1px;
11186
- transition: all 0.2s ease;
11306
+ transition: all var(--transition-fast);
11187
11307
  }
11188
- .flow-tab.active[data-v-0aac27a5] {
11189
- background-color: #fff;
11190
- border-top: 2px solid rgb(0, 34, 60);
11191
- box-shadow: 0 2px 5px rgba(16, 24, 40, 0.04);
11308
+ .flow-tab.active[data-v-1d0bca1e] {
11309
+ background-color: var(--color-background-primary);
11310
+ border-top: 2px solid var(--primary-blue);
11311
+ box-shadow: var(--shadow-xs);
11192
11312
  z-index: 1;
11193
11313
  }
11194
- .flow-tab[data-v-0aac27a5]:not(.active):hover {
11195
- background-color: rgba(19, 37, 73, 0.164);
11314
+ .flow-tab[data-v-1d0bca1e]:not(.active):hover {
11315
+ background-color: var(--color-background-hover);
11196
11316
  }
11197
- .tab-content[data-v-0aac27a5] {
11317
+ .tab-content[data-v-1d0bca1e] {
11198
11318
  display: flex;
11199
11319
  align-items: center;
11200
- gap: 8px;
11320
+ gap: var(--spacing-2);
11201
11321
  width: calc(100% - 20px);
11202
11322
  overflow: hidden;
11203
11323
  }
11204
- .tab-icon[data-v-0aac27a5] {
11205
- font-size: 16px;
11206
- color: rgb(2, 27, 45);
11324
+ .tab-icon[data-v-1d0bca1e] {
11325
+ font-size: var(--font-size-xl);
11326
+ color: var(--primary-blue);
11207
11327
  flex-shrink: 0;
11208
11328
  }
11209
- .tab-name[data-v-0aac27a5] {
11329
+ .tab-name[data-v-1d0bca1e] {
11210
11330
  white-space: nowrap;
11211
11331
  overflow: hidden;
11212
11332
  text-overflow: ellipsis;
11213
- font-size: 13px;
11214
- font-weight: 500;
11333
+ font-size: var(--font-size-md);
11334
+ font-weight: var(--font-weight-medium);
11215
11335
  letter-spacing: 0.01em;
11216
- color: rgba(16, 24, 40, 0.8);
11336
+ color: var(--color-text-secondary);
11217
11337
  }
11218
- .active .tab-name[data-v-0aac27a5] {
11219
- color: rgba(16, 24, 40, 0.95);
11338
+ .active .tab-name[data-v-1d0bca1e] {
11339
+ color: var(--color-text-primary);
11220
11340
  }
11221
- .close-icon[data-v-0aac27a5] {
11222
- font-size: 15px;
11223
- color: rgba(16, 24, 40, 0.4);
11341
+ .close-icon[data-v-1d0bca1e] {
11342
+ font-size: var(--font-size-lg);
11343
+ color: var(--color-text-muted);
11224
11344
  opacity: 0;
11225
11345
  position: absolute;
11226
- right: 8px;
11227
- border-radius: 50%;
11346
+ right: var(--spacing-2);
11347
+ border-radius: var(--border-radius-full);
11228
11348
  padding: 2px;
11229
- transition: all 0.15s ease;
11349
+ transition: all var(--transition-fast);
11230
11350
  transform: scale(0.9);
11231
11351
  }
11232
- .flow-tab:hover .close-icon[data-v-0aac27a5] {
11352
+ .flow-tab:hover .close-icon[data-v-1d0bca1e] {
11233
11353
  opacity: 1;
11234
11354
  }
11235
- .close-icon[data-v-0aac27a5]:hover {
11236
- background-color: rgba(16, 24, 40, 0.06);
11237
- color: rgba(16, 24, 40, 0.7);
11355
+ .close-icon[data-v-1d0bca1e]:hover {
11356
+ background-color: var(--color-background-tertiary);
11357
+ color: var(--color-text-secondary);
11238
11358
  transform: scale(1);
11239
11359
  }
11240
- .active .close-icon[data-v-0aac27a5]:hover {
11241
- background-color: rgba(80, 70, 230, 0.1);
11242
- color: rgba(80, 70, 230, 0.9);
11360
+ .active .close-icon[data-v-1d0bca1e]:hover {
11361
+ background-color: var(--color-background-hover);
11362
+ color: var(--color-primary);
11243
11363
  }
11244
11364
 
11245
11365
  /* New flow tab styling */
11246
- .new-flow-tab[data-v-0aac27a5] {
11366
+ .new-flow-tab[data-v-1d0bca1e] {
11247
11367
  min-width: 40px;
11248
11368
  max-width: 40px;
11249
11369
  display: flex;
11250
11370
  justify-content: center;
11251
11371
  align-items: center;
11252
- color: rgba(80, 70, 230, 0.8);
11372
+ color: var(--color-primary);
11253
11373
  }
11254
- .new-flow-tab[data-v-0aac27a5]:hover {
11255
- background-color: rgba(80, 70, 230, 0.1);
11374
+ .new-flow-tab[data-v-1d0bca1e]:hover {
11375
+ background-color: var(--color-background-hover);
11256
11376
  }
11257
11377
 
11258
- .canvas[data-v-24dbaac4] {
11259
- height: calc(100vh - 100px); /* Adjusted for potentially taller header */
11378
+ .canvas[data-v-b6db3c6c] {
11379
+ height: calc(100vh - 100px);
11260
11380
  }
11261
- .header[data-v-24dbaac4] {
11262
- background-color: #f5f5f5;
11263
- border-bottom: 1px solid #ececec;
11381
+ .header[data-v-b6db3c6c] {
11382
+ background-color: var(--color-background-secondary);
11383
+ border-bottom: 1px solid var(--color-border-primary);
11264
11384
  }
11265
11385
 
11266
11386
  /* Desktop layout - single row */
11267
11387
  @media (min-width: 1025px) {
11268
- .header[data-v-24dbaac4] {
11388
+ .header[data-v-b6db3c6c] {
11269
11389
  display: flex;
11270
11390
  justify-content: space-between;
11271
11391
  align-items: stretch;
11272
11392
  height: 50px;
11273
11393
  }
11274
- .header-top[data-v-24dbaac4] {
11275
- display: contents; /* Makes children behave as direct children of .header */
11394
+ .header-top[data-v-b6db3c6c] {
11395
+ display: contents;
11276
11396
  }
11277
- .header-bottom[data-v-24dbaac4] {
11397
+ .header-bottom[data-v-b6db3c6c] {
11278
11398
  display: contents;
11279
11399
  }
11280
- .left-section[data-v-24dbaac4] {
11400
+ .left-section[data-v-b6db3c6c] {
11281
11401
  min-width: 250px;
11282
- padding: 0 16px;
11402
+ padding: 0 var(--spacing-4);
11283
11403
  display: flex;
11284
11404
  align-items: center;
11285
11405
  }
11286
- .middle-section[data-v-24dbaac4] {
11406
+ .middle-section[data-v-b6db3c6c] {
11287
11407
  flex: 1;
11288
11408
  display: flex;
11289
11409
  align-items: center;
11290
11410
  overflow: hidden;
11291
11411
  }
11292
- .right-section[data-v-24dbaac4] {
11412
+ .right-section[data-v-b6db3c6c] {
11293
11413
  min-width: 150px;
11294
- padding: 0 16px;
11414
+ padding: 0 var(--spacing-4);
11295
11415
  display: flex;
11296
11416
  align-items: center;
11297
11417
  justify-content: flex-end;
11298
11418
  }
11299
- .canvas[data-v-24dbaac4] {
11419
+ .canvas[data-v-b6db3c6c] {
11300
11420
  height: calc(100vh - 50px);
11301
11421
  }
11302
11422
  }
11303
11423
 
11304
11424
  /* Mobile/tablet layout - stacked */
11305
11425
  @media (max-width: 1024px) {
11306
- .header[data-v-24dbaac4] {
11426
+ .header[data-v-b6db3c6c] {
11307
11427
  height: auto;
11308
11428
  min-height: 80px;
11309
11429
  }
11310
- .header-top[data-v-24dbaac4] {
11430
+ .header-top[data-v-b6db3c6c] {
11311
11431
  display: flex;
11312
11432
  justify-content: space-between;
11313
11433
  align-items: center;
11314
11434
  height: 50px;
11315
- border-bottom: 1px solid #e5e7eb;
11435
+ border-bottom: 1px solid var(--color-border-primary);
11316
11436
  }
11317
- .header-bottom[data-v-24dbaac4] {
11437
+ .header-bottom[data-v-b6db3c6c] {
11318
11438
  display: flex;
11319
11439
  height: 40px;
11320
- padding: 0 8px;
11440
+ padding: 0 var(--spacing-2);
11321
11441
  }
11322
- .left-section[data-v-24dbaac4] {
11323
- padding: 0 12px;
11442
+ .left-section[data-v-b6db3c6c] {
11443
+ padding: 0 var(--spacing-3);
11324
11444
  display: flex;
11325
11445
  align-items: center;
11326
11446
  }
11327
- .middle-section[data-v-24dbaac4] {
11447
+ .middle-section[data-v-b6db3c6c] {
11328
11448
  flex: 1;
11329
11449
  display: flex;
11330
11450
  align-items: center;
11331
11451
  overflow: hidden;
11332
- padding: 0 8px;
11452
+ padding: 0 var(--spacing-2);
11333
11453
  }
11334
- .right-section[data-v-24dbaac4] {
11335
- padding: 0 12px;
11454
+ .right-section[data-v-b6db3c6c] {
11455
+ padding: 0 var(--spacing-3);
11336
11456
  display: flex;
11337
11457
  align-items: center;
11338
11458
  justify-content: flex-end;
11339
11459
  }
11340
- .canvas[data-v-24dbaac4] {
11460
+ .canvas[data-v-b6db3c6c] {
11341
11461
  height: calc(100vh - 90px);
11342
11462
  }
11343
11463
  }
11344
11464
 
11345
11465
  /* Very narrow screens */
11346
11466
  @media (max-width: 480px) {
11347
- .left-section[data-v-24dbaac4] {
11348
- padding: 0 8px;
11467
+ .left-section[data-v-b6db3c6c] {
11468
+ padding: 0 var(--spacing-2);
11349
11469
  min-width: auto;
11350
11470
  }
11351
- .right-section[data-v-24dbaac4] {
11352
- padding: 0 8px;
11471
+ .right-section[data-v-b6db3c6c] {
11472
+ padding: 0 var(--spacing-2);
11353
11473
  min-width: auto;
11354
11474
  }
11355
- .middle-section[data-v-24dbaac4] {
11356
- padding: 0 4px;
11475
+ .middle-section[data-v-b6db3c6c] {
11476
+ padding: 0 var(--spacing-1);
11357
11477
  }
11358
11478
  }
11359
11479
 
11360
11480
  /* Loading state styles */
11361
- .loading-state[data-v-24dbaac4] {
11481
+ .loading-state[data-v-b6db3c6c] {
11362
11482
  height: calc(100vh - 50px);
11363
11483
  display: flex;
11364
11484
  justify-content: center;
11365
11485
  align-items: center;
11366
- background-color: #f9fafb;
11486
+ background-color: var(--color-background-secondary);
11367
11487
  }
11368
- .loading-state-content[data-v-24dbaac4] {
11488
+ .loading-state-content[data-v-b6db3c6c] {
11369
11489
  text-align: center;
11370
- padding: 2rem;
11490
+ padding: var(--spacing-8);
11371
11491
  }
11372
- .loading-state-content p[data-v-24dbaac4] {
11373
- color: #6b7280;
11374
- margin-top: 1rem;
11492
+ .loading-state-content p[data-v-b6db3c6c] {
11493
+ color: var(--color-text-secondary);
11494
+ margin-top: var(--spacing-4);
11375
11495
  }
11376
11496
 
11377
11497
  /* Empty state styles */
11378
- .empty-state[data-v-24dbaac4] {
11498
+ .empty-state[data-v-b6db3c6c] {
11379
11499
  height: calc(100vh - 50px);
11380
11500
  display: flex;
11381
11501
  justify-content: center;
11382
11502
  align-items: center;
11383
- background-color: #f9fafb;
11503
+ background-color: var(--color-background-secondary);
11384
11504
  }
11385
- .empty-state-content[data-v-24dbaac4] {
11505
+ .empty-state-content[data-v-b6db3c6c] {
11386
11506
  text-align: center;
11387
- padding: 2rem;
11507
+ padding: var(--spacing-8);
11388
11508
  }
11389
- .empty-icon[data-v-24dbaac4] {
11390
- font-size: 64px;
11391
- color: #9ca3af;
11392
- margin-bottom: 1rem;
11509
+ .empty-icon[data-v-b6db3c6c] {
11510
+ font-size: var(--font-size-4xl);
11511
+ color: var(--color-gray-400);
11512
+ margin-bottom: var(--spacing-4);
11393
11513
  }
11394
- .empty-state h2[data-v-24dbaac4] {
11395
- color: #374151;
11396
- margin-bottom: 0.5rem;
11514
+ .empty-state h2[data-v-b6db3c6c] {
11515
+ color: var(--color-text-primary);
11516
+ margin-bottom: var(--spacing-2);
11397
11517
  }
11398
- .empty-state p[data-v-24dbaac4] {
11399
- color: #6b7280;
11400
- margin-bottom: 1.5rem;
11518
+ .empty-state p[data-v-b6db3c6c] {
11519
+ color: var(--color-text-secondary);
11520
+ margin-bottom: var(--spacing-6);
11401
11521
  }
11402
- .action-button[data-v-24dbaac4] {
11522
+ .action-button[data-v-b6db3c6c] {
11403
11523
  display: inline-flex;
11404
11524
  align-items: center;
11405
- gap: 0.5rem;
11406
- margin: 0 0.5rem;
11525
+ gap: var(--spacing-2);
11526
+ margin: 0 var(--spacing-2);
11407
11527
  }
11408
- .action-button .material-icons[data-v-24dbaac4] {
11409
- font-size: 18px;
11528
+ .action-button .material-icons[data-v-b6db3c6c] {
11529
+ font-size: var(--font-size-2xl);
11410
11530
  }