@datatechsolutions/ui 3.7.3 → 3.7.4

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 (159) hide show
  1. package/dist/astrlabe/index.js +108 -108
  2. package/dist/astrlabe/index.mjs +4 -4
  3. package/dist/astrlabe/workflow-canvas.js +4 -4
  4. package/dist/astrlabe/workflow-canvas.mjs +3 -3
  5. package/dist/{chunk-5W6LMDXV.mjs → chunk-4HP7XS5I.mjs} +4 -4
  6. package/dist/{chunk-5W6LMDXV.mjs.map → chunk-4HP7XS5I.mjs.map} +1 -1
  7. package/dist/{chunk-7JZFNKJD.js → chunk-7WIWDSF6.js} +36 -36
  8. package/dist/{chunk-7JZFNKJD.js.map → chunk-7WIWDSF6.js.map} +1 -1
  9. package/dist/{chunk-FKUIVS6I.js → chunk-BEUPW5WS.js} +28 -28
  10. package/dist/{chunk-FKUIVS6I.js.map → chunk-BEUPW5WS.js.map} +1 -1
  11. package/dist/{chunk-PYNXIDG3.mjs → chunk-CTCO2YI5.mjs} +3 -3
  12. package/dist/{chunk-PYNXIDG3.mjs.map → chunk-CTCO2YI5.mjs.map} +1 -1
  13. package/dist/{chunk-A4A3SQTV.mjs → chunk-DCBRGVD3.mjs} +3 -3
  14. package/dist/{chunk-A4A3SQTV.mjs.map → chunk-DCBRGVD3.mjs.map} +1 -1
  15. package/dist/{chunk-E57RZXOR.js → chunk-DWIBK7GV.js} +25 -25
  16. package/dist/{chunk-E57RZXOR.js.map → chunk-DWIBK7GV.js.map} +1 -1
  17. package/dist/{chunk-5YVOLHSW.mjs → chunk-EIZM2EQA.mjs} +4 -4
  18. package/dist/{chunk-5YVOLHSW.mjs.map → chunk-EIZM2EQA.mjs.map} +1 -1
  19. package/dist/{chunk-TCP45Q4B.js → chunk-FIB2CFJK.js} +9 -9
  20. package/dist/{chunk-TCP45Q4B.js.map → chunk-FIB2CFJK.js.map} +1 -1
  21. package/dist/{chunk-32DHEVOH.mjs → chunk-GAN7AKZ2.mjs} +3 -3
  22. package/dist/{chunk-32DHEVOH.mjs.map → chunk-GAN7AKZ2.mjs.map} +1 -1
  23. package/dist/{chunk-FNA66TT4.js → chunk-GD6FHRHV.js} +3 -3
  24. package/dist/{chunk-FNA66TT4.js.map → chunk-GD6FHRHV.js.map} +1 -1
  25. package/dist/{chunk-PCUINUIC.mjs → chunk-IKH5IRDK.mjs} +3 -3
  26. package/dist/{chunk-PCUINUIC.mjs.map → chunk-IKH5IRDK.mjs.map} +1 -1
  27. package/dist/{chunk-VS6PTRQ7.mjs → chunk-IKHWYYZC.mjs} +3 -3
  28. package/dist/{chunk-VS6PTRQ7.mjs.map → chunk-IKHWYYZC.mjs.map} +1 -1
  29. package/dist/{chunk-3H5CFLVK.js → chunk-IYDGO7RW.js} +135 -135
  30. package/dist/{chunk-3H5CFLVK.js.map → chunk-IYDGO7RW.js.map} +1 -1
  31. package/dist/{chunk-CZZOCKEA.mjs → chunk-JUDQX6MP.mjs} +3 -3
  32. package/dist/{chunk-CZZOCKEA.mjs.map → chunk-JUDQX6MP.mjs.map} +1 -1
  33. package/dist/{chunk-HBOORO52.js → chunk-KI4UPW4Z.js} +4 -4
  34. package/dist/{chunk-HBOORO52.js.map → chunk-KI4UPW4Z.js.map} +1 -1
  35. package/dist/{chunk-Q4QORAMH.js → chunk-MFAVWJWE.js} +10 -10
  36. package/dist/{chunk-Q4QORAMH.js.map → chunk-MFAVWJWE.js.map} +1 -1
  37. package/dist/{chunk-KKXI7CPF.mjs → chunk-MGZTZELL.mjs} +3 -3
  38. package/dist/{chunk-KKXI7CPF.mjs.map → chunk-MGZTZELL.mjs.map} +1 -1
  39. package/dist/{chunk-ZP37M2QK.mjs → chunk-MRLEINJN.mjs} +7 -7
  40. package/dist/{chunk-ZP37M2QK.mjs.map → chunk-MRLEINJN.mjs.map} +1 -1
  41. package/dist/{chunk-57E4TCB2.mjs → chunk-N5365CGD.mjs} +3 -3
  42. package/dist/{chunk-57E4TCB2.mjs.map → chunk-N5365CGD.mjs.map} +1 -1
  43. package/dist/{chunk-EWYAM4WJ.mjs → chunk-P7GVXI7Y.mjs} +3 -3
  44. package/dist/{chunk-EWYAM4WJ.mjs.map → chunk-P7GVXI7Y.mjs.map} +1 -1
  45. package/dist/{chunk-3X3IYDG6.js → chunk-QL2JYRBN.js} +68 -68
  46. package/dist/{chunk-3X3IYDG6.js.map → chunk-QL2JYRBN.js.map} +1 -1
  47. package/dist/{chunk-RCHTRG7R.js → chunk-R2RPRRB4.js} +55 -55
  48. package/dist/{chunk-RCHTRG7R.js.map → chunk-R2RPRRB4.js.map} +1 -1
  49. package/dist/{chunk-H37VDL7Y.js → chunk-RBB5YGWH.js} +4 -4
  50. package/dist/{chunk-H37VDL7Y.js.map → chunk-RBB5YGWH.js.map} +1 -1
  51. package/dist/{chunk-TJPPZU77.js → chunk-SUU7XPRX.js} +34 -34
  52. package/dist/{chunk-TJPPZU77.js.map → chunk-SUU7XPRX.js.map} +1 -1
  53. package/dist/{chunk-F35GFICG.js → chunk-VDO6MDQW.js} +13 -13
  54. package/dist/{chunk-F35GFICG.js.map → chunk-VDO6MDQW.js.map} +1 -1
  55. package/dist/{chunk-VPFVW7ZF.js → chunk-XT76DMP5.js} +35 -35
  56. package/dist/{chunk-VPFVW7ZF.js.map → chunk-XT76DMP5.js.map} +1 -1
  57. package/dist/{chunk-WDBVIU7W.mjs → chunk-YNHQ36UU.mjs} +3 -3
  58. package/dist/{chunk-WDBVIU7W.mjs.map → chunk-YNHQ36UU.mjs.map} +1 -1
  59. package/dist/{chunk-E6C7MFHJ.mjs → chunk-Z3BMHKKH.mjs} +3 -3
  60. package/dist/{chunk-E6C7MFHJ.mjs.map → chunk-Z3BMHKKH.mjs.map} +1 -1
  61. package/dist/{chunk-Q7HRCCFT.js → chunk-ZF7RJNPD.js} +45 -45
  62. package/dist/{chunk-Q7HRCCFT.js.map → chunk-ZF7RJNPD.js.map} +1 -1
  63. package/dist/{chunk-74BU2EBZ.mjs → chunk-ZWLMKOHZ.mjs} +6 -6
  64. package/dist/{chunk-74BU2EBZ.mjs.map → chunk-ZWLMKOHZ.mjs.map} +1 -1
  65. package/dist/index.js +665 -665
  66. package/dist/index.mjs +2 -2
  67. package/dist/platform/admin/index.js +10 -10
  68. package/dist/platform/admin/index.mjs +4 -4
  69. package/dist/platform/agents-workspace.js +7 -7
  70. package/dist/platform/agents-workspace.mjs +6 -6
  71. package/dist/platform/app-shell.js +4 -4
  72. package/dist/platform/app-shell.mjs +3 -3
  73. package/dist/platform/auth/index.js +22 -22
  74. package/dist/platform/auth/index.mjs +4 -4
  75. package/dist/platform/billing/index.js +4 -4
  76. package/dist/platform/billing/index.mjs +3 -3
  77. package/dist/platform/impersonation/index.js +4 -4
  78. package/dist/platform/impersonation/index.mjs +3 -3
  79. package/dist/platform/index.js +86 -86
  80. package/dist/platform/index.mjs +18 -18
  81. package/dist/platform/pages/index.js +416 -254
  82. package/dist/platform/pages/index.js.map +1 -1
  83. package/dist/platform/pages/index.mjs +193 -31
  84. package/dist/platform/pages/index.mjs.map +1 -1
  85. package/dist/platform/settings/index.js +7 -7
  86. package/dist/platform/settings/index.mjs +6 -6
  87. package/dist/platform/workflow-canvas-shell.js +5 -5
  88. package/dist/platform/workflow-canvas-shell.mjs +4 -4
  89. package/package.json +1 -1
  90. package/dist/astrlabe/contracts.d.mts +0 -517
  91. package/dist/astrlabe/contracts.d.ts +0 -517
  92. package/dist/astrlabe/graph-node.d.mts +0 -28
  93. package/dist/astrlabe/graph-node.d.ts +0 -28
  94. package/dist/astrlabe/index.d.mts +0 -743
  95. package/dist/astrlabe/index.d.ts +0 -743
  96. package/dist/astrlabe/utils.d.mts +0 -60
  97. package/dist/astrlabe/utils.d.ts +0 -60
  98. package/dist/astrlabe/workflow-canvas.d.mts +0 -6
  99. package/dist/astrlabe/workflow-canvas.d.ts +0 -6
  100. package/dist/astrlabe/workflow-preview-canvas.d.mts +0 -10
  101. package/dist/astrlabe/workflow-preview-canvas.d.ts +0 -10
  102. package/dist/billing-panel-DsHhhJqG.d.mts +0 -18
  103. package/dist/billing-panel-DsHhhJqG.d.ts +0 -18
  104. package/dist/brand/index.d.mts +0 -71
  105. package/dist/brand/index.d.ts +0 -71
  106. package/dist/dynamic-island-confirm-BKsZkAEP.d.mts +0 -17
  107. package/dist/dynamic-island-confirm-BKsZkAEP.d.ts +0 -17
  108. package/dist/index-BNRGVAS5.d.mts +0 -222
  109. package/dist/index-BoebbJ44.d.mts +0 -49
  110. package/dist/index-BoebbJ44.d.ts +0 -49
  111. package/dist/index-CnCY-b5V.d.ts +0 -222
  112. package/dist/index.d.mts +0 -5316
  113. package/dist/index.d.ts +0 -5316
  114. package/dist/layout-engine-YZcVr20M.d.mts +0 -19
  115. package/dist/layout-engine-YZcVr20M.d.ts +0 -19
  116. package/dist/lib/i18n-context.d.mts +0 -36
  117. package/dist/lib/i18n-context.d.ts +0 -36
  118. package/dist/lib/router-context.d.mts +0 -35
  119. package/dist/lib/router-context.d.ts +0 -35
  120. package/dist/navigation-BiWVffAN.d.mts +0 -49
  121. package/dist/navigation-BiWVffAN.d.ts +0 -49
  122. package/dist/platform/admin/index.d.mts +0 -17
  123. package/dist/platform/admin/index.d.ts +0 -17
  124. package/dist/platform/agents-workspace.d.mts +0 -19
  125. package/dist/platform/agents-workspace.d.ts +0 -19
  126. package/dist/platform/app-shell.d.mts +0 -64
  127. package/dist/platform/app-shell.d.ts +0 -64
  128. package/dist/platform/auth/index.d.mts +0 -73
  129. package/dist/platform/auth/index.d.ts +0 -73
  130. package/dist/platform/billing/index.d.mts +0 -29
  131. package/dist/platform/billing/index.d.ts +0 -29
  132. package/dist/platform/impersonation/index.d.mts +0 -19
  133. package/dist/platform/impersonation/index.d.ts +0 -19
  134. package/dist/platform/index.d.mts +0 -188
  135. package/dist/platform/index.d.ts +0 -188
  136. package/dist/platform/pages/index.d.mts +0 -526
  137. package/dist/platform/pages/index.d.ts +0 -526
  138. package/dist/platform/rbac.d.mts +0 -42
  139. package/dist/platform/rbac.d.ts +0 -42
  140. package/dist/platform/settings/index.d.mts +0 -31
  141. package/dist/platform/settings/index.d.ts +0 -31
  142. package/dist/platform/telemetry/index.d.mts +0 -51
  143. package/dist/platform/telemetry/index.d.ts +0 -51
  144. package/dist/platform/utils/index.d.mts +0 -32
  145. package/dist/platform/utils/index.d.ts +0 -32
  146. package/dist/platform/windsock-admin-client.d.mts +0 -57
  147. package/dist/platform/windsock-admin-client.d.ts +0 -57
  148. package/dist/platform/workflow-api-client.d.mts +0 -6
  149. package/dist/platform/workflow-api-client.d.ts +0 -6
  150. package/dist/platform/workflow-canvas-shell.d.mts +0 -18
  151. package/dist/platform/workflow-canvas-shell.d.ts +0 -18
  152. package/dist/rule-form-BYJzyork.d.mts +0 -128
  153. package/dist/rule-form-BYJzyork.d.ts +0 -128
  154. package/dist/workflow-api-client-CpFl3WcG.d.mts +0 -468
  155. package/dist/workflow-api-client-uLICOanv.d.ts +0 -468
  156. package/dist/workflow-canvas--qaYKuMm.d.ts +0 -113
  157. package/dist/workflow-canvas-B80fmD_n.d.mts +0 -113
  158. package/dist/workflow-store-o17I6L6A.d.ts +0 -79
  159. package/dist/workflow-store-ppVHdMZi.d.mts +0 -79
