@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.
- package/README.md +1 -1
- package/dist/{toggle-C4ztdcN-.js → Toggle-CyMSF-Z7.js} +14 -46
- package/dist/ToolbarRootContext-DVNA8Vkb.js +13 -0
- package/dist/{alert-dialog-oB_cE8NP.js → alert-dialog-tBMDYzJ3.js} +1 -1
- package/dist/assets/index.css +1 -1
- package/dist/assets/tokens.css +1 -1
- package/dist/assets/variables.css +1 -1
- package/dist/components/index.js +236 -215
- package/dist/components/ui/atoms/alert-dialog.js +1 -1
- package/dist/components/ui/atoms/avatar-notification-badge.d.ts +2 -2
- package/dist/components/ui/atoms/avatar-notification-badge.d.ts.map +1 -1
- package/dist/components/ui/atoms/avatar-notification-badge.js +21 -0
- package/dist/components/ui/atoms/dropdown-menu.js +1 -1
- package/dist/components/ui/atoms/filter-chip.d.ts +16 -0
- package/dist/components/ui/atoms/filter-chip.d.ts.map +1 -0
- package/dist/components/ui/atoms/filter-chip.js +37 -0
- package/dist/components/ui/atoms/index.d.ts +4 -0
- package/dist/components/ui/atoms/index.d.ts.map +1 -1
- package/dist/components/ui/atoms/index.js +193 -189
- package/dist/components/ui/atoms/mobile-tooltip.js +1 -1
- package/dist/components/ui/atoms/popover.js +1 -1
- package/dist/components/ui/atoms/removable-chip.d.ts +38 -0
- package/dist/components/ui/atoms/removable-chip.d.ts.map +1 -0
- package/dist/components/ui/atoms/removable-chip.js +36 -0
- package/dist/components/ui/atoms/scroll-area.d.ts +7 -1
- package/dist/components/ui/atoms/scroll-area.d.ts.map +1 -1
- package/dist/components/ui/atoms/scroll-area.js +1 -1
- package/dist/components/ui/atoms/select.js +1 -1
- package/dist/components/ui/atoms/toggle-group.d.ts +29 -0
- package/dist/components/ui/atoms/toggle-group.d.ts.map +1 -0
- package/dist/components/ui/atoms/toggle-group.js +3 -0
- package/dist/components/ui/atoms/toggle.js +36 -2
- package/dist/components/ui/atoms/unoptimized-marker.d.ts +16 -0
- package/dist/components/ui/atoms/unoptimized-marker.d.ts.map +1 -0
- package/dist/components/ui/atoms/unoptimized-marker.js +20 -0
- package/dist/components/ui/index.d.ts +1 -0
- package/dist/components/ui/index.d.ts.map +1 -1
- package/dist/components/ui/index.js +236 -215
- package/dist/components/ui/molecules/confirm-popover.js +1 -1
- package/dist/components/ui/molecules/date-time-picker.js +1 -1
- package/dist/components/ui/molecules/empty-state.d.ts +28 -3
- package/dist/components/ui/molecules/empty-state.d.ts.map +1 -1
- package/dist/components/ui/molecules/empty-state.js +25 -19
- package/dist/components/ui/molecules/index.d.ts +30 -0
- package/dist/components/ui/molecules/index.d.ts.map +1 -1
- package/dist/components/ui/molecules/index.js +25 -10
- package/dist/components/ui/molecules/mcp-server-picker/category-filter-menu.d.ts +31 -0
- package/dist/components/ui/molecules/mcp-server-picker/category-filter-menu.d.ts.map +1 -0
- package/dist/components/ui/molecules/mcp-server-picker/category-filter-menu.js +106 -0
- package/dist/components/ui/molecules/mcp-server-picker/category-filter.d.ts +18 -0
- package/dist/components/ui/molecules/mcp-server-picker/category-filter.d.ts.map +1 -0
- package/dist/components/ui/molecules/mcp-server-picker/category-filter.js +34 -0
- package/dist/components/ui/molecules/mcp-server-picker/recommended-toolkits-chip.d.ts +53 -0
- package/dist/components/ui/molecules/mcp-server-picker/recommended-toolkits-chip.d.ts.map +1 -0
- package/dist/components/ui/molecules/mcp-server-picker/recommended-toolkits-chip.js +91 -0
- package/dist/components/ui/molecules/mcp-server-picker/recommended-tools.d.ts +52 -0
- package/dist/components/ui/molecules/mcp-server-picker/recommended-tools.d.ts.map +1 -0
- package/dist/components/ui/molecules/mcp-server-picker/recommended-tools.js +103 -0
- package/dist/components/ui/molecules/mcp-server-picker/review-count-chip.d.ts +22 -0
- package/dist/components/ui/molecules/mcp-server-picker/review-count-chip.d.ts.map +1 -0
- package/dist/components/ui/molecules/mcp-server-picker/review-count-chip.js +42 -0
- package/dist/components/ui/molecules/mcp-server-picker/search-scope-tabs.d.ts +18 -0
- package/dist/components/ui/molecules/mcp-server-picker/search-scope-tabs.d.ts.map +1 -0
- package/dist/components/ui/molecules/mcp-server-picker/search-scope-tabs.js +31 -0
- package/dist/components/ui/molecules/mcp-server-picker/section-callout.d.ts +21 -0
- package/dist/components/ui/molecules/mcp-server-picker/section-callout.d.ts.map +1 -0
- package/dist/components/ui/molecules/mcp-server-picker/section-callout.js +23 -0
- package/dist/components/ui/molecules/mcp-server-picker/section-nav-header.d.ts +39 -0
- package/dist/components/ui/molecules/mcp-server-picker/section-nav-header.d.ts.map +1 -0
- package/dist/components/ui/molecules/mcp-server-picker/section-nav-header.js +43 -0
- package/dist/components/ui/molecules/mcp-server-picker/server-avatar-stack.d.ts +16 -0
- package/dist/components/ui/molecules/mcp-server-picker/server-avatar-stack.d.ts.map +1 -0
- package/dist/components/ui/molecules/mcp-server-picker/server-avatar-stack.js +99 -0
- package/dist/components/ui/molecules/mcp-server-picker/server-card.d.ts +41 -0
- package/dist/components/ui/molecules/mcp-server-picker/server-card.d.ts.map +1 -0
- package/dist/components/ui/molecules/mcp-server-picker/server-card.js +124 -0
- package/dist/components/ui/molecules/mcp-server-picker/tool-card.d.ts +27 -0
- package/dist/components/ui/molecules/mcp-server-picker/tool-card.d.ts.map +1 -0
- package/dist/components/ui/molecules/mcp-server-picker/tool-card.js +67 -0
- package/dist/components/ui/molecules/mcp-server-picker/tool-search-band.d.ts +8 -0
- package/dist/components/ui/molecules/mcp-server-picker/tool-search-band.d.ts.map +1 -0
- package/dist/components/ui/molecules/mcp-server-picker/tool-search-band.js +41 -0
- package/dist/components/ui/molecules/mcp-server-picker/toolkit-avatar.d.ts +16 -0
- package/dist/components/ui/molecules/mcp-server-picker/toolkit-avatar.d.ts.map +1 -0
- package/dist/components/ui/molecules/mcp-server-picker/toolkit-avatar.js +56 -0
- package/dist/components/ui/molecules/mcp-server-picker/toolkit-chip.d.ts +38 -0
- package/dist/components/ui/molecules/mcp-server-picker/toolkit-chip.d.ts.map +1 -0
- package/dist/components/ui/molecules/mcp-server-picker/toolkit-chip.js +42 -0
- package/dist/components/ui/molecules/mcp-server-picker/toolkit-group-header.d.ts +33 -0
- package/dist/components/ui/molecules/mcp-server-picker/toolkit-group-header.d.ts.map +1 -0
- package/dist/components/ui/molecules/mcp-server-picker/toolkit-group-header.js +36 -0
- package/dist/components/ui/molecules/mcp-server-picker/unoptimized-callout.d.ts +10 -0
- package/dist/components/ui/molecules/mcp-server-picker/unoptimized-callout.d.ts.map +1 -0
- package/dist/components/ui/molecules/mcp-server-picker/unoptimized-callout.js +15 -0
- package/dist/components/ui/molecules/user-nav.js +1 -1
- package/dist/components/ui/organisms/index.d.ts +5 -0
- package/dist/components/ui/organisms/index.d.ts.map +1 -0
- package/dist/components/ui/organisms/index.js +3 -0
- package/dist/components/ui/organisms/mcp-selection-summary-bar.d.ts +71 -0
- package/dist/components/ui/organisms/mcp-selection-summary-bar.d.ts.map +1 -0
- package/dist/components/ui/organisms/mcp-selection-summary-bar.js +61 -0
- package/dist/components/ui/organisms/mcp-server-picker.d.ts +45 -0
- package/dist/components/ui/organisms/mcp-server-picker.d.ts.map +1 -0
- package/dist/components/ui/organisms/mcp-server-picker.js +35 -0
- package/dist/components/ui/pages/login-page.js +19 -19
- package/dist/components/ui/templates/gateway-diagram.js +10 -10
- package/dist/{dropdown-menu-DCFuLDwH.js → dropdown-menu-dsg43mOw.js} +2 -1
- package/dist/hooks/use-scroll-fade.d.ts +15 -0
- package/dist/hooks/use-scroll-fade.d.ts.map +1 -0
- package/dist/hooks/use-scroll-fade.js +38 -0
- package/dist/main.js +242 -221
- package/dist/metadata/index.js +6 -6
- package/dist/metadata/toolkit-icons.d.ts +15 -0
- package/dist/metadata/toolkit-icons.d.ts.map +1 -1
- package/dist/metadata/toolkit-icons.js +294 -292
- package/dist/{popover-Ck3ILBUA.js → popover-CXSOUeVQ.js} +2 -1
- package/dist/{scroll-area-BD6qsU_I.js → scroll-area-53KPfESS.js} +6 -3
- package/dist/{select-cAvbXH_n.js → select-CPTT__cT.js} +2 -1
- package/dist/toggle-group-CDYMBO0F.js +87 -0
- package/dist/useAnchoredPopupScrollLock-C8wRjuy0.js +24 -0
- package/package.json +1 -1
- 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 {
|
|
6
|
-
import {
|
|
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 = `${
|
|
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(
|
|
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(
|
|
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:
|
|
33
|
-
let O =
|
|
34
|
-
return /* @__PURE__ */ b(
|
|
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(
|
|
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(
|
|
45
|
-
/* @__PURE__ */ b(
|
|
46
|
-
/* @__PURE__ */ b(
|
|
47
|
-
/* @__PURE__ */ y(
|
|
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:
|
|
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:
|
|
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",
|
|
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(
|
|
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(
|
|
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 {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
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 =
|
|
36
|
+
let n = o[e];
|
|
37
37
|
if (!n) return null;
|
|
38
|
-
let { label: r, Icon:
|
|
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(
|
|
42
|
+
children: /* @__PURE__ */ s(i, {})
|
|
43
43
|
}, e);
|
|
44
44
|
}).filter((e) => e !== null), C = p.map((e) => {
|
|
45
|
-
let n =
|
|
45
|
+
let n = i[e];
|
|
46
46
|
return n ? /* @__PURE__ */ s(t, {
|
|
47
|
-
label:
|
|
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(
|
|
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 {
|
|
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 };
|