fix: Production Workflow 카드 크기·위치 균일화
- Flexbox + items-center → CSS Grid 전환 (모든 컬럼 동일 너비) - 카드 h-full + flex flex-col 로 높이 균등 (description 길이 무관) - description flex-1 + 태그 mt-auto 로 하단 칩 정렬 통일 - 화살표 absolute -right-3 분리 (카드 너비에 영향 없음) - step 수 4·5·6·7·8 모두 grid-cols 명시 (Tailwind purge 안전) 7개 데모 (view/banobagi/grand/wonjin/ts/irum/o2o) 모두 적용 - step 4: irum / step 5: view / step 6: 나머지 5개 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>main
parent
a9de4ecc3c
commit
dc6e2f0504
|
|
@ -144,43 +144,55 @@ export default function ContentStrategy({ data }: ContentStrategyProps) {
|
|||
)}
|
||||
|
||||
{/* Tab 3: Production Workflow */}
|
||||
{activeTab === 'workflow' && (
|
||||
<motion.div
|
||||
className="flex md:flex-row flex-col gap-4 items-stretch"
|
||||
animate={{ opacity: 1, y: 0 }}
|
||||
transition={{ duration: 0.4 }}
|
||||
>
|
||||
{data.workflow.map((step, i) => (
|
||||
<div key={step.step} className="flex md:flex-row flex-col items-center gap-4 flex-1">
|
||||
<motion.div
|
||||
className="flex-1 w-full rounded-2xl border border-slate-100 bg-white shadow-sm p-5"
|
||||
animate={{ opacity: 1, y: 0 }}
|
||||
transition={{ duration: 0.4, delay: i * 0.1 }}
|
||||
>
|
||||
<div className="w-10 h-10 rounded-full bg-gradient-to-r from-[#4F1DA1] to-[#021341] text-white font-bold flex items-center justify-center mb-3">
|
||||
{step.step}
|
||||
</div>
|
||||
<h4 className="font-semibold text-[#0A1128] mb-1">{step.name}</h4>
|
||||
<p className="text-sm text-slate-600 mb-3">{step.description}</p>
|
||||
<div className="flex flex-wrap gap-2">
|
||||
<span className="rounded-full bg-[#F3F0FF] text-[#4A3A7C] px-2 py-1 text-xs">
|
||||
{step.owner}
|
||||
</span>
|
||||
<span className="rounded-full bg-slate-100 text-slate-600 px-2 py-1 text-xs">
|
||||
{step.duration}
|
||||
</span>
|
||||
</div>
|
||||
</motion.div>
|
||||
{i < data.workflow.length - 1 && (
|
||||
<ArrowRight
|
||||
size={20}
|
||||
className="text-slate-300 shrink-0 hidden md:block"
|
||||
/>
|
||||
)}
|
||||
</div>
|
||||
))}
|
||||
</motion.div>
|
||||
)}
|
||||
{activeTab === 'workflow' && (() => {
|
||||
// step 수에 따라 동일 너비 grid 컬럼 매핑 (Tailwind purge 안전)
|
||||
const cols = data.workflow.length;
|
||||
const gridColsClass =
|
||||
cols <= 3 ? 'md:grid-cols-3'
|
||||
: cols === 4 ? 'md:grid-cols-4'
|
||||
: cols === 5 ? 'md:grid-cols-5'
|
||||
: cols === 6 ? 'md:grid-cols-6'
|
||||
: cols === 7 ? 'md:grid-cols-7'
|
||||
: 'md:grid-cols-8';
|
||||
|
||||
return (
|
||||
<motion.div
|
||||
className={`grid grid-cols-1 ${gridColsClass} gap-4`}
|
||||
animate={{ opacity: 1, y: 0 }}
|
||||
transition={{ duration: 0.4 }}
|
||||
>
|
||||
{data.workflow.map((step, i) => (
|
||||
<div key={step.step} className="relative">
|
||||
<motion.div
|
||||
className="h-full w-full rounded-2xl border border-slate-100 bg-white shadow-sm p-5 flex flex-col"
|
||||
animate={{ opacity: 1, y: 0 }}
|
||||
transition={{ duration: 0.4, delay: i * 0.1 }}
|
||||
>
|
||||
<div className="w-10 h-10 rounded-full bg-gradient-to-r from-[#4F1DA1] to-[#021341] text-white font-bold flex items-center justify-center mb-3 shrink-0">
|
||||
{step.step}
|
||||
</div>
|
||||
<h4 className="font-semibold text-[#0A1128] mb-1">{step.name}</h4>
|
||||
<p className="text-sm text-slate-600 mb-3 flex-1">{step.description}</p>
|
||||
<div className="flex flex-wrap gap-2 mt-auto">
|
||||
<span className="rounded-full bg-[#F3F0FF] text-[#4A3A7C] px-2 py-1 text-xs">
|
||||
{step.owner}
|
||||
</span>
|
||||
<span className="rounded-full bg-slate-100 text-slate-600 px-2 py-1 text-xs">
|
||||
{step.duration}
|
||||
</span>
|
||||
</div>
|
||||
</motion.div>
|
||||
{i < data.workflow.length - 1 && (
|
||||
<ArrowRight
|
||||
size={20}
|
||||
className="text-slate-300 absolute -right-3 top-1/2 -translate-y-1/2 hidden md:block z-10"
|
||||
/>
|
||||
)}
|
||||
</div>
|
||||
))}
|
||||
</motion.div>
|
||||
);
|
||||
})()}
|
||||
|
||||
{/* Tab 4: Repurposing */}
|
||||
{activeTab === 'repurposing' && (
|
||||
|
|
|
|||
Loading…
Reference in New Issue