@arcadeai/design-system 3.46.0 → 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 (122) hide show
  1. package/README.md +1 -1
  2. package/dist/{toggle-C4ztdcN-.js → Toggle-CyMSF-Z7.js} +14 -46
  3. package/dist/ToolbarRootContext-DVNA8Vkb.js +13 -0
  4. package/dist/{alert-dialog-oB_cE8NP.js → alert-dialog-tBMDYzJ3.js} +1 -1
  5. package/dist/assets/index.css +1 -1
  6. package/dist/assets/tokens.css +1 -1
  7. package/dist/assets/variables.css +1 -1
  8. package/dist/components/index.js +236 -215
  9. package/dist/components/ui/atoms/alert-dialog.js +1 -1
  10. package/dist/components/ui/atoms/avatar-notification-badge.d.ts +2 -2
  11. package/dist/components/ui/atoms/avatar-notification-badge.d.ts.map +1 -1
  12. package/dist/components/ui/atoms/avatar-notification-badge.js +21 -0
  13. package/dist/components/ui/atoms/dropdown-menu.js +1 -1
  14. package/dist/components/ui/atoms/filter-chip.d.ts +16 -0
  15. package/dist/components/ui/atoms/filter-chip.d.ts.map +1 -0
  16. package/dist/components/ui/atoms/filter-chip.js +37 -0
  17. package/dist/components/ui/atoms/index.d.ts +4 -0
  18. package/dist/components/ui/atoms/index.d.ts.map +1 -1
  19. package/dist/components/ui/atoms/index.js +193 -189
  20. package/dist/components/ui/atoms/mobile-tooltip.js +1 -1
  21. package/dist/components/ui/atoms/popover.js +1 -1
  22. package/dist/components/ui/atoms/removable-chip.d.ts +38 -0
  23. package/dist/components/ui/atoms/removable-chip.d.ts.map +1 -0
  24. package/dist/components/ui/atoms/removable-chip.js +36 -0
  25. package/dist/components/ui/atoms/scroll-area.d.ts +7 -1
  26. package/dist/components/ui/atoms/scroll-area.d.ts.map +1 -1
  27. package/dist/components/ui/atoms/scroll-area.js +1 -1
  28. package/dist/components/ui/atoms/select.js +1 -1
  29. package/dist/components/ui/atoms/toggle-group.d.ts +29 -0
  30. package/dist/components/ui/atoms/toggle-group.d.ts.map +1 -0
  31. package/dist/components/ui/atoms/toggle-group.js +3 -0
  32. package/dist/components/ui/atoms/toggle.js +36 -2
  33. package/dist/components/ui/atoms/unoptimized-marker.d.ts +16 -0
  34. package/dist/components/ui/atoms/unoptimized-marker.d.ts.map +1 -0
  35. package/dist/components/ui/atoms/unoptimized-marker.js +20 -0
  36. package/dist/components/ui/index.d.ts +1 -0
  37. package/dist/components/ui/index.d.ts.map +1 -1
  38. package/dist/components/ui/index.js +236 -215
  39. package/dist/components/ui/molecules/confirm-popover.js +1 -1
  40. package/dist/components/ui/molecules/date-time-picker.js +1 -1
  41. package/dist/components/ui/molecules/empty-state.d.ts +28 -3
  42. package/dist/components/ui/molecules/empty-state.d.ts.map +1 -1
  43. package/dist/components/ui/molecules/empty-state.js +25 -19
  44. package/dist/components/ui/molecules/index.d.ts +30 -0
  45. package/dist/components/ui/molecules/index.d.ts.map +1 -1
  46. package/dist/components/ui/molecules/index.js +25 -10
  47. package/dist/components/ui/molecules/mcp-server-picker/category-filter-menu.d.ts +31 -0
  48. package/dist/components/ui/molecules/mcp-server-picker/category-filter-menu.d.ts.map +1 -0
  49. package/dist/components/ui/molecules/mcp-server-picker/category-filter-menu.js +106 -0
  50. package/dist/components/ui/molecules/mcp-server-picker/category-filter.d.ts +18 -0
  51. package/dist/components/ui/molecules/mcp-server-picker/category-filter.d.ts.map +1 -0
  52. package/dist/components/ui/molecules/mcp-server-picker/category-filter.js +34 -0
  53. package/dist/components/ui/molecules/mcp-server-picker/recommended-toolkits-chip.d.ts +53 -0
  54. package/dist/components/ui/molecules/mcp-server-picker/recommended-toolkits-chip.d.ts.map +1 -0
  55. package/dist/components/ui/molecules/mcp-server-picker/recommended-toolkits-chip.js +91 -0
  56. package/dist/components/ui/molecules/mcp-server-picker/recommended-tools.d.ts +52 -0
  57. package/dist/components/ui/molecules/mcp-server-picker/recommended-tools.d.ts.map +1 -0
  58. package/dist/components/ui/molecules/mcp-server-picker/recommended-tools.js +103 -0
  59. package/dist/components/ui/molecules/mcp-server-picker/review-count-chip.d.ts +22 -0
  60. package/dist/components/ui/molecules/mcp-server-picker/review-count-chip.d.ts.map +1 -0
  61. package/dist/components/ui/molecules/mcp-server-picker/review-count-chip.js +42 -0
  62. package/dist/components/ui/molecules/mcp-server-picker/search-scope-tabs.d.ts +18 -0
  63. package/dist/components/ui/molecules/mcp-server-picker/search-scope-tabs.d.ts.map +1 -0
  64. package/dist/components/ui/molecules/mcp-server-picker/search-scope-tabs.js +31 -0
  65. package/dist/components/ui/molecules/mcp-server-picker/section-callout.d.ts +21 -0
  66. package/dist/components/ui/molecules/mcp-server-picker/section-callout.d.ts.map +1 -0
  67. package/dist/components/ui/molecules/mcp-server-picker/section-callout.js +23 -0
  68. package/dist/components/ui/molecules/mcp-server-picker/section-nav-header.d.ts +39 -0
  69. package/dist/components/ui/molecules/mcp-server-picker/section-nav-header.d.ts.map +1 -0
  70. package/dist/components/ui/molecules/mcp-server-picker/section-nav-header.js +43 -0
  71. package/dist/components/ui/molecules/mcp-server-picker/server-avatar-stack.d.ts +16 -0
  72. package/dist/components/ui/molecules/mcp-server-picker/server-avatar-stack.d.ts.map +1 -0
  73. package/dist/components/ui/molecules/mcp-server-picker/server-avatar-stack.js +99 -0
  74. package/dist/components/ui/molecules/mcp-server-picker/server-card.d.ts +41 -0
  75. package/dist/components/ui/molecules/mcp-server-picker/server-card.d.ts.map +1 -0
  76. package/dist/components/ui/molecules/mcp-server-picker/server-card.js +124 -0
  77. package/dist/components/ui/molecules/mcp-server-picker/tool-card.d.ts +27 -0
  78. package/dist/components/ui/molecules/mcp-server-picker/tool-card.d.ts.map +1 -0
  79. package/dist/components/ui/molecules/mcp-server-picker/tool-card.js +67 -0
  80. package/dist/components/ui/molecules/mcp-server-picker/tool-search-band.d.ts +8 -0
  81. package/dist/components/ui/molecules/mcp-server-picker/tool-search-band.d.ts.map +1 -0
  82. package/dist/components/ui/molecules/mcp-server-picker/tool-search-band.js +41 -0
  83. package/dist/components/ui/molecules/mcp-server-picker/toolkit-avatar.d.ts +16 -0
  84. package/dist/components/ui/molecules/mcp-server-picker/toolkit-avatar.d.ts.map +1 -0
  85. package/dist/components/ui/molecules/mcp-server-picker/toolkit-avatar.js +56 -0
  86. package/dist/components/ui/molecules/mcp-server-picker/toolkit-chip.d.ts +38 -0
  87. package/dist/components/ui/molecules/mcp-server-picker/toolkit-chip.d.ts.map +1 -0
  88. package/dist/components/ui/molecules/mcp-server-picker/toolkit-chip.js +42 -0
  89. package/dist/components/ui/molecules/mcp-server-picker/toolkit-group-header.d.ts +33 -0
  90. package/dist/components/ui/molecules/mcp-server-picker/toolkit-group-header.d.ts.map +1 -0
  91. package/dist/components/ui/molecules/mcp-server-picker/toolkit-group-header.js +36 -0
  92. package/dist/components/ui/molecules/mcp-server-picker/unoptimized-callout.d.ts +10 -0
  93. package/dist/components/ui/molecules/mcp-server-picker/unoptimized-callout.d.ts.map +1 -0
  94. package/dist/components/ui/molecules/mcp-server-picker/unoptimized-callout.js +15 -0
  95. package/dist/components/ui/molecules/user-nav.js +1 -1
  96. package/dist/components/ui/organisms/index.d.ts +5 -0
  97. package/dist/components/ui/organisms/index.d.ts.map +1 -0
  98. package/dist/components/ui/organisms/index.js +3 -0
  99. package/dist/components/ui/organisms/mcp-selection-summary-bar.d.ts +71 -0
  100. package/dist/components/ui/organisms/mcp-selection-summary-bar.d.ts.map +1 -0
  101. package/dist/components/ui/organisms/mcp-selection-summary-bar.js +61 -0
  102. package/dist/components/ui/organisms/mcp-server-picker.d.ts +45 -0
  103. package/dist/components/ui/organisms/mcp-server-picker.d.ts.map +1 -0
  104. package/dist/components/ui/organisms/mcp-server-picker.js +35 -0
  105. package/dist/components/ui/pages/login-page.js +19 -19
  106. package/dist/components/ui/templates/gateway-diagram.js +10 -10
  107. package/dist/{dropdown-menu-DCFuLDwH.js → dropdown-menu-dsg43mOw.js} +2 -1
  108. package/dist/hooks/use-scroll-fade.d.ts +15 -0
  109. package/dist/hooks/use-scroll-fade.d.ts.map +1 -0
  110. package/dist/hooks/use-scroll-fade.js +38 -0
  111. package/dist/main.js +242 -221
  112. package/dist/metadata/index.js +6 -6
  113. package/dist/metadata/toolkit-icons.d.ts +15 -0
  114. package/dist/metadata/toolkit-icons.d.ts.map +1 -1
  115. package/dist/metadata/toolkit-icons.js +294 -292
  116. package/dist/{popover-Ck3ILBUA.js → popover-CXSOUeVQ.js} +2 -1
  117. package/dist/{scroll-area-BD6qsU_I.js → scroll-area-53KPfESS.js} +6 -3
  118. package/dist/{select-cAvbXH_n.js → select-CPTT__cT.js} +2 -1
  119. package/dist/toggle-group-CDYMBO0F.js +87 -0
  120. package/dist/useAnchoredPopupScrollLock-C8wRjuy0.js +24 -0
  121. package/package.json +1 -1
  122. package/dist/ToolbarRootContext-Dubw_915.js +0 -34
