@datatechsolutions/ui 3.11.0 → 3.11.2

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 (109) hide show
  1. package/dist/astrlabe/index.js +109 -109
  2. package/dist/astrlabe/index.mjs +5 -5
  3. package/dist/astrlabe/workflow-canvas.js +5 -5
  4. package/dist/astrlabe/workflow-canvas.mjs +4 -4
  5. package/dist/{chunk-ZUU7G3PC.js → chunk-22XPYFHJ.js} +2 -2
  6. package/dist/chunk-22XPYFHJ.js.map +1 -0
  7. package/dist/{chunk-6TKCMQ75.js → chunk-3BFQ3SVG.js} +68 -68
  8. package/dist/{chunk-6TKCMQ75.js.map → chunk-3BFQ3SVG.js.map} +1 -1
  9. package/dist/{chunk-BO3RXG6M.js → chunk-3J4E2THD.js} +45 -45
  10. package/dist/{chunk-BO3RXG6M.js.map → chunk-3J4E2THD.js.map} +1 -1
  11. package/dist/{chunk-HUAWGBYL.mjs → chunk-4PUVECVF.mjs} +3 -3
  12. package/dist/{chunk-HUAWGBYL.mjs.map → chunk-4PUVECVF.mjs.map} +1 -1
  13. package/dist/{chunk-G52HXPSB.js → chunk-5JS3UFBF.js} +13 -13
  14. package/dist/{chunk-G52HXPSB.js.map → chunk-5JS3UFBF.js.map} +1 -1
  15. package/dist/{chunk-BCJATFZE.js → chunk-5NKGJV72.js} +25 -25
  16. package/dist/{chunk-BCJATFZE.js.map → chunk-5NKGJV72.js.map} +1 -1
  17. package/dist/{chunk-ZJMYLUZ2.mjs → chunk-5TJR3VJ6.mjs} +85 -73
  18. package/dist/chunk-5TJR3VJ6.mjs.map +1 -0
  19. package/dist/{chunk-PHBZ3TXE.js → chunk-5Y67PZWC.js} +4 -4
  20. package/dist/{chunk-PHBZ3TXE.js.map → chunk-5Y67PZWC.js.map} +1 -1
  21. package/dist/{chunk-ZGVN23J4.js → chunk-6R5Z2IQ5.js} +5 -5
  22. package/dist/{chunk-ZGVN23J4.js.map → chunk-6R5Z2IQ5.js.map} +1 -1
  23. package/dist/{chunk-7V7WEXHS.mjs → chunk-AVLOGVVA.mjs} +3 -3
  24. package/dist/{chunk-7V7WEXHS.mjs.map → chunk-AVLOGVVA.mjs.map} +1 -1
  25. package/dist/{chunk-JTD3BBVI.js → chunk-BGLYJ7GR.js} +35 -35
  26. package/dist/{chunk-JTD3BBVI.js.map → chunk-BGLYJ7GR.js.map} +1 -1
  27. package/dist/{chunk-35P352JX.mjs → chunk-D5FL3ZHC.mjs} +3 -3
  28. package/dist/{chunk-35P352JX.mjs.map → chunk-D5FL3ZHC.mjs.map} +1 -1
  29. package/dist/{chunk-Z6FZQOTW.js → chunk-GDVB7QDZ.js} +28 -28
  30. package/dist/{chunk-Z6FZQOTW.js.map → chunk-GDVB7QDZ.js.map} +1 -1
  31. package/dist/{chunk-35O2X7WY.js → chunk-HLIMHIRH.js} +9 -9
  32. package/dist/{chunk-35O2X7WY.js.map → chunk-HLIMHIRH.js.map} +1 -1
  33. package/dist/{chunk-3US2QXEF.mjs → chunk-JBXNEOFB.mjs} +3 -3
  34. package/dist/{chunk-3US2QXEF.mjs.map → chunk-JBXNEOFB.mjs.map} +1 -1
  35. package/dist/{chunk-K4AJL4BH.mjs → chunk-JXROBMRU.mjs} +3 -3
  36. package/dist/{chunk-K4AJL4BH.mjs.map → chunk-JXROBMRU.mjs.map} +1 -1
  37. package/dist/{chunk-37FWIPYO.mjs → chunk-KGC5CRS7.mjs} +3 -3
  38. package/dist/{chunk-37FWIPYO.mjs.map → chunk-KGC5CRS7.mjs.map} +1 -1
  39. package/dist/{chunk-7KPMLHPR.mjs → chunk-LBCUQ4FY.mjs} +3 -3
  40. package/dist/{chunk-7KPMLHPR.mjs.map → chunk-LBCUQ4FY.mjs.map} +1 -1
  41. package/dist/{chunk-7MPIYSRH.js → chunk-LW2LFJZ7.js} +66 -64
  42. package/dist/chunk-LW2LFJZ7.js.map +1 -0
  43. package/dist/{chunk-KTEEXEAX.mjs → chunk-M64U336M.mjs} +6 -6
  44. package/dist/{chunk-KTEEXEAX.mjs.map → chunk-M64U336M.mjs.map} +1 -1
  45. package/dist/{chunk-O2CUOJ74.js → chunk-MCHTZ63Q.js} +4 -4
  46. package/dist/{chunk-O2CUOJ74.js.map → chunk-MCHTZ63Q.js.map} +1 -1
  47. package/dist/{chunk-GTJGX7IZ.js → chunk-N5FWIT7N.js} +10 -10
  48. package/dist/{chunk-GTJGX7IZ.js.map → chunk-N5FWIT7N.js.map} +1 -1
  49. package/dist/{chunk-NM3YTQ26.mjs → chunk-N7T4X6A7.mjs} +3 -3
  50. package/dist/{chunk-NM3YTQ26.mjs.map → chunk-N7T4X6A7.mjs.map} +1 -1
  51. package/dist/{chunk-IGOMJHC6.mjs → chunk-NBW6WJQT.mjs} +2 -2
  52. package/dist/chunk-NBW6WJQT.mjs.map +1 -0
  53. package/dist/{chunk-7D52TFVL.mjs → chunk-NDGYIHJ3.mjs} +3 -3
  54. package/dist/{chunk-7D52TFVL.mjs.map → chunk-NDGYIHJ3.mjs.map} +1 -1
  55. package/dist/{chunk-NRVV4PHB.mjs → chunk-OZEOBZOW.mjs} +10 -8
  56. package/dist/chunk-OZEOBZOW.mjs.map +1 -0
  57. package/dist/{chunk-R3CGJK7D.mjs → chunk-RUWUH7DW.mjs} +3 -3
  58. package/dist/{chunk-R3CGJK7D.mjs.map → chunk-RUWUH7DW.mjs.map} +1 -1
  59. package/dist/{chunk-62BD4WLW.js → chunk-TXI3QDYE.js} +34 -34
  60. package/dist/{chunk-62BD4WLW.js.map → chunk-TXI3QDYE.js.map} +1 -1
  61. package/dist/{chunk-TCIK6WHT.mjs → chunk-TZA5T4MJ.mjs} +4 -4
  62. package/dist/{chunk-TCIK6WHT.mjs.map → chunk-TZA5T4MJ.mjs.map} +1 -1
  63. package/dist/{chunk-GKI74CPB.js → chunk-V32NUE5U.js} +55 -55
  64. package/dist/{chunk-GKI74CPB.js.map → chunk-V32NUE5U.js.map} +1 -1
  65. package/dist/{chunk-2AJ73ULK.mjs → chunk-WSXP645I.mjs} +3 -3
  66. package/dist/{chunk-2AJ73ULK.mjs.map → chunk-WSXP645I.mjs.map} +1 -1
  67. package/dist/{chunk-H475T2N7.js → chunk-Y4YIGEX6.js} +213 -201
  68. package/dist/chunk-Y4YIGEX6.js.map +1 -0
  69. package/dist/index.js +664 -664
  70. package/dist/index.mjs +3 -3
  71. package/dist/platform/admin/index.js +11 -11
  72. package/dist/platform/admin/index.mjs +5 -5
  73. package/dist/platform/agents-workspace.js +8 -8
  74. package/dist/platform/agents-workspace.mjs +7 -7
  75. package/dist/platform/app-shell.js +5 -5
  76. package/dist/platform/app-shell.mjs +4 -4
  77. package/dist/platform/auth/index.js +23 -23
  78. package/dist/platform/auth/index.mjs +5 -5
  79. package/dist/platform/billing/index.js +5 -5
  80. package/dist/platform/billing/index.mjs +4 -4
  81. package/dist/platform/impersonation/index.js +5 -5
  82. package/dist/platform/impersonation/index.mjs +4 -4
  83. package/dist/platform/index.d.mts +1 -1
  84. package/dist/platform/index.d.ts +1 -1
  85. package/dist/platform/index.js +86 -86
  86. package/dist/platform/index.mjs +19 -19
  87. package/dist/platform/pages/index.d.mts +2 -2
  88. package/dist/platform/pages/index.d.ts +2 -2
  89. package/dist/platform/pages/index.js +472 -474
  90. package/dist/platform/pages/index.js.map +1 -1
  91. package/dist/platform/pages/index.mjs +174 -176
  92. package/dist/platform/pages/index.mjs.map +1 -1
  93. package/dist/platform/settings/index.js +8 -8
  94. package/dist/platform/settings/index.mjs +7 -7
  95. package/dist/platform/workflow-api-client.d.mts +1 -1
  96. package/dist/platform/workflow-api-client.d.ts +1 -1
  97. package/dist/platform/workflow-api-client.js +62 -62
  98. package/dist/platform/workflow-api-client.mjs +1 -1
  99. package/dist/platform/workflow-canvas-shell.js +6 -6
  100. package/dist/platform/workflow-canvas-shell.mjs +5 -5
  101. package/dist/{workflow-api-client-E1QFRgeP.d.ts → workflow-api-client-CThkBj5j.d.ts} +4 -0
  102. package/dist/{workflow-api-client-D9_0Spdz.d.mts → workflow-api-client-crR8L7fy.d.mts} +4 -0
  103. package/package.json +1 -1
  104. package/dist/chunk-7MPIYSRH.js.map +0 -1
  105. package/dist/chunk-H475T2N7.js.map +0 -1
  106. package/dist/chunk-IGOMJHC6.mjs.map +0 -1
  107. package/dist/chunk-NRVV4PHB.mjs.map +0 -1
  108. package/dist/chunk-ZJMYLUZ2.mjs.map +0 -1
  109. package/dist/chunk-ZUU7G3PC.js.map +0 -1
