블록 템플릿 업데이트: 수정 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:
172
templates/blocks/new/split-panel-numbered.html
Normal file
172
templates/blocks/new/split-panel-numbered.html
Normal file
@@ -0,0 +1,172 @@
|
||||
<!-- 분할 패널: 좌측 카테고리 + 우측 번호 설명 -->
|
||||
<!--
|
||||
📋 split-panel-numbered
|
||||
─────────────────
|
||||
용도: 좌측 카테고리별 항목 + 우측 번호 설명 2단 배치
|
||||
슬롯:
|
||||
title_icon — 아이콘 이미지
|
||||
title (HTML — <span class="model">, <span class="sub">)
|
||||
left_bg_color — 좌측 셰브론 배경 CSS gradient (기본값 제공)
|
||||
categories[] (name, color, items[])
|
||||
mid_arrow_img — 중간 화살표 이미지
|
||||
right_items[] (number, text, badge_img)
|
||||
arrow_img — 우측 화살표 이미지
|
||||
Figma 원본: Frame 1171281202 (node 45:27, 1863×834)
|
||||
수학적 계산:
|
||||
scale = 1280 / 1863 = 0.68706
|
||||
title: Model=70px gradient(#cc5200→#883700), sub=50px gradient(#296b55→#000) (MCP 확인)
|
||||
cat bar: 단색 #417d38, #008e52, #008970 (픽셀 분석, MCP=이미지)
|
||||
right bar: #e8ede3 단색 (픽셀 분석)
|
||||
left-bg: 셰브론 형태 + alpha gradient (픽셀 분석)
|
||||
CSS 요소: title gradient text, cat bars, right bars, left-bg, mid-deco
|
||||
이미지 요소: title icon, 3D badge(일러스트), arrow(아이콘), mid arrow
|
||||
-->
|
||||
<div class="block-spn">
|
||||
{% if title_icon or title %}
|
||||
<div class="spn-header">
|
||||
{% if title_icon %}<div class="spn-title-icon"><img src="{{ title_icon | default('svg/icon_title.png') }}" alt=""></div>{% endif %}
|
||||
{% if title %}<div class="spn-title">{{ title|safe }}</div>{% endif %}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<div class="spn-body">
|
||||
<!-- 좌측 패널 -->
|
||||
<div class="spn-left">
|
||||
<div class="spn-left-bg"></div>
|
||||
<div class="spn-categories">
|
||||
{% for cat in categories %}
|
||||
<div class="spn-cat">
|
||||
<div class="spn-cat-bar" style="background: {{ cat.color|default('#417d38') }};"></div>
|
||||
<div class="spn-cat-title">{{ cat.name }}</div>
|
||||
<div class="spn-cat-items">
|
||||
{% for item in cat.items %}
|
||||
<div class="spn-cat-item">· {{ item }}</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 중간 장식 -->
|
||||
<div class="spn-mid">
|
||||
<div class="spn-mid-deco"></div>
|
||||
{% if mid_arrow_img %}<img src="{{ mid_arrow_img | default('svg/arrow_mid.png') }}" class="spn-mid-arrow" alt="">{% endif %}
|
||||
</div>
|
||||
|
||||
<!-- 우측 패널 -->
|
||||
<div class="spn-right">
|
||||
{% for item in right_items %}
|
||||
<div class="spn-row">
|
||||
{% if item.badge_img %}<div class="spn-badge"><img src="{{ item.badge_img }}" alt=""></div>
|
||||
{% elif loop.index <= 5 %}<div class="spn-badge"><img src="svg/badge_num_0{{ loop.index }}.png" alt=""></div>{% endif %}
|
||||
<div class="spn-row-bar">
|
||||
<div class="spn-row-text">{{ item.text }}</div>
|
||||
{% if arrow_img %}<img src="{{ arrow_img | default('svg/arrow_right.png') }}" class="spn-row-arrow" alt="">{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<style>
|
||||
.block-spn {
|
||||
display: flex; flex-direction: column;
|
||||
width: 100%; height: 100%;
|
||||
word-break: keep-all;
|
||||
}
|
||||
|
||||
.spn-header { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; }
|
||||
.spn-title-icon { flex: none; width: 26px; height: 27px; }
|
||||
.spn-title-icon img { width: 100%; height: 100%; object-fit: contain; }
|
||||
|
||||
/* title: MCP 확인 gradient text */
|
||||
.spn-title { font-weight: 900; line-height: 1.1; white-space: nowrap; }
|
||||
.spn-title .model {
|
||||
font-size: 34px;
|
||||
background-image: linear-gradient(180deg, #cc5200 0%, #883700 100%);
|
||||
-webkit-background-clip: text; background-clip: text; color: transparent;
|
||||
}
|
||||
.spn-title .sub {
|
||||
font-size: 24px;
|
||||
background-image: linear-gradient(180deg, #296b55 0%, #000 100%);
|
||||
-webkit-background-clip: text; background-clip: text; color: transparent;
|
||||
}
|
||||
|
||||
.spn-body { display: flex; flex: 1; }
|
||||
|
||||
/* 좌측: 셰브론 배경 (CSS clip-path + gradient) */
|
||||
.spn-left { position: relative; flex: 52; overflow: hidden; }
|
||||
.spn-left-bg {
|
||||
position: absolute; inset: 0;
|
||||
background: linear-gradient(90deg,
|
||||
rgba(192,213,208,0.19) 0%, rgba(195,214,209,0.66) 50%, rgba(211,227,226,1) 95%);
|
||||
clip-path: polygon(0 0, 82% 0, 100% 50%, 82% 100%, 0 100%);
|
||||
border-radius: 20px 0 0 20px;
|
||||
}
|
||||
|
||||
.spn-categories {
|
||||
position: relative; z-index: 1;
|
||||
display: flex; flex-direction: column;
|
||||
justify-content: space-between; flex: 1;
|
||||
padding: 8px 16px;
|
||||
}
|
||||
.spn-cat { display: flex; flex-direction: column; }
|
||||
|
||||
/* cat bar: CSS 단색 (픽셀 분석, Figma=이미지) */
|
||||
.spn-cat-bar {
|
||||
height: 34px; border-radius: 5px;
|
||||
background: linear-gradient(90deg, currentColor 0%, currentColor 85%, transparent 100%);
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
.spn-cat-title {
|
||||
position: relative; z-index: 1; margin-top: -30px;
|
||||
font-size: 20px; font-weight: 700; color: #fff;
|
||||
text-shadow: 0 0 4px rgba(0,0,0,0.5);
|
||||
padding-left: 12px; line-height: 34px;
|
||||
}
|
||||
.spn-cat-items { padding: 4px 12px; }
|
||||
.spn-cat-item {
|
||||
font-size: 16px; font-weight: 500; color: #000;
|
||||
line-height: 1.6; text-shadow: 0 0 4px rgba(0,0,0,0.5);
|
||||
}
|
||||
|
||||
/* 중간 장식: CSS radial-gradient */
|
||||
.spn-mid {
|
||||
position: relative; flex: none; width: 8%;
|
||||
display: flex; align-items: center; justify-content: center;
|
||||
}
|
||||
.spn-mid-deco {
|
||||
position: absolute; inset: 10% 0;
|
||||
background: radial-gradient(ellipse 60% 50% at 100% 50%,
|
||||
rgba(217,217,217,0.8) 0%, rgba(217,217,217,0.13) 60%, transparent 100%);
|
||||
}
|
||||
.spn-mid-arrow { position: relative; z-index: 1; width: 50px; height: 108px; object-fit: contain; }
|
||||
|
||||
/* 우측: 번호 + 설명 */
|
||||
.spn-right {
|
||||
flex: 40; display: flex; flex-direction: column;
|
||||
justify-content: space-between; padding: 4px 0;
|
||||
}
|
||||
.spn-row { display: flex; align-items: center; gap: 4px; }
|
||||
|
||||
/* badge: 3D 큐브 일러스트 → 이미지 유지 */
|
||||
.spn-badge { flex: none; width: 42px; height: 44px; z-index: 2; }
|
||||
.spn-badge img { width: 100%; height: 100%; object-fit: contain; }
|
||||
|
||||
/* right bar: CSS #e8ede3 (픽셀 분석) */
|
||||
.spn-row-bar {
|
||||
flex: 1; display: flex; align-items: center;
|
||||
min-height: 48px; padding: 8px 16px;
|
||||
background: #e8ede3; border-radius: 10px;
|
||||
}
|
||||
.spn-row-text {
|
||||
flex: 1; font-size: 18px; font-weight: 500;
|
||||
color: #11231d; line-height: 1.4;
|
||||
}
|
||||
.spn-row-arrow {
|
||||
flex: none; width: 22px; height: 21px;
|
||||
transform: rotate(180deg); object-fit: contain;
|
||||
}
|
||||
</style>
|
||||
Reference in New Issue
Block a user