@@ -6,9 +6,12 @@ import {
66 GithubLogoIcon ,
77 GlobeIcon ,
88 RedditLogoIcon ,
9+ ArrowUpRightIcon ,
910} from '@phosphor-icons/react' ;
1011import GenericModal from './GenericModal' ;
12+ import LuxeModal from './LuxeModal' ;
1113import { useSiteConfig } from '../context/SiteConfigContext' ;
14+ import { useVisualSettings } from '../context/VisualSettingsContext' ;
1215
1316const socialIcons = {
1417 GithubLogo : GithubLogoIcon ,
@@ -20,6 +23,35 @@ const socialIcons = {
2023
2124const ContactModal = ( { isOpen, onClose } ) => {
2225 const { config } = useSiteConfig ( ) ;
26+ const { fezcodexTheme } = useVisualSettings ( ) ;
27+
28+ if ( fezcodexTheme === 'luxe' ) {
29+ return (
30+ < LuxeModal isOpen = { isOpen } onClose = { onClose } title = "Establish Contact" >
31+ < div className = "flex flex-col gap-8" >
32+ < p className = "font-outfit text-sm text-[#1A1A1A]/60 italic leading-relaxed" >
33+ Choose a preferred channel to initiate communication with the primary node.
34+ </ p >
35+
36+ < div className = "grid grid-cols-1 gap-4" >
37+ { config ?. socials &&
38+ config . socials . map ( ( link ) => {
39+ const Icon = socialIcons [ link . icon ] || GlobeIcon ;
40+ return (
41+ < LuxeContactLink
42+ key = { link . id }
43+ href = { link . url }
44+ icon = { Icon }
45+ label = { link . label }
46+ value = { link . url . replace ( / ^ m a i l t o : / , '' ) . replace ( / ^ h t t p s ? : \/ \/ / , '' ) }
47+ />
48+ ) ;
49+ } ) }
50+ </ div >
51+ </ div >
52+ </ LuxeModal >
53+ ) ;
54+ }
2355
2456 return (
2557 < GenericModal isOpen = { isOpen } onClose = { onClose } title = "Contact" >
@@ -49,6 +81,28 @@ const ContactModal = ({ isOpen, onClose }) => {
4981 ) ;
5082} ;
5183
84+ const LuxeContactLink = ( { href, icon : Icon , label, value } ) => (
85+ < a
86+ href = { href }
87+ target = "_blank"
88+ rel = "noopener noreferrer"
89+ className = "group flex items-center justify-between border border-[#1A1A1A]/5 bg-[#FAFAF8] p-6 transition-all hover:bg-white hover:shadow-xl hover:border-[#8D4004]/20 rounded-sm"
90+ >
91+ < div className = "flex items-center gap-6" >
92+ < div className = "w-12 h-12 flex items-center justify-center bg-white rounded-full shadow-sm text-[#1A1A1A]/40 group-hover:text-[#8D4004] transition-colors" >
93+ < Icon size = { 24 } weight = "light" />
94+ </ div >
95+ < div className = "flex flex-col" >
96+ < span className = "text-[10px] font-outfit uppercase tracking-[0.2em] text-[#1A1A1A]/40" >
97+ { label }
98+ </ span >
99+ < span className = "font-playfairDisplay text-lg italic text-[#1A1A1A]" > { value } </ span >
100+ </ div >
101+ </ div >
102+ < ArrowUpRightIcon size = { 18 } className = "text-[#1A1A1A]/10 group-hover:text-[#8D4004] transition-colors" />
103+ </ a >
104+ ) ;
105+
52106const ContactLink = ( { href, icon : Icon , label, value } ) => (
53107 < a
54108 href = { href }
0 commit comments