n8n-editor-ui 1.92.0 → 1.94.0

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 (124) hide show
  1. package/dist/assets/{AnimatedSpinner-CtKKeDrz.js → AnimatedSpinner-CY5xYI5m.js} +1 -1
  2. package/dist/assets/{AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-DR6h_xsK.js → AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-BOrzkwPH.js} +1 -1
  3. package/dist/assets/{AuthView-mKkzBRxh.js → AuthView-BTzGYAnY.js} +2 -2
  4. package/dist/assets/{CanvasChatSwitch-Bu2VD2kp.js → CanvasChatSwitch-CwpjFCL0.js} +17 -18
  5. package/dist/assets/{ChangePasswordView-D5UI1v-J.js → ChangePasswordView-BKR2UFVI.js} +3 -3
  6. package/dist/assets/CollectionParameter-BJtiV9En.js +4 -0
  7. package/dist/assets/{CredentialsView-B78eNJO5.js → CredentialsView-DVgxfnNi.js} +26 -11
  8. package/dist/assets/{DemoFooter-DP26HpCu.js → DemoFooter-C1T3Q0NX.js} +7 -8
  9. package/dist/assets/{ErrorView-C3fvEdCg.js → ErrorView-Cf2Yb8Ea.js} +1 -1
  10. package/dist/assets/{ExecutionsTime.vue_vue_type_script_setup_true_lang-BBpwYdHY.js → ExecutionsTime.vue_vue_type_script_setup_true_lang-DUu0UMcW.js} +2 -2
  11. package/dist/assets/{ExecutionsView-BvlDZwIs.js → ExecutionsView-DjNkfnDh.js} +20 -18
  12. package/dist/assets/{FileSaver.min-BzAtcQXX.js → FileSaver.min-C1p9Eies.js} +1 -1
  13. package/dist/assets/{FixedCollectionParameter-CS5zXMAh.js → FixedCollectionParameter-DN_uJhpe.js} +1 -1
  14. package/dist/assets/{ForgotMyPasswordView-CVQ7pcIG.js → ForgotMyPasswordView-BMQBDIrq.js} +3 -3
  15. package/dist/assets/{InsightsChartAverageRuntime-Boh0SMb3.js → InsightsChartAverageRuntime-JzBkV6Rc.js} +4 -4
  16. package/dist/assets/{InsightsChartFailed-IZ-KYOU9.js → InsightsChartFailed-DMD3c7zM.js} +4 -4
  17. package/dist/assets/{InsightsChartFailureRate-2fWw3p0L.js → InsightsChartFailureRate-D_qeZo4f.js} +4 -4
  18. package/dist/assets/{InsightsChartTimeSaved-B2pLVys1.js → InsightsChartTimeSaved-Cw2T-Wvp.js} +4 -4
  19. package/dist/assets/{InsightsChartTotal-2QD4wPLR.js → InsightsChartTotal-DlF47gob.js} +4 -4
  20. package/dist/assets/{InsightsDashboard-Bx4vx9gz.css → InsightsDashboard-BSrakbzr.css} +42 -8
  21. package/dist/assets/{InsightsDashboard-CbiFbJ8w.js → InsightsDashboard-CxQ9H296.js} +40 -41
  22. package/dist/assets/{InsightsPaywall-5d-cSdiS.js → InsightsPaywall-hRkAfeHz.js} +1 -1
  23. package/dist/assets/InsightsSummary-BcXd-3nU.js +209 -0
  24. package/dist/assets/{InsightsSummary-CdlaUpAt.css → InsightsSummary-DzGQpM5h.css} +27 -24
  25. package/dist/assets/{InsightsTableWorkflows-Blv_GPUj.css → InsightsTableWorkflows-DfTZQkWL.css} +3 -4
  26. package/dist/assets/{InsightsTableWorkflows-_eTCUNCX.js → InsightsTableWorkflows-ybloXdDn.js} +5 -6
  27. package/dist/assets/{Logo-Dl2xVRIu.js → Logo-BGe7-2Vd.js} +1 -1
  28. package/dist/assets/{LogsPanel-JnYirDqa.js → LogsPanel-DtTp6kY0.js} +334 -338
  29. package/dist/assets/{MainHeader-CEPLiR-5.css → MainHeader-Y95RcfHb.css} +24 -17
  30. package/dist/assets/{MainHeader-Bk29pgmL.js → MainHeader-h2DV-VuD.js} +148 -82
  31. package/dist/assets/{MainSidebar-BM5ku_wM.js → MainSidebar-AAHHRXFA.js} +28 -11
  32. package/dist/assets/{MainSidebar-zZpP3qQ0.css → MainSidebar-D1_1YFQZ.css} +2 -2
  33. package/dist/assets/{NodeCreation-BEjdAYc_.js → NodeCreation-nHiG-Lhi.js} +9 -5
  34. package/dist/assets/{NodeCreator-D9fmPdS2.css → NodeCreator-D18StsVZ.css} +1021 -174
  35. package/dist/assets/{NodeCreator-cEUgbAI9.js → NodeCreator-weAzsmlU.js} +862 -418
  36. package/dist/assets/{NodeDetailsView-D4O9dKTA.js → NodeDetailsView-BsXbcyfb.js} +22 -15
  37. package/dist/assets/{NodeDetailsView-DsFLtbxi.css → NodeDetailsView-DpO8nTmN.css} +16 -16
  38. package/dist/assets/{NodeView-DDSOUm8E.js → NodeView-BY1O3wWl.js} +104 -50
  39. package/dist/assets/{ProjectCardBadge-BNn2hiMe.js → ProjectCardBadge-3xpk5Z4e.js} +38 -2
  40. package/dist/assets/{ProjectHeader-CaEZ2OPj.js → ProjectHeader-CpoOisjf.js} +106 -64
  41. package/dist/assets/{ProjectSettings-otA8E-yW.js → ProjectSettings-B__3XaPY.js} +14 -3
  42. package/dist/assets/{PushConnectionTracker.vue_vue_type_script_setup_true_lang-C3JbZMCk.js → PushConnectionTracker.vue_vue_type_script_setup_true_lang-DaoPdG_5.js} +1 -1
  43. package/dist/assets/{ResourcesListLayout-1d9Ic6VX.js → ResourcesListLayout-DAxou314.js} +156 -53
  44. package/dist/assets/{ResourcesListLayout-CtGME7aU.css → ResourcesListLayout-DuNjbsMn.css} +8 -8
  45. package/dist/assets/{RunData-BjlZgIyx.css → RunData-CE5FsU6k.css} +2 -2
  46. package/dist/assets/{RunData-Bx47sNQp.js → RunData-fnd-jejc.js} +257 -99
  47. package/dist/assets/{RunDataAi-DOac7nwD.js → RunDataAi-Ck3VGKP_.js} +3 -4
  48. package/dist/assets/{RunDataJson-Pev6yNEV.js → RunDataJson-B80Z4URL.js} +7 -7
  49. package/dist/assets/{RunDataJsonActions-Co4xgmVq.js → RunDataJsonActions-CdZi1Qul.js} +1 -1
  50. package/dist/assets/{RunDataParsedAiContent-D6MNLmT3.js → RunDataParsedAiContent-BczxQ63H.js} +5 -5
  51. package/dist/assets/{RunDataSearch-C8orcAlP.js → RunDataSearch-C4KmCz4c.js} +1 -1
  52. package/dist/assets/{RunDataTable-oi_l8dhA.js → RunDataTable-CsLCZIWp.js} +3 -3
  53. package/dist/assets/{SamlOnboarding-CT5J6dx0.js → SamlOnboarding-DkhjCrPa.js} +3 -3
  54. package/dist/assets/{SettingsApiView-CupjcI9v.js → SettingsApiView-Ci2-rEpm.js} +1 -1
  55. package/dist/assets/{SettingsCommunityNodesView-B5K2VLyJ.js → SettingsCommunityNodesView-_UOppuqS.js} +24 -11
  56. package/dist/assets/{SettingsExternalSecrets-BidJCf_t.js → SettingsExternalSecrets-DHIkKr53.js} +1 -1
  57. package/dist/assets/{SettingsLdapView-Cva6akhW.js → SettingsLdapView-B8ezgdqP.js} +1 -1
  58. package/dist/assets/{SettingsLogStreamingView-Cy-rAKUO.js → SettingsLogStreamingView-YP6Xy7Fe.js} +1 -1
  59. package/dist/assets/{SettingsPersonalView-ZJ1Syok2.js → SettingsPersonalView-BmbFyWPb.js} +1 -1
  60. package/dist/assets/{SettingsSourceControl-CMtqqlkO.js → SettingsSourceControl-DwaOdDke.js} +1 -1
  61. package/dist/assets/{SettingsSso-Bi3OpykL.js → SettingsSso-DOC-P2wt.js} +14 -1
  62. package/dist/assets/{SettingsUsageAndPlan-C5TbwZhP.js → SettingsUsageAndPlan-DVOLlEkG.js} +1 -1
  63. package/dist/assets/{SettingsUsersView-BHuP5k0A.js → SettingsUsersView-CN_KLeIm.js} +1 -1
  64. package/dist/assets/{SettingsView-DPIIqaKN.js → SettingsView-DiAhLyco.js} +1 -1
  65. package/dist/assets/{SetupView-C4V9j6sh.js → SetupView-OE_yCNOU.js} +3 -3
  66. package/dist/assets/{SetupWorkflowCredentialsButton-BZ9ILQUp.js → SetupWorkflowCredentialsButton-Dx1IkZgW.js} +1 -1
  67. package/dist/assets/{SetupWorkflowFromTemplateView-3uV3zSU2.js → SetupWorkflowFromTemplateView-lQXKgIuL.js} +3 -3
  68. package/dist/assets/{SigninView-DWZHdCjG.js → SigninView-BWSrzbF7.js} +3 -3
  69. package/dist/assets/{SignoutView-DbduXAir.js → SignoutView-DxGgFxt2.js} +1 -1
  70. package/dist/assets/{SignupView-DWq6VACk.js → SignupView-Dtu5bMqF.js} +3 -3
  71. package/dist/assets/{TemplateDetails-BckqE6GK.js → TemplateDetails-CQ7TYqsP.js} +1 -1
  72. package/dist/assets/{TemplateList-Bw0JeBMP.js → TemplateList-Cxmv-0p-.js} +1 -1
  73. package/dist/assets/{TemplatesCollectionView-CAKT-mpV.js → TemplatesCollectionView-xvV6FXib.js} +5 -5
  74. package/dist/assets/{TemplatesSearchView-I2a5us58.js → TemplatesSearchView-CsECyZ52.js} +3 -3
  75. package/dist/assets/{TemplatesView-6EwGFFJK.js → TemplatesView-DrEKpZTU.js} +1 -1
  76. package/dist/assets/{TemplatesWorkflowView-C8xYMhwu.js → TemplatesWorkflowView-iSAL_yol.js} +5 -5
  77. package/dist/assets/{TestDefinitionEditView-CNd3Cuzq.js → TestDefinitionEditView-C3ohfu_r.js} +6 -7
  78. package/dist/assets/{TestDefinitionListView-BwTWIaAM.js → TestDefinitionListView-Dwto0jxH.js} +1 -1
  79. package/dist/assets/{TestDefinitionNewView-BQas0_G1.js → TestDefinitionNewView-9xVUm2ZJ.js} +2 -2
  80. package/dist/assets/{TestDefinitionRootView-D971MFye.js → TestDefinitionRootView-DLurQ4xl.js} +1 -1
  81. package/dist/assets/{VariablesView-DcBBuFxh.js → VariablesView-Cg2WSt_e.js} +4 -3
  82. package/dist/assets/{WorkerView-DSgBNIeb.js → WorkerView-BG-Dl0Ej.js} +6 -6
  83. package/dist/assets/{WorkflowActivator-DAyH7N29.css → WorkflowActivator-DrMTmuTZ.css} +2 -2
  84. package/dist/assets/{WorkflowActivator-CPCbgb_n.js → WorkflowActivator-e7wvW1kJ.js} +17 -11
  85. package/dist/assets/{WorkflowExecutionsInfoAccordion-Bc6vzAZu.js → WorkflowExecutionsInfoAccordion-CijtfO0l.js} +1 -1
  86. package/dist/assets/{WorkflowExecutionsLandingPage-BPPS4V9i.js → WorkflowExecutionsLandingPage-Do4y1yOx.js} +2 -2
  87. package/dist/assets/{WorkflowExecutionsPreview-Bbb5MB8Z.js → WorkflowExecutionsPreview-Bqo_3PXl.js} +6 -6
  88. package/dist/assets/{WorkflowExecutionsView-Pz-7iHJY.js → WorkflowExecutionsView-C1gS45nc.js} +10 -10
  89. package/dist/assets/{WorkflowHistory-Czo9IuI6.js → WorkflowHistory-CypQw7rC.js} +37 -19
  90. package/dist/assets/{WorkflowOnboardingView-B8DdkfJ5.js → WorkflowOnboardingView-DoKXpaNj.js} +1 -1
  91. package/dist/assets/{WorkflowPreview-eVlO1itk.js → WorkflowPreview-Bxs5XzBX.js} +1 -1
  92. package/dist/assets/{WorkflowsView-Cr2D0vym.js → WorkflowsView-BlvgD3xI.js} +299 -157
  93. package/dist/assets/{WorkflowsView-B2_HJCJ5.css → WorkflowsView-CQvTAWQ0.css} +24 -13
  94. package/dist/assets/{chartjs.utils-Dk1WO3Mr.js → chartjs.utils-CuWcgqCr.js} +2 -2
  95. package/dist/assets/{dateFormatter-C8N5khiG.js → dateFormatter-LbucaaRt.js} +1 -1
  96. package/dist/assets/{easyAiWorkflowUtils-CLqHnasO.js → easyAiWorkflowUtils-_kvYb5hw.js} +1 -1
  97. package/dist/assets/{global-link-actions-BvoZh8u9.js → global-link-actions-DG0SjhQE.js} +1 -1
  98. package/dist/assets/{import-curl-BpxkGYMX.js → import-curl-DQ6uPzZ1.js} +1 -1
  99. package/dist/assets/{index-DCpy4nCU.css → index-BA8d2DN9.css} +311 -515
  100. package/dist/assets/{index-B6eunbxp.js → index-hdsPF3tl.js} +61611 -57550
  101. package/dist/assets/{index-Br8T1Gn6.js → index-vIybYvt3.js} +1 -1
  102. package/dist/assets/{pickBy-8Urz9lDY.js → pickBy-DmKUpB7M.js} +1 -1
  103. package/dist/assets/{polyfills-CLZ4X0Ad.js → polyfills-J2x06Gdp.js} +157 -224
  104. package/dist/assets/{templateActions-DzjysjbQ.js → templateActions-DxoxchKp.js} +1 -1
  105. package/dist/assets/{typescript.worker-BsxN2afA.js → typescript.worker-B1loTpxy.js} +1 -1
  106. package/dist/assets/{useBeforeUnload-DxrN8vOO.js → useBeforeUnload-B7JAQiE8.js} +1 -1
  107. package/dist/assets/{useCanvasMapping-cuXLM-h-.css → useCanvasMapping-CFf4cwnq.css} +6 -5
  108. package/dist/assets/{useCanvasMapping-C2BQB9QB.js → useCanvasMapping-CvcOHj5p.js} +94 -50
  109. package/dist/assets/{useClearExecutionButtonVisible-BV-jMf2m.js → useClearExecutionButtonVisible-DFNEJves.js} +1 -2
  110. package/dist/assets/{useExecutionDebugging-0pPCimcw.js → useExecutionDebugging-DsRIfE0y.js} +1 -1
  111. package/dist/assets/{useExecutionHelpers-DIvhViMz.js → useExecutionHelpers-CEOL8_vt.js} +3 -3
  112. package/dist/assets/{useImportCurlCommand-BWf4R83s.js → useImportCurlCommand-DdIN4YaF.js} +2 -2
  113. package/dist/assets/useProjectPages-OGc-GAxb.js +17 -0
  114. package/dist/assets/{usePushConnection-Pobjq0U9.js → usePushConnection-DNGIaS0A.js} +29 -127
  115. package/dist/assets/{useTestDefinitionForm-BA3IS_2B.js → useTestDefinitionForm-Bi6EgFVm.js} +1 -1
  116. package/dist/assets/{useWorkflowActivate-DFqvrpj6.js → useWorkflowActivate-CJ1hLmv2.js} +1 -1
  117. package/dist/assets/{useWorkflowSaving-BACesUoL.js → useWorkflowSaving-BuokdhTC.js} +2 -2
  118. package/dist/index.html +3 -3
  119. package/package.json +1 -1
  120. package/tsconfig.json +1 -0
  121. package/vite.config.mts +4 -0
  122. package/dist/assets/CollectionParameter-BeCTpZ-q.js +0 -4
  123. package/dist/assets/InsightsSummary-gldDQ9rg.js +0 -207
  124. package/dist/assets/useCanvasOperations-DaP5jKbH.js +0 -3183
