@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
@@ -13,124 +13,126 @@ import { jsx, jsxs } from "react/jsx-runtime";
13
13
  import { ArrowDown, ArrowUp, Edit, Eye, Loader2, Trash2 } from "lucide-react";
14
14
  var safeToString = (e) => e == null ? "" : typeof e == "string" ? e : typeof e == "number" || typeof e == "boolean" ? String(e) : typeof e == "object" ? JSON.stringify(e) : JSON.stringify(e) ?? "";
15
15
  function DataTable(Ee) {
16
- let r = c(102), { data: i, columns: De, totalItems: Oe, loading: ke, error: a, page: Ae, pageSize: je, onPageChange: Me, onPageSizeChange: Ne, sortBy: o, sortOrder: s, onSortChange: l, searchTerm: Pe, onSearchChange: Fe, filters: u, filterConfig: d, onFiltersChange: f, onRowClick: p, onEdit: Ie, onDelete: m, onNew: Le, newButtonLabel: Re, enableBatchActions: ze, batchActions: h, onBatchDelete: g, rowActions: Be, deleteConfirmTitle: Ve, deleteConfirmDescription: He } = Ee, Ue = ke === void 0 ? !1 : ke, _;
17
- r[0] === u ? _ = r[1] : (_ = u === void 0 ? {} : u, r[0] = u, r[1] = _);
18
- let v = _, y;
19
- r[2] === d ? y = r[3] : (y = d === void 0 ? {} : d, r[2] = d, r[3] = y);
20
- let b = y, x = ze === void 0 ? !0 : ze, S;
21
- r[4] === h ? S = r[5] : (S = h === void 0 ? [] : h, r[4] = h, r[5] = S);
22
- let We = S, Ge = Be === void 0 ? [] : Be, C;
23
- r[6] === Symbol.for("react.memo_cache_sentinel") ? (C = [], r[6] = C) : C = r[6];
24
- let [w, T] = useState(C), [E, Ke] = useState(!1), D;
25
- r[7] === Symbol.for("react.memo_cache_sentinel") ? (D = {
16
+ let r = c(105), { data: i, columns: De, totalItems: Oe, loading: ke, error: a, page: Ae, pageSize: je, onPageChange: Me, onPageSizeChange: Ne, sortBy: o, sortOrder: s, onSortChange: l, searchTerm: Pe, onSearchChange: u, filters: d, filterConfig: f, onFiltersChange: p, onRowClick: m, onEdit: Fe, onDelete: h, onNew: Ie, newButtonLabel: Le, enableBatchActions: Re, batchActions: g, onBatchDelete: _, rowActions: ze, deleteConfirmTitle: Be, deleteConfirmDescription: Ve } = Ee, He = ke === void 0 ? !1 : ke, v;
17
+ r[0] === d ? v = r[1] : (v = d === void 0 ? {} : d, r[0] = d, r[1] = v);
18
+ let y = v, b;
19
+ r[2] === f ? b = r[3] : (b = f === void 0 ? {} : f, r[2] = f, r[3] = b);
20
+ let x = b, S = Re === void 0 ? !0 : Re, C;
21
+ r[4] === g ? C = r[5] : (C = g === void 0 ? [] : g, r[4] = g, r[5] = C);
22
+ let Ue = C, We = ze === void 0 ? [] : ze, w;
23
+ r[6] === Symbol.for("react.memo_cache_sentinel") ? (w = [], r[6] = w) : w = r[6];
24
+ let [T, E] = useState(w), [D, Ge] = useState(!1), O;
25
+ r[7] === Symbol.for("react.memo_cache_sentinel") ? (O = {
26
26
  isOpen: !1,
27
27
  type: "single"
28
- }, r[7] = D) : D = r[7];
29
- let [O, k] = useState(D), qe;
30
- r[8] !== i || r[9] !== w.length ? (qe = () => {
31
- w.length === i.length ? T([]) : T(i.map(_temp));
32
- }, r[8] = i, r[9] = w.length, r[10] = qe) : qe = r[10];
33
- let Je = qe, A;
34
- r[11] === Symbol.for("react.memo_cache_sentinel") ? (A = (e) => {
35
- T((t) => t.includes(e) ? t.filter((t) => t !== e) : [...t, e]);
36
- }, r[11] = A) : A = r[11];
37
- let Ye = A, j;
38
- r[12] === Symbol.for("react.memo_cache_sentinel") ? (j = () => T([]), r[12] = j) : j = r[12];
39
- let Xe = j, M;
40
- r[13] !== l || r[14] !== o || r[15] !== s ? (M = (e) => {
28
+ }, r[7] = O) : O = r[7];
29
+ let [k, A] = useState(O), j;
30
+ r[8] !== i || r[9] !== T.length ? (j = () => {
31
+ T.length === i.length ? E([]) : E(i.map(_temp));
32
+ }, r[8] = i, r[9] = T.length, r[10] = j) : j = r[10];
33
+ let Ke = j, M;
34
+ r[11] === Symbol.for("react.memo_cache_sentinel") ? (M = (e) => {
35
+ E((t) => t.includes(e) ? t.filter((t) => t !== e) : [...t, e]);
36
+ }, r[11] = M) : M = r[11];
37
+ let qe = M, N;
38
+ r[12] === Symbol.for("react.memo_cache_sentinel") ? (N = () => E([]), r[12] = N) : N = r[12];
39
+ let Je = N, P;
40
+ r[13] !== l || r[14] !== o || r[15] !== s ? (P = (e) => {
41
41
  o === e ? l(e, s === "ASC" ? "DESC" : "ASC") : l(e, "ASC");
42
- }, r[13] = l, r[14] = o, r[15] = s, r[16] = M) : M = r[16];
43
- let Ze = M, N;
44
- r[17] === k ? N = r[18] : (N = (e) => {
45
- k({
42
+ }, r[13] = l, r[14] = o, r[15] = s, r[16] = P) : P = r[16];
43
+ let Ye = P, F;
44
+ r[17] === A ? F = r[18] : (F = (e) => {
45
+ A({
46
46
  isOpen: !0,
47
47
  type: "single",
48
48
  itemId: e
49
49
  });
50
- }, r[17] = k, r[18] = N);
51
- let Qe = N, P;
52
- r[19] === k ? P = r[20] : (P = () => {
53
- k({
50
+ }, r[17] = A, r[18] = F);
51
+ let Xe = F, I;
52
+ r[19] === A ? I = r[20] : (I = () => {
53
+ A({
54
54
  isOpen: !0,
55
55
  type: "batch"
56
56
  });
57
- }, r[19] = k, r[20] = P);
58
- let F = P, I;
59
- r[21] !== O.itemId || r[22] !== O.type || r[23] !== g || r[24] !== m || r[25] !== w || r[26] !== k ? (I = async () => {
60
- O.type === "single" && O.itemId ? m?.(O.itemId) : O.type === "batch" && g && (await Promise.resolve(g(w)), Xe()), k({
57
+ }, r[19] = A, r[20] = I);
58
+ let L = I, R;
59
+ r[21] !== k.itemId || r[22] !== k.type || r[23] !== _ || r[24] !== h || r[25] !== T || r[26] !== A ? (R = async () => {
60
+ k.type === "single" && k.itemId ? h?.(k.itemId) : k.type === "batch" && _ && (await Promise.resolve(_(T)), Je()), A({
61
61
  isOpen: !1,
62
62
  type: "single"
63
63
  });
64
- }, r[21] = O.itemId, r[22] = O.type, r[23] = g, r[24] = m, r[25] = w, r[26] = k, r[27] = I) : I = r[27];
65
- let $e = I, L;
66
- r[28] !== F || r[29] !== g ? (L = g ? [{
64
+ }, r[21] = k.itemId, r[22] = k.type, r[23] = _, r[24] = h, r[25] = T, r[26] = A, r[27] = R) : R = r[27];
65
+ let Ze = R, z;
66
+ r[28] !== L || r[29] !== _ ? (z = _ ? [{
67
67
  id: "delete",
68
68
  label: "Delete Selected",
69
69
  icon: /* @__PURE__ */ jsx(Trash2, { className: "mr-2 h-4 w-4" }),
70
70
  variant: "destructive",
71
- action: F
72
- }] : [], r[28] = F, r[29] = g, r[30] = L) : L = r[30];
73
- let R;
74
- r[31] !== We || r[32] !== L ? (R = [...L, ...We], r[31] = We, r[32] = L, r[33] = R) : R = r[33];
75
- let et = R, z;
76
- r[34] !== F || r[35] !== w ? (z = (e) => {
77
- e.id === "delete" ? F() : (e.action(w), Xe());
78
- }, r[34] = F, r[35] = w, r[36] = z) : z = r[36];
79
- let tt = z, B;
80
- r[37] !== o || r[38] !== s ? (B = (e) => o === e ? jsx(s === "ASC" ? ArrowUp : ArrowDown, { className: "h-4 w-4" }) : null, r[37] = o, r[38] = s, r[39] = B) : B = r[39];
81
- let nt = B, V;
82
- r[40] === v ? V = r[41] : (V = Object.values(v).filter(Boolean), r[40] = v, r[41] = V);
83
- let rt = V.length, it = [...[
84
- ...p ? [{
71
+ action: L
72
+ }] : [], r[28] = L, r[29] = _, r[30] = z) : z = r[30];
73
+ let Qe;
74
+ r[31] !== Ue || r[32] !== z ? (Qe = [...z, ...Ue], r[31] = Ue, r[32] = z, r[33] = Qe) : Qe = r[33];
75
+ let $e = Qe, et;
76
+ r[34] !== L || r[35] !== T ? (et = (e) => {
77
+ e.id === "delete" ? L() : (e.action(T), Je());
78
+ }, r[34] = L, r[35] = T, r[36] = et) : et = r[36];
79
+ let tt = et, nt;
80
+ r[37] !== o || r[38] !== s ? (nt = (e) => o === e ? jsx(s === "ASC" ? ArrowUp : ArrowDown, { className: "h-4 w-4" }) : null, r[37] = o, r[38] = s, r[39] = nt) : nt = r[39];
81
+ let rt = nt, it;
82
+ r[40] === y ? it = r[41] : (it = Object.values(y).filter(Boolean), r[40] = y, r[41] = it);
83
+ let at = it.length, ot = [...[
84
+ ...m ? [{
85
85
  id: "view",
86
86
  label: "View",
87
87
  icon: /* @__PURE__ */ jsx(Eye, { className: "h-4 w-4" }),
88
88
  variant: "ghost",
89
- action: p
89
+ action: m
90
90
  }] : [],
91
- ...Ie ? [{
91
+ ...Fe ? [{
92
92
  id: "edit",
93
93
  label: "Edit",
94
94
  icon: /* @__PURE__ */ jsx(Edit, { className: "h-4 w-4" }),
95
95
  variant: "ghost",
96
- action: Ie
96
+ action: Fe
97
97
  }] : [],
98
- ...m ? [{
98
+ ...h ? [{
99
99
  id: "delete",
100
100
  label: "Delete",
101
101
  icon: /* @__PURE__ */ jsx(Trash2, { className: "h-4 w-4" }),
102
102
  variant: "ghost",
103
- action: (e) => Qe(e.id)
103
+ action: (e) => Xe(e.id)
104
104
  }] : []
105
- ], ...Ge], at = it.length > 0, H;
106
- r[42] === E ? H = r[43] : (H = () => Ke(!E), r[42] = E, r[43] = H);
107
- let ot = !!f && Object.keys(b).length > 0, st = !!Fe, U;
108
- r[44] !== rt || r[45] !== E || r[46] !== Re || r[47] !== Le || r[48] !== Fe || r[49] !== Pe || r[50] !== H || r[51] !== ot || r[52] !== st ? (U = /* @__PURE__ */ jsx(DataTableToolbar_default, {
105
+ ], ...We], st = ot.length > 0, B;
106
+ r[42] === D ? B = r[43] : (B = () => Ge(!D), r[42] = D, r[43] = B);
107
+ let V;
108
+ r[44] !== x || r[45] !== p ? (V = !!p && Object.keys(x).length > 0, r[44] = x, r[45] = p, r[46] = V) : V = r[46];
109
+ let ct = !!u, H;
110
+ r[47] !== at || r[48] !== D || r[49] !== Le || r[50] !== Ie || r[51] !== u || r[52] !== Pe || r[53] !== B || r[54] !== V || r[55] !== ct ? (H = /* @__PURE__ */ jsx(DataTableToolbar_default, {
109
111
  searchTerm: Pe,
110
- onSearchChange: Fe,
111
- onFilterToggle: H,
112
- onNew: Le,
113
- newButtonLabel: Re,
114
- filterCount: rt,
115
- isFilterOpen: E,
116
- showFilter: ot,
117
- showSearch: st
118
- }), r[44] = rt, r[45] = E, r[46] = Re, r[47] = Le, r[48] = Fe, r[49] = Pe, r[50] = H, r[51] = ot, r[52] = st, r[53] = U) : U = r[53];
112
+ onSearchChange: u,
113
+ onFilterToggle: B,
114
+ onNew: Ie,
115
+ newButtonLabel: Le,
116
+ filterCount: at,
117
+ isFilterOpen: D,
118
+ showFilter: V,
119
+ showSearch: ct
120
+ }), r[47] = at, r[48] = D, r[49] = Le, r[50] = Ie, r[51] = u, r[52] = Pe, r[53] = B, r[54] = V, r[55] = ct, r[56] = H) : H = r[56];
121
+ let U;
122
+ r[57] !== x || r[58] !== y || r[59] !== D || r[60] !== p ? (U = /* @__PURE__ */ jsx(DataTableFilters_default, {
123
+ filters: y,
124
+ filterConfig: x,
125
+ onFiltersChange: p,
126
+ isOpen: D
127
+ }), r[57] = x, r[58] = y, r[59] = D, r[60] = p, r[61] = U) : U = r[61];
119
128
  let W;
120
- r[54] !== b || r[55] !== v || r[56] !== E || r[57] !== f ? (W = /* @__PURE__ */ jsx(DataTableFilters_default, {
121
- filters: v,
122
- filterConfig: b,
123
- onFiltersChange: f,
124
- isOpen: E
125
- }), r[54] = b, r[55] = v, r[56] = E, r[57] = f, r[58] = W) : W = r[58];
126
- let G;
127
- r[59] !== et || r[60] !== x || r[61] !== tt || r[62] !== w.length ? (G = x && /* @__PURE__ */ jsx(DataTableBatchAction_default, {
128
- selectedCount: w.length,
129
- batchActions: et,
129
+ r[62] !== $e || r[63] !== S || r[64] !== tt || r[65] !== T.length ? (W = S && /* @__PURE__ */ jsx(DataTableBatchAction_default, {
130
+ selectedCount: T.length,
131
+ batchActions: $e,
130
132
  onBatchAction: tt
131
- }), r[59] = et, r[60] = x, r[61] = tt, r[62] = w.length, r[63] = G) : G = r[63];
132
- let K;
133
- r[64] === a ? K = r[65] : (K = a && /* @__PURE__ */ jsx(Card, {
133
+ }), r[62] = $e, r[63] = S, r[64] = tt, r[65] = T.length, r[66] = W) : W = r[66];
134
+ let G;
135
+ r[67] === a ? G = r[68] : (G = a && /* @__PURE__ */ jsx(Card, {
134
136
  className: "border-destructive/50 bg-destructive/5",
135
137
  children: /* @__PURE__ */ jsx(CardContent, {
136
138
  className: "p-4",
@@ -139,16 +141,16 @@ function DataTable(Ee) {
139
141
  children: ["Error: ", a.message]
140
142
  })
141
143
  })
142
- }), r[64] = a, r[65] = K);
143
- let ct = Ue ? /* @__PURE__ */ jsx("div", {
144
+ }), r[67] = a, r[68] = G);
145
+ let lt = He ? /* @__PURE__ */ jsx("div", {
144
146
  className: "flex items-center justify-center py-8",
145
147
  children: /* @__PURE__ */ jsx(Loader2, { className: "h-8 w-8 animate-spin" })
146
148
  }) : /* @__PURE__ */ jsxs(Table, { children: [/* @__PURE__ */ jsx(TableHeader, { children: /* @__PURE__ */ jsxs(TableRow, { children: [
147
- x && /* @__PURE__ */ jsx(TableHead, {
149
+ S && /* @__PURE__ */ jsx(TableHead, {
148
150
  className: "w-12",
149
151
  children: /* @__PURE__ */ jsx(Checkbox, {
150
- checked: w.length === i.length && i.length > 0,
151
- onCheckedChange: Je,
152
+ checked: T.length === i.length && i.length > 0,
153
+ onCheckedChange: Ke,
152
154
  "aria-label": "Select all rows"
153
155
  })
154
156
  }),
@@ -160,28 +162,28 @@ function DataTable(Ee) {
160
162
  children: t.label
161
163
  }) : /* @__PURE__ */ jsxs(Button, {
162
164
  variant: "ghost",
163
- onClick: () => Ze(t.id),
165
+ onClick: () => Ye(t.id),
164
166
  className: "h-auto p-0 font-semibold hover:bg-transparent",
165
- children: [t.label, nt(t.id)]
167
+ children: [t.label, rt(t.id)]
166
168
  })
167
169
  }, t.id)),
168
- at && /* @__PURE__ */ jsx(TableHead, {
170
+ st && /* @__PURE__ */ jsx(TableHead, {
169
171
  className: "text-center",
170
172
  children: "Actions"
171
173
  })
172
174
  ] }) }), /* @__PURE__ */ jsx(TableBody, { children: i.length === 0 ? /* @__PURE__ */ jsx(TableRow, { children: /* @__PURE__ */ jsx(TableCell, {
173
- colSpan: De.length + (x ? 1 : 0) + (at ? 1 : 0),
175
+ colSpan: De.length + (S ? 1 : 0) + (st ? 1 : 0),
174
176
  className: "text-muted-foreground py-8 text-center",
175
177
  children: "No items found"
176
178
  }) }) : i.map((t) => /* @__PURE__ */ jsxs(TableRow, {
177
- className: `${p ? "cursor-pointer" : ""} ${w.includes(t.id) ? "bg-muted/50" : ""}`,
178
- onClick: p ? () => p(t) : void 0,
179
+ className: `${m ? "cursor-pointer" : ""} ${T.includes(t.id) ? "bg-muted/50" : ""}`,
180
+ onClick: m ? () => m(t) : void 0,
179
181
  children: [
180
- x && /* @__PURE__ */ jsx(TableCell, {
182
+ S && /* @__PURE__ */ jsx(TableCell, {
181
183
  onClick: _temp2,
182
184
  children: /* @__PURE__ */ jsx(Checkbox, {
183
- checked: w.includes(t.id),
184
- onCheckedChange: () => Ye(t.id),
185
+ checked: T.includes(t.id),
186
+ onCheckedChange: () => qe(t.id),
185
187
  "aria-label": `Select row ${t.id}`
186
188
  })
187
189
  }),
@@ -189,12 +191,12 @@ function DataTable(Ee) {
189
191
  className: e.align === "center" ? "text-center" : e.align === "right" ? "text-right" : "",
190
192
  children: e.format ? e.format(t[e.id], t) : safeToString(t[e.id])
191
193
  }, e.id)),
192
- at && /* @__PURE__ */ jsx(TableCell, {
194
+ st && /* @__PURE__ */ jsx(TableCell, {
193
195
  className: "text-center",
194
196
  onClick: _temp3,
195
197
  children: /* @__PURE__ */ jsx("div", {
196
198
  className: "flex items-center justify-center gap-1",
197
- children: it.map((n) => !n.condition || n.condition(t) ? /* @__PURE__ */ jsx(Button, {
199
+ children: ot.map((n) => !n.condition || n.condition(t) ? /* @__PURE__ */ jsx(Button, {
198
200
  variant: n.variant || "ghost",
199
201
  size: "sm",
200
202
  onClick: () => void n.action(t),
@@ -206,54 +208,54 @@ function DataTable(Ee) {
206
208
  })
207
209
  })
208
210
  ]
209
- }, t.id)) })] }), q;
210
- r[66] === ct ? q = r[67] : (q = /* @__PURE__ */ jsx("div", {
211
+ }, t.id)) })] }), K;
212
+ r[69] === lt ? K = r[70] : (K = /* @__PURE__ */ jsx("div", {
211
213
  className: "w-full",
212
- children: ct
213
- }), r[66] = ct, r[67] = q);
214
- let J;
215
- r[68] !== Me || r[69] !== Ne || r[70] !== Ae || r[71] !== je || r[72] !== Oe ? (J = /* @__PURE__ */ jsx(DataTablePagination_default, {
214
+ children: lt
215
+ }), r[69] = lt, r[70] = K);
216
+ let q;
217
+ r[71] !== Me || r[72] !== Ne || r[73] !== Ae || r[74] !== je || r[75] !== Oe ? (q = /* @__PURE__ */ jsx(DataTablePagination_default, {
216
218
  page: Ae,
217
219
  pageSize: je,
218
220
  totalItems: Oe,
219
221
  onPageChange: Me,
220
222
  onPageSizeChange: Ne
221
- }), r[68] = Me, r[69] = Ne, r[70] = Ae, r[71] = je, r[72] = Oe, r[73] = J) : J = r[73];
222
- let Y;
223
- r[74] !== O || r[75] !== k ? (Y = (e) => k({
224
- ...O,
223
+ }), r[71] = Me, r[72] = Ne, r[73] = Ae, r[74] = je, r[75] = Oe, r[76] = q) : q = r[76];
224
+ let J;
225
+ r[77] !== k || r[78] !== A ? (J = (e) => A({
226
+ ...k,
225
227
  isOpen: e
226
- }), r[74] = O, r[75] = k, r[76] = Y) : Y = r[76];
228
+ }), r[77] = k, r[78] = A, r[79] = J) : J = r[79];
229
+ let Y;
230
+ r[80] !== Be || r[81] !== k.itemId || r[82] !== k.type ? (Y = k.type === "single" ? k.itemId && Be?.(k.itemId) || "Delete Item" : "Delete Items", r[80] = Be, r[81] = k.itemId, r[82] = k.type, r[83] = Y) : Y = r[83];
227
231
  let X;
228
- r[77] !== Ve || r[78] !== O.itemId || r[79] !== O.type ? (X = O.type === "single" ? O.itemId && Ve?.(O.itemId) || "Delete Item" : "Delete Items", r[77] = Ve, r[78] = O.itemId, r[79] = O.type, r[80] = X) : X = r[80];
232
+ r[84] !== Ve || r[85] !== k.itemId || r[86] !== k.type || r[87] !== T.length ? (X = k.type === "single" ? k.itemId && Ve?.(k.itemId) || "Are you sure you want to delete this item? This action cannot be undone." : `Are you sure you want to delete ${T.length} items? This action cannot be undone.`, r[84] = Ve, r[85] = k.itemId, r[86] = k.type, r[87] = T.length, r[88] = X) : X = r[88];
229
233
  let Z;
230
- r[81] !== He || r[82] !== O.itemId || r[83] !== O.type || r[84] !== w.length ? (Z = O.type === "single" ? O.itemId && He?.(O.itemId) || "Are you sure you want to delete this item? This action cannot be undone." : `Are you sure you want to delete ${w.length} items? This action cannot be undone.`, r[81] = He, r[82] = O.itemId, r[83] = O.type, r[84] = w.length, r[85] = Z) : Z = r[85];
234
+ r[89] === Ze ? Z = r[90] : (Z = () => void Ze(), r[89] = Ze, r[90] = Z);
231
235
  let Q;
232
- r[86] === $e ? Q = r[87] : (Q = () => void $e(), r[86] = $e, r[87] = Q);
233
- let $;
234
- r[88] !== O.isOpen || r[89] !== Y || r[90] !== X || r[91] !== Z || r[92] !== Q ? ($ = /* @__PURE__ */ jsx(ConfirmDialog_default, {
235
- isOpen: O.isOpen,
236
- onOpenChange: Y,
237
- title: X,
238
- description: Z,
239
- onConfirm: Q,
236
+ r[91] !== k.isOpen || r[92] !== J || r[93] !== Y || r[94] !== X || r[95] !== Z ? (Q = /* @__PURE__ */ jsx(ConfirmDialog_default, {
237
+ isOpen: k.isOpen,
238
+ onOpenChange: J,
239
+ title: Y,
240
+ description: X,
241
+ onConfirm: Z,
240
242
  confirmText: "Delete",
241
243
  cancelText: "Cancel",
242
244
  variant: "destructive"
243
- }), r[88] = O.isOpen, r[89] = Y, r[90] = X, r[91] = Z, r[92] = Q, r[93] = $) : $ = r[93];
244
- let lt;
245
- return r[94] !== U || r[95] !== W || r[96] !== G || r[97] !== K || r[98] !== q || r[99] !== J || r[100] !== $ ? (lt = /* @__PURE__ */ jsxs("div", {
245
+ }), r[91] = k.isOpen, r[92] = J, r[93] = Y, r[94] = X, r[95] = Z, r[96] = Q) : Q = r[96];
246
+ let $;
247
+ return r[97] !== H || r[98] !== U || r[99] !== W || r[100] !== G || r[101] !== K || r[102] !== q || r[103] !== Q ? ($ = /* @__PURE__ */ jsxs("div", {
246
248
  className: "space-y-4",
247
249
  children: [
250
+ H,
248
251
  U,
249
252
  W,
250
253
  G,
251
254
  K,
252
255
  q,
253
- J,
254
- $
256
+ Q
255
257
  ]
256
- }), r[94] = U, r[95] = W, r[96] = G, r[97] = K, r[98] = q, r[99] = J, r[100] = $, r[101] = lt) : lt = r[101], lt;
258
+ }), r[97] = H, r[98] = U, r[99] = W, r[100] = G, r[101] = K, r[102] = q, r[103] = Q, r[104] = $) : $ = r[104], $;
257
259
  }
258
260
  function _temp3(e) {
259
261
  return e.stopPropagation();
@@ -2,7 +2,7 @@ import { c } from "react/compiler-runtime";
2
2
  import React, { useEffect } from "react";
3
3
  import { toast } from "sonner";
4
4
  var Snackbar_default = (r) => {
5
- let i = c(10), { message: a, variant: o, show: s, icon: l, duration: u, position: d, id: f, onDismiss: p } = r, m = o === void 0 ? "info" : o, h = s === void 0 ? !0 : s, g = u === void 0 ? 4e3 : u, _ = d === void 0 ? "bottom-center" : d, v, y;
5
+ let i = c(10), { message: a, variant: o, show: s, icon: l, duration: u, position: d, id: f, onDismiss: p } = r, m = o === void 0 ? "info" : o, h = s === void 0 ? !0 : s, g = u === void 0 ? 4e3 : u, _ = d === void 0 ? "top-center" : d, v, y;
6
6
  return i[0] !== g || i[1] !== l || i[2] !== f || i[3] !== a || i[4] !== p || i[5] !== _ || i[6] !== h || i[7] !== m ? (v = () => {
7
7
  if (!a || !h) {
8
8
  f && !h && (toast.dismiss(f), p?.());