@loopstack/loopstack-studio 0.25.2 → 0.26.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 (96) hide show
  1. package/dist/api/environments.js +4 -0
  2. package/dist/api/index.js +13 -9
  3. package/dist/app/EnvironmentEmbedRoot.js +29 -19
  4. package/dist/components/data-table/DataList.js +93 -91
  5. package/dist/components/data-table/DataTable.js +128 -126
  6. package/dist/components/feedback/Snackbar.js +1 -1
  7. package/dist/components/layout/StudioSidebar.js +124 -131
  8. package/dist/components/ui/sidebar.js +2 -2
  9. package/dist/components/ui/slider.js +37 -26
  10. package/dist/components/ui-widgets/widgets/SandboxRun.js +16 -14
  11. package/dist/features/code-explorer/components/CodeExplorerTree.js +1 -0
  12. package/dist/features/code-explorer/components/FileContentViewer.js +1 -1
  13. package/dist/features/dashboard/RunItem.js +39 -37
  14. package/dist/features/debug/lib/flow-utils.js +1 -1
  15. package/dist/features/documents/DocumentRenderer.js +59 -58
  16. package/dist/features/documents/renderers/useDocumentTransition.js +29 -24
  17. package/dist/features/feature-registry/FeatureRegistryProvider.js +17 -0
  18. package/dist/features/feature-registry/index.js +1 -0
  19. package/dist/features/file-explorer/api/files.js +7 -0
  20. package/dist/features/file-explorer/components/FileExplorerPanel.js +95 -0
  21. package/dist/features/{workbench/components/RemoteFileTabsBar.js → file-explorer/components/FileTabsBar.js} +4 -4
  22. package/dist/features/{workbench/components/RemoteFileTree.js → file-explorer/components/FileTree.js} +6 -6
  23. package/dist/features/file-explorer/file-explorer-feature.js +12 -0
  24. package/dist/features/file-explorer/hooks/useFileExplorer.js +44 -0
  25. package/dist/features/file-explorer/index.js +2 -0
  26. package/dist/features/file-explorer/providers/FileExplorerProvider.js +112 -0
  27. package/dist/features/oauth/OAuthPromptRenderer.js +162 -132
  28. package/dist/features/runs/Runs.js +1 -1
  29. package/dist/features/secrets/components/WorkbenchSecretsPanel.js +178 -0
  30. package/dist/features/secrets/index.js +1 -0
  31. package/dist/features/{documents → secrets}/renderers/SecretInputRenderer.js +17 -17
  32. package/dist/features/secrets/secrets-feature.js +14 -0
  33. package/dist/features/workbench/Workbench.js +32 -82
  34. package/dist/features/workbench/WorkflowList.js +109 -46
  35. package/dist/features/workbench/components/SidebarPanel.js +155 -0
  36. package/dist/features/workbench/components/WorkbenchEnvironmentPanel.js +82 -0
  37. package/dist/features/workbench/components/WorkbenchIconSidebar.js +128 -60
  38. package/dist/features/workbench/components/WorkbenchPreviewPanel.js +127 -114
  39. package/dist/features/workbench/components/WorkbenchRunsPanel.js +32 -0
  40. package/dist/features/workbench/components/WorkbenchSidebarShell.js +80 -0
  41. package/dist/features/workbench/hooks/useWorkflowData.js +3 -3
  42. package/dist/features/workbench/index.js +3 -2
  43. package/dist/features/workbench/providers/WorkbenchLayoutProvider.js +60 -62
  44. package/dist/features/workspaces/Workspaces.js +1 -1
  45. package/dist/features/workspaces/components/EnvironmentSlotSelector.js +68 -51
  46. package/dist/features/workspaces/components/WorkflowRunForm.js +1 -1
  47. package/dist/features/workspaces/components/WorkspaceHomePage.js +1 -1
  48. package/dist/hooks/useEnvironmentPreviewUrl.js +13 -0
  49. package/dist/hooks/useEnvironments.js +8 -0
  50. package/dist/hooks/useWorkflows.js +28 -26
  51. package/dist/hooks/useWorkspaces.js +28 -26
  52. package/dist/index.d.ts +98 -7
  53. package/dist/index.js +8 -1
  54. package/dist/loopstack-studio.css +1 -1
  55. package/dist/node_modules/@shikijs/core/dist/index.js +105 -643
  56. package/dist/node_modules/@shikijs/engine-oniguruma/dist/index.js +135 -122
  57. package/dist/node_modules/@shikijs/langs/dist/bird2.js +1 -1
  58. package/dist/node_modules/@shikijs/langs/dist/cobol.js +1 -1
  59. package/dist/node_modules/@shikijs/langs/dist/css.js +1 -1
  60. package/dist/node_modules/@shikijs/langs/dist/dart.js +1 -1
  61. package/dist/node_modules/@shikijs/langs/dist/emacs-lisp.js +1 -1
  62. package/dist/node_modules/@shikijs/langs/dist/es-tag-sql.js +1 -1
  63. package/dist/node_modules/@shikijs/langs/dist/go.js +1 -1
  64. package/dist/node_modules/@shikijs/langs/dist/kusto.js +1 -1
  65. package/dist/node_modules/@shikijs/langs/dist/nextflow-groovy.js +1 -1
  66. package/dist/node_modules/@shikijs/langs/dist/php.js +1 -1
  67. package/dist/node_modules/@shikijs/langs/dist/ruby.js +1 -1
  68. package/dist/node_modules/@shikijs/langs/dist/typespec.js +1 -1
  69. package/dist/node_modules/@shikijs/primitive/dist/index.js +538 -0
  70. package/dist/node_modules/@shikijs/themes/dist/horizon-bright.js +1 -1
  71. package/dist/node_modules/@xyflow/react/dist/esm/index.js +1 -1
  72. package/dist/node_modules/shiki/dist/bundle-full.js +6 -5
  73. package/dist/node_modules/shiki/dist/chunk-CtajNgzt.js +15 -0
  74. package/dist/node_modules/shiki/dist/engine-oniguruma.js +5 -0
  75. package/dist/node_modules/shiki/dist/{langs.js → langs-bundle-full-DfKZStlK.js} +1 -1
  76. package/dist/node_modules/shiki/dist/themes.js +1 -1
  77. package/dist/pages/DashboardPage.js +54 -79
  78. package/dist/pages/DebugWorkflowDetailsPage.js +41 -55
  79. package/dist/pages/DebugWorkflowsPage.js +151 -112
  80. package/dist/pages/EmbedWorkbenchPage.js +2 -1
  81. package/dist/pages/PreviewWorkbenchPage.js +77 -59
  82. package/dist/pages/RunsListPage.js +27 -41
  83. package/dist/pages/RunsPage.js +21 -36
  84. package/dist/pages/WorkbenchPage.js +48 -70
  85. package/dist/pages/WorkflowDebugPage.js +65 -79
  86. package/dist/pages/WorkspacePage.js +59 -86
  87. package/dist/pages/WorkspaceRunsPage.js +59 -54
  88. package/dist/pages/WorkspacesPage.js +11 -27
  89. package/dist/providers/StudioPreferencesProvider.js +54 -0
  90. package/package.json +29 -29
  91. package/dist/features/workbench/components/WorkbenchFilesPanel.js +0 -67
  92. package/dist/features/workbench/components/WorkbenchFloatingPanel.js +0 -57
  93. package/dist/features/workbench/components/WorkbenchFlowPanel.js +0 -47
  94. package/dist/features/workbench/components/WorkbenchSecretsPanel.js +0 -182
  95. package/dist/features/workbench/providers/RemoteFileExplorerProvider.js +0 -160
  96. /package/dist/{node_modules → frontend/studio/node_modules}/@dagrejs/dagre/dist/dagre.esm.js +0 -0
@@ -0,0 +1,4 @@
1
+ function createEnvironmentsApi(e) {
2
+ return { resetEnvironment: (t) => e.post(`/api/v1/workspaces/${t.workspaceId}/environments/${t.slotId}/reset`).then((e) => e.data) };
3
+ }
4
+ export { createEnvironmentsApi };
package/dist/api/index.js CHANGED
@@ -1,22 +1,26 @@
1
+ import { createFilesApi } from "../features/file-explorer/api/files.js";
1
2
  import { createAuthApi } from "./auth.js";
2
3
  import { createConfigApi } from "./config.js";
3
4
  import { createDashboardApi } from "./dashboard.js";
4
5
  import { createDocumentsApi } from "./documents.js";
6
+ import { createEnvironmentsApi } from "./environments.js";
5
7
  import { createProcessorApi } from "./processor.js";
6
8
  import { createSecretsApi } from "./secrets.js";
7
9
  import { createWorkflowsApi } from "./workflows.js";
8
10
  import { createWorkspacesApi } from "./workspaces.js";
9
11
  import { createAxiosClient } from "./client.js";
10
- function createApi(l) {
12
+ function createApi(d) {
11
13
  return {
12
- auth: createAuthApi(l),
13
- config: createConfigApi(l),
14
- dashboard: createDashboardApi(l),
15
- documents: createDocumentsApi(l),
16
- processor: createProcessorApi(l),
17
- secrets: createSecretsApi(l),
18
- workflows: createWorkflowsApi(l),
19
- workspaces: createWorkspacesApi(l)
14
+ auth: createAuthApi(d),
15
+ config: createConfigApi(d),
16
+ dashboard: createDashboardApi(d),
17
+ documents: createDocumentsApi(d),
18
+ environments: createEnvironmentsApi(d),
19
+ files: createFilesApi(d),
20
+ processor: createProcessorApi(d),
21
+ secrets: createSecretsApi(d),
22
+ workflows: createWorkflowsApi(d),
23
+ workspaces: createWorkspacesApi(d)
20
24
  };
21
25
  }
22
26
  export { createApi };
@@ -2,34 +2,44 @@ import { StudioProvider } from "../providers/StudioProvider.js";
2
2
  import { SseProvider } from "../providers/SseProvider.js";
3
3
  import { InvalidationEventsProvider } from "../providers/InvalidationEventsProvider.js";
4
4
  import { useRouter } from "../routing/LocalRouter.js";
5
+ import { FeatureRegistryProvider } from "../features/feature-registry/FeatureRegistryProvider.js";
6
+ import "../features/feature-registry/index.js";
7
+ import { fileExplorerFeature } from "../features/file-explorer/file-explorer-feature.js";
8
+ import "../features/file-explorer/index.js";
5
9
  import LocalHealthCheck_default from "../features/health/LocalHealthCheck.js";
10
+ import { secretsFeature } from "../features/secrets/secrets-feature.js";
11
+ import "../features/secrets/index.js";
6
12
  import { QueryProvider } from "../providers/QueryProvider.js";
7
13
  import { c } from "react/compiler-runtime";
8
14
  import { jsx, jsxs } from "react/jsx-runtime";
9
15
  import { Outlet, useSearchParams } from "react-router-dom";
16
+ var defaultFeatures = [secretsFeature, fileExplorerFeature];
10
17
  function EnvironmentEmbedRoot() {
11
- let f = c(14), [p] = useSearchParams(), m;
12
- f[0] === p ? m = f[1] : (m = p.get("url") ?? "http://localhost:3080", f[0] = p, f[1] = m);
13
- let h = m, g;
14
- f[2] === p ? g = f[3] : (g = p.get("name") ?? "Preview Environment", f[2] = p, f[3] = g);
18
+ let m = c(11), [h] = useSearchParams(), g;
19
+ m[0] === h ? g = m[1] : (g = h.get("url") ?? "http://localhost:3080", m[0] = h, m[1] = g);
15
20
  let _ = g, v;
16
- f[4] !== _ || f[5] !== h ? (v = {
21
+ m[2] === h ? v = m[3] : (v = h.get("name") ?? "Preview Environment", m[2] = h, m[3] = v);
22
+ let y = v, b;
23
+ m[4] !== y || m[5] !== _ ? (b = {
17
24
  id: "preview-env",
18
- name: _,
19
- url: h
20
- }, f[4] = _, f[5] = h, f[6] = v) : v = f[6];
21
- let y = v, b = useRouter(y.id, "/embed/env"), x, S, C, w;
22
- f[7] === Symbol.for("react.memo_cache_sentinel") ? (x = /* @__PURE__ */ jsx(LocalHealthCheck_default, {}), S = /* @__PURE__ */ jsx(SseProvider, {}), C = /* @__PURE__ */ jsx(InvalidationEventsProvider, {}), w = /* @__PURE__ */ jsx(Outlet, {}), f[7] = x, f[8] = S, f[9] = C, f[10] = w) : (x = f[7], S = f[8], C = f[9], w = f[10]);
23
- let T;
24
- return f[11] !== y || f[12] !== b ? (T = /* @__PURE__ */ jsx(QueryProvider, { children: /* @__PURE__ */ jsxs(StudioProvider, {
25
- router: b,
26
- environment: y,
25
+ name: y,
26
+ url: _
27
+ }, m[4] = y, m[5] = _, m[6] = b) : b = m[6];
28
+ let x = b, S = useRouter(x.id, "/embed/env"), C;
29
+ m[7] === Symbol.for("react.memo_cache_sentinel") ? (C = /* @__PURE__ */ jsxs(FeatureRegistryProvider, {
30
+ features: defaultFeatures,
27
31
  children: [
28
- x,
29
- S,
30
- C,
31
- w
32
+ /* @__PURE__ */ jsx(LocalHealthCheck_default, {}),
33
+ /* @__PURE__ */ jsx(SseProvider, {}),
34
+ /* @__PURE__ */ jsx(InvalidationEventsProvider, {}),
35
+ /* @__PURE__ */ jsx(Outlet, {})
32
36
  ]
33
- }) }), f[11] = y, f[12] = b, f[13] = T) : T = f[13], T;
37
+ }), m[7] = C) : C = m[7];
38
+ let w;
39
+ return m[8] !== x || m[9] !== S ? (w = /* @__PURE__ */ jsx(QueryProvider, { children: /* @__PURE__ */ jsx(StudioProvider, {
40
+ router: S,
41
+ environment: x,
42
+ children: C
43
+ }) }), m[8] = x, m[9] = S, m[10] = w) : w = m[10], w;
34
44
  }
35
45
  export { EnvironmentEmbedRoot as default };
@@ -11,101 +11,103 @@ import { useState } from "react";
11
11
  import { jsx, jsxs } from "react/jsx-runtime";
12
12
  import { Loader2, Trash2 } from "lucide-react";
13
13
  function DataList(he) {
14
- let r = c(89), { data: i, totalItems: a, loading: ge, error: o, page: _e, pageSize: ve, onPageChange: ye, onPageSizeChange: be, searchTerm: xe, onSearchChange: s, filters: l, filterConfig: u, onFiltersChange: d, onRowClick: f, onNew: p, enableBatchActions: Se, batchActions: m, onBatchDelete: h, rowActions: Ce, itemRenderer: we, newButtonLabel: Te } = he, Ee = ge === void 0 ? !1 : ge, g;
15
- r[0] === l ? g = r[1] : (g = l === void 0 ? {} : l, r[0] = l, r[1] = g);
16
- let _ = g, v;
17
- r[2] === u ? v = r[3] : (v = u === void 0 ? {} : u, r[2] = u, r[3] = v);
18
- let y = v, b = Se === void 0 ? !0 : Se, x;
19
- r[4] === m ? x = r[5] : (x = m === void 0 ? [] : m, r[4] = m, r[5] = x);
20
- let De = x, Oe = Ce === void 0 ? [] : Ce, S;
21
- r[6] === Symbol.for("react.memo_cache_sentinel") ? (S = [], r[6] = S) : S = r[6];
22
- let [C, w] = useState(S), [T, ke] = useState(!1), E;
23
- r[7] === Symbol.for("react.memo_cache_sentinel") ? (E = {
14
+ let r = c(92), { data: i, totalItems: a, loading: ge, error: o, page: _e, pageSize: ve, onPageChange: ye, onPageSizeChange: be, searchTerm: xe, onSearchChange: s, filters: l, filterConfig: u, onFiltersChange: d, onRowClick: Se, onNew: f, enableBatchActions: Ce, batchActions: p, onBatchDelete: m, rowActions: we, itemRenderer: Te, newButtonLabel: Ee } = he, De = ge === void 0 ? !1 : ge, h;
15
+ r[0] === l ? h = r[1] : (h = l === void 0 ? {} : l, r[0] = l, r[1] = h);
16
+ let g = h, _;
17
+ r[2] === u ? _ = r[3] : (_ = u === void 0 ? {} : u, r[2] = u, r[3] = _);
18
+ let v = _, y = Ce === void 0 ? !0 : Ce, b;
19
+ r[4] === p ? b = r[5] : (b = p === void 0 ? [] : p, r[4] = p, r[5] = b);
20
+ let Oe = b, ke = we === void 0 ? [] : we, x;
21
+ r[6] === Symbol.for("react.memo_cache_sentinel") ? (x = [], r[6] = x) : x = r[6];
22
+ let [S, C] = useState(x), [w, Ae] = useState(!1), T;
23
+ r[7] === Symbol.for("react.memo_cache_sentinel") ? (T = {
24
24
  isOpen: !1,
25
25
  type: "single"
26
- }, r[7] = E) : E = r[7];
27
- let [D, O] = useState(E), k;
28
- r[8] !== i || r[9] !== C.length ? (k = () => {
29
- C.length === i.length ? w([]) : w(i.map(_temp));
30
- }, r[8] = i, r[9] = C.length, r[10] = k) : k = r[10];
31
- let Ae = k, A;
32
- r[11] === Symbol.for("react.memo_cache_sentinel") ? (A = (e) => {
33
- w((t) => t.includes(e) ? t.filter((t) => t !== e) : [...t, e]);
34
- }, r[11] = A) : A = r[11];
35
- let je = A, j;
36
- r[12] === Symbol.for("react.memo_cache_sentinel") ? (j = () => w([]), r[12] = j) : j = r[12];
37
- let Me = j, M;
38
- r[13] === O ? M = r[14] : (M = () => {
39
- O({
26
+ }, r[7] = T) : T = r[7];
27
+ let [E, D] = useState(T), O;
28
+ r[8] !== i || r[9] !== S.length ? (O = () => {
29
+ S.length === i.length ? C([]) : C(i.map(_temp));
30
+ }, r[8] = i, r[9] = S.length, r[10] = O) : O = r[10];
31
+ let je = O, k;
32
+ r[11] === Symbol.for("react.memo_cache_sentinel") ? (k = (e) => {
33
+ C((t) => t.includes(e) ? t.filter((t) => t !== e) : [...t, e]);
34
+ }, r[11] = k) : k = r[11];
35
+ let Me = k, A;
36
+ r[12] === Symbol.for("react.memo_cache_sentinel") ? (A = () => C([]), r[12] = A) : A = r[12];
37
+ let Ne = A, j;
38
+ r[13] === D ? j = r[14] : (j = () => {
39
+ D({
40
40
  isOpen: !0,
41
41
  type: "batch"
42
42
  });
43
- }, r[13] = O, r[14] = M);
44
- let N = M, P;
45
- r[15] !== D.itemId || r[16] !== D.type || r[17] !== h || r[18] !== C || r[19] !== O ? (P = async () => {
46
- D.type === "single" && D.itemId || D.type === "batch" && (await h?.(C), Me()), O({
43
+ }, r[13] = D, r[14] = j);
44
+ let M = j, N;
45
+ r[15] !== E.itemId || r[16] !== E.type || r[17] !== m || r[18] !== S || r[19] !== D ? (N = async () => {
46
+ E.type === "single" && E.itemId || E.type === "batch" && (await m?.(S), Ne()), D({
47
47
  isOpen: !1,
48
48
  type: "single"
49
49
  });
50
- }, r[15] = D.itemId, r[16] = D.type, r[17] = h, r[18] = C, r[19] = O, r[20] = P) : P = r[20];
51
- let F = P, I;
52
- r[21] !== N || r[22] !== h ? (I = h ? [{
50
+ }, r[15] = E.itemId, r[16] = E.type, r[17] = m, r[18] = S, r[19] = D, r[20] = N) : N = r[20];
51
+ let P = N, F;
52
+ r[21] !== M || r[22] !== m ? (F = m ? [{
53
53
  id: "delete",
54
54
  label: "Delete Selected",
55
55
  icon: /* @__PURE__ */ jsx(Trash2, { className: "mr-2 h-4 w-4" }),
56
56
  variant: "destructive",
57
- action: N
58
- }] : [], r[21] = N, r[22] = h, r[23] = I) : I = r[23];
59
- let L;
60
- r[24] !== De || r[25] !== I ? (L = [...I, ...De], r[24] = De, r[25] = I, r[26] = L) : L = r[26];
61
- let R = L, z;
62
- r[27] !== N || r[28] !== C ? (z = (e) => {
63
- e.id === "delete" ? N() : (e.action(C), Me());
64
- }, r[27] = N, r[28] = C, r[29] = z) : z = r[29];
65
- let Ne = z, B;
66
- r[30] === _ ? B = r[31] : (B = Object.values(_).filter(Boolean), r[30] = _, r[31] = B);
67
- let Pe = B.length, Fe = [...[], ...Oe], Ie = Fe.length > 0, V;
68
- r[32] === T ? V = r[33] : (V = () => ke(!T), r[32] = T, r[33] = V);
69
- let Le = !!d && Object.keys(y).length > 0, Re = !!s, ze = C.length === i.length && i.length > 0, H;
70
- r[34] !== ze || r[35] !== Ae ? (H = /* @__PURE__ */ jsxs("div", {
57
+ action: M
58
+ }] : [], r[21] = M, r[22] = m, r[23] = F) : F = r[23];
59
+ let I;
60
+ r[24] !== Oe || r[25] !== F ? (I = [...F, ...Oe], r[24] = Oe, r[25] = F, r[26] = I) : I = r[26];
61
+ let L = I, R;
62
+ r[27] !== M || r[28] !== S ? (R = (e) => {
63
+ e.id === "delete" ? M() : (e.action(S), Ne());
64
+ }, r[27] = M, r[28] = S, r[29] = R) : R = r[29];
65
+ let Pe = R, z;
66
+ r[30] === g ? z = r[31] : (z = Object.values(g).filter(Boolean), r[30] = g, r[31] = z);
67
+ let Fe = z.length, Ie = [...[], ...ke], Le = Ie.length > 0, B;
68
+ r[32] === w ? B = r[33] : (B = () => Ae(!w), r[32] = w, r[33] = B);
69
+ let V;
70
+ r[34] !== v || r[35] !== d ? (V = !!d && Object.keys(v).length > 0, r[34] = v, r[35] = d, r[36] = V) : V = r[36];
71
+ let Re = !!s, ze = S.length === i.length && i.length > 0, H;
72
+ r[37] !== ze || r[38] !== je ? (H = /* @__PURE__ */ jsxs("div", {
71
73
  className: "text-sm text-gray-400",
72
74
  children: [/* @__PURE__ */ jsx(Checkbox, {
73
75
  checked: ze,
74
- onCheckedChange: Ae,
76
+ onCheckedChange: je,
75
77
  "aria-label": "Select all rows",
76
78
  className: "mr-4"
77
79
  }), "Select All"]
78
- }), r[34] = ze, r[35] = Ae, r[36] = H) : H = r[36];
80
+ }), r[37] = ze, r[38] = je, r[39] = H) : H = r[39];
79
81
  let U;
80
- r[37] !== R || r[38] !== b || r[39] !== Ne || r[40] !== C.length ? (U = b && /* @__PURE__ */ jsx(DataTableBatchAction_default, {
81
- selectedCount: C.length,
82
- batchActions: R,
83
- onBatchAction: Ne
84
- }), r[37] = R, r[38] = b, r[39] = Ne, r[40] = C.length, r[41] = U) : U = r[41];
82
+ r[40] !== L || r[41] !== y || r[42] !== Pe || r[43] !== S.length ? (U = y && /* @__PURE__ */ jsx(DataTableBatchAction_default, {
83
+ selectedCount: S.length,
84
+ batchActions: L,
85
+ onBatchAction: Pe
86
+ }), r[40] = L, r[41] = y, r[42] = Pe, r[43] = S.length, r[44] = U) : U = r[44];
85
87
  let W;
86
- r[42] !== y || r[43] !== _ || r[44] !== T || r[45] !== d ? (W = /* @__PURE__ */ jsx(DataTableFilters_default, {
87
- filters: _,
88
- filterConfig: y,
88
+ r[45] !== v || r[46] !== g || r[47] !== w || r[48] !== d ? (W = /* @__PURE__ */ jsx(DataTableFilters_default, {
89
+ filters: g,
90
+ filterConfig: v,
89
91
  onFiltersChange: d,
90
- isOpen: T
91
- }), r[42] = y, r[43] = _, r[44] = T, r[45] = d, r[46] = W) : W = r[46];
92
+ isOpen: w
93
+ }), r[45] = v, r[46] = g, r[47] = w, r[48] = d, r[49] = W) : W = r[49];
92
94
  let G;
93
- r[47] !== U || r[48] !== W ? (G = /* @__PURE__ */ jsxs("div", { children: [U, W] }), r[47] = U, r[48] = W, r[49] = G) : G = r[49];
95
+ r[50] !== U || r[51] !== W ? (G = /* @__PURE__ */ jsxs("div", { children: [U, W] }), r[50] = U, r[51] = W, r[52] = G) : G = r[52];
94
96
  let K;
95
- r[50] !== Pe || r[51] !== T || r[52] !== Te || r[53] !== p || r[54] !== s || r[55] !== xe || r[56] !== V || r[57] !== Le || r[58] !== Re || r[59] !== H || r[60] !== G ? (K = /* @__PURE__ */ jsxs(DataTableToolbar_default, {
97
+ r[53] !== Fe || r[54] !== w || r[55] !== Ee || r[56] !== f || r[57] !== s || r[58] !== xe || r[59] !== B || r[60] !== V || r[61] !== Re || r[62] !== H || r[63] !== G ? (K = /* @__PURE__ */ jsxs(DataTableToolbar_default, {
96
98
  searchTerm: xe,
97
99
  onSearchChange: s,
98
- onFilterToggle: V,
99
- onNew: p,
100
- filterCount: Pe,
101
- isFilterOpen: T,
102
- newButtonLabel: Te,
103
- showFilter: Le,
100
+ onFilterToggle: B,
101
+ onNew: f,
102
+ filterCount: Fe,
103
+ isFilterOpen: w,
104
+ newButtonLabel: Ee,
105
+ showFilter: V,
104
106
  showSearch: Re,
105
107
  children: [H, G]
106
- }), r[50] = Pe, r[51] = T, r[52] = Te, r[53] = p, r[54] = s, r[55] = xe, r[56] = V, r[57] = Le, r[58] = Re, r[59] = H, r[60] = G, r[61] = K) : K = r[61];
108
+ }), r[53] = Fe, r[54] = w, r[55] = Ee, r[56] = f, r[57] = s, r[58] = xe, r[59] = B, r[60] = V, r[61] = Re, r[62] = H, r[63] = G, r[64] = K) : K = r[64];
107
109
  let q;
108
- r[62] === o ? q = r[63] : (q = o && /* @__PURE__ */ jsx(Card, {
110
+ r[65] === o ? q = r[66] : (q = o && /* @__PURE__ */ jsx(Card, {
109
111
  className: "border-destructive/50 bg-destructive/5",
110
112
  children: /* @__PURE__ */ jsx(CardContent, {
111
113
  className: "p-4",
@@ -114,19 +116,19 @@ function DataList(he) {
114
116
  children: ["Error: ", o.message]
115
117
  })
116
118
  })
117
- }), r[62] = o, r[63] = q);
118
- let Be = Ee ? /* @__PURE__ */ jsx("div", {
119
+ }), r[65] = o, r[66] = q);
120
+ let Be = De ? /* @__PURE__ */ jsx("div", {
119
121
  className: "flex items-center justify-center py-8",
120
122
  children: /* @__PURE__ */ jsx(Loader2, { className: "h-8 w-8 animate-spin" })
121
123
  }) : /* @__PURE__ */ jsx("div", { children: i.length === 0 ? /* @__PURE__ */ jsx("span", { children: "No items found" }) : i.map((n, me) => /* @__PURE__ */ jsxs("div", {
122
124
  className: "flex items-center",
123
125
  children: [
124
- b && /* @__PURE__ */ jsx("div", {
126
+ y && /* @__PURE__ */ jsx("div", {
125
127
  className: "flex items-center justify-center pr-4",
126
128
  onClick: _temp2,
127
129
  children: /* @__PURE__ */ jsx(Checkbox, {
128
- checked: C.includes(n.id),
129
- onCheckedChange: () => je(n.id),
130
+ checked: S.includes(n.id),
131
+ onCheckedChange: () => Me(n.id),
130
132
  "aria-label": `Select row ${n.id}`
131
133
  })
132
134
  }),
@@ -137,19 +139,19 @@ function DataList(he) {
137
139
  children: /* @__PURE__ */ jsx("div", {
138
140
  className: "flex items-center justify-between",
139
141
  children: /* @__PURE__ */ jsx("div", {
140
- className: `flex-1 ${f ? "cursor-pointer" : ""} ${C.includes(n.id) ? "bg-muted/50" : ""}`,
141
- onClick: f ? () => f(n) : void 0,
142
- children: /* @__PURE__ */ jsx("div", { children: we && we(n) })
142
+ className: `flex-1 ${Se ? "cursor-pointer" : ""} ${S.includes(n.id) ? "bg-muted/50" : ""}`,
143
+ onClick: Se ? () => Se(n) : void 0,
144
+ children: /* @__PURE__ */ jsx("div", { children: Te && Te(n) })
143
145
  })
144
146
  })
145
147
  })
146
148
  }, n.id),
147
- Ie && /* @__PURE__ */ jsx("div", {
149
+ Le && /* @__PURE__ */ jsx("div", {
148
150
  className: "flex items-center justify-center",
149
151
  onClick: _temp3,
150
152
  children: /* @__PURE__ */ jsx("div", {
151
153
  className: "flex items-center justify-center gap-1",
152
- children: Fe.map((t) => !t.condition || t.condition(n) ? /* @__PURE__ */ jsx(Button, {
154
+ children: Ie.map((t) => !t.condition || t.condition(n) ? /* @__PURE__ */ jsx(Button, {
153
155
  variant: t.variant || "ghost",
154
156
  size: "sm",
155
157
  onClick: () => void t.action(n),
@@ -162,28 +164,28 @@ function DataList(he) {
162
164
  })
163
165
  ]
164
166
  }, `data-list-item-${me}`)) }), J;
165
- r[64] === Be ? J = r[65] : (J = /* @__PURE__ */ jsx("div", {
167
+ r[67] === Be ? J = r[68] : (J = /* @__PURE__ */ jsx("div", {
166
168
  className: "space-y-2",
167
169
  children: Be
168
- }), r[64] = Be, r[65] = J);
170
+ }), r[67] = Be, r[68] = J);
169
171
  let Y;
170
- r[66] !== ye || r[67] !== be || r[68] !== _e || r[69] !== ve || r[70] !== a ? (Y = /* @__PURE__ */ jsx(DataTablePagination_default, {
172
+ r[69] !== ye || r[70] !== be || r[71] !== _e || r[72] !== ve || r[73] !== a ? (Y = /* @__PURE__ */ jsx(DataTablePagination_default, {
171
173
  page: _e,
172
174
  pageSize: ve,
173
175
  totalItems: a,
174
176
  onPageChange: ye,
175
177
  onPageSizeChange: be
176
- }), r[66] = ye, r[67] = be, r[68] = _e, r[69] = ve, r[70] = a, r[71] = Y) : Y = r[71];
178
+ }), r[69] = ye, r[70] = be, r[71] = _e, r[72] = ve, r[73] = a, r[74] = Y) : Y = r[74];
177
179
  let X;
178
- r[72] !== D || r[73] !== O ? (X = (e) => O({
179
- ...D,
180
+ r[75] !== E || r[76] !== D ? (X = (e) => D({
181
+ ...E,
180
182
  isOpen: e
181
- }), r[72] = D, r[73] = O, r[74] = X) : X = r[74];
182
- let Ve = D.type === "single" ? "Delete Item" : "Delete Items", He = D.type === "single" ? "Are you sure you want to delete this item? This action cannot be undone." : `Are you sure you want to delete ${C.length} items? This action cannot be undone.`, Z;
183
- r[75] === F ? Z = r[76] : (Z = () => void F(), r[75] = F, r[76] = Z);
183
+ }), r[75] = E, r[76] = D, r[77] = X) : X = r[77];
184
+ let Ve = E.type === "single" ? "Delete Item" : "Delete Items", He = E.type === "single" ? "Are you sure you want to delete this item? This action cannot be undone." : `Are you sure you want to delete ${S.length} items? This action cannot be undone.`, Z;
185
+ r[78] === P ? Z = r[79] : (Z = () => void P(), r[78] = P, r[79] = Z);
184
186
  let Q;
185
- r[77] !== D.isOpen || r[78] !== X || r[79] !== Ve || r[80] !== He || r[81] !== Z ? (Q = /* @__PURE__ */ jsx(ConfirmDialog_default, {
186
- isOpen: D.isOpen,
187
+ r[80] !== E.isOpen || r[81] !== X || r[82] !== Ve || r[83] !== He || r[84] !== Z ? (Q = /* @__PURE__ */ jsx(ConfirmDialog_default, {
188
+ isOpen: E.isOpen,
187
189
  onOpenChange: X,
188
190
  title: Ve,
189
191
  description: He,
@@ -191,9 +193,9 @@ function DataList(he) {
191
193
  confirmText: "Delete",
192
194
  cancelText: "Cancel",
193
195
  variant: "destructive"
194
- }), r[77] = D.isOpen, r[78] = X, r[79] = Ve, r[80] = He, r[81] = Z, r[82] = Q) : Q = r[82];
196
+ }), r[80] = E.isOpen, r[81] = X, r[82] = Ve, r[83] = He, r[84] = Z, r[85] = Q) : Q = r[85];
195
197
  let $;
196
- return r[83] !== K || r[84] !== q || r[85] !== J || r[86] !== Y || r[87] !== Q ? ($ = /* @__PURE__ */ jsxs("div", {
198
+ return r[86] !== K || r[87] !== q || r[88] !== J || r[89] !== Y || r[90] !== Q ? ($ = /* @__PURE__ */ jsxs("div", {
197
199
  className: "space-y-4",
198
200
  children: [
199
201
  K,
@@ -202,7 +204,7 @@ function DataList(he) {
202
204
  Y,
203
205
  Q
204
206
  ]
205
- }), r[83] = K, r[84] = q, r[85] = J, r[86] = Y, r[87] = Q, r[88] = $) : $ = r[88], $;
207
+ }), r[86] = K, r[87] = q, r[88] = J, r[89] = Y, r[90] = Q, r[91] = $) : $ = r[91], $;
206
208
  }
207
209
  function _temp3(e) {
208
210
  return e.stopPropagation();