1- import type { Metadata } from "next" ;
1+ import type { Metadata , Viewport } from "next" ;
22import { Inter } from "next/font/google" ;
33import "./globals.css" ;
44import clsx from "clsx" ;
55import { ThemeProvider } from "next-themes" ;
66import ShadcnThemeEditor from "shadcn-theme-editor" ;
77import ThemeEditor from "@/components/theme-editor" ;
88import GithubCorner from "@/components/github-corner" ;
9+ import { joinPaths } from "@/lib/utils" ;
10+ import { siteConfig } from "@/lib/site-config" ;
11+ import { RiTwitterXLine , RiGithubFill } from "react-icons/ri" ;
12+ import { TbMail } from "react-icons/tb" ;
13+
914const inter = Inter ( { subsets : [ "latin" ] } ) ;
1015
16+ export const viewport : Viewport = {
17+ themeColor : [ { media : "(prefers-color-scheme: dark)" , color : "#030014" } ] ,
18+ } ;
19+
1120export const metadata : Metadata = {
12- title : "Shadcn Theme Editor" ,
13- description : "Shadcn Theme Editor is a user-friendly component designed to simplify the process of managing and customizing theme colors in Shadcn-based projects." ,
21+ title : {
22+ default : siteConfig . name ,
23+ template : `%s | ${ siteConfig . name } ` ,
24+ } ,
25+ description : siteConfig . description ,
26+ applicationName : siteConfig . name ,
27+ appleWebApp : { title : siteConfig . name , statusBarStyle : "default" } ,
28+ abstract : siteConfig . description ,
29+ archives : siteConfig . url ,
30+ category : "Developer Tools" ,
31+ classification : "" ,
32+ keywords : siteConfig . keywords ,
33+ authors : { url : "https://oimmi.com" , name : "immi" } ,
34+ twitter : {
35+ creator : "@o_immi" ,
36+ creatorId : "1813232551131291651" ,
37+ description : siteConfig . description ,
38+ title : siteConfig . name ,
39+ card : "summary_large_image" ,
40+ images : siteConfig . images . map ( img => img . url ) ,
41+ } ,
42+ creator : "immi" ,
43+ publisher : siteConfig . name ,
44+ alternates : {
45+ canonical : { url : siteConfig . url , title : "Home" } ,
46+ languages : { en : [ { url : siteConfig . url , title : "Home" } ] } ,
47+ } ,
48+ openGraph : {
49+ type : "website" ,
50+ locale : "en_US" ,
51+ url : siteConfig . url ,
52+ title : siteConfig . name ,
53+ description : siteConfig . description ,
54+ siteName : siteConfig . name ,
55+ images : siteConfig . images ,
56+ } ,
57+ // icons: {
58+ // icon: [
59+ // {
60+ // url: joinPaths(siteConfig.url, "artgalestudio-logo.ico"),
61+ // sizes: "16x16 32x32 48x48 192x192 256x256",
62+ // },
63+ // joinPaths(siteConfig.url, "/favicon.ico"),
64+ // ],
65+ // },
1466} ;
1567
68+ const SOCIALS : {
69+ title : string ;
70+ url : string ;
71+ icon : ( props : React . SVGProps < SVGSVGElement > ) => React . JSX . Element ;
72+ } [ ] = [
73+ {
74+ title : "Github" ,
75+ url : "https://github.com/programming-with-ia" ,
76+ icon : RiGithubFill ,
77+ } ,
78+ {
79+ title : "X (Twitter)" ,
80+ url : "https://x.com/o_immi" ,
81+ icon : RiTwitterXLine ,
82+ } ,
83+ {
84+ title : "GMail" ,
85+ url :
"mailto:" + "[email protected] " , 86+ icon : TbMail ,
87+ } ,
88+ ] ;
89+
90+
1691export default async function RootLayout ( {
1792 children,
1893} : Readonly < {
@@ -36,6 +111,25 @@ export default async function RootLayout({
36111 < ThemeEditor />
37112 </ main >
38113 < GithubCorner />
114+ < footer className = "py-8 flex md:flex-row flex-col items-center md:px-8 px-4 lg:px-12 max-w-[1700px] mx-auto bg-accent text-accent-foreground mt-10 md:mt-16" >
115+ { /* <Container> */ }
116+ < p > Built with < span className = "text-destructive-foreground font-extrabold text-red-500" title = "love" aria-label = "love" style = { { fontFamily : '"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol"' } } > ♥️</ span > by < a href = 'https://github.com/programming-with-ia' className = "underline underline-offset-1" target = "_blank" > immi</ a > </ p >
117+ < div className = "flex items-center mt-4 sm:mt-0 md:ml-auto" >
118+ { SOCIALS . map ( ( social , idx ) => (
119+ < a
120+ className = "p-2 rounded-md hover:bg-background hover:text-foreground"
121+ href = { social . url }
122+ title = { social . title }
123+ aria-label = { social . title }
124+ key = { idx }
125+ target = "_blank"
126+ >
127+ { < social . icon className = "size-5" /> }
128+ </ a >
129+ ) ) }
130+ </ div >
131+ { /* </Container> */ }
132+ </ footer >
39133 </ ThemeProvider >
40134 </ body >
41135 </ html >
0 commit comments