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.cjs CHANGED
@@ -36,6 +36,8 @@ __export(index_exports, {
36
36
  AccordionItem: () => AccordionItem,
37
37
  AccordionTrigger: () => AccordionTrigger,
38
38
  ActionButton: () => ActionButton,
39
+ AgentCard: () => AgentCard,
40
+ AgentDataTable: () => AgentDataTable,
39
41
  Alert: () => Alert,
40
42
  AlertAtom: () => AlertAtom,
41
43
  AlertDescription: () => AlertDescription,
@@ -180,6 +182,7 @@ __export(index_exports, {
180
182
  InputOTPGroup: () => InputOTPGroup,
181
183
  InputOTPSeparator: () => InputOTPSeparator,
182
184
  InputOTPSlot: () => InputOTPSlot,
185
+ InstructionPreview: () => InstructionPreview,
183
186
  KbdAtom: () => KbdAtom,
184
187
  KeywordBundlesDisplay: () => KeywordBundlesDisplay,
185
188
  KeywordBundlesEdit: () => KeywordBundlesEdit,
@@ -284,6 +287,7 @@ __export(index_exports, {
284
287
  TextareaAtom: () => TextareaAtom,
285
288
  TimelineAtom: () => TimelineAtom,
286
289
  ToggleAtom: () => ToggleAtom,
290
+ ToolListCard: () => ToolListCard,
287
291
  Tooltip: () => Tooltip,
288
292
  TooltipAtom: () => TooltipAtom,
289
293
  TooltipContent: () => TooltipContent,
@@ -291,12 +295,13 @@ __export(index_exports, {
291
295
  TooltipTrigger: () => TooltipTrigger,
292
296
  TopPostsGrid: () => TopPostsGrid,
293
297
  VideoAtom: () => VideoAtom,
298
+ WorkflowVisualizer: () => WorkflowVisualizer,
294
299
  cn: () => cn
295
300
  });
296
301
  module.exports = __toCommonJS(index_exports);
297
302
 
298
303
  // src/render/PXEngineRenderer.tsx
299
- var import_react66 = __toESM(require("react"), 1);
304
+ var import_react69 = __toESM(require("react"), 1);
300
305
 
301
306
  // src/atoms/index.ts
302
307
  var atoms_exports = {};
@@ -33568,6 +33573,8 @@ ArrowToggleAtom.displayName = "ArrowToggleAtom";
33568
33573
  var molecules_exports = {};
33569
33574
  __export(molecules_exports, {
33570
33575
  ActionButton: () => ActionButton,
33576
+ AgentCard: () => AgentCard,
33577
+ AgentDataTable: () => AgentDataTable,
33571
33578
  AudienceDemographicsCard: () => AudienceDemographicsCard,
33572
33579
  AudienceMetricCard: () => AudienceMetricCard,
33573
33580
  BrandAffinityGroup: () => BrandAffinityGroup,
@@ -33587,6 +33594,7 @@ __export(molecules_exports, {
33587
33594
  FilterBar: () => FilterBar,
33588
33595
  FormCard: () => FormCard,
33589
33596
  GrowthChartCard: () => GrowthChartCard,
33597
+ InstructionPreview: () => InstructionPreview,
33590
33598
  KeywordBundlesDisplay: () => KeywordBundlesDisplay,
33591
33599
  KeywordBundlesEdit: () => KeywordBundlesEdit,
33592
33600
  LoadingOverlay: () => LoadingOverlay,
@@ -33599,7 +33607,9 @@ __export(molecules_exports, {
33599
33607
  StatsGrid: () => StatsGrid,
33600
33608
  StepWizard: () => StepWizard,
33601
33609
  TagCloud: () => TagCloud,
33602
- TopPostsGrid: () => TopPostsGrid
33610
+ ToolListCard: () => ToolListCard,
33611
+ TopPostsGrid: () => TopPostsGrid,
33612
+ WorkflowVisualizer: () => WorkflowVisualizer
33603
33613
  });
33604
33614
 
33605
33615
  // src/molecules/generic/EditableField/EditableField.tsx
@@ -35422,22 +35432,30 @@ var KeywordBundlesDisplay = ({ value }) => {
35422
35432
  var DEFAULT_PLATFORMS = ["Instagram", "YouTube", "TikTok"];
35423
35433
  var PlatformSelectEdit = ({
35424
35434
  value,
35425
- onChange,
35426
- config = {}
35435
+ onChange
35427
35436
  }) => {
35428
- const selectedPlatforms = Array.isArray(value) ? value : [];
35429
- const options = (0, import_react59.useMemo)(() => {
35430
- const providedOptions = config.options || DEFAULT_PLATFORMS;
35431
- const combined = Array.from(/* @__PURE__ */ new Set([...providedOptions, ...selectedPlatforms]));
35432
- return combined;
35433
- }, [config.options, selectedPlatforms]);
35437
+ const selectedPlatforms = (0, import_react59.useMemo)(() => {
35438
+ if (Array.isArray(value)) return value;
35439
+ if (typeof value === "string" && value.trim() !== "") {
35440
+ return value.split(",").map((s) => s.trim()).filter(Boolean);
35441
+ }
35442
+ return [];
35443
+ }, [value]);
35444
+ const isSelected = (p) => selectedPlatforms.some((s) => s.toLowerCase() === p.toLowerCase());
35434
35445
  const togglePlatform = (platform) => {
35435
- if (selectedPlatforms.includes(platform)) {
35436
- onChange(selectedPlatforms.filter((p) => p !== platform));
35446
+ if (isSelected(platform)) {
35447
+ onChange(
35448
+ selectedPlatforms.filter(
35449
+ (p) => p.toLowerCase() !== platform.toLowerCase()
35450
+ )
35451
+ );
35437
35452
  } else {
35438
35453
  onChange([...selectedPlatforms, platform]);
35439
35454
  }
35440
35455
  };
35456
+ const options = (0, import_react59.useMemo)(() => {
35457
+ return DEFAULT_PLATFORMS;
35458
+ }, []);
35441
35459
  return /* @__PURE__ */ (0, import_jsx_runtime106.jsx)("div", { className: "flex flex-wrap gap-4 py-2", children: options.map((platform) => /* @__PURE__ */ (0, import_jsx_runtime106.jsxs)(
35442
35460
  "label",
35443
35461
  {
@@ -35448,10 +35466,10 @@ var PlatformSelectEdit = ({
35448
35466
  {
35449
35467
  className: cn(
35450
35468
  "w-5 h-5 rounded flex items-center justify-center border-2 transition-all",
35451
- selectedPlatforms.includes(platform) ? "bg-purple-600 border-purple-600" : "border-gray-300 group-hover:border-purple-400"
35469
+ isSelected(platform) ? "bg-purple-600 border-purple-600" : "border-gray-300 group-hover:border-purple-400"
35452
35470
  ),
35453
35471
  onClick: () => togglePlatform(platform),
35454
- children: selectedPlatforms.includes(platform) && /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(Check, { className: "h-3.5 w-3.5 text-white stroke-[3]" })
35472
+ children: isSelected(platform) && /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(Check, { className: "h-3.5 w-3.5 text-white stroke-[3]" })
35455
35473
  }
35456
35474
  ),
35457
35475
  /* @__PURE__ */ (0, import_jsx_runtime106.jsx)("span", { className: "text-sm font-medium text-foreground select-none", children: platform })
@@ -35461,10 +35479,17 @@ var PlatformSelectEdit = ({
35461
35479
  )) });
35462
35480
  };
35463
35481
  var PlatformSelectDisplay = ({ value }) => {
35464
- if (!value || !Array.isArray(value) || value.length === 0) {
35482
+ const displayValues = (0, import_react59.useMemo)(() => {
35483
+ if (Array.isArray(value)) return value;
35484
+ if (typeof value === "string" && value.trim() !== "") {
35485
+ return value.split(",").map((s) => s.trim()).filter(Boolean);
35486
+ }
35487
+ return [];
35488
+ }, [value]);
35489
+ if (displayValues.length === 0) {
35465
35490
  return /* @__PURE__ */ (0, import_jsx_runtime106.jsx)("span", { className: "text-muted-foreground italic text-sm", children: "Not specified" });
35466
35491
  }
35467
- return /* @__PURE__ */ (0, import_jsx_runtime106.jsx)("div", { className: "flex flex-wrap gap-2 pt-1", children: value.map((platform) => /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(
35492
+ return /* @__PURE__ */ (0, import_jsx_runtime106.jsx)("div", { className: "flex flex-wrap gap-2 pt-1", children: displayValues.map((platform) => /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(
35468
35493
  "div",
35469
35494
  {
35470
35495
  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",
@@ -35554,10 +35579,7 @@ function buildCampaignSeedFields(data) {
35554
35579
  PlatformSelectEdit,
35555
35580
  {
35556
35581
  value: v,
35557
- onChange,
35558
- config: {
35559
- options: data.platform_options || data.available_platforms || data.platforms_list || []
35560
- }
35582
+ onChange
35561
35583
  }
35562
35584
  )
35563
35585
  };
@@ -35721,8 +35743,7 @@ function buildSearchSpecFields(data) {
35721
35743
  PlatformSelectEdit,
35722
35744
  {
35723
35745
  value: v,
35724
- onChange,
35725
- config: { options: data.platform_options || data.available_platforms || data.platforms_list || [] }
35746
+ onChange
35726
35747
  }
35727
35748
  )
35728
35749
  };
@@ -36732,10 +36753,7 @@ var CampaignConceptCard = import_react64.default.memo(
36732
36753
  PlatformSelectEdit,
36733
36754
  {
36734
36755
  value: v,
36735
- onChange,
36736
- config: {
36737
- options: data.platform_options || data.available_platforms || data.platforms_list || []
36738
- }
36756
+ onChange
36739
36757
  }
36740
36758
  )
36741
36759
  };
@@ -36765,7 +36783,7 @@ var CampaignConceptCard = import_react64.default.memo(
36765
36783
  }) });
36766
36784
  }
36767
36785
  if (typeof val === "object" && val !== null) {
36768
- return /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("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") });
36786
+ return /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("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") });
36769
36787
  }
36770
36788
  return /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("span", { className: "text-foreground text-sm", children: val !== void 0 && val !== null ? String(val) : "-" });
36771
36789
  }
@@ -36870,6 +36888,590 @@ var CampaignConceptCard = import_react64.default.memo(
36870
36888
  );
36871
36889
  CampaignConceptCard.displayName = "CampaignConceptCard";
36872
36890
 
36891
+ // src/molecules/agent-builder/ToolListCard/ToolListCard.tsx
36892
+ var import_jsx_runtime122 = require("react/jsx-runtime");
36893
+ var ICON_MAP = {
36894
+ Search,
36895
+ Database,
36896
+ Globe,
36897
+ FileText,
36898
+ Zap,
36899
+ Layout: PanelsTopLeft,
36900
+ Wrench,
36901
+ BookOpen,
36902
+ BarChart3: ChartColumn,
36903
+ Link,
36904
+ MessageSquare,
36905
+ Sparkles,
36906
+ FolderOpen,
36907
+ Code,
36908
+ Shield,
36909
+ Image,
36910
+ Mail,
36911
+ Calendar
36912
+ };
36913
+ var CATEGORY_FALLBACK = {
36914
+ search: Search,
36915
+ data: Database,
36916
+ knowledge: BookOpen,
36917
+ web: Globe,
36918
+ content: FileText,
36919
+ ui: PanelsTopLeft,
36920
+ analytics: ChartColumn,
36921
+ integration: Link,
36922
+ communication: MessageSquare,
36923
+ generation: Sparkles,
36924
+ file: FolderOpen,
36925
+ code: Code,
36926
+ security: Shield,
36927
+ general: Zap
36928
+ };
36929
+ function resolveIcon(tool) {
36930
+ if (tool.icon && ICON_MAP[tool.icon]) return ICON_MAP[tool.icon];
36931
+ if (tool.category && CATEGORY_FALLBACK[tool.category.toLowerCase()])
36932
+ return CATEGORY_FALLBACK[tool.category.toLowerCase()];
36933
+ return Wrench;
36934
+ }
36935
+ function resolveCategoryIcon(category) {
36936
+ return CATEGORY_FALLBACK[category.toLowerCase()] || Wrench;
36937
+ }
36938
+ var ToolListCard = ({
36939
+ tools,
36940
+ className
36941
+ }) => {
36942
+ const grouped = {};
36943
+ for (const tool of tools) {
36944
+ const cat = tool.category || "General";
36945
+ if (!grouped[cat]) grouped[cat] = [];
36946
+ grouped[cat].push(tool);
36947
+ }
36948
+ const categories = Object.keys(grouped);
36949
+ return /* @__PURE__ */ (0, import_jsx_runtime122.jsxs)(
36950
+ "div",
36951
+ {
36952
+ className: cn(
36953
+ "my-3 rounded-xl border border-[var(--border-color)] bg-[var(--card-background)] overflow-hidden shadow-sm",
36954
+ className
36955
+ ),
36956
+ children: [
36957
+ /* @__PURE__ */ (0, import_jsx_runtime122.jsxs)("div", { className: "px-4 py-3 border-b border-[var(--border-color)] bg-[var(--foreground)]/[0.03] flex items-center gap-2.5", children: [
36958
+ /* @__PURE__ */ (0, import_jsx_runtime122.jsx)("div", { className: "w-6 h-6 rounded-md bg-[var(--primary-color)]/10 flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(Wrench, { className: "w-3.5 h-3.5 text-[var(--primary-color)]" }) }),
36959
+ /* @__PURE__ */ (0, import_jsx_runtime122.jsx)("h4", { className: "text-sm font-semibold text-[var(--foreground)]", children: "Available Tools" }),
36960
+ /* @__PURE__ */ (0, import_jsx_runtime122.jsx)("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 })
36961
+ ] }),
36962
+ /* @__PURE__ */ (0, import_jsx_runtime122.jsx)("div", { className: "divide-y divide-[var(--border-color)]", children: categories.map((cat) => {
36963
+ const CatIcon = resolveCategoryIcon(cat);
36964
+ return /* @__PURE__ */ (0, import_jsx_runtime122.jsxs)("div", { className: "px-4 py-3", children: [
36965
+ /* @__PURE__ */ (0, import_jsx_runtime122.jsxs)("div", { className: "flex items-center gap-2 mb-2.5", children: [
36966
+ /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(CatIcon, { className: "w-3.5 h-3.5 text-[var(--primary-color)]/70" }),
36967
+ /* @__PURE__ */ (0, import_jsx_runtime122.jsx)("span", { className: "text-[11px] font-semibold text-[var(--foreground)]/50 uppercase tracking-wider", children: cat }),
36968
+ /* @__PURE__ */ (0, import_jsx_runtime122.jsx)("span", { className: "text-[10px] text-[var(--foreground)]/30", children: grouped[cat].length })
36969
+ ] }),
36970
+ /* @__PURE__ */ (0, import_jsx_runtime122.jsx)("div", { className: "space-y-1.5", children: grouped[cat].map((tool) => {
36971
+ const ToolIcon = resolveIcon(tool);
36972
+ return /* @__PURE__ */ (0, import_jsx_runtime122.jsxs)(
36973
+ "div",
36974
+ {
36975
+ className: "group flex items-start gap-3 px-3 py-2 rounded-lg hover:bg-[var(--foreground)]/[0.03] transition-colors",
36976
+ children: [
36977
+ /* @__PURE__ */ (0, import_jsx_runtime122.jsx)("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__ */ (0, import_jsx_runtime122.jsx)(ToolIcon, { className: "w-3 h-3 text-[var(--primary-color)]/60" }) }),
36978
+ /* @__PURE__ */ (0, import_jsx_runtime122.jsxs)("div", { className: "flex-1 min-w-0", children: [
36979
+ /* @__PURE__ */ (0, import_jsx_runtime122.jsxs)("div", { className: "flex items-center gap-2 flex-wrap", children: [
36980
+ tool.display_name && tool.display_name !== tool.name && /* @__PURE__ */ (0, import_jsx_runtime122.jsx)("span", { className: "text-[13px] font-medium text-[var(--foreground)]", children: tool.display_name }),
36981
+ /* @__PURE__ */ (0, import_jsx_runtime122.jsx)("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 })
36982
+ ] }),
36983
+ tool.description && /* @__PURE__ */ (0, import_jsx_runtime122.jsx)("p", { className: "text-xs text-[var(--foreground)]/50 leading-relaxed mt-0.5", children: tool.description })
36984
+ ] })
36985
+ ]
36986
+ },
36987
+ tool.name
36988
+ );
36989
+ }) })
36990
+ ] }, cat);
36991
+ }) })
36992
+ ]
36993
+ }
36994
+ );
36995
+ };
36996
+
36997
+ // src/molecules/agent-builder/AgentCard/AgentCard.tsx
36998
+ var import_react65 = require("react");
36999
+ var import_jsx_runtime123 = require("react/jsx-runtime");
37000
+ var AgentCard = ({
37001
+ agent,
37002
+ editable = true,
37003
+ compact = false,
37004
+ onSave,
37005
+ className
37006
+ }) => {
37007
+ const [isEditing, setIsEditing] = (0, import_react65.useState)(false);
37008
+ const [isSaving, setIsSaving] = (0, import_react65.useState)(false);
37009
+ const [editState, setEditState] = (0, import_react65.useState)({
37010
+ display_name: agent.display_name,
37011
+ description: agent.description,
37012
+ image: agent.image || ""
37013
+ });
37014
+ const avatarUrl = agent.image || `https://api.dicebear.com/7.x/avataaars/svg?seed=${agent.name}`;
37015
+ const handleEdit = (0, import_react65.useCallback)(() => {
37016
+ setEditState({
37017
+ display_name: agent.display_name,
37018
+ description: agent.description,
37019
+ image: agent.image || ""
37020
+ });
37021
+ setIsEditing(true);
37022
+ }, [agent]);
37023
+ const handleCancel = (0, import_react65.useCallback)(() => {
37024
+ setIsEditing(false);
37025
+ }, []);
37026
+ const handleSave = (0, import_react65.useCallback)(async () => {
37027
+ if (!onSave) return;
37028
+ const updates = {};
37029
+ if (editState.display_name !== agent.display_name)
37030
+ updates.display_name = editState.display_name;
37031
+ if (editState.description !== agent.description)
37032
+ updates.description = editState.description;
37033
+ if (editState.image !== (agent.image || ""))
37034
+ updates.image = editState.image;
37035
+ if (Object.keys(updates).length === 0) {
37036
+ setIsEditing(false);
37037
+ return;
37038
+ }
37039
+ setIsSaving(true);
37040
+ try {
37041
+ await onSave(agent, updates);
37042
+ setIsEditing(false);
37043
+ } catch (err) {
37044
+ console.error("AgentCard save failed:", err);
37045
+ } finally {
37046
+ setIsSaving(false);
37047
+ }
37048
+ }, [onSave, agent, editState]);
37049
+ if (compact) {
37050
+ return /* @__PURE__ */ (0, import_jsx_runtime123.jsxs)(
37051
+ "div",
37052
+ {
37053
+ className: cn(
37054
+ "flex items-center gap-3 py-1",
37055
+ className
37056
+ ),
37057
+ children: [
37058
+ /* @__PURE__ */ (0, import_jsx_runtime123.jsxs)(Avatar, { className: "h-8 w-8 shrink-0", children: [
37059
+ /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(AvatarImage, { src: avatarUrl, alt: agent.display_name }),
37060
+ /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(AvatarFallback, { className: "bg-[var(--primary-color)]/10 text-[var(--primary-color)] text-xs font-bold", children: agent.display_name.charAt(0) })
37061
+ ] }),
37062
+ /* @__PURE__ */ (0, import_jsx_runtime123.jsxs)("div", { className: "flex-1 min-w-0", children: [
37063
+ /* @__PURE__ */ (0, import_jsx_runtime123.jsxs)("div", { className: "flex items-center gap-2", children: [
37064
+ /* @__PURE__ */ (0, import_jsx_runtime123.jsx)("span", { className: "text-[var(--foreground)] text-sm font-semibold truncate", children: agent.display_name }),
37065
+ /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(
37066
+ "span",
37067
+ {
37068
+ className: cn(
37069
+ "text-[10px] px-1.5 py-0.5 rounded-full font-medium",
37070
+ agent.enabled ? "bg-emerald-500/10 text-emerald-600" : "bg-red-500/10 text-red-500"
37071
+ ),
37072
+ children: agent.enabled ? "Active" : "Disabled"
37073
+ }
37074
+ )
37075
+ ] }),
37076
+ /* @__PURE__ */ (0, import_jsx_runtime123.jsx)("p", { className: "text-[var(--foreground)]/50 text-xs truncate", children: agent.description })
37077
+ ] })
37078
+ ]
37079
+ }
37080
+ );
37081
+ }
37082
+ return /* @__PURE__ */ (0, import_jsx_runtime123.jsxs)(
37083
+ "div",
37084
+ {
37085
+ className: cn(
37086
+ "my-3 rounded-xl border border-[var(--border-color)] bg-[var(--card-background)] overflow-hidden",
37087
+ className
37088
+ ),
37089
+ children: [
37090
+ /* @__PURE__ */ (0, import_jsx_runtime123.jsxs)("div", { className: "flex items-start gap-4 px-5 py-4", children: [
37091
+ /* @__PURE__ */ (0, import_jsx_runtime123.jsxs)(Avatar, { className: "h-12 w-12 shrink-0 border-2 border-[var(--primary-color)]/20", children: [
37092
+ /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(AvatarImage, { src: isEditing && editState.image ? editState.image : avatarUrl, alt: agent.display_name }),
37093
+ /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(AvatarFallback, { className: "bg-[var(--primary-color)]/10 text-[var(--primary-color)] text-lg font-bold", children: agent.display_name.charAt(0) })
37094
+ ] }),
37095
+ /* @__PURE__ */ (0, import_jsx_runtime123.jsx)("div", { className: "flex-1 min-w-0", children: isEditing ? /* @__PURE__ */ (0, import_jsx_runtime123.jsxs)("div", { className: "space-y-2", children: [
37096
+ /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(
37097
+ "input",
37098
+ {
37099
+ type: "text",
37100
+ value: editState.display_name,
37101
+ onChange: (e) => setEditState((s) => ({ ...s, display_name: e.target.value })),
37102
+ 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",
37103
+ placeholder: "Display name"
37104
+ }
37105
+ ),
37106
+ /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(
37107
+ "textarea",
37108
+ {
37109
+ value: editState.description,
37110
+ onChange: (e) => setEditState((s) => ({ ...s, description: e.target.value })),
37111
+ 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",
37112
+ rows: 2,
37113
+ placeholder: "Description"
37114
+ }
37115
+ ),
37116
+ /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(
37117
+ "input",
37118
+ {
37119
+ type: "text",
37120
+ value: editState.image,
37121
+ onChange: (e) => setEditState((s) => ({ ...s, image: e.target.value })),
37122
+ 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",
37123
+ placeholder: "Avatar image URL"
37124
+ }
37125
+ )
37126
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime123.jsxs)(import_jsx_runtime123.Fragment, { children: [
37127
+ /* @__PURE__ */ (0, import_jsx_runtime123.jsxs)("div", { className: "flex items-center gap-2", children: [
37128
+ /* @__PURE__ */ (0, import_jsx_runtime123.jsx)("h4", { className: "text-sm font-semibold text-[var(--foreground)] truncate", children: agent.display_name }),
37129
+ /* @__PURE__ */ (0, import_jsx_runtime123.jsx)("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 }),
37130
+ /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(
37131
+ "span",
37132
+ {
37133
+ className: cn(
37134
+ "text-[10px] px-1.5 py-0.5 rounded-full font-medium",
37135
+ agent.enabled ? "bg-emerald-500/10 text-emerald-600" : "bg-red-500/10 text-red-500"
37136
+ ),
37137
+ children: agent.enabled ? "Active" : "Disabled"
37138
+ }
37139
+ )
37140
+ ] }),
37141
+ /* @__PURE__ */ (0, import_jsx_runtime123.jsx)("p", { className: "text-xs text-[var(--foreground)]/60 mt-1 leading-relaxed", children: agent.description })
37142
+ ] }) }),
37143
+ editable && onSave && /* @__PURE__ */ (0, import_jsx_runtime123.jsx)("div", { className: "flex items-center gap-1.5 shrink-0", children: isEditing ? /* @__PURE__ */ (0, import_jsx_runtime123.jsxs)(import_jsx_runtime123.Fragment, { children: [
37144
+ /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(
37145
+ "button",
37146
+ {
37147
+ onClick: handleCancel,
37148
+ disabled: isSaving,
37149
+ 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",
37150
+ children: "Cancel"
37151
+ }
37152
+ ),
37153
+ /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(
37154
+ "button",
37155
+ {
37156
+ onClick: handleSave,
37157
+ disabled: isSaving,
37158
+ className: "text-[11px] px-2.5 py-1 rounded-md bg-[var(--primary-color)] text-white hover:opacity-90 transition-opacity disabled:opacity-50",
37159
+ children: isSaving ? "Saving..." : "Save"
37160
+ }
37161
+ )
37162
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(
37163
+ "button",
37164
+ {
37165
+ onClick: handleEdit,
37166
+ 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",
37167
+ children: "Edit"
37168
+ }
37169
+ ) })
37170
+ ] }),
37171
+ /* @__PURE__ */ (0, import_jsx_runtime123.jsx)("div", { className: "flex flex-wrap items-center gap-3 px-5 pb-3 text-xs", children: /* @__PURE__ */ (0, import_jsx_runtime123.jsxs)("span", { className: "text-[var(--foreground)]/40", children: [
37172
+ "Model:",
37173
+ " ",
37174
+ /* @__PURE__ */ (0, import_jsx_runtime123.jsx)("span", { className: "font-mono text-[var(--foreground)]/70", children: agent.model })
37175
+ ] }) }),
37176
+ agent.tools && agent.tools.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime123.jsxs)("div", { className: "border-t border-[var(--border-color)] px-5 py-3", children: [
37177
+ /* @__PURE__ */ (0, import_jsx_runtime123.jsxs)("p", { className: "text-[11px] font-semibold text-[var(--foreground)]/40 uppercase tracking-wide mb-2", children: [
37178
+ "Tools (",
37179
+ agent.tools.length,
37180
+ ")"
37181
+ ] }),
37182
+ /* @__PURE__ */ (0, import_jsx_runtime123.jsx)("div", { className: "flex flex-wrap gap-1.5", children: agent.tools.map((tool) => /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(
37183
+ "span",
37184
+ {
37185
+ 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",
37186
+ children: tool
37187
+ },
37188
+ tool
37189
+ )) })
37190
+ ] })
37191
+ ]
37192
+ }
37193
+ );
37194
+ };
37195
+
37196
+ // src/molecules/agent-builder/AgentDataTable/AgentDataTable.tsx
37197
+ var import_jsx_runtime124 = require("react/jsx-runtime");
37198
+ var AgentDataTable = ({
37199
+ headers,
37200
+ rows,
37201
+ className
37202
+ }) => {
37203
+ const renderCell = (value) => {
37204
+ if (typeof value === "boolean") {
37205
+ return /* @__PURE__ */ (0, import_jsx_runtime124.jsxs)(
37206
+ "span",
37207
+ {
37208
+ className: cn(
37209
+ "inline-flex items-center gap-1 text-[11px] font-medium px-2 py-0.5 rounded-full",
37210
+ value ? "bg-emerald-500/10 text-emerald-600" : "bg-red-500/10 text-red-500"
37211
+ ),
37212
+ children: [
37213
+ /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
37214
+ "span",
37215
+ {
37216
+ className: cn(
37217
+ "w-1.5 h-1.5 rounded-full",
37218
+ value ? "bg-emerald-500" : "bg-red-500"
37219
+ )
37220
+ }
37221
+ ),
37222
+ value ? "Yes" : "No"
37223
+ ]
37224
+ }
37225
+ );
37226
+ }
37227
+ return /* @__PURE__ */ (0, import_jsx_runtime124.jsx)("span", { className: "text-[var(--foreground)]", children: String(value) });
37228
+ };
37229
+ return /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
37230
+ "div",
37231
+ {
37232
+ className: cn(
37233
+ "my-3 rounded-xl border border-[var(--border-color)] bg-[var(--card-background)] overflow-hidden",
37234
+ className
37235
+ ),
37236
+ children: /* @__PURE__ */ (0, import_jsx_runtime124.jsx)("div", { className: "overflow-x-auto", children: /* @__PURE__ */ (0, import_jsx_runtime124.jsxs)("table", { className: "w-full text-xs", children: [
37237
+ /* @__PURE__ */ (0, import_jsx_runtime124.jsx)("thead", { children: /* @__PURE__ */ (0, import_jsx_runtime124.jsx)("tr", { className: "border-b border-[var(--border-color)] bg-[var(--foreground)]/[0.03]", children: headers.map((header) => /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
37238
+ "th",
37239
+ {
37240
+ className: "text-left px-4 py-2.5 text-[11px] font-semibold text-[var(--foreground)]/60 uppercase tracking-wide whitespace-nowrap",
37241
+ children: header
37242
+ },
37243
+ header
37244
+ )) }) }),
37245
+ /* @__PURE__ */ (0, import_jsx_runtime124.jsx)("tbody", { children: rows.map((row, rowIdx) => /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
37246
+ "tr",
37247
+ {
37248
+ className: "border-b border-[var(--border-color)] last:border-b-0 hover:bg-[var(--foreground)]/[0.02] transition-colors",
37249
+ children: row.map((cell, cellIdx) => /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
37250
+ "td",
37251
+ {
37252
+ className: "px-4 py-2.5 text-xs whitespace-nowrap",
37253
+ children: renderCell(cell)
37254
+ },
37255
+ cellIdx
37256
+ ))
37257
+ },
37258
+ rowIdx
37259
+ )) })
37260
+ ] }) })
37261
+ }
37262
+ );
37263
+ };
37264
+
37265
+ // src/molecules/agent-builder/WorkflowVisualizer/WorkflowVisualizer.tsx
37266
+ var import_react66 = require("react");
37267
+ var import_jsx_runtime125 = require("react/jsx-runtime");
37268
+ var WorkflowVisualizer = ({
37269
+ steps,
37270
+ className
37271
+ }) => {
37272
+ const [expandedStep, setExpandedStep] = (0, import_react66.useState)(null);
37273
+ return /* @__PURE__ */ (0, import_jsx_runtime125.jsxs)(
37274
+ "div",
37275
+ {
37276
+ className: cn(
37277
+ "my-3 rounded-xl border border-[var(--border-color)] bg-[var(--card-background)] overflow-hidden shadow-sm",
37278
+ className
37279
+ ),
37280
+ children: [
37281
+ /* @__PURE__ */ (0, import_jsx_runtime125.jsxs)("div", { className: "px-4 py-3 border-b border-[var(--border-color)] bg-[var(--foreground)]/[0.03] flex items-center gap-2.5", children: [
37282
+ /* @__PURE__ */ (0, import_jsx_runtime125.jsx)("div", { className: "w-6 h-6 rounded-md bg-[var(--primary-color)]/10 flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(
37283
+ "svg",
37284
+ {
37285
+ width: "14",
37286
+ height: "14",
37287
+ viewBox: "0 0 24 24",
37288
+ fill: "none",
37289
+ stroke: "var(--primary-color)",
37290
+ strokeWidth: "2",
37291
+ strokeLinecap: "round",
37292
+ strokeLinejoin: "round",
37293
+ children: /* @__PURE__ */ (0, import_jsx_runtime125.jsx)("polyline", { points: "22 12 18 12 15 21 9 3 6 12 2 12" })
37294
+ }
37295
+ ) }),
37296
+ /* @__PURE__ */ (0, import_jsx_runtime125.jsx)("h4", { className: "text-sm font-semibold text-[var(--foreground)]", children: "Workflow" }),
37297
+ /* @__PURE__ */ (0, import_jsx_runtime125.jsxs)("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: [
37298
+ steps.length,
37299
+ " steps"
37300
+ ] })
37301
+ ] }),
37302
+ /* @__PURE__ */ (0, import_jsx_runtime125.jsx)("div", { className: "px-4 py-3", children: steps.map((step, idx) => {
37303
+ const isLast = idx === steps.length - 1;
37304
+ const isExpanded = expandedStep === step.id;
37305
+ return /* @__PURE__ */ (0, import_jsx_runtime125.jsxs)("div", { className: "flex gap-3", children: [
37306
+ /* @__PURE__ */ (0, import_jsx_runtime125.jsxs)("div", { className: "flex flex-col items-center shrink-0", children: [
37307
+ /* @__PURE__ */ (0, import_jsx_runtime125.jsx)("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__ */ (0, import_jsx_runtime125.jsx)("span", { className: "text-[10px] font-bold text-[var(--primary-color)]", children: idx + 1 }) }),
37308
+ !isLast && /* @__PURE__ */ (0, import_jsx_runtime125.jsx)("div", { className: "w-0.5 flex-1 min-h-[16px] bg-[var(--primary-color)]/15" })
37309
+ ] }),
37310
+ /* @__PURE__ */ (0, import_jsx_runtime125.jsxs)(
37311
+ "div",
37312
+ {
37313
+ className: cn(
37314
+ "flex-1 mb-3 rounded-lg border border-[var(--border-color)] transition-colors",
37315
+ isExpanded ? "bg-[var(--foreground)]/[0.02]" : "hover:bg-[var(--foreground)]/[0.02]"
37316
+ ),
37317
+ children: [
37318
+ /* @__PURE__ */ (0, import_jsx_runtime125.jsxs)(
37319
+ "button",
37320
+ {
37321
+ onClick: () => setExpandedStep(isExpanded ? null : step.id),
37322
+ className: "w-full text-left px-3 py-2.5 flex items-center gap-2",
37323
+ children: [
37324
+ /* @__PURE__ */ (0, import_jsx_runtime125.jsxs)("div", { className: "flex-1 min-w-0", children: [
37325
+ /* @__PURE__ */ (0, import_jsx_runtime125.jsx)("span", { className: "text-[13px] font-medium text-[var(--foreground)]", children: step.name }),
37326
+ step.description && !isExpanded && /* @__PURE__ */ (0, import_jsx_runtime125.jsxs)("span", { className: "text-xs text-[var(--foreground)]/40 ml-2", children: [
37327
+ "\u2014 ",
37328
+ step.description
37329
+ ] })
37330
+ ] }),
37331
+ /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(
37332
+ "svg",
37333
+ {
37334
+ width: "12",
37335
+ height: "12",
37336
+ viewBox: "0 0 24 24",
37337
+ fill: "none",
37338
+ stroke: "currentColor",
37339
+ strokeWidth: "2",
37340
+ className: cn(
37341
+ "shrink-0 text-[var(--foreground)]/30 transition-transform",
37342
+ isExpanded && "rotate-180"
37343
+ ),
37344
+ children: /* @__PURE__ */ (0, import_jsx_runtime125.jsx)("polyline", { points: "6 9 12 15 18 9" })
37345
+ }
37346
+ )
37347
+ ]
37348
+ }
37349
+ ),
37350
+ isExpanded && /* @__PURE__ */ (0, import_jsx_runtime125.jsxs)("div", { className: "px-3 pb-3 space-y-2.5", children: [
37351
+ step.description && /* @__PURE__ */ (0, import_jsx_runtime125.jsx)("p", { className: "text-xs text-[var(--foreground)]/50 leading-relaxed", children: step.description }),
37352
+ step.sub_steps && step.sub_steps.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime125.jsx)("div", { className: "space-y-1", children: step.sub_steps.map((sub) => /* @__PURE__ */ (0, import_jsx_runtime125.jsxs)(
37353
+ "div",
37354
+ {
37355
+ className: "flex items-start gap-2 text-xs",
37356
+ children: [
37357
+ /* @__PURE__ */ (0, import_jsx_runtime125.jsx)("span", { className: "shrink-0 mt-0.5 w-1.5 h-1.5 rounded-full bg-[var(--primary-color)]/40" }),
37358
+ /* @__PURE__ */ (0, import_jsx_runtime125.jsx)("span", { className: "text-[var(--foreground)]/60", children: sub.action })
37359
+ ]
37360
+ },
37361
+ sub.id
37362
+ )) }),
37363
+ step.tools && step.tools.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime125.jsxs)("div", { className: "flex items-center gap-1.5 flex-wrap", children: [
37364
+ /* @__PURE__ */ (0, import_jsx_runtime125.jsx)("span", { className: "text-[10px] text-[var(--foreground)]/30 uppercase font-semibold tracking-wider", children: "Tools:" }),
37365
+ step.tools.map((tool) => /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(
37366
+ "span",
37367
+ {
37368
+ 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",
37369
+ children: tool
37370
+ },
37371
+ tool
37372
+ ))
37373
+ ] }),
37374
+ step.on_failure && /* @__PURE__ */ (0, import_jsx_runtime125.jsxs)("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: [
37375
+ /* @__PURE__ */ (0, import_jsx_runtime125.jsx)("span", { className: "shrink-0 text-[10px] font-semibold text-[#ef4444]/70 uppercase tracking-wider mt-px", children: "On failure:" }),
37376
+ /* @__PURE__ */ (0, import_jsx_runtime125.jsx)("span", { className: "text-[var(--foreground)]/50", children: step.on_failure })
37377
+ ] })
37378
+ ] })
37379
+ ]
37380
+ }
37381
+ )
37382
+ ] }, step.id);
37383
+ }) })
37384
+ ]
37385
+ }
37386
+ );
37387
+ };
37388
+
37389
+ // src/molecules/agent-builder/InstructionPreview/InstructionPreview.tsx
37390
+ var import_react67 = require("react");
37391
+ var import_jsx_runtime126 = require("react/jsx-runtime");
37392
+ var InstructionPreview = ({
37393
+ agent_name,
37394
+ description,
37395
+ instruction,
37396
+ workflow_summary,
37397
+ tools,
37398
+ className
37399
+ }) => {
37400
+ const [isExpanded, setIsExpanded] = (0, import_react67.useState)(false);
37401
+ const previewLength = 300;
37402
+ const isLong = instruction.length > previewLength;
37403
+ const displayText = isExpanded || !isLong ? instruction : instruction.slice(0, previewLength) + "...";
37404
+ return /* @__PURE__ */ (0, import_jsx_runtime126.jsxs)(
37405
+ "div",
37406
+ {
37407
+ className: cn(
37408
+ "my-3 rounded-xl border border-[var(--border-color)] bg-[var(--card-background)] overflow-hidden shadow-sm",
37409
+ className
37410
+ ),
37411
+ children: [
37412
+ /* @__PURE__ */ (0, import_jsx_runtime126.jsx)("div", { className: "px-4 py-3 border-b border-[var(--border-color)] bg-[var(--foreground)]/[0.03]", children: /* @__PURE__ */ (0, import_jsx_runtime126.jsxs)("div", { className: "flex items-center gap-2.5", children: [
37413
+ /* @__PURE__ */ (0, import_jsx_runtime126.jsx)("div", { className: "w-6 h-6 rounded-md bg-[var(--primary-color)]/10 flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime126.jsxs)(
37414
+ "svg",
37415
+ {
37416
+ width: "14",
37417
+ height: "14",
37418
+ viewBox: "0 0 24 24",
37419
+ fill: "none",
37420
+ stroke: "var(--primary-color)",
37421
+ strokeWidth: "2",
37422
+ strokeLinecap: "round",
37423
+ strokeLinejoin: "round",
37424
+ children: [
37425
+ /* @__PURE__ */ (0, import_jsx_runtime126.jsx)("path", { d: "M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z" }),
37426
+ /* @__PURE__ */ (0, import_jsx_runtime126.jsx)("polyline", { points: "14 2 14 8 20 8" }),
37427
+ /* @__PURE__ */ (0, import_jsx_runtime126.jsx)("line", { x1: "16", y1: "13", x2: "8", y2: "13" }),
37428
+ /* @__PURE__ */ (0, import_jsx_runtime126.jsx)("line", { x1: "16", y1: "17", x2: "8", y2: "17" }),
37429
+ /* @__PURE__ */ (0, import_jsx_runtime126.jsx)("polyline", { points: "10 9 9 9 8 9" })
37430
+ ]
37431
+ }
37432
+ ) }),
37433
+ /* @__PURE__ */ (0, import_jsx_runtime126.jsxs)("div", { className: "flex-1 min-w-0", children: [
37434
+ /* @__PURE__ */ (0, import_jsx_runtime126.jsx)("h4", { className: "text-sm font-semibold text-[var(--foreground)]", children: agent_name }),
37435
+ description && /* @__PURE__ */ (0, import_jsx_runtime126.jsx)("p", { className: "text-[11px] text-[var(--foreground)]/40 mt-0.5", children: description })
37436
+ ] })
37437
+ ] }) }),
37438
+ /* @__PURE__ */ (0, import_jsx_runtime126.jsxs)("div", { className: "px-4 py-3 space-y-3", children: [
37439
+ /* @__PURE__ */ (0, import_jsx_runtime126.jsxs)("div", { children: [
37440
+ /* @__PURE__ */ (0, import_jsx_runtime126.jsx)("p", { className: "text-[10px] font-semibold text-[var(--foreground)]/30 uppercase tracking-wider mb-1.5", children: "Instruction" }),
37441
+ /* @__PURE__ */ (0, import_jsx_runtime126.jsx)("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 }),
37442
+ isLong && /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
37443
+ "button",
37444
+ {
37445
+ onClick: () => setIsExpanded(!isExpanded),
37446
+ className: "text-[11px] text-[var(--primary-color)] hover:underline mt-1",
37447
+ children: isExpanded ? "Show less" : "Show full instruction"
37448
+ }
37449
+ )
37450
+ ] }),
37451
+ workflow_summary && workflow_summary.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime126.jsxs)("div", { children: [
37452
+ /* @__PURE__ */ (0, import_jsx_runtime126.jsx)("p", { className: "text-[10px] font-semibold text-[var(--foreground)]/30 uppercase tracking-wider mb-1.5", children: "Workflow" }),
37453
+ /* @__PURE__ */ (0, import_jsx_runtime126.jsx)("div", { className: "space-y-1", children: workflow_summary.map((step, idx) => /* @__PURE__ */ (0, import_jsx_runtime126.jsxs)("div", { className: "flex items-start gap-2 text-xs", children: [
37454
+ /* @__PURE__ */ (0, import_jsx_runtime126.jsx)("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 }),
37455
+ /* @__PURE__ */ (0, import_jsx_runtime126.jsx)("span", { className: "text-[var(--foreground)]/50 mt-0.5", children: step })
37456
+ ] }, idx)) })
37457
+ ] }),
37458
+ tools && tools.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime126.jsxs)("div", { children: [
37459
+ /* @__PURE__ */ (0, import_jsx_runtime126.jsx)("p", { className: "text-[10px] font-semibold text-[var(--foreground)]/30 uppercase tracking-wider mb-1.5", children: "Tools" }),
37460
+ /* @__PURE__ */ (0, import_jsx_runtime126.jsx)("div", { className: "flex flex-wrap gap-1.5", children: tools.map((tool) => /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
37461
+ "span",
37462
+ {
37463
+ 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",
37464
+ children: tool
37465
+ },
37466
+ tool
37467
+ )) })
37468
+ ] })
37469
+ ] })
37470
+ ]
37471
+ }
37472
+ );
37473
+ };
37474
+
36873
37475
  // src/components/ui/index.ts
36874
37476
  var ui_exports = {};
36875
37477
  __export(ui_exports, {
@@ -37162,7 +37764,7 @@ __export(ui_exports, {
37162
37764
  // src/components/ui/button-group.tsx
37163
37765
  var import_react_slot4 = require("@radix-ui/react-slot");
37164
37766
  var import_class_variance_authority8 = require("class-variance-authority");
37165
- var import_jsx_runtime122 = require("react/jsx-runtime");
37767
+ var import_jsx_runtime127 = require("react/jsx-runtime");
37166
37768
  var buttonGroupVariants = (0, import_class_variance_authority8.cva)(
37167
37769
  "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",
37168
37770
  {
@@ -37182,7 +37784,7 @@ function ButtonGroup({
37182
37784
  orientation,
37183
37785
  ...props
37184
37786
  }) {
37185
- return /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(
37787
+ return /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(
37186
37788
  "div",
37187
37789
  {
37188
37790
  role: "group",
@@ -37199,7 +37801,7 @@ function ButtonGroupText({
37199
37801
  ...props
37200
37802
  }) {
37201
37803
  const Comp = asChild ? import_react_slot4.Slot : "div";
37202
- return /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(
37804
+ return /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(
37203
37805
  Comp,
37204
37806
  {
37205
37807
  className: cn(
@@ -37215,7 +37817,7 @@ function ButtonGroupSeparator({
37215
37817
  orientation = "vertical",
37216
37818
  ...props
37217
37819
  }) {
37218
- return /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(
37820
+ return /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(
37219
37821
  Separator2,
37220
37822
  {
37221
37823
  "data-slot": "button-group-separator",
@@ -37231,9 +37833,9 @@ function ButtonGroupSeparator({
37231
37833
 
37232
37834
  // src/components/ui/empty.tsx
37233
37835
  var import_class_variance_authority9 = require("class-variance-authority");
37234
- var import_jsx_runtime123 = require("react/jsx-runtime");
37836
+ var import_jsx_runtime128 = require("react/jsx-runtime");
37235
37837
  function Empty({ className, ...props }) {
37236
- return /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(
37838
+ return /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
37237
37839
  "div",
37238
37840
  {
37239
37841
  "data-slot": "empty",
@@ -37246,7 +37848,7 @@ function Empty({ className, ...props }) {
37246
37848
  );
37247
37849
  }
37248
37850
  function EmptyHeader({ className, ...props }) {
37249
- return /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(
37851
+ return /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
37250
37852
  "div",
37251
37853
  {
37252
37854
  "data-slot": "empty-header",
@@ -37277,7 +37879,7 @@ function EmptyMedia({
37277
37879
  variant = "default",
37278
37880
  ...props
37279
37881
  }) {
37280
- return /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(
37882
+ return /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
37281
37883
  "div",
37282
37884
  {
37283
37885
  "data-slot": "empty-icon",
@@ -37288,7 +37890,7 @@ function EmptyMedia({
37288
37890
  );
37289
37891
  }
37290
37892
  function EmptyTitle({ className, ...props }) {
37291
- return /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(
37893
+ return /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
37292
37894
  "div",
37293
37895
  {
37294
37896
  "data-slot": "empty-title",
@@ -37298,7 +37900,7 @@ function EmptyTitle({ className, ...props }) {
37298
37900
  );
37299
37901
  }
37300
37902
  function EmptyDescription({ className, ...props }) {
37301
- return /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(
37903
+ return /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
37302
37904
  "div",
37303
37905
  {
37304
37906
  "data-slot": "empty-description",
@@ -37311,7 +37913,7 @@ function EmptyDescription({ className, ...props }) {
37311
37913
  );
37312
37914
  }
37313
37915
  function EmptyContent({ className, ...props }) {
37314
- return /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(
37916
+ return /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
37315
37917
  "div",
37316
37918
  {
37317
37919
  "data-slot": "empty-content",
@@ -37325,11 +37927,11 @@ function EmptyContent({ className, ...props }) {
37325
37927
  }
37326
37928
 
37327
37929
  // src/components/ui/field.tsx
37328
- var import_react65 = require("react");
37930
+ var import_react68 = require("react");
37329
37931
  var import_class_variance_authority10 = require("class-variance-authority");
37330
- var import_jsx_runtime124 = require("react/jsx-runtime");
37932
+ var import_jsx_runtime129 = require("react/jsx-runtime");
37331
37933
  function FieldSet({ className, ...props }) {
37332
- return /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
37934
+ return /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
37333
37935
  "fieldset",
37334
37936
  {
37335
37937
  "data-slot": "field-set",
@@ -37347,7 +37949,7 @@ function FieldLegend({
37347
37949
  variant = "legend",
37348
37950
  ...props
37349
37951
  }) {
37350
- return /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
37952
+ return /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
37351
37953
  "legend",
37352
37954
  {
37353
37955
  "data-slot": "field-legend",
@@ -37363,7 +37965,7 @@ function FieldLegend({
37363
37965
  );
37364
37966
  }
37365
37967
  function FieldGroup({ className, ...props }) {
37366
- return /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
37968
+ return /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
37367
37969
  "div",
37368
37970
  {
37369
37971
  "data-slot": "field-group",
@@ -37403,7 +38005,7 @@ function Field({
37403
38005
  orientation = "vertical",
37404
38006
  ...props
37405
38007
  }) {
37406
- return /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
38008
+ return /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
37407
38009
  "div",
37408
38010
  {
37409
38011
  role: "group",
@@ -37415,7 +38017,7 @@ function Field({
37415
38017
  );
37416
38018
  }
37417
38019
  function FieldContent({ className, ...props }) {
37418
- return /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
38020
+ return /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
37419
38021
  "div",
37420
38022
  {
37421
38023
  "data-slot": "field-content",
@@ -37431,7 +38033,7 @@ function FieldLabel({
37431
38033
  className,
37432
38034
  ...props
37433
38035
  }) {
37434
- return /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
38036
+ return /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
37435
38037
  Label,
37436
38038
  {
37437
38039
  "data-slot": "field-label",
@@ -37446,7 +38048,7 @@ function FieldLabel({
37446
38048
  );
37447
38049
  }
37448
38050
  function FieldTitle({ className, ...props }) {
37449
- return /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
38051
+ return /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
37450
38052
  "div",
37451
38053
  {
37452
38054
  "data-slot": "field-label",
@@ -37459,7 +38061,7 @@ function FieldTitle({ className, ...props }) {
37459
38061
  );
37460
38062
  }
37461
38063
  function FieldDescription({ className, ...props }) {
37462
- return /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
38064
+ return /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
37463
38065
  "p",
37464
38066
  {
37465
38067
  "data-slot": "field-description",
@@ -37478,7 +38080,7 @@ function FieldSeparator({
37478
38080
  className,
37479
38081
  ...props
37480
38082
  }) {
37481
- return /* @__PURE__ */ (0, import_jsx_runtime124.jsxs)(
38083
+ return /* @__PURE__ */ (0, import_jsx_runtime129.jsxs)(
37482
38084
  "div",
37483
38085
  {
37484
38086
  "data-slot": "field-separator",
@@ -37489,8 +38091,8 @@ function FieldSeparator({
37489
38091
  ),
37490
38092
  ...props,
37491
38093
  children: [
37492
- /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(Separator2, { className: "absolute inset-0 top-1/2" }),
37493
- children && /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
38094
+ /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(Separator2, { className: "absolute inset-0 top-1/2" }),
38095
+ children && /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
37494
38096
  "span",
37495
38097
  {
37496
38098
  className: "bg-background text-muted-foreground relative mx-auto block w-fit px-2",
@@ -37508,7 +38110,7 @@ function FieldError({
37508
38110
  errors,
37509
38111
  ...props
37510
38112
  }) {
37511
- const content = (0, import_react65.useMemo)(() => {
38113
+ const content = (0, import_react68.useMemo)(() => {
37512
38114
  if (children) {
37513
38115
  return children;
37514
38116
  }
@@ -37518,14 +38120,14 @@ function FieldError({
37518
38120
  if (errors?.length === 1 && errors[0]?.message) {
37519
38121
  return errors[0].message;
37520
38122
  }
37521
- return /* @__PURE__ */ (0, import_jsx_runtime124.jsx)("ul", { className: "ml-4 flex list-disc flex-col gap-1", children: errors.map(
37522
- (error, index) => error?.message && /* @__PURE__ */ (0, import_jsx_runtime124.jsx)("li", { children: error.message }, index)
38123
+ return /* @__PURE__ */ (0, import_jsx_runtime129.jsx)("ul", { className: "ml-4 flex list-disc flex-col gap-1", children: errors.map(
38124
+ (error, index) => error?.message && /* @__PURE__ */ (0, import_jsx_runtime129.jsx)("li", { children: error.message }, index)
37523
38125
  ) });
37524
38126
  }, [children, errors]);
37525
38127
  if (!content) {
37526
38128
  return null;
37527
38129
  }
37528
- return /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
38130
+ return /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
37529
38131
  "div",
37530
38132
  {
37531
38133
  role: "alert",
@@ -37539,9 +38141,9 @@ function FieldError({
37539
38141
 
37540
38142
  // src/components/ui/input-group.tsx
37541
38143
  var import_class_variance_authority11 = require("class-variance-authority");
37542
- var import_jsx_runtime125 = require("react/jsx-runtime");
38144
+ var import_jsx_runtime130 = require("react/jsx-runtime");
37543
38145
  function InputGroup({ className, ...props }) {
37544
- return /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(
38146
+ return /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(
37545
38147
  "div",
37546
38148
  {
37547
38149
  "data-slot": "input-group",
@@ -37585,7 +38187,7 @@ function InputGroupAddon({
37585
38187
  align = "inline-start",
37586
38188
  ...props
37587
38189
  }) {
37588
- return /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(
38190
+ return /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(
37589
38191
  "div",
37590
38192
  {
37591
38193
  role: "group",
@@ -37625,7 +38227,7 @@ function InputGroupButton({
37625
38227
  size = "xs",
37626
38228
  ...props
37627
38229
  }) {
37628
- return /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(
38230
+ return /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(
37629
38231
  Button,
37630
38232
  {
37631
38233
  type,
@@ -37637,7 +38239,7 @@ function InputGroupButton({
37637
38239
  );
37638
38240
  }
37639
38241
  function InputGroupText({ className, ...props }) {
37640
- return /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(
38242
+ return /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(
37641
38243
  "span",
37642
38244
  {
37643
38245
  className: cn(
@@ -37652,7 +38254,7 @@ function InputGroupInput({
37652
38254
  className,
37653
38255
  ...props
37654
38256
  }) {
37655
- return /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(
38257
+ return /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(
37656
38258
  Input,
37657
38259
  {
37658
38260
  "data-slot": "input-group-control",
@@ -37668,7 +38270,7 @@ function InputGroupTextarea({
37668
38270
  className,
37669
38271
  ...props
37670
38272
  }) {
37671
- return /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(
38273
+ return /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(
37672
38274
  Textarea,
37673
38275
  {
37674
38276
  "data-slot": "input-group-control",
@@ -37684,9 +38286,9 @@ function InputGroupTextarea({
37684
38286
  // src/components/ui/item.tsx
37685
38287
  var import_react_slot5 = require("@radix-ui/react-slot");
37686
38288
  var import_class_variance_authority12 = require("class-variance-authority");
37687
- var import_jsx_runtime126 = require("react/jsx-runtime");
38289
+ var import_jsx_runtime131 = require("react/jsx-runtime");
37688
38290
  function ItemGroup({ className, ...props }) {
37689
- return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
38291
+ return /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
37690
38292
  "div",
37691
38293
  {
37692
38294
  role: "list",
@@ -37700,7 +38302,7 @@ function ItemSeparator({
37700
38302
  className,
37701
38303
  ...props
37702
38304
  }) {
37703
- return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
38305
+ return /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
37704
38306
  Separator2,
37705
38307
  {
37706
38308
  "data-slot": "item-separator",
@@ -37738,7 +38340,7 @@ function Item8({
37738
38340
  ...props
37739
38341
  }) {
37740
38342
  const Comp = asChild ? import_react_slot5.Slot : "div";
37741
- return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
38343
+ return /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
37742
38344
  Comp,
37743
38345
  {
37744
38346
  "data-slot": "item",
@@ -37769,7 +38371,7 @@ function ItemMedia({
37769
38371
  variant = "default",
37770
38372
  ...props
37771
38373
  }) {
37772
- return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
38374
+ return /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
37773
38375
  "div",
37774
38376
  {
37775
38377
  "data-slot": "item-media",
@@ -37780,7 +38382,7 @@ function ItemMedia({
37780
38382
  );
37781
38383
  }
37782
38384
  function ItemContent({ className, ...props }) {
37783
- return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
38385
+ return /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
37784
38386
  "div",
37785
38387
  {
37786
38388
  "data-slot": "item-content",
@@ -37793,7 +38395,7 @@ function ItemContent({ className, ...props }) {
37793
38395
  );
37794
38396
  }
37795
38397
  function ItemTitle({ className, ...props }) {
37796
- return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
38398
+ return /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
37797
38399
  "div",
37798
38400
  {
37799
38401
  "data-slot": "item-title",
@@ -37806,7 +38408,7 @@ function ItemTitle({ className, ...props }) {
37806
38408
  );
37807
38409
  }
37808
38410
  function ItemDescription({ className, ...props }) {
37809
- return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
38411
+ return /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
37810
38412
  "p",
37811
38413
  {
37812
38414
  "data-slot": "item-description",
@@ -37820,7 +38422,7 @@ function ItemDescription({ className, ...props }) {
37820
38422
  );
37821
38423
  }
37822
38424
  function ItemActions({ className, ...props }) {
37823
- return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
38425
+ return /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
37824
38426
  "div",
37825
38427
  {
37826
38428
  "data-slot": "item-actions",
@@ -37830,7 +38432,7 @@ function ItemActions({ className, ...props }) {
37830
38432
  );
37831
38433
  }
37832
38434
  function ItemHeader({ className, ...props }) {
37833
- return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
38435
+ return /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
37834
38436
  "div",
37835
38437
  {
37836
38438
  "data-slot": "item-header",
@@ -37843,7 +38445,7 @@ function ItemHeader({ className, ...props }) {
37843
38445
  );
37844
38446
  }
37845
38447
  function ItemFooter({ className, ...props }) {
37846
- return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
38448
+ return /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
37847
38449
  "div",
37848
38450
  {
37849
38451
  "data-slot": "item-footer",
@@ -37857,9 +38459,9 @@ function ItemFooter({ className, ...props }) {
37857
38459
  }
37858
38460
 
37859
38461
  // src/components/ui/kbd.tsx
37860
- var import_jsx_runtime127 = require("react/jsx-runtime");
38462
+ var import_jsx_runtime132 = require("react/jsx-runtime");
37861
38463
  function Kbd({ className, ...props }) {
37862
- return /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(
38464
+ return /* @__PURE__ */ (0, import_jsx_runtime132.jsx)(
37863
38465
  "kbd",
37864
38466
  {
37865
38467
  "data-slot": "kbd",
@@ -37874,7 +38476,7 @@ function Kbd({ className, ...props }) {
37874
38476
  );
37875
38477
  }
37876
38478
  function KbdGroup({ className, ...props }) {
37877
- return /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(
38479
+ return /* @__PURE__ */ (0, import_jsx_runtime132.jsx)(
37878
38480
  "kbd",
37879
38481
  {
37880
38482
  "data-slot": "kbd-group",
@@ -37885,16 +38487,16 @@ function KbdGroup({ className, ...props }) {
37885
38487
  }
37886
38488
 
37887
38489
  // src/components/ui/sidebar.tsx
37888
- var React96 = __toESM(require("react"), 1);
38490
+ var React99 = __toESM(require("react"), 1);
37889
38491
  var import_react_slot6 = require("@radix-ui/react-slot");
37890
38492
  var import_class_variance_authority13 = require("class-variance-authority");
37891
38493
 
37892
38494
  // src/hooks/use-mobile.tsx
37893
- var React95 = __toESM(require("react"), 1);
38495
+ var React98 = __toESM(require("react"), 1);
37894
38496
  var MOBILE_BREAKPOINT = 768;
37895
38497
  function useIsMobile() {
37896
- const [isMobile, setIsMobile] = React95.useState(void 0);
37897
- React95.useEffect(() => {
38498
+ const [isMobile, setIsMobile] = React98.useState(void 0);
38499
+ React98.useEffect(() => {
37898
38500
  const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);
37899
38501
  const onChange = () => {
37900
38502
  setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
@@ -37907,22 +38509,22 @@ function useIsMobile() {
37907
38509
  }
37908
38510
 
37909
38511
  // src/components/ui/sidebar.tsx
37910
- var import_jsx_runtime128 = require("react/jsx-runtime");
38512
+ var import_jsx_runtime133 = require("react/jsx-runtime");
37911
38513
  var SIDEBAR_COOKIE_NAME = "sidebar_state";
37912
38514
  var SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;
37913
38515
  var SIDEBAR_WIDTH = "16rem";
37914
38516
  var SIDEBAR_WIDTH_MOBILE = "18rem";
37915
38517
  var SIDEBAR_WIDTH_ICON = "3rem";
37916
38518
  var SIDEBAR_KEYBOARD_SHORTCUT = "b";
37917
- var SidebarContext = React96.createContext(null);
38519
+ var SidebarContext = React99.createContext(null);
37918
38520
  function useSidebar() {
37919
- const context = React96.useContext(SidebarContext);
38521
+ const context = React99.useContext(SidebarContext);
37920
38522
  if (!context) {
37921
38523
  throw new Error("useSidebar must be used within a SidebarProvider.");
37922
38524
  }
37923
38525
  return context;
37924
38526
  }
37925
- var SidebarProvider = React96.forwardRef(
38527
+ var SidebarProvider = React99.forwardRef(
37926
38528
  ({
37927
38529
  defaultOpen = true,
37928
38530
  open: openProp,
@@ -37933,10 +38535,10 @@ var SidebarProvider = React96.forwardRef(
37933
38535
  ...props
37934
38536
  }, ref) => {
37935
38537
  const isMobile = useIsMobile();
37936
- const [openMobile, setOpenMobile] = React96.useState(false);
37937
- const [_open, _setOpen] = React96.useState(defaultOpen);
38538
+ const [openMobile, setOpenMobile] = React99.useState(false);
38539
+ const [_open, _setOpen] = React99.useState(defaultOpen);
37938
38540
  const open = openProp ?? _open;
37939
- const setOpen = React96.useCallback(
38541
+ const setOpen = React99.useCallback(
37940
38542
  (value) => {
37941
38543
  const openState = typeof value === "function" ? value(open) : value;
37942
38544
  if (setOpenProp) {
@@ -37948,10 +38550,10 @@ var SidebarProvider = React96.forwardRef(
37948
38550
  },
37949
38551
  [setOpenProp, open]
37950
38552
  );
37951
- const toggleSidebar = React96.useCallback(() => {
38553
+ const toggleSidebar = React99.useCallback(() => {
37952
38554
  return isMobile ? setOpenMobile((open2) => !open2) : setOpen((open2) => !open2);
37953
38555
  }, [isMobile, setOpen, setOpenMobile]);
37954
- React96.useEffect(() => {
38556
+ React99.useEffect(() => {
37955
38557
  const handleKeyDown = (event) => {
37956
38558
  if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {
37957
38559
  event.preventDefault();
@@ -37962,7 +38564,7 @@ var SidebarProvider = React96.forwardRef(
37962
38564
  return () => window.removeEventListener("keydown", handleKeyDown);
37963
38565
  }, [toggleSidebar]);
37964
38566
  const state = open ? "expanded" : "collapsed";
37965
- const contextValue = React96.useMemo(
38567
+ const contextValue = React99.useMemo(
37966
38568
  () => ({
37967
38569
  state,
37968
38570
  open,
@@ -37974,7 +38576,7 @@ var SidebarProvider = React96.forwardRef(
37974
38576
  }),
37975
38577
  [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]
37976
38578
  );
37977
- return /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(SidebarContext.Provider, { value: contextValue, children: /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(TooltipProvider, { delayDuration: 0, children: /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
38579
+ 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)(
37978
38580
  "div",
37979
38581
  {
37980
38582
  style: {
@@ -37994,7 +38596,7 @@ var SidebarProvider = React96.forwardRef(
37994
38596
  }
37995
38597
  );
37996
38598
  SidebarProvider.displayName = "SidebarProvider";
37997
- var Sidebar = React96.forwardRef(
38599
+ var Sidebar = React99.forwardRef(
37998
38600
  ({
37999
38601
  side = "left",
38000
38602
  variant = "sidebar",
@@ -38005,7 +38607,7 @@ var Sidebar = React96.forwardRef(
38005
38607
  }, ref) => {
38006
38608
  const { isMobile, state, openMobile, setOpenMobile } = useSidebar();
38007
38609
  if (collapsible === "none") {
38008
- return /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
38610
+ return /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
38009
38611
  "div",
38010
38612
  {
38011
38613
  className: cn(
@@ -38019,7 +38621,7 @@ var Sidebar = React96.forwardRef(
38019
38621
  );
38020
38622
  }
38021
38623
  if (isMobile) {
38022
- return /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(Sheet2, { open: openMobile, onOpenChange: setOpenMobile, ...props, children: /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)(
38624
+ return /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(Sheet2, { open: openMobile, onOpenChange: setOpenMobile, ...props, children: /* @__PURE__ */ (0, import_jsx_runtime133.jsxs)(
38023
38625
  SheetContent,
38024
38626
  {
38025
38627
  "data-sidebar": "sidebar",
@@ -38030,16 +38632,16 @@ var Sidebar = React96.forwardRef(
38030
38632
  },
38031
38633
  side,
38032
38634
  children: [
38033
- /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)(SheetHeader, { className: "sr-only", children: [
38034
- /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(SheetTitle, { children: "Sidebar" }),
38035
- /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(SheetDescription, { children: "Displays the mobile sidebar." })
38635
+ /* @__PURE__ */ (0, import_jsx_runtime133.jsxs)(SheetHeader, { className: "sr-only", children: [
38636
+ /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(SheetTitle, { children: "Sidebar" }),
38637
+ /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(SheetDescription, { children: "Displays the mobile sidebar." })
38036
38638
  ] }),
38037
- /* @__PURE__ */ (0, import_jsx_runtime128.jsx)("div", { className: "flex h-full w-full flex-col", children })
38639
+ /* @__PURE__ */ (0, import_jsx_runtime133.jsx)("div", { className: "flex h-full w-full flex-col", children })
38038
38640
  ]
38039
38641
  }
38040
38642
  ) });
38041
38643
  }
38042
- return /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)(
38644
+ return /* @__PURE__ */ (0, import_jsx_runtime133.jsxs)(
38043
38645
  "div",
38044
38646
  {
38045
38647
  ref,
@@ -38049,7 +38651,7 @@ var Sidebar = React96.forwardRef(
38049
38651
  "data-variant": variant,
38050
38652
  "data-side": side,
38051
38653
  children: [
38052
- /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
38654
+ /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
38053
38655
  "div",
38054
38656
  {
38055
38657
  className: cn(
@@ -38060,7 +38662,7 @@ var Sidebar = React96.forwardRef(
38060
38662
  )
38061
38663
  }
38062
38664
  ),
38063
- /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
38665
+ /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
38064
38666
  "div",
38065
38667
  {
38066
38668
  className: cn(
@@ -38071,7 +38673,7 @@ var Sidebar = React96.forwardRef(
38071
38673
  className
38072
38674
  ),
38073
38675
  ...props,
38074
- children: /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
38676
+ children: /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
38075
38677
  "div",
38076
38678
  {
38077
38679
  "data-sidebar": "sidebar",
@@ -38087,9 +38689,9 @@ var Sidebar = React96.forwardRef(
38087
38689
  }
38088
38690
  );
38089
38691
  Sidebar.displayName = "Sidebar";
38090
- var SidebarTrigger = React96.forwardRef(({ className, onClick, ...props }, ref) => {
38692
+ var SidebarTrigger = React99.forwardRef(({ className, onClick, ...props }, ref) => {
38091
38693
  const { toggleSidebar } = useSidebar();
38092
- return /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)(
38694
+ return /* @__PURE__ */ (0, import_jsx_runtime133.jsxs)(
38093
38695
  Button,
38094
38696
  {
38095
38697
  ref,
@@ -38103,16 +38705,16 @@ var SidebarTrigger = React96.forwardRef(({ className, onClick, ...props }, ref)
38103
38705
  },
38104
38706
  ...props,
38105
38707
  children: [
38106
- /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(PanelLeft, {}),
38107
- /* @__PURE__ */ (0, import_jsx_runtime128.jsx)("span", { className: "sr-only", children: "Toggle Sidebar" })
38708
+ /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(PanelLeft, {}),
38709
+ /* @__PURE__ */ (0, import_jsx_runtime133.jsx)("span", { className: "sr-only", children: "Toggle Sidebar" })
38108
38710
  ]
38109
38711
  }
38110
38712
  );
38111
38713
  });
38112
38714
  SidebarTrigger.displayName = "SidebarTrigger";
38113
- var SidebarRail = React96.forwardRef(({ className, ...props }, ref) => {
38715
+ var SidebarRail = React99.forwardRef(({ className, ...props }, ref) => {
38114
38716
  const { toggleSidebar } = useSidebar();
38115
- return /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
38717
+ return /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
38116
38718
  "button",
38117
38719
  {
38118
38720
  ref,
@@ -38135,8 +38737,8 @@ var SidebarRail = React96.forwardRef(({ className, ...props }, ref) => {
38135
38737
  );
38136
38738
  });
38137
38739
  SidebarRail.displayName = "SidebarRail";
38138
- var SidebarInset = React96.forwardRef(({ className, ...props }, ref) => {
38139
- return /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
38740
+ var SidebarInset = React99.forwardRef(({ className, ...props }, ref) => {
38741
+ return /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
38140
38742
  "main",
38141
38743
  {
38142
38744
  ref,
@@ -38150,8 +38752,8 @@ var SidebarInset = React96.forwardRef(({ className, ...props }, ref) => {
38150
38752
  );
38151
38753
  });
38152
38754
  SidebarInset.displayName = "SidebarInset";
38153
- var SidebarInput = React96.forwardRef(({ className, ...props }, ref) => {
38154
- return /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
38755
+ var SidebarInput = React99.forwardRef(({ className, ...props }, ref) => {
38756
+ return /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
38155
38757
  Input,
38156
38758
  {
38157
38759
  ref,
@@ -38165,8 +38767,8 @@ var SidebarInput = React96.forwardRef(({ className, ...props }, ref) => {
38165
38767
  );
38166
38768
  });
38167
38769
  SidebarInput.displayName = "SidebarInput";
38168
- var SidebarHeader = React96.forwardRef(({ className, ...props }, ref) => {
38169
- return /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
38770
+ var SidebarHeader = React99.forwardRef(({ className, ...props }, ref) => {
38771
+ return /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
38170
38772
  "div",
38171
38773
  {
38172
38774
  ref,
@@ -38177,8 +38779,8 @@ var SidebarHeader = React96.forwardRef(({ className, ...props }, ref) => {
38177
38779
  );
38178
38780
  });
38179
38781
  SidebarHeader.displayName = "SidebarHeader";
38180
- var SidebarFooter = React96.forwardRef(({ className, ...props }, ref) => {
38181
- return /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
38782
+ var SidebarFooter = React99.forwardRef(({ className, ...props }, ref) => {
38783
+ return /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
38182
38784
  "div",
38183
38785
  {
38184
38786
  ref,
@@ -38189,8 +38791,8 @@ var SidebarFooter = React96.forwardRef(({ className, ...props }, ref) => {
38189
38791
  );
38190
38792
  });
38191
38793
  SidebarFooter.displayName = "SidebarFooter";
38192
- var SidebarSeparator = React96.forwardRef(({ className, ...props }, ref) => {
38193
- return /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
38794
+ var SidebarSeparator = React99.forwardRef(({ className, ...props }, ref) => {
38795
+ return /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
38194
38796
  Separator2,
38195
38797
  {
38196
38798
  ref,
@@ -38201,8 +38803,8 @@ var SidebarSeparator = React96.forwardRef(({ className, ...props }, ref) => {
38201
38803
  );
38202
38804
  });
38203
38805
  SidebarSeparator.displayName = "SidebarSeparator";
38204
- var SidebarContent = React96.forwardRef(({ className, ...props }, ref) => {
38205
- return /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
38806
+ var SidebarContent = React99.forwardRef(({ className, ...props }, ref) => {
38807
+ return /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
38206
38808
  "div",
38207
38809
  {
38208
38810
  ref,
@@ -38216,8 +38818,8 @@ var SidebarContent = React96.forwardRef(({ className, ...props }, ref) => {
38216
38818
  );
38217
38819
  });
38218
38820
  SidebarContent.displayName = "SidebarContent";
38219
- var SidebarGroup = React96.forwardRef(({ className, ...props }, ref) => {
38220
- return /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
38821
+ var SidebarGroup = React99.forwardRef(({ className, ...props }, ref) => {
38822
+ return /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
38221
38823
  "div",
38222
38824
  {
38223
38825
  ref,
@@ -38228,9 +38830,9 @@ var SidebarGroup = React96.forwardRef(({ className, ...props }, ref) => {
38228
38830
  );
38229
38831
  });
38230
38832
  SidebarGroup.displayName = "SidebarGroup";
38231
- var SidebarGroupLabel = React96.forwardRef(({ className, asChild = false, ...props }, ref) => {
38833
+ var SidebarGroupLabel = React99.forwardRef(({ className, asChild = false, ...props }, ref) => {
38232
38834
  const Comp = asChild ? import_react_slot6.Slot : "div";
38233
- return /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
38835
+ return /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
38234
38836
  Comp,
38235
38837
  {
38236
38838
  ref,
@@ -38245,9 +38847,9 @@ var SidebarGroupLabel = React96.forwardRef(({ className, asChild = false, ...pro
38245
38847
  );
38246
38848
  });
38247
38849
  SidebarGroupLabel.displayName = "SidebarGroupLabel";
38248
- var SidebarGroupAction = React96.forwardRef(({ className, asChild = false, ...props }, ref) => {
38850
+ var SidebarGroupAction = React99.forwardRef(({ className, asChild = false, ...props }, ref) => {
38249
38851
  const Comp = asChild ? import_react_slot6.Slot : "button";
38250
- return /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
38852
+ return /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
38251
38853
  Comp,
38252
38854
  {
38253
38855
  ref,
@@ -38264,7 +38866,7 @@ var SidebarGroupAction = React96.forwardRef(({ className, asChild = false, ...pr
38264
38866
  );
38265
38867
  });
38266
38868
  SidebarGroupAction.displayName = "SidebarGroupAction";
38267
- var SidebarGroupContent = React96.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
38869
+ var SidebarGroupContent = React99.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
38268
38870
  "div",
38269
38871
  {
38270
38872
  ref,
@@ -38274,7 +38876,7 @@ var SidebarGroupContent = React96.forwardRef(({ className, ...props }, ref) => /
38274
38876
  }
38275
38877
  ));
38276
38878
  SidebarGroupContent.displayName = "SidebarGroupContent";
38277
- var SidebarMenu = React96.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
38879
+ var SidebarMenu = React99.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
38278
38880
  "ul",
38279
38881
  {
38280
38882
  ref,
@@ -38284,7 +38886,7 @@ var SidebarMenu = React96.forwardRef(({ className, ...props }, ref) => /* @__PUR
38284
38886
  }
38285
38887
  ));
38286
38888
  SidebarMenu.displayName = "SidebarMenu";
38287
- var SidebarMenuItem = React96.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
38889
+ var SidebarMenuItem = React99.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
38288
38890
  "li",
38289
38891
  {
38290
38892
  ref,
@@ -38314,7 +38916,7 @@ var sidebarMenuButtonVariants = (0, import_class_variance_authority13.cva)(
38314
38916
  }
38315
38917
  }
38316
38918
  );
38317
- var SidebarMenuButton = React96.forwardRef(
38919
+ var SidebarMenuButton = React99.forwardRef(
38318
38920
  ({
38319
38921
  asChild = false,
38320
38922
  isActive = false,
@@ -38326,7 +38928,7 @@ var SidebarMenuButton = React96.forwardRef(
38326
38928
  }, ref) => {
38327
38929
  const Comp = asChild ? import_react_slot6.Slot : "button";
38328
38930
  const { isMobile, state } = useSidebar();
38329
- const button = /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
38931
+ const button = /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
38330
38932
  Comp,
38331
38933
  {
38332
38934
  ref,
@@ -38345,9 +38947,9 @@ var SidebarMenuButton = React96.forwardRef(
38345
38947
  children: tooltip
38346
38948
  };
38347
38949
  }
38348
- return /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)(Tooltip, { children: [
38349
- /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(TooltipTrigger, { asChild: true, children: button }),
38350
- /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
38950
+ return /* @__PURE__ */ (0, import_jsx_runtime133.jsxs)(Tooltip, { children: [
38951
+ /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(TooltipTrigger, { asChild: true, children: button }),
38952
+ /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
38351
38953
  TooltipContent,
38352
38954
  {
38353
38955
  side: "right",
@@ -38360,9 +38962,9 @@ var SidebarMenuButton = React96.forwardRef(
38360
38962
  }
38361
38963
  );
38362
38964
  SidebarMenuButton.displayName = "SidebarMenuButton";
38363
- var SidebarMenuAction = React96.forwardRef(({ className, asChild = false, showOnHover = false, ...props }, ref) => {
38965
+ var SidebarMenuAction = React99.forwardRef(({ className, asChild = false, showOnHover = false, ...props }, ref) => {
38364
38966
  const Comp = asChild ? import_react_slot6.Slot : "button";
38365
- return /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
38967
+ return /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
38366
38968
  Comp,
38367
38969
  {
38368
38970
  ref,
@@ -38383,7 +38985,7 @@ var SidebarMenuAction = React96.forwardRef(({ className, asChild = false, showOn
38383
38985
  );
38384
38986
  });
38385
38987
  SidebarMenuAction.displayName = "SidebarMenuAction";
38386
- var SidebarMenuBadge = React96.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
38988
+ var SidebarMenuBadge = React99.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
38387
38989
  "div",
38388
38990
  {
38389
38991
  ref,
@@ -38401,11 +39003,11 @@ var SidebarMenuBadge = React96.forwardRef(({ className, ...props }, ref) => /* @
38401
39003
  }
38402
39004
  ));
38403
39005
  SidebarMenuBadge.displayName = "SidebarMenuBadge";
38404
- var SidebarMenuSkeleton = React96.forwardRef(({ className, showIcon = false, ...props }, ref) => {
38405
- const width = React96.useMemo(() => {
39006
+ var SidebarMenuSkeleton = React99.forwardRef(({ className, showIcon = false, ...props }, ref) => {
39007
+ const width = React99.useMemo(() => {
38406
39008
  return `${Math.floor(Math.random() * 40) + 50}%`;
38407
39009
  }, []);
38408
- return /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)(
39010
+ return /* @__PURE__ */ (0, import_jsx_runtime133.jsxs)(
38409
39011
  "div",
38410
39012
  {
38411
39013
  ref,
@@ -38413,14 +39015,14 @@ var SidebarMenuSkeleton = React96.forwardRef(({ className, showIcon = false, ...
38413
39015
  className: cn("flex h-8 items-center gap-2 rounded-md px-2", className),
38414
39016
  ...props,
38415
39017
  children: [
38416
- showIcon && /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
39018
+ showIcon && /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
38417
39019
  Skeleton,
38418
39020
  {
38419
39021
  className: "size-4 rounded-md",
38420
39022
  "data-sidebar": "menu-skeleton-icon"
38421
39023
  }
38422
39024
  ),
38423
- /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
39025
+ /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
38424
39026
  Skeleton,
38425
39027
  {
38426
39028
  className: "h-4 max-w-[--skeleton-width] flex-1",
@@ -38435,7 +39037,7 @@ var SidebarMenuSkeleton = React96.forwardRef(({ className, showIcon = false, ...
38435
39037
  );
38436
39038
  });
38437
39039
  SidebarMenuSkeleton.displayName = "SidebarMenuSkeleton";
38438
- var SidebarMenuSub = React96.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
39040
+ var SidebarMenuSub = React99.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
38439
39041
  "ul",
38440
39042
  {
38441
39043
  ref,
@@ -38449,11 +39051,11 @@ var SidebarMenuSub = React96.forwardRef(({ className, ...props }, ref) => /* @__
38449
39051
  }
38450
39052
  ));
38451
39053
  SidebarMenuSub.displayName = "SidebarMenuSub";
38452
- var SidebarMenuSubItem = React96.forwardRef(({ ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime128.jsx)("li", { ref, ...props }));
39054
+ var SidebarMenuSubItem = React99.forwardRef(({ ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime133.jsx)("li", { ref, ...props }));
38453
39055
  SidebarMenuSubItem.displayName = "SidebarMenuSubItem";
38454
- var SidebarMenuSubButton = React96.forwardRef(({ asChild = false, size = "md", isActive, className, ...props }, ref) => {
39056
+ var SidebarMenuSubButton = React99.forwardRef(({ asChild = false, size = "md", isActive, className, ...props }, ref) => {
38455
39057
  const Comp = asChild ? import_react_slot6.Slot : "a";
38456
- return /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
39058
+ return /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
38457
39059
  Comp,
38458
39060
  {
38459
39061
  ref,
@@ -38477,20 +39079,20 @@ SidebarMenuSubButton.displayName = "SidebarMenuSubButton";
38477
39079
  // src/components/ui/sonner.tsx
38478
39080
  var import_next_themes = require("next-themes");
38479
39081
  var import_sonner = require("sonner");
38480
- var import_jsx_runtime129 = require("react/jsx-runtime");
39082
+ var import_jsx_runtime134 = require("react/jsx-runtime");
38481
39083
  var Toaster = ({ ...props }) => {
38482
39084
  const { theme = "system" } = (0, import_next_themes.useTheme)();
38483
- return /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
39085
+ return /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(
38484
39086
  import_sonner.Toaster,
38485
39087
  {
38486
39088
  theme,
38487
39089
  className: "toaster group",
38488
39090
  icons: {
38489
- success: /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(CircleCheck, { className: "h-4 w-4" }),
38490
- info: /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(Info, { className: "h-4 w-4" }),
38491
- warning: /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(TriangleAlert, { className: "h-4 w-4" }),
38492
- error: /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(OctagonX, { className: "h-4 w-4" }),
38493
- loading: /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(LoaderCircle, { className: "h-4 w-4 animate-spin" })
39091
+ success: /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(CircleCheck, { className: "h-4 w-4" }),
39092
+ info: /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(Info, { className: "h-4 w-4" }),
39093
+ warning: /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(TriangleAlert, { className: "h-4 w-4" }),
39094
+ error: /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(OctagonX, { className: "h-4 w-4" }),
39095
+ loading: /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(LoaderCircle, { className: "h-4 w-4 animate-spin" })
38494
39096
  },
38495
39097
  toastOptions: {
38496
39098
  classNames: {
@@ -38506,26 +39108,26 @@ var Toaster = ({ ...props }) => {
38506
39108
  };
38507
39109
 
38508
39110
  // src/components/ui/toggle-group.tsx
38509
- var React97 = __toESM(require("react"), 1);
39111
+ var React100 = __toESM(require("react"), 1);
38510
39112
  var ToggleGroupPrimitive = __toESM(require("@radix-ui/react-toggle-group"), 1);
38511
- var import_jsx_runtime130 = require("react/jsx-runtime");
38512
- var ToggleGroupContext = React97.createContext({
39113
+ var import_jsx_runtime135 = require("react/jsx-runtime");
39114
+ var ToggleGroupContext = React100.createContext({
38513
39115
  size: "default",
38514
39116
  variant: "default"
38515
39117
  });
38516
- var ToggleGroup = React97.forwardRef(({ className, variant, size, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(
39118
+ var ToggleGroup = React100.forwardRef(({ className, variant, size, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(
38517
39119
  ToggleGroupPrimitive.Root,
38518
39120
  {
38519
39121
  ref,
38520
39122
  className: cn("flex items-center justify-center gap-1", className),
38521
39123
  ...props,
38522
- children: /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(ToggleGroupContext.Provider, { value: { variant, size }, children })
39124
+ children: /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(ToggleGroupContext.Provider, { value: { variant, size }, children })
38523
39125
  }
38524
39126
  ));
38525
39127
  ToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName;
38526
- var ToggleGroupItem = React97.forwardRef(({ className, children, variant, size, ...props }, ref) => {
38527
- const context = React97.useContext(ToggleGroupContext);
38528
- return /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(
39128
+ var ToggleGroupItem = React100.forwardRef(({ className, children, variant, size, ...props }, ref) => {
39129
+ const context = React100.useContext(ToggleGroupContext);
39130
+ return /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(
38529
39131
  ToggleGroupPrimitive.Item,
38530
39132
  {
38531
39133
  ref,
@@ -38544,7 +39146,7 @@ var ToggleGroupItem = React97.forwardRef(({ className, children, variant, size,
38544
39146
  ToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName;
38545
39147
 
38546
39148
  // src/render/PXEngineRenderer.tsx
38547
- var import_jsx_runtime131 = require("react/jsx-runtime");
39149
+ var import_jsx_runtime136 = require("react/jsx-runtime");
38548
39150
  var CONTEXT_DEPENDENT_COMPONENTS = /* @__PURE__ */ new Set([
38549
39151
  // Form components - require FormField + FormItem context
38550
39152
  "FormLabel",
@@ -38636,24 +39238,24 @@ var COMPONENT_SUGGESTIONS = {
38636
39238
  };
38637
39239
  var renderContextDependentError = (componentName, normalizedName, key) => {
38638
39240
  const suggestion = COMPONENT_SUGGESTIONS[normalizedName] || `${componentName}Atom (if available)`;
38639
- return /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)(
39241
+ return /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)(
38640
39242
  "div",
38641
39243
  {
38642
39244
  className: "p-4 border-2 border-amber-500/50 rounded-lg bg-amber-50/80 space-y-2 my-2",
38643
39245
  children: [
38644
- /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)("div", { className: "flex items-start gap-2", children: [
38645
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("span", { className: "text-amber-600 font-bold text-lg", children: "\u26A0\uFE0F" }),
38646
- /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)("div", { className: "flex-1", children: [
38647
- /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)("p", { className: "text-sm font-semibold text-amber-900", children: [
39246
+ /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)("div", { className: "flex items-start gap-2", children: [
39247
+ /* @__PURE__ */ (0, import_jsx_runtime136.jsx)("span", { className: "text-amber-600 font-bold text-lg", children: "\u26A0\uFE0F" }),
39248
+ /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)("div", { className: "flex-1", children: [
39249
+ /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)("p", { className: "text-sm font-semibold text-amber-900", children: [
38648
39250
  "Invalid Component: ",
38649
39251
  componentName
38650
39252
  ] }),
38651
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("p", { className: "text-xs text-amber-700 mt-1", children: "This component requires React Context and cannot be rendered directly in schemas." })
39253
+ /* @__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." })
38652
39254
  ] })
38653
39255
  ] }),
38654
- /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)("div", { className: "bg-white/60 p-3 rounded border border-amber-200", children: [
38655
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("p", { className: "text-xs font-semibold text-gray-700 mb-1.5", children: "\u2713 Use instead:" }),
38656
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("code", { className: "text-xs text-blue-700 bg-blue-50 px-2 py-1 rounded", children: suggestion })
39256
+ /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)("div", { className: "bg-white/60 p-3 rounded border border-amber-200", children: [
39257
+ /* @__PURE__ */ (0, import_jsx_runtime136.jsx)("p", { className: "text-xs font-semibold text-gray-700 mb-1.5", children: "\u2713 Use instead:" }),
39258
+ /* @__PURE__ */ (0, import_jsx_runtime136.jsx)("code", { className: "text-xs text-blue-700 bg-blue-50 px-2 py-1 rounded", children: suggestion })
38657
39259
  ] })
38658
39260
  ]
38659
39261
  },
@@ -38733,7 +39335,7 @@ var PXEngineRenderer = ({
38733
39335
  if (typeof component === "string" || typeof component === "number") {
38734
39336
  return component;
38735
39337
  }
38736
- if (import_react66.default.isValidElement(component)) {
39338
+ if (import_react69.default.isValidElement(component)) {
38737
39339
  return component;
38738
39340
  }
38739
39341
  if (!component || typeof component !== "object") return null;
@@ -38811,7 +39413,7 @@ var PXEngineRenderer = ({
38811
39413
  const isAtomWithRenderProp = ATOMS_WITH_RENDER.has(atomName);
38812
39414
  const finalStyle = { ...dynamicStyle, ...finalProps.style || {} };
38813
39415
  if (isAtomWithRenderProp) {
38814
- return /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
39416
+ return /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(
38815
39417
  TargetComponent,
38816
39418
  {
38817
39419
  ...finalProps,
@@ -38823,7 +39425,7 @@ var PXEngineRenderer = ({
38823
39425
  uniqueKey
38824
39426
  );
38825
39427
  } else {
38826
- return /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
39428
+ return /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(
38827
39429
  TargetComponent,
38828
39430
  {
38829
39431
  ...finalProps,
@@ -38835,7 +39437,7 @@ var PXEngineRenderer = ({
38835
39437
  );
38836
39438
  }
38837
39439
  };
38838
- return /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("div", { className: "px-engine-root relative w-full h-full", children: renderRecursive(root) });
39440
+ return /* @__PURE__ */ (0, import_jsx_runtime136.jsx)("div", { className: "px-engine-root relative w-full h-full", children: renderRecursive(root) });
38839
39441
  };
38840
39442
  // Annotate the CommonJS export names for ESM import in node:
38841
39443
  0 && (module.exports = {
@@ -38845,6 +39447,8 @@ var PXEngineRenderer = ({
38845
39447
  AccordionItem,
38846
39448
  AccordionTrigger,
38847
39449
  ActionButton,
39450
+ AgentCard,
39451
+ AgentDataTable,
38848
39452
  Alert,
38849
39453
  AlertAtom,
38850
39454
  AlertDescription,
@@ -38989,6 +39593,7 @@ var PXEngineRenderer = ({
38989
39593
  InputOTPGroup,
38990
39594
  InputOTPSeparator,
38991
39595
  InputOTPSlot,
39596
+ InstructionPreview,
38992
39597
  KbdAtom,
38993
39598
  KeywordBundlesDisplay,
38994
39599
  KeywordBundlesEdit,
@@ -39093,6 +39698,7 @@ var PXEngineRenderer = ({
39093
39698
  TextareaAtom,
39094
39699
  TimelineAtom,
39095
39700
  ToggleAtom,
39701
+ ToolListCard,
39096
39702
  Tooltip,
39097
39703
  TooltipAtom,
39098
39704
  TooltipContent,
@@ -39100,6 +39706,7 @@ var PXEngineRenderer = ({
39100
39706
  TooltipTrigger,
39101
39707
  TopPostsGrid,
39102
39708
  VideoAtom,
39709
+ WorkflowVisualizer,
39103
39710
  cn
39104
39711
  });
39105
39712
  /*! Bundled license information: