pxengine 0.1.35 → 0.1.37

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.cjs CHANGED
@@ -200,6 +200,9 @@ __export(index_exports, {
200
200
  MenubarSeparator: () => MenubarSeparator,
201
201
  MenubarShortcut: () => MenubarShortcut,
202
202
  MenubarTrigger: () => MenubarTrigger,
203
+ MultiAgentCard: () => MultiAgentCard,
204
+ MultiAgentPlan: () => MultiAgentPlan,
205
+ MultiAgentUISelector: () => MultiAgentUISelector,
203
206
  NavigationMenu: () => NavigationMenu,
204
207
  NavigationMenuContent: () => NavigationMenuContent,
205
208
  NavigationMenuItem: () => NavigationMenuItem,
@@ -264,6 +267,7 @@ __export(index_exports, {
264
267
  SliderAtom: () => SliderAtom,
265
268
  Spinner: () => Spinner,
266
269
  SpinnerAtom: () => SpinnerAtom,
270
+ StageIndicator: () => StageIndicator,
267
271
  StatsGrid: () => StatsGrid,
268
272
  StepWizard: () => StepWizard,
269
273
  Switch: () => Switch,
@@ -294,6 +298,7 @@ __export(index_exports, {
294
298
  TooltipProvider: () => TooltipProvider,
295
299
  TooltipTrigger: () => TooltipTrigger,
296
300
  TopPostsGrid: () => TopPostsGrid,
301
+ UIComponentSelector: () => UIComponentSelector,
297
302
  VideoAtom: () => VideoAtom,
298
303
  WorkflowVisualizer: () => WorkflowVisualizer,
299
304
  cn: () => cn
@@ -301,7 +306,7 @@ __export(index_exports, {
301
306
  module.exports = __toCommonJS(index_exports);
302
307
 
303
308
  // src/render/PXEngineRenderer.tsx
304
- var import_react69 = __toESM(require("react"), 1);
309
+ var import_react71 = __toESM(require("react"), 1);
305
310
 
306
311
  // src/atoms/index.ts
307
312
  var atoms_exports = {};
@@ -33599,16 +33604,21 @@ __export(molecules_exports, {
33599
33604
  KeywordBundlesEdit: () => KeywordBundlesEdit,
33600
33605
  LoadingOverlay: () => LoadingOverlay,
33601
33606
  MCQCard: () => MCQCard,
33607
+ MultiAgentCard: () => MultiAgentCard,
33608
+ MultiAgentPlan: () => MultiAgentPlan,
33609
+ MultiAgentUISelector: () => MultiAgentUISelector,
33602
33610
  NotificationList: () => NotificationList,
33603
33611
  PlatformIconGroup: () => PlatformIconGroup,
33604
33612
  PlatformSelectDisplay: () => PlatformSelectDisplay,
33605
33613
  PlatformSelectEdit: () => PlatformSelectEdit,
33606
33614
  SearchSpecCard: () => SearchSpecCard,
33615
+ StageIndicator: () => StageIndicator,
33607
33616
  StatsGrid: () => StatsGrid,
33608
33617
  StepWizard: () => StepWizard,
33609
33618
  TagCloud: () => TagCloud,
33610
33619
  ToolListCard: () => ToolListCard,
33611
33620
  TopPostsGrid: () => TopPostsGrid,
33621
+ UIComponentSelector: () => UIComponentSelector,
33612
33622
  WorkflowVisualizer: () => WorkflowVisualizer
33613
33623
  });
33614
33624
 
@@ -37475,6 +37485,432 @@ var InstructionPreview = ({
37475
37485
  );
37476
37486
  };
37477
37487
 
37488
+ // src/molecules/agent-builder/UIComponentSelector/UIComponentSelector.tsx
37489
+ var import_react68 = require("react");
37490
+ var import_jsx_runtime127 = require("react/jsx-runtime");
37491
+ function UIComponentSelector({
37492
+ components,
37493
+ onSelect,
37494
+ className
37495
+ }) {
37496
+ const [selected, setSelected] = (0, import_react68.useState)(/* @__PURE__ */ new Set());
37497
+ const [submitted, setSubmitted] = (0, import_react68.useState)(false);
37498
+ const grouped = components.reduce(
37499
+ (acc, comp) => {
37500
+ const cat = comp.category || "Other";
37501
+ if (!acc[cat]) acc[cat] = [];
37502
+ acc[cat].push(comp);
37503
+ return acc;
37504
+ },
37505
+ {}
37506
+ );
37507
+ const toggle = (name) => {
37508
+ if (submitted) return;
37509
+ setSelected((prev) => {
37510
+ const next = new Set(prev);
37511
+ if (next.has(name)) next.delete(name);
37512
+ else next.add(name);
37513
+ return next;
37514
+ });
37515
+ };
37516
+ const handleContinue = () => {
37517
+ setSubmitted(true);
37518
+ onSelect?.(Array.from(selected));
37519
+ };
37520
+ const categoryOrder = Object.keys(grouped).sort();
37521
+ return /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)(
37522
+ "div",
37523
+ {
37524
+ className: cn(
37525
+ "rounded-xl border border-border bg-card overflow-hidden",
37526
+ className
37527
+ ),
37528
+ children: [
37529
+ /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)("div", { className: "px-4 py-3 border-b border-border bg-muted/50", children: [
37530
+ /* @__PURE__ */ (0, import_jsx_runtime127.jsx)("h3", { className: "text-sm font-semibold text-foreground", children: "Select UI Components" }),
37531
+ /* @__PURE__ */ (0, import_jsx_runtime127.jsx)("p", { className: "text-xs text-muted-foreground mt-0.5", children: "Choose which visual components this agent can use in its responses." })
37532
+ ] }),
37533
+ /* @__PURE__ */ (0, import_jsx_runtime127.jsx)("div", { className: "px-4 py-3 space-y-4", children: categoryOrder.map((category) => /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)("div", { children: [
37534
+ /* @__PURE__ */ (0, import_jsx_runtime127.jsx)("h4", { className: "text-xs font-medium text-muted-foreground uppercase tracking-wider mb-2", children: category }),
37535
+ /* @__PURE__ */ (0, import_jsx_runtime127.jsx)("div", { className: "space-y-1.5", children: grouped[category].map((comp) => /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)(
37536
+ "label",
37537
+ {
37538
+ className: cn(
37539
+ "flex items-start gap-3 px-3 py-2 rounded-lg cursor-pointer transition-colors",
37540
+ submitted ? "cursor-default opacity-70" : "hover:bg-muted/50",
37541
+ selected.has(comp.name) && !submitted && "bg-primary/5 border border-primary/20",
37542
+ selected.has(comp.name) && submitted && "bg-primary/5"
37543
+ ),
37544
+ children: [
37545
+ /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(
37546
+ "input",
37547
+ {
37548
+ type: "checkbox",
37549
+ checked: selected.has(comp.name),
37550
+ onChange: () => toggle(comp.name),
37551
+ disabled: submitted,
37552
+ className: "mt-0.5 h-4 w-4 rounded border-border text-primary focus:ring-primary/50 disabled:opacity-50"
37553
+ }
37554
+ ),
37555
+ /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)("div", { className: "flex-1 min-w-0", children: [
37556
+ /* @__PURE__ */ (0, import_jsx_runtime127.jsx)("span", { className: "text-sm font-medium text-foreground", children: comp.display_name }),
37557
+ /* @__PURE__ */ (0, import_jsx_runtime127.jsx)("span", { className: "ml-2 text-xs text-muted-foreground", children: comp.description })
37558
+ ] })
37559
+ ]
37560
+ },
37561
+ comp.name
37562
+ )) })
37563
+ ] }, category)) }),
37564
+ !submitted && /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)("div", { className: "px-4 py-3 border-t border-border flex items-center justify-between", children: [
37565
+ /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)("span", { className: "text-xs text-muted-foreground", children: [
37566
+ selected.size,
37567
+ " selected"
37568
+ ] }),
37569
+ /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(
37570
+ "button",
37571
+ {
37572
+ onClick: handleContinue,
37573
+ className: "px-4 py-1.5 text-sm font-medium rounded-lg bg-primary text-primary-foreground hover:bg-primary/90 transition-colors",
37574
+ children: "Continue"
37575
+ }
37576
+ )
37577
+ ] })
37578
+ ]
37579
+ }
37580
+ );
37581
+ }
37582
+
37583
+ // src/molecules/agent-builder/MultiAgentCard/MultiAgentCard.tsx
37584
+ var import_jsx_runtime128 = require("react/jsx-runtime");
37585
+ var MultiAgentCard = ({
37586
+ name,
37587
+ display_name,
37588
+ description,
37589
+ stages = [],
37590
+ enabled = true,
37591
+ className
37592
+ }) => {
37593
+ const avatarUrl = `https://api.dicebear.com/7.x/avataaars/svg?seed=${name}`;
37594
+ return /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)(
37595
+ "div",
37596
+ {
37597
+ className: cn(
37598
+ "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",
37599
+ className
37600
+ ),
37601
+ children: [
37602
+ /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)("div", { className: "flex items-start gap-4 px-5 py-4", children: [
37603
+ /* @__PURE__ */ (0, import_jsx_runtime128.jsx)("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__ */ (0, import_jsx_runtime128.jsx)("img", { src: avatarUrl, alt: display_name, className: "h-full w-full" }) }),
37604
+ /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)("div", { className: "flex-1 min-w-0", children: [
37605
+ /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)("div", { className: "flex items-center gap-2", children: [
37606
+ /* @__PURE__ */ (0, import_jsx_runtime128.jsx)("h4", { className: "text-sm font-semibold text-[var(--foreground)] truncate", children: display_name }),
37607
+ /* @__PURE__ */ (0, import_jsx_runtime128.jsx)("span", { className: "text-[11px] font-mono text-[var(--foreground)]/40 bg-[var(--foreground)]/[0.05] px-1.5 py-0.5 rounded", children: name }),
37608
+ /* @__PURE__ */ (0, import_jsx_runtime128.jsx)("span", { className: "text-[10px] px-1.5 py-0.5 rounded-full font-medium bg-violet-500/10 text-violet-600", children: "Multi-Agent" }),
37609
+ /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
37610
+ "span",
37611
+ {
37612
+ className: cn(
37613
+ "text-[10px] px-1.5 py-0.5 rounded-full font-medium",
37614
+ enabled ? "bg-emerald-500/10 text-emerald-600" : "bg-red-500/10 text-red-500"
37615
+ ),
37616
+ children: enabled ? "Active" : "Disabled"
37617
+ }
37618
+ )
37619
+ ] }),
37620
+ /* @__PURE__ */ (0, import_jsx_runtime128.jsx)("p", { className: "text-xs text-[var(--foreground)]/60 leading-relaxed mt-1", children: description })
37621
+ ] })
37622
+ ] }),
37623
+ stages.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)("div", { className: "border-t border-[var(--border-color)] px-5 py-4", children: [
37624
+ /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)("p", { className: "text-[11px] font-semibold text-[var(--foreground)]/40 uppercase tracking-wide mb-3", children: [
37625
+ "Stages (",
37626
+ stages.length,
37627
+ ")"
37628
+ ] }),
37629
+ /* @__PURE__ */ (0, import_jsx_runtime128.jsx)("div", { className: "flex flex-col gap-0", children: stages.map((stage, idx) => /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)("div", { className: "flex items-stretch", children: [
37630
+ /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)("div", { className: "flex flex-col items-center mr-3 w-5", children: [
37631
+ /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
37632
+ "div",
37633
+ {
37634
+ className: cn(
37635
+ "w-5 h-5 rounded-full flex items-center justify-center text-[10px] font-bold shrink-0",
37636
+ "bg-[var(--primary-color)]/10 text-[var(--primary-color)] border border-[var(--primary-color)]/30"
37637
+ ),
37638
+ children: idx + 1
37639
+ }
37640
+ ),
37641
+ idx < stages.length - 1 && /* @__PURE__ */ (0, import_jsx_runtime128.jsx)("div", { className: "w-px flex-1 bg-[var(--primary-color)]/20 min-h-[16px]" })
37642
+ ] }),
37643
+ /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)("div", { className: "flex-1 mb-2 p-3 rounded-lg border border-[var(--border-color)] bg-[var(--foreground)]/[0.02]", children: [
37644
+ /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)("div", { className: "flex items-center gap-2", children: [
37645
+ /* @__PURE__ */ (0, import_jsx_runtime128.jsx)("span", { className: "text-xs font-semibold text-[var(--foreground)]", children: stage.name }),
37646
+ /* @__PURE__ */ (0, import_jsx_runtime128.jsx)("span", { className: "text-[10px] font-mono text-[var(--foreground)]/30", children: stage.agent_name })
37647
+ ] }),
37648
+ /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)("div", { className: "flex items-center gap-3 mt-1.5 text-[10px] text-[var(--foreground)]/50", children: [
37649
+ stage.tools && stage.tools.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)("span", { children: [
37650
+ stage.tools.length,
37651
+ " tool",
37652
+ stage.tools.length !== 1 ? "s" : ""
37653
+ ] }),
37654
+ stage.ui_components && stage.ui_components.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)("span", { children: [
37655
+ stage.ui_components.length,
37656
+ " component",
37657
+ stage.ui_components.length !== 1 ? "s" : ""
37658
+ ] })
37659
+ ] })
37660
+ ] })
37661
+ ] }, stage.agent_name || idx)) })
37662
+ ] })
37663
+ ]
37664
+ }
37665
+ );
37666
+ };
37667
+
37668
+ // src/molecules/agent-builder/MultiAgentPlan/MultiAgentPlan.tsx
37669
+ var import_jsx_runtime129 = require("react/jsx-runtime");
37670
+ var MultiAgentPlan = ({
37671
+ stages = [],
37672
+ className
37673
+ }) => {
37674
+ return /* @__PURE__ */ (0, import_jsx_runtime129.jsxs)(
37675
+ "div",
37676
+ {
37677
+ className: cn(
37678
+ "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",
37679
+ className
37680
+ ),
37681
+ children: [
37682
+ /* @__PURE__ */ (0, import_jsx_runtime129.jsx)("div", { className: "px-4 py-3 border-b border-[var(--border-color)] bg-[var(--foreground)]/[0.02]", children: /* @__PURE__ */ (0, import_jsx_runtime129.jsxs)("div", { className: "flex items-center gap-2", children: [
37683
+ /* @__PURE__ */ (0, import_jsx_runtime129.jsx)("div", { className: "w-4 h-4 rounded bg-violet-500/20 flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
37684
+ "svg",
37685
+ {
37686
+ width: "10",
37687
+ height: "10",
37688
+ viewBox: "0 0 24 24",
37689
+ fill: "none",
37690
+ stroke: "currentColor",
37691
+ strokeWidth: "2",
37692
+ className: "text-violet-600",
37693
+ children: /* @__PURE__ */ (0, import_jsx_runtime129.jsx)("path", { d: "M16 3h5v5M4 20L21 3M21 16v5h-5M15 15l6 6M4 4l5 5" })
37694
+ }
37695
+ ) }),
37696
+ /* @__PURE__ */ (0, import_jsx_runtime129.jsx)("span", { className: "text-xs font-semibold text-[var(--foreground)]", children: "Proposed Multi-Agent Workflow" }),
37697
+ /* @__PURE__ */ (0, import_jsx_runtime129.jsx)("span", { className: "text-[10px] px-1.5 py-0.5 rounded-full bg-amber-500/10 text-amber-600 font-medium", children: "Draft" })
37698
+ ] }) }),
37699
+ /* @__PURE__ */ (0, import_jsx_runtime129.jsx)("div", { className: "px-4 py-3", children: /* @__PURE__ */ (0, import_jsx_runtime129.jsx)("div", { className: "flex flex-col gap-0", children: stages.map((stage, idx) => /* @__PURE__ */ (0, import_jsx_runtime129.jsxs)("div", { className: "flex items-stretch", children: [
37700
+ /* @__PURE__ */ (0, import_jsx_runtime129.jsxs)("div", { className: "flex flex-col items-center mr-3 w-6", children: [
37701
+ /* @__PURE__ */ (0, import_jsx_runtime129.jsx)("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 }),
37702
+ idx < stages.length - 1 && /* @__PURE__ */ (0, import_jsx_runtime129.jsx)("div", { className: "w-px flex-1 bg-[var(--primary-color)]/20 min-h-[12px]" })
37703
+ ] }),
37704
+ /* @__PURE__ */ (0, import_jsx_runtime129.jsxs)("div", { className: "flex-1 mb-2 pb-2", children: [
37705
+ /* @__PURE__ */ (0, import_jsx_runtime129.jsx)("p", { className: "text-xs font-semibold text-[var(--foreground)]", children: stage.name }),
37706
+ stage.description && /* @__PURE__ */ (0, import_jsx_runtime129.jsx)("p", { className: "text-[11px] text-[var(--foreground)]/50 mt-0.5", children: stage.description }),
37707
+ stage.proposed_tools && stage.proposed_tools.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime129.jsx)("div", { className: "flex flex-wrap gap-1 mt-1.5", children: stage.proposed_tools.map((tool) => /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
37708
+ "span",
37709
+ {
37710
+ className: "text-[10px] px-1.5 py-0.5 rounded bg-[var(--primary-color)]/10 text-[var(--primary-color)] font-mono",
37711
+ children: tool
37712
+ },
37713
+ tool
37714
+ )) })
37715
+ ] })
37716
+ ] }, stage.name || idx)) }) })
37717
+ ]
37718
+ }
37719
+ );
37720
+ };
37721
+
37722
+ // src/molecules/agent-builder/MultiAgentUISelector/MultiAgentUISelector.tsx
37723
+ var import_react69 = require("react");
37724
+ var import_jsx_runtime130 = require("react/jsx-runtime");
37725
+ var MultiAgentUISelector = ({
37726
+ stages = [],
37727
+ components = [],
37728
+ onSelect,
37729
+ className
37730
+ }) => {
37731
+ const [activeStageId, setActiveStageId] = (0, import_react69.useState)(stages[0]?.id || "");
37732
+ const [selections, setSelections] = (0, import_react69.useState)(
37733
+ () => {
37734
+ const init = {};
37735
+ for (const stage of stages) {
37736
+ init[stage.id] = /* @__PURE__ */ new Set();
37737
+ }
37738
+ return init;
37739
+ }
37740
+ );
37741
+ const [submitted, setSubmitted] = (0, import_react69.useState)(false);
37742
+ const grouped = components.reduce((acc, comp) => {
37743
+ const cat = comp.category || "Other";
37744
+ if (!acc[cat]) acc[cat] = [];
37745
+ acc[cat].push(comp);
37746
+ return acc;
37747
+ }, {});
37748
+ const toggleComponent = (0, import_react69.useCallback)(
37749
+ (stageId, compName) => {
37750
+ if (submitted) return;
37751
+ setSelections((prev) => {
37752
+ const updated = { ...prev };
37753
+ const set = new Set(updated[stageId] || []);
37754
+ if (set.has(compName)) {
37755
+ set.delete(compName);
37756
+ } else {
37757
+ set.add(compName);
37758
+ }
37759
+ updated[stageId] = set;
37760
+ return updated;
37761
+ });
37762
+ },
37763
+ [submitted]
37764
+ );
37765
+ const handleContinue = (0, import_react69.useCallback)(() => {
37766
+ setSubmitted(true);
37767
+ if (onSelect) {
37768
+ const result = {};
37769
+ for (const [stageId, set] of Object.entries(selections)) {
37770
+ result[stageId] = Array.from(set);
37771
+ }
37772
+ onSelect(result);
37773
+ }
37774
+ }, [onSelect, selections]);
37775
+ const activeStage = stages.find((s) => s.id === activeStageId);
37776
+ return /* @__PURE__ */ (0, import_jsx_runtime130.jsxs)(
37777
+ "div",
37778
+ {
37779
+ className: cn(
37780
+ "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",
37781
+ className
37782
+ ),
37783
+ children: [
37784
+ /* @__PURE__ */ (0, import_jsx_runtime130.jsx)("div", { className: "px-4 py-3 border-b border-[var(--border-color)] bg-[var(--foreground)]/[0.02]", children: /* @__PURE__ */ (0, import_jsx_runtime130.jsxs)("div", { className: "flex items-center gap-2", children: [
37785
+ /* @__PURE__ */ (0, import_jsx_runtime130.jsx)("div", { className: "w-4 h-4 rounded bg-[var(--primary-color)]/20 flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime130.jsxs)(
37786
+ "svg",
37787
+ {
37788
+ width: "10",
37789
+ height: "10",
37790
+ viewBox: "0 0 24 24",
37791
+ fill: "none",
37792
+ stroke: "currentColor",
37793
+ strokeWidth: "2",
37794
+ className: "text-[var(--primary-color)]",
37795
+ children: [
37796
+ /* @__PURE__ */ (0, import_jsx_runtime130.jsx)("rect", { x: "3", y: "3", width: "7", height: "7" }),
37797
+ /* @__PURE__ */ (0, import_jsx_runtime130.jsx)("rect", { x: "14", y: "3", width: "7", height: "7" }),
37798
+ /* @__PURE__ */ (0, import_jsx_runtime130.jsx)("rect", { x: "3", y: "14", width: "7", height: "7" }),
37799
+ /* @__PURE__ */ (0, import_jsx_runtime130.jsx)("rect", { x: "14", y: "14", width: "7", height: "7" })
37800
+ ]
37801
+ }
37802
+ ) }),
37803
+ /* @__PURE__ */ (0, import_jsx_runtime130.jsx)("span", { className: "text-xs font-semibold text-[var(--foreground)]", children: "UI Components per Stage" })
37804
+ ] }) }),
37805
+ /* @__PURE__ */ (0, import_jsx_runtime130.jsx)("div", { className: "flex border-b border-[var(--border-color)] px-4", children: stages.map((stage) => /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(
37806
+ "button",
37807
+ {
37808
+ onClick: () => setActiveStageId(stage.id),
37809
+ disabled: submitted,
37810
+ className: cn(
37811
+ "px-3 py-2 text-[11px] font-medium border-b-2 transition-colors",
37812
+ activeStageId === stage.id ? "border-[var(--primary-color)] text-[var(--primary-color)]" : "border-transparent text-[var(--foreground)]/50 hover:text-[var(--foreground)]",
37813
+ submitted && "opacity-60 cursor-default"
37814
+ ),
37815
+ children: stage.name
37816
+ },
37817
+ stage.id
37818
+ )) }),
37819
+ /* @__PURE__ */ (0, import_jsx_runtime130.jsxs)("div", { className: "px-4 py-3", children: [
37820
+ activeStage && /* @__PURE__ */ (0, import_jsx_runtime130.jsxs)("p", { className: "text-[10px] text-[var(--foreground)]/40 mb-3", children: [
37821
+ "Select components for ",
37822
+ /* @__PURE__ */ (0, import_jsx_runtime130.jsx)("strong", { children: activeStage.name }),
37823
+ " (",
37824
+ activeStage.agent_name,
37825
+ ")"
37826
+ ] }),
37827
+ Object.entries(grouped).map(([category, comps]) => /* @__PURE__ */ (0, import_jsx_runtime130.jsxs)("div", { className: "mb-3", children: [
37828
+ /* @__PURE__ */ (0, import_jsx_runtime130.jsx)("p", { className: "text-[10px] font-semibold text-[var(--foreground)]/40 uppercase tracking-wide mb-1.5", children: category }),
37829
+ /* @__PURE__ */ (0, import_jsx_runtime130.jsx)("div", { className: "grid grid-cols-2 gap-1.5", children: comps.map((comp) => {
37830
+ const isSelected = selections[activeStageId]?.has(comp.name) || false;
37831
+ return /* @__PURE__ */ (0, import_jsx_runtime130.jsxs)(
37832
+ "button",
37833
+ {
37834
+ onClick: () => toggleComponent(activeStageId, comp.name),
37835
+ disabled: submitted,
37836
+ className: cn(
37837
+ "text-left p-2.5 rounded-lg border text-[11px] transition-all overflow-hidden",
37838
+ isSelected ? "border-[var(--primary-color)] bg-[var(--primary-color)]/5" : "border-[var(--border-color)] hover:border-[var(--primary-color)]/50",
37839
+ submitted && "opacity-60 cursor-default"
37840
+ ),
37841
+ children: [
37842
+ /* @__PURE__ */ (0, import_jsx_runtime130.jsxs)("div", { className: "flex items-center gap-1.5", children: [
37843
+ /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(
37844
+ "div",
37845
+ {
37846
+ className: cn(
37847
+ "w-3.5 h-3.5 rounded border flex items-center justify-center shrink-0",
37848
+ isSelected ? "bg-[var(--primary-color)] border-[var(--primary-color)]" : "border-[var(--foreground)]/20"
37849
+ ),
37850
+ children: isSelected && /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(
37851
+ "svg",
37852
+ {
37853
+ width: "8",
37854
+ height: "8",
37855
+ viewBox: "0 0 24 24",
37856
+ fill: "none",
37857
+ stroke: "white",
37858
+ strokeWidth: "3",
37859
+ children: /* @__PURE__ */ (0, import_jsx_runtime130.jsx)("polyline", { points: "20 6 9 17 4 12" })
37860
+ }
37861
+ )
37862
+ }
37863
+ ),
37864
+ /* @__PURE__ */ (0, import_jsx_runtime130.jsx)("span", { className: "font-medium text-[var(--foreground)]", children: comp.display_name })
37865
+ ] }),
37866
+ /* @__PURE__ */ (0, import_jsx_runtime130.jsx)("p", { className: "text-[10px] text-[var(--foreground)]/40 mt-0.5 ml-5 whitespace-normal", children: comp.description })
37867
+ ]
37868
+ },
37869
+ comp.name
37870
+ );
37871
+ }) })
37872
+ ] }, category))
37873
+ ] }),
37874
+ !submitted && /* @__PURE__ */ (0, import_jsx_runtime130.jsx)("div", { className: "px-4 pb-3", children: /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(
37875
+ "button",
37876
+ {
37877
+ onClick: handleContinue,
37878
+ className: "w-full py-2 rounded-lg bg-[var(--primary-color)] text-white text-xs font-medium hover:opacity-90 transition-opacity",
37879
+ children: "Continue"
37880
+ }
37881
+ ) }),
37882
+ submitted && /* @__PURE__ */ (0, import_jsx_runtime130.jsx)("div", { className: "px-4 pb-3", children: /* @__PURE__ */ (0, import_jsx_runtime130.jsx)("div", { className: "text-[10px] text-emerald-600 font-medium text-center py-1.5 ", children: "Selections confirmed" }) })
37883
+ ]
37884
+ }
37885
+ );
37886
+ };
37887
+
37888
+ // src/molecules/agent-builder/StageIndicator/StageIndicator.tsx
37889
+ var import_jsx_runtime131 = require("react/jsx-runtime");
37890
+ var StageIndicator = ({
37891
+ stage_name,
37892
+ agent_name,
37893
+ className
37894
+ }) => {
37895
+ return /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)(
37896
+ "div",
37897
+ {
37898
+ className: cn(
37899
+ "flex items-center gap-3 my-4",
37900
+ className
37901
+ ),
37902
+ children: [
37903
+ /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("div", { className: "flex-1 h-px bg-[var(--border-color)]" }),
37904
+ /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)("div", { className: "flex items-center gap-1.5 px-3 py-1 rounded-full bg-violet-500/10 border border-violet-500/20", children: [
37905
+ /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("div", { className: "w-1.5 h-1.5 rounded-full bg-violet-500 animate-pulse" }),
37906
+ /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("span", { className: "text-[10px] font-medium text-violet-600", children: stage_name || agent_name })
37907
+ ] }),
37908
+ /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("div", { className: "flex-1 h-px bg-[var(--border-color)]" })
37909
+ ]
37910
+ }
37911
+ );
37912
+ };
37913
+
37478
37914
  // src/components/ui/index.ts
