@alivault/pico 0.6.0 → 0.6.1

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.
@@ -2,7 +2,7 @@ import { i as __toESM } from "../_runtime.mjs";
2
2
  import { X as require_react, Y as require_jsx_runtime } from "../_libs/@base-ui/react+[...].mjs";
3
3
  import { a as createRouter, c as createRootRoute, n as Scripts, r as HeadContent, s as createFileRoute } from "../_libs/@tanstack/react-router+[...].mjs";
4
4
  import { h as OctagonX, i as TriangleAlert, k as CircleCheck, v as Info } from "../_libs/lucide-react.mjs";
5
- import { B as extractMessageText$1, I as createCompactionSummaryItem, N as assistantBlocksFromMessage, P as buildItemsFromSync, V as extractToolText, W as mergeAssistantBlocksForStreaming, _ as Route$46, bt as toolCategoryFromTool, k as TooltipProvider, n as APPLIED_THEME_STORAGE_KEY, t as APPLIED_THEME_CLASSES, x as Spinner, z as extractMessageImages } from "./routes-BpP7WwMR.mjs";
5
+ import { B as extractMessageText$1, I as createCompactionSummaryItem, N as assistantBlocksFromMessage, P as buildItemsFromSync, V as extractToolText, W as mergeAssistantBlocksForStreaming, _ as Route$46, bt as toolCategoryFromTool, k as TooltipProvider, n as APPLIED_THEME_STORAGE_KEY, t as APPLIED_THEME_CLASSES, x as Spinner, z as extractMessageImages } from "./routes-Qk9CE25v.mjs";
6
6
  import { t as QueryClient } from "../_libs/tanstack__query-core.mjs";
7
7
  import { t as setupRouterSsrQueryIntegration } from "../_libs/@tanstack/react-router-ssr-query+[...].mjs";
8
8
  import { n as HotkeysProvider } from "../_libs/tanstack__react-hotkeys.mjs";
@@ -20,7 +20,7 @@ import os, { homedir } from "node:os";
20
20
  import { performance } from "node:perf_hooks";
21
21
  import { isMainThread } from "node:worker_threads";
22
22
  import { execSync, spawn } from "node:child_process";
23
- //#region node_modules/.nitro/vite/services/ssr/assets/router-Bc19lQoF.js
23
+ //#region node_modules/.nitro/vite/services/ssr/assets/router-Bw2oDzya.js
24
24
  var import_react = /* @__PURE__ */ __toESM(require_react());
25
25
  var import_jsx_runtime = require_jsx_runtime();
