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