37479
37915
  var ui_exports = {};
37480
37916
  __export(ui_exports, {
@@ -37767,7 +38203,7 @@ __export(ui_exports, {
37767
38203
  // src/components/ui/button-group.tsx
37768
38204
  var import_react_slot4 = require("@radix-ui/react-slot");
37769
38205
  var import_class_variance_authority8 = require("class-variance-authority");
37770
- var import_jsx_runtime127 = require("react/jsx-runtime");
38206
+ var import_jsx_runtime132 = require("react/jsx-runtime");
37771
38207
  var buttonGroupVariants = (0, import_class_variance_authority8.cva)(
37772
38208
  "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",
37773
38209
  {
@@ -37787,7 +38223,7 @@ function ButtonGroup({
37787
38223
  orientation,
37788
38224
  ...props
37789
38225
  }) {
37790
- return /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(
38226
+ return /* @__PURE__ */ (0, import_jsx_runtime132.jsx)(
37791
38227
  "div",
37792
38228
  {
37793
38229
  role: "group",
@@ -37804,7 +38240,7 @@ function ButtonGroupText({
37804
38240
  ...props
37805
38241
  }) {
37806
38242
  const Comp = asChild ? import_react_slot4.Slot : "div";
37807
- return /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(
38243
+ return /* @__PURE__ */ (0, import_jsx_runtime132.jsx)(
37808
38244
  Comp,
37809
38245
  {
37810
38246
  className: cn(
@@ -37820,7 +38256,7 @@ function ButtonGroupSeparator({
37820
38256
  orientation = "vertical",
37821
38257
  ...props
37822
38258
  }) {
37823
- return /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(
38259
+ return /* @__PURE__ */ (0, import_jsx_runtime132.jsx)(
37824
38260
  Separator2,
37825
38261
  {
37826
38262
  "data-slot": "button-group-separator",
@@ -37836,9 +38272,9 @@ function ButtonGroupSeparator({
37836
38272
 
37837
38273
  // src/components/ui/empty.tsx
37838
38274
  var import_class_variance_authority9 = require("class-variance-authority");
37839
- var import_jsx_runtime128 = require("react/jsx-runtime");
38275
+ var import_jsx_runtime133 = require("react/jsx-runtime");
37840
38276
  function Empty({ className, ...props }) {
37841
- return /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
38277
+ return /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
37842
38278
  "div",
37843
38279
  {
37844
38280
  "data-slot": "empty",
@@ -37851,7 +38287,7 @@ function Empty({ className, ...props }) {
37851
38287
  );
37852
38288
  }
37853
38289
  function EmptyHeader({ className, ...props }) {
37854
- return /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
38290
+ return /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
37855
38291
  "div",
37856
38292
  {
37857
38293
  "data-slot": "empty-header",
@@ -37882,7 +38318,7 @@ function EmptyMedia({
37882
38318
  variant = "default",
37883
38319
  ...props
37884
38320
  }) {
37885
- return /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
38321
+ return /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
37886
38322
  "div",
37887
38323
  {
37888
38324
  "data-slot": "empty-icon",
@@ -37893,7 +38329,7 @@ function EmptyMedia({
37893
38329
  );
37894
38330
  }
37895
38331
  function EmptyTitle({ className, ...props }) {
37896
- return /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
38332
+ return /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
37897
38333
  "div",
37898
38334
  {
37899
38335
  "data-slot": "empty-title",
@@ -37903,7 +38339,7 @@ function EmptyTitle({ className, ...props }) {
37903
38339
  );
37904
38340
  }
37905
38341
  function EmptyDescription({ className, ...props }) {
37906
- return /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
38342
+ return /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
37907
38343
  "div",
37908
38344
  {
37909
38345
  "data-slot": "empty-description",
@@ -37916,7 +38352,7 @@ function EmptyDescription({ className, ...props }) {
37916
38352
  );
37917
38353
  }
37918
38354
  function EmptyContent({ className, ...props }) {
37919
- return /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
38355
+ return /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
37920
38356
  "div",
37921
38357
  {
37922
38358
  "data-slot": "empty-content",
@@ -37930,11 +38366,11 @@ function EmptyContent({ className, ...props }) {
37930
38366
  }
37931
38367
 
37932
38368
  // src/components/ui/field.tsx
37933
- var import_react68 = require("react");
38369
+ var import_react70 = require("react");
37934
38370
  var import_class_variance_authority10 = require("class-variance-authority");
37935
- var import_jsx_runtime129 = require("react/jsx-runtime");
38371
+ var import_jsx_runtime134 = require("react/jsx-runtime");
37936
38372
  function FieldSet({ className, ...props }) {
37937
- return /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
38373
+ return /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(
37938
38374
  "fieldset",
37939
38375
  {
37940
38376
  "data-slot": "field-set",
@@ -37952,7 +38388,7 @@ function FieldLegend({
37952
38388
  variant = "legend",
37953
38389
  ...props
37954
38390
  }) {
37955
- return /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
38391
+ return /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(
37956
38392
  "legend",
37957
38393
  {
37958
38394
  "data-slot": "field-legend",
@@ -37968,7 +38404,7 @@ function FieldLegend({
37968
38404
  );
37969
38405
  }
37970
38406
  function FieldGroup({ className, ...props }) {
37971
- return /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
38407
+ return /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(
37972
38408
  "div",
37973
38409
  {
37974
38410
  "data-slot": "field-group",
@@ -38008,7 +38444,7 @@ function Field({
38008
38444
  orientation = "vertical",
38009
38445
  ...props
38010
38446
  }) {
38011
- return /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
38447
+ return /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(
38012
38448
  "div",
38013
38449
  {
38014
38450
  role: "group",
@@ -38020,7 +38456,7 @@ function Field({
38020
38456
  );
38021
38457
  }
38022
38458
  function FieldContent({ className, ...props }) {
38023
- return /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
38459
+ return /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(
38024
38460
  "div",
38025
38461
  {
38026
38462
  "data-slot": "field-content",
@@ -38036,7 +38472,7 @@ function FieldLabel({
38036
38472
  className,
38037
38473
  ...props
38038
38474
  }) {
38039
- return /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
38475
+ return /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(
38040
38476
  Label,
38041
38477
  {
38042
38478
  "data-slot": "field-label",
@@ -38051,7 +38487,7 @@ function FieldLabel({
38051
38487
  );
38052
38488
  }
38053
38489
  function FieldTitle({ className, ...props }) {
38054
- return /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
38490
+ return /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(
38055
38491
  "div",
38056
38492
  {
38057
38493
  "data-slot": "field-label",
@@ -38064,7 +38500,7 @@ function FieldTitle({ className, ...props }) {
38064
38500
  );
38065
38501
  }
38066
38502
  function FieldDescription({ className, ...props }) {
38067
- return /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
38503
+ return /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(
38068
38504
  "p",
38069
38505
  {
38070
38506
  "data-slot": "field-description",
@@ -38083,7 +38519,7 @@ function FieldSeparator({
38083
38519
  className,
38084
38520
  ...props
38085
38521
  }) {
38086
- return /* @__PURE__ */ (0, import_jsx_runtime129.jsxs)(
38522
+ return /* @__PURE__ */ (0, import_jsx_runtime134.jsxs)(
38087
38523
  "div",
38088
38524
  {
38089
38525
  "data-slot": "field-separator",
@@ -38094,8 +38530,8 @@ function FieldSeparator({
38094
38530
  ),
38095
38531
  ...props,
38096
38532
  children: [
38097
- /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(Separator2, { className: "absolute inset-0 top-1/2" }),
38098
- children && /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
38533
+ /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(Separator2, { className: "absolute inset-0 top-1/2" }),
38534
+ children && /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(
38099
38535
  "span",
38100
38536
  {
38101
38537
  className: "bg-background text-muted-foreground relative mx-auto block w-fit px-2",
@@ -38113,7 +38549,7 @@ function FieldError({
38113
38549
  errors,
38114
38550
  ...props
38115
38551
  }) {
38116
- const content = (0, import_react68.useMemo)(() => {
38552
+ const content = (0, import_react70.useMemo)(() => {
38117
38553
  if (children) {
38118
38554
  return children;
38119
38555
  }
@@ -38123,14 +38559,14 @@ function FieldError({
38123
38559
  if (errors?.length === 1 && errors[0]?.message) {
38124
38560
  return errors[0].message;
38125
38561
  }
38126
- return /* @__PURE__ */ (0, import_jsx_runtime129.jsx)("ul", { className: "ml-4 flex list-disc flex-col gap-1", children: errors.map(
38127
- (error, index) => error?.message && /* @__PURE__ */ (0, import_jsx_runtime129.jsx)("li", { children: error.message }, index)
38562
+ return /* @__PURE__ */ (0, import_jsx_runtime134.jsx)("ul", { className: "ml-4 flex list-disc flex-col gap-1", children: errors.map(
38563
+ (error, index) => error?.message && /* @__PURE__ */ (0, import_jsx_runtime134.jsx)("li", { children: error.message }, index)
38128
38564
  ) });
38129
38565
  }, [children, errors]);
38130
38566
  if (!content) {
38131
38567
  return null;
38132
38568
  }
38133
- return /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
38569
+ return /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(
38134
38570
  "div",
38135
38571
  {
38136
38572
  role: "alert",
@@ -38144,9 +38580,9 @@ function FieldError({
38144
38580
 
38145
38581
  // src/components/ui/input-group.tsx
38146
38582
  var import_class_variance_authority11 = require("class-variance-authority");
38147
- var import_jsx_runtime130 = require("react/jsx-runtime");
38583
+ var import_jsx_runtime135 = require("react/jsx-runtime");
38148
38584
  function InputGroup({ className, ...props }) {
38149
- return /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(
38585
+ return /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(
38150
38586
  "div",
38151
38587
  {
38152
38588
  "data-slot": "input-group",
@@ -38190,7 +38626,7 @@ function InputGroupAddon({
38190
38626
  align = "inline-start",
38191
38627
  ...props
38192
38628
  }) {
38193
- return /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(
38629
+ return /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(
38194
38630
  "div",
38195
38631
  {
38196
38632
  role: "group",
@@ -38230,7 +38666,7 @@ function InputGroupButton({
38230
38666
  size = "xs",
38231
38667
  ...props
38232
38668
  }) {
38233
- return /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(
38669
+ return /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(
38234
38670
  Button,
38235
38671
  {
38236
38672
  type,
@@ -38242,7 +38678,7 @@ function InputGroupButton({
38242
38678
  );
38243
38679
  }
38244
38680
  function InputGroupText({ className, ...props }) {
38245
- return /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(
38681
+ return /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(
38246
38682
  "span",
38247
38683
  {
38248
38684
  className: cn(
@@ -38257,7 +38693,7 @@ function InputGroupInput({
38257
38693
  className,
38258
38694
  ...props
38259
38695
  }) {
38260
- return /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(
38696
+ return /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(
38261
38697
  Input,
38262
38698
  {
38263
38699
  "data-slot": "input-group-control",
@@ -38273,7 +38709,7 @@ function InputGroupTextarea({
38273
38709
  className,
38274
38710
  ...props
38275
38711
  }) {
38276
- return /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(
38712
+ return /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(
38277
38713
  Textarea,
38278
38714
  {
38279
38715
  "data-slot": "input-group-control",
@@ -38289,9 +38725,9 @@ function InputGroupTextarea({
38289
38725
  // src/components/ui/item.tsx
38290
38726
  var import_react_slot5 = require("@radix-ui/react-slot");
38291
38727
  var import_class_variance_authority12 = require("class-variance-authority");
38292
- var import_jsx_runtime131 = require("react/jsx-runtime");
38728
+ var import_jsx_runtime136 = require("react/jsx-runtime");
38293
38729
  function ItemGroup({ className, ...props }) {
38294
- return /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
38730
+ return /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(
38295
38731
  "div",
38296
38732
  {
38297
38733
  role: "list",
@@ -38305,7 +38741,7 @@ function ItemSeparator({
38305
38741
  className,
38306
38742
  ...props
38307
38743
  }) {
38308
- return /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
38744
+ return /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(
38309
38745
  Separator2,
38310
38746
  {
38311
38747
  "data-slot": "item-separator",
@@ -38343,7 +38779,7 @@ function Item8({
38343
38779
  ...props
38344
38780
  }) {
38345
38781
  const Comp = asChild ? import_react_slot5.Slot : "div";
38346
- return /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
38782
+ return /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(
38347
38783
  Comp,
38348
38784
  {
38349
38785
  "data-slot": "item",
@@ -38374,7 +38810,7 @@ function ItemMedia({
38374
38810
  variant = "default",
38375
38811
  ...props
38376
38812
  }) {
38377
- return /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
38813
+ return /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(
38378
38814
  "div",
38379
38815
  {
38380
38816
  "data-slot": "item-media",
@@ -38385,7 +38821,7 @@ function ItemMedia({
38385
38821
  );
38386
38822
  }
38387
38823
  function ItemContent({ className, ...props }) {
38388
- return /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
38824
+ return /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(
38389
38825
  "div",
38390
38826
  {
38391
38827
  "data-slot": "item-content",
@@ -38398,7 +38834,7 @@ function ItemContent({ className, ...props }) {
38398
38834
  );
38399
38835
  }
38400
38836
  function ItemTitle({ className, ...props }) {
38401
- return /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
38837
+ return /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(
38402
38838
  "div",
38403
38839
  {
38404
38840
  "data-slot": "item-title",
@@ -38411,7 +38847,7 @@ function ItemTitle({ className, ...props }) {
38411
38847
  );
38412
38848
  }
38413
38849
  function ItemDescription({ className, ...props }) {
38414
- return /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
38850
+ return /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(
38415
38851
  "p",
38416
38852
  {
38417
38853
  "data-slot": "item-description",
@@ -38425,7 +38861,7 @@ function ItemDescription({ className, ...props }) {
38425
38861
  );
38426
38862
  }
38427
38863
  function ItemActions({ className, ...props }) {
38428
- return /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
38864
+ return /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(
38429
38865
  "div",
38430
38866
  {
38431
38867
  "data-slot": "item-actions",
@@ -38435,7 +38871,7 @@ function ItemActions({ className, ...props }) {
38435
38871
  );
38436
38872
  }
38437
38873
  function ItemHeader({ className, ...props }) {
38438
- return /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
38874
+ return /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(
38439
38875
  "div",
38440
38876
  {
38441
38877
  "data-slot": "item-header",
@@ -38448,7 +38884,7 @@ function ItemHeader({ className, ...props }) {
38448
38884
  );
38449
38885
  }
38450
38886
  function ItemFooter({ className, ...props }) {
38451
- return /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
38887
+ return /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(
38452
38888
  "div",
38453
38889
  {
38454
38890
  "data-slot": "item-footer",
@@ -38462,9 +38898,9 @@ function ItemFooter({ className, ...props }) {
38462
38898
  }
38463
38899
 
38464
38900
  // src/components/ui/kbd.tsx
38465
- var import_jsx_runtime132 = require("react/jsx-runtime");
38901
+ var import_jsx_runtime137 = require("react/jsx-runtime");
38466
38902
  function Kbd({ className, ...props }) {
38467
- return /* @__PURE__ */ (0, import_jsx_runtime132.jsx)(
38903
+ return /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(
38468
38904
  "kbd",
38469
38905
  {
38470
38906
  "data-slot": "kbd",
@@ -38479,7 +38915,7 @@ function Kbd({ className, ...props }) {
38479
38915
  );
38480
38916
  }
38481
38917
  function KbdGroup({ className, ...props }) {
38482
- return /* @__PURE__ */ (0, import_jsx_runtime132.jsx)(
38918
+ return /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(
38483
38919
  "kbd",
38484
38920
  {
38485
38921
  "data-slot": "kbd-group",
@@ -38490,16 +38926,16 @@ function KbdGroup({ className, ...props }) {
38490
38926
  }
38491
38927
 
38492
38928
  // src/components/ui/sidebar.tsx
38493
- var React99 = __toESM(require("react"), 1);
38929
+ var React100 = __toESM(require("react"), 1);
38494
38930
  var import_react_slot6 = require("@radix-ui/react-slot");
38495
38931
  var import_class_variance_authority13 = require("class-variance-authority");
38496
38932
 
38497
38933
  // src/hooks/use-mobile.tsx
38498
- var React98 = __toESM(require("react"), 1);
38934
+ var React99 = __toESM(require("react"), 1);
38499
38935
  var MOBILE_BREAKPOINT = 768;
38500
38936
  function useIsMobile() {
38501
- const [isMobile, setIsMobile] = React98.useState(void 0);
38502
- React98.useEffect(() => {
38937
+ const [isMobile, setIsMobile] = React99.useState(void 0);
38938
+ React99.useEffect(() => {
38503
38939
  const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);
38504
38940
  const onChange = () => {
38505
38941
  setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
@@ -38512,22 +38948,22 @@ function useIsMobile() {
38512
38948
  }
38513
38949
 
38514
38950
  // src/components/ui/sidebar.tsx
38515
- var import_jsx_runtime133 = require("react/jsx-runtime");
38951
+ var import_jsx_runtime138 = require("react/jsx-runtime");
38516
38952
  var SIDEBAR_COOKIE_NAME = "sidebar_state";
38517
38953
  var SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;
38518
38954
  var SIDEBAR_WIDTH = "16rem";
38519
38955
  var SIDEBAR_WIDTH_MOBILE = "18rem";
38520
38956
  var SIDEBAR_WIDTH_ICON = "3rem";
38521
38957
  var SIDEBAR_KEYBOARD_SHORTCUT = "b";
38522
- var SidebarContext = React99.createContext(null);
38958
+ var SidebarContext = React100.createContext(null);
38523
38959
  function useSidebar() {
38524
- const context = React99.useContext(SidebarContext);
38960
+ const context = React100.useContext(SidebarContext);
38525
38961
  if (!context) {
38526
38962
  throw new Error("useSidebar must be used within a SidebarProvider.");
38527
38963
  }
38528
38964
  return context;
38529
38965
  }
38530
- var SidebarProvider = React99.forwardRef(
38966
+ var SidebarProvider = React100.forwardRef(
38531
38967
  ({
38532
38968
  defaultOpen = true,
38533
38969
  open: openProp,
@@ -38538,10 +38974,10 @@ var SidebarProvider = React99.forwardRef(
38538
38974
  ...props
38539
38975
  }, ref) => {
38540
38976
  const isMobile = useIsMobile();
38541
- const [openMobile, setOpenMobile] = React99.useState(false);
38542
- const [_open, _setOpen] = React99.useState(defaultOpen);
38977
+ const [openMobile, setOpenMobile] = React100.useState(false);
38978
+ const [_open, _setOpen] = React100.useState(defaultOpen);
38543
38979
  const open = openProp ?? _open;
38544
- const setOpen = React99.useCallback(
38980
+ const setOpen = React100.useCallback(
38545
38981
  (value) => {
38546
38982
  const openState = typeof value === "function" ? value(open) : value;
38547
38983
  if (setOpenProp) {
@@ -38553,10 +38989,10 @@ var SidebarProvider = React99.forwardRef(
38553
38989
  },
38554
38990
  [setOpenProp, open]
38555
38991
  );
38556
- const toggleSidebar = React99.useCallback(() => {
38992
+ const toggleSidebar = React100.useCallback(() => {
38557
38993
  return isMobile ? setOpenMobile((open2) => !open2) : setOpen((open2) => !open2);
38558
38994
  }, [isMobile, setOpen, setOpenMobile]);
38559
- React99.useEffect(() => {
38995
+ React100.useEffect(() => {
38560
38996
  const handleKeyDown = (event) => {
38561
38997
  if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {
38562
38998
  event.preventDefault();
@@ -38567,7 +39003,7 @@ var SidebarProvider = React99.forwardRef(
38567
39003
  return () => window.removeEventListener("keydown", handleKeyDown);
38568
39004
  }, [toggleSidebar]);
38569
39005
  const state = open ? "expanded" : "collapsed";
38570
- const contextValue = React99.useMemo(
39006
+ const contextValue = React100.useMemo(
38571
39007
  () => ({
38572
39008
  state,
38573
39009
  open,
@@ -38579,7 +39015,7 @@ var SidebarProvider = React99.forwardRef(
38579
39015
  }),
38580
39016
  [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]
38581
39017
  );
38582
- return /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(SidebarContext.Provider, { value: contextValue, children: /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(TooltipProvider, { delayDuration: 0, children: /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
39018
+ return /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(SidebarContext.Provider, { value: contextValue, children: /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(TooltipProvider, { delayDuration: 0, children: /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(
38583
39019
  "div",
38584
39020
  {
38585
39021
  style: {
@@ -38599,7 +39035,7 @@ var SidebarProvider = React99.forwardRef(
38599
39035
  }
38600
39036
  );
38601
39037
  SidebarProvider.displayName = "SidebarProvider";
38602
- var Sidebar = React99.forwardRef(
39038
+ var Sidebar = React100.forwardRef(
38603
39039
  ({
38604
39040
  side = "left",
38605
39041
  variant = "sidebar",
@@ -38610,7 +39046,7 @@ var Sidebar = React99.forwardRef(
38610
39046
  }, ref) => {
38611
39047
  const { isMobile, state, openMobile, setOpenMobile } = useSidebar();
38612
39048
  if (collapsible === "none") {
38613
- return /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
39049
+ return /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(
38614
39050
  "div",
38615
39051
  {
38616
39052
  className: cn(
@@ -38624,7 +39060,7 @@ var Sidebar = React99.forwardRef(
38624
39060
  );
38625
39061
  }
38626
39062
  if (isMobile) {
38627
- return /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(Sheet2, { open: openMobile, onOpenChange: setOpenMobile, ...props, children: /* @__PURE__ */ (0, import_jsx_runtime133.jsxs)(
39063
+ return /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(Sheet2, { open: openMobile, onOpenChange: setOpenMobile, ...props, children: /* @__PURE__ */ (0, import_jsx_runtime138.jsxs)(
38628
39064
  SheetContent,
38629
39065
  {
38630
39066
  "data-sidebar": "sidebar",
@@ -38635,16 +39071,16 @@ var Sidebar = React99.forwardRef(
38635
39071
  },
38636
39072
  side,
38637
39073
  children: [
38638
- /* @__PURE__ */ (0, import_jsx_runtime133.jsxs)(SheetHeader, { className: "sr-only", children: [
38639
- /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(SheetTitle, { children: "Sidebar" }),
38640
- /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(SheetDescription, { children: "Displays the mobile sidebar." })
39074
+ /* @__PURE__ */ (0, import_jsx_runtime138.jsxs)(SheetHeader, { className: "sr-only", children: [
39075
+ /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(SheetTitle, { children: "Sidebar" }),
39076
+ /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(SheetDescription, { children: "Displays the mobile sidebar." })
38641
39077
  ] }),
38642
- /* @__PURE__ */ (0, import_jsx_runtime133.jsx)("div", { className: "flex h-full w-full flex-col", children })
39078
+ /* @__PURE__ */ (0, import_jsx_runtime138.jsx)("div", { className: "flex h-full w-full flex-col", children })
38643
39079
  ]
38644
39080
  }
38645
39081
  ) });
38646
39082
  }
38647
- return /* @__PURE__ */ (0, import_jsx_runtime133.jsxs)(
39083
+ return /* @__PURE__ */ (0, import_jsx_runtime138.jsxs)(
38648
39084
  "div",
38649
39085
  {
38650
39086
  ref,
@@ -38654,7 +39090,7 @@ var Sidebar = React99.forwardRef(
38654
39090
  "data-variant": variant,
38655
39091
  "data-side": side,
38656
39092
  children: [
38657
- /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
39093
+ /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(
38658
39094
  "div",
38659
39095
  {
38660
39096
  className: cn(
@@ -38665,7 +39101,7 @@ var Sidebar = React99.forwardRef(
38665
39101
  )
38666
39102
  }
38667
39103
  ),
38668
- /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
39104
+ /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(
38669
39105
  "div",
38670
39106
  {
38671
39107
  className: cn(
@@ -38676,7 +39112,7 @@ var Sidebar = React99.forwardRef(
38676
39112
  className
38677
39113
  ),
38678
39114
  ...props,
38679
- children: /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
39115
+ children: /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(
38680
39116
  "div",
38681
39117
  {
38682
39118
  "data-sidebar": "sidebar",
@@ -38692,9 +39128,9 @@ var Sidebar = React99.forwardRef(
38692
39128
  }
38693
39129
  );
38694
39130
  Sidebar.displayName = "Sidebar";
38695
- var SidebarTrigger = React99.forwardRef(({ className, onClick, ...props }, ref) => {
39131
+ var SidebarTrigger = React100.forwardRef(({ className, onClick, ...props }, ref) => {
38696
39132
  const { toggleSidebar } = useSidebar();
38697
- return /* @__PURE__ */ (0, import_jsx_runtime133.jsxs)(
39133
+ return /* @__PURE__ */ (0, import_jsx_runtime138.jsxs)(
38698
39134
  Button,
38699
39135
  {
38700
39136
  ref,
@@ -38708,16 +39144,16 @@ var SidebarTrigger = React99.forwardRef(({ className, onClick, ...props }, ref)
38708
39144
  },
38709
39145
  ...props,
38710
39146
  children: [
38711
- /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(PanelLeft, {}),
38712
- /* @__PURE__ */ (0, import_jsx_runtime133.jsx)("span", { className: "sr-only", children: "Toggle Sidebar" })
39147
+ /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(PanelLeft, {}),
39148
+ /* @__PURE__ */ (0, import_jsx_runtime138.jsx)("span", { className: "sr-only", children: "Toggle Sidebar" })
38713
39149
  ]
38714
39150
  }
38715
39151
  );
38716
39152
  });
38717
39153
  SidebarTrigger.displayName = "SidebarTrigger";
38718
- var SidebarRail = React99.forwardRef(({ className, ...props }, ref) => {
39154
+ var SidebarRail = React100.forwardRef(({ className, ...props }, ref) => {
38719
39155
  const { toggleSidebar } = useSidebar();
38720
- return /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
39156
+ return /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(
38721
39157
  "button",
38722
39158
  {
38723
39159
  ref,
@@ -38740,8 +39176,8 @@ var SidebarRail = React99.forwardRef(({ className, ...props }, ref) => {
38740
39176
  );
38741
39177
  });
38742
39178
  SidebarRail.displayName = "SidebarRail";
38743
- var SidebarInset = React99.forwardRef(({ className, ...props }, ref) => {
38744
- return /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
39179
+ var SidebarInset = React100.forwardRef(({ className, ...props }, ref) => {
39180
+ return /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(
38745
39181
  "main",
38746
39182
  {
38747
39183
  ref,
@@ -38755,8 +39191,8 @@ var SidebarInset = React99.forwardRef(({ className, ...props }, ref) => {
38755
39191
  );
38756
39192
  });
38757
39193
  SidebarInset.displayName = "SidebarInset";
38758
- var SidebarInput = React99.forwardRef(({ className, ...props }, ref) => {
38759
- return /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
39194
+ var SidebarInput = React100.forwardRef(({ className, ...props }, ref) => {
39195
+ return /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(
38760
39196
  Input,
38761
39197
  {
38762
39198
  ref,
@@ -38770,8 +39206,8 @@ var SidebarInput = React99.forwardRef(({ className, ...props }, ref) => {
38770
39206
  );
38771
39207
  });
38772
39208
  SidebarInput.displayName = "SidebarInput";
38773
- var SidebarHeader = React99.forwardRef(({ className, ...props }, ref) => {
38774
- return /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
39209
+ var SidebarHeader = React100.forwardRef(({ className, ...props }, ref) => {
39210
+ return /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(
38775
39211
  "div",
38776
39212
  {
38777
39213
  ref,
@@ -38782,8 +39218,8 @@ var SidebarHeader = React99.forwardRef(({ className, ...props }, ref) => {
38782
39218
  );
38783
39219
  });
38784
39220
  SidebarHeader.displayName = "SidebarHeader";
38785
- var SidebarFooter = React99.forwardRef(({ className, ...props }, ref) => {
38786
- return /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
39221
+ var SidebarFooter = React100.forwardRef(({ className, ...props }, ref) => {
39222
+ return /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(
38787
39223
  "div",
38788
39224
  {
38789
39225
  ref,
@@ -38794,8 +39230,8 @@ var SidebarFooter = React99.forwardRef(({ className, ...props }, ref) => {
38794
39230
  );
38795
39231
  });
38796
39232
  SidebarFooter.displayName = "SidebarFooter";
38797
- var SidebarSeparator = React99.forwardRef(({ className, ...props }, ref) => {
38798
- return /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
39233
+ var SidebarSeparator = React100.forwardRef(({ className, ...props }, ref) => {
39234
+ return /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(
38799
39235
  Separator2,
38800
39236
  {
38801
39237
  ref,
@@ -38806,8 +39242,8 @@ var SidebarSeparator = React99.forwardRef(({ className, ...props }, ref) => {
38806
39242
  );
38807
39243
  });
38808
39244
  SidebarSeparator.displayName = "SidebarSeparator";
38809
- var SidebarContent = React99.forwardRef(({ className, ...props }, ref) => {
38810
- return /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
39245
+ var SidebarContent = React100.forwardRef(({ className, ...props }, ref) => {
39246
+ return /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(
38811
39247
  "div",
38812
39248
  {
38813
39249
  ref,
@@ -38821,8 +39257,8 @@ var SidebarContent = React99.forwardRef(({ className, ...props }, ref) => {
38821
39257
  );
38822
39258
  });
38823
39259
  SidebarContent.displayName = "SidebarContent";
38824
- var SidebarGroup = React99.forwardRef(({ className, ...props }, ref) => {
38825
- return /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
39260
+ var SidebarGroup = React100.forwardRef(({ className, ...props }, ref) => {
39261
+ return /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(
38826
39262
  "div",
38827
39263
  {
38828
39264
  ref,
@@ -38833,9 +39269,9 @@ var SidebarGroup = React99.forwardRef(({ className, ...props }, ref) => {
38833
39269
  );
38834
39270
  });
38835
39271
  SidebarGroup.displayName = "SidebarGroup";
38836
- var SidebarGroupLabel = React99.forwardRef(({ className, asChild = false, ...props }, ref) => {
39272
+ var SidebarGroupLabel = React100.forwardRef(({ className, asChild = false, ...props }, ref) => {
38837
39273
  const Comp = asChild ? import_react_slot6.Slot : "div";
38838
- return /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
39274
+ return /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(
38839
39275
  Comp,
38840
39276
  {
38841
39277
  ref,
@@ -38850,9 +39286,9 @@ var SidebarGroupLabel = React99.forwardRef(({ className, asChild = false, ...pro
38850
39286
  );
38851
39287
  });
38852
39288
  SidebarGroupLabel.displayName = "SidebarGroupLabel";
38853
- var SidebarGroupAction = React99.forwardRef(({ className, asChild = false, ...props }, ref) => {
39289
+ var SidebarGroupAction = React100.forwardRef(({ className, asChild = false, ...props }, ref) => {
38854
39290
  const Comp = asChild ? import_react_slot6.Slot : "button";
38855
- return /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
39291
+ return /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(
38856
39292
  Comp,
38857
39293
  {
38858
39294
  ref,
@@ -38869,7 +39305,7 @@ var SidebarGroupAction = React99.forwardRef(({ className, asChild = false, ...pr
38869
39305
  );
38870
39306
  });
38871
39307
  SidebarGroupAction.displayName = "SidebarGroupAction";
38872
- var SidebarGroupContent = React99.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
39308
+ var SidebarGroupContent = React100.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(
38873
39309
  "div",
38874
39310
  {
38875
39311
  ref,
@@ -38879,7 +39315,7 @@ var SidebarGroupContent = React99.forwardRef(({ className, ...props }, ref) => /
38879
39315
  }
38880
39316
  ));
38881
39317
  SidebarGroupContent.displayName = "SidebarGroupContent";
38882
- var SidebarMenu = React99.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
39318
+ var SidebarMenu = React100.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(
38883
39319
  "ul",
38884
39320
  {
38885
39321
  ref,
@@ -38889,7 +39325,7 @@ var SidebarMenu = React99.forwardRef(({ className, ...props }, ref) => /* @__PUR
38889
39325
  }
38890
39326
  ));
38891
39327
  SidebarMenu.displayName = "SidebarMenu";
38892
- var SidebarMenuItem = React99.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
39328
+ var SidebarMenuItem = React100.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(
38893
39329
  "li",
38894
39330
  {
38895
39331
  ref,
@@ -38919,7 +39355,7 @@ var sidebarMenuButtonVariants = (0, import_class_variance_authority13.cva)(
38919
39355
  }
38920
39356
  }
38921
39357
  );
38922
- var SidebarMenuButton = React99.forwardRef(
39358
+ var SidebarMenuButton = React100.forwardRef(
38923
39359
  ({
38924
39360
  asChild = false,
38925
39361
  isActive = false,
@@ -38931,7 +39367,7 @@ var SidebarMenuButton = React99.forwardRef(
38931
39367
  }, ref) => {
38932
39368
  const Comp = asChild ? import_react_slot6.Slot : "button";
38933
39369
  const { isMobile, state } = useSidebar();
38934
- const button = /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
39370
+ const button = /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(
38935
39371
  Comp,
38936
39372
  {
38937
39373
  ref,
@@ -38950,9 +39386,9 @@ var SidebarMenuButton = React99.forwardRef(
38950
39386
  children: tooltip
38951
39387
  };
38952
39388
  }
38953
- return /* @__PURE__ */ (0, import_jsx_runtime133.jsxs)(Tooltip, { children: [
38954
- /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(TooltipTrigger, { asChild: true, children: button }),
38955
- /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
39389
+ return /* @__PURE__ */ (0, import_jsx_runtime138.jsxs)(Tooltip, { children: [
39390
+ /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(TooltipTrigger, { asChild: true, children: button }),
39391
+ /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(
38956
39392
  TooltipContent,
38957
39393
  {
38958
39394
  side: "right",
@@ -38965,9 +39401,9 @@ var SidebarMenuButton = React99.forwardRef(
38965
39401
  }
38966
39402
  );
38967
39403
  SidebarMenuButton.displayName = "SidebarMenuButton";
38968
- var SidebarMenuAction = React99.forwardRef(({ className, asChild = false, showOnHover = false, ...props }, ref) => {
39404
+ var SidebarMenuAction = React100.forwardRef(({ className, asChild = false, showOnHover = false, ...props }, ref) => {
38969
39405
  const Comp = asChild ? import_react_slot6.Slot : "button";
38970
- return /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
39406
+ return /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(
38971
39407
  Comp,
38972
39408
  {
38973
39409
  ref,
@@ -38988,7 +39424,7 @@ var SidebarMenuAction = React99.forwardRef(({ className, asChild = false, showOn
38988
39424
  );
38989
39425
  });
38990
39426
  SidebarMenuAction.displayName = "SidebarMenuAction";
38991
- var SidebarMenuBadge = React99.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
39427
+ var SidebarMenuBadge = React100.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(
38992
39428
  "div",
38993
39429
  {
38994
39430
  ref,
@@ -39006,11 +39442,11 @@ var SidebarMenuBadge = React99.forwardRef(({ className, ...props }, ref) => /* @
39006
39442
  }
39007
39443
  ));
39008
39444
  SidebarMenuBadge.displayName = "SidebarMenuBadge";
39009
- var SidebarMenuSkeleton = React99.forwardRef(({ className, showIcon = false, ...props }, ref) => {
39010
- const width = React99.useMemo(() => {
39445
+ var SidebarMenuSkeleton = React100.forwardRef(({ className, showIcon = false, ...props }, ref) => {
39446
+ const width = React100.useMemo(() => {
39011
39447
  return `${Math.floor(Math.random() * 40) + 50}%`;
39012
39448
  }, []);
39013
- return /* @__PURE__ */ (0, import_jsx_runtime133.jsxs)(
39449
+ return /* @__PURE__ */ (0, import_jsx_runtime138.jsxs)(
39014
39450
  "div",
39015
39451
  {
39016
39452
  ref,
@@ -39018,14 +39454,14 @@ var SidebarMenuSkeleton = React99.forwardRef(({ className, showIcon = false, ...
39018
39454
  className: cn("flex h-8 items-center gap-2 rounded-md px-2", className),
39019
39455
  ...props,
39020
39456
  children: [
39021
- showIcon && /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
39457
+ showIcon && /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(
39022
39458
  Skeleton,
39023
39459
  {
39024
39460
  className: "size-4 rounded-md",
39025
39461
  "data-sidebar": "menu-skeleton-icon"
39026
39462
  }
39027
39463
  ),
39028
- /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
39464
+ /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(
39029
39465
  Skeleton,
39030
39466
  {
39031
39467
  className: "h-4 max-w-[--skeleton-width] flex-1",
@@ -39040,7 +39476,7 @@ var SidebarMenuSkeleton = React99.forwardRef(({ className, showIcon = false, ...
39040
39476
  );
39041
39477
  });
39042
39478
  SidebarMenuSkeleton.displayName = "SidebarMenuSkeleton";
39043
- var SidebarMenuSub = React99.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
39479
+ var SidebarMenuSub = React100.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(
39044
39480
  "ul",
39045
39481
  {
39046
39482
  ref,
@@ -39054,11 +39490,11 @@ var SidebarMenuSub = React99.forwardRef(({ className, ...props }, ref) => /* @__
39054
39490
  }
39055
39491
  ));
39056
39492
  SidebarMenuSub.displayName = "SidebarMenuSub";
39057
- var SidebarMenuSubItem = React99.forwardRef(({ ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime133.jsx)("li", { ref, ...props }));
39493
+ var SidebarMenuSubItem = React100.forwardRef(({ ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime138.jsx)("li", { ref, ...props }));
39058
39494
  SidebarMenuSubItem.displayName = "SidebarMenuSubItem";
39059
- var SidebarMenuSubButton = React99.forwardRef(({ asChild = false, size = "md", isActive, className, ...props }, ref) => {
39495
+ var SidebarMenuSubButton = React100.forwardRef(({ asChild = false, size = "md", isActive, className, ...props }, ref) => {
39060
39496
  const Comp = asChild ? import_react_slot6.Slot : "a";
39061
- return /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
39497
+ return /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(
39062
39498
  Comp,
39063
39499
  {
39064
39500
  ref,
@@ -39082,20 +39518,20 @@ SidebarMenuSubButton.displayName = "SidebarMenuSubButton";
39082
39518
  // src/components/ui/sonner.tsx
39083
39519
  var import_next_themes = require("next-themes");
39084
39520
  var import_sonner = require("sonner");
39085
- var import_jsx_runtime134 = require("react/jsx-runtime");
39521
+ var import_jsx_runtime139 = require("react/jsx-runtime");
39086
39522
  var Toaster = ({ ...props }) => {
39087
39523
  const { theme = "system" } = (0, import_next_themes.useTheme)();
39088
- return /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(
39524
+ return /* @__PURE__ */ (0, import_jsx_runtime139.jsx)(
39089
39525
  import_sonner.Toaster,
39090
39526
  {
39091
39527
  theme,
39092
39528
  className: "toaster group",
39093
39529
  icons: {
39094
- success: /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(CircleCheck, { className: "h-4 w-4" }),
39095
- info: /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(Info, { className: "h-4 w-4" }),
39096
- warning: /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(TriangleAlert, { className: "h-4 w-4" }),
39097
- error: /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(OctagonX, { className: "h-4 w-4" }),
39098
- loading: /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(LoaderCircle, { className: "h-4 w-4 animate-spin" })
39530
+ success: /* @__PURE__ */ (0, import_jsx_runtime139.jsx)(CircleCheck, { className: "h-4 w-4" }),
39531
+ info: /* @__PURE__ */ (0, import_jsx_runtime139.jsx)(Info, { className: "h-4 w-4" }),
39532
+ warning: /* @__PURE__ */ (0, import_jsx_runtime139.jsx)(TriangleAlert, { className: "h-4 w-4" }),
39533
+ error: /* @__PURE__ */ (0, import_jsx_runtime139.jsx)(OctagonX, { className: "h-4 w-4" }),
39534
+ loading: /* @__PURE__ */ (0, import_jsx_runtime139.jsx)(LoaderCircle, { className: "h-4 w-4 animate-spin" })
39099
39535
  },
39100
39536
  toastOptions: {
39101
39537
  classNames: {
@@ -39111,26 +39547,26 @@ var Toaster = ({ ...props }) => {
39111
39547
  };
39112
39548
 
39113
39549
  // src/components/ui/toggle-group.tsx
39114
- var React100 = __toESM(require("react"), 1);
39550
+ var React101 = __toESM(require("react"), 1);
39115
39551
  var ToggleGroupPrimitive = __toESM(require("@radix-ui/react-toggle-group"), 1);
39116
- var import_jsx_runtime135 = require("react/jsx-runtime");
39117
- var ToggleGroupContext = React100.createContext({
39552
+ var import_jsx_runtime140 = require("react/jsx-runtime");
39553
+ var ToggleGroupContext = React101.createContext({
39118
39554
  size: "default",
39119
39555
  variant: "default"
39120
39556
  });
39121
- var ToggleGroup = React100.forwardRef(({ className, variant, size, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(
39557
+ var ToggleGroup = React101.forwardRef(({ className, variant, size, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime140.jsx)(
39122
39558
  ToggleGroupPrimitive.Root,
39123
39559
  {
39124
39560
  ref,
39125
39561
  className: cn("flex items-center justify-center gap-1", className),
39126
39562
  ...props,
39127
- children: /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(ToggleGroupContext.Provider, { value: { variant, size }, children })
39563
+ children: /* @__PURE__ */ (0, import_jsx_runtime140.jsx)(ToggleGroupContext.Provider, { value: { variant, size }, children })
39128
39564
  }
39129
39565
  ));
39130
39566
  ToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName;
39131
- var ToggleGroupItem = React100.forwardRef(({ className, children, variant, size, ...props }, ref) => {
39132
- const context = React100.useContext(ToggleGroupContext);
39133
- return /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(
39567
+ var ToggleGroupItem = React101.forwardRef(({ className, children, variant, size, ...props }, ref) => {
39568
+ const context = React101.useContext(ToggleGroupContext);
39569
+ return /* @__PURE__ */ (0, import_jsx_runtime140.jsx)(
39134
39570
  ToggleGroupPrimitive.Item,
39135
39571
  {
39136
39572
  ref,
@@ -39149,7 +39585,7 @@ var ToggleGroupItem = React100.forwardRef(({ className, children, variant, size,
39149
39585
  ToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName;
39150
39586
 
39151
39587
  // src/render/PXEngineRenderer.tsx
39152
- var import_jsx_runtime136 = require("react/jsx-runtime");
39588
+ var import_jsx_runtime141 = require("react/jsx-runtime");
39153
39589
  var CONTEXT_DEPENDENT_COMPONENTS = /* @__PURE__ */ new Set([
39154
39590
  // Form components - require FormField + FormItem context
39155
39591
  "FormLabel",
@@ -39241,24 +39677,24 @@ var COMPONENT_SUGGESTIONS = {
39241
39677
  };
39242
39678
  var renderContextDependentError = (componentName, normalizedName, key) => {
39243
39679
  const suggestion = COMPONENT_SUGGESTIONS[normalizedName] || `${componentName}Atom (if available)`;
39244
- return /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)(
39680
+ return /* @__PURE__ */ (0, import_jsx_runtime141.jsxs)(
39245
39681
  "div",
39246
39682
  {
39247
39683
  className: "p-4 border-2 border-amber-500/50 rounded-lg bg-amber-50/80 space-y-2 my-2",
39248
39684
  children: [
39249
- /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)("div", { className: "flex items-start gap-2", children: [
39250
- /* @__PURE__ */ (0, import_jsx_runtime136.jsx)("span", { className: "text-amber-600 font-bold text-lg", children: "\u26A0\uFE0F" }),
39251
- /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)("div", { className: "flex-1", children: [
39252
- /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)("p", { className: "text-sm font-semibold text-amber-900", children: [
39685
+ /* @__PURE__ */ (0, import_jsx_runtime141.jsxs)("div", { className: "flex items-start gap-2", children: [
39686
+ /* @__PURE__ */ (0, import_jsx_runtime141.jsx)("span", { className: "text-amber-600 font-bold text-lg", children: "\u26A0\uFE0F" }),
39687
+ /* @__PURE__ */ (0, import_jsx_runtime141.jsxs)("div", { className: "flex-1", children: [
39688
+ /* @__PURE__ */ (0, import_jsx_runtime141.jsxs)("p", { className: "text-sm font-semibold text-amber-900", children: [
39253
39689
  "Invalid Component: ",
39254
39690
  componentName
39255
39691
  ] }),
39256
- /* @__PURE__ */ (0, import_jsx_runtime136.jsx)("p", { className: "text-xs text-amber-700 mt-1", children: "This component requires React Context and cannot be rendered directly in schemas." })
39692
+ /* @__PURE__ */ (0, import_jsx_runtime141.jsx)("p", { className: "text-xs text-amber-700 mt-1", children: "This component requires React Context and cannot be rendered directly in schemas." })
39257
39693
  ] })
39258
39694
  ] }),
39259
- /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)("div", { className: "bg-white/60 p-3 rounded border border-amber-200", children: [
39260
- /* @__PURE__ */ (0, import_jsx_runtime136.jsx)("p", { className: "text-xs font-semibold text-gray-700 mb-1.5", children: "\u2713 Use instead:" }),
39261
- /* @__PURE__ */ (0, import_jsx_runtime136.jsx)("code", { className: "text-xs text-blue-700 bg-blue-50 px-2 py-1 rounded", children: suggestion })
39695
+ /* @__PURE__ */ (0, import_jsx_runtime141.jsxs)("div", { className: "bg-white/60 p-3 rounded border border-amber-200", children: [
39696
+ /* @__PURE__ */ (0, import_jsx_runtime141.jsx)("p", { className: "text-xs font-semibold text-gray-700 mb-1.5", children: "\u2713 Use instead:" }),
39697
+ /* @__PURE__ */ (0, import_jsx_runtime141.jsx)("code", { className: "text-xs text-blue-700 bg-blue-50 px-2 py-1 rounded", children: suggestion })
39262
39698
  ] })
39263
39699
  ]
39264
39700
  },
@@ -39338,7 +39774,7 @@ var PXEngineRenderer = ({
39338
39774
  if (typeof component === "string" || typeof component === "number") {
39339
39775
  return component;
39340
39776
  }
39341
- if (import_react69.default.isValidElement(component)) {
39777
+ if (import_react71.default.isValidElement(component)) {
39342
39778
  return component;
39343
39779
  }
39344
39780
  if (!component || typeof component !== "object") return null;
@@ -39394,6 +39830,7 @@ var PXEngineRenderer = ({
39394
39830
  console.warn(
39395
39831
  `[PXEngineRenderer] Component not found: ${componentName}`
39396
39832
  );
39833
+ return null;
39397
39834
  }
39398
39835
  }
39399
39836
  const resolvedNormalized = resolvedIdentifier.charAt(0).toUpperCase() + resolvedIdentifier.slice(1);
@@ -39416,7 +39853,7 @@ var PXEngineRenderer = ({
39416
39853
  const isAtomWithRenderProp = ATOMS_WITH_RENDER.has(atomName);
39417
39854
  const finalStyle = { ...dynamicStyle, ...finalProps.style || {} };
39418
39855
  if (isAtomWithRenderProp) {
39419
- return /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(
39856
+ return /* @__PURE__ */ (0, import_jsx_runtime141.jsx)(
39420
39857
  TargetComponent,
39421
39858
  {
39422
39859
  ...finalProps,
@@ -39428,7 +39865,7 @@ var PXEngineRenderer = ({
39428
39865
  uniqueKey
39429
39866
  );
39430
39867
  } else {
39431
- return /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(
39868
+ return /* @__PURE__ */ (0, import_jsx_runtime141.jsx)(
39432
39869
  TargetComponent,
39433
39870
  {
39434
39871
  ...finalProps,
@@ -39440,7 +39877,7 @@ var PXEngineRenderer = ({
39440
39877
  );
39441
39878
  }
39442
39879
  };
39443
- return /* @__PURE__ */ (0, import_jsx_runtime136.jsx)("div", { className: "px-engine-root relative w-full h-full", children: renderRecursive(root) });
39880
+ return /* @__PURE__ */ (0, import_jsx_runtime141.jsx)("div", { className: "px-engine-root relative w-full h-full", children: renderRecursive(root) });
39444
39881
  };
39445
39882
  // Annotate the CommonJS export names for ESM import in node:
39446
39883
  0 && (module.exports = {
@@ -39614,6 +40051,9 @@ var PXEngineRenderer = ({
39614
40051
  MenubarSeparator,
39615
40052
  MenubarShortcut,
39616
40053
  MenubarTrigger,
40054
+ MultiAgentCard,
40055
+ MultiAgentPlan,
40056
+ MultiAgentUISelector,
39617
40057
  NavigationMenu,
39618
40058
  NavigationMenuContent,
39619
40059
  NavigationMenuItem,
@@ -39678,6 +40118,7 @@ var PXEngineRenderer = ({
39678
40118
  SliderAtom,
39679
40119
  Spinner,
39680
40120
  SpinnerAtom,
40121
+ StageIndicator,
39681
40122
  StatsGrid,
39682
40123
  StepWizard,
39683
40124
  Switch,
@@ -39708,6 +40149,7 @@ var PXEngineRenderer = ({
39708
40149
  TooltipProvider,
39709
40150
  TooltipTrigger,
39710
40151
  TopPostsGrid,
40152
+ UIComponentSelector,
39711
40153
  VideoAtom,
39712
40154
  WorkflowVisualizer,
39713
40155
  cn