Add Footer component config guideline
parent
225f1d86fd
commit
6c9ef63d48
|
|
@ -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