Flowfile 0.5.3__py3-none-any.whl → 0.5.6__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 (153) hide show
  1. flowfile/__init__.py +16 -0
  2. flowfile/__main__.py +94 -1
  3. flowfile/web/static/assets/{AdminView-49392a9a.js → AdminView-c2c7942b.js} +1 -1
  4. flowfile/web/static/assets/{CloudConnectionView-f13f202b.js → CloudConnectionView-7a3042c6.js} +4 -4
  5. flowfile/web/static/assets/{CloudConnectionView-36bcd6df.css → CloudConnectionView-cf85f943.css} +17 -17
  6. flowfile/web/static/assets/{CloudStorageReader-0023d4a5.js → CloudStorageReader-709c4037.js} +8 -8
  7. flowfile/web/static/assets/{CloudStorageWriter-8e781e11.js → CloudStorageWriter-604c51a8.js} +8 -8
  8. flowfile/web/static/assets/ColumnActionInput-c44b7aee.css +159 -0
  9. flowfile/web/static/assets/ColumnActionInput-d63d6746.js +330 -0
  10. flowfile/web/static/assets/{ColumnSelector-8ad68ea9.js → ColumnSelector-0c8cd1cd.js} +1 -1
  11. flowfile/web/static/assets/ContextMenu-366bf1b4.js +9 -0
  12. flowfile/web/static/assets/ContextMenu-85cf5b44.js +9 -0
  13. flowfile/web/static/assets/ContextMenu-9d28ae6d.js +9 -0
  14. flowfile/web/static/assets/ContextMenu.vue_vue_type_script_setup_true_lang-774c517c.js +59 -0
  15. flowfile/web/static/assets/{CrossJoin-03df6938.js → CrossJoin-38e5b99a.js} +9 -9
  16. flowfile/web/static/assets/{CustomNode-8479239b.js → CustomNode-76e8f3f5.js} +27 -20
  17. flowfile/web/static/assets/CustomNode-edb9b939.css +42 -0
  18. flowfile/web/static/assets/{DatabaseConnectionSettings-869e3efd.js → DatabaseConnectionSettings-38155669.js} +4 -4
  19. flowfile/web/static/assets/{DatabaseConnectionSettings-e91df89a.css → DatabaseConnectionSettings-c20a1e16.css} +22 -20
  20. flowfile/web/static/assets/{DatabaseReader-c58b9552.js → DatabaseReader-2e549c8f.js} +13 -13
  21. flowfile/web/static/assets/{DatabaseReader-36898a00.css → DatabaseReader-5bf8c75b.css} +39 -44
  22. flowfile/web/static/assets/{DatabaseView-d26a9140.js → DatabaseView-dc877c29.js} +2 -2
  23. flowfile/web/static/assets/{DatabaseWriter-217a99f1.css → DatabaseWriter-bdcf2c8b.css} +27 -25
  24. flowfile/web/static/assets/{DatabaseWriter-4d05ddc7.js → DatabaseWriter-ffb91864.js} +12 -12
  25. flowfile/web/static/assets/{DesignerView-a6d0ee84.css → DesignerView-71d4e9a1.css} +429 -376
  26. flowfile/web/static/assets/{DesignerView-e6f5c0e8.js → DesignerView-a4466dab.js} +338 -183
  27. flowfile/web/static/assets/{DocumentationView-2e78ef1b.js → DocumentationView-979afc84.js} +3 -3
  28. flowfile/web/static/assets/{DocumentationView-fd46c656.css → DocumentationView-9ea6e871.css} +9 -9
  29. flowfile/web/static/assets/{ExploreData-7b54caca.js → ExploreData-e4b92aaf.js} +7 -7
  30. flowfile/web/static/assets/{ExternalSource-47ab05a3.css → ExternalSource-7ac7373f.css} +17 -17
  31. flowfile/web/static/assets/{ExternalSource-3fa399b2.js → ExternalSource-d08e7227.js} +9 -9
  32. flowfile/web/static/assets/{Filter-8cbbdbf3.js → Filter-7add806d.js} +9 -9
  33. flowfile/web/static/assets/{Formula-aac42b1e.js → Formula-36ab24d2.js} +9 -9
  34. flowfile/web/static/assets/{FuzzyMatch-cd9bbfca.js → FuzzyMatch-cc01bb04.js} +10 -10
  35. flowfile/web/static/assets/{GraphSolver-c24dec17.css → GraphSolver-4b4d7db9.css} +4 -4
  36. flowfile/web/static/assets/{GraphSolver-c7e6780e.js → GraphSolver-4fb98f3b.js} +11 -11
  37. flowfile/web/static/assets/GroupBy-5792782d.css +9 -0
  38. flowfile/web/static/assets/{GroupBy-93c5d22b.js → GroupBy-b3c8f429.js} +9 -9
  39. flowfile/web/static/assets/{Join-a19b2de2.js → Join-096b7b26.js} +10 -10
  40. flowfile/web/static/assets/{LoginView-0df4ed0a.js → LoginView-c33a246a.js} +1 -1
  41. flowfile/web/static/assets/{ManualInput-3702e677.css → ManualInput-39111f19.css} +48 -48
  42. flowfile/web/static/assets/{ManualInput-8d3374b2.js → ManualInput-7307e9b1.js} +55 -13
  43. flowfile/web/static/assets/{MultiSelect-ad1b6243.js → MultiSelect-14822c48.js} +2 -2
  44. flowfile/web/static/assets/{MultiSelect.vue_vue_type_script_setup_true_lang-e278950d.js → MultiSelect.vue_vue_type_script_setup_true_lang-90c4d340.js} +1 -1
  45. flowfile/web/static/assets/{NodeDesigner-40b647c9.js → NodeDesigner-5036c392.js} +171 -69
  46. flowfile/web/static/assets/{NodeDesigner-5f53be3f.css → NodeDesigner-94cd4dd3.css} +190 -190
  47. flowfile/web/static/assets/{NumericInput-7100234c.js → NumericInput-15cf3b72.js} +2 -2
  48. flowfile/web/static/assets/{NumericInput.vue_vue_type_script_setup_true_lang-5130219f.js → NumericInput.vue_vue_type_script_setup_true_lang-91e679d7.js} +1 -1
  49. flowfile/web/static/assets/{Output-f5efd2aa.js → Output-1f8ed42c.js} +13 -12
  50. flowfile/web/static/assets/{Output-35e97000.css → Output-692dd25d.css} +10 -10
  51. flowfile/web/static/assets/{Pivot-d981d23c.js → Pivot-0e153f4e.js} +10 -10
  52. flowfile/web/static/assets/{PivotValidation-63de1f73.js → PivotValidation-5a4f7c79.js} +1 -1
  53. flowfile/web/static/assets/{PivotValidation-39386e95.js → PivotValidation-81ec2a33.js} +1 -1
  54. flowfile/web/static/assets/{PolarsCode-f9d69217.js → PolarsCode-a39f15ac.js} +7 -7
  55. flowfile/web/static/assets/PopOver-ddcfe4f6.js +138 -0
  56. flowfile/web/static/assets/{Read-aec2e377.js → Read-39b63932.js} +15 -14
  57. flowfile/web/static/assets/{Read-36e7bd51.css → Read-90f366bc.css} +13 -13
  58. flowfile/web/static/assets/{RecordCount-78ed6845.js → RecordCount-e9048ccd.js} +6 -6
  59. flowfile/web/static/assets/{RecordId-2156e890.js → RecordId-ad02521d.js} +9 -9
  60. flowfile/web/static/assets/{SQLQueryComponent-48c72f5b.js → SQLQueryComponent-2eeecf0b.js} +3 -3
  61. flowfile/web/static/assets/SQLQueryComponent-edb90b98.css +29 -0
  62. flowfile/web/static/assets/{Sample-1352ca74.js → Sample-9a68c23d.js} +6 -6
  63. flowfile/web/static/assets/{SecretSelector-22b5ff89.js → SecretSelector-2429f35a.js} +2 -2
  64. flowfile/web/static/assets/{SecretsView-17df66ee.js → SecretsView-c6afc915.js} +2 -2
  65. flowfile/web/static/assets/{Select-0aee4c54.js → Select-fcd002b6.js} +9 -9
  66. flowfile/web/static/assets/{SettingsSection-cd341bb6.js → SettingsSection-5ce15962.js} +1 -1
  67. flowfile/web/static/assets/{SettingsSection-0784e157.js → SettingsSection-c6b1362c.js} +1 -1
  68. flowfile/web/static/assets/{SettingsSection-f2002a6d.js → SettingsSection-cebb91d5.js} +1 -1
  69. flowfile/web/static/assets/SetupView-2d12e01f.js +160 -0
  70. flowfile/web/static/assets/SetupView-ec26f76a.css +230 -0
  71. flowfile/web/static/assets/{SingleSelect-460cc0ea.js → SingleSelect-b67de4eb.js} +2 -2
  72. flowfile/web/static/assets/{SingleSelect.vue_vue_type_script_setup_true_lang-30741bb2.js → SingleSelect.vue_vue_type_script_setup_true_lang-eedb70eb.js} +1 -1
  73. flowfile/web/static/assets/{SliderInput-5d926864.js → SliderInput-fd8134ac.js} +1 -1
  74. flowfile/web/static/assets/Sort-4abb7fae.css +9 -0
  75. flowfile/web/static/assets/{Sort-3cdc971b.js → Sort-c005a573.js} +9 -9
  76. flowfile/web/static/assets/{TextInput-a2d0bfbd.js → TextInput-1bb31dab.js} +2 -2
  77. flowfile/web/static/assets/{TextInput.vue_vue_type_script_setup_true_lang-abad1ca2.js → TextInput.vue_vue_type_script_setup_true_lang-a51fe730.js} +1 -1
  78. flowfile/web/static/assets/{TextToRows-918945f7.js → TextToRows-4f363753.js} +9 -9
  79. flowfile/web/static/assets/{ToggleSwitch-f0ef5196.js → ToggleSwitch-ca0f2e5e.js} +2 -2
  80. flowfile/web/static/assets/{ToggleSwitch.vue_vue_type_script_setup_true_lang-5605c793.js → ToggleSwitch.vue_vue_type_script_setup_true_lang-49aa41d8.js} +1 -1
  81. flowfile/web/static/assets/{UnavailableFields-54d2f518.css → UnavailableFields-394a1f78.css} +13 -13
  82. flowfile/web/static/assets/{UnavailableFields-bdad6144.js → UnavailableFields-f6147968.js} +4 -4
  83. flowfile/web/static/assets/{Union-e8ab8c86.js → Union-c65f17b7.js} +6 -6
  84. flowfile/web/static/assets/Unique-2b705521.css +3 -0
  85. flowfile/web/static/assets/{Unique-8cd4f976.js → Unique-a1d96fb2.js} +12 -12
  86. flowfile/web/static/assets/{Unpivot-710a2948.css → Unpivot-b6ad6427.css} +6 -6
  87. flowfile/web/static/assets/{Unpivot-8da14095.js → Unpivot-c2657ff3.js} +11 -11
  88. flowfile/web/static/assets/{UnpivotValidation-6f7d89ff.js → UnpivotValidation-28e29a3b.js} +1 -1
  89. flowfile/web/static/assets/{VueGraphicWalker-3fb312e1.js → VueGraphicWalker-2fc3ddd4.js} +1 -1
  90. flowfile/web/static/assets/{api-24483f0d.js → api-df48ec50.js} +1 -1
  91. flowfile/web/static/assets/{api-8b81fa73.js → api-ee542cf7.js} +1 -1
  92. flowfile/web/static/assets/{dropDown-3d8dc5fa.css → dropDown-1d6acbd9.css} +26 -26
  93. flowfile/web/static/assets/{dropDown-ac0fda9d.js → dropDown-7576a76a.js} +3 -3
  94. flowfile/web/static/assets/{fullEditor-5497a84a.js → fullEditor-7583bef5.js} +3 -3
  95. flowfile/web/static/assets/{fullEditor-a0be62b3.css → fullEditor-fe9f7e18.css} +3 -3
  96. flowfile/web/static/assets/{genericNodeSettings-99014e1d.js → genericNodeSettings-0155288b.js} +2 -3
  97. flowfile/web/static/assets/{index-3ba44389.js → index-057d770d.js} +2 -2
  98. flowfile/web/static/assets/{index-07dda503.js → index-aeec439d.js} +1 -1
  99. flowfile/web/static/assets/{index-fb6493ae.js → index-ca6799de.js} +2293 -196
  100. flowfile/web/static/assets/{index-e6289dd0.css → index-d60c9dd4.css} +560 -10
  101. flowfile/web/static/assets/nodeInput-d478b9ac.js +2 -0
  102. flowfile/web/static/assets/{outputCsv-8f8ba42d.js → outputCsv-c492b15e.js} +3 -3
  103. flowfile/web/static/assets/outputCsv-cc84e09f.css +2499 -0
  104. flowfile/web/static/assets/{outputExcel-393f4fef.js → outputExcel-13bfa10f.js} +1 -1
  105. flowfile/web/static/assets/{outputParquet-07c81f65.js → outputParquet-9be1523a.js} +1 -1
  106. flowfile/web/static/assets/{readCsv-07f6d9ad.js → readCsv-5a49a8c9.js} +1 -1
  107. flowfile/web/static/assets/{readExcel-ed69bc8f.js → readExcel-27c30ad8.js} +3 -3
  108. flowfile/web/static/assets/{readParquet-e3ed4528.js → readParquet-446bde68.js} +1 -1
  109. flowfile/web/static/assets/{secrets.api-002e7d7e.js → secrets.api-34431884.js} +1 -1
  110. flowfile/web/static/assets/{selectDynamic-80b92899.js → selectDynamic-5754a2b1.js} +2 -3
  111. flowfile/web/static/assets/{vue-codemirror.esm-0965f39f.js → vue-codemirror.esm-8f46fb36.js} +1 -1
  112. flowfile/web/static/assets/{vue-content-loader.es-c506ad97.js → vue-content-loader.es-808fe33a.js} +1 -1
  113. flowfile/web/static/index.html +2 -2
  114. {flowfile-0.5.3.dist-info → flowfile-0.5.6.dist-info}/METADATA +2 -2
  115. {flowfile-0.5.3.dist-info → flowfile-0.5.6.dist-info}/RECORD +139 -134
  116. flowfile_core/auth/secrets.py +56 -13
  117. flowfile_core/fileExplorer/funcs.py +26 -4
  118. flowfile_core/flowfile/code_generator/__init__.py +11 -0
  119. flowfile_core/flowfile/code_generator/code_generator.py +347 -2
  120. flowfile_core/flowfile/flow_data_engine/flow_data_engine.py +13 -1
  121. flowfile_core/flowfile/flow_data_engine/subprocess_operations/subprocess_operations.py +12 -0
  122. flowfile_core/flowfile/flow_graph.py +2 -0
  123. flowfile_core/flowfile/flow_node/flow_node.py +52 -28
  124. flowfile_core/flowfile/node_designer/__init__.py +4 -0
  125. flowfile_core/flowfile/node_designer/ui_components.py +144 -1
  126. flowfile_core/main.py +2 -4
  127. flowfile_core/routes/public.py +43 -1
  128. flowfile_core/schemas/cloud_storage_schemas.py +39 -15
  129. flowfile_core/secret_manager/secret_manager.py +107 -6
  130. flowfile_frame/__init__.py +11 -0
  131. flowfile_frame/database/__init__.py +36 -0
  132. flowfile_frame/database/connection_manager.py +205 -0
  133. flowfile_frame/database/frame_helpers.py +249 -0
  134. flowfile_worker/configs.py +31 -15
  135. flowfile_worker/secrets.py +105 -15
  136. flowfile_worker/spawner.py +10 -6
  137. flowfile/web/static/assets/ContextMenu-26d4dd27.css +0 -26
  138. flowfile/web/static/assets/ContextMenu-31ee57f0.js +0 -41
  139. flowfile/web/static/assets/ContextMenu-69a74055.js +0 -41
  140. flowfile/web/static/assets/ContextMenu-8e2051c6.js +0 -41
  141. flowfile/web/static/assets/ContextMenu-8ec1729e.css +0 -26
  142. flowfile/web/static/assets/ContextMenu-9b310c60.css +0 -26
  143. flowfile/web/static/assets/CustomNode-59e99a86.css +0 -32
  144. flowfile/web/static/assets/GroupBy-be7ac0bf.css +0 -51
  145. flowfile/web/static/assets/PopOver-b22f049e.js +0 -939
  146. flowfile/web/static/assets/SQLQueryComponent-1c2f26b4.css +0 -27
  147. flowfile/web/static/assets/Sort-8a871341.css +0 -51
  148. flowfile/web/static/assets/Unique-9fb2f567.css +0 -51
  149. flowfile/web/static/assets/nodeInput-0eb13f1a.js +0 -2
  150. flowfile/web/static/assets/outputCsv-b9a072af.css +0 -2499
  151. {flowfile-0.5.3.dist-info → flowfile-0.5.6.dist-info}/WHEEL +0 -0
  152. {flowfile-0.5.3.dist-info → flowfile-0.5.6.dist-info}/entry_points.txt +0 -0
  153. {flowfile-0.5.3.dist-info → flowfile-0.5.6.dist-info}/licenses/LICENSE +0 -0