@@ -1,17 +1,17 @@
1
1
  "use client";
2
2
  import { adaptWorkflowGraphToUi, formatDurationMs } from '../../chunk-UQXVCVAN.mjs';
3
- import { WorkflowWorkspace } from '../../chunk-5W6LMDXV.mjs';
4
- export { RolesPageView, UsersPageView } from '../../chunk-5W6LMDXV.mjs';
5
- import { DatasourceModal, findCategory, DIALECT_CATEGORIES } from '../../chunk-A4A3SQTV.mjs';
6
- export { DIALECT_CATEGORIES, DatasourceFormModal, DatasourceModal, findCategory, findDialect } from '../../chunk-A4A3SQTV.mjs';
7
- import { defaultRuleForm, RuleForm, ExecutionTimelinePanel } from '../../chunk-5YVOLHSW.mjs';
3
+ import { WorkflowWorkspace } from '../../chunk-4HP7XS5I.mjs';
4
+ export { RolesPageView, UsersPageView } from '../../chunk-4HP7XS5I.mjs';
5
+ import { DatasourceModal, findCategory, DIALECT_CATEGORIES } from '../../chunk-DCBRGVD3.mjs';
6
+ export { DIALECT_CATEGORIES, DatasourceFormModal, DatasourceModal, findCategory, findDialect } from '../../chunk-DCBRGVD3.mjs';
7
+ import { defaultRuleForm, RuleForm, ExecutionTimelinePanel } from '../../chunk-EIZM2EQA.mjs';
8
8
  import '../../chunk-JB6RNAD2.mjs';
