Compare commits
3
Commits
v0.8.1
..
27d0db0f72
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
27d0db0f72 | ||
|
|
e436ced95b | ||
|
|
fe017497a2 |
@@ -3,7 +3,6 @@
|
|||||||
import { useEffect, useRef, useState } from "react";
|
import { useEffect, useRef, useState } from "react";
|
||||||
import { useRouter } from "next/navigation";
|
import { useRouter } from "next/navigation";
|
||||||
import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table";
|
import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table";
|
||||||
import { Input } from "@/components/ui/input";
|
|
||||||
import { Check, Loader2 } from "lucide-react";
|
import { Check, Loader2 } from "lucide-react";
|
||||||
import { toast } from "sonner";
|
import { toast } from "sonner";
|
||||||
import { cn } from "@/lib/utils";
|
import { cn } from "@/lib/utils";
|
||||||
@@ -55,23 +54,23 @@ function DeviceNameCell({ device }: { device: DeviceRow }) {
|
|||||||
}, [status]);
|
}, [status]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="relative w-48">
|
<div className="flex items-center gap-2">
|
||||||
<Input
|
<input
|
||||||
value={value}
|
value={value}
|
||||||
onChange={(e) => setValue(e.target.value)}
|
onChange={(e) => setValue(e.target.value)}
|
||||||
className="h-8 pr-8"
|
|
||||||
aria-label="Device display name"
|
aria-label="Device display name"
|
||||||
|
className="max-w-48 min-w-0 border-b-2 border-transparent bg-transparent text-sm font-medium text-foreground caret-primary outline-none transition-colors placeholder:text-muted-foreground/70 hover:border-b-primary focus:border-b-primary [field-sizing:content]"
|
||||||
/>
|
/>
|
||||||
<div className="pointer-events-none absolute inset-y-0 right-2 flex w-3.5 items-center justify-center">
|
<div className="relative flex size-4 shrink-0 items-center justify-center">
|
||||||
<Loader2
|
<Loader2
|
||||||
className={cn(
|
className={cn(
|
||||||
"absolute size-3.5 animate-spin text-muted-foreground transition-opacity",
|
"absolute size-4 animate-spin text-muted-foreground transition-opacity",
|
||||||
status === "saving" ? "opacity-100" : "opacity-0",
|
status === "saving" ? "opacity-100" : "opacity-0",
|
||||||
)}
|
)}
|
||||||
/>
|
/>
|
||||||
<Check
|
<Check
|
||||||
className={cn(
|
className={cn(
|
||||||
"absolute size-3.5 text-primary transition-opacity",
|
"absolute size-4 text-primary transition-opacity",
|
||||||
status === "saved" ? "opacity-100" : "opacity-0",
|
status === "saved" ? "opacity-100" : "opacity-0",
|
||||||
)}
|
)}
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -15,8 +15,8 @@ const LINKS = [
|
|||||||
{ href: "/", label: "Dashboard" },
|
{ href: "/", label: "Dashboard" },
|
||||||
{ href: "/control", label: "Control" },
|
{ href: "/control", label: "Control" },
|
||||||
{ href: "/sessions", label: "Sessions" },
|
{ href: "/sessions", label: "Sessions" },
|
||||||
{ href: "/stats", label: "Stats" },
|
|
||||||
{ href: "/devices", label: "Devices" },
|
{ href: "/devices", label: "Devices" },
|
||||||
|
{ href: "/stats", label: "Stats" },
|
||||||
];
|
];
|
||||||
|
|
||||||
function isActive(pathname: string, href: string): boolean {
|
function isActive(pathname: string, href: string): boolean {
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ export function SessionDescriptionEditor({
|
|||||||
placeholder="Add a description..."
|
placeholder="Add a description..."
|
||||||
aria-label="Session description"
|
aria-label="Session description"
|
||||||
rows={1}
|
rows={1}
|
||||||
className="max-w-full min-w-0 resize-none border-b-2 border-transparent bg-transparent text-sm text-muted-foreground outline-none transition-colors placeholder:text-muted-foreground/60 hover:border-b-border focus:border-b-foreground/40 focus:text-foreground sm:max-w-xl [field-sizing:content]"
|
className="max-w-full min-w-0 resize-none border-b-2 border-transparent bg-transparent text-sm text-muted-foreground caret-primary outline-none transition-colors placeholder:text-muted-foreground/60 hover:border-b-primary focus:border-b-primary sm:max-w-xl [field-sizing:content]"
|
||||||
/>
|
/>
|
||||||
<div className="relative mt-0.5 flex size-4 shrink-0 items-center justify-center">
|
<div className="relative mt-0.5 flex size-4 shrink-0 items-center justify-center">
|
||||||
<Loader2
|
<Loader2
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ export function SessionTitleEditor({ sessionId, initialName }: { sessionId: numb
|
|||||||
onChange={(e) => setValue(e.target.value)}
|
onChange={(e) => setValue(e.target.value)}
|
||||||
placeholder={`Session #${sessionId}`}
|
placeholder={`Session #${sessionId}`}
|
||||||
aria-label="Session name"
|
aria-label="Session name"
|
||||||
className="max-w-full min-w-0 border-b-2 border-transparent bg-transparent font-heading text-2xl font-semibold text-foreground outline-none transition-colors placeholder:text-muted-foreground/70 hover:border-b-border focus:border-b-foreground/40 sm:max-w-xl [field-sizing:content]"
|
className="max-w-full min-w-0 border-b-2 border-transparent bg-transparent font-heading text-2xl font-semibold text-foreground caret-primary outline-none transition-colors placeholder:text-muted-foreground/70 hover:border-b-primary focus:border-b-primary sm:max-w-xl [field-sizing:content]"
|
||||||
/>
|
/>
|
||||||
<div className="relative flex size-4 shrink-0 items-center justify-center">
|
<div className="relative flex size-4 shrink-0 items-center justify-center">
|
||||||
<Loader2
|
<Loader2
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "sexy",
|
"name": "sexy",
|
||||||
"version": "0.8.1",
|
"version": "0.8.2",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "next dev",
|
"dev": "next dev",
|
||||||
|
|||||||
Reference in New Issue
Block a user