@arcadeai/design-system 3.46.1 → 3.49.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 +3 -0
  17. package/dist/components/ui/atoms/index.d.ts.map +1 -1
  18. package/dist/components/ui/atoms/index.js +192 -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/index.d.ts +1 -0
  33. package/dist/components/ui/index.d.ts.map +1 -1
  34. package/dist/components/ui/index.js +236 -215
  35. package/dist/components/ui/molecules/confirm-popover.js +1 -1
  36. package/dist/components/ui/molecules/date-time-picker.js +1 -1
  37. package/dist/components/ui/molecules/empty-state.d.ts +28 -3
  38. package/dist/components/ui/molecules/empty-state.d.ts.map +1 -1
  39. package/dist/components/ui/molecules/empty-state.js +25 -19
  40. package/dist/components/ui/molecules/index.d.ts +32 -0
  41. package/dist/components/ui/molecules/index.d.ts.map +1 -1
  42. package/dist/components/ui/molecules/index.js +26 -10
  43. package/dist/components/ui/molecules/mcp-server-picker/category-filter-menu.d.ts +31 -0
  44. package/dist/components/ui/molecules/mcp-server-picker/category-filter-menu.d.ts.map +1 -0
  45. package/dist/components/ui/molecules/mcp-server-picker/category-filter-menu.js +106 -0
  46. package/dist/components/ui/molecules/mcp-server-picker/category-filter.d.ts +18 -0
  47. package/dist/components/ui/molecules/mcp-server-picker/category-filter.d.ts.map +1 -0
  48. package/dist/components/ui/molecules/mcp-server-picker/category-filter.js +34 -0
  49. package/dist/components/ui/molecules/mcp-server-picker/recommended-toolkits-chip.d.ts +53 -0
  50. package/dist/components/ui/molecules/mcp-server-picker/recommended-toolkits-chip.d.ts.map +1 -0
  51. package/dist/components/ui/molecules/mcp-server-picker/recommended-toolkits-chip.js +91 -0
  52. package/dist/components/ui/molecules/mcp-server-picker/recommended-tools.d.ts +52 -0
  53. package/dist/components/ui/molecules/mcp-server-picker/recommended-tools.d.ts.map +1 -0
  54. package/dist/components/ui/molecules/mcp-server-picker/recommended-tools.js +103 -0
  55. package/dist/components/ui/molecules/mcp-server-picker/review-count-chip.d.ts +22 -0
  56. package/dist/components/ui/molecules/mcp-server-picker/review-count-chip.d.ts.map +1 -0
  57. package/dist/components/ui/molecules/mcp-server-picker/review-count-chip.js +42 -0
  58. package/dist/components/ui/molecules/mcp-server-picker/search-scope-tabs.d.ts +18 -0
  59. package/dist/components/ui/molecules/mcp-server-picker/search-scope-tabs.d.ts.map +1 -0
  60. package/dist/components/ui/molecules/mcp-server-picker/search-scope-tabs.js +31 -0
  61. package/dist/components/ui/molecules/mcp-server-picker/section-callout.d.ts +21 -0
  62. package/dist/components/ui/molecules/mcp-server-picker/section-callout.d.ts.map +1 -0
  63. package/dist/components/ui/molecules/mcp-server-picker/section-callout.js +23 -0
  64. package/dist/components/ui/molecules/mcp-server-picker/section-nav-header.d.ts +39 -0
  65. package/dist/components/ui/molecules/mcp-server-picker/section-nav-header.d.ts.map +1 -0
  66. package/dist/components/ui/molecules/mcp-server-picker/section-nav-header.js +43 -0
  67. package/dist/components/ui/molecules/mcp-server-picker/server-avatar-stack.d.ts +16 -0
  68. package/dist/components/ui/molecules/mcp-server-picker/server-avatar-stack.d.ts.map +1 -0
  69. package/dist/components/ui/molecules/mcp-server-picker/server-avatar-stack.js +99 -0
  70. package/dist/components/ui/molecules/mcp-server-picker/server-card.d.ts +40 -0
  71. package/dist/components/ui/molecules/mcp-server-picker/server-card.d.ts.map +1 -0
  72. package/dist/components/ui/molecules/mcp-server-picker/server-card.js +118 -0
  73. package/dist/components/ui/molecules/mcp-server-picker/tool-card.d.ts +22 -0
  74. package/dist/components/ui/molecules/mcp-server-picker/tool-card.d.ts.map +1 -0
  75. package/dist/components/ui/molecules/mcp-server-picker/tool-card.js +62 -0
  76. package/dist/components/ui/molecules/mcp-server-picker/tool-search-band.d.ts +8 -0
  77. package/dist/components/ui/molecules/mcp-server-picker/tool-search-band.d.ts.map +1 -0
  78. package/dist/components/ui/molecules/mcp-server-picker/tool-search-band.js +41 -0
  79. package/dist/components/ui/molecules/mcp-server-picker/toolkit-avatar.d.ts +16 -0
  80. package/dist/components/ui/molecules/mcp-server-picker/toolkit-avatar.d.ts.map +1 -0
  81. package/dist/components/ui/molecules/mcp-server-picker/toolkit-avatar.js +56 -0
  82. package/dist/components/ui/molecules/mcp-server-picker/toolkit-chip.d.ts +38 -0
  83. package/dist/components/ui/molecules/mcp-server-picker/toolkit-chip.d.ts.map +1 -0
  84. package/dist/components/ui/molecules/mcp-server-picker/toolkit-chip.js +42 -0
  85. package/dist/components/ui/molecules/mcp-server-picker/toolkit-group-header.d.ts +33 -0
  86. package/dist/components/ui/molecules/mcp-server-picker/toolkit-group-header.d.ts.map +1 -0
  87. package/dist/components/ui/molecules/mcp-server-picker/toolkit-group-header.js +36 -0
  88. package/dist/components/ui/molecules/mcp-server-picker/unoptimized-callout.d.ts +10 -0
  89. package/dist/components/ui/molecules/mcp-server-picker/unoptimized-callout.d.ts.map +1 -0
  90. package/dist/components/ui/molecules/mcp-server-picker/unoptimized-callout.js +15 -0
  91. package/dist/components/ui/molecules/scroll-fade-area.d.ts +26 -0
  92. package/dist/components/ui/molecules/scroll-fade-area.d.ts.map +1 -0
  93. package/dist/components/ui/molecules/scroll-fade-area.js +25 -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 +22 -0
  108. package/dist/hooks/use-scroll-fade.d.ts.map +1 -0
  109. package/dist/hooks/use-scroll-fade.js +39 -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 +2 -2
  121. package/dist/ToolbarRootContext-Dubw_915.js +0 -34
@@ -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,22 @@
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
+ * Also returns `edges` ({ start, end }) for callers that want to draw their own
8
+ * edge affordance (e.g. a shadow) only when there is hidden content.
9
+ */
10
+ export declare function useScrollFade(axis: "x" | "y"): {
11
+ ref: (el: HTMLDivElement | null) => void;
12
+ onScroll: () => void;
13
+ edges: {
14
+ start: boolean;
15
+ end: boolean;
16
+ };
17
+ style: {
18
+ maskImage: string;
19
+ WebkitMaskImage: string;
20
+ } | undefined;
21
+ };
22
+ //# 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;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,GAAG,GAAG,GAAG;cA+CpC,cAAc,GAAG,IAAI;;;;;;;;;;EAuC7B"}
@@ -0,0 +1,39 @@
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
+ edges: a,
32
+ style: p ? {
33
+ maskImage: p,
34
+ WebkitMaskImage: p
35
+ } : void 0
36
+ };
37
+ }
38
+ //#endregion
39
+ export { i as useScrollFade };