namds/refactor-base-layout #8

Merged
yen.nguyen merged 27 commits from namds/refactor-base-layout into main 2025-12-15 07:44:38 +00:00
6 changed files with 446 additions and 5 deletions
Showing only changes of commit 1e99ead658 - Show all commits

View File

@ -129,7 +129,7 @@
{
"Button": {
"config": {
"icon": "user",
"icon": "User",
"className": "shadow-none bg-transparent text-white hover:text-black"
}
}
@ -169,7 +169,447 @@
{
"Footer": {
"config": {
"copyrightText": "© 2025 MyShop"
"className": "content-container flex w-full bg-[#1f3521]",
"children": [
{
"Section": {
"config": {
"className": "grid grid-cols-2 w-full py-[40px]"
},
"children": [
{
"Section": {
"config": {
"className": "flex mr-8 gap-1 w-full gap-6"
},
"children": [
{
"Section": {
"config": {
"className": "flex mr-8 gap-1 w-full flex-col gap-6"
},
"children": [
{
"Link": {
"config": {
"label": "Help",
"href": "/",
"className": "text-[16px] leading-[125%] text-white flex hover:text-white font-bold"
}
}
},
{
"Link": {
"config": {
"label": "FAQ",
"href": "/",
"className": "text-[14px] leading-[160%] text-white flex mr-8 gap-1 hover:bg-transparent hover:text-white font-extralight"
}
}
},
{
"Link": {
"config": {
"label": "Track My Order",
"href": "/",
"className": "text-[14px] leading-[125%] text-white flex hover:text-white font-extralight"
}
}
},
{
"Link": {
"config": {
"label": "Store policies",
"href": "/",
"className": "text-[14px] leading-[125%] text-white flex hover:text-white font-extralight"
}
}
},
{
"Link": {
"config": {
"label": "Contact us",
"href": "/",
"className": "text-[14px] leading-[125%] text-white flex hover:text-white font-extralight"
}
}
},
{
"Link": {
"config": {
"label": "Placeholder",
"href": "/",
"className": "text-[14px] leading-[125%] text-white flex hover:text-white font-extralight"
}
}
},
{
"Link": {
"config": {
"label": "Placeholder",
"href": "/",
"className": "text-[14px] leading-[125%] text-white flex hover:text-white font-extralight"
}
}
},
{
"Link": {
"config": {
"label": "Placeholder",
"href": "/",
"className": "text-[14px] leading-[125%] text-white flex hover:text-white font-extralight"
}
}
},
{
"Link": {
"config": {
"label": "Placeholder",
"href": "/",
"className": "text-[14px] leading-[125%] text-white flex hover:text-white font-extralight"
}
}
}
]
}
},
{
"Section": {
"config": {
"className": "flex mr-8 gap-1 w-full flex-col gap-6"
},
"children": [
{
"Link": {
"config": {
"label": "Shop",
"href": "/",
"className": "text-[16px] leading-[125%] text-white flex hover:text-white font-bold"
}
}
},
{
"Link": {
"config": {
"label": "FAQ",
"href": "/",
"className": "text-[14px] leading-[160%] text-white flex mr-8 gap-1 hover:bg-transparent hover:text-white font-extralight"
}
}
},
{
"Link": {
"config": {
"label": "Track My Order",
"href": "/",
"className": "text-[14px] leading-[125%] text-white flex hover:text-white font-extralight"
}
}
},
{
"Link": {
"config": {
"label": "Store policies",
"href": "/",
"className": "text-[14px] leading-[125%] text-white flex hover:text-white font-extralight"
}
}
},
{
"Link": {
"config": {
"label": "Contact us",
"href": "/",
"className": "text-[14px] leading-[125%] text-white flex hover:text-white font-extralight"
}
}
},
{
"Link": {
"config": {
"label": "Placeholder",
"href": "/",
"className": "text-[14px] leading-[125%] text-white flex hover:text-white font-extralight"
}
}
},
{
"Link": {
"config": {
"label": "Placeholder",
"href": "/",
"className": "text-[14px] leading-[125%] text-white flex hover:text-white font-extralight"
}
}
},
{
"Link": {
"config": {
"label": "Placeholder",
"href": "/",
"className": "text-[14px] leading-[125%] text-white flex hover:text-white font-extralight"
}
}
},
{
"Link": {
"config": {
"label": "Placeholder",
"href": "/",
"className": "text-[14px] leading-[125%] text-white flex hover:text-white font-extralight"
}
}
}
]
}
},
{
"Section": {
"config": {
"className": "flex mr-8 gap-1 w-full flex-col gap-6"
},
"children": [
{
"Link": {
"config": {
"label": "Info",
"href": "/",
"className": "text-[16px] leading-[125%] text-white flex hover:text-white font-bold"
}
}
},
{
"Link": {
"config": {
"label": "FAQ",
"href": "/",
"className": "text-[14px] leading-[160%] text-white flex mr-8 gap-1 hover:bg-transparent hover:text-white font-extralight"
}
}
},
{
"Link": {
"config": {
"label": "Track My Order",
"href": "/",
"className": "text-[14px] leading-[125%] text-white flex hover:text-white font-extralight"
}
}
},
{
"Link": {
"config": {
"label": "Store policies",
"href": "/",
"className": "text-[14px] leading-[125%] text-white flex hover:text-white font-extralight"
}
}
},
{
"Link": {
"config": {
"label": "Contact us",
"href": "/",
"className": "text-[14px] leading-[125%] text-white flex hover:text-white font-extralight"
}
}
},
{
"Link": {
"config": {
"label": "Placeholder",
"href": "/",
"className": "text-[14px] leading-[125%] text-white flex hover:text-white font-extralight"
}
}
},
{
"Link": {
"config": {
"label": "Placeholder",
"href": "/",
"className": "text-[14px] leading-[125%] text-white flex hover:text-white font-extralight"
}
}
},
{
"Link": {
"config": {
"label": "Placeholder",
"href": "/",
"className": "text-[14px] leading-[125%] text-white flex hover:text-white font-extralight"
}
}
},
{
"Link": {
"config": {
"label": "Placeholder",
"href": "/",
"className": "text-[14px] leading-[125%] text-white flex hover:text-white font-extralight"
}
}
}
]
}
},
{
"Section": {
"config": {
"className": "flex mr-8 gap-1 w-full flex-col gap-6"
},
"children": [
{
"Image": {
"config": {
"src": "/b-corp-logo.webp",
"alt": "B Corp Logo",
"className": "w-[96px] h-[118px]"
}
}
}
]
}
}
]
}
},
{
"Section": {
"config": {
"className": "flex mr-8 gap-1 w-full flex-col gap-6"
},
"children": [
{
"Text": {
"config": {
"label": "Don't miss out on hot deals! Sign up and get up to 30% off.",
"className": "text-[16px] leading-[125%] text-white flex font-bold"
}
}
},
{
"Section": {
"config": {
"className": "flex w-full flex gap-6"
},
"children": [
{
"Input": {
"config": {
"placeholder": "Enter your email address",
"className": "w-[75%] rounded-md h-[48px] px-[16px] text-[16px] leading-[125%] text-white flex font-bold"
}
}
},
{
"Button": {
"config": {
"label": "Sign up",
"className": "w-[25%] rounded-md bg-[#cc6328] h-[48px] px-[16px] text-[16px] leading-[125%] text-white flex font-bold"
}
}
}
]
}
},
{
"Section": {
"config": {
"className": "flex w-full flex"
},
"children": [
{
"Button": {
"config": {
"icon": "Twitter",
"className": "text-white flex justify-start gap-1 shadow-none w-[50px] bg-transparent hover:bg-transparent"
}
}
},
{
"Button": {
"config": {
"icon": "Twitter",
"className": "text-white flex justify-start gap-1 shadow-none w-[50px] bg-transparent hover:bg-transparent"
}
}
},
{
"Button": {
"config": {
"icon": "Twitter",
"className": "text-white flex justify-start gap-1 shadow-none w-[50px] bg-transparent hover:bg-transparent"
}
}
},
{
"Button": {
"config": {
"icon": "Twitter",
"className": "text-white flex justify-start gap-1 shadow-none w-[50px] bg-transparent hover:bg-transparent"
}
}
},
{
"Button": {
"config": {
"icon": "Twitter",
"className": "text-white flex justify-start gap-1 shadow-none w-[50px] bg-transparent hover:bg-transparent"
}
}
}
]
}
}
]
}
},
{
"Section": {
"config": {
"className": "flex justify-center col-span-full w-full gap-1"
},
"children": [
{
"Text": {
"config": {
"label": "DR. SQUATCH is a registered trademark of Dr. Squatch, LLC © 2025, Dr. Squatch, LLC All rights reserved.",
"className": "text-[11px] mt-[3rem] leading-[125%] text-white flex"
}
}
},
{
"Text":{
"config":{
"label":"Terms of Use",
"className":"text-[11px] mt-[3rem] leading-[125%] text-orange-500 flex"
}
}
},
{
"Text":{
"config":{
"label":"|",
"className":"text-[11px] mt-[3rem] leading-[125%] text-white flex"
}
}
},
{
"Text":{
"config":{
"label":"Privacy Policy",
"className":"text-[11px] mt-[3rem] leading-[125%] text-orange-500 flex"
}
}
}
]
}
}
]
}
}
]
}
}
}

View File

@ -204,7 +204,6 @@
{
"Footer": {
"config": {
"copyrightText": "© 2025 MyShop",
"children": [
{
"Image": {

BIN
public/b-corp-logo.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.7 KiB

View File

@ -23,7 +23,7 @@ export default async function VtFooter({
const props = nodes?.config ?? {}
return (
<footer className="relative mx-auto duration-200 bg-white border-ui-border-base border-t-2">
<footer className={props?.className ?? ""}>
{props.children && <DynamicLayoutRenderer nodes={props.children} context={context} />}
</footer>
)

View File

@ -18,6 +18,7 @@ import VtButton from "@modules/layout/templates/vt-button"
import VtSearchInput from "@modules/layout/templates/vt-search-input"
import VtSection from "@modules/layout/templates/vt-section"
import VtText from "@modules/layout/templates/vt-text"
import VtInput from "@modules/layout/templates/vt-input"
type ComponentConfig = Record<string, any>;
@ -64,6 +65,7 @@ export const componentMap: Record<string, ComponentRenderer> = {
SearchInput: nodesContextRenderer(VtSearchInput),
VtCartButton: nodesContextRenderer(VtCartButton),
Link: nodesContextRenderer(VtLink),
Input: nodesContextRenderer(VtInput),
Image: nodesContextRenderer(VtImage),
Text: nodesContextRenderer(VtText),
Dropdown: nodesContextRenderer(VtDropdown),

View File

@ -2,7 +2,7 @@ import fs from "fs"
import path from "path"
import { jsonFileNames } from "./devJsonFileNames";
const fileName = jsonFileNames.namVibentec;
const fileName = jsonFileNames.namDrsquatch;
export async function loadDesignConfig() {
const filePath = path.join(process.cwd(), "config", fileName)