フッター/

グリッドフッター

Preview

5カラムグリッドでブランド情報とナビゲーションリンクを整理したフッター。日本語リンクとソーシャルアイコンを配置。

Source Code
tsx
141 lines
1export function FooterGrid001() {
2 const links = {
3 product: [
4 { label: "概要", href: "#" },
5 { label: "機能一覧", href: "#" },
6 { label: "料金プラン", href: "#" },
7 { label: "導入事例", href: "#" },
8 { label: "アップデート", href: "#" },
9 ],
10 resources: [
11 { label: "ドキュメント", href: "#" },
12 { label: "API リファレンス", href: "#" },
13 { label: "ガイド", href: "#" },
14 { label: "ステータス", href: "#" },
15 ],
16 company: [
17 { label: "会社概要", href: "#" },
18 { label: "ブログ", href: "#" },
19 { label: "採用情報", href: "#" },
20 { label: "お問い合わせ", href: "#" },
21 ],
22 legal: [
23 { label: "利用規約", href: "#" },
24 { label: "プライバシー", href: "#" },
25 { label: "特定商取引法", href: "#" },
26 ],
27 };
28
29 const sections = [
30 { title: "Product", items: links.product },
31 { title: "Resources", items: links.resources },
32 { title: "Company", items: links.company },
33 { title: "Legal", items: links.legal },
34 ];
35
36 return (
37 <footer className="border-t border-border bg-background">
38 <div className="mx-auto max-w-5xl px-4 py-20 sm:px-6 lg:px-8">
39 {/* 上段: ブランド + ナビゲーション */}
40 <div className="grid gap-12 sm:grid-cols-2 lg:grid-cols-5">
41 {/* ブランド */}
42 <div className="lg:col-span-1">
43 <div className="flex items-center gap-2.5">
44 <div className="flex h-8 w-8 items-center justify-center border border-border">
45 <div className="h-1.5 w-1.5 rounded-full bg-foreground" />
46 </div>
47 <span className="text-sm font-medium tracking-wider text-foreground">
48 Studio
49 </span>
50 </div>
51 <p className="mt-5 text-xs font-light leading-relaxed text-muted-foreground">
52 次世代のデジタル体験を
53 <br />
54 デザインとテクノロジーで実現する。
55 </p>
56 </div>
57
58 {/* リンクグリッド */}
59 {sections.map((section) => (
60 <div key={section.title}>
61 <p className="text-[10px] uppercase tracking-[0.3em] text-muted-foreground">
62 {section.title}
63 </p>
64 <ul className="mt-5 space-y-3">
65 {section.items.map((item) => (
66 <li key={item.label}>
67 <a
68 href={item.href}
69 className="text-sm font-light tracking-wide text-muted-foreground transition-colors duration-200 hover:text-foreground"
70 >
71 {item.label}
72 </a>
73 </li>
74 ))}
75 </ul>
76 </div>
77 ))}
78 </div>
79
80 {/* 区切り線 */}
81 <div className="mt-16 h-px bg-border/40" />
82
83 {/* 下段: コピーライト + ソーシャル */}
84 <div className="mt-8 flex flex-col items-center justify-between gap-4 sm:flex-row">
85 <p className="text-[10px] tracking-[0.15em] text-muted-foreground/50">
86 &copy; 2026 Studio Inc. All rights reserved.
87 </p>
88
89 <div className="flex items-center gap-5">
90 {/* X / Twitter */}
91 <a
92 href="#"
93 className="text-muted-foreground/40 transition-colors duration-200 hover:text-foreground"
94 aria-label="X"
95 >
96 <svg
97 className="h-4 w-4"
98 fill="currentColor"
99 viewBox="0 0 24 24"
100 >
101 <path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z" />
102 </svg>
103 </a>
104 {/* GitHub */}
105 <a
106 href="#"
107 className="text-muted-foreground/40 transition-colors duration-200 hover:text-foreground"
108 aria-label="GitHub"
109 >
110 <svg
111 className="h-4 w-4"
112 fill="currentColor"
113 viewBox="0 0 24 24"
114 >
115 <path
116 fillRule="evenodd"
117 d="M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z"
118 clipRule="evenodd"
119 />
120 </svg>
121 </a>
122 {/* LinkedIn */}
123 <a
124 href="#"
125 className="text-muted-foreground/40 transition-colors duration-200 hover:text-foreground"
126 aria-label="LinkedIn"
127 >
128 <svg
129 className="h-4 w-4"
130 fill="currentColor"
131 viewBox="0 0 24 24"
132 >
133 <path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.062 2.062 0 01-2.063-2.065 2.064 2.064 0 112.063 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z" />
134 </svg>
135 </a>
136 </div>
137 </div>
138 </div>
139 </footer>
140 );
141}