-
Active Entities
+
+
+
Dashboard
+
Version {appVersion}
+
+
+
+
+
Active Entities
{activeCount} active {activeCount === 1 ? 'entity' : 'entities'}
+
+
Scheduled Tasks
+
{scheduledTasks.length}
+
-
-
Recent Dispatches
-
+
+
+
+
+ Recent Dispatches
+
{logs.slice(0, 10).map((log) => (
-
- {log.emailSubject}
- {log.entityName}
+ {log.emailSubject}
+ {log.entityName}
))}
{logs.length === 0 && (
- - No dispatches yet.
+ - No dispatches yet.
)}
-
+
)
}
diff --git a/frontend/src/pages/EntitiesPage.tsx b/frontend/src/pages/EntitiesPage.tsx
index 23900f0..1353eef 100644
--- a/frontend/src/pages/EntitiesPage.tsx
+++ b/frontend/src/pages/EntitiesPage.tsx
@@ -1,4 +1,5 @@
import { useState } from 'react'
+import { Link, useNavigate } from 'react-router-dom'
import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query'
import {
getEntities,
@@ -8,6 +9,7 @@ import {
} from '../api/entitiesApi'
export default function EntitiesPage() {
+ const navigate = useNavigate()
const queryClient = useQueryClient()
const { data: entities = [] } = useQuery({ queryKey: ['entities'], queryFn: getEntities })
const [dialogOpen, setDialogOpen] = useState(false)
@@ -22,10 +24,11 @@ export default function EntitiesPage() {
const createMutation = useMutation({
mutationFn: createEntity,
- onSuccess: () => {
+ onSuccess: (createdEntity) => {
queryClient.invalidateQueries({ queryKey: ['entities'] })
setDialogOpen(false)
setForm({ name: '', email: '', jobTitle: '', personality: '', scheduleCron: '', contextWindowDays: 3 })
+ navigate(`/entities/${createdEntity.id}`)
},
})
@@ -37,32 +40,40 @@ export default function EntitiesPage() {
return (
-
Virtual Entities
+ Virtual Entities
-
+
@@ -71,10 +82,10 @@ export default function EntitiesPage() {
role="dialog"
aria-modal="true"
aria-label="Create Entity"
- className="fixed inset-0 z-50 flex items-center justify-center bg-black/40"
+ className="fixed inset-0 z-50 flex items-center justify-center bg-slate-950/70"
>
-
-
New Entity
+
}>
-
{children}
+
+
+
+ {children}
+
+
)
}
@@ -40,6 +47,14 @@ export const router = createBrowserRouter([
),
},
+ {
+ path: '/entities/:entityId',
+ element: (
+
+
+
+ ),
+ },
{
path: '/logs',
element: (
diff --git a/frontend/tailwind.config.js b/frontend/tailwind.config.js
index eaada14..77a5a2a 100644
--- a/frontend/tailwind.config.js
+++ b/frontend/tailwind.config.js
@@ -1,5 +1,6 @@
/** @type {import('tailwindcss').Config} */
export default {
+ darkMode: 'class',
content: [
'./index.html',
'./src/**/*.{ts,tsx}',