diff --git a/apps/desktop2/src/components/calendar.tsx b/apps/desktop2/src/components/calendar.tsx deleted file mode 100644 index b06b155528..0000000000 --- a/apps/desktop2/src/components/calendar.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import * as persisted from "../tinybase/store/persisted"; - -export function Calendar() { - const events = persisted.UI.useSliceIds(persisted.INDEXES.eventsByMonth, persisted.STORE_ID); - - return ( -
-
{JSON.stringify(events, null, 2)}
-
- ); -} diff --git a/apps/desktop2/src/components/main/left-sidebar.tsx b/apps/desktop2/src/components/main/left-sidebar.tsx index 141515b2c4..74e548c29c 100644 --- a/apps/desktop2/src/components/main/left-sidebar.tsx +++ b/apps/desktop2/src/components/main/left-sidebar.tsx @@ -42,7 +42,11 @@ function TimelineView() { return (
{allSessionIds?.map((sessionId) => ( - + ))}
); diff --git a/apps/desktop2/src/components/main/main-area.tsx b/apps/desktop2/src/components/main/main-area.tsx index a457458238..d2cbc0c25b 100644 --- a/apps/desktop2/src/components/main/main-area.tsx +++ b/apps/desktop2/src/components/main/main-area.tsx @@ -1,24 +1,26 @@ import { useNavigate, useSearch } from "@tanstack/react-router"; import { clsx } from "clsx"; +import { addMonths, eachDayOfInterval, endOfMonth, format, getDay, startOfMonth } from "date-fns"; import { - Building2Icon, CalendarIcon, + ChevronLeftIcon, + ChevronRightIcon, CogIcon, PanelLeftOpenIcon, PencilIcon, StickyNoteIcon, - UserIcon, } from "lucide-react"; import { commands as windowsCommands } from "@hypr/plugin-windows"; import NoteEditor from "@hypr/tiptap/editor"; import { ChatPanelButton } from "@hypr/ui/components/block/chat-panel-button"; import TitleInput from "@hypr/ui/components/block/title-input"; +import { Button } from "@hypr/ui/components/ui/button"; import { ScrollArea, ScrollBar } from "@hypr/ui/components/ui/scroll-area"; import { useLeftSidebar, useRightPanel } from "@hypr/utils/contexts"; import { useTabs } from "../../hooks/useTabs"; import * as persisted from "../../tinybase/store/persisted"; -import { Tab } from "../../types"; +import { rowIdfromTab, Tab, uniqueIdfromTab } from "../../types"; export function MainContent({ tabs }: { tabs: Tab[] }) { const activeTab = tabs.find((t) => t.active)!; @@ -34,6 +36,8 @@ export function MainContent({ tabs }: { tabs: Tab[] }) { export function MainHeader() { const search = useSearch({ strict: false }); const navigate = useNavigate(); + + const { openNew } = useTabs(); const { isExpanded: isRightPanelExpanded, togglePanel: toggleRightPanel } = useRightPanel(); const { isExpanded: isLeftPanelExpanded, togglePanel: toggleLeftPanel } = useLeftSidebar(); @@ -77,6 +81,10 @@ export function MainHeader() { onClick={handleClickNewNote} className="cursor-pointer h-5 w-5 text-muted-foreground hover:text-foreground" /> + openNew({ type: "calendars", month: new Date(), active: true })} + className="cursor-pointer h-5 w-5 text-muted-foreground hover:text-foreground" + />
- {tabs.map((tab) => ( - - ))} + {tabs.map((tab) => )}
@@ -109,15 +109,66 @@ function TabsHeader({ tabs }: { tabs: Tab[] }) { } function TabItem( - { tab, active, handleSelect, handleClose }: { + { tab, handleClose, handleSelect }: { tab: Tab; handleClose: (tab: Tab) => void; handleSelect: (tab: Tab) => void }, +) { + if (tab.type === "sessions") { + return ; + } + + if (tab.type === "calendars") { + return ; + } + + return null; +} + +function TabItemNote( + { tab, handleClose, handleSelect }: { tab: Tab; - active: boolean; + handleClose: (tab: Tab) => void; handleSelect: (tab: Tab) => void; + }, +) { + const title = persisted.UI.useCell("sessions", rowIdfromTab(tab), "title", persisted.STORE_ID); + + return ( + } + title={title ?? ""} + active={tab.active} + handleClose={() => handleClose(tab)} + handleSelect={() => handleSelect(tab)} + /> + ); +} + +function TabItemCalendar( + { tab, handleClose, handleSelect }: { + tab: Tab; handleClose: (tab: Tab) => void; + handleSelect: (tab: Tab) => void; }, ) { - const title = persisted.UI.useCell("sessions", tab.id, "title", persisted.STORE_ID); + return ( + } + title={"Calendar"} + active={tab.active} + handleClose={() => handleClose(tab)} + handleSelect={() => handleSelect(tab)} + /> + ); +} +function TabItemBase( + { icon, title, active, handleClose, handleSelect }: { + icon: React.ReactNode; + title: string; + active: boolean; + handleClose: () => void; + handleSelect: () => void; + }, +) { return (
{active && ( + + + + +
+ +
+ {weekDays.map((day) => ( +
+ {day} +
+ ))} + {Array.from({ length: startDayOfWeek }).map((_, i) =>
)} + {days.map((day) => )} +
+
+ ); +} + +function TabContentCalendarDay({ day }: { day: string }) { + const eventIds = persisted.UI.useSliceRowIds( + persisted.INDEXES.eventsByDate, + day, + persisted.STORE_ID, + ); + + const dayNumber = format(new Date(day), "d"); + const isToday = format(new Date(), "yyyy-MM-dd") === day; + + return ( +
+
+ {dayNumber} +
+
+ {eventIds?.map((rowId) => )} +
+
+ ); +} + +function TabContentCalendarDayEvent({ rowId }: { rowId: string }) { + const event = persisted.UI.useRow("events", rowId, persisted.STORE_ID); + return
{event.title}
; +} diff --git a/apps/desktop2/src/hooks/useTabs.ts b/apps/desktop2/src/hooks/useTabs.ts index b73338d036..5663f1d907 100644 --- a/apps/desktop2/src/hooks/useTabs.ts +++ b/apps/desktop2/src/hooks/useTabs.ts @@ -1,5 +1,5 @@ import { useNavigate, useSearch } from "@tanstack/react-router"; -import { type Tab } from "../types"; +import { isSameTab, type Tab } from "../types"; export function useTabs() { const navigate = useNavigate(); @@ -12,15 +12,21 @@ export function useTabs() { throw navigate({ to: "/app/main", search: { - tabs: search.tabs.filter((t) => t.id !== newTab.id) + tabs: search.tabs.filter((t) => !isSameTab(t, newTab)) .map((t) => ({ ...t, active: false })) .concat([{ ...newTab, active: true }]), }, }); } else { const nextTabs = search.tabs - .filter((t) => t.id !== newTab.id) - .map((t, idx) => idx === existingTabIdx ? { ...newTab, active: true } : { ...t, active: false }); + .map((t, idx) => + idx === existingTabIdx + ? { ...newTab, active: true } + : isSameTab(t, newTab) + ? null + : { ...t, active: false } + ) + .filter((t): t is Tab => t !== null); navigate({ to: "/app/main", @@ -33,7 +39,7 @@ export function useTabs() { navigate({ to: "/app/main", search: { - tabs: search.tabs.filter((t) => t.id !== tab.id) + tabs: search.tabs.filter((t) => !isSameTab(t, tab)) .map((t) => ({ ...t, active: false })) .concat([{ ...tab, active: true }]), }, @@ -44,19 +50,19 @@ export function useTabs() { navigate({ to: "/app/main", search: { - tabs: search.tabs.map((t) => ({ ...t, active: t.id === tab.id })), + tabs: search.tabs.map((t) => ({ ...t, active: isSameTab(t, tab) })), }, }); }; const close = (tab: Tab) => { - const remainingTabs = search.tabs.filter((t) => t.id !== tab.id); + const remainingTabs = search.tabs.filter((t) => !isSameTab(t, tab)); if (remainingTabs.length === 0) { return navigate({ to: "/app/main", search: { tabs: [] } }); } - const closedTabIndex = search.tabs.findIndex((t) => t.id === tab.id); + const closedTabIndex = search.tabs.findIndex((t) => isSameTab(t, tab)); const nextActiveIndex = closedTabIndex < remainingTabs.length ? closedTabIndex : remainingTabs.length - 1; diff --git a/apps/desktop2/src/routes/app/main/_layout.index.tsx b/apps/desktop2/src/routes/app/main/_layout.index.tsx index 303aa59b45..35e96d4469 100644 --- a/apps/desktop2/src/routes/app/main/_layout.index.tsx +++ b/apps/desktop2/src/routes/app/main/_layout.index.tsx @@ -6,7 +6,7 @@ import { useLeftSidebar, useRightPanel } from "@hypr/utils/contexts"; import { Chat } from "../../../components/chat"; import { LeftSidebar } from "../../../components/main/left-sidebar"; import { MainContent, MainHeader } from "../../../components/main/main-area"; -import { tabSchema } from "../../../types"; +import { isSameTab, tabSchema } from "../../../types"; import { id } from "../../../utils"; const validateSearch = z.object({ @@ -53,7 +53,7 @@ export const Route = createFileRoute("/app/main/_layout/")({ if (activeTabs.length > 1) { const normalizedTabs = search.tabs.map((t, idx) => ({ ...t, - active: activeTabs.length === 0 ? idx === 0 : t.id === activeTabs[0].id, + active: activeTabs.length === 0 ? idx === 0 : isSameTab(t, activeTabs[0]), })); throw redirect({ diff --git a/apps/desktop2/src/tinybase/store/persisted.ts b/apps/desktop2/src/tinybase/store/persisted.ts index 14f6891d28..4d0523865d 100644 --- a/apps/desktop2/src/tinybase/store/persisted.ts +++ b/apps/desktop2/src/tinybase/store/persisted.ts @@ -1,3 +1,4 @@ +import { format } from "date-fns"; import * as _UI from "tinybase/ui-react/with-schemas"; import { createIndexes, @@ -364,17 +365,7 @@ export const StoreComponent = () => { "events", (getCell) => { const d = new Date(getCell("started_at")!); - return d.toISOString().slice(0, 10); - }, - "started_at", - (a, b) => a.localeCompare(b), - (a, b) => String(a).localeCompare(String(b)), - ).setIndexDefinition( - INDEXES.eventsByMonth, - "events", - (getCell) => { - const d = new Date(getCell("started_at")!); - return d.toISOString().slice(0, 7); + return format(d, "yyyy-MM-dd"); }, "started_at", (a, b) => a.localeCompare(b), @@ -421,7 +412,6 @@ export const INDEXES = { sessionsByFolder: "sessionsByFolder", eventsByCalendar: "eventsByCalendar", eventsByDate: "eventsByDate", - eventsByMonth: "eventsByMonth", tagsByName: "tagsByName", tagSessionsBySession: "tagSessionsBySession", tagSessionsByTag: "tagSessionsByTag", diff --git a/apps/desktop2/src/types/index.ts b/apps/desktop2/src/types/index.ts index fd295f4d93..582dcbe34a 100644 --- a/apps/desktop2/src/types/index.ts +++ b/apps/desktop2/src/types/index.ts @@ -14,7 +14,56 @@ export type Context = { }; export const tabSchema = z.union([ - z.object({ id: z.string(), type: z.enum(TABLES), active: z.boolean() }), + z.object({ + type: z.literal("sessions" satisfies typeof TABLES[number]), + active: z.boolean(), + id: z.string(), + }), + z.object({ + type: z.literal("humans" satisfies typeof TABLES[number]), + active: z.boolean(), + id: z.string(), + }), + z.object({ + type: z.literal("organizations" satisfies typeof TABLES[number]), + active: z.boolean(), + id: z.string(), + }), + z.object({ + type: z.literal("calendars" satisfies typeof TABLES[number]), + active: z.boolean(), + month: z.coerce.date(), + }), ]); export type Tab = z.infer; + +export const rowIdfromTab = (tab: Tab): string => { + switch (tab.type) { + case "sessions": + return tab.id; + case "humans": + return tab.id; + case "organizations": + return tab.id; + case "calendars": + throw new Error("invalid_resource"); + } +}; + +export const uniqueIdfromTab = (tab: Tab): string => { + switch (tab.type) { + case "sessions": + return `sessions-${tab.id}`; + case "humans": + return `humans-${tab.id}`; + case "organizations": + return `organizations-${tab.id}`; + case "calendars": + return `calendars-${tab.month.getFullYear()}-${tab.month.getMonth()}`; + } +}; + +export const isSameTab = (a: Tab, b: Tab) => { + return uniqueIdfromTab(a) === uniqueIdfromTab(b); +}; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 17031eb319..b15dea0b26 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -494,10 +494,10 @@ importers: version: 10.0.0 '@tanstack/react-router-devtools': specifier: ^1.132.41 - version: 1.132.41(@tanstack/react-router@1.132.41(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@tanstack/router-core@1.132.41)(@types/node@24.7.0)(csstype@3.1.3)(jiti@2.6.1)(lightningcss@1.30.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(solid-js@1.9.7)(sugarss@5.0.1(postcss@8.5.6))(terser@5.44.0)(tiny-invariant@1.3.3)(tsx@4.20.6)(yaml@2.8.1) + version: 1.132.41(@tanstack/react-router@1.132.41(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@tanstack/router-core@1.132.41)(@types/node@24.7.0)(csstype@3.1.3)(jiti@1.21.7)(lightningcss@1.30.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(solid-js@1.9.7)(sugarss@5.0.1(postcss@8.5.6))(terser@5.44.0)(tiny-invariant@1.3.3)(tsx@4.20.6)(yaml@2.8.1) '@tanstack/router-plugin': specifier: ^1.132.41 - version: 1.132.41(@tanstack/react-router@1.132.41(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(vite@7.1.9(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.1)(sugarss@5.0.1(postcss@8.5.6))(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + version: 1.132.41(@tanstack/react-router@1.132.41(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(vite@7.1.9(@types/node@24.7.0)(jiti@1.21.7)(lightningcss@1.30.1)(sugarss@5.0.1(postcss@8.5.6))(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) '@tauri-apps/cli': specifier: ^2.8.4 version: 2.8.4 @@ -512,7 +512,7 @@ importers: version: 19.2.0(@types/react@19.2.0) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@7.1.9(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.1)(sugarss@5.0.1(postcss@8.5.6))(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + version: 4.7.0(vite@7.1.9(@types/node@24.7.0)(jiti@1.21.7)(lightningcss@1.30.1)(sugarss@5.0.1(postcss@8.5.6))(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) autoprefixer: specifier: ^10.4.21 version: 10.4.21(postcss@8.5.6) @@ -527,10 +527,10 @@ importers: version: 5.8.3 vite: specifier: ^7.1.9 - version: 7.1.9(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.1)(sugarss@5.0.1(postcss@8.5.6))(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + version: 7.1.9(@types/node@24.7.0)(jiti@1.21.7)(lightningcss@1.30.1)(sugarss@5.0.1(postcss@8.5.6))(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) vitest: specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@24.7.0)(jiti@2.6.1)(jsdom@27.0.0(postcss@8.5.6))(lightningcss@1.30.1)(msw@2.10.4(@types/node@24.7.0)(typescript@5.8.3))(sugarss@5.0.1(postcss@8.5.6))(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + version: 3.2.4(@types/debug@4.1.12)(@types/node@24.7.0)(jiti@1.21.7)(jsdom@27.0.0(postcss@8.5.6))(lightningcss@1.30.1)(msw@2.10.4(@types/node@24.7.0)(typescript@5.8.3))(sugarss@5.0.1(postcss@8.5.6))(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) apps/pro: dependencies: @@ -13703,13 +13703,13 @@ snapshots: - tsx - yaml - '@tanstack/react-router-devtools@1.132.41(@tanstack/react-router@1.132.41(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@tanstack/router-core@1.132.41)(@types/node@24.7.0)(csstype@3.1.3)(jiti@2.6.1)(lightningcss@1.30.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(solid-js@1.9.7)(sugarss@5.0.1(postcss@8.5.6))(terser@5.44.0)(tiny-invariant@1.3.3)(tsx@4.20.6)(yaml@2.8.1)': + '@tanstack/react-router-devtools@1.132.41(@tanstack/react-router@1.132.41(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@tanstack/router-core@1.132.41)(@types/node@24.7.0)(csstype@3.1.3)(jiti@1.21.7)(lightningcss@1.30.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(solid-js@1.9.7)(sugarss@5.0.1(postcss@8.5.6))(terser@5.44.0)(tiny-invariant@1.3.3)(tsx@4.20.6)(yaml@2.8.1)': dependencies: '@tanstack/react-router': 1.132.41(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@tanstack/router-devtools-core': 1.132.41(@tanstack/router-core@1.132.41)(@types/node@24.7.0)(csstype@3.1.3)(jiti@2.6.1)(lightningcss@1.30.1)(solid-js@1.9.7)(sugarss@5.0.1(postcss@8.5.6))(terser@5.44.0)(tiny-invariant@1.3.3)(tsx@4.20.6)(yaml@2.8.1) + '@tanstack/router-devtools-core': 1.132.41(@tanstack/router-core@1.132.41)(@types/node@24.7.0)(csstype@3.1.3)(jiti@1.21.7)(lightningcss@1.30.1)(solid-js@1.9.7)(sugarss@5.0.1(postcss@8.5.6))(terser@5.44.0)(tiny-invariant@1.3.3)(tsx@4.20.6)(yaml@2.8.1) react: 19.2.0 react-dom: 19.2.0(react@19.2.0) - vite: 7.1.9(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.1)(sugarss@5.0.1(postcss@8.5.6))(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.1.9(@types/node@24.7.0)(jiti@1.21.7)(lightningcss@1.30.1)(sugarss@5.0.1(postcss@8.5.6))(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) transitivePeerDependencies: - '@tanstack/router-core' - '@types/node' @@ -13784,14 +13784,14 @@ snapshots: - tsx - yaml - '@tanstack/router-devtools-core@1.132.41(@tanstack/router-core@1.132.41)(@types/node@24.7.0)(csstype@3.1.3)(jiti@2.6.1)(lightningcss@1.30.1)(solid-js@1.9.7)(sugarss@5.0.1(postcss@8.5.6))(terser@5.44.0)(tiny-invariant@1.3.3)(tsx@4.20.6)(yaml@2.8.1)': + '@tanstack/router-devtools-core@1.132.41(@tanstack/router-core@1.132.41)(@types/node@24.7.0)(csstype@3.1.3)(jiti@1.21.7)(lightningcss@1.30.1)(solid-js@1.9.7)(sugarss@5.0.1(postcss@8.5.6))(terser@5.44.0)(tiny-invariant@1.3.3)(tsx@4.20.6)(yaml@2.8.1)': dependencies: '@tanstack/router-core': 1.132.41 clsx: 2.1.1 goober: 2.1.18(csstype@3.1.3) solid-js: 1.9.7 tiny-invariant: 1.3.3 - vite: 7.1.9(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.1)(sugarss@5.0.1(postcss@8.5.6))(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.1.9(@types/node@24.7.0)(jiti@1.21.7)(lightningcss@1.30.1)(sugarss@5.0.1(postcss@8.5.6))(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) optionalDependencies: csstype: 3.1.3 transitivePeerDependencies: @@ -13842,7 +13842,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@tanstack/router-plugin@1.132.41(@tanstack/react-router@1.132.41(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(vite@7.1.9(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.1)(sugarss@5.0.1(postcss@8.5.6))(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': + '@tanstack/router-plugin@1.132.41(@tanstack/react-router@1.132.41(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(vite@7.1.9(@types/node@24.7.0)(jiti@1.21.7)(lightningcss@1.30.1)(sugarss@5.0.1(postcss@8.5.6))(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': dependencies: '@babel/core': 7.28.4 '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.4) @@ -13860,7 +13860,7 @@ snapshots: zod: 3.25.76 optionalDependencies: '@tanstack/react-router': 1.132.41(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - vite: 7.1.9(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.1)(sugarss@5.0.1(postcss@8.5.6))(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.1.9(@types/node@24.7.0)(jiti@1.21.7)(lightningcss@1.30.1)(sugarss@5.0.1(postcss@8.5.6))(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) transitivePeerDependencies: - supports-color @@ -14615,7 +14615,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@vitejs/plugin-react@4.7.0(vite@7.1.9(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.1)(sugarss@5.0.1(postcss@8.5.6))(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': + '@vitejs/plugin-react@4.7.0(vite@7.1.9(@types/node@24.7.0)(jiti@1.21.7)(lightningcss@1.30.1)(sugarss@5.0.1(postcss@8.5.6))(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': dependencies: '@babel/core': 7.28.4 '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.4) @@ -14623,7 +14623,7 @@ snapshots: '@rolldown/pluginutils': 1.0.0-beta.27 '@types/babel__core': 7.20.5 react-refresh: 0.17.0 - vite: 7.1.9(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.1)(sugarss@5.0.1(postcss@8.5.6))(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.1.9(@types/node@24.7.0)(jiti@1.21.7)(lightningcss@1.30.1)(sugarss@5.0.1(postcss@8.5.6))(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) transitivePeerDependencies: - supports-color @@ -14644,14 +14644,14 @@ snapshots: msw: 2.10.4(@types/node@22.18.8)(typescript@5.9.3) vite: 7.1.9(@types/node@22.18.8)(jiti@2.6.1)(lightningcss@1.30.1)(sugarss@5.0.1(postcss@8.5.6))(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) - '@vitest/mocker@3.2.4(msw@2.10.4(@types/node@24.7.0)(typescript@5.8.3))(vite@7.1.9(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.1)(sugarss@5.0.1(postcss@8.5.6))(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': + '@vitest/mocker@3.2.4(msw@2.10.4(@types/node@24.7.0)(typescript@5.8.3))(vite@7.1.9(@types/node@24.7.0)(jiti@1.21.7)(lightningcss@1.30.1)(sugarss@5.0.1(postcss@8.5.6))(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 magic-string: 0.30.19 optionalDependencies: msw: 2.10.4(@types/node@24.7.0)(typescript@5.8.3) - vite: 7.1.9(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.1)(sugarss@5.0.1(postcss@8.5.6))(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.1.9(@types/node@24.7.0)(jiti@1.21.7)(lightningcss@1.30.1)(sugarss@5.0.1(postcss@8.5.6))(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) '@vitest/mocker@3.2.4(msw@2.10.4(@types/node@24.7.0)(typescript@5.9.3))(vite@7.1.9(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.1)(sugarss@5.0.1(postcss@8.5.6))(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': dependencies: @@ -21745,6 +21745,27 @@ snapshots: - tsx - yaml + vite-node@3.2.4(@types/node@24.7.0)(jiti@1.21.7)(lightningcss@1.30.1)(sugarss@5.0.1(postcss@8.5.6))(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): + dependencies: + cac: 6.7.14 + debug: 4.4.3(supports-color@8.1.1) + es-module-lexer: 1.7.0 + pathe: 2.0.3 + vite: 7.1.9(@types/node@24.7.0)(jiti@1.21.7)(lightningcss@1.30.1)(sugarss@5.0.1(postcss@8.5.6))(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + transitivePeerDependencies: + - '@types/node' + - jiti + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml + vite-node@3.2.4(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.1)(sugarss@5.0.1(postcss@8.5.6))(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): dependencies: cac: 6.7.14 @@ -21822,6 +21843,24 @@ snapshots: tsx: 4.20.6 yaml: 2.8.1 + vite@7.1.9(@types/node@24.7.0)(jiti@1.21.7)(lightningcss@1.30.1)(sugarss@5.0.1(postcss@8.5.6))(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): + dependencies: + esbuild: 0.25.10 + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + postcss: 8.5.6 + rollup: 4.52.4 + tinyglobby: 0.2.15 + optionalDependencies: + '@types/node': 24.7.0 + fsevents: 2.3.3 + jiti: 1.21.7 + lightningcss: 1.30.1 + sugarss: 5.0.1(postcss@8.5.6) + terser: 5.44.0 + tsx: 4.20.6 + yaml: 2.8.1 + vite@7.1.9(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.1)(sugarss@5.0.1(postcss@8.5.6))(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): dependencies: esbuild: 0.25.10 @@ -21883,11 +21922,11 @@ snapshots: - tsx - yaml - vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.7.0)(jiti@2.6.1)(jsdom@27.0.0(postcss@8.5.6))(lightningcss@1.30.1)(msw@2.10.4(@types/node@24.7.0)(typescript@5.8.3))(sugarss@5.0.1(postcss@8.5.6))(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): + vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.7.0)(jiti@1.21.7)(jsdom@27.0.0(postcss@8.5.6))(lightningcss@1.30.1)(msw@2.10.4(@types/node@24.7.0)(typescript@5.8.3))(sugarss@5.0.1(postcss@8.5.6))(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): dependencies: '@types/chai': 5.2.2 '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(msw@2.10.4(@types/node@24.7.0)(typescript@5.8.3))(vite@7.1.9(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.1)(sugarss@5.0.1(postcss@8.5.6))(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + '@vitest/mocker': 3.2.4(msw@2.10.4(@types/node@24.7.0)(typescript@5.8.3))(vite@7.1.9(@types/node@24.7.0)(jiti@1.21.7)(lightningcss@1.30.1)(sugarss@5.0.1(postcss@8.5.6))(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) '@vitest/pretty-format': 3.2.4 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 @@ -21905,8 +21944,8 @@ snapshots: tinyglobby: 0.2.15 tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 7.1.9(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.1)(sugarss@5.0.1(postcss@8.5.6))(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) - vite-node: 3.2.4(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.1)(sugarss@5.0.1(postcss@8.5.6))(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.1.9(@types/node@24.7.0)(jiti@1.21.7)(lightningcss@1.30.1)(sugarss@5.0.1(postcss@8.5.6))(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite-node: 3.2.4(@types/node@24.7.0)(jiti@1.21.7)(lightningcss@1.30.1)(sugarss@5.0.1(postcss@8.5.6))(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) why-is-node-running: 2.3.0 optionalDependencies: '@types/debug': 4.1.12