1
- import type { Metadata } from "next" ;
1
+ import type { Metadata , Viewport } from "next" ;
2
2
import { Inter } from "next/font/google" ;
3
3
import "./globals.css" ;
4
4
import clsx from "clsx" ;
5
5
import { ThemeProvider } from "next-themes" ;
6
6
import ShadcnThemeEditor from "shadcn-theme-editor" ;
7
7
import ThemeEditor from "@/components/theme-editor" ;
8
8
import 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
+
9
14
const inter = Inter ( { subsets : [ "latin" ] } ) ;
10
15
16
+ export const viewport : Viewport = {
17
+ themeColor : [ { media : "(prefers-color-scheme: dark)" , color : "#030014" } ] ,
18
+ } ;
19
+
11
20
export 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
+ // },
14
66
} ;
15
67
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
+
16
91
export default async function RootLayout ( {
17
92
children,
18
93
} : Readonly < {
@@ -36,6 +111,25 @@ export default async function RootLayout({
36
111
< ThemeEditor />
37
112
</ main >
38
113
< 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 >
39
133
</ ThemeProvider >
40
134
</ body >
41
135
</ html >
0 commit comments