@arcadeai/design-system 3.27.5 → 3.27.7

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 (95) hide show
  1. package/dist/assets/icons/attio.js +10 -0
  2. package/dist/assets/icons/claude.js +10 -0
  3. package/dist/assets/icons/cline.js +10 -0
  4. package/dist/assets/icons/cursor-install-dark.js +12 -0
  5. package/dist/assets/icons/cursor-install-light.js +12 -0
  6. package/dist/assets/icons/gemini.js +12 -0
  7. package/dist/assets/icons/goose.js +13 -0
  8. package/dist/assets/icons/openai.js +10 -0
  9. package/dist/assets/icons/vscode.js +12 -0
  10. package/dist/assets/icons/windsurf.js +10 -0
  11. package/dist/components/index.js +416 -396
  12. package/dist/components/ui/atoms/checkbox.d.ts.map +1 -1
  13. package/dist/components/ui/atoms/checkbox.js +100 -100
  14. package/dist/components/ui/atoms/icons/attio.d.ts +4 -0
  15. package/dist/components/ui/atoms/icons/attio.d.ts.map +1 -0
  16. package/dist/components/ui/atoms/icons/attio.js +27 -0
  17. package/dist/components/ui/atoms/icons/claude.d.ts +4 -0
  18. package/dist/components/ui/atoms/icons/claude.d.ts.map +1 -0
  19. package/dist/components/ui/atoms/icons/claude.js +27 -0
  20. package/dist/components/ui/atoms/icons/cline.d.ts +4 -0
  21. package/dist/components/ui/atoms/icons/cline.d.ts.map +1 -0
  22. package/dist/components/ui/atoms/icons/cline.js +23 -0
  23. package/dist/components/ui/atoms/icons/cursor-install-dark.d.ts +4 -0
  24. package/dist/components/ui/atoms/icons/cursor-install-dark.d.ts.map +1 -0
  25. package/dist/components/ui/atoms/icons/cursor-install-dark.js +79 -0
  26. package/dist/components/ui/atoms/icons/cursor-install-light.d.ts +4 -0
  27. package/dist/components/ui/atoms/icons/cursor-install-light.d.ts.map +1 -0
  28. package/dist/components/ui/atoms/icons/cursor-install-light.js +79 -0
  29. package/dist/components/ui/atoms/icons/gemini.d.ts +4 -0
  30. package/dist/components/ui/atoms/icons/gemini.d.ts.map +1 -0
  31. package/dist/components/ui/atoms/icons/gemini.js +234 -0
  32. package/dist/components/ui/atoms/icons/goose.d.ts +4 -0
  33. package/dist/components/ui/atoms/icons/goose.d.ts.map +1 -0
  34. package/dist/components/ui/atoms/icons/goose.js +22 -0
  35. package/dist/components/ui/atoms/icons/index.d.ts +10 -0
  36. package/dist/components/ui/atoms/icons/index.d.ts.map +1 -1
  37. package/dist/components/ui/atoms/icons/index.js +256 -236
  38. package/dist/components/ui/atoms/icons/openai.d.ts +4 -0
  39. package/dist/components/ui/atoms/icons/openai.d.ts.map +1 -0
  40. package/dist/components/ui/atoms/icons/openai.js +26 -0
  41. package/dist/components/ui/atoms/icons/vscode.d.ts +4 -0
  42. package/dist/components/ui/atoms/icons/vscode.d.ts.map +1 -0
  43. package/dist/components/ui/atoms/icons/vscode.js +187 -0
  44. package/dist/components/ui/atoms/icons/windsurf.d.ts +4 -0
  45. package/dist/components/ui/atoms/icons/windsurf.d.ts.map +1 -0
  46. package/dist/components/ui/atoms/icons/windsurf.js +26 -0
  47. package/dist/components/ui/atoms/index.js +399 -379
  48. package/dist/components/ui/index.js +416 -396
  49. package/dist/components/ui/molecules/index.js +1 -1
  50. package/dist/components/ui/molecules/requirement-badges.d.ts +6 -3
  51. package/dist/components/ui/molecules/requirement-badges.d.ts.map +1 -1
  52. package/dist/components/ui/molecules/requirement-badges.js +1 -1
  53. package/dist/components/ui/molecules/tool-card.d.ts.map +1 -1
  54. package/dist/components/ui/molecules/tool-card.js +55 -54
  55. package/dist/components/ui/molecules/toolkit-card.d.ts.map +1 -1
  56. package/dist/components/ui/molecules/toolkit-card.js +1 -1
  57. package/dist/components/ui/molecules/toolkit-picker-trigger.js +34 -34
  58. package/dist/components/ui/molecules/toolkit-selection-summary.d.ts.map +1 -1
  59. package/dist/components/ui/molecules/toolkit-selection-summary.js +5 -5
  60. package/dist/components/ui/organisms/toolkit-picker/components/search-input.js +1 -1
  61. package/dist/components/ui/organisms/toolkit-picker/components/select-button.js +1 -1
  62. package/dist/components/ui/organisms/toolkit-picker/components/toolkit-card-with-selection.js +1 -1
  63. package/dist/components/ui/organisms/toolkit-picker/components/toolkit-list.d.ts.map +1 -1
  64. package/dist/components/ui/organisms/toolkit-picker/components/toolkit-list.js +101 -74
  65. package/dist/components/ui/organisms/toolkit-picker/components/tools-list.d.ts.map +1 -1
  66. package/dist/components/ui/organisms/toolkit-picker/components/tools-list.js +74 -50
  67. package/dist/components/ui/organisms/toolkit-picker/components/unoptimized-toggle.d.ts +21 -0
  68. package/dist/components/ui/organisms/toolkit-picker/components/unoptimized-toggle.d.ts.map +1 -0
  69. package/dist/components/ui/organisms/toolkit-picker/components/unoptimized-toggle.js +29 -0
  70. package/dist/components/ui/organisms/toolkit-picker/hooks/featured-toolkits.d.ts +1 -1
  71. package/dist/components/ui/organisms/toolkit-picker/hooks/use-toolkit-picker.d.ts +8 -0
  72. package/dist/components/ui/organisms/toolkit-picker/hooks/use-toolkit-picker.d.ts.map +1 -1
  73. package/dist/components/ui/organisms/toolkit-picker/hooks/use-toolkit-picker.js +120 -51
  74. package/dist/components/ui/organisms/toolkit-picker/mocks/toolkit-collection.d.ts.map +1 -1
  75. package/dist/components/ui/organisms/toolkit-picker/mocks/toolkit-collection.js +55 -24
  76. package/dist/components/ui/organisms/toolkit-picker/toolkit-picker.js +20 -20
  77. package/dist/hooks/use-is-truncated.d.ts +13 -0
  78. package/dist/hooks/use-is-truncated.d.ts.map +1 -0
  79. package/dist/hooks/use-is-truncated.js +20 -0
  80. package/dist/lib/arcade/arcade.d.ts +0 -24
  81. package/dist/lib/arcade/arcade.d.ts.map +1 -1
  82. package/dist/lib/arcade/arcade.js +258 -421
  83. package/dist/lib/arcade/toolkit-collection.d.ts +15 -0
  84. package/dist/lib/arcade/toolkit-collection.d.ts.map +1 -0
  85. package/dist/lib/arcade/toolkit-collection.js +149 -0
  86. package/dist/main.js +455 -435
  87. package/dist/metadata/oauth-providers.d.ts +2 -0
  88. package/dist/metadata/oauth-providers.d.ts.map +1 -1
  89. package/dist/metadata/oauth-providers.js +84 -72
  90. package/dist/metadata/toolkits.js +7 -7
  91. package/dist/metadata/utils.d.ts +4 -7
  92. package/dist/metadata/utils.d.ts.map +1 -1
  93. package/dist/metadata/utils.js +16 -13
  94. package/dist/{toolkit-card-D6Dqff6p.js → toolkit-card-Cmp_yG03.js} +115 -110
  95. package/package.json +34 -23