9
9
  import '../../chunk-LEXBTVGM.mjs';
10
- import '../../chunk-57E4TCB2.mjs';
11
- import { HeroSection, PageLoadingState, PageEmptyState, SearchBar, EntityCard, ManagementPageLayout, 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 } from '../../chunk-E6C7MFHJ.mjs';
12
- import '../../chunk-7VJ7CMMT.mjs';
10
+ import '../../chunk-N5365CGD.mjs';
11
+ import { HeroSection, PageLoadingState, PageEmptyState, SearchBar, EntityCard, ManagementPageLayout, 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 } from '../../chunk-Z3BMHKKH.mjs';
13
12
  import '../../chunk-RHRJXK5R.mjs';
14
13
  import '../../chunk-3AY5HIQ6.mjs';
14
+ import '../../chunk-7VJ7CMMT.mjs';
15
15
  import '../../chunk-PLTLRL2V.mjs';
16
16
  import { Badge, Button } from '../../chunk-WR55H7DH.mjs';
17
17
  import '../../chunk-D2JF6C3E.mjs';
@@ -2769,6 +2769,15 @@ function ModelTab({
2769
2769
  }
2770
2770
  );
2771
2771
  }
2772
+ var AGENT_PRESETS = [
2773
+ { id: "sales", emoji: "\u{1F4BC}", name: "Sales Specialist", role: "Lead qualification & CRM", systemPrompt: "You are a sales assistant. Help qualify leads, manage CRM entries, and schedule follow-ups. Always be professional and proactive.", temperature: 0.7, maxTokens: 2048, accent: "from-emerald-500 to-teal-600" },
2774
+ { id: "support", emoji: "\u{1F3A7}", name: "Customer Support", role: "Ticket resolution & escalation", systemPrompt: "You are a customer support agent. Resolve tickets, answer questions, and escalate complex issues. Prioritize customer satisfaction.", temperature: 0.3, maxTokens: 2048, accent: "from-sky-500 to-indigo-600" },
2775
+ { id: "finance", emoji: "\u{1F4CA}", name: "Financial Analyst", role: "Revenue, margins, reports", systemPrompt: "You are a financial analyst. Analyze revenue, calculate margins, generate performance reports, and identify trends. Use data-driven insights for recommendations.", temperature: 0.4, maxTokens: 4096, accent: "from-amber-500 to-orange-600" },
2776
+ { id: "security", emoji: "\u{1F6E1}\uFE0F", name: "Security Analyst", role: "Threat monitoring & compliance", systemPrompt: "You are a security analyst. Monitor for threats, audit data access, ensure compliance with privacy regulations, and manage incident response.", temperature: 0.3, maxTokens: 2048, accent: "from-rose-500 to-red-600" },
2777
+ { id: "data", emoji: "\u{1F52C}", name: "Data Analyst", role: "Pattern detection & cleaning", systemPrompt: "You are a data analyst. Process raw data inputs, identify patterns, clean datasets, and prepare structured analysis for downstream agents.", temperature: 0.5, maxTokens: 4096, accent: "from-violet-500 to-purple-600" },
2778
+ { id: "custom", emoji: "\u2728", name: "", role: "", systemPrompt: "", temperature: 0.2, maxTokens: 2048, accent: "from-slate-500 to-slate-700" }
2779
+ ];
2780
+ var EMOJI_PALETTE = ["\u{1F4BC}", "\u{1F3A7}", "\u{1F4CA}", "\u{1F6E1}\uFE0F", "\u{1F52C}", "\u2728", "\u{1F916}", "\u26A1", "\u{1F3AF}", "\u{1F680}", "\u{1F9E0}", "\u{1F9BE}", "\u{1F4E1}", "\u{1F52E}", "\u{1F310}", "\u{1F5C2}\uFE0F"];
2772
2781
  function CreateAgentDialog({
2773
2782
  labels,
2774
2783
  models,
@@ -2776,47 +2785,200 @@ function CreateAgentDialog({
2776
2785
  onSubmit
2777
2786
  }) {
2778
2787
  const modelOptions = models.map((m) => ({ value: m.id, label: `${m.name} (${m.provider})` }));
2788
+ const [presetId, setPresetId] = useState("custom");
2789
+ const [emoji, setEmoji] = useState("\u2728");
2790
+ const [name, setName] = useState("");
2791
+ const [role, setRole] = useState("");
2792
+ const [systemPrompt, setSystemPrompt] = useState("");
2793
+ const [temperature, setTemperature] = useState(0.2);
2794
+ const [maxTokens, setMaxTokens] = useState(2048);
2795
+ const [modelId, setModelId] = useState(modelOptions[0]?.value ?? "");
2796
+ const activePreset = AGENT_PRESETS.find((p) => p.id === presetId) ?? AGENT_PRESETS[AGENT_PRESETS.length - 1];
2797
+ function applyPreset(preset) {
2798
+ setPresetId(preset.id);
2799
+ setEmoji(preset.emoji);
2800
+ if (preset.id !== "custom") {
2801
+ setName(preset.name);
2802
+ setRole(preset.role);
2803
+ setSystemPrompt(preset.systemPrompt);
2804
+ setTemperature(preset.temperature);
2805
+ setMaxTokens(preset.maxTokens);
2806
+ }
2807
+ }
2779
2808
  return /* @__PURE__ */ jsx(
2780
2809
  GlassModal,
2781
2810
  {
2782
2811
  open: true,
2783
2812
  onClose,
2784
2813
  title: labels.createAgentTitle,
2785
- maxWidth: "lg",
2814
+ label: labels.createAgentEyebrow ?? "NEW AGENT",
2815
+ icon: /* @__PURE__ */ jsx(
2816
+ "div",
2817
+ {
2818
+ className: `flex h-full w-full items-center justify-center rounded-lg bg-gradient-to-br ${activePreset.accent} text-lg shadow-sm`,
2819
+ "aria-hidden": "true",
2820
+ children: emoji
2821
+ }
2822
+ ),
2823
+ maxWidth: "2xl",
2824
+ gradient: activePreset.accent,
2786
2825
  showFormFooter: true,
2787
2826
  submitLabel: labels.save,
2788
2827
  onSubmit: async (event) => {
2789
- const form = new FormData(event.currentTarget);
2828
+ event.preventDefault();
2790
2829
  await onSubmit({
2791
- name: String(form.get("name") ?? "").trim(),
2792
- modelId: String(form.get("modelId") ?? modelOptions[0]?.value ?? ""),
2793
- systemPrompt: "",
2794
- maxTokens: Number(form.get("maxTokens") ?? 2048),
2795
- temperature: Number(form.get("temperature") ?? 0.2)
2830
+ name: name.trim() || activePreset.name || "Untitled Agent",
2831
+ modelId,
2832
+ systemPrompt,
2833
+ maxTokens,
2834
+ temperature
2796
2835
  });
2797
2836
  },
2798
- children: /* @__PURE__ */ jsxs(FormGrid, { children: [
2799
- /* @__PURE__ */ jsx(FormInput, { name: "name", label: labels.name, required: true }),
2837
+ children: /* @__PURE__ */ jsxs("div", { className: "space-y-5", children: [
2800
2838
  /* @__PURE__ */ jsx(
2801
- FormSelect,
2839
+ SectionCard,
2840
+ {
2841
+ variant: "glass",
2842
+ padded: false,
2843
+ header: {
2844
+ title: labels.presetTitle ?? "Start from a template",
2845
+ subtitle: labels.presetSubtitle ?? "Pick a role or build a custom agent"
2846
+ },
2847
+ children: /* @__PURE__ */ jsx("div", { className: "grid grid-cols-2 gap-2 px-4 pb-4 sm:grid-cols-3", children: AGENT_PRESETS.map((preset) => {
2848
+ const selected = preset.id === presetId;
2849
+ return /* @__PURE__ */ jsxs(
2850
+ "button",
2851
+ {
2852
+ type: "button",
2853
+ onClick: () => applyPreset(preset),
2854
+ className: [
2855
+ "liquid-surface group flex items-center gap-3 rounded-xl px-3 py-2.5 text-left transition-all",
2856
+ selected ? "ring-2 ring-indigo-500/70 ring-offset-1 ring-offset-transparent" : "hover:border-indigo-400/40 focus-visible:ring-2 focus-visible:ring-indigo-500/70 focus-visible:ring-offset-1"
2857
+ ].join(" "),
2858
+ children: [
2859
+ /* @__PURE__ */ jsx(
2860
+ "span",
2861
+ {
2862
+ "aria-hidden": "true",
2863
+ className: `flex h-9 w-9 shrink-0 items-center justify-center rounded-lg bg-gradient-to-br ${preset.accent} text-base shadow-sm`,
2864
+ children: preset.emoji
2865
+ }
2866
+ ),
2867
+ /* @__PURE__ */ jsxs("span", { className: "min-w-0 flex-1", children: [
2868
+ /* @__PURE__ */ jsx("span", { className: "block truncate text-sm font-semibold text-slate-900 dark:text-white", children: preset.id === "custom" ? labels.presetCustom ?? "Custom" : preset.name }),
2869
+ /* @__PURE__ */ jsx("span", { className: "block truncate text-xs text-slate-500 dark:text-slate-400", children: preset.role || (labels.presetCustomHint ?? "Start from scratch") })
2870
+ ] })
2871
+ ]
2872
+ },
2873
+ preset.id
2874
+ );
2875
+ }) })
2876
+ }
2877
+ ),
2878
+ /* @__PURE__ */ jsx(
2879
+ SectionCard,
2802
2880
  {
2803
- name: "modelId",
2804
- label: labels.model,
2805
- options: modelOptions.length > 0 ? modelOptions : [{ value: "", label: labels.modelEmpty }],
2806
- defaultValue: modelOptions[0]?.value ?? ""
2881
+ variant: "glass",
2882
+ header: {
2883
+ title: labels.identitySection ?? "Identity",
2884
+ subtitle: labels.identitySubtitle ?? "How your agent shows up across workflows"
2885
+ },
2886
+ children: /* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
2887
+ /* @__PURE__ */ jsxs("div", { children: [
2888
+ /* @__PURE__ */ jsx("span", { className: "mb-2 block text-xs font-semibold uppercase tracking-wider text-slate-600 dark:text-slate-400", children: labels.avatarLabel ?? "Avatar" }),
2889
+ /* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-1.5", children: EMOJI_PALETTE.map((e) => /* @__PURE__ */ jsx(
2890
+ "button",
2891
+ {
2892
+ type: "button",
2893
+ onClick: () => setEmoji(e),
2894
+ "aria-pressed": emoji === e,
2895
+ className: [
2896
+ "flex h-9 w-9 items-center justify-center rounded-lg text-base transition-all",
2897
+ emoji === e ? `bg-gradient-to-br ${activePreset.accent} shadow-sm ring-2 ring-indigo-500/70 ring-offset-1 ring-offset-transparent` : "liquid-surface hover:border-indigo-400/40 focus-visible:ring-2 focus-visible:ring-indigo-500/70 focus-visible:ring-offset-1"
2898
+ ].join(" "),
2899
+ children: e
2900
+ },
2901
+ e
2902
+ )) })
2903
+ ] }),
2904
+ /* @__PURE__ */ jsxs(FormGrid, { children: [
2905
+ /* @__PURE__ */ jsx(
2906
+ FormInput,
2907
+ {
2908
+ label: labels.name,
2909
+ value: name,
2910
+ onChange: (event) => setName(event.target.value),
2911
+ required: true,
2912
+ placeholder: labels.namePlaceholder ?? "Sales Specialist"
2913
+ }
2914
+ ),
2915
+ /* @__PURE__ */ jsx(
2916
+ FormInput,
2917
+ {
2918
+ label: labels.role,
2919
+ value: role,
2920
+ onChange: (event) => setRole(event.target.value),
2921
+ placeholder: labels.rolePlaceholder
2922
+ }
2923
+ )
2924
+ ] })
2925
+ ] })
2807
2926
  }
2808
2927
  ),
2809
- /* @__PURE__ */ jsx(FormInput, { name: "maxTokens", label: labels.maxTokens, type: "number", defaultValue: "2048" }),
2810
2928
  /* @__PURE__ */ jsx(
2811
- FormInput,
2929
+ SectionCard,
2812
2930
  {
2813
- name: "temperature",
2814
- label: labels.temperature,
2815
- type: "number",
2816
- step: 0.1,
2817
- min: 0,
2818
- max: 2,
2819
- defaultValue: "0.2"
2931
+ variant: "glass",
2932
+ header: {
2933
+ title: labels.behaviorSection ?? "Behavior",
2934
+ subtitle: labels.behaviorSubtitle ?? "System prompt shapes how the agent thinks"
2935
+ },
2936
+ children: /* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
2937
+ /* @__PURE__ */ jsx(
2938
+ FormTextarea,
2939
+ {
2940
+ label: labels.promptSystemPrompt ?? "System prompt",
2941
+ value: systemPrompt,
2942
+ onChange: (event) => setSystemPrompt(event.target.value),
2943
+ rows: 5,
2944
+ placeholder: labels.promptPlaceholder ?? "You are a helpful assistant\u2026"
2945
+ }
2946
+ ),
2947
+ /* @__PURE__ */ jsxs(FormGrid, { children: [
2948
+ /* @__PURE__ */ jsx(
2949
+ FormSelect,
2950
+ {
2951
+ label: labels.model,
2952
+ value: modelId,
2953
+ onChange: (event) => setModelId(event.target.value),
2954
+ options: modelOptions.length > 0 ? modelOptions : [{ value: "", label: labels.modelEmpty }]
2955
+ }
2956
+ ),
2957
+ /* @__PURE__ */ jsx(
2958
+ FormInput,
2959
+ {
2960
+ label: labels.maxTokens,
2961
+ type: "number",
2962
+ value: String(maxTokens),
2963
+ onChange: (event) => setMaxTokens(Number(event.target.value) || 0),
2964
+ min: 1,
2965
+ max: 32e3
2966
+ }
2967
+ ),
2968
+ /* @__PURE__ */ jsx(
2969
+ FormInput,
2970
+ {
2971
+ label: `${labels.temperature} (${temperature.toFixed(2)})`,
2972
+ type: "number",
2973
+ value: String(temperature),
2974
+ onChange: (event) => setTemperature(Number(event.target.value) || 0),
2975
+ step: 0.1,
2976
+ min: 0,
2977
+ max: 2
2978
+ }
2979
+ )
2980
+ ] })
2981
+ ] })
2820
2982
  }
2821
2983
  )
2822
2984
  ] })