pxengine 0.1.32 → 0.1.34

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 React98 from "react";
8
+ import React101 from "react";
9
9
 
10
10
  // src/atoms/index.ts
11
11
  var atoms_exports = {};
@@ -33298,6 +33298,8 @@ ArrowToggleAtom.displayName = "ArrowToggleAtom";
33298
33298
  var molecules_exports = {};
33299
33299
  __export(molecules_exports, {
33300
33300
  ActionButton: () => ActionButton,
33301
+ AgentCard: () => AgentCard,
33302
+ AgentDataTable: () => AgentDataTable,
33301
33303
  AudienceDemographicsCard: () => AudienceDemographicsCard,
33302
33304
  AudienceMetricCard: () => AudienceMetricCard,
33303
33305
  BrandAffinityGroup: () => BrandAffinityGroup,
@@ -33317,6 +33319,7 @@ __export(molecules_exports, {
33317
33319
  FilterBar: () => FilterBar,
33318
33320
  FormCard: () => FormCard,
33319
33321
  GrowthChartCard: () => GrowthChartCard,
33322
+ InstructionPreview: () => InstructionPreview,
33320
33323
  KeywordBundlesDisplay: () => KeywordBundlesDisplay,
33321
33324
  KeywordBundlesEdit: () => KeywordBundlesEdit,
33322
33325
  LoadingOverlay: () => LoadingOverlay,
@@ -33329,7 +33332,9 @@ __export(molecules_exports, {
33329
33332
  StatsGrid: () => StatsGrid,
33330
33333
  StepWizard: () => StepWizard,
33331
33334
  TagCloud: () => TagCloud,
33332
- TopPostsGrid: () => TopPostsGrid
33335
+ ToolListCard: () => ToolListCard,
33336
+ TopPostsGrid: () => TopPostsGrid,
33337
+ WorkflowVisualizer: () => WorkflowVisualizer
33333
33338
  });
33334
33339
 
33335
33340
  // src/molecules/generic/EditableField/EditableField.tsx
@@ -35152,22 +35157,30 @@ var KeywordBundlesDisplay = ({ value }) => {
35152
35157
  var DEFAULT_PLATFORMS = ["Instagram", "YouTube", "TikTok"];
35153
35158
  var PlatformSelectEdit = ({
35154
35159
  value,
35155
- onChange,
35156
- config = {}
35160
+ onChange
35157
35161
  }) => {
35158
- const selectedPlatforms = Array.isArray(value) ? value : [];
35159
- const options = useMemo4(() => {
35160
- const providedOptions = config.options || DEFAULT_PLATFORMS;
35161
- const combined = Array.from(/* @__PURE__ */ new Set([...providedOptions, ...selectedPlatforms]));
35162
- return combined;
35163
- }, [config.options, selectedPlatforms]);
35162
+ const selectedPlatforms = useMemo4(() => {
35163
+ if (Array.isArray(value)) return value;
35164
+ if (typeof value === "string" && value.trim() !== "") {
35165
+ return value.split(",").map((s) => s.trim()).filter(Boolean);
35166
+ }
35167
+ return [];
35168
+ }, [value]);
35169
+ const isSelected = (p) => selectedPlatforms.some((s) => s.toLowerCase() === p.toLowerCase());
35164
35170
  const togglePlatform = (platform) => {
35165
- if (selectedPlatforms.includes(platform)) {
35166
- onChange(selectedPlatforms.filter((p) => p !== platform));
35171
+ if (isSelected(platform)) {
35172
+ onChange(
35173
+ selectedPlatforms.filter(
35174
+ (p) => p.toLowerCase() !== platform.toLowerCase()
35175
+ )
35176
+ );
35167
35177
  } else {
35168
35178
  onChange([...selectedPlatforms, platform]);
35169
35179
  }
35170
35180
  };
35181
+ const options = useMemo4(() => {
35182
+ return DEFAULT_PLATFORMS;
35183
+ }, []);
35171
35184
  return /* @__PURE__ */ jsx106("div", { className: "flex flex-wrap gap-4 py-2", children: options.map((platform) => /* @__PURE__ */ jsxs66(
35172
35185
  "label",
35173
35186
  {
@@ -35178,10 +35191,10 @@ var PlatformSelectEdit = ({
35178
35191
  {
35179
35192
  className: cn(
35180
35193
  "w-5 h-5 rounded flex items-center justify-center border-2 transition-all",
35181
- selectedPlatforms.includes(platform) ? "bg-purple-600 border-purple-600" : "border-gray-300 group-hover:border-purple-400"
35194
+ isSelected(platform) ? "bg-purple-600 border-purple-600" : "border-gray-300 group-hover:border-purple-400"
35182
35195
  ),
35183
35196
  onClick: () => togglePlatform(platform),
35184
- children: selectedPlatforms.includes(platform) && /* @__PURE__ */ jsx106(Check, { className: "h-3.5 w-3.5 text-white stroke-[3]" })
35197
+ children: isSelected(platform) && /* @__PURE__ */ jsx106(Check, { className: "h-3.5 w-3.5 text-white stroke-[3]" })
35185
35198
  }
35186
35199
  ),
35187
35200
  /* @__PURE__ */ jsx106("span", { className: "text-sm font-medium text-foreground select-none", children: platform })
@@ -35191,10 +35204,17 @@ var PlatformSelectEdit = ({
35191
35204
  )) });
35192
35205
  };
35193
35206
  var PlatformSelectDisplay = ({ value }) => {
35194
- if (!value || !Array.isArray(value) || value.length === 0) {
35207
+ const displayValues = useMemo4(() => {
35208
+ if (Array.isArray(value)) return value;
35209
+ if (typeof value === "string" && value.trim() !== "") {
35210
+ return value.split(",").map((s) => s.trim()).filter(Boolean);
35211
+ }
35212
+ return [];
35213
+ }, [value]);
35214
+ if (displayValues.length === 0) {
35195
35215
  return /* @__PURE__ */ jsx106("span", { className: "text-muted-foreground italic text-sm", children: "Not specified" });
35196
35216
  }
35197
- return /* @__PURE__ */ jsx106("div", { className: "flex flex-wrap gap-2 pt-1", children: value.map((platform) => /* @__PURE__ */ jsx106(
35217
+ return /* @__PURE__ */ jsx106("div", { className: "flex flex-wrap gap-2 pt-1", children: displayValues.map((platform) => /* @__PURE__ */ jsx106(
35198
35218
  "div",
35199
35219
  {
35200
35220
  className: "flex items-center gap-2 px-3 py-1 bg-grayPill border border-foreground rounded-md text-foreground text-sm font-grotesk font-medium",
@@ -35284,10 +35304,7 @@ function buildCampaignSeedFields(data) {
35284
35304
  PlatformSelectEdit,
35285
35305
  {
35286
35306
  value: v,
35287
- onChange,
35288
- config: {
35289
- options: data.platform_options || data.available_platforms || data.platforms_list || []
35290
- }
35307
+ onChange
35291
35308
  }
35292
35309
  )
35293
35310
  };
@@ -35451,8 +35468,7 @@ function buildSearchSpecFields(data) {
35451
35468
  PlatformSelectEdit,
35452
35469
  {
35453
35470
  value: v,
35454
- onChange,
35455
- config: { options: data.platform_options || data.available_platforms || data.platforms_list || [] }
35471
+ onChange
35456
35472
  }
35457
35473
  )
35458
35474
  };
@@ -36462,10 +36478,7 @@ var CampaignConceptCard = React94.memo(
36462
36478
  PlatformSelectEdit,
36463
36479
  {
36464
36480
  value: v,
36465
- onChange,
36466
- config: {
36467
- options: data.platform_options || data.available_platforms || data.platforms_list || []
36468
- }
36481
+ onChange
36469
36482
  }
36470
36483
  )
36471
36484
  };
@@ -36495,7 +36508,7 @@ var CampaignConceptCard = React94.memo(
36495
36508
  }) });
36496
36509
  }
36497
36510
  if (typeof val === "object" && val !== null) {
36498
- return /* @__PURE__ */ jsx121("div", { className: "text-muted-foreground text-xs font-mono bg-paperBackground p-2 rounded border border-gray400 mt-1 overflow-auto max-h-24", children: Object.entries(val).map(([k, v]) => `${k.replace(/_/g, " ")}: ${v}`).join("\n") });
36511
+ return /* @__PURE__ */ jsx121("div", { className: "text-muted-foreground text-xs font-mono bg-paperBackground p-2 rounded mt-1 overflow-auto max-h-24", children: Object.entries(val).map(([k, v]) => `${k.replace(/_/g, " ")}: ${v}`).join("\n") });
36499
36512
  }
36500
36513
  return /* @__PURE__ */ jsx121("span", { className: "text-foreground text-sm", children: val !== void 0 && val !== null ? String(val) : "-" });
36501
36514
  }
@@ -36600,6 +36613,590 @@ var CampaignConceptCard = React94.memo(
36600
36613
  );
36601
36614
  CampaignConceptCard.displayName = "CampaignConceptCard";
36602
36615
 
36616
+ // src/molecules/agent-builder/ToolListCard/ToolListCard.tsx
36617
+ import { jsx as jsx122, jsxs as jsxs81 } from "react/jsx-runtime";
36618
+ var ICON_MAP = {
36619
+ Search,
36620
+ Database,
36621
+ Globe,
36622
+ FileText,
36623
+ Zap,
36624
+ Layout: PanelsTopLeft,
36625
+ Wrench,
36626
+ BookOpen,
36627
+ BarChart3: ChartColumn,
36628
+ Link,
36629
+ MessageSquare,
36630
+ Sparkles,
36631
+ FolderOpen,
36632
+ Code,
36633
+ Shield,
36634
+ Image,
36635
+ Mail,
36636
+ Calendar
36637
+ };
36638
+ var CATEGORY_FALLBACK = {
36639
+ search: Search,
36640
+ data: Database,
36641
+ knowledge: BookOpen,
36642
+ web: Globe,
36643
+ content: FileText,
36644
+ ui: PanelsTopLeft,
36645
+ analytics: ChartColumn,
36646
+ integration: Link,
36647
+ communication: MessageSquare,
36648
+ generation: Sparkles,
36649
+ file: FolderOpen,
36650
+ code: Code,
36651
+ security: Shield,
36652
+ general: Zap
36653
+ };
36654
+ function resolveIcon(tool) {
36655
+ if (tool.icon && ICON_MAP[tool.icon]) return ICON_MAP[tool.icon];
36656
+ if (tool.category && CATEGORY_FALLBACK[tool.category.toLowerCase()])
36657
+ return CATEGORY_FALLBACK[tool.category.toLowerCase()];
36658
+ return Wrench;
36659
+ }
36660
+ function resolveCategoryIcon(category) {
36661
+ return CATEGORY_FALLBACK[category.toLowerCase()] || Wrench;
36662
+ }
36663
+ var ToolListCard = ({
36664
+ tools,
36665
+ className
36666
+ }) => {
36667
+ const grouped = {};
36668
+ for (const tool of tools) {
36669
+ const cat = tool.category || "General";
36670
+ if (!grouped[cat]) grouped[cat] = [];
36671
+ grouped[cat].push(tool);
36672
+ }
36673
+ const categories = Object.keys(grouped);
36674
+ return /* @__PURE__ */ jsxs81(
36675
+ "div",
36676
+ {
36677
+ className: cn(
36678
+ "my-3 rounded-xl border border-[var(--border-color)] bg-[var(--card-background)] overflow-hidden shadow-sm",
36679
+ className
36680
+ ),
36681
+ children: [
36682
+ /* @__PURE__ */ jsxs81("div", { className: "px-4 py-3 border-b border-[var(--border-color)] bg-[var(--foreground)]/[0.03] flex items-center gap-2.5", children: [
36683
+ /* @__PURE__ */ jsx122("div", { className: "w-6 h-6 rounded-md bg-[var(--primary-color)]/10 flex items-center justify-center", children: /* @__PURE__ */ jsx122(Wrench, { className: "w-3.5 h-3.5 text-[var(--primary-color)]" }) }),
36684
+ /* @__PURE__ */ jsx122("h4", { className: "text-sm font-semibold text-[var(--foreground)]", children: "Available Tools" }),
36685
+ /* @__PURE__ */ jsx122("span", { className: "ml-auto text-[11px] font-medium text-[var(--foreground)]/40 bg-[var(--foreground)]/[0.06] px-2 py-0.5 rounded-full", children: tools.length })
36686
+ ] }),
36687
+ /* @__PURE__ */ jsx122("div", { className: "divide-y divide-[var(--border-color)]", children: categories.map((cat) => {
36688
+ const CatIcon = resolveCategoryIcon(cat);
36689
+ return /* @__PURE__ */ jsxs81("div", { className: "px-4 py-3", children: [
36690
+ /* @__PURE__ */ jsxs81("div", { className: "flex items-center gap-2 mb-2.5", children: [
36691
+ /* @__PURE__ */ jsx122(CatIcon, { className: "w-3.5 h-3.5 text-[var(--primary-color)]/70" }),
36692
+ /* @__PURE__ */ jsx122("span", { className: "text-[11px] font-semibold text-[var(--foreground)]/50 uppercase tracking-wider", children: cat }),
36693
+ /* @__PURE__ */ jsx122("span", { className: "text-[10px] text-[var(--foreground)]/30", children: grouped[cat].length })
36694
+ ] }),
36695
+ /* @__PURE__ */ jsx122("div", { className: "space-y-1.5", children: grouped[cat].map((tool) => {
36696
+ const ToolIcon = resolveIcon(tool);
36697
+ return /* @__PURE__ */ jsxs81(
36698
+ "div",
36699
+ {
36700
+ className: "group flex items-start gap-3 px-3 py-2 rounded-lg hover:bg-[var(--foreground)]/[0.03] transition-colors",
36701
+ children: [
36702
+ /* @__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
+ /* @__PURE__ */ jsxs81("div", { className: "flex-1 min-w-0", children: [
36704
+ /* @__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 })
36707
+ ] }),
36708
+ tool.description && /* @__PURE__ */ jsx122("p", { className: "text-xs text-[var(--foreground)]/50 leading-relaxed mt-0.5", children: tool.description })
36709
+ ] })
36710
+ ]
36711
+ },
36712
+ tool.name
36713
+ );
36714
+ }) })
36715
+ ] }, cat);
36716
+ }) })
36717
+ ]
36718
+ }
36719
+ );
36720
+ };
36721
+
36722
+ // src/molecules/agent-builder/AgentCard/AgentCard.tsx
36723
+ import { useState as useState10, useCallback as useCallback4 } from "react";
36724
+ import { Fragment as Fragment4, jsx as jsx123, jsxs as jsxs82 } from "react/jsx-runtime";
36725
+ var AgentCard = ({
36726
+ agent,
36727
+ editable = true,
36728
+ compact = false,
36729
+ onSave,
36730
+ className
36731
+ }) => {
36732
+ const [isEditing, setIsEditing] = useState10(false);
36733
+ const [isSaving, setIsSaving] = useState10(false);
36734
+ const [editState, setEditState] = useState10({
36735
+ display_name: agent.display_name,
36736
+ description: agent.description,
36737
+ image: agent.image || ""
36738
+ });
36739
+ const avatarUrl = agent.image || `https://api.dicebear.com/7.x/avataaars/svg?seed=${agent.name}`;
36740
+ const handleEdit = useCallback4(() => {
36741
+ setEditState({
36742
+ display_name: agent.display_name,
36743
+ description: agent.description,
36744
+ image: agent.image || ""
36745
+ });
36746
+ setIsEditing(true);
36747
+ }, [agent]);
36748
+ const handleCancel = useCallback4(() => {
36749
+ setIsEditing(false);
36750
+ }, []);
36751
+ const handleSave = useCallback4(async () => {
36752
+ if (!onSave) return;
36753
+ const updates = {};
36754
+ if (editState.display_name !== agent.display_name)
36755
+ updates.display_name = editState.display_name;
36756
+ if (editState.description !== agent.description)
36757
+ updates.description = editState.description;
36758
+ if (editState.image !== (agent.image || ""))
36759
+ updates.image = editState.image;
36760
+ if (Object.keys(updates).length === 0) {
36761
+ setIsEditing(false);
36762
+ return;
36763
+ }
36764
+ setIsSaving(true);
36765
+ try {
36766
+ await onSave(agent, updates);
36767
+ setIsEditing(false);
36768
+ } catch (err) {
36769
+ console.error("AgentCard save failed:", err);
36770
+ } finally {
36771
+ setIsSaving(false);
36772
+ }
36773
+ }, [onSave, agent, editState]);
36774
+ if (compact) {
36775
+ return /* @__PURE__ */ jsxs82(
36776
+ "div",
36777
+ {
36778
+ className: cn(
36779
+ "flex items-center gap-3 py-1",
36780
+ className
36781
+ ),
36782
+ children: [
36783
+ /* @__PURE__ */ jsxs82(Avatar, { className: "h-8 w-8 shrink-0", children: [
36784
+ /* @__PURE__ */ jsx123(AvatarImage, { src: avatarUrl, alt: agent.display_name }),
36785
+ /* @__PURE__ */ jsx123(AvatarFallback, { className: "bg-[var(--primary-color)]/10 text-[var(--primary-color)] text-xs font-bold", children: agent.display_name.charAt(0) })
36786
+ ] }),
36787
+ /* @__PURE__ */ jsxs82("div", { className: "flex-1 min-w-0", children: [
36788
+ /* @__PURE__ */ jsxs82("div", { className: "flex items-center gap-2", children: [
36789
+ /* @__PURE__ */ jsx123("span", { className: "text-[var(--foreground)] text-sm font-semibold truncate", children: agent.display_name }),
36790
+ /* @__PURE__ */ jsx123(
36791
+ "span",
36792
+ {
36793
+ className: cn(
36794
+ "text-[10px] px-1.5 py-0.5 rounded-full font-medium",
36795
+ agent.enabled ? "bg-emerald-500/10 text-emerald-600" : "bg-red-500/10 text-red-500"
36796
+ ),
36797
+ children: agent.enabled ? "Active" : "Disabled"
36798
+ }
36799
+ )
36800
+ ] }),
36801
+ /* @__PURE__ */ jsx123("p", { className: "text-[var(--foreground)]/50 text-xs truncate", children: agent.description })
36802
+ ] })
36803
+ ]
36804
+ }
36805
+ );
36806
+ }
36807
+ return /* @__PURE__ */ jsxs82(
36808
+ "div",
36809
+ {
36810
+ className: cn(
36811
+ "my-3 rounded-xl border border-[var(--border-color)] bg-[var(--card-background)] overflow-hidden",
36812
+ className
36813
+ ),
36814
+ children: [
36815
+ /* @__PURE__ */ jsxs82("div", { className: "flex items-start gap-4 px-5 py-4", children: [
36816
+ /* @__PURE__ */ jsxs82(Avatar, { className: "h-12 w-12 shrink-0 border-2 border-[var(--primary-color)]/20", children: [
36817
+ /* @__PURE__ */ jsx123(AvatarImage, { src: isEditing && editState.image ? editState.image : avatarUrl, alt: agent.display_name }),
36818
+ /* @__PURE__ */ jsx123(AvatarFallback, { className: "bg-[var(--primary-color)]/10 text-[var(--primary-color)] text-lg font-bold", children: agent.display_name.charAt(0) })
36819
+ ] }),
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: [
36852
+ /* @__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 }),
36854
+ /* @__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
+ /* @__PURE__ */ jsx123(
36856
+ "span",
36857
+ {
36858
+ className: cn(
36859
+ "text-[10px] px-1.5 py-0.5 rounded-full font-medium",
36860
+ agent.enabled ? "bg-emerald-500/10 text-emerald-600" : "bg-red-500/10 text-red-500"
36861
+ ),
36862
+ children: agent.enabled ? "Active" : "Disabled"
36863
+ }
36864
+ )
36865
+ ] }),
36866
+ /* @__PURE__ */ jsx123("p", { className: "text-xs text-[var(--foreground)]/60 mt-1 leading-relaxed", children: agent.description })
36867
+ ] }) }),
36868
+ editable && onSave && /* @__PURE__ */ jsx123("div", { className: "flex items-center gap-1.5 shrink-0", children: isEditing ? /* @__PURE__ */ jsxs82(Fragment4, { children: [
36869
+ /* @__PURE__ */ jsx123(
36870
+ "button",
36871
+ {
36872
+ onClick: handleCancel,
36873
+ disabled: isSaving,
36874
+ className: "text-[11px] px-2.5 py-1 rounded-md border border-[var(--border-color)] text-[var(--foreground)]/60 hover:text-[var(--foreground)] transition-colors disabled:opacity-50",
36875
+ children: "Cancel"
36876
+ }
36877
+ ),
36878
+ /* @__PURE__ */ jsx123(
36879
+ "button",
36880
+ {
36881
+ onClick: handleSave,
36882
+ 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",
36884
+ children: isSaving ? "Saving..." : "Save"
36885
+ }
36886
+ )
36887
+ ] }) : /* @__PURE__ */ jsx123(
36888
+ "button",
36889
+ {
36890
+ onClick: handleEdit,
36891
+ className: "text-[11px] px-2.5 py-1 rounded-md border border-[var(--border-color)] text-[var(--foreground)]/50 hover:text-[var(--foreground)] hover:border-[var(--primary-color)]/50 transition-colors",
36892
+ children: "Edit"
36893
+ }
36894
+ ) })
36895
+ ] }),
36896
+ /* @__PURE__ */ jsx123("div", { className: "flex flex-wrap items-center gap-3 px-5 pb-3 text-xs", children: /* @__PURE__ */ jsxs82("span", { className: "text-[var(--foreground)]/40", children: [
36897
+ "Model:",
36898
+ " ",
36899
+ /* @__PURE__ */ jsx123("span", { className: "font-mono text-[var(--foreground)]/70", children: agent.model })
36900
+ ] }) }),
36901
+ agent.tools && agent.tools.length > 0 && /* @__PURE__ */ jsxs82("div", { className: "border-t border-[var(--border-color)] px-5 py-3", children: [
36902
+ /* @__PURE__ */ jsxs82("p", { className: "text-[11px] font-semibold text-[var(--foreground)]/40 uppercase tracking-wide mb-2", children: [
36903
+ "Tools (",
36904
+ agent.tools.length,
36905
+ ")"
36906
+ ] }),
36907
+ /* @__PURE__ */ jsx123("div", { className: "flex flex-wrap gap-1.5", children: agent.tools.map((tool) => /* @__PURE__ */ jsx123(
36908
+ "span",
36909
+ {
36910
+ className: "text-[11px] px-2 py-0.5 rounded-md bg-[var(--primary-color)]/10 text-[var(--primary-color)] font-mono border border-[var(--primary-color)]/20",
36911
+ children: tool
36912
+ },
36913
+ tool
36914
+ )) })
36915
+ ] })
36916
+ ]
36917
+ }
36918
+ );
36919
+ };
36920
+
36921
+ // src/molecules/agent-builder/AgentDataTable/AgentDataTable.tsx
36922
+ import { jsx as jsx124, jsxs as jsxs83 } from "react/jsx-runtime";
36923
+ var AgentDataTable = ({
36924
+ headers,
36925
+ rows,
36926
+ className
36927
+ }) => {
36928
+ const renderCell = (value) => {
36929
+ if (typeof value === "boolean") {
36930
+ return /* @__PURE__ */ jsxs83(
36931
+ "span",
36932
+ {
36933
+ className: cn(
36934
+ "inline-flex items-center gap-1 text-[11px] font-medium px-2 py-0.5 rounded-full",
36935
+ value ? "bg-emerald-500/10 text-emerald-600" : "bg-red-500/10 text-red-500"
36936
+ ),
36937
+ children: [
36938
+ /* @__PURE__ */ jsx124(
36939
+ "span",
36940
+ {
36941
+ className: cn(
36942
+ "w-1.5 h-1.5 rounded-full",
36943
+ value ? "bg-emerald-500" : "bg-red-500"
36944
+ )
36945
+ }
36946
+ ),
36947
+ value ? "Yes" : "No"
36948
+ ]
36949
+ }
36950
+ );
36951
+ }
36952
+ return /* @__PURE__ */ jsx124("span", { className: "text-[var(--foreground)]", children: String(value) });
36953
+ };
36954
+ return /* @__PURE__ */ jsx124(
36955
+ "div",
36956
+ {
36957
+ className: cn(
36958
+ "my-3 rounded-xl border border-[var(--border-color)] bg-[var(--card-background)] overflow-hidden",
36959
+ className
36960
+ ),
36961
+ children: /* @__PURE__ */ jsx124("div", { className: "overflow-x-auto", children: /* @__PURE__ */ jsxs83("table", { className: "w-full text-xs", children: [
36962
+ /* @__PURE__ */ jsx124("thead", { children: /* @__PURE__ */ jsx124("tr", { className: "border-b border-[var(--border-color)] bg-[var(--foreground)]/[0.03]", children: headers.map((header) => /* @__PURE__ */ jsx124(
36963
+ "th",
36964
+ {
36965
+ className: "text-left px-4 py-2.5 text-[11px] font-semibold text-[var(--foreground)]/60 uppercase tracking-wide whitespace-nowrap",
36966
+ children: header
36967
+ },
36968
+ header
36969
+ )) }) }),
36970
+ /* @__PURE__ */ jsx124("tbody", { children: rows.map((row, rowIdx) => /* @__PURE__ */ jsx124(
36971
+ "tr",
36972
+ {
36973
+ className: "border-b border-[var(--border-color)] last:border-b-0 hover:bg-[var(--foreground)]/[0.02] transition-colors",
36974
+ children: row.map((cell, cellIdx) => /* @__PURE__ */ jsx124(
36975
+ "td",
36976
+ {
36977
+ className: "px-4 py-2.5 text-xs whitespace-nowrap",
36978
+ children: renderCell(cell)
36979
+ },
36980
+ cellIdx
36981
+ ))
36982
+ },
36983
+ rowIdx
36984
+ )) })
36985
+ ] }) })
36986
+ }
36987
+ );
36988
+ };
36989
+
36990
+ // src/molecules/agent-builder/WorkflowVisualizer/WorkflowVisualizer.tsx
36991
+ import { useState as useState11 } from "react";
36992
+ import { jsx as jsx125, jsxs as jsxs84 } from "react/jsx-runtime";
36993
+ var WorkflowVisualizer = ({
36994
+ steps,
36995
+ className
36996
+ }) => {
36997
+ const [expandedStep, setExpandedStep] = useState11(null);
36998
+ return /* @__PURE__ */ jsxs84(
36999
+ "div",
37000
+ {
37001
+ className: cn(
37002
+ "my-3 rounded-xl border border-[var(--border-color)] bg-[var(--card-background)] overflow-hidden shadow-sm",
37003
+ className
37004
+ ),
37005
+ children: [
37006
+ /* @__PURE__ */ jsxs84("div", { className: "px-4 py-3 border-b border-[var(--border-color)] bg-[var(--foreground)]/[0.03] flex items-center gap-2.5", children: [
37007
+ /* @__PURE__ */ jsx125("div", { className: "w-6 h-6 rounded-md bg-[var(--primary-color)]/10 flex items-center justify-center", children: /* @__PURE__ */ jsx125(
37008
+ "svg",
37009
+ {
37010
+ width: "14",
37011
+ height: "14",
37012
+ viewBox: "0 0 24 24",
37013
+ fill: "none",
37014
+ stroke: "var(--primary-color)",
37015
+ strokeWidth: "2",
37016
+ strokeLinecap: "round",
37017
+ strokeLinejoin: "round",
37018
+ children: /* @__PURE__ */ jsx125("polyline", { points: "22 12 18 12 15 21 9 3 6 12 2 12" })
37019
+ }
37020
+ ) }),
37021
+ /* @__PURE__ */ jsx125("h4", { className: "text-sm font-semibold text-[var(--foreground)]", children: "Workflow" }),
37022
+ /* @__PURE__ */ jsxs84("span", { className: "ml-auto text-[11px] font-medium text-[var(--foreground)]/40 bg-[var(--foreground)]/[0.06] px-2 py-0.5 rounded-full", children: [
37023
+ steps.length,
37024
+ " steps"
37025
+ ] })
37026
+ ] }),
37027
+ /* @__PURE__ */ jsx125("div", { className: "px-4 py-3", children: steps.map((step, idx) => {
37028
+ const isLast = idx === steps.length - 1;
37029
+ const isExpanded = expandedStep === step.id;
37030
+ return /* @__PURE__ */ jsxs84("div", { className: "flex gap-3", children: [
37031
+ /* @__PURE__ */ jsxs84("div", { className: "flex flex-col items-center shrink-0", children: [
37032
+ /* @__PURE__ */ jsx125("div", { className: "w-7 h-7 rounded-full bg-[var(--primary-color)]/10 border-2 border-[var(--primary-color)]/30 flex items-center justify-center", children: /* @__PURE__ */ jsx125("span", { className: "text-[10px] font-bold text-[var(--primary-color)]", children: idx + 1 }) }),
37033
+ !isLast && /* @__PURE__ */ jsx125("div", { className: "w-0.5 flex-1 min-h-[16px] bg-[var(--primary-color)]/15" })
37034
+ ] }),
37035
+ /* @__PURE__ */ jsxs84(
37036
+ "div",
37037
+ {
37038
+ className: cn(
37039
+ "flex-1 mb-3 rounded-lg border border-[var(--border-color)] transition-colors",
37040
+ isExpanded ? "bg-[var(--foreground)]/[0.02]" : "hover:bg-[var(--foreground)]/[0.02]"
37041
+ ),
37042
+ children: [
37043
+ /* @__PURE__ */ jsxs84(
37044
+ "button",
37045
+ {
37046
+ onClick: () => setExpandedStep(isExpanded ? null : step.id),
37047
+ className: "w-full text-left px-3 py-2.5 flex items-center gap-2",
37048
+ children: [
37049
+ /* @__PURE__ */ jsxs84("div", { className: "flex-1 min-w-0", children: [
37050
+ /* @__PURE__ */ jsx125("span", { className: "text-[13px] font-medium text-[var(--foreground)]", children: step.name }),
37051
+ step.description && !isExpanded && /* @__PURE__ */ jsxs84("span", { className: "text-xs text-[var(--foreground)]/40 ml-2", children: [
37052
+ "\u2014 ",
37053
+ step.description
37054
+ ] })
37055
+ ] }),
37056
+ /* @__PURE__ */ jsx125(
37057
+ "svg",
37058
+ {
37059
+ width: "12",
37060
+ height: "12",
37061
+ viewBox: "0 0 24 24",
37062
+ fill: "none",
37063
+ stroke: "currentColor",
37064
+ strokeWidth: "2",
37065
+ className: cn(
37066
+ "shrink-0 text-[var(--foreground)]/30 transition-transform",
37067
+ isExpanded && "rotate-180"
37068
+ ),
37069
+ children: /* @__PURE__ */ jsx125("polyline", { points: "6 9 12 15 18 9" })
37070
+ }
37071
+ )
37072
+ ]
37073
+ }
37074
+ ),
37075
+ isExpanded && /* @__PURE__ */ jsxs84("div", { className: "px-3 pb-3 space-y-2.5", children: [
37076
+ step.description && /* @__PURE__ */ jsx125("p", { className: "text-xs text-[var(--foreground)]/50 leading-relaxed", children: step.description }),
37077
+ step.sub_steps && step.sub_steps.length > 0 && /* @__PURE__ */ jsx125("div", { className: "space-y-1", children: step.sub_steps.map((sub) => /* @__PURE__ */ jsxs84(
37078
+ "div",
37079
+ {
37080
+ className: "flex items-start gap-2 text-xs",
37081
+ children: [
37082
+ /* @__PURE__ */ jsx125("span", { className: "shrink-0 mt-0.5 w-1.5 h-1.5 rounded-full bg-[var(--primary-color)]/40" }),
37083
+ /* @__PURE__ */ jsx125("span", { className: "text-[var(--foreground)]/60", children: sub.action })
37084
+ ]
37085
+ },
37086
+ sub.id
37087
+ )) }),
37088
+ step.tools && step.tools.length > 0 && /* @__PURE__ */ jsxs84("div", { className: "flex items-center gap-1.5 flex-wrap", children: [
37089
+ /* @__PURE__ */ jsx125("span", { className: "text-[10px] text-[var(--foreground)]/30 uppercase font-semibold tracking-wider", children: "Tools:" }),
37090
+ step.tools.map((tool) => /* @__PURE__ */ jsx125(
37091
+ "span",
37092
+ {
37093
+ className: "text-[10px] font-mono px-1.5 py-0.5 rounded bg-[var(--primary-color)]/[0.08] text-[var(--primary-color)]/70 border border-[var(--primary-color)]/10",
37094
+ children: tool
37095
+ },
37096
+ tool
37097
+ ))
37098
+ ] }),
37099
+ step.on_failure && /* @__PURE__ */ jsxs84("div", { className: "flex items-start gap-2 text-xs bg-[#ef4444]/[0.06] border border-[#ef4444]/10 rounded-md px-2.5 py-2", children: [
37100
+ /* @__PURE__ */ jsx125("span", { className: "shrink-0 text-[10px] font-semibold text-[#ef4444]/70 uppercase tracking-wider mt-px", children: "On failure:" }),
37101
+ /* @__PURE__ */ jsx125("span", { className: "text-[var(--foreground)]/50", children: step.on_failure })
37102
+ ] })
37103
+ ] })
37104
+ ]
37105
+ }
37106
+ )
37107
+ ] }, step.id);
37108
+ }) })
37109
+ ]
37110
+ }
37111
+ );
37112
+ };
37113
+
37114
+ // src/molecules/agent-builder/InstructionPreview/InstructionPreview.tsx
37115
+ import { useState as useState12 } from "react";
37116
+ import { jsx as jsx126, jsxs as jsxs85 } from "react/jsx-runtime";
37117
+ var InstructionPreview = ({
37118
+ agent_name,
37119
+ description,
37120
+ instruction,
37121
+ workflow_summary,
37122
+ tools,
37123
+ className
37124
+ }) => {
37125
+ const [isExpanded, setIsExpanded] = useState12(false);
37126
+ const previewLength = 300;
37127
+ const isLong = instruction.length > previewLength;
37128
+ const displayText = isExpanded || !isLong ? instruction : instruction.slice(0, previewLength) + "...";
37129
+ return /* @__PURE__ */ jsxs85(
37130
+ "div",
37131
+ {
37132
+ className: cn(
37133
+ "my-3 rounded-xl border border-[var(--border-color)] bg-[var(--card-background)] overflow-hidden shadow-sm",
37134
+ className
37135
+ ),
37136
+ children: [
37137
+ /* @__PURE__ */ jsx126("div", { className: "px-4 py-3 border-b border-[var(--border-color)] bg-[var(--foreground)]/[0.03]", children: /* @__PURE__ */ jsxs85("div", { className: "flex items-center gap-2.5", children: [
37138
+ /* @__PURE__ */ jsx126("div", { className: "w-6 h-6 rounded-md bg-[var(--primary-color)]/10 flex items-center justify-center", children: /* @__PURE__ */ jsxs85(
37139
+ "svg",
37140
+ {
37141
+ width: "14",
37142
+ height: "14",
37143
+ viewBox: "0 0 24 24",
37144
+ fill: "none",
37145
+ stroke: "var(--primary-color)",
37146
+ strokeWidth: "2",
37147
+ strokeLinecap: "round",
37148
+ strokeLinejoin: "round",
37149
+ children: [
37150
+ /* @__PURE__ */ jsx126("path", { d: "M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z" }),
37151
+ /* @__PURE__ */ jsx126("polyline", { points: "14 2 14 8 20 8" }),
37152
+ /* @__PURE__ */ jsx126("line", { x1: "16", y1: "13", x2: "8", y2: "13" }),
37153
+ /* @__PURE__ */ jsx126("line", { x1: "16", y1: "17", x2: "8", y2: "17" }),
37154
+ /* @__PURE__ */ jsx126("polyline", { points: "10 9 9 9 8 9" })
37155
+ ]
37156
+ }
37157
+ ) }),
37158
+ /* @__PURE__ */ jsxs85("div", { className: "flex-1 min-w-0", children: [
37159
+ /* @__PURE__ */ jsx126("h4", { className: "text-sm font-semibold text-[var(--foreground)]", children: agent_name }),
37160
+ description && /* @__PURE__ */ jsx126("p", { className: "text-[11px] text-[var(--foreground)]/40 mt-0.5", children: description })
37161
+ ] })
37162
+ ] }) }),
37163
+ /* @__PURE__ */ jsxs85("div", { className: "px-4 py-3 space-y-3", children: [
37164
+ /* @__PURE__ */ jsxs85("div", { children: [
37165
+ /* @__PURE__ */ jsx126("p", { className: "text-[10px] font-semibold text-[var(--foreground)]/30 uppercase tracking-wider mb-1.5", children: "Instruction" }),
37166
+ /* @__PURE__ */ jsx126("div", { className: "text-xs text-[var(--foreground)]/60 leading-relaxed whitespace-pre-wrap font-mono bg-[var(--foreground)]/[0.02] border border-[var(--border-color)] rounded-lg p-3", children: displayText }),
37167
+ isLong && /* @__PURE__ */ jsx126(
37168
+ "button",
37169
+ {
37170
+ onClick: () => setIsExpanded(!isExpanded),
37171
+ className: "text-[11px] text-[var(--primary-color)] hover:underline mt-1",
37172
+ children: isExpanded ? "Show less" : "Show full instruction"
37173
+ }
37174
+ )
37175
+ ] }),
37176
+ workflow_summary && workflow_summary.length > 0 && /* @__PURE__ */ jsxs85("div", { children: [
37177
+ /* @__PURE__ */ jsx126("p", { className: "text-[10px] font-semibold text-[var(--foreground)]/30 uppercase tracking-wider mb-1.5", children: "Workflow" }),
37178
+ /* @__PURE__ */ jsx126("div", { className: "space-y-1", children: workflow_summary.map((step, idx) => /* @__PURE__ */ jsxs85("div", { className: "flex items-start gap-2 text-xs", children: [
37179
+ /* @__PURE__ */ jsx126("span", { className: "shrink-0 w-5 h-5 rounded-full bg-[var(--primary-color)]/10 flex items-center justify-center text-[10px] font-bold text-[var(--primary-color)]", children: idx + 1 }),
37180
+ /* @__PURE__ */ jsx126("span", { className: "text-[var(--foreground)]/50 mt-0.5", children: step })
37181
+ ] }, idx)) })
37182
+ ] }),
37183
+ tools && tools.length > 0 && /* @__PURE__ */ jsxs85("div", { children: [
37184
+ /* @__PURE__ */ jsx126("p", { className: "text-[10px] font-semibold text-[var(--foreground)]/30 uppercase tracking-wider mb-1.5", children: "Tools" }),
37185
+ /* @__PURE__ */ jsx126("div", { className: "flex flex-wrap gap-1.5", children: tools.map((tool) => /* @__PURE__ */ jsx126(
37186
+ "span",
37187
+ {
37188
+ className: "text-[10px] font-mono px-2 py-0.5 rounded bg-[var(--primary-color)]/[0.08] text-[var(--primary-color)]/70 border border-[var(--primary-color)]/10",
37189
+ children: tool
37190
+ },
37191
+ tool
37192
+ )) })
37193
+ ] })
37194
+ ] })
37195
+ ]
37196
+ }
37197
+ );
37198
+ };
37199
+
36603
37200
  // src/components/ui/index.ts
36604
37201
  var ui_exports = {};
36605
37202
  __export(ui_exports, {
@@ -36892,7 +37489,7 @@ __export(ui_exports, {
36892
37489
  // src/components/ui/button-group.tsx
36893
37490
  import { Slot as Slot4 } from "@radix-ui/react-slot";
36894
37491
  import { cva as cva8 } from "class-variance-authority";
36895
- import { jsx as jsx122 } from "react/jsx-runtime";
37492
+ import { jsx as jsx127 } from "react/jsx-runtime";
36896
37493
  var buttonGroupVariants = cva8(
36897
37494
  "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",
36898
37495
  {
@@ -36912,7 +37509,7 @@ function ButtonGroup({
36912
37509
  orientation,
36913
37510
  ...props
36914
37511
  }) {
36915
- return /* @__PURE__ */ jsx122(
37512
+ return /* @__PURE__ */ jsx127(
36916
37513
  "div",
36917
37514
  {
36918
37515
  role: "group",
@@ -36929,7 +37526,7 @@ function ButtonGroupText({
36929
37526
  ...props
36930
37527
  }) {
36931
37528
  const Comp = asChild ? Slot4 : "div";
36932
- return /* @__PURE__ */ jsx122(
37529
+ return /* @__PURE__ */ jsx127(
36933
37530
  Comp,
36934
37531
  {
36935
37532
  className: cn(
@@ -36945,7 +37542,7 @@ function ButtonGroupSeparator({
36945
37542
  orientation = "vertical",
36946
37543
  ...props
36947
37544
  }) {
36948
- return /* @__PURE__ */ jsx122(
37545
+ return /* @__PURE__ */ jsx127(
36949
37546
  Separator2,
36950
37547
  {
36951
37548
  "data-slot": "button-group-separator",
@@ -36961,9 +37558,9 @@ function ButtonGroupSeparator({
36961
37558
 
36962
37559
  // src/components/ui/empty.tsx
36963
37560
  import { cva as cva9 } from "class-variance-authority";
36964
- import { jsx as jsx123 } from "react/jsx-runtime";
37561
+ import { jsx as jsx128 } from "react/jsx-runtime";
36965
37562
  function Empty({ className, ...props }) {
36966
- return /* @__PURE__ */ jsx123(
37563
+ return /* @__PURE__ */ jsx128(
36967
37564
  "div",
36968
37565
  {
36969
37566
  "data-slot": "empty",
@@ -36976,7 +37573,7 @@ function Empty({ className, ...props }) {
36976
37573
  );
36977
37574
  }
36978
37575
  function EmptyHeader({ className, ...props }) {
36979
- return /* @__PURE__ */ jsx123(
37576
+ return /* @__PURE__ */ jsx128(
36980
37577
  "div",
36981
37578
  {
36982
37579
  "data-slot": "empty-header",
@@ -37007,7 +37604,7 @@ function EmptyMedia({
37007
37604
  variant = "default",
37008
37605
  ...props
37009
37606
  }) {
37010
- return /* @__PURE__ */ jsx123(
37607
+ return /* @__PURE__ */ jsx128(
37011
37608
  "div",
37012
37609
  {
37013
37610
  "data-slot": "empty-icon",
@@ -37018,7 +37615,7 @@ function EmptyMedia({
37018
37615
  );
37019
37616
  }
37020
37617
  function EmptyTitle({ className, ...props }) {
37021
- return /* @__PURE__ */ jsx123(
37618
+ return /* @__PURE__ */ jsx128(
37022
37619
  "div",
37023
37620
  {
37024
37621
  "data-slot": "empty-title",
@@ -37028,7 +37625,7 @@ function EmptyTitle({ className, ...props }) {
37028
37625
  );
37029
37626
  }
37030
37627
  function EmptyDescription({ className, ...props }) {
37031
- return /* @__PURE__ */ jsx123(
37628
+ return /* @__PURE__ */ jsx128(
37032
37629
  "div",
37033
37630
  {
37034
37631
  "data-slot": "empty-description",
@@ -37041,7 +37638,7 @@ function EmptyDescription({ className, ...props }) {
37041
37638
  );
37042
37639
  }
37043
37640
  function EmptyContent({ className, ...props }) {
37044
- return /* @__PURE__ */ jsx123(
37641
+ return /* @__PURE__ */ jsx128(
37045
37642
  "div",
37046
37643
  {
37047
37644
  "data-slot": "empty-content",
@@ -37057,9 +37654,9 @@ function EmptyContent({ className, ...props }) {
37057
37654
  // src/components/ui/field.tsx
37058
37655
  import { useMemo as useMemo9 } from "react";
37059
37656
  import { cva as cva10 } from "class-variance-authority";
37060
- import { jsx as jsx124, jsxs as jsxs81 } from "react/jsx-runtime";
37657
+ import { jsx as jsx129, jsxs as jsxs86 } from "react/jsx-runtime";
37061
37658
  function FieldSet({ className, ...props }) {
37062
- return /* @__PURE__ */ jsx124(
37659
+ return /* @__PURE__ */ jsx129(
37063
37660
  "fieldset",
37064
37661
  {
37065
37662
  "data-slot": "field-set",
@@ -37077,7 +37674,7 @@ function FieldLegend({
37077
37674
  variant = "legend",
37078
37675
  ...props
37079
37676
  }) {
37080
- return /* @__PURE__ */ jsx124(
37677
+ return /* @__PURE__ */ jsx129(
37081
37678
  "legend",
37082
37679
  {
37083
37680
  "data-slot": "field-legend",
@@ -37093,7 +37690,7 @@ function FieldLegend({
37093
37690
  );
37094
37691
  }
37095
37692
  function FieldGroup({ className, ...props }) {
37096
- return /* @__PURE__ */ jsx124(
37693
+ return /* @__PURE__ */ jsx129(
37097
37694
  "div",
37098
37695
  {
37099
37696
  "data-slot": "field-group",
@@ -37133,7 +37730,7 @@ function Field({
37133
37730
  orientation = "vertical",
37134
37731
  ...props
37135
37732
  }) {
37136
- return /* @__PURE__ */ jsx124(
37733
+ return /* @__PURE__ */ jsx129(
37137
37734
  "div",
37138
37735
  {
37139
37736
  role: "group",
@@ -37145,7 +37742,7 @@ function Field({
37145
37742
  );
37146
37743
  }
37147
37744
  function FieldContent({ className, ...props }) {
37148
- return /* @__PURE__ */ jsx124(
37745
+ return /* @__PURE__ */ jsx129(
37149
37746
  "div",
37150
37747
  {
37151
37748
  "data-slot": "field-content",
@@ -37161,7 +37758,7 @@ function FieldLabel({
37161
37758
  className,
37162
37759
  ...props
37163
37760
  }) {
37164
- return /* @__PURE__ */ jsx124(
37761
+ return /* @__PURE__ */ jsx129(
37165
37762
  Label,
37166
37763
  {
37167
37764
  "data-slot": "field-label",
@@ -37176,7 +37773,7 @@ function FieldLabel({
37176
37773
  );
37177
37774
  }
37178
37775
  function FieldTitle({ className, ...props }) {
37179
- return /* @__PURE__ */ jsx124(
37776
+ return /* @__PURE__ */ jsx129(
37180
37777
  "div",
37181
37778
  {
37182
37779
  "data-slot": "field-label",
@@ -37189,7 +37786,7 @@ function FieldTitle({ className, ...props }) {
37189
37786
  );
37190
37787
  }
37191
37788
  function FieldDescription({ className, ...props }) {
37192
- return /* @__PURE__ */ jsx124(
37789
+ return /* @__PURE__ */ jsx129(
37193
37790
  "p",
37194
37791
  {
37195
37792
  "data-slot": "field-description",
@@ -37208,7 +37805,7 @@ function FieldSeparator({
37208
37805
  className,
37209
37806
  ...props
37210
37807
  }) {
37211
- return /* @__PURE__ */ jsxs81(
37808
+ return /* @__PURE__ */ jsxs86(
37212
37809
  "div",
37213
37810
  {
37214
37811
  "data-slot": "field-separator",
@@ -37219,8 +37816,8 @@ function FieldSeparator({
37219
37816
  ),
37220
37817
  ...props,
37221
37818
  children: [
37222
- /* @__PURE__ */ jsx124(Separator2, { className: "absolute inset-0 top-1/2" }),
37223
- children && /* @__PURE__ */ jsx124(
37819
+ /* @__PURE__ */ jsx129(Separator2, { className: "absolute inset-0 top-1/2" }),
37820
+ children && /* @__PURE__ */ jsx129(
37224
37821
  "span",
37225
37822
  {
37226
37823
  className: "bg-background text-muted-foreground relative mx-auto block w-fit px-2",
@@ -37248,14 +37845,14 @@ function FieldError({
37248
37845
  if (errors?.length === 1 && errors[0]?.message) {
37249
37846
  return errors[0].message;
37250
37847
  }
37251
- return /* @__PURE__ */ jsx124("ul", { className: "ml-4 flex list-disc flex-col gap-1", children: errors.map(
37252
- (error, index) => error?.message && /* @__PURE__ */ jsx124("li", { children: error.message }, index)
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)
37253
37850
  ) });
37254
37851
  }, [children, errors]);
37255
37852
  if (!content) {
37256
37853
  return null;
37257
37854
  }
37258
- return /* @__PURE__ */ jsx124(
37855
+ return /* @__PURE__ */ jsx129(
37259
37856
  "div",
37260
37857
  {
37261
37858
  role: "alert",
@@ -37269,9 +37866,9 @@ function FieldError({
37269
37866
 
37270
37867
  // src/components/ui/input-group.tsx
37271
37868
  import { cva as cva11 } from "class-variance-authority";
37272
- import { jsx as jsx125 } from "react/jsx-runtime";
37869
+ import { jsx as jsx130 } from "react/jsx-runtime";
37273
37870
  function InputGroup({ className, ...props }) {
37274
- return /* @__PURE__ */ jsx125(
37871
+ return /* @__PURE__ */ jsx130(
37275
37872
  "div",
37276
37873
  {
37277
37874
  "data-slot": "input-group",
@@ -37315,7 +37912,7 @@ function InputGroupAddon({
37315
37912
  align = "inline-start",
37316
37913
  ...props
37317
37914
  }) {
37318
- return /* @__PURE__ */ jsx125(
37915
+ return /* @__PURE__ */ jsx130(
37319
37916
  "div",
37320
37917
  {
37321
37918
  role: "group",
@@ -37355,7 +37952,7 @@ function InputGroupButton({
37355
37952
  size = "xs",
37356
37953
  ...props
37357
37954
  }) {
37358
- return /* @__PURE__ */ jsx125(
37955
+ return /* @__PURE__ */ jsx130(
37359
37956
  Button,
37360
37957
  {
37361
37958
  type,
@@ -37367,7 +37964,7 @@ function InputGroupButton({
37367
37964
  );
37368
37965
  }
37369
37966
  function InputGroupText({ className, ...props }) {
37370
- return /* @__PURE__ */ jsx125(
37967
+ return /* @__PURE__ */ jsx130(
37371
37968
  "span",
37372
37969
  {
37373
37970
  className: cn(
@@ -37382,7 +37979,7 @@ function InputGroupInput({
37382
37979
  className,
37383
37980
  ...props
37384
37981
  }) {
37385
- return /* @__PURE__ */ jsx125(
37982
+ return /* @__PURE__ */ jsx130(
37386
37983
  Input,
37387
37984
  {
37388
37985
  "data-slot": "input-group-control",
@@ -37398,7 +37995,7 @@ function InputGroupTextarea({
37398
37995
  className,
37399
37996
  ...props
37400
37997
  }) {
37401
- return /* @__PURE__ */ jsx125(
37998
+ return /* @__PURE__ */ jsx130(
37402
37999
  Textarea,
37403
38000
  {
37404
38001
  "data-slot": "input-group-control",
@@ -37414,9 +38011,9 @@ function InputGroupTextarea({
37414
38011
  // src/components/ui/item.tsx
37415
38012
  import { Slot as Slot5 } from "@radix-ui/react-slot";
37416
38013
  import { cva as cva12 } from "class-variance-authority";
37417
- import { jsx as jsx126 } from "react/jsx-runtime";
38014
+ import { jsx as jsx131 } from "react/jsx-runtime";
37418
38015
  function ItemGroup({ className, ...props }) {
37419
- return /* @__PURE__ */ jsx126(
38016
+ return /* @__PURE__ */ jsx131(
37420
38017
  "div",
37421
38018
  {
37422
38019
  role: "list",
@@ -37430,7 +38027,7 @@ function ItemSeparator({
37430
38027
  className,
37431
38028
  ...props
37432
38029
  }) {
37433
- return /* @__PURE__ */ jsx126(
38030
+ return /* @__PURE__ */ jsx131(
37434
38031
  Separator2,
37435
38032
  {
37436
38033
  "data-slot": "item-separator",
@@ -37468,7 +38065,7 @@ function Item8({
37468
38065
  ...props
37469
38066
  }) {
37470
38067
  const Comp = asChild ? Slot5 : "div";
37471
- return /* @__PURE__ */ jsx126(
38068
+ return /* @__PURE__ */ jsx131(
37472
38069
  Comp,
37473
38070
  {
37474
38071
  "data-slot": "item",
@@ -37499,7 +38096,7 @@ function ItemMedia({
37499
38096
  variant = "default",
37500
38097
  ...props
37501
38098
  }) {
37502
- return /* @__PURE__ */ jsx126(
38099
+ return /* @__PURE__ */ jsx131(
37503
38100
  "div",
37504
38101
  {
37505
38102
  "data-slot": "item-media",
@@ -37510,7 +38107,7 @@ function ItemMedia({
37510
38107
  );
37511
38108
  }
37512
38109
  function ItemContent({ className, ...props }) {
37513
- return /* @__PURE__ */ jsx126(
38110
+ return /* @__PURE__ */ jsx131(
37514
38111
  "div",
37515
38112
  {
37516
38113
  "data-slot": "item-content",
@@ -37523,7 +38120,7 @@ function ItemContent({ className, ...props }) {
37523
38120
  );
37524
38121
  }
37525
38122
  function ItemTitle({ className, ...props }) {
37526
- return /* @__PURE__ */ jsx126(
38123
+ return /* @__PURE__ */ jsx131(
37527
38124
  "div",
37528
38125
  {
37529
38126
  "data-slot": "item-title",
@@ -37536,7 +38133,7 @@ function ItemTitle({ className, ...props }) {
37536
38133
  );
37537
38134
  }
37538
38135
  function ItemDescription({ className, ...props }) {
37539
- return /* @__PURE__ */ jsx126(
38136
+ return /* @__PURE__ */ jsx131(
37540
38137
  "p",
37541
38138
  {
37542
38139
  "data-slot": "item-description",
@@ -37550,7 +38147,7 @@ function ItemDescription({ className, ...props }) {
37550
38147
  );
37551
38148
  }
37552
38149
  function ItemActions({ className, ...props }) {
37553
- return /* @__PURE__ */ jsx126(
38150
+ return /* @__PURE__ */ jsx131(
37554
38151
  "div",
37555
38152
  {
37556
38153
  "data-slot": "item-actions",
@@ -37560,7 +38157,7 @@ function ItemActions({ className, ...props }) {
37560
38157
  );
37561
38158
  }
37562
38159
  function ItemHeader({ className, ...props }) {
37563
- return /* @__PURE__ */ jsx126(
38160
+ return /* @__PURE__ */ jsx131(
37564
38161
  "div",
37565
38162
  {
37566
38163
  "data-slot": "item-header",
@@ -37573,7 +38170,7 @@ function ItemHeader({ className, ...props }) {
37573
38170
  );
37574
38171
  }
37575
38172
  function ItemFooter({ className, ...props }) {
37576
- return /* @__PURE__ */ jsx126(
38173
+ return /* @__PURE__ */ jsx131(
37577
38174
  "div",
37578
38175
  {
37579
38176
  "data-slot": "item-footer",
@@ -37587,9 +38184,9 @@ function ItemFooter({ className, ...props }) {
37587
38184
  }
37588
38185
 
37589
38186
  // src/components/ui/kbd.tsx
37590
- import { jsx as jsx127 } from "react/jsx-runtime";
38187
+ import { jsx as jsx132 } from "react/jsx-runtime";
37591
38188
  function Kbd({ className, ...props }) {
37592
- return /* @__PURE__ */ jsx127(
38189
+ return /* @__PURE__ */ jsx132(
37593
38190
  "kbd",
37594
38191
  {
37595
38192
  "data-slot": "kbd",
@@ -37604,7 +38201,7 @@ function Kbd({ className, ...props }) {
37604
38201
  );
37605
38202
  }
37606
38203
  function KbdGroup({ className, ...props }) {
37607
- return /* @__PURE__ */ jsx127(
38204
+ return /* @__PURE__ */ jsx132(
37608
38205
  "kbd",
37609
38206
  {
37610
38207
  "data-slot": "kbd-group",
@@ -37615,16 +38212,16 @@ function KbdGroup({ className, ...props }) {
37615
38212
  }
37616
38213
 
37617
38214
  // src/components/ui/sidebar.tsx
37618
- import * as React96 from "react";
38215
+ import * as React99 from "react";
37619
38216
  import { Slot as Slot6 } from "@radix-ui/react-slot";
37620
38217
  import { cva as cva13 } from "class-variance-authority";
37621
38218
 
37622
38219
  // src/hooks/use-mobile.tsx
37623
- import * as React95 from "react";
38220
+ import * as React98 from "react";
37624
38221
  var MOBILE_BREAKPOINT = 768;
37625
38222
  function useIsMobile() {
37626
- const [isMobile, setIsMobile] = React95.useState(void 0);
37627
- React95.useEffect(() => {
38223
+ const [isMobile, setIsMobile] = React98.useState(void 0);
38224
+ React98.useEffect(() => {
37628
38225
  const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);
37629
38226
  const onChange = () => {
37630
38227
  setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
@@ -37637,22 +38234,22 @@ function useIsMobile() {
37637
38234
  }
37638
38235
 
37639
38236
  // src/components/ui/sidebar.tsx
37640
- import { jsx as jsx128, jsxs as jsxs82 } from "react/jsx-runtime";
38237
+ import { jsx as jsx133, jsxs as jsxs87 } from "react/jsx-runtime";
37641
38238
  var SIDEBAR_COOKIE_NAME = "sidebar_state";
37642
38239
  var SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;
37643
38240
  var SIDEBAR_WIDTH = "16rem";
37644
38241
  var SIDEBAR_WIDTH_MOBILE = "18rem";
37645
38242
  var SIDEBAR_WIDTH_ICON = "3rem";
37646
38243
  var SIDEBAR_KEYBOARD_SHORTCUT = "b";
37647
- var SidebarContext = React96.createContext(null);
38244
+ var SidebarContext = React99.createContext(null);
37648
38245
  function useSidebar() {
37649
- const context = React96.useContext(SidebarContext);
38246
+ const context = React99.useContext(SidebarContext);
37650
38247
  if (!context) {
37651
38248
  throw new Error("useSidebar must be used within a SidebarProvider.");
37652
38249
  }
37653
38250
  return context;
37654
38251
  }
37655
- var SidebarProvider = React96.forwardRef(
38252
+ var SidebarProvider = React99.forwardRef(
37656
38253
  ({
37657
38254
  defaultOpen = true,
37658
38255
  open: openProp,
@@ -37663,10 +38260,10 @@ var SidebarProvider = React96.forwardRef(
37663
38260
  ...props
37664
38261
  }, ref) => {
37665
38262
  const isMobile = useIsMobile();
37666
- const [openMobile, setOpenMobile] = React96.useState(false);
37667
- const [_open, _setOpen] = React96.useState(defaultOpen);
38263
+ const [openMobile, setOpenMobile] = React99.useState(false);
38264
+ const [_open, _setOpen] = React99.useState(defaultOpen);
37668
38265
  const open = openProp ?? _open;
37669
- const setOpen = React96.useCallback(
38266
+ const setOpen = React99.useCallback(
37670
38267
  (value) => {
37671
38268
  const openState = typeof value === "function" ? value(open) : value;
37672
38269
  if (setOpenProp) {
@@ -37678,10 +38275,10 @@ var SidebarProvider = React96.forwardRef(
37678
38275
  },
37679
38276
  [setOpenProp, open]
37680
38277
  );
37681
- const toggleSidebar = React96.useCallback(() => {
38278
+ const toggleSidebar = React99.useCallback(() => {
37682
38279
  return isMobile ? setOpenMobile((open2) => !open2) : setOpen((open2) => !open2);
37683
38280
  }, [isMobile, setOpen, setOpenMobile]);
37684
- React96.useEffect(() => {
38281
+ React99.useEffect(() => {
37685
38282
  const handleKeyDown = (event) => {
37686
38283
  if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {
37687
38284
  event.preventDefault();
@@ -37692,7 +38289,7 @@ var SidebarProvider = React96.forwardRef(
37692
38289
  return () => window.removeEventListener("keydown", handleKeyDown);
37693
38290
  }, [toggleSidebar]);
37694
38291
  const state = open ? "expanded" : "collapsed";
37695
- const contextValue = React96.useMemo(
38292
+ const contextValue = React99.useMemo(
37696
38293
  () => ({
37697
38294
  state,
37698
38295
  open,
@@ -37704,7 +38301,7 @@ var SidebarProvider = React96.forwardRef(
37704
38301
  }),
37705
38302
  [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]
37706
38303
  );
37707
- return /* @__PURE__ */ jsx128(SidebarContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx128(TooltipProvider, { delayDuration: 0, children: /* @__PURE__ */ jsx128(
38304
+ return /* @__PURE__ */ jsx133(SidebarContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx133(TooltipProvider, { delayDuration: 0, children: /* @__PURE__ */ jsx133(
37708
38305
  "div",
37709
38306
  {
37710
38307
  style: {
@@ -37724,7 +38321,7 @@ var SidebarProvider = React96.forwardRef(
37724
38321
  }
37725
38322
  );
37726
38323
  SidebarProvider.displayName = "SidebarProvider";
37727
- var Sidebar = React96.forwardRef(
38324
+ var Sidebar = React99.forwardRef(
37728
38325
  ({
37729
38326
  side = "left",
37730
38327
  variant = "sidebar",
@@ -37735,7 +38332,7 @@ var Sidebar = React96.forwardRef(
37735
38332
  }, ref) => {
37736
38333
  const { isMobile, state, openMobile, setOpenMobile } = useSidebar();
37737
38334
  if (collapsible === "none") {
37738
- return /* @__PURE__ */ jsx128(
38335
+ return /* @__PURE__ */ jsx133(
37739
38336
  "div",
37740
38337
  {
37741
38338
  className: cn(
@@ -37749,7 +38346,7 @@ var Sidebar = React96.forwardRef(
37749
38346
  );
37750
38347
  }
37751
38348
  if (isMobile) {
37752
- return /* @__PURE__ */ jsx128(Sheet2, { open: openMobile, onOpenChange: setOpenMobile, ...props, children: /* @__PURE__ */ jsxs82(
38349
+ return /* @__PURE__ */ jsx133(Sheet2, { open: openMobile, onOpenChange: setOpenMobile, ...props, children: /* @__PURE__ */ jsxs87(
37753
38350
  SheetContent,
37754
38351
  {
37755
38352
  "data-sidebar": "sidebar",
@@ -37760,16 +38357,16 @@ var Sidebar = React96.forwardRef(
37760
38357
  },
37761
38358
  side,
37762
38359
  children: [
37763
- /* @__PURE__ */ jsxs82(SheetHeader, { className: "sr-only", children: [
37764
- /* @__PURE__ */ jsx128(SheetTitle, { children: "Sidebar" }),
37765
- /* @__PURE__ */ jsx128(SheetDescription, { children: "Displays the mobile sidebar." })
38360
+ /* @__PURE__ */ jsxs87(SheetHeader, { className: "sr-only", children: [
38361
+ /* @__PURE__ */ jsx133(SheetTitle, { children: "Sidebar" }),
38362
+ /* @__PURE__ */ jsx133(SheetDescription, { children: "Displays the mobile sidebar." })
37766
38363
  ] }),
37767
- /* @__PURE__ */ jsx128("div", { className: "flex h-full w-full flex-col", children })
38364
+ /* @__PURE__ */ jsx133("div", { className: "flex h-full w-full flex-col", children })
37768
38365
  ]
37769
38366
  }
37770
38367
  ) });
37771
38368
  }
37772
- return /* @__PURE__ */ jsxs82(
38369
+ return /* @__PURE__ */ jsxs87(
37773
38370
  "div",
37774
38371
  {
37775
38372
  ref,
@@ -37779,7 +38376,7 @@ var Sidebar = React96.forwardRef(
37779
38376
  "data-variant": variant,
37780
38377
  "data-side": side,
37781
38378
  children: [
37782
- /* @__PURE__ */ jsx128(
38379
+ /* @__PURE__ */ jsx133(
37783
38380
  "div",
37784
38381
  {
37785
38382
  className: cn(
@@ -37790,7 +38387,7 @@ var Sidebar = React96.forwardRef(
37790
38387
  )
37791
38388
  }
37792
38389
  ),
37793
- /* @__PURE__ */ jsx128(
38390
+ /* @__PURE__ */ jsx133(
37794
38391
  "div",
37795
38392
  {
37796
38393
  className: cn(
@@ -37801,7 +38398,7 @@ var Sidebar = React96.forwardRef(
37801
38398
  className
37802
38399
  ),
37803
38400
  ...props,
37804
- children: /* @__PURE__ */ jsx128(
38401
+ children: /* @__PURE__ */ jsx133(
37805
38402
  "div",
37806
38403
  {
37807
38404
  "data-sidebar": "sidebar",
@@ -37817,9 +38414,9 @@ var Sidebar = React96.forwardRef(
37817
38414
  }
37818
38415
  );
37819
38416
  Sidebar.displayName = "Sidebar";
37820
- var SidebarTrigger = React96.forwardRef(({ className, onClick, ...props }, ref) => {
38417
+ var SidebarTrigger = React99.forwardRef(({ className, onClick, ...props }, ref) => {
37821
38418
  const { toggleSidebar } = useSidebar();
37822
- return /* @__PURE__ */ jsxs82(
38419
+ return /* @__PURE__ */ jsxs87(
37823
38420
  Button,
37824
38421
  {
37825
38422
  ref,
@@ -37833,16 +38430,16 @@ var SidebarTrigger = React96.forwardRef(({ className, onClick, ...props }, ref)
37833
38430
  },
37834
38431
  ...props,
37835
38432
  children: [
37836
- /* @__PURE__ */ jsx128(PanelLeft, {}),
37837
- /* @__PURE__ */ jsx128("span", { className: "sr-only", children: "Toggle Sidebar" })
38433
+ /* @__PURE__ */ jsx133(PanelLeft, {}),
38434
+ /* @__PURE__ */ jsx133("span", { className: "sr-only", children: "Toggle Sidebar" })
37838
38435
  ]
37839
38436
  }
37840
38437
  );
37841
38438
  });
37842
38439
  SidebarTrigger.displayName = "SidebarTrigger";
37843
- var SidebarRail = React96.forwardRef(({ className, ...props }, ref) => {
38440
+ var SidebarRail = React99.forwardRef(({ className, ...props }, ref) => {
37844
38441
  const { toggleSidebar } = useSidebar();
37845
- return /* @__PURE__ */ jsx128(
38442
+ return /* @__PURE__ */ jsx133(
37846
38443
  "button",
37847
38444
  {
37848
38445
  ref,
@@ -37865,8 +38462,8 @@ var SidebarRail = React96.forwardRef(({ className, ...props }, ref) => {
37865
38462
  );
37866
38463
  });
37867
38464
  SidebarRail.displayName = "SidebarRail";
37868
- var SidebarInset = React96.forwardRef(({ className, ...props }, ref) => {
37869
- return /* @__PURE__ */ jsx128(
38465
+ var SidebarInset = React99.forwardRef(({ className, ...props }, ref) => {
38466
+ return /* @__PURE__ */ jsx133(
37870
38467
  "main",
37871
38468
  {
37872
38469
  ref,
@@ -37880,8 +38477,8 @@ var SidebarInset = React96.forwardRef(({ className, ...props }, ref) => {
37880
38477
  );
37881
38478
  });
37882
38479
  SidebarInset.displayName = "SidebarInset";
37883
- var SidebarInput = React96.forwardRef(({ className, ...props }, ref) => {
37884
- return /* @__PURE__ */ jsx128(
38480
+ var SidebarInput = React99.forwardRef(({ className, ...props }, ref) => {
38481
+ return /* @__PURE__ */ jsx133(
37885
38482
  Input,
37886
38483
  {
37887
38484
  ref,
@@ -37895,8 +38492,8 @@ var SidebarInput = React96.forwardRef(({ className, ...props }, ref) => {
37895
38492
  );
37896
38493
  });
37897
38494
  SidebarInput.displayName = "SidebarInput";
37898
- var SidebarHeader = React96.forwardRef(({ className, ...props }, ref) => {
37899
- return /* @__PURE__ */ jsx128(
38495
+ var SidebarHeader = React99.forwardRef(({ className, ...props }, ref) => {
38496
+ return /* @__PURE__ */ jsx133(
37900
38497
  "div",
37901
38498
  {
37902
38499
  ref,
@@ -37907,8 +38504,8 @@ var SidebarHeader = React96.forwardRef(({ className, ...props }, ref) => {
37907
38504
  );
37908
38505
  });
37909
38506
  SidebarHeader.displayName = "SidebarHeader";
37910
- var SidebarFooter = React96.forwardRef(({ className, ...props }, ref) => {
37911
- return /* @__PURE__ */ jsx128(
38507
+ var SidebarFooter = React99.forwardRef(({ className, ...props }, ref) => {
38508
+ return /* @__PURE__ */ jsx133(
37912
38509
  "div",
37913
38510
  {
37914
38511
  ref,
@@ -37919,8 +38516,8 @@ var SidebarFooter = React96.forwardRef(({ className, ...props }, ref) => {
37919
38516
  );
37920
38517
  });
37921
38518
  SidebarFooter.displayName = "SidebarFooter";
37922
- var SidebarSeparator = React96.forwardRef(({ className, ...props }, ref) => {
37923
- return /* @__PURE__ */ jsx128(
38519
+ var SidebarSeparator = React99.forwardRef(({ className, ...props }, ref) => {
38520
+ return /* @__PURE__ */ jsx133(
37924
38521
  Separator2,
37925
38522
  {
37926
38523
  ref,
@@ -37931,8 +38528,8 @@ var SidebarSeparator = React96.forwardRef(({ className, ...props }, ref) => {
37931
38528
  );
37932
38529
  });
37933
38530
  SidebarSeparator.displayName = "SidebarSeparator";
37934
- var SidebarContent = React96.forwardRef(({ className, ...props }, ref) => {
37935
- return /* @__PURE__ */ jsx128(
38531
+ var SidebarContent = React99.forwardRef(({ className, ...props }, ref) => {
38532
+ return /* @__PURE__ */ jsx133(
37936
38533
  "div",
37937
38534
  {
37938
38535
  ref,
@@ -37946,8 +38543,8 @@ var SidebarContent = React96.forwardRef(({ className, ...props }, ref) => {
37946
38543
  );
37947
38544
  });
37948
38545
  SidebarContent.displayName = "SidebarContent";
37949
- var SidebarGroup = React96.forwardRef(({ className, ...props }, ref) => {
37950
- return /* @__PURE__ */ jsx128(
38546
+ var SidebarGroup = React99.forwardRef(({ className, ...props }, ref) => {
38547
+ return /* @__PURE__ */ jsx133(
37951
38548
  "div",
37952
38549
  {
37953
38550
  ref,
@@ -37958,9 +38555,9 @@ var SidebarGroup = React96.forwardRef(({ className, ...props }, ref) => {
37958
38555
  );
37959
38556
  });
37960
38557
  SidebarGroup.displayName = "SidebarGroup";
37961
- var SidebarGroupLabel = React96.forwardRef(({ className, asChild = false, ...props }, ref) => {
38558
+ var SidebarGroupLabel = React99.forwardRef(({ className, asChild = false, ...props }, ref) => {
37962
38559
  const Comp = asChild ? Slot6 : "div";
37963
- return /* @__PURE__ */ jsx128(
38560
+ return /* @__PURE__ */ jsx133(
37964
38561
  Comp,
37965
38562
  {
37966
38563
  ref,
@@ -37975,9 +38572,9 @@ var SidebarGroupLabel = React96.forwardRef(({ className, asChild = false, ...pro
37975
38572
  );
37976
38573
  });
37977
38574
  SidebarGroupLabel.displayName = "SidebarGroupLabel";
37978
- var SidebarGroupAction = React96.forwardRef(({ className, asChild = false, ...props }, ref) => {
38575
+ var SidebarGroupAction = React99.forwardRef(({ className, asChild = false, ...props }, ref) => {
37979
38576
  const Comp = asChild ? Slot6 : "button";
37980
- return /* @__PURE__ */ jsx128(
38577
+ return /* @__PURE__ */ jsx133(
37981
38578
  Comp,
37982
38579
  {
37983
38580
  ref,
@@ -37994,7 +38591,7 @@ var SidebarGroupAction = React96.forwardRef(({ className, asChild = false, ...pr
37994
38591
  );
37995
38592
  });
37996
38593
  SidebarGroupAction.displayName = "SidebarGroupAction";
37997
- var SidebarGroupContent = React96.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx128(
38594
+ var SidebarGroupContent = React99.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx133(
37998
38595
  "div",
37999
38596
  {
38000
38597
  ref,
@@ -38004,7 +38601,7 @@ var SidebarGroupContent = React96.forwardRef(({ className, ...props }, ref) => /
38004
38601
  }
38005
38602
  ));
38006
38603
  SidebarGroupContent.displayName = "SidebarGroupContent";
38007
- var SidebarMenu = React96.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx128(
38604
+ var SidebarMenu = React99.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx133(
38008
38605
  "ul",
38009
38606
  {
38010
38607
  ref,
@@ -38014,7 +38611,7 @@ var SidebarMenu = React96.forwardRef(({ className, ...props }, ref) => /* @__PUR
38014
38611
  }
38015
38612
  ));
38016
38613
  SidebarMenu.displayName = "SidebarMenu";
38017
- var SidebarMenuItem = React96.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx128(
38614
+ var SidebarMenuItem = React99.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx133(
38018
38615
  "li",
38019
38616
  {
38020
38617
  ref,
@@ -38044,7 +38641,7 @@ var sidebarMenuButtonVariants = cva13(
38044
38641
  }
38045
38642
  }
38046
38643
  );
38047
- var SidebarMenuButton = React96.forwardRef(
38644
+ var SidebarMenuButton = React99.forwardRef(
38048
38645
  ({
38049
38646
  asChild = false,
38050
38647
  isActive = false,
@@ -38056,7 +38653,7 @@ var SidebarMenuButton = React96.forwardRef(
38056
38653
  }, ref) => {
38057
38654
  const Comp = asChild ? Slot6 : "button";
38058
38655
  const { isMobile, state } = useSidebar();
38059
- const button = /* @__PURE__ */ jsx128(
38656
+ const button = /* @__PURE__ */ jsx133(
38060
38657
  Comp,
38061
38658
  {
38062
38659
  ref,
@@ -38075,9 +38672,9 @@ var SidebarMenuButton = React96.forwardRef(
38075
38672
  children: tooltip
38076
38673
  };
38077
38674
  }
38078
- return /* @__PURE__ */ jsxs82(Tooltip, { children: [
38079
- /* @__PURE__ */ jsx128(TooltipTrigger, { asChild: true, children: button }),
38080
- /* @__PURE__ */ jsx128(
38675
+ return /* @__PURE__ */ jsxs87(Tooltip, { children: [
38676
+ /* @__PURE__ */ jsx133(TooltipTrigger, { asChild: true, children: button }),
38677
+ /* @__PURE__ */ jsx133(
38081
38678
  TooltipContent,
38082
38679
  {
38083
38680
  side: "right",
@@ -38090,9 +38687,9 @@ var SidebarMenuButton = React96.forwardRef(
38090
38687
  }
38091
38688
  );
38092
38689
  SidebarMenuButton.displayName = "SidebarMenuButton";
38093
- var SidebarMenuAction = React96.forwardRef(({ className, asChild = false, showOnHover = false, ...props }, ref) => {
38690
+ var SidebarMenuAction = React99.forwardRef(({ className, asChild = false, showOnHover = false, ...props }, ref) => {
38094
38691
  const Comp = asChild ? Slot6 : "button";
38095
- return /* @__PURE__ */ jsx128(
38692
+ return /* @__PURE__ */ jsx133(
38096
38693
  Comp,
38097
38694
  {
38098
38695
  ref,
@@ -38113,7 +38710,7 @@ var SidebarMenuAction = React96.forwardRef(({ className, asChild = false, showOn
38113
38710
  );
38114
38711
  });
38115
38712
  SidebarMenuAction.displayName = "SidebarMenuAction";
38116
- var SidebarMenuBadge = React96.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx128(
38713
+ var SidebarMenuBadge = React99.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx133(
38117
38714
  "div",
38118
38715
  {
38119
38716
  ref,
@@ -38131,11 +38728,11 @@ var SidebarMenuBadge = React96.forwardRef(({ className, ...props }, ref) => /* @
38131
38728
  }
38132
38729
  ));
38133
38730
  SidebarMenuBadge.displayName = "SidebarMenuBadge";
38134
- var SidebarMenuSkeleton = React96.forwardRef(({ className, showIcon = false, ...props }, ref) => {
38135
- const width = React96.useMemo(() => {
38731
+ var SidebarMenuSkeleton = React99.forwardRef(({ className, showIcon = false, ...props }, ref) => {
38732
+ const width = React99.useMemo(() => {
38136
38733
  return `${Math.floor(Math.random() * 40) + 50}%`;
38137
38734
  }, []);
38138
- return /* @__PURE__ */ jsxs82(
38735
+ return /* @__PURE__ */ jsxs87(
38139
38736
  "div",
38140
38737
  {
38141
38738
  ref,
@@ -38143,14 +38740,14 @@ var SidebarMenuSkeleton = React96.forwardRef(({ className, showIcon = false, ...
38143
38740
  className: cn("flex h-8 items-center gap-2 rounded-md px-2", className),
38144
38741
  ...props,
38145
38742
  children: [
38146
- showIcon && /* @__PURE__ */ jsx128(
38743
+ showIcon && /* @__PURE__ */ jsx133(
38147
38744
  Skeleton,
38148
38745
  {
38149
38746
  className: "size-4 rounded-md",
38150
38747
  "data-sidebar": "menu-skeleton-icon"
38151
38748
  }
38152
38749
  ),
38153
- /* @__PURE__ */ jsx128(
38750
+ /* @__PURE__ */ jsx133(
38154
38751
  Skeleton,
38155
38752
  {
38156
38753
  className: "h-4 max-w-[--skeleton-width] flex-1",
@@ -38165,7 +38762,7 @@ var SidebarMenuSkeleton = React96.forwardRef(({ className, showIcon = false, ...
38165
38762
  );
38166
38763
  });
38167
38764
  SidebarMenuSkeleton.displayName = "SidebarMenuSkeleton";
38168
- var SidebarMenuSub = React96.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx128(
38765
+ var SidebarMenuSub = React99.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx133(
38169
38766
  "ul",
38170
38767
  {
38171
38768
  ref,
@@ -38179,11 +38776,11 @@ var SidebarMenuSub = React96.forwardRef(({ className, ...props }, ref) => /* @__
38179
38776
  }
38180
38777
  ));
38181
38778
  SidebarMenuSub.displayName = "SidebarMenuSub";
38182
- var SidebarMenuSubItem = React96.forwardRef(({ ...props }, ref) => /* @__PURE__ */ jsx128("li", { ref, ...props }));
38779
+ var SidebarMenuSubItem = React99.forwardRef(({ ...props }, ref) => /* @__PURE__ */ jsx133("li", { ref, ...props }));
38183
38780
  SidebarMenuSubItem.displayName = "SidebarMenuSubItem";
38184
- var SidebarMenuSubButton = React96.forwardRef(({ asChild = false, size = "md", isActive, className, ...props }, ref) => {
38781
+ var SidebarMenuSubButton = React99.forwardRef(({ asChild = false, size = "md", isActive, className, ...props }, ref) => {
38185
38782
  const Comp = asChild ? Slot6 : "a";
38186
- return /* @__PURE__ */ jsx128(
38783
+ return /* @__PURE__ */ jsx133(
38187
38784
  Comp,
38188
38785
  {
38189
38786
  ref,
@@ -38207,20 +38804,20 @@ SidebarMenuSubButton.displayName = "SidebarMenuSubButton";
38207
38804
  // src/components/ui/sonner.tsx
38208
38805
  import { useTheme } from "next-themes";
38209
38806
  import { Toaster as Sonner } from "sonner";
38210
- import { jsx as jsx129 } from "react/jsx-runtime";
38807
+ import { jsx as jsx134 } from "react/jsx-runtime";
38211
38808
  var Toaster = ({ ...props }) => {
38212
38809
  const { theme = "system" } = useTheme();
38213
- return /* @__PURE__ */ jsx129(
38810
+ return /* @__PURE__ */ jsx134(
38214
38811
  Sonner,
38215
38812
  {
38216
38813
  theme,
38217
38814
  className: "toaster group",
38218
38815
  icons: {
38219
- success: /* @__PURE__ */ jsx129(CircleCheck, { className: "h-4 w-4" }),
38220
- info: /* @__PURE__ */ jsx129(Info, { className: "h-4 w-4" }),
38221
- warning: /* @__PURE__ */ jsx129(TriangleAlert, { className: "h-4 w-4" }),
38222
- error: /* @__PURE__ */ jsx129(OctagonX, { className: "h-4 w-4" }),
38223
- loading: /* @__PURE__ */ jsx129(LoaderCircle, { className: "h-4 w-4 animate-spin" })
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" })
38224
38821
  },
38225
38822
  toastOptions: {
38226
38823
  classNames: {
@@ -38236,26 +38833,26 @@ var Toaster = ({ ...props }) => {
38236
38833
  };
38237
38834
 
38238
38835
  // src/components/ui/toggle-group.tsx
38239
- import * as React97 from "react";
38836
+ import * as React100 from "react";
38240
38837
  import * as ToggleGroupPrimitive from "@radix-ui/react-toggle-group";
38241
- import { jsx as jsx130 } from "react/jsx-runtime";
38242
- var ToggleGroupContext = React97.createContext({
38838
+ import { jsx as jsx135 } from "react/jsx-runtime";
38839
+ var ToggleGroupContext = React100.createContext({
38243
38840
  size: "default",
38244
38841
  variant: "default"
38245
38842
  });
38246
- var ToggleGroup = React97.forwardRef(({ className, variant, size, children, ...props }, ref) => /* @__PURE__ */ jsx130(
38843
+ var ToggleGroup = React100.forwardRef(({ className, variant, size, children, ...props }, ref) => /* @__PURE__ */ jsx135(
38247
38844
  ToggleGroupPrimitive.Root,
38248
38845
  {
38249
38846
  ref,
38250
38847
  className: cn("flex items-center justify-center gap-1", className),
38251
38848
  ...props,
38252
- children: /* @__PURE__ */ jsx130(ToggleGroupContext.Provider, { value: { variant, size }, children })
38849
+ children: /* @__PURE__ */ jsx135(ToggleGroupContext.Provider, { value: { variant, size }, children })
38253
38850
  }
38254
38851
  ));
38255
38852
  ToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName;
38256
- var ToggleGroupItem = React97.forwardRef(({ className, children, variant, size, ...props }, ref) => {
38257
- const context = React97.useContext(ToggleGroupContext);
38258
- return /* @__PURE__ */ jsx130(
38853
+ var ToggleGroupItem = React100.forwardRef(({ className, children, variant, size, ...props }, ref) => {
38854
+ const context = React100.useContext(ToggleGroupContext);
38855
+ return /* @__PURE__ */ jsx135(
38259
38856
  ToggleGroupPrimitive.Item,
38260
38857
  {
38261
38858
  ref,
@@ -38274,7 +38871,7 @@ var ToggleGroupItem = React97.forwardRef(({ className, children, variant, size,
38274
38871
  ToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName;
38275
38872
 
38276
38873
  // src/render/PXEngineRenderer.tsx
38277
- import { jsx as jsx131, jsxs as jsxs83 } from "react/jsx-runtime";
38874
+ import { jsx as jsx136, jsxs as jsxs88 } from "react/jsx-runtime";
38278
38875
  var CONTEXT_DEPENDENT_COMPONENTS = /* @__PURE__ */ new Set([
38279
38876
  // Form components - require FormField + FormItem context
38280
38877
  "FormLabel",
@@ -38366,24 +38963,24 @@ var COMPONENT_SUGGESTIONS = {
38366
38963
  };
38367
38964
  var renderContextDependentError = (componentName, normalizedName, key) => {
38368
38965
  const suggestion = COMPONENT_SUGGESTIONS[normalizedName] || `${componentName}Atom (if available)`;
38369
- return /* @__PURE__ */ jsxs83(
38966
+ return /* @__PURE__ */ jsxs88(
38370
38967
  "div",
38371
38968
  {
38372
38969
  className: "p-4 border-2 border-amber-500/50 rounded-lg bg-amber-50/80 space-y-2 my-2",
38373
38970
  children: [
38374
- /* @__PURE__ */ jsxs83("div", { className: "flex items-start gap-2", children: [
38375
- /* @__PURE__ */ jsx131("span", { className: "text-amber-600 font-bold text-lg", children: "\u26A0\uFE0F" }),
38376
- /* @__PURE__ */ jsxs83("div", { className: "flex-1", children: [
38377
- /* @__PURE__ */ jsxs83("p", { className: "text-sm font-semibold text-amber-900", 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: [
38378
38975
  "Invalid Component: ",
38379
38976
  componentName
38380
38977
  ] }),
38381
- /* @__PURE__ */ jsx131("p", { className: "text-xs text-amber-700 mt-1", children: "This component requires React Context and cannot be rendered directly in schemas." })
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." })
38382
38979
  ] })
38383
38980
  ] }),
38384
- /* @__PURE__ */ jsxs83("div", { className: "bg-white/60 p-3 rounded border border-amber-200", children: [
38385
- /* @__PURE__ */ jsx131("p", { className: "text-xs font-semibold text-gray-700 mb-1.5", children: "\u2713 Use instead:" }),
38386
- /* @__PURE__ */ jsx131("code", { className: "text-xs text-blue-700 bg-blue-50 px-2 py-1 rounded", children: suggestion })
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 })
38387
38984
  ] })
38388
38985
  ]
38389
38986
  },
@@ -38463,7 +39060,7 @@ var PXEngineRenderer = ({
38463
39060
  if (typeof component === "string" || typeof component === "number") {
38464
39061
  return component;
38465
39062
  }
38466
- if (React98.isValidElement(component)) {
39063
+ if (React101.isValidElement(component)) {
38467
39064
  return component;
38468
39065
  }
38469
39066
  if (!component || typeof component !== "object") return null;
@@ -38541,7 +39138,7 @@ var PXEngineRenderer = ({
38541
39138
  const isAtomWithRenderProp = ATOMS_WITH_RENDER.has(atomName);
38542
39139
  const finalStyle = { ...dynamicStyle, ...finalProps.style || {} };
38543
39140
  if (isAtomWithRenderProp) {
38544
- return /* @__PURE__ */ jsx131(
39141
+ return /* @__PURE__ */ jsx136(
38545
39142
  TargetComponent,
38546
39143
  {
38547
39144
  ...finalProps,
@@ -38553,7 +39150,7 @@ var PXEngineRenderer = ({
38553
39150
  uniqueKey
38554
39151
  );
38555
39152
  } else {
38556
- return /* @__PURE__ */ jsx131(
39153
+ return /* @__PURE__ */ jsx136(
38557
39154
  TargetComponent,
38558
39155
  {
38559
39156
  ...finalProps,
@@ -38565,7 +39162,7 @@ var PXEngineRenderer = ({
38565
39162
  );
38566
39163
  }
38567
39164
  };
38568
- return /* @__PURE__ */ jsx131("div", { className: "px-engine-root relative w-full h-full", children: renderRecursive(root) });
39165
+ return /* @__PURE__ */ jsx136("div", { className: "px-engine-root relative w-full h-full", children: renderRecursive(root) });
38569
39166
  };
38570
39167
  export {
38571
39168
  Accordion,
@@ -38574,6 +39171,8 @@ export {
38574
39171
  AccordionItem,
38575
39172
  AccordionTrigger,
38576
39173
  ActionButton,
39174
+ AgentCard,
39175
+ AgentDataTable,
38577
39176
  Alert,
38578
39177
  AlertAtom,
38579
39178
  AlertDescription,
@@ -38718,6 +39317,7 @@ export {
38718
39317
  InputOTPGroup,
38719
39318
  InputOTPSeparator,
38720
39319
  InputOTPSlot,
39320
+ InstructionPreview,
38721
39321
  KbdAtom,
38722
39322
  KeywordBundlesDisplay,
38723
39323
  KeywordBundlesEdit,
@@ -38822,6 +39422,7 @@ export {
38822
39422
  TextareaAtom,
38823
39423
  TimelineAtom,
38824
39424
  ToggleAtom,
39425
+ ToolListCard,
38825
39426
  Tooltip,
38826
39427
  TooltipAtom,
38827
39428
  TooltipContent,
@@ -38829,6 +39430,7 @@ export {
38829
39430
  TooltipTrigger,
38830
39431
  TopPostsGrid,
38831
39432
  VideoAtom,
39433
+ WorkflowVisualizer,
38832
39434
  cn
38833
39435
  };
38834
39436
  /*! Bundled license information: