@dust-tt/sparkle 0.3.6 → 0.3.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 (83) hide show
  1. package/dist/cjs/index.js +1 -1
  2. package/dist/esm/components/ConversationMessage.d.ts.map +1 -1
  3. package/dist/esm/components/ConversationMessage.js +2 -2
  4. package/dist/esm/components/ConversationMessage.js.map +1 -1
  5. package/dist/esm/components/ScrollArea.d.ts +1 -1
  6. package/dist/esm/components/ScrollArea.d.ts.map +1 -1
  7. package/dist/esm/components/markdown/Markdown.js +1 -1
  8. package/dist/esm/components/markdown/Markdown.js.map +1 -1
  9. package/dist/esm/stories/AnchoredPopover.stories.d.ts +1 -2
  10. package/dist/esm/stories/AnchoredPopover.stories.d.ts.map +1 -1
  11. package/dist/esm/stories/AnchoredPopover.stories.js +36 -48
  12. package/dist/esm/stories/AnchoredPopover.stories.js.map +1 -1
  13. package/dist/esm/stories/Avatar.stories.d.ts +64 -5
  14. package/dist/esm/stories/Avatar.stories.d.ts.map +1 -1
  15. package/dist/esm/stories/Avatar.stories.js +407 -331
  16. package/dist/esm/stories/Avatar.stories.js.map +1 -1
  17. package/dist/esm/stories/Button.stories.d.ts +1 -0
  18. package/dist/esm/stories/Button.stories.d.ts.map +1 -1
  19. package/dist/esm/stories/Button.stories.js +1 -0
  20. package/dist/esm/stories/Button.stories.js.map +1 -1
  21. package/dist/esm/stories/Card.stories.d.ts +39 -3
  22. package/dist/esm/stories/Card.stories.d.ts.map +1 -1
  23. package/dist/esm/stories/Card.stories.js +92 -22
  24. package/dist/esm/stories/Card.stories.js.map +1 -1
  25. package/dist/esm/stories/Chip.stories.d.ts +4 -3
  26. package/dist/esm/stories/Chip.stories.d.ts.map +1 -1
  27. package/dist/esm/stories/Chip.stories.js +37 -30
  28. package/dist/esm/stories/Chip.stories.js.map +1 -1
  29. package/dist/esm/stories/Dropdown.stories.d.ts +13 -4
  30. package/dist/esm/stories/Dropdown.stories.d.ts.map +1 -1
  31. package/dist/esm/stories/Dropdown.stories.js +418 -411
  32. package/dist/esm/stories/Dropdown.stories.js.map +1 -1
  33. package/dist/esm/stories/Icon.stories.d.ts +1 -0
  34. package/dist/esm/stories/Icon.stories.d.ts.map +1 -1
  35. package/dist/esm/stories/Icon.stories.js +1 -0
  36. package/dist/esm/stories/Icon.stories.js.map +1 -1
  37. package/dist/esm/stories/IconSet.stories.d.ts +7 -5
  38. package/dist/esm/stories/IconSet.stories.d.ts.map +1 -1
  39. package/dist/esm/stories/IconSet.stories.js +21 -15
  40. package/dist/esm/stories/IconSet.stories.js.map +1 -1
  41. package/dist/esm/stories/Input.stories.d.ts +46 -1
  42. package/dist/esm/stories/Input.stories.d.ts.map +1 -1
  43. package/dist/esm/stories/Input.stories.js +94 -16
  44. package/dist/esm/stories/Input.stories.js.map +1 -1
  45. package/dist/esm/stories/Logo.stories.d.ts +6 -4
  46. package/dist/esm/stories/Logo.stories.d.ts.map +1 -1
  47. package/dist/esm/stories/Logo.stories.js +41 -37
  48. package/dist/esm/stories/Logo.stories.js.map +1 -1
  49. package/dist/esm/stories/Markdown.stories.d.ts +24 -2
  50. package/dist/esm/stories/Markdown.stories.d.ts.map +1 -1
  51. package/dist/esm/stories/Markdown.stories.js +1 -0
  52. package/dist/esm/stories/Markdown.stories.js.map +1 -1
  53. package/dist/esm/stories/ScrollArea.stories.d.ts +12 -5
  54. package/dist/esm/stories/ScrollArea.stories.d.ts.map +1 -1
  55. package/dist/esm/stories/ScrollArea.stories.js +7 -3
  56. package/dist/esm/stories/ScrollArea.stories.js.map +1 -1
  57. package/dist/esm/stories/Spinner.stories.d.ts +22 -1
  58. package/dist/esm/stories/Spinner.stories.d.ts.map +1 -1
  59. package/dist/esm/stories/Spinner.stories.js +91 -50
  60. package/dist/esm/stories/Spinner.stories.js.map +1 -1
  61. package/dist/esm/stories/Tabs.stories.d.ts +6 -2
  62. package/dist/esm/stories/Tabs.stories.d.ts.map +1 -1
  63. package/dist/esm/stories/Tabs.stories.js +10 -8
  64. package/dist/esm/stories/Tabs.stories.js.map +1 -1
  65. package/dist/sparkle.css +4 -19
  66. package/package.json +1 -1
  67. package/src/components/ConversationMessage.tsx +2 -9
  68. package/src/components/ScrollArea.tsx +1 -1
  69. package/src/components/markdown/Markdown.tsx +1 -1
  70. package/src/stories/AnchoredPopover.stories.tsx +77 -91
  71. package/src/stories/Avatar.stories.tsx +558 -478
  72. package/src/stories/Button.stories.tsx +1 -0
  73. package/src/stories/Card.stories.tsx +146 -70
  74. package/src/stories/Chip.stories.tsx +108 -101
  75. package/src/stories/Dropdown.stories.tsx +725 -717
  76. package/src/stories/Icon.stories.tsx +1 -0
  77. package/src/stories/IconSet.stories.tsx +61 -52
  78. package/src/stories/Input.stories.tsx +168 -79
  79. package/src/stories/Logo.stories.tsx +76 -69
  80. package/src/stories/Markdown.stories.tsx +3 -2
  81. package/src/stories/ScrollArea.stories.tsx +10 -6
  82. package/src/stories/Spinner.stories.tsx +134 -87
  83. package/src/stories/Tabs.stories.tsx +13 -10
@@ -1,429 +1,436 @@
1
1
  import { __read, __spreadArray } from "tslib";
2
- import React from "react";
3
- import { useState } from "react";
2
+ import React, { useState } from "react";
4
3
  import { Spinner } from "../components";
5
4
  import { DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSearchbar, DropdownMenuSeparator, DropdownMenuStaticItem, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTagItem, DropdownMenuTagList, DropdownMenuTrigger, } from "../components/Dropdown";
6
5
  import { AnthropicLogo, DriveLogo, GithubLogo, MistralLogo, NotionLogo, OpenaiLogo, SlackLogo, } from "../logo/platforms";
7
- import { ActionArmchairIcon, ActionCloudArrowDownIcon, ActionCommand1Icon, ActionDocumentIcon, ActionFolderIcon, ActionMagicIcon, ActionUserGroupIcon, ArrowDownCircleIcon, ArrowUpOnSquareIcon, AttachmentIcon, Avatar, Button, ChatBubbleBottomCenterPlusIcon, CloudArrowDownIcon, Cog6ToothIcon, DocumentIcon, DoubleIcon, FolderIcon, HandThumbDownIcon, HandThumbUpIcon, Icon, LogoutIcon, MagicIcon, MagnifyingGlassIcon, PlusIcon, RobotIcon, SearchDropdownMenu, SuitcaseIcon, UserGroupIcon, UserIcon, } from "../index_with_tw_base";
8
- import { Chip } from "../index_with_tw_base";
6
+ import { ActionArmchairIcon, ActionCloudArrowDownIcon, ActionCommand1Icon, ActionDocumentIcon, ActionFolderIcon, ActionMagicIcon, ActionUserGroupIcon, ArrowDownCircleIcon, ArrowUpOnSquareIcon, AttachmentIcon, Avatar, Button, ChatBubbleBottomCenterPlusIcon, Chip, CloudArrowDownIcon, Cog6ToothIcon, DocumentIcon, DoubleIcon, FolderIcon, HandThumbDownIcon, HandThumbUpIcon, Icon, LogoutIcon, MagicIcon, MagnifyingGlassIcon, PlusIcon, RobotIcon, SearchDropdownMenu, SuitcaseIcon, UserGroupIcon, UserIcon, } from "../index_with_tw_base";
9
7
  var meta = {
10
8
  title: "Primitives/Dropdown",
11
9
  component: DropdownMenu,
10
+ tags: ["autodocs"],
12
11
  };
13
12
  export default meta;
