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