@arcadeai/design-system 3.46.1 → 3.48.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (121) hide show
  1. package/dist/{toggle-C4ztdcN-.js → Toggle-CyMSF-Z7.js} +14 -46
  2. package/dist/ToolbarRootContext-DVNA8Vkb.js +13 -0
  3. package/dist/{alert-dialog-oB_cE8NP.js → alert-dialog-tBMDYzJ3.js} +1 -1
  4. package/dist/assets/index.css +1 -1
  5. package/dist/assets/tokens.css +1 -1
  6. package/dist/assets/variables.css +1 -1
  7. package/dist/components/index.js +236 -215
  8. package/dist/components/ui/atoms/alert-dialog.js +1 -1
  9. package/dist/components/ui/atoms/avatar-notification-badge.d.ts +2 -2
  10. package/dist/components/ui/atoms/avatar-notification-badge.d.ts.map +1 -1
  11. package/dist/components/ui/atoms/avatar-notification-badge.js +21 -0
  12. package/dist/components/ui/atoms/dropdown-menu.js +1 -1
  13. package/dist/components/ui/atoms/filter-chip.d.ts +16 -0
  14. package/dist/components/ui/atoms/filter-chip.d.ts.map +1 -0
  15. package/dist/components/ui/atoms/filter-chip.js +37 -0
  16. package/dist/components/ui/atoms/index.d.ts +4 -0
  17. package/dist/components/ui/atoms/index.d.ts.map +1 -1
  18. package/dist/components/ui/atoms/index.js +193 -189
  19. package/dist/components/ui/atoms/mobile-tooltip.js +1 -1
  20. package/dist/components/ui/atoms/popover.js +1 -1
  21. package/dist/components/ui/atoms/removable-chip.d.ts +38 -0
  22. package/dist/components/ui/atoms/removable-chip.d.ts.map +1 -0
  23. package/dist/components/ui/atoms/removable-chip.js +36 -0
  24. package/dist/components/ui/atoms/scroll-area.d.ts +7 -1
  25. package/dist/components/ui/atoms/scroll-area.d.ts.map +1 -1
  26. package/dist/components/ui/atoms/scroll-area.js +1 -1
  27. package/dist/components/ui/atoms/select.js +1 -1
  28. package/dist/components/ui/atoms/toggle-group.d.ts +29 -0
  29. package/dist/components/ui/atoms/toggle-group.d.ts.map +1 -0
  30. package/dist/components/ui/atoms/toggle-group.js +3 -0
  31. package/dist/components/ui/atoms/toggle.js +36 -2
  32. package/dist/components/ui/atoms/unoptimized-marker.d.ts +16 -0
  33. package/dist/components/ui/atoms/unoptimized-marker.d.ts.map +1 -0
  34. package/dist/components/ui/atoms/unoptimized-marker.js +20 -0
  35. package/dist/components/ui/index.d.ts +1 -0
  36. package/dist/components/ui/index.d.ts.map +1 -1
  37. package/dist/components/ui/index.js +236 -215
  38. package/dist/components/ui/molecules/confirm-popover.js +1 -1
  39. package/dist/components/ui/molecules/date-time-picker.js +1 -1
  40. package/dist/components/ui/molecules/empty-state.d.ts +28 -3
  41. package/dist/components/ui/molecules/empty-state.d.ts.map +1 -1
  42. package/dist/components/ui/molecules/empty-state.js +25 -19
  43. package/dist/components/ui/molecules/index.d.ts +30 -0
  44. package/dist/components/ui/molecules/index.d.ts.map +1 -1
  45. package/dist/components/ui/molecules/index.js +25 -10
  46. package/dist/components/ui/molecules/mcp-server-picker/category-filter-menu.d.ts +31 -0
  47. package/dist/components/ui/molecules/mcp-server-picker/category-filter-menu.d.ts.map +1 -0
  48. package/dist/components/ui/molecules/mcp-server-picker/category-filter-menu.js +106 -0
  49. package/dist/components/ui/molecules/mcp-server-picker/category-filter.d.ts +18 -0
  50. package/dist/components/ui/molecules/mcp-server-picker/category-filter.d.ts.map +1 -0
  51. package/dist/components/ui/molecules/mcp-server-picker/category-filter.js +34 -0
  52. package/dist/components/ui/molecules/mcp-server-picker/recommended-toolkits-chip.d.ts +53 -0
  53. package/dist/components/ui/molecules/mcp-server-picker/recommended-toolkits-chip.d.ts.map +1 -0
  54. package/dist/components/ui/molecules/mcp-server-picker/recommended-toolkits-chip.js +91 -0
  55. package/dist/components/ui/molecules/mcp-server-picker/recommended-tools.d.ts +52 -0
  56. package/dist/components/ui/molecules/mcp-server-picker/recommended-tools.d.ts.map +1 -0
  57. package/dist/components/ui/molecules/mcp-server-picker/recommended-tools.js +103 -0
  58. package/dist/components/ui/molecules/mcp-server-picker/review-count-chip.d.ts +22 -0
  59. package/dist/components/ui/molecules/mcp-server-picker/review-count-chip.d.ts.map +1 -0
  60. package/dist/components/ui/molecules/mcp-server-picker/review-count-chip.js +42 -0
  61. package/dist/components/ui/molecules/mcp-server-picker/search-scope-tabs.d.ts +18 -0
  62. package/dist/components/ui/molecules/mcp-server-picker/search-scope-tabs.d.ts.map +1 -0
  63. package/dist/components/ui/molecules/mcp-server-picker/search-scope-tabs.js +31 -0
  64. package/dist/components/ui/molecules/mcp-server-picker/section-callout.d.ts +21 -0
  65. package/dist/components/ui/molecules/mcp-server-picker/section-callout.d.ts.map +1 -0
  66. package/dist/components/ui/molecules/mcp-server-picker/section-callout.js +23 -0
  67. package/dist/components/ui/molecules/mcp-server-picker/section-nav-header.d.ts +39 -0
  68. package/dist/components/ui/molecules/mcp-server-picker/section-nav-header.d.ts.map +1 -0
  69. package/dist/components/ui/molecules/mcp-server-picker/section-nav-header.js +43 -0
  70. package/dist/components/ui/molecules/mcp-server-picker/server-avatar-stack.d.ts +16 -0
  71. package/dist/components/ui/molecules/mcp-server-picker/server-avatar-stack.d.ts.map +1 -0
  72. package/dist/components/ui/molecules/mcp-server-picker/server-avatar-stack.js +99 -0
  73. package/dist/components/ui/molecules/mcp-server-picker/server-card.d.ts +41 -0
  74. package/dist/components/ui/molecules/mcp-server-picker/server-card.d.ts.map +1 -0
  75. package/dist/components/ui/molecules/mcp-server-picker/server-card.js +124 -0
  76. package/dist/components/ui/molecules/mcp-server-picker/tool-card.d.ts +27 -0
  77. package/dist/components/ui/molecules/mcp-server-picker/tool-card.d.ts.map +1 -0
  78. package/dist/components/ui/molecules/mcp-server-picker/tool-card.js +67 -0
  79. package/dist/components/ui/molecules/mcp-server-picker/tool-search-band.d.ts +8 -0
  80. package/dist/components/ui/molecules/mcp-server-picker/tool-search-band.d.ts.map +1 -0
  81. package/dist/components/ui/molecules/mcp-server-picker/tool-search-band.js +41 -0
  82. package/dist/components/ui/molecules/mcp-server-picker/toolkit-avatar.d.ts +16 -0
  83. package/dist/components/ui/molecules/mcp-server-picker/toolkit-avatar.d.ts.map +1 -0
  84. package/dist/components/ui/molecules/mcp-server-picker/toolkit-avatar.js +56 -0
  85. package/dist/components/ui/molecules/mcp-server-picker/toolkit-chip.d.ts +38 -0
  86. package/dist/components/ui/molecules/mcp-server-picker/toolkit-chip.d.ts.map +1 -0
  87. package/dist/components/ui/molecules/mcp-server-picker/toolkit-chip.js +42 -0
  88. package/dist/components/ui/molecules/mcp-server-picker/toolkit-group-header.d.ts +33 -0
  89. package/dist/components/ui/molecules/mcp-server-picker/toolkit-group-header.d.ts.map +1 -0
  90. package/dist/components/ui/molecules/mcp-server-picker/toolkit-group-header.js +36 -0
  91. package/dist/components/ui/molecules/mcp-server-picker/unoptimized-callout.d.ts +10 -0
  92. package/dist/components/ui/molecules/mcp-server-picker/unoptimized-callout.d.ts.map +1 -0
  93. package/dist/components/ui/molecules/mcp-server-picker/unoptimized-callout.js +15 -0
  94. package/dist/components/ui/molecules/user-nav.js +1 -1
  95. package/dist/components/ui/organisms/index.d.ts +5 -0
  96. package/dist/components/ui/organisms/index.d.ts.map +1 -0
  97. package/dist/components/ui/organisms/index.js +3 -0
  98. package/dist/components/ui/organisms/mcp-selection-summary-bar.d.ts +71 -0
  99. package/dist/components/ui/organisms/mcp-selection-summary-bar.d.ts.map +1 -0
  100. package/dist/components/ui/organisms/mcp-selection-summary-bar.js +61 -0
  101. package/dist/components/ui/organisms/mcp-server-picker.d.ts +45 -0
  102. package/dist/components/ui/organisms/mcp-server-picker.d.ts.map +1 -0
  103. package/dist/components/ui/organisms/mcp-server-picker.js +35 -0
  104. package/dist/components/ui/pages/login-page.js +19 -19
  105. package/dist/components/ui/templates/gateway-diagram.js +10 -10
  106. package/dist/{dropdown-menu-DCFuLDwH.js → dropdown-menu-dsg43mOw.js} +2 -1
  107. package/dist/hooks/use-scroll-fade.d.ts +15 -0
  108. package/dist/hooks/use-scroll-fade.d.ts.map +1 -0
  109. package/dist/hooks/use-scroll-fade.js +38 -0
  110. package/dist/main.js +242 -221
  111. package/dist/metadata/index.js +6 -6
  112. package/dist/metadata/toolkit-icons.d.ts +15 -0
  113. package/dist/metadata/toolkit-icons.d.ts.map +1 -1
  114. package/dist/metadata/toolkit-icons.js +294 -292
  115. package/dist/{popover-Ck3ILBUA.js → popover-CXSOUeVQ.js} +2 -1
  116. package/dist/{scroll-area-BD6qsU_I.js → scroll-area-53KPfESS.js} +6 -3
  117. package/dist/{select-cAvbXH_n.js → select-CPTT__cT.js} +2 -1
  118. package/dist/toggle-group-CDYMBO0F.js +87 -0
  119. package/dist/useAnchoredPopupScrollLock-C8wRjuy0.js +24 -0
  120. package/package.json +1 -1
  121. package/dist/ToolbarRootContext-Dubw_915.js +0 -34