@@ -1,8 +1,17 @@
1
- import { jsx as A } from "react/jsx-runtime";
2
- import { createContext as F, useReducer as b, useMemo as _, useEffect as g, useContext as v } from "react";
3
- const I = (e, o) => o ? new Set(
4
- e.filter((t) => t.searchableText?.toLowerCase().includes(o))
5
- ) : new Set(e), C = (e, o) => {
1
+ import { jsx as Z } from "react/jsx-runtime";
2
+ import { createContext as j, useReducer as W, useMemo as O, useEffect as X, useContext as J } from "react";
3
+ import { isStarterToolkit as p } from "../utils/toolkit-grouping.js";
4
+ const $ = /\s+/, K = (e) => e.split($).filter(Boolean), z = (e, o) => {
5
+ if (!o)
6
+ return new Set(e);
7
+ const t = K(o);
8
+ return new Set(
9
+ e.filter((s) => {
10
+ const l = s.searchableText?.toLowerCase() ?? "";
11
+ return t.every((c) => l.includes(c));
12
+ })
13
+ );
14
+ }, ee = (e, o) => {
6
15
  if (!o)
7
16
  return [];
8
17
  const t = o.toolkitMap?.get(e);
@@ -12,7 +21,7 @@ const I = (e, o) => o ? new Set(
12
21
  return [];
13
22
  const s = new Set(t.tools.map((l) => l.fully_qualified_name));
14
23
  return o.tools.filter((l) => s.has(l.fully_qualified_name));
15
- }, q = (e, o) => {
24
+ }, oe = (e, o) => {
16
25
  if (!o)
17
26
  return {
18
27
  selectedToolkits: /* @__PURE__ */ new Map(),
@@ -35,7 +44,7 @@ const I = (e, o) => o ? new Set(
35
44
  s.set(c.fully_qualified_name, !0);
36
45
  }
37
46
  return { selectedToolkits: t, selectedTools: s };
38
- }, f = (e, o, t) => {
47
+ }, _ = (e, o, t) => {
39
48
  const s = /* @__PURE__ */ new Map(), l = /* @__PURE__ */ new Map();
40
49
  if (!t)
41
50
  return { selectedToolkits: s, selectedTools: l };
@@ -48,12 +57,12 @@ const I = (e, o) => o ? new Set(
48
57
  for (const c of o)
49
58
  l.set(c, !0);
50
59
  return { selectedToolkits: s, selectedTools: l };
51
- }, N = (e) => {
52
- const { selectedToolkits: o, selectedTools: t } = f(
60
+ }, te = (e) => {
61
+ const { selectedToolkits: o, selectedTools: t } = _(
53
62
  e.initialProps?.selectedToolkits,
54
63
  e.initialProps?.selectedTools,
55
64
  e.toolkitCollection
56
- ), { selectedToolkits: s, selectedTools: l } = f(
65
+ ), { selectedToolkits: s, selectedTools: l } = _(
57
66
  e.initialProps?.committedToolkits || e.initialProps?.selectedToolkits,
58
67
  e.initialProps?.committedTools || e.initialProps?.selectedTools,
59
68
  e.toolkitCollection
@@ -66,9 +75,10 @@ const I = (e, o) => o ? new Set(
66
75
  committedTools: l,
67
76
  searchQuery: "",
68
77
  toolkitFilter: "",
69
- activeTab: "toolkits"
78
+ activeTab: "toolkits",
79
+ showUnoptimizedToolkits: !1
70
80
  };
71
- }, P = (e, o) => {
81
+ }, se = (e, o) => {
72
82
  switch (o.type) {
73
83
  case "TOGGLE_TOOLKIT": {
74
84
  const t = o.payload, { name: s, tools: l } = t, c = e.selectedToolkits.has(s), i = new Map(e.selectedToolkits), T = new Map(e.selectedTools);
@@ -88,14 +98,14 @@ const I = (e, o) => o ? new Set(
88
98
  };
89
99
  }
90
100
  case "SET_INITIAL_SELECTIONS": {
91
- const t = o.payload, s = o.collection, { selectedToolkits: l, selectedTools: c } = f(
101
+ const t = o.payload, s = o.collection, { selectedToolkits: l, selectedTools: c } = _(
92
102
  t.selectedToolkits,
93
103
  t.selectedTools,
94
104
  s
95
105
  ), {
96
106
  selectedToolkits: i,
97
107
  selectedTools: T
98
- } = f(
108
+ } = _(
99
109
  t.committedToolkits || t.selectedToolkits,
100
110
  t.committedTools || t.selectedTools,
101
111
  s
@@ -111,7 +121,7 @@ const I = (e, o) => o ? new Set(
111
121
  case "TOGGLE_TOOL": {
112
122
  const { toolFqn: t, toolkitName: s, toolkit: l, selectionMode: c } = o.payload, i = e.selectedTools.has(t), T = new Map(e.selectedToolkits), r = new Map(e.selectedTools);
113
123
  return i ? (r.delete(t), s && l && (l.tools?.some(
114
- (d) => d.fully_qualified_name !== t && r.has(d.fully_qualified_name)
124
+ (k) => k.fully_qualified_name !== t && r.has(k.fully_qualified_name)
115
125
  ) || T.delete(s))) : (c === "single" && (r.clear(), T.clear()), r.set(t, !0), s && l && T.set(s, l)), {
116
126
  ...e,
117
127
  selectedTools: r,
@@ -122,7 +132,7 @@ const I = (e, o) => o ? new Set(
122
132
  const { visibleToolFqns: t, collection: s } = o.payload, l = t?.length === 0, i = !t && !s?.toolkits?.length;
123
133
  if (l || i)
124
134
  return e;
125
- const T = q(t, s);
135
+ const T = oe(t, s);
126
136
  return { ...e, ...T };
127
137
  }
128
138
  case "CLEAR_SELECTIONS":
@@ -144,7 +154,7 @@ const I = (e, o) => o ? new Set(
144
154
  selectedTools: new Map(e.committedTools)
145
155
  };
146
156
  case "SET_SEARCH_QUERY":
147
- return { ...e, searchQuery: o.payload };
157
+ return o.payload.trim() ? { ...e, searchQuery: o.payload } : { ...e, searchQuery: "", activeTab: "toolkits" };
148
158
  case "CLEAR_SEARCH_QUERY":
149
159
  return { ...e, searchQuery: "", activeTab: "toolkits" };
150
160
  case "SET_TOOLKIT_FILTER":
@@ -155,13 +165,18 @@ const I = (e, o) => o ? new Set(
155
165
  const t = o.payload;
156
166
  return t === "toolkits" && e.toolkitFilter ? { ...e, activeTab: t, toolkitFilter: "" } : { ...e, activeTab: t };
157
167
  }
168
+ case "TOGGLE_UNOPTIMIZED_TOOLKITS":
169
+ return {
170
+ ...e,
171
+ showUnoptimizedToolkits: !e.showUnoptimizedToolkits
172
+ };
158
173
  default:
159
174
  return e;
160
175
  }
161
- }, O = F(
176
+ }, V = j(
162
177
  null
163
178
  );
164
- function G({
179
+ function Te({
165
180
  children: e,
166
181
  toolkitCollection: o,
167
182
  selectionMode: t,
@@ -171,57 +186,110 @@ function G({
171
186
  toolkitCollection: o,
172
187
  selectionMode: t,
173
188
  initialProps: s
174
- }, [c, i] = b(
175
- P,
189
+ }, [c, i] = W(
190
+ se,
176
191
  l,
177
- N
178
- ), { searchQuery: T, toolkitFilter: r, activeTab: k } = c, { filteredToolkits: d, filteredTools: p, effectiveTab: S } = _(() => {
179
- const n = T.toLowerCase().trim(), u = o?.toolkits || [], a = r ? C(r, o) : [], m = r && a.length > 0 ? a : o?.tools || [], M = I(u, n), L = I(m, n);
180
- let E = k;
192
+ te
193
+ ), {
194
+ searchQuery: T,
195
+ toolkitFilter: r,
196
+ activeTab: S,
197
+ showUnoptimizedToolkits: k,
198
+ selectedToolkits: E
199
+ } = c, {
200
+ filteredToolkits: R,
201
+ filteredTools: g,
202
+ effectiveTab: b,
203
+ hasStarterToolkits: v,
204
+ hiddenToolkitCount: A,
205
+ hiddenToolCount: F
206
+ } = O(() => {
207
+ const n = T.toLowerCase().trim(), d = o?.toolkits || [], m = o?.tools || [], y = d.some(p), h = k ? null : new Set(
208
+ d.filter(
209
+ (a) => !p(a) || E.has(a.name)
210
+ ).map((a) => a.name)
211
+ ), D = h === null ? d : d.filter((a) => h.has(a.name)), C = r ? ee(r, o) : [], M = r && C.length > 0, q = M ? C : m, Y = h === null || M ? q : q.filter((a) => {
212
+ const u = o?.toolToToolkitMap?.get(
213
+ a.fully_qualified_name
214
+ );
215
+ return !u || !o?.toolkitMap?.get(u) ? !0 : h.has(u);
216
+ }), P = z(D, n), G = z(Y, n);
217
+ let x = 0, Q = 0;
218
+ if (!(k || M)) {
219
+ for (const f of d)
220
+ p(f) && !E.has(f.name) && (!n || (f.searchableText?.toLowerCase().includes(n) ?? !1)) && (x += 1);
221
+ const a = o?.toolkitMap, u = o?.toolToToolkitMap;
222
+ for (const f of m) {
223
+ const L = u?.get(f.fully_qualified_name), I = L ? a?.get(L) : void 0;
224
+ if (I && p(I) && !E.has(I.name)) {
225
+ const U = K(n);
226
+ (U.length === 0 || U.every(
227
+ (B) => (f.searchableText?.toLowerCase() ?? "").includes(B)
228
+ )) && (Q += 1);
229
+ }
230
+ }
231
+ }
232
+ let w = S;
181
233
  if (n) {
182
- const w = M.size > 0, h = L.size > 0;
183
- !w && h ? E = "tools" : w && !h && (E = "toolkits");
234
+ const a = P.size > 0, u = G.size > 0;
235
+ !a && u ? w = "tools" : a && !u && (w = "toolkits");
184
236
  }
185
237
  return {
186
- filteredToolkits: M,
187
- filteredTools: L,
188
- effectiveTab: E
238
+ filteredToolkits: P,
239
+ filteredTools: G,
240
+ effectiveTab: w,
241
+ hasStarterToolkits: y,
242
+ hiddenToolkitCount: x,
243
+ hiddenToolCount: Q
189
244
  };
190
- }, [o, T, r, k]), y = _(
245
+ }, [
246
+ o,
247
+ T,
248
+ r,
249
+ S,
250
+ k,
251
+ E
252
+ ]), N = O(
191
253
  () => ({
192
254
  ...c,
193
- activeTab: S,
255
+ activeTab: b,
194
256
  toolkitCollection: o,
195
- filteredToolkits: d,
196
- filteredTools: p
257
+ filteredToolkits: R,
258
+ filteredTools: g,
259
+ hasStarterToolkits: v,
260
+ hiddenToolkitCount: A,
261
+ hiddenToolCount: F
197
262
  }),
198
263
  [
199
264
  c,
200
- S,
265
+ b,
201
266
  o,
202
- d,
203
- p
267
+ R,
268
+ g,
269
+ v,
270
+ A,
271
+ F
204
272
  ]
205
273
  );
206
- g(() => {
274
+ X(() => {
207
275
  o && s && (s.selectedToolkits || s.selectedTools || s.committedToolkits || s.committedTools) && i({
208
276
  type: "SET_INITIAL_SELECTIONS",
209
277
  payload: s,
210
278
  collection: o
211
279
  });
212
280
  }, [o, s]);
213
- const R = _(
281
+ const H = O(
214
282
  () => ({
215
- state: y,
283
+ state: N,
216
284
  toggleToolkit: (n) => i({ type: "TOGGLE_TOOLKIT", payload: n }),
217
285
  toggleTool: (n) => {
218
- const u = n.fully_qualified_name, a = o?.toolToToolkitMap?.get(u), m = a ? o?.toolkitMap?.get(a) : void 0;
286
+ const d = n.fully_qualified_name, m = o?.toolToToolkitMap?.get(d), y = m ? o?.toolkitMap?.get(m) : void 0;
219
287
  i({
220
288
  type: "TOGGLE_TOOL",
221
289
  payload: {
222
- toolFqn: u,
223
- toolkitName: a,
224
- toolkit: m,
290
+ toolFqn: d,
291
+ toolkitName: m,
292
+ toolkit: y,
225
293
  selectionMode: c.selectionMode
226
294
  }
227
295
  });
@@ -237,14 +305,15 @@ function G({
237
305
  clearSearchQuery: () => i({ type: "CLEAR_SEARCH_QUERY" }),
238
306
  setToolkitFilter: (n) => i({ type: "SET_TOOLKIT_FILTER", payload: n }),
239
307
  clearFilter: () => i({ type: "CLEAR_FILTER" }),
240
- setActiveTab: (n) => i({ type: "SET_ACTIVE_TAB", payload: n })
308
+ setActiveTab: (n) => i({ type: "SET_ACTIVE_TAB", payload: n }),
309
+ toggleUnoptimizedToolkits: () => i({ type: "TOGGLE_UNOPTIMIZED_TOOLKITS" })
241
310
  }),
242
- [y, o, c.selectionMode]
311
+ [N, o, c.selectionMode]
243
312
  );
244
- return /* @__PURE__ */ A(O.Provider, { value: R, children: e });
313
+ return /* @__PURE__ */ Z(V.Provider, { value: H, children: e });
245
314
  }
246
- function V() {
247
- const e = v(O);
315
+ function re() {
316
+ const e = J(V);
248
317
  if (!e)
249
318
  throw new Error(
250
319
  "useToolkitPicker must be used within a ToolkitPickerProvider. Make sure to wrap your component with <ToolkitPickerProvider>."
@@ -252,6 +321,6 @@ function V() {
252
321
  return e;
253
322
  }
254
323
  export {
255
- G as ToolkitPickerProvider,
256
- V as useToolkitPicker
324
+ Te as ToolkitPickerProvider,
325
+ re as useToolkitPicker
257
326
  };
@@ -1 +1 @@
1
- {"version":3,"file":"toolkit-collection.d.ts","sourceRoot":"","sources":["../../../../../../lib/components/ui/organisms/toolkit-picker/mocks/toolkit-collection.ts"],"names":[],"mappings":"AAAA,OAAO,8BAA8B,CAAC;AAEtC,OAAO,KAAK,EAGV,OAAO,EACP,iBAAiB,EAClB,MAAM,uBAAuB,CAAC;AA8C/B,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAoThD,CAAC;AAGF,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,iBAAiB,CAkJnB;AAGD,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAqDtD,CAAC;AAEF,eAAO,MAAM,qBAAqB,mBAA4C,CAAC;AAC/E,eAAO,MAAM,2BAA2B,mBACS,CAAC;AAGlD,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CA2LpD,CAAC;AAEF,eAAO,MAAM,yBAAyB,mBACS,CAAC;AAGhD,wBAAgB,oBAAoB,CAClC,OAAO,GAAE;IACP,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,kBAAkB,CAAC,EAAE,MAAM,CAAC;CACxB,GACL,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA6MzB"}
1
+ {"version":3,"file":"toolkit-collection.d.ts","sourceRoot":"","sources":["../../../../../../lib/components/ui/organisms/toolkit-picker/mocks/toolkit-collection.ts"],"names":[],"mappings":"AAAA,OAAO,8BAA8B,CAAC;AAEtC,OAAO,KAAK,EAGV,OAAO,EACP,iBAAiB,EAClB,MAAM,uBAAuB,CAAC;AA+C/B,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAoThD,CAAC;AAGF,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,iBAAiB,CA4JnB;AAGD,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAyEtD,CAAC;AAEF,eAAO,MAAM,qBAAqB,mBAA4C,CAAC;AAC/E,eAAO,MAAM,2BAA2B,mBACS,CAAC;AAGlD,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CA2LpD,CAAC;AAEF,eAAO,MAAM,yBAAyB,mBACS,CAAC;AAGhD,wBAAgB,oBAAoB,CAClC,OAAO,GAAE;IACP,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,kBAAkB,CAAC,EAAE,MAAM,CAAC;CACxB,GACL,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA6MzB"}
@@ -1,8 +1,9 @@
1
1
  import "../../../../../web-sgv-FK6q.js";
2
2
  import { allTools as h } from "../../../../../lib/arcade/mocks.js";
3
- import { TOOLKIT_CATALOGUE as P } from "../../../../../metadata/toolkits.js";
4
- const E = h.filter((a) => a.toolkit.name === "basic"), N = h.filter((a) => a.toolkit.name === "api_toolkit"), C = h.filter((a) => a.toolkit.name === "Google"), $ = h.filter((a) => a.toolkit.name === "Gmail"), i = (a, r = !1, n = !1, l) => {
5
- const c = P[a];
3
+ import { normalizeText as M } from "../../../../../lib/arcade/toolkit-collection.js";
4
+ import { TOOLKIT_CATALOGUE as E } from "../../../../../metadata/toolkits.js";
5
+ const N = h.filter((a) => a.toolkit.name === "basic"), C = h.filter((a) => a.toolkit.name === "api_toolkit"), x = h.filter((a) => a.toolkit.name === "Google"), z = h.filter((a) => a.toolkit.name === "Gmail"), i = (a, r = !1, n = !1, l) => {
6
+ const c = E[a];
6
7
  return c ? {
7
8
  ...c,
8
9
  isBYOC: r,
@@ -21,12 +22,12 @@ const E = h.filter((a) => a.toolkit.name === "basic"), N = h.filter((a) => a.too
21
22
  isComingSoon: !1,
22
23
  isHidden: !1
23
24
  };
24
- }, x = {
25
+ }, D = {
25
26
  basic: {
26
27
  name: "basic",
27
28
  description: "Basic toolkit with essential tools",
28
29
  version: "1.0.0",
29
- tools: E,
30
+ tools: N,
30
31
  requirements: {
31
32
  met: !0,
32
33
  secrets: [],
@@ -38,7 +39,7 @@ const E = h.filter((a) => a.toolkit.name === "basic"), N = h.filter((a) => a.too
38
39
  name: "api_toolkit",
39
40
  description: "API toolkit for external integrations",
40
41
  version: "2.0.0",
41
- tools: N,
42
+ tools: C,
42
43
  requirements: {
43
44
  met: !1,
44
45
  secrets: [
@@ -216,7 +217,7 @@ const E = h.filter((a) => a.toolkit.name === "basic"), N = h.filter((a) => a.too
216
217
  name: "Google",
217
218
  description: "Arcade.dev LLM tools for Google Workspace",
218
219
  version: "1.2.4",
219
- tools: C,
220
+ tools: x,
220
221
  requirements: {
221
222
  met: !0,
222
223
  secrets: [],
@@ -235,7 +236,7 @@ const E = h.filter((a) => a.toolkit.name === "basic"), N = h.filter((a) => a.too
235
236
  name: "Gmail",
236
237
  description: "Arcade.dev LLM tools for Gmail",
237
238
  version: "2.0.0",
238
- tools: $,
239
+ tools: z,
239
240
  requirements: {
240
241
  met: !0,
241
242
  secrets: [],
@@ -330,7 +331,11 @@ function b(a) {
330
331
  toolsByName: /* @__PURE__ */ new Map()
331
332
  };
332
333
  for (const [e, o] of Object.entries(a)) {
333
- const v = `${o.name} ${o.description || ""} ${o.version || ""}`, A = {
334
+ const v = M([
335
+ o.name,
336
+ o.description ?? "",
337
+ o.version ?? ""
338
+ ]), A = {
334
339
  secrets: o.requirements?.secrets?.length ? {
335
340
  configured: o.requirements.secrets.filter((t) => t.met === !0).map((t) => t.key),
336
341
  pending: o.requirements.secrets.filter((t) => t.met === !1).map((t) => t.key)
@@ -384,7 +389,7 @@ function b(a) {
384
389
  // Pro only
385
390
  case "Slack":
386
391
  return i(e, !1, !1);
387
- // Neither BYOC nor Pro
392
+ // Neither BYOC nor Pro (primary toolkit, not starter)
388
393
  case "Discord":
389
394
  return i(e, !0, !1);
390
395
  // BYOC only
@@ -436,7 +441,13 @@ function b(a) {
436
441
  };
437
442
  r.push(d), l.set(e, d), m.toolkitsByName.set(e.toLowerCase(), d);
438
443
  for (const t of o.tools) {
439
- const u = `${t.name} ${t.fully_qualified_name} ${t.description || ""} ${o.name} ${o.description || ""}`, p = {
444
+ const u = M([
445
+ t.name,
446
+ t.fully_qualified_name,
447
+ t.description ?? "",
448
+ o.name,
449
+ o.description ?? ""
450
+ ]), p = {
440
451
  ...t,
441
452
  searchableText: u
442
453
  };
@@ -454,7 +465,7 @@ function b(a) {
454
465
  searchIndex: m
455
466
  };
456
467
  }
457
- const D = {
468
+ const $ = {
458
469
  Slack: {
459
470
  name: "Slack",
460
471
  description: "Slack communication toolkit",
@@ -487,6 +498,26 @@ const D = {
487
498
  ],
488
499
  requirements: { met: !0, secrets: [], authorization: [], scopes: {} }
489
500
  },
501
+ SlackApi: {
502
+ name: "SlackApi",
503
+ description: "Slack API starter toolkit",
504
+ version: "1.0.0",
505
+ tools: [
506
+ {
507
+ name: "api_call",
508
+ input: { parameters: [] },
509
+ qualified_name: "slackapi.api_call",
510
+ description: "Make raw Slack API call",
511
+ fully_qualified_name: "slackapi.api_call",
512
+ toolkit: {
513
+ name: "SlackApi",
514
+ description: "Slack API starter toolkit",
515
+ version: "1.0.0"
516
+ }
517
+ }
518
+ ],
519
+ requirements: { met: !0, secrets: [], authorization: [], scopes: {} }
520
+ },
490
521
  GitHub: {
491
522
  name: "GitHub",
492
523
  description: "GitHub development toolkit",
@@ -507,7 +538,7 @@ const D = {
507
538
  ],
508
539
  requirements: { met: !0, secrets: [], authorization: [], scopes: {} }
509
540
  }
510
- }, O = b(x), B = b(D), z = {
541
+ }, K = b(D), W = b($), H = {
511
542
  Gmail: {
512
543
  name: "Gmail",
513
544
  description: "Gmail email management toolkit",
@@ -694,8 +725,8 @@ const D = {
694
725
  scopes: { notion: ["read", "write"] }
695
726
  }
696
727
  }
697
- }, K = b(z);
698
- function W(a = {}) {
728
+ }, U = b(H);
729
+ function Y(a = {}) {
699
730
  const {
700
731
  toolkitCount: r = 100,
701
732
  minToolsPerToolkit: n = 10,
@@ -774,8 +805,8 @@ function W(a = {}) {
774
805
  ], G = Math.min(r, t.length), w = t.slice(
775
806
  0,
776
807
  G
777
- ), M = Math.max(0, r - G);
778
- for (let s = 0; s < M; s++) {
808
+ ), P = Math.max(0, r - G);
809
+ for (let s = 0; s < P; s++) {
779
810
  const _ = u[s % u.length];
780
811
  if (s < u.length)
781
812
  w.push(_);
@@ -855,11 +886,11 @@ function W(a = {}) {
855
886
  }
856
887
  export {
857
888
  b as createMockToolkitCollection,
858
- K as demoMockToolkitCollection,
859
- z as demoMockToolkits,
860
- W as generateLargeDataset,
861
- O as mockToolkitCollection,
862
- x as mockToolkits,
863
- B as simpleMockToolkitCollection,
864
- D as simpleMockToolkits
889
+ U as demoMockToolkitCollection,
890
+ H as demoMockToolkits,
891
+ Y as generateLargeDataset,
892
+ K as mockToolkitCollection,
893
+ D as mockToolkits,
894
+ W as simpleMockToolkitCollection,
895
+ $ as simpleMockToolkits
865
896
  };
@@ -1,8 +1,8 @@
1
1
  import { jsx as e, jsxs as t } from "react/jsx-runtime";
2
2
  import { Button as m } from "../../atoms/button.js";
3
- import { Dialog as S, DialogTrigger as z, DialogContent as D, DialogHeader as j, DialogTitle as A, DialogDescription as R, DialogClose as c, DialogFooter as B } from "../../atoms/dialog.js";
4
- import { Arcade as M } from "../../atoms/icons/arcade.js";
5
- import { MobileTooltipProvider as P } from "../../atoms/mobile-tooltip.js";
3
+ import { Dialog as S, DialogTrigger as z, DialogContent as D, DialogHeader as j, DialogTitle as A, DialogDescription as M, DialogClose as c, DialogFooter as P } from "../../atoms/dialog.js";
4
+ import { Arcade as R } from "../../atoms/icons/arcade.js";
5
+ import { MobileTooltipProvider as B } from "../../atoms/mobile-tooltip.js";
6
6
  import { Tabs as F, TabsList as L, TabsTrigger as p, TabsContent as h } from "../../atoms/tabs.js";
7
7
  import { Tooltip as E, TooltipTrigger as X, TooltipContent as G } from "../../atoms/tooltip.js";
8
8
  import { X as H, Package as I, Wrench as O } from "lucide-react";
@@ -17,33 +17,33 @@ import { ToolsList as K } from "./components/tools-list.js";
17
17
  import { useToolkitPicker as U } from "./hooks/use-toolkit-picker.js";
18
18
  const Z = /Mac/i, ue = (f) => {
19
19
  const {
20
- description: g = "Select toolkits and tools",
20
+ description: g = "Select MCP servers and tools",
21
21
  children: u,
22
22
  selectionMode: a = "multi",
23
- onSelectionChange: s
24
- } = f, [b, r] = Q(!1), i = x(null), o = x(null), {
23
+ onSelectionChange: r
24
+ } = f, [b, s] = Q(!1), i = x(null), o = x(null), {
25
25
  state: {
26
- selectedToolkits: k,
26
+ selectedToolkits: v,
27
27
  selectedTools: n,
28
- activeTab: v,
28
+ activeTab: k,
29
29
  filteredToolkits: N,
30
30
  filteredTools: w
31
31
  },
32
32
  setActiveTab: d,
33
- clearSearchQuery: T,
34
- commitSelections: y,
33
+ clearSearchQuery: y,
34
+ commitSelections: T,
35
35
  restoreCommittedState: C
36
36
  } = U(), _ = () => {
37
- y(), s && s({
38
- selectedToolkits: Array.from(k.keys()),
37
+ T(), r && r({
38
+ selectedToolkits: Array.from(v.keys()),
39
39
  selectedTools: Array.from(n.keys())
40
- }), r(!1);
40
+ }), s(!1);
41
41
  };
42
- return /* @__PURE__ */ e(P, { children: /* @__PURE__ */ t(
42
+ return /* @__PURE__ */ e(B, { children: /* @__PURE__ */ t(
43
43
  S,
44
44
  {
45
45
  onOpenChange: (l) => {
46
- r(l), l && (C(), T(), d("toolkits"));
46
+ s(l), l && (C(), y(), d("toolkits"));
47
47
  },
48
48
  open: b,
49
49
  children: [
@@ -73,11 +73,11 @@ const Z = /Mac/i, ue = (f) => {
73
73
  className: "pointer-events-none absolute inset-0 z-10 bg-[repeating-conic-gradient(from_0deg_at_100%_0%,rgba(0,0,0,0.25)_0deg_1deg,transparent_1deg_12deg)] opacity-30"
74
74
  }
75
75
  ),
76
- /* @__PURE__ */ e("span", { className: "relative z-20", children: /* @__PURE__ */ e(M, { className: "size-5 sm:size-7" }) })
76
+ /* @__PURE__ */ e("span", { className: "relative z-20", children: /* @__PURE__ */ e(R, { className: "size-5 sm:size-7" }) })
77
77
  ] }),
78
78
  /* @__PURE__ */ t("div", { className: "ml-1 text-left", children: [
79
79
  /* @__PURE__ */ e(A, { className: "font-bold text-lg sm:text-xl", children: "Choose Your Tools" }),
80
- /* @__PURE__ */ e(R, { className: "hidden sm:block", children: g })
80
+ /* @__PURE__ */ e(M, { className: "hidden sm:block", children: g })
81
81
  ] })
82
82
  ] }),
83
83
  /* @__PURE__ */ e(c, { asChild: !0, children: /* @__PURE__ */ e(
@@ -98,7 +98,7 @@ const Z = /Mac/i, ue = (f) => {
98
98
  {
99
99
  className: "flex min-h-0 flex-1 flex-col gap-0.5",
100
100
  onValueChange: (l) => d(l),
101
- value: v,
101
+ value: k,
102
102
  children: [
103
103
  /* @__PURE__ */ t("div", { className: "shrink-0 space-y-2 px-4 sm:space-y-3 sm:px-6", children: [
104
104
  /* @__PURE__ */ t("div", { className: "flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between", children: [
@@ -111,7 +111,7 @@ const Z = /Mac/i, ue = (f) => {
111
111
  value: "toolkits",
112
112
  children: [
113
113
  /* @__PURE__ */ e(I, { className: "h-4 w-4" }),
114
- /* @__PURE__ */ e("span", { children: "Toolkits" }),
114
+ /* @__PURE__ */ e("span", { children: "MCP Servers" }),
115
115
  /* @__PURE__ */ e("span", { className: "ml-1 rounded-full bg-emerald-300 px-1.5 py-0.5 text-emerald-900 text-xs dark:bg-emerald-500/25 dark:text-emerald-200", children: N.size })
116
116
  ]
117
117
  }
@@ -169,7 +169,7 @@ const Z = /Mac/i, ue = (f) => {
169
169
  ]
170
170
  }
171
171
  ),
172
- /* @__PURE__ */ e(B, { className: "shrink-0 border-t bg-white px-4 py-3 sm:px-6 sm:py-4 dark:bg-neutral-950", children: /* @__PURE__ */ t(
172
+ /* @__PURE__ */ e(P, { className: "shrink-0 border-t bg-white px-4 py-3 sm:px-6 sm:py-4 dark:bg-neutral-950", children: /* @__PURE__ */ t(
173
173
  "div",
174
174
  {
175
175
  className: `${a === "single" ? "sm:justify-end" : "sm:justify-between"} flex w-full flex-col gap-3 sm:flex-row sm:items-center`,
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Determines if the content of an element is visually truncated.
3
+ *
4
+ * Utilizes a `ResizeObserver` to update the truncated state when the element's size changes.
5
+ *
6
+ * @param enabled – Set to `false` to pause observation (e.g., when the element is expanded).
7
+ * The last known value is preserved while paused.
8
+ */
9
+ export declare function useIsTruncated(enabled?: boolean): {
10
+ ref: (el: HTMLElement | null) => void;
11
+ isTruncated: boolean;
12
+ };
13
+ //# sourceMappingURL=use-is-truncated.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-is-truncated.d.ts","sourceRoot":"","sources":["../../lib/hooks/use-is-truncated.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,OAAO,UAAO;cAOR,WAAW,GAAG,IAAI;;EA2BtD"}
@@ -0,0 +1,20 @@
1
+ import * as t from "react";
2
+ function i(n = !0) {
3
+ const [u, o] = t.useState(!1), c = t.useRef(n);
4
+ c.current = n;
5
+ const e = t.useRef(null), f = t.useCallback((r) => {
6
+ if (e.current && (e.current.disconnect(), e.current = null), !r)
7
+ return;
8
+ const s = () => {
9
+ c.current && o(r.scrollHeight > r.clientHeight + 1);
10
+ };
11
+ s(), e.current = new ResizeObserver(s), e.current.observe(r);
12
+ }, []);
13
+ return t.useEffect(() => {
14
+ const r = e;
15
+ return () => r.current?.disconnect();
16
+ }, []), { ref: f, isTruncated: u };
17
+ }
18
+ export {
19
+ i as useIsTruncated
20
+ };
@@ -70,31 +70,7 @@ export declare class ArcadeClient extends Arcade {
70
70
  groupToolsBy(groupKey: keyof ToolDefinition): Promise<Map<string, ToolDefinition>>;
71
71
  getToolkits(): Promise<Map<string, Toolkit>>;
72
72
  getToolsForToolkit(toolkit: string): Promise<ToolDefinition[]>;
73
- private applyToolRequirements;
74
- private mergeSecrets;
75
- private mergeAuthorizations;
76
- private mergeScopes;
77
- /**
78
- * Pre-compute requirements summary for optimal UI performance.
79
- * This eliminates the need for runtime transformation in UI components.
80
- */
81
- private computeRequirementsSummary;
82
- /**
83
- * Process raw toolkit data into an optimized collection with pre-computed search indices.
84
- *
85
- * @returns ToolkitCollection with:
86
- * - Pre-computed searchable text for fast filtering
87
- * - Pre-computed requirement badges (no runtime processing needed)
88
- * - Search indices for O(1) lookups
89
- * - Toolkit/tool mapping for quick relationships
90
- */
91
73
  getProcessedToolkitCollection(): Promise<ToolkitCollection>;
92
- /**
93
- * Helper function to create normalized searchable text from multiple strings.
94
- * Separates compound terms (like Gmail.List_emails) into individual searchable components.
95
- * Handles camelCase, snake_case, kebab-case, and dot.notation.
96
- */
97
- private normalizeText;
98
74
  }
99
75
  export {};
100
76
  //# sourceMappingURL=arcade.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"arcade.d.ts","sourceRoot":"","sources":["../../../lib/lib/arcade/arcade.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"arcade.d.ts","sourceRoot":"","sources":["../../../lib/lib/arcade/arcade.ts"],"names":[],"mappings":"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"}