feat: add component for footer

This commit is contained in:
Nam Doan 2025-12-08 16:36:16 +07:00
parent dbe12845b0
commit 216a579564
3 changed files with 20 additions and 3 deletions

View File

@ -61,11 +61,9 @@ export default function VtCountrySelectClient({
const selectedItem = useMemo(() => { const selectedItem = useMemo(() => {
return items.find((i) => i.text === value) return items.find((i) => i.text === value)
}, [items, value]) }, [items, value])
if (!triggerText && items.length === 0) { if (!triggerText && items.length === 0) {
return null return null
} }
return ( return (
<Select value={value} onValueChange={handleChange}> <Select value={value} onValueChange={handleChange}>
<Select.Trigger <Select.Trigger
@ -87,7 +85,7 @@ export default function VtCountrySelectClient({
/> />
)} )}
</span> </span>
{selectedItem?.text.toUpperCase() || value} <ChevronDown /> {props.trigger?.isDisplayFullname ? (selectedItem?.label || value) : (selectedItem?.text.toUpperCase() || value)} <ChevronDown />
</Select.Trigger> </Select.Trigger>
<Select.Content> <Select.Content>
{items.length > 0 && {items.length > 0 &&

View File

@ -0,0 +1,17 @@
import { LayoutComponentDefinition, LayoutContext } from "@vibentec/component-map"
import { DynamicLayoutRenderer } from "@vibentec/renderer"
export default function VtSocialLinks({
nodes,
context,
}: {
nodes: LayoutComponentDefinition
context: LayoutContext
}) {
const props = nodes.config ?? {}
return (
<div className={props.className ?? ""}>
{nodes.children && <DynamicLayoutRenderer nodes={nodes.children} context={context} />}
</div>
)
}

View File

@ -22,6 +22,7 @@ import VtInput from "@modules/layout/templates/vt-input"
import VtCurrencySelect from "@modules/layout/templates/vt-currency-select" import VtCurrencySelect from "@modules/layout/templates/vt-currency-select"
import VtMenuItem from "@modules/layout/templates/vt-menu-item" import VtMenuItem from "@modules/layout/templates/vt-menu-item"
import VtCountryCodeSelect from "@modules/layout/templates/vt-country-select/server" import VtCountryCodeSelect from "@modules/layout/templates/vt-country-select/server"
import VtSocialLinks from "@modules/layout/templates/vt-social-link"
type ComponentConfig = Record<string, any>; type ComponentConfig = Record<string, any>;
@ -69,6 +70,7 @@ export const componentMap: Record<string, ComponentRenderer> = {
VtCartButton: nodesContextRenderer(VtCartButton), VtCartButton: nodesContextRenderer(VtCartButton),
VtCurrencySelect: nodesContextRenderer(VtCurrencySelect), VtCurrencySelect: nodesContextRenderer(VtCurrencySelect),
VtCountryCodeSelect: nodesContextRenderer(VtCountryCodeSelect), VtCountryCodeSelect: nodesContextRenderer(VtCountryCodeSelect),
VtSocialLinks: nodesContextRenderer(VtSocialLinks),
Link: nodesContextRenderer(VtLink), Link: nodesContextRenderer(VtLink),
Input: nodesContextRenderer(VtInput), Input: nodesContextRenderer(VtInput),
Image: nodesContextRenderer(VtImage), Image: nodesContextRenderer(VtImage),