@marimo-team/islands 0.19.8-dev27 → 0.19.8-dev31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@marimo-team/islands",
3
- "version": "0.19.8-dev27",
3
+ "version": "0.19.8-dev31",
4
4
  "main": "dist/main.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "type": "module",
@@ -213,7 +213,7 @@
213
213
  "devDependencies": {
214
214
  "@babel/plugin-proposal-decorators": "^7.28.6",
215
215
  "@babel/preset-typescript": "^7.25.9",
216
- "@biomejs/biome": "2.3.12",
216
+ "@biomejs/biome": "2.3.13",
217
217
  "@codecov/vite-plugin": "^1.9.1",
218
218
  "@csstools/postcss-light-dark-function": "^2.0.11",
219
219
  "@playwright/test": "^1.57.0",
@@ -9,7 +9,11 @@ import { useAtom, useAtomValue, useSetAtom, useStore } from "jotai";
9
9
  import {
10
10
  AtSignIcon,
11
11
  BotMessageSquareIcon,
12
+ HatGlasses,
12
13
  Loader2,
14
+ type LucideIcon,
15
+ MessageCircleIcon,
16
+ NotebookText,
13
17
  PaperclipIcon,
14
18
  PlusIcon,
15
19
  SendIcon,
@@ -237,49 +241,65 @@ const ChatInputFooter: React.FC<ChatInputFooterProps> = memo(
237
241
  value: CopilotMode;
238
242
  label: string;
239
243
  subtitle: string;
244
+ Icon: LucideIcon;
240
245
  }[] = [
246
+ {
247
+ value: "manual",
248
+ label: "Manual",
249
+ subtitle: "Pure chat, no tool usage",
250
+ Icon: MessageCircleIcon,
251
+ },
241
252
  {
242
253
  value: "ask",
243
254
  label: "Ask",
244
255
  subtitle:
245
256
  "Use AI with access to read-only tools like documentation search",
246
- },
247
- {
248
- value: "manual",
249
- label: "Manual",
250
- subtitle: "Pure chat, no tool usage",
257
+ Icon: NotebookText,
251
258
  },
252
259
  {
253
260
  value: "agent",
254
261
  label: "Agent (beta)",
255
262
  subtitle: "Use AI with access to read and write tools",
263
+ Icon: HatGlasses,
256
264
  },
257
265
  ];
258
266
 
259
267
  const isAttachmentSupported =
260
268
  PROVIDERS_THAT_SUPPORT_ATTACHMENTS.has(currentProvider);
261
269
 
270
+ const CurrentModeIcon = modeOptions.find(
271
+ (o) => o.value === currentMode,
272
+ )?.Icon;
273
+
262
274
  return (
263
275
  <TooltipProvider>
264
276
  <div className="px-3 py-2 border-t border-border/20 flex flex-row flex-wrap items-center justify-between gap-1">
265
277
  <div className="flex items-center gap-2">
266
278
  <Select value={currentMode} onValueChange={saveModeChange}>
267
- <SelectTrigger className="h-6 text-xs border-border shadow-none! ring-0! bg-muted hover:bg-muted/30 py-0 px-2 gap-1 capitalize">
268
- {currentMode}
279
+ <SelectTrigger className="h-6 text-xs border-border shadow-none! ring-0! bg-muted hover:bg-muted/30 py-0 px-2 gap-1.5">
280
+ {CurrentModeIcon && <CurrentModeIcon className="h-3 w-3" />}
281
+ <span className="capitalize">{currentMode}</span>
269
282
  </SelectTrigger>
270
283
  <SelectContent>
271
284
  <SelectGroup>
272
- <SelectLabel>AI Mode</SelectLabel>
285
+ <SelectLabel className="text-xs uppercase tracking-wider text-muted-foreground/70 font-medium">
286
+ AI Mode
287
+ </SelectLabel>
273
288
  {modeOptions.map((option) => (
274
289
  <SelectItem
275
290
  key={option.value}
276
291
  value={option.value}
277
- className="text-xs"
292
+ className="text-xs py-1"
278
293
  >
279
- <div className="flex flex-col">
280
- {option.label}
281
- <div className="text-muted-foreground text-xs pt-1 block">
282
- {option.subtitle}
294
+ <div className="flex items-start gap-2.5">
295
+ <span className="mt-1 text-muted-foreground">
296
+ <option.Icon className="h-3 w-3" />
297
+ </span>
298
+ <div className="flex flex-col gap-0.5">
299
+ <span className="font-semibold">{option.label}</span>
300
+ <span className="text-muted-foreground">
301
+ {option.subtitle}
302
+ </span>
283
303
  </div>
284
304
  </div>
285
305
  </SelectItem>