pxengine 0.1.34 → 0.1.36

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.
package/dist/index.mjs CHANGED
@@ -5,7 +5,7 @@ var __export = (target, all) => {
5
5
  };
6
6
 
7
7
  // src/render/PXEngineRenderer.tsx
8
- import React101 from "react";
8
+ import React102 from "react";
9
9
 
10
10
  // src/atoms/index.ts
11
11
  var atoms_exports = {};
@@ -33324,16 +33324,21 @@ __export(molecules_exports, {
33324
33324
  KeywordBundlesEdit: () => KeywordBundlesEdit,
33325
33325
  LoadingOverlay: () => LoadingOverlay,
33326
33326
  MCQCard: () => MCQCard,
33327
+ MultiAgentCard: () => MultiAgentCard,
33328
+ MultiAgentPlan: () => MultiAgentPlan,
33329
+ MultiAgentUISelector: () => MultiAgentUISelector,
33327
33330
  NotificationList: () => NotificationList,
33328
33331
  PlatformIconGroup: () => PlatformIconGroup,
33329
33332
  PlatformSelectDisplay: () => PlatformSelectDisplay,
33330
33333
  PlatformSelectEdit: () => PlatformSelectEdit,
33331
33334
  SearchSpecCard: () => SearchSpecCard,
33335
+ StageIndicator: () => StageIndicator,
33332
33336
  StatsGrid: () => StatsGrid,
33333
33337
  StepWizard: () => StepWizard,
33334
33338
  TagCloud: () => TagCloud,
33335
33339
  ToolListCard: () => ToolListCard,
33336
33340
  TopPostsGrid: () => TopPostsGrid,
33341
+ UIComponentSelector: () => UIComponentSelector,
33337
33342
  WorkflowVisualizer: () => WorkflowVisualizer
33338
33343
  });
33339
33344
 