@@ -1,11 +1,12 @@
1
- import { P as ProjectCardBadge } from "./ProjectCardBadge-BNn2hiMe.js";
2
- import { d as defineComponent, R as useRoute, b as useRouter, a2 as useFoldersStore, r as ref, q as computed, c as useI18n, ab as ProjectTypes, V as VIEWS, h as resolveComponent, i as createElementBlock, g as openBlock, j as createVNode, w as withCtx, n as normalizeClass, k as createBaseVNode, f as createCommentVNode, e as createBlock, m as unref, gZ as ResourceType, b2 as withModifiers, l as createTextVNode, t as toDisplayString, d3 as _sfc_main$3, _ as _export_sfc, a as useToast, p as useSettingsStore, H as useUIStore, u as useUsersStore, Q as useWorkflowsStore, a1 as useProjectsStore, a7 as getResourcePermissions, fR as dateFormat, aA as withDirectives, aB as vShow, af as WORKFLOW_SHARE_MODAL_KEY, ag as useTelemetry, an as DUPLICATE_MODAL_KEY, ai as useMessage, aj as MODAL_CONFIRM, g_ as PROJECT_MOVE_RESOURCE_MODAL, g$ as FOLDER_NAME_ILLEGAL_CHARACTERS_REGEX, h0 as ILLEGAL_FOLDER_CHARACTERS, h1 as FOLDER_NAME_ONLY_DOTS_REGEX, h2 as FOLDER_NAME_MAX_LENGTH, a0 as useSourceControlStore, au as usePostHog, E as useTagsStore, dn as useUsageStore, h3 as useInsightsStore, a4 as useDocumentTitle, G as useDebounce, aa as EnterpriseEditionFeature, h4 as EASY_AI_WORKFLOW_EXPERIMENT, X as watch, o as onMounted, C as createEventBus, y as onBeforeUnmount, A as debounce, h5 as PROJECT_ROOT, aV as createSlots, dk as N8nInputLabel, ad as _sfc_main$4, ee as N8nSelect, F as Fragment, D as renderList, ed as _sfc_main$5, d8 as N8nHeading, be as N8nText, h6 as N8nCard, bE as N8nIcon, h7 as Draggable, h8 as DEFAULT_WORKFLOW_PAGE_SIZE, dr as COMMUNITY_PLUS_ENROLLMENT_MODAL } from "./index-B6eunbxp.js";
3
- import { W as WorkflowActivator, _ as __unplugin_components_0, I as InlineTextEdit } from "./WorkflowActivator-CPCbgb_n.js";
4
- import { R as ResourcesListLayout } from "./ResourcesListLayout-1d9Ic6VX.js";
5
- import { u as useOverview, P as ProjectHeader } from "./ProjectHeader-CaEZ2OPj.js";
6
- import { I as InsightsSummary } from "./InsightsSummary-gldDQ9rg.js";
7
- import { g as getEasyAiWorkflowJson } from "./easyAiWorkflowUtils-CLqHnasO.js";
8
- import "./useWorkflowActivate-DFqvrpj6.js";
1
+ import { P as ProjectCardBadge, _ as _sfc_main$4 } from "./ProjectCardBadge-3xpk5Z4e.js";
2
+ import { d as defineComponent, R as useRoute, b as useRouter, a2 as useFoldersStore, r as ref, q as computed, c as useI18n, ab as ProjectTypes, V as VIEWS, h as resolveComponent, i as createElementBlock, g as openBlock, j as createVNode, w as withCtx, n as normalizeClass, k as createBaseVNode, f as createCommentVNode, e as createBlock, m as unref, fW as ResourceType, b3 as withModifiers, l as createTextVNode, t as toDisplayString, db as _sfc_main$3, _ as _export_sfc, a as useToast, p as useSettingsStore, H as useUIStore, u as useUsersStore, Q as useWorkflowsStore, a1 as useProjectsStore, a7 as getResourcePermissions, eC as dateFormat, aA as withDirectives, aB as vShow, af as WORKFLOW_SHARE_MODAL_KEY, ag as useTelemetry, an as DUPLICATE_MODAL_KEY, ai as useMessage, aj as MODAL_CONFIRM, fX as PROJECT_MOVE_RESOURCE_MODAL, fY as FOLDER_NAME_ILLEGAL_CHARACTERS_REGEX, fZ as ILLEGAL_FOLDER_CHARACTERS, f_ as FOLDER_NAME_ONLY_DOTS_REGEX, f$ as FOLDER_NAME_MAX_LENGTH, a0 as useSourceControlStore, au as usePostHog, E as useTagsStore, dw as useUsageStore, g0 as useInsightsStore, a4 as useDocumentTitle, G as useDebounce, aa as EnterpriseEditionFeature, g1 as EASY_AI_WORKFLOW_EXPERIMENT, X as watch, o as onMounted, C as createEventBus, y as onBeforeUnmount, A as debounce, g2 as PROJECT_ROOT, aV as createSlots, dt as N8nInputLabel, ad as _sfc_main$5, en as N8nSelect, F as Fragment, D as renderList, em as _sfc_main$6, dg as N8nHeading, bf as N8nText, g3 as N8nCard, bF as N8nIcon, g4 as Draggable, g5 as DEFAULT_WORKFLOW_PAGE_SIZE, dz as COMMUNITY_PLUS_ENROLLMENT_MODAL } from "./index-hdsPF3tl.js";
3
+ import { W as WorkflowActivator, _ as __unplugin_components_0, I as InlineTextEdit } from "./WorkflowActivator-e7wvW1kJ.js";
4
+ import { R as ResourcesListLayout } from "./ResourcesListLayout-DAxou314.js";
5
+ import { P as ProjectHeader } from "./ProjectHeader-CpoOisjf.js";
6
+ import { u as useProjectPages } from "./useProjectPages-OGc-GAxb.js";
7
+ import { I as InsightsSummary } from "./InsightsSummary-BcXd-3nU.js";
8
+ import { g as getEasyAiWorkflowJson } from "./easyAiWorkflowUtils-_kvYb5hw.js";
9
+ import "./useWorkflowActivate-CJ1hLmv2.js";
9
10
  const FOLDER_LIST_ITEM_ACTIONS = {
10
11
  OPEN: "open",
11
12
  CREATE: "create",
@@ -309,13 +310,15 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
309
310
  workflowListEventBus: { default: void 0 },
310
311
  showOwnershipBadge: { type: Boolean, default: false }
311
312
  },
