feat(exporter): 섹션 엣지 3차 보강(FAQ 줄바꿈/Testimonials author 생략, Hero subheading 트림) + 테스트

This commit is contained in:
2025-11-14 23:36:25 +09:00
parent 4b9627d4ee
commit 3f7bf3f1c8
3 changed files with 78 additions and 5 deletions
+7 -5
View File
@@ -79,7 +79,7 @@ function renderTestimonials(section: { props: { items: Array<{ author: string; q
(it) => `
<figure class="testimonial">
<blockquote>“${escapeHtml(it.quote)}”</blockquote>
<figcaption>— ${escapeHtml(it.author)}</figcaption>
${it.author.length > 0 ? `<figcaption>— ${escapeHtml(it.author)}</figcaption>` : ''}
</figure>`
)
.join('')}
@@ -110,7 +110,9 @@ const escapeHtml = (s: string) =>
.replaceAll('"', '&quot;')
function renderHero(section: { props: { heading: string; subheading?: string; imageUrl: string } }, opts?: ExportOptions) {
const { heading, subheading } = section.props
const { heading } = section.props
const subheadingRaw = section.props.subheading
const subheading = subheadingRaw ? subheadingRaw.trim() : ''
const am = opts?.assetManager
const imageUrlRaw: string = section.props.imageUrl
const imageUrl = am ? am.rewriteUrl(imageUrlRaw) : imageUrlRaw
@@ -119,7 +121,7 @@ function renderHero(section: { props: { heading: string; subheading?: string; im
<div class="container">
<div class="text">
<h1 id="hero-heading">${escapeHtml(heading)}</h1>
${subheading ? `<p>${escapeHtml(subheading)}</p>` : ''}
${subheading.length > 0 ? `<p>${escapeHtml(subheading)}</p>` : ''}
</div>
<div class="media">
<img src="${escapeHtml(imageUrl)}" alt="${escapeHtml(heading)}" loading="lazy" decoding="async" />
@@ -276,8 +278,8 @@ function buildCss(page: Page) {
button:focus, a:focus, input:focus, select:focus, textarea:focus{ outline: 3px solid #2563eb; outline-offset:2px }
.faq-list{ list-style:none; padding:0; margin:0 }
.faq-item{ margin: .75rem 0 }
.faq-q{ font-size: 1rem; font-weight:600; }
.faq-a{ color:#334155 }
.faq-q{ font-size: 1rem; font-weight:600; overflow-wrap:anywhere }
.faq-a{ color:#334155; overflow-wrap:anywhere }
.btn-cta{ background: var(--primary); color:#fff; padding:.75rem 1rem; border-radius:.5rem; display:inline-block; text-decoration:none }
.features{ background:#f8fafc }
.features-list{ list-style:none; padding:0; margin:0; display:grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: .75rem }