@@ -0,0 +1,71 @@
1
+ import { McpRecommendedMcpServer } from '../molecules/mcp-server-picker/recommended-toolkits-chip';
2
+ import { McpReviewCountChipProps } from '../molecules/mcp-server-picker/review-count-chip';
3
+ import { McpToolkitChipProps } from '../molecules/mcp-server-picker/toolkit-chip';
4
+ import type * as React from "react";
5
+ export type McpSelectionSummaryMcpServer = {
6
+ /** Stable React key — typically the MCP server name or id. */
7
+ id: string;
8
+ } & Omit<McpToolkitChipProps, "onOpen" | "onRemove">;
9
+ export type McpSelectionSummaryBarProps = {
10
+ /**
11
+ * Selected MCP servers, in display order. An empty array renders the idle
12
+ * placeholder; the bar keeps its height so the surrounding layout doesn't
13
+ * shift on first selection.
14
+ *
15
+ * Servers in `recommendedMcpServers` are NOT also included here — the
16
+ * consumer separates the two lists so this bar always renders the
17
+ * grouped recommended chip first, with the rest of the per-server chips
18
+ * trailing.
19
+ */
20
+ mcpServers: McpSelectionSummaryMcpServer[];
21
+ /**
22
+ * Recommended MCP servers collapsed into a single grouped chip. When this
23
+ * array is non-empty the bar renders one "Recommended tools" chip in
24
+ * front of the per-server chips; the chip's popover lists every entry.
25
+ */
26
+ recommendedMcpServers?: McpRecommendedMcpServer[];
27
+ /**
28
+ * Total selected tools across all MCP servers. Drives the count chip's
29
+ * primary number.
30
+ */
31
+ toolCount: number;
32
+ /**
33
+ * Whether the grouped review is currently open — flips the count chip to
34
+ * its pressed state so the user can see where the click landed.
35
+ */
36
+ reviewing?: boolean;
37
+ /**
38
+ * Whether the grouped review is currently filtered to recommended servers —
39
+ * flips the recommended chip into its active ring state.
40
+ */
41
+ reviewingRecommended?: boolean;
42
+ /** Custom aria-label for the count chip. */
43
+ reviewLabel?: McpReviewCountChipProps["aria-label"];
44
+ /** Open the grouped selected-tools view. */
45
+ onReview?: () => void;
46
+ /** Open the grouped review scoped to the recommended set. */
47
+ onReviewRecommended?: () => void;
48
+ /** Open this MCP server's tools to adjust selection. */
49
+ onOpenMcpServer?: (id: string) => void;
50
+ /** Remove this MCP server (and all of its selected tools). */
51
+ onRemoveMcpServer?: (id: string) => void;
52
+ /** Remove the entire recommended set in one go. */
53
+ onRemoveRecommended?: () => void;
54
+ /** Clear the entire selection. */
55
+ onClear?: () => void;
56
+ /** Copy override for the empty / no-selection-yet placeholder. */
57
+ emptyMessage?: string;
58
+ } & Omit<React.ComponentProps<"div">, "children" | "onReview">;
59
+ /**
60
+ * Persistent selection summary used inside the MCP picker shell: the total
61
+ * tool count (clickable — opens the grouped selected-tools view), the
62
+ * grouped recommended chip (if any), one removable chip per other selected
63
+ * MCP server, and a clear-all on the right. Sits above the results so the
64
+ * selection is obvious at a glance and easy to prune.
65
+ *
66
+ * Pure presentational — the consumer supplies the ordered server list and
67
+ * the callbacks. Domain-specific ordering (e.g. "newest-selected first")
68
+ * belongs in the consumer.
69
+ */
70
+ export declare function McpSelectionSummaryBar({ mcpServers, recommendedMcpServers, toolCount, reviewing, reviewingRecommended, reviewLabel, onReview, onReviewRecommended, onOpenMcpServer, onRemoveMcpServer, onRemoveRecommended, onClear, emptyMessage, className, ...rest }: McpSelectionSummaryBarProps): React.JSX.Element;
71
+ //# sourceMappingURL=mcp-selection-summary-bar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-selection-summary-bar.d.ts","sourceRoot":"","sources":["../../../../lib/components/ui/organisms/mcp-selection-summary-bar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AAEpC,OAAO,EACL,KAAK,uBAAuB,EAE7B,MAAM,uEAAuE,CAAC;AAC/E,OAAO,EAEL,KAAK,uBAAuB,EAC7B,MAAM,+DAA+D,CAAC;AACvE,OAAO,EAEL,KAAK,mBAAmB,EACzB,MAAM,0DAA0D,CAAC;AAIlE,MAAM,MAAM,4BAA4B,GAAG;IACzC,8DAA8D;IAC9D,EAAE,EAAE,MAAM,CAAC;CACZ,GAAG,IAAI,CAAC,mBAAmB,EAAE,QAAQ,GAAG,UAAU,CAAC,CAAC;AAErD,MAAM,MAAM,2BAA2B,GAAG;IACxC;;;;;;;;;OASG;IACH,UAAU,EAAE,4BAA4B,EAAE,CAAC;IAC3C;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,uBAAuB,EAAE,CAAC;IAClD;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,4CAA4C;IAC5C,WAAW,CAAC,EAAE,uBAAuB,CAAC,YAAY,CAAC,CAAC;IACpD,4CAA4C;IAC5C,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,6DAA6D;IAC7D,mBAAmB,CAAC,EAAE,MAAM,IAAI,CAAC;IACjC,wDAAwD;IACxD,eAAe,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,8DAA8D;IAC9D,iBAAiB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,mDAAmD;IACnD,mBAAmB,CAAC,EAAE,MAAM,IAAI,CAAC;IACjC,kCAAkC;IAClC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,kEAAkE;IAClE,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,UAAU,GAAG,UAAU,CAAC,CAAC;AAE/D;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CAAC,EACrC,UAAU,EACV,qBAA0B,EAC1B,SAAS,EACT,SAAiB,EACjB,oBAA4B,EAC5B,WAAW,EACX,QAAQ,EACR,mBAAmB,EACnB,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACnB,OAAO,EACP,YAAsC,EACtC,SAAS,EACT,GAAG,IAAI,EACR,EAAE,2BAA2B,qBA2E7B"}
@@ -0,0 +1,61 @@
1
+ "use client";
2
+ "use client";
3
+ import { cn as e } from "../../../lib/utils.js";
4
+ import { t } from "../../../button-BNOmhdpM.js";
5
+ import { useScrollFade as n } from "../../../hooks/use-scroll-fade.js";
6
+ import { McpReviewCountChip as r } from "../molecules/mcp-server-picker/review-count-chip.js";
7
+ import { McpToolkitChip as i } from "../molecules/mcp-server-picker/toolkit-chip.js";
8
+ import { McpRecommendedToolkitsChip as a } from "../molecules/mcp-server-picker/recommended-toolkits-chip.js";
9
+ import { Fragment as o, jsx as s, jsxs as c } from "react/jsx-runtime";
10
+ //#region lib/components/ui/organisms/mcp-selection-summary-bar.tsx
11
+ function l({ mcpServers: l, recommendedMcpServers: u = [], toolCount: d, reviewing: f = !1, reviewingRecommended: p = !1, reviewLabel: m, onReview: h, onReviewRecommended: g, onOpenMcpServer: _, onRemoveMcpServer: v, onRemoveRecommended: y, onClear: b, emptyMessage: x = "No tools selected yet", className: S, ...C }) {
12
+ let w = l.length + u.length, T = w > 0, E = n("x");
13
+ return /* @__PURE__ */ s("div", {
14
+ ...C,
15
+ className: e("@container flex min-h-9 items-center gap-2 rounded-lg bg-muted/30 px-2.5 py-1.5", S),
16
+ "data-slot": "mcp-selection-summary-bar",
17
+ "data-status": T ? "filled" : "empty",
18
+ children: T ? /* @__PURE__ */ c(o, { children: [
19
+ /* @__PURE__ */ s(r, {
20
+ active: f,
21
+ "aria-label": m,
22
+ onClick: h,
23
+ serverCount: w,
24
+ toolCount: d
25
+ }),
26
+ /* @__PURE__ */ s("span", {
27
+ "aria-hidden": !0,
28
+ className: "@md:block hidden h-5 w-px shrink-0 bg-border"
29
+ }),
30
+ /* @__PURE__ */ c("div", {
31
+ className: "@md:flex hidden min-w-0 flex-1 gap-1.5 overflow-x-auto p-0.5 [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden",
32
+ onScroll: E.onScroll,
33
+ ref: E.ref,
34
+ style: E.style,
35
+ children: [u.length > 0 ? /* @__PURE__ */ s(a, {
36
+ active: p,
37
+ mcpServers: u,
38
+ onOpenMcpServer: _,
39
+ onRemove: y,
40
+ onReview: g
41
+ }) : null, l.map(({ id: e, ...t }) => /* @__PURE__ */ s(i, {
42
+ ...t,
43
+ onOpen: _ ? () => _(e) : void 0,
44
+ onRemove: v ? () => v(e) : void 0
45
+ }, e))]
46
+ }),
47
+ b ? /* @__PURE__ */ s(t, {
48
+ className: "ml-auto",
49
+ onClick: b,
50
+ size: "xs",
51
+ variant: "ghost",
52
+ children: "Clear all"
53
+ }) : null
54
+ ] }) : /* @__PURE__ */ s("span", {
55
+ className: "flex shrink-0 items-center px-2 py-1 font-medium text-muted-foreground text-xs",
56
+ children: x
57
+ })
58
+ });
59
+ }
60
+ //#endregion
61
+ export { l as McpSelectionSummaryBar };
@@ -0,0 +1,45 @@
1
+ import type * as React from "react";
2
+ /**
3
+ * Layout shell for the MCP server picker. Pure presentational composition —
4
+ * the consumer (ui-kit) supplies the molecules (search input, filter chips,
5
+ * server cards, summary chips, etc.) and all the domain data + callbacks
6
+ * via children. The shell only owns spacing, container queries, and the
7
+ * `data-slot` hooks for queryability.
8
+ *
9
+ * Typical composition:
10
+ *
11
+ * <McpServerPicker>
12
+ * <McpServerPickerHeader>
13
+ * <Input ... />
14
+ * <McpCategoryFilter ... />
15
+ * <McpUnoptimizedToggle ... />
16
+ * </McpServerPickerHeader>
17
+ * <McpSelectionSummaryBar ... />
18
+ * <McpServerPickerGrid>
19
+ * {servers.map(s => <McpServerCard key={s.id} ... />)}
20
+ * </McpServerPickerGrid>
21
+ * </McpServerPicker>
22
+ *
23
+ * Each subcomponent is a thin <div> with consistent layout — no internal
24
+ * state, no domain knowledge. Selection / search / filter behavior belongs
25
+ * in the consumer (ui-kit), where the picker's domain state already lives
26
+ * (`useToolSelection`, `usePickerSearch`, etc.).
27
+ */
28
+ export declare function McpServerPicker({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
29
+ /**
30
+ * Toolbar row — search input, category filter, unoptimized toggle, etc.
31
+ * Stacks on narrow containers, flows inline at `@3xl`.
32
+ */
33
+ export declare function McpServerPickerHeader({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
34
+ /**
35
+ * Responsive grid of server cards. 1 col by default, 2 at `@md`, 3 at
36
+ * `@3xl`, 4 at `@5xl` — sized to comfortably fit `McpServerCard` widths.
37
+ */
38
+ export declare function McpServerPickerGrid({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
39
+ /**
40
+ * Responsive grid of tool cards (denser than the server grid). 1 col by
41
+ * default, 2 at `@xl`, 3 at `@4xl` — sized to fit `McpToolCard` widths.
42
+ * Used inside drill-in views and grouped tool sections.
43
+ */
44
+ export declare function McpServerPickerToolGrid({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
45
+ //# sourceMappingURL=mcp-server-picker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-server-picker.d.ts","sourceRoot":"","sources":["../../../../lib/components/ui/organisms/mcp-server-picker.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AAGpC;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,eAAe,CAAC,EAC9B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAQ7B;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAW7B;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAW7B;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,EACtC,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAW7B"}
@@ -0,0 +1,35 @@
1
+ "use client";
2
+ "use client";
3
+ import { cn as e } from "../../../lib/utils.js";
4
+ import { jsx as t } from "react/jsx-runtime";
5
+ //#region lib/components/ui/organisms/mcp-server-picker.tsx
6
+ function n({ className: n, ...r }) {
7
+ return /* @__PURE__ */ t("div", {
8
+ ...r,
9
+ className: e("@container space-y-3", n),
10
+ "data-slot": "mcp-server-picker"
11
+ });
12
+ }
13
+ function r({ className: n, ...r }) {
14
+ return /* @__PURE__ */ t("div", {
15
+ ...r,
16
+ className: e("flex @3xl:flex-row flex-col @3xl:items-center @3xl:gap-3 gap-2", n),
17
+ "data-slot": "mcp-server-picker-header"
18
+ });
19
+ }
20
+ function i({ className: n, ...r }) {
21
+ return /* @__PURE__ */ t("div", {
22
+ ...r,
23
+ className: e("grid @3xl:grid-cols-3 @5xl:grid-cols-4 @md:grid-cols-2 grid-cols-1 gap-2", n),
24
+ "data-slot": "mcp-server-picker-grid"
25
+ });
26
+ }
27
+ function a({ className: n, ...r }) {
28
+ return /* @__PURE__ */ t("div", {
29
+ ...r,
30
+ className: e("grid @4xl:grid-cols-3 @xl:grid-cols-2 grid-cols-1 gap-2", n),
31
+ "data-slot": "mcp-server-picker-tool-grid"
32
+ });
33
+ }
34
+ //#endregion
35
+ export { n as McpServerPicker, i as McpServerPickerGrid, r as McpServerPickerHeader, a as McpServerPickerToolGrid };
@@ -2,13 +2,13 @@ import { cn as e } from "../../../lib/utils.js";
2
2
  import { t } from "../../../button-BNOmhdpM.js";
3
3
  import { ArcadeGrid as n } from "../atoms/arcade-grid.js";
4
4
  import { ArcadeLogo as r } from "../atoms/icons/arcade-logo.js";
5
- import { AuthTemplate as i, AuthTemplateCard as a, AuthTemplateContent as o, AuthTemplateDescription as s, AuthTemplateFooter as c, AuthTemplateHeader as l, AuthTemplateLegal as u, AuthTemplateLegalLink as d, AuthTemplateLogo as f, AuthTemplatePrompt as p, AuthTemplatePromptLink as m, AuthTemplateTitle as h, AuthTemplateVideoBackground as g } from "../templates/auth-template.js";
6
- import { PUBLIC_VIDEO_URL as _ } from "../../../metadata/constants.js";
5
+ import { PUBLIC_VIDEO_URL as i } from "../../../metadata/constants.js";
6
+ import { AuthTemplate as a, AuthTemplateCard as o, AuthTemplateContent as s, AuthTemplateDescription as c, AuthTemplateFooter as l, AuthTemplateHeader as u, AuthTemplateLegal as d, AuthTemplateLegalLink as f, AuthTemplateLogo as p, AuthTemplatePrompt as m, AuthTemplatePromptLink as h, AuthTemplateTitle as g, AuthTemplateVideoBackground as _ } from "../templates/auth-template.js";
7
7
  import { Fragment as v } from "react";
8
8
  import { jsx as y, jsxs as b } from "react/jsx-runtime";
9
9
  import { Loader2 as x, LogIn as S } from "lucide-react";
10
10
  //#region lib/components/ui/pages/login-page.tsx
11
- var C = `${_}/A_L_Orange_Pink.mp4`;
11
+ var C = `${i}/A_L_Orange_Pink.mp4`;
12
12
  function w({ isLoading: e }) {
13
13
  return e ? /* @__PURE__ */ y(x, { className: "size-5 animate-spin" }) : /* @__PURE__ */ y(S, { className: "size-5" });
14
14
  }
@@ -20,20 +20,20 @@ function T({ termsHref: e, privacyHref: t }) {
20
20
  href: t,
21
21
  label: "Privacy Policy"
22
22
  }].filter((e) => !!e);
23
- return n.length === 0 ? null : /* @__PURE__ */ b(u, { children: [
23
+ return n.length === 0 ? null : /* @__PURE__ */ b(d, { children: [
24
24
  "By continuing, you agree to the",
25
25
  " ",
26
- n.map((e, t) => /* @__PURE__ */ b(v, { children: [t > 0 && /* @__PURE__ */ y("span", { children: " and " }), /* @__PURE__ */ y(d, {
26
+ n.map((e, t) => /* @__PURE__ */ b(v, { children: [t > 0 && /* @__PURE__ */ y("span", { children: " and " }), /* @__PURE__ */ y(f, {
27
27
  href: e.href,
28
28
  children: e.label
29
29
  })] }, e.href))
30
30
  ] });
31
31
  }
32
- function E({ isLoading: u = !1, loadingText: d = "Authenticating...", onSubmit: _, privacyHref: v, registerHref: x, submitText: S = "Sign in with Arcade", termsHref: E, videoSrc: D = C }) {
33
- let O = u ? d : S, k = x || E || v;
34
- return /* @__PURE__ */ b(i, { children: [
32
+ function E({ isLoading: i = !1, loadingText: d = "Authenticating...", onSubmit: f, privacyHref: v, registerHref: x, submitText: S = "Sign in with Arcade", termsHref: E, videoSrc: D = C }) {
33
+ let O = i ? d : S, k = x || E || v;
34
+ return /* @__PURE__ */ b(a, { children: [
35
35
  /* @__PURE__ */ y("div", { className: "absolute -inset-4 z-0 bg-gradient-to-br from-rose-500/70 via-pink-400/50 to-amber-500/70 opacity-60 blur-lg brightness-50" }),
36
- D && /* @__PURE__ */ y(g, { src: D }),
36
+ D && /* @__PURE__ */ y(_, { src: D }),
37
37
  /* @__PURE__ */ y("div", {
38
38
  className: "absolute inset-0 z-1 opacity-[0.01]",
39
39
  children: /* @__PURE__ */ y(n, {
@@ -41,26 +41,26 @@ function E({ isLoading: u = !1, loadingText: d = "Authenticating...", onSubmit:
41
41
  fill: "currentColor"
42
42
  })
43
43
  }),
44
- /* @__PURE__ */ y(f, { children: /* @__PURE__ */ y(r, { className: "h-12 w-auto text-zinc-900 dark:text-white" }) }),
45
- /* @__PURE__ */ b(a, { children: [
46
- /* @__PURE__ */ b(l, { children: [/* @__PURE__ */ y(h, { children: "Welcome back" }), /* @__PURE__ */ y(s, { children: "Sign in with your Arcade account to continue" })] }),
47
- /* @__PURE__ */ y(o, { children: /* @__PURE__ */ b(t, {
44
+ /* @__PURE__ */ y(p, { children: /* @__PURE__ */ y(r, { className: "h-12 w-auto text-zinc-900 dark:text-white" }) }),
45
+ /* @__PURE__ */ b(o, { children: [
46
+ /* @__PURE__ */ b(u, { children: [/* @__PURE__ */ y(g, { children: "Welcome back" }), /* @__PURE__ */ y(c, { children: "Sign in with your Arcade account to continue" })] }),
47
+ /* @__PURE__ */ y(s, { children: /* @__PURE__ */ b(t, {
48
48
  className: e("group relative h-12 w-full overflow-hidden text-base transition-all duration-300", "hover:scale-[1.01] hover:shadow-md hover:brightness-105 active:scale-[0.99]"),
49
- disabled: u,
50
- onClick: _,
49
+ disabled: i,
50
+ onClick: f,
51
51
  size: "lg",
52
52
  children: [/* @__PURE__ */ b("span", {
53
53
  className: "relative z-10 flex items-center justify-center gap-2",
54
- children: [/* @__PURE__ */ y(w, { isLoading: u }), O]
55
- }), /* @__PURE__ */ y("div", { className: e("absolute inset-0 bg-gradient-to-r from-primary/5 via-primary/0 to-primary/5 transition-opacity duration-300 group-hover:opacity-100", u ? "pointer-events-none opacity-0" : "opacity-0") })]
54
+ children: [/* @__PURE__ */ y(w, { isLoading: i }), O]
55
+ }), /* @__PURE__ */ y("div", { className: e("absolute inset-0 bg-gradient-to-r from-primary/5 via-primary/0 to-primary/5 transition-opacity duration-300 group-hover:opacity-100", i ? "pointer-events-none opacity-0" : "opacity-0") })]
56
56
  }) }),
57
- k && /* @__PURE__ */ b(c, { children: [x && /* @__PURE__ */ b(p, { children: [
57
+ k && /* @__PURE__ */ b(l, { children: [x && /* @__PURE__ */ b(m, { children: [
58
58
  /* @__PURE__ */ y("span", {
59
59
  className: "text-muted-foreground text-sm",
60
60
  children: "Don't have an account?"
61
61
  }),
62
62
  " ",
63
- /* @__PURE__ */ y(m, {
63
+ /* @__PURE__ */ y(h, {
64
64
  href: x,
65
65
  children: "Register"
66
66
  })
@@ -1,10 +1,10 @@
1
1
  import { Arcade as e } from "../atoms/icons/arcade.js";
2
2
  import { FlowTile as t } from "../atoms/flow-tile.js";
3
3
  import { FlowDiagram as n } from "../molecules/flow-diagram.js";
4
- import { FlowHub as r } from "../atoms/flow-hub.js";
5
- import { MCP_CLIENT_METADATA as i } from "../../../metadata/mcp-clients.js";
6
- import { TOOLKITS as a } from "../../../metadata/toolkits.js";
7
- import { TOOLKIT_ICON_MAP as o } from "../../../metadata/toolkit-icons.js";
4
+ import { TOOLKITS as r } from "../../../metadata/toolkits.js";
5
+ import { TOOLKIT_ICON_MAP as i } from "../../../metadata/toolkit-icons.js";
6
+ import { FlowHub as a } from "../atoms/flow-hub.js";
7
+ import { MCP_CLIENT_METADATA as o } from "../../../metadata/mcp-clients.js";
8
8
  import { jsx as s } from "react/jsx-runtime";
9
9
  //#region lib/components/ui/templates/gateway-diagram.tsx
10
10
  var c = [
@@ -33,18 +33,18 @@ var c = [
33
33
  };
34
34
  function f({ mcpClientIds: f = c, mcpServerIds: p = l, animate: m = "both", animation: h = "flow", lineStyle: g, size: _ = "md", "aria-label": v = "Arcade MCP gateway diagram", ...y }) {
35
35
  let b = _, x = d[_], S = f.map((e) => {
36
- let n = i[e];
36
+ let n = o[e];
37
37
  if (!n) return null;
38
- let { label: r, Icon: a } = n;
38
+ let { label: r, Icon: i } = n;
39
39
  return /* @__PURE__ */ s(t, {
40
40
  label: r,
41
41
  size: b,
42
- children: /* @__PURE__ */ s(a, {})
42
+ children: /* @__PURE__ */ s(i, {})
43
43
  }, e);
44
44
  }).filter((e) => e !== null), C = p.map((e) => {
45
- let n = o[e];
45
+ let n = i[e];
46
46
  return n ? /* @__PURE__ */ s(t, {
47
- label: a.find((t) => t.id === e)?.label ?? e,
47
+ label: r.find((t) => t.id === e)?.label ?? e,
48
48
  size: b,
49
49
  children: /* @__PURE__ */ s(n, {})
50
50
  }, e) : null;
@@ -53,7 +53,7 @@ function f({ mcpClientIds: f = c, mcpServerIds: p = l, animate: m = "both", anim
53
53
  animate: m,
54
54
  animation: h,
55
55
  "aria-label": v,
56
- center: /* @__PURE__ */ s(r, {
56
+ center: /* @__PURE__ */ s(a, {
57
57
  className: u,
58
58
  size: x,
59
59
  children: /* @__PURE__ */ s(e, { "aria-hidden": !0 })
@@ -27,7 +27,8 @@ import { t as De } from "./useFocus-DzHCrvH6.js";
27
27
  import { n as Oe, r as ke, t as Ae } from "./getPseudoElementBounds-DarjR4tH.js";
28
28
  import { t as je } from "./inertValue-C36grUTu.js";
29
29
  import { t as Me } from "./useTriggerFocusGuards-D1QlFlDK.js";
30
- import { n as Ne, t as Pe } from "./ToolbarRootContext-Dubw_915.js";
30
+ import { t as Ne } from "./useAnchoredPopupScrollLock-C8wRjuy0.js";
31
+ import { t as Pe } from "./ToolbarRootContext-DVNA8Vkb.js";
31
32
  import { t as Fe } from "./CompositeItem-BWqRobLN.js";
32
33
  import { t as Ie } from "./Separator-CgntgfMd.js";
33
34
  import * as Z from "react";
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Fades the edge(s) of a scroll container that still have hidden content, via a
3
+ * dynamic mask-image — a lightweight "there's more" hint with no extra DOM.
4
+ * Works on either axis and only fades an edge you can actually scroll toward.
5
+ * Attach `ref` + `onScroll` to the scrollable element and spread `style`.
6
+ */
7
+ export declare function useScrollFade(axis: "x" | "y"): {
8
+ ref: (el: HTMLDivElement | null) => void;
9
+ onScroll: () => void;
10
+ style: {
11
+ maskImage: string;
12
+ WebkitMaskImage: string;
13
+ } | undefined;
14
+ };
15
+ //# sourceMappingURL=use-scroll-fade.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-scroll-fade.d.ts","sourceRoot":"","sources":["../../lib/hooks/use-scroll-fade.ts"],"names":[],"mappings":"AAMA;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,GAAG,GAAG,GAAG;cA+CpC,cAAc,GAAG,IAAI;;;;;;EAsC7B"}
@@ -0,0 +1,38 @@
1
+ "use client";
2
+ "use client";
3
+ import { useCallback as e, useRef as t, useState as n } from "react";
4
+ //#region lib/hooks/use-scroll-fade.ts
5
+ var r = 24;
6
+ function i(i) {
7
+ let [a, o] = n({
8
+ start: !1,
9
+ end: !1
10
+ }), s = t(null), c = t(null), l = t(null), u = e(() => {
11
+ let e = s.current;
12
+ if (!e) return;
13
+ let t = i === "x" ? e.scrollLeft : e.scrollTop, n = i === "x" ? e.clientWidth : e.clientHeight, r = i === "x" ? e.scrollWidth : e.scrollHeight, a = t > 1, c = t + n < r - 1;
14
+ o((e) => e.start === a && e.end === c ? e : {
15
+ start: a,
16
+ end: c
17
+ });
18
+ }, [i]), d = e(() => {
19
+ let e = s.current, t = c.current;
20
+ if (e && t) {
21
+ t.disconnect(), t.observe(e);
22
+ for (let n of Array.from(e.children)) t.observe(n);
23
+ u();
24
+ }
25
+ }, [u]), f = e((e) => {
26
+ c.current?.disconnect(), l.current?.disconnect(), c.current = null, l.current = null, s.current = e, e && (c.current = new ResizeObserver(() => u()), l.current = new MutationObserver(() => d()), l.current.observe(e, { childList: !0 }), d());
27
+ }, [u, d]), p;
28
+ return (a.start || a.end) && (p = `linear-gradient(${i === "x" ? "to right" : "to bottom"}, ${a.start ? `transparent 0, black ${r}px` : "black 0"}, ${a.end ? `black calc(100% - ${r}px), transparent 100%` : "black 100%"})`), {
29
+ ref: f,
30
+ onScroll: u,
31
+ style: p ? {
32
+ maskImage: p,
33
+ WebkitMaskImage: p
34
+ } : void 0
35
+ };
36
+ }
37
+ //#endregion
38
+ export { i as useScrollFade };