@@ -4,7 +4,7 @@ import { getPagesList } from "@/lib/docs";
44import clsx from "clsx" ;
55import { ReactNode } from "react" ;
66import { LanguageIcon } from "./terminal/icons" ;
7- import { RuntimeLang } from "./terminal/ runtime" ;
7+ import { RuntimeLang } from "@my-code/ runtime/languages " ;
88
99export const metadata : Metadata = {
1010 title : "my.code(); へようこそ" ,
@@ -15,39 +15,49 @@ export const metadata: Metadata = {
1515export default async function Home ( ) {
1616 const pagesList = await getPagesList ( ) ;
1717 return (
18- < div className = "max-w-300 mx-auto p-4" >
19- < div className = "hero bg-gradient-to-br from-primary/30 via-secondary/10 to-accent/30 rounded-3xl my-8 py-4 sm:px-4 md:py-16 mb-8 md:mb-16 xl:mb-24" >
20- < div className = "hero-content text-center" >
21- < div >
22- < h1 className = "text-5xl md:text-6xl font-bold mb-6" >
23- < span className = "font-mono text-primary mr-3 drop-shadow-sm" >
24- my.code();
25- </ span >
26- へようこそ
27- </ h1 >
28- < p className = "text-2xl md:text-3xl font-bold mb-6 opacity-90" >
29- 環境構築不要、その場で実践。
30- </ p >
31- < p className = "text-lg md:text-xl opacity-80 mb-10 leading-relaxed" >
32- AIアシスタントとの対話履歴があなただけの教材へと進化する、
33- < br className = "hidden md:block" />
34- 新しいプログラミング学習サイトです。
35- </ p >
36- < div className = "flex justify-center gap-4" >
37- < Link
38- href = "#tutorials"
39- className = "btn btn-primary btn-xl btn-wide rounded-box"
40- >
41- はじめる
42- </ Link >
18+ < div className = "w-full p-4" >
19+ < div className = "max-w-docs mx-auto" >
20+ < div
21+ className = { clsx (
22+ "hero bg-gradient-to-br from-primary/30 via-secondary/10 to-accent/30 rounded-3xl" ,
23+ "my-8 py-4 px-0 mb-8" ,
24+ "sm:px-4" ,
25+ "md:py-8 md:mb-12" ,
26+ "lg:py-16 lg:mb-16" ,
27+ "xl:py-16 xl:mb-20"
28+ ) }
29+ >
30+ < div className = "hero-content text-center" >
31+ < div >
32+ < h1 className = "text-5xl md:text-6xl font-bold mb-6" >
33+ < span className = "font-mono text-primary mr-3 drop-shadow-sm" >
34+ my.code();
35+ </ span >
36+ へようこそ
37+ </ h1 >
38+ < p className = "text-2xl md:text-3xl font-bold mb-6 opacity-90" >
39+ 環境構築不要、その場で実践。
40+ </ p >
41+ < p className = "text-lg md:text-xl opacity-80 mb-10 leading-relaxed" >
42+ AIアシスタントとの対話履歴があなただけの教材へと進化する、
43+ < br className = "hidden md:block" />
44+ 新しいプログラミング学習サイトです。
45+ </ p >
46+ < div className = "flex justify-center gap-4" >
47+ < Link
48+ href = "#tutorials"
49+ className = "btn btn-primary btn-xl btn-wide rounded-box"
50+ >
51+ はじめる
52+ </ Link >
53+ </ div >
4354 </ div >
4455 </ div >
4556 </ div >
46- </ div >
4757
48- { /*<h2 className="text-3xl md:text-4xl font-bold mb-16 text-center">主な特徴</h2>*/ }
49- < div className = "flex flex-col gap-12 md:gap-20 mb-8 xl:mb -16" >
50- { /*<FeatureCard
58+ { /*<h2 className="text-3xl md:text-4xl font-bold mb-16 text-center">主な特徴</h2>*/ }
59+ < div className = "flex flex-col gap-6 md:gap-8 lg:gap-12 xl:gap -16" >
60+ { /*<FeatureCard
5161 icon="📚"
5262 iconColor="bg-primary/10 text-primary"
5363 title="豊富なチュートリアル"
@@ -57,79 +67,80 @@ export default async function Home() {
5767 初心者向けの基礎から上級者向けの応用まで、幅広いレベルに対応したチュートリアルが揃っています。
5868 あなたがまだ触ったことのない言語も、気軽に体験してみることができます。
5969 </FeatureCard>*/ }
60- < FeatureCard
61- icon = "⚡"
62- iconColor = "bg-primary/10 text-primary"
63- title = "環境構築は一切不要。ブラウザで動く実行環境"
64- >
65- 面倒な開発環境のセットアップで挫折する必要はありません。
66- チュートリアル内のサンプルコードは、ボタン一つでそのまま実行可能。
67- もちろん自由に編集して結果を試すこともできます。
68- { /*さらに、エラーメッセージの解説やエラー箇所のハイライト表示など、初心者に優しい機能も充実しています。*/ }
69- </ FeatureCard >
70- < FeatureCard
71- icon = "🤖"
72- iconColor = "bg-secondary/10 text-secondary"
73- title = "AIアシスタントがあなたの学習をサポート"
74- reversed
75- >
76- エラーの原因がわからない?コードの意味を知りたい?
77- AIアシスタントにいつでも質問できます。
78- あなたとの対話履歴がそのまま蓄積され、あなただけの最強の復習ノートへと進化します。
79- </ FeatureCard >
80- < FeatureCard
81- icon = "✏️"
82- iconColor = "bg-accent/10 text-accent"
83- title = "実践的な練習問題"
84- >
85- { /*todo: 他セクションと同じスタイルの文章で書き直す?*/ }
86- 各チュートリアルには練習問題が含まれており、学んだ内容を実際に試すことができます。
87- 練習問題は段階的に難易度が上がるように設計されており、理解度を深めるのに役立ちます。
88- 書いたコードはその場ですぐにAIアシスタントがレビューし、フィードバックを提供します。
89- </ FeatureCard >
90- </ div >
70+ < FeatureCard
71+ icon = "⚡"
72+ iconColor = "bg-primary/10 text-primary"
73+ title = "環境構築は一切不要。ブラウザで動く実行環境"
74+ >
75+ 面倒な開発環境のセットアップで挫折する必要はありません。
76+ チュートリアル内のサンプルコードは、ボタン一つでそのまま実行可能。
77+ もちろん自由に編集して結果を試すこともできます。
78+ { /*さらに、エラーメッセージの解説やエラー箇所のハイライト表示など、初心者に優しい機能も充実しています。*/ }
79+ </ FeatureCard >
80+ < FeatureCard
81+ icon = "🤖"
82+ iconColor = "bg-secondary/10 text-secondary"
83+ title = "AIアシスタントがあなたの学習をサポート"
84+ reversed
85+ >
86+ エラーの原因がわからない?コードの意味を知りたい?
87+ AIアシスタントにいつでも質問できます。
88+ あなたとの対話履歴がそのまま蓄積され、あなただけの最強の復習ノートへと進化します。
89+ </ FeatureCard >
90+ < FeatureCard
91+ icon = "✏️"
92+ iconColor = "bg-accent/10 text-accent"
93+ title = "実践的な練習問題"
94+ >
95+ { /*todo: 他セクションと同じスタイルの文章で書き直す?*/ }
96+ 各チュートリアルには練習問題が含まれており、学んだ内容を実際に試すことができます。
97+ 練習問題は段階的に難易度が上がるように設計されており、理解度を深めるのに役立ちます。
98+ 書いたコードはその場ですぐにAIアシスタントがレビューし、フィードバックを提供します。
99+ </ FeatureCard >
100+ </ div >
91101
92- < div className = "divider" />
102+ < div className = "divider md:my-8 lg:my-12 xl:my-16 " />
93103
94- < h2 id = "tutorials" className = "text-3xl font-bold mb-4 text-center" >
95- さあ、学習を始めましょう
96- </ h2 >
97- < p className = "text-center opacity-70 mb-10" >
98- 豊富なラインナップから、学びたい言語を選択してください。
99- </ p >
100- < div
101- className = "grid items-center gap-4"
102- style = { {
103- gridTemplateColumns : "repeat(auto-fill, minmax(20rem, 1fr))" ,
104- } }
105- >
106- { pagesList . map ( ( group ) => {
107- return (
108- < Link
109- key = { group . id }
110- href = { `${ group . id } /${ group . pages [ 0 ] . slug } ` }
111- className = { clsx (
112- "card card-border border-2 card-sm bg-base-200 border-base-300 shadow-sm" ,
113- "hover:shadow-md transition-all hover:-translate-y-0.5" ,
114- "hover:border-primary hover:text-primary "
115- ) }
116- >
117- < div className = "card-body" >
118- < div className = "card-title justify-between" >
119- < span className = "flex gap-2 items-center" >
120- < LanguageIcon
121- className = "w-5 h-5"
122- lang = { group . id as RuntimeLang }
123- />
124- { group . name }
125- </ span >
126- < span className = "text-2xl/0" > »</ span >
104+ < h2 id = "tutorials" className = "text-3xl font-bold mb-4 text-center" >
105+ さあ、学習を始めましょう
106+ </ h2 >
107+ < p className = "text-center opacity-70 mb-10" >
108+ 豊富なラインナップから、学びたい言語を選択してください。
109+ </ p >
110+ < div
111+ className = "grid items-center gap-4"
112+ style = { {
113+ gridTemplateColumns : "repeat(auto-fill, minmax(20rem, 1fr))" ,
114+ } }
115+ >
116+ { pagesList . map ( ( group ) => {
117+ return (
118+ < Link
119+ key = { group . id }
120+ href = { `${ group . id } /${ group . pages [ 0 ] . slug } ` }
121+ className = { clsx (
122+ "card card-border border-2 card-sm bg-base-200 border-base-300 shadow-sm" ,
123+ "hover:shadow-md transition-all hover:-translate-y-0.5" ,
124+ "hover:border-primary hover:text-primary "
125+ ) }
126+ >
127+ < div className = "card-body" >
128+ < div className = "card-title justify-between" >
129+ < span className = "flex gap-2 items-center" >
130+ < LanguageIcon
131+ className = "w-5 h-5"
132+ lang = { group . id as RuntimeLang }
133+ />
134+ { group . name }
135+ </ span >
136+ < span className = "text-2xl/0" > »</ span >
137+ </ div >
138+ < p > { group . description } </ p >
127139 </ div >
128- < p > { group . description } </ p >
129- </ div >
130- </ Link >
131- ) ;
132- } ) }
140+ </ Link >
141+ ) ;
142+ } ) }
143+ </ div >
133144 </ div >
134145 </ div >
135146 ) ;
@@ -145,11 +156,11 @@ function FeatureCard(props: {
145156 return (
146157 < div
147158 className = { clsx (
148- "flex flex-col items-center gap-4 md:gap-8 xl :gap-16" ,
159+ "flex flex-col items-center gap-4 md:gap-8 lg :gap-16" ,
149160 props . reversed ? "md:flex-row-reverse" : "md:flex-row"
150161 ) }
151162 >
152- < div className = "flex-1 space-y-4 xl :space-y-12 " >
163+ < div className = "flex-1 space-y-4 lg :space-y-8 " >
153164 < div className = "flex flex-row gap-2 items-center" >
154165 < span className = { clsx ( "p-3 rounded-xl text-2xl" , props . iconColor ) } >
155166 { props . icon }
0 commit comments