content writing
This commit is contained in:
parent
df83c9d3f0
commit
537ac284a1
13 changed files with 104 additions and 108 deletions
|
|
@ -1,34 +1,37 @@
|
||||||
const people = [
|
const people = [
|
||||||
{
|
{
|
||||||
name: "Jane Cooper",
|
name: "Sam Antonis",
|
||||||
role: "Paradigm Representative",
|
role: "Lead Developer",
|
||||||
imageUrl:
|
imageUrl: "/Sam.jpg",
|
||||||
"https://images.unsplash.com/photo-1519345182560-3f2917c472ef?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=8&w=1024&h=1024&q=80",
|
linkedinUrl: "https://www.linkedin.com/in/sam-antonis-296144186/",
|
||||||
linkedinUrl: "#",
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Jane Cooper",
|
name: "Nick Eliaerts",
|
||||||
role: "Paradigm Representative",
|
role: "Junior Developer",
|
||||||
imageUrl:
|
imageUrl:
|
||||||
"https://images.unsplash.com/photo-1519345182560-3f2917c472ef?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=8&w=1024&h=1024&q=80",
|
"https://images.unsplash.com/photo-1519345182560-3f2917c472ef?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=8&w=1024&h=1024&q=80",
|
||||||
linkedinUrl: "#",
|
linkedinUrl: "https://www.linkedin.com/in/nick-eliaerts-76b8574a/",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Jane Cooper",
|
name: "Britt Van Damme",
|
||||||
role: "Paradigm Representative",
|
role: "Ecommerce Specialist",
|
||||||
imageUrl:
|
imageUrl: "/Britt.jpg",
|
||||||
"https://images.unsplash.com/photo-1519345182560-3f2917c472ef?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=8&w=1024&h=1024&q=80",
|
linkedinUrl: "https://www.linkedin.com/in/britt-van-damme/",
|
||||||
linkedinUrl: "#",
|
},
|
||||||
|
{
|
||||||
|
name: "Silke Joosens",
|
||||||
|
role: "Designer",
|
||||||
|
imageUrl: "/Silke.jpg",
|
||||||
|
linkedinUrl: "https://www.linkedin.com/in/silkejoosens/",
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
export default async function About() {
|
export default async function About() {
|
||||||
return (
|
return (
|
||||||
<section>
|
<section>
|
||||||
<div className="mx-auto grid max-w-screen-xl px-4 py-8 text-center lg:py-16">
|
<div className="p-2 mx-auto grid max-w-screen-xl text-center">
|
||||||
<div className="mx-auto place-self-center">
|
<div className="mx-auto place-self-center">
|
||||||
{" "}
|
<div className="pb-4 pt-24">
|
||||||
<div className="py-24 sm:py-32">
|
|
||||||
<div className="mx-auto max-w-7xl px-6 text-center lg:px-8">
|
<div className="mx-auto max-w-7xl px-6 text-center lg:px-8">
|
||||||
<div className="mx-auto max-w-2xl">
|
<div className="mx-auto max-w-2xl">
|
||||||
<h2 className="text-3xl font-bold tracking-tight text-primary-800 sm:text-4xl">Meet our team</h2>
|
<h2 className="text-3xl font-bold tracking-tight text-primary-800 sm:text-4xl">Meet our team</h2>
|
||||||
|
|
@ -38,18 +41,16 @@ export default async function About() {
|
||||||
</div>
|
</div>
|
||||||
<ul
|
<ul
|
||||||
role="list"
|
role="list"
|
||||||
className="mx-auto mt-20 grid max-w-2xl grid-cols-1 gap-6 sm:grid-cols-2 lg:mx-0 lg:max-w-none lg:grid-cols-3 lg:gap-8"
|
className="l mx-auto mt-20 grid max-w-2xl grid-cols-1 gap-6 sm:grid-cols-2 lg:mx-0 lg:max-w-none lg:grid-cols-4 lg:gap-8"
|
||||||
>
|
>
|
||||||
{people.map((person) => (
|
{people.map(({ name, imageUrl, role, linkedinUrl }) => (
|
||||||
<li key={person.name} className="rounded-2xl bg-primary-800 px-8 py-10">
|
<li key={name} className="rounded-2xl bg-primary-800 px-8 py-10">
|
||||||
<img className="mx-auto h-48 w-48 rounded-full md:h-56 md:w-56" src={person.imageUrl} alt="" />
|
<img className="mx-auto h-48 w-48 rounded-full md:h-56 md:w-56" src={imageUrl} alt={name} />
|
||||||
<h3 className="mt-6 text-base font-semibold leading-7 tracking-tight text-primary-50">
|
<h3 className="mt-6 text-base font-semibold leading-7 tracking-tight text-primary-50">{name}</h3>
|
||||||
{person.name}
|
<p className="text-sm leading-6 text-primary-50">{role}</p>
|
||||||
</h3>
|
|
||||||
<p className="text-sm leading-6 text-primary-50">{person.role}</p>
|
|
||||||
<ul role="list" className="mt-6 flex justify-center gap-x-6">
|
<ul role="list" className="mt-6 flex justify-center gap-x-6">
|
||||||
<li>
|
<li>
|
||||||
<a href={person.linkedinUrl} className="text-primary-50 hover:text-primary-50">
|
<a href={linkedinUrl} className="text-primary-50 hover:text-primary-50">
|
||||||
<span className="sr-only">LinkedIn</span>
|
<span className="sr-only">LinkedIn</span>
|
||||||
<svg className="h-5 w-5" aria-hidden="true" fill="currentColor" viewBox="0 0 20 20">
|
<svg className="h-5 w-5" aria-hidden="true" fill="currentColor" viewBox="0 0 20 20">
|
||||||
<path
|
<path
|
||||||
|
|
|
||||||
|
|
@ -1,27 +0,0 @@
|
||||||
import { OpenAIStream, StreamingTextResponse } from 'ai'
|
|
||||||
import { Configuration, OpenAIApi } from 'openai-edge'
|
|
||||||
|
|
||||||
// Create an OpenAI API client (that's edge friendly!)
|
|
||||||
const config = new Configuration({
|
|
||||||
apiKey: process.env.OPENAI_API_KEY
|
|
||||||
})
|
|
||||||
const openai = new OpenAIApi(config)
|
|
||||||
|
|
||||||
// IMPORTANT! Set the runtime to edge
|
|
||||||
export const runtime = 'edge'
|
|
||||||
|
|
||||||
export async function POST(req: Request) {
|
|
||||||
// Extract the `messages` from the body of the request
|
|
||||||
const { messages } = await req.json()
|
|
||||||
|
|
||||||
// Ask OpenAI for a streaming chat completion given the prompt
|
|
||||||
const response = await openai.createChatCompletion({
|
|
||||||
model: 'gpt-3.5-turbo',
|
|
||||||
stream: true,
|
|
||||||
messages
|
|
||||||
})
|
|
||||||
// Convert the response into a friendly text-stream
|
|
||||||
const stream = OpenAIStream(response)
|
|
||||||
// Respond with the stream
|
|
||||||
return new StreamingTextResponse(stream)
|
|
||||||
}
|
|
||||||
|
|
@ -38,9 +38,9 @@ export default function Contact() {
|
||||||
<BuildingOffice2Icon className="h-7 w-6 text-primary-800" aria-hidden="true" />
|
<BuildingOffice2Icon className="h-7 w-6 text-primary-800" aria-hidden="true" />
|
||||||
</dt>
|
</dt>
|
||||||
<dd>
|
<dd>
|
||||||
Ticheltij 16
|
Kammenstraat 57
|
||||||
<br />
|
<br />
|
||||||
Westmalle, 2390, Antwerpen
|
2000, Antwerpen
|
||||||
</dd>
|
</dd>
|
||||||
</div>
|
</div>
|
||||||
<div className="flex gap-x-4">
|
<div className="flex gap-x-4">
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,7 @@ export default function RootLayout({
|
||||||
<NextUiProvider>
|
<NextUiProvider>
|
||||||
<div className="flex min-h-screen flex-col justify-between bg-primary-50">
|
<div className="flex min-h-screen flex-col justify-between bg-primary-50">
|
||||||
<Navbar />
|
<Navbar />
|
||||||
<main className="mb-auto h-auto">{children}</main>
|
<main className="mb-auto h-[calc(100%-160px)]">{children}</main>
|
||||||
<Footer />
|
<Footer />
|
||||||
</div>
|
</div>
|
||||||
</NextUiProvider>
|
</NextUiProvider>
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ import Link from "next/link"
|
||||||
export default async function Web() {
|
export default async function Web() {
|
||||||
return (
|
return (
|
||||||
<section>
|
<section>
|
||||||
<div className="mx-auto grid max-w-screen-xl px-4 py-8 text-center lg:py-16">
|
<div className="mx-auto grid max-w-screen-xl p-2 pt-8 text-center">
|
||||||
<div className="mx-auto place-self-center">
|
<div className="mx-auto place-self-center">
|
||||||
<div className="relative">
|
<div className="relative">
|
||||||
<div className="mx-auto max-w-7xl lg:grid lg:grid-cols-12 lg:gap-x-8 lg:px-8">
|
<div className="mx-auto max-w-7xl lg:grid lg:grid-cols-12 lg:gap-x-8 lg:px-8">
|
||||||
|
|
|
||||||
|
|
@ -1,22 +0,0 @@
|
||||||
import { getProjects } from "../actions"
|
|
||||||
|
|
||||||
export default async function Projects() {
|
|
||||||
const projects = await getProjects()
|
|
||||||
|
|
||||||
return (
|
|
||||||
<section>
|
|
||||||
<div className="mx-auto grid max-w-screen-xl px-4 py-8 text-center lg:py-16">
|
|
||||||
<div className="mx-auto place-self-center">
|
|
||||||
{projects.map((project) => (
|
|
||||||
<div
|
|
||||||
key={project.id}
|
|
||||||
className="mb-4 max-w-2xl text-4xl font-extrabold leading-none tracking-tight md:text-5xl xl:text-6xl"
|
|
||||||
>
|
|
||||||
{project.name}
|
|
||||||
</div>
|
|
||||||
))}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
59
app/services/page.tsx
Normal file
59
app/services/page.tsx
Normal file
|
|
@ -0,0 +1,59 @@
|
||||||
|
import { BuildingStorefrontIcon, CloudArrowUpIcon, LightBulbIcon, PaintBrushIcon } from "@heroicons/react/24/solid"
|
||||||
|
|
||||||
|
const features = [
|
||||||
|
{
|
||||||
|
name: "Web & E-commerce",
|
||||||
|
description:
|
||||||
|
"Elevating businesses online with tailored solutions from basic websites to full custom E-commerce stores and expert Shopify development.",
|
||||||
|
icon: BuildingStorefrontIcon,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Branding & design",
|
||||||
|
description: "Crafting captivating identities through design, our services breathe life into brands.",
|
||||||
|
icon: PaintBrushIcon,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Cloud based setup",
|
||||||
|
description: "Taking software to new heights by placing it all on the cloud's limitless expanse.",
|
||||||
|
icon: CloudArrowUpIcon,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Your idea here",
|
||||||
|
description:
|
||||||
|
"Experience a warm welcome at our place, savor a cup of coffee, and share your vision – together, we'll uncover the perfect solution for you",
|
||||||
|
icon: LightBulbIcon,
|
||||||
|
},
|
||||||
|
]
|
||||||
|
|
||||||
|
export default async function Projects() {
|
||||||
|
return (
|
||||||
|
<section>
|
||||||
|
<div className="mx-auto grid max-w-screen-xl p-4 text-center">
|
||||||
|
<div className="mx-auto place-self-center">
|
||||||
|
<div className="pb-4 pt-24">
|
||||||
|
<div className="mx-auto max-w-7xl px-6 lg:px-8">
|
||||||
|
<div className="mx-auto max-w-2xl lg:text-center">
|
||||||
|
<p className="mt-2 text-3xl font-bold tracking-tight text-primary-800 sm:text-4xl">
|
||||||
|
Everything to build your online presence
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div className="mx-auto mt-16 max-w-2xl sm:mt-20 lg:mt-24 lg:max-w-4xl">
|
||||||
|
<dl className="grid max-w-xl grid-cols-1 gap-x-8 gap-y-10 lg:max-w-none lg:grid-cols-2 lg:gap-y-16">
|
||||||
|
{features.map((feature) => (
|
||||||
|
<div key={feature.name} className="relative flex flex-col pl-16">
|
||||||
|
<div className="mx-auto mb-4 flex h-10 w-10 items-center justify-center rounded-lg bg-primary-800">
|
||||||
|
<feature.icon className="h-6 w-6 text-white" aria-hidden="true" />
|
||||||
|
</div>
|
||||||
|
<dt className="text-base font-semibold leading-7 text-primary-800">{feature.name}</dt>
|
||||||
|
<dd className="mt-2 text-base leading-7 text-primary-800">{feature.description}</dd>
|
||||||
|
</div>
|
||||||
|
))}
|
||||||
|
</dl>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
@ -1,23 +0,0 @@
|
||||||
"use client"
|
|
||||||
import { useChat } from "ai/react"
|
|
||||||
|
|
||||||
export default function Chat() {
|
|
||||||
const { messages, input, handleInputChange, handleSubmit } = useChat()
|
|
||||||
|
|
||||||
return (
|
|
||||||
<div>
|
|
||||||
{messages.map((m) => (
|
|
||||||
<div key={m.id}>
|
|
||||||
{m.role}: {m.content}
|
|
||||||
</div>
|
|
||||||
))}
|
|
||||||
|
|
||||||
<form onSubmit={handleSubmit}>
|
|
||||||
<label>
|
|
||||||
Say something...
|
|
||||||
<input value={input} onChange={handleInputChange} />
|
|
||||||
</label>
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
@ -1,9 +1,13 @@
|
||||||
import Image from "next/image";
|
import Image from "next/image"
|
||||||
|
|
||||||
export default function Footer() {
|
export default function Footer() {
|
||||||
return (
|
return (
|
||||||
<footer className="flex justify-center bg-primary-800 p-4 text-primary-100">
|
<footer className="flex flex-col bg-primary-800 p-4 text-primary-100">
|
||||||
<Image width={250} height={250} className="block h-8 w-auto" src="/Isacon logo RGB_1.png" alt="Isacon" />
|
<div className="grid mx-auto text-center gap-1">
|
||||||
|
<Image width={250} height={250} className="block mx-auto h-8 w-auto" src="/Isacon logo RGB_1.png" alt="Isacon" />
|
||||||
|
<div>+32496799751</div>
|
||||||
|
<div>Kammenstraat 57, 2000 Antwerpen</div>
|
||||||
|
</div>
|
||||||
</footer>
|
</footer>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -30,9 +30,9 @@ export default function Nav() {
|
||||||
current: currentRoute === "/about",
|
current: currentRoute === "/about",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: "Projects",
|
label: "Services",
|
||||||
href: "/projects",
|
href: "/services",
|
||||||
current: currentRoute === "/projects",
|
current: currentRoute === "/services",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: "Contact",
|
label: "Contact",
|
||||||
|
|
@ -67,7 +67,11 @@ export default function Nav() {
|
||||||
<NavbarContent className="hidden gap-4 md:flex" justify="center">
|
<NavbarContent className="hidden gap-4 md:flex" justify="center">
|
||||||
{menuItems.map((item) => (
|
{menuItems.map((item) => (
|
||||||
<NavbarItem key={item.href} isActive={item.current}>
|
<NavbarItem key={item.href} isActive={item.current}>
|
||||||
<Link href={item.href} aria-current={item.current ? "page" : undefined}>
|
<Link
|
||||||
|
className={item.current ? "border-b-2 border-b-primary-50" : ""}
|
||||||
|
href={item.href}
|
||||||
|
aria-current={item.current ? "page" : undefined}
|
||||||
|
>
|
||||||
{item.label}
|
{item.label}
|
||||||
</Link>
|
</Link>
|
||||||
</NavbarItem>
|
</NavbarItem>
|
||||||
|
|
|
||||||
BIN
public/Britt.jpg
Normal file
BIN
public/Britt.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 92 KiB |
BIN
public/Sam.jpg
Normal file
BIN
public/Sam.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 213 KiB |
BIN
public/Silke.jpg
Normal file
BIN
public/Silke.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 112 KiB |
Loading…
Add table
Add a link
Reference in a new issue