@@ -1,17 +1,17 @@
1
1
  "use client";
2
2
  import { adaptWorkflowGraphToUi, formatDurationMs } from '../../chunk-UQXVCVAN.mjs';
3
- import { WorkflowWorkspace } from '../../chunk-TCIK6WHT.mjs';
4
- export { RolesPageView, UsersPageView } from '../../chunk-TCIK6WHT.mjs';
5
- import { DatasourceModal, findDialect, findCategory, DIALECT_CATEGORIES } from '../../chunk-37FWIPYO.mjs';
6
- export { DIALECT_CATEGORIES, DatasourceFormModal, DatasourceModal, findCategory, findDialect } from '../../chunk-37FWIPYO.mjs';
7
- import { defaultRuleForm, RuleForm, ExecutionTimelinePanel, defaultRuleCondition, defaultRuleAction, RuleConditionBuilder, RuleActionBuilder } from '../../chunk-ZJMYLUZ2.mjs';
3
+ import { WorkflowWorkspace } from '../../chunk-TZA5T4MJ.mjs';
4
+ export { RolesPageView, UsersPageView } from '../../chunk-TZA5T4MJ.mjs';
5
+ import { DatasourceModal, findDialect, findCategory, DIALECT_CATEGORIES } from '../../chunk-KGC5CRS7.mjs';
6
+ export { DIALECT_CATEGORIES, DatasourceFormModal, DatasourceModal, findCategory, findDialect } from '../../chunk-KGC5CRS7.mjs';
7
+ import { defaultRuleForm, RuleForm, ExecutionTimelinePanel, defaultRuleCondition, defaultRuleAction, RuleConditionBuilder, RuleActionBuilder } from '../../chunk-5TJR3VJ6.mjs';
8
8
  import '../../chunk-JB6RNAD2.mjs';
