feat(auth): Implemented Session Persistence
This commit is contained in:
48
apps/web/src/features/layouts/DashboardLayout.tsx
Normal file
48
apps/web/src/features/layouts/DashboardLayout.tsx
Normal file
@@ -0,0 +1,48 @@
|
||||
import React from 'react';
|
||||
import PageHeader from '../../common/components/PageHeader';
|
||||
import { motion } from 'framer-motion';
|
||||
|
||||
interface DashboardLayoutProps {
|
||||
title: string;
|
||||
subtitle?: string;
|
||||
actions?: React.ReactNode;
|
||||
children: React.ReactNode;
|
||||
maxWidth?: string;
|
||||
backAction?: React.ReactNode;
|
||||
}
|
||||
|
||||
const DashboardLayout: React.FC<DashboardLayoutProps> = ({
|
||||
title,
|
||||
subtitle,
|
||||
actions,
|
||||
children,
|
||||
maxWidth = 'max-w-7xl',
|
||||
backAction
|
||||
}) => {
|
||||
return (
|
||||
<div className="p-4 md:p-8">
|
||||
<div className={`${maxWidth} mx-auto`}>
|
||||
{backAction && (
|
||||
<motion.div
|
||||
initial={{ opacity: 0, x: -20 }}
|
||||
animate={{ opacity: 1, x: 0 }}
|
||||
transition={{ duration: 0.4, ease: [0.16, 1, 0.3, 1] }}
|
||||
className="mb-4"
|
||||
>
|
||||
{backAction}
|
||||
</motion.div>
|
||||
)}
|
||||
|
||||
<PageHeader
|
||||
title={title}
|
||||
subtitle={subtitle}
|
||||
actions={actions}
|
||||
/>
|
||||
|
||||
{children}
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default DashboardLayout;
|
||||
Reference in New Issue
Block a user