diff --git a/apps/web/src/components/action-bar.tsx b/apps/web/src/components/action-bar.tsx
index fc9aec3..94f3b9a 100644
--- a/apps/web/src/components/action-bar.tsx
+++ b/apps/web/src/components/action-bar.tsx
@@ -553,9 +553,7 @@ export function ActionBar({
)}
{!browseMode && nameInput.length >= 2 && !hasSuggestions && (
-
+
)}
{showRollAllInitiative && onRollAllInitiative && (
{characters.length === 0 ? (
No player characters yet
-
+
Create your first player character
@@ -92,25 +93,27 @@ export function PlayerManagement({
HP {pc.maxHp}
- onEdit(pc)}
- className="text-muted-foreground hover:text-hover-neutral transition-colors"
+ className="text-muted-foreground"
title="Edit"
>
-
+
}
label="Delete player character"
onConfirm={() => onDelete(pc.id)}
- className="h-6 w-6 text-muted-foreground"
+ size="icon-sm"
+ className="text-muted-foreground"
/>
);
})}
-
+
Add
diff --git a/apps/web/src/components/source-fetch-prompt.tsx b/apps/web/src/components/source-fetch-prompt.tsx
index cbe9f76..eb17340 100644
--- a/apps/web/src/components/source-fetch-prompt.tsx
+++ b/apps/web/src/components/source-fetch-prompt.tsx
@@ -88,11 +88,7 @@ export function SourceFetchPrompt({
-
+
{status === "fetching" ? (
) : (
@@ -104,7 +100,6 @@ export function SourceFetchPrompt({
or
fileInputRef.current?.click()}
disabled={status === "fetching"}
diff --git a/apps/web/src/components/source-manager.tsx b/apps/web/src/components/source-manager.tsx
index 34edb29..dd5e086 100644
--- a/apps/web/src/components/source-manager.tsx
+++ b/apps/web/src/components/source-manager.tsx
@@ -48,7 +48,6 @@ export function SourceManager({ onCacheCleared }: SourceManagerProps) {
Cached Sources
{panelRole === "browse" && (
-
-
+
)}
{panelRole === "browse" && showPinButton && (
-
-
+
)}
{panelRole === "pinned" && (
-
-
+
)}
@@ -195,14 +199,15 @@ function MobileDrawer({
{...handlers}
>
{children}
diff --git a/apps/web/src/components/toast.tsx b/apps/web/src/components/toast.tsx
index 35db801..dd248fd 100644
--- a/apps/web/src/components/toast.tsx
+++ b/apps/web/src/components/toast.tsx
@@ -1,6 +1,7 @@
import { X } from "lucide-react";
import { useEffect } from "react";
import { createPortal } from "react-dom";
+import { Button } from "./ui/button.js";
interface ToastProps {
message: string;
@@ -33,13 +34,14 @@ export function Toast({
/>
)}
-
-
+
,
document.body,
diff --git a/apps/web/src/components/ui/button.tsx b/apps/web/src/components/ui/button.tsx
index 219eed7..e63fd18 100644
--- a/apps/web/src/components/ui/button.tsx
+++ b/apps/web/src/components/ui/button.tsx
@@ -13,9 +13,9 @@ const buttonVariants = cva(
ghost: "hover:bg-hover-neutral-bg hover:text-hover-neutral",
},
size: {
- default: "h-9 px-4 py-2",
- sm: "h-8 px-3 text-xs",
+ default: "h-8 px-3 text-xs",
icon: "h-8 w-8",
+ "icon-sm": "h-6 w-6",
},
},
defaultVariants: {
diff --git a/apps/web/src/components/ui/confirm-button.tsx b/apps/web/src/components/ui/confirm-button.tsx
index 446adef..b5f6750 100644
--- a/apps/web/src/components/ui/confirm-button.tsx
+++ b/apps/web/src/components/ui/confirm-button.tsx
@@ -13,6 +13,7 @@ interface ConfirmButtonProps {
readonly onConfirm: () => void;
readonly icon: ReactElement;
readonly label: string;
+ readonly size?: "icon" | "icon-sm";
readonly className?: string;
readonly disabled?: boolean;
}
@@ -23,6 +24,7 @@ export function ConfirmButton({
onConfirm,
icon,
label,
+ size = "icon",
className,
disabled,
}: ConfirmButtonProps) {
@@ -94,7 +96,7 @@ export function ConfirmButton({