diff --git a/panel/src/app/(dashboard)/notifications/page.tsx b/panel/src/app/(dashboard)/notifications/page.tsx index c161bd3a..34f1c35f 100644 --- a/panel/src/app/(dashboard)/notifications/page.tsx +++ b/panel/src/app/(dashboard)/notifications/page.tsx @@ -17,6 +17,11 @@ import { Skeleton } from "@/components/ui/skeleton"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; import { OfflineState } from "@/components/ui/offline-state"; import { HelpTip } from "@/components/ui/help-tip"; +import { + Tooltip, + TooltipContent, + TooltipTrigger, +} from "@/components/ui/tooltip"; import { usePageRefresh } from "@/hooks"; import { Bell, @@ -114,20 +119,26 @@ function NotificationCard({
{notification.subject} - - {notification.priority} - - {!notification.is_read && ( - - New + + + {notification.priority} + + {!notification.is_read && ( + + + New + + )} {notification.requires_ack && !notification.is_acknowledged && ( - - Needs Ack - + + + Needs Ack + + )} {notification.related_task_id && ( - All - - Unread {data && data.unread_count > 0 && `(${data.unread_count})`} - - - Pending{" "} - {data && - data.pending_ack_count > 0 && - `(${data.pending_ack_count})`} - + {/* TooltipTrigger's asChild Slot merge injects its own data-state + onto the trigger, colliding with Radix Tabs' own literal + data-state (same trap as task-tabs.tsx) — reassert the real + selection state explicitly so the active-tab highlight + survives the merge. */} + + + + All + + + + Every notification you've received, read or not + + + + + + Unread {data && data.unread_count > 0 && `(${data.unread_count})`} + + + Notifications you haven't opened yet + + + + + Pending{" "} + {data && + data.pending_ack_count > 0 && + `(${data.pending_ack_count})`} + + + + Notifications still waiting on your acknowledgement + + diff --git a/panel/src/app/(dashboard)/settings/page.tsx b/panel/src/app/(dashboard)/settings/page.tsx index b33fc110..5a463546 100644 --- a/panel/src/app/(dashboard)/settings/page.tsx +++ b/panel/src/app/(dashboard)/settings/page.tsx @@ -121,7 +121,9 @@ export default function SettingsPage() {
- + + +

Show icons only in the sidebar

diff --git a/panel/src/components/business/company-scorecard-card.tsx b/panel/src/components/business/company-scorecard-card.tsx index 350fb710..2e56fac5 100644 --- a/panel/src/components/business/company-scorecard-card.tsx +++ b/panel/src/components/business/company-scorecard-card.tsx @@ -96,7 +96,9 @@ interface DeliverySectionProps { function DeliverySection({ delivery }: DeliverySectionProps) { return (
- Delivery + + Delivery +
Spend
- 30-day spend + + 30-day spend + ${spend_30d_usd.toFixed(2)}
{projected_monthly_usd !== null && (
- Projected monthly + + Projected monthly + ${projected_monthly_usd.toFixed(2)} diff --git a/panel/src/components/business/goals-tab.tsx b/panel/src/components/business/goals-tab.tsx index 9920aa25..7146dc34 100644 --- a/panel/src/components/business/goals-tab.tsx +++ b/panel/src/components/business/goals-tab.tsx @@ -101,16 +101,20 @@ function ObjectivesEditor({ Objective #{rowIdx + 1} - + + + + +
{keys.map((key) => (
@@ -132,15 +136,19 @@ function ObjectivesEditor({
))}
- + + + + +
); } @@ -297,7 +305,9 @@ function GoalsForm({ goals, refetch }: GoalsFormProps) { {/* North star */}
- + + +