This commit is contained in:
k
2026-09-21 22:53:25 +02:00
parent 9dd8e772a9
commit aaf9354b7f
7 changed files with 52 additions and 96 deletions
+3 -1
View File
@@ -1,5 +1,5 @@
import { useEffect, useState } from "react";
import { Archive, ArchiveRestore, Check, Cpu, Palette, SunMoon, Trash2, type LucideIcon } from "lucide-react";
import { Archive, ArchiveRestore, Check, Cpu, Palette, Pencil, SunMoon, Trash2, Unplug, type LucideIcon } from "lucide-react";
import { cn } from "../lib/cn.ts";
import { removeToast, TOAST_DISPLAY_MS, useToasts, type Toast, type ToastIcon } from "../lib/toasts.ts";
@@ -10,6 +10,8 @@ const ICONS: Record<ToastIcon, LucideIcon> = {
model: Cpu,
theme: SunMoon,
accent: Palette,
unshare: Unplug,
edit: Pencil,
check: Check,
};
+1
View File
@@ -229,6 +229,7 @@ export function ShareModal({ conv, onClose }: { conv: Conversation | null; onClo
async function unshare() {
if (!conv) return;
await api.unshare(conv.id);
pushToast(t("toast.unshared"), { icon: "unshare" });
onClose();
}
+23 -27
View File
@@ -536,30 +536,30 @@ export function FlowerMark({ size, className, dynamic = true }: { size?: number;
</radialGradient>
</defs>
{outer.map((p, i) => (
<ellipse
key={p.r}
cx="50"
cy="27"
rx="13.5"
ry={p.ry}
fill={`url(#${petalId})`}
transform={`rotate(${p.r} 50 50)`}
className={dynamic ? "flower-petal" : undefined}
style={dynamic ? { animationDelay: `${i * 0.2}s` } : undefined}
/>
<g key={p.r} transform={`rotate(${p.r} 50 50)`}>
<ellipse
cx="50"
cy="27"
rx="13.5"
ry={p.ry}
fill={`url(#${petalId})`}
className={dynamic ? "flower-petal" : undefined}
style={dynamic ? { animationDelay: `${i * 0.2}s` } : undefined}
/>
</g>
))}
{inner.map((p, i) => (
<ellipse
key={p.r}
cx="50"
cy="34"
rx="8"
ry={p.ry}
fill={`url(#${petalInId})`}
transform={`rotate(${p.r} 50 50)`}
className={dynamic ? "flower-petal-inner" : undefined}
style={dynamic ? { animationDelay: `${i * 0.2 + 0.6}s` } : undefined}
/>
<g key={p.r} transform={`rotate(${p.r} 50 50)`}>
<ellipse
cx="50"
cy="34"
rx="8"
ry={p.ry}
fill={`url(#${petalInId})`}
className={dynamic ? "flower-petal-inner" : undefined}
style={dynamic ? { animationDelay: `${i * 0.2 + 0.6}s` } : undefined}
/>
</g>
))}
<g className={dynamic ? "flower-core" : undefined}>
<circle cx="50" cy="50" r="10.5" fill="#f59e0b" opacity="0.22" />
@@ -659,13 +659,9 @@ export function LoadingScreen() {
return (
<div className="loading-enter grid min-h-full place-items-center" role="status" aria-label="Loading KisAssistant">
<div className="flex flex-col items-center gap-4 px-6 text-center">
<span className="loader-halo">
<span className="loader-orbit" aria-hidden="true" />
<FlowerMark className="h-16 w-16 sm:h-20 sm:w-20" />
</span>
<FlowerMark className="h-16 w-16 sm:h-20 sm:w-20" />
<p className="loader-title font-serif text-2xl font-bold tracking-tight">KisAssistant</p>
<p className="loading-dots text-sm opacity-60">{t("loading.tagline")}</p>
<span className="loader-bar" aria-hidden="true"><span /></span>
</div>
</div>
);