312
- emits: ["expand:tags", "click:tag", "workflow:deleted", "workflow:active-toggle", "action:move-to-folder"],
313
+ emits: ["expand:tags", "click:tag", "workflow:deleted", "workflow:archived", "workflow:unarchived", "workflow:active-toggle", "action:move-to-folder"],
313
314
  setup(__props, { emit: __emit }) {
314
315
  const WORKFLOW_LIST_ITEM_ACTIONS = {
315
316
  OPEN: "open",
316
317
  SHARE: "share",
317
318
  DUPLICATE: "duplicate",
318
319
  DELETE: "delete",
320
+ ARCHIVE: "archive",
321
+ UNARCHIVE: "unarchive",
319
322
  MOVE: "move",
320
323
  MOVE_TO_FOLDER: "moveToFolder"
321
324
  };
@@ -381,7 +384,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
381
384
  value: WORKFLOW_LIST_ITEM_ACTIONS.SHARE
382
385
  }
383
386
  ];
384
- if (workflowPermissions.value.create && !props.readOnly) {
387
+ if (workflowPermissions.value.create && !props.readOnly && !props.data.isArchived) {
385
388
  items.push({
386
389
  label: locale.baseText("workflows.item.duplicate"),
387
390
  value: WORKFLOW_LIST_ITEM_ACTIONS.DUPLICATE
@@ -400,10 +403,21 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
400
403
  });
401
404
  }
402
405
  if (workflowPermissions.value.delete && !props.readOnly) {
403
- items.push({
404
- label: locale.baseText("workflows.item.delete"),
405
- value: WORKFLOW_LIST_ITEM_ACTIONS.DELETE
406
- });
406
+ if (!props.data.isArchived) {
407
+ items.push({
408
+ label: locale.baseText("workflows.item.archive"),
409
+ value: WORKFLOW_LIST_ITEM_ACTIONS.ARCHIVE
410
+ });
411
+ } else {
412
+ items.push({
413
+ label: locale.baseText("workflows.item.delete"),
414
+ value: WORKFLOW_LIST_ITEM_ACTIONS.DELETE
415
+ });
416
+ items.push({
417
+ label: locale.baseText("workflows.item.unarchive"),
418
+ value: WORKFLOW_LIST_ITEM_ACTIONS.UNARCHIVE
419
+ });
420
+ }
407
421
  }
408
422
  return items;
409
423
  });