9
9
  import '../../chunk-LEXBTVGM.mjs';
10
- import '../../chunk-3US2QXEF.mjs';
11
- import { HeroSection, SearchBar, PageLoadingState, PageEmptyState, EntityCard, CreateActionButton, GlassModal, FormGrid, FormSelect, FormInput, FormTextarea, SectionHeader, Text, Form, FormActionsRow, Table, TableHead, TableRow, TableHeader, TableBody, TableCell, InlineForm, CopyableId, ListCard, ListCardItem, Avatar, SectionCard, Tabs, TabsList, TabsTrigger, TabsContent, StepIndicator, FilterTileButton, FormToggle, Spinner, StatusBadge, ChipPicker, FormCheckbox, SegmentedControl, DatePicker, TimePicker } from '../../chunk-35P352JX.mjs';
12
- import '../../chunk-IGOMJHC6.mjs';
13
- import '../../chunk-3AY5HIQ6.mjs';
10
+ import '../../chunk-JBXNEOFB.mjs';
11
+ import { HeroSection, SearchBar, PageLoadingState, PageEmptyState, EntityCard, CreateActionButton, GlassModal, FormGrid, FormSelect, FormInput, FormTextarea, SectionHeader, Text, Form, FormActionsRow, Table, TableHead, TableRow, TableHeader, TableBody, TableCell, InlineForm, CopyableId, ListCard, ListCardItem, Avatar, SectionCard, Tabs, TabsList, TabsTrigger, TabsContent, StepIndicator, FilterTileButton, FormToggle, Spinner, StatusBadge, ChipPicker, FormCheckbox, SegmentedControl, DatePicker, TimePicker } from '../../chunk-D5FL3ZHC.mjs';
14
12
  import '../../chunk-7VJ7CMMT.mjs';
