Add expand collapse in hero title

pull/8189/head
Kamran Ahmed 3 months ago
parent c0d4faa385
commit 1d3a785027
  1. 4
      src/components/Dashboard/PersonalDashboard.tsx
  2. 1
      src/components/HeroSection/HeroItemsGroup.tsx
  3. 33
      src/components/HeroSection/HeroTitle.tsx

@ -122,13 +122,13 @@ function DashboardStats(props: DashboardStatsProps) {
label="topics done today" label="topics done today"
isLoading={isLoading} isLoading={isLoading}
/> />
<DashboardStatItem {/* <DashboardStatItem
icon={FolderGit2} icon={FolderGit2}
iconClassName="text-blue-500" iconClassName="text-blue-500"
value={finishedProjectsCount} value={finishedProjectsCount}
label="projects finished" label="projects finished"
isLoading={isLoading} isLoading={isLoading}
/> /> */}
</div> </div>
<button <button

@ -42,6 +42,7 @@ export function HeroItemsGroup(props: HeroItemsGroupProps) {
isLoading={isLoading} isLoading={isLoading}
title={title} title={title}
rightContent={!isCollapsed && rightContent} rightContent={!isCollapsed && rightContent}
isCollapsed={isCollapsed}
/> />
{!isCollapsed && ( {!isCollapsed && (
<div className="mt-3 grid grid-cols-1 gap-2 sm:grid-cols-2 md:grid-cols-3"> <div className="mt-3 grid grid-cols-1 gap-2 sm:grid-cols-2 md:grid-cols-3">

@ -1,15 +1,24 @@
import type { ReactNode } from 'react'; import type { ReactNode } from 'react';
import { Spinner } from '../ReactIcons/Spinner.tsx'; import { Spinner } from '../ReactIcons/Spinner.tsx';
import { ChevronDown, ChevronsDownUp, ChevronsUpDown } from 'lucide-react';
import { cn } from '../../lib/classname.ts';
type HeroTitleProps = { type HeroTitleProps = {
icon: any; icon: any;
isLoading?: boolean; isLoading?: boolean;
title: string | ReactNode; title: string | ReactNode;
rightContent?: ReactNode; rightContent?: ReactNode;
isCollapsed?: boolean;
}; };
export function HeroTitle(props: HeroTitleProps) { export function HeroTitle(props: HeroTitleProps) {
const { isLoading = false, title, icon, rightContent } = props; const {
isLoading = false,
title,
icon,
rightContent,
isCollapsed = false,
} = props;
return ( return (
<div className="flex items-center justify-between"> <div className="flex items-center justify-between">
@ -21,6 +30,28 @@ export function HeroTitle(props: HeroTitleProps) {
</span> </span>
)} )}
{title} {title}
{!isLoading && (
<button
className={cn(
'ml-2 inline-flex items-center gap-1 rounded-md bg-slate-800 py-0.5 pl-1 pr-1.5 text-xs uppercase tracking-wider text-slate-400 hover:bg-slate-700',
{
'bg-transparent text-slate-600 hover:bg-slate-800 hover:text-slate-400':
!isCollapsed,
},
)}
>
{isCollapsed && (
<>
<ChevronsUpDown className="h-3.5 w-3.5" /> Expand
</>
)}
{!isCollapsed && (
<>
<ChevronsDownUp className="h-3.5 w-3.5" /> Collapse
</>
)}
</button>
)}
</p> </p>
<div>{rightContent}</div> <div>{rightContent}</div>
</div> </div>

Loading…
Cancel
Save