@@ -1,7 +1,32 @@
1
1
  import type * as React from "react";
2
- export declare function EmptyState({ title, description, children, ...rest }: {
2
+ export type EmptyStateProps = {
3
+ /**
4
+ * Icon component (typically a Lucide icon), rendered inside a tinted circle.
5
+ * Defaults to a search glyph.
6
+ */
7
+ Icon?: React.ComponentType<{
8
+ className?: string;
9
+ "aria-hidden"?: true;
10
+ }>;
11
+ /** Primary line — short, sentence case. */
3
12
  title?: string;
4
- description?: string;
13
+ /** Optional sub-line — longer explanation or hint. */
14
+ description?: React.ReactNode;
15
+ /** Optional CTA — typically a button or a card. */
16
+ action?: React.ReactNode;
17
+ /**
18
+ * Wrap the message in a dashed bordered box with a fixed minimum height.
19
+ * Defaults to `true` for the framed list/table placeholder look. Pass
20
+ * `false` for inline / contextual empties that should blend with their
21
+ * surrounding content (e.g. inside a results stream).
22
+ */
23
+ bordered?: boolean;
5
24
  children?: React.ReactNode;
6
- } & React.HTMLAttributes<HTMLDivElement>): React.JSX.Element;
25
+ } & Omit<React.ComponentProps<"div">, "title">;
26
+ /**
27
+ * Centered empty / zero-result message: tinted icon circle, headline, optional
28
+ * sub-line, and an optional CTA (via `action` or `children`). Defaults to the
29
+ * framed list/table placeholder look; pass `bordered={false}` for inline use.
30
+ */
31
+ export declare function EmptyState({ Icon, title, description, action, bordered, children, className, ...rest }: EmptyStateProps): React.JSX.Element;
7
32
  //# sourceMappingURL=empty-state.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"empty-state.d.ts","sourceRoot":"","sources":["../../../../lib/components/ui/molecules/empty-state.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AAEpC,wBAAgB,UAAU,CAAC,EACzB,KAAoB,EACpB,WAAoD,EACpD,QAAQ,EACR,GAAG,IAAI,EACR,EAAE;IACD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B,GAAG,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,qBAoBvC"}