14
- export var DropdownExamples = function () { return (React.createElement("div", { className: "s-flex s-h-80 s-w-full s-flex-col s-items-center s-justify-center s-gap-4 s-text-foreground dark:s-text-foreground-night" },
15
- React.createElement("div", null, SimpleDropdownDemo()),
16
- React.createElement("div", null, ComplexDropdownDemo()),
17
- React.createElement("div", null, DropdownMenuCheckboxes()),
18
- React.createElement("div", null, DropdownMenuRadioGroupDemo()),
19
- React.createElement("div", null, ModelsDropdownDemo()),
20
- React.createElement("div", null, ModelsDropdownRadioGroupDemo()),
21
- React.createElement("div", null, StaticItemDropdownDemo()))); };
22
- export var PickerExamples = function () { return (React.createElement("div", { className: "s-flex s-h-80 s-w-full s-flex-col s-items-center s-justify-center s-gap-4 s-text-foreground dark:s-text-foreground-night" },
23
- React.createElement("div", null, AttachFileDemo()))); };
24
- export var SearchDropdownMenuExamples = function () {
25
- var _a = __read(React.useState(""), 2), searchInputValue = _a[0], setSearchInputValue = _a[1];
26
- var items = ["Profile", "Billing", "Team", "Subscription"];
27
- var filteredItems = items.filter(function (item) {
28
- return item.toLowerCase().includes(searchInputValue.toLowerCase());
29
- });
30
- return (React.createElement("div", { className: "s-flex s-h-80 s-w-full s-flex-col s-items-center s-justify-center s-gap-4 s-text-foreground dark:s-text-foreground-night" },
31
- React.createElement("div", null,
32
- React.createElement(SearchDropdownMenu, { searchInputValue: searchInputValue, setSearchInputValue: setSearchInputValue }, filteredItems.map(function (item) { return (React.createElement(DropdownMenuItem, { key: item, label: item, onClick: function () {
33
- console.log(item);
34
- } })); })))));
13
+ export var SimpleDropdown = {
14
+ render: function () {
15
+ return (React.createElement(DropdownMenu, null,
16
+ React.createElement(DropdownMenuTrigger, null, "Open Simple Dropdown"),
17
+ React.createElement(DropdownMenuContent, { className: "s-max-w-[300px]" },
18
+ React.createElement(DropdownMenuLabel, { label: "My Account" }),
19
+ React.createElement(DropdownMenuItem, { icon: function () { return (React.createElement(Avatar, { size: "xs", visual: "https://dust.tt/static/droidavatar/Droid_Lime_3.jpg" })); }, label: "@hello", onClick: function () {
20
+ console.log("hello");
21
+ }, description: "Anthropic's latest Claude 3.5 Sonnet model (200k context). Anthropic's latest Claude 3.5 Sonnet model (200k context). Anthropic's latest Claude 3.5 Sonnet model (200k context)." }),
22
+ React.createElement(DropdownMenuItem, { truncateText: true, icon: function () { return (React.createElement(Avatar, { size: "xs", visual: "https://dust.tt/static/droidavatar/Droid_Pink_3.jpg" })); }, label: "@helloWorld", onClick: function () {
23
+ console.log("hello");
24
+ }, description: "Anthropic's latest Claude 3.5 Sonnet model (200k context)." }),
25
+ React.createElement(DropdownMenuItem, { label: "Profile" }),
26
+ React.createElement(DropdownMenuItem, { label: "Billing" }),
27
+ React.createElement(DropdownMenuItem, { label: "Team" }),
28
+ React.createElement(DropdownMenuItem, { label: "Subscription" }))));
29
+ },
35
30
  };
36
- function SimpleDropdownDemo() {
37
- return (React.createElement(DropdownMenu, null,
38
- React.createElement(DropdownMenuTrigger, null, "Open Simple Dropdown"),
39
- React.createElement(DropdownMenuContent, { className: "s-max-w-[300px]" },
40
- React.createElement(DropdownMenuLabel, { label: "My Account" }),
41
- React.createElement(DropdownMenuItem, { icon: function () { return (React.createElement(Avatar, { size: "xs", visual: "https://dust.tt/static/droidavatar/Droid_Lime_3.jpg" })); }, label: "@hello", onClick: function () {
42
- console.log("hello");
43
- }, description: "Anthropic's latest Claude 3.5 Sonnet model (200k context). Anthropic's latest Claude 3.5 Sonnet model (200k context). Anthropic's latest Claude 3.5 Sonnet model (200k context)." }),
44
- React.createElement(DropdownMenuItem, { truncateText: true, icon: function () { return (React.createElement(Avatar, { size: "xs", visual: "https://dust.tt/static/droidavatar/Droid_Pink_3.jpg" })); }, label: "@helloWorld", onClick: function () {
45
- console.log("hello");
46
- }, description: "Anthropic's latest Claude 3.5 Sonnet model (200k context)." }),
47
- React.createElement(DropdownMenuItem, { label: "Profile" }),
48
- React.createElement(DropdownMenuItem, { label: "Billing" }),
49
- React.createElement(DropdownMenuItem, { label: "Team" }),
50
- React.createElement(DropdownMenuItem, { label: "Subscription" }))));
51
- }
52
- function ComplexDropdownDemo() {
53
- return (React.createElement(DropdownMenu, null,
54
- React.createElement(DropdownMenuTrigger, null, "Open Complex"),
55
- React.createElement(DropdownMenuContent, { className: "s-w-56" },
56
- React.createElement(DropdownMenuLabel, { label: "My Account" }),
57
- React.createElement(DropdownMenuGroup, null,
58
- React.createElement(DropdownMenuItem, { icon: UserIcon, label: "Profile", endComponent: React.createElement(Button, { size: "mini", icon: ArrowUpOnSquareIcon, variant: "ghost" }) }),
59
- React.createElement(DropdownMenuItem, { icon: ArrowDownCircleIcon, label: "Billing" }),
60
- React.createElement(DropdownMenuItem, { icon: Cog6ToothIcon, label: "Settings" }),
61
- React.createElement(DropdownMenuItem, { icon: UserIcon, label: "Keyboard shortcuts" })),
62
- React.createElement(DropdownMenuSeparator, null),
63
- React.createElement(DropdownMenuGroup, null,
64
- React.createElement(DropdownMenuLabel, { label: "Team" }),
65
- React.createElement(DropdownMenuItem, { icon: UserIcon, label: "Members" }),
66
- React.createElement(DropdownMenuSub, null,
67
- React.createElement(DropdownMenuSubTrigger, { icon: UserIcon, label: "Invite users" }),
68
- React.createElement(DropdownMenuPortal, null,
69
- React.createElement(DropdownMenuSubContent, null,
70
- React.createElement(DropdownMenuItem, { icon: MagicIcon, label: "Email" }),
71
- React.createElement(DropdownMenuItem, { icon: ChatBubbleBottomCenterPlusIcon, label: "Message" }),
72
- React.createElement(DropdownMenuSeparator, null),
73
- React.createElement(DropdownMenuItem, { icon: UserIcon, label: "More..." }),
74
- React.createElement(DropdownMenuItem, { icon: UserIcon, label: "More.." }),
75
- React.createElement(DropdownMenuItem, { icon: UserIcon, label: "More..." }),
76
- React.createElement(DropdownMenuItem, { icon: UserIcon, label: "More.." }),
77
- React.createElement(DropdownMenuItem, { icon: UserIcon, label: "More" }),
78
- React.createElement(DropdownMenuItem, { icon: UserIcon, label: "More....." }),
79
- React.createElement(DropdownMenuItem, { icon: UserIcon, label: "More.." }),
80
- React.createElement(DropdownMenuItem, { icon: UserIcon, label: "More" }),
81
- React.createElement(DropdownMenuItem, { icon: UserIcon, label: "More...." })))),
82
- React.createElement(DropdownMenuItem, { icon: UserGroupIcon, label: "New Team" })),
83
- React.createElement(DropdownMenuSeparator, null),
84
- React.createElement(DropdownMenuItem, { icon: GithubLogo, label: "GitHub" }),
85
- React.createElement(DropdownMenuItem, { icon: UserIcon, label: "Support" }),
86
- React.createElement(DropdownMenuItem, { icon: CloudArrowDownIcon, label: "API", disabled: true }),
87
- React.createElement(DropdownMenuSeparator, null),
88
- React.createElement(DropdownMenuItem, { icon: LogoutIcon, label: "Log out", variant: "warning", href: "/api/auth/logout" }))));
89
- }
90
- function DropdownMenuCheckboxes() {
91
- var _a = __read(React.useState(true), 2), showStatusBar = _a[0], setShowStatusBar = _a[1];
92
- var _b = __read(React.useState(false), 2), showActivityBar = _b[0], setShowActivityBar = _b[1];
93
- var _c = __read(React.useState(false), 2), showPanel = _c[0], setShowPanel = _c[1];
94
- return (React.createElement(DropdownMenu, null,
95
- React.createElement(DropdownMenuTrigger, null, "Open Checkbox"),
96
- React.createElement(DropdownMenuContent, { className: "s-w-72" },
97
- React.createElement(DropdownMenuLabel, { label: "Interface Settings" }),
98
- React.createElement(DropdownMenuSeparator, null),
99
- React.createElement(DropdownMenuCheckboxItem, { checked: showStatusBar, onCheckedChange: setShowStatusBar, label: "Status Bar", description: "Show application status and progress indicators", truncateText: true }),
100
- React.createElement(DropdownMenuCheckboxItem, { checked: showActivityBar, onCheckedChange: setShowActivityBar, label: "Activity Bar", description: "Display sidebar with quick access to tools", truncateText: true, disabled: true }),
101
- React.createElement(DropdownMenuCheckboxItem, { checked: showPanel, onCheckedChange: setShowPanel, label: "Panel", description: "Bottom panel for terminal and debug output", truncateText: true }))));
102
- }
103
- function DropdownMenuRadioGroupDemo() {
104
- var _a = __read(React.useState("bottom"), 2), position = _a[0], setPosition = _a[1];
105
- return (React.createElement(DropdownMenu, null,
106
- React.createElement(DropdownMenuTrigger, null, "Open Radio Group"),
107
- React.createElement(DropdownMenuContent, { className: "s-w-56" },
108
- React.createElement(DropdownMenuLabel, { label: "Panel Position" }),
109
- React.createElement(DropdownMenuSeparator, null),
110
- React.createElement(DropdownMenuRadioGroup, { value: position, onValueChange: setPosition },
111
- React.createElement(DropdownMenuRadioItem, { value: "top" }, "Top"),
112
- React.createElement(DropdownMenuRadioItem, { value: "bottom" }, "Bottom"),
113
- React.createElement(DropdownMenuRadioItem, { value: "right" }, "Right")))));
114
- }
115
- function ModelsDropdownDemo() {
116
- var _a = __read(React.useState("GPT4-o"), 2), selectedModel = _a[0], setSelectedModel = _a[1];
117
- var bestPerformingModels = [
118
- {
119
- name: "GPT4-o",
120
- description: "OpenAI's most advanced model.",
121
- icon: OpenaiLogo,
122
- },
123
- {
124
- name: "Claude 3.5 Sonnet",
125
- description: "Anthropic's latest Claude 3.5 Sonnet model (200k context).",
126
- icon: AnthropicLogo,
127
- },
128
- {
129
- name: "Mistral Large",
130
- description: "Mistral's `large 2` model (128k context).",
131
- icon: MistralLogo,
132
- },
133
- ];
134
- return (React.createElement(DropdownMenu, null,
135
- React.createElement(DropdownMenuTrigger, { asChild: true },
136
- React.createElement(Button, { label: selectedModel, variant: "outline", size: "sm", tooltip: "Test" })),
137
- React.createElement(DropdownMenuContent, null,
138
- React.createElement(DropdownMenuLabel, { label: "Best performing models" }),
139
- bestPerformingModels.map(function (modelConfig) { return (React.createElement(DropdownMenuItem, { key: modelConfig.name, label: modelConfig.name, onClick: function () { return setSelectedModel(modelConfig.name); }, description: modelConfig.description, icon: modelConfig.icon })); }))));
140
- }
141
- function ModelsDropdownRadioGroupDemo() {
142
- var _a = __read(React.useState("GPT4-o"), 2), selectedModel = _a[0], setSelectedModel = _a[1];
143
- var bestPerformingModels = [
144
- {
145
- name: "GPT4-o",
146
- description: "OpenAI's most advanced model.",
147
- icon: OpenaiLogo,
148
- },
149
- {
150
- name: "Claude 3.5 Sonnet",
151
- description: "Anthropic's latest Claude 3.5 Sonnet model (200k context).",
152
- icon: AnthropicLogo,
153
- },
154
- {
155
- name: "Mistral Large",
156
- description: "Mistral's `large 2` model (128k context).",
157
- icon: MistralLogo,
158
- },
159
- ];
160
- return (React.createElement(DropdownMenu, null,
161
- React.createElement(DropdownMenuTrigger, { asChild: true },
162
- React.createElement(Button, { label: selectedModel, variant: "ghost", size: "sm" })),
163
- React.createElement(DropdownMenuContent, null,
164
- React.createElement(DropdownMenuRadioGroup, { value: selectedModel, onValueChange: function (value) { return setSelectedModel(value); } },
165
- React.createElement(DropdownMenuLabel, { label: "Best performing models" }),
166
- bestPerformingModels.map(function (modelConfig) { return (React.createElement(DropdownMenuRadioItem, { key: modelConfig.name, label: modelConfig.name, icon: modelConfig.icon, description: modelConfig.description, value: modelConfig.name })); })))));
167
- }
168
- function AttachFileDemo() {
169
- var _a = __read(React.useState(""), 2), searchText = _a[0], setSearchText = _a[1];
170
- var _b = __read(React.useState(null), 2), selectedItem = _b[0], setSelectedItem = _b[1];
171
- var _c = __read(React.useState(false), 2), open = _c[0], setOpen = _c[1];
172
- var _d = __read(React.useState(false), 2), openAgents = _d[0], setOpenAgents = _d[1];
173
- var _e = __read(React.useState(false), 2), openToolsets = _e[0], setOpenToolsets = _e[1];
174
- var searchInputRef = React.useRef(null);
175
- var agentsSearchInputRef = React.useRef(null);
176
- var toolsetsSearchInputRef = React.useRef(null);
177
- React.useEffect(function () {
178
- if (open) {
179
- setTimeout(function () {
180
- var _a;
181
- (_a = searchInputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
182
- }, 0);
183
- }
184
- }, [open]);
185
- React.useEffect(function () {
186
- if (openAgents) {
187
- setTimeout(function () {
188
- var _a;
189
- (_a = agentsSearchInputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
190
- }, 0);
191
- }
192
- }, [openAgents]);
193
- React.useEffect(function () {
194
- if (openToolsets) {
195
- setTimeout(function () {
196
- var _a;
197
- (_a = toolsetsSearchInputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
198
- }, 0);
199
- }
200
- }, [openToolsets]);
201
- var items = [
202
- "Automated Data Processing Automated Data Processing Automated Data Processing Automated Data Processing",
203
- "Business Intelligence Dashboard",
204
- "Cloud Infrastructure Setup",
205
- "Data Migration Service",
206
- "Enterprise Resource Planning",
207
- "Financial Analytics Platform",
208
- "Geographic Information System",
209
- "Human Resources Management",
210
- "Inventory Control System",
211
- "Knowledge Base Integration",
212
- "Machine Learning Pipeline",
213
- "Network Security Monitor",
214
- "Operations Management Tool",
215
- "Project Portfolio Tracker",
216
- "Quality Assurance Framework",
217
- "Real-time Analytics Engine",
218
- "Supply Chain Optimizer",
219
- "Team Collaboration Hub",
220
- "User Authentication Service",
221
- "Workflow Automation System",
222
- ];
223
- var filteredItems = items.filter(function (item) {
224
- return item.toLowerCase().includes(searchText.toLowerCase());
225
- });
226
- var mainIcons = [FolderIcon, DocumentIcon];
227
- var extraIcons = [DriveLogo, NotionLogo, SlackLogo];
228
- var filteredAgents = [
229
- {
230
- name: "Research Assistant",
231
- description: "Academic research and paper analysis",
232
- emoji: "🔬",
233
- backgroundColor: "s-bg-blue-200",
234
- },
235
- {
236
- name: "Code Companion",
237
- description: "Pair programming and code review",
238
- emoji: "💻",
239
- backgroundColor: "s-bg-purple-200",
240
- },
241
- {
242
- name: "Data Analyst",
243
- description: "Data visualization and insights",
244
- emoji: "��",
245
- backgroundColor: "s-bg-green-200",
246
- },
247
- {
248
- name: "Content Writer",
249
- description: "Blog posts and marketing copy",
250
- emoji: "✍️",
251
- backgroundColor: "s-bg-yellow-200",
252
- },
253
- {
254
- name: "Customer Support",
255
- description: "24/7 customer service automation",
256
- emoji: "🤝",
257
- backgroundColor: "s-bg-pink-200",
258
- },
259
- {
260
- name: "Legal Assistant",
261
- description: "Contract review and legal research",
262
- emoji: "⚖️",
263
- backgroundColor: "s-bg-red-200",
264
- },
265
- {
266
- name: "Design Assistant",
267
- description: "UI/UX design and prototyping",
268
- emoji: "🎨",
269
- backgroundColor: "s-bg-indigo-200",
270
- },
271
- {
272
- name: "Financial Advisor",
273
- description: "Investment analysis and planning",
274
- emoji: "💰",
275
- backgroundColor: "s-bg-emerald-200",
276
- },
277
- ];
278
- var filteredToolsetList = [
279
- {
280
- name: "Product Design Suite",
281
- description: "Figma, Adobe XD, and design assets",
282
- icon: ActionMagicIcon,
283
- },
284
- {
285
- name: "Business Intelligence",
286
- description: "Tableau, PowerBI, and analytics tools",
287
- icon: ActionDocumentIcon,
288
- },
289
- {
290
- name: "Project Management",
291
- description: "Notion, Jira, and task tracking",
292
- icon: ActionFolderIcon,
293
- },
294
- {
295
- name: "Communication Hub",
296
- description: "Slack, Email, and messaging platforms",
297
- icon: ActionArmchairIcon,
298
- },
299
- {
300
- name: "Development Stack",
301
- description: "GitHub, VSCode, and dev tools",
302
- icon: ActionCommand1Icon,
303
- },
304
- {
305
- name: "Customer Success",
306
- description: "Zendesk, Intercom, and support tools",
307
- icon: ActionUserGroupIcon,
308
- },
309
- {
310
- name: "Marketing Suite",
311
- description: "HubSpot, Mailchimp, and campaign tools",
312
- icon: ActionCloudArrowDownIcon,
313
- },
314
- {
315
- name: "Data Warehouse",
316
- description: "Snowflake, BigQuery, and data storage",
317
- icon: ActionArmchairIcon,
318
- },
319
- {
320
- name: "HR Platform",
321
- description: "BambooHR, Workday, and people tools",
322
- icon: ActionMagicIcon,
323
- },
324
- {
325
- name: "Finance Stack",
326
- description: "QuickBooks, Stripe, and payment tools",
327
- icon: ActionFolderIcon,
328
- },
329
- ];
330
- return (React.createElement("div", { className: "s-flex s-gap-2" },
331
- React.createElement(DropdownMenu, { open: open, onOpenChange: setOpen, modal: false },
332
- React.createElement(DropdownMenuTrigger, { asChild: true },
333
- React.createElement(Button, { label: selectedItem || "Attach", icon: AttachmentIcon, variant: "outline", size: "sm" })),
334
- React.createElement(DropdownMenuContent, { className: "s-w-[380px]", dropdownHeaders: React.createElement(DropdownMenuSearchbar, { value: searchText, onChange: setSearchText, name: "search", placeholder: "Search in Dust", button: React.createElement(Button, { icon: ArrowUpOnSquareIcon, label: "Upload File" }) }) },
31
+ export var ComplexDropdown = {
32
+ render: function () {
33
+ return (React.createElement(DropdownMenu, null,
34
+ React.createElement(DropdownMenuTrigger, null, "Open Complex"),
35
+ React.createElement(DropdownMenuContent, { className: "s-w-56" },
36
+ React.createElement(DropdownMenuLabel, { label: "My Account" }),
37
+ React.createElement(DropdownMenuGroup, null,
38
+ React.createElement(DropdownMenuItem, { icon: UserIcon, label: "Profile", endComponent: React.createElement(Button, { size: "mini", icon: ArrowUpOnSquareIcon, variant: "ghost" }) }),
39
+ React.createElement(DropdownMenuItem, { icon: ArrowDownCircleIcon, label: "Billing" }),
40
+ React.createElement(DropdownMenuItem, { icon: Cog6ToothIcon, label: "Settings" }),
41
+ React.createElement(DropdownMenuItem, { icon: UserIcon, label: "Keyboard shortcuts" })),
335
42
  React.createElement(DropdownMenuSeparator, null),
336
- searchText ? (filteredItems.map(function (item) {
337
- var randomMainIcon = mainIcons[Math.floor(Math.random() * mainIcons.length)];
338
- var randomExtraIcon = extraIcons[Math.floor(Math.random() * extraIcons.length)];
339
- return (React.createElement(DropdownMenuItem, { key: item, label: item, description: "Company Space/Notion", icon: React.createElement(DoubleIcon, { size: "lg", mainIcon: randomMainIcon, secondaryIcon: randomExtraIcon }), onClick: function () {
340
- setSelectedItem(item);
341
- setSearchText("");
342
- }, truncateText: true }));
343
- })) : (React.createElement("div", { className: "s-flex s-h-full s-w-full s-items-center s-justify-center s-py-8" },
344
- React.createElement("div", { className: "s-flex s-flex-col s-items-center s-justify-center s-gap-0 s-text-center s-text-base s-font-semibold s-text-primary-400" },
345
- React.createElement(Icon, { visual: MagnifyingGlassIcon, size: "sm" }),
346
- "Search in Dust"))))),
347
- React.createElement(DropdownMenu, { open: openAgents, onOpenChange: setOpenAgents },
348
- React.createElement(DropdownMenuTrigger, { asChild: true },
349
- React.createElement(Button, { icon: RobotIcon, variant: "outline", size: "sm", isSelect: true })),
350
- React.createElement(DropdownMenuContent, { className: "s-h-96 s-w-[380px]", dropdownHeaders: React.createElement(DropdownMenuSearchbar, { ref: agentsSearchInputRef, name: "search", value: searchText, onChange: setSearchText, onKeyDown: function () { }, placeholder: "Search Agents", button: React.createElement(Button, { icon: PlusIcon, label: "Create" }) }) },
43
+ React.createElement(DropdownMenuGroup, null,
44
+ React.createElement(DropdownMenuLabel, { label: "Team" }),
45
+ React.createElement(DropdownMenuItem, { icon: UserIcon, label: "Members" }),
46
+ React.createElement(DropdownMenuSub, null,
47
+ React.createElement(DropdownMenuSubTrigger, { icon: UserIcon, label: "Invite users" }),
48
+ React.createElement(DropdownMenuPortal, null,
49
+ React.createElement(DropdownMenuSubContent, null,
50
+ React.createElement(DropdownMenuItem, { icon: MagicIcon, label: "Email" }),
51
+ React.createElement(DropdownMenuItem, { icon: ChatBubbleBottomCenterPlusIcon, label: "Message" }),
52
+ React.createElement(DropdownMenuSeparator, null),
53
+ React.createElement(DropdownMenuItem, { icon: UserIcon, label: "More..." }),
54
+ React.createElement(DropdownMenuItem, { icon: UserIcon, label: "More.." }),
55
+ React.createElement(DropdownMenuItem, { icon: UserIcon, label: "More..." }),
56
+ React.createElement(DropdownMenuItem, { icon: UserIcon, label: "More.." }),
57
+ React.createElement(DropdownMenuItem, { icon: UserIcon, label: "More" }),
58
+ React.createElement(DropdownMenuItem, { icon: UserIcon, label: "More....." }),
59
+ React.createElement(DropdownMenuItem, { icon: UserIcon, label: "More.." }),
60
+ React.createElement(DropdownMenuItem, { icon: UserIcon, label: "More" }),
61
+ React.createElement(DropdownMenuItem, { icon: UserIcon, label: "More...." })))),
62
+ React.createElement(DropdownMenuItem, { icon: UserGroupIcon, label: "New Team" })),
351
63
  React.createElement(DropdownMenuSeparator, null),
352
- filteredAgents.map(function (agent) {
353
- return (React.createElement(DropdownMenuItem, { key: agent.name, label: agent.name, description: agent.description, icon: function () { return (React.createElement(Avatar, { size: "sm", emoji: agent.emoji, backgroundColor: agent.backgroundColor })); }, onClick: function () {
354
- setSelectedItem(agent.name);
355
- setSearchText("");
356
- }, truncateText: true }));
357
- }))),
358
- React.createElement(DropdownMenu, { open: openToolsets, onOpenChange: setOpenToolsets },
359
- React.createElement(DropdownMenuTrigger, { asChild: true },
360
- React.createElement(Button, { label: selectedItem || "Add Toolset", icon: SuitcaseIcon, variant: "outline", size: "sm" })),
361
- React.createElement(DropdownMenuContent, { className: "s-h-96 s-w-[380px]", dropdownHeaders: React.createElement(DropdownMenuSearchbar, { ref: toolsetsSearchInputRef, name: "search", value: searchText, onChange: setSearchText, onKeyDown: function () { }, placeholder: "Search Tools", button: React.createElement(Button, { icon: PlusIcon, label: "Add MCP Server" }) }) },
64
+ React.createElement(DropdownMenuItem, { icon: GithubLogo, label: "GitHub" }),
65
+ React.createElement(DropdownMenuItem, { icon: UserIcon, label: "Support" }),
66
+ React.createElement(DropdownMenuItem, { icon: CloudArrowDownIcon, label: "API", disabled: true }),
362
67
  React.createElement(DropdownMenuSeparator, null),
363
- filteredToolsetList.map(function (toolset) {
364
- return (React.createElement(DropdownMenuItem, { key: toolset.name, label: toolset.name, description: toolset.description, icon: function () { return React.createElement(Avatar, { size: "sm", icon: toolset.icon }); }, onClick: function () {
365
- setSelectedItem(toolset.name);
366
- setSearchText("");
367
- }, truncateText: true }));
368
- })))));
369
- }
370
- function StaticItemDropdownDemo() {
371
- return (React.createElement(DropdownMenu, null,
372
- React.createElement(DropdownMenuTrigger, { asChild: true },
373
- React.createElement(Button, { label: "System Status", variant: "outline", size: "sm" })),
374
- React.createElement(DropdownMenuContent, { className: "s-w-[250px]" },
375
- React.createElement(DropdownMenuLabel, { label: "System Metrics" }),
376
- React.createElement(DropdownMenuStaticItem, { label: "CPU Usage", value: "45%" }),
377
- React.createElement(DropdownMenuStaticItem, { label: "Memory", value: "2.3GB/8GB" }),
378
- React.createElement(DropdownMenuStaticItem, { label: "Disk Space" },
379
- React.createElement("span", { className: "s-flex s-items-center s-gap-2 s-text-muted-foreground" },
380
- "3",
381
- React.createElement(Icon, { size: "xs", className: "s-text-muted-foreground", visual: HandThumbUpIcon }),
382
- "1",
383
- React.createElement(Icon, { size: "xs", className: "s-text-muted-foreground", visual: HandThumbDownIcon }))),
384
- React.createElement(DropdownMenuSeparator, null),
385
- React.createElement(DropdownMenuLabel, { label: "Actions" }),
386
- React.createElement(DropdownMenuItem, { icon: Cog6ToothIcon, label: "System Settings", onClick: function () { return console.log("Settings clicked"); } }),
387
- React.createElement(DropdownMenuItem, { icon: CloudArrowDownIcon, label: "Download Report", onClick: function () { return console.log("Download clicked"); } }))));
388
- }
389
- export var TagsDropdownExample = function () {
390
- var _a = __read(useState([
391
- "react",
392
- "typescript",
393
- "ui",
394
- "design-system",
395
- ]), 2), tags = _a[0], setTags = _a[1];
396
- var _b = __read(useState(false), 2), isLoading = _b[0], setIsLoading = _b[1];
397
- var handleRemoveTag = function (tagToRemove) {
398
- setTags(tags.filter(function (tag) { return tag !== tagToRemove; }));
399
- };
400
- var handleAddTag = function () {
401
- setIsLoading(true);
402
- // Simulate API call delay
403
- setTimeout(function () {
404
- var newTag = "tag-".concat(Math.floor(Math.random() * 1000));
405
- setTags(__spreadArray(__spreadArray([], __read(tags), false), [newTag], false));
406
- setIsLoading(false);
407
- }, 1500);
408
- };
409
- return (React.createElement("div", { className: "s-flex s-flex-col s-gap-4 s-p-4" },
410
- React.createElement("div", { className: "s-flex s-items-center s-gap-2" },
411
- React.createElement(DropdownMenu, { open: true },
68
+ React.createElement(DropdownMenuItem, { icon: LogoutIcon, label: "Log out", variant: "warning", href: "/api/auth/logout" }))));
69
+ },
70
+ };
71
+ export var WithCheckboxes = {
72
+ render: function () {
73
+ var _a = __read(React.useState(true), 2), showStatusBar = _a[0], setShowStatusBar = _a[1];
74
+ var _b = __read(React.useState(false), 2), showActivityBar = _b[0], setShowActivityBar = _b[1];
75
+ var _c = __read(React.useState(false), 2), showPanel = _c[0], setShowPanel = _c[1];
76
+ return (React.createElement(DropdownMenu, null,
77
+ React.createElement(DropdownMenuTrigger, null, "Open Checkbox"),
78
+ React.createElement(DropdownMenuContent, { className: "s-w-72" },
79
+ React.createElement(DropdownMenuLabel, { label: "Interface Settings" }),
80
+ React.createElement(DropdownMenuSeparator, null),
81
+ React.createElement(DropdownMenuCheckboxItem, { checked: showStatusBar, onCheckedChange: setShowStatusBar, label: "Status Bar", description: "Show application status and progress indicators", truncateText: true }),
82
+ React.createElement(DropdownMenuCheckboxItem, { checked: showActivityBar, onCheckedChange: setShowActivityBar, label: "Activity Bar", description: "Display sidebar with quick access to tools", truncateText: true, disabled: true }),
83
+ React.createElement(DropdownMenuCheckboxItem, { checked: showPanel, onCheckedChange: setShowPanel, label: "Panel", description: "Bottom panel for terminal and debug output", truncateText: true }))));
84
+ },
85
+ };
86
+ export var WithRadioGroup = {
87
+ render: function () {
88
+ var _a = __read(React.useState("bottom"), 2), position = _a[0], setPosition = _a[1];
89
+ return (React.createElement(DropdownMenu, null,
90
+ React.createElement(DropdownMenuTrigger, null, "Open Radio Group"),
91
+ React.createElement(DropdownMenuContent, { className: "s-w-56" },
92
+ React.createElement(DropdownMenuLabel, { label: "Panel Position" }),
93
+ React.createElement(DropdownMenuSeparator, null),
94
+ React.createElement(DropdownMenuRadioGroup, { value: position, onValueChange: setPosition },
95
+ React.createElement(DropdownMenuRadioItem, { value: "top" }, "Top"),
96
+ React.createElement(DropdownMenuRadioItem, { value: "bottom" }, "Bottom"),
97
+ React.createElement(DropdownMenuRadioItem, { value: "right" }, "Right")))));
98
+ },
99
+ };
100
+ export var ModelSelector = {
101
+ render: function () {
102
+ var _a = __read(React.useState("GPT4-o"), 2), selectedModel = _a[0], setSelectedModel = _a[1];
103
+ var bestPerformingModels = [
104
+ {
105
+ name: "GPT4-o",
106
+ description: "OpenAI's most advanced model.",
107
+ icon: OpenaiLogo,
108
+ },
109
+ {
110
+ name: "Claude 3.5 Sonnet",
111
+ description: "Anthropic's latest Claude 3.5 Sonnet model (200k context).",
112
+ icon: AnthropicLogo,
113
+ },
114
+ {
115
+ name: "Mistral Large",
116
+ description: "Mistral's `large 2` model (128k context).",
117
+ icon: MistralLogo,
118
+ },
119
+ ];
120
+ return (React.createElement(DropdownMenu, null,
121
+ React.createElement(DropdownMenuTrigger, { asChild: true },
122
+ React.createElement(Button, { label: selectedModel, variant: "outline", size: "sm", tooltip: "Test" })),
123
+ React.createElement(DropdownMenuContent, null,
124
+ React.createElement(DropdownMenuLabel, { label: "Best performing models" }),
125
+ bestPerformingModels.map(function (modelConfig) { return (React.createElement(DropdownMenuItem, { key: modelConfig.name, label: modelConfig.name, onClick: function () { return setSelectedModel(modelConfig.name); }, description: modelConfig.description, icon: modelConfig.icon })); }))));
126
+ },
127
+ };
128
+ export var ModelSelectorWithRadio = {
129
+ render: function () {
130
+ var _a = __read(React.useState("GPT4-o"), 2), selectedModel = _a[0], setSelectedModel = _a[1];
131
+ var bestPerformingModels = [
132
+ {
133
+ name: "GPT4-o",
134
+ description: "OpenAI's most advanced model.",
135
+ icon: OpenaiLogo,
136
+ },
137
+ {
138
+ name: "Claude 3.5 Sonnet",
139
+ description: "Anthropic's latest Claude 3.5 Sonnet model (200k context).",
140
+ icon: AnthropicLogo,
141
+ },
142
+ {
143
+ name: "Mistral Large",
144
+ description: "Mistral's `large 2` model (128k context).",
145
+ icon: MistralLogo,
146
+ },
147
+ ];
148
+ return (React.createElement(DropdownMenu, null,
149
+ React.createElement(DropdownMenuTrigger, { asChild: true },
150
+ React.createElement(Button, { label: selectedModel, variant: "ghost", size: "sm" })),
151
+ React.createElement(DropdownMenuContent, null,
152
+ React.createElement(DropdownMenuRadioGroup, { value: selectedModel, onValueChange: function (value) { return setSelectedModel(value); } },
153
+ React.createElement(DropdownMenuLabel, { label: "Best performing models" }),
154
+ bestPerformingModels.map(function (modelConfig) { return (React.createElement(DropdownMenuRadioItem, { key: modelConfig.name, label: modelConfig.name, icon: modelConfig.icon, description: modelConfig.description, value: modelConfig.name })); })))));
155
+ },
156
+ };
157
+ export var WithSearchAndPicker = {
158
+ render: function () {
159
+ var _a = __read(React.useState(""), 2), searchText = _a[0], setSearchText = _a[1];
160
+ var _b = __read(React.useState(null), 2), selectedItem = _b[0], setSelectedItem = _b[1];
161
+ var _c = __read(React.useState(false), 2), open = _c[0], setOpen = _c[1];
162
+ var _d = __read(React.useState(false), 2), openAgents = _d[0], setOpenAgents = _d[1];
163
+ var _e = __read(React.useState(false), 2), openToolsets = _e[0], setOpenToolsets = _e[1];
164
+ var searchInputRef = React.useRef(null);
165
+ var agentsSearchInputRef = React.useRef(null);
166
+ var toolsetsSearchInputRef = React.useRef(null);
167
+ React.useEffect(function () {
168
+ if (open) {
169
+ setTimeout(function () {
170
+ var _a;
171
+ (_a = searchInputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
172
+ }, 0);
173
+ }
174
+ }, [open]);
175
+ React.useEffect(function () {
176
+ if (openAgents) {
177
+ setTimeout(function () {
178
+ var _a;
179
+ (_a = agentsSearchInputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
180
+ }, 0);
181
+ }
182
+ }, [openAgents]);
183
+ React.useEffect(function () {
184
+ if (openToolsets) {
185
+ setTimeout(function () {
186
+ var _a;
187
+ (_a = toolsetsSearchInputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
188
+ }, 0);
189
+ }
190
+ }, [openToolsets]);
191
+ var items = [
192
+ "Automated Data Processing Automated Data Processing Automated Data Processing Automated Data Processing",
193
+ "Business Intelligence Dashboard",
194
+ "Cloud Infrastructure Setup",
195
+ "Data Migration Service",
196
+ "Enterprise Resource Planning",
197
+ "Financial Analytics Platform",
198
+ "Geographic Information System",
199
+ "Human Resources Management",
200
+ "Inventory Control System",
201
+ "Knowledge Base Integration",
202
+ "Machine Learning Pipeline",
203
+ "Network Security Monitor",
204
+ "Operations Management Tool",
205
+ "Project Portfolio Tracker",
206
+ "Quality Assurance Framework",
207
+ "Real-time Analytics Engine",
208
+ "Supply Chain Optimizer",
209
+ "Team Collaboration Hub",
210
+ "User Authentication Service",
211
+ "Workflow Automation System",
212
+ ];
213
+ var filteredItems = items.filter(function (item) {
214
+ return item.toLowerCase().includes(searchText.toLowerCase());
215
+ });
216
+ var mainIcons = [FolderIcon, DocumentIcon];
217
+ var extraIcons = [DriveLogo, NotionLogo, SlackLogo];
218
+ var filteredAgents = [
219
+ {
220
+ name: "Research Assistant",
221
+ description: "Academic research and paper analysis",
222
+ emoji: "🔬",
223
+ backgroundColor: "s-bg-blue-200",
224
+ },
225
+ {
226
+ name: "Code Companion",
227
+ description: "Pair programming and code review",
228
+ emoji: "💻",
229
+ backgroundColor: "s-bg-purple-200",
230
+ },
231
+ {
232
+ name: "Data Analyst",
233
+ description: "Data visualization and insights",
234
+ emoji: "��",
235
+ backgroundColor: "s-bg-green-200",
236
+ },
237
+ {
238
+ name: "Content Writer",
239
+ description: "Blog posts and marketing copy",
240
+ emoji: "✍️",
241
+ backgroundColor: "s-bg-yellow-200",
242
+ },
243
+ {
244
+ name: "Customer Support",
245
+ description: "24/7 customer service automation",
246
+ emoji: "🤝",
247
+ backgroundColor: "s-bg-pink-200",
248
+ },
249
+ {
250
+ name: "Legal Assistant",
251
+ description: "Contract review and legal research",
252
+ emoji: "⚖️",
253
+ backgroundColor: "s-bg-red-200",
254
+ },
255
+ {
256
+ name: "Design Assistant",
257
+ description: "UI/UX design and prototyping",
258
+ emoji: "🎨",
259
+ backgroundColor: "s-bg-indigo-200",
260
+ },
261
+ {
262
+ name: "Financial Advisor",
263
+ description: "Investment analysis and planning",
264
+ emoji: "💰",
265
+ backgroundColor: "s-bg-emerald-200",
266
+ },
267
+ ];
268
+ var filteredToolsetList = [
269
+ {
270
+ name: "Product Design Suite",
271
+ description: "Figma, Adobe XD, and design assets",
272
+ icon: ActionMagicIcon,
273
+ },
274
+ {
275
+ name: "Business Intelligence",
276
+ description: "Tableau, PowerBI, and analytics tools",
277
+ icon: ActionDocumentIcon,
278
+ },
279
+ {
280
+ name: "Project Management",
281
+ description: "Notion, Jira, and task tracking",
282
+ icon: ActionFolderIcon,
283
+ },
284
+ {
285
+ name: "Communication Hub",
286
+ description: "Slack, Email, and messaging platforms",
287
+ icon: ActionArmchairIcon,
288
+ },
289
+ {
290
+ name: "Development Stack",
291
+ description: "GitHub, VSCode, and dev tools",
292
+ icon: ActionCommand1Icon,
293
+ },
294
+ {
295
+ name: "Customer Success",
296
+ description: "Zendesk, Intercom, and support tools",
297
+ icon: ActionUserGroupIcon,
298
+ },
299
+ {
300
+ name: "Marketing Suite",
301
+ description: "HubSpot, Mailchimp, and campaign tools",
302
+ icon: ActionCloudArrowDownIcon,
303
+ },
304
+ {
305
+ name: "Data Warehouse",
306
+ description: "Snowflake, BigQuery, and data storage",
307
+ icon: ActionArmchairIcon,
308
+ },
309
+ {
310
+ name: "HR Platform",
311
+ description: "BambooHR, Workday, and people tools",
312
+ icon: ActionMagicIcon,
313
+ },
314
+ {
315
+ name: "Finance Stack",
316
+ description: "QuickBooks, Stripe, and payment tools",
317
+ icon: ActionFolderIcon,
318
+ },
319
+ ];
320
+ return (React.createElement("div", { className: "s-flex s-gap-2" },
321
+ React.createElement(DropdownMenu, { open: open, onOpenChange: setOpen, modal: false },
412
322
  React.createElement(DropdownMenuTrigger, { asChild: true },
413
- React.createElement(Button, { variant: "outline", label: "Select Tags", icon: PlusIcon, size: "sm", isSelect: true })),
414
- React.createElement(DropdownMenuContent, { className: "s-w-80" },
415
- React.createElement(DropdownMenuLabel, { label: "Available Tags" }),
323
+ React.createElement(Button, { label: selectedItem || "Attach", icon: AttachmentIcon, variant: "outline", size: "sm" })),
324
+ React.createElement(DropdownMenuContent, { className: "s-w-[380px]", dropdownHeaders: React.createElement(DropdownMenuSearchbar, { value: searchText, onChange: setSearchText, name: "search", placeholder: "Search in Dust", button: React.createElement(Button, { icon: ArrowUpOnSquareIcon, label: "Upload File" }) }) },
416
325
  React.createElement(DropdownMenuSeparator, null),
417
- React.createElement(DropdownMenuTagList, null, tags.map(function (tag) { return (React.createElement(DropdownMenuTagItem, { key: tag, label: tag, color: "highlight", onRemove: function () { return handleRemoveTag(tag); }, onClick: function () { return console.log(tag); } })); })),
326
+ searchText ? (filteredItems.map(function (item) {
327
+ var randomMainIcon = mainIcons[Math.floor(Math.random() * mainIcons.length)];
328
+ var randomExtraIcon = extraIcons[Math.floor(Math.random() * extraIcons.length)];
329
+ return (React.createElement(DropdownMenuItem, { key: item, label: item, description: "Company Space/Notion", icon: React.createElement(DoubleIcon, { size: "lg", mainIcon: randomMainIcon, secondaryIcon: randomExtraIcon }), onClick: function () {
330
+ setSelectedItem(item);
331
+ setSearchText("");
332
+ }, truncateText: true }));
333
+ })) : (React.createElement("div", { className: "s-flex s-h-full s-w-full s-items-center s-justify-center s-py-8" },
334
+ React.createElement("div", { className: "s-flex s-flex-col s-items-center s-justify-center s-gap-0 s-text-center s-text-base s-font-semibold s-text-primary-400" },
335
+ React.createElement(Icon, { visual: MagnifyingGlassIcon, size: "sm" }),
336
+ "Search in Dust"))))),
337
+ React.createElement(DropdownMenu, { open: openAgents, onOpenChange: setOpenAgents },
338
+ React.createElement(DropdownMenuTrigger, { asChild: true },
339
+ React.createElement(Button, { icon: RobotIcon, variant: "outline", size: "sm", isSelect: true })),
340
+ React.createElement(DropdownMenuContent, { className: "s-h-96 s-w-[380px]", dropdownHeaders: React.createElement(DropdownMenuSearchbar, { ref: agentsSearchInputRef, name: "search", value: searchText, onChange: setSearchText, onKeyDown: function () { }, placeholder: "Search Agents", button: React.createElement(Button, { icon: PlusIcon, label: "Create" }) }) },
341
+ React.createElement(DropdownMenuSeparator, null),
342
+ filteredAgents.map(function (agent) {
343
+ return (React.createElement(DropdownMenuItem, { key: agent.name, label: agent.name, description: agent.description, icon: function () { return (React.createElement(Avatar, { size: "sm", emoji: agent.emoji, backgroundColor: agent.backgroundColor })); }, onClick: function () {
344
+ setSelectedItem(agent.name);
345
+ setSearchText("");
346
+ }, truncateText: true }));
347
+ }))),
348
+ React.createElement(DropdownMenu, { open: openToolsets, onOpenChange: setOpenToolsets },
349
+ React.createElement(DropdownMenuTrigger, { asChild: true },
350
+ React.createElement(Button, { label: selectedItem || "Add Toolset", icon: SuitcaseIcon, variant: "outline", size: "sm" })),
351
+ React.createElement(DropdownMenuContent, { className: "s-h-96 s-w-[380px]", dropdownHeaders: React.createElement(DropdownMenuSearchbar, { ref: toolsetsSearchInputRef, name: "search", value: searchText, onChange: setSearchText, onKeyDown: function () { }, placeholder: "Search Tools", button: React.createElement(Button, { icon: PlusIcon, label: "Add MCP Server" }) }) },
418
352
  React.createElement(DropdownMenuSeparator, null),
419
- React.createElement("div", { className: "s-p-2" },
420
- React.createElement(Button, { label: isLoading ? "Adding..." : "Add Random Tag", onClick: handleAddTag, className: "s-w-full", size: "sm", disabled: isLoading, icon: isLoading
421
- ? function () { return React.createElement(Spinner, { size: "xs", variant: "color" }); }
422
- : undefined })))),
423
- React.createElement("div", { className: "s-text-sm s-text-muted-foreground" }, "Click to view available tags")),
424
- React.createElement("div", { className: "s-flex s-flex-wrap s-gap-2 s-rounded-lg s-border s-border-border s-p-4" },
425
- React.createElement("span", { className: "s-mr-2 s-text-sm s-text-muted-foreground" }, "Current tags:"),
426
- tags.map(function (tag) { return (React.createElement("div", { key: tag, className: "s-inline-flex" },
427
- React.createElement(Chip, { label: tag, color: "highlight", size: "xs", onRemove: function () { return handleRemoveTag(tag); } }))); }))));
353
+ filteredToolsetList.map(function (toolset) {
354
+ return (React.createElement(DropdownMenuItem, { key: toolset.name, label: toolset.name, description: toolset.description, icon: function () { return React.createElement(Avatar, { size: "sm", icon: toolset.icon }); }, onClick: function () {
355
+ setSelectedItem(toolset.name);
356
+ setSearchText("");
357
+ }, truncateText: true }));
358
+ })))));
359
+ },
360
+ };
361
+ export var WithStaticItems = {
362
+ render: function () {
363
+ return (React.createElement(DropdownMenu, null,
364
+ React.createElement(DropdownMenuTrigger, { asChild: true },
365
+ React.createElement(Button, { label: "System Status", variant: "outline", size: "sm" })),
366
+ React.createElement(DropdownMenuContent, { className: "s-w-[250px]" },
367
+ React.createElement(DropdownMenuLabel, { label: "System Metrics" }),
368
+ React.createElement(DropdownMenuStaticItem, { label: "CPU Usage", value: "45%" }),
369
+ React.createElement(DropdownMenuStaticItem, { label: "Memory", value: "2.3GB/8GB" }),
370
+ React.createElement(DropdownMenuStaticItem, { label: "Disk Space" },
371
+ React.createElement("span", { className: "s-flex s-items-center s-gap-2 s-text-muted-foreground" },
372
+ "3",
373
+ React.createElement(Icon, { size: "xs", className: "s-text-muted-foreground", visual: HandThumbUpIcon }),
374
+ "1",
375
+ React.createElement(Icon, { size: "xs", className: "s-text-muted-foreground", visual: HandThumbDownIcon }))),
376
+ React.createElement(DropdownMenuSeparator, null),
377
+ React.createElement(DropdownMenuLabel, { label: "Actions" }),
378
+ React.createElement(DropdownMenuItem, { icon: Cog6ToothIcon, label: "System Settings", onClick: function () { return console.log("Settings clicked"); } }),
379
+ React.createElement(DropdownMenuItem, { icon: CloudArrowDownIcon, label: "Download Report", onClick: function () { return console.log("Download clicked"); } }))));
380
+ },
381
+ };
382
+ export var WithSearchFilter = {
383
+ render: function () {
384
+ var _a = __read(React.useState(""), 2), searchInputValue = _a[0], setSearchInputValue = _a[1];
385
+ var items = ["Profile", "Billing", "Team", "Subscription"];
386
+ var filteredItems = items.filter(function (item) {
387
+ return item.toLowerCase().includes(searchInputValue.toLowerCase());
388
+ });
389
+ return (React.createElement(SearchDropdownMenu, { searchInputValue: searchInputValue, setSearchInputValue: setSearchInputValue }, filteredItems.map(function (item) { return (React.createElement(DropdownMenuItem, { key: item, label: item, onClick: function () {
390
+ console.log(item);
391
+ } })); })));
392
+ },
393
+ };
394
+ export var WithTags = {
395
+ render: function () {
396
+ var _a = __read(useState([
397
+ "react",
398
+ "typescript",
399
+ "ui",
400
+ "design-system",
401
+ ]), 2), tags = _a[0], setTags = _a[1];
402
+ var _b = __read(useState(false), 2), isLoading = _b[0], setIsLoading = _b[1];
403
+ var handleRemoveTag = function (tagToRemove) {
404
+ setTags(tags.filter(function (tag) { return tag !== tagToRemove; }));
405
+ };
406
+ var handleAddTag = function () {
407
+ setIsLoading(true);
408
+ // Simulate API call delay
409
+ setTimeout(function () {
410
+ var newTag = "tag-".concat(Math.floor(Math.random() * 1000));
411
+ setTags(__spreadArray(__spreadArray([], __read(tags), false), [newTag], false));
412
+ setIsLoading(false);
413
+ }, 1500);
414
+ };
415
+ return (React.createElement("div", { className: "s-flex s-flex-col s-gap-4 s-p-4" },
416
+ React.createElement("div", { className: "s-flex s-items-center s-gap-2" },
417
+ React.createElement(DropdownMenu, null,
418
+ React.createElement(DropdownMenuTrigger, { asChild: true },
419
+ React.createElement(Button, { variant: "outline", label: "Select Tags", icon: PlusIcon, size: "sm", isSelect: true })),
420
+ React.createElement(DropdownMenuContent, { className: "s-w-80" },
421
+ React.createElement(DropdownMenuLabel, { label: "Available Tags" }),
422
+ React.createElement(DropdownMenuSeparator, null),
423
+ React.createElement(DropdownMenuTagList, null, tags.map(function (tag) { return (React.createElement(DropdownMenuTagItem, { key: tag, label: tag, color: "highlight", onRemove: function () { return handleRemoveTag(tag); }, onClick: function () { return console.log(tag); } })); })),
424
+ React.createElement(DropdownMenuSeparator, null),
425
+ React.createElement("div", { className: "s-p-2" },
426
+ React.createElement(Button, { label: isLoading ? "Adding..." : "Add Random Tag", onClick: handleAddTag, className: "s-w-full", size: "sm", disabled: isLoading, icon: isLoading
427
+ ? function () { return React.createElement(Spinner, { size: "xs", variant: "color" }); }
428
+ : undefined })))),
429
+ React.createElement("div", { className: "s-text-sm s-text-muted-foreground" }, "Click to view available tags")),
430
+ React.createElement("div", { className: "s-flex s-flex-wrap s-gap-2 s-rounded-lg s-border s-border-border s-p-4" },
431
+ React.createElement("span", { className: "s-mr-2 s-text-sm s-text-muted-foreground" }, "Current tags:"),
432
+ tags.map(function (tag) { return (React.createElement("div", { key: tag, className: "s-inline-flex" },
433
+ React.createElement(Chip, { label: tag, color: "highlight", size: "xs", onRemove: function () { return handleRemoveTag(tag); } }))); }))));
434
+ },
428
435
  };
429
436
  //# sourceMappingURL=Dropdown.stories.js.map