Align workspace colors with landing palette

This commit is contained in:
Flatlogic Bot 2026-06-09 13:13:08 +00:00
parent 88c1db36fd
commit 130333c0df
5 changed files with 149 additions and 149 deletions

View File

@ -136,19 +136,19 @@ export default function LayoutAuthenticated({ children, permission }: Props) {
const activePath = router.pathname.split('/')[1]; const activePath = router.pathname.split('/')[1];
return ( return (
<div className='min-h-screen bg-[#f7f5f1] text-[#17201b]'> <div className='min-h-screen bg-[#fffdf9] text-[#19192d]'>
<aside <aside
className={`fixed inset-y-0 left-0 z-40 w-64 border-r border-[#ded8cc] bg-[#fbfaf6] px-3 py-4 shadow-[16px_0_45px_rgba(23,32,27,0.08)] transition-transform duration-300 lg:translate-x-0 ${ className={`fixed inset-y-0 left-0 z-40 w-64 border-r border-[#19192d]/10 bg-[#fffdf9] px-3 py-4 shadow-[16px_0_45px_rgba(23,32,27,0.08)] transition-transform duration-300 lg:translate-x-0 ${
isAsideOpen ? 'translate-x-0' : '-translate-x-full' isAsideOpen ? 'translate-x-0' : '-translate-x-full'
}`} }`}
> >
<div className='flex items-center justify-between'> <div className='flex items-center justify-between'>
<Link href='/dashboard' className='flex items-center gap-3'> <Link href='/dashboard' className='flex items-center gap-3'>
<span className='grid h-8 w-8 place-items-center rounded-full border border-[#d8b15e]/50 bg-[#245c4c] text-sm font-black text-white'> <span className='grid h-8 w-8 place-items-center rounded-full border border-[#b17a1e]/50 bg-[#35b7a5] text-sm font-black text-white'>
CW CW
</span> </span>
<span> <span>
<span className='block text-sm font-semibold uppercase tracking-[0.22em] text-[#9a6a2f]'> <span className='block text-sm font-semibold uppercase tracking-[0.22em] text-[#b17a1e]'>
AppWizzy AppWizzy
</span> </span>
<span className='block text-lg font-semibold'> <span className='block text-lg font-semibold'>
@ -158,18 +158,18 @@ export default function LayoutAuthenticated({ children, permission }: Props) {
</Link> </Link>
<button <button
type='button' type='button'
className='grid h-8 w-8 place-items-center rounded-full border border-[#ded8cc] text-[#526159] lg:hidden' className='grid h-8 w-8 place-items-center rounded-full border border-[#19192d]/10 text-[#72798a] lg:hidden'
onClick={() => setIsAsideOpen(false)} onClick={() => setIsAsideOpen(false)}
> >
<BaseIcon path={mdiClose} size={18} /> <BaseIcon path={mdiClose} size={18} />
</button> </button>
</div> </div>
<div className='mt-5 rounded-lg border border-[#ded8cc] bg-white p-4'> <div className='mt-5 rounded-lg border border-[#19192d]/10 bg-white p-4'>
<p className='text-xs font-semibold uppercase tracking-[0.2em] text-[#9a6a2f]'> <p className='text-xs font-semibold uppercase tracking-[0.2em] text-[#b17a1e]'>
Today Today
</p> </p>
<p className='mt-2 text-sm leading-6 text-[#5f6b64]'> <p className='mt-2 text-sm leading-6 text-[#72798a]'>
Prepare, follow up, and keep every coaching relationship warm Prepare, follow up, and keep every coaching relationship warm
between sessions. between sessions.
</p> </p>
@ -186,8 +186,8 @@ export default function LayoutAuthenticated({ children, permission }: Props) {
href={item.href} href={item.href}
className={`flex items-center gap-3 rounded-lg px-3 py-2 text-sm font-semibold transition ${ className={`flex items-center gap-3 rounded-lg px-3 py-2 text-sm font-semibold transition ${
isActive isActive
? 'bg-[#245c4c] text-white shadow-[0_14px_28px_rgba(36,92,76,0.2)]' ? 'bg-[#35b7a5] text-white shadow-[0_14px_28px_rgba(36,92,76,0.2)]'
: 'text-[#56645d] hover:bg-[#efeae0] hover:text-[#17201b]' : 'text-[#72798a] hover:bg-[#fbf8f1] hover:text-[#19192d]'
}`} }`}
> >
<BaseIcon path={item.icon} size={18} /> <BaseIcon path={item.icon} size={18} />
@ -197,8 +197,8 @@ export default function LayoutAuthenticated({ children, permission }: Props) {
})} })}
</nav> </nav>
<div className='absolute inset-x-4 bottom-5 rounded-lg border border-[#ded8cc] bg-[#f0ede6] p-4'> <div className='absolute inset-x-4 bottom-5 rounded-lg border border-[#19192d]/10 bg-[#fbf8f1] p-4'>
<p className='text-xs font-semibold uppercase tracking-[0.18em] text-[#9a6a2f]'> <p className='text-xs font-semibold uppercase tracking-[0.18em] text-[#b17a1e]'>
Signed in Signed in
</p> </p>
<p className='mt-2 truncate text-sm font-semibold'> <p className='mt-2 truncate text-sm font-semibold'>
@ -206,7 +206,7 @@ export default function LayoutAuthenticated({ children, permission }: Props) {
</p> </p>
<button <button
type='button' type='button'
className='mt-4 flex w-full items-center justify-center gap-2 rounded-full bg-[#17201b] px-3 py-1.5 text-sm font-semibold text-white' className='mt-4 flex w-full items-center justify-center gap-2 rounded-full bg-[#19192d] px-3 py-1.5 text-sm font-semibold text-white'
onClick={() => { onClick={() => {
dispatch(logoutUser()); dispatch(logoutUser());
router.push('/login'); router.push('/login');
@ -222,32 +222,32 @@ export default function LayoutAuthenticated({ children, permission }: Props) {
<button <button
type='button' type='button'
aria-label='Close menu' aria-label='Close menu'
className='fixed inset-0 z-30 bg-[#17201b]/40 lg:hidden' className='fixed inset-0 z-30 bg-[#19192d]/40 lg:hidden'
onClick={() => setIsAsideOpen(false)} onClick={() => setIsAsideOpen(false)}
/> />
)} )}
<div className='lg:pl-64'> <div className='lg:pl-64'>
<header className='sticky top-0 z-20 border-b border-[#ded8cc]/80 bg-[#f7f5f1]/92 px-3 py-2 backdrop-blur lg:px-8'> <header className='sticky top-0 z-20 border-b border-[#19192d]/10/80 bg-[#fffdf9]/92 px-3 py-2 backdrop-blur lg:px-8'>
<div className='flex items-center justify-between'> <div className='flex items-center justify-between'>
<button <button
type='button' type='button'
className='grid h-8 w-8 place-items-center rounded-full border border-[#ded8cc] bg-white text-[#526159] lg:hidden' className='grid h-8 w-8 place-items-center rounded-full border border-[#19192d]/10 bg-white text-[#72798a] lg:hidden'
onClick={() => setIsAsideOpen(true)} onClick={() => setIsAsideOpen(true)}
> >
<BaseIcon path={mdiMenu} size={18} /> <BaseIcon path={mdiMenu} size={18} />
</button> </button>
<div className='hidden lg:block'> <div className='hidden lg:block'>
<p className='text-xs font-semibold uppercase tracking-[0.22em] text-[#9a6a2f]'> <p className='text-xs font-semibold uppercase tracking-[0.22em] text-[#b17a1e]'>
Workspace status Workspace status
</p> </p>
<p className='mt-1 text-sm text-[#647068]'> <p className='mt-1 text-sm text-[#72798a]'>
Review sessions, clients, tasks, and shared client materials. Review sessions, clients, tasks, and shared client materials.
</p> </p>
</div> </div>
<Link <Link
href='/' href='/'
className='rounded-full border border-[#ded8cc] bg-white px-3 py-1.5 text-sm font-semibold text-[#17201b] shadow-sm' className='rounded-full border border-[#19192d]/10 bg-white px-3 py-1.5 text-sm font-semibold text-[#19192d] shadow-sm'
> >
Public site Public site
</Link> </Link>

View File

@ -37,7 +37,7 @@ function Panel({
}) { }) {
return ( return (
<section <section
className={`rounded-lg border border-[#ded8cc] bg-white shadow-[0_18px_60px_rgba(23,32,27,0.07)] ${className}`} className={`rounded-lg border border-[#19192d]/10 bg-white shadow-[0_18px_60px_rgba(23,32,27,0.07)] ${className}`}
> >
{children} {children}
</section> </section>
@ -87,8 +87,8 @@ const ClientPortal = () => {
<SectionMain> <SectionMain>
<div className='mx-auto max-w-7xl'> <div className='mx-auto max-w-7xl'>
<div className='mb-4 grid gap-4 xl:grid-cols-[0.95fr_1.05fr]'> <div className='mb-4 grid gap-4 xl:grid-cols-[0.95fr_1.05fr]'>
<div className='rounded-lg bg-[#17201b] p-5 text-white'> <div className='rounded-lg bg-[#19192d] p-5 text-white'>
<div className='flex items-center gap-3 text-[#d8b15e]'> <div className='flex items-center gap-3 text-[#b17a1e]'>
<BaseIcon path={mdiAccountCircle} size={18} /> <BaseIcon path={mdiAccountCircle} size={18} />
<span className='text-xs font-semibold uppercase tracking-[0.22em]'> <span className='text-xs font-semibold uppercase tracking-[0.22em]'>
Client portal Client portal
@ -97,19 +97,19 @@ const ClientPortal = () => {
<h1 className='mt-3 text-xl font-semibold'> <h1 className='mt-3 text-xl font-semibold'>
Client portal preview Client portal preview
</h1> </h1>
<p className='mt-2 max-w-2xl text-sm leading-6 text-[#d9d5ca]'> <p className='mt-2 max-w-2xl text-sm leading-6 text-[#fffdf9]'>
Preview the client-facing workspace with shared notes, Preview the client-facing workspace with shared notes,
commitments, resources, and a pre-session reflection prompt. commitments, resources, and a pre-session reflection prompt.
</p> </p>
</div> </div>
<Panel className='p-4'> <Panel className='p-4'>
<label className='block text-xs font-semibold uppercase tracking-[0.22em] text-[#9a6a2f]'> <label className='block text-xs font-semibold uppercase tracking-[0.22em] text-[#b17a1e]'>
Preview as client Preview as client
</label> </label>
<select <select
value={clientId} value={clientId}
onChange={(event) => setClientId(event.target.value)} onChange={(event) => setClientId(event.target.value)}
className='mt-4 w-full rounded-lg border border-[#d8d1c2] bg-white px-3 py-2 text-[#17201b] outline-none focus:border-[#245c4c] focus:ring-2 focus:ring-[#245c4c]/15' className='mt-4 w-full rounded-lg border border-[#19192d]/10 bg-white px-3 py-2 text-[#19192d] outline-none focus:border-[#35b7a5] focus:ring-2 focus:ring-[#35b7a5]/15'
> >
{clients.map((client) => ( {clients.map((client) => (
<option key={client.id} value={client.id}> <option key={client.id} value={client.id}>
@ -117,7 +117,7 @@ const ClientPortal = () => {
</option> </option>
))} ))}
</select> </select>
<p className='mt-4 text-sm leading-6 text-[#68736c]'> <p className='mt-4 text-sm leading-6 text-[#72798a]'>
MVP note: this is still a coach-visible preview. Final client MVP note: this is still a coach-visible preview. Final client
access should be a client role or magic-link route. access should be a client role or magic-link route.
</p> </p>
@ -127,28 +127,28 @@ const ClientPortal = () => {
{portalClient && ( {portalClient && (
<div className='grid gap-4 xl:grid-cols-[1.05fr_0.95fr]'> <div className='grid gap-4 xl:grid-cols-[1.05fr_0.95fr]'>
<Panel className='overflow-hidden'> <Panel className='overflow-hidden'>
<div className='bg-[#fbfaf6] p-5'> <div className='bg-[#fffdf9] p-5'>
<p className='text-xs font-semibold uppercase tracking-[0.22em] text-[#9a6a2f]'> <p className='text-xs font-semibold uppercase tracking-[0.22em] text-[#b17a1e]'>
Your coaching workspace Your coaching workspace
</p> </p>
<h2 className='mt-2 text-xl font-semibold text-[#17201b]'> <h2 className='mt-2 text-xl font-semibold text-[#19192d]'>
{portalClient.name} {portalClient.name}
</h2> </h2>
<p className='mt-4 max-w-2xl leading-6 text-[#4f5a53]'> <p className='mt-4 max-w-2xl leading-6 text-[#72798a]'>
{portalClient.goals} {portalClient.goals}
</p> </p>
</div> </div>
<div className='p-5'> <div className='p-5'>
<div className='flex items-center gap-3'> <div className='flex items-center gap-3'>
<span className='grid h-8 w-8 place-items-center rounded-full bg-[#e8f1ec] text-[#245c4c]'> <span className='grid h-8 w-8 place-items-center rounded-full bg-[#f3fbf8] text-[#35b7a5]'>
<BaseIcon path={mdiMessageReplyTextOutline} size={18} /> <BaseIcon path={mdiMessageReplyTextOutline} size={18} />
</span> </span>
<div> <div>
<h3 className='text-lg font-semibold text-[#17201b]'> <h3 className='text-lg font-semibold text-[#19192d]'>
Shared session notes Shared session notes
</h3> </h3>
<p className='text-sm text-[#68736c]'> <p className='text-sm text-[#72798a]'>
Only coach-approved notes appear here. Only coach-approved notes appear here.
</p> </p>
</div> </div>
@ -158,12 +158,12 @@ const ClientPortal = () => {
{(portalClient.sessions || []).map((session) => ( {(portalClient.sessions || []).map((session) => (
<div <div
key={session.id} key={session.id}
className='rounded-lg border border-[#ded8cc] bg-white p-5' className='rounded-lg border border-[#19192d]/10 bg-white p-5'
> >
<p className='font-semibold text-[#17201b]'> <p className='font-semibold text-[#19192d]'>
{session.title} {session.title}
</p> </p>
<p className='mt-3 leading-6 text-[#4f5a53]'> <p className='mt-3 leading-6 text-[#72798a]'>
{session.shared_client_notes} {session.shared_client_notes}
</p> </p>
</div> </div>
@ -174,8 +174,8 @@ const ClientPortal = () => {
<div className='space-y-6'> <div className='space-y-6'>
<Panel> <Panel>
<div className='border-b border-[#ded8cc] p-5'> <div className='border-b border-[#19192d]/10 p-5'>
<h3 className='text-lg font-semibold text-[#17201b]'> <h3 className='text-lg font-semibold text-[#19192d]'>
Commitments Commitments
</h3> </h3>
</div> </div>
@ -183,16 +183,16 @@ const ClientPortal = () => {
{(portalClient.action_items || []).map((item) => ( {(portalClient.action_items || []).map((item) => (
<div <div
key={item.id} key={item.id}
className='flex gap-3 rounded-lg border border-[#ded8cc] bg-[#fbfaf6] p-4' className='flex gap-3 rounded-lg border border-[#19192d]/10 bg-[#fffdf9] p-4'
> >
<span className='mt-0.5 grid h-8 w-8 flex-none place-items-center rounded-full bg-[#245c4c] text-white'> <span className='mt-0.5 grid h-8 w-8 flex-none place-items-center rounded-full bg-[#35b7a5] text-white'>
<BaseIcon path={mdiCheckCircleOutline} size={18} /> <BaseIcon path={mdiCheckCircleOutline} size={18} />
</span> </span>
<div> <div>
<p className='font-semibold text-[#17201b]'> <p className='font-semibold text-[#19192d]'>
{item.title} {item.title}
</p> </p>
<p className='mt-1 text-sm text-[#68736c]'> <p className='mt-1 text-sm text-[#72798a]'>
{item.status.replace('_', ' ')} {item.status.replace('_', ' ')}
</p> </p>
</div> </div>
@ -202,8 +202,8 @@ const ClientPortal = () => {
</Panel> </Panel>
<Panel> <Panel>
<div className='border-b border-[#ded8cc] p-5'> <div className='border-b border-[#19192d]/10 p-5'>
<h3 className='text-lg font-semibold text-[#17201b]'> <h3 className='text-lg font-semibold text-[#19192d]'>
Resources Resources
</h3> </h3>
</div> </div>
@ -212,17 +212,17 @@ const ClientPortal = () => {
<a <a
key={resource.id} key={resource.id}
href={resource.url} href={resource.url}
className='flex items-center justify-between gap-4 rounded-lg border border-[#ded8cc] bg-white p-4 transition hover:bg-[#fbfaf6]' className='flex items-center justify-between gap-4 rounded-lg border border-[#19192d]/10 bg-white p-4 transition hover:bg-[#fffdf9]'
> >
<div className='flex gap-3'> <div className='flex gap-3'>
<span className='grid h-8 w-8 place-items-center rounded-full bg-[#f0ede6] text-[#9a6a2f]'> <span className='grid h-8 w-8 place-items-center rounded-full bg-[#fbf8f1] text-[#b17a1e]'>
<BaseIcon path={mdiBookOpenVariant} size={18} /> <BaseIcon path={mdiBookOpenVariant} size={18} />
</span> </span>
<div> <div>
<p className='font-semibold text-[#17201b]'> <p className='font-semibold text-[#19192d]'>
{resource.title} {resource.title}
</p> </p>
<p className='mt-1 text-sm leading-6 text-[#68736c]'> <p className='mt-1 text-sm leading-6 text-[#72798a]'>
{resource.description} {resource.description}
</p> </p>
</div> </div>
@ -230,21 +230,21 @@ const ClientPortal = () => {
<BaseIcon <BaseIcon
path={mdiChevronRight} path={mdiChevronRight}
size={18} size={18}
className='text-[#245c4c]' className='text-[#35b7a5]'
/> />
</a> </a>
))} ))}
</div> </div>
</Panel> </Panel>
<Panel className='bg-[#e8f1ec] p-4'> <Panel className='bg-[#f3fbf8] p-4'>
<p className='text-xs font-semibold uppercase tracking-[0.22em] text-[#245c4c]'> <p className='text-xs font-semibold uppercase tracking-[0.22em] text-[#35b7a5]'>
Pre-session reflection Pre-session reflection
</p> </p>
<h3 className='mt-2 text-lg font-semibold text-[#17201b]'> <h3 className='mt-2 text-lg font-semibold text-[#19192d]'>
What changed since last time? What changed since last time?
</h3> </h3>
<p className='mt-3 leading-6 text-[#4f5a53]'> <p className='mt-3 leading-6 text-[#72798a]'>
Final MVP should let the client answer this before a Final MVP should let the client answer this before a
session, then feed the response into the coach prep brief. session, then feed the response into the coach prep brief.
</p> </p>

View File

@ -55,7 +55,7 @@ function Panel({
}) { }) {
return ( return (
<section <section
className={`rounded-lg border border-[#ded8cc] bg-white shadow-[0_18px_60px_rgba(23,32,27,0.07)] ${className}`} className={`rounded-lg border border-[#19192d]/10 bg-white shadow-[0_18px_60px_rgba(23,32,27,0.07)] ${className}`}
> >
{children} {children}
</section> </section>
@ -64,7 +64,7 @@ function Panel({
function EmptyState({ label }: { label: string }) { function EmptyState({ label }: { label: string }) {
return ( return (
<p className='rounded-lg border border-dashed border-[#d8d1c2] bg-[#fbfaf6] p-4 text-sm text-[#68736c]'> <p className='rounded-lg border border-dashed border-[#19192d]/10 bg-[#fffdf9] p-4 text-sm text-[#72798a]'>
{label} {label}
</p> </p>
); );
@ -113,33 +113,33 @@ const Clients = () => {
</Head> </Head>
<SectionMain> <SectionMain>
<div className='mx-auto max-w-7xl'> <div className='mx-auto max-w-7xl'>
<div className='mb-4 flex flex-col justify-between gap-4 rounded-lg bg-[#17201b] p-5 text-white md:flex-row md:items-end'> <div className='mb-4 flex flex-col justify-between gap-4 rounded-lg bg-[#19192d] p-5 text-white md:flex-row md:items-end'>
<div> <div>
<div className='flex items-center gap-3 text-[#d8b15e]'> <div className='flex items-center gap-3 text-[#b17a1e]'>
<BaseIcon path={mdiAccountGroup} size={18} /> <BaseIcon path={mdiAccountGroup} size={18} />
<span className='text-xs font-semibold uppercase tracking-[0.22em]'> <span className='text-xs font-semibold uppercase tracking-[0.22em]'>
Client CRM Client CRM
</span> </span>
</div> </div>
<h1 className='mt-3 text-xl font-semibold'>Client records</h1> <h1 className='mt-3 text-xl font-semibold'>Client records</h1>
<p className='mt-2 max-w-2xl text-sm leading-6 text-[#d9d5ca]'> <p className='mt-2 max-w-2xl text-sm leading-6 text-[#fffdf9]'>
Open a client record to review goals, coach notes, recent Open a client record to review goals, coach notes, recent
sessions, and commitments. sessions, and commitments.
</p> </p>
</div> </div>
<div className='rounded-full bg-white/10 px-3 py-1.5 text-sm font-semibold text-[#f5ead5]'> <div className='rounded-full bg-white/10 px-3 py-1.5 text-sm font-semibold text-[#fbf8f1]'>
{clients.length} clients {clients.length} clients
</div> </div>
</div> </div>
<div className='grid gap-4 xl:grid-cols-[0.85fr_1.15fr]'> <div className='grid gap-4 xl:grid-cols-[0.85fr_1.15fr]'>
<Panel className='overflow-hidden'> <Panel className='overflow-hidden'>
<div className='border-b border-[#ded8cc] p-5'> <div className='border-b border-[#19192d]/10 p-5'>
<p className='text-xs font-semibold uppercase tracking-[0.22em] text-[#9a6a2f]'> <p className='text-xs font-semibold uppercase tracking-[0.22em] text-[#b17a1e]'>
Coaching relationships Coaching relationships
</p> </p>
</div> </div>
<div className='divide-y divide-[#eee8dc]'> <div className='divide-y divide-[#19192d]/10'>
{clients.map((client) => ( {clients.map((client) => (
<button <button
key={client.id} key={client.id}
@ -147,20 +147,20 @@ const Clients = () => {
onClick={() => selectClient(client.id)} onClick={() => selectClient(client.id)}
className={`block w-full p-5 text-left transition ${ className={`block w-full p-5 text-left transition ${
selectedClient?.id === client.id selectedClient?.id === client.id
? 'bg-[#e8f1ec]' ? 'bg-[#f3fbf8]'
: 'bg-white hover:bg-[#fbfaf6]' : 'bg-white hover:bg-[#fffdf9]'
}`} }`}
> >
<div className='flex items-start justify-between gap-3'> <div className='flex items-start justify-between gap-3'>
<div> <div>
<p className='font-semibold text-[#17201b]'> <p className='font-semibold text-[#19192d]'>
{client.name} {client.name}
</p> </p>
<p className='mt-1 text-sm text-[#68736c]'> <p className='mt-1 text-sm text-[#72798a]'>
{client.role_title} · {client.company} {client.role_title} · {client.company}
</p> </p>
</div> </div>
<span className='rounded-full bg-[#f0ede6] px-3 py-1 text-xs font-semibold text-[#6e5730]'> <span className='rounded-full bg-[#fbf8f1] px-3 py-1 text-xs font-semibold text-[#b17a1e]'>
{client.status} {client.status}
</span> </span>
</div> </div>
@ -173,7 +173,7 @@ const Clients = () => {
.map((tag) => ( .map((tag) => (
<span <span
key={tag} key={tag}
className='rounded-full bg-white px-3 py-1 text-xs text-[#68736c]' className='rounded-full bg-white px-3 py-1 text-xs text-[#72798a]'
> >
{tag} {tag}
</span> </span>
@ -189,22 +189,22 @@ const Clients = () => {
<Panel className='p-4'> <Panel className='p-4'>
<div className='flex flex-col justify-between gap-4 md:flex-row md:items-start'> <div className='flex flex-col justify-between gap-4 md:flex-row md:items-start'>
<div> <div>
<p className='text-xs font-semibold uppercase tracking-[0.22em] text-[#9a6a2f]'> <p className='text-xs font-semibold uppercase tracking-[0.22em] text-[#b17a1e]'>
{selectedClient.package?.title || 'Coaching client'} {selectedClient.package?.title || 'Coaching client'}
</p> </p>
<h2 className='mt-2 text-xl font-semibold text-[#17201b]'> <h2 className='mt-2 text-xl font-semibold text-[#19192d]'>
{selectedClient.name} {selectedClient.name}
</h2> </h2>
<p className='mt-2 text-[#68736c]'> <p className='mt-2 text-[#72798a]'>
{selectedClient.email} {selectedClient.email}
</p> </p>
</div> </div>
<div className='rounded-lg border border-[#ded8cc] bg-[#fbfaf6] p-4 md:min-w-56'> <div className='rounded-lg border border-[#19192d]/10 bg-[#fffdf9] p-4 md:min-w-56'>
<div className='flex items-center gap-2 text-sm font-semibold text-[#245c4c]'> <div className='flex items-center gap-2 text-sm font-semibold text-[#35b7a5]'>
<BaseIcon path={mdiCalendarClock} size={18} /> <BaseIcon path={mdiCalendarClock} size={18} />
Next session Next session
</div> </div>
<p className='mt-2 text-sm text-[#68736c]'> <p className='mt-2 text-sm text-[#72798a]'>
{selectedClient.next_session_at || {selectedClient.next_session_at ||
'No session scheduled'} 'No session scheduled'}
</p> </p>
@ -212,21 +212,21 @@ const Clients = () => {
</div> </div>
<div className='mt-4 grid gap-4 lg:grid-cols-2'> <div className='mt-4 grid gap-4 lg:grid-cols-2'>
<div className='rounded-lg bg-[#f7f5f1] p-5'> <div className='rounded-lg bg-[#fffdf9] p-5'>
<div className='flex items-center gap-2 text-sm font-semibold text-[#245c4c]'> <div className='flex items-center gap-2 text-sm font-semibold text-[#35b7a5]'>
<BaseIcon path={mdiTarget} size={18} /> <BaseIcon path={mdiTarget} size={18} />
Goals Goals
</div> </div>
<p className='mt-3 leading-6 text-[#4f5a53]'> <p className='mt-3 leading-6 text-[#72798a]'>
{selectedClient.goals} {selectedClient.goals}
</p> </p>
</div> </div>
<div className='rounded-lg bg-[#f7f5f1] p-5'> <div className='rounded-lg bg-[#fffdf9] p-5'>
<div className='flex items-center gap-2 text-sm font-semibold text-[#245c4c]'> <div className='flex items-center gap-2 text-sm font-semibold text-[#35b7a5]'>
<BaseIcon path={mdiFileDocumentOutline} size={18} /> <BaseIcon path={mdiFileDocumentOutline} size={18} />
Private coach notes Private coach notes
</div> </div>
<p className='mt-3 leading-6 text-[#4f5a53]'> <p className='mt-3 leading-6 text-[#72798a]'>
{selectedClient.notes} {selectedClient.notes}
</p> </p>
</div> </div>
@ -235,8 +235,8 @@ const Clients = () => {
<div className='grid gap-4 lg:grid-cols-2'> <div className='grid gap-4 lg:grid-cols-2'>
<Panel> <Panel>
<div className='border-b border-[#ded8cc] p-5'> <div className='border-b border-[#19192d]/10 p-5'>
<h3 className='text-lg font-semibold text-[#17201b]'> <h3 className='text-lg font-semibold text-[#19192d]'>
Session timeline Session timeline
</h3> </h3>
</div> </div>
@ -245,12 +245,12 @@ const Clients = () => {
(selectedClient.sessions || []).map((session) => ( (selectedClient.sessions || []).map((session) => (
<div <div
key={session.id} key={session.id}
className='rounded-lg border border-[#ded8cc] bg-[#fbfaf6] p-4' className='rounded-lg border border-[#19192d]/10 bg-[#fffdf9] p-4'
> >
<p className='font-semibold text-[#17201b]'> <p className='font-semibold text-[#19192d]'>
{session.title} {session.title}
</p> </p>
<p className='mt-2 text-sm leading-6 text-[#68736c]'> <p className='mt-2 text-sm leading-6 text-[#72798a]'>
{session.ai_summary} {session.ai_summary}
</p> </p>
</div> </div>
@ -262,8 +262,8 @@ const Clients = () => {
</Panel> </Panel>
<Panel> <Panel>
<div className='border-b border-[#ded8cc] p-5'> <div className='border-b border-[#19192d]/10 p-5'>
<h3 className='text-lg font-semibold text-[#17201b]'> <h3 className='text-lg font-semibold text-[#19192d]'>
Open commitments Open commitments
</h3> </h3>
</div> </div>
@ -272,19 +272,19 @@ const Clients = () => {
(selectedClient.action_items || []).map((item) => ( (selectedClient.action_items || []).map((item) => (
<div <div
key={item.id} key={item.id}
className='flex gap-3 rounded-lg border border-[#ded8cc] bg-white p-4' className='flex gap-3 rounded-lg border border-[#19192d]/10 bg-white p-4'
> >
<span className='mt-0.5 grid h-8 w-8 flex-none place-items-center rounded-full bg-[#e8f1ec] text-[#245c4c]'> <span className='mt-0.5 grid h-8 w-8 flex-none place-items-center rounded-full bg-[#f3fbf8] text-[#35b7a5]'>
<BaseIcon <BaseIcon
path={mdiCheckCircleOutline} path={mdiCheckCircleOutline}
size={18} size={18}
/> />
</span> </span>
<div> <div>
<p className='font-semibold text-[#17201b]'> <p className='font-semibold text-[#19192d]'>
{item.title} {item.title}
</p> </p>
<p className='mt-1 text-sm text-[#68736c]'> <p className='mt-1 text-sm text-[#72798a]'>
{item.status.replace('_', ' ')} {item.status.replace('_', ' ')}
</p> </p>
</div> </div>

View File

@ -68,7 +68,7 @@ function ShellCard({
}) { }) {
return ( return (
<section <section
className={`rounded-lg border border-[#ded8cc] bg-white shadow-[0_18px_60px_rgba(23,32,27,0.07)] ${className}`} className={`rounded-lg border border-[#19192d]/10 bg-white shadow-[0_18px_60px_rgba(23,32,27,0.07)] ${className}`}
> >
{children} {children}
</section> </section>
@ -125,8 +125,8 @@ const Dashboard = () => {
<SectionMain> <SectionMain>
<div className='mx-auto max-w-7xl'> <div className='mx-auto max-w-7xl'>
<div className='grid gap-4 xl:grid-cols-[1.1fr_0.9fr]'> <div className='grid gap-4 xl:grid-cols-[1.1fr_0.9fr]'>
<div className='rounded-lg bg-[#17201b] p-5 text-white shadow-[0_24px_80px_rgba(23,32,27,0.18)]'> <div className='rounded-lg bg-[#19192d] p-5 text-white shadow-[0_24px_80px_rgba(23,32,27,0.18)]'>
<div className='flex items-center gap-3 text-[#d8b15e]'> <div className='flex items-center gap-3 text-[#b17a1e]'>
<BaseIcon path={mdiViewDashboardOutline} size={18} /> <BaseIcon path={mdiViewDashboardOutline} size={18} />
<span className='text-xs font-semibold uppercase tracking-[0.22em]'> <span className='text-xs font-semibold uppercase tracking-[0.22em]'>
Workspace overview Workspace overview
@ -136,14 +136,14 @@ const Dashboard = () => {
Manage upcoming sessions, client notes, commitments, and Manage upcoming sessions, client notes, commitments, and
follow-up drafts. follow-up drafts.
</h1> </h1>
<p className='mt-3 max-w-2xl text-sm leading-6 text-[#d9d5ca]'> <p className='mt-3 max-w-2xl text-sm leading-6 text-[#fffdf9]'>
Review scheduled sessions, open tasks, recent notes, and drafts Review scheduled sessions, open tasks, recent notes, and drafts
that need approval. that need approval.
</p> </p>
<div className='mt-5 flex flex-wrap gap-3'> <div className='mt-5 flex flex-wrap gap-3'>
<Link <Link
href='/session-memory' href='/session-memory'
className='rounded-full bg-[#d8b15e] px-4 py-2 text-sm font-semibold text-[#17201b]' className='rounded-full bg-[#b17a1e] px-4 py-2 text-sm font-semibold text-[#19192d]'
> >
Generate session memory Generate session memory
</Link> </Link>
@ -157,30 +157,30 @@ const Dashboard = () => {
</div> </div>
<ShellCard className='p-4'> <ShellCard className='p-4'>
<p className='text-xs font-semibold uppercase tracking-[0.22em] text-[#9a6a2f]'> <p className='text-xs font-semibold uppercase tracking-[0.22em] text-[#b17a1e]'>
Next session prep Next session prep
</p> </p>
{nextSession ? ( {nextSession ? (
<div> <div>
<h2 className='mt-4 text-lg font-semibold text-[#17201b]'> <h2 className='mt-4 text-lg font-semibold text-[#19192d]'>
{nextSession.client?.name || 'Client session'} {nextSession.client?.name || 'Client session'}
</h2> </h2>
<p className='mt-1 text-sm text-[#68736c]'> <p className='mt-1 text-sm text-[#72798a]'>
{nextSession.title} {nextSession.title}
</p> </p>
<p className='mt-5 leading-6 text-[#4f5a53]'> <p className='mt-5 leading-6 text-[#72798a]'>
{nextSession.ai_summary} {nextSession.ai_summary}
</p> </p>
<Link <Link
href='/session-memory' href='/session-memory'
className='mt-4 inline-flex items-center gap-2 rounded-full bg-[#245c4c] px-3 py-1.5 text-sm font-semibold text-white' className='mt-4 inline-flex items-center gap-2 rounded-full bg-[#35b7a5] px-3 py-1.5 text-sm font-semibold text-white'
> >
Review memory Review memory
<BaseIcon path={mdiArrowRight} size={18} /> <BaseIcon path={mdiArrowRight} size={18} />
</Link> </Link>
</div> </div>
) : ( ) : (
<p className='mt-4 leading-6 text-[#68736c]'> <p className='mt-4 leading-6 text-[#72798a]'>
{loading {loading
? 'Loading your coaching workspace...' ? 'Loading your coaching workspace...'
: 'No upcoming session memory yet.'} : 'No upcoming session memory yet.'}
@ -195,14 +195,14 @@ const Dashboard = () => {
<ShellCard className='h-full p-5 transition hover:-translate-y-0.5 hover:shadow-[0_22px_60px_rgba(23,32,27,0.1)]'> <ShellCard className='h-full p-5 transition hover:-translate-y-0.5 hover:shadow-[0_22px_60px_rgba(23,32,27,0.1)]'>
<div className='flex items-start justify-between gap-4'> <div className='flex items-start justify-between gap-4'>
<div> <div>
<p className='text-sm font-semibold text-[#68736c]'> <p className='text-sm font-semibold text-[#72798a]'>
{stat.label} {stat.label}
</p> </p>
<p className='mt-2 text-2xl font-semibold text-[#17201b]'> <p className='mt-2 text-2xl font-semibold text-[#19192d]'>
{loading ? '...' : stat.value} {loading ? '...' : stat.value}
</p> </p>
</div> </div>
<span className='grid h-9 w-9 place-items-center rounded-full bg-[#e8f1ec] text-[#245c4c]'> <span className='grid h-9 w-9 place-items-center rounded-full bg-[#f3fbf8] text-[#35b7a5]'>
<BaseIcon path={stat.icon} size={19} /> <BaseIcon path={stat.icon} size={19} />
</span> </span>
</div> </div>
@ -213,10 +213,10 @@ const Dashboard = () => {
<div className='mt-4 grid gap-4 xl:grid-cols-[0.95fr_1.05fr]'> <div className='mt-4 grid gap-4 xl:grid-cols-[0.95fr_1.05fr]'>
<ShellCard> <ShellCard>
<div className='border-b border-[#ded8cc] p-4'> <div className='border-b border-[#19192d]/10 p-4'>
<div className='flex items-center justify-between gap-4'> <div className='flex items-center justify-between gap-4'>
<div> <div>
<p className='text-xs font-semibold uppercase tracking-[0.22em] text-[#9a6a2f]'> <p className='text-xs font-semibold uppercase tracking-[0.22em] text-[#b17a1e]'>
Client records Client records
</p> </p>
<h2 className='mt-2 text-lg font-semibold'> <h2 className='mt-2 text-lg font-semibold'>
@ -224,30 +224,30 @@ const Dashboard = () => {
</h2> </h2>
</div> </div>
<Link <Link
className='text-sm font-semibold text-[#245c4c]' className='text-sm font-semibold text-[#35b7a5]'
href='/clients' href='/clients'
> >
View all View all
</Link> </Link>
</div> </div>
</div> </div>
<div className='divide-y divide-[#eee8dc]'> <div className='divide-y divide-[#19192d]/10'>
{summary.activeClients.map((client) => ( {summary.activeClients.map((client) => (
<Link <Link
key={client.id} key={client.id}
href={`/clients?clientId=${client.id}`} href={`/clients?clientId=${client.id}`}
className='block p-5 transition hover:bg-[#fbfaf6]' className='block p-5 transition hover:bg-[#fffdf9]'
> >
<div className='flex items-start justify-between gap-4'> <div className='flex items-start justify-between gap-4'>
<div> <div>
<p className='font-semibold text-[#17201b]'> <p className='font-semibold text-[#19192d]'>
{client.name} {client.name}
</p> </p>
<p className='mt-1 text-sm text-[#68736c]'> <p className='mt-1 text-sm text-[#72798a]'>
{client.role_title} · {client.company} {client.role_title} · {client.company}
</p> </p>
</div> </div>
<span className='rounded-full bg-[#f0ede6] px-3 py-1 text-xs font-semibold text-[#6e5730]'> <span className='rounded-full bg-[#fbf8f1] px-3 py-1 text-xs font-semibold text-[#b17a1e]'>
{client.package?.title || 'Coaching'} {client.package?.title || 'Coaching'}
</span> </span>
</div> </div>
@ -257,10 +257,10 @@ const Dashboard = () => {
</ShellCard> </ShellCard>
<ShellCard> <ShellCard>
<div className='border-b border-[#ded8cc] p-4'> <div className='border-b border-[#19192d]/10 p-4'>
<div className='flex items-center justify-between gap-4'> <div className='flex items-center justify-between gap-4'>
<div> <div>
<p className='text-xs font-semibold uppercase tracking-[0.22em] text-[#9a6a2f]'> <p className='text-xs font-semibold uppercase tracking-[0.22em] text-[#b17a1e]'>
Recent intelligence Recent intelligence
</p> </p>
<h2 className='mt-2 text-lg font-semibold'> <h2 className='mt-2 text-lg font-semibold'>
@ -268,23 +268,23 @@ const Dashboard = () => {
</h2> </h2>
</div> </div>
<Link <Link
className='text-sm font-semibold text-[#245c4c]' className='text-sm font-semibold text-[#35b7a5]'
href='/session-memory' href='/session-memory'
> >
Open Open
</Link> </Link>
</div> </div>
</div> </div>
<div className='divide-y divide-[#eee8dc]'> <div className='divide-y divide-[#19192d]/10'>
{summary.nextSessions.map((session) => ( {summary.nextSessions.map((session) => (
<div key={session.id} className='p-5'> <div key={session.id} className='p-5'>
<p className='font-semibold text-[#17201b]'> <p className='font-semibold text-[#19192d]'>
{session.title} {session.title}
</p> </p>
<p className='mt-1 text-sm text-[#68736c]'> <p className='mt-1 text-sm text-[#72798a]'>
{session.client?.name} {session.client?.name}
</p> </p>
<p className='mt-3 leading-6 text-[#4f5a53]'> <p className='mt-3 leading-6 text-[#72798a]'>
{session.ai_summary} {session.ai_summary}
</p> </p>
</div> </div>

View File

@ -39,7 +39,7 @@ function Panel({
}) { }) {
return ( return (
<section <section
className={`rounded-lg border border-[#ded8cc] bg-white shadow-[0_18px_60px_rgba(23,32,27,0.07)] ${className}`} className={`rounded-lg border border-[#19192d]/10 bg-white shadow-[0_18px_60px_rgba(23,32,27,0.07)] ${className}`}
> >
{children} {children}
</section> </section>
@ -54,11 +54,11 @@ function OutputBlock({
children: React.ReactNode; children: React.ReactNode;
}) { }) {
return ( return (
<div className='rounded-lg border border-[#ded8cc] bg-[#fbfaf6] p-5'> <div className='rounded-lg border border-[#19192d]/10 bg-[#fffdf9] p-5'>
<p className='text-xs font-semibold uppercase tracking-[0.2em] text-[#9a6a2f]'> <p className='text-xs font-semibold uppercase tracking-[0.2em] text-[#b17a1e]'>
{title} {title}
</p> </p>
<div className='mt-3 leading-6 text-[#4f5a53]'>{children}</div> <div className='mt-3 leading-6 text-[#72798a]'>{children}</div>
</div> </div>
); );
} }
@ -107,8 +107,8 @@ const SessionMemory = () => {
</Head> </Head>
<SectionMain> <SectionMain>
<div className='mx-auto max-w-7xl'> <div className='mx-auto max-w-7xl'>
<div className='mb-4 rounded-lg bg-[#17201b] p-5 text-white'> <div className='mb-4 rounded-lg bg-[#19192d] p-5 text-white'>
<div className='flex items-center gap-3 text-[#d8b15e]'> <div className='flex items-center gap-3 text-[#b17a1e]'>
<BaseIcon path={mdiFileDocumentEditOutline} size={18} /> <BaseIcon path={mdiFileDocumentEditOutline} size={18} />
<span className='text-xs font-semibold uppercase tracking-[0.22em]'> <span className='text-xs font-semibold uppercase tracking-[0.22em]'>
Session Memory Session Memory
@ -118,7 +118,7 @@ const SessionMemory = () => {
Turn rough notes into follow-up, commitments, and next-session Turn rough notes into follow-up, commitments, and next-session
prep. prep.
</h1> </h1>
<p className='mt-2 max-w-3xl text-sm leading-6 text-[#d9d5ca]'> <p className='mt-2 max-w-3xl text-sm leading-6 text-[#fffdf9]'>
Paste session notes or a transcript, generate structured output, Paste session notes or a transcript, generate structured output,
then review and save the result before sharing anything with a then review and save the result before sharing anything with a
client. client.
@ -127,20 +127,20 @@ const SessionMemory = () => {
<div className='grid gap-4 xl:grid-cols-[0.85fr_1.15fr]'> <div className='grid gap-4 xl:grid-cols-[0.85fr_1.15fr]'>
<Panel className='p-4'> <Panel className='p-4'>
<p className='text-xs font-semibold uppercase tracking-[0.22em] text-[#9a6a2f]'> <p className='text-xs font-semibold uppercase tracking-[0.22em] text-[#b17a1e]'>
Raw session input Raw session input
</p> </p>
<h2 className='mt-2 text-lg font-semibold text-[#17201b]'> <h2 className='mt-2 text-lg font-semibold text-[#19192d]'>
Extract a session Extract a session
</h2> </h2>
<label className='mb-2 mt-4 block text-sm font-semibold text-[#526159]'> <label className='mb-2 mt-4 block text-sm font-semibold text-[#72798a]'>
Client Client
</label> </label>
<select <select
value={clientId} value={clientId}
onChange={(event) => setClientId(event.target.value)} onChange={(event) => setClientId(event.target.value)}
className='w-full rounded-lg border border-[#d8d1c2] bg-white px-3 py-2 text-[#17201b] outline-none focus:border-[#245c4c] focus:ring-2 focus:ring-[#245c4c]/15' className='w-full rounded-lg border border-[#19192d]/10 bg-white px-3 py-2 text-[#19192d] outline-none focus:border-[#35b7a5] focus:ring-2 focus:ring-[#35b7a5]/15'
> >
{clients.map((client) => ( {clients.map((client) => (
<option key={client.id} value={client.id}> <option key={client.id} value={client.id}>
@ -149,13 +149,13 @@ const SessionMemory = () => {
))} ))}
</select> </select>
<label className='mb-2 mt-5 block text-sm font-semibold text-[#526159]'> <label className='mb-2 mt-5 block text-sm font-semibold text-[#72798a]'>
Transcript or raw notes Transcript or raw notes
</label> </label>
<textarea <textarea
value={transcript} value={transcript}
onChange={(event) => setTranscript(event.target.value)} onChange={(event) => setTranscript(event.target.value)}
className='min-h-[220px] w-full rounded-lg border border-[#d8d1c2] bg-[#fbfaf6] px-3 py-2 leading-6 text-[#17201b] outline-none focus:border-[#245c4c] focus:ring-2 focus:ring-[#245c4c]/15' className='min-h-[220px] w-full rounded-lg border border-[#19192d]/10 bg-[#fffdf9] px-3 py-2 leading-6 text-[#19192d] outline-none focus:border-[#35b7a5] focus:ring-2 focus:ring-[#35b7a5]/15'
placeholder='Paste session transcript, coach notes, commitments, blockers, or a rough debrief...' placeholder='Paste session transcript, coach notes, commitments, blockers, or a rough debrief...'
/> />
<div className='mt-5'> <div className='mt-5'>
@ -172,14 +172,14 @@ const SessionMemory = () => {
<Panel className='p-4'> <Panel className='p-4'>
<div className='flex items-start justify-between gap-4'> <div className='flex items-start justify-between gap-4'>
<div> <div>
<p className='text-xs font-semibold uppercase tracking-[0.22em] text-[#9a6a2f]'> <p className='text-xs font-semibold uppercase tracking-[0.22em] text-[#b17a1e]'>
AI draft AI draft
</p> </p>
<h2 className='mt-2 text-lg font-semibold text-[#17201b]'> <h2 className='mt-2 text-lg font-semibold text-[#19192d]'>
Review before sharing Review before sharing
</h2> </h2>
</div> </div>
<span className='rounded-full bg-[#e8f1ec] px-3 py-1 text-xs font-semibold text-[#245c4c]'> <span className='rounded-full bg-[#f3fbf8] px-3 py-1 text-xs font-semibold text-[#35b7a5]'>
Coach approved Coach approved
</span> </span>
</div> </div>
@ -200,14 +200,14 @@ const SessionMemory = () => {
<div className='flex flex-wrap gap-3'> <div className='flex flex-wrap gap-3'>
<button <button
type='button' type='button'
className='inline-flex items-center gap-2 rounded-full bg-[#245c4c] px-3 py-1.5 text-sm font-semibold text-white' className='inline-flex items-center gap-2 rounded-full bg-[#35b7a5] px-3 py-1.5 text-sm font-semibold text-white'
> >
<BaseIcon path={mdiCheckCircleOutline} size={18} /> <BaseIcon path={mdiCheckCircleOutline} size={18} />
Save final memory Save final memory
</button> </button>
<button <button
type='button' type='button'
className='inline-flex items-center gap-2 rounded-full border border-[#ded8cc] bg-white px-3 py-1.5 text-sm font-semibold text-[#17201b]' className='inline-flex items-center gap-2 rounded-full border border-[#19192d]/10 bg-white px-3 py-1.5 text-sm font-semibold text-[#19192d]'
> >
<BaseIcon path={mdiContentCopy} size={18} /> <BaseIcon path={mdiContentCopy} size={18} />
Copy follow-up Copy follow-up
@ -215,13 +215,13 @@ const SessionMemory = () => {
</div> </div>
</div> </div>
) : ( ) : (
<div className='mt-4 rounded-lg border border-dashed border-[#d8d1c2] bg-[#fbfaf6] p-4'> <div className='mt-4 rounded-lg border border-dashed border-[#19192d]/10 bg-[#fffdf9] p-4'>
<BaseIcon <BaseIcon
path={mdiLightbulbOnOutline} path={mdiLightbulbOnOutline}
size={22} size={22}
className='text-[#d8b15e]' className='text-[#b17a1e]'
/> />
<p className='mt-4 leading-6 text-[#68736c]'> <p className='mt-4 leading-6 text-[#72798a]'>
Generate a structured memory through the AppWizzy AI Generate a structured memory through the AppWizzy AI
proxy. The result should stay reviewable: summary, proxy. The result should stay reviewable: summary,
commitments, blockers, homework, follow-up, and prep for commitments, blockers, homework, follow-up, and prep for
@ -232,33 +232,33 @@ const SessionMemory = () => {
</Panel> </Panel>
<Panel> <Panel>
<div className='border-b border-[#ded8cc] p-5'> <div className='border-b border-[#19192d]/10 p-5'>
<h2 className='text-lg font-semibold text-[#17201b]'> <h2 className='text-lg font-semibold text-[#19192d]'>
Recent memories Recent memories
</h2> </h2>
</div> </div>
<div className='divide-y divide-[#eee8dc]'> <div className='divide-y divide-[#19192d]/10'>
{sessions.map((session) => ( {sessions.map((session) => (
<div key={session.id} className='p-5'> <div key={session.id} className='p-5'>
<div className='flex items-start justify-between gap-4'> <div className='flex items-start justify-between gap-4'>
<div> <div>
<p className='font-semibold text-[#17201b]'> <p className='font-semibold text-[#19192d]'>
{session.title} {session.title}
</p> </p>
<p className='mt-1 text-sm text-[#68736c]'> <p className='mt-1 text-sm text-[#72798a]'>
{session.client?.name} {session.client?.name}
</p> </p>
</div> </div>
<BaseIcon <BaseIcon
path={mdiSendOutline} path={mdiSendOutline}
size={18} size={18}
className='text-[#245c4c]' className='text-[#35b7a5]'
/> />
</div> </div>
<p className='mt-3 leading-6 text-[#4f5a53]'> <p className='mt-3 leading-6 text-[#72798a]'>
{session.ai_summary} {session.ai_summary}
</p> </p>
<p className='mt-3 text-sm font-semibold text-[#245c4c]'> <p className='mt-3 text-sm font-semibold text-[#35b7a5]'>
{session.key_topics} {session.key_topics}
</p> </p>
</div> </div>