@arcadeai/design-system 3.27.0 → 3.27.2

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 (79) hide show
  1. package/README.md +2 -2
  2. package/dist/assets/icons/railway.js +10 -0
  3. package/dist/calendar-w1IATMME.js +3042 -0
  4. package/dist/components/index.js +444 -435
  5. package/dist/components/ui/atoms/accordion.js +4 -4
  6. package/dist/components/ui/atoms/alert-dialog.js +11 -11
  7. package/dist/components/ui/atoms/breadcrumb.js +3 -3
  8. package/dist/components/ui/atoms/calendar.d.ts +21 -0
  9. package/dist/components/ui/atoms/calendar.d.ts.map +1 -0
  10. package/dist/components/ui/atoms/calendar.js +10 -0
  11. package/dist/components/ui/atoms/command.js +1 -1
  12. package/dist/components/ui/atoms/dialog.js +1 -1
  13. package/dist/components/ui/atoms/dropdown-menu.js +5 -5
  14. package/dist/components/ui/atoms/form.js +3 -3
  15. package/dist/components/ui/atoms/hover-card.js +1 -1
  16. package/dist/components/ui/atoms/icons/index.d.ts +1 -0
  17. package/dist/components/ui/atoms/icons/index.d.ts.map +1 -1
  18. package/dist/components/ui/atoms/icons/index.js +80 -78
  19. package/dist/components/ui/atoms/icons/railway.d.ts +4 -0
  20. package/dist/components/ui/atoms/icons/railway.d.ts.map +1 -0
  21. package/dist/components/ui/atoms/icons/railway.js +31 -0
  22. package/dist/components/ui/atoms/index.d.ts +2 -0
  23. package/dist/components/ui/atoms/index.d.ts.map +1 -1
  24. package/dist/components/ui/atoms/index.js +429 -422
  25. package/dist/components/ui/atoms/popover.js +5 -5
  26. package/dist/components/ui/atoms/radio-group.js +1 -1
  27. package/dist/components/ui/atoms/resizable.js +3 -3
  28. package/dist/components/ui/atoms/select.js +1 -1
  29. package/dist/components/ui/atoms/sheet.js +4 -4
  30. package/dist/components/ui/atoms/tabs.js +1 -1
  31. package/dist/components/ui/atoms/tooltip.js +1 -1
  32. package/dist/components/ui/atoms/virtualized-grid.d.ts +23 -0
  33. package/dist/components/ui/atoms/virtualized-grid.d.ts.map +1 -0
  34. package/dist/components/ui/atoms/virtualized-grid.js +682 -0
  35. package/dist/components/ui/index.js +444 -435
  36. package/dist/components/ui/molecules/date-time-picker.d.ts +12 -0
  37. package/dist/components/ui/molecules/date-time-picker.d.ts.map +1 -0
  38. package/dist/components/ui/molecules/date-time-picker.js +84 -0
  39. package/dist/components/ui/molecules/index.d.ts +1 -0
  40. package/dist/components/ui/molecules/index.d.ts.map +1 -1
  41. package/dist/components/ui/molecules/index.js +13 -11
  42. package/dist/components/ui/molecules/requirement-badges.js +7 -6
  43. package/dist/components/ui/molecules/toolkit-card.d.ts.map +1 -1
  44. package/dist/components/ui/molecules/toolkit-card.js +1 -1
  45. package/dist/components/ui/molecules/toolkit-selection-summary.js +6 -5
  46. package/dist/components/ui/organisms/toolkit-picker/components/search-input.js +16 -15
  47. package/dist/components/ui/organisms/toolkit-picker/components/select-button.d.ts.map +1 -1
  48. package/dist/components/ui/organisms/toolkit-picker/components/select-button.js +11 -10
  49. package/dist/components/ui/organisms/toolkit-picker/components/toolkit-card-with-selection.js +1 -1
  50. package/dist/components/ui/organisms/toolkit-picker/components/toolkit-list.d.ts +3 -1
  51. package/dist/components/ui/organisms/toolkit-picker/components/toolkit-list.d.ts.map +1 -1
  52. package/dist/components/ui/organisms/toolkit-picker/components/toolkit-list.js +110 -58
  53. package/dist/components/ui/organisms/toolkit-picker/components/tools-list.d.ts +3 -1
  54. package/dist/components/ui/organisms/toolkit-picker/components/tools-list.d.ts.map +1 -1
  55. package/dist/components/ui/organisms/toolkit-picker/components/tools-list.js +75 -70
  56. package/dist/components/ui/organisms/toolkit-picker/hooks/featured-toolkits.d.ts +8 -0
  57. package/dist/components/ui/organisms/toolkit-picker/hooks/featured-toolkits.d.ts.map +1 -0
  58. package/dist/components/ui/organisms/toolkit-picker/hooks/featured-toolkits.js +11 -0
  59. package/dist/components/ui/organisms/toolkit-picker/hooks/use-toolkit-picker.d.ts +6 -4
  60. package/dist/components/ui/organisms/toolkit-picker/hooks/use-toolkit-picker.d.ts.map +1 -1
  61. package/dist/components/ui/organisms/toolkit-picker/hooks/use-toolkit-picker.js +195 -261
  62. package/dist/components/ui/organisms/toolkit-picker/mocks/toolkit-collection.d.ts +5 -1
  63. package/dist/components/ui/organisms/toolkit-picker/mocks/toolkit-collection.d.ts.map +1 -1
  64. package/dist/components/ui/organisms/toolkit-picker/mocks/toolkit-collection.js +154 -80
  65. package/dist/components/ui/organisms/toolkit-picker/toolkit-picker.d.ts.map +1 -1
  66. package/dist/components/ui/organisms/toolkit-picker/toolkit-picker.js +89 -75
  67. package/dist/hooks/use-columns.d.ts +6 -0
  68. package/dist/hooks/use-columns.d.ts.map +1 -0
  69. package/dist/hooks/use-columns.js +20 -0
  70. package/dist/{index-C8tglJS9.js → index-By-GFSsC.js} +3 -3
  71. package/dist/{index-8kzT5-zz.js → index-DO05OIM5.js} +385 -380
  72. package/dist/main.js +478 -469
  73. package/dist/metadata/toolkit-icons.d.ts.map +1 -1
  74. package/dist/metadata/toolkit-icons.js +80 -78
  75. package/dist/metadata/toolkits.js +13 -13
  76. package/dist/metadata/utils.js +3 -3
  77. package/dist/{react-resizable-panels.browser-31wAXhAV.js → react-resizable-panels.browser-DYl0LXfw.js} +5 -5
  78. package/dist/{toolkit-card-CsV6xoOG.js → toolkit-card-D6Dqff6p.js} +5 -3
  79. package/package.json +43 -34
