diff --git a/app/App.css b/app/App.css new file mode 100644 index 0000000..cc0b3e2 --- /dev/null +++ b/app/App.css @@ -0,0 +1,458 @@ +/* app.css */ + +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +/* Basic body styling */ +body { + background-color: #f4f4f4; + color: #333; + line-height: 1.6; + display: flex; + flex-direction: column; + min-height: 100vh; + margin-top: 10em; + background-image: url(/img/image.png); + background-repeat: no-repeat; + background-size: cover; + background-position: center; + background-attachment: fixed; +} + +/* Header styling */ +.header { + background-color: #333; + color: #fff; + padding: 20px; + text-align: center; + box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); + width: 100%; + position: fixed; + top: 0; +} + +.header h1 { + font-size: 24px; + margin-bottom: 10px; +} + +.header nav { + margin-top: 10px; +} + +.header button { + margin: 0 10px; + padding: 10px 20px; + border-radius: 4px; + background-color: #4a90e2; + color: #fff; + font-size: 16px; + cursor: pointer; + transition: background-color 0.3s ease; + border: none; +} + +.header button:hover { + background-color: #357ab8; +} + +/* Content container */ +.content { + padding: 20px; + flex: 1; + text-align: center; + max-width: 1200px; + margin: 0 auto; + background-color: #fff; + border-radius: 8px; + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); +} + +/* Card styles */ +section .cards { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); + gap: 20px; + margin-top: 50px; +} + +section .card { + text-align: center; + list-style: none; + background-color: rgba(46, 58, 95, 0.9); /* Dark blue with transparency */ + padding: 20px; + border-radius: 10px; + box-shadow: 0 5px 15px rgba(0, 0, 0, 0.8); /* Stronger shadow for depth */ + border: 1px solid #3a4971; /* Slightly lighter border for card edges */ + position: relative; + overflow: hidden; + display: flex; + flex-direction: column; + justify-content: space-between; + transition: transform 0.3s ease, box-shadow 0.3s ease; +} + +section .card:hover { + transform: translateY(-5px); /* Slight lift effect */ + box-shadow: 0 10px 30px rgba(255, 221, 85, 0.5); /* Yellow glow on hover */ +} + +section .card img { + height: 80px; /* Image size */ + width: 80px; + object-fit: cover; + border-radius: 50%; /* Circular image */ + margin: 0 auto 15px; + box-shadow: 0 0 10px rgba(255, 221, 85, 0.5); /* Glow around the image */ +} + +section .card h3 { + margin: 10px 0; + font-size: 1.2em; + font-weight: bold; + color: #ffdd55; /* Star yellow for card titles */ + text-shadow: 0 0 10px #ffdd55; /* Glow effect */ +} + +section .card p { + flex-grow: 1; + color: #c7d5e0; /* Light gray-blue for card content */ + margin-bottom: 10px; +} + +/* Responsive layout */ +@media (max-width: 768px) { + .header h1 { + font-size: 20px; + } + + .header button { + margin: 5px 0; + padding: 10px; + font-size: 14px; + } + + .content { + padding: 15px; + margin-top: 15px; + } + + section .card { + padding: 12px; /* Adjusted padding */ + } + + section .card img { + height: 60px; /* Adjusted height */ + width: 60px; /* Adjusted width */ + border-radius: 8px; /* Adjusted border-radius */ + } +} +/* app.css */ + +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +/* Basic body styling */ +body { + background-color: #f4f4f4; + color: #333; + line-height: 1.6; + display: flex; + flex-direction: column; + min-height: 100vh; +} + +/* Header styling */ +.header { + background-color: #333; + color: #fff; + padding: 20px; + text-align: center; + box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); + width: 100%; +} + +.header h1 { + font-size: 24px; + margin-bottom: 10px; +} + +.header nav { + margin-top: 10px; +} + +.header button { + margin: 0 10px; + padding: 10px 20px; + border-radius: 4px; + background-color: #4a90e2; + color: #fff; + font-size: 16px; + cursor: pointer; + transition: background-color 0.3s ease; + border: none; +} + +.header button:hover { + background-color: #357ab8; +} + +/* Content container */ +.content { + padding: 20px; + flex: 1; + text-align: center; + max-width: 1200px; + margin: 0 auto; + background-color: #fff; + border-radius: 8px; + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); + margin-top: 20px; +} + +/* Card styles */ +section.cards { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); + gap: 20px; + margin-top: 50px; +} + +section.card { + text-align: center; + list-style: none; + background-color: rgba(46, 58, 95, 0.9); /* Dark blue with transparency */ + padding: 20px; + border-radius: 10px; + box-shadow: 0 5px 15px rgba(0, 0, 0, 0.8); /* Stronger shadow for depth */ + border: 1px solid #3a4971; /* Slightly lighter border for card edges */ + position: relative; + overflow: hidden; + display: flex; + flex-direction: column; + justify-content: space-between; + transition: transform 0.3s ease, box-shadow 0.3s ease; +} + +section.card:hover { + transform: translateY(-5px); /* Slight lift effect */ + box-shadow: 0 10px 30px rgba(255, 221, 85, 0.5); /* Yellow glow on hover */ +} + +section.card img { + height: 80px; /* Image size */ + width: 80px; + object-fit: cover; + border-radius: 50%; /* Circular image */ + margin: 0 auto 15px; + box-shadow: 0 0 10px rgba(255, 221, 85, 0.5); /* Glow around the image */ +} + +section.card h3 { + margin: 10px 0; + font-size: 1.2em; + font-weight: bold; + color: #ffdd55; /* Star yellow for card titles */ + text-shadow: 0 0 10px #ffdd55; /* Glow effect */ +} + +section.card p { + flex-grow: 1; + color: #c7d5e0; /* Light gray-blue for card content */ + margin-bottom: 10px; +} + +/* Responsive layout */ +@media (max-width: 768px) { + .header h1 { + font-size: 20px; + } + + .header button { + margin: 5px 0; + padding: 10px; + font-size: 14px; + } + + .content { + padding: 15px; + margin-top: 15px; + } + + section.cards {/* app.css */ + +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +/* Basic body styling */ +body { + background-color: #f4f4f4; + color: #333; + line-height: 1.6; + display: flex; + flex-direction: column; + min-height: 100vh; + background-image: url(/img/image.png); + background-repeat: no-repeat; + background-size: cover; + background-position: center; + background-attachment: fixed; +} + +/* Header styling */ +.header { + background-color: #333; + color: #fff; + padding: 20px; + text-align: center; + box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); + width: 100%; + position: fixed; + top: 0; + z-index: 1000; /* Ensure header stays above other content */ +} + +.header h1 { + font-size: 24px; + margin-bottom: 10px; +} + +.header nav { + margin-top: 10px; +} + +.header button { + margin: 0 10px; + padding: 10px 20px; + border-radius: 4px; + background-color: #4a90e2; + color: #fff; + font-size: 16px; + cursor: pointer; + transition: background-color 0.3s ease; + border: none; +} + +.header button:hover { + background-color: #357ab8; +} + +/* Content container */ +.content { + padding: 20px; + flex: 1; + text-align: center; + max-width: 1200px; + margin: 80px auto 0; /* Adjusted for fixed header height */ + background-color: #fff; + border-radius: 8px; + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); +} + +/* Card styles */ +section.cards { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); + gap: 20px; + margin-top: 50px; +} + +section.card { + text-align: center; + list-style: none; + background-color: rgba(46, 58, 95, 0.9); /* Dark blue with transparency */ + padding: 20px; + border-radius: 10px; + box-shadow: 0 5px 15px rgba(0, 0, 0, 0.8); /* Stronger shadow for depth */ + border: 1px solid #3a4971; /* Slightly lighter border for card edges */ + position: relative; + overflow: hidden; + display: flex; + flex-direction: column; + justify-content: space-between; + transition: transform 0.3s ease, box-shadow 0.3s ease; +} + +section.card:hover { + transform: translateY(-5px); /* Slight lift effect */ + box-shadow: 0 10px 30px rgba(255, 221, 85, 0.5); /* Yellow glow on hover */ +} + +section.card img { + height: 80px; /* Image size */ + width: 80px; + object-fit: cover; + border-radius: 50%; /* Circular image */ + margin: 0 auto 15px; + box-shadow: 0 0 10px rgba(255, 221, 85, 0.5); /* Glow around the image */ +} + +section.card h3 { + margin: 10px 0; + font-size: 1.2em; + font-weight: bold; + color: #ffdd55; /* Star yellow for card titles */ + text-shadow: 0 0 10px #ffdd55; /* Glow effect */ +} + +section.card p { + flex-grow: 1; + color: #c7d5e0; /* Light gray-blue for card content */ + margin-bottom: 10px; +} + +/* Responsive layout */ +@media (max-width: 768px) { + .header h1 { + font-size: 20px; + } + + .header button { + margin: 5px 0; + padding: 10px; + font-size: 14px; + } + + .content { + padding: 15px; + margin-top: 15px; /* Adjusted for smaller screen size */ + } + + section.cards { + grid-template-columns: 1fr; /* One card per row on mobile */ + } + + section.card { + padding: 12px; /* Adjusted padding */ + } + + section.card img { + height: 60px; /* Adjusted height */ + width: 60px; /* Adjusted width */ + border-radius: 8px; /* Adjusted border-radius */ + } +} + + grid-template-columns: 1fr; /* One card per row on mobile */ + } + + section.card { + padding: 12px; /* Adjusted padding */ + } + + section.card img { + height: 60px; /* Adjusted height */ + width: 60px; /* Adjusted width */ + border-radius: 8px; /* Adjusted border-radius */ + } +} + diff --git a/app/LandingPage.tsx b/app/LandingPage.tsx new file mode 100644 index 0000000..ae6c9f0 --- /dev/null +++ b/app/LandingPage.tsx @@ -0,0 +1,50 @@ +"use client"; +import React from 'react'; +import './App.css'; // Import specific styles for the Home page + +const Home = () => { + return ( + <> +
+

About Us

+

+ We are a group of informatics students from IMS (Informatik Schule Sargans), currently learning React to prepare for an upcoming project. This project will be part of our traineeship at a company, where we'll apply our skills in a real-world setting. Our coursework in React is equipping us with the knowledge and experience needed to excel in this practical opportunity. +

+ +
+
+ + Patrick +

Patrick

+

+ Patrick is a highly skilled programmer with expertise in Java, GDScript, Bash, C, C++, and C#. He excels in developing scalable applications, automating tasks, and crafting interactive games. Additionally, Patrick is proficient in system administration, adeptly managing and optimizing IT infrastructures for smooth and secure operations. +

+
+
+ +
+ + Sage +

Luca

+

+ Luca, Patrick's co-programmer, is skilled in Java, GDScript, Bash, and Basic Typewriter. His expertise in Java and GDScript supports robust application and game development, while his Bash scripting skills streamline automation. His knowledge of Basic Typewriter adds a classic touch to his versatile programming capabilities. +

+
+
+ +
+ + Norway +

Yasin

+

+ Yasin is a proficient programmer with expertise in Java, where he has even developed games, as well as Bash, HTML, CSS, SQL, and NoSQL. His skills span from backend development and automation to web design and database management, making him a versatile asset in any tech project. +

+
+
+
+
+ + ); +}; + +export default Home; diff --git a/app/layout.tsx b/app/layout.tsx index a14e64f..6200084 100644 --- a/app/layout.tsx +++ b/app/layout.tsx @@ -1,6 +1,6 @@ export const metadata = { - title: 'Next.js', - description: 'Generated by Next.js', + title: 'React test v1', + description: 'Generated by Us.js', } export default function RootLayout({ @@ -13,4 +13,4 @@ export default function RootLayout({ {children} ) -} +} diff --git a/app/luca/Luca.css b/app/luca/Luca.css new file mode 100644 index 0000000..3e6bd4c --- /dev/null +++ b/app/luca/Luca.css @@ -0,0 +1,31 @@ +/* Luca.css */ +.programmer-space { + padding: 20px; + margin: 10px; + border-radius: 8px; + color: #fff; +} + +.luca { + background-color: #4a90e2; /* Blue */ +} + +.click-button { + padding: 10px 20px; + margin-top: 10px; + border: none; + border-radius: 4px; + background-color: #fff; + color: #4a90e2; + cursor: pointer; + font-size: 16px; +} + +.click-button:hover { + background-color: #e3e3e3; +} + +.lorem-ipsum { + margin-top: 20px; + font-size: 14px; +} diff --git a/app/luca/Luca.tsx b/app/luca/Luca.tsx new file mode 100644 index 0000000..3c5c8a9 --- /dev/null +++ b/app/luca/Luca.tsx @@ -0,0 +1,37 @@ +// Luca.tsx +"use client"; + +import React, { useState } from 'react'; +import './Luca.css'; // Import specific styles for Luca + +const Luca = () => { + // State to keep track of the number of clicks + const [clickCount, setClickCount] = useState(0); + + // Function to handle button click + const handleClick = () => { + setClickCount(clickCount + 1); + }; + + return ( +
+

Luca's Space

+

Welcome, Luca! This is your programming space.

+ + {/* Button to count clicks */} + +

You've clicked the button {clickCount} times!

+ + {/* Lorem Ipsum text */} +
+

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. +

+
+
+ ); +}; + +export default Luca; diff --git a/app/page.tsx b/app/page.tsx index 464f71b..7951a58 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -1,14 +1,42 @@ -function MyButton({ title }: { title: string }) { - return ( - - ); +"use client"; +import React, { useState } from 'react'; +import Luca from './luca/Luca'; +import Patrick from './patrick/Patrick'; +import Yasin from './yasin/Yasin'; +import Home from './LandingPage'; +import './App.css'; // Import main styles + +function MyApp() { + // State to track the current view + const [currentView, setCurrentView] = useState('landing'); + + // Function to handle navigation + const handleNavigation = (view: string) => { + setCurrentView(view); + }; + + return ( +
+ {/* Header with navigation buttons */} +
+

Welcome to the Programmer Space

+ +
+ +
+ {/* Conditionally render the selected component */} + {currentView === 'landing' && } + {currentView === 'luca' && } + {currentView === 'patrick' && } + {currentView === 'yasin' && } +
+
+ ); } -export default function MyApp() { - return ( -
-

Welcome to my app

- -
- ); -} +export default MyApp; diff --git a/app/patrick/Patrick.css b/app/patrick/Patrick.css new file mode 100644 index 0000000..101f408 --- /dev/null +++ b/app/patrick/Patrick.css @@ -0,0 +1,11 @@ +/* Patrick.css */ +.programmer-space { + padding: 20px; + margin: 10px; + border-radius: 8px; + color: #fff; +} + +.patrick { + background-color: #e94e77; /* Pink */ +} diff --git a/app/patrick/Patrick.tsx b/app/patrick/Patrick.tsx new file mode 100644 index 0000000..e1f02aa --- /dev/null +++ b/app/patrick/Patrick.tsx @@ -0,0 +1,13 @@ +// Patrick.tsx +"use client"; +import React from 'react'; +import './Patrick.css'; // Import specific styles for Patrick + +const Patrick = () => ( +
+

Patrick's Space

+

Welcome, Patrick! This is your programming space.

+
+); + +export default Patrick; diff --git a/app/yasin/Yasin.css b/app/yasin/Yasin.css new file mode 100644 index 0000000..f6d48df --- /dev/null +++ b/app/yasin/Yasin.css @@ -0,0 +1,11 @@ +/* Yasin.css */ +.programmer-space { + padding: 20px; + margin: 10px; + border-radius: 8px; + color: #fff; +} + +.yasin { + background-color: #50e3c2; /* Teal */ +} diff --git a/app/yasin/Yasin.tsx b/app/yasin/Yasin.tsx new file mode 100644 index 0000000..979f2d3 --- /dev/null +++ b/app/yasin/Yasin.tsx @@ -0,0 +1,13 @@ +// Yasin.tsx +"use client"; +import React from 'react'; +import './Yasin.css'; // Import specific styles for Yasin + +const Yasin = () => ( +
+

Yasin's Space

+

Welcome, Yasin! This is your programming space.

+
+); + +export default Yasin; diff --git a/public/img/Patrick.png b/public/img/Patrick.png new file mode 100644 index 0000000..6aa6377 Binary files /dev/null and b/public/img/Patrick.png differ diff --git a/public/img/image.png b/public/img/image.png new file mode 100644 index 0000000..3924352 Binary files /dev/null and b/public/img/image.png differ diff --git a/public/img/sage.png b/public/img/sage.png new file mode 100644 index 0000000..3bc7bd8 Binary files /dev/null and b/public/img/sage.png differ diff --git a/public/img/yasin.png b/public/img/yasin.png new file mode 100644 index 0000000..06e814f Binary files /dev/null and b/public/img/yasin.png differ