You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

88 lines
2.8 KiB
TypeScript

// frontend/components/approvals/ApprovalsClient.tsx — 결재함 페이지 (approve-page.jsx 이식)
"use client";
import { Icon } from "@/components/Icon";
import { useApprovals } from "@/lib/hooks/useApprovals";
import { ApprovalCard } from "./ApprovalCard";
import { AutonomyCard } from "./AutonomyCard";
export function ApprovalsClient() {
const { data, error, setAutonomy, approve, undo, approveAll, reload } = useApprovals();
if (error) {
return (
<div className="dash-error" role="alert">
<p> .</p>
<button className="mini-cta" onClick={() => reload()}>
<Icon name="swap" />
</button>
</div>
);
}
if (!data) {
return (
<div className="dash-page">
<div className="pagehead">
<div>
<h1 className="ph-title"> </h1>
</div>
</div>
</div>
);
}
return (
<div className="dash-page">
<div className="pagehead">
<div>
<div className="ph-eyebrow">
<span> {data.saved_today} </span>
<span className="sep" />
<span> {data.auto_count_night}</span>
</div>
<h1 className="ph-title">
<em> </em>
</h1>
</div>
</div>
<div className="work">
<div className="board">
<ApprovalCard
saved={data.saved_today}
pending={data.pending}
done={data.done}
onApprove={approve}
onUndo={undo}
onApproveAll={approveAll}
/>
<AutonomyCard autonomy={data.autonomy} onPick={setAutonomy} />
{/* 활동 로그 카드 — approve-page.jsx 와 동일 */}
<section className="card">
<div className="ch">
<div className="ico">
<Icon name="clock" />
</div>
<div className="htext">
<h3> </h3>
<div className="sub"> </div>
</div>
<span className="count">{data.auto_count_night}</span>
</div>
<div className="appr-log pg">
{data.log.map((l) => (
<div className="al-row" key={l.id}>
<span className="al-time">{l.time}</span>
<span className="al-text">{l.text}</span>
</div>
))}
</div>
<div className="auton-note dim">
<Icon name="shield" />
·· .
</div>
</section>
</div>
</div>
</div>
);
}