@@ -471,6 +485,12 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
471
485
  case WORKFLOW_LIST_ITEM_ACTIONS.DELETE:
472
486
  await deleteWorkflow();
473
487
  break;
488
+ case WORKFLOW_LIST_ITEM_ACTIONS.ARCHIVE:
489
+ await archiveWorkflow();
490
+ break;
491
+ case WORKFLOW_LIST_ITEM_ACTIONS.UNARCHIVE:
492
+ await unarchiveWorkflow();
493
+ break;
474
494
  case WORKFLOW_LIST_ITEM_ACTIONS.MOVE:
475
495
  moveResource();
476
496
  break;
@@ -509,11 +529,63 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
509
529
  return;
510
530
  }
511
531
  toast.showMessage({
512
- title: locale.baseText("mainSidebar.showMessage.handleSelect1.title"),
532
+ title: locale.baseText("mainSidebar.showMessage.handleSelect1.title", {
533
+ interpolate: { workflowName: props.data.name }
534
+ }),
513
535
  type: "success"
514
536
  });
515
537
  emit("workflow:deleted");
516
538
  }
539
+ async function archiveWorkflow() {
540
+ if (props.data.active) {
541
+ const archiveConfirmed = await message.confirm(
542
+ locale.baseText("mainSidebar.confirmMessage.workflowArchive.message", {
543
+ interpolate: { workflowName: props.data.name }
544
+ }),
545
+ locale.baseText("mainSidebar.confirmMessage.workflowArchive.headline"),
546
+ {
547
+ type: "warning",
548
+ confirmButtonText: locale.baseText(
549
+ "mainSidebar.confirmMessage.workflowArchive.confirmButtonText"
550
+ ),
551
+ cancelButtonText: locale.baseText(
552
+ "mainSidebar.confirmMessage.workflowArchive.cancelButtonText"
553
+ )
554
+ }
555
+ );
556
+ if (archiveConfirmed !== MODAL_CONFIRM) {
557
+ return;
558
+ }
559
+ }
560
+ try {
561
+ await workflowsStore.archiveWorkflow(props.data.id);
562
+ } catch (error) {
563
+ toast.showError(error, locale.baseText("generic.archiveWorkflowError"));
564
+ return;
565
+ }
566
+ toast.showMessage({
567
+ title: locale.baseText("mainSidebar.showMessage.handleArchive.title", {
568
+ interpolate: { workflowName: props.data.name }
569
+ }),
570
+ type: "success"
571
+ });
572
+ emit("workflow:archived");
573
+ }
574
+ async function unarchiveWorkflow() {
575
+ try {
576
+ await workflowsStore.unarchiveWorkflow(props.data.id);
577
+ } catch (error) {
578
+ toast.showError(error, locale.baseText("generic.unarchiveWorkflowError"));
579
+ return;
580
+ }
581
+ toast.showMessage({
582
+ title: locale.baseText("mainSidebar.showMessage.handleUnarchive.title", {
583
+ interpolate: { workflowName: props.data.name }
584
+ }),
585
+ type: "success"
586
+ });
587
+ emit("workflow:unarchived");
588
+ }
517
589
  const fetchHiddenBreadCrumbsItems = async () => {
518
590
  if (!props.data.homeProject?.id || !projectName.value || !props.data.parentFolder) {
519
591
  hiddenBreadcrumbsItemsAsync.value = Promise.resolve([]);
@@ -557,7 +629,10 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
557
629
  const _component_n8n_action_toggle = resolveComponent("n8n-action-toggle");
558
630
  const _component_n8n_card = resolveComponent("n8n-card");
559
631
  return openBlock(), createBlock(_component_n8n_card, {
560
- class: normalizeClass(_ctx.$style.cardLink),
632
+ class: normalizeClass({
633
+ [_ctx.$style.cardLink]: true,
634
+ [_ctx.$style.cardArchived]: _ctx.data.isArchived
635
+ }),
561
636
  "data-test-id": "workflow-card",
562
637
  onClick
563
638
  }, {
@@ -565,7 +640,10 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
565
640
  createVNode(_component_n8n_text, {
566
641
  tag: "h2",
567
642
  bold: "",
568
- class: normalizeClass(_ctx.$style.cardHeading),
643
+ class: normalizeClass({
644
+ [_ctx.$style.cardHeading]: true,
645
+ [_ctx.$style.cardHeadingArchived]: _ctx.data.isArchived
646
+ }),
569
647
  "data-test-id": "workflow-card-name"
570
648
  }, {
571
649
  default: withCtx(() => [
@@ -623,14 +701,28 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
623
701
  ]),
624
702
  _: 1
625
703
  }, 8, ["class", "resource", "resource-type", "resource-type-label", "personal-project"])) : createCommentVNode("", true),
626
- createVNode(WorkflowActivator, {
704
+ _ctx.data.isArchived ? (openBlock(), createBlock(_component_n8n_text, {
705
+ key: 1,
706
+ color: "text-light",
707
+ size: "small",
708
+ bold: "",
709
+ class: "ml-s mr-s",
710
+ "data-test-id": "workflow-card-archived"
711
+ }, {
712
+ default: withCtx(() => [
713
+ createTextVNode(toDisplayString(unref(locale).baseText("workflows.item.archived")), 1)
714
+ ]),
715
+ _: 1
716
+ })) : (openBlock(), createBlock(WorkflowActivator, {
717
+ key: 2,
627
718
  class: "mr-s",
719
+ "is-archived": _ctx.data.isArchived,
628
720
  "workflow-active": _ctx.data.active,
629
721
  "workflow-id": _ctx.data.id,
630
722
  "workflow-permissions": workflowPermissions.value,
631
723
  "data-test-id": "workflow-card-activator",
632
724
  "onUpdate:workflowActive": emitWorkflowActiveToggle
633
- }, null, 8, ["workflow-active", "workflow-id", "workflow-permissions"]),
725
+ }, null, 8, ["is-archived", "workflow-active", "workflow-id", "workflow-permissions"])),
634
726
  createVNode(_component_n8n_action_toggle, {
635
727
  actions: actions.value,
636
728
  theme: "dark",
@@ -682,19 +774,23 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
682
774
  };
683
775
  }
684
776
  });
685
- const cardLink = "_cardLink_yuz8n_123";
686
- const cardHeading = "_cardHeading_yuz8n_133";
687
- const cardDescription = "_cardDescription_yuz8n_142";
688
- const cardActions = "_cardActions_yuz8n_149";
689
- const cardBadge = "_cardBadge_yuz8n_159";
690
- const breadcrumbs = "_breadcrumbs_yuz8n_177";
777
+ const cardLink = "_cardLink_15m1t_123";
778
+ const cardHeading = "_cardHeading_15m1t_133";
779
+ const cardHeadingArchived = "_cardHeadingArchived_15m1t_142";
780
+ const cardDescription = "_cardDescription_15m1t_146";
781
+ const cardActions = "_cardActions_15m1t_153";
782
+ const cardBadge = "_cardBadge_15m1t_163";
783
+ const cardArchived = "_cardArchived_15m1t_174";
784
+ const breadcrumbs = "_breadcrumbs_15m1t_191";
691
785
  const style0$1 = {
692
786
  cardLink,
693
787
  cardHeading,
788
+ cardHeadingArchived,
694
789
  cardDescription,
695
790
  cardActions,
696
791
  cardBadge,
697
- "with-breadcrumbs": "_with-breadcrumbs_yuz8n_159",
792
+ "with-breadcrumbs": "_with-breadcrumbs_15m1t_167",
793
+ cardArchived,
698
794
  breadcrumbs
699
795
  };
700
796
  const cssModules$1 = {
@@ -823,24 +919,26 @@ const _hoisted_1 = { key: 0 };
823
919
  const _hoisted_2 = { key: 0 };
824
920
  const _hoisted_3 = { key: 1 };
825
921
  const _hoisted_4 = { key: 1 };
826
- const _hoisted_5 = {
922
+ const _hoisted_5 = { key: 1 };
923
+ const _hoisted_6 = {
827
924
  class: "text-center mt-s",
828
925
  "data-test-id": "list-empty-state"
829
926
  };
830
- const _hoisted_6 = {
927
+ const _hoisted_7 = {
831
928
  key: 0,
832
929
  class: "mb-s"
833
930
  };
834
- const _hoisted_7 = { class: "mb-s" };
931
+ const _hoisted_8 = { class: "mb-s" };
932
+ const _hoisted_9 = { class: "mb-s" };
835
933
  const SEARCH_DEBOUNCE_TIME = 300;
836
934
  const FILTERS_DEBOUNCE_TIME = 100;
837
935
  const _sfc_main = /* @__PURE__ */ defineComponent({
838
936
  __name: "WorkflowsView",
839
937
  setup(__props) {
840
938
  const StatusFilter = {
939
+ ALL: "",
841
940
  ACTIVE: "active",
842
- DEACTIVATED: "deactivated",
843
- ALL: ""
941
+ DEACTIVATED: "deactivated"
844
942
  };
845
943
  const WORKFLOWS_SORT_MAP = {
846
944
  lastUpdated: "updatedAt:desc",
@@ -868,13 +966,14 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
868
966
  const insightsStore = useInsightsStore();
869
967
  const documentTitle = useDocumentTitle();
870
968
  const { callDebounced } = useDebounce();
871
- const overview = useOverview();
872
- const loading = ref(false);
969
+ const projectPages = useProjectPages();
970
+ const loading = ref(true);
873
971
  const breadcrumbsLoading = ref(false);
874
972
  const filters = ref({
875
973
  search: "",
876
974
  homeProject: "",
877
975
  status: StatusFilter.ALL,
976
+ showArchived: false,
878
977
  tags: []
879
978
  });
880
979
  const workflowListEventBus = createEventBus();
@@ -930,7 +1029,6 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
930
1029
  )
931
1030
  );
932
1031
  const readOnlyEnv = computed(() => sourceControlStore.preferences.branchReadOnly);
933
- const isOverviewPage = computed(() => route.name === VIEWS.WORKFLOWS);
934
1032
  const currentUser = computed(() => usersStore.currentUser ?? {});
935
1033
  const isShareable = computed(
936
1034
  () => settingsStore.isEnterpriseFeatureEnabled[EnterpriseEditionFeature.Sharing]
@@ -942,7 +1040,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
942
1040
  return projectsStore.isTeamProjectFeatureEnabled;
943
1041
  });
944
1042
  const showFolders = computed(() => {
945
- return foldersEnabled.value && !isOverviewPage.value;
1043
+ return foldersEnabled.value && !projectPages.isOverviewSubPage && !projectPages.isSharedSubPage;
946
1044
  });
947
1045
  const currentFolder = computed(() => {
948
1046
  return currentFolderId.value ? foldersStore.breadcrumbsCache[currentFolderId.value] : null;
@@ -985,6 +1083,9 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
985
1083
  }
986
1084
  return projectName.value;
987
1085
  });
1086
+ const personalProject = computed(() => {
1087
+ return projectsStore.personalProject;
1088
+ });
988
1089
  const workflowListResources = computed(() => {
989
1090
  const resources = (workflowsAndFolders.value || []).map((resource) => {
990
1091
  if (resource.resource === "folder") {
@@ -1006,6 +1107,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
1006
1107
  id: resource.id,
1007
1108
  name: resource.name,
1008
1109
  active: resource.active ?? false,
1110
+ isArchived: resource.isArchived,
1009
1111
  updatedAt: resource.updatedAt.toString(),
1010
1112
  createdAt: resource.createdAt.toString(),
1011
1113
  homeProject: resource.homeProject,
@@ -1040,7 +1142,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
1040
1142
  });
1041
1143
  const projectPermissions = computed(() => {
1042
1144
  return getResourcePermissions(
1043
- projectsStore.currentProject?.scopes ?? projectsStore.personalProject?.scopes
1145
+ projectsStore.currentProject?.scopes ?? personalProject.value?.scopes
1044
1146
  );
1045
1147
  });
1046
1148
  const emptyListDescription = computed(() => {
@@ -1053,7 +1155,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
1053
1155
  }
1054
1156
  });
1055
1157
  const hasFilters = computed(() => {
1056
- return !!(filters.value.search || filters.value.status !== StatusFilter.ALL || filters.value.tags.length);
1158
+ return !!(filters.value.search || filters.value.status !== StatusFilter.ALL || filters.value.showArchived || filters.value.tags.length);
1057
1159
  });
1058
1160
  const isSelfHostedDeployment = computed(() => settingsStore.deploymentType === "default");
1059
1161
  const canUserRegisterCommunityPlus = computed(
@@ -1062,17 +1164,15 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
1062
1164
  const showRegisteredCommunityCTA = computed(
1063
1165
  () => isSelfHostedDeployment.value && !foldersEnabled.value && canUserRegisterCommunityPlus.value
1064
1166
  );
1065
- watch(
1066
- () => route.params?.projectId,
1067
- async () => {
1068
- await initialize();
1069
- }
1070
- );
1167
+ watch([() => route.params?.projectId, () => route.name], async () => {
1168
+ loading.value = true;
1169
+ });
1071
1170
  watch(
1072
1171
  () => route.params?.folderId,
1073
1172
  async (newVal) => {
1074
1173
  currentFolderId.value = newVal;
1075
1174
  filters.value.search = "";
1175
+ saveFiltersOnQueryString();
1076
1176
  await fetchWorkflows();
1077
1177
  }
1078
1178
  );
@@ -1080,7 +1180,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
1080
1180
  if (name2 !== "pullWorkfolder") return;
1081
1181
  after(async () => await initialize());
1082
1182
  });
1083
- const onWorkflowDeleted = async () => {
1183
+ const refreshWorkflows = async () => {
1084
1184
  await Promise.all([
1085
1185
  fetchWorkflows(),
1086
1186
  foldersStore.fetchTotalWorkflowsAndFoldersCount(route.params.projectId)
@@ -1146,6 +1246,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
1146
1246
  const parentFolder = route.params?.folderId || void 0;
1147
1247
  const tags = filters.value.tags.length ? filters.value.tags.map((tagId) => tagsStore.tagsById[tagId]?.name) : [];
1148
1248
  const activeFilter = filters.value.status === StatusFilter.ALL ? void 0 : filters.value.status === StatusFilter.ACTIVE;
1249
+ const archivedFilter = filters.value.showArchived ? void 0 : false;
1149
1250
  const fetchFolders = showFolders.value && !tags.length && activeFilter === void 0;
1150
1251
  try {
1151
1252
  const fetchedResources = await workflowsStore.fetchWorkflowsPage(
@@ -1156,11 +1257,12 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
1156
1257
  {
1157
1258
  name: filters.value.search || void 0,
1158
1259
  active: activeFilter,
1260
+ isArchived: archivedFilter,
1159
1261
  tags: tags.length ? tags : void 0,
1160
- parentFolderId: parentFolder ?? (isOverviewPage.value ? void 0 : filters?.value.search ? void 0 : PROJECT_ROOT)
1161
- // Sending 0 will only show one level of folders
1262
+ parentFolderId: getParentFolderId(parentFolder)
1162
1263
  },
1163
- fetchFolders
1264
+ fetchFolders,
1265
+ projectPages.isSharedSubPage
1164
1266
  );
1165
1267
  foldersStore.cacheFolders(
1166
1268
  fetchedResources.filter((resource) => resource.resource === "folder").map((r) => ({ id: r.id, name: r.name, parentFolder: r.parentFolder?.id }))
@@ -1173,7 +1275,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
1173
1275
  breadcrumbsLoading.value = false;
1174
1276
  }
1175
1277
  workflowsAndFolders.value = fetchedResources;
1176
- showCardsBadge.value = isOverviewPage.value || filters.value.search !== "";
1278
+ showCardsBadge.value = projectPages.isOverviewSubPage || projectPages.isSharedSubPage || filters.value.search !== "";
1177
1279
  return fetchedResources;
1178
1280
  } catch (error) {
1179
1281
  toast.showError(error, i18n.baseText("workflows.list.error.fetching"));
@@ -1187,19 +1289,21 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
1187
1289
  }
1188
1290
  }
1189
1291
  };
1190
- const onSortUpdated = async (sort) => {
1191
- currentSort.value = WORKFLOWS_SORT_MAP[sort] ?? "updatedAt:desc";
1192
- if (currentSort.value !== "updatedAt:desc") {
1193
- void router.replace({ query: { ...route.query, sort } });
1194
- } else {
1195
- void router.replace({ query: { ...route.query, sort: void 0 } });
1292
+ const getParentFolderId = (routeId) => {
1293
+ if (routeId !== null && routeId !== void 0) {
1294
+ return routeId;
1295
+ }
1296
+ if (projectPages.isOverviewSubPage || projectPages.isSharedSubPage || filters?.value.search) {
1297
+ return void 0;
1196
1298
  }
1197
- await fetchWorkflows();
1299
+ return PROJECT_ROOT;
1198
1300
  };
1199
1301
  const onFiltersUpdated = async () => {
1200
1302
  currentPage.value = 1;
1201
1303
  saveFiltersOnQueryString();
1202
- await callDebounced(fetchWorkflows, { debounceTime: FILTERS_DEBOUNCE_TIME, trailing: true });
1304
+ if (!loading.value) {
1305
+ await callDebounced(fetchWorkflows, { debounceTime: FILTERS_DEBOUNCE_TIME, trailing: true });
1306
+ }
1203
1307
  };
1204
1308
  const onSearchUpdated = async (search) => {
1205
1309
  currentPage.value = 1;
@@ -1210,13 +1314,19 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
1210
1314
  await fetchWorkflows();
1211
1315
  }
1212
1316
  };
1213
- const setCurrentPage = async (page) => {
1214
- currentPage.value = page;
1215
- await callDebounced(fetchWorkflows, { debounceTime: FILTERS_DEBOUNCE_TIME, trailing: true });
1216
- };
1217
- const setPageSize = async (size) => {
1218
- pageSize.value = size;
1219
- await callDebounced(fetchWorkflows, { debounceTime: FILTERS_DEBOUNCE_TIME, trailing: true });
1317
+ const setPaginationAndSort = async (payload) => {
1318
+ if (payload.page) {
1319
+ currentPage.value = payload.page;
1320
+ }
1321
+ if (payload.pageSize) {
1322
+ pageSize.value = payload.pageSize;
1323
+ }
1324
+ if (payload.sort) {
1325
+ currentSort.value = WORKFLOWS_SORT_MAP[payload.sort] ?? "updatedAt:desc";
1326
+ }
1327
+ if (!loading.value) {
1328
+ await callDebounced(fetchWorkflows, { debounceTime: FILTERS_DEBOUNCE_TIME, trailing: true });
1329
+ }
1220
1330
  };
1221
1331
  const onClickTag = async (tagId) => {
1222
1332
  if (!filters.value.tags.includes(tagId)) {
@@ -1238,6 +1348,11 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
1238
1348
  } else {
1239
1349
  delete currentQuery.status;
1240
1350
  }
1351
+ if (filters.value.showArchived) {
1352
+ currentQuery.showArchived = "true";
1353
+ } else {
1354
+ delete currentQuery.showArchived;
1355
+ }
1241
1356
  if (filters.value.tags.length) {
1242
1357
  currentQuery.tags = filters.value.tags.join(",");
1243
1358
  } else {
@@ -1254,7 +1369,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
1254
1369
  };
1255
1370
  const setFiltersFromQueryString = async () => {
1256
1371
  const newQuery = { ...route.query };
1257
- const { tags, status, search, homeProject, sort } = route.query ?? {};
1372
+ const { tags, status, search, homeProject, sort, showArchived } = route.query ?? {};
1258
1373
  const isValidString = (value) => typeof value === "string" && value.trim().length > 0;
1259
1374
  if (isValidString(homeProject)) {
1260
1375
  await projectsStore.getAvailableProjects();
@@ -1285,8 +1400,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
1285
1400
  } else {
1286
1401
  delete newQuery.tags;
1287
1402
  }
1288
- const validStatusValues = ["true", "false"];
1289
- if (isValidString(status) && validStatusValues.includes(status)) {
1403
+ if (isValidString(status)) {
1290
1404
  newQuery.status = status;
1291
1405
  filters.value.status = status === "true" ? StatusFilter.ACTIVE : StatusFilter.DEACTIVATED;
1292
1406
  } else {
@@ -1299,6 +1413,13 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
1299
1413
  } else {
1300
1414
  delete newQuery.sort;
1301
1415
  }
1416
+ if (isValidString(showArchived)) {
1417
+ newQuery.showArchived = showArchived;
1418
+ filters.value.showArchived = showArchived === "true";
1419
+ } else {
1420
+ delete newQuery.showArchived;
1421
+ filters.value.showArchived = false;
1422
+ }
1302
1423
  void router.replace({ query: newQuery });
1303
1424
  };
1304
1425
  const addWorkflow = () => {
@@ -1842,6 +1963,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
1842
1963
  const _component_InlineTextEdit = InlineTextEdit;
1843
1964
  const _component_FolderBreadcrumbs = __unplugin_components_0;
1844
1965
  const _component_FolderCard = __unplugin_components_2;
1966
+ const _component_EmptySharedSectionActionBox = _sfc_main$4;
1967
+ const _component_N8nCheckbox = resolveComponent("N8nCheckbox");
1845
1968
  const _component_n8n_action_box = resolveComponent("n8n-action-box");
1846
1969
  return openBlock(), createBlock(ResourcesListLayout, {
1847
1970
  filters: filters.value,
@@ -1864,15 +1987,13 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
1864
1987
  "has-empty-state": unref(foldersStore).totalWorkflowCount === 0 && !currentFolderId.value,
1865
1988
  "onClick:add": addWorkflow,
1866
1989
  "onUpdate:search": onSearchUpdated,
1867
- "onUpdate:currentPage": setCurrentPage,
1868
- "onUpdate:pageSize": setPageSize,
1869
- onSort: onSortUpdated,
1990
+ "onUpdate:paginationAndSort": setPaginationAndSort,
1870
1991
  onMouseleave: unref(folderHelpers).resetDropTarget
1871
1992
  }, createSlots({
1872
1993
  header: withCtx(() => [
1873
1994
  createVNode(ProjectHeader, { onCreateFolder: createFolderInCurrent }, {
1874
1995
  default: withCtx(() => [
1875
- unref(overview).isOverviewSubPage && unref(insightsStore).isSummaryEnabled ? (openBlock(), createBlock(InsightsSummary, {
1996
+ unref(projectPages).isOverviewSubPage && unref(insightsStore).isSummaryEnabled ? (openBlock(), createBlock(InsightsSummary, {
1876
1997
  key: 0,
1877
1998
  loading: unref(insightsStore).weeklySummary.isLoading,
1878
1999
  summary: unref(insightsStore).weeklySummary.state,
@@ -1883,7 +2004,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
1883
2004
  })
1884
2005
  ]),
1885
2006
  callout: withCtx(() => [
1886
- showEasyAIWorkflowCallout.value && easyAICalloutVisible.value ? (openBlock(), createBlock(_component_N8nCallout, {
2007
+ !loading.value && showEasyAIWorkflowCallout.value && easyAICalloutVisible.value ? (openBlock(), createBlock(_component_N8nCallout, {
1887
2008
  key: 0,
1888
2009
  theme: "secondary",
1889
2010
  icon: "robot",
@@ -1995,7 +2116,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
1995
2116
  data,
1996
2117
  actions: folderCardActions.value,
1997
2118
  "read-only": readOnlyEnv.value || !hasPermissionToDeleteFolders.value && !hasPermissionToCreateFolders.value,
1998
- "personal-project": unref(projectsStore).personalProject,
2119
+ "personal-project": personalProject.value,
1999
2120
  "data-resourceid": data.id,
2000
2121
  "data-resourcename": data.name,
2001
2122
  class: normalizeClass([{
@@ -2052,7 +2173,9 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
2052
2173
  "show-ownership-badge": showCardsBadge.value,
2053
2174
  "data-target": "workflow",
2054
2175
  "onClick:tag": onClickTag,
2055
- "onWorkflow:deleted": onWorkflowDeleted,
2176
+ "onWorkflow:deleted": refreshWorkflows,
2177
+ "onWorkflow:archived": refreshWorkflows,
2178
+ "onWorkflow:unarchived": refreshWorkflows,
2056
2179
  "onWorkflow:moved": fetchWorkflows,
2057
2180
  "onWorkflow:duplicated": fetchWorkflows,
2058
2181
  "onWorkflow:activeToggle": onWorkflowActiveToggle,
@@ -2064,86 +2187,92 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
2064
2187
  }, 1032, ["disabled", "onDragstart", "onDragend"]))
2065
2188
  ]),
2066
2189
  empty: withCtx(() => [
2067
- createBaseVNode("div", _hoisted_5, [
2068
- createVNode(unref(N8nHeading), {
2069
- tag: "h2",
2070
- size: "xlarge",
2071
- class: "mb-2xs"
2072
- }, {
2073
- default: withCtx(() => [
2074
- createTextVNode(toDisplayString(currentUser.value.firstName ? unref(i18n).baseText("workflows.empty.heading", {
2075
- interpolate: { name: currentUser.value.firstName }
2076
- }) : unref(i18n).baseText("workflows.empty.heading.userNotSetup")), 1)
2077
- ]),
2078
- _: 1
2079
- }),
2080
- createVNode(unref(N8nText), {
2081
- size: "large",
2082
- color: "text-base"
2083
- }, {
2084
- default: withCtx(() => [
2085
- createTextVNode(toDisplayString(emptyListDescription.value), 1)
2086
- ]),
2087
- _: 1
2088
- })
2089
- ]),
2090
- !readOnlyEnv.value && projectPermissions.value.workflow.create ? (openBlock(), createElementBlock("div", {
2190
+ unref(projectPages).isSharedSubPage && personalProject.value ? (openBlock(), createBlock(_component_EmptySharedSectionActionBox, {
2091
2191
  key: 0,
2092
- class: normalizeClass(["text-center", "mt-2xl", _ctx.$style.actionsContainer])
2093
- }, [
2094
- createVNode(unref(N8nCard), {
2095
- class: normalizeClass(_ctx.$style.emptyStateCard),
2096
- hoverable: "",
2097
- "data-test-id": "new-workflow-card",
2098
- onClick: addWorkflow
2099
- }, {
2100
- default: withCtx(() => [
2101
- createVNode(unref(N8nIcon), {
2102
- class: normalizeClass(_ctx.$style.emptyStateCardIcon),
2103
- icon: "file"
2104
- }, null, 8, ["class"]),
2105
- createVNode(unref(N8nText), {
2106
- size: "large",
2107
- class: "mt-xs",
2108
- color: "text-dark"
2109
- }, {
2110
- default: withCtx(() => [
2111
- createTextVNode(toDisplayString(unref(i18n).baseText("workflows.empty.startFromScratch")), 1)
2112
- ]),
2113
- _: 1
2114
- })
2115
- ]),
2116
- _: 1
2117
- }, 8, ["class"]),
2118
- showEasyAIWorkflowCallout.value ? (openBlock(), createBlock(unref(N8nCard), {
2192
+ "personal-project": personalProject.value,
2193
+ "resource-type": "workflows"
2194
+ }, null, 8, ["personal-project"])) : (openBlock(), createElementBlock("div", _hoisted_5, [
2195
+ createBaseVNode("div", _hoisted_6, [
2196
+ createVNode(unref(N8nHeading), {
2197
+ tag: "h2",
2198
+ size: "xlarge",
2199
+ class: "mb-2xs"
2200
+ }, {
2201
+ default: withCtx(() => [
2202
+ createTextVNode(toDisplayString(currentUser.value.firstName ? unref(i18n).baseText("workflows.empty.heading", {
2203
+ interpolate: { name: currentUser.value.firstName }
2204
+ }) : unref(i18n).baseText("workflows.empty.heading.userNotSetup")), 1)
2205
+ ]),
2206
+ _: 1
2207
+ }),
2208
+ createVNode(unref(N8nText), {
2209
+ size: "large",
2210
+ color: "text-base"
2211
+ }, {
2212
+ default: withCtx(() => [
2213
+ createTextVNode(toDisplayString(emptyListDescription.value), 1)
2214
+ ]),
2215
+ _: 1
2216
+ })
2217
+ ]),
2218
+ !readOnlyEnv.value && projectPermissions.value.workflow.create ? (openBlock(), createElementBlock("div", {
2119
2219
  key: 0,
2120
- class: normalizeClass(_ctx.$style.emptyStateCard),
2121
- hoverable: "",
2122
- "data-test-id": "easy-ai-workflow-card",
2123
- onClick: _cache[2] || (_cache[2] = ($event) => openAIWorkflow("empty"))
2124
- }, {
2125
- default: withCtx(() => [
2126
- createVNode(unref(N8nIcon), {
2127
- class: normalizeClass(_ctx.$style.emptyStateCardIcon),
2128
- icon: "robot"
2129
- }, null, 8, ["class"]),
2130
- createVNode(unref(N8nText), {
2131
- size: "large",
2132
- class: "mt-xs pl-2xs pr-2xs",
2133
- color: "text-dark"
2134
- }, {
2135
- default: withCtx(() => [
2136
- createTextVNode(toDisplayString(unref(i18n).baseText("workflows.empty.easyAI")), 1)
2137
- ]),
2138
- _: 1
2139
- })
2140
- ]),
2141
- _: 1
2142
- }, 8, ["class"])) : createCommentVNode("", true)
2143
- ], 2)) : createCommentVNode("", true)
2220
+ class: normalizeClass(["text-center", "mt-2xl", _ctx.$style.actionsContainer])
2221
+ }, [
2222
+ createVNode(unref(N8nCard), {
2223
+ class: normalizeClass(_ctx.$style.emptyStateCard),
2224
+ hoverable: "",
2225
+ "data-test-id": "new-workflow-card",
2226
+ onClick: addWorkflow
2227
+ }, {
2228
+ default: withCtx(() => [
2229
+ createVNode(unref(N8nIcon), {
2230
+ class: normalizeClass(_ctx.$style.emptyStateCardIcon),
2231
+ icon: "file"
2232
+ }, null, 8, ["class"]),
2233
+ createVNode(unref(N8nText), {
2234
+ size: "large",
2235
+ class: "mt-xs",
2236
+ color: "text-dark"
2237
+ }, {
2238
+ default: withCtx(() => [
2239
+ createTextVNode(toDisplayString(unref(i18n).baseText("workflows.empty.startFromScratch")), 1)
2240
+ ]),
2241
+ _: 1
2242
+ })
2243
+ ]),
2244
+ _: 1
2245
+ }, 8, ["class"]),
2246
+ showEasyAIWorkflowCallout.value ? (openBlock(), createBlock(unref(N8nCard), {
2247
+ key: 0,
2248
+ class: normalizeClass(_ctx.$style.emptyStateCard),
2249
+ hoverable: "",
2250
+ "data-test-id": "easy-ai-workflow-card",
2251
+ onClick: _cache[2] || (_cache[2] = ($event) => openAIWorkflow("empty"))
2252
+ }, {
2253
+ default: withCtx(() => [
2254
+ createVNode(unref(N8nIcon), {
2255
+ class: normalizeClass(_ctx.$style.emptyStateCardIcon),
2256
+ icon: "robot"
2257
+ }, null, 8, ["class"]),
2258
+ createVNode(unref(N8nText), {
2259
+ size: "large",
2260
+ class: "mt-xs pl-2xs pr-2xs",
2261
+ color: "text-dark"
2262
+ }, {
2263
+ default: withCtx(() => [
2264
+ createTextVNode(toDisplayString(unref(i18n).baseText("workflows.empty.easyAI")), 1)
2265
+ ]),
2266
+ _: 1
2267
+ })
2268
+ ]),
2269
+ _: 1
2270
+ }, 8, ["class"])) : createCommentVNode("", true)
2271
+ ], 2)) : createCommentVNode("", true)
2272
+ ]))
2144
2273
  ]),
2145
2274
  filters: withCtx(({ setKeyValue }) => [
2146
- unref(settingsStore).areTagsEnabled ? (openBlock(), createElementBlock("div", _hoisted_6, [
2275
+ unref(settingsStore).areTagsEnabled ? (openBlock(), createElementBlock("div", _hoisted_7, [
2147
2276
  createVNode(unref(N8nInputLabel), {
2148
2277
  label: unref(i18n).baseText("workflows.filters.tags"),
2149
2278
  bold: false,
@@ -2151,14 +2280,14 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
2151
2280
  color: "text-base",
2152
2281
  class: "mb-3xs"
2153
2282
  }, null, 8, ["label"]),
2154
- createVNode(_sfc_main$4, {
2283
+ createVNode(_sfc_main$5, {
2155
2284
  placeholder: unref(i18n).baseText("workflowOpen.filterWorkflows"),
2156
2285
  "model-value": filters.value.tags,
2157
2286
  "create-enabled": false,
2158
2287
  "onUpdate:modelValue": ($event) => setKeyValue("tags", $event)
2159
2288
  }, null, 8, ["placeholder", "model-value", "onUpdate:modelValue"])
2160
2289
  ])) : createCommentVNode("", true),
2161
- createBaseVNode("div", _hoisted_7, [
2290
+ createBaseVNode("div", _hoisted_8, [
2162
2291
  createVNode(unref(N8nInputLabel), {
2163
2292
  label: unref(i18n).baseText("workflows.filters.status"),
2164
2293
  bold: false,
@@ -2173,7 +2302,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
2173
2302
  }, {
2174
2303
  default: withCtx(() => [
2175
2304
  (openBlock(true), createElementBlock(Fragment, null, renderList(statusFilterOptions.value, (option) => {
2176
- return openBlock(), createBlock(unref(_sfc_main$5), {
2305
+ return openBlock(), createBlock(unref(_sfc_main$6), {
2177
2306
  key: option.label,
2178
2307
  label: option.label,
2179
2308
  value: option.value,
@@ -2183,15 +2312,28 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
2183
2312
  ]),
2184
2313
  _: 2
2185
2314
  }, 1032, ["model-value", "onUpdate:modelValue"])
2315
+ ]),
2316
+ createBaseVNode("div", _hoisted_9, [
2317
+ createVNode(_component_N8nCheckbox, {
2318
+ label: unref(i18n).baseText("workflows.filters.showArchived"),
2319
+ "model-value": filters.value.showArchived || false,
2320
+ "data-test-id": "show-archived-checkbox",
2321
+ "onUpdate:modelValue": ($event) => setKeyValue("showArchived", $event)
2322
+ }, null, 8, ["label", "model-value", "onUpdate:modelValue"])
2186
2323
  ])
2187
2324
  ]),
2188
2325
  postamble: withCtx(() => [
2189
- workflowsAndFolders.value.length === 0 && currentFolder.value && !hasFilters.value ? (openBlock(), createElementBlock("div", {
2326
+ workflowsAndFolders.value.length === 0 && !hasFilters.value ? (openBlock(), createElementBlock("div", {
2190
2327
  key: 0,
2191
2328
  class: normalizeClass(_ctx.$style["empty-folder-container"]),
2192
2329
  "data-test-id": "empty-folder-container"
2193
2330
  }, [
2194
- createVNode(_component_n8n_action_box, {
2331
+ unref(projectPages).isSharedSubPage && personalProject.value ? (openBlock(), createBlock(_component_EmptySharedSectionActionBox, {
2332
+ key: 0,
2333
+ "personal-project": personalProject.value,
2334
+ "resource-type": "workflows"
2335
+ }, null, 8, ["personal-project"])) : currentFolder.value ? (openBlock(), createBlock(_component_n8n_action_box, {
2336
+ key: 1,
2195
2337
  "data-test-id": "empty-folder-action-box",
2196
2338
  heading: unref(i18n).baseText("folders.empty.actionbox.title", {
2197
2339
  interpolate: { folderName: currentFolder.value.name }
@@ -2205,7 +2347,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
2205
2347
  createTextVNode(toDisplayString(readOnlyEnv.value ? unref(i18n).baseText("readOnlyEnv.cantAdd.workflow") : unref(i18n).baseText("generic.missing.permissions")), 1)
2206
2348
  ]),
2207
2349
  _: 1
2208
- }, 8, ["heading", "button-text", "button-disabled"])
2350
+ }, 8, ["heading", "button-text", "button-disabled"])) : createCommentVNode("", true)
2209
2351
  ], 2)) : createCommentVNode("", true)
2210
2352
  ]),
2211
2353
  _: 2
@@ -2215,10 +2357,10 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
2215
2357
  fn: withCtx(() => [
2216
2358
  createVNode(_component_N8nTooltip, {
2217
2359
  placement: "top",
2218
- disabled: !(isOverviewPage.value || !readOnlyEnv.value && hasPermissionToCreateFolders.value)
2360
+ disabled: !(unref(projectPages).isOverviewSubPage || unref(projectPages).isSharedSubPage || !readOnlyEnv.value && hasPermissionToCreateFolders.value)
2219
2361
  }, {
2220
2362
  content: withCtx(() => [
2221
- isOverviewPage.value && !showRegisteredCommunityCTA.value ? (openBlock(), createElementBlock("span", _hoisted_1, [
2363
+ (unref(projectPages).isOverviewSubPage || unref(projectPages).isSharedSubPage) && !showRegisteredCommunityCTA.value ? (openBlock(), createElementBlock("span", _hoisted_1, [
2222
2364
  teamProjectsEnabled.value ? (openBlock(), createElementBlock("span", _hoisted_2, toDisplayString(unref(i18n).baseText("folders.add.overview.withProjects.message")), 1)) : (openBlock(), createElementBlock("span", _hoisted_3, toDisplayString(unref(i18n).baseText("folders.add.overview.community.message")), 1))
2223
2365
  ])) : (openBlock(), createElementBlock("span", _hoisted_4, toDisplayString(currentParentName.value ? unref(i18n).baseText("folders.add.to.parent.message", {
2224
2366
  interpolate: { parent: currentParentName.value }