블록 템플릿 업데이트: 수정 3개 + 신규 17개 + catalog.yaml 재정비
수정: - compare-2col-badge, compare-detail-gradient, hero-icon-cards 개선 신규 블록: - cards: category-strip-table, system-2col-center, hero-icon-cards_1 - emphasis: checklist-dark - visuals: cycle-orbit - new/: cards-3col-persona, compare-vs-rows, cycle-3way-intersect 등 8개 - redesign/: card_hero-icon-cards_1 - svg/: arc_left, arrow_conclusion, arrow_down, line_divider - BEPs: process-product-2col SVG + 테스트 catalog.yaml 전면 재정비 (슬롯 스키마, height_cost, 카테고리 정리) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
135
templates/blocks/new/issues-paired-rows.html
Normal file
135
templates/blocks/new/issues-paired-rows.html
Normal file
@@ -0,0 +1,135 @@
|
||||
<!-- 이슈 쌍 행: 좌/우 pill(두루마리 이미지) + 2열 텍스트 박스 -->
|
||||
<!--
|
||||
📋 issues-paired-rows
|
||||
─────────────────
|
||||
용도: 좌/우 대비되는 이슈를 쌍으로 나열. pill(두루마리)이 박스 위/아래로 걸침.
|
||||
슬롯:
|
||||
header (icon, title) — 선택
|
||||
pill_bg — 두루마리 배경 이미지 (R16 프레임 배치, crop 대상이므로 이미지 유지)
|
||||
rows[] (left {label, text}, right {label, text}, pills_bottom: bool)
|
||||
Figma 원본: Frame 1171281194 (node 45:19, 1857×1326)
|
||||
수학적 계산:
|
||||
scale = 1280 / 1857 = 0.68933
|
||||
pill: 458×95.6, width=24.7% of row
|
||||
pill R16 이미지 프레임: left:-45.3% width:145.3% (좌), left:0 width:151.25% (우)
|
||||
bottom pill: rotate(180deg) + 이미지 반전
|
||||
text: 36px → 25px, lh 65px → 45px
|
||||
pill label: 40px → 28px
|
||||
box: border 3px #60a451, radius 30px, bg rgba(250,237,203,0.15) (MCP 확인)
|
||||
divider: 1px dashed rgba(96,164,81,0.4)
|
||||
CSS 요소: box border/bg/radius, divider, header gradient text
|
||||
이미지 요소: pill_bg (두루마리, R16 crop), header icon
|
||||
-->
|
||||
<div class="block-ipr">
|
||||
{% if header %}
|
||||
<div class="ipr-header">
|
||||
{% if header.icon %}<div class="ipr-header-icon"><img src="{{ header.icon | default('svg/icon_header.png') }}" alt=""></div>{% endif %}
|
||||
<div class="ipr-header-title">{{ header.title }}</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<div class="ipr-rows">
|
||||
{% for row in rows %}
|
||||
<div class="ipr-row">
|
||||
{% if not row.pills_bottom %}
|
||||
<div class="ipr-pills ipr-pills--top">
|
||||
<div class="ipr-pill ipr-pill--left">
|
||||
{% if pill_bg %}<img src="{{ pill_bg | default('svg/pill_scroll.png') }}" alt="">{% endif %}
|
||||
<span class="ipr-pill-label">{{ row.left.label }}</span>
|
||||
</div>
|
||||
<div class="ipr-pill ipr-pill--right">
|
||||
{% if pill_bg %}<img src="{{ pill_bg | default('svg/pill_scroll.png') }}" alt="">{% endif %}
|
||||
<span class="ipr-pill-label">{{ row.right.label }}</span>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<div class="ipr-text-row">
|
||||
<div class="ipr-text">{{ row.left.text|safe }}</div>
|
||||
<div class="ipr-divider"></div>
|
||||
<div class="ipr-text ipr-text--right">{{ row.right.text|safe }}</div>
|
||||
</div>
|
||||
|
||||
{% if row.pills_bottom %}
|
||||
<div class="ipr-pills ipr-pills--bottom">
|
||||
<div class="ipr-pill ipr-pill--left">
|
||||
{% if pill_bg %}<img src="{{ pill_bg | default('svg/pill_scroll.png') }}" alt="">{% endif %}
|
||||
<span class="ipr-pill-label">{{ row.left.label }}</span>
|
||||
</div>
|
||||
<div class="ipr-pill ipr-pill--right">
|
||||
{% if pill_bg %}<img src="{{ pill_bg | default('svg/pill_scroll.png') }}" alt="">{% endif %}
|
||||
<span class="ipr-pill-label">{{ row.right.label }}</span>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<style>
|
||||
.block-ipr {
|
||||
display: flex; flex-direction: column;
|
||||
width: 100%; word-break: keep-all; padding: 12px 16px;
|
||||
}
|
||||
|
||||
/* header: MCP 확인 gradient(#cc5200→#883700) */
|
||||
.ipr-header { display: flex; align-items: center; gap: 8px; margin-bottom: 10px; }
|
||||
.ipr-header-icon { width: 28px; height: 28px; flex: none; }
|
||||
.ipr-header-icon img { width: 100%; height: 100%; object-fit: contain; }
|
||||
.ipr-header-title {
|
||||
font-weight: 700; font-size: 32px;
|
||||
background-image: linear-gradient(180deg, #cc5200 0%, #883700 100%);
|
||||
-webkit-background-clip: text; background-clip: text; color: transparent;
|
||||
text-shadow: 0 0 4px rgba(50,44,30,0.4);
|
||||
}
|
||||
|
||||
.ipr-rows { display: flex; flex-direction: column; gap: 6px; }
|
||||
|
||||
/* box: MCP 확인 border=#60a451, radius=30px, bg=rgba(250,237,203,0.15) */
|
||||
.ipr-row {
|
||||
border: 2px solid #60a451; border-radius: 16px;
|
||||
background: rgba(250,237,203,0.15);
|
||||
display: flex; flex-direction: column;
|
||||
}
|
||||
|
||||
/* pill 배치: 두루마리 이미지(R16 crop) */
|
||||
.ipr-pills { display: flex; justify-content: space-between; }
|
||||
.ipr-pills--top { margin-top: -1.8rem; }
|
||||
.ipr-pills--bottom { margin-bottom: -1.8rem; }
|
||||
|
||||
.ipr-pill {
|
||||
position: relative; width: 25%; height: 3.8rem;
|
||||
overflow: hidden; flex: none;
|
||||
}
|
||||
/* R16: 좌pill 우측 곡선만 보임, 우pill 좌측 곡선만 보임 */
|
||||
.ipr-pill--left img {
|
||||
position: absolute; top: 0; height: 100%;
|
||||
left: -45.3%; width: 145.3%;
|
||||
}
|
||||
.ipr-pill--right img {
|
||||
position: absolute; top: 0; height: 100%;
|
||||
left: 0; width: 151.25%;
|
||||
}
|
||||
/* bottom: rotate(180) + 이미지 반전 */
|
||||
.ipr-pills--bottom .ipr-pill { transform: rotate(180deg); }
|
||||
.ipr-pills--bottom .ipr-pill--left img { left: 0; width: 151.25%; }
|
||||
.ipr-pills--bottom .ipr-pill--right img { left: -45.3%; width: 145.3%; }
|
||||
|
||||
.ipr-pill-label {
|
||||
position: absolute; inset: 0;
|
||||
display: flex; align-items: center; justify-content: center;
|
||||
font-weight: 700; font-size: 20px; color: #fff;
|
||||
white-space: nowrap; z-index: 2;
|
||||
}
|
||||
.ipr-pills--bottom .ipr-pill-label { transform: rotate(180deg); }
|
||||
|
||||
/* 텍스트: 2열 grid */
|
||||
.ipr-text-row { display: grid; grid-template-columns: 1fr 1px 1fr; padding: 8px 12px; }
|
||||
.ipr-divider { border-left: 1px dashed rgba(96,164,81,0.4); margin: 4px 0; }
|
||||
.ipr-text {
|
||||
font-weight: 500; font-size: 18px; line-height: 1.8;
|
||||
color: #0c271e; padding: 4px 10px;
|
||||
}
|
||||
.ipr-text--right { text-align: right; }
|
||||
</style>
|
||||
Reference in New Issue
Block a user