Page:
Carousel Feedback Component Guideline
Pages
Abstract layout template
Carousel Feedback Component Guideline
Category Highlight Section Guidelines
Footer component config guideline
Footer component guideline config
Guidelines for Component Design
Header component guideline config
Homepage Category Highlight Component Guidelines setup
Layout Template System Guidelines
Product Card config Guideline
VtBrand usage guideline
VtFeedbackCard component guideline
This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
VtFeedback — Usage & JSON Configuration
Overview
VtFeedbackrenders a horizontally scrolling carousel of review items with optional autoplay and next/prev controls.- Driven by design JSON; no code changes required to style or populate content.
- Component location:
src/modules/home/components/vt-feedback/index.tsx. - Mapping and rendering are handled by
src/vibentec/component-map.tsxandsrc/vibentec/renderer.tsx.
Where To Configure
- The active design JSON is loaded by
src/vibentec/configloader.tsusingjsonFileNames.namDrsquatch. - Edit
config/nam.drsquatch.design.json(or switch to another file viasrc/vibentec/devJsonFileNames.ts). - Typical placement is under
pages.Home.
Minimal JSON Snippet
{
"VtFeedback": {
"config": {
"title": "Customer Reviews",
"items": [
{ "rating": 5, "title": "Great!", "text": "Loved it.", "author": "Alice" },
{ "rating": 4, "title": "Solid", "text": "Works well.", "author": "Bob" }
]
}
}
}
Full Example
- Reference implementation in
config/nam.drsquatch.design.json.
{
"VtFeedback": {
"config": {
"title": "100,000+ Reviews From Squatchers",
"className": "content-container py-16",
"titleClassName": "text-[#1f3521] text-[28px] font-bold text-center mb-10",
"duration": 5,
"options": { "loop": true },
"itemClassName": "min-w-full px-6",
"starsClassName": "text-[#C4622C] text-xl leading-none",
"reviewTitleClassName": "text-[#1f3521] font-bold",
"reviewTextClassName": "text-[#1f3521]",
"authorClassName": "italic text-[#1f3521]",
"controls": "mt-6 flex items-center justify-center gap-4",
"items": [
{ "rating": 5, "title": "Ah-freaking-amazing!", "text": "…", "author": "Stephen B." },
{ "rating": 5, "title": "Best damn soap ever…period.", "text": "…", "author": "Chris H." },
{ "rating": 5, "title": "Hilarious…products awesome too", "text": "…", "author": "Mike C." }
]
}
}
}
Config Keys
- Content
title: Optional heading text shown above the carousel.items: Array of review objects with fieldsrating(0–5),title,text,author.
- Autoplay & carousel
duration: Seconds between slides;<= 0disables autoplay.options: Passed to Embla (useEmblaCarousel) for behavior such asloop.
- Styling classNames
className: Section container.titleClassName: Heading.itemClassName: Slide container.starsClassName: Stars row.reviewTitleClassName,reviewTextClassName,authorClassName: Review content.
controls: Any truthy string enables next/prev controls whenitems.length > 1.
Behavior Notes
- Stars rendering
- Stars are derived from
ratingviarenderStars. Values are clamped between 0 and 5.
- Stars are derived from
- Controls visibility
- Controls show only if there is more than one item and
controlsis truthy.
- Controls show only if there is more than one item and
- Autoplay
- Enabled when
duration > 0; uses Embla autoplay plugin with delayduration * 1000.
- Enabled when
Placement in Page JSON
{
"pages": {
"Home": [
{ "Hero": { "config": { /* ... */ } } },
{ "VtFeedback": { "config": { /* as above */ } } }
]
}
}
Switching the Active Design JSON
- Change
fileNameinsrc/vibentec/configloader.tsto another entry fromsrc/vibentec/devJsonFileNames.ts(e.g.,jsonFileNames.nam3Bear) and restart the dev server.