diff --git a/apps/desktop2/public/assets/hyprnote-pro.png b/apps/desktop2/public/assets/hyprnote-pro.png new file mode 100644 index 000000000..5381b4edd Binary files /dev/null and b/apps/desktop2/public/assets/hyprnote-pro.png differ diff --git a/apps/desktop2/public/assets/meet.png b/apps/desktop2/public/assets/meet.png new file mode 100644 index 000000000..35f282ec7 Binary files /dev/null and b/apps/desktop2/public/assets/meet.png differ diff --git a/apps/desktop2/public/assets/webex.png b/apps/desktop2/public/assets/webex.png new file mode 100644 index 000000000..d90249f28 Binary files /dev/null and b/apps/desktop2/public/assets/webex.png differ diff --git a/apps/desktop2/public/assets/zoom.png b/apps/desktop2/public/assets/zoom.png new file mode 100644 index 000000000..dd86fb66c Binary files /dev/null and b/apps/desktop2/public/assets/zoom.png differ diff --git a/apps/desktop2/src/components/main/body/index.tsx b/apps/desktop2/src/components/main/body/index.tsx index fa980d17a..e1d46c082 100644 --- a/apps/desktop2/src/components/main/body/index.tsx +++ b/apps/desktop2/src/components/main/body/index.tsx @@ -142,7 +142,7 @@ function Header({ tabs }: { tabs: Tab[] }) { onClick={handleNewNote} variant="ghost" size="icon" - className="text-color3" + className="text-neutral-500" > diff --git a/apps/desktop2/src/components/main/body/sessions/floating/listen.tsx b/apps/desktop2/src/components/main/body/sessions/floating/listen.tsx index 873347eb7..a4b31fef1 100644 --- a/apps/desktop2/src/components/main/body/sessions/floating/listen.tsx +++ b/apps/desktop2/src/components/main/body/sessions/floating/listen.tsx @@ -12,7 +12,8 @@ import { FloatingButton, formatTime } from "./shared"; type RemoteMeeting = | { type: "zoom"; url: string | null } - | { type: "google-meet"; url: string | null }; + | { type: "google-meet"; url: string | null } + | { type: "webex"; url: string | null }; export function ListenButton({ tab }: { tab: Extract }) { const { status, loading, stop } = useListener((state) => ({ @@ -56,7 +57,7 @@ function BeforeMeeingButton({ tab }: { tab: Extract } return ( } + icon={Zoom} > {isNarrow ? "Join & Listen" : "Join Zoom & Start listening"} @@ -67,17 +68,27 @@ function BeforeMeeingButton({ tab }: { tab: Extract } return ( } + icon={Google Meet} > {isNarrow ? "Join & Listen" : "Join Google Meet & Start listening"} ); } + if (remote?.type === "webex") { + return ( + } + > + {isNarrow ? "Join & Listen" : "Join Webex & Start listening"} + + ); + } + return ( } > Start listening diff --git a/apps/desktop2/src/components/main/body/sessions/floating/shared.tsx b/apps/desktop2/src/components/main/body/sessions/floating/shared.tsx index 8a10a6834..23d503d9b 100644 --- a/apps/desktop2/src/components/main/body/sessions/floating/shared.tsx +++ b/apps/desktop2/src/components/main/body/sessions/floating/shared.tsx @@ -1,7 +1,6 @@ -import { type ReactNode } from "react"; - import { Button } from "@hypr/ui/components/ui/button"; -import { cn } from "@hypr/ui/lib/utils"; + +import { type ReactNode } from "react"; export function FloatingButton({ icon, @@ -18,17 +17,12 @@ export function FloatingButton({ }) { return ( ); diff --git a/apps/desktop2/src/components/main/body/sessions/outer-header/folder.tsx b/apps/desktop2/src/components/main/body/sessions/outer-header/folder.tsx index 2d1e558dd..23a712876 100644 --- a/apps/desktop2/src/components/main/body/sessions/outer-header/folder.tsx +++ b/apps/desktop2/src/components/main/body/sessions/outer-header/folder.tsx @@ -33,7 +33,7 @@ export function FolderChain({ sessionId }: { sessionId: string }) { return ( - + {folderId && } {!folderId ? @@ -106,7 +106,7 @@ function RenderIfRootNotExist( <> - + Select folder @@ -143,7 +143,7 @@ function TitleInput({ title, handleChangeTitle }: { title: string; handleChangeT handleChangeTitle(e.target.value)} /> diff --git a/apps/desktop2/src/components/main/body/sessions/outer-header/other.tsx b/apps/desktop2/src/components/main/body/sessions/outer-header/other.tsx index 8e2116095..affdb8106 100644 --- a/apps/desktop2/src/components/main/body/sessions/outer-header/other.tsx +++ b/apps/desktop2/src/components/main/body/sessions/outer-header/other.tsx @@ -105,7 +105,7 @@ export function OthersButton(_: { sessionId: string }) { - + e.preventDefault()}> Lock note diff --git a/apps/desktop2/src/components/main/body/sessions/outer-header/share.tsx b/apps/desktop2/src/components/main/body/sessions/outer-header/share.tsx index 00be6c60a..8001a0c87 100644 --- a/apps/desktop2/src/components/main/body/sessions/outer-header/share.tsx +++ b/apps/desktop2/src/components/main/body/sessions/outer-header/share.tsx @@ -1,9 +1,239 @@ +import { Avatar, AvatarFallback } from "@hypr/ui/components/ui/avatar"; import { Button } from "@hypr/ui/components/ui/button"; +import { Popover, PopoverContent, PopoverTrigger } from "@hypr/ui/components/ui/popover"; +import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@hypr/ui/components/ui/select"; +import { Separator } from "@hypr/ui/components/ui/separator"; + +import { CircleMinus, Link2Icon, SearchIcon } from "lucide-react"; +import { useState } from "react"; +import { getInitials } from "../../contacts/shared"; + +interface Person { + id: string; + name: string; + email?: string; + role: "viewer" | "editor"; + isParticipant?: boolean; +} export function ShareButton(_: { sessionId: string }) { + const [searchQuery, setSearchQuery] = useState(""); + const [selectedPeople, setSelectedPeople] = useState([]); + const [invitedPeople, setInvitedPeople] = useState([ + { id: "1", name: "John Doe", email: "john@example.com", role: "editor", isParticipant: true }, + { id: "2", name: "Jane Smith", email: "jane@example.com", role: "editor", isParticipant: true }, + ]); + + const searchResults: Person[] = searchQuery.trim() + ? [ + { id: "3", name: "Alice Johnson", email: "alice@example.com", role: "viewer" as const }, + { id: "4", name: "Bob Wilson", email: "bob@example.com", role: "viewer" as const }, + ].filter((person) => person.name.toLowerCase().includes(searchQuery.toLowerCase())) + : []; + + const handleSelectPerson = (person: Person) => { + if (!selectedPeople.find((p) => p.id === person.id)) { + setSelectedPeople([...selectedPeople, person]); + } + setSearchQuery(""); + }; + + const handleRemoveSelected = (personId: string) => { + setSelectedPeople(selectedPeople.filter((p) => p.id !== personId)); + }; + + const handleInvite = () => { + const newInvites = selectedPeople.filter( + (selected) => !invitedPeople.find((invited) => invited.id === selected.id), + ); + setInvitedPeople([...invitedPeople, ...newInvites]); + setSelectedPeople([]); + // TODO: Implement actual invite functionality + console.log("Invite:", newInvites); + }; + + const handleRemovePerson = (personId: string) => { + setInvitedPeople(invitedPeople.filter((p) => p.id !== personId)); + }; + + const handleRoleChange = (personId: string, role: "viewer" | "editor") => { + setInvitedPeople( + invitedPeople.map((p) => (p.id === personId ? { ...p, role } : p)), + ); + }; + + const handleCopyLink = () => { + // TODO: Implement copy link functionality + console.log("Copy link"); + }; + return ( - + + + + + + +
+
+
+ + setSearchQuery(e.target.value)} + placeholder="Search for people" + className="w-full bg-transparent text-sm focus:outline-none placeholder:text-neutral-500" + /> +
+ + {searchQuery.trim() && searchResults.length > 0 && ( +
+ {searchResults.map((person) => ( + + ))} +
+ )} +
+ + {selectedPeople.length > 0 && ( +
+
+ {selectedPeople.map((person) => ( +
+
+
+
+ + + {getInitials(person.name)} + + +
+ +
+
+ + {person.name} + + {person.email && {person.email}} +
+
+
+ ))} +
+
+ )} + + {selectedPeople.length > 0 && ( + + )} + + {selectedPeople.length > 0 && } + + {invitedPeople.length > 0 && ( +
+
+ People with access +
+
+ {invitedPeople.map((person) => ( +
+
+
+
+ + + {getInitials(person.name)} + + +
+ +
+
+ + {person.name} + + {person.email && {person.email}} +
+
+ + +
+ ))} +
+
+ )} + + +
+
+
); } diff --git a/apps/desktop2/src/components/main/body/shared.tsx b/apps/desktop2/src/components/main/body/shared.tsx index 4820ba6ca..311712435 100644 --- a/apps/desktop2/src/components/main/body/shared.tsx +++ b/apps/desktop2/src/components/main/body/shared.tsx @@ -59,8 +59,8 @@ export function TabItemBase( className={clsx([ "flex items-center gap-2 cursor-pointer group", "w-48 h-full pl-2 pr-1", - "bg-color1 rounded-lg border", - active ? "text-black border-black" : "text-color3 border-transparent", + "bg-neutral-50 rounded-lg border", + active ? "text-black border-black" : "text-neutral-500 border-transparent", ])} >
@@ -75,8 +75,8 @@ export function TabItemBase( className={clsx([ "flex-shrink-0 transition-opacity", active - ? "opacity-100 text-color4" - : "opacity-0 group-hover:opacity-100 text-color3", + ? "opacity-100 text-neutral-700" + : "opacity-0 group-hover:opacity-100 text-neutral-500", ])} size="icon" variant="ghost" diff --git a/apps/desktop2/src/components/main/sidebar/index.tsx b/apps/desktop2/src/components/main/sidebar/index.tsx index 102467e40..53748b512 100644 --- a/apps/desktop2/src/components/main/sidebar/index.tsx +++ b/apps/desktop2/src/components/main/sidebar/index.tsx @@ -23,7 +23,7 @@ export function LeftSidebar() { "flex flex-row shrink-0", "flex w-full items-center justify-end h-9 py-1", "rounded-lg", - "pl-[72px] bg-color1", + "pl-[72px] bg-neutral-50", ])} > + -
-
- -
+
+ Hyprnote Pro +

+ Try Hyprnote Pro +

+
-
-

- Try Hyprnote Pro -

-

- Experience smarter meetings -

-
-
+

+ Sign up now and experience smarter meetings with a 1-week free trial of Hyprnote Pro. +

- -
+ )} diff --git a/apps/desktop2/src/components/main/sidebar/profile/index.tsx b/apps/desktop2/src/components/main/sidebar/profile/index.tsx index 657e29db0..de6e046a7 100644 --- a/apps/desktop2/src/components/main/sidebar/profile/index.tsx +++ b/apps/desktop2/src/components/main/sidebar/profile/index.tsx @@ -1,9 +1,10 @@ +import { commands as windowsCommands } from "@hypr/plugin-windows"; + import { clsx } from "clsx"; import { Calendar, ChevronUpIcon, FolderOpen, Settings, Users } from "lucide-react"; import { AnimatePresence, motion } from "motion/react"; import { useCallback, useEffect, useLayoutEffect, useRef, useState } from "react"; -import { commands as windowsCommands } from "@hypr/plugin-windows"; import { useAutoCloser } from "../../../../hooks/useAutoCloser"; import { useTabs } from "../../../../store/zustand/tabs"; import { TryProBanner } from "./banner"; @@ -122,7 +123,7 @@ export function ProfileSection() {
-
+
{menuItems.map((item) => )} @@ -188,13 +189,13 @@ function ProfileButton({ isExpanded, onClick }: { isExpanded: boolean; onClick: "text-left", "transition-all duration-300", "hover:bg-gray-100", - isExpanded && "bg-color1 border-t border-slate-100", + isExpanded && "bg-neutral-50 border-t border-neutral-100", )} onClick={onClick} >
-
-
John Jeong
+
+
John Jeong
-
+
Pro trial @@ -228,7 +229,7 @@ function ProfileButton({ isExpanded, onClick }: { isExpanded: boolean; onClick: className={clsx( "h-4 w-4", "transition-transform duration-300", - isExpanded ? "rotate-180 text-slate-500" : "text-slate-400", + isExpanded ? "rotate-180 text-neutral-500" : "text-neutral-400", )} />
diff --git a/apps/desktop2/src/components/main/sidebar/profile/notification.tsx b/apps/desktop2/src/components/main/sidebar/profile/notification.tsx index 92dd9b833..b57c1092a 100644 --- a/apps/desktop2/src/components/main/sidebar/profile/notification.tsx +++ b/apps/desktop2/src/components/main/sidebar/profile/notification.tsx @@ -1,5 +1,7 @@ +import { Button } from "@hypr/ui/components/ui/button"; + import { clsx } from "clsx"; -import { ArrowLeft, Bell, CheckCheck, MessageSquare } from "lucide-react"; +import { ArrowLeft, ArrowRight, Bell, CheckCheck, MessageSquare } from "lucide-react"; import { cn } from "@hypr/ui/lib/utils"; @@ -11,6 +13,7 @@ export function NotificationsMenuHeader({ onClick }: { onClick: () => void }) { icon={Bell} label="Notifications" onClick={onClick} + suffixIcon={ArrowRight} /> ); } @@ -37,22 +40,17 @@ const MOCK_NOTIFICATIONS: Notification[] = [ export function NotificationsMenuContent({ onBack }: { onBack: () => void }) { return ( -
- - -
-

Notifications

+
+
+ + Notifications
@@ -66,8 +64,8 @@ export function NotificationsMenuContent({ onBack }: { onBack: () => void }) { {MOCK_NOTIFICATIONS.length === 0 && (
- -

No notifications

+ +

No notifications

)} @@ -96,7 +94,7 @@ function NotificationItem({ notification }: { notification: Notification }) { "flex w-full gap-3 rounded-lg", "px-4 py-2.5", "text-left", - "transition-colors hover:bg-slate-100", + "transition-colors hover:bg-neutral-100", !notification.read && "bg-blue-50/50", ])} > @@ -131,10 +129,10 @@ function NotificationItem({ notification }: { notification: Notification }) {

{!notification.read && }
-

+

{notification.description}

-

{notification.timestamp}

+

{notification.timestamp}

); diff --git a/apps/desktop2/src/components/main/sidebar/profile/ota.tsx b/apps/desktop2/src/components/main/sidebar/profile/ota.tsx index 00d0e82b4..537c33658 100644 --- a/apps/desktop2/src/components/main/sidebar/profile/ota.tsx +++ b/apps/desktop2/src/components/main/sidebar/profile/ota.tsx @@ -1,9 +1,11 @@ +import { Spinner } from "@hypr/ui/components/ui/spinner"; + import { relaunch } from "@tauri-apps/plugin-process"; import { check, type Update } from "@tauri-apps/plugin-updater"; import { createStore } from "@xstate/store"; import { useSelector } from "@xstate/store/react"; import { clsx } from "clsx"; -import { AlertCircle, CheckCircle, Download, Loader2, RefreshCw, X } from "lucide-react"; +import { AlertCircle, CheckCircle, Download, RefreshCw, X } from "lucide-react"; import { MenuItem } from "./shared"; @@ -205,10 +207,10 @@ export function UpdateChecker() { className={clsx( "flex w-full items-center gap-2.5", "px-4 py-1.5", - "text-sm text-slate-700", + "text-sm text-neutral-700", )} > - + Checking for updates...
); @@ -220,7 +222,7 @@ export function UpdateChecker() { className={clsx( "flex w-full items-center gap-2.5", "px-4 py-1.5", - "text-sm text-slate-700", + "text-sm text-neutral-700", )} > @@ -269,9 +271,9 @@ export function UpdateChecker() { if (state === "downloading") { return ( -
+
- + Downloading... {downloadProgress.percentage}% @@ -280,15 +282,15 @@ export function UpdateChecker() { className={clsx( "flex h-6 w-6 items-center justify-center", "rounded-full", - "hover:bg-slate-100", + "hover:bg-neutral-100", "transition-colors", )} title="Cancel download" > - +
-
+
- + Installing...
); diff --git a/apps/desktop2/src/components/main/sidebar/profile/shared.tsx b/apps/desktop2/src/components/main/sidebar/profile/shared.tsx index bea47873c..3e279886d 100644 --- a/apps/desktop2/src/components/main/sidebar/profile/shared.tsx +++ b/apps/desktop2/src/components/main/sidebar/profile/shared.tsx @@ -1,10 +1,11 @@ import { clsx } from "clsx"; export function MenuItem( - { icon: Icon, label, badge, onClick }: { + { icon: Icon, label, badge, suffixIcon: SuffixIcon, onClick }: { icon: any; label: string; badge?: number | React.ReactNode; + suffixIcon?: any; onClick: () => void; }, ) { @@ -14,7 +15,7 @@ export function MenuItem( "flex w-full items-center gap-2.5 rounded-lg", "px-4 py-1.5", "text-sm text-black", - "transition-colors hover:bg-slate-100", + "transition-colors hover:bg-neutral-100", )} onClick={onClick} > @@ -36,6 +37,7 @@ export function MenuItem( ) : badge )} + {SuffixIcon && } ); } diff --git a/apps/desktop2/src/components/main/sidebar/search/index.tsx b/apps/desktop2/src/components/main/sidebar/search/index.tsx index a78795e8d..e68df541d 100644 --- a/apps/desktop2/src/components/main/sidebar/search/index.tsx +++ b/apps/desktop2/src/components/main/sidebar/search/index.tsx @@ -10,7 +10,7 @@ export function SearchResults() { const empty = !query || !results || results.totalResults === 0; return ( -
+
{empty ? : } diff --git a/apps/desktop2/tailwind.config.ts b/apps/desktop2/tailwind.config.ts index eb97cceed..5403a4290 100644 --- a/apps/desktop2/tailwind.config.ts +++ b/apps/desktop2/tailwind.config.ts @@ -10,12 +10,6 @@ const config = { fontFamily: { "racing-sans": ["Racing Sans One", "cursive"], }, - colors: { - color1: "#FBFBFB", - color2: "#F4F4F4", - color3: "#8e8e8e", - color4: "#484848", - }, }, }, plugins: [], diff --git a/packages/ui/src/components/block/event-chip.tsx b/packages/ui/src/components/block/event-chip.tsx index 30828fca0..423353653 100644 --- a/packages/ui/src/components/block/event-chip.tsx +++ b/packages/ui/src/components/block/event-chip.tsx @@ -120,9 +120,9 @@ export function EventChip({ title={formatDate(new Date(event?.start_date || date), "EEE, MMM d, yyyy") + " at " + formatDate(new Date(event?.start_date || date), "h:mm a")} > - {getIcon()} + {getIcon()} {!isVeryNarrow && ( -

+

{formatRelativeDate(event?.start_date || date)}

)} @@ -211,7 +211,7 @@ function EventDetails({ )}
{event.name}
-
{getDateString()}
+
{getDateString()}
{event.meetingLink && onJoinMeeting && ( @@ -236,7 +236,7 @@ function EventDetails({
{event.note && ( -
+
{event.note}
)} @@ -258,19 +258,19 @@ function EventSearch({ return (
- + onSearchChange?.(e.target.value)} - className="w-full bg-transparent text-sm focus:outline-none placeholder:text-color3" + className="w-full bg-transparent text-sm focus:outline-none placeholder:text-neutral-500" />
{searchResults.length === 0 ? ( -
+
{searchQuery ? "No matching events found." : "No past events available."}
) @@ -285,7 +285,7 @@ function EventSearch({

{event.name}

-

+

{formatDate(new Date(event.start_date), "MMM d, yyyy")}

diff --git a/packages/ui/src/components/block/meeting-metadata-chip.tsx b/packages/ui/src/components/block/meeting-metadata-chip.tsx index 5aa72d94a..dff36c8fe 100644 --- a/packages/ui/src/components/block/meeting-metadata-chip.tsx +++ b/packages/ui/src/components/block/meeting-metadata-chip.tsx @@ -121,7 +121,7 @@ export function MeetingMetadataChip({ @@ -347,7 +347,7 @@ function ParticipantsSection({ > {participant.full_name || "Unknown"} {participant.organization?.name && ( - + {participant.organization.name} )} @@ -355,7 +355,7 @@ function ParticipantsSection({ )) ) : ( -
+
No matching participants found
)} @@ -387,26 +387,26 @@ function ParticipantChip({ participant, currentUserId, onClick, onRemove }: Part || (participant.id === currentUserId ? "You" : "Unknown"); return ( -
-
- - +
+
+ + {participant.full_name ? getInitials(participant.full_name) : "?"} - + {displayName}
-
+
{participant.email && ( e.stopPropagation()} - className="text-color3 transition-colors hover:text-color4 opacity-0 group-hover:opacity-100" + className="text-neutral-500 transition-colors hover:text-neutral-700 opacity-0 group-hover:opacity-100" > - + )} {participant.linkedin_username && ( @@ -415,9 +415,9 @@ function ParticipantChip({ participant, currentUserId, onClick, onRemove }: Part onClick={(e) => e.stopPropagation()} target="_blank" rel="noopener noreferrer" - className="text-color3 transition-colors hover:text-color4 opacity-0 group-hover:opacity-100" + className="text-neutral-500 transition-colors hover:text-neutral-700 opacity-0 group-hover:opacity-100" > - + )}
diff --git a/packages/ui/src/components/block/participants-chip.tsx b/packages/ui/src/components/block/participants-chip.tsx index b7c7679d3..01b7d26d9 100644 --- a/packages/ui/src/components/block/participants-chip.tsx +++ b/packages/ui/src/components/block/participants-chip.tsx @@ -82,9 +82,9 @@ export function ParticipantsChip({ isVeryNarrow ? "px-1.5" : "px-2", )} > - - {getButtonText()} - {count > 1 && !isVeryNarrow && !isNarrow && + {count - 1}} + + {getButtonText()} + {count > 1 && !isVeryNarrow && !isNarrow && + {count - 1}}
@@ -141,7 +141,7 @@ function ParticipantList({
{participants.map((group, index) => (
-
+
{group.organization?.name || "No organization"}
@@ -199,7 +199,7 @@ function ParticipantItem({ )} > - + {participant.full_name ? getInitials(participant.full_name) : "?"} @@ -217,10 +217,10 @@ function ParticipantItem({ )}
- + {participant.full_name || (participant.id === currentUserId ? "You" : "Unknown")} - {participant.job_title && {participant.job_title}} + {participant.job_title && {participant.job_title}}
@@ -229,7 +229,7 @@ function ParticipantItem({ e.stopPropagation()} - className="text-color3 transition-colors hover:text-color4 p-1 rounded-full hover:bg-neutral-200" + className="text-neutral-500 transition-colors hover:text-neutral-700 p-1 rounded-full hover:bg-neutral-200" > @@ -238,7 +238,7 @@ function ParticipantItem({ e.stopPropagation()} - className="text-color3 transition-colors hover:text-color4 p-1 rounded-full hover:bg-neutral-200" + className="text-neutral-500 transition-colors hover:text-neutral-700 p-1 rounded-full hover:bg-neutral-200" > @@ -272,18 +272,18 @@ function AddParticipantInput({ >
- + onChange?.(e.target.value)} placeholder="Find person" - className="w-full bg-transparent text-sm focus:outline-none placeholder:text-color3" + className="w-full bg-transparent text-sm focus:outline-none placeholder:text-neutral-500" /> {value.trim() && ( @@ -301,7 +301,7 @@ function AddParticipantInput({ > {participant.full_name} {participant.organization?.name && ( - + {participant.organization.name} )} @@ -312,8 +312,8 @@ function AddParticipantInput({ type="submit" className="flex items-center px-3 py-2 text-sm text-left hover:bg-neutral-100 transition-colors w-full" > - - Create "{value.trim()}" + + Create "{value.trim()}" )} diff --git a/packages/ui/src/components/ui/dropdown-menu.tsx b/packages/ui/src/components/ui/dropdown-menu.tsx index cb10bc24b..060c81424 100644 --- a/packages/ui/src/components/ui/dropdown-menu.tsx +++ b/packages/ui/src/components/ui/dropdown-menu.tsx @@ -44,7 +44,7 @@ const DropdownMenuSubContent = React.forwardRef< , + React.ComponentPropsWithoutRef +>( + ( + { className, orientation = "horizontal", decorative = true, ...props }, + ref, + ) => ( + + ), +); +Separator.displayName = SeparatorPrimitive.Root.displayName; + +export { Separator }; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 496731f4b..48cf526a0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -177,10 +177,10 @@ importers: version: 10.1.0 '@tanstack/react-router-devtools': specifier: ^1.133.3 - version: 1.133.3(@tanstack/react-router@1.133.3(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@tanstack/router-core@1.133.3)(@types/node@24.8.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) + version: 1.133.3(@tanstack/react-router@1.133.3(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@tanstack/router-core@1.133.3)(@types/node@24.8.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/router-plugin': specifier: ^1.133.4 - version: 1.133.4(@tanstack/react-router@1.133.3(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(vite@7.1.10(@types/node@24.8.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)) + version: 1.133.4(@tanstack/react-router@1.133.3(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(vite@7.1.10(@types/node@24.8.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)) '@tauri-apps/cli': specifier: ^2.8.4 version: 2.8.4 @@ -195,7 +195,7 @@ importers: version: 19.2.2(@types/react@19.2.2) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@7.1.10(@types/node@24.8.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)) + version: 4.7.0(vite@7.1.10(@types/node@24.8.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)) autoprefixer: specifier: ^10.4.21 version: 10.4.21(postcss@8.5.6) @@ -210,10 +210,10 @@ importers: version: 5.8.3 vite: specifier: ^7.1.10 - version: 7.1.10(@types/node@24.8.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) + version: 7.1.10(@types/node@24.8.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: specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@24.8.0)(jiti@1.21.7)(jsdom@27.0.0(postcss@8.5.6))(lightningcss@1.30.1)(msw@2.10.4(@types/node@24.8.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.8.0)(jiti@2.6.1)(jsdom@27.0.0(postcss@8.5.6))(lightningcss@1.30.1)(msw@2.10.4(@types/node@24.8.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: @@ -10832,13 +10832,13 @@ snapshots: - tsx - yaml - '@tanstack/react-router-devtools@1.133.3(@tanstack/react-router@1.133.3(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@tanstack/router-core@1.133.3)(@types/node@24.8.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/react-router-devtools@1.133.3(@tanstack/react-router@1.133.3(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@tanstack/router-core@1.133.3)(@types/node@24.8.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)': dependencies: '@tanstack/react-router': 1.133.3(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@tanstack/router-devtools-core': 1.133.3(@tanstack/router-core@1.133.3)(@types/node@24.8.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) + '@tanstack/router-devtools-core': 1.133.3(@tanstack/router-core@1.133.3)(@types/node@24.8.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) react: 19.2.0 react-dom: 19.2.0(react@19.2.0) - vite: 7.1.10(@types/node@24.8.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: 7.1.10(@types/node@24.8.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) transitivePeerDependencies: - '@tanstack/router-core' - '@types/node' @@ -10966,14 +10966,14 @@ snapshots: - tsx - yaml - '@tanstack/router-devtools-core@1.133.3(@tanstack/router-core@1.133.3)(@types/node@24.8.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)': + '@tanstack/router-devtools-core@1.133.3(@tanstack/router-core@1.133.3)(@types/node@24.8.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)': dependencies: '@tanstack/router-core': 1.133.3 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.10(@types/node@24.8.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: 7.1.10(@types/node@24.8.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) optionalDependencies: csstype: 3.1.3 transitivePeerDependencies: @@ -11024,7 +11024,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@tanstack/router-plugin@1.133.4(@tanstack/react-router@1.133.3(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(vite@7.1.10(@types/node@24.8.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))': + '@tanstack/router-plugin@1.133.4(@tanstack/react-router@1.133.3(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(vite@7.1.10(@types/node@24.8.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: '@babel/core': 7.28.4 '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.4) @@ -11042,7 +11042,7 @@ snapshots: zod: 3.25.76 optionalDependencies: '@tanstack/react-router': 1.133.3(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - vite: 7.1.10(@types/node@24.8.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: 7.1.10(@types/node@24.8.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) transitivePeerDependencies: - supports-color @@ -11724,7 +11724,7 @@ snapshots: '@vercel/oidc@3.0.3': {} - '@vitejs/plugin-react@4.7.0(vite@7.1.10(@types/node@24.8.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))': + '@vitejs/plugin-react@4.7.0(vite@7.1.10(@types/node@24.8.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: '@babel/core': 7.28.4 '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.4) @@ -11732,7 +11732,7 @@ snapshots: '@rolldown/pluginutils': 1.0.0-beta.27 '@types/babel__core': 7.20.5 react-refresh: 0.17.0 - vite: 7.1.10(@types/node@24.8.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: 7.1.10(@types/node@24.8.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) transitivePeerDependencies: - supports-color @@ -11765,14 +11765,14 @@ snapshots: msw: 2.10.4(@types/node@22.18.10)(typescript@5.9.3) vite: 7.1.10(@types/node@22.18.10)(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.8.0)(typescript@5.8.3))(vite@7.1.10(@types/node@24.8.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.8.0)(typescript@5.8.3))(vite@7.1.10(@types/node@24.8.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: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 magic-string: 0.30.19 optionalDependencies: msw: 2.10.4(@types/node@24.8.0)(typescript@5.8.3) - vite: 7.1.10(@types/node@24.8.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: 7.1.10(@types/node@24.8.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.8.0)(typescript@5.9.3))(vite@7.1.10(@types/node@24.8.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: @@ -15948,27 +15948,6 @@ snapshots: - tsx - yaml - vite-node@3.2.4(@types/node@24.8.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 - es-module-lexer: 1.7.0 - pathe: 2.0.3 - vite: 7.1.10(@types/node@24.8.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.8.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 @@ -16019,24 +15998,6 @@ snapshots: tsx: 4.20.6 yaml: 2.8.1 - vite@7.1.10(@types/node@24.8.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.11 - 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.8.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.10(@types/node@24.8.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.11 @@ -16102,11 +16063,11 @@ snapshots: - tsx - yaml - vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.8.0)(jiti@1.21.7)(jsdom@27.0.0(postcss@8.5.6))(lightningcss@1.30.1)(msw@2.10.4(@types/node@24.8.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.8.0)(jiti@2.6.1)(jsdom@27.0.0(postcss@8.5.6))(lightningcss@1.30.1)(msw@2.10.4(@types/node@24.8.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.8.0)(typescript@5.8.3))(vite@7.1.10(@types/node@24.8.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.8.0)(typescript@5.8.3))(vite@7.1.10(@types/node@24.8.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/pretty-format': 3.2.4 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 @@ -16124,8 +16085,8 @@ snapshots: tinyglobby: 0.2.15 tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 7.1.10(@types/node@24.8.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.8.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: 7.1.10(@types/node@24.8.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.8.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) why-is-node-running: 2.3.0 optionalDependencies: '@types/debug': 4.1.12