Add Footer component guideline config
parent
6c9ef63d48
commit
384a62f06e
|
|
@ -0,0 +1,163 @@
|
||||||
|
# Footer — JSON Configuration Guide
|
||||||
|
|
||||||
|
This guide explains how to configure `Footer` in `config/nam.vibentec.design.json`. It follows the current structure and does not use file line references.
|
||||||
|
|
||||||
|
## Location
|
||||||
|
- `Footer` lives under `layout` in the design JSON.
|
||||||
|
- You can have multiple `Footer` blocks (e.g., one primary content footer and one bottom bar).
|
||||||
|
- Each `Footer` has a `config` object and `left` / `center` / `right` arrays for child components.
|
||||||
|
|
||||||
|
## Minimal Structure
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"Footer": {
|
||||||
|
"config": {
|
||||||
|
"className": "content-container",
|
||||||
|
"leftClassName": "",
|
||||||
|
"centerClassName": "",
|
||||||
|
"rightClassName": "",
|
||||||
|
"left": [],
|
||||||
|
"center": [],
|
||||||
|
"right": []
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Core Config Keys
|
||||||
|
- `className`: overall footer CSS classes.
|
||||||
|
- `leftClassName` / `centerClassName` / `rightClassName`: per-region CSS classes.
|
||||||
|
- `left` / `center` / `right`: arrays of components to render in each region.
|
||||||
|
|
||||||
|
## Primary Content Footer
|
||||||
|
This section typically contains a hero (logo + description + CTA), menu columns, and legal links.
|
||||||
|
|
||||||
|
### Hero Block (`VtFooterHero`)
|
||||||
|
Common config keys:
|
||||||
|
- `logoSrc`, `logoAlt`, `logoClassName`: image source, alt text, and logo CSS.
|
||||||
|
- `title`, `description`: heading and short description.
|
||||||
|
- `cta`: `{ label, href }` to render a call-to-action button.
|
||||||
|
- Display classes: `className`, `ctaClassName`, `titleClassName`, `descriptionClassName`.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"VtFooterHero": {
|
||||||
|
"config": {
|
||||||
|
"logoSrc": "/your-logo.svg",
|
||||||
|
"logoAlt": "YourBrand",
|
||||||
|
"logoClassName": "h-[100px] w-[255px]",
|
||||||
|
"title": "Technology solutions for business",
|
||||||
|
"description": "Modernize infrastructure and optimize operations with an expert team.",
|
||||||
|
"cta": { "label": "Contact us", "href": "/contact" },
|
||||||
|
"ctaClassName": "ml-8",
|
||||||
|
"titleClassName": "ml-8",
|
||||||
|
"descriptionClassName": "ml-8 w-[320px]"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
Place inside `Footer.config.left` to show the hero in the left region.
|
||||||
|
|
||||||
|
### Menu Columns (`VtMenuItem`)
|
||||||
|
Used to create column-based link lists.
|
||||||
|
|
||||||
|
Config keys:
|
||||||
|
- `title`: column title.
|
||||||
|
- `items`: array of `{ text, href, icon? }`.
|
||||||
|
- CSS classes: `className` for the column, `itemClassName` for each item.
|
||||||
|
|
||||||
|
Example column:
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"VtMenuItem": {
|
||||||
|
"config": {
|
||||||
|
"title": "Company",
|
||||||
|
"className": "flex flex-col gap-y-2 text-[24px] font-semibold",
|
||||||
|
"itemClassName": "text-[1rem]",
|
||||||
|
"items": [
|
||||||
|
{ "text": "About us", "href": "/about" },
|
||||||
|
{ "text": "News", "href": "/news" },
|
||||||
|
{ "text": "Careers", "href": "/careers" }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
Add multiple `VtMenuItem` entries to `Footer.config.center` to render multiple columns.
|
||||||
|
|
||||||
|
### Right Region (Legal Links)
|
||||||
|
You can use `VtMenuItem` for links like Privacy Policy, Terms, Install Info.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"VtMenuItem": {
|
||||||
|
"config": {
|
||||||
|
"className": "flex flex-col gap-y-2 text-[24px] font-semibold",
|
||||||
|
"itemClassName": "text-[1rem]",
|
||||||
|
"items": [
|
||||||
|
{ "text": "Privacy Policy", "href": "/privacy" },
|
||||||
|
{ "text": "Terms", "href": "/terms" },
|
||||||
|
{ "text": "Install Info", "href": "/install" }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
Place inside `Footer.config.right`.
|
||||||
|
|
||||||
|
## Bottom Footer Bar
|
||||||
|
The second block is typically a bottom bar with copyright text and payment icons.
|
||||||
|
|
||||||
|
### `VtFooterBottom`
|
||||||
|
Config keys:
|
||||||
|
- `text`: copyright content.
|
||||||
|
- `icons`: array of icon names (e.g., `"Mastercard"`, `"PayPal"`, `"Visa"`).
|
||||||
|
|
||||||
|
Example:
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"Footer": {
|
||||||
|
"config": {
|
||||||
|
"className": "content-container h-[128px] w-full flex items-center justify-between",
|
||||||
|
"left": [
|
||||||
|
{
|
||||||
|
"VtFooterBottom": {
|
||||||
|
"config": {
|
||||||
|
"text": "©2025 YourBrand. All rights reserved",
|
||||||
|
"icons": ["Mastercard", "PayPal", "Visa"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Common Edits
|
||||||
|
- Update logo/title/description/CTA in `VtFooterHero`.
|
||||||
|
- Add/remove/edit links in `VtMenuItem` columns.
|
||||||
|
- Adjust CSS via `className`, `leftClassName`, `centerClassName`, `rightClassName`.
|
||||||
|
- Reorder components by moving items within `left`/`center`/`right` arrays.
|
||||||
|
- Update `text` and `icons` in `VtFooterBottom`.
|
||||||
|
|
||||||
|
## Adding New Components
|
||||||
|
1. Identify the target region (`left`, `center`, `right`).
|
||||||
|
2. Insert a new object with the component name and its `config`.
|
||||||
|
3. Follow existing CSS class conventions for consistent styling.
|
||||||
|
|
||||||
|
Example (add a small announcement):
|
||||||
|
```json
|
||||||
|
{ "AnnouncementBar": { "config": { "text": "Free shipping over €50" } } }
|
||||||
|
```
|
||||||
|
Add to `Footer.config.center` or another suitable region.
|
||||||
|
|
||||||
|
## Tips
|
||||||
|
- Keep JSON valid (commas, braces, quotes). Use a formatter if needed.
|
||||||
|
- Reuse existing CSS class conventions to keep styles consistent.
|
||||||
|
- Icon names must match the supported icon set.
|
||||||
|
- Use `left`/`center`/`right` to organize layout clearly.
|
||||||
|
|
||||||
|
This guide helps you configure the footer quickly following the current pattern.
|
||||||
Loading…
Reference in New Issue