@@ -36675,7 +36680,7 @@ var ToolListCard = ({
36675
36680
  "div",
36676
36681
  {
36677
36682
  className: cn(
36678
- "my-3 rounded-xl border border-[var(--border-color)] bg-[var(--card-background)] overflow-hidden shadow-sm",
36683
+ "text-foreground hover:bg-muted/50 hover:text-foreground my-3 rounded-xl border border-[var(--border-color)] bg-[var(--card-background)] overflow-hidden shadow-sm",
36679
36684
  className
36680
36685
  ),
36681
36686
  children: [
@@ -36702,10 +36707,10 @@ var ToolListCard = ({
36702
36707
  /* @__PURE__ */ jsx122("div", { className: "shrink-0 mt-0.5 w-5 h-5 rounded flex items-center justify-center bg-[var(--primary-color)]/[0.08]", children: /* @__PURE__ */ jsx122(ToolIcon, { className: "w-3 h-3 text-[var(--primary-color)]/60" }) }),
36703
36708
  /* @__PURE__ */ jsxs81("div", { className: "flex-1 min-w-0", children: [
36704
36709
  /* @__PURE__ */ jsxs81("div", { className: "flex items-center gap-2 flex-wrap", children: [
36705
- tool.display_name && tool.display_name !== tool.name && /* @__PURE__ */ jsx122("span", { className: "text-[13px] font-medium text-[var(--foreground)]", children: tool.display_name }),
36706
- /* @__PURE__ */ jsx122("span", { className: "text-[11px] font-mono px-1.5 py-0.5 rounded bg-[var(--foreground)]/[0.06] text-[var(--foreground)]/50 border border-[var(--foreground)]/[0.06]", children: tool.name })
36710
+ tool.display_name && tool.display_name !== tool.name && /* @__PURE__ */ jsx122("span", { className: "text-[13px] font-medium text-[var(--foreground)] truncate max-w-full", children: tool.display_name }),
36711
+ /* @__PURE__ */ jsx122("span", { className: "text-[11px] font-mono px-1.5 py-0.5 rounded bg-[var(--foreground)]/[0.06] text-[var(--foreground)]/50 border border-[var(--foreground)]/[0.06] truncate", children: tool.name })
36707
36712
  ] }),
36708
- tool.description && /* @__PURE__ */ jsx122("p", { className: "text-xs text-[var(--foreground)]/50 leading-relaxed mt-0.5", children: tool.description })
36713
+ tool.description && /* @__PURE__ */ jsx122("p", { className: "text-xs text-[var(--foreground)]/50 leading-relaxed mt-0.5 break-words whitespace-normal", children: tool.description })
36709
36714
  ] })
36710
36715
  ]
36711
36716
  },
@@ -36808,7 +36813,7 @@ var AgentCard = ({
36808
36813
  "div",
36809
36814
  {
36810
36815
  className: cn(
36811
- "my-3 rounded-xl border border-[var(--border-color)] bg-[var(--card-background)] overflow-hidden",
36816
+ "text-foreground hover:bg-muted/50 hover:text-foreground my-3 rounded-xl border border-[var(--border-color)] bg-[var(--card-background)] overflow-hidden",
36812
36817
  className
36813
36818
  ),
36814
36819
  children: [
@@ -36817,40 +36822,19 @@ var AgentCard = ({
36817
36822
  /* @__PURE__ */ jsx123(AvatarImage, { src: isEditing && editState.image ? editState.image : avatarUrl, alt: agent.display_name }),
36818
36823
  /* @__PURE__ */ jsx123(AvatarFallback, { className: "bg-[var(--primary-color)]/10 text-[var(--primary-color)] text-lg font-bold", children: agent.display_name.charAt(0) })
36819
36824
  ] }),
36820
- /* @__PURE__ */ jsx123("div", { className: "flex-1 min-w-0", children: isEditing ? /* @__PURE__ */ jsxs82("div", { className: "space-y-2", children: [
36821
- /* @__PURE__ */ jsx123(
36822
- "input",
36823
- {
36824
- type: "text",
36825
- value: editState.display_name,
36826
- onChange: (e) => setEditState((s) => ({ ...s, display_name: e.target.value })),
36827
- className: "w-full bg-[var(--card-background)] border border-[var(--border-color)] rounded-lg px-3 py-1.5 text-sm text-[var(--foreground)] font-semibold outline-none focus:border-[var(--primary-color)] transition-colors",
36828
- placeholder: "Display name"
36829
- }
36830
- ),
36831
- /* @__PURE__ */ jsx123(
36832
- "textarea",
36833
- {
36834
- value: editState.description,
36835
- onChange: (e) => setEditState((s) => ({ ...s, description: e.target.value })),
36836
- className: "w-full bg-[var(--card-background)] border border-[var(--border-color)] rounded-lg px-3 py-1.5 text-xs text-[var(--foreground)]/70 outline-none focus:border-[var(--primary-color)] transition-colors resize-none",
36837
- rows: 2,
36838
- placeholder: "Description"
36839
- }
36840
- ),
36841
- /* @__PURE__ */ jsx123(
36842
- "input",
36843
- {
36844
- type: "text",
36845
- value: editState.image,
36846
- onChange: (e) => setEditState((s) => ({ ...s, image: e.target.value })),
36847
- className: "w-full bg-[var(--card-background)] border border-[var(--border-color)] rounded-lg px-3 py-1.5 text-xs text-[var(--foreground)]/70 font-mono outline-none focus:border-[var(--primary-color)] transition-colors",
36848
- placeholder: "Avatar image URL"
36849
- }
36850
- )
36851
- ] }) : /* @__PURE__ */ jsxs82(Fragment4, { children: [
36825
+ /* @__PURE__ */ jsxs82("div", { className: "flex-1 min-w-0", children: [
36852
36826
  /* @__PURE__ */ jsxs82("div", { className: "flex items-center gap-2", children: [
36853
- /* @__PURE__ */ jsx123("h4", { className: "text-sm font-semibold text-[var(--foreground)] truncate", children: agent.display_name }),
36827
+ isEditing ? /* @__PURE__ */ jsx123(
36828
+ "input",
36829
+ {
36830
+ type: "text",
36831
+ value: editState.display_name,
36832
+ onChange: (e) => setEditState((s) => ({ ...s, display_name: e.target.value })),
36833
+ disabled: isSaving,
36834
+ className: "flex-1 bg-transparent border-b border-[var(--primary-color)]/30 text-sm font-semibold text-[var(--foreground)] outline-none focus:border-[var(--primary-color)] transition-all",
36835
+ placeholder: "Agent name"
36836
+ }
36837
+ ) : /* @__PURE__ */ jsx123("h4", { className: "text-sm font-semibold text-[var(--foreground)] truncate", children: agent.display_name }),
36854
36838
  /* @__PURE__ */ jsx123("span", { className: "text-[11px] font-mono text-[var(--foreground)]/40 bg-[var(--foreground)]/[0.05] px-1.5 py-0.5 rounded", children: agent.name }),
36855
36839
  /* @__PURE__ */ jsx123(
36856
36840
  "span",
@@ -36863,8 +36847,32 @@ var AgentCard = ({
36863
36847
  }
36864
36848
  )
36865
36849
  ] }),
36866
- /* @__PURE__ */ jsx123("p", { className: "text-xs text-[var(--foreground)]/60 mt-1 leading-relaxed", children: agent.description })
36867
- ] }) }),
36850
+ /* @__PURE__ */ jsx123("div", { className: "mt-1", children: isEditing ? /* @__PURE__ */ jsx123(
36851
+ "textarea",
36852
+ {
36853
+ value: editState.description,
36854
+ onChange: (e) => setEditState((s) => ({ ...s, description: e.target.value })),
36855
+ disabled: isSaving,
36856
+ className: "w-full bg-transparent border-b border-[var(--primary-color)]/30 text-xs text-[var(--foreground)]/70 outline-none focus:border-[var(--primary-color)] transition-all resize-none leading-relaxed min-h-[40px]",
36857
+ rows: 2,
36858
+ placeholder: "Describe this agent..."
36859
+ }
36860
+ ) : /* @__PURE__ */ jsx123("p", { className: "text-xs text-[var(--foreground)]/60 leading-relaxed", children: agent.description }) }),
36861
+ isEditing && /* @__PURE__ */ jsxs82("div", { className: "mt-2 flex items-center gap-2", children: [
36862
+ /* @__PURE__ */ jsx123("span", { className: "text-[10px] text-[var(--foreground)]/30 uppercase font-semibold", children: "Avatar:" }),
36863
+ /* @__PURE__ */ jsx123(
36864
+ "input",
36865
+ {
36866
+ type: "text",
36867
+ value: editState.image,
36868
+ onChange: (e) => setEditState((s) => ({ ...s, image: e.target.value })),
36869
+ disabled: isSaving,
36870
+ className: "flex-1 bg-[var(--foreground)]/[0.03] border border-[var(--border-color)] rounded px-2 py-0.5 text-[10px] text-[var(--foreground)]/50 font-mono outline-none focus:border-[var(--primary-color)]/50 transition-colors",
36871
+ placeholder: "URL"
36872
+ }
36873
+ )
36874
+ ] })
36875
+ ] }),
36868
36876
  editable && onSave && /* @__PURE__ */ jsx123("div", { className: "flex items-center gap-1.5 shrink-0", children: isEditing ? /* @__PURE__ */ jsxs82(Fragment4, { children: [
36869
36877
  /* @__PURE__ */ jsx123(
36870
36878
  "button",
@@ -36880,7 +36888,7 @@ var AgentCard = ({
36880
36888
  {
36881
36889
  onClick: handleSave,
36882
36890
  disabled: isSaving,
36883
- className: "text-[11px] px-2.5 py-1 rounded-md bg-[var(--primary-color)] text-white hover:opacity-90 transition-opacity disabled:opacity-50",
36891
+ className: "text-[11px] px-2.5 py-1 rounded-md bg-[var(--border-color)] text-foreground border border-[var(--border-color)] hover:opacity-90 transition-opacity disabled:opacity-50",
36884
36892
  children: isSaving ? "Saving..." : "Save"
36885
36893
  }
36886
36894
  )
@@ -36955,7 +36963,7 @@ var AgentDataTable = ({
36955
36963
  "div",
36956
36964
  {
36957
36965
  className: cn(
36958
- "my-3 rounded-xl border border-[var(--border-color)] bg-[var(--card-background)] overflow-hidden",
36966
+ "text-foreground hover:bg-muted/50 hover:text-foreground my-3 rounded-xl border border-[var(--border-color)] bg-[var(--card-background)] overflow-hidden",
36959
36967
  className
36960
36968
  ),
36961
36969
  children: /* @__PURE__ */ jsx124("div", { className: "overflow-x-auto", children: /* @__PURE__ */ jsxs83("table", { className: "w-full text-xs", children: [
@@ -36999,7 +37007,7 @@ var WorkflowVisualizer = ({
36999
37007
  "div",
37000
37008
  {
37001
37009
  className: cn(
37002
- "my-3 rounded-xl border border-[var(--border-color)] bg-[var(--card-background)] overflow-hidden shadow-sm",
37010
+ "text-foreground hover:bg-muted/50 hover:text-foreground my-3 rounded-xl border border-[var(--border-color)] bg-[var(--card-background)] overflow-hidden shadow-sm",
37003
37011
  className
37004
37012
  ),
37005
37013
  children: [
@@ -37130,7 +37138,7 @@ var InstructionPreview = ({
37130
37138
  "div",
37131
37139
  {
37132
37140
  className: cn(
37133
- "my-3 rounded-xl border border-[var(--border-color)] bg-[var(--card-background)] overflow-hidden shadow-sm",
37141
+ "text-foreground hover:bg-muted/50 hover:text-foreground my-3 rounded-xl border border-[var(--border-color)] bg-[var(--card-background)] overflow-hidden shadow-sm",
37134
37142
  className
37135
37143
  ),
37136
37144
  children: [
@@ -37197,6 +37205,432 @@ var InstructionPreview = ({
37197
37205
  );
37198
37206
  };
37199
37207
 
37208
+ // src/molecules/agent-builder/UIComponentSelector/UIComponentSelector.tsx
37209
+ import { useState as useState13 } from "react";
37210
+ import { jsx as jsx127, jsxs as jsxs86 } from "react/jsx-runtime";
37211
+ function UIComponentSelector({
37212
+ components,
37213
+ onSelect,
37214
+ className
37215
+ }) {
37216
+ const [selected, setSelected] = useState13(/* @__PURE__ */ new Set());
37217
+ const [submitted, setSubmitted] = useState13(false);
37218
+ const grouped = components.reduce(
37219
+ (acc, comp) => {
37220
+ const cat = comp.category || "Other";
37221
+ if (!acc[cat]) acc[cat] = [];
37222
+ acc[cat].push(comp);
37223
+ return acc;
37224
+ },
37225
+ {}
37226
+ );
37227
+ const toggle = (name) => {
37228
+ if (submitted) return;
37229
+ setSelected((prev) => {
37230
+ const next = new Set(prev);
37231
+ if (next.has(name)) next.delete(name);
37232
+ else next.add(name);
37233
+ return next;
37234
+ });
37235
+ };
37236
+ const handleContinue = () => {
37237
+ setSubmitted(true);
37238
+ onSelect?.(Array.from(selected));
37239
+ };
37240
+ const categoryOrder = Object.keys(grouped).sort();
37241
+ return /* @__PURE__ */ jsxs86(
37242
+ "div",
37243
+ {
37244
+ className: cn(
37245
+ "rounded-xl border border-border bg-card overflow-hidden",
37246
+ className
37247
+ ),
37248
+ children: [
37249
+ /* @__PURE__ */ jsxs86("div", { className: "px-4 py-3 border-b border-border bg-muted/50", children: [
37250
+ /* @__PURE__ */ jsx127("h3", { className: "text-sm font-semibold text-foreground", children: "Select UI Components" }),
37251
+ /* @__PURE__ */ jsx127("p", { className: "text-xs text-muted-foreground mt-0.5", children: "Choose which visual components this agent can use in its responses." })
37252
+ ] }),
37253
+ /* @__PURE__ */ jsx127("div", { className: "px-4 py-3 space-y-4", children: categoryOrder.map((category) => /* @__PURE__ */ jsxs86("div", { children: [
37254
+ /* @__PURE__ */ jsx127("h4", { className: "text-xs font-medium text-muted-foreground uppercase tracking-wider mb-2", children: category }),
37255
+ /* @__PURE__ */ jsx127("div", { className: "space-y-1.5", children: grouped[category].map((comp) => /* @__PURE__ */ jsxs86(
37256
+ "label",
37257
+ {
37258
+ className: cn(
37259
+ "flex items-start gap-3 px-3 py-2 rounded-lg cursor-pointer transition-colors",
37260
+ submitted ? "cursor-default opacity-70" : "hover:bg-muted/50",
37261
+ selected.has(comp.name) && !submitted && "bg-primary/5 border border-primary/20",
37262
+ selected.has(comp.name) && submitted && "bg-primary/5"
37263
+ ),
37264
+ children: [
37265
+ /* @__PURE__ */ jsx127(
37266
+ "input",
37267
+ {
37268
+ type: "checkbox",
37269
+ checked: selected.has(comp.name),
37270
+ onChange: () => toggle(comp.name),
37271
+ disabled: submitted,
37272
+ className: "mt-0.5 h-4 w-4 rounded border-border text-primary focus:ring-primary/50 disabled:opacity-50"
37273
+ }
37274
+ ),
37275
+ /* @__PURE__ */ jsxs86("div", { className: "flex-1 min-w-0", children: [
37276
+ /* @__PURE__ */ jsx127("span", { className: "text-sm font-medium text-foreground", children: comp.display_name }),
37277
+ /* @__PURE__ */ jsx127("span", { className: "ml-2 text-xs text-muted-foreground", children: comp.description })
37278
+ ] })
37279
+ ]
37280
+ },
37281
+ comp.name
37282
+ )) })
37283
+ ] }, category)) }),
37284
+ !submitted && /* @__PURE__ */ jsxs86("div", { className: "px-4 py-3 border-t border-border flex items-center justify-between", children: [
37285
+ /* @__PURE__ */ jsxs86("span", { className: "text-xs text-muted-foreground", children: [
37286
+ selected.size,
37287
+ " selected"
37288
+ ] }),
37289
+ /* @__PURE__ */ jsx127(
37290
+ "button",
37291
+ {
37292
+ onClick: handleContinue,
37293
+ className: "px-4 py-1.5 text-sm font-medium rounded-lg bg-primary text-primary-foreground hover:bg-primary/90 transition-colors",
37294
+ children: "Continue"
37295
+ }
37296
+ )
37297
+ ] })
37298
+ ]
37299
+ }
37300
+ );
37301
+ }
37302
+
37303
+ // src/molecules/agent-builder/MultiAgentCard/MultiAgentCard.tsx
37304
+ import { jsx as jsx128, jsxs as jsxs87 } from "react/jsx-runtime";
37305
+ var MultiAgentCard = ({
37306
+ name,
37307
+ display_name,
37308
+ description,
37309
+ stages = [],
37310
+ enabled = true,
37311
+ className
37312
+ }) => {
37313
+ const avatarUrl = `https://api.dicebear.com/7.x/avataaars/svg?seed=${name}`;
37314
+ return /* @__PURE__ */ jsxs87(
37315
+ "div",
37316
+ {
37317
+ className: cn(
37318
+ "my-3 rounded-xl border border-[var(--border-color)] bg-[var(--card-background)] overflow-hidden",
37319
+ className
37320
+ ),
37321
+ children: [
37322
+ /* @__PURE__ */ jsxs87("div", { className: "flex items-start gap-4 px-5 py-4", children: [
37323
+ /* @__PURE__ */ jsx128("div", { className: "h-12 w-12 shrink-0 rounded-full border-2 border-[var(--primary-color)]/20 overflow-hidden bg-[var(--primary-color)]/10 flex items-center justify-center", children: /* @__PURE__ */ jsx128("img", { src: avatarUrl, alt: display_name, className: "h-full w-full" }) }),
37324
+ /* @__PURE__ */ jsxs87("div", { className: "flex-1 min-w-0", children: [
37325
+ /* @__PURE__ */ jsxs87("div", { className: "flex items-center gap-2", children: [
37326
+ /* @__PURE__ */ jsx128("h4", { className: "text-sm font-semibold text-[var(--foreground)] truncate", children: display_name }),
37327
+ /* @__PURE__ */ jsx128("span", { className: "text-[11px] font-mono text-[var(--foreground)]/40 bg-[var(--foreground)]/[0.05] px-1.5 py-0.5 rounded", children: name }),
37328
+ /* @__PURE__ */ jsx128("span", { className: "text-[10px] px-1.5 py-0.5 rounded-full font-medium bg-violet-500/10 text-violet-600", children: "Multi-Agent" }),
37329
+ /* @__PURE__ */ jsx128(
37330
+ "span",
37331
+ {
37332
+ className: cn(
37333
+ "text-[10px] px-1.5 py-0.5 rounded-full font-medium",
37334
+ enabled ? "bg-emerald-500/10 text-emerald-600" : "bg-red-500/10 text-red-500"
37335
+ ),
37336
+ children: enabled ? "Active" : "Disabled"
37337
+ }
37338
+ )
37339
+ ] }),
37340
+ /* @__PURE__ */ jsx128("p", { className: "text-xs text-[var(--foreground)]/60 leading-relaxed mt-1", children: description })
37341
+ ] })
37342
+ ] }),
37343
+ stages.length > 0 && /* @__PURE__ */ jsxs87("div", { className: "border-t border-[var(--border-color)] px-5 py-4", children: [
37344
+ /* @__PURE__ */ jsxs87("p", { className: "text-[11px] font-semibold text-[var(--foreground)]/40 uppercase tracking-wide mb-3", children: [
37345
+ "Stages (",
37346
+ stages.length,
37347
+ ")"
37348
+ ] }),
37349
+ /* @__PURE__ */ jsx128("div", { className: "flex flex-col gap-0", children: stages.map((stage, idx) => /* @__PURE__ */ jsxs87("div", { className: "flex items-stretch", children: [
37350
+ /* @__PURE__ */ jsxs87("div", { className: "flex flex-col items-center mr-3 w-5", children: [
37351
+ /* @__PURE__ */ jsx128(
37352
+ "div",
37353
+ {
37354
+ className: cn(
37355
+ "w-5 h-5 rounded-full flex items-center justify-center text-[10px] font-bold shrink-0",
37356
+ "bg-[var(--primary-color)]/10 text-[var(--primary-color)] border border-[var(--primary-color)]/30"
37357
+ ),
37358
+ children: idx + 1
37359
+ }
37360
+ ),
37361
+ idx < stages.length - 1 && /* @__PURE__ */ jsx128("div", { className: "w-px flex-1 bg-[var(--primary-color)]/20 min-h-[16px]" })
37362
+ ] }),
37363
+ /* @__PURE__ */ jsxs87("div", { className: "flex-1 mb-2 p-3 rounded-lg border border-[var(--border-color)] bg-[var(--foreground)]/[0.02]", children: [
37364
+ /* @__PURE__ */ jsxs87("div", { className: "flex items-center gap-2", children: [
37365
+ /* @__PURE__ */ jsx128("span", { className: "text-xs font-semibold text-[var(--foreground)]", children: stage.name }),
37366
+ /* @__PURE__ */ jsx128("span", { className: "text-[10px] font-mono text-[var(--foreground)]/30", children: stage.agent_name })
37367
+ ] }),
37368
+ /* @__PURE__ */ jsxs87("div", { className: "flex items-center gap-3 mt-1.5 text-[10px] text-[var(--foreground)]/50", children: [
37369
+ stage.tools && stage.tools.length > 0 && /* @__PURE__ */ jsxs87("span", { children: [
37370
+ stage.tools.length,
37371
+ " tool",
37372
+ stage.tools.length !== 1 ? "s" : ""
37373
+ ] }),
37374
+ stage.ui_components && stage.ui_components.length > 0 && /* @__PURE__ */ jsxs87("span", { children: [
37375
+ stage.ui_components.length,
37376
+ " component",
37377
+ stage.ui_components.length !== 1 ? "s" : ""
37378
+ ] })
37379
+ ] })
37380
+ ] })
37381
+ ] }, stage.agent_name || idx)) })
37382
+ ] })
37383
+ ]
37384
+ }
37385
+ );
37386
+ };
37387
+
37388
+ // src/molecules/agent-builder/MultiAgentPlan/MultiAgentPlan.tsx
37389
+ import { jsx as jsx129, jsxs as jsxs88 } from "react/jsx-runtime";
37390
+ var MultiAgentPlan = ({
37391
+ stages = [],
37392
+ className
37393
+ }) => {
37394
+ return /* @__PURE__ */ jsxs88(
37395
+ "div",
37396
+ {
37397
+ className: cn(
37398
+ "my-3 rounded-xl border border-[var(--border-color)] bg-[var(--card-background)] overflow-hidden",
37399
+ className
37400
+ ),
37401
+ children: [
37402
+ /* @__PURE__ */ jsx129("div", { className: "px-4 py-3 border-b border-[var(--border-color)] bg-[var(--foreground)]/[0.02]", children: /* @__PURE__ */ jsxs88("div", { className: "flex items-center gap-2", children: [
37403
+ /* @__PURE__ */ jsx129("div", { className: "w-4 h-4 rounded bg-violet-500/20 flex items-center justify-center", children: /* @__PURE__ */ jsx129(
37404
+ "svg",
37405
+ {
37406
+ width: "10",
37407
+ height: "10",
37408
+ viewBox: "0 0 24 24",
37409
+ fill: "none",
37410
+ stroke: "currentColor",
37411
+ strokeWidth: "2",
37412
+ className: "text-violet-600",
37413
+ children: /* @__PURE__ */ jsx129("path", { d: "M16 3h5v5M4 20L21 3M21 16v5h-5M15 15l6 6M4 4l5 5" })
37414
+ }
37415
+ ) }),
37416
+ /* @__PURE__ */ jsx129("span", { className: "text-xs font-semibold text-[var(--foreground)]", children: "Proposed Multi-Agent Workflow" }),
37417
+ /* @__PURE__ */ jsx129("span", { className: "text-[10px] px-1.5 py-0.5 rounded-full bg-amber-500/10 text-amber-600 font-medium", children: "Draft" })
37418
+ ] }) }),
37419
+ /* @__PURE__ */ jsx129("div", { className: "px-4 py-3", children: /* @__PURE__ */ jsx129("div", { className: "flex flex-col gap-0", children: stages.map((stage, idx) => /* @__PURE__ */ jsxs88("div", { className: "flex items-stretch", children: [
37420
+ /* @__PURE__ */ jsxs88("div", { className: "flex flex-col items-center mr-3 w-6", children: [
37421
+ /* @__PURE__ */ jsx129("div", { className: "w-6 h-6 rounded-full flex items-center justify-center text-[10px] font-bold shrink-0 bg-[var(--primary-color)]/10 text-[var(--primary-color)] border border-[var(--primary-color)]/30", children: idx + 1 }),
37422
+ idx < stages.length - 1 && /* @__PURE__ */ jsx129("div", { className: "w-px flex-1 bg-[var(--primary-color)]/20 min-h-[12px]" })
37423
+ ] }),
37424
+ /* @__PURE__ */ jsxs88("div", { className: "flex-1 mb-2 pb-2", children: [
37425
+ /* @__PURE__ */ jsx129("p", { className: "text-xs font-semibold text-[var(--foreground)]", children: stage.name }),
37426
+ stage.description && /* @__PURE__ */ jsx129("p", { className: "text-[11px] text-[var(--foreground)]/50 mt-0.5", children: stage.description }),
37427
+ stage.proposed_tools && stage.proposed_tools.length > 0 && /* @__PURE__ */ jsx129("div", { className: "flex flex-wrap gap-1 mt-1.5", children: stage.proposed_tools.map((tool) => /* @__PURE__ */ jsx129(
37428
+ "span",
37429
+ {
37430
+ className: "text-[10px] px-1.5 py-0.5 rounded bg-[var(--primary-color)]/10 text-[var(--primary-color)] font-mono",
37431
+ children: tool
37432
+ },
37433
+ tool
37434
+ )) })
37435
+ ] })
37436
+ ] }, stage.name || idx)) }) })
37437
+ ]
37438
+ }
37439
+ );
37440
+ };
37441
+
37442
+ // src/molecules/agent-builder/MultiAgentUISelector/MultiAgentUISelector.tsx
37443
+ import { useState as useState14, useCallback as useCallback5 } from "react";
37444
+ import { jsx as jsx130, jsxs as jsxs89 } from "react/jsx-runtime";
37445
+ var MultiAgentUISelector = ({
37446
+ stages = [],
37447
+ components = [],
37448
+ onSelect,
37449
+ className
37450
+ }) => {
37451
+ const [activeStageId, setActiveStageId] = useState14(stages[0]?.id || "");
37452
+ const [selections, setSelections] = useState14(
37453
+ () => {
37454
+ const init = {};
37455
+ for (const stage of stages) {
37456
+ init[stage.id] = /* @__PURE__ */ new Set();
37457
+ }
37458
+ return init;
37459
+ }
37460
+ );
37461
+ const [submitted, setSubmitted] = useState14(false);
37462
+ const grouped = components.reduce((acc, comp) => {
37463
+ const cat = comp.category || "Other";
37464
+ if (!acc[cat]) acc[cat] = [];
37465
+ acc[cat].push(comp);
37466
+ return acc;
37467
+ }, {});
37468
+ const toggleComponent = useCallback5(
37469
+ (stageId, compName) => {
37470
+ if (submitted) return;
37471
+ setSelections((prev) => {
37472
+ const updated = { ...prev };
37473
+ const set = new Set(updated[stageId] || []);
37474
+ if (set.has(compName)) {
37475
+ set.delete(compName);
37476
+ } else {
37477
+ set.add(compName);
37478
+ }
37479
+ updated[stageId] = set;
37480
+ return updated;
37481
+ });
37482
+ },
37483
+ [submitted]
37484
+ );
37485
+ const handleContinue = useCallback5(() => {
37486
+ setSubmitted(true);
37487
+ if (onSelect) {
37488
+ const result = {};
37489
+ for (const [stageId, set] of Object.entries(selections)) {
37490
+ result[stageId] = Array.from(set);
37491
+ }
37492
+ onSelect(result);
37493
+ }
37494
+ }, [onSelect, selections]);
37495
+ const activeStage = stages.find((s) => s.id === activeStageId);
37496
+ return /* @__PURE__ */ jsxs89(
37497
+ "div",
37498
+ {
37499
+ className: cn(
37500
+ "my-3 rounded-xl border border-[var(--border-color)] bg-[var(--card-background)] overflow-hidden",
37501
+ className
37502
+ ),
37503
+ children: [
37504
+ /* @__PURE__ */ jsx130("div", { className: "px-4 py-3 border-b border-[var(--border-color)] bg-[var(--foreground)]/[0.02]", children: /* @__PURE__ */ jsxs89("div", { className: "flex items-center gap-2", children: [
37505
+ /* @__PURE__ */ jsx130("div", { className: "w-4 h-4 rounded bg-[var(--primary-color)]/20 flex items-center justify-center", children: /* @__PURE__ */ jsxs89(
37506
+ "svg",
37507
+ {
37508
+ width: "10",
37509
+ height: "10",
37510
+ viewBox: "0 0 24 24",
37511
+ fill: "none",
37512
+ stroke: "currentColor",
37513
+ strokeWidth: "2",
37514
+ className: "text-[var(--primary-color)]",
37515
+ children: [
37516
+ /* @__PURE__ */ jsx130("rect", { x: "3", y: "3", width: "7", height: "7" }),
37517
+ /* @__PURE__ */ jsx130("rect", { x: "14", y: "3", width: "7", height: "7" }),
37518
+ /* @__PURE__ */ jsx130("rect", { x: "3", y: "14", width: "7", height: "7" }),
37519
+ /* @__PURE__ */ jsx130("rect", { x: "14", y: "14", width: "7", height: "7" })
37520
+ ]
37521
+ }
37522
+ ) }),
37523
+ /* @__PURE__ */ jsx130("span", { className: "text-xs font-semibold text-[var(--foreground)]", children: "UI Components per Stage" })
37524
+ ] }) }),
37525
+ /* @__PURE__ */ jsx130("div", { className: "flex border-b border-[var(--border-color)] px-4", children: stages.map((stage) => /* @__PURE__ */ jsx130(
37526
+ "button",
37527
+ {
37528
+ onClick: () => setActiveStageId(stage.id),
37529
+ disabled: submitted,
37530
+ className: cn(
37531
+ "px-3 py-2 text-[11px] font-medium border-b-2 transition-colors",
37532
+ activeStageId === stage.id ? "border-[var(--primary-color)] text-[var(--primary-color)]" : "border-transparent text-[var(--foreground)]/50 hover:text-[var(--foreground)]",
37533
+ submitted && "opacity-60 cursor-default"
37534
+ ),
37535
+ children: stage.name
37536
+ },
37537
+ stage.id
37538
+ )) }),
37539
+ /* @__PURE__ */ jsxs89("div", { className: "px-4 py-3", children: [
37540
+ activeStage && /* @__PURE__ */ jsxs89("p", { className: "text-[10px] text-[var(--foreground)]/40 mb-3", children: [
37541
+ "Select components for ",
37542
+ /* @__PURE__ */ jsx130("strong", { children: activeStage.name }),
37543
+ " (",
37544
+ activeStage.agent_name,
37545
+ ")"
37546
+ ] }),
37547
+ Object.entries(grouped).map(([category, comps]) => /* @__PURE__ */ jsxs89("div", { className: "mb-3", children: [
37548
+ /* @__PURE__ */ jsx130("p", { className: "text-[10px] font-semibold text-[var(--foreground)]/40 uppercase tracking-wide mb-1.5", children: category }),
37549
+ /* @__PURE__ */ jsx130("div", { className: "grid grid-cols-2 gap-1.5", children: comps.map((comp) => {
37550
+ const isSelected = selections[activeStageId]?.has(comp.name) || false;
37551
+ return /* @__PURE__ */ jsxs89(
37552
+ "button",
37553
+ {
37554
+ onClick: () => toggleComponent(activeStageId, comp.name),
37555
+ disabled: submitted,
37556
+ className: cn(
37557
+ "text-left p-2.5 rounded-lg border text-[11px] transition-all",
37558
+ isSelected ? "border-[var(--primary-color)] bg-[var(--primary-color)]/5" : "border-[var(--border-color)] hover:border-[var(--primary-color)]/50",
37559
+ submitted && "opacity-60 cursor-default"
37560
+ ),
37561
+ children: [
37562
+ /* @__PURE__ */ jsxs89("div", { className: "flex items-center gap-1.5", children: [
37563
+ /* @__PURE__ */ jsx130(
37564
+ "div",
37565
+ {
37566
+ className: cn(
37567
+ "w-3.5 h-3.5 rounded border flex items-center justify-center shrink-0",
37568
+ isSelected ? "bg-[var(--primary-color)] border-[var(--primary-color)]" : "border-[var(--foreground)]/20"
37569
+ ),
37570
+ children: isSelected && /* @__PURE__ */ jsx130(
37571
+ "svg",
37572
+ {
37573
+ width: "8",
37574
+ height: "8",
37575
+ viewBox: "0 0 24 24",
37576
+ fill: "none",
37577
+ stroke: "white",
37578
+ strokeWidth: "3",
37579
+ children: /* @__PURE__ */ jsx130("polyline", { points: "20 6 9 17 4 12" })
37580
+ }
37581
+ )
37582
+ }
37583
+ ),
37584
+ /* @__PURE__ */ jsx130("span", { className: "font-medium text-[var(--foreground)]", children: comp.display_name })
37585
+ ] }),
37586
+ /* @__PURE__ */ jsx130("p", { className: "text-[10px] text-[var(--foreground)]/40 mt-0.5 ml-5", children: comp.description })
37587
+ ]
37588
+ },
37589
+ comp.name
37590
+ );
37591
+ }) })
37592
+ ] }, category))
37593
+ ] }),
37594
+ !submitted && /* @__PURE__ */ jsx130("div", { className: "px-4 pb-3", children: /* @__PURE__ */ jsx130(
37595
+ "button",
37596
+ {
37597
+ onClick: handleContinue,
37598
+ className: "w-full py-2 rounded-lg bg-[var(--primary-color)] text-white text-xs font-medium hover:opacity-90 transition-opacity",
37599
+ children: "Continue"
37600
+ }
37601
+ ) }),
37602
+ submitted && /* @__PURE__ */ jsx130("div", { className: "px-4 pb-3", children: /* @__PURE__ */ jsx130("div", { className: "text-[10px] text-emerald-600 font-medium text-center py-1.5", children: "Selections confirmed" }) })
37603
+ ]
37604
+ }
37605
+ );
37606
+ };
37607
+
37608
+ // src/molecules/agent-builder/StageIndicator/StageIndicator.tsx
37609
+ import { jsx as jsx131, jsxs as jsxs90 } from "react/jsx-runtime";
37610
+ var StageIndicator = ({
37611
+ stage_name,
37612
+ agent_name,
37613
+ className
37614
+ }) => {
37615
+ return /* @__PURE__ */ jsxs90(
37616
+ "div",
37617
+ {
37618
+ className: cn(
37619
+ "flex items-center gap-3 my-4",
37620
+ className
37621
+ ),
37622
+ children: [
37623
+ /* @__PURE__ */ jsx131("div", { className: "flex-1 h-px bg-[var(--border-color)]" }),
37624
+ /* @__PURE__ */ jsxs90("div", { className: "flex items-center gap-1.5 px-3 py-1 rounded-full bg-violet-500/10 border border-violet-500/20", children: [
37625
+ /* @__PURE__ */ jsx131("div", { className: "w-1.5 h-1.5 rounded-full bg-violet-500 animate-pulse" }),
37626
+ /* @__PURE__ */ jsx131("span", { className: "text-[10px] font-medium text-violet-600", children: stage_name || agent_name })
37627
+ ] }),
37628
+ /* @__PURE__ */ jsx131("div", { className: "flex-1 h-px bg-[var(--border-color)]" })
37629
+ ]
37630
+ }
37631
+ );
37632
+ };
37633
+
37200
37634
  // src/components/ui/index.ts
37201
37635
  var ui_exports = {};
37202
37636
  __export(ui_exports, {
@@ -37489,7 +37923,7 @@ __export(ui_exports, {
37489
37923
  // src/components/ui/button-group.tsx
37490
37924
  import { Slot as Slot4 } from "@radix-ui/react-slot";
37491
37925
  import { cva as cva8 } from "class-variance-authority";
37492
- import { jsx as jsx127 } from "react/jsx-runtime";
37926
+ import { jsx as jsx132 } from "react/jsx-runtime";
37493
37927
  var buttonGroupVariants = cva8(
37494
37928
  "flex w-fit items-stretch has-[>[data-slot=button-group]]:gap-2 [&>*]:focus-visible:relative [&>*]:focus-visible:z-10 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-md [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1",
37495
37929
  {
@@ -37509,7 +37943,7 @@ function ButtonGroup({
37509
37943
  orientation,
37510
37944
  ...props
37511
37945
  }) {
37512
- return /* @__PURE__ */ jsx127(
37946
+ return /* @__PURE__ */ jsx132(
37513
37947
  "div",
37514
37948
  {
37515
37949
  role: "group",
@@ -37526,7 +37960,7 @@ function ButtonGroupText({
37526
37960
  ...props
37527
37961
  }) {
37528
37962
  const Comp = asChild ? Slot4 : "div";
37529
- return /* @__PURE__ */ jsx127(
37963
+ return /* @__PURE__ */ jsx132(
37530
37964
  Comp,
37531
37965
  {
37532
37966
  className: cn(
@@ -37542,7 +37976,7 @@ function ButtonGroupSeparator({
37542
37976
  orientation = "vertical",
37543
37977
  ...props
37544
37978
  }) {
37545
- return /* @__PURE__ */ jsx127(
37979
+ return /* @__PURE__ */ jsx132(
37546
37980
  Separator2,
37547
37981
  {
37548
37982
  "data-slot": "button-group-separator",
@@ -37558,9 +37992,9 @@ function ButtonGroupSeparator({
37558
37992
 
37559
37993
  // src/components/ui/empty.tsx
37560
37994
  import { cva as cva9 } from "class-variance-authority";
37561
- import { jsx as jsx128 } from "react/jsx-runtime";
37995
+ import { jsx as jsx133 } from "react/jsx-runtime";
37562
37996
  function Empty({ className, ...props }) {
37563
- return /* @__PURE__ */ jsx128(
37997
+ return /* @__PURE__ */ jsx133(
37564
37998
  "div",
37565
37999
  {
37566
38000
  "data-slot": "empty",
@@ -37573,7 +38007,7 @@ function Empty({ className, ...props }) {
37573
38007
  );
37574
38008
  }
37575
38009
  function EmptyHeader({ className, ...props }) {
37576
- return /* @__PURE__ */ jsx128(
38010
+ return /* @__PURE__ */ jsx133(
37577
38011
  "div",
37578
38012
  {
37579
38013
  "data-slot": "empty-header",
@@ -37604,7 +38038,7 @@ function EmptyMedia({
37604
38038
  variant = "default",
37605
38039
  ...props
37606
38040
  }) {
37607
- return /* @__PURE__ */ jsx128(
38041
+ return /* @__PURE__ */ jsx133(
37608
38042
  "div",
37609
38043
  {
37610
38044
  "data-slot": "empty-icon",
@@ -37615,7 +38049,7 @@ function EmptyMedia({
37615
38049
  );
37616
38050
  }
37617
38051
  function EmptyTitle({ className, ...props }) {
37618
- return /* @__PURE__ */ jsx128(
38052
+ return /* @__PURE__ */ jsx133(
37619
38053
  "div",
37620
38054
  {
37621
38055
  "data-slot": "empty-title",
@@ -37625,7 +38059,7 @@ function EmptyTitle({ className, ...props }) {
37625
38059
  );
37626
38060
  }
37627
38061
  function EmptyDescription({ className, ...props }) {
37628
- return /* @__PURE__ */ jsx128(
38062
+ return /* @__PURE__ */ jsx133(
37629
38063
  "div",
37630
38064
  {
37631
38065
  "data-slot": "empty-description",
@@ -37638,7 +38072,7 @@ function EmptyDescription({ className, ...props }) {
37638
38072
  );
37639
38073
  }
37640
38074
  function EmptyContent({ className, ...props }) {
37641
- return /* @__PURE__ */ jsx128(
38075
+ return /* @__PURE__ */ jsx133(
37642
38076
  "div",
37643
38077
  {
37644
38078
  "data-slot": "empty-content",
@@ -37654,9 +38088,9 @@ function EmptyContent({ className, ...props }) {
37654
38088
  // src/components/ui/field.tsx
37655
38089
  import { useMemo as useMemo9 } from "react";
37656
38090
  import { cva as cva10 } from "class-variance-authority";
37657
- import { jsx as jsx129, jsxs as jsxs86 } from "react/jsx-runtime";
38091
+ import { jsx as jsx134, jsxs as jsxs91 } from "react/jsx-runtime";
37658
38092
  function FieldSet({ className, ...props }) {
37659
- return /* @__PURE__ */ jsx129(
38093
+ return /* @__PURE__ */ jsx134(
37660
38094
  "fieldset",
37661
38095
  {
37662
38096
  "data-slot": "field-set",
@@ -37674,7 +38108,7 @@ function FieldLegend({
37674
38108
  variant = "legend",
37675
38109
  ...props
37676
38110
  }) {
37677
- return /* @__PURE__ */ jsx129(
38111
+ return /* @__PURE__ */ jsx134(
37678
38112
  "legend",
37679
38113
  {
37680
38114
  "data-slot": "field-legend",
@@ -37690,7 +38124,7 @@ function FieldLegend({
37690
38124
  );
37691
38125
  }
37692
38126
  function FieldGroup({ className, ...props }) {
37693
- return /* @__PURE__ */ jsx129(
38127
+ return /* @__PURE__ */ jsx134(
37694
38128
  "div",
37695
38129
  {
37696
38130
  "data-slot": "field-group",
@@ -37730,7 +38164,7 @@ function Field({
37730
38164
  orientation = "vertical",
37731
38165
  ...props
37732
38166
  }) {
37733
- return /* @__PURE__ */ jsx129(
38167
+ return /* @__PURE__ */ jsx134(
37734
38168
  "div",
37735
38169
  {
37736
38170
  role: "group",
@@ -37742,7 +38176,7 @@ function Field({
37742
38176
  );
37743
38177
  }
37744
38178
  function FieldContent({ className, ...props }) {
37745
- return /* @__PURE__ */ jsx129(
38179
+ return /* @__PURE__ */ jsx134(
37746
38180
  "div",
37747
38181
  {
37748
38182
  "data-slot": "field-content",
@@ -37758,7 +38192,7 @@ function FieldLabel({
37758
38192
  className,
37759
38193
  ...props
37760
38194
  }) {
37761
- return /* @__PURE__ */ jsx129(
38195
+ return /* @__PURE__ */ jsx134(
37762
38196
  Label,
37763
38197
  {
37764
38198
  "data-slot": "field-label",
@@ -37773,7 +38207,7 @@ function FieldLabel({
37773
38207
  );
37774
38208
  }
37775
38209
  function FieldTitle({ className, ...props }) {
37776
- return /* @__PURE__ */ jsx129(
38210
+ return /* @__PURE__ */ jsx134(
37777
38211
  "div",
37778
38212
  {
37779
38213
  "data-slot": "field-label",
@@ -37786,7 +38220,7 @@ function FieldTitle({ className, ...props }) {
37786
38220
  );
37787
38221
  }
37788
38222
  function FieldDescription({ className, ...props }) {
37789
- return /* @__PURE__ */ jsx129(
38223
+ return /* @__PURE__ */ jsx134(
37790
38224
  "p",
37791
38225
  {
37792
38226
  "data-slot": "field-description",
@@ -37805,7 +38239,7 @@ function FieldSeparator({
37805
38239
  className,
37806
38240
  ...props
37807
38241
  }) {
37808
- return /* @__PURE__ */ jsxs86(
38242
+ return /* @__PURE__ */ jsxs91(
37809
38243
  "div",
37810
38244
  {
37811
38245
  "data-slot": "field-separator",
@@ -37816,8 +38250,8 @@ function FieldSeparator({
37816
38250
  ),
37817
38251
  ...props,
37818
38252
  children: [
37819
- /* @__PURE__ */ jsx129(Separator2, { className: "absolute inset-0 top-1/2" }),
37820
- children && /* @__PURE__ */ jsx129(
38253
+ /* @__PURE__ */ jsx134(Separator2, { className: "absolute inset-0 top-1/2" }),
38254
+ children && /* @__PURE__ */ jsx134(
37821
38255
  "span",
37822
38256
  {
37823
38257
  className: "bg-background text-muted-foreground relative mx-auto block w-fit px-2",
@@ -37845,14 +38279,14 @@ function FieldError({
37845
38279
  if (errors?.length === 1 && errors[0]?.message) {
37846
38280
  return errors[0].message;
37847
38281
  }
37848
- return /* @__PURE__ */ jsx129("ul", { className: "ml-4 flex list-disc flex-col gap-1", children: errors.map(
37849
- (error, index) => error?.message && /* @__PURE__ */ jsx129("li", { children: error.message }, index)
38282
+ return /* @__PURE__ */ jsx134("ul", { className: "ml-4 flex list-disc flex-col gap-1", children: errors.map(
38283
+ (error, index) => error?.message && /* @__PURE__ */ jsx134("li", { children: error.message }, index)
37850
38284
  ) });
37851
38285
  }, [children, errors]);
37852
38286
  if (!content) {
37853
38287
  return null;
37854
38288
  }
37855
- return /* @__PURE__ */ jsx129(
38289
+ return /* @__PURE__ */ jsx134(
37856
38290
  "div",
37857
38291
  {
37858
38292
  role: "alert",
@@ -37866,9 +38300,9 @@ function FieldError({
37866
38300
 
37867
38301
  // src/components/ui/input-group.tsx
37868
38302
  import { cva as cva11 } from "class-variance-authority";
37869
- import { jsx as jsx130 } from "react/jsx-runtime";
38303
+ import { jsx as jsx135 } from "react/jsx-runtime";
37870
38304
  function InputGroup({ className, ...props }) {
37871
- return /* @__PURE__ */ jsx130(
38305
+ return /* @__PURE__ */ jsx135(
37872
38306
  "div",
37873
38307
  {
37874
38308
  "data-slot": "input-group",
@@ -37912,7 +38346,7 @@ function InputGroupAddon({
37912
38346
  align = "inline-start",
37913
38347
  ...props
37914
38348
  }) {
37915
- return /* @__PURE__ */ jsx130(
38349
+ return /* @__PURE__ */ jsx135(
37916
38350
  "div",
37917
38351
  {
37918
38352
  role: "group",
@@ -37952,7 +38386,7 @@ function InputGroupButton({
37952
38386
  size = "xs",
37953
38387
  ...props
37954
38388
  }) {
37955
- return /* @__PURE__ */ jsx130(
38389
+ return /* @__PURE__ */ jsx135(
37956
38390
  Button,
37957
38391
  {
37958
38392
  type,
@@ -37964,7 +38398,7 @@ function InputGroupButton({
37964
38398
  );
37965
38399
  }
37966
38400
  function InputGroupText({ className, ...props }) {
37967
- return /* @__PURE__ */ jsx130(
38401
+ return /* @__PURE__ */ jsx135(
37968
38402
  "span",
37969
38403
  {
37970
38404
  className: cn(
@@ -37979,7 +38413,7 @@ function InputGroupInput({
37979
38413
  className,
37980
38414
  ...props
37981
38415
  }) {
37982
- return /* @__PURE__ */ jsx130(
38416
+ return /* @__PURE__ */ jsx135(
37983
38417
  Input,
37984
38418
  {
37985
38419
  "data-slot": "input-group-control",
@@ -37995,7 +38429,7 @@ function InputGroupTextarea({
37995
38429
  className,
37996
38430
  ...props
37997
38431
  }) {
37998
- return /* @__PURE__ */ jsx130(
38432
+ return /* @__PURE__ */ jsx135(
37999
38433
  Textarea,
38000
38434
  {
38001
38435
  "data-slot": "input-group-control",
@@ -38011,9 +38445,9 @@ function InputGroupTextarea({
38011
38445
  // src/components/ui/item.tsx
38012
38446
  import { Slot as Slot5 } from "@radix-ui/react-slot";
38013
38447
  import { cva as cva12 } from "class-variance-authority";
38014
- import { jsx as jsx131 } from "react/jsx-runtime";
38448
+ import { jsx as jsx136 } from "react/jsx-runtime";
38015
38449
  function ItemGroup({ className, ...props }) {
38016
- return /* @__PURE__ */ jsx131(
38450
+ return /* @__PURE__ */ jsx136(
38017
38451
  "div",
38018
38452
  {
38019
38453
  role: "list",
@@ -38027,7 +38461,7 @@ function ItemSeparator({
38027
38461
  className,
38028
38462
  ...props
38029
38463
  }) {
38030
- return /* @__PURE__ */ jsx131(
38464
+ return /* @__PURE__ */ jsx136(
38031
38465
  Separator2,
38032
38466
  {
38033
38467
  "data-slot": "item-separator",
@@ -38065,7 +38499,7 @@ function Item8({
38065
38499
  ...props
38066
38500
  }) {
38067
38501
  const Comp = asChild ? Slot5 : "div";
38068
- return /* @__PURE__ */ jsx131(
38502
+ return /* @__PURE__ */ jsx136(
38069
38503
  Comp,
38070
38504
  {
38071
38505
  "data-slot": "item",
@@ -38096,7 +38530,7 @@ function ItemMedia({
38096
38530
  variant = "default",
38097
38531
  ...props
38098
38532
  }) {
38099
- return /* @__PURE__ */ jsx131(
38533
+ return /* @__PURE__ */ jsx136(
38100
38534
  "div",
38101
38535
  {
38102
38536
  "data-slot": "item-media",
@@ -38107,7 +38541,7 @@ function ItemMedia({
38107
38541
  );
38108
38542
  }
38109
38543
  function ItemContent({ className, ...props }) {
38110
- return /* @__PURE__ */ jsx131(
38544
+ return /* @__PURE__ */ jsx136(
38111
38545
  "div",
38112
38546
  {
38113
38547
  "data-slot": "item-content",
@@ -38120,7 +38554,7 @@ function ItemContent({ className, ...props }) {
38120
38554
  );
38121
38555
  }
38122
38556
  function ItemTitle({ className, ...props }) {
38123
- return /* @__PURE__ */ jsx131(
38557
+ return /* @__PURE__ */ jsx136(
38124
38558
  "div",
38125
38559
  {
38126
38560
  "data-slot": "item-title",
@@ -38133,7 +38567,7 @@ function ItemTitle({ className, ...props }) {
38133
38567
  );
38134
38568
  }
38135
38569
  function ItemDescription({ className, ...props }) {
38136
- return /* @__PURE__ */ jsx131(
38570
+ return /* @__PURE__ */ jsx136(
38137
38571
  "p",
38138
38572
  {
38139
38573
  "data-slot": "item-description",
@@ -38147,7 +38581,7 @@ function ItemDescription({ className, ...props }) {
38147
38581
  );
38148
38582
  }
38149
38583
  function ItemActions({ className, ...props }) {
38150
- return /* @__PURE__ */ jsx131(
38584
+ return /* @__PURE__ */ jsx136(
38151
38585
  "div",
38152
38586
  {
38153
38587
  "data-slot": "item-actions",
@@ -38157,7 +38591,7 @@ function ItemActions({ className, ...props }) {
38157
38591
  );
38158
38592
  }
38159
38593
  function ItemHeader({ className, ...props }) {
38160
- return /* @__PURE__ */ jsx131(
38594
+ return /* @__PURE__ */ jsx136(
38161
38595
  "div",
38162
38596
  {
38163
38597
  "data-slot": "item-header",
@@ -38170,7 +38604,7 @@ function ItemHeader({ className, ...props }) {
38170
38604
  );
38171
38605
  }
38172
38606
  function ItemFooter({ className, ...props }) {
38173
- return /* @__PURE__ */ jsx131(
38607
+ return /* @__PURE__ */ jsx136(
38174
38608
  "div",
38175
38609
  {
38176
38610
  "data-slot": "item-footer",
@@ -38184,9 +38618,9 @@ function ItemFooter({ className, ...props }) {
38184
38618
  }
38185
38619
 
38186
38620
  // src/components/ui/kbd.tsx
38187
- import { jsx as jsx132 } from "react/jsx-runtime";
38621
+ import { jsx as jsx137 } from "react/jsx-runtime";
38188
38622
  function Kbd({ className, ...props }) {
38189
- return /* @__PURE__ */ jsx132(
38623
+ return /* @__PURE__ */ jsx137(
38190
38624
  "kbd",
38191
38625
  {
38192
38626
  "data-slot": "kbd",
@@ -38201,7 +38635,7 @@ function Kbd({ className, ...props }) {
38201
38635
  );
38202
38636
  }
38203
38637
  function KbdGroup({ className, ...props }) {
38204
- return /* @__PURE__ */ jsx132(
38638
+ return /* @__PURE__ */ jsx137(
38205
38639
  "kbd",
38206
38640
  {
38207
38641
  "data-slot": "kbd-group",
@@ -38212,16 +38646,16 @@ function KbdGroup({ className, ...props }) {
38212
38646
  }
38213
38647
 
38214
38648
  // src/components/ui/sidebar.tsx
38215
- import * as React99 from "react";
38649
+ import * as React100 from "react";
38216
38650
  import { Slot as Slot6 } from "@radix-ui/react-slot";
38217
38651
  import { cva as cva13 } from "class-variance-authority";
38218
38652
 
38219
38653
  // src/hooks/use-mobile.tsx
38220
- import * as React98 from "react";
38654
+ import * as React99 from "react";
38221
38655
  var MOBILE_BREAKPOINT = 768;
38222
38656
  function useIsMobile() {
38223
- const [isMobile, setIsMobile] = React98.useState(void 0);
38224
- React98.useEffect(() => {
38657
+ const [isMobile, setIsMobile] = React99.useState(void 0);
38658
+ React99.useEffect(() => {
38225
38659
  const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);
38226
38660
  const onChange = () => {
38227
38661
  setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
@@ -38234,22 +38668,22 @@ function useIsMobile() {
38234
38668
  }
38235
38669
 
38236
38670
  // src/components/ui/sidebar.tsx
38237
- import { jsx as jsx133, jsxs as jsxs87 } from "react/jsx-runtime";
38671
+ import { jsx as jsx138, jsxs as jsxs92 } from "react/jsx-runtime";
38238
38672
  var SIDEBAR_COOKIE_NAME = "sidebar_state";
38239
38673
  var SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;
38240
38674
  var SIDEBAR_WIDTH = "16rem";
38241
38675
  var SIDEBAR_WIDTH_MOBILE = "18rem";
38242
38676
  var SIDEBAR_WIDTH_ICON = "3rem";
38243
38677
  var SIDEBAR_KEYBOARD_SHORTCUT = "b";
38244
- var SidebarContext = React99.createContext(null);
38678
+ var SidebarContext = React100.createContext(null);
38245
38679
  function useSidebar() {
38246
- const context = React99.useContext(SidebarContext);
38680
+ const context = React100.useContext(SidebarContext);
38247
38681
  if (!context) {
38248
38682
  throw new Error("useSidebar must be used within a SidebarProvider.");
38249
38683
  }
38250
38684
  return context;
38251
38685
  }
38252
- var SidebarProvider = React99.forwardRef(
38686
+ var SidebarProvider = React100.forwardRef(
38253
38687
  ({
38254
38688
  defaultOpen = true,
38255
38689
  open: openProp,
@@ -38260,10 +38694,10 @@ var SidebarProvider = React99.forwardRef(
38260
38694
  ...props
38261
38695
  }, ref) => {
38262
38696
  const isMobile = useIsMobile();
38263
- const [openMobile, setOpenMobile] = React99.useState(false);
38264
- const [_open, _setOpen] = React99.useState(defaultOpen);
38697
+ const [openMobile, setOpenMobile] = React100.useState(false);
38698
+ const [_open, _setOpen] = React100.useState(defaultOpen);
38265
38699
  const open = openProp ?? _open;
38266
- const setOpen = React99.useCallback(
38700
+ const setOpen = React100.useCallback(
38267
38701
  (value) => {
38268
38702
  const openState = typeof value === "function" ? value(open) : value;
38269
38703
  if (setOpenProp) {
@@ -38275,10 +38709,10 @@ var SidebarProvider = React99.forwardRef(
38275
38709
  },
38276
38710
  [setOpenProp, open]
38277
38711
  );
38278
- const toggleSidebar = React99.useCallback(() => {
38712
+ const toggleSidebar = React100.useCallback(() => {
38279
38713
  return isMobile ? setOpenMobile((open2) => !open2) : setOpen((open2) => !open2);
38280
38714
  }, [isMobile, setOpen, setOpenMobile]);
38281
- React99.useEffect(() => {
38715
+ React100.useEffect(() => {
38282
38716
  const handleKeyDown = (event) => {
38283
38717
  if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {
38284
38718
  event.preventDefault();
@@ -38289,7 +38723,7 @@ var SidebarProvider = React99.forwardRef(
38289
38723
  return () => window.removeEventListener("keydown", handleKeyDown);
38290
38724
  }, [toggleSidebar]);
38291
38725
  const state = open ? "expanded" : "collapsed";
38292
- const contextValue = React99.useMemo(
38726
+ const contextValue = React100.useMemo(
38293
38727
  () => ({
38294
38728
  state,
38295
38729
  open,
@@ -38301,7 +38735,7 @@ var SidebarProvider = React99.forwardRef(
38301
38735
  }),
38302
38736
  [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]
38303
38737
  );
38304
- return /* @__PURE__ */ jsx133(SidebarContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx133(TooltipProvider, { delayDuration: 0, children: /* @__PURE__ */ jsx133(
38738
+ return /* @__PURE__ */ jsx138(SidebarContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx138(TooltipProvider, { delayDuration: 0, children: /* @__PURE__ */ jsx138(
38305
38739
  "div",
38306
38740
  {
38307
38741
  style: {
@@ -38321,7 +38755,7 @@ var SidebarProvider = React99.forwardRef(
38321
38755
  }
38322
38756
  );
38323
38757
  SidebarProvider.displayName = "SidebarProvider";
38324
- var Sidebar = React99.forwardRef(
38758
+ var Sidebar = React100.forwardRef(
38325
38759
  ({
38326
38760
  side = "left",
38327
38761
  variant = "sidebar",
@@ -38332,7 +38766,7 @@ var Sidebar = React99.forwardRef(
38332
38766
  }, ref) => {
38333
38767
  const { isMobile, state, openMobile, setOpenMobile } = useSidebar();
38334
38768
  if (collapsible === "none") {
38335
- return /* @__PURE__ */ jsx133(
38769
+ return /* @__PURE__ */ jsx138(
38336
38770
  "div",
38337
38771
  {
38338
38772
  className: cn(
@@ -38346,7 +38780,7 @@ var Sidebar = React99.forwardRef(
38346
38780
  );
38347
38781
  }
38348
38782
  if (isMobile) {
38349
- return /* @__PURE__ */ jsx133(Sheet2, { open: openMobile, onOpenChange: setOpenMobile, ...props, children: /* @__PURE__ */ jsxs87(
38783
+ return /* @__PURE__ */ jsx138(Sheet2, { open: openMobile, onOpenChange: setOpenMobile, ...props, children: /* @__PURE__ */ jsxs92(
38350
38784
  SheetContent,
38351
38785
  {
38352
38786
  "data-sidebar": "sidebar",
@@ -38357,16 +38791,16 @@ var Sidebar = React99.forwardRef(
38357
38791
  },
38358
38792
  side,
38359
38793
  children: [
38360
- /* @__PURE__ */ jsxs87(SheetHeader, { className: "sr-only", children: [
38361
- /* @__PURE__ */ jsx133(SheetTitle, { children: "Sidebar" }),
38362
- /* @__PURE__ */ jsx133(SheetDescription, { children: "Displays the mobile sidebar." })
38794
+ /* @__PURE__ */ jsxs92(SheetHeader, { className: "sr-only", children: [
38795
+ /* @__PURE__ */ jsx138(SheetTitle, { children: "Sidebar" }),
38796
+ /* @__PURE__ */ jsx138(SheetDescription, { children: "Displays the mobile sidebar." })
38363
38797
  ] }),
38364
- /* @__PURE__ */ jsx133("div", { className: "flex h-full w-full flex-col", children })
38798
+ /* @__PURE__ */ jsx138("div", { className: "flex h-full w-full flex-col", children })
38365
38799
  ]
38366
38800
  }
38367
38801
  ) });
38368
38802
  }
38369
- return /* @__PURE__ */ jsxs87(
38803
+ return /* @__PURE__ */ jsxs92(
38370
38804
  "div",
38371
38805
  {
38372
38806
  ref,
@@ -38376,7 +38810,7 @@ var Sidebar = React99.forwardRef(
38376
38810
  "data-variant": variant,
38377
38811
  "data-side": side,
38378
38812
  children: [
38379
- /* @__PURE__ */ jsx133(
38813
+ /* @__PURE__ */ jsx138(
38380
38814
  "div",
38381
38815
  {
38382
38816
  className: cn(
@@ -38387,7 +38821,7 @@ var Sidebar = React99.forwardRef(
38387
38821
  )
38388
38822
  }
38389
38823
  ),
38390
- /* @__PURE__ */ jsx133(
38824
+ /* @__PURE__ */ jsx138(
38391
38825
  "div",
38392
38826
  {
38393
38827
  className: cn(
@@ -38398,7 +38832,7 @@ var Sidebar = React99.forwardRef(
38398
38832
  className
38399
38833
  ),
38400
38834
  ...props,
38401
- children: /* @__PURE__ */ jsx133(
38835
+ children: /* @__PURE__ */ jsx138(
38402
38836
  "div",
38403
38837
  {
38404
38838
  "data-sidebar": "sidebar",
@@ -38414,9 +38848,9 @@ var Sidebar = React99.forwardRef(
38414
38848
  }
38415
38849
  );
38416
38850
  Sidebar.displayName = "Sidebar";
38417
- var SidebarTrigger = React99.forwardRef(({ className, onClick, ...props }, ref) => {
38851
+ var SidebarTrigger = React100.forwardRef(({ className, onClick, ...props }, ref) => {
38418
38852
  const { toggleSidebar } = useSidebar();
38419
- return /* @__PURE__ */ jsxs87(
38853
+ return /* @__PURE__ */ jsxs92(
38420
38854
  Button,
38421
38855
  {
38422
38856
  ref,
@@ -38430,16 +38864,16 @@ var SidebarTrigger = React99.forwardRef(({ className, onClick, ...props }, ref)
38430
38864
  },
38431
38865
  ...props,
38432
38866
  children: [
38433
- /* @__PURE__ */ jsx133(PanelLeft, {}),
38434
- /* @__PURE__ */ jsx133("span", { className: "sr-only", children: "Toggle Sidebar" })
38867
+ /* @__PURE__ */ jsx138(PanelLeft, {}),
38868
+ /* @__PURE__ */ jsx138("span", { className: "sr-only", children: "Toggle Sidebar" })
38435
38869
  ]
38436
38870
  }
38437
38871
  );
38438
38872
  });
38439
38873
  SidebarTrigger.displayName = "SidebarTrigger";
38440
- var SidebarRail = React99.forwardRef(({ className, ...props }, ref) => {
38874
+ var SidebarRail = React100.forwardRef(({ className, ...props }, ref) => {
38441
38875
  const { toggleSidebar } = useSidebar();
38442
- return /* @__PURE__ */ jsx133(
38876
+ return /* @__PURE__ */ jsx138(
38443
38877
  "button",
38444
38878
  {
38445
38879
  ref,
@@ -38462,8 +38896,8 @@ var SidebarRail = React99.forwardRef(({ className, ...props }, ref) => {
38462
38896
  );
38463
38897
  });
38464
38898
  SidebarRail.displayName = "SidebarRail";
38465
- var SidebarInset = React99.forwardRef(({ className, ...props }, ref) => {
38466
- return /* @__PURE__ */ jsx133(
38899
+ var SidebarInset = React100.forwardRef(({ className, ...props }, ref) => {
38900
+ return /* @__PURE__ */ jsx138(
38467
38901
  "main",
38468
38902
  {
38469
38903
  ref,
@@ -38477,8 +38911,8 @@ var SidebarInset = React99.forwardRef(({ className, ...props }, ref) => {
38477
38911
  );
38478
38912
  });
38479
38913
  SidebarInset.displayName = "SidebarInset";
38480
- var SidebarInput = React99.forwardRef(({ className, ...props }, ref) => {
38481
- return /* @__PURE__ */ jsx133(
38914
+ var SidebarInput = React100.forwardRef(({ className, ...props }, ref) => {
38915
+ return /* @__PURE__ */ jsx138(
38482
38916
  Input,
38483
38917
  {
38484
38918
  ref,
@@ -38492,8 +38926,8 @@ var SidebarInput = React99.forwardRef(({ className, ...props }, ref) => {
38492
38926
  );
38493
38927
  });
38494
38928
  SidebarInput.displayName = "SidebarInput";
38495
- var SidebarHeader = React99.forwardRef(({ className, ...props }, ref) => {
38496
- return /* @__PURE__ */ jsx133(
38929
+ var SidebarHeader = React100.forwardRef(({ className, ...props }, ref) => {
38930
+ return /* @__PURE__ */ jsx138(
38497
38931
  "div",
38498
38932
  {
38499
38933
  ref,
@@ -38504,8 +38938,8 @@ var SidebarHeader = React99.forwardRef(({ className, ...props }, ref) => {
38504
38938
  );
38505
38939
  });
38506
38940
  SidebarHeader.displayName = "SidebarHeader";
38507
- var SidebarFooter = React99.forwardRef(({ className, ...props }, ref) => {
38508
- return /* @__PURE__ */ jsx133(
38941
+ var SidebarFooter = React100.forwardRef(({ className, ...props }, ref) => {
38942
+ return /* @__PURE__ */ jsx138(
38509
38943
  "div",
38510
38944
  {
38511
38945
  ref,
@@ -38516,8 +38950,8 @@ var SidebarFooter = React99.forwardRef(({ className, ...props }, ref) => {
38516
38950
  );
38517
38951
  });
38518
38952
  SidebarFooter.displayName = "SidebarFooter";
38519
- var SidebarSeparator = React99.forwardRef(({ className, ...props }, ref) => {
38520
- return /* @__PURE__ */ jsx133(
38953
+ var SidebarSeparator = React100.forwardRef(({ className, ...props }, ref) => {
38954
+ return /* @__PURE__ */ jsx138(
38521
38955
  Separator2,
38522
38956
  {
38523
38957
  ref,
@@ -38528,8 +38962,8 @@ var SidebarSeparator = React99.forwardRef(({ className, ...props }, ref) => {
38528
38962
  );
38529
38963
  });
38530
38964
  SidebarSeparator.displayName = "SidebarSeparator";
38531
- var SidebarContent = React99.forwardRef(({ className, ...props }, ref) => {
38532
- return /* @__PURE__ */ jsx133(
38965
+ var SidebarContent = React100.forwardRef(({ className, ...props }, ref) => {
38966
+ return /* @__PURE__ */ jsx138(
38533
38967
  "div",
38534
38968
  {
38535
38969
  ref,
@@ -38543,8 +38977,8 @@ var SidebarContent = React99.forwardRef(({ className, ...props }, ref) => {
38543
38977
  );
38544
38978
  });
38545
38979
  SidebarContent.displayName = "SidebarContent";
38546
- var SidebarGroup = React99.forwardRef(({ className, ...props }, ref) => {
38547
- return /* @__PURE__ */ jsx133(
38980
+ var SidebarGroup = React100.forwardRef(({ className, ...props }, ref) => {
38981
+ return /* @__PURE__ */ jsx138(
38548
38982
  "div",
38549
38983
  {
38550
38984
  ref,
@@ -38555,9 +38989,9 @@ var SidebarGroup = React99.forwardRef(({ className, ...props }, ref) => {
38555
38989
  );
38556
38990
  });
38557
38991
  SidebarGroup.displayName = "SidebarGroup";
38558
- var SidebarGroupLabel = React99.forwardRef(({ className, asChild = false, ...props }, ref) => {
38992
+ var SidebarGroupLabel = React100.forwardRef(({ className, asChild = false, ...props }, ref) => {
38559
38993
  const Comp = asChild ? Slot6 : "div";
38560
- return /* @__PURE__ */ jsx133(
38994
+ return /* @__PURE__ */ jsx138(
38561
38995
  Comp,
38562
38996
  {
38563
38997
  ref,
@@ -38572,9 +39006,9 @@ var SidebarGroupLabel = React99.forwardRef(({ className, asChild = false, ...pro
38572
39006
  );
38573
39007
  });
38574
39008
  SidebarGroupLabel.displayName = "SidebarGroupLabel";
38575
- var SidebarGroupAction = React99.forwardRef(({ className, asChild = false, ...props }, ref) => {
39009
+ var SidebarGroupAction = React100.forwardRef(({ className, asChild = false, ...props }, ref) => {
38576
39010
  const Comp = asChild ? Slot6 : "button";
38577
- return /* @__PURE__ */ jsx133(
39011
+ return /* @__PURE__ */ jsx138(
38578
39012
  Comp,
38579
39013
  {
38580
39014
  ref,
@@ -38591,7 +39025,7 @@ var SidebarGroupAction = React99.forwardRef(({ className, asChild = false, ...pr
38591
39025
  );
38592
39026
  });
38593
39027
  SidebarGroupAction.displayName = "SidebarGroupAction";
38594
- var SidebarGroupContent = React99.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx133(
39028
+ var SidebarGroupContent = React100.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx138(
38595
39029
  "div",
38596
39030
  {
38597
39031
  ref,
@@ -38601,7 +39035,7 @@ var SidebarGroupContent = React99.forwardRef(({ className, ...props }, ref) => /
38601
39035
  }
38602
39036
  ));
38603
39037
  SidebarGroupContent.displayName = "SidebarGroupContent";
38604
- var SidebarMenu = React99.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx133(
39038
+ var SidebarMenu = React100.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx138(
38605
39039
  "ul",
38606
39040
  {
38607
39041
  ref,
@@ -38611,7 +39045,7 @@ var SidebarMenu = React99.forwardRef(({ className, ...props }, ref) => /* @__PUR
38611
39045
  }
38612
39046
  ));
38613
39047
  SidebarMenu.displayName = "SidebarMenu";
38614
- var SidebarMenuItem = React99.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx133(
39048
+ var SidebarMenuItem = React100.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx138(
38615
39049
  "li",
38616
39050
  {
38617
39051
  ref,
@@ -38641,7 +39075,7 @@ var sidebarMenuButtonVariants = cva13(
38641
39075
  }
38642
39076
  }
38643
39077
  );
38644
- var SidebarMenuButton = React99.forwardRef(
39078
+ var SidebarMenuButton = React100.forwardRef(
38645
39079
  ({
38646
39080
  asChild = false,
38647
39081
  isActive = false,
@@ -38653,7 +39087,7 @@ var SidebarMenuButton = React99.forwardRef(
38653
39087
  }, ref) => {
38654
39088
  const Comp = asChild ? Slot6 : "button";
38655
39089
  const { isMobile, state } = useSidebar();
38656
- const button = /* @__PURE__ */ jsx133(
39090
+ const button = /* @__PURE__ */ jsx138(
38657
39091
  Comp,
38658
39092
  {
38659
39093
  ref,
@@ -38672,9 +39106,9 @@ var SidebarMenuButton = React99.forwardRef(
38672
39106
  children: tooltip
38673
39107
  };
38674
39108
  }
38675
- return /* @__PURE__ */ jsxs87(Tooltip, { children: [
38676
- /* @__PURE__ */ jsx133(TooltipTrigger, { asChild: true, children: button }),
38677
- /* @__PURE__ */ jsx133(
39109
+ return /* @__PURE__ */ jsxs92(Tooltip, { children: [
39110
+ /* @__PURE__ */ jsx138(TooltipTrigger, { asChild: true, children: button }),
39111
+ /* @__PURE__ */ jsx138(
38678
39112
  TooltipContent,
38679
39113
  {
38680
39114
  side: "right",
@@ -38687,9 +39121,9 @@ var SidebarMenuButton = React99.forwardRef(
38687
39121
  }
38688
39122
  );
38689
39123
  SidebarMenuButton.displayName = "SidebarMenuButton";
38690
- var SidebarMenuAction = React99.forwardRef(({ className, asChild = false, showOnHover = false, ...props }, ref) => {
39124
+ var SidebarMenuAction = React100.forwardRef(({ className, asChild = false, showOnHover = false, ...props }, ref) => {
38691
39125
  const Comp = asChild ? Slot6 : "button";
38692
- return /* @__PURE__ */ jsx133(
39126
+ return /* @__PURE__ */ jsx138(
38693
39127
  Comp,
38694
39128
  {
38695
39129
  ref,
@@ -38710,7 +39144,7 @@ var SidebarMenuAction = React99.forwardRef(({ className, asChild = false, showOn
38710
39144
  );
38711
39145
  });
38712
39146
  SidebarMenuAction.displayName = "SidebarMenuAction";
38713
- var SidebarMenuBadge = React99.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx133(
39147
+ var SidebarMenuBadge = React100.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx138(
38714
39148
  "div",
38715
39149
  {
38716
39150
  ref,
@@ -38728,11 +39162,11 @@ var SidebarMenuBadge = React99.forwardRef(({ className, ...props }, ref) => /* @
38728
39162
  }
38729
39163
  ));
38730
39164
  SidebarMenuBadge.displayName = "SidebarMenuBadge";
38731
- var SidebarMenuSkeleton = React99.forwardRef(({ className, showIcon = false, ...props }, ref) => {
38732
- const width = React99.useMemo(() => {
39165
+ var SidebarMenuSkeleton = React100.forwardRef(({ className, showIcon = false, ...props }, ref) => {
39166
+ const width = React100.useMemo(() => {
38733
39167
  return `${Math.floor(Math.random() * 40) + 50}%`;
38734
39168
  }, []);
38735
- return /* @__PURE__ */ jsxs87(
39169
+ return /* @__PURE__ */ jsxs92(
38736
39170
  "div",
38737
39171
  {
38738
39172
  ref,
@@ -38740,14 +39174,14 @@ var SidebarMenuSkeleton = React99.forwardRef(({ className, showIcon = false, ...
38740
39174
  className: cn("flex h-8 items-center gap-2 rounded-md px-2", className),
38741
39175
  ...props,
38742
39176
  children: [
38743
- showIcon && /* @__PURE__ */ jsx133(
39177
+ showIcon && /* @__PURE__ */ jsx138(
38744
39178
  Skeleton,
38745
39179
  {
38746
39180
  className: "size-4 rounded-md",
38747
39181
  "data-sidebar": "menu-skeleton-icon"
38748
39182
  }
38749
39183
  ),
38750
- /* @__PURE__ */ jsx133(
39184
+ /* @__PURE__ */ jsx138(
38751
39185
  Skeleton,
38752
39186
  {
38753
39187
  className: "h-4 max-w-[--skeleton-width] flex-1",
@@ -38762,7 +39196,7 @@ var SidebarMenuSkeleton = React99.forwardRef(({ className, showIcon = false, ...
38762
39196
  );
38763
39197
  });
38764
39198
  SidebarMenuSkeleton.displayName = "SidebarMenuSkeleton";
38765
- var SidebarMenuSub = React99.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx133(
39199
+ var SidebarMenuSub = React100.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx138(
38766
39200
  "ul",
38767
39201
  {
38768
39202
  ref,
@@ -38776,11 +39210,11 @@ var SidebarMenuSub = React99.forwardRef(({ className, ...props }, ref) => /* @__
38776
39210
  }
38777
39211
  ));
38778
39212
  SidebarMenuSub.displayName = "SidebarMenuSub";
38779
- var SidebarMenuSubItem = React99.forwardRef(({ ...props }, ref) => /* @__PURE__ */ jsx133("li", { ref, ...props }));
39213
+ var SidebarMenuSubItem = React100.forwardRef(({ ...props }, ref) => /* @__PURE__ */ jsx138("li", { ref, ...props }));
38780
39214
  SidebarMenuSubItem.displayName = "SidebarMenuSubItem";
38781
- var SidebarMenuSubButton = React99.forwardRef(({ asChild = false, size = "md", isActive, className, ...props }, ref) => {
39215
+ var SidebarMenuSubButton = React100.forwardRef(({ asChild = false, size = "md", isActive, className, ...props }, ref) => {
38782
39216
  const Comp = asChild ? Slot6 : "a";
38783
- return /* @__PURE__ */ jsx133(
39217
+ return /* @__PURE__ */ jsx138(
38784
39218
  Comp,
38785
39219
  {
38786
39220
  ref,
@@ -38804,20 +39238,20 @@ SidebarMenuSubButton.displayName = "SidebarMenuSubButton";
38804
39238
  // src/components/ui/sonner.tsx
38805
39239
  import { useTheme } from "next-themes";
38806
39240
  import { Toaster as Sonner } from "sonner";
38807
- import { jsx as jsx134 } from "react/jsx-runtime";
39241
+ import { jsx as jsx139 } from "react/jsx-runtime";
38808
39242
  var Toaster = ({ ...props }) => {
38809
39243
  const { theme = "system" } = useTheme();
38810
- return /* @__PURE__ */ jsx134(
39244
+ return /* @__PURE__ */ jsx139(
38811
39245
  Sonner,
38812
39246
  {
38813
39247
  theme,
38814
39248
  className: "toaster group",
38815
39249
  icons: {
38816
- success: /* @__PURE__ */ jsx134(CircleCheck, { className: "h-4 w-4" }),
38817
- info: /* @__PURE__ */ jsx134(Info, { className: "h-4 w-4" }),
38818
- warning: /* @__PURE__ */ jsx134(TriangleAlert, { className: "h-4 w-4" }),
38819
- error: /* @__PURE__ */ jsx134(OctagonX, { className: "h-4 w-4" }),
38820
- loading: /* @__PURE__ */ jsx134(LoaderCircle, { className: "h-4 w-4 animate-spin" })
39250
+ success: /* @__PURE__ */ jsx139(CircleCheck, { className: "h-4 w-4" }),
39251
+ info: /* @__PURE__ */ jsx139(Info, { className: "h-4 w-4" }),
39252
+ warning: /* @__PURE__ */ jsx139(TriangleAlert, { className: "h-4 w-4" }),
39253
+ error: /* @__PURE__ */ jsx139(OctagonX, { className: "h-4 w-4" }),
39254
+ loading: /* @__PURE__ */ jsx139(LoaderCircle, { className: "h-4 w-4 animate-spin" })
38821
39255
  },
38822
39256
  toastOptions: {
38823
39257
  classNames: {
@@ -38833,26 +39267,26 @@ var Toaster = ({ ...props }) => {
38833
39267
  };
38834
39268
 
38835
39269
  // src/components/ui/toggle-group.tsx
38836
- import * as React100 from "react";
39270
+ import * as React101 from "react";
38837
39271
  import * as ToggleGroupPrimitive from "@radix-ui/react-toggle-group";
38838
- import { jsx as jsx135 } from "react/jsx-runtime";
38839
- var ToggleGroupContext = React100.createContext({
39272
+ import { jsx as jsx140 } from "react/jsx-runtime";
39273
+ var ToggleGroupContext = React101.createContext({
38840
39274
  size: "default",
38841
39275
  variant: "default"
38842
39276
  });
38843
- var ToggleGroup = React100.forwardRef(({ className, variant, size, children, ...props }, ref) => /* @__PURE__ */ jsx135(
39277
+ var ToggleGroup = React101.forwardRef(({ className, variant, size, children, ...props }, ref) => /* @__PURE__ */ jsx140(
38844
39278
  ToggleGroupPrimitive.Root,
38845
39279
  {
38846
39280
  ref,
38847
39281
  className: cn("flex items-center justify-center gap-1", className),
38848
39282
  ...props,
38849
- children: /* @__PURE__ */ jsx135(ToggleGroupContext.Provider, { value: { variant, size }, children })
39283
+ children: /* @__PURE__ */ jsx140(ToggleGroupContext.Provider, { value: { variant, size }, children })
38850
39284
  }
38851
39285
  ));
38852
39286
  ToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName;
38853
- var ToggleGroupItem = React100.forwardRef(({ className, children, variant, size, ...props }, ref) => {
38854
- const context = React100.useContext(ToggleGroupContext);
38855
- return /* @__PURE__ */ jsx135(
39287
+ var ToggleGroupItem = React101.forwardRef(({ className, children, variant, size, ...props }, ref) => {
39288
+ const context = React101.useContext(ToggleGroupContext);
39289
+ return /* @__PURE__ */ jsx140(
38856
39290
  ToggleGroupPrimitive.Item,
38857
39291
  {
38858
39292
  ref,
@@ -38871,7 +39305,7 @@ var ToggleGroupItem = React100.forwardRef(({ className, children, variant, size,
38871
39305
  ToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName;
38872
39306
 
38873
39307
  // src/render/PXEngineRenderer.tsx
38874
- import { jsx as jsx136, jsxs as jsxs88 } from "react/jsx-runtime";
39308
+ import { jsx as jsx141, jsxs as jsxs93 } from "react/jsx-runtime";
38875
39309
  var CONTEXT_DEPENDENT_COMPONENTS = /* @__PURE__ */ new Set([
38876
39310
  // Form components - require FormField + FormItem context
38877
39311
  "FormLabel",
@@ -38963,24 +39397,24 @@ var COMPONENT_SUGGESTIONS = {
38963
39397
  };
38964
39398
  var renderContextDependentError = (componentName, normalizedName, key) => {
38965
39399
  const suggestion = COMPONENT_SUGGESTIONS[normalizedName] || `${componentName}Atom (if available)`;
38966
- return /* @__PURE__ */ jsxs88(
39400
+ return /* @__PURE__ */ jsxs93(
38967
39401
  "div",
38968
39402
  {
38969
39403
  className: "p-4 border-2 border-amber-500/50 rounded-lg bg-amber-50/80 space-y-2 my-2",
38970
39404
  children: [
38971
- /* @__PURE__ */ jsxs88("div", { className: "flex items-start gap-2", children: [
38972
- /* @__PURE__ */ jsx136("span", { className: "text-amber-600 font-bold text-lg", children: "\u26A0\uFE0F" }),
38973
- /* @__PURE__ */ jsxs88("div", { className: "flex-1", children: [
38974
- /* @__PURE__ */ jsxs88("p", { className: "text-sm font-semibold text-amber-900", children: [
39405
+ /* @__PURE__ */ jsxs93("div", { className: "flex items-start gap-2", children: [
39406
+ /* @__PURE__ */ jsx141("span", { className: "text-amber-600 font-bold text-lg", children: "\u26A0\uFE0F" }),
39407
+ /* @__PURE__ */ jsxs93("div", { className: "flex-1", children: [
39408
+ /* @__PURE__ */ jsxs93("p", { className: "text-sm font-semibold text-amber-900", children: [
38975
39409
  "Invalid Component: ",
38976
39410
  componentName
38977
39411
  ] }),
38978
- /* @__PURE__ */ jsx136("p", { className: "text-xs text-amber-700 mt-1", children: "This component requires React Context and cannot be rendered directly in schemas." })
39412
+ /* @__PURE__ */ jsx141("p", { className: "text-xs text-amber-700 mt-1", children: "This component requires React Context and cannot be rendered directly in schemas." })
38979
39413
  ] })
38980
39414
  ] }),
38981
- /* @__PURE__ */ jsxs88("div", { className: "bg-white/60 p-3 rounded border border-amber-200", children: [
38982
- /* @__PURE__ */ jsx136("p", { className: "text-xs font-semibold text-gray-700 mb-1.5", children: "\u2713 Use instead:" }),
38983
- /* @__PURE__ */ jsx136("code", { className: "text-xs text-blue-700 bg-blue-50 px-2 py-1 rounded", children: suggestion })
39415
+ /* @__PURE__ */ jsxs93("div", { className: "bg-white/60 p-3 rounded border border-amber-200", children: [
39416
+ /* @__PURE__ */ jsx141("p", { className: "text-xs font-semibold text-gray-700 mb-1.5", children: "\u2713 Use instead:" }),
39417
+ /* @__PURE__ */ jsx141("code", { className: "text-xs text-blue-700 bg-blue-50 px-2 py-1 rounded", children: suggestion })
38984
39418
  ] })
38985
39419
  ]
38986
39420
  },
@@ -39060,7 +39494,7 @@ var PXEngineRenderer = ({
39060
39494
  if (typeof component === "string" || typeof component === "number") {
39061
39495
  return component;
39062
39496
  }
39063
- if (React101.isValidElement(component)) {
39497
+ if (React102.isValidElement(component)) {
39064
39498
  return component;
39065
39499
  }
39066
39500
  if (!component || typeof component !== "object") return null;
@@ -39138,7 +39572,7 @@ var PXEngineRenderer = ({
39138
39572
  const isAtomWithRenderProp = ATOMS_WITH_RENDER.has(atomName);
39139
39573
  const finalStyle = { ...dynamicStyle, ...finalProps.style || {} };
39140
39574
  if (isAtomWithRenderProp) {
39141
- return /* @__PURE__ */ jsx136(
39575
+ return /* @__PURE__ */ jsx141(
39142
39576
  TargetComponent,
39143
39577
  {
39144
39578
  ...finalProps,
@@ -39150,7 +39584,7 @@ var PXEngineRenderer = ({
39150
39584
  uniqueKey
39151
39585
  );
39152
39586
  } else {
39153
- return /* @__PURE__ */ jsx136(
39587
+ return /* @__PURE__ */ jsx141(
39154
39588
  TargetComponent,
39155
39589
  {
39156
39590
  ...finalProps,
@@ -39162,7 +39596,7 @@ var PXEngineRenderer = ({
39162
39596
  );
39163
39597
  }
39164
39598
  };
39165
- return /* @__PURE__ */ jsx136("div", { className: "px-engine-root relative w-full h-full", children: renderRecursive(root) });
39599
+ return /* @__PURE__ */ jsx141("div", { className: "px-engine-root relative w-full h-full", children: renderRecursive(root) });
39166
39600
  };
39167
39601
  export {
39168
39602
  Accordion,
@@ -39335,6 +39769,9 @@ export {
39335
39769
  MenubarSeparator,
39336
39770
  MenubarShortcut,
39337
39771
  MenubarTrigger,
39772
+ MultiAgentCard,
39773
+ MultiAgentPlan,
39774
+ MultiAgentUISelector,
39338
39775
  NavigationMenu,
39339
39776
  NavigationMenuContent,
39340
39777
  NavigationMenuItem,
@@ -39399,6 +39836,7 @@ export {
39399
39836
  SliderAtom,
39400
39837
  Spinner,
39401
39838
  SpinnerAtom,
39839
+ StageIndicator,
39402
39840
  StatsGrid,
39403
39841
  StepWizard,
39404
39842
  Switch,
@@ -39429,6 +39867,7 @@ export {
39429
39867
  TooltipProvider,
39430
39868
  TooltipTrigger,
39431
39869
  TopPostsGrid,
39870
+ UIComponentSelector,
39432
39871
  VideoAtom,
39433
39872
  WorkflowVisualizer,
39434
39873
  cn