mirror of
https://gitlab.vegova.si/rkv/spletisce.git
synced 2025-08-15 09:37:42 +00:00
App router migration
This commit is contained in:
1
.env
1
.env
@ -1,2 +1,3 @@
|
||||
NEXT_PUBLIC_PLAUSIBLE_DOMAIN="rklub.vegova.si"
|
||||
NEXT_PUBLIC_PLAUSIBLE_HOST="https://stats.kralj.io"
|
||||
NEXT_PUBLIC_GUILD_ID="733765085138255984"
|
||||
|
@ -1,3 +1,6 @@
|
||||
{
|
||||
"extends": "next/core-web-vitals"
|
||||
"extends": "next/core-web-vitals",
|
||||
"rules": {
|
||||
"no-unused-vars": "warn"
|
||||
}
|
||||
}
|
||||
|
14
package.json
14
package.json
@ -18,15 +18,15 @@
|
||||
"@types/react": "18.0.26",
|
||||
"@types/react-dom": "18.0.10",
|
||||
"bulma": "^0.9.4",
|
||||
"contentlayer": "^0.3.0",
|
||||
"contentlayer": "^0.3.2",
|
||||
"eslint": "8.32.0",
|
||||
"eslint-config-next": "13.1.2",
|
||||
"exifr": "^7.1.3",
|
||||
"next": "^13.4.1",
|
||||
"next-contentlayer": "^0.3.0",
|
||||
"eslint-config-next": "^13.4.2",
|
||||
"exifreader": "^4.12.0",
|
||||
"next": "^13.4.4",
|
||||
"next-contentlayer": "^0.3.2",
|
||||
"next-plausible": "^3.7.2",
|
||||
"react": "18.2.0",
|
||||
"react-dom": "18.2.0",
|
||||
"react": "^18.2.0",
|
||||
"react-dom": "^18.2.0",
|
||||
"rehype-autolink-headings": "^6.1.1",
|
||||
"rehype-pretty-code": "^0.9.3",
|
||||
"rehype-slug": "^5.1.0",
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 792 B |
@ -1,12 +0,0 @@
|
||||
# Allow all crawlers
|
||||
User-agent: *
|
||||
Allow: /
|
||||
|
||||
# Disallow
|
||||
Disallow: /files/
|
||||
Disallow: /analitika/
|
||||
Disallow: /log/
|
||||
Disallow: /ura/
|
||||
|
||||
# Sitemap
|
||||
Sitemap: https://rklub.vegova.si/sitemap.xml
|
@ -1,53 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<urlset
|
||||
xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
|
||||
|
||||
<url>
|
||||
<loc>https://rklub.vegova.si/</loc>
|
||||
<lastmod>2023-05-11T09:06:00+00:00</lastmod>
|
||||
<priority>1.00</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://rklub.vegova.si/blog</loc>
|
||||
<lastmod>2023-05-11T09:06:00+00:00</lastmod>
|
||||
<priority>0.80</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://rklub.vegova.si/galerija</loc>
|
||||
<lastmod>2023-05-11T09:06:00+00:00</lastmod>
|
||||
<priority>0.80</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://rklub.vegova.si/tecaj</loc>
|
||||
<lastmod>2023-05-11T09:06:00+00:00</lastmod>
|
||||
<priority>0.80</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://rklub.vegova.si/blog/izpit-2023-izid</loc>
|
||||
<lastmod>2023-05-11T09:06:00+00:00</lastmod>
|
||||
<priority>0.64</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://rklub.vegova.si/blog/informativni-dnevi-2023</loc>
|
||||
<lastmod>2023-05-11T09:06:00+00:00</lastmod>
|
||||
<priority>0.64</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://rklub.vegova.si/blog/izpit-2023</loc>
|
||||
<lastmod>2023-05-11T09:06:00+00:00</lastmod>
|
||||
<priority>0.64</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://rklub.vegova.si/blog/new-website</loc>
|
||||
<lastmod>2023-05-11T09:06:00+00:00</lastmod>
|
||||
<priority>0.64</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://rklub.vegova.si/blog/tecaj-2023</loc>
|
||||
<lastmod>2023-05-11T09:06:00+00:00</lastmod>
|
||||
<priority>0.64</priority>
|
||||
</url>
|
||||
|
||||
</urlset>
|
BIN
src/app/apple-icon.png
Normal file
BIN
src/app/apple-icon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.2 KiB |
112
src/app/blog/[slug]/page.tsx
Normal file
112
src/app/blog/[slug]/page.tsx
Normal file
@ -0,0 +1,112 @@
|
||||
import { notFound } from "next/navigation";
|
||||
import { allBlogs } from "contentlayer/generated";
|
||||
import { useMDXComponent } from "next-contentlayer/hooks";
|
||||
import { Metadata } from "next";
|
||||
import { DiscordInvite } from "@/components/discord_invite";
|
||||
import ModalImage from "@/components/modal_image";
|
||||
|
||||
export function generateStaticParams() {
|
||||
return allBlogs.map((post) => ({ slug: post.slug }));
|
||||
}
|
||||
|
||||
interface BlogPageProps {
|
||||
params: {
|
||||
slug: string;
|
||||
};
|
||||
}
|
||||
|
||||
export function generateMetadata({ params }: BlogPageProps): Metadata {
|
||||
const post = allBlogs.find((post) => post.slug === params.slug);
|
||||
|
||||
if (!post) return {};
|
||||
|
||||
return {
|
||||
title: post.title,
|
||||
description: post.summary,
|
||||
authors: post.authors.map((author) => ({ name: author })),
|
||||
openGraph: {
|
||||
title: post.title,
|
||||
description: post.summary,
|
||||
url: `https://rklub.vegova.si/blog/${post.slug}`,
|
||||
type: "article",
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
function BlogImage(props: any) {
|
||||
return (
|
||||
<div className="mb-4 is-flex">
|
||||
<div className="mx-auto blog-img">
|
||||
<ModalImage
|
||||
image={props.src}
|
||||
alt={props.alt}
|
||||
height={800}
|
||||
width={800}
|
||||
{...props}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
function Paragraph(props: any) {
|
||||
return <div className="mb-4" {...props} />;
|
||||
}
|
||||
|
||||
const components = {
|
||||
p: Paragraph,
|
||||
img: BlogImage,
|
||||
DiscordInvite,
|
||||
};
|
||||
|
||||
export default function Blog({ params }: BlogPageProps) {
|
||||
const post = allBlogs.find((post) => post.slug === params.slug);
|
||||
|
||||
if (!post) {
|
||||
notFound();
|
||||
}
|
||||
|
||||
const Component = useMDXComponent(post.body.code);
|
||||
|
||||
return (
|
||||
<div className="container blog-container">
|
||||
<section className="section">
|
||||
<div className="content">
|
||||
<div className="article-header is-flex is-align-items-center mb-5">
|
||||
<div>
|
||||
<h2 className="m-0">{post.title}</h2>
|
||||
<p className="has-text-grey">{buildAuthorList(post.authors)}</p>
|
||||
</div>
|
||||
<span className="tag is-primary is-medium ml-auto has-text-weight-semibold">
|
||||
{new Date(post.publishedAt).toLocaleDateString("sl")}
|
||||
</span>
|
||||
</div>
|
||||
<article>
|
||||
<Component components={components} />
|
||||
</article>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
function buildAuthorList(authors: string[]) {
|
||||
let authorCount = authors.length;
|
||||
|
||||
let authorsString = "Avtor";
|
||||
if (authorCount == 2) {
|
||||
authorsString += "ja";
|
||||
} else if (authorCount > 2) {
|
||||
authorsString += "ji";
|
||||
}
|
||||
authorsString += ": " + authors[0];
|
||||
|
||||
for (let i = 1; i < authorCount - 1; i++) {
|
||||
authorsString += ", " + authors[i];
|
||||
}
|
||||
if (authorCount > 1) {
|
||||
authorsString += " in " + authors[authorCount - 1];
|
||||
}
|
||||
|
||||
return authorsString;
|
||||
}
|
42
src/app/blog/page.tsx
Normal file
42
src/app/blog/page.tsx
Normal file
@ -0,0 +1,42 @@
|
||||
import { Metadata } from "next";
|
||||
import Link from "next/link";
|
||||
import { allBlogs } from "contentlayer/generated";
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: "Blog",
|
||||
description: "Blog Radiokluba Vegova",
|
||||
};
|
||||
|
||||
export default function BlogPage() {
|
||||
return (
|
||||
<div className="container">
|
||||
<section className="section">
|
||||
<div className="content">
|
||||
<h2 className="mb-5">Blog</h2>
|
||||
{allBlogs
|
||||
.sort((a, b) => {
|
||||
const dateA = new Date(a.publishedAt).valueOf();
|
||||
const dateB = new Date(b.publishedAt).valueOf();
|
||||
if (dateA !== dateB) {
|
||||
return dateB - dateA;
|
||||
}
|
||||
|
||||
return a.title.localeCompare(b.title);
|
||||
})
|
||||
.map((post) => (
|
||||
<Link
|
||||
key={post.slug}
|
||||
className="is-block mb-4"
|
||||
href={`/blog/${post.slug}`}
|
||||
>
|
||||
<p className="is-size-5 m-0 has-text-weight-medium">
|
||||
{post.title}
|
||||
</p>
|
||||
<p className="is-size-6 has-text-grey">{post.summary}</p>
|
||||
</Link>
|
||||
))}
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
);
|
||||
}
|
45
src/app/discord/page.tsx
Normal file
45
src/app/discord/page.tsx
Normal file
@ -0,0 +1,45 @@
|
||||
"use client";
|
||||
|
||||
import { faDiscord } from "@fortawesome/free-brands-svg-icons";
|
||||
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
|
||||
import Link from "next/link";
|
||||
import { useRouter } from "next/navigation";
|
||||
import { useState } from "react";
|
||||
|
||||
const guild_id = process.env.NEXT_PUBLIC_GUILD_ID;
|
||||
|
||||
export default function DiscordRedirect() {
|
||||
const router = useRouter();
|
||||
const [href, setHref] = useState();
|
||||
|
||||
fetch(`https://discord.com/api/guilds/${guild_id}/widget.json`)
|
||||
.then((res) => res.json())
|
||||
.then((json) => {
|
||||
const invite = json.instant_invite;
|
||||
setHref(invite);
|
||||
router.replace(invite);
|
||||
});
|
||||
|
||||
return (
|
||||
<div className="container">
|
||||
<section className="section">
|
||||
<div className="has-text-centered">
|
||||
<FontAwesomeIcon
|
||||
icon={faDiscord}
|
||||
size="6x"
|
||||
style={{ color: "#5865f2" }}
|
||||
/>
|
||||
<h2 className="is-size-3 has-text-weight-semibold">Prosim počakaj</h2>
|
||||
<p className="is-size-4">
|
||||
V kratkem boš preusmerjen na naš Discord strežnik
|
||||
</p>
|
||||
{href && (
|
||||
<p className="pt-2">
|
||||
Če preusmeritev ne uspe, <Link href={href}>klikni sem</Link>.
|
||||
</p>
|
||||
)}
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
);
|
||||
}
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
47
src/app/galerija/page.tsx
Normal file
47
src/app/galerija/page.tsx
Normal file
@ -0,0 +1,47 @@
|
||||
import ModalImage from "@/components/modal_image";
|
||||
import fs from "fs/promises";
|
||||
import path from "path";
|
||||
import { Metadata } from "next";
|
||||
import ExifReader from "exifreader";
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: "Galerija",
|
||||
description: "Galerija Radiokluba Vegova",
|
||||
};
|
||||
|
||||
export default async function Gallery() {
|
||||
const idir = path.join(process.cwd(), "/public/images/gallery/");
|
||||
const dirs = await fs.readdir(idir);
|
||||
|
||||
const desc = await Promise.all(
|
||||
dirs.map((dir) =>
|
||||
ExifReader.load(path.join(idir, dir)).then(
|
||||
(exif) => exif?.ImageDescription?.description
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
const images = dirs.map((dir, i) => ({
|
||||
src: dir,
|
||||
alt: desc[i] ?? "",
|
||||
}));
|
||||
|
||||
return (
|
||||
<div className="container">
|
||||
<section className="section">
|
||||
<div className="content">
|
||||
<h2>Galerija</h2>
|
||||
<div className="galerija">
|
||||
{images.map((img) => (
|
||||
<ModalImage
|
||||
key={img.src}
|
||||
image={"/images/gallery/" + img.src}
|
||||
alt={img.alt}
|
||||
/>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
);
|
||||
}
|
BIN
src/app/icon.png
Normal file
BIN
src/app/icon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.9 KiB |
61
src/app/layout.tsx
Normal file
61
src/app/layout.tsx
Normal file
@ -0,0 +1,61 @@
|
||||
import "@/styles/globals.scss";
|
||||
|
||||
import { config } from "@fortawesome/fontawesome-svg-core";
|
||||
import "@fortawesome/fontawesome-svg-core/styles.css";
|
||||
config.autoAddCss = false;
|
||||
|
||||
import Header from "@/components/header";
|
||||
import { Metadata } from "next";
|
||||
import PlausibleProvider from "next-plausible";
|
||||
import Footer from "@/components/footer";
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: {
|
||||
default: "Radioklub Vegova",
|
||||
template: "%s - Radioklub Vegova",
|
||||
},
|
||||
description: "Domača stran Radiokluba Vegova",
|
||||
metadataBase: new URL("https://rklub.vegova.si"),
|
||||
openGraph: {
|
||||
title: "Radioklub Vegova",
|
||||
description: "Domača stran Radiokluba Vegova",
|
||||
url: "https://rklub.vegova.si",
|
||||
locale: "sl_SI",
|
||||
type: "website",
|
||||
},
|
||||
robots: {
|
||||
index: true,
|
||||
follow: true,
|
||||
googleBot: {
|
||||
index: true,
|
||||
follow: true,
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
export default function RootLayout({
|
||||
children,
|
||||
}: {
|
||||
children: React.ReactNode;
|
||||
}) {
|
||||
return (
|
||||
<html lang="sl">
|
||||
<body>
|
||||
<PlausibleProvider
|
||||
domain={PLAUSIBLE_DOMAIN}
|
||||
customDomain={PLAUSIBLE_HOST}
|
||||
trackLocalhost={true}
|
||||
>
|
||||
<Header />
|
||||
|
||||
<main>{children}</main>
|
||||
|
||||
<Footer />
|
||||
</PlausibleProvider>
|
||||
</body>
|
||||
</html>
|
||||
);
|
||||
}
|
||||
|
||||
const PLAUSIBLE_DOMAIN = process.env.NEXT_PUBLIC_PLAUSIBLE_DOMAIN!;
|
||||
const PLAUSIBLE_HOST = process.env.NEXT_PUBLIC_PLAUSIBLE_HOST!;
|
52
src/app/page.tsx
Normal file
52
src/app/page.tsx
Normal file
@ -0,0 +1,52 @@
|
||||
import Image from "next/image";
|
||||
import { DiscordInvite } from "@/components/discord_invite";
|
||||
|
||||
export default function Home() {
|
||||
return (
|
||||
<div className="container">
|
||||
<section className="section">
|
||||
<div className="content">
|
||||
<h2>Dobrodošel, radioamater!</h2>
|
||||
<div className="columns">
|
||||
<div className="column">
|
||||
<p>
|
||||
Pozdravljeni na spletni strani Radiokluba Vegova, dijaške
|
||||
radioamaterske skupnosti na Vegovi v Ljubljani. Osnovno
|
||||
poslanstvo kluba je spoznavanje in navduševanje dijakov z
|
||||
aktivnostmi radioamaterstva, k lažjemu vstopu v novo dejavnost
|
||||
pa pripomorejo znano šolsko okolje, sošolci, s katerimi se člani
|
||||
videvajo dnevno in interaktivno študijsko gradivo, ki se hkrati
|
||||
uporablja pri poučevanju.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Tečaj – priprave na radioamaterski izpit –
|
||||
izvajamo letno. Da se ga lahko udeležijo vsi kandidati, ne glede
|
||||
na njihov urnik, predavamo v večernih urah na daljavo prek
|
||||
platforme Discord. Po opravljenem tečaju na šoli organiziramo
|
||||
izpit, kar članom omogoči pridobitev radioamaterskega
|
||||
dovoljenja.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Na šoli imamo lastno klubsko sobo, namenjeno srečanjem, druženju
|
||||
in hrambi opreme, za razne aktivnosti pa so nam na voljo tudi
|
||||
druge učilnice.
|
||||
</p>
|
||||
|
||||
<DiscordInvite />
|
||||
</div>
|
||||
<div className="column">
|
||||
<Image
|
||||
src="/images/gallery/srecanje_1.jpg"
|
||||
alt="Radioklub"
|
||||
height={612}
|
||||
width={816}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
);
|
||||
}
|
13
src/app/robots.ts
Normal file
13
src/app/robots.ts
Normal file
@ -0,0 +1,13 @@
|
||||
import { MetadataRoute } from "next";
|
||||
|
||||
export default function robots(): MetadataRoute.Robots {
|
||||
return {
|
||||
rules: {
|
||||
userAgent: "*",
|
||||
allow: "/",
|
||||
disallow: ["/log/", "/ura/"],
|
||||
},
|
||||
sitemap: "https://rklub.vegova.si/sitemap.xml",
|
||||
host: "https://rklub.vegova.si",
|
||||
};
|
||||
}
|
18
src/app/sitemap.ts
Normal file
18
src/app/sitemap.ts
Normal file
@ -0,0 +1,18 @@
|
||||
import { allBlogs } from "contentlayer/generated";
|
||||
import { MetadataRoute } from "next";
|
||||
|
||||
export default function sitemap(): MetadataRoute.Sitemap {
|
||||
const host = "https://rklub.vegova.si";
|
||||
|
||||
const pages = ["", "/blog", "/galerija", "/tecaj"].map((url) => ({
|
||||
url: `${host}${url}`,
|
||||
lastModified: new Date(),
|
||||
}));
|
||||
|
||||
const posts = allBlogs.map((post) => ({
|
||||
url: `${host}/blog/${post.slug}`,
|
||||
lastModified: new Date(post.publishedAt),
|
||||
}));
|
||||
|
||||
return [...pages, ...posts];
|
||||
}
|
222
src/app/tecaj/page.tsx
Normal file
222
src/app/tecaj/page.tsx
Normal file
@ -0,0 +1,222 @@
|
||||
"use client";
|
||||
|
||||
import Link from "next/link";
|
||||
import Image from "next/image";
|
||||
import {
|
||||
faDownload,
|
||||
faExpand,
|
||||
faFilePdf,
|
||||
faList,
|
||||
} from "@fortawesome/free-solid-svg-icons";
|
||||
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
|
||||
import { Metadata } from "next";
|
||||
import { useRef } from "react";
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: "Tečaj",
|
||||
description: "Radioamaterski tečaj za razred A",
|
||||
};
|
||||
|
||||
export default function Tecaj() {
|
||||
const iFrameRef = useRef<HTMLIFrameElement>(null);
|
||||
|
||||
return (
|
||||
<div className="container">
|
||||
<section className="section">
|
||||
<div className="content">
|
||||
<div className="buttons are-medium is-flex is-justify-content-end">
|
||||
<button
|
||||
className="button is-light"
|
||||
onClick={() => iFrameRef.current?.requestFullscreen()}
|
||||
>
|
||||
<span className="icon">
|
||||
<FontAwesomeIcon icon={faExpand} />
|
||||
</span>
|
||||
<span>Celozaslonski način</span>
|
||||
</button>
|
||||
<Link
|
||||
href="/prosojnice/prosojnice.pdf"
|
||||
className="button is-primary"
|
||||
>
|
||||
<span className="icon">
|
||||
<FontAwesomeIcon icon={faDownload} />
|
||||
</span>
|
||||
<span>Prenesi PDF</span>
|
||||
</Link>
|
||||
</div>
|
||||
|
||||
<iframe
|
||||
ref={iFrameRef}
|
||||
className="presentation"
|
||||
src="/prosojnice/index.html"
|
||||
/>
|
||||
|
||||
<h2>Uporabne povezave</h2>
|
||||
<div className="buttons are-medium">
|
||||
{uporabnePovezave.map((p, i) => (
|
||||
<Link
|
||||
href={p.href}
|
||||
key={i}
|
||||
className={`button ${p.isPrimary ? "is-primary" : "is-light"}`}
|
||||
>
|
||||
{p.icon && (
|
||||
<span className="icon">
|
||||
<FontAwesomeIcon icon={p.icon} />
|
||||
</span>
|
||||
)}
|
||||
<span>{p.title}</span>
|
||||
</Link>
|
||||
))}
|
||||
</div>
|
||||
|
||||
<h2>Kazalo poglavij</h2>
|
||||
<div className="columns is-multiline">
|
||||
{poglavja.map((p, i) => (
|
||||
<div
|
||||
key={i}
|
||||
className="column is-half-tablet is-one-third-desktop"
|
||||
>
|
||||
<div className="card">
|
||||
<div className="card-image">
|
||||
<figure className="image is-2by1 m-0">
|
||||
<Image
|
||||
src={p.image}
|
||||
alt={p.title}
|
||||
height={500}
|
||||
width={500}
|
||||
/>
|
||||
</figure>
|
||||
</div>
|
||||
<div className="card-content">
|
||||
<p className="title is-size-4">{p.title}</p>
|
||||
<div className="content">{p.children}</div>
|
||||
</div>
|
||||
<footer className="card-footer has-background-light">
|
||||
<button
|
||||
className="card-footer-item button is-light"
|
||||
onClick={() => {
|
||||
const iframe = iFrameRef?.current;
|
||||
if (!iframe) return;
|
||||
iframe.src = `/prosojnice/index.html${p.href}`;
|
||||
iframe.scrollIntoView({ behavior: "smooth" });
|
||||
}}
|
||||
>
|
||||
Na poglavje
|
||||
</button>
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
const uporabnePovezave = [
|
||||
{
|
||||
title: "Vaje za izpit",
|
||||
href: "https://izpit.jkob.cc/",
|
||||
isPrimary: true,
|
||||
},
|
||||
{
|
||||
title: "Priročnik za radioamaterje",
|
||||
href: "/files/prirocnik_2019.pdf",
|
||||
icon: faFilePdf,
|
||||
},
|
||||
{
|
||||
title: "Etika in operaterski postopki",
|
||||
href: "/files/etika_junij_2021.pdf",
|
||||
icon: faFilePdf,
|
||||
},
|
||||
{
|
||||
title: "Seznam zasedenih klicnih znakov",
|
||||
href: "https://www.akos-rs.si/registri/seznam-registrov/radioamaterji",
|
||||
},
|
||||
{
|
||||
title: "Kriteriji za izpit",
|
||||
href: "/files/kriteriji.pdf",
|
||||
icon: faFilePdf,
|
||||
},
|
||||
];
|
||||
|
||||
const poglavja = [
|
||||
{
|
||||
title: "1. Radioamaterji in radijske komunikacije",
|
||||
image: "/images/tecaj/poglavje1.jpg",
|
||||
href: "#1-radioamaterji-in-radijske-komunikacije",
|
||||
children: [
|
||||
"Zgodovina, razvoj in pomen radioamaterstva",
|
||||
"Mednarodna radioamaterska organizacija - IARU",
|
||||
"Zveza radioamaterjev Slovenije - ZRS",
|
||||
],
|
||||
},
|
||||
{
|
||||
title: "2. Radijske komunikacije",
|
||||
image: "/images/tecaj/itu.webp",
|
||||
href: "#2-radijske-komunikacije",
|
||||
children: [
|
||||
"Osnovni pojmi o radijskih komunikacijah",
|
||||
"Radioamaterska razdelitev sveta",
|
||||
"Mednarodna razdelitev radijskih frekvenc",
|
||||
],
|
||||
},
|
||||
{
|
||||
title: "3. Predpisi za amaterske radijske komunikacije",
|
||||
image: "/prosojnice/images/cept.jpg",
|
||||
href: "#3-predpisi-za-amaterske-radijske-komunikacije",
|
||||
children: [
|
||||
"Mednarodni predpisi",
|
||||
"Slovenski predpisi",
|
||||
"CEPT licenca",
|
||||
"Priporočili CEPT T/R 61-01 in T/R 61-02",
|
||||
],
|
||||
},
|
||||
{
|
||||
title: "4. Pravila in praksa v amaterskih radijskih komunikacijah",
|
||||
image: "/prosojnice/images/logs.jpg",
|
||||
href: "#4-pravila-in-praksa-v-amaterskih-radijskih-komunikacijah",
|
||||
children: [
|
||||
"Vspostavljanje amaterskih radijskih zvez",
|
||||
"Amaterske zveze v telegrafiji in telefoniji",
|
||||
"Amaterske digitalne komunikacije",
|
||||
"Dnevnik dela radijske postaje",
|
||||
"QSL kartica",
|
||||
"…",
|
||||
],
|
||||
},
|
||||
{
|
||||
title: "5. Elektrotehnika",
|
||||
image: "/prosojnice/images/web_19.jpg",
|
||||
href: "#5-elektrotehnika",
|
||||
children: [
|
||||
"Električni tok, napetost in upornost",
|
||||
"Ohmov zakon in moč",
|
||||
"Tuljave in kondenzatorji",
|
||||
"Filtri",
|
||||
"Polprevodniki",
|
||||
"Elektronske cevi",
|
||||
"Mikrofoni in zvočnik",
|
||||
"Ojačevalniki",
|
||||
"Napajalniki",
|
||||
],
|
||||
},
|
||||
{
|
||||
title: "6. Radiotehnika",
|
||||
image: "/images/tecaj/poglavje6.jpg",
|
||||
href: "#6-radiotehnika",
|
||||
children: [
|
||||
"Radijski valovi in prenos",
|
||||
"Radijski oddajniki",
|
||||
"Radijski sprejemniki",
|
||||
"Valovanje",
|
||||
"Razširjanje radijskih valov",
|
||||
"Antene",
|
||||
"Napajanje anten",
|
||||
"Motnje",
|
||||
"Meritve in merilni inštrumenti",
|
||||
"Nevarnosti pri delu z električnim tokom",
|
||||
],
|
||||
},
|
||||
];
|
@ -1,23 +0,0 @@
|
||||
import Link from "next/link";
|
||||
import { IconProp } from "@fortawesome/fontawesome-svg-core";
|
||||
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
|
||||
|
||||
interface ButtonProps {
|
||||
href: string;
|
||||
icon?: IconProp;
|
||||
text: string;
|
||||
className: string;
|
||||
}
|
||||
|
||||
export default function Button(props: ButtonProps) {
|
||||
return (
|
||||
<Link href={props.href} className={props.className + " button"}>
|
||||
{props.icon && (
|
||||
<span className="icon">
|
||||
<FontAwesomeIcon icon={props.icon} />
|
||||
</span>
|
||||
)}
|
||||
<span>{props.text}</span>
|
||||
</Link>
|
||||
);
|
||||
}
|
@ -1,37 +1,13 @@
|
||||
"use client";
|
||||
|
||||
import { faDiscord } from "@fortawesome/free-brands-svg-icons";
|
||||
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
|
||||
import Link from "next/link";
|
||||
import styles from "@/styles/DiscordInvite.module.scss";
|
||||
import { create } from "zustand";
|
||||
|
||||
interface Invite {
|
||||
href: string | null | undefined;
|
||||
setHref: (href: string | null | undefined) => void;
|
||||
}
|
||||
|
||||
const useState = create<Invite>((set) => ({
|
||||
href: undefined,
|
||||
setHref: (href: string | null | undefined) => set({ href }),
|
||||
}));
|
||||
|
||||
export function DiscordInvite() {
|
||||
const { href, setHref } = useState();
|
||||
|
||||
if (href === undefined) {
|
||||
setHref(null);
|
||||
|
||||
fetch("https://discord.com/api/guilds/733765085138255984/widget.json")
|
||||
.then((res) => res.json())
|
||||
.then((json) => setHref(json.instant_invite));
|
||||
}
|
||||
|
||||
return (
|
||||
<Link
|
||||
href={href ?? ""}
|
||||
className={`button ${styles.discord} ${
|
||||
href == undefined ? "is-loading" : ""
|
||||
}`}
|
||||
>
|
||||
<Link href="/discord" className={`button ${styles.discord}`}>
|
||||
<span className="icon">
|
||||
<FontAwesomeIcon icon={faDiscord} />
|
||||
</span>
|
||||
|
@ -1,6 +1,8 @@
|
||||
"use client";
|
||||
|
||||
import Image from "next/image";
|
||||
import Link from "next/link";
|
||||
import { useRouter } from "next/router";
|
||||
import { usePathname } from "next/navigation";
|
||||
import { useState } from "react";
|
||||
|
||||
const navItems = [
|
||||
@ -13,8 +15,8 @@ const navItems = [
|
||||
export default function Header() {
|
||||
const [navbar, setNavbar] = useState<boolean>(false);
|
||||
|
||||
let pathname = useRouter().pathname;
|
||||
if (pathname.startsWith("/blog/")) pathname = "/blog";
|
||||
let pathname = usePathname();
|
||||
if (pathname?.startsWith("/blog/")) pathname = "/blog";
|
||||
|
||||
const close = () => setNavbar(false);
|
||||
|
||||
@ -25,12 +27,7 @@ export default function Header() {
|
||||
<div className="is-flex is-align-items-center">
|
||||
<Link href="/">
|
||||
<figure className="image">
|
||||
<Image
|
||||
src="/images/RKV_logo_64.png"
|
||||
alt="RKV Logo"
|
||||
width={64}
|
||||
height={64}
|
||||
/>
|
||||
<Image src="/icon.png" alt="RKV Logo" width={64} height={64} />
|
||||
</figure>
|
||||
</Link>
|
||||
<Link href="/" className="ml-4">
|
||||
|
@ -1,21 +0,0 @@
|
||||
import Head from "next/head";
|
||||
import Header from "./header";
|
||||
|
||||
interface LayoutProps {
|
||||
children: React.ReactNode;
|
||||
}
|
||||
|
||||
export default function Layout({ children }: LayoutProps) {
|
||||
return (
|
||||
<>
|
||||
<Head>
|
||||
<title>Radioklub Vegova</title>
|
||||
<meta name="description" content="Radioklub Vegova" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
</Head>
|
||||
|
||||
<Header />
|
||||
<main>{children}</main>
|
||||
</>
|
||||
);
|
||||
}
|
@ -1,3 +1,5 @@
|
||||
"use client";
|
||||
|
||||
import {
|
||||
faArrowLeft,
|
||||
faDownload,
|
||||
|
@ -1,5 +0,0 @@
|
||||
export interface Category {
|
||||
id: number;
|
||||
title: string;
|
||||
questions: number[][];
|
||||
}
|
@ -1,7 +0,0 @@
|
||||
export interface Question {
|
||||
id: number;
|
||||
question: string;
|
||||
image?: string;
|
||||
answers?: string[];
|
||||
correct?: number;
|
||||
}
|
@ -1,36 +0,0 @@
|
||||
import "@/styles/globals.scss";
|
||||
import type { AppProps } from "next/app";
|
||||
|
||||
import { config } from "@fortawesome/fontawesome-svg-core";
|
||||
import "@fortawesome/fontawesome-svg-core/styles.css";
|
||||
config.autoAddCss = false;
|
||||
|
||||
import "reveal.js/dist/reveal.css";
|
||||
import Layout from "@/components/layout";
|
||||
|
||||
import PlausibleProvider from "next-plausible";
|
||||
|
||||
const PLAUSIBLE_DOMAIN = process.env.NEXT_PUBLIC_PLAUSIBLE_DOMAIN;
|
||||
const PLAUSIBLE_HOST = process.env.NEXT_PUBLIC_PLAUSIBLE_HOST;
|
||||
|
||||
export default function App({ Component, pageProps }: AppProps) {
|
||||
let component = (
|
||||
<Layout>
|
||||
<Component {...pageProps} />
|
||||
</Layout>
|
||||
);
|
||||
|
||||
if (PLAUSIBLE_DOMAIN) {
|
||||
component = (
|
||||
<PlausibleProvider
|
||||
domain={PLAUSIBLE_DOMAIN}
|
||||
customDomain={PLAUSIBLE_HOST}
|
||||
trackLocalhost={true}
|
||||
>
|
||||
{component}
|
||||
</PlausibleProvider>
|
||||
);
|
||||
}
|
||||
|
||||
return component;
|
||||
}
|
@ -1,18 +0,0 @@
|
||||
import Footer from "@/components/footer";
|
||||
import { Html, Head, Main, NextScript } from "next/document";
|
||||
|
||||
export default function Document() {
|
||||
return (
|
||||
<Html lang="sl">
|
||||
<Head>
|
||||
<link rel="icon" href="/images/RKV_logo_128.png" />
|
||||
</Head>
|
||||
<body>
|
||||
<Main />
|
||||
<Footer />
|
||||
|
||||
<NextScript />
|
||||
</body>
|
||||
</Html>
|
||||
);
|
||||
}
|
@ -1,110 +0,0 @@
|
||||
import { notFound } from "next/navigation";
|
||||
import { allBlogs } from "contentlayer/generated";
|
||||
import { useMDXComponent } from "next-contentlayer/hooks";
|
||||
import { GetStaticPaths, GetStaticProps } from "next";
|
||||
import { DiscordInvite } from "@/components/discord_invite";
|
||||
import ModalImage from "@/components/modal_image";
|
||||
import Head from "next/head";
|
||||
|
||||
function BlogImage(props: any) {
|
||||
return (
|
||||
<div className="mb-4 is-flex">
|
||||
<div className="mx-auto blog-img">
|
||||
<ModalImage
|
||||
image={props.src}
|
||||
alt={props.alt}
|
||||
height={800}
|
||||
width={800}
|
||||
{...props}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
function Paragraph(props: any) {
|
||||
return <div className="mb-4" {...props} />;
|
||||
}
|
||||
|
||||
const components = {
|
||||
p: Paragraph,
|
||||
img: BlogImage,
|
||||
DiscordInvite,
|
||||
};
|
||||
|
||||
export default function Blog({ slug }: { slug: string }) {
|
||||
const post = allBlogs.find((post) => post.slug === slug);
|
||||
|
||||
if (!post) {
|
||||
notFound();
|
||||
}
|
||||
|
||||
const Component = useMDXComponent(post.body.code);
|
||||
|
||||
return (
|
||||
<>
|
||||
<Head>
|
||||
<title>{`${post.title} - Radioklub Vegova`}</title>
|
||||
</Head>
|
||||
|
||||
<div className="container blog-container">
|
||||
<section className="section">
|
||||
<div className="content">
|
||||
<div className="article-header is-flex is-align-items-center mb-5">
|
||||
<div>
|
||||
<h2 className="m-0">{post.title}</h2>
|
||||
<p className="has-text-grey">{buildAuthorList(post.authors)}</p>
|
||||
</div>
|
||||
<span className="tag is-primary is-medium ml-auto has-text-weight-semibold">
|
||||
{new Date(post.publishedAt).toLocaleDateString("sl")}
|
||||
</span>
|
||||
</div>
|
||||
<article>
|
||||
<Component components={components} />
|
||||
</article>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
export const getStaticPaths: GetStaticPaths = async () => {
|
||||
return {
|
||||
paths: allBlogs.map((post) => ({ params: { slug: post.slug } })),
|
||||
fallback: false, // can also be true or 'blocking'
|
||||
};
|
||||
};
|
||||
|
||||
export const getStaticProps: GetStaticProps = async ({ params }) => {
|
||||
if (!params?.slug) {
|
||||
return {
|
||||
props: {},
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
props: { slug: params.slug },
|
||||
};
|
||||
};
|
||||
|
||||
function buildAuthorList(authors: string[]) {
|
||||
let authorCount = authors.length;
|
||||
|
||||
let authorsString = "Avtor";
|
||||
if (authorCount == 2) {
|
||||
authorsString += "ja";
|
||||
} else if (authorCount > 2) {
|
||||
authorsString += "ji";
|
||||
}
|
||||
authorsString += ": " + authors[0];
|
||||
|
||||
for (let i = 1; i < authorCount - 1; i++) {
|
||||
authorsString += ", " + authors[i];
|
||||
}
|
||||
if (authorCount > 1) {
|
||||
authorsString += " in " + authors[authorCount - 1];
|
||||
}
|
||||
|
||||
return authorsString;
|
||||
}
|
@ -1,43 +0,0 @@
|
||||
import Head from "next/head";
|
||||
import Link from "next/link";
|
||||
import { allBlogs } from "contentlayer/generated";
|
||||
|
||||
export default function BlogPage() {
|
||||
return (
|
||||
<>
|
||||
<Head>
|
||||
<title>Blog - Radioklub Vegova</title>
|
||||
</Head>
|
||||
|
||||
<div className="container">
|
||||
<section className="section">
|
||||
<div className="content">
|
||||
<h2 className="mb-5">Blog</h2>
|
||||
{allBlogs
|
||||
.sort((a, b) => {
|
||||
const dateA = new Date(a.publishedAt).valueOf();
|
||||
const dateB = new Date(b.publishedAt).valueOf();
|
||||
if (dateA !== dateB) {
|
||||
return dateB - dateA;
|
||||
}
|
||||
|
||||
return a.title.localeCompare(b.title);
|
||||
})
|
||||
.map((post) => (
|
||||
<Link
|
||||
key={post.slug}
|
||||
className="is-block mb-4"
|
||||
href={`/blog/${post.slug}`}
|
||||
>
|
||||
<p className="is-size-5 m-0 has-text-weight-medium">
|
||||
{post.title}
|
||||
</p>
|
||||
<p className="is-size-6 has-text-grey">{post.summary}</p>
|
||||
</Link>
|
||||
))}
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</>
|
||||
);
|
||||
}
|
@ -1,58 +0,0 @@
|
||||
import ModalImage from "@/components/modal_image";
|
||||
import Head from "next/head";
|
||||
import fs from "fs/promises";
|
||||
import path from "path";
|
||||
import { GetStaticProps } from "next";
|
||||
import exifr from "exifr";
|
||||
|
||||
interface GalleryProps {
|
||||
images: { src: string; alt: string }[];
|
||||
}
|
||||
|
||||
export default function Gallery({ images }: GalleryProps) {
|
||||
return (
|
||||
<>
|
||||
<Head>
|
||||
<title>Galerija - Radioklub Vegova</title>
|
||||
<meta name="description" content="Galerija Radiokluba Vegova" />
|
||||
</Head>
|
||||
|
||||
<div className="container">
|
||||
<section className="section">
|
||||
<div className="content">
|
||||
<h2>Galerija</h2>
|
||||
<div className="galerija">
|
||||
{images.map((img) => (
|
||||
<ModalImage
|
||||
key={img.src}
|
||||
image={"/images/gallery/" + img.src}
|
||||
alt={img.alt}
|
||||
/>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
export const getStaticProps: GetStaticProps = async () => {
|
||||
const props = { images: [] } as GalleryProps;
|
||||
|
||||
try {
|
||||
const idir = path.join(process.cwd(), "/public/images/gallery/");
|
||||
const dirs = await fs.readdir(idir);
|
||||
|
||||
const desc = await Promise.all(
|
||||
dirs.map((dir) => exifr.parse(path.join(idir, dir), ["ImageDescription"]))
|
||||
);
|
||||
|
||||
props.images = dirs.map((dir, i) => ({
|
||||
src: dir,
|
||||
alt: desc[i]?.ImageDescription ?? "",
|
||||
}));
|
||||
} catch (error) {}
|
||||
|
||||
return { props };
|
||||
};
|
@ -1,60 +0,0 @@
|
||||
import Head from "next/head";
|
||||
import Image from "next/image";
|
||||
import { DiscordInvite } from "@/components/discord_invite";
|
||||
import Link from "next/link";
|
||||
|
||||
export default function Home() {
|
||||
return (
|
||||
<>
|
||||
<Head>
|
||||
<meta name="description" content="Domača stran Radiokluba Vegova" />
|
||||
</Head>
|
||||
|
||||
<div className="container">
|
||||
<section className="section">
|
||||
<div className="content">
|
||||
<h2>Dobrodošel, radioamater!</h2>
|
||||
<div className="columns">
|
||||
<div className="column">
|
||||
<p>
|
||||
Pozdravljeni na spletni strani Radiokluba Vegova, dijaške
|
||||
radioamaterske skupnosti na Vegovi v Ljubljani. Osnovno
|
||||
poslanstvo kluba je spoznavanje in navduševanje dijakov z
|
||||
aktivnostmi radioamaterstva, k lažjemu vstopu v novo dejavnost
|
||||
pa pripomorejo znano šolsko okolje, sošolci, s katerimi se
|
||||
člani videvajo dnevno in interaktivno študijsko gradivo, ki se
|
||||
hkrati uporablja pri poučevanju.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Tečaj – priprave na radioamaterski
|
||||
izpit – izvajamo letno. Da se ga lahko udeležijo
|
||||
vsi kandidati, ne glede na njihov urnik, predavamo v večernih
|
||||
urah na daljavo prek platforme Discord. Po opravljenem tečaju
|
||||
na šoli organiziramo izpit, kar članom omogoči pridobitev
|
||||
radioamaterskega dovoljenja.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Na šoli imamo lastno klubsko sobo, namenjeno srečanjem,
|
||||
druženju in hrambi opreme, za razne aktivnosti pa so nam na
|
||||
voljo tudi druge učilnice.
|
||||
</p>
|
||||
|
||||
<DiscordInvite />
|
||||
</div>
|
||||
<div className="column">
|
||||
<Image
|
||||
src="/images/gallery/srecanje_1.jpg"
|
||||
alt="Radioklub"
|
||||
height={612}
|
||||
width={816}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</>
|
||||
);
|
||||
}
|
@ -1,216 +0,0 @@
|
||||
import Head from "next/head";
|
||||
import Image from "next/image";
|
||||
import {
|
||||
faDownload,
|
||||
faExpand,
|
||||
faFilePdf,
|
||||
faList,
|
||||
} from "@fortawesome/free-solid-svg-icons";
|
||||
import Button from "@/components/button";
|
||||
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
|
||||
|
||||
export default function Tecaj() {
|
||||
return (
|
||||
<>
|
||||
<Head>
|
||||
<title>Tečaj - Radioklub Vegova</title>
|
||||
<meta name="description" content="Radioamaterski tečaj za razred A" />
|
||||
</Head>
|
||||
|
||||
<div className="container">
|
||||
<section className="section">
|
||||
<div className="content">
|
||||
<div className="buttons are-medium is-flex is-justify-content-end">
|
||||
<button
|
||||
className="button is-light"
|
||||
onClick={() => {
|
||||
const iframe = document.querySelector(
|
||||
".presentation"
|
||||
) as HTMLIFrameElement;
|
||||
iframe.requestFullscreen();
|
||||
}}
|
||||
>
|
||||
<span className="icon">
|
||||
<FontAwesomeIcon icon={faExpand} />
|
||||
</span>
|
||||
<span>Celozaslonski način</span>
|
||||
</button>
|
||||
<Button
|
||||
href="/prosojnice/prosojnice.pdf"
|
||||
className="is-primary"
|
||||
text="Prenesi PDF"
|
||||
icon={faDownload}
|
||||
/>
|
||||
</div>
|
||||
|
||||
<iframe className="presentation" src="/prosojnice/index.html" />
|
||||
|
||||
<h2>Uporabne povezave</h2>
|
||||
<div className="buttons are-medium">
|
||||
<Button
|
||||
href="https://izpit.jkob.cc/"
|
||||
className="is-primary"
|
||||
text="Vaje za izpit"
|
||||
/>
|
||||
<Button
|
||||
href="/files/prirocnik_2019.pdf"
|
||||
className="is-light"
|
||||
text="Priročnik za radioamaterje"
|
||||
icon={faFilePdf}
|
||||
/>
|
||||
<Button
|
||||
href="/files/etika_junij_2021.pdf"
|
||||
className="is-light"
|
||||
text="Etika in operaterski postopki"
|
||||
icon={faFilePdf}
|
||||
/>
|
||||
<Button
|
||||
href="https://www.akos-rs.si/registri/seznam-registrov/radioamaterji"
|
||||
className="is-light"
|
||||
text="Seznam zasedenih klicnih znakov"
|
||||
icon={faList}
|
||||
/>
|
||||
<Button
|
||||
href="/files/kriteriji.pdf"
|
||||
className="is-light"
|
||||
text="Kriteriji za izpit"
|
||||
icon={faFilePdf}
|
||||
/>
|
||||
</div>
|
||||
|
||||
<h2>Kazalo poglavij</h2>
|
||||
<div className="columns is-multiline">
|
||||
<Card
|
||||
title="1. Radioamaterji in radijske komunikacije"
|
||||
image="/images/tecaj/poglavje1.jpg"
|
||||
href="#1-radioamaterji-in-radijske-komunikacije"
|
||||
>
|
||||
<ul>
|
||||
<li>Zgodovina, razvoj in pomen radioamaterstva</li>
|
||||
<li>Mednarodna radioamaterska organizacija - IARU</li>
|
||||
<li>Zveza radioamaterjev Slovenije - ZRS</li>
|
||||
</ul>
|
||||
</Card>
|
||||
|
||||
<Card
|
||||
title="2. Radijske komunikacije"
|
||||
image="/images/tecaj/itu.webp"
|
||||
href="#2-radijske-komunikacije"
|
||||
>
|
||||
<ul>
|
||||
<li>Osnovni pojmi o radijskih komunikacijah</li>
|
||||
<li>Radioamaterska razdelitev sveta</li>
|
||||
<li>Mednarodna razdelitev radijskih frekvenc</li>
|
||||
</ul>
|
||||
</Card>
|
||||
|
||||
<Card
|
||||
title="3. Predpisi za amaterske radijske komunikacije"
|
||||
image="/prosojnice/images/cept.jpg"
|
||||
href="#3-predpisi-za-amaterske-radijske-komunikacije"
|
||||
>
|
||||
<ul>
|
||||
<li>Mednarodni predpisi</li>
|
||||
<li>Slovenski predpisi</li>
|
||||
<li>CEPT licenca</li>
|
||||
<li>Priporočili CEPT T/R 61-01 in T/R 61-02</li>
|
||||
</ul>
|
||||
</Card>
|
||||
|
||||
<Card
|
||||
title="4. Pravila in praksa v amaterskih radijskih komunikacijah"
|
||||
image="/prosojnice/images/logs.jpg"
|
||||
href="#4-pravila-in-praksa-v-amaterskih-radijskih-komunikacijah"
|
||||
>
|
||||
<ul>
|
||||
<li>Vspostavljanje amaterskih radijskih zvez</li>
|
||||
<li>Amaterske zveze v telegrafiji in telefoniji</li>
|
||||
<li>Amaterske digitalne komunikacije</li>
|
||||
<li>Dnevnik dela radijske postaje</li>
|
||||
<li>QSL kartica</li>
|
||||
<li>…</li>
|
||||
</ul>
|
||||
</Card>
|
||||
|
||||
<Card
|
||||
title="5. Elektrotehnika"
|
||||
image="/prosojnice/images/web_19.jpg"
|
||||
href="#5-elektrotehnika"
|
||||
>
|
||||
<ul>
|
||||
<li>Električni tok, napetost in upornost</li>
|
||||
<li>Ohmov zakon in moč</li>
|
||||
<li>Tuljave in kondenzatorji</li>
|
||||
<li>Filtri</li>
|
||||
<li>Polprevodniki</li>
|
||||
<li>Elektronske cevi</li>
|
||||
<li>Mikrofoni in zvočnik</li>
|
||||
<li>Ojačevalniki</li>
|
||||
<li>Napajalniki</li>
|
||||
</ul>
|
||||
</Card>
|
||||
|
||||
<Card
|
||||
title="6. Radiotehnika"
|
||||
image="/images/tecaj/poglavje6.jpg"
|
||||
href="#6-radiotehnika"
|
||||
>
|
||||
<ul>
|
||||
<li>Radijski valovi in prenos</li>
|
||||
<li>Radijski oddajniki</li>
|
||||
<li>Radijski sprejemniki</li>
|
||||
<li>Valovanje</li>
|
||||
<li>Razširjanje radijskih valov</li>
|
||||
<li>Antene</li>
|
||||
<li>Napajanje anten</li>
|
||||
<li>Motnje</li>
|
||||
<li>Meritve in merilni inštrumenti</li>
|
||||
<li>Nevarnosti pri delu z električnim tokom</li>
|
||||
</ul>
|
||||
</Card>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
interface CardProps {
|
||||
title: string;
|
||||
href: string;
|
||||
image: string;
|
||||
children: React.ReactNode;
|
||||
}
|
||||
|
||||
function Card({ title, href, image, children }: CardProps) {
|
||||
return (
|
||||
<div className="column is-half-tablet is-one-third-desktop">
|
||||
<div className="card">
|
||||
<div className="card-image">
|
||||
<figure className="image is-2by1 m-0">
|
||||
<Image src={image} alt={title} height={500} width={500} />
|
||||
</figure>
|
||||
</div>
|
||||
<div className="card-content">
|
||||
<p className="title is-size-4">{title}</p>
|
||||
<div className="content">{children}</div>
|
||||
</div>
|
||||
<footer className="card-footer has-background-light">
|
||||
<button
|
||||
className="card-footer-item button is-light"
|
||||
onClick={() => {
|
||||
const iframe = document.querySelector(
|
||||
".presentation"
|
||||
) as HTMLIFrameElement;
|
||||
iframe.src = `/prosojnice/index.html${href}`;
|
||||
iframe.scrollIntoView({ behavior: "smooth" });
|
||||
}}
|
||||
>
|
||||
Na poglavje
|
||||
</button>
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
@ -1,9 +1,19 @@
|
||||
.discord {
|
||||
background-color: #5865f2;
|
||||
color: white;
|
||||
font-weight: 500;
|
||||
|
||||
&:hover {
|
||||
background-color: #454fbf;
|
||||
transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out;
|
||||
|
||||
&:hover,
|
||||
&:active,
|
||||
&:focus {
|
||||
background-color: hsl(235, 86.1%, 71.8%);
|
||||
background-color: hsl(
|
||||
235,
|
||||
calc(var(--saturation-factor, 1) * 86.1%),
|
||||
71.8%
|
||||
);
|
||||
color: white;
|
||||
}
|
||||
}
|
||||
|
@ -1,40 +0,0 @@
|
||||
import { Category } from "@/interfaces/category";
|
||||
import { Question } from "@/interfaces/question";
|
||||
|
||||
interface QuestionFile {
|
||||
questions: Question[];
|
||||
categories: Category[];
|
||||
}
|
||||
|
||||
let json: QuestionFile | null = null;
|
||||
|
||||
const openFile = async (): Promise<QuestionFile> => {
|
||||
if (json) return json;
|
||||
|
||||
json = JSON.parse(await fetch("/questions.json").then((res) => res.text()));
|
||||
|
||||
return json!;
|
||||
};
|
||||
|
||||
export const getQuestions = async (): Promise<Question[]> => {
|
||||
const file = await openFile();
|
||||
|
||||
return file.questions.map((question: any) => ({
|
||||
id: question.id,
|
||||
question: question.question,
|
||||
image: question.image,
|
||||
answers: question.answers,
|
||||
correct: question.correct,
|
||||
}));
|
||||
// .filter((question: Question) => question.correct != null);
|
||||
};
|
||||
|
||||
export const getCategories = async (): Promise<Category[]> => {
|
||||
const file = await openFile();
|
||||
|
||||
return file.categories.map((category: any) => ({
|
||||
id: category.id,
|
||||
title: category.title,
|
||||
questions: category.questions,
|
||||
}));
|
||||
};
|
@ -18,13 +18,19 @@
|
||||
"paths": {
|
||||
"@/*": ["./src/*"],
|
||||
"contentlayer/generated": ["./.contentlayer/generated"]
|
||||
}
|
||||
},
|
||||
"plugins": [
|
||||
{
|
||||
"name": "next"
|
||||
}
|
||||
]
|
||||
},
|
||||
"include": [
|
||||
"next-env.d.ts",
|
||||
"**/*.ts",
|
||||
"**/*.tsx",
|
||||
".contentlayer/generated"
|
||||
".contentlayer/generated",
|
||||
".next/types/**/*.ts"
|
||||
],
|
||||
"exclude": ["node_modules"]
|
||||
}
|
||||
|
430
yarn.lock
430
yarn.lock
@ -16,29 +16,29 @@
|
||||
dependencies:
|
||||
regenerator-runtime "^0.13.11"
|
||||
|
||||
"@contentlayer/cli@0.3.0":
|
||||
version "0.3.0"
|
||||
resolved "https://registry.yarnpkg.com/@contentlayer/cli/-/cli-0.3.0.tgz#59ef411f3405cb58524962f043e54e42104969db"
|
||||
integrity sha512-Mqb6NlIKINt2qsPKft+o8m5tJhJXVgVSd0zP1BH+CQRmvR/zwTT3maz1bDCPHBYGKgGCQKtvgM66IjvH+dmC6Q==
|
||||
"@contentlayer/cli@0.3.2":
|
||||
version "0.3.2"
|
||||
resolved "https://registry.yarnpkg.com/@contentlayer/cli/-/cli-0.3.2.tgz#9b891373cd800a249fe8acfd4b4dc76ff4f50dcc"
|
||||
integrity sha512-KLzB2z3Klbl4bU7VTJ8EaY1d17GCBFtwgvtNAVLOqUJ4LRw46+jT+qBMk8gyy7R1xDNF2H1a/yGYs8t8rlFVmg==
|
||||
dependencies:
|
||||
"@contentlayer/core" "0.3.0"
|
||||
"@contentlayer/utils" "0.3.0"
|
||||
clipanion "^3.2.0-rc.14"
|
||||
"@contentlayer/core" "0.3.2"
|
||||
"@contentlayer/utils" "0.3.2"
|
||||
clipanion "^3.2.0"
|
||||
typanion "^3.12.1"
|
||||
|
||||
"@contentlayer/client@0.3.0":
|
||||
version "0.3.0"
|
||||
resolved "https://registry.yarnpkg.com/@contentlayer/client/-/client-0.3.0.tgz#a5d1f3c598697383b93beff53489918c57e93faa"
|
||||
integrity sha512-yzDYiZtqOJwWrsykieA1LMnhKbaYcJhAy7s8Xs7zU5wFfyBTO258gvmK5dVi4LuzmOOPVMJn6FpEofT/RAKVtg==
|
||||
"@contentlayer/client@0.3.2":
|
||||
version "0.3.2"
|
||||
resolved "https://registry.yarnpkg.com/@contentlayer/client/-/client-0.3.2.tgz#cd1ed466cc14fe07d6934438d182ddd16b105d97"
|
||||
integrity sha512-5m7IFd0Z8qRBAOnAYwWcf/SFe1SmtHmeV1kO4pldEuD8J/5sxKeefdGHLNnH3sxlGfeJhEdDnymJtppg8v0D8w==
|
||||
dependencies:
|
||||
"@contentlayer/core" "0.3.0"
|
||||
"@contentlayer/core" "0.3.2"
|
||||
|
||||
"@contentlayer/core@0.3.0":
|
||||
version "0.3.0"
|
||||
resolved "https://registry.yarnpkg.com/@contentlayer/core/-/core-0.3.0.tgz#67c6cf5fdcacdef9e957bb14fb90510fe671cd82"
|
||||
integrity sha512-5cL4W0nK9kNqxgBkIgauUko0SRAHf8oPoxRhdsSPQ7FSCgZGz2crMeSJOFmj3a3govh863/mKhXfkoUJBoDgnA==
|
||||
"@contentlayer/core@0.3.2":
|
||||
version "0.3.2"
|
||||
resolved "https://registry.yarnpkg.com/@contentlayer/core/-/core-0.3.2.tgz#c628b9e66c5fec07cbe10d144c75155353a391bf"
|
||||
integrity sha512-5ZLzS3s4Lp5Tlw+U4kUUK9frYmi8sc970spJSvLSxtOTDHDE7xemGT9HSj0V4DcmIkY9TT7pCmMFRfpEv7IC6Q==
|
||||
dependencies:
|
||||
"@contentlayer/utils" "0.3.0"
|
||||
"@contentlayer/utils" "0.3.2"
|
||||
camel-case "^4.1.2"
|
||||
comment-json "^4.2.3"
|
||||
esbuild "0.17.x"
|
||||
@ -49,58 +49,59 @@
|
||||
remark-parse "^10.0.1"
|
||||
remark-rehype "^10.1.0"
|
||||
source-map-support "^0.5.21"
|
||||
type-fest "^3.5.2"
|
||||
type-fest "^3.7.1"
|
||||
unified "^10.1.2"
|
||||
|
||||
"@contentlayer/source-files@0.3.0":
|
||||
version "0.3.0"
|
||||
resolved "https://registry.yarnpkg.com/@contentlayer/source-files/-/source-files-0.3.0.tgz#84cd220a664c34568396ce5cbbe1dadf880fa9ed"
|
||||
integrity sha512-6crNuRdWGYFec0Kn/DpbrzpOu8bttFmOmOpX1HIYQz4iPisg+8biybLBiNU7Y6aCUjEZLOnM7AaHpMFvhrYWsw==
|
||||
"@contentlayer/source-files@0.3.2":
|
||||
version "0.3.2"
|
||||
resolved "https://registry.yarnpkg.com/@contentlayer/source-files/-/source-files-0.3.2.tgz#310ed23d401ea1eba3f6e4fa0172ae29c901ded2"
|
||||
integrity sha512-VYUaUbT3Hg3fSEEKpjDdfGEkw4bl4BaLHJWf5sulrkBtjdyNJ3RwUdnsqN3i+bibhcYF4ZvnFme4xtHBuEChmw==
|
||||
dependencies:
|
||||
"@contentlayer/core" "0.3.0"
|
||||
"@contentlayer/utils" "0.3.0"
|
||||
"@contentlayer/core" "0.3.2"
|
||||
"@contentlayer/utils" "0.3.2"
|
||||
chokidar "^3.5.3"
|
||||
fast-glob "^3.2.12"
|
||||
gray-matter "^4.0.3"
|
||||
imagescript "^1.2.15"
|
||||
imagescript "^1.2.16"
|
||||
micromatch "^4.0.5"
|
||||
ts-pattern "^4.1.3"
|
||||
ts-pattern "^4.2.2"
|
||||
unified "^10.1.2"
|
||||
yaml "^1.10.2"
|
||||
zod "^3.20.2"
|
||||
zod "^3.21.4"
|
||||
|
||||
"@contentlayer/source-remote-files@0.3.0":
|
||||
version "0.3.0"
|
||||
resolved "https://registry.yarnpkg.com/@contentlayer/source-remote-files/-/source-remote-files-0.3.0.tgz#c081acd2692d46ca7bc332b2dc921c36d8ee65f5"
|
||||
integrity sha512-4PnaK5cfQiduMUEO6nzqsD4ttD5RG4ffcyeSp5MLhpU0DTEZcfGXFRO777ddEI8PZ0/NJuhfz9MGbdO90QYlsw==
|
||||
"@contentlayer/source-remote-files@0.3.2":
|
||||
version "0.3.2"
|
||||
resolved "https://registry.yarnpkg.com/@contentlayer/source-remote-files/-/source-remote-files-0.3.2.tgz#a607aa85e1b2a67192bf2e552f68e20204c7bfbe"
|
||||
integrity sha512-BuABBHemn/UzhARsQh2XH13VUeb5HoRI3NkJeCGEMSnstzI72Dcc6krELwG3cTFYmgb95TV8NuIZKcrz8IsX6A==
|
||||
dependencies:
|
||||
"@contentlayer/core" "0.3.0"
|
||||
"@contentlayer/source-files" "0.3.0"
|
||||
"@contentlayer/utils" "0.3.0"
|
||||
"@contentlayer/core" "0.3.2"
|
||||
"@contentlayer/source-files" "0.3.2"
|
||||
"@contentlayer/utils" "0.3.2"
|
||||
|
||||
"@contentlayer/utils@0.3.0":
|
||||
version "0.3.0"
|
||||
resolved "https://registry.yarnpkg.com/@contentlayer/utils/-/utils-0.3.0.tgz#6846e47a0998ecd144515c597d930cb52da0806e"
|
||||
integrity sha512-GJF8Z67bf8KJbMqtZgt3G/m4Um93XrcryMJ+2Q1SUBRCEDuMcm8iLPaSbMQ0+gjxyW0GWHnR1oM+qyzaWTPgdg==
|
||||
"@contentlayer/utils@0.3.2":
|
||||
version "0.3.2"
|
||||
resolved "https://registry.yarnpkg.com/@contentlayer/utils/-/utils-0.3.2.tgz#3a24d8fc2f0928a510a646615e536deb4def5439"
|
||||
integrity sha512-qQdL3PN3zKl7monHe3EXlXgq7/raApWWJ7+2n0C81ESiwdM1ZFuHU+pOIkl5JWhotTkqAqYdSvFuM+MAXF8XFg==
|
||||
dependencies:
|
||||
"@effect-ts/core" "^0.60.2"
|
||||
"@effect-ts/otel" "^0.14.0"
|
||||
"@effect-ts/otel-exporter-trace-otlp-grpc" "^0.14.0"
|
||||
"@effect-ts/otel-sdk-trace-node" "^0.14.0"
|
||||
"@js-temporal/polyfill" "^0.4.3"
|
||||
"@opentelemetry/api" "~1.1.0"
|
||||
"@opentelemetry/core" "~1.5.0"
|
||||
"@opentelemetry/exporter-trace-otlp-grpc" "~0.31.0"
|
||||
"@opentelemetry/resources" "~1.5.0"
|
||||
"@opentelemetry/sdk-trace-base" "~1.5.0"
|
||||
"@opentelemetry/sdk-trace-node" "~1.5.0"
|
||||
"@opentelemetry/semantic-conventions" "~1.5.0"
|
||||
"@opentelemetry/api" "^1.1.0"
|
||||
"@opentelemetry/core" "^1.5.0"
|
||||
"@opentelemetry/exporter-trace-otlp-grpc" "^0.31.0"
|
||||
"@opentelemetry/resources" "^1.5.0"
|
||||
"@opentelemetry/sdk-trace-base" "^1.5.0"
|
||||
"@opentelemetry/sdk-trace-node" "^1.5.0"
|
||||
"@opentelemetry/semantic-conventions" "^1.5.0"
|
||||
chokidar "^3.5.3"
|
||||
hash-wasm "^4.9.0"
|
||||
inflection "^2.0.1"
|
||||
oo-ascii-tree "^1.73.0"
|
||||
ts-pattern "^4.1.3"
|
||||
type-fest "^3.5.2"
|
||||
memfs "^3.5.1"
|
||||
oo-ascii-tree "^1.80.0"
|
||||
ts-pattern "^4.2.2"
|
||||
type-fest "^3.7.1"
|
||||
|
||||
"@effect-ts/core@^0.60.2":
|
||||
version "0.60.5"
|
||||
@ -395,62 +396,62 @@
|
||||
unist-util-visit "^4.0.0"
|
||||
vfile "^5.0.0"
|
||||
|
||||
"@next/env@13.4.1":
|
||||
version "13.4.1"
|
||||
resolved "https://registry.yarnpkg.com/@next/env/-/env-13.4.1.tgz#57322da2630b6bb6d7204577b0a18f6f9324db0c"
|
||||
integrity sha512-eD6WCBMFjLFooLM19SIhSkWBHtaFrZFfg2Cxnyl3vS3DAdFRfnx5TY2RxlkuKXdIRCC0ySbtK9JXXt8qLCqzZg==
|
||||
"@next/env@13.4.4":
|
||||
version "13.4.4"
|
||||
resolved "https://registry.yarnpkg.com/@next/env/-/env-13.4.4.tgz#46b620f6bef97fe67a1566bf570dbb791d40c50a"
|
||||
integrity sha512-q/y7VZj/9YpgzDe64Zi6rY1xPizx80JjlU2BTevlajtaE3w1LqweH1gGgxou2N7hdFosXHjGrI4OUvtFXXhGLg==
|
||||
|
||||
"@next/eslint-plugin-next@13.1.2":
|
||||
version "13.1.2"
|
||||
resolved "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-13.1.2.tgz"
|
||||
integrity sha512-WGaNVvIYphdriesP6r7jq/8l7u38tzotnVQuxc1RYKLqYYApSsrebti3OCPoT3Gx0pw2smPIFHH98RzcsgW5GQ==
|
||||
"@next/eslint-plugin-next@13.4.2":
|
||||
version "13.4.2"
|
||||
resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-13.4.2.tgz#ce32730d6282af3151a07de6e865397dc6d3dbdf"
|
||||
integrity sha512-ZeFWgrxwckxTpYM+ANeUL9E7LOGPbZKmI94LJIjbDU69iEIgqd4WD0l2pVbOJMr/+vgoZmJ9Dx1m0WJ7WScXHA==
|
||||
dependencies:
|
||||
glob "7.1.7"
|
||||
|
||||
"@next/swc-darwin-arm64@13.4.1":
|
||||
version "13.4.1"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.4.1.tgz#3748040d2dd0d89d3cdcc897f96aeda5130eed8f"
|
||||
integrity sha512-eF8ARHtYfnoYtDa6xFHriUKA/Mfj/cCbmKb3NofeKhMccs65G6/loZ15a6wYCCx4rPAd6x4t1WmVYtri7EdeBg==
|
||||
"@next/swc-darwin-arm64@13.4.4":
|
||||
version "13.4.4"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.4.4.tgz#8c14083c2478e2a9a8d140cce5900f76b75667ff"
|
||||
integrity sha512-xfjgXvp4KalNUKZMHmsFxr1Ug+aGmmO6NWP0uoh4G3WFqP/mJ1xxfww0gMOeMeSq/Jyr5k7DvoZ2Pv+XOITTtw==
|
||||
|
||||
"@next/swc-darwin-x64@13.4.1":
|
||||
version "13.4.1"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-13.4.1.tgz#c59fc270005f17e04eb7eab4fd68793d0e3409a4"
|
||||
integrity sha512-7cmDgF9tGWTgn5Gw+vP17miJbH4wcraMHDCOHTYWkO/VeKT73dUWG23TNRLfgtCNSPgH4V5B4uLHoZTanx9bAw==
|
||||
"@next/swc-darwin-x64@13.4.4":
|
||||
version "13.4.4"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-13.4.4.tgz#5fe01c65c80fcb833c8789fd70f074ea99893864"
|
||||
integrity sha512-ZY9Ti1hkIwJsxGus3nlubIkvYyB0gNOYxKrfsOrLEqD0I2iCX8D7w8v6QQZ2H+dDl6UT29oeEUdDUNGk4UEpfg==
|
||||
|
||||
"@next/swc-linux-arm64-gnu@13.4.1":
|
||||
version "13.4.1"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.4.1.tgz#1aef371bcef5d832d7f7e3aec3e68cfb98282393"
|
||||
integrity sha512-qwJqmCri2ie8aTtE5gjTSr8S6O8B67KCYgVZhv9gKH44yvc/zXbAY8u23QGULsYOyh1islWE5sWfQNLOj9iryg==
|
||||
"@next/swc-linux-arm64-gnu@13.4.4":
|
||||
version "13.4.4"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.4.4.tgz#f2e071f38e8a6cdadf507cc5d28956f73360d064"
|
||||
integrity sha512-+KZnDeMShYkpkqAvGCEDeqYTRADJXc6SY1jWXz+Uo6qWQO/Jd9CoyhTJwRSxvQA16MoYzvILkGaDqirkRNctyA==
|
||||
|
||||
"@next/swc-linux-arm64-musl@13.4.1":
|
||||
version "13.4.1"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.4.1.tgz#2522927cb0af6918405a49f5a1d1687d6847f3ec"
|
||||
integrity sha512-qcC54tWNGDv/VVIFkazxhqH1Bnagjfs4enzELVRlUOoJPD2BGJTPI7z08pQPbbgxLtRiu8gl2mXvpB8WlOkMeA==
|
||||
"@next/swc-linux-arm64-musl@13.4.4":
|
||||
version "13.4.4"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.4.4.tgz#23bf75c544e54562bc24ec1be036e4bd9cf89e2c"
|
||||
integrity sha512-evC1twrny2XDT4uOftoubZvW3EG0zs0ZxMwEtu/dDGVRO5n5pT48S8qqEIBGBUZYu/Xx4zzpOkIxx1vpWdE+9A==
|
||||
|
||||
"@next/swc-linux-x64-gnu@13.4.1":
|
||||
version "13.4.1"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.4.1.tgz#5ec9418a35510048a5ceb79ed300463e1a9b312d"
|
||||
integrity sha512-9TeWFlpLsBosZ+tsm/rWBaMwt5It9tPH8m3nawZqFUUrZyGRfGcI67js774vtx0k3rL9qbyY6+3pw9BCVpaYUA==
|
||||
"@next/swc-linux-x64-gnu@13.4.4":
|
||||
version "13.4.4"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.4.4.tgz#bd42590950a01957952206f89cf5622e7c9e4196"
|
||||
integrity sha512-PX706XcCHr2FfkyhP2lpf+pX/tUvq6/ke7JYnnr0ykNdEMo+sb7cC/o91gnURh4sPYSiZJhsF2gbIqg9rciOHQ==
|
||||
|
||||
"@next/swc-linux-x64-musl@13.4.1":
|
||||
version "13.4.1"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.4.1.tgz#3478b9c89b75c1d0e7def9f35a9a77cb15d1a115"
|
||||
integrity sha512-sNDGaWmSqTS4QRUzw61wl4mVPeSqNIr1OOjLlQTRuyInxMxtqImRqdvzDvFTlDfdeUMU/DZhWGYoHrXLlZXe6A==
|
||||
"@next/swc-linux-x64-musl@13.4.4":
|
||||
version "13.4.4"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.4.4.tgz#907d81feb1abec3daec0ecb61e3f39b56e7aeafe"
|
||||
integrity sha512-TKUUx3Ftd95JlHV6XagEnqpT204Y+IsEa3awaYIjayn0MOGjgKZMZibqarK3B1FsMSPaieJf2FEAcu9z0yT5aA==
|
||||
|
||||
"@next/swc-win32-arm64-msvc@13.4.1":
|
||||
version "13.4.1"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.4.1.tgz#efe53d48ff51d2485eabb910ab7caee78425fc01"
|
||||
integrity sha512-+CXZC7u1iXdLRudecoUYbhbsXpglYv8KFYsFxKBPn7kg+bk7eJo738wAA4jXIl8grTF2mPdmO93JOQym+BlYGA==
|
||||
"@next/swc-win32-arm64-msvc@13.4.4":
|
||||
version "13.4.4"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.4.4.tgz#1d754d2bb10bdf9907c0acc83711438697c3b5fe"
|
||||
integrity sha512-FP8AadgSq4+HPtim7WBkCMGbhr5vh9FePXiWx9+YOdjwdQocwoCK5ZVC3OW8oh3TWth6iJ0AXJ/yQ1q1cwSZ3A==
|
||||
|
||||
"@next/swc-win32-ia32-msvc@13.4.1":
|
||||
version "13.4.1"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.4.1.tgz#952cdf1c53df46a90d5151d99310195d2c384e55"
|
||||
integrity sha512-vIoXVVc7UYO68VwVMDKwJC2+HqAZQtCYiVlApyKEeIPIQpz2gpufzGxk1z3/gwrJt/kJ5CDZjlhYDCzd3hdz+g==
|
||||
"@next/swc-win32-ia32-msvc@13.4.4":
|
||||
version "13.4.4"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.4.4.tgz#77b2c7f7534b675d46e46301869e08d504d23956"
|
||||
integrity sha512-3WekVmtuA2MCdcAOrgrI+PuFiFURtSyyrN1I3UPtS0ckR2HtLqyqmS334Eulf15g1/bdwMteePdK363X/Y9JMg==
|
||||
|
||||
"@next/swc-win32-x64-msvc@13.4.1":
|
||||
version "13.4.1"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.4.1.tgz#447b7dcee5f5d4824cdff331a4ec34b13d0b449d"
|
||||
integrity sha512-n8V5ImLQZibKTu10UUdI3nIeTLkliEXe628qxqW9v8My3BAH2a7H0SaCqkV2OgqFnn8sG1wxKYw9/SNJ632kSA==
|
||||
"@next/swc-win32-x64-msvc@13.4.4":
|
||||
version "13.4.4"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.4.4.tgz#faab69239f8a9d0be7cd473e65f5a07735ef7b0e"
|
||||
integrity sha512-AHRITu/CrlQ+qzoqQtEMfaTu7GHaQ6bziQln/pVWpOYC1wU+Mq6VQQFlsDtMCnDztPZtppAXdvvbNS7pcfRzlw==
|
||||
|
||||
"@nodelib/fs.scandir@2.1.5":
|
||||
version "2.1.5"
|
||||
@ -485,24 +486,31 @@
|
||||
resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.4.0.tgz#2c91791a9ba6ca0a0f4aaac5e45d58df13639ac8"
|
||||
integrity sha512-IgMK9i3sFGNUqPMbjABm0G26g0QCKCUBfglhQ7rQq6WcxbKfEHRcmwsoER4hZcuYqJgkYn2OeuoJIv7Jsftp7g==
|
||||
|
||||
"@opentelemetry/api@~1.1.0":
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.1.0.tgz#563539048255bbe1a5f4f586a4a10a1bb737f44a"
|
||||
integrity sha512-hf+3bwuBwtXsugA2ULBc95qxrOqP2pOekLz34BJhcAKawt94vfeNyUKpYc0lZQ/3sCP6LqRa7UAdHA7i5UODzQ==
|
||||
"@opentelemetry/api@^1.1.0":
|
||||
version "1.4.1"
|
||||
resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.4.1.tgz#ff22eb2e5d476fbc2450a196e40dd243cc20c28f"
|
||||
integrity sha512-O2yRJce1GOc6PAy3QxFM4NzFiWzvScDC1/5ihYBL6BUEVdq0XMWN01sppE+H6bBXbaFYipjwFLEWLg5PaSOThA==
|
||||
|
||||
"@opentelemetry/context-async-hooks@1.5.0":
|
||||
version "1.5.0"
|
||||
resolved "https://registry.yarnpkg.com/@opentelemetry/context-async-hooks/-/context-async-hooks-1.5.0.tgz#4955313e7f0ec0fe17c813328a2a7f39f262c0fa"
|
||||
integrity sha512-mhBPP0BU0RaH2HB8U4MDd5OjWA1y7SoLOovCT0iEpJAltaq2z04uxRJVzIs91vkpNnV0utUZowQQD3KElgU+VA==
|
||||
"@opentelemetry/context-async-hooks@1.13.0":
|
||||
version "1.13.0"
|
||||
resolved "https://registry.yarnpkg.com/@opentelemetry/context-async-hooks/-/context-async-hooks-1.13.0.tgz#b697317c1670eaa9b1c23201d09dd29250dcc8fa"
|
||||
integrity sha512-pS5fU4lrRjOIPZQqA2V1SUM9QUFXbO+8flubAiy6ntLjnAjJJUdRFOUOxK6v86ZHI2p2S8A0vD0BTu95FZYvjA==
|
||||
|
||||
"@opentelemetry/core@1.5.0", "@opentelemetry/core@~1.5.0":
|
||||
"@opentelemetry/core@1.13.0", "@opentelemetry/core@^1.5.0":
|
||||
version "1.13.0"
|
||||
resolved "https://registry.yarnpkg.com/@opentelemetry/core/-/core-1.13.0.tgz#7cdcb4176d260d279b0aa31456c4ce2ba7f410aa"
|
||||
integrity sha512-2dBX3Sj99H96uwJKvc2w9NOiNgbvAO6mOFJFramNkKfS9O4Um+VWgpnlAazoYjT6kUJ1MP70KQ5ngD4ed+4NUw==
|
||||
dependencies:
|
||||
"@opentelemetry/semantic-conventions" "1.13.0"
|
||||
|
||||
"@opentelemetry/core@1.5.0":
|
||||
version "1.5.0"
|
||||
resolved "https://registry.yarnpkg.com/@opentelemetry/core/-/core-1.5.0.tgz#717bceee15d4c69d4c7321c1fe0f5a562b60eb81"
|
||||
integrity sha512-B3DIMkQN0DANrr7XrMLS4pR6d2o/jqT09x4nZJz6wSJ9SHr4eQIqeFBNeEUQG1I+AuOcH2UbJtgFm7fKxLqd+w==
|
||||
dependencies:
|
||||
"@opentelemetry/semantic-conventions" "1.5.0"
|
||||
|
||||
"@opentelemetry/exporter-trace-otlp-grpc@~0.31.0":
|
||||
"@opentelemetry/exporter-trace-otlp-grpc@^0.31.0":
|
||||
version "0.31.0"
|
||||
resolved "https://registry.yarnpkg.com/@opentelemetry/exporter-trace-otlp-grpc/-/exporter-trace-otlp-grpc-0.31.0.tgz#64b2f4c08e3f54015522e9eeeb0613f7d853e1e8"
|
||||
integrity sha512-WapHtHPLOFObRMvtfRJX/EBRZS4YLpRY8E/OtIQmmAqwImDMAnMVF9fAjP6DSE/thOIN3Ot0/PLK5zFZUVV8SA==
|
||||
@ -543,21 +551,29 @@
|
||||
"@opentelemetry/sdk-metrics-base" "0.31.0"
|
||||
"@opentelemetry/sdk-trace-base" "1.5.0"
|
||||
|
||||
"@opentelemetry/propagator-b3@1.5.0":
|
||||
version "1.5.0"
|
||||
resolved "https://registry.yarnpkg.com/@opentelemetry/propagator-b3/-/propagator-b3-1.5.0.tgz#7fc1876f11e0a92fc93185d14e0dae99f42bb135"
|
||||
integrity sha512-38iGIScgU9OLhoPKAV3p2rEf4RmmQC/Lo4LvpQ6TaSQrRht/oDgnpsPJnmNQLFboklmukKataJO+FhAieOc7mg==
|
||||
"@opentelemetry/propagator-b3@1.13.0":
|
||||
version "1.13.0"
|
||||
resolved "https://registry.yarnpkg.com/@opentelemetry/propagator-b3/-/propagator-b3-1.13.0.tgz#30a19a24e61ae8dbc26c2d7d7d3423d804d48f07"
|
||||
integrity sha512-HOo91EI4UbuG8xQVLFziTzrcIn0MJQhy8m9jorh8aonb94jFVFi3CFNIiAnIGOabmnshJLOABxpYXsiPB8Xnzg==
|
||||
dependencies:
|
||||
"@opentelemetry/core" "1.5.0"
|
||||
"@opentelemetry/core" "1.13.0"
|
||||
|
||||
"@opentelemetry/propagator-jaeger@1.5.0":
|
||||
version "1.5.0"
|
||||
resolved "https://registry.yarnpkg.com/@opentelemetry/propagator-jaeger/-/propagator-jaeger-1.5.0.tgz#b4ccffc0fa59f94ea67e0884c543d39bbbd1c18d"
|
||||
integrity sha512-aSUH5RDEZj+lmy4PbXAJ26E+yJcZloyPUBWgqYX+JBS4NnbriIznCF/tXV5s/RUXeVABibi/+yAZndv+2XBg4w==
|
||||
"@opentelemetry/propagator-jaeger@1.13.0":
|
||||
version "1.13.0"
|
||||
resolved "https://registry.yarnpkg.com/@opentelemetry/propagator-jaeger/-/propagator-jaeger-1.13.0.tgz#94a79d5301409d49b149227ee5568fcf6b21f9fe"
|
||||
integrity sha512-IV9TO+u1Jzm9mUDAD3gyXf89eyvgEJUY1t+GB5QmS4wjVeWrSMUtD0JjH3yG9SNqkrQOqOGJq7YUSSetW+Lf5Q==
|
||||
dependencies:
|
||||
"@opentelemetry/core" "1.5.0"
|
||||
"@opentelemetry/core" "1.13.0"
|
||||
|
||||
"@opentelemetry/resources@1.5.0", "@opentelemetry/resources@~1.5.0":
|
||||
"@opentelemetry/resources@1.13.0", "@opentelemetry/resources@^1.5.0":
|
||||
version "1.13.0"
|
||||
resolved "https://registry.yarnpkg.com/@opentelemetry/resources/-/resources-1.13.0.tgz#436b33ea950004e66fce6575f2776a05faca7f8e"
|
||||
integrity sha512-euqjOkiN6xhjE//0vQYGvbStxoD/WWQRhDiO0OTLlnLBO9Yw2Gd/VoSx2H+svsebjzYk5OxLuREBmcdw6rbUNg==
|
||||
dependencies:
|
||||
"@opentelemetry/core" "1.13.0"
|
||||
"@opentelemetry/semantic-conventions" "1.13.0"
|
||||
|
||||
"@opentelemetry/resources@1.5.0":
|
||||
version "1.5.0"
|
||||
resolved "https://registry.yarnpkg.com/@opentelemetry/resources/-/resources-1.5.0.tgz#ce7fbdaec3494e41bc279ddbed3c478ee2570b03"
|
||||
integrity sha512-YeEfC6IY54U3xL3P2+UAiom+r50ZF2jM0J47RV5uTFGF19Xjd5zazSwDPgmxtAd6DwLX0/5S5iqrsH4nEXMYoA==
|
||||
@ -575,7 +591,16 @@
|
||||
"@opentelemetry/resources" "1.5.0"
|
||||
lodash.merge "4.6.2"
|
||||
|
||||
"@opentelemetry/sdk-trace-base@1.5.0", "@opentelemetry/sdk-trace-base@~1.5.0":
|
||||
"@opentelemetry/sdk-trace-base@1.13.0", "@opentelemetry/sdk-trace-base@^1.5.0":
|
||||
version "1.13.0"
|
||||
resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.13.0.tgz#096cc2759430d880c5d886e009df2605097403dc"
|
||||
integrity sha512-moTiQtc0uPR1hQLt6gLDJH9IIkeBhgRb71OKjNHZPE1VF45fHtD6nBDi5J/DkTHTwYP5X3kBJLa3xN7ub6J4eg==
|
||||
dependencies:
|
||||
"@opentelemetry/core" "1.13.0"
|
||||
"@opentelemetry/resources" "1.13.0"
|
||||
"@opentelemetry/semantic-conventions" "1.13.0"
|
||||
|
||||
"@opentelemetry/sdk-trace-base@1.5.0":
|
||||
version "1.5.0"
|
||||
resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.5.0.tgz#259439009fff5637e7a379ece7446ce5beb84b77"
|
||||
integrity sha512-6lx7YDf67HSQYuWnvq3XgSrWikDJLiGCbrpUP6UWJ5Z47HLcJvwZPRH+cQGJu1DFS3dT2cV3GpAR75/OofPNHQ==
|
||||
@ -584,19 +609,24 @@
|
||||
"@opentelemetry/resources" "1.5.0"
|
||||
"@opentelemetry/semantic-conventions" "1.5.0"
|
||||
|
||||
"@opentelemetry/sdk-trace-node@~1.5.0":
|
||||
version "1.5.0"
|
||||
resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-trace-node/-/sdk-trace-node-1.5.0.tgz#8a6af64b8e6fb970b998844f99349e654327a60d"
|
||||
integrity sha512-MzS+urf2KufpwgaHbGcUgccHr6paxI98lHFMgJAkK6w76AmPYavsxSwjiVPrchy/24d2J9svDirSgui3NNZo8g==
|
||||
"@opentelemetry/sdk-trace-node@^1.5.0":
|
||||
version "1.13.0"
|
||||
resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-trace-node/-/sdk-trace-node-1.13.0.tgz#baadf62218ca69e37486debfbcf15b2563f75979"
|
||||
integrity sha512-FXA85lXKTsnbOflA/TBuBf2pmhD3c8uDjNjG0YqK+ap8UayfALmfJhf+aG1yBOUHevCY0JXJ4/xtbXExxpsMog==
|
||||
dependencies:
|
||||
"@opentelemetry/context-async-hooks" "1.5.0"
|
||||
"@opentelemetry/core" "1.5.0"
|
||||
"@opentelemetry/propagator-b3" "1.5.0"
|
||||
"@opentelemetry/propagator-jaeger" "1.5.0"
|
||||
"@opentelemetry/sdk-trace-base" "1.5.0"
|
||||
"@opentelemetry/context-async-hooks" "1.13.0"
|
||||
"@opentelemetry/core" "1.13.0"
|
||||
"@opentelemetry/propagator-b3" "1.13.0"
|
||||
"@opentelemetry/propagator-jaeger" "1.13.0"
|
||||
"@opentelemetry/sdk-trace-base" "1.13.0"
|
||||
semver "^7.3.5"
|
||||
|
||||
"@opentelemetry/semantic-conventions@1.5.0", "@opentelemetry/semantic-conventions@~1.5.0":
|
||||
"@opentelemetry/semantic-conventions@1.13.0", "@opentelemetry/semantic-conventions@^1.5.0":
|
||||
version "1.13.0"
|
||||
resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.13.0.tgz#0290398b3eaebc6029c348988a78c3b688fe9219"
|
||||
integrity sha512-LMGqfSZkaMQXqewO0o1wvWr/2fQdCh4a3Sqlxka/UsJCe0cfLulh6x2aqnKLnsrSGiCq5rSCwvINd152i0nCqw==
|
||||
|
||||
"@opentelemetry/semantic-conventions@1.5.0":
|
||||
version "1.5.0"
|
||||
resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.5.0.tgz#cea9792bfcf556c87ded17c6ac729348697bb632"
|
||||
integrity sha512-wlYG/U6ddW1ilXslnDLLQYJ8nd97W8JJTTfwkGhubx6dzW6SUkd+N4/MzTjjyZlrHQunxHtkHFvVpUKiROvFDw==
|
||||
@ -833,6 +863,11 @@
|
||||
"@typescript-eslint/types" "5.48.2"
|
||||
eslint-visitor-keys "^3.3.0"
|
||||
|
||||
"@xmldom/xmldom@^0.7.8":
|
||||
version "0.7.10"
|
||||
resolved "https://registry.yarnpkg.com/@xmldom/xmldom/-/xmldom-0.7.10.tgz#b1f4a7dc63ac35b2750847644d5dacf5b4ead12f"
|
||||
integrity sha512-hb9QhOg5MGmpVkFcoZ9XJMe1em5gd0e2eqqjK87O1dwULedXsnY/Zg/Ju6lcohA+t6jVkmKpe7I1etqhvdRdrQ==
|
||||
|
||||
acorn-jsx@^5.0.0, acorn-jsx@^5.3.2:
|
||||
version "5.3.2"
|
||||
resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz"
|
||||
@ -1134,10 +1169,10 @@ client-only@0.0.1:
|
||||
resolved "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz"
|
||||
integrity sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==
|
||||
|
||||
clipanion@^3.2.0-rc.14:
|
||||
version "3.2.0-rc.15"
|
||||
resolved "https://registry.yarnpkg.com/clipanion/-/clipanion-3.2.0-rc.15.tgz#74545d91162713170fc19fceb9b24f5e3e21e5bb"
|
||||
integrity sha512-nK4V2d8WDAGWzWhm96c3Ieo6GV/+IfuzDcS5kDwfTnY8zZ8hVvZ9PMyIYwlvYaeZGQ+JfxKVnPx+RHgBHQugag==
|
||||
clipanion@^3.2.0:
|
||||
version "3.2.0"
|
||||
resolved "https://registry.yarnpkg.com/clipanion/-/clipanion-3.2.0.tgz#ea55ce3fe27becb4ddd4915df6fb3de0f9e79a5c"
|
||||
integrity sha512-XaPQiJQZKbyaaDbv5yR/cAt/ORfZfENkr4wGQj+Go/Uf/65ofTQBCPirgWFeJctZW24V3mxrFiEnEmqBflrJYA==
|
||||
dependencies:
|
||||
typanion "^3.8.0"
|
||||
|
||||
@ -1199,17 +1234,17 @@ concat-map@0.0.1:
|
||||
resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"
|
||||
integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
|
||||
|
||||
contentlayer@^0.3.0:
|
||||
version "0.3.0"
|
||||
resolved "https://registry.yarnpkg.com/contentlayer/-/contentlayer-0.3.0.tgz#98c9a0b6aba50c807695cc94434eab4541b1e2bc"
|
||||
integrity sha512-3LEF5HMHjSytlT8SErC3U59Pt2LP80a6Z2f/0mSIPeA4xty0LNChyHqzALySSM0osAEz32RY56Fifk5P+2dCIA==
|
||||
contentlayer@^0.3.2:
|
||||
version "0.3.2"
|
||||
resolved "https://registry.yarnpkg.com/contentlayer/-/contentlayer-0.3.2.tgz#9d31db0bdca72c19226bce2d187f50fdc5e70a4b"
|
||||
integrity sha512-fQN3l/KvUW+nIvXiaShpOCvXX4alNbvfo56vnVxHVm6vKP10bb/IRhjMXPXZzr+5hmCaeep9wMpCAvOKB6NJHA==
|
||||
dependencies:
|
||||
"@contentlayer/cli" "0.3.0"
|
||||
"@contentlayer/client" "0.3.0"
|
||||
"@contentlayer/core" "0.3.0"
|
||||
"@contentlayer/source-files" "0.3.0"
|
||||
"@contentlayer/source-remote-files" "0.3.0"
|
||||
"@contentlayer/utils" "0.3.0"
|
||||
"@contentlayer/cli" "0.3.2"
|
||||
"@contentlayer/client" "0.3.2"
|
||||
"@contentlayer/core" "0.3.2"
|
||||
"@contentlayer/source-files" "0.3.2"
|
||||
"@contentlayer/source-remote-files" "0.3.2"
|
||||
"@contentlayer/utils" "0.3.2"
|
||||
|
||||
core-util-is@^1.0.3:
|
||||
version "1.0.3"
|
||||
@ -1497,12 +1532,12 @@ escape-string-regexp@^5.0.0:
|
||||
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz#4683126b500b61762f2dbebace1806e8be31b1c8"
|
||||
integrity sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==
|
||||
|
||||
eslint-config-next@13.1.2:
|
||||
version "13.1.2"
|
||||
resolved "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-13.1.2.tgz"
|
||||
integrity sha512-zdRAQOr8v69ZwJRtBrGqAqm160ONqKxU/pV1FB1KlgfyqveGsLZmlQ7l31otwtw763901J7xdiTVkj2y3YxXZA==
|
||||
eslint-config-next@^13.4.2:
|
||||
version "13.4.2"
|
||||
resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-13.4.2.tgz#6ee5c53b6f56bddd6346d14c22713b71da7e7b51"
|
||||
integrity sha512-zjLJ9B9bbeWSo5q+iHfdt8gVYyT+y2BpWDfjR6XMBtFRSMKRGjllDKxnuKBV1q2Y/QpwLM2PXHJTMRyblCmRAg==
|
||||
dependencies:
|
||||
"@next/eslint-plugin-next" "13.1.2"
|
||||
"@next/eslint-plugin-next" "13.4.2"
|
||||
"@rushstack/eslint-patch" "^1.1.3"
|
||||
"@typescript-eslint/parser" "^5.42.0"
|
||||
eslint-import-resolver-node "^0.3.6"
|
||||
@ -1775,10 +1810,12 @@ esutils@^2.0.2:
|
||||
resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz"
|
||||
integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
|
||||
|
||||
exifr@^7.1.3:
|
||||
version "7.1.3"
|
||||
resolved "https://registry.yarnpkg.com/exifr/-/exifr-7.1.3.tgz#f6218012c36dbb7d843222011b27f065fddbab6f"
|
||||
integrity sha512-g/aje2noHivrRSLbAUtBPWFbxKdKhgj/xr1vATDdUXPOFYJlQ62Ft0oy+72V6XLIpDJfHs6gXLbBLAolqOXYRw==
|
||||
exifreader@^4.12.0:
|
||||
version "4.12.0"
|
||||
resolved "https://registry.yarnpkg.com/exifreader/-/exifreader-4.12.0.tgz#e3857f39f54b73b84549e9a9e114f292e85bb87a"
|
||||
integrity sha512-aRSmNyw2c6f6qPK4jmC56W/5XePDN7LVwt8tQjgMchxoY3MCxqEToegirKdS7A3CYCWAOPehfypMZWGWxtLhzw==
|
||||
optionalDependencies:
|
||||
"@xmldom/xmldom" "^0.7.8"
|
||||
|
||||
expand-template@^2.0.3:
|
||||
version "2.0.3"
|
||||
@ -1904,6 +1941,11 @@ fs-constants@^1.0.0:
|
||||
resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad"
|
||||
integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==
|
||||
|
||||
fs-monkey@^1.0.3:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.3.tgz#ae3ac92d53bb328efe0e9a1d9541f6ad8d48e2d3"
|
||||
integrity sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==
|
||||
|
||||
fs.realpath@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz"
|
||||
@ -2276,10 +2318,10 @@ ignore@^5.2.0:
|
||||
resolved "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz"
|
||||
integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==
|
||||
|
||||
imagescript@^1.2.15:
|
||||
version "1.2.15"
|
||||
resolved "https://registry.yarnpkg.com/imagescript/-/imagescript-1.2.15.tgz#478f096be59e8b41f65f2b44d2c955171395bd2c"
|
||||
integrity sha512-um9tWylwZrK2T7hzMlajRB6sGEgjYQYFm5jKommOV/v2ANpLozyVBGhe3ZeYxCO1lLh/QZqpGq7u6qOyUrh8DQ==
|
||||
imagescript@^1.2.16:
|
||||
version "1.2.16"
|
||||
resolved "https://registry.yarnpkg.com/imagescript/-/imagescript-1.2.16.tgz#2272f535816bdcbaec9da4448de5c89a488756bd"
|
||||
integrity sha512-hhy8OVNymU+cYYj8IwCbdNlXJRoMr4HRd7+efkH32eBVfybVU/5SbzDYf3ZSiiF9ye/ghfBrI/ujec/nwl+fOQ==
|
||||
|
||||
immutable@^4.0.0:
|
||||
version "4.2.2"
|
||||
@ -2950,6 +2992,13 @@ mdx-bundler@^9.2.1:
|
||||
uuid "^8.3.2"
|
||||
vfile "^5.3.2"
|
||||
|
||||
memfs@^3.5.1:
|
||||
version "3.5.1"
|
||||
resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.5.1.tgz#f0cd1e2bfaef58f6fe09bfb9c2288f07fea099ec"
|
||||
integrity sha512-UWbFJKvj5k+nETdteFndTpYxdeTMox/ULeqX5k/dpaQJCCFmj5EeKv3dBcyO2xmkRAx2vppRu5dVG7SOtsGOzA==
|
||||
dependencies:
|
||||
fs-monkey "^1.0.3"
|
||||
|
||||
merge2@^1.3.0, merge2@^1.4.1:
|
||||
version "1.4.1"
|
||||
resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz"
|
||||
@ -3384,25 +3433,25 @@ natural-compare@^1.4.0:
|
||||
resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz"
|
||||
integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==
|
||||
|
||||
next-contentlayer@^0.3.0:
|
||||
version "0.3.0"
|
||||
resolved "https://registry.yarnpkg.com/next-contentlayer/-/next-contentlayer-0.3.0.tgz#f9e815e78a1fbd2172aa94d0593c359f589c6a15"
|
||||
integrity sha512-vt+RaD3nIgZ6oXadtZH19a1mpxvGEoiifdtmXqBSz4rHMRcMA1YZCuSWyj+P9uX7MDmIL6JT6QSp+hvTBMaxiw==
|
||||
next-contentlayer@^0.3.2:
|
||||
version "0.3.2"
|
||||
resolved "https://registry.yarnpkg.com/next-contentlayer/-/next-contentlayer-0.3.2.tgz#0954a700c25f359d1e4555924222528b5ff58b46"
|
||||
integrity sha512-pihb/VtBq30eV+WpaWakWVtA1DWKzfXeaL7l/vR4MvrTO8UtZaX9H6wY0oSOqrmy674BRjXiQ03PbEOE5D6/iA==
|
||||
dependencies:
|
||||
"@contentlayer/core" "0.3.0"
|
||||
"@contentlayer/utils" "0.3.0"
|
||||
"@contentlayer/core" "0.3.2"
|
||||
"@contentlayer/utils" "0.3.2"
|
||||
|
||||
next-plausible@^3.7.2:
|
||||
version "3.7.2"
|
||||
resolved "https://registry.yarnpkg.com/next-plausible/-/next-plausible-3.7.2.tgz#33eae204a00ad01b7851b319e115eab8e0815fa6"
|
||||
integrity sha512-9PqFiVtD1kZO5gHFYTcgilHhg2WhMzD6I4NK/RUh9DGavD1N11IhNAvyGLFmvB3f4FtHC9IoAsauYDtQBt+riA==
|
||||
|
||||
next@^13.4.1:
|
||||
version "13.4.1"
|
||||
resolved "https://registry.yarnpkg.com/next/-/next-13.4.1.tgz#8d23f94c81b3f9cc8b34165ad528457e5befd726"
|
||||
integrity sha512-JBw2kAIyhKDpjhEWvNVoFeIzNp9xNxg8wrthDOtMctfn3EpqGCmW0FSviNyGgOSOSn6zDaX48pmvbdf6X2W9xA==
|
||||
next@^13.4.4:
|
||||
version "13.4.4"
|
||||
resolved "https://registry.yarnpkg.com/next/-/next-13.4.4.tgz#d1027c8d77f4c51be0b39f671b4820db03c93e60"
|
||||
integrity sha512-C5S0ysM0Ily9McL4Jb48nOQHT1BukOWI59uC3X/xCMlYIh9rJZCv7nzG92J6e1cOBqQbKovlpgvHWFmz4eKKEA==
|
||||
dependencies:
|
||||
"@next/env" "13.4.1"
|
||||
"@next/env" "13.4.4"
|
||||
"@swc/helpers" "0.5.1"
|
||||
busboy "1.6.0"
|
||||
caniuse-lite "^1.0.30001406"
|
||||
@ -3410,15 +3459,15 @@ next@^13.4.1:
|
||||
styled-jsx "5.1.1"
|
||||
zod "3.21.4"
|
||||
optionalDependencies:
|
||||
"@next/swc-darwin-arm64" "13.4.1"
|
||||
"@next/swc-darwin-x64" "13.4.1"
|
||||
"@next/swc-linux-arm64-gnu" "13.4.1"
|
||||
"@next/swc-linux-arm64-musl" "13.4.1"
|
||||
"@next/swc-linux-x64-gnu" "13.4.1"
|
||||
"@next/swc-linux-x64-musl" "13.4.1"
|
||||
"@next/swc-win32-arm64-msvc" "13.4.1"
|
||||
"@next/swc-win32-ia32-msvc" "13.4.1"
|
||||
"@next/swc-win32-x64-msvc" "13.4.1"
|
||||
"@next/swc-darwin-arm64" "13.4.4"
|
||||
"@next/swc-darwin-x64" "13.4.4"
|
||||
"@next/swc-linux-arm64-gnu" "13.4.4"
|
||||
"@next/swc-linux-arm64-musl" "13.4.4"
|
||||
"@next/swc-linux-x64-gnu" "13.4.4"
|
||||
"@next/swc-linux-x64-musl" "13.4.4"
|
||||
"@next/swc-win32-arm64-msvc" "13.4.4"
|
||||
"@next/swc-win32-ia32-msvc" "13.4.4"
|
||||
"@next/swc-win32-x64-msvc" "13.4.4"
|
||||
|
||||
no-case@^3.0.4:
|
||||
version "3.0.4"
|
||||
@ -3534,10 +3583,10 @@ once@^1.3.0, once@^1.3.1, once@^1.4.0:
|
||||
dependencies:
|
||||
wrappy "1"
|
||||
|
||||
oo-ascii-tree@^1.73.0:
|
||||
version "1.74.0"
|
||||
resolved "https://registry.yarnpkg.com/oo-ascii-tree/-/oo-ascii-tree-1.74.0.tgz#3581e4f95ff9de13660943e504eaddaa58bf08c0"
|
||||
integrity sha512-tV5BBZhFvALFKY/DMVILN5jDznPRZte0Yoj1hPmbAVGL4VSpsEXx0ZrP8fnFZKbAOyCwWq+PV26n7S5+cP86Xw==
|
||||
oo-ascii-tree@^1.80.0:
|
||||
version "1.81.0"
|
||||
resolved "https://registry.yarnpkg.com/oo-ascii-tree/-/oo-ascii-tree-1.81.0.tgz#e10a4e725ea697794f27d0dc0768493a809da032"
|
||||
integrity sha512-rfGg7tBvwiNrdP5MqVUGt/4Kwiy9y7Y6G3z6Nue5hhd0pHiAAyDVJ/GcwfW3cjMDrWlJ/itg+QuXREA1yfwynA==
|
||||
|
||||
open@^8.4.0:
|
||||
version "8.4.0"
|
||||
@ -3773,9 +3822,9 @@ rc@^1.2.7:
|
||||
minimist "^1.2.0"
|
||||
strip-json-comments "~2.0.1"
|
||||
|
||||
react-dom@18.2.0:
|
||||
react-dom@^18.2.0:
|
||||
version "18.2.0"
|
||||
resolved "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz"
|
||||
resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d"
|
||||
integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==
|
||||
dependencies:
|
||||
loose-envify "^1.1.0"
|
||||
@ -3786,9 +3835,9 @@ react-is@^16.13.1:
|
||||
resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz"
|
||||
integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
|
||||
|
||||
react@18.2.0:
|
||||
react@^18.2.0:
|
||||
version "18.2.0"
|
||||
resolved "https://registry.npmjs.org/react/-/react-18.2.0.tgz"
|
||||
resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5"
|
||||
integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==
|
||||
dependencies:
|
||||
loose-envify "^1.1.0"
|
||||
@ -4348,10 +4397,10 @@ trough@^2.0.0:
|
||||
resolved "https://registry.yarnpkg.com/trough/-/trough-2.1.0.tgz#0f7b511a4fde65a46f18477ab38849b22c554876"
|
||||
integrity sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==
|
||||
|
||||
ts-pattern@^4.1.3:
|
||||
version "4.1.3"
|
||||
resolved "https://registry.yarnpkg.com/ts-pattern/-/ts-pattern-4.1.3.tgz#8036392a31c42cc3580608024f0a6d298b6438c9"
|
||||
integrity sha512-8beXMWTGEv1JfDjSxfNhe4uT5jKYdhmEUKzt4gZW9dmHlquq3b+IbEyA7vX9LjBfzHmvKnM4HiomAUCyaW2Pew==
|
||||
ts-pattern@^4.2.2:
|
||||
version "4.3.0"
|
||||
resolved "https://registry.yarnpkg.com/ts-pattern/-/ts-pattern-4.3.0.tgz#7a995b39342f1b00d1507c2d2f3b90ea16e178a6"
|
||||
integrity sha512-pefrkcd4lmIVR0LA49Imjf9DYLK8vtWhqBPA3Ya1ir8xCW0O2yjL9dsCVvI7pCodLC5q7smNpEtDR2yVulQxOg==
|
||||
|
||||
tsconfig-paths@^3.14.1:
|
||||
version "3.14.1"
|
||||
@ -4414,10 +4463,10 @@ type-fest@^1.0.2:
|
||||
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-1.4.0.tgz#e9fb813fe3bf1744ec359d55d1affefa76f14be1"
|
||||
integrity sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==
|
||||
|
||||
type-fest@^3.5.2:
|
||||
version "3.5.5"
|
||||
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-3.5.5.tgz#43e96a3c6306e46cfd36e85c57a03fb7e2b34b48"
|
||||
integrity sha512-Nudle2CLcCaf9/1bVQunwzX1/ZH4Z6mvP8hkWWZCbKrxtnN52QwD5Xn/mo68aofQhGU4be1GlEC6LQCTKGXkRw==
|
||||
type-fest@^3.7.1:
|
||||
version "3.10.0"
|
||||
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-3.10.0.tgz#d75f17a22be8816aea6315ab2739fe1c0c211863"
|
||||
integrity sha512-hmAPf1datm+gt3c2mvu0sJyhFy6lTkIGf0GzyaZWxRLnabQfPUqg6tF95RPg6sLxKI7nFLGdFxBcf2/7+GXI+A==
|
||||
|
||||
typed-array-length@^1.0.4:
|
||||
version "1.0.4"
|
||||
@ -4687,16 +4736,11 @@ yocto-queue@^0.1.0:
|
||||
resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz"
|
||||
integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
|
||||
|
||||
zod@3.21.4:
|
||||
zod@3.21.4, zod@^3.21.4:
|
||||
version "3.21.4"
|
||||
resolved "https://registry.yarnpkg.com/zod/-/zod-3.21.4.tgz#10882231d992519f0a10b5dd58a38c9dabbb64db"
|
||||
integrity sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==
|
||||
|
||||
zod@^3.20.2:
|
||||
version "3.20.2"
|
||||
resolved "https://registry.yarnpkg.com/zod/-/zod-3.20.2.tgz#068606642c8f51b3333981f91c0a8ab37dfc2807"
|
||||
integrity sha512-1MzNQdAvO+54H+EaK5YpyEy0T+Ejo/7YLHS93G3RnYWh5gaotGHwGeN/ZO687qEDU2y4CdStQYXVHIgrUl5UVQ==
|
||||
|
||||
zustand@^4.3.2:
|
||||
version "4.3.2"
|
||||
resolved "https://registry.npmjs.org/zustand/-/zustand-4.3.2.tgz"
|
||||
|
Reference in New Issue
Block a user