@@ -158,6 +158,317 @@
158
158
  .password-requirements li.valid i[data-v-79657dc0] {
159
159
  color: var(--color-success);
160
160
  }
161
+
162
+ .tutorial-tooltip[data-v-4c5588cd] {
163
+ width: 380px;
164
+ max-width: calc(100vw - 40px);
165
+ background: var(--color-background-primary, #ffffff);
166
+ border-radius: 12px;
167
+ box-shadow:
168
+ 0 20px 40px rgba(0, 0, 0, 0.2),
169
+ 0 0 0 1px rgba(0, 0, 0, 0.05);
170
+ z-index: 100000;
171
+ overflow: hidden;
172
+ animation: tooltip-appear-4c5588cd 0.3s ease-out;
173
+ pointer-events: auto;
174
+ }
175
+ @keyframes tooltip-appear-4c5588cd {
176
+ from {
177
+ opacity: 0;
178
+ }
179
+ to {
180
+ opacity: 1;
181
+ }
182
+ }
183
+ .tooltip-progress[data-v-4c5588cd] {
184
+ display: flex;
185
+ align-items: center;
186
+ gap: 12px;
187
+ padding: 12px 16px;
188
+ background: var(--color-background-muted, #f5f5f5);
189
+ border-bottom: 1px solid var(--color-border-light, #e0e0e0);
190
+ }
191
+ .progress-bar[data-v-4c5588cd] {
192
+ flex: 1;
193
+ height: 4px;
194
+ background: var(--color-border-light, #e0e0e0);
195
+ border-radius: 2px;
196
+ overflow: hidden;
197
+ }
198
+ .progress-fill[data-v-4c5588cd] {
199
+ height: 100%;
200
+ background: var(--color-accent, #3b82f6);
201
+ border-radius: 2px;
202
+ transition: width 0.3s ease;
203
+ }
204
+ .progress-text[data-v-4c5588cd] {
205
+ font-size: 12px;
206
+ font-weight: 500;
207
+ color: var(--color-text-secondary, #666);
208
+ white-space: nowrap;
209
+ }
210
+ .tooltip-content[data-v-4c5588cd] {
211
+ padding: 20px;
212
+ }
213
+ .tooltip-title[data-v-4c5588cd] {
214
+ margin: 0 0 12px;
215
+ font-size: 18px;
216
+ font-weight: 600;
217
+ color: var(--color-text-primary, #1a1a1a);
218
+ line-height: 1.3;
219
+ }
220
+ .tooltip-description[data-v-4c5588cd] {
221
+ margin: 0;
222
+ font-size: 14px;
223
+ line-height: 1.6;
224
+ color: var(--color-text-secondary, #666);
225
+ }
226
+ .tooltip-description[data-v-4c5588cd] strong {
227
+ color: var(--color-text-primary, #1a1a1a);
228
+ font-weight: 600;
229
+ }
230
+ .tooltip-description[data-v-4c5588cd] code {
231
+ background: var(--color-background-muted, #f5f5f5);
232
+ padding: 2px 6px;
233
+ border-radius: 4px;
234
+ font-family: var(--font-family-mono, monospace);
235
+ font-size: 13px;
236
+ }
237
+ .tooltip-action-hint[data-v-4c5588cd] {
238
+ display: flex;
239
+ align-items: center;
240
+ gap: 8px;
241
+ margin: 16px 0 0;
242
+ padding: 10px 12px;
243
+ background: var(--color-accent-subtle, rgba(59, 130, 246, 0.1));
244
+ border-radius: 8px;
245
+ font-size: 13px;
246
+ color: var(--color-accent, #3b82f6);
247
+ font-weight: 500;
248
+ }
249
+ .action-icon[data-v-4c5588cd] {
250
+ font-size: 18px;
251
+ }
252
+ .tooltip-navigation[data-v-4c5588cd] {
253
+ display: flex;
254
+ align-items: center;
255
+ justify-content: space-between;
256
+ padding: 12px 16px;
257
+ background: var(--color-background-muted, #f5f5f5);
258
+ border-top: 1px solid var(--color-border-light, #e0e0e0);
259
+ }
260
+ .nav-btn[data-v-4c5588cd] {
261
+ display: inline-flex;
262
+ align-items: center;
263
+ gap: 6px;
264
+ padding: 8px 16px;
265
+ border: none;
266
+ border-radius: 8px;
267
+ font-size: 14px;
268
+ font-weight: 500;
269
+ cursor: pointer;
270
+ transition: all 0.2s ease;
271
+ }
272
+ .skip-btn[data-v-4c5588cd] {
273
+ background: transparent;
274
+ color: var(--color-text-secondary, #666);
275
+ }
276
+ .skip-btn[data-v-4c5588cd]:hover {
277
+ background: var(--color-background-tertiary, #eee);
278
+ color: var(--color-text-primary, #1a1a1a);
279
+ }
280
+ .nav-main[data-v-4c5588cd] {
281
+ display: flex;
282
+ gap: 8px;
283
+ }
284
+ .prev-btn[data-v-4c5588cd] {
285
+ background: var(--color-background-primary, #fff);
286
+ color: var(--color-text-primary, #1a1a1a);
287
+ border: 1px solid var(--color-border-primary, #ddd);
288
+ }
289
+ .prev-btn[data-v-4c5588cd]:hover {
290
+ background: var(--color-background-tertiary, #eee);
291
+ }
292
+ .next-btn[data-v-4c5588cd] {
293
+ background: var(--color-accent, #3b82f6);
294
+ color: white;
295
+ }
296
+ .next-btn[data-v-4c5588cd]:hover {
297
+ background: var(--color-accent-hover, #2563eb);
298
+ }
299
+ .nav-btn .material-icons[data-v-4c5588cd] {
300
+ font-size: 18px;
301
+ }
302
+
303
+ .tutorial-overlay[data-v-cfeb3afc] {
304
+ position: fixed;
305
+ top: 0;
306
+ left: 0;
307
+ width: 100vw;
308
+ height: 100vh;
309
+ z-index: 10000;
310
+ /* Allow clicks to pass through to the page */
311
+ pointer-events: none;
312
+ }
313
+ .tutorial-backdrop[data-v-cfeb3afc] {
314
+ position: absolute;
315
+ top: 0;
316
+ left: 0;
317
+ width: 100%;
318
+ height: 100%;
319
+ pointer-events: none;
320
+ }
321
+ .tutorial-backdrop-full[data-v-cfeb3afc] {
322
+ background: rgba(0, 0, 0, 0.7);
323
+ }
324
+ .tutorial-mask[data-v-cfeb3afc] {
325
+ position: absolute;
326
+ top: 0;
327
+ left: 0;
328
+ width: 100%;
329
+ height: 100%;
330
+ }
331
+ .tutorial-spotlight[data-v-cfeb3afc] {
332
+ position: fixed;
333
+ pointer-events: none;
334
+ z-index: 10001;
335
+ transition: all 0.3s ease-out;
336
+ }
337
+ .spotlight-border[data-v-cfeb3afc] {
338
+ position: absolute;
339
+ top: -2px;
340
+ left: -2px;
341
+ right: -2px;
342
+ bottom: -2px;
343
+ border: 2px solid var(--color-accent);
344
+ border-radius: inherit;
345
+ box-shadow:
346
+ 0 0 0 4px color-mix(in srgb, var(--color-accent) 30%, transparent),
347
+ 0 0 20px color-mix(in srgb, var(--color-accent) 40%, transparent);
348
+ animation: spotlight-pulse-cfeb3afc 2s ease-in-out infinite;
349
+ }
350
+ @keyframes spotlight-pulse-cfeb3afc {
351
+ 0%,
352
+ 100% {
353
+ box-shadow:
354
+ 0 0 0 4px color-mix(in srgb, var(--color-accent) 30%, transparent),
355
+ 0 0 20px color-mix(in srgb, var(--color-accent) 40%, transparent);
356
+ }
357
+ 50% {
358
+ box-shadow:
359
+ 0 0 0 6px color-mix(in srgb, var(--color-accent) 40%, transparent),
360
+ 0 0 30px color-mix(in srgb, var(--color-accent) 50%, transparent);
361
+ }
362
+ }
363
+
364
+ /* Transition animations */
365
+ .tutorial-fade-enter-active[data-v-cfeb3afc],
366
+ .tutorial-fade-leave-active[data-v-cfeb3afc] {
367
+ transition: opacity 0.3s ease;
368
+ }
369
+ .tutorial-fade-enter-from[data-v-cfeb3afc],
370
+ .tutorial-fade-leave-to[data-v-cfeb3afc] {
371
+ opacity: 0;
372
+ }
373
+
374
+ .tutorial-start-container[data-v-36f83d99] {
375
+ position: fixed;
376
+ bottom: 24px;
377
+ right: 24px;
378
+ z-index: 1000;
379
+ }
380
+ .tutorial-dismiss-btn[data-v-36f83d99] {
381
+ position: absolute;
382
+ top: -8px;
383
+ right: -8px;
384
+ width: 24px;
385
+ height: 24px;
386
+ padding: 0;
387
+ display: flex;
388
+ align-items: center;
389
+ justify-content: center;
390
+ background: var(--color-background-primary);
391
+ border: 1px solid var(--color-border-primary);
392
+ border-radius: 50%;
393
+ color: var(--color-text-secondary);
394
+ cursor: pointer;
395
+ transition: all 0.2s ease;
396
+ z-index: 1;
397
+ }
398
+ .tutorial-dismiss-btn[data-v-36f83d99]:hover {
399
+ background: var(--color-background-tertiary);
400
+ color: var(--color-text-primary);
401
+ }
402
+ .tutorial-dismiss-btn .material-icons[data-v-36f83d99] {
403
+ font-size: 16px;
404
+ }
405
+ .tutorial-start-btn[data-v-36f83d99] {
406
+ display: flex;
407
+ align-items: center;
408
+ gap: 12px;
409
+ padding: 16px 20px;
410
+ background: var(--color-accent);
411
+ border: none;
412
+ border-radius: 12px;
413
+ color: var(--color-text-on-accent, #fff);
414
+ cursor: pointer;
415
+ box-shadow:
416
+ 0 4px 12px rgba(0, 0, 0, 0.15),
417
+ 0 0 0 1px rgba(255, 255, 255, 0.1) inset;
418
+ transition: all 0.2s ease;
419
+ }
420
+ .tutorial-start-btn[data-v-36f83d99]:hover {
421
+ transform: translateY(-2px);
422
+ box-shadow:
423
+ 0 8px 20px rgba(0, 0, 0, 0.2),
424
+ 0 0 0 1px rgba(255, 255, 255, 0.15) inset;
425
+ }
426
+ .tutorial-start-btn[data-v-36f83d99]:active {
427
+ transform: translateY(0);
428
+ }
429
+ .btn-icon[data-v-36f83d99] {
430
+ font-size: 28px;
431
+ opacity: 0.9;
432
+ }
433
+ .btn-content[data-v-36f83d99] {
434
+ display: flex;
435
+ flex-direction: column;
436
+ align-items: flex-start;
437
+ text-align: left;
438
+ }
439
+ .btn-title[data-v-36f83d99] {
440
+ font-size: 15px;
441
+ font-weight: 600;
442
+ line-height: 1.2;
443
+ }
444
+ .btn-subtitle[data-v-36f83d99] {
445
+ font-size: 12px;
446
+ opacity: 0.85;
447
+ font-weight: 400;
448
+ }
449
+ .btn-arrow[data-v-36f83d99] {
450
+ font-size: 20px;
451
+ opacity: 0.7;
452
+ margin-left: 4px;
453
+ }
454
+
455
+ /* Animation */
456
+ .float-in-enter-active[data-v-36f83d99] {
457
+ animation: float-in-36f83d99 0.4s ease-out;
458
+ }
459
+ .float-in-leave-active[data-v-36f83d99] {
460
+ animation: float-in-36f83d99 0.3s ease-in reverse;
461
+ }
462
+ @keyframes float-in-36f83d99 {
463
+ from {
464
+ opacity: 0;
465
+ transform: translateY(20px) scale(0.95);
466
+ }
467
+ to {
468
+ opacity: 1;
469
+ transform: translateY(0) scale(1);
470
+ }
471
+ }
161
472
  .app-layout {
162
473
  height: 100vh;
163
474
  display: flex;
@@ -8200,12 +8511,70 @@ readers do not read off random characters that represent icons */
8200
8511
  /* Status colors */
8201
8512
  --color-success: #10b981;
8202
8513
  --color-success-light: #d1fae5;
8514
+ --color-success-hover: #059669;
8203
8515
  --color-danger: #ef4444;
8204
8516
  --color-danger-light: #fee2e2;
8517
+ --color-danger-hover: #dc2626;
8518
+ --color-danger-dark: #b91c1c;
8205
8519
  --color-warning: #f59e0b;
8206
8520
  --color-warning-light: #fef3c7;
8521
+ --color-warning-hover: #d97706;
8522
+ --color-warning-dark: #92400e;
8523
+ --color-warning-darker: #78350f;
8207
8524
  --color-info: #3b82f6;
8208
8525
  --color-info-light: #dbeafe;
8526
+ --color-info-hover: #2563eb;
8527
+
8528
+ /* Button primary colors (interactive elements) */
8529
+ --color-button-primary: #4a6cf7;
8530
+ --color-button-primary-hover: #3d5bd9;
8531
+ --color-button-secondary: #3498db;
8532
+ --color-button-secondary-hover: #2980b9;
8533
+ --color-button-secondary-light: #93c5fd;
8534
+
8535
+ /* Code editor colors */
8536
+ --color-code-bg: #282c34;
8537
+ --color-code-text: #abb2bf;
8538
+ --color-code-keyword: #f08d49;
8539
+ --color-code-string: #8ec07c;
8540
+ --color-code-function: #b8bb26;
8541
+
8542
+ /* Overlay/Modal colors */
8543
+ --color-overlay: rgba(0, 0, 0, 0.5);
8544
+ --color-overlay-dark: rgba(0, 0, 0, 0.7);
8545
+
8546
+ /* Brand provider colors */
8547
+ --color-brand-aws: #ff9900;
8548
+ --color-brand-microsoft: #0078d4;
8549
+
8550
+ /* Gradient decorative colors */
8551
+ --color-gradient-purple-start: #667eea;
8552
+ --color-gradient-purple-end: #764ba2;
8553
+ --color-gradient-canvas-1: #6f3381;
8554
+ --color-gradient-canvas-2: #81c7d4;
8555
+ --color-gradient-canvas-3: #fedfe1;
8556
+ --color-gradient-canvas-4: #fffffb;
8557
+
8558
+ /* Focus ring colors */
8559
+ --color-focus-ring: rgba(44, 116, 179, 0.1);
8560
+ --color-focus-ring-error: rgba(239, 68, 68, 0.1);
8561
+ --color-focus-ring-primary: rgba(0, 123, 255, 0.5);
8562
+ --color-focus-ring-accent: rgba(8, 145, 178, 0.15);
8563
+ --color-focus-ring-accent-strong: rgba(8, 145, 178, 0.25);
8564
+ --color-focus-ring-button: rgba(74, 108, 247, 0.1);
8565
+ --color-focus-ring-secondary: rgba(52, 152, 219, 0.3);
8566
+ --color-focus-ring-purple: rgba(102, 126, 234, 0.4);
8567
+ --color-focus-ring-purple-light: rgba(102, 126, 234, 0.1);
8568
+
8569
+ /* Utility transparent colors */
8570
+ --color-white-alpha-20: rgba(255, 255, 255, 0.2);
8571
+ --color-white-alpha-40: rgba(255, 255, 255, 0.4);
8572
+ --color-black-alpha-10: rgba(0, 0, 0, 0.1);
8573
+ --color-black-alpha-20: rgba(0, 0, 0, 0.2);
8574
+
8575
+ /* Node/Component specific */
8576
+ --color-node-error-bg: #ffcccc;
8577
+ --color-file-browser-bg: rgb(92, 92, 92);
8209
8578
 
8210
8579
  /* Gray scale */
8211
8580
  --color-gray-50: #f9fafb;
@@ -8298,6 +8667,9 @@ readers do not read off random characters that represent icons */
8298
8667
  --z-index-popover: 1075;
8299
8668
  --z-index-tooltip: 1100;
8300
8669
  --z-index-notification: 1200;
8670
+ /* Canvas-specific z-index values - must be high to appear above canvas panels */
8671
+ --z-index-canvas-dropdown: 100001; /* Above DraggableItem panels (100000) */
8672
+ --z-index-canvas-context-menu: 100002; /* Above dropdowns */
8301
8673
 
8302
8674
  /* ========== Component-Specific Tokens ========== */
8303
8675
  /* Table */
@@ -8589,8 +8961,8 @@ readers do not read off random characters that represent icons */
8589
8961
  }
8590
8962
 
8591
8963
  .btn-danger-filled:hover:not(:disabled) {
8592
- background-color: #dc2626;
8593
- border-color: #dc2626;
8964
+ background-color: var(--color-danger-hover);
8965
+ border-color: var(--color-danger-hover);
8594
8966
  box-shadow: var(--shadow-sm);
8595
8967
  }
8596
8968
 
@@ -8601,8 +8973,8 @@ readers do not read off random characters that represent icons */
8601
8973
  }
8602
8974
 
8603
8975
  .btn-success:hover:not(:disabled) {
8604
- background-color: #059669;
8605
- border-color: #059669;
8976
+ background-color: var(--color-success-hover);
8977
+ border-color: var(--color-success-hover);
8606
8978
  box-shadow: var(--shadow-sm);
8607
8979
  }
8608
8980
 
@@ -9096,7 +9468,7 @@ readers do not read off random characters that represent icons */
9096
9468
 
9097
9469
  .form-input:focus {
9098
9470
  border-color: var(--input-border-focus);
9099
- box-shadow: 0 0 0 3px rgba(44, 116, 179, 0.1);
9471
+ box-shadow: 0 0 0 3px var(--color-focus-ring);
9100
9472
  }
9101
9473
 
9102
9474
  .form-input:disabled {
@@ -9185,7 +9557,7 @@ readers do not read off random characters that represent icons */
9185
9557
  }
9186
9558
 
9187
9559
  .form-input.is-error:focus {
9188
- box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.1);
9560
+ box-shadow: 0 0 0 3px var(--color-focus-ring-error);
9189
9561
  }
9190
9562
 
9191
9563
  .form-error {
@@ -9205,7 +9577,7 @@ readers do not read off random characters that represent icons */
9205
9577
  .modal-overlay {
9206
9578
  position: fixed;
9207
9579
  inset: 0;
9208
- background-color: rgba(0, 0, 0, 0.5);
9580
+ background-color: var(--color-overlay);
9209
9581
  backdrop-filter: blur(2px);
9210
9582
  display: flex;
9211
9583
  justify-content: center;
@@ -9526,6 +9898,163 @@ readers do not read off random characters that represent icons */
9526
9898
  visibility: visible;
9527
9899
  }
9528
9900
 
9901
+ /* ========== High Z-Index Dialogs ========== */
9902
+
9903
+ /* Ensure dialogs appear above all other UI elements (draggable items, context menus, etc.) */
9904
+
9905
+ .el-overlay:has(.high-z-index-dialog),
9906
+ .el-overlay:has(.overwrite-confirm-dialog) {
9907
+ z-index: 200000 !important;
9908
+ }
9909
+
9910
+ .high-z-index-dialog,
9911
+ .overwrite-confirm-dialog {
9912
+ z-index: 200001 !important;
9913
+ }
9914
+
9915
+ /* styles/components/_context-menu.css - Centralized Context Menu Styles */
9916
+
9917
+ /* Base context menu container */
9918
+
9919
+ .context-menu {
9920
+ position: fixed;
9921
+ min-width: 120px;
9922
+ background-color: var(--color-background-primary);
9923
+ border: 1px solid var(--color-border-primary);
9924
+ border-radius: var(--border-radius-md);
9925
+ box-shadow: var(--shadow-lg);
9926
+ z-index: var(--z-index-canvas-context-menu, 100002);
9927
+ overflow: hidden;
9928
+ user-select: none;
9929
+ }
9930
+
9931
+ /* Context menu with header variant */
9932
+
9933
+ .context-menu-header {
9934
+ padding: var(--spacing-2) var(--spacing-3);
9935
+ font-weight: var(--font-weight-semibold);
9936
+ background-color: var(--color-background-secondary);
9937
+ border-bottom: 1px solid var(--color-border-primary);
9938
+ font-size: var(--font-size-sm);
9939
+ color: var(--color-text-primary);
9940
+ }
9941
+
9942
+ /* Container for menu items */
9943
+
9944
+ .context-menu-items {
9945
+ max-height: 300px;
9946
+ overflow-y: auto;
9947
+ }
9948
+
9949
+ /* List-based context menu (ul/li pattern) */
9950
+
9951
+ .context-menu ul {
9952
+ list-style: none;
9953
+ padding: 0;
9954
+ margin: 0;
9955
+ }
9956
+
9957
+ .context-menu li {
9958
+ padding: var(--spacing-2) var(--spacing-4);
9959
+ cursor: pointer;
9960
+ font-size: var(--font-size-sm);
9961
+ color: var(--color-text-primary);
9962
+ transition: background-color var(--transition-fast);
9963
+ }
9964
+
9965
+ .context-menu li:hover:not(.disabled) {
9966
+ background-color: var(--color-background-tertiary);
9967
+ }
9968
+
9969
+ .context-menu li.disabled {
9970
+ color: var(--color-text-muted);
9971
+ cursor: not-allowed;
9972
+ }
9973
+
9974
+ /* Button-based context menu (button pattern) */
9975
+
9976
+ .context-menu button {
9977
+ display: block;
9978
+ width: 100%;
9979
+ padding: var(--spacing-2) var(--spacing-3);
9980
+ background: none;
9981
+ border: none;
9982
+ text-align: left;
9983
+ cursor: pointer;
9984
+ font-size: var(--font-size-sm);
9985
+ color: var(--color-text-primary);
9986
+ transition: background-color var(--transition-fast);
9987
+ }
9988
+
9989
+ .context-menu button:hover {
9990
+ background-color: var(--color-background-tertiary);
9991
+ }
9992
+
9993
+ .context-menu button:disabled {
9994
+ color: var(--color-text-muted);
9995
+ cursor: not-allowed;
9996
+ }
9997
+
9998
+ .context-menu button:disabled:hover {
9999
+ background-color: transparent;
10000
+ }
10001
+
10002
+ /* Individual menu item (div-based pattern) */
10003
+
10004
+ .context-menu-item {
10005
+ display: flex;
10006
+ align-items: center;
10007
+ padding: var(--spacing-2) var(--spacing-3);
10008
+ cursor: pointer;
10009
+ font-size: var(--font-size-sm);
10010
+ color: var(--color-text-primary);
10011
+ transition: background-color var(--transition-fast);
10012
+ }
10013
+
10014
+ .context-menu-item:hover {
10015
+ background-color: var(--color-background-tertiary);
10016
+ }
10017
+
10018
+ .context-menu-item.disabled {
10019
+ color: var(--color-text-muted);
10020
+ cursor: not-allowed;
10021
+ }
10022
+
10023
+ .context-menu-item.disabled:hover {
10024
+ background-color: transparent;
10025
+ }
10026
+
10027
+ /* Icon support for menu items */
10028
+
10029
+ .context-menu-icon {
10030
+ margin-right: var(--spacing-2);
10031
+ width: 20px;
10032
+ text-align: center;
10033
+ color: var(--color-text-secondary);
10034
+ }
10035
+
10036
+ /* Separator/divider between menu sections */
10037
+
10038
+ .context-menu-divider {
10039
+ height: 1px;
10040
+ margin: var(--spacing-1) 0;
10041
+ background-color: var(--color-border-primary);
10042
+ }
10043
+
10044
+ /* Danger/destructive action styling */
10045
+
10046
+ .context-menu-item.danger,
10047
+ .context-menu button.danger,
10048
+ .context-menu li.danger {
10049
+ color: var(--color-danger);
10050
+ }
10051
+
10052
+ .context-menu-item.danger:hover,
10053
+ .context-menu button.danger:hover,
10054
+ .context-menu li.danger:hover:not(.disabled) {
10055
+ background-color: var(--color-danger-light);
10056
+ }
10057
+
9529
10058
  .p-default {
9530
10059
  margin: var(--spacing-xs);
9531
10060
  margin-bottom: var(--spacing-sm);
@@ -10083,6 +10612,27 @@ button {
10083
10612
  color: var(--color-text-primary);
10084
10613
  }
10085
10614
 
10615
+ /* ========== Element Plus Popper Z-Index Fix ========== */
10616
+
10617
+ /* Fix for el-select dropdowns appearing behind dialogs and canvas elements.
10618
+ Element Plus poppers are teleported to body and need high z-index to appear above:
10619
+ - Canvas panels (DraggableItem panels at z-index 100000)
10620
+ - High z-index dialogs (at z-index 200001)
10621
+ Set to 200010 to ensure dropdowns always appear above modal dialogs */
10622
+
10623
+ .el-popper,
10624
+ .el-select-dropdown,
10625
+ .el-select__popper,
10626
+ .el-autocomplete-suggestion,
10627
+ .el-cascader__dropdown,
10628
+ .el-color-dropdown,
10629
+ .el-date-editor .el-picker-panel,
10630
+ .el-picker__popper,
10631
+ .el-tooltip__popper,
10632
+ .el-popover.el-popper {
10633
+ z-index: 200010 !important;
10634
+ }
10635
+
10086
10636
  /* ========== CodeMirror Dark Mode Styling ========== */
10087
10637
 
10088
10638
  /* These styles must be global because CodeMirror tooltips are rendered as portals */
@@ -10118,11 +10668,11 @@ button {
10118
10668
  }
10119
10669
 
10120
10670
  .cm-editor .cm-selectionBackground {
10121
- background-color: rgba(8, 145, 178, 0.15) !important;
10671
+ background-color: var(--color-focus-ring-accent) !important;
10122
10672
  }
10123
10673
 
10124
10674
  .cm-editor.cm-focused .cm-selectionBackground {
10125
- background-color: rgba(8, 145, 178, 0.25) !important;
10675
+ background-color: var(--color-focus-ring-accent-strong) !important;
10126
10676
  }
10127
10677
 
10128
10678
  /* Placeholder styling */
@@ -10160,7 +10710,7 @@ button {
10160
10710
  .cm-tooltip-autocomplete > ul > li[aria-selected],
10161
10711
  .cm-tooltip-autocomplete > ul > li[aria-selected="true"] {
10162
10712
  background-color: var(--color-accent) !important;
10163
- color: white !important;
10713
+ color: var(--color-text-inverse) !important;
10164
10714
  }
10165
10715
 
10166
10716
  /* Completion label and detail */
@@ -0,0 +1,2 @@
1
+ import { r as ref } from "./index-ca6799de.js";
2
+ ref(null);
@@ -1,4 +1,4 @@
1
- import { d as defineComponent, r as ref, B as watch, o as openBlock, c as createElementBlock, b as createBaseVNode, m as createVNode, p as withCtx, F as Fragment, D as renderList, x as createBlock, s as unref, aw as ElOption, ax as ElSelect, i as _export_sfc } from "./index-fb6493ae.js";
1
+ import { d as defineComponent, r as ref, H as watch, o as openBlock, c as createElementBlock, a as createBaseVNode, z as createVNode, A as withCtx, K as Fragment, L as renderList, C as createBlock, B as unref, aD as ElOption, aE as ElSelect, g as _export_sfc } from "./index-ca6799de.js";
2
2
  const _hoisted_1 = { class: "csv-table-settings" };
3
3
  const _hoisted_2 = { class: "input-group" };
4
4
  const _hoisted_3 = { class: "input-group" };
@@ -79,8 +79,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
79
79
  };
80
80
  }
81
81
  });
82
- const outputCsv_vue_vue_type_style_index_0_scoped_d331dc14_lang = "";
83
- const CsvTableConfig = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-d331dc14"]]);
82
+ const outputCsv_vue_vue_type_style_index_0_scoped_87df83cb_lang = "";
83
+ const CsvTableConfig = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-87df83cb"]]);
84
84
  export {
85
85
  CsvTableConfig as default
86
86
  };