26
26
  var Toaster$1 = ({ ...props }) => {
@@ -2,7 +2,7 @@ import { i as __toESM } from "../_runtime.mjs";
2
2
  import { A as DialogRoot, C as MenuPortal, D as TabsTab, E as TabsList$1, F as DialogBackdrop, I as Separator, K as mergeProps, L as Input, M as DialogPopup, N as DialogDescription$1, O as TabsRoot, P as DialogClose, R as Button, S as MenuPositioner, T as MenuItem, X as require_react, Y as require_jsx_runtime, _ as AccordionRoot, a as CollapsiblePanel, b as MenuSubmenuRoot, c as PopoverPopup, d as PopoverTrigger$1, f as PopoverRoot, g as AccordionItem$1, h as AccordionHeader, i as ContextMenuRoot, j as DialogPortal$1, k as DialogTitle$1, l as PopoverPositioner, m as AccordionTrigger$1, n as Toggle, o as CollapsibleTrigger$1, p as AccordionPanel, r as ContextMenuTrigger$1, s as CollapsibleRoot, t as ToggleGroup, u as PopoverPortal, v as MenuSubmenuTrigger, w as MenuPopup, x as MenuRoot, y as MenuTrigger, z as useRender } from "../_libs/@base-ui/react+[...].mjs";
3
3
  import { t as cva } from "../_libs/class-variance-authority+clsx.mjs";
4
4
  import { A as ChevronsUpDown, B as ArrowDown, C as FolderPlus, D as Copy, E as Download, F as Check, I as ArrowUp, L as ArrowUpToLine, N as ChevronRight, O as Command, P as ChevronDown, S as Folder, T as EllipsisVertical, _ as ListEnd, a as Square, b as GitBranch, c as Settings2, d as PanelLeft, f as PanelLeftOpen, g as ListStart, h as OctagonX, j as ChevronsDownUp, l as Search, n as WandSparkles, o as SquarePen, p as PanelLeftClose, r as Upload, s as SquareArrowOutUpRight, t as X, u as PanelRight, w as Ellipsis, x as GitCommitHorizontal, y as ImagePlus, z as ArrowLeft } from "../_libs/lucide-react.mjs";
5
- import { $ as readStoredCenterMessages, A as TooltipTrigger, C as THEME_COLOR_MODE_STORAGE_KEY, D as Tooltip$1, E as TitleTooltip, F as cn, G as normalizePromptImage, H as flattenTree, J as normalizeThemeColorMode, K as normalizeSessionSelectionKeys, L as createContextId, M as appliedThemeClass, O as TooltipContent, P as buildItemsFromSync, Q as readStoredAutoScrollEnabled, R as createInitialSessionState, S as THEME_COLOR_MODES, T as THEME_STORAGE_KEY, U as getSessionTitle, X as previewUrlForImage, Y as normalizeThemeFamily, Z as promptDraftKey, _ as Route, _t as themeColorModeLabel, a as COLLAPSED_DIRECTORIES_STORAGE_KEY, at as readStoredRecentDirectories, b as SIDEBAR_DIRECTORIES_STORAGE_KEY, c as Kbd, ct as readStoredSessionDoneSoundEnabled, d as RECENT_DIRECTORIES_STORAGE_KEY, dt as readStoredThemeColorMode, et as readStoredCollapsedDirectories, f as RIGHT_SIDEBAR_ACTIVE_TAB_STORAGE_KEY, ft as rememberStoredPromptDraft, g as RIGHT_SIDEBAR_WIDTHS_STORAGE_KEY, gt as sessionListEntryKey, h as RIGHT_SIDEBAR_OPEN_STORAGE_KEY, ht as sameContextUsage, i as CENTER_MESSAGES_STORAGE_KEY, it as readStoredPromptDraft, j as VIEWER_CONTEXT_STORAGE_KEY, l as KeyboardShortcutContent, lt as readStoredSidebarDirectories, m as RIGHT_SIDEBAR_HISTORY_HEIGHT_STORAGE_KEY, mt as safeLocalStorageSetItem, n as APPLIED_THEME_STORAGE_KEY, nt as readStoredHideToolBlocks, o as DRAFT_DIRECTORY_STORAGE_KEY, ot as readStoredRightSidebarOpen, p as RIGHT_SIDEBAR_FILE_TREE_WIDTH_STORAGE_KEY, pt as safeLocalStorageGetItem, q as normalizeStoredDirectoryList, r as AUTO_SCROLL_ENABLED_STORAGE_KEY, rt as readStoredPinnedSessionKeys, s as HIDE_TOOL_BLOCKS_STORAGE_KEY, st as readStoredSessionDoneDesktopNotificationsEnabled, tt as readStoredDraftDirectory, u as PINNED_SESSIONS_STORAGE_KEY, ut as readStoredTheme, v as SESSION_DONE_DESKTOP_NOTIFICATIONS_ENABLED_STORAGE_KEY, vt as themeFamilyLabel, w as THEME_FAMILIES, x as Spinner, y as SESSION_DONE_SOUND_ENABLED_STORAGE_KEY, yt as thinkingSummaryText } from "./routes-BpP7WwMR.mjs";
5
+ import { $ as readStoredCenterMessages, A as TooltipTrigger, C as THEME_COLOR_MODE_STORAGE_KEY, D as Tooltip$1, E as TitleTooltip, F as cn, G as normalizePromptImage, H as flattenTree, J as normalizeThemeColorMode, K as normalizeSessionSelectionKeys, L as createContextId, M as appliedThemeClass, O as TooltipContent, P as buildItemsFromSync, Q as readStoredAutoScrollEnabled, R as createInitialSessionState, S as THEME_COLOR_MODES, T as THEME_STORAGE_KEY, U as getSessionTitle, X as previewUrlForImage, Y as normalizeThemeFamily, Z as promptDraftKey, _ as Route, _t as themeColorModeLabel, a as COLLAPSED_DIRECTORIES_STORAGE_KEY, at as readStoredRecentDirectories, b as SIDEBAR_DIRECTORIES_STORAGE_KEY, c as Kbd, ct as readStoredSessionDoneSoundEnabled, d as RECENT_DIRECTORIES_STORAGE_KEY, dt as readStoredThemeColorMode, et as readStoredCollapsedDirectories, f as RIGHT_SIDEBAR_ACTIVE_TAB_STORAGE_KEY, ft as rememberStoredPromptDraft, g as RIGHT_SIDEBAR_WIDTHS_STORAGE_KEY, gt as sessionListEntryKey, h as RIGHT_SIDEBAR_OPEN_STORAGE_KEY, ht as sameContextUsage, i as CENTER_MESSAGES_STORAGE_KEY, it as readStoredPromptDraft, j as VIEWER_CONTEXT_STORAGE_KEY, l as KeyboardShortcutContent, lt as readStoredSidebarDirectories, m as RIGHT_SIDEBAR_HISTORY_HEIGHT_STORAGE_KEY, mt as safeLocalStorageSetItem, n as APPLIED_THEME_STORAGE_KEY, nt as readStoredHideToolBlocks, o as DRAFT_DIRECTORY_STORAGE_KEY, ot as readStoredRightSidebarOpen, p as RIGHT_SIDEBAR_FILE_TREE_WIDTH_STORAGE_KEY, pt as safeLocalStorageGetItem, q as normalizeStoredDirectoryList, r as AUTO_SCROLL_ENABLED_STORAGE_KEY, rt as readStoredPinnedSessionKeys, s as HIDE_TOOL_BLOCKS_STORAGE_KEY, st as readStoredSessionDoneDesktopNotificationsEnabled, tt as readStoredDraftDirectory, u as PINNED_SESSIONS_STORAGE_KEY, ut as readStoredTheme, v as SESSION_DONE_DESKTOP_NOTIFICATIONS_ENABLED_STORAGE_KEY, vt as themeFamilyLabel, w as THEME_FAMILIES, x as Spinner, y as SESSION_DONE_SOUND_ENABLED_STORAGE_KEY, yt as thinkingSummaryText } from "./routes-Qk9CE25v.mjs";
6
6
  import { i as useQuery, n as useIsMutating, o as useQueryClient, r as useIsFetching, t as useMutation } from "../_libs/tanstack__react-query.mjs";
7
7
  import { t as useHotkeys } from "../_libs/tanstack__react-hotkeys.mjs";
8
8
  import { a as matchesKeyboardEvent, i as batch, o as formatForDisplay, r as createStore } from "../_libs/@tanstack/hotkeys+[...].mjs";
@@ -22,7 +22,7 @@ import { t as remarkGfm } from "../_libs/remark-gfm.mjs";
22
22
  import { a as getBuiltInSpriteSheet, i as getBuiltInFileIconColor, n as FileTree, r as createFileTreeIconResolver, t as useFileTree } from "../_libs/@pierre/trees+[...].mjs";
23
23
  import { a as closestCenter, d as useSensors, f as CSS$1, i as PointerSensor, n as DragOverlay, t as DndContext, u as useSensor } from "../_libs/@dnd-kit/core+[...].mjs";
24
24
  import { a as verticalListSortingStrategy, i as useSortable, n as arrayMove, r as horizontalListSortingStrategy, t as SortableContext } from "../_libs/dnd-kit__sortable.mjs";
25
- //#region node_modules/.nitro/vite/services/ssr/assets/routes-BZ9cdmtL.js
25
+ //#region node_modules/.nitro/vite/services/ssr/assets/routes-C5zYkwvE.js
26
26
  var import_react = /* @__PURE__ */ __toESM(require_react());
27
27
  var import_jsx_runtime = require_jsx_runtime();
28
28
  var MOBILE_BREAKPOINT = 768;
@@ -2815,12 +2815,13 @@ function settingsCommandFilter(value, search, keywords) {
2815
2815
  if (!query) return 1;
2816
2816
  return [value, ...keywords ?? []].join(" ").toLowerCase().includes(query) ? 1 : 0;
2817
2817
  }
2818
- function AppShellSettingsDialog({ open, onOpenChange, currentTheme, currentThemeColorMode, onThemeChange, onThemeColorModeChange, systemTheme, hideThinkingBlocks, onHideThinkingBlocksChange, hideToolBlocks, onHideToolBlocksChange, centerMessages, onCenterMessagesChange, autoScrollEnabled, onAutoScrollEnabledChange, sessionDoneSoundEnabled, onSessionDoneSoundEnabledChange, sessionDoneDesktopNotificationsEnabled, onSessionDoneDesktopNotificationsEnabledChange, desktopNotificationPermission, onLoginProviders, onLogoutProviders }) {
2818
+ function AppShellSettingsDialog({ open, onOpenChange, currentTheme, currentThemeColorMode, onThemeChange, onThemeColorModeChange, onThemePreviewChange, systemTheme, hideThinkingBlocks, onHideThinkingBlocksChange, hideToolBlocks, onHideToolBlocksChange, centerMessages, onCenterMessagesChange, autoScrollEnabled, onAutoScrollEnabledChange, sessionDoneSoundEnabled, onSessionDoneSoundEnabledChange, sessionDoneDesktopNotificationsEnabled, onSessionDoneDesktopNotificationsEnabledChange, desktopNotificationPermission, onLoginProviders, onLogoutProviders }) {
2819
2819
  const [query, setQuery] = import_react.useState("");
2820
2820
  const [themeQuery, setThemeQuery] = import_react.useState("");
2821
2821
  const [stage, setStage] = import_react.useState("browse");
2822
2822
  const [selectedCommandId, setSelectedCommandId] = import_react.useState("theme");
2823
2823
  const [selectedTheme, setSelectedTheme] = import_react.useState(currentTheme);
2824
+ const themePreviewInitialRef = import_react.useRef(currentTheme);
2824
2825
  const isMobile = useIsMobile();
2825
2826
  const desktopNotificationDescription = desktopNotificationPermissionLabel(desktopNotificationPermission);
2826
2827
  const settingGroups = [
@@ -2837,7 +2838,11 @@ function AppShellSettingsDialog({ open, onOpenChange, currentTheme, currentTheme
2837
2838
  "default",
2838
2839
  "flexoki"
2839
2840
  ],
2840
- onSelect: () => setStage("theme")
2841
+ onSelect: () => {
2842
+ themePreviewInitialRef.current = currentTheme;
2843
+ setSelectedTheme(currentTheme);
2844
+ setStage("theme");
2845
+ }
2841
2846
  }, {
2842
2847
  id: "theme-color-mode",
2843
2848
  title: "Light/dark mode",
@@ -2974,15 +2979,16 @@ function AppShellSettingsDialog({ open, onOpenChange, currentTheme, currentTheme
2974
2979
  }
2975
2980
  ];
2976
2981
  import_react.useEffect(() => {
2977
- if (!open) {
2978
- if (query) setQuery("");
2979
- if (themeQuery) setThemeQuery("");
2980
- setStage("browse");
2981
- return;
2982
- }
2982
+ if (open) return;
2983
+ if (stage === "theme") onThemePreviewChange(themePreviewInitialRef.current);
2984
+ if (query) setQuery("");
2985
+ if (themeQuery) setThemeQuery("");
2986
+ setStage("browse");
2983
2987
  }, [
2988
+ onThemePreviewChange,
2984
2989
  open,
2985
2990
  query,
2991
+ stage,
2986
2992
  themeQuery
2987
2993
  ]);
2988
2994
  import_react.useEffect(() => {
@@ -2993,10 +2999,22 @@ function AppShellSettingsDialog({ open, onOpenChange, currentTheme, currentTheme
2993
2999
  console.error(error);
2994
3000
  });
2995
3001
  };
3002
+ const handleThemePreview = (theme) => {
3003
+ if (!THEME_OPTIONS.includes(theme)) return;
3004
+ setSelectedTheme(theme);
3005
+ onThemePreviewChange(theme);
3006
+ };
2996
3007
  const handleThemeSelect = (theme) => {
2997
3008
  setSelectedTheme(theme);
3009
+ themePreviewInitialRef.current = theme;
2998
3010
  onThemeChange(theme);
2999
3011
  };
3012
+ const cancelThemePreview = () => {
3013
+ const initialTheme = themePreviewInitialRef.current;
3014
+ setSelectedTheme(initialTheme);
3015
+ onThemePreviewChange(initialTheme);
3016
+ setStage("browse");
3017
+ };
3000
3018
  const settingsBrowseBody = /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Command$1, {
3001
3019
  shouldFilter: true,
3002
3020
  filter: settingsCommandFilter,
@@ -3049,7 +3067,7 @@ function AppShellSettingsDialog({ open, onOpenChange, currentTheme, currentTheme
3049
3067
  if (event.key !== "Escape") return;
3050
3068
  event.preventDefault();
3051
3069
  event.stopPropagation();
3052
- setStage("browse");
3070
+ cancelThemePreview();
3053
3071
  },
3054
3072
  children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
3055
3073
  className: "flex items-center gap-2 border-b border-border/70 px-3 py-2",
@@ -3057,7 +3075,7 @@ function AppShellSettingsDialog({ open, onOpenChange, currentTheme, currentTheme
3057
3075
  type: "button",
3058
3076
  variant: "ghost",
3059
3077
  size: "icon-sm",
3060
- onClick: () => setStage("browse"),
3078
+ onClick: cancelThemePreview,
3061
3079
  "aria-label": "Back to settings",
3062
3080
  children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ArrowLeft, {})
3063
3081
  }), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
@@ -3074,7 +3092,7 @@ function AppShellSettingsDialog({ open, onOpenChange, currentTheme, currentTheme
3074
3092
  shouldFilter: true,
3075
3093
  loop: true,
3076
3094
  value: selectedTheme,
3077
- onValueChange: (value) => setSelectedTheme(value),
3095
+ onValueChange: (value) => handleThemePreview(value),
3078
3096
  className: "min-h-0 flex-1 rounded-none!",
3079
3097
  children: [
3080
3098
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CommandInput, {
@@ -3091,6 +3109,7 @@ function AppShellSettingsDialog({ open, onOpenChange, currentTheme, currentTheme
3091
3109
  children: THEME_OPTIONS.map((theme) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CommandItem, {
3092
3110
  value: theme,
3093
3111
  keywords: themeKeywords(theme),
3112
+ onMouseEnter: () => handleThemePreview(theme),
3094
3113
  onSelect: () => handleThemeSelect(theme),
3095
3114
  "data-checked": theme === currentTheme ? true : void 0,
3096
3115
  className: "items-start py-2",
@@ -7155,7 +7174,7 @@ var AppShellTreeDialogHost = import_react.memo(function AppShellTreeDialogHost({
7155
7174
  activeSessionStreaming: useSelector(sessionStore, (sessionState) => sessionState.streaming)
7156
7175
  });
7157
7176
  });
7158
- var AppShellSettingsDialogHost = import_react.memo(function AppShellSettingsDialogHost({ authDialogRef, currentTheme, currentThemeColorMode, displaySettingsStore, notificationStore, onAutoScrollEnabledChange, onCenterMessagesChange, onHideThinkingBlocksChange, onHideToolBlocksChange, onSessionDoneDesktopNotificationsEnabledChange, onSessionDoneSoundEnabledChange, onThemeChange, onThemeColorModeChange, sessionStore, settingsDialogRef, settingsOpenRef, systemTheme }) {
7177
+ var AppShellSettingsDialogHost = import_react.memo(function AppShellSettingsDialogHost({ authDialogRef, currentTheme, currentThemeColorMode, displaySettingsStore, notificationStore, onAutoScrollEnabledChange, onCenterMessagesChange, onHideThinkingBlocksChange, onHideToolBlocksChange, onSessionDoneDesktopNotificationsEnabledChange, onSessionDoneSoundEnabledChange, onThemeChange, onThemeColorModeChange, onThemePreviewChange, sessionStore, settingsDialogRef, settingsOpenRef, systemTheme }) {
7159
7178
  const hideThinkingBlocks = useSelector(sessionStore, (sessionState) => sessionState.hideThinkingBlock);
7160
7179
  const { autoScrollEnabled, centerMessages, hideToolBlocks } = useSelector(displaySettingsStore);
7161
7180
  const { desktopNotificationPermission, sessionDoneDesktopNotificationsEnabled, sessionDoneSoundEnabled } = useSelector(notificationStore, (state) => ({
@@ -7174,6 +7193,7 @@ var AppShellSettingsDialogHost = import_react.memo(function AppShellSettingsDial
7174
7193
  currentThemeColorMode,
7175
7194
  onThemeChange,
7176
7195
  onThemeColorModeChange,
7196
+ onThemePreviewChange,
7177
7197
  systemTheme,
7178
7198
  hideThinkingBlocks,
7179
7199
  onHideThinkingBlocksChange,
@@ -7201,7 +7221,7 @@ var AppShellUiRequestDialogHost = import_react.memo(function AppShellUiRequestDi
7201
7221
  onAuthBack: () => authDialogRef.current?.open("login")
7202
7222
  });
7203
7223
  });
7204
- var AppShellFloatingControllers = import_react.memo(function AppShellFloatingControllers({ activeSessionId, addDirectoryDialogRef, addDirectoryOpenRef, addDirectoryPath, baseSidebarDirectories, commandPaletteCommandsRef, commandPaletteOpenRef, commandPaletteRef, currentSessionQueryScope, currentTheme, currentThemeColorMode, authDialogRef, authOpenRef, deleteDialogRef, deleteOpenRef, deleteSessions, deleteOldDirectorySessionsDialogRef, deleteOldDirectorySessionsOpenRef, notificationStore, forkDialogRef, forkOpenRef, gitCommitDialogRef, gitCommitOpenRef, displaySettingsStore, knownDirectories, onAutoScrollEnabledChange, onCenterMessagesChange, onHideThinkingBlocksChange, onHideToolBlocksChange, onSessionDoneDesktopNotificationsEnabledChange, onSessionDoneSoundEnabledChange, onSessionDialogSelect, onThemeChange, onThemeColorModeChange, recentDirectoriesStore, renameDialogRef, renameOpenRef, renameSessionPath, sessionCwd, sessionsDialogDirectory, sessionsDialogRef, sessionsOpenRef, sessionStore, settingsDialogRef, settingsOpenRef, sidebarStore, treeDialogRef, treeOpenRef, uiRequestDialogRef, uiRequestOpenRef, viewerContextId, systemTheme }) {
7224
+ var AppShellFloatingControllers = import_react.memo(function AppShellFloatingControllers({ activeSessionId, addDirectoryDialogRef, addDirectoryOpenRef, addDirectoryPath, baseSidebarDirectories, commandPaletteCommandsRef, commandPaletteOpenRef, commandPaletteRef, currentSessionQueryScope, currentTheme, currentThemeColorMode, authDialogRef, authOpenRef, deleteDialogRef, deleteOpenRef, deleteSessions, deleteOldDirectorySessionsDialogRef, deleteOldDirectorySessionsOpenRef, notificationStore, forkDialogRef, forkOpenRef, gitCommitDialogRef, gitCommitOpenRef, displaySettingsStore, knownDirectories, onAutoScrollEnabledChange, onCenterMessagesChange, onHideThinkingBlocksChange, onHideToolBlocksChange, onSessionDoneDesktopNotificationsEnabledChange, onSessionDoneSoundEnabledChange, onSessionDialogSelect, onThemeChange, onThemeColorModeChange, onThemePreviewChange, recentDirectoriesStore, renameDialogRef, renameOpenRef, renameSessionPath, sessionCwd, sessionsDialogDirectory, sessionsDialogRef, sessionsOpenRef, sessionStore, settingsDialogRef, settingsOpenRef, sidebarStore, treeDialogRef, treeOpenRef, uiRequestDialogRef, uiRequestOpenRef, viewerContextId, systemTheme }) {
7205
7225
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
7206
7226
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(AppShellCommandPaletteHost, {
7207
7227
  commandPaletteCommandsRef,
@@ -7288,6 +7308,7 @@ var AppShellFloatingControllers = import_react.memo(function AppShellFloatingCon
7288
7308
  onSessionDoneSoundEnabledChange,
7289
7309
  onThemeChange,
7290
7310
  onThemeColorModeChange,
7311
+ onThemePreviewChange,
7291
7312
  sessionStore,
7292
7313
  settingsDialogRef,
7293
7314
  settingsOpenRef,
@@ -19061,6 +19082,9 @@ function usePicoTheme() {
19061
19082
  setTheme(appliedTheme);
19062
19083
  safeLocalStorageSetItem(APPLIED_THEME_STORAGE_KEY, appliedTheme);
19063
19084
  }, [appliedTheme, setTheme]);
19085
+ const previewThemeFamily = (value) => {
19086
+ setThemeFamilyState(normalizeThemeFamily(value));
19087
+ };
19064
19088
  const setThemeFamily = (value) => {
19065
19089
  const nextTheme = normalizeThemeFamily(value);
19066
19090
  setThemeFamilyState(nextTheme);
@@ -19074,6 +19098,7 @@ function usePicoTheme() {
19074
19098
  return {
19075
19099
  appliedTheme,
19076
19100
  colorMode,
19101
+ previewThemeFamily,
19077
19102
  setColorMode,
19078
19103
  setThemeFamily,
19079
19104
  systemTheme,
@@ -20742,7 +20767,7 @@ var AppShellSessionWorkspace = import_react.forwardRef(function AppShellSessionW
20742
20767
  conversationItemsStore.setItems(nextItems);
20743
20768
  setSessionState(nextState);
20744
20769
  }, [conversationItemsStore]);
20745
- const { colorMode: currentThemeColorMode, setColorMode, setThemeFamily, systemTheme, themeFamily: currentTheme } = usePicoTheme();
20770
+ const { colorMode: currentThemeColorMode, previewThemeFamily, setColorMode, setThemeFamily, systemTheme, themeFamily: currentTheme } = usePicoTheme();
20746
20771
  const { initialLoadingSessionId, loadingSessionId } = useSelector(appUiStore, (state) => ({
20747
20772
  initialLoadingSessionId: state.initialLoadingSessionId,
20748
20773
  loadingSessionId: state.loadingSessionId
@@ -21659,6 +21684,9 @@ var AppShellSessionWorkspace = import_react.forwardRef(function AppShellSessionW
21659
21684
  const handleThemeChange = (value) => {
21660
21685
  setThemeFamily(value);
21661
21686
  };
21687
+ const handleThemePreviewChange = (value) => {
21688
+ previewThemeFamily(value);
21689
+ };
21662
21690
  const handleThemeColorModeChange = (value) => {
21663
21691
  setColorMode(value);
21664
21692
  };
@@ -22332,6 +22360,7 @@ var AppShellSessionWorkspace = import_react.forwardRef(function AppShellSessionW
22332
22360
  onSessionDialogSelect: handleSelectSession,
22333
22361
  onThemeChange: handleThemeChange,
22334
22362
  onThemeColorModeChange: handleThemeColorModeChange,
22363
+ onThemePreviewChange: handleThemePreviewChange,
22335
22364
  systemTheme,
22336
22365
  recentDirectoriesStore,
22337
22366
  renameDialogRef,
@@ -5,7 +5,7 @@ import { n as clsx } from "../_libs/class-variance-authority+clsx.mjs";
5
5
  import { t as twMerge } from "../_libs/tailwind-merge.mjs";
6
6
  import { B as ArrowDown, I as ArrowUp, M as ChevronUp, O as Command, R as ArrowRight, V as ArrowBigUp, m as Option, z as ArrowLeft } from "../_libs/lucide-react.mjs";
7
7
  import { n as string, t as object } from "../_libs/zod.mjs";
8
- //#region node_modules/.nitro/vite/services/ssr/assets/routes-BpP7WwMR.js
8
+ //#region node_modules/.nitro/vite/services/ssr/assets/routes-Qk9CE25v.js
9
9
  var import_react = /* @__PURE__ */ __toESM(require_react());
10
10
  var import_jsx_runtime = require_jsx_runtime();
11
11
  function cn(...inputs) {
@@ -1324,7 +1324,7 @@ function getSessionTitle(summary) {
1324
1324
  if (summary?.name?.trim()) return summary.name.trim();
1325
1325
  return "New session";
1326
1326
  }
1327
- var $$splitComponentImporter = () => import("./routes-BZ9cdmtL.mjs");
1327
+ var $$splitComponentImporter = () => import("./routes-C5zYkwvE.mjs");
1328
1328
  var indexSearchSchema = object({ session: string().optional() });
1329
1329
  var Route = createFileRoute("/")({
1330
1330
  validateSearch: indexSearchSchema,
@@ -3813,7 +3813,7 @@ var defaultSerovalPlugins = [
3813
3813
  * the dev styles URL for route-scoped CSS collection.
3814
3814
  */
3815
3815
  async function getStartManifest(matchedRoutes) {
3816
- const { tsrStartManifest } = await import("../_tanstack-start-manifest_v-ByPcMc-9.mjs");
3816
+ const { tsrStartManifest } = await import("../_tanstack-start-manifest_v-Bp-gg9fI.mjs");
3817
3817
  const startManifest = tsrStartManifest();
3818
3818
  const rootRoute = startManifest.routes[rootRouteId] = startManifest.routes["__root__"] || {};
3819
3819
  rootRoute.assets = rootRoute.assets || [];
@@ -4799,7 +4799,7 @@ var baseManifestPromise;
4799
4799
  var cachedFinalManifestPromise;
4800
4800
  async function loadEntries() {
4801
4801
  const [routerEntry, startEntry, pluginAdapters] = await Promise.all([
4802
- import("./router-Bc19lQoF.mjs"),
4802
+ import("./router-Bw2oDzya.mjs"),
4803
4803
  import("./start-Captdpmb.mjs"),
4804
4804
  import("../__23tanstack-start-plugin-adapters-y_fshQDY.mjs")
4805
4805
  ]);
@@ -1,4 +1,4 @@
1
- //#region node_modules/.nitro/vite/services/ssr/assets/_tanstack-start-manifest_v-ByPcMc-9.js
1
+ //#region node_modules/.nitro/vite/services/ssr/assets/_tanstack-start-manifest_v-Bp-gg9fI.js
2
2
  var tsrStartManifest = () => ({
3
3
  routes: {
4
4
  __root__: {
@@ -50,16 +50,16 @@ var tsrStartManifest = () => ({
50
50
  "/api/ui/$id"
51
51
  ],
52
52
  assets: void 0,
53
- preloads: ["/assets/index-relf5WuY.js", "/assets/rolldown-runtime-S-ySWqyJ.js"]
53
+ preloads: ["/assets/index-BHnoJmIv.js", "/assets/rolldown-runtime-S-ySWqyJ.js"]
54
54
  },
55
55
  "/": {
56
56
  filePath: "/home/runner/work/pico/pico/src/routes/index.tsx",
57
57
  children: void 0,
58
58
  assets: void 0,
59
- preloads: ["/assets/routes-D_oJExAc.js"]
59
+ preloads: ["/assets/routes-BfJLj6KG.js"]
60
60
  }
61
61
  },
62
- clientEntry: "/assets/index-relf5WuY.js"
62
+ clientEntry: "/assets/index-BHnoJmIv.js"
63
63
  });
64
64
  //#endregion
65
65
  export { tsrStartManifest };