13
+ import '../../chunk-NBW6WJQT.mjs';
14
+ import '../../chunk-3AY5HIQ6.mjs';
15
15
  import '../../chunk-PLTLRL2V.mjs';
16
16
  import { Badge, Button } from '../../chunk-WR55H7DH.mjs';
17
17
  import '../../chunk-D2JF6C3E.mjs';
@@ -962,7 +962,16 @@ function RulesPageView({ labels, rules, loading, onCreate, onUpdate, onDelete, o
962
962
  title: labels.title,
963
963
  subtitle: labels.subtitle,
964
964
  gradient: "from-fuchsia-500 to-purple-700",
965
- toolbar: /* @__PURE__ */ jsx(
965
+ toolbar: !isEmpty ? /* @__PURE__ */ jsx(
966
+ SearchBar,
967
+ {
968
+ searchTerm,
969
+ onSearchChange: setSearchTerm,
970
+ placeholder: labels.searchPlaceholder ?? labels.title,
971
+ noBorder: true
972
+ }
973
+ ) : void 0,
974
+ actions: /* @__PURE__ */ jsx(
966
975
  CreateActionButton,
967
976
  {
968
977
  mode: "desktop",
@@ -982,43 +991,33 @@ function RulesPageView({ labels, rules, loading, onCreate, onUpdate, onDelete, o
982
991
  accent: "fuchsia"
983
992
  }
984
993
  );
985
- const content = loading ? /* @__PURE__ */ jsx(PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsx(PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsxs(Fragment, { children: [
986
- /* @__PURE__ */ jsx(
987
- SearchBar,
988
- {
989
- searchTerm,
990
- onSearchChange: setSearchTerm,
991
- placeholder: labels.searchPlaceholder ?? labels.title
992
- }
993
- ),
994
- /* @__PURE__ */ jsx("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3", children: filteredRules.map((rule) => /* @__PURE__ */ jsx(
995
- EntityCard,
996
- {
997
- accentGradient: "from-fuchsia-500 to-purple-700",
998
- icon: /* @__PURE__ */ jsx("div", { className: "flex h-11 w-11 items-center justify-center rounded-lg bg-fuchsia-500/10 text-fuchsia-600 dark:bg-fuchsia-500/20 dark:text-fuchsia-400", children: /* @__PURE__ */ jsx(AdjustmentsHorizontalIcon, { className: "h-6 w-6" }) }),
999
- title: rule.name,
1000
- subtitle: `${labels.order}: ${rule.order ?? 0}`,
1001
- status: /* @__PURE__ */ jsx(Badge, { color: rule.enabled ? "emerald" : "zinc", children: rule.enabled ? labels.enabled : labels.disabled }),
1002
- footer: /* @__PURE__ */ jsxs("div", { className: "flex gap-2", children: [
1003
- /* @__PURE__ */ jsx(Button, { type: "button", size: "sm", outline: true, onClick: () => setEditing(rule), children: labels.edit }),
1004
- /* @__PURE__ */ jsx(
1005
- Button,
1006
- {
1007
- type: "button",
1008
- size: "sm",
1009
- color: "rose",
1010
- onClick: () => {
1011
- if (window.confirm(labels.deleteConfirm)) onDelete(rule);
1012
- },
1013
- children: labels.delete
1014
- }
1015
- )
1016
- ] }),
1017
- children: rule.description && /* @__PURE__ */ jsx("p", { className: "mt-1 text-xs text-slate-500 dark:text-slate-400", children: rule.description })
1018
- },
1019
- rule.ruleId
1020
- )) })
1021
- ] });
994
+ const content = loading ? /* @__PURE__ */ jsx(PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsx(PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsx("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3", children: filteredRules.map((rule) => /* @__PURE__ */ jsx(
995
+ EntityCard,
996
+ {
997
+ accentGradient: "from-fuchsia-500 to-purple-700",
998
+ icon: /* @__PURE__ */ jsx("div", { className: "flex h-11 w-11 items-center justify-center rounded-lg bg-fuchsia-500/10 text-fuchsia-600 dark:bg-fuchsia-500/20 dark:text-fuchsia-400", children: /* @__PURE__ */ jsx(AdjustmentsHorizontalIcon, { className: "h-6 w-6" }) }),
999
+ title: rule.name,
1000
+ subtitle: `${labels.order}: ${rule.order ?? 0}`,
1001
+ status: /* @__PURE__ */ jsx(Badge, { color: rule.enabled ? "emerald" : "zinc", children: rule.enabled ? labels.enabled : labels.disabled }),
1002
+ footer: /* @__PURE__ */ jsxs("div", { className: "flex gap-2", children: [
1003
+ /* @__PURE__ */ jsx(Button, { type: "button", size: "sm", outline: true, onClick: () => setEditing(rule), children: labels.edit }),
1004
+ /* @__PURE__ */ jsx(
1005
+ Button,
1006
+ {
1007
+ type: "button",
1008
+ size: "sm",
1009
+ color: "rose",
1010
+ onClick: () => {
1011
+ if (window.confirm(labels.deleteConfirm)) onDelete(rule);
1012
+ },
1013
+ children: labels.delete
1014
+ }
1015
+ )
1016
+ ] }),
1017
+ children: rule.description && /* @__PURE__ */ jsx("p", { className: "mt-1 text-xs text-slate-500 dark:text-slate-400", children: rule.description })
1018
+ },
1019
+ rule.ruleId
1020
+ )) });
1022
1021
  return /* @__PURE__ */ jsxs(Fragment, { children: [
1023
1022
  /* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
1024
1023
  hero,
@@ -1319,7 +1318,16 @@ function DatasourcesPageView({
1319
1318
  title: labels.title,
1320
1319
  subtitle: labels.subtitle,
1321
1320
  gradient: "from-amber-500 to-orange-600",
1322
- toolbar: /* @__PURE__ */ jsx(
1321
+ toolbar: !isEmpty ? /* @__PURE__ */ jsx(
1322
+ SearchBar,
1323
+ {
1324
+ searchTerm,
1325
+ onSearchChange: setSearchTerm,
1326
+ placeholder: labels.searchPlaceholder ?? labels.title,
1327
+ noBorder: true
1328
+ }
1329
+ ) : void 0,
1330
+ actions: /* @__PURE__ */ jsx(
1323
1331
  CreateActionButton,
1324
1332
  {
1325
1333
  mode: "desktop",
@@ -1339,14 +1347,6 @@ function DatasourcesPageView({
1339
1347
  accent: "amber"
1340
1348
  }
1341
1349
  ),
1342
- !isEmpty && /* @__PURE__ */ jsx(
1343
- SearchBar,
1344
- {
1345
- searchTerm,
1346
- onSearchChange: setSearchTerm,
1347
- placeholder: labels.searchPlaceholder ?? labels.title
1348
- }
1349
- ),
1350
1350
  isEmpty ? /* @__PURE__ */ jsx(
1351
1351
  PageEmptyState,
1352
1352
  {
@@ -1762,7 +1762,16 @@ function ConnectionsPageView({
1762
1762
  title: labels.title,
1763
1763
  subtitle: labels.subtitle,
1764
1764
  gradient: "from-sky-500 to-indigo-600",
1765
- toolbar: /* @__PURE__ */ jsx(
1765
+ toolbar: !isEmpty ? /* @__PURE__ */ jsx(
1766
+ SearchBar,
1767
+ {
1768
+ searchTerm,
1769
+ onSearchChange: setSearchTerm,
1770
+ placeholder: labels.searchPlaceholder ?? labels.title,
1771
+ noBorder: true
1772
+ }
1773
+ ) : void 0,
1774
+ actions: /* @__PURE__ */ jsx(
1766
1775
  CreateActionButton,
1767
1776
  {
1768
1777
  mode: "desktop",
@@ -1782,50 +1791,40 @@ function ConnectionsPageView({
1782
1791
  accent: "sky"
1783
1792
  }
1784
1793
  );
1785
- const content = loading ? /* @__PURE__ */ jsx(PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsx(PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsxs(Fragment, { children: [
1786
- /* @__PURE__ */ jsx(
1787
- SearchBar,
1788
- {
1789
- searchTerm,
1790
- onSearchChange: setSearchTerm,
1791
- placeholder: labels.searchPlaceholder ?? labels.title
1792
- }
1793
- ),
1794
- /* @__PURE__ */ jsx("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3", children: filteredConnections.map((conn) => /* @__PURE__ */ jsx(
1795
- EntityCard,
1796
- {
1797
- accentGradient: "from-sky-500 to-indigo-600",
1798
- icon: /* @__PURE__ */ jsx("div", { className: "flex h-11 w-11 items-center justify-center rounded-lg bg-sky-500/10 text-sky-600 dark:bg-sky-500/20 dark:text-sky-400", children: /* @__PURE__ */ jsx(LinkIcon, { className: "h-6 w-6" }) }),
1799
- title: conn.name,
1800
- subtitle: providerLabel(conn.providerSlug),
1801
- status: /* @__PURE__ */ jsxs("div", { className: "flex gap-1", children: [
1802
- /* @__PURE__ */ jsx(Badge, { color: conn.enabled ? "emerald" : "zinc", children: conn.enabled ? labels.enable : labels.disable }),
1803
- conn.credentialRef ? /* @__PURE__ */ jsx(Badge, { color: "indigo", children: "Secret set" }) : /* @__PURE__ */ jsx(Badge, { color: "amber", children: "No secret" })
1804
- ] }),
1805
- footer: /* @__PURE__ */ jsxs("div", { className: "flex gap-2", children: [
1806
- /* @__PURE__ */ jsx(Button, { type: "button", size: "sm", outline: true, onClick: () => setEditing(conn), children: labels.edit }),
1807
- /* @__PURE__ */ jsx(
1808
- Button,
1809
- {
1810
- type: "button",
1811
- size: "sm",
1812
- color: "rose",
1813
- onClick: async () => {
1814
- if (window.confirm(labels.deleteConfirm)) await onDelete(conn);
1815
- },
1816
- children: labels.delete
1817
- }
1818
- )
1819
- ] }),
1820
- children: /* @__PURE__ */ jsxs("dl", { className: "mt-1 space-y-0.5 text-xs text-slate-500 dark:text-slate-400", children: [
1821
- conn.region && /* @__PURE__ */ jsx(Row, { label: "Region", value: conn.region }),
1822
- conn.endpoint && /* @__PURE__ */ jsx(Row, { label: "Endpoint", value: conn.endpoint }),
1823
- conn.modelFilter && conn.modelFilter.length > 0 && /* @__PURE__ */ jsx(Row, { label: "Models", value: conn.modelFilter.join(", ") })
1824
- ] })
1825
- },
1826
- conn.id
1827
- )) })
1828
- ] });
1794
+ const content = loading ? /* @__PURE__ */ jsx(PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsx(PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsx("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3", children: filteredConnections.map((conn) => /* @__PURE__ */ jsx(
1795
+ EntityCard,
1796
+ {
1797
+ accentGradient: "from-sky-500 to-indigo-600",
1798
+ icon: /* @__PURE__ */ jsx("div", { className: "flex h-11 w-11 items-center justify-center rounded-lg bg-sky-500/10 text-sky-600 dark:bg-sky-500/20 dark:text-sky-400", children: /* @__PURE__ */ jsx(LinkIcon, { className: "h-6 w-6" }) }),
1799
+ title: conn.name,
1800
+ subtitle: providerLabel(conn.providerSlug),
1801
+ status: /* @__PURE__ */ jsxs("div", { className: "flex gap-1", children: [
1802
+ /* @__PURE__ */ jsx(Badge, { color: conn.enabled ? "emerald" : "zinc", children: conn.enabled ? labels.enable : labels.disable }),
1803
+ conn.credentialRef ? /* @__PURE__ */ jsx(Badge, { color: "indigo", children: "Secret set" }) : /* @__PURE__ */ jsx(Badge, { color: "amber", children: "No secret" })
1804
+ ] }),
1805
+ footer: /* @__PURE__ */ jsxs("div", { className: "flex gap-2", children: [
1806
+ /* @__PURE__ */ jsx(Button, { type: "button", size: "sm", outline: true, onClick: () => setEditing(conn), children: labels.edit }),
1807
+ /* @__PURE__ */ jsx(
1808
+ Button,
1809
+ {
1810
+ type: "button",
1811
+ size: "sm",
1812
+ color: "rose",
1813
+ onClick: async () => {
1814
+ if (window.confirm(labels.deleteConfirm)) await onDelete(conn);
1815
+ },
1816
+ children: labels.delete
1817
+ }
1818
+ )
1819
+ ] }),
1820
+ children: /* @__PURE__ */ jsxs("dl", { className: "mt-1 space-y-0.5 text-xs text-slate-500 dark:text-slate-400", children: [
1821
+ conn.region && /* @__PURE__ */ jsx(Row, { label: "Region", value: conn.region }),
1822
+ conn.endpoint && /* @__PURE__ */ jsx(Row, { label: "Endpoint", value: conn.endpoint }),
1823
+ conn.modelFilter && conn.modelFilter.length > 0 && /* @__PURE__ */ jsx(Row, { label: "Models", value: conn.modelFilter.join(", ") })
1824
+ ] })
1825
+ },
1826
+ conn.id
1827
+ )) });
1829
1828
  return /* @__PURE__ */ jsxs(Fragment, { children: [
1830
1829
  /* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
1831
1830
  hero,
@@ -2283,6 +2282,15 @@ function AgentsWorkspacePageView({
2283
2282
  title: labels.title,
2284
2283
  subtitle: labels.subtitle,
2285
2284
  gradient: "from-violet-500 to-indigo-700",
2285
+ toolbar: !isEmpty ? /* @__PURE__ */ jsx(
2286
+ SearchBar,
2287
+ {
2288
+ searchTerm,
2289
+ onSearchChange: setSearchTerm,
2290
+ placeholder: labels.searchPlaceholder,
2291
+ noBorder: true
2292
+ }
2293
+ ) : void 0,
2286
2294
  actions: /* @__PURE__ */ jsx(
2287
2295
  CreateActionButton,
2288
2296
  {
@@ -2310,84 +2318,74 @@ function AgentsWorkspacePageView({
2310
2318
  message: labels.emptyMessage,
2311
2319
  iconName: "folder-open"
2312
2320
  }
2313
- ) : /* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
2314
- /* @__PURE__ */ jsx(
2315
- SearchBar,
2316
- {
2317
- searchTerm,
2318
- onSearchChange: setSearchTerm,
2319
- placeholder: labels.searchPlaceholder
2320
- }
2321
- ),
2322
- /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 gap-4 lg:grid-cols-[20rem_minmax(0,1fr)]", children: [
2323
- /* @__PURE__ */ jsx("div", { className: "lg:sticky lg:top-4", children: /* @__PURE__ */ jsx(ListCard, { variant: "glass", children: filteredAgents.map((agent) => {
2324
- const id = String(agent.agentId ?? agent.id ?? "");
2325
- const active = id === selectedId;
2326
- const initials = deriveInitials(String(agent.name ?? id));
2327
- const modelName = models.find((m) => m.id === String(agent.modelId ?? ""))?.name ?? String(agent.modelId ?? "");
2328
- return /* @__PURE__ */ jsx(
2329
- ListCardItem,
2330
- {
2331
- leading: /* @__PURE__ */ jsx(Avatar, { tone: active ? "violet" : "slate", initials }),
2332
- trailing: agent.activePromptVersion > 0 ? /* @__PURE__ */ jsxs(Badge, { color: "emerald", children: [
2333
- "v",
2334
- agent.activePromptVersion
2335
- ] }) : /* @__PURE__ */ jsx(Badge, { color: "zinc", children: "draft" }),
2336
- pressable: true,
2337
- onPress: () => {
2338
- setSelectedId(id);
2339
- onSelectAgent?.(id);
2340
- },
2341
- className: active ? "bg-violet-500/5 dark:bg-violet-400/10" : "",
2342
- children: /* @__PURE__ */ jsxs("div", { className: "min-w-0", children: [
2343
- /* @__PURE__ */ jsx("p", { className: "truncate text-sm font-semibold text-slate-900 dark:text-slate-100", children: String(agent.name ?? id) }),
2344
- modelName && /* @__PURE__ */ jsx("p", { className: "truncate text-xs text-slate-500 dark:text-slate-400", children: modelName })
2345
- ] })
2346
- },
2347
- id
2348
- );
2349
- }) }) }),
2350
- /* @__PURE__ */ jsx("div", { children: selectedAgent ? /* @__PURE__ */ jsx(
2351
- AgentDetail,
2352
- {
2353
- agent: selectedAgent,
2354
- labels,
2355
- models,
2356
- tools,
2357
- connections,
2358
- prompts: promptsByAgent[String(selectedAgent.agentId ?? selectedAgent.id ?? "")] ?? [],
2359
- onUpdateAgent,
2360
- onDeleteAgent,
2361
- onCreatePrompt,
2362
- onActivatePrompt,
2363
- onAttachTool,
2364
- onDetachTool,
2365
- onUpdateModel,
2366
- onCleared: () => {
2367
- setSelectedId(null);
2368
- onSelectAgent?.(null);
2369
- }
2370
- },
2371
- String(selectedAgent.agentId ?? selectedAgent.id ?? "")
2372
- ) : /* @__PURE__ */ jsx(
2373
- SectionCard,
2321
+ ) : /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 gap-4 lg:grid-cols-[20rem_minmax(0,1fr)]", children: [
2322
+ /* @__PURE__ */ jsx("div", { className: "lg:sticky lg:top-4", children: /* @__PURE__ */ jsx(ListCard, { variant: "glass", children: filteredAgents.map((agent) => {
2323
+ const id = String(agent.agentId ?? agent.id ?? "");
2324
+ const active = id === selectedId;
2325
+ const initials = deriveInitials(String(agent.name ?? id));
2326
+ const modelName = models.find((m) => m.id === String(agent.modelId ?? ""))?.name ?? String(agent.modelId ?? "");
2327
+ return /* @__PURE__ */ jsx(
2328
+ ListCardItem,
2374
2329
  {
2375
- header: {
2376
- icon: /* @__PURE__ */ jsx(CpuChipIcon, { className: "h-4 w-4" }),
2377
- title: labels.noSelection,
2378
- subtitle: labels.noSelectionMessage
2330
+ leading: /* @__PURE__ */ jsx(Avatar, { tone: active ? "violet" : "slate", initials }),
2331
+ trailing: agent.activePromptVersion > 0 ? /* @__PURE__ */ jsxs(Badge, { color: "emerald", children: [
2332
+ "v",
2333
+ agent.activePromptVersion
2334
+ ] }) : /* @__PURE__ */ jsx(Badge, { color: "zinc", children: "draft" }),
2335
+ pressable: true,
2336
+ onPress: () => {
2337
+ setSelectedId(id);
2338
+ onSelectAgent?.(id);
2379
2339
  },
2380
- children: /* @__PURE__ */ jsx(
2381
- PageEmptyState,
2382
- {
2383
- title: labels.noSelection,
2384
- message: labels.noSelectionMessage,
2385
- iconName: "folder-open"
2386
- }
2387
- )
2340
+ className: active ? "bg-violet-500/5 dark:bg-violet-400/10" : "",
2341
+ children: /* @__PURE__ */ jsxs("div", { className: "min-w-0", children: [
2342
+ /* @__PURE__ */ jsx("p", { className: "truncate text-sm font-semibold text-slate-900 dark:text-slate-100", children: String(agent.name ?? id) }),
2343
+ modelName && /* @__PURE__ */ jsx("p", { className: "truncate text-xs text-slate-500 dark:text-slate-400", children: modelName })
2344
+ ] })
2345
+ },
2346
+ id
2347
+ );
2348
+ }) }) }),
2349
+ /* @__PURE__ */ jsx("div", { children: selectedAgent ? /* @__PURE__ */ jsx(
2350
+ AgentDetail,
2351
+ {
2352
+ agent: selectedAgent,
2353
+ labels,
2354
+ models,
2355
+ tools,
2356
+ connections,
2357
+ prompts: promptsByAgent[String(selectedAgent.agentId ?? selectedAgent.id ?? "")] ?? [],
2358
+ onUpdateAgent,
2359
+ onDeleteAgent,
2360
+ onCreatePrompt,
2361
+ onActivatePrompt,
2362
+ onAttachTool,
2363
+ onDetachTool,
2364
+ onUpdateModel,
2365
+ onCleared: () => {
2366
+ setSelectedId(null);
2367
+ onSelectAgent?.(null);
2388
2368
  }
2389
- ) })
2390
- ] })
2369
+ },
2370
+ String(selectedAgent.agentId ?? selectedAgent.id ?? "")
2371
+ ) : /* @__PURE__ */ jsx(
2372
+ SectionCard,
2373
+ {
2374
+ header: {
2375
+ icon: /* @__PURE__ */ jsx(CpuChipIcon, { className: "h-4 w-4" }),
2376
+ title: labels.noSelection,
2377
+ subtitle: labels.noSelectionMessage
2378
+ },
2379
+ children: /* @__PURE__ */ jsx(
2380
+ PageEmptyState,
2381
+ {
2382
+ title: labels.noSelection,
2383
+ message: labels.noSelectionMessage,
2384
+ iconName: "folder-open"
2385
+ }
2386
+ )
2387
+ }
2388
+ ) })
2391
2389
  ] });
2392
2390
  return /* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
2393
2391
  hero,