@@ -1,31 +1,31 @@
1
1
  import "../../../../../web-sgv-FK6q.js";
2
- import { allTools as d } from "../../../../../lib/arcade/mocks.js";
3
- import { TOOLKIT_CATALOGUE as w } from "../../../../../metadata/toolkits.js";
4
- const y = d.filter((i) => i.toolkit.name === "basic"), q = d.filter((i) => i.toolkit.name === "api_toolkit"), M = d.filter((i) => i.toolkit.name === "Google"), T = d.filter((i) => i.toolkit.name === "Gmail"), o = (i, r = !1, n = !1) => {
5
- const l = w[i];
2
+ import { allTools as h } from "../../../../../lib/arcade/mocks.js";
3
+ import { TOOLKIT_CATALOGUE as M } from "../../../../../metadata/toolkits.js";
4
+ const G = h.filter((a) => a.toolkit.name === "basic"), E = h.filter((a) => a.toolkit.name === "api_toolkit"), I = h.filter((a) => a.toolkit.name === "Google"), N = h.filter((a) => a.toolkit.name === "Gmail"), o = (a, n = !1, s = !1) => {
5
+ const l = M[a];
6
6
  return l ? {
7
7
  ...l,
8
- isBYOC: r,
9
- isPro: n
8
+ isBYOC: n,
9
+ isPro: s
10
10
  } : {
11
- id: i,
12
- label: i,
13
- isBYOC: r,
14
- isPro: n,
11
+ id: a,
12
+ label: a,
13
+ isBYOC: n,
14
+ isPro: s,
15
15
  publicIconUrl: "",
16
- docsLink: `https://docs.example.com/${i}`,
17
- relativeDocsLink: `/${i}`,
16
+ docsLink: `https://docs.example.com/${a}`,
17
+ relativeDocsLink: `/${a}`,
18
18
  type: "community",
19
19
  category: "productivity",
20
20
  isComingSoon: !1,
21
21
  isHidden: !1
22
22
  };
23
- }, b = {
23
+ }, C = {
24
24
  basic: {
25
25
  name: "basic",
26
26
  description: "Basic toolkit with essential tools",
27
27
  version: "1.0.0",
28
- tools: y,
28
+ tools: G,
29
29
  requirements: {
30
30
  met: !0,
31
31
  secrets: [],
@@ -37,7 +37,7 @@ const y = d.filter((i) => i.toolkit.name === "basic"), q = d.filter((i) => i.too
37
37
  name: "api_toolkit",
38
38
  description: "API toolkit for external integrations",
39
39
  version: "2.0.0",
40
- tools: q,
40
+ tools: E,
41
41
  requirements: {
42
42
  met: !1,
43
43
  secrets: [
@@ -215,7 +215,7 @@ const y = d.filter((i) => i.toolkit.name === "basic"), q = d.filter((i) => i.too
215
215
  name: "Google",
216
216
  description: "Arcade.dev LLM tools for Google Workspace",
217
217
  version: "1.2.4",
218
- tools: M,
218
+ tools: I,
219
219
  requirements: {
220
220
  met: !0,
221
221
  secrets: [],
@@ -234,7 +234,7 @@ const y = d.filter((i) => i.toolkit.name === "basic"), q = d.filter((i) => i.too
234
234
  name: "Gmail",
235
235
  description: "Arcade.dev LLM tools for Gmail",
236
236
  version: "2.0.0",
237
- tools: T,
237
+ tools: N,
238
238
  requirements: {
239
239
  met: !0,
240
240
  secrets: [],
@@ -260,25 +260,25 @@ const y = d.filter((i) => i.toolkit.name === "basic"), q = d.filter((i) => i.too
260
260
  }
261
261
  }
262
262
  };
263
- function f(i) {
264
- const r = [], n = [], l = /* @__PURE__ */ new Map(), p = /* @__PURE__ */ new Map(), u = {
263
+ function A(a) {
264
+ const n = [], s = [], l = /* @__PURE__ */ new Map(), m = /* @__PURE__ */ new Map(), u = {
265
265
  toolkitsByName: /* @__PURE__ */ new Map(),
266
266
  toolsByName: /* @__PURE__ */ new Map()
267
267
  };
268
- for (const [e, s] of Object.entries(i)) {
269
- const h = `${s.name} ${s.description || ""} ${s.version || ""}`, g = {
270
- secrets: s.requirements?.secrets?.length ? {
271
- configured: s.requirements.secrets.filter((t) => t.met === !0).map((t) => t.key),
272
- pending: s.requirements.secrets.filter((t) => t.met === !1).map((t) => t.key)
268
+ for (const [e, i] of Object.entries(a)) {
269
+ const v = `${i.name} ${i.description || ""} ${i.version || ""}`, y = {
270
+ secrets: i.requirements?.secrets?.length ? {
271
+ configured: i.requirements.secrets.filter((t) => t.met === !0).map((t) => t.key),
272
+ pending: i.requirements.secrets.filter((t) => t.met === !1).map((t) => t.key)
273
273
  } : void 0,
274
- oauth: s.requirements?.authorization?.length ? {
275
- providers: s.requirements.authorization.filter((t) => t.provider_id || t.id).map((t) => ({
274
+ oauth: i.requirements?.authorization?.length ? {
275
+ providers: i.requirements.authorization.filter((t) => t.provider_id || t.id).map((t) => ({
276
276
  id: t.provider_id || t.id || "",
277
277
  status: t.status,
278
278
  scopes: t.oauth2?.scopes || []
279
279
  }))
280
280
  } : void 0
281
- }, _ = (() => {
281
+ }, w = (() => {
282
282
  switch (e) {
283
283
  case "basic":
284
284
  return o(e, !1, !1);
@@ -348,33 +348,33 @@ function f(i) {
348
348
  default:
349
349
  return o(e, !1, !1);
350
350
  }
351
- })(), a = {
352
- ...s,
353
- searchableText: h,
354
- requirementsSummary: g,
355
- metadata: _
351
+ })(), d = {
352
+ ...i,
353
+ searchableText: v,
354
+ requirementsSummary: y,
355
+ metadata: w
356
356
  };
357
- r.push(a), l.set(e, a), u.toolkitsByName.set(e.toLowerCase(), a);
358
- for (const t of s.tools) {
359
- const v = `${t.name} ${t.fully_qualified_name} ${t.description || ""} ${s.name} ${s.description || ""}`, c = {
357
+ n.push(d), l.set(e, d), u.toolkitsByName.set(e.toLowerCase(), d);
358
+ for (const t of i.tools) {
359
+ const _ = `${t.name} ${t.fully_qualified_name} ${t.description || ""} ${i.name} ${i.description || ""}`, c = {
360
360
  ...t,
361
- searchableText: v
361
+ searchableText: _
362
362
  };
363
- n.push(c), p.set(t.fully_qualified_name, e), u.toolsByName.set(
363
+ s.push(c), m.set(t.fully_qualified_name, e), u.toolsByName.set(
364
364
  t.fully_qualified_name.toLowerCase(),
365
365
  c
366
366
  );
367
367
  }
368
368
  }
369
369
  return {
370
- toolkits: r,
371
- tools: n,
370
+ toolkits: n,
371
+ tools: s,
372
372
  toolkitMap: l,
373
- toolToToolkitMap: p,
373
+ toolToToolkitMap: m,
374
374
  searchIndex: u
375
375
  };
376
376
  }
377
- const S = {
377
+ const $ = {
378
378
  Slack: {
379
379
  name: "Slack",
380
380
  description: "Slack communication toolkit",
@@ -427,7 +427,7 @@ const S = {
427
427
  ],
428
428
  requirements: { met: !0, secrets: [], authorization: [], scopes: {} }
429
429
  }
430
- }, C = f(b), N = f(S), A = {
430
+ }, D = A(C), L = A($), P = {
431
431
  Gmail: {
432
432
  name: "Gmail",
433
433
  description: "Gmail email management toolkit",
@@ -614,9 +614,19 @@ const S = {
614
614
  scopes: { notion: ["read", "write"] }
615
615
  }
616
616
  }
617
- }, $ = f(A);
618
- function P() {
619
- const i = {}, _ = [
617
+ }, R = A(P);
618
+ function O(a = {}) {
619
+ const {
620
+ toolkitCount: n = 100,
621
+ minToolsPerToolkit: s = 10,
622
+ maxToolsPerToolkit: l = 25
623
+ } = a, m = {}, u = 3, e = 1, i = 10, v = 0.3, y = 0.7, w = 0.5, d = 0.5, t = [
624
+ "Gmail",
625
+ "GoogleCalendar",
626
+ "GoogleDocs",
627
+ "Github",
628
+ "Slack",
629
+ "Jira",
620
630
  "Discord",
621
631
  "Notion",
622
632
  "Stripe",
@@ -645,42 +655,106 @@ function P() {
645
655
  "Video",
646
656
  "Audio",
647
657
  "Finance",
648
- "CRM"
649
- ];
650
- for (const a of _) {
651
- const t = [], c = 8 + Math.floor(Math.random() * 8);
652
- for (let m = 0; m < c; m++) {
653
- const k = `${a.toLowerCase()}_tool_${m + 1}`;
654
- t.push({
655
- name: k,
656
- fully_qualified_name: `${a.toLowerCase()}.${k}`,
657
- qualified_name: k,
658
- description: `${a} tool ${m + 1} - performs ${a.toLowerCase()} operations with advanced features`,
658
+ "CRM",
659
+ "Workflow",
660
+ "Scheduler",
661
+ "Calendar",
662
+ "Maps",
663
+ "Weather",
664
+ "Translation",
665
+ "Search",
666
+ "Indexing",
667
+ "Cache",
668
+ "Queue",
669
+ "Messaging",
670
+ "Notification",
671
+ "Authentication",
672
+ "Authorization",
673
+ "Logging",
674
+ "Tracing",
675
+ "Metrics",
676
+ "Alerting",
677
+ "Backup",
678
+ "Recovery"
679
+ ], _ = [
680
+ "Pro",
681
+ "Enterprise",
682
+ "Basic",
683
+ "Advanced",
684
+ "Premium",
685
+ "Starter",
686
+ "Core",
687
+ "Plus"
688
+ ], c = [];
689
+ for (let r = 0; c.length < n; r++) {
690
+ const p = t[r % t.length];
691
+ if (r < t.length)
692
+ c.push(p);
693
+ else {
694
+ const f = Math.floor(r / t.length) - 1, q = _[f % _.length];
695
+ c.push(`${p} ${q}`);
696
+ }
697
+ }
698
+ for (const r of c) {
699
+ const p = [], f = r.toLowerCase().replace(/\s+/g, "_"), q = l - s + 1, S = s + Math.floor(Math.random() * q), T = [
700
+ "create",
701
+ "read",
702
+ "update",
703
+ "delete",
704
+ "list",
705
+ "search",
706
+ "export",
707
+ "import",
708
+ "sync",
709
+ "validate",
710
+ "process",
711
+ "transform",
712
+ "analyze",
713
+ "generate",
714
+ "send",
715
+ "receive",
716
+ "connect",
717
+ "disconnect",
718
+ "configure",
719
+ "monitor",
720
+ "schedule",
721
+ "cancel",
722
+ "retry",
723
+ "archive",
724
+ "restore"
725
+ ];
726
+ for (let g = 0; g < S; g++) {
727
+ const k = T[g % T.length], b = `${k}_${f}_${g + 1}`;
728
+ p.push({
729
+ name: b,
730
+ fully_qualified_name: `${f}.${b}`,
731
+ qualified_name: b,
732
+ description: `${k.charAt(0).toUpperCase() + k.slice(1)} operation for ${r} - performs ${k} with advanced features and error handling`,
659
733
  toolkit: {
660
- name: a,
661
- description: `${a} toolkit for comprehensive ${a.toLowerCase()} operations`,
662
- version: `${Math.floor(Math.random() * 3) + 1}.${Math.floor(
663
- Math.random() * 10
734
+ name: r,
735
+ description: `${r} toolkit for comprehensive operations`,
736
+ version: `${Math.floor(Math.random() * u) + e}.${Math.floor(
737
+ Math.random() * i
664
738
  )}.0`
665
739
  },
666
740
  input: { parameters: [] },
667
741
  requirements: void 0
668
742
  });
669
743
  }
670
- i[a] = {
671
- name: a,
672
- description: `${a} toolkit with ${c} powerful tools for ${a.toLowerCase()} operations`,
673
- version: `${Math.floor(Math.random() * 3) + 1}.${Math.floor(
674
- Math.random() * 10
744
+ m[r] = {
745
+ name: r,
746
+ description: `${r} toolkit with ${S} powerful tools for comprehensive operations`,
747
+ version: `${Math.floor(Math.random() * u) + e}.${Math.floor(
748
+ Math.random() * i
675
749
  )}.0`,
676
- tools: t,
750
+ tools: p,
677
751
  requirements: {
678
- met: Math.random() > 0.3,
679
- secrets: Math.random() > 0.7 ? [
752
+ met: Math.random() > v,
753
+ secrets: Math.random() > y ? [
680
754
  {
681
- key: `${a.toUpperCase()}_API_KEY`,
682
- met: Math.random() > 0.5,
683
- status_reason: Math.random() > 0.5 ? "API key configured" : "API key not found"
755
+ key: `${f.toUpperCase()}_API_KEY`,
756
+ met: Math.random() > w,
757
+ status_reason: Math.random() > d ? "API key configured" : "API key not found"
684
758
  }
685
759
  ] : [],
686
760
  authorization: [],
@@ -688,15 +762,15 @@ function P() {
688
762
  }
689
763
  };
690
764
  }
691
- return i;
765
+ return m;
692
766
  }
693
767
  export {
694
- f as createMockToolkitCollection,
695
- $ as demoMockToolkitCollection,
696
- A as demoMockToolkits,
697
- P as generateLargeDataset,
698
- C as mockToolkitCollection,
699
- b as mockToolkits,
700
- N as simpleMockToolkitCollection,
701
- S as simpleMockToolkits
768
+ A as createMockToolkitCollection,
769
+ R as demoMockToolkitCollection,
770
+ P as demoMockToolkits,
771
+ O as generateLargeDataset,
772
+ D as mockToolkitCollection,
773
+ C as mockToolkits,
774
+ L as simpleMockToolkitCollection,
775
+ $ as simpleMockToolkits
702
776
  };
@@ -1 +1 @@
1
- {"version":3,"file":"toolkit-picker.d.ts","sourceRoot":"","sources":["../../../../../lib/components/ui/organisms/toolkit-picker/toolkit-picker.tsx"],"names":[],"mappings":"AAkCA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAIlD,eAAO,MAAM,mBAAmB,GAAI,OAAO,kBAAkB,4CAgN5D,CAAC"}
1
+ {"version":3,"file":"toolkit-picker.d.ts","sourceRoot":"","sources":["../../../../../lib/components/ui/organisms/toolkit-picker/toolkit-picker.tsx"],"names":[],"mappings":"AAkCA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAIlD,eAAO,MAAM,mBAAmB,GAAI,OAAO,kBAAkB,4CAsN5D,CAAC"}
@@ -1,61 +1,61 @@
1
1
  import { jsx as e, jsxs as t } from "react/jsx-runtime";
2
- import { Button as n } from "../../atoms/button.js";
3
- import { Dialog as T, DialogTrigger as _, DialogContent as C, DialogHeader as z, DialogTitle as D, DialogDescription as S, DialogClose as d, DialogFooter as j } from "../../atoms/dialog.js";
4
- import { Arcade as A } from "../../atoms/icons/arcade.js";
5
- import { MobileTooltipProvider as B } from "../../atoms/mobile-tooltip.js";
6
- import { Tabs as M, TabsList as P, TabsTrigger as m, TabsContent as c } from "../../atoms/tabs.js";
7
- import { Tooltip as F, TooltipTrigger as L, TooltipContent as E } from "../../atoms/tooltip.js";
8
- import { X, Package as G, Wrench as H } from "lucide-react";
9
- import { useState as I } from "react";
10
- import { ActionButtons as O } from "./components/action-buttons.js";
11
- import { FilterBadges as Q } from "./components/filter-badges.js";
12
- import { FooterSummary as R } from "./components/footer-summary.js";
13
- import { SearchInput as V } from "./components/search-input.js";
14
- import { SelectButton as W } from "./components/select-button.js";
15
- import { ToolkitList as Y } from "./components/toolkit-list.js";
16
- import { ToolsList as $ } from "./components/tools-list.js";
17
- import { useToolkitPicker as q } from "./hooks/use-toolkit-picker.js";
18
- const J = /Mac/i, xe = (p) => {
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";
6
+ import { Tabs as F, TabsList as L, TabsTrigger as p, TabsContent as h } from "../../atoms/tabs.js";
7
+ import { Tooltip as E, TooltipTrigger as X, TooltipContent as G } from "../../atoms/tooltip.js";
8
+ import { X as H, Package as I, Wrench as O } from "lucide-react";
9
+ import { useState as Q, useRef as x } from "react";
10
+ import { ActionButtons as V } from "./components/action-buttons.js";
11
+ import { FilterBadges as W } from "./components/filter-badges.js";
12
+ import { FooterSummary as Y } from "./components/footer-summary.js";
13
+ import { SearchInput as $ } from "./components/search-input.js";
14
+ import { SelectButton as q } from "./components/select-button.js";
15
+ import { ToolkitList as J } from "./components/toolkit-list.js";
16
+ import { ToolsList as K } from "./components/tools-list.js";
17
+ import { useToolkitPicker as U } from "./hooks/use-toolkit-picker.js";
18
+ const Z = /Mac/i, ue = (f) => {
19
19
  const {
20
- description: h = "Select toolkits and tools",
21
- children: x,
20
+ description: g = "Select toolkits and tools",
21
+ children: u,
22
22
  selectionMode: a = "multi",
23
23
  onSelectionChange: s
24
- } = p, [g, r] = I(!1), {
24
+ } = f, [b, r] = Q(!1), i = x(null), o = x(null), {
25
25
  state: {
26
- selectedToolkits: u,
27
- selectedTools: i,
28
- activeTab: f,
29
- filteredToolkits: b,
30
- filteredTools: k
26
+ selectedToolkits: k,
27
+ selectedTools: n,
28
+ activeTab: v,
29
+ filteredToolkits: N,
30
+ filteredTools: w
31
31
  },
32
- setActiveTab: o,
33
- clearSearchQuery: v,
34
- commitSelections: N,
35
- restoreCommittedState: w
36
- } = q(), y = () => {
37
- N(), s && s({
38
- selectedToolkits: Array.from(u.keys()),
39
- selectedTools: Array.from(i.keys())
32
+ setActiveTab: d,
33
+ clearSearchQuery: T,
34
+ commitSelections: y,
35
+ restoreCommittedState: C
36
+ } = U(), _ = () => {
37
+ y(), s && s({
38
+ selectedToolkits: Array.from(k.keys()),
39
+ selectedTools: Array.from(n.keys())
40
40
  }), r(!1);
41
41
  };
42
- return /* @__PURE__ */ e(B, { children: /* @__PURE__ */ t(
43
- T,
42
+ return /* @__PURE__ */ e(P, { children: /* @__PURE__ */ t(
43
+ S,
44
44
  {
45
45
  onOpenChange: (l) => {
46
- r(l), l && (w(), v(), o("toolkits"));
46
+ r(l), l && (C(), T(), d("toolkits"));
47
47
  },
48
- open: g,
48
+ open: b,
49
49
  children: [
50
- /* @__PURE__ */ e(_, { asChild: !0, children: x }),
50
+ /* @__PURE__ */ e(z, { asChild: !0, children: u }),
51
51
  /* @__PURE__ */ t(
52
- C,
52
+ D,
53
53
  {
54
54
  className: "flex max-h-[80vh] min-h-80 w-[95vw] max-w-xl flex-col gap-2 p-0 sm:max-w-2xl md:max-w-3xl lg:max-w-4xl xl:max-w-5xl 2xl:max-w-7xl",
55
55
  "data-testid": "toolkit-picker-dialog",
56
56
  showCloseButton: !1,
57
57
  children: [
58
- /* @__PURE__ */ t(z, { className: "shrink-0 p-4 pb-0 sm:p-6 sm:pb-0", children: [
58
+ /* @__PURE__ */ t(j, { className: "shrink-0 p-4 pb-0 sm:p-6 sm:pb-0", children: [
59
59
  /* @__PURE__ */ t("div", { className: "flex items-center justify-between", children: [
60
60
  /* @__PURE__ */ t("div", { className: "flex items-center gap-3", children: [
61
61
  /* @__PURE__ */ t("div", { className: "relative flex size-10 items-center justify-center overflow-hidden rounded-xl shadow-lg ring-1 ring-black/5 sm:size-12", children: [
@@ -73,97 +73,111 @@ const J = /Mac/i, xe = (p) => {
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(A, { className: "size-5 sm:size-7" }) })
76
+ /* @__PURE__ */ e("span", { className: "relative z-20", children: /* @__PURE__ */ e(M, { className: "size-5 sm:size-7" }) })
77
77
  ] }),
78
78
  /* @__PURE__ */ t("div", { className: "ml-1 text-left", children: [
79
- /* @__PURE__ */ e(D, { className: "font-bold text-lg sm:text-xl", children: "Choose Your Tools" }),
80
- /* @__PURE__ */ e(S, { className: "hidden sm:block", children: h })
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 })
81
81
  ] })
82
82
  ] }),
83
- /* @__PURE__ */ e(d, { asChild: !0, children: /* @__PURE__ */ e(
84
- n,
83
+ /* @__PURE__ */ e(c, { asChild: !0, children: /* @__PURE__ */ e(
84
+ m,
85
85
  {
86
86
  className: "h-8 w-8 rounded-full p-0",
87
87
  "data-testid": "toolkit-picker-close",
88
88
  size: "sm",
89
89
  variant: "ghost",
90
- children: /* @__PURE__ */ e(X, { className: "h-4 w-4" })
90
+ children: /* @__PURE__ */ e(H, { className: "h-4 w-4" })
91
91
  }
92
92
  ) })
93
93
  ] }),
94
- /* @__PURE__ */ e("div", { className: "mb-2 space-y-2 pt-2 sm:space-y-4 sm:pt-4", children: /* @__PURE__ */ e(V, {}) })
94
+ /* @__PURE__ */ e("div", { className: "mb-2 space-y-2 pt-2 sm:space-y-4 sm:pt-4", children: /* @__PURE__ */ e($, {}) })
95
95
  ] }),
96
96
  /* @__PURE__ */ t(
97
- M,
97
+ F,
98
98
  {
99
99
  className: "flex min-h-0 flex-1 flex-col gap-0.5",
100
- onValueChange: (l) => o(l),
101
- value: f,
100
+ onValueChange: (l) => d(l),
101
+ value: v,
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: [
105
- /* @__PURE__ */ t(P, { className: "h-10 w-auto gap-1 rounded-md border border-neutral-200 bg-white/60 p-1 shadow-sm dark:border-neutral-800 dark:bg-neutral-900/60", children: [
105
+ /* @__PURE__ */ t(L, { className: "h-10 w-auto gap-1 rounded-md border border-neutral-200 bg-white/60 p-1 shadow-sm dark:border-neutral-800 dark:bg-neutral-900/60", children: [
106
106
  /* @__PURE__ */ t(
107
- m,
107
+ p,
108
108
  {
109
109
  className: "h-8 rounded-md px-3 font-medium text-neutral-600 text-sm hover:bg-black/5 data-[state=active]:bg-white data-[state=active]:text-neutral-900 dark:text-neutral-300 dark:data-[state=active]:bg-neutral-800 dark:data-[state=active]:text-white dark:hover:bg-white/10",
110
110
  "data-testid": "toolkits-tab",
111
111
  value: "toolkits",
112
112
  children: [
113
- /* @__PURE__ */ e(G, { className: "h-4 w-4" }),
113
+ /* @__PURE__ */ e(I, { className: "h-4 w-4" }),
114
114
  /* @__PURE__ */ e("span", { children: "Toolkits" }),
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: b.size })
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
  }
118
118
  ),
119
119
  /* @__PURE__ */ t(
120
- m,
120
+ p,
121
121
  {
122
122
  className: "h-8 rounded-md px-3 font-medium text-neutral-600 text-sm hover:bg-black/5 data-[state=active]:bg-white data-[state=active]:text-neutral-900 dark:text-neutral-300 dark:data-[state=active]:bg-neutral-800 dark:data-[state=active]:text-white dark:hover:bg-white/10",
123
123
  "data-testid": "tools-tab",
124
124
  value: "tools",
125
125
  children: [
126
- /* @__PURE__ */ e(H, { className: "h-4 w-4" }),
126
+ /* @__PURE__ */ e(O, { className: "h-4 w-4" }),
127
127
  /* @__PURE__ */ e("span", { children: "Tools" }),
128
- /* @__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: k.size })
128
+ /* @__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: w.size })
129
129
  ]
130
130
  }
131
131
  )
132
132
  ] }),
133
- /* @__PURE__ */ e(O, { selectionMode: a })
133
+ /* @__PURE__ */ e(V, { selectionMode: a })
134
134
  ] }),
135
- /* @__PURE__ */ e(Q, {})
135
+ /* @__PURE__ */ e(W, {})
136
136
  ] }),
137
137
  /* @__PURE__ */ e(
138
- c,
138
+ h,
139
139
  {
140
140
  className: "min-h-0 flex-1 overflow-y-auto px-4 py-2 sm:px-6",
141
141
  "data-testid": "content-area",
142
+ ref: i,
142
143
  value: "toolkits",
143
- children: /* @__PURE__ */ e("div", { className: "space-y-3", children: /* @__PURE__ */ e(Y, { selectionMode: a }) })
144
+ children: /* @__PURE__ */ e(
145
+ J,
146
+ {
147
+ scrollContainerRef: i,
148
+ selectionMode: a
149
+ }
150
+ )
144
151
  }
145
152
  ),
146
153
  /* @__PURE__ */ e(
147
- c,
154
+ h,
148
155
  {
149
156
  className: "min-h-0 flex-1 overflow-y-auto px-4 py-2 sm:px-6",
150
157
  "data-testid": "content-area",
158
+ ref: o,
151
159
  value: "tools",
152
- children: /* @__PURE__ */ e("div", { className: "space-y-3", children: /* @__PURE__ */ e($, { selectionMode: a }) })
160
+ children: /* @__PURE__ */ e(
161
+ K,
162
+ {
163
+ scrollContainerRef: o,
164
+ selectionMode: a
165
+ }
166
+ )
153
167
  }
154
168
  )
155
169
  ]
156
170
  }
157
171
  ),
158
- /* @__PURE__ */ e(j, { 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(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(
159
173
  "div",
160
174
  {
161
175
  className: `${a === "single" ? "sm:justify-end" : "sm:justify-between"} flex w-full flex-col gap-3 sm:flex-row sm:items-center`,
162
176
  children: [
163
- a === "multi" && /* @__PURE__ */ e(R, {}),
177
+ a === "multi" && /* @__PURE__ */ e(Y, {}),
164
178
  /* @__PURE__ */ t("div", { className: "mt-2 flex gap-2 sm:mt-0 sm:gap-2", children: [
165
- /* @__PURE__ */ e(d, { asChild: !0, children: /* @__PURE__ */ e(
166
- n,
179
+ /* @__PURE__ */ e(c, { asChild: !0, children: /* @__PURE__ */ e(
180
+ m,
167
181
  {
168
182
  className: "flex-1 sm:flex-none",
169
183
  "data-testid": "cancel-button",
@@ -172,20 +186,20 @@ const J = /Mac/i, xe = (p) => {
172
186
  children: "Cancel"
173
187
  }
174
188
  ) }),
175
- /* @__PURE__ */ t(F, { delayDuration: 350, children: [
176
- /* @__PURE__ */ e(L, { asChild: !0, children: /* @__PURE__ */ e("span", { children: /* @__PURE__ */ e(
177
- W,
189
+ /* @__PURE__ */ t(E, { delayDuration: 350, children: [
190
+ /* @__PURE__ */ e(X, { asChild: !0, children: /* @__PURE__ */ e("span", { children: /* @__PURE__ */ e(
191
+ q,
178
192
  {
179
193
  className: "flex-1 sm:flex-none",
180
- onCommit: y,
181
- selectedCount: i.size,
194
+ onCommit: _,
195
+ selectedCount: n.size,
182
196
  selectionMode: a
183
197
  }
184
198
  ) }) }),
185
- /* @__PURE__ */ e(E, { children: /* @__PURE__ */ t("div", { className: "flex items-center gap-2", children: [
199
+ /* @__PURE__ */ e(G, { children: /* @__PURE__ */ t("div", { className: "flex items-center gap-2", children: [
186
200
  /* @__PURE__ */ e("span", { children: "Submit selection" }),
187
201
  /* @__PURE__ */ t("div", { className: "flex items-center gap-1", children: [
188
- /* @__PURE__ */ e("kbd", { className: "inline-flex h-4 items-center rounded border bg-muted px-1 font-mono text-[10px]", children: typeof window < "u" && J.test(navigator.userAgent) ? "⌘" : "Ctrl" }),
202
+ /* @__PURE__ */ e("kbd", { className: "inline-flex h-4 items-center rounded border bg-muted px-1 font-mono text-[10px]", children: typeof window < "u" && Z.test(navigator.userAgent) ? "⌘" : "Ctrl" }),
189
203
  /* @__PURE__ */ e("span", { className: "text-xs", children: "+" }),
190
204
  /* @__PURE__ */ e("kbd", { className: "inline-flex h-4 items-center rounded border bg-muted px-1 font-mono text-[10px]", children: "↵" })
191
205
  ] })
@@ -203,5 +217,5 @@ const J = /Mac/i, xe = (p) => {
203
217
  ) });
204
218
  };
205
219
  export {
206
- xe as ToolkitPickerDialog
220
+ ue as ToolkitPickerDialog
207
221
  };
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Track responsive column count based on viewport width.
3
+ * Returns 1, 2, or 3 columns matching Tailwind grid-cols breakpoints.
4
+ */
5
+ export declare function useColumns(): number;
6
+ //# sourceMappingURL=use-columns.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-columns.d.ts","sourceRoot":"","sources":["../../lib/hooks/use-columns.ts"],"names":[],"mappings":"AAMA;;;GAGG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAmCnC"}