8pt

Story Stat Carousel

Story Stat Carousel•Cards
Overview

A horizontal customer story carousel: side cards show only a fictional wordmark while the center card expands into a story summary, a quote with a gradient left border, three sample stats, an avatar byline and a read button. Click a side card or the arrows to slide smoothly.

Taken from the page template Niancheng AI App Builder Home. Use it on its own, or combine it with the other components from the same template to rebuild the full page.

Plain HTML, CSS and a little vanilla JS, with no framework dependency. Copy the prompt into Claude Code, Cursor, Trae or Codex and the model adds Story Stat Carousel to your project in your colors.

Where to use it

Sections that present information in groups: features, case studies and work, team members, article lists.

Install

With Builder, install it with the 8pt CLI or call it directly from an editor connected to 8pt MCP.

$ npm i -g @8pt-dev/cli && 8pt add story-stat-carousel
mcp › Use 8pt MCP to call get_component("story-stat-carousel")

Code

Source for Story Stat Carousel. Motion uses only transform and opacity and respects the Reduce motion setting.

<section class="x-ssc"><div class="ssc-h"><h2>成果,都在生产环境里</h2><p>这些团队用念成做出了自己需要的软件,如今生意就跑在上面。</p><a href="#" class="ssc-all">查看全部客户故事<svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><path d="M9 6l6 6-6 6"/></svg></a></div><div class="ssc-vp"><div class="ssc-tr"><article class="ssc-c on" data-i="0"><div class="ssc-wm"><span class="wm wm0">青檐学社</span></div><div class="ssc-full"><div class="ssc-top"><span class="wm wm0">青檐学社</span><span class="ssc-tag">示意数据</span></div><div class="ssc-mid"><div><p class="ssc-s">三个大学生从零做出一套 AI 学习系统,帮任何人学得更快。</p><blockquote>“当我发现它真的能把我想要的东西做出来,第一反应是:这是我见过最酷的工具。”</blockquote></div><dl><div><dt>¥96 万</dt><dd>上线 30 天年化收入</dd></div><div><dt>2600+</dt><dd>两天内注册用户</dd></div><div><dt>¥5400 万</dt><dd>宣布的合作规模</dd></div></dl></div><div class="ssc-ft"><img src="https://8pt.dev/api/media/f905a6898be726e4e2c08376.webp" alt="" loading="lazy"><div><b>许清禾</b><small>联合创始人</small></div><a href="#" class="ssc-rd">阅读故事<svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M13 6l6 6-6 6"/></svg></a></div></div></article><article class="ssc-c" data-i="1"><div class="ssc-wm"><span class="wm wm1">禾序<i>物流</i></span></div><div class="ssc-full"><div class="ssc-top"><span class="wm wm1">禾序<i>物流</i></span><span class="ssc-tag">示意数据</span></div><div class="ssc-mid"><div><p class="ssc-s">一个四人运营团队,用一个周末替换掉了三套零散的调度表格。</p><blockquote>“以前要等排期的内部工具,现在我们自己下午就能改好。”</blockquote></div><dl><div><dt>3 套</dt><dd>被替换的旧系统</dd></div><div><dt>40%</dt><dd>调度耗时减少</dd></div><div><dt>2 天</dt><dd>从想法到上线</dd></div></dl></div><div class="ssc-ft"><img src="https://8pt.dev/api/media/49f1008001811031d1c6d91a.webp" alt="" loading="lazy"><div><b>周以宁</b><small>运营负责人</small></div><a href="#" class="ssc-rd">阅读故事<svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M13 6l6 6-6 6"/></svg></a></div></div></article><article class="ssc-c" data-i="2"><div class="ssc-wm"><span class="wm wm2">栖木 <b>HOME</b></span></div><div class="ssc-full"><div class="ssc-top"><span class="wm wm2">栖木 <b>HOME</b></span><span class="ssc-tag">示意数据</span></div><div class="ssc-mid"><div><p class="ssc-s">家居品牌把季度上新页交给设计师自己搭,开发只负责审核。</p><blockquote>“设计稿到上线之间那道墙,终于拆掉了。”</blockquote></div><dl><div><dt>12 个</dt><dd>季度上新页面</dd></div><div><dt>1 人</dt><dd>即可维护</dd></div><div><dt>3 倍</dt><dd>迭代速度</dd></div></dl></div><div class="ssc-ft"><img src="https://8pt.dev/api/media/c347fe6cd95f3f4671c6987a.webp" alt="" loading="lazy"><div><b>林栖</b><small>品牌设计总监</small></div><a href="#" class="ssc-rd">阅读故事<svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M13 6l6 6-6 6"/></svg></a></div></div></article><article class="ssc-c" data-i="3"><div class="ssc-wm"><span class="wm wm3">鹿鸣<i>诊所</i></span></div><div class="ssc-full"><div class="ssc-top"><span class="wm wm3">鹿鸣<i>诊所</i></span><span class="ssc-tag">示意数据</span></div><div class="ssc-mid"><div><p class="ssc-s">连锁诊所做了一套预约与回访工具,前台不再手抄排班。</p><blockquote>“患者自己约、自己改,前台终于能专心接待了。”</blockquote></div><dl><div><dt>8 家</dt><dd>门店同时使用</dd></div><div><dt>65%</dt><dd>线上预约占比</dd></div><div><dt>0</dt><dd>额外开发人力</dd></div></dl></div><div class="ssc-ft"><img src="https://8pt.dev/api/media/38505aff3ebbc7e9e0b7cb8c.webp" alt="" loading="lazy"><div><b>陈野</b><small>数字化负责人</small></div><a href="#" class="ssc-rd">阅读故事<svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M13 6l6 6-6 6"/></svg></a></div></div></article></div></div><div class="ssc-nav"><button type="button" class="ssc-p" aria-label="上一个"><svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><path d="M15 6l-6 6 6 6"/></svg></button><button type="button" class="ssc-n" aria-label="下一个"><svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><path d="M9 6l6 6-6 6"/></svg></button></div></section>
.x-ssc{--ink:#1C1C1A;--mut:#5F5F5B;--line:#E9E7E1;--cream:#FCFBF8;--card:#F5F4EF;--blue:#4C7DFF;--pink:#FF66CC;--red:#FF2E63;--org:#FF7A1A;font-family:"Inter","Noto Sans SC","PingFang SC","Microsoft YaHei",system-ui,sans-serif;-webkit-font-smoothing:antialiased;text-align:left;color:var(--ink)}.x-ssc,.x-ssc *{box-sizing:border-box}.x-ssc a{color:inherit;text-decoration:none}.x-ssc button{font:inherit;cursor:pointer;color:inherit}.x-ssc img{display:block;max-width:100%}.x-ssc{width:100%;padding:0;overflow:hidden}.x-ssc .ssc-h{text-align:center;max-width:520px;margin:0 auto 34px;padding:0 20px}.x-ssc h2{margin:0 0 12px;font-size:clamp(28px,3vw,36px);font-weight:600;letter-spacing:-.03em}.x-ssc .ssc-h p{margin:0 0 18px;font-size:15px;line-height:1.6;color:var(--mut)}.x-ssc .ssc-all{display:inline-flex;align-items:center;gap:4px;font-size:14px;font-weight:500}.x-ssc .ssc-all:hover{text-decoration:underline}.x-ssc .ssc-vp{position:relative;height:440px}.x-ssc .ssc-tr{position:absolute;left:0;top:0;display:flex;align-items:center;gap:14px;height:100%;transition:transform .7s cubic-bezier(.65,0,.25,1)}.x-ssc .ssc-c{position:relative;flex:none;width:300px;height:340px;border-radius:16px;background:var(--card);overflow:hidden;transition:width .7s cubic-bezier(.65,0,.25,1),height .7s cubic-bezier(.65,0,.25,1),background .4s;cursor:pointer}.x-ssc .ssc-c.on{width:min(720px,calc(100vw - 40px));height:420px;background:#F1F0EB;cursor:default}.x-ssc .ssc-wm{position:absolute;inset:0;display:grid;place-items:center;transition:opacity .4s}.x-ssc .ssc-c.on .ssc-wm{opacity:0;pointer-events:none}.x-ssc .ssc-full{position:absolute;left:0;top:0;width:min(720px,calc(100vw - 40px));height:420px;padding:26px 30px;display:flex;flex-direction:column;opacity:0;transition:opacity .35s;pointer-events:none}.x-ssc .ssc-c.on .ssc-full{opacity:1;transition-delay:.35s;pointer-events:auto}.x-ssc .wm{font-size:28px;color:#1C1C1A;letter-spacing:.02em;white-space:nowrap}.x-ssc .wm0{font-family:"Noto Serif SC",serif;font-weight:600}.x-ssc .wm1{font-weight:800;letter-spacing:.12em}.x-ssc .wm1 i,.x-ssc .wm3 i{font-style:normal;font-weight:400;font-size:.6em;margin-left:4px;color:#666}.x-ssc .wm2{font-weight:300}.x-ssc .wm2 b{font-weight:700;letter-spacing:.2em;font-size:.7em}.x-ssc .wm3{font-weight:600;font-style:italic}.x-ssc .ssc-top{display:flex;align-items:center;justify-content:space-between}.x-ssc .ssc-top .wm{font-size:24px}.x-ssc .ssc-tag{font-size:11px;color:#8A8A85;border:1px solid #DDDCD6;border-radius:999px;padding:2px 8px}.x-ssc .ssc-mid{display:grid;grid-template-columns:1fr 190px;gap:30px;margin-top:30px;flex:1}.x-ssc .ssc-s{margin:0 0 20px;font-size:13px;line-height:1.6;color:#55554F}.x-ssc blockquote{margin:0;padding-left:14px;border-left:2px solid;border-image:linear-gradient(180deg,#FF7A1A,#FF3D8B,#7B61FF) 1;font-size:19px;font-weight:500;line-height:1.45;letter-spacing:-.01em}.x-ssc dl{margin:0;display:grid;gap:14px;align-content:start}.x-ssc dt{font-size:26px;font-weight:500;letter-spacing:-.02em}.x-ssc dd{margin:2px 0 0;font-size:12px;color:var(--mut)}.x-ssc .ssc-ft{display:flex;align-items:center;gap:12px}.x-ssc .ssc-ft img{width:42px;height:42px;border-radius:8px;object-fit:cover}.x-ssc .ssc-ft b{display:block;font-size:13px;font-weight:500}.x-ssc .ssc-ft small{font-size:12px;color:var(--mut)}.x-ssc .ssc-rd{margin-left:auto;display:inline-flex;align-items:center;gap:6px;height:34px;padding:0 14px;border-radius:9px;background:#fff;box-shadow:0 0 0 1px var(--line),0 2px 4px rgba(0,0,0,.04);font-size:13px;font-weight:500;transition:box-shadow .2s}.x-ssc .ssc-rd:hover{box-shadow:0 0 0 1px #ccc,0 4px 10px rgba(0,0,0,.08)}.x-ssc .ssc-nav{display:flex;justify-content:center;gap:10px;margin-top:22px}.x-ssc .ssc-nav button{width:40px;height:40px;border-radius:10px;border:0;background:#fff;box-shadow:0 0 0 1px var(--line);display:grid;place-items:center;transition:background .2s}.x-ssc .ssc-nav button:hover{background:var(--card)}.x-ssc .ssc-nav button:disabled{opacity:.4;cursor:default}@media (max-width:700px){.x-ssc .ssc-vp{height:620px}.x-ssc .ssc-c.on,.x-ssc .ssc-full{height:600px}.x-ssc .ssc-mid{grid-template-columns:1fr;gap:18px;margin-top:20px}.x-ssc dl{grid-template-columns:repeat(3,1fr)}.x-ssc dt{font-size:19px}.x-ssc blockquote{font-size:16px}.x-ssc .ssc-full{padding:22px 20px}.x-ssc .ssc-c{width:260px}}@media (prefers-reduced-motion:reduce){.x-ssc *,.x-ssc *::before,.x-ssc *::after{animation:none!important;transition:none!important}}.x-ssc{padding:48px 0;background-image:radial-gradient(rgba(28,28,26,.12) 1.1px,transparent 1.4px);background-size:18px 18px;background-position:center}.x-ssc{width:1200px;max-width:100%;box-sizing:border-box}
(root) => {const vp=root.querySelector('.ssc-vp'),tr=root.querySelector('.ssc-tr'),cs=[...root.querySelectorAll('.ssc-c')],pv=root.querySelector('.ssc-p'),nx=root.querySelector('.ssc-n');let i=0;
const lay=()=>{const W=vp.clientWidth,gap=14,small=cs[0].classList.contains('on')?(cs[1]||cs[0]).offsetWidth:cs[0].offsetWidth;const sw=W<700?260:300,big=Math.min(720,W-40);let off=0;for(let k=0;k<i;k++)off+=sw+gap;tr.style.transform='translateX('+(W/2-off-big/2)+'px)';pv.disabled=i===0;nx.disabled=i===cs.length-1};
const go=n=>{i=Math.max(0,Math.min(cs.length-1,n));cs.forEach((c,k)=>c.classList.toggle('on',k===i));lay()};
const a=()=>go(i-1),b=()=>go(i+1),c=e=>{const el=e.target.closest('.ssc-c');if(el&&!el.classList.contains('on')){e.preventDefault();go(+el.dataset.i)}else if(e.target.closest('.ssc-rd'))e.preventDefault()};
pv.addEventListener('click',a);nx.addEventListener('click',b);tr.addEventListener('click',c);const ro=new ResizeObserver(lay);ro.observe(vp);go(1);
return ()=>{ro.disconnect();pv.removeEventListener('click',a);nx.removeEventListener('click',b)}}
Subscribe to Builder to see the full source.See pricing

Other components from this template

View all

Aurora Prompt Hero

Integration Tile Grid

Trio Capability Cards

Infra Tab Showcase

Wireframe Globe Arc

Growth Stat Chart

Gradient Footer Panel

More cards components

View all

Live Deploy Bento

Trio Capability Cards

Collage Topic Cards

Agent Use Cards

AI Feature Bento

Tagged Journal Cards

MCP Connect Steps

Masonry Review Wall

More components

View all

Tabbed Logo Testimonial

Dot Matrix Glow Hero

Dotted Globe Features

Chaos Versus Ship Split

Segmented Pricing Tiers

Floating Tile CTA Banner

Aurora Prompt Hero

Integration Tile Grid

Keep exploring