1
+ {"version":3,"file":"empty-state.d.ts","sourceRoot":"","sources":["../../../../lib/components/ui/molecules/empty-state.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AAGpC,MAAM,MAAM,eAAe,GAAG;IAC5B;;;OAGG;IACH,IAAI,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,IAAI,CAAA;KAAE,CAAC,CAAC;IACzE,2CAA2C;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sDAAsD;IACtD,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,mDAAmD;IACnD,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;AAE/C;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,EACzB,IAAa,EACb,KAAoB,EACpB,WAAoD,EACpD,MAAM,EACN,QAAe,EACf,QAAQ,EACR,SAAS,EACT,GAAG,IAAI,EACR,EAAE,eAAe,qBAgCjB"}
@@ -1,28 +1,34 @@
1
- import { jsx as e, jsxs as t } from "react/jsx-runtime";
2
- import { Search as n } from "lucide-react";
1
+ import { cn as e } from "../../../lib/utils.js";
2
+ import { jsx as t, jsxs as n } from "react/jsx-runtime";
3
+ import { Search as r } from "lucide-react";
3
4
  //#region lib/components/ui/molecules/empty-state.tsx
4
- function r({ title: r = "No results", description: i = "Try adjusting your search or filters", children: a, ...o }) {
5
- return /* @__PURE__ */ t("div", {
6
- className: "flex h-56 flex-col items-center justify-center gap-4 rounded-xl border-2 border-gray-200 border-dashed bg-gray-50/50 text-center dark:border-gray-800 dark:bg-gray-900/50",
7
- ...o,
5
+ function i({ Icon: i = r, title: a = "No results", description: o = "Try adjusting your search or filters", action: s, bordered: c = !0, children: l, className: u, ...d }) {
6
+ return /* @__PURE__ */ n("div", {
7
+ className: e("flex flex-col items-center gap-3 px-4 py-12 text-center", c && "h-56 justify-center gap-4 rounded-xl border-2 border-border border-dashed bg-muted/30", u),
8
+ "data-slot": "empty-state",
9
+ ...d,
8
10
  children: [
9
- /* @__PURE__ */ e("div", {
10
- className: "flex h-16 w-16 items-center justify-center rounded-full bg-gray-100 dark:bg-gray-800",
11
- children: /* @__PURE__ */ e(n, { className: "h-8 w-8 text-gray-400" })
11
+ /* @__PURE__ */ t("span", {
12
+ className: e("flex items-center justify-center rounded-full bg-muted/50 text-muted-foreground", c ? "size-14" : "size-10"),
13
+ children: /* @__PURE__ */ t(i, {
14
+ "aria-hidden": !0,
15
+ className: "size-5"
16
+ })
12
17
  }),
13
- /* @__PURE__ */ t("div", {
18
+ /* @__PURE__ */ n("div", {
14
19
  className: "space-y-1",
15
- children: [/* @__PURE__ */ e("h3", {
16
- className: "font-semibold text-gray-900 text-lg dark:text-gray-100",
17
- children: r
18
- }), /* @__PURE__ */ e("p", {
19
- className: "text-gray-600 text-sm dark:text-gray-400",
20
- children: i
21
- })]
20
+ children: [/* @__PURE__ */ t("h3", {
21
+ className: "font-medium text-sm",
22
+ children: a
23
+ }), o ? /* @__PURE__ */ t("p", {
24
+ className: "max-w-sm text-muted-foreground text-sm",
25
+ children: o
26
+ }) : null]
22
27
  }),
23
- a
28
+ s,
29
+ l
24
30
  ]
25
31
  });
26
32
  }
27
33
  //#endregion
28
- export { r as EmptyState };
34
+ export { i as EmptyState };
@@ -14,6 +14,36 @@ export type { ErrorStateProps } from './error-state';
14
14
  export { ErrorState } from './error-state';
15
15
  export type { FlowAnimateMode, FlowDiagramProps, FlowSize, } from './flow-diagram';
16
16
  export { FlowDiagram } from './flow-diagram';
17
+ export type { McpCategoryFilterOption, McpCategoryFilterProps, } from './mcp-server-picker/category-filter';
18
+ export { McpCategoryFilter } from './mcp-server-picker/category-filter';
19
+ export type { McpCategoryFilterMenuProps } from './mcp-server-picker/category-filter-menu';
20
+ export { McpCategoryFilterMenu } from './mcp-server-picker/category-filter-menu';
21
+ export type { McpRecommendedToolsCalloutProps, McpRecommendedToolsDeactivateDialogProps, McpRecommendedToolsOptOutDialogProps, McpRecommendedToolsOptOutKind, McpRecommendedToolsState, } from './mcp-server-picker/recommended-tools';
22
+ export { McpRecommendedToolsCallout, McpRecommendedToolsDeactivateDialog, McpRecommendedToolsOptOutDialog, } from './mcp-server-picker/recommended-tools';
23
+ export type { McpReviewCountChipProps } from './mcp-server-picker/review-count-chip';
24
+ export { McpReviewCountChip } from './mcp-server-picker/review-count-chip';
25
+ export type { McpSearchScope, McpSearchScopeTabsProps, } from './mcp-server-picker/search-scope-tabs';
26
+ export { McpSearchScopeTabs } from './mcp-server-picker/search-scope-tabs';
27
+ export type { McpSectionCalloutProps } from './mcp-server-picker/section-callout';
28
+ export { McpSectionCallout } from './mcp-server-picker/section-callout';
29
+ export type { McpSectionNavHeaderProps } from './mcp-server-picker/section-nav-header';
30
+ export { McpSectionNavHeader } from './mcp-server-picker/section-nav-header';
31
+ export type { McpServerAvatarStackItem, McpServerAvatarStackProps, } from './mcp-server-picker/server-avatar-stack';
32
+ export { McpServerAvatarStack } from './mcp-server-picker/server-avatar-stack';
33
+ export type { McpServerCardProps, McpServerCardSelectionState, } from './mcp-server-picker/server-card';
34
+ export { McpServerCard, mcpServerCardShellVariants, } from './mcp-server-picker/server-card';
35
+ export type { McpToolCardProps } from './mcp-server-picker/tool-card';
36
+ export { McpToolCard } from './mcp-server-picker/tool-card';
37
+ export type { McpToolSearchBandProps, McpToolSearchState, } from './mcp-server-picker/tool-search-band';
38
+ export { McpToolSearchBand } from './mcp-server-picker/tool-search-band';
39
+ export type { McpToolkitAvatarProps } from './mcp-server-picker/toolkit-avatar';
40
+ export { McpToolkitAvatar, mcpToolkitAvatarVariants, } from './mcp-server-picker/toolkit-avatar';
41
+ export type { McpToolkitChipProps } from './mcp-server-picker/toolkit-chip';
42
+ export { McpToolkitChip } from './mcp-server-picker/toolkit-chip';
43
+ export type { McpToolkitGroupHeaderProps } from './mcp-server-picker/toolkit-group-header';
44
+ export { McpToolkitGroupHeader } from './mcp-server-picker/toolkit-group-header';
45
+ export type { McpUnoptimizedCalloutProps } from './mcp-server-picker/unoptimized-callout';
46
+ export { McpUnoptimizedCallout } from './mcp-server-picker/unoptimized-callout';
17
47
  export type { MessageActionProps, MessageActionsProps, MessageAvatarProps, MessageContentProps, MessageProps, } from './message';
18
48
  export { Message, MessageAction, MessageActions, MessageAvatar, MessageContent, } from './message';
19
49
  export type { PromptInputActionProps, PromptInputActionsProps, PromptInputProps, PromptInputTextareaProps, } from './prompt-input';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../lib/components/ui/molecules/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../lib/components/ui/molecules/index.ts"],"names":[],"mappings":"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"}
@@ -8,13 +8,28 @@ import { DateTimePicker as m } from "./date-time-picker.js";
8
8
  import { EmptyState as h } from "./empty-state.js";
9
9
  import { ErrorState as g } from "./error-state.js";
10
10
  import { FlowDiagram as _ } from "./flow-diagram.js";
11
- import { PromptInput as v, PromptInputAction as y, PromptInputActions as b, PromptInputTextarea as x } from "./prompt-input.js";
12
- import { r as S, t as C } from "../../../ui-BaLLCKkd.js";
13
- import { StepsProgress as w } from "./steps-progress.js";
14
- import { SuggestionCard as T, SuggestionCardSkeleton as E } from "./suggestion-card.js";
15
- import { TagsInput as D, TagsInputValue as O } from "./tags-input.js";
16
- import { ToolAuthorization as k, ToolAuthorizationArgs as A, ToolAuthorizationContent as j, ToolAuthorizationHeader as M, ToolAuthorizationMessage as N } from "./tool-authorization.js";
17
- import { ToolCallAccordion as P, ToolCallAccordionContent as F, ToolCallAccordionItem as I, ToolCallAccordionTrigger as L } from "./tool-call-accordion.js";
18
- import { ToolCard as R } from "./tool-card.js";
19
- import { UserNav as z } from "./user-nav.js";
20
- export { s as ChatAssistantMessage, t as ChatHistoryItem, c as ChatMessageList, l as ChatMessageListSkeleton, u as ChatStreamingIndicator, d as ChatUserMessage, f as ClientSecretInput, p as CommandBar, e as ConfirmPopover, m as DateTimePicker, h as EmptyState, g as ErrorState, _ as FlowDiagram, n as Message, r as MessageAction, i as MessageActions, a as MessageAvatar, o as MessageContent, v as PromptInput, y as PromptInputAction, b as PromptInputActions, x as PromptInputTextarea, S as RequirementBadges, w as StepsProgress, T as SuggestionCard, E as SuggestionCardSkeleton, D as TagsInput, O as TagsInputValue, k as ToolAuthorization, A as ToolAuthorizationArgs, j as ToolAuthorizationContent, M as ToolAuthorizationHeader, N as ToolAuthorizationMessage, P as ToolCallAccordion, F as ToolCallAccordionContent, I as ToolCallAccordionItem, L as ToolCallAccordionTrigger, R as ToolCard, C as ToolkitCard, z as UserNav };
11
+ import { McpCategoryFilter as v } from "./mcp-server-picker/category-filter.js";
12
+ import { McpCategoryFilterMenu as y } from "./mcp-server-picker/category-filter-menu.js";
13
+ import { McpSectionCallout as b } from "./mcp-server-picker/section-callout.js";
14
+ import { McpRecommendedToolsCallout as x, McpRecommendedToolsDeactivateDialog as S, McpRecommendedToolsOptOutDialog as C } from "./mcp-server-picker/recommended-tools.js";
15
+ import { McpReviewCountChip as w } from "./mcp-server-picker/review-count-chip.js";
16
+ import { McpSearchScopeTabs as T } from "./mcp-server-picker/search-scope-tabs.js";
17
+ import { McpSectionNavHeader as E } from "./mcp-server-picker/section-nav-header.js";
18
+ import { McpToolkitAvatar as D, mcpToolkitAvatarVariants as O } from "./mcp-server-picker/toolkit-avatar.js";
19
+ import { McpServerAvatarStack as k } from "./mcp-server-picker/server-avatar-stack.js";
20
+ import { McpServerCard as A, mcpServerCardShellVariants as j } from "./mcp-server-picker/server-card.js";
21
+ import { McpToolCard as M } from "./mcp-server-picker/tool-card.js";
22
+ import { McpToolSearchBand as N } from "./mcp-server-picker/tool-search-band.js";
23
+ import { McpToolkitChip as P } from "./mcp-server-picker/toolkit-chip.js";
24
+ import { McpToolkitGroupHeader as F } from "./mcp-server-picker/toolkit-group-header.js";
25
+ import { McpUnoptimizedCallout as I } from "./mcp-server-picker/unoptimized-callout.js";
26
+ import { PromptInput as L, PromptInputAction as R, PromptInputActions as z, PromptInputTextarea as B } from "./prompt-input.js";
27
+ import { r as V, t as H } from "../../../ui-BaLLCKkd.js";
28
+ import { StepsProgress as U } from "./steps-progress.js";
29
+ import { SuggestionCard as W, SuggestionCardSkeleton as G } from "./suggestion-card.js";
30
+ import { TagsInput as K, TagsInputValue as q } from "./tags-input.js";
31
+ import { ToolAuthorization as J, ToolAuthorizationArgs as Y, ToolAuthorizationContent as X, ToolAuthorizationHeader as Z, ToolAuthorizationMessage as Q } from "./tool-authorization.js";
32
+ import { ToolCallAccordion as $, ToolCallAccordionContent as ee, ToolCallAccordionItem as te, ToolCallAccordionTrigger as ne } from "./tool-call-accordion.js";
33
+ import { ToolCard as re } from "./tool-card.js";
34
+ import { UserNav as ie } from "./user-nav.js";
35
+ export { s as ChatAssistantMessage, t as ChatHistoryItem, c as ChatMessageList, l as ChatMessageListSkeleton, u as ChatStreamingIndicator, d as ChatUserMessage, f as ClientSecretInput, p as CommandBar, e as ConfirmPopover, m as DateTimePicker, h as EmptyState, g as ErrorState, _ as FlowDiagram, v as McpCategoryFilter, y as McpCategoryFilterMenu, x as McpRecommendedToolsCallout, S as McpRecommendedToolsDeactivateDialog, C as McpRecommendedToolsOptOutDialog, w as McpReviewCountChip, T as McpSearchScopeTabs, b as McpSectionCallout, E as McpSectionNavHeader, k as McpServerAvatarStack, A as McpServerCard, M as McpToolCard, N as McpToolSearchBand, D as McpToolkitAvatar, P as McpToolkitChip, F as McpToolkitGroupHeader, I as McpUnoptimizedCallout, n as Message, r as MessageAction, i as MessageActions, a as MessageAvatar, o as MessageContent, L as PromptInput, R as PromptInputAction, z as PromptInputActions, B as PromptInputTextarea, V as RequirementBadges, U as StepsProgress, W as SuggestionCard, G as SuggestionCardSkeleton, K as TagsInput, q as TagsInputValue, J as ToolAuthorization, Y as ToolAuthorizationArgs, X as ToolAuthorizationContent, Z as ToolAuthorizationHeader, Q as ToolAuthorizationMessage, $ as ToolCallAccordion, ee as ToolCallAccordionContent, te as ToolCallAccordionItem, ne as ToolCallAccordionTrigger, re as ToolCard, H as ToolkitCard, ie as UserNav, j as mcpServerCardShellVariants, O as mcpToolkitAvatarVariants };
@@ -0,0 +1,31 @@
1
+ import { McpCategoryFilterOption } from './category-filter';
2
+ import type * as React from "react";
3
+ export type McpCategoryFilterMenuProps = {
4
+ categories: McpCategoryFilterOption[];
5
+ /**
6
+ * Currently selected category ids. Multi-select: an empty array means no
7
+ * filter (show everything).
8
+ */
9
+ selectedCategories: string[];
10
+ onSelectionChange?: (ids: string[]) => void;
11
+ /** Trigger label shown next to the filter icon. Defaults to "Category". */
12
+ label?: string;
13
+ /**
14
+ * Renders a search field at the top of the menu that filters the category
15
+ * list by label. On by default; pass `false` for short lists.
16
+ */
17
+ searchable?: boolean;
18
+ /** Placeholder for the search field. Only used when `searchable`. */
19
+ searchPlaceholder?: string;
20
+ } & Omit<React.ComponentProps<"div">, "onChange">;
21
+ /**
22
+ * Compact alternative to {@link McpCategoryFilter}: instead of laying every
23
+ * category out as an inline chip row, it collapses them behind a single
24
+ * filter-icon trigger. The trigger lights up and shows a count once any
25
+ * category is active, and the categories live as multi-select checkboxes inside
26
+ * the menu — handy when the toolbar is tight on space or the category list is
27
+ * long. Pass `searchable` to add an in-menu search field for long lists. Same
28
+ * selection contract as `McpCategoryFilter`, so it's a drop-in swap.
29
+ */
30
+ export declare function McpCategoryFilterMenu({ categories, selectedCategories, onSelectionChange, label, searchable, searchPlaceholder, className, ...rest }: McpCategoryFilterMenuProps): React.JSX.Element;
31
+ //# sourceMappingURL=category-filter-menu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"category-filter-menu.d.ts","sourceRoot":"","sources":["../../../../../lib/components/ui/molecules/mcp-server-picker/category-filter-menu.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AAepC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAEjE,MAAM,MAAM,0BAA0B,GAAG;IACvC,UAAU,EAAE,uBAAuB,EAAE,CAAC;IACtC;;;OAGG;IACH,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,iBAAiB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAC5C,2EAA2E;IAC3E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,qEAAqE;IACrE,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,CAAC;AAElD;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,UAAU,EACV,kBAAkB,EAClB,iBAAiB,EACjB,KAAkB,EAClB,UAAiB,EACjB,iBAAwC,EACxC,SAAS,EACT,GAAG,IAAI,EACR,EAAE,0BAA0B,qBAsK5B"}
@@ -0,0 +1,106 @@
1
+ "use client";
2
+ "use client";
3
+ import { cn as e } from "../../../../lib/utils.js";
4
+ import { t } from "../../../../button-BNOmhdpM.js";
5
+ import { a as n, h as r, n as i, o as a, r as o, t as s, u as c } from "../../../../dropdown-menu-dsg43mOw.js";
6
+ import { FilterChip as l } from "../../atoms/filter-chip.js";
7
+ import { t as u } from "../../../../input-CSc-AfAa.js";
8
+ import { useRef as d, useState as f } from "react";
9
+ import { Fragment as p, jsx as m, jsxs as h } from "react/jsx-runtime";
10
+ import { ChevronDown as g, FilterIcon as _, RotateCcw as v, Search as y, X as b } from "lucide-react";
11
+ //#region lib/components/ui/molecules/mcp-server-picker/category-filter-menu.tsx
12
+ function x({ categories: x, selectedCategories: S, onSelectionChange: C, label: w = "Category", searchable: T = !0, searchPlaceholder: E = "Search categories…", className: D, ...O }) {
13
+ let [k, A] = f(""), j = d(null), M = S.length, N = M > 0, P = (e, t) => {
14
+ let n = t ? [...new Set([...S, e])] : S.filter((t) => t !== e);
15
+ C?.(n);
16
+ }, F = M === 0 ? w : M === 1 ? x.find((e) => e.id === S[0])?.label ?? w : `${M} selected`, I = k.trim().toLowerCase(), L = T && I ? x.filter((e) => e.label.toLowerCase().includes(I)) : x;
17
+ return /* @__PURE__ */ m("div", {
18
+ ...O,
19
+ className: e("min-w-0", D),
20
+ "data-slot": "mcp-category-filter-menu",
21
+ children: /* @__PURE__ */ h(s, {
22
+ onOpenChange: (e) => {
23
+ e ? T && requestAnimationFrame(() => j.current?.focus()) : A("");
24
+ },
25
+ children: [/* @__PURE__ */ h(r, {
26
+ render: /* @__PURE__ */ m(l, {
27
+ className: "group/trigger h-9 gap-1.5 rounded-md data-[status=selected]:border-primary/30 data-[status=unselected]:border-border data-[status=selected]:bg-muted/30 data-[status=selected]:text-foreground data-[status=unselected]:text-foreground/80 data-[status=unselected]:hover:bg-muted/40 data-[status=unselected]:hover:text-foreground",
28
+ "data-slot": "mcp-category-filter-menu-trigger",
29
+ selected: N,
30
+ size: "lg"
31
+ }),
32
+ children: [
33
+ /* @__PURE__ */ m(_, { className: "size-3.5 shrink-0" }),
34
+ /* @__PURE__ */ m("span", {
35
+ className: "max-w-[12rem] truncate",
36
+ children: F
37
+ }),
38
+ /* @__PURE__ */ m(g, { className: "ml-0.5 size-3.5 shrink-0 opacity-60 transition-transform duration-150 ease-out group-data-[popup-open]/trigger:rotate-180" })
39
+ ]
40
+ }), /* @__PURE__ */ h(o, {
41
+ align: "start",
42
+ className: "w-60 p-1.5",
43
+ sideOffset: 8,
44
+ children: [
45
+ T ? /* @__PURE__ */ h("div", {
46
+ className: "-mx-1.5 -mt-1.5 mb-1 flex items-center gap-2 border-border/70 border-b px-3",
47
+ children: [
48
+ /* @__PURE__ */ m(y, { className: "size-4 shrink-0 text-muted-foreground" }),
49
+ /* @__PURE__ */ m(u, {
50
+ className: "h-10 flex-1 rounded-none border-0 bg-transparent px-0 shadow-none focus-visible:ring-0 dark:bg-transparent",
51
+ "data-slot": "mcp-category-filter-menu-search",
52
+ onChange: (e) => A(e.target.value),
53
+ onKeyDown: (e) => {
54
+ (e.key.length === 1 || e.key === "Backspace" || e.key === "Delete") && e.stopPropagation();
55
+ },
56
+ placeholder: E,
57
+ ref: j,
58
+ value: k
59
+ }),
60
+ k ? /* @__PURE__ */ m(t, {
61
+ "aria-label": "Clear search",
62
+ className: "size-6 shrink-0 rounded-full text-muted-foreground hover:text-foreground",
63
+ onClick: () => A(""),
64
+ size: "icon-xs",
65
+ variant: "ghost",
66
+ children: /* @__PURE__ */ m(b, { className: "size-3.5" })
67
+ }) : null
68
+ ]
69
+ }) : /* @__PURE__ */ h("div", {
70
+ className: "flex items-center justify-between gap-2 px-1.5 pt-0.5 pb-1.5",
71
+ children: [/* @__PURE__ */ m(a, {
72
+ className: "p-0",
73
+ children: "Filter by category"
74
+ }), N ? /* @__PURE__ */ h("span", {
75
+ className: "rounded-full bg-muted px-1.5 py-0.5 font-medium text-[10px] text-muted-foreground tabular-nums",
76
+ "data-slot": "mcp-category-filter-menu-selected-count",
77
+ children: [M, " selected"]
78
+ }) : null]
79
+ }),
80
+ L.length === 0 ? /* @__PURE__ */ m("p", {
81
+ className: "px-2 py-6 text-center text-muted-foreground text-sm",
82
+ children: "No categories found"
83
+ }) : L.map(({ id: e, label: t, count: n }) => /* @__PURE__ */ h(i, {
84
+ checked: S.includes(e),
85
+ className: "group/item pr-2 pl-8 data-[checked]:font-medium data-[checked]:text-foreground [&>[data-slot=dropdown-menu-checkbox-item-indicator]]:right-auto [&>[data-slot=dropdown-menu-checkbox-item-indicator]]:left-2",
86
+ onCheckedChange: (t) => P(e, t),
87
+ children: [/* @__PURE__ */ m("span", {
88
+ className: "truncate",
89
+ children: t
90
+ }), typeof n == "number" ? /* @__PURE__ */ m("span", {
91
+ className: "ml-auto grid h-[18px] min-w-[18px] place-items-center rounded bg-muted px-1 font-medium text-[11px] text-foreground tabular-nums leading-none group-focus/item:bg-accent-foreground/15",
92
+ children: n
93
+ }) : null]
94
+ }, e)),
95
+ N ? /* @__PURE__ */ h(p, { children: [/* @__PURE__ */ m(c, {}), /* @__PURE__ */ h(n, {
96
+ className: "text-muted-foreground",
97
+ onClick: () => C?.([]),
98
+ children: [/* @__PURE__ */ m(v, { className: "size-3.5" }), "Clear filters"]
99
+ })] }) : null
100
+ ]
101
+ })]
102
+ })
103
+ });
104
+ }
105
+ //#endregion
106
+ export { x as McpCategoryFilterMenu };
@@ -0,0 +1,18 @@
1
+ import type * as React from "react";
2
+ export type McpCategoryFilterOption = {
3
+ id: string;
4
+ label: string;
5
+ count?: number;
6
+ };
7
+ export type McpCategoryFilterProps = {
8
+ categories: McpCategoryFilterOption[];
9
+ /**
10
+ * Currently selected category ids. Multi-select: an empty array means no
11
+ * filter (show everything). The consumer owns the "clear"/"all" affordance —
12
+ * this component renders only the categories it's given.
13
+ */
14
+ selectedCategories: string[];
15
+ onSelectionChange?: (ids: string[]) => void;
16
+ } & Omit<React.ComponentProps<"div">, "onChange">;
17
+ export declare function McpCategoryFilter({ categories, selectedCategories, onSelectionChange, className, ...rest }: McpCategoryFilterProps): React.JSX.Element;
18
+ //# sourceMappingURL=category-filter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"category-filter.d.ts","sourceRoot":"","sources":["../../../../../lib/components/ui/molecules/mcp-server-picker/category-filter.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AAQpC,MAAM,MAAM,uBAAuB,GAAG;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,UAAU,EAAE,uBAAuB,EAAE,CAAC;IACtC;;;;OAIG;IACH,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,iBAAiB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;CAC7C,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,CAAC;AAElD,wBAAgB,iBAAiB,CAAC,EAChC,UAAU,EACV,kBAAkB,EAClB,iBAAiB,EACjB,SAAS,EACT,GAAG,IAAI,EACR,EAAE,sBAAsB,qBA6BxB"}
@@ -0,0 +1,34 @@
1
+ "use client";
2
+ "use client";
3
+ import { cn as e } from "../../../../lib/utils.js";
4
+ import { n as t, t as n } from "../../../../toggle-group-CDYMBO0F.js";
5
+ import { useScrollFade as r } from "../../../../hooks/use-scroll-fade.js";
6
+ import { jsx as i, jsxs as a } from "react/jsx-runtime";
7
+ //#region lib/components/ui/molecules/mcp-server-picker/category-filter.tsx
8
+ function o({ categories: o, selectedCategories: s, onSelectionChange: c, className: l, ...u }) {
9
+ let d = r("x");
10
+ return /* @__PURE__ */ i("div", {
11
+ ...u,
12
+ className: e("min-w-0 overflow-hidden", l),
13
+ "data-slot": "mcp-category-filter",
14
+ children: /* @__PURE__ */ i(n, {
15
+ className: "flex-nowrap overflow-x-auto p-0.5 [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden",
16
+ multiple: !0,
17
+ onScroll: d.onScroll,
18
+ onValueChange: (e) => c?.(e),
19
+ ref: d.ref,
20
+ style: d.style,
21
+ value: s,
22
+ children: o.map(({ id: e, label: n, count: r }) => /* @__PURE__ */ a(t, {
23
+ size: "md",
24
+ value: e,
25
+ children: [n, typeof r == "number" ? /* @__PURE__ */ i("span", {
26
+ className: "tabular-nums opacity-70",
27
+ children: r
28
+ }) : null]
29
+ }, e))
30
+ })
31
+ });
32
+ }
33
+ //#endregion
34
+ export { o as McpCategoryFilter };
@@ -0,0 +1,53 @@
1
+ import type * as React from "react";
2
+ export type McpRecommendedMcpServer = {
3
+ /** Stable React key — typically the MCP server name or id. */
4
+ id: string;
5
+ /** MCP server display name. */
6
+ name: string;
7
+ /**
8
+ * Branded-icon lookup key passed through to `McpToolkitAvatar` — names the
9
+ * key in the icon registry, matching the avatar's own prop.
10
+ */
11
+ toolkitId?: string;
12
+ /** Total tools selected from this MCP server. */
13
+ selectedCount?: number;
14
+ /** Total tools the MCP server exposes (for the partial fraction). */
15
+ total?: number;
16
+ };
17
+ export type McpRecommendedToolkitsChipProps = {
18
+ /**
19
+ * The recommended MCP servers grouped into this chip. The chip renders a
20
+ * fixed "Recommended tools" label with the count; the popover scrolls
21
+ * through the full list.
22
+ */
23
+ mcpServers: McpRecommendedMcpServer[];
24
+ /**
25
+ * The grouped review pane is currently filtered to recommended. Adds an
26
+ * external ring so the active state reads at a glance.
27
+ */
28
+ active?: boolean;
29
+ /**
30
+ * Open the grouped selected-tools view, scoped to the recommended set.
31
+ * Triggered by clicking the chip body (outside the trailing ×).
32
+ */
33
+ onReview?: () => void;
34
+ /**
35
+ * Open this MCP server's tools to adjust the selection. Triggered from the
36
+ * popover list rows.
37
+ */
38
+ onOpenMcpServer?: (id: string) => void;
39
+ /** Remove all recommended MCP servers at once. */
40
+ onRemove?: () => void;
41
+ } & Omit<React.ComponentProps<"div">, "children" | "onRemove">;
42
+ /**
43
+ * Single grouped chip that stands in for the per-server "Recommended" chips
44
+ * in the selection summary bar. The body opens the grouped review pane
45
+ * filtered to recommended; the trailing × removes the whole recommended set
46
+ * in one click; clicking the count opens a popover scrolling through every
47
+ * recommended server so the user can drill into one without leaving the bar.
48
+ *
49
+ * The chip is branded with Arcade's "A" badge so it reads as "curated by
50
+ * Arcade" at a glance — visually distinct from per-server toolkit chips.
51
+ */
52
+ export declare function McpRecommendedToolkitsChip({ mcpServers, active, onReview, onOpenMcpServer, onRemove, className, ...rest }: McpRecommendedToolkitsChipProps): React.JSX.Element;
53
+ //# sourceMappingURL=recommended-toolkits-chip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recommended-toolkits-chip.d.ts","sourceRoot":"","sources":["../../../../../lib/components/ui/molecules/mcp-server-picker/recommended-toolkits-chip.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AAiBpC,MAAM,MAAM,uBAAuB,GAAG;IACpC,8DAA8D;IAC9D,EAAE,EAAE,MAAM,CAAC;IACX,+BAA+B;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iDAAiD;IACjD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,qEAAqE;IACrE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,+BAA+B,GAAG;IAC5C;;;;OAIG;IACH,UAAU,EAAE,uBAAuB,EAAE,CAAC;IACtC;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB;;;OAGG;IACH,eAAe,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,kDAAkD;IAClD,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,UAAU,GAAG,UAAU,CAAC,CAAC;AAqB/D;;;;;;;;;GASG;AACH,wBAAgB,0BAA0B,CAAC,EACzC,UAAU,EACV,MAAc,EACd,QAAQ,EACR,eAAe,EACf,QAAQ,EACR,SAAS,EACT,GAAG,IAAI,EACR,EAAE,+BAA+B,qBAqFjC"}
@@ -0,0 +1,91 @@
1
+ "use client";
2
+ "use client";
3
+ import { cn as e } from "../../../../lib/utils.js";
4
+ import { i as t, n, o as r, t as i } from "../../../../popover-CXSOUeVQ.js";
5
+ import { Arcade as a } from "../../atoms/icons/arcade.js";
6
+ import { RemovableChip as o, RemovableChipButton as s } from "../../atoms/removable-chip.js";
7
+ import { t as c } from "../../../../scroll-area-53KPfESS.js";
8
+ import { McpToolkitAvatar as l } from "./toolkit-avatar.js";
9
+ import { useState as u } from "react";
10
+ import { jsx as d, jsxs as f } from "react/jsx-runtime";
11
+ //#region lib/components/ui/molecules/mcp-server-picker/recommended-toolkits-chip.tsx
12
+ function p({ className: t }) {
13
+ return /* @__PURE__ */ d("span", {
14
+ "aria-hidden": !0,
15
+ className: e("inline-flex size-4 shrink-0 items-center justify-center rounded-[4px] bg-brand-navy text-white", t),
16
+ "data-slot": "mcp-recommended-toolkits-chip-badge",
17
+ children: /* @__PURE__ */ d(a, { className: "size-2.5" })
18
+ });
19
+ }
20
+ function m({ mcpServers: a, active: m = !1, onReview: h, onOpenMcpServer: g, onRemove: _, className: v, ...y }) {
21
+ let [b, x] = u(!1), S = a.length, C = S === 1 ? "server" : "servers", w = `Review ${S} recommended ${C}`, T = `Show ${S} recommended ${C}`, E = `Remove all ${S} recommended ${C}`;
22
+ return /* @__PURE__ */ f(o, {
23
+ ...y,
24
+ active: m,
25
+ className: e(m ? "bg-brand-navy/15 ring-brand-navy/40" : null, v),
26
+ "data-slot": "mcp-recommended-toolkits-chip",
27
+ "data-status": m ? "open" : "closed",
28
+ onRemove: _,
29
+ removeLabel: E,
30
+ children: [/* @__PURE__ */ f(s, {
31
+ "aria-label": w,
32
+ className: "pr-1.5 font-medium",
33
+ onClick: h,
34
+ title: w,
35
+ children: [/* @__PURE__ */ d(p, {}), /* @__PURE__ */ d("span", { children: "Recommended tools" })]
36
+ }), /* @__PURE__ */ f(i, {
37
+ onOpenChange: x,
38
+ open: b,
39
+ children: [/* @__PURE__ */ d(r, {
40
+ "aria-label": T,
41
+ className: "inline-flex cursor-pointer items-center gap-1 py-1 pr-1.5 pl-1 text-muted-foreground transition-[background-color,color] duration-[var(--duration-fast)] ease-[var(--ease-smooth)] hover:bg-foreground/10 hover:text-foreground focus-visible:bg-foreground/10 focus-visible:outline-none motion-reduce:transition-colors",
42
+ title: T,
43
+ type: "button",
44
+ children: /* @__PURE__ */ d("span", {
45
+ className: "rounded-full bg-muted px-1.5 py-0.5 text-[10px] text-foreground tabular-nums",
46
+ children: S
47
+ })
48
+ }), /* @__PURE__ */ f(n, {
49
+ align: "start",
50
+ className: "w-64 gap-0 p-0",
51
+ sideOffset: 6,
52
+ children: [/* @__PURE__ */ f(t, {
53
+ className: "flex items-center gap-2 px-3 pt-2.5 pb-1.5 font-medium text-foreground text-xs",
54
+ children: [/* @__PURE__ */ d(p, {}), /* @__PURE__ */ d("span", { children: "Recommended by Arcade" })]
55
+ }), /* @__PURE__ */ d(c, {
56
+ className: "max-h-72",
57
+ orientation: "vertical",
58
+ type: "hover",
59
+ children: /* @__PURE__ */ d("ul", {
60
+ className: "flex flex-col py-1",
61
+ children: a.map(({ id: e, name: t, toolkitId: n, selectedCount: r, total: i }) => /* @__PURE__ */ d("li", { children: /* @__PURE__ */ f("button", {
62
+ "aria-label": `Open ${t} tools`,
63
+ className: "flex w-full cursor-pointer items-center gap-2 px-3 py-1.5 text-left text-xs transition-colors hover:bg-foreground/[0.06] focus-visible:bg-foreground/[0.06] focus-visible:outline-none",
64
+ onClick: () => {
65
+ x(!1), g?.(e);
66
+ },
67
+ type: "button",
68
+ children: [
69
+ /* @__PURE__ */ d(l, {
70
+ name: t,
71
+ size: "sm",
72
+ toolkitId: n
73
+ }),
74
+ /* @__PURE__ */ d("span", {
75
+ className: "min-w-0 flex-1 truncate font-medium capitalize",
76
+ children: t
77
+ }),
78
+ r != null && i != null ? /* @__PURE__ */ d("span", {
79
+ className: "shrink-0 text-[10px] text-muted-foreground tabular-nums",
80
+ children: r === i ? `${i}` : `${r}/${i}`
81
+ }) : null
82
+ ]
83
+ }) }, e))
84
+ })
85
+ })]
86
+ })]
87
+ })]
88
+ });
89
+ }
90
+ //#endregion
91
+ export { m as McpRecommendedToolkitsChip };
@@ -0,0 +1,52 @@
1
+ import type * as React from "react";
2
+ export type McpRecommendedToolsState = "on" | "off";
3
+ export type McpRecommendedToolsCalloutProps = {
4
+ state: McpRecommendedToolsState;
5
+ onToggle?: (checked: boolean) => void;
6
+ } & Omit<React.ComponentProps<"div">, "children" | "onToggle">;
7
+ /**
8
+ * Inline explainer + on/off switch for the curated "Recommended tools" set.
9
+ * Renders with the shared flat `McpSectionCallout` layout (no card chrome) so
10
+ * it reads as part of the results stream rather than a competing surface. The
11
+ * switch sits right next to the title — close enough that the eye reads them as
12
+ * one control — over a short paragraph explaining what's in the set.
13
+ */
14
+ export declare function McpRecommendedToolsCallout({ state, onToggle, ...rest }: McpRecommendedToolsCalloutProps): React.JSX.Element;
15
+ export type McpRecommendedToolsDeactivateDialogProps = {
16
+ open: boolean;
17
+ /** Tools currently selected — surfaced in the "Keep" option's copy. */
18
+ selectedCount?: number;
19
+ /** Opt out but keep the current selection (no future auto-updates). */
20
+ onKeep: () => void;
21
+ /** Opt out and remove the recommended tools to start from scratch. */
22
+ onClear: () => void;
23
+ /** Dismiss without changing anything. */
24
+ onCancel: () => void;
25
+ };
26
+ /**
27
+ * Shown when the user turns Recommended tools off. Rather than a blind confirm,
28
+ * it offers the two meaningfully-different outcomes as labelled choices: keep
29
+ * the current tools as a self-managed set, or clear them and start fresh.
30
+ */
31
+ export declare function McpRecommendedToolsDeactivateDialog({ open, selectedCount, onKeep, onClear, onCancel, }: McpRecommendedToolsDeactivateDialogProps): React.JSX.Element;
32
+ /**
33
+ * The action that prompted a recommended-tools opt-out confirmation. Drives the
34
+ * dialog's copy so the warning matches what the user is about to remove.
35
+ */
36
+ export type McpRecommendedToolsOptOutKind = "remove-tool" | "remove-server" | "clear-all";
37
+ export type McpRecommendedToolsOptOutDialogProps = {
38
+ /** Which action is being confirmed — selects the dialog's copy. */
39
+ kind: McpRecommendedToolsOptOutKind;
40
+ open: boolean;
41
+ /** Proceed with the action that removes recommended tools. */
42
+ onConfirm: () => void;
43
+ /** Dismiss without removing anything. */
44
+ onCancel: () => void;
45
+ };
46
+ /**
47
+ * Confirmation shown before an action would drop tools from the recommended
48
+ * set — so opting out of curated tools is always deliberate. The copy adapts to
49
+ * the triggering action (remove a tool/server, or clear all).
50
+ */
51
+ export declare function McpRecommendedToolsOptOutDialog({ kind, open, onConfirm, onCancel, }: McpRecommendedToolsOptOutDialogProps): React.JSX.Element;
52
+ //# sourceMappingURL=recommended-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recommended-tools.d.ts","sourceRoot":"","sources":["../../../../../lib/components/ui/molecules/mcp-server-picker/recommended-tools.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AAepC,MAAM,MAAM,wBAAwB,GAAG,IAAI,GAAG,KAAK,CAAC;AAIpD,MAAM,MAAM,+BAA+B,GAAG;IAC5C,KAAK,EAAE,wBAAwB,CAAC;IAChC,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;CACvC,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,UAAU,GAAG,UAAU,CAAC,CAAC;AAE/D;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,EACzC,KAAK,EACL,QAAQ,EACR,GAAG,IAAI,EACR,EAAE,+BAA+B,qBA6BjC;AAID,MAAM,MAAM,wCAAwC,GAAG;IACrD,IAAI,EAAE,OAAO,CAAC;IACd,uEAAuE;IACvE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,uEAAuE;IACvE,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,sEAAsE;IACtE,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,yCAAyC;IACzC,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,mCAAmC,CAAC,EAClD,IAAI,EACJ,aAAa,EACb,MAAM,EACN,OAAO,EACP,QAAQ,GACT,EAAE,wCAAwC,qBAsC1C;AAyCD;;;GAGG;AACH,MAAM,MAAM,6BAA6B,GACrC,aAAa,GACb,eAAe,GACf,WAAW,CAAC;AA0BhB,MAAM,MAAM,oCAAoC,GAAG;IACjD,mEAAmE;IACnE,IAAI,EAAE,6BAA6B,CAAC;IACpC,IAAI,EAAE,OAAO,CAAC;IACd,8DAA8D;IAC9D,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,yCAAyC;IACzC,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,+BAA+B,CAAC,EAC9C,IAAI,EACJ,IAAI,EACJ,SAAS,EACT,QAAQ,GACT,EAAE,oCAAoC,qBA4BtC"}