From b64233ac858a445fe26993fb49a0af9ccc5d873b Mon Sep 17 00:00:00 2001
From: Martim Passos <49573683+martimpassos@users.noreply.github.com>
Date: Fri, 21 Jun 2024 12:39:13 -0300
Subject: [PATCH] Improve SEO, add eslint and prettier
---
.eslintrc.json | 11 +-
.github/workflows/nextjs.yml | 10 +-
.gitignore | 3 +-
.prettierignore | 2 +
app/[locale]/layout.tsx | 166 ++-
app/[locale]/page.tsx | 20 +-
app/globals.css | 8 +-
app/layout.tsx | 6 +-
app/page.tsx | 7 +-
app/robots.txt | 4 +
app/sitemap.xml | 16 +
messages/en.json | 104 +-
messages/pt.json | 104 +-
next.config.js | 8 +-
package-lock.json | 994 +++++++++++++++++-
package.json | 3 +
postcss.config.js | 2 +-
src/components/About.tsx | 51 +-
src/components/ContentBox.jsx | 8 +-
.../ContentBoxCarouselFourColumns.jsx | 4 +-
.../ContentBoxCarouselTwoColumns.jsx | 4 +-
src/components/ContentBoxProject.jsx | 27 +-
src/components/ContentBoxSubTitle.jsx | 7 +-
src/components/ContentBoxText.jsx | 4 +-
src/components/ContentBoxTitle.jsx | 6 +-
src/components/Footer.jsx | 4 +-
src/components/Hero.jsx | 50 +-
src/components/LocaleSwitch.jsx | 14 +-
src/components/LocaleSwitcherSelect.tsx | 17 +-
src/components/MainContent.jsx | 4 +-
src/components/Partners.jsx | 32 +-
src/components/Projects.jsx | 56 +-
src/components/Team.jsx | 75 +-
src/config.ts | 2 +-
src/i18n.tsx | 10 +-
src/middleware.ts | 16 +-
src/navigation.ts | 10 +-
styles/globals.css | 3 +-
tailwind.config.js | 12 +-
theme.config.jsx | 48 +-
theme.tsx | 8 +-
tsconfig.json | 15 +-
42 files changed, 1542 insertions(+), 413 deletions(-)
create mode 100644 .prettierignore
create mode 100644 app/robots.txt
create mode 100644 app/sitemap.xml
diff --git a/.eslintrc.json b/.eslintrc.json
index bffb357..c2eed54 100644
--- a/.eslintrc.json
+++ b/.eslintrc.json
@@ -1,3 +1,12 @@
{
- "extends": "next/core-web-vitals"
+ "extends": [
+ "eslint:recommended",
+ "plugin:@typescript-eslint/recommended",
+ "prettier",
+ "next/core-web-vitals"
+ ],
+ "plugins": ["prettier"],
+ "rules": {
+ "prettier/prettier": "error"
+ }
}
diff --git a/.github/workflows/nextjs.yml b/.github/workflows/nextjs.yml
index fcc8e36..e0b620b 100644
--- a/.github/workflows/nextjs.yml
+++ b/.github/workflows/nextjs.yml
@@ -56,11 +56,11 @@ jobs:
- name: Setup Pages
uses: actions/configure-pages@v4
# with:
- # Automatically inject basePath in your Next.js configuration file and disable
- # server side image optimization (https://nextjs.org/docs/api-reference/next/image#unoptimized).
- #
- # You may remove this line if you want to manage the configuration yourself.
- # static_site_generator: next
+ # Automatically inject basePath in your Next.js configuration file and disable
+ # server side image optimization (https://nextjs.org/docs/api-reference/next/image#unoptimized).
+ #
+ # You may remove this line if you want to manage the configuration yourself.
+ # static_site_generator: next
- name: Restore cache
uses: actions/cache@v3
with:
diff --git a/.gitignore b/.gitignore
index 1f9fefe..4a403c3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
node_modules
-.next/
\ No newline at end of file
+.next/
+out/
\ No newline at end of file
diff --git a/.prettierignore b/.prettierignore
new file mode 100644
index 0000000..07d2252
--- /dev/null
+++ b/.prettierignore
@@ -0,0 +1,2 @@
+node_modules
+out
\ No newline at end of file
diff --git a/app/[locale]/layout.tsx b/app/[locale]/layout.tsx
index bbcf347..244b759 100644
--- a/app/[locale]/layout.tsx
+++ b/app/[locale]/layout.tsx
@@ -1,44 +1,148 @@
-import { ReactNode } from 'react'
-import { notFound } from 'next/navigation'
-import { NextIntlClientProvider } from 'next-intl'
-import {unstable_setRequestLocale} from 'next-intl/server';
-import { Metadata } from 'next'
-import '../globals.css'
+import { ReactNode } from "react";
+import { notFound } from "next/navigation";
+import { NextIntlClientProvider } from "next-intl";
+import { unstable_setRequestLocale } from "next-intl/server";
+import { Metadata } from "next";
+import "../globals.css";
type Props = {
- children: ReactNode
- params: { locale: string }
- }
+ children: ReactNode;
+ params: { locale: string };
+};
-export const metadata: Metadata = {
- title: 'ARKA',
- description: 'Arka é uma consultoria especializada em gestão de coleções digitais atuando no Brasil e em projetos internacionais.',
-}
+export const metadata = (locale: string): Metadata => {
+ const commonMetadata = {
+ title: "ARKA",
+ openGraph: {
+ url: "https://arka.la",
+ images: [
+ {
+ url: "https://avatars.githubusercontent.com/u/152537545?s=200&v=4",
+ width: 200,
+ height: 200,
+ alt: "Arka Logo",
+ },
+ ],
+ },
+ twitter: {
+ card: "summary_large_image",
+ site: "@arka",
+ images: ["https://avatars.githubusercontent.com/u/152537545?s=200&v=4"],
+ },
+ };
+
+ let description;
+ let keywords;
+
+ switch (locale) {
+ case "en":
+ description =
+ "Arka is a digital studio specialized in digital collections, operating in Brazil and abroad";
+ keywords = [
+ "iiif",
+ "collections",
+ "machine learning",
+ "consultancy",
+ "digital humanities",
+ "digital strategy",
+ "museums",
+ "galleries",
+ "archives",
+ "libraries",
+ "cultural heritage",
+ ];
+ case "pt":
+ description =
+ "Arka é um estúdio digital especializado em coleções digitais, atuando no Brasil e em projetos internacionais";
+ keywords = [
+ "iiif",
+ "acervos",
+ "inteligência artificial",
+ "patrimônio cultural",
+ "consultoria",
+ "humanidades digitais",
+ "estratégia digital",
+ "museus",
+ "galerias",
+ "arquivos",
+ "bibliotecas",
+ ];
+ case "es":
+ description =
+ "Arka es un estudio digital especializado en colecciones digitales, que opera en Brasil y en el extranjero.";
+ keywords = [
+ "iiif",
+ "colecciones",
+ "museos",
+ "galerias",
+ "archivos",
+ "bibliotecas",
+ "humanidades digitales",
+ "consultoria",
+ "estrategia digital",
+ "patrimonio cultural",
+ "inteligencia artificial",
+ ];
+ }
+ return {
+ description: description,
+ keywords: keywords,
+ ...commonMetadata,
+ openGraph: {
+ ...commonMetadata.openGraph,
+ description: description,
+ },
+ twitter: {
+ ...commonMetadata.twitter,
+ description: description,
+ },
+ };
+};
//function to get the translations
async function getMessages(locale: string) {
- try {
- return (await import(`../../messages/${locale}.json`)).default
- } catch (error) {
- notFound()
- }
+ try {
+ return (await import(`../../messages/${locale}.json`)).default;
+ } catch (error) {
+ notFound();
+ }
}
//function to generate the routes for all the locales
export async function generateStaticParams() {
- return ['en', 'pt'].map((locale) => ({ locale }))
+ return ["en", "pt"].map((locale) => ({ locale }));
}
-export default async function RootLayout({ children, params: { locale } }: Props) {
- unstable_setRequestLocale(locale);
- const messages = await getMessages(locale)
- return (
-
-
-
- {children}
-
-
-
- )
+export default async function RootLayout({
+ children,
+ params: { locale },
+}: Props) {
+ unstable_setRequestLocale(locale);
+ const messages = await getMessages(locale);
+ return (
+
+
+
+ {children}
+
+
+
+
+ );
}
diff --git a/app/[locale]/page.tsx b/app/[locale]/page.tsx
index 9611caa..eed7563 100644
--- a/app/[locale]/page.tsx
+++ b/app/[locale]/page.tsx
@@ -1,16 +1,14 @@
// 'use client'
-import { useTranslations } from 'next-intl'
-import { unstable_setRequestLocale } from 'next-intl/server';
-
-import Hero from '../../src/components/Hero'
-import About from '../../src/components/About'
-import Team from '../../src/components/Team'
-import Partners from '../../src/components/Partners'
-import Projects from '../../src/components/Projects'
-import MainContent from '../../src/components/MainContent'
-import Footer from "../../src/components/Footer"
-import Link from 'next/link'
+import { unstable_setRequestLocale } from "next-intl/server";
+import Hero from "../../src/components/Hero";
+import About from "../../src/components/About";
+import Team from "../../src/components/Team";
+import Partners from "../../src/components/Partners";
+import Projects from "../../src/components/Projects";
+import MainContent from "../../src/components/MainContent";
+import Footer from "../../src/components/Footer";
+import Link from "next/link";
export default function HomePage({ params: { locale } }) {
unstable_setRequestLocale(locale);
diff --git a/app/globals.css b/app/globals.css
index 4070dd7..768f398 100644
--- a/app/globals.css
+++ b/app/globals.css
@@ -2,9 +2,11 @@
@tailwind components;
@tailwind utilities;
-:root {}
+:root {
+}
-body {}
+body {
+}
@font-face {
font-family: "Jost";
@@ -32,4 +34,4 @@ body {}
src: url("../support_files/fonts/Jost-Bold.ttf");
font-weight: 700;
font-style: bold;
-}
\ No newline at end of file
+}
diff --git a/app/layout.tsx b/app/layout.tsx
index bada9a1..568d357 100644
--- a/app/layout.tsx
+++ b/app/layout.tsx
@@ -1,11 +1,9 @@
-import { ReactNode } from 'react';
-
+import { ReactNode } from "react";
type Props = {
children: ReactNode;
};
-
export default function RootLayout({ children }: Props) {
return children;
-}
\ No newline at end of file
+}
diff --git a/app/page.tsx b/app/page.tsx
index 136eedb..0e7f507 100644
--- a/app/page.tsx
+++ b/app/page.tsx
@@ -1,8 +1,7 @@
-'use client'
+"use client";
-import { redirect } from 'next/navigation';
+import { redirect } from "next/navigation";
export default function RootPage() {
- redirect('/en');
+ redirect("/en");
}
-
diff --git a/app/robots.txt b/app/robots.txt
new file mode 100644
index 0000000..b4132a0
--- /dev/null
+++ b/app/robots.txt
@@ -0,0 +1,4 @@
+User-agent: *
+Allow: /
+Disallow:
+Sitemap: https://arka.la/sitemap.xml
\ No newline at end of file
diff --git a/app/sitemap.xml b/app/sitemap.xml
new file mode 100644
index 0000000..ce25421
--- /dev/null
+++ b/app/sitemap.xml
@@ -0,0 +1,16 @@
+
+
+ https://arka.la
+
+
+ 2024-06-20T15:02:24.021Z
+ monthly
+ 1
+
+
\ No newline at end of file
diff --git a/messages/en.json b/messages/en.json
index f155fe9..a43f6ba 100644
--- a/messages/en.json
+++ b/messages/en.json
@@ -1,55 +1,55 @@
{
- "HomePage": {
- "Hero": {
- "description": "We are a digital studio specialized in research and development for cultural heritage institutions and private collectors "
- },
- "About": {
- "title": "About",
- "description": "We use AI and open standards to digitize, catalog, and share artworks and historical documents on the web",
- "infrastructure": {
- "title": "IIIF infrastructure",
- "description": "Implementation of the International Image Interoperability Framework"
- },
- "computer-vision": {
- "title":"Computer Vision",
- "description": "Object detection, content classification, manuscript transcription"
- }
- },
- "Team": {
- "Anita": {
- "name": "Anita Lucchesi",
- "role": "Business"
- },
- "Bruno": {
- "name": "Bruno Buccalon",
- "role": "Design"
- },
- "Martim": {
- "name": "Martim Passos",
- "role": "Technology"
- },
- "Yuri": {
- "name": "Yuri Tavares",
- "role": "Technology"
- }
- },
- "Partners": {
- "title": "Partners"
- },
- "Projects": {
- "title": "Projects",
- "tropiiify": {
- "title": "tropiiify",
- "description": "Tropy plugin for exporting IIIF collections"
- },
- "imaginerio": {
- "title": "imagineRio",
- "description": "Historical mapping of Rio de Janeiro"
- }
- }
+ "HomePage": {
+ "Hero": {
+ "description": "We are a digital studio specialized in research and development for cultural heritage institutions and private collectors "
},
- "LocaleSwitcher": {
- "label": "Change language",
- "locale": "{locale, select, pt {Português} en {English} other {Unknown}}"
+ "About": {
+ "title": "About",
+ "description": "We use AI and open standards to digitize, catalog, and share artworks and historical documents on the web.",
+ "infrastructure": {
+ "title": "IIIF infrastructure",
+ "description": "Implementation of the International Image Interoperability Framework"
+ },
+ "computer-vision": {
+ "title": "Computer Vision",
+ "description": "Object detection, content classification, manuscript transcription"
+ }
+ },
+ "Team": {
+ "Anita": {
+ "name": "Anita Lucchesi",
+ "role": "Business"
+ },
+ "Bruno": {
+ "name": "Bruno Buccalon",
+ "role": "Design"
+ },
+ "Martim": {
+ "name": "Martim Passos",
+ "role": "Technology"
+ },
+ "Yuri": {
+ "name": "Yuri Tavares",
+ "role": "Technology"
+ }
+ },
+ "Partners": {
+ "title": "Partners"
+ },
+ "Projects": {
+ "title": "Projects",
+ "tropiiify": {
+ "title": "tropiiify",
+ "description": "Tropy plugin for exporting IIIF collections"
+ },
+ "imaginerio": {
+ "title": "imagineRio",
+ "description": "Historical mapping of Rio de Janeiro"
+ }
}
-}
\ No newline at end of file
+ },
+ "LocaleSwitcher": {
+ "label": "Change language",
+ "locale": "{locale, select, pt {Português} en {English} other {Unknown}}"
+ }
+}
diff --git a/messages/pt.json b/messages/pt.json
index 31dd3bc..3a69978 100644
--- a/messages/pt.json
+++ b/messages/pt.json
@@ -1,55 +1,55 @@
{
- "HomePage": {
- "Hero": {
- "description": "Somos um estúdio digital especializado em pesquisa e desenvolvimento para instituições de memória e coleções particulares "
- },
- "About": {
- "title": "Sobre",
- "description": "Trabalhamos com inteligência artificial e padrões abertos na digitalização, catalogação e difusão de obras de arte e documentos históricos na web",
- "infrastructure": {
- "title": "Infraestrutura IIIF",
- "description": "Implementação do Protocolo Internacional para Interoperabilidade de Imagens"
- },
- "computer-vision": {
- "title":"Visão Computacional",
- "description": "Detecção de objetos, classificação de conteúdo, transcrição de manuscritos"
- }
- },
- "Team": {
- "Anita": {
- "name": "Anita Lucchesi",
- "role": "Negócios"
- },
- "Bruno": {
- "name": "Bruno Buccalon",
- "role": "Design"
- },
- "Martim": {
- "name": "Martim Passos",
- "role": "Tecnologia"
- },
- "Yuri": {
- "name": "Yuri Tavares",
- "role": "Tecnologia"
- }
- },
- "Partners": {
- "title": "Parceiros"
- },
- "Projects": {
- "title": "Projetos",
- "tropiiify": {
- "title": "tropiiify",
- "description": "Plugin para exportar coleções IIIF através do gerenciador de imagens Tropy"
- },
- "imaginerio": {
- "title": "imagineRio",
- "description": "Plataforma de mapeamento histórico da cidade do Rio de Janeiro"
- }
- }
+ "HomePage": {
+ "Hero": {
+ "description": "Somos um estúdio digital especializado em pesquisa e desenvolvimento para instituições de memória e coleções particulares "
},
- "LocaleSwitcher": {
- "label": "Mudar idioma",
- "locale": "{locale, select, pt {Português} en {English} other {Unknown}}"
+ "About": {
+ "title": "Sobre",
+ "description": "Trabalhamos com inteligência artificial e padrões abertos na digitalização, catalogação e difusão de obras de arte e documentos históricos na web.",
+ "infrastructure": {
+ "title": "Infraestrutura IIIF",
+ "description": "Implementação do Protocolo Internacional para Interoperabilidade de Imagens"
+ },
+ "computer-vision": {
+ "title": "Visão Computacional",
+ "description": "Detecção de objetos, classificação de conteúdo, transcrição de manuscritos"
+ }
+ },
+ "Team": {
+ "Anita": {
+ "name": "Anita Lucchesi",
+ "role": "Negócios"
+ },
+ "Bruno": {
+ "name": "Bruno Buccalon",
+ "role": "Design"
+ },
+ "Martim": {
+ "name": "Martim Passos",
+ "role": "Tecnologia"
+ },
+ "Yuri": {
+ "name": "Yuri Tavares",
+ "role": "Tecnologia"
+ }
+ },
+ "Partners": {
+ "title": "Parceiros"
+ },
+ "Projects": {
+ "title": "Projetos",
+ "tropiiify": {
+ "title": "tropiiify",
+ "description": "Plugin para exportar coleções IIIF através do gerenciador de imagens Tropy"
+ },
+ "imaginerio": {
+ "title": "imagineRio",
+ "description": "Plataforma de mapeamento histórico da cidade do Rio de Janeiro"
+ }
}
-}
\ No newline at end of file
+ },
+ "LocaleSwitcher": {
+ "label": "Mudar idioma",
+ "locale": "{locale, select, pt {Português} en {English} other {Unknown}}"
+ }
+}
diff --git a/next.config.js b/next.config.js
index af4dabc..147b9e2 100644
--- a/next.config.js
+++ b/next.config.js
@@ -1,11 +1,9 @@
-const createNextIntlPlugin = require('next-intl/plugin');
+const createNextIntlPlugin = require("next-intl/plugin");
const withNextIntl = createNextIntlPlugin();
module.exports = withNextIntl({
- output: 'export',
+ output: "export",
images: {
unoptimized: true,
},
-})
-
-
+});
diff --git a/package-lock.json b/package-lock.json
index 81cff76..3c75e79 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -16,6 +16,9 @@
"devDependencies": {
"@types/node": "20.12.8",
"autoprefixer": "^10.4.19",
+ "eslint": "^9.5.0",
+ "eslint-config-prettier": "^9.1.0",
+ "eslint-plugin-prettier": "^5.1.3",
"postcss": "^8.4.38",
"tailwindcss": "^3.4.3",
"typescript": "5.4.5"
@@ -38,6 +41,159 @@
"resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-6.0.4.tgz",
"integrity": "sha512-s3jaWicZd0pkP0jf5ysyHUI/RE7MHos6qlToFcGWXVp+ykHOy77OUMrfbgJ9it2C5bow7OIQwYYaHjk9XlBQ2A=="
},
+ "node_modules/@eslint-community/eslint-utils": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
+ "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==",
+ "dev": true,
+ "dependencies": {
+ "eslint-visitor-keys": "^3.3.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
+ }
+ },
+ "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
+ "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
+ "dev": true,
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/@eslint-community/regexpp": {
+ "version": "4.10.1",
+ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.1.tgz",
+ "integrity": "sha512-Zm2NGpWELsQAD1xsJzGQpYfvICSsFkEpU0jxBjfdC6uNEWXcHnfs9hScFWtXVDVl+rBQJGrl4g1vcKIejpH9dA==",
+ "dev": true,
+ "engines": {
+ "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@eslint/config-array": {
+ "version": "0.16.0",
+ "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.16.0.tgz",
+ "integrity": "sha512-/jmuSd74i4Czf1XXn7wGRWZCuyaUZ330NH1Bek0Pplatt4Sy1S5haN21SCLLdbeKslQ+S0wEJ+++v5YibSi+Lg==",
+ "dev": true,
+ "dependencies": {
+ "@eslint/object-schema": "^2.1.4",
+ "debug": "^4.3.1",
+ "minimatch": "^3.0.5"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
+ "node_modules/@eslint/config-array/node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/@eslint/config-array/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/@eslint/eslintrc": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.1.0.tgz",
+ "integrity": "sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==",
+ "dev": true,
+ "dependencies": {
+ "ajv": "^6.12.4",
+ "debug": "^4.3.2",
+ "espree": "^10.0.1",
+ "globals": "^14.0.0",
+ "ignore": "^5.2.0",
+ "import-fresh": "^3.2.1",
+ "js-yaml": "^4.1.0",
+ "minimatch": "^3.1.2",
+ "strip-json-comments": "^3.1.1"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/@eslint/eslintrc/node_modules/argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+ "dev": true
+ },
+ "node_modules/@eslint/eslintrc/node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/@eslint/eslintrc/node_modules/js-yaml": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+ "dev": true,
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/@eslint/eslintrc/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/@eslint/js": {
+ "version": "9.5.0",
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.5.0.tgz",
+ "integrity": "sha512-A7+AOT2ICkodvtsWnxZP4Xxk3NbZ3VMHd8oihydLRGrJgqqdEz1qSeEgXYyT/Cu8h1TWWsQRejIx48mtjZ5y1w==",
+ "dev": true,
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
+ "node_modules/@eslint/object-schema": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz",
+ "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==",
+ "dev": true,
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
"node_modules/@floating-ui/core": {
"version": "1.6.1",
"resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.1.tgz",
@@ -190,6 +346,32 @@
"react-dom": "^18"
}
},
+ "node_modules/@humanwhocodes/module-importer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
+ "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12.22"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
+ }
+ },
+ "node_modules/@humanwhocodes/retry": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.0.tgz",
+ "integrity": "sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==",
+ "dev": true,
+ "engines": {
+ "node": ">=18.18"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
+ }
+ },
"node_modules/@isaacs/cliui": {
"version": "8.0.2",
"resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
@@ -697,6 +879,18 @@
"node": ">=14"
}
},
+ "node_modules/@pkgr/core": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz",
+ "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==",
+ "dev": true,
+ "engines": {
+ "node": "^12.20.0 || ^14.18.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/unts"
+ }
+ },
"node_modules/@react-aria/focus": {
"version": "3.17.0",
"resolved": "https://registry.npmjs.org/@react-aria/focus/-/focus-3.17.0.tgz",
@@ -951,9 +1145,9 @@
"integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ=="
},
"node_modules/acorn": {
- "version": "8.11.3",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz",
- "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==",
+ "version": "8.12.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.0.tgz",
+ "integrity": "sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==",
"bin": {
"acorn": "bin/acorn"
},
@@ -969,6 +1163,22 @@
"acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
}
},
+ "node_modules/ajv": {
+ "version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "dev": true,
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
"node_modules/ansi-regex": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
@@ -1130,12 +1340,12 @@
}
},
"node_modules/braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
"dev": true,
"dependencies": {
- "fill-range": "^7.0.1"
+ "fill-range": "^7.1.1"
},
"engines": {
"node": ">=8"
@@ -1184,6 +1394,15 @@
"node": ">=10.16.0"
}
},
+ "node_modules/callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/camelcase-css": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz",
@@ -1369,6 +1588,12 @@
"node": ">= 12"
}
},
+ "node_modules/concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+ "dev": true
+ },
"node_modules/cose-base": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/cose-base/-/cose-base-1.0.3.tgz",
@@ -1878,6 +2103,12 @@
"url": "https://github.com/sponsors/wooorm"
}
},
+ "node_modules/deep-is": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
+ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
+ "dev": true
+ },
"node_modules/delaunator": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz",
@@ -1971,18 +2202,340 @@
"integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==",
"dev": true,
"engines": {
- "node": ">=6"
+ "node": ">=6"
+ }
+ },
+ "node_modules/escape-string-regexp": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz",
+ "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/eslint": {
+ "version": "9.5.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.5.0.tgz",
+ "integrity": "sha512-+NAOZFrW/jFTS3dASCGBxX1pkFD0/fsO+hfAkJ4TyYKwgsXZbqzrw+seCYFCcPCYXvnD67tAnglU7GQTz6kcVw==",
+ "dev": true,
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.2.0",
+ "@eslint-community/regexpp": "^4.6.1",
+ "@eslint/config-array": "^0.16.0",
+ "@eslint/eslintrc": "^3.1.0",
+ "@eslint/js": "9.5.0",
+ "@humanwhocodes/module-importer": "^1.0.1",
+ "@humanwhocodes/retry": "^0.3.0",
+ "@nodelib/fs.walk": "^1.2.8",
+ "ajv": "^6.12.4",
+ "chalk": "^4.0.0",
+ "cross-spawn": "^7.0.2",
+ "debug": "^4.3.2",
+ "escape-string-regexp": "^4.0.0",
+ "eslint-scope": "^8.0.1",
+ "eslint-visitor-keys": "^4.0.0",
+ "espree": "^10.0.1",
+ "esquery": "^1.5.0",
+ "esutils": "^2.0.2",
+ "fast-deep-equal": "^3.1.3",
+ "file-entry-cache": "^8.0.0",
+ "find-up": "^5.0.0",
+ "glob-parent": "^6.0.2",
+ "ignore": "^5.2.0",
+ "imurmurhash": "^0.1.4",
+ "is-glob": "^4.0.0",
+ "is-path-inside": "^3.0.3",
+ "json-stable-stringify-without-jsonify": "^1.0.1",
+ "levn": "^0.4.1",
+ "lodash.merge": "^4.6.2",
+ "minimatch": "^3.1.2",
+ "natural-compare": "^1.4.0",
+ "optionator": "^0.9.3",
+ "strip-ansi": "^6.0.1",
+ "text-table": "^0.2.0"
+ },
+ "bin": {
+ "eslint": "bin/eslint.js"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://eslint.org/donate"
+ }
+ },
+ "node_modules/eslint-config-prettier": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz",
+ "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==",
+ "dev": true,
+ "bin": {
+ "eslint-config-prettier": "bin/cli.js"
+ },
+ "peerDependencies": {
+ "eslint": ">=7.0.0"
+ }
+ },
+ "node_modules/eslint-plugin-prettier": {
+ "version": "5.1.3",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.3.tgz",
+ "integrity": "sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==",
+ "dev": true,
+ "dependencies": {
+ "prettier-linter-helpers": "^1.0.0",
+ "synckit": "^0.8.6"
+ },
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint-plugin-prettier"
+ },
+ "peerDependencies": {
+ "@types/eslint": ">=8.0.0",
+ "eslint": ">=8.0.0",
+ "eslint-config-prettier": "*",
+ "prettier": ">=3.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/eslint": {
+ "optional": true
+ },
+ "eslint-config-prettier": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/eslint-scope": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.0.1.tgz",
+ "integrity": "sha512-pL8XjgP4ZOmmwfFE8mEhSxA7ZY4C+LWyqjQ3o4yWkkmD0qcMT9kkW3zWHOczhWcjTSgqycYAgwSlXvZltv65og==",
+ "dev": true,
+ "dependencies": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint-visitor-keys": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz",
+ "integrity": "sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==",
+ "dev": true,
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint/node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/eslint/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/eslint/node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/eslint/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/eslint/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/eslint/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "node_modules/eslint/node_modules/cross-spawn": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
+ "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+ "dev": true,
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/eslint/node_modules/escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/eslint/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/eslint/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/eslint/node_modules/path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/eslint/node_modules/shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "dev": true,
+ "dependencies": {
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/eslint/node_modules/shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/eslint/node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/eslint/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/eslint/node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dev": true,
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
}
},
- "node_modules/escape-string-regexp": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz",
- "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==",
+ "node_modules/espree": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-10.1.0.tgz",
+ "integrity": "sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==",
+ "dev": true,
+ "dependencies": {
+ "acorn": "^8.12.0",
+ "acorn-jsx": "^5.3.2",
+ "eslint-visitor-keys": "^4.0.0"
+ },
"engines": {
- "node": ">=12"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "url": "https://opencollective.com/eslint"
}
},
"node_modules/esprima": {
@@ -1997,6 +2550,39 @@
"node": ">=4"
}
},
+ "node_modules/esquery": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz",
+ "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==",
+ "dev": true,
+ "dependencies": {
+ "estraverse": "^5.1.0"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/esrecurse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
+ "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+ "dev": true,
+ "dependencies": {
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
"node_modules/estree-util-attach-comments": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-2.1.1.tgz",
@@ -2078,6 +2664,15 @@
"@types/estree": "^1.0.0"
}
},
+ "node_modules/esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/execa": {
"version": "0.8.0",
"resolved": "https://registry.npmjs.org/execa/-/execa-0.8.0.tgz",
@@ -2111,6 +2706,18 @@
"node": ">=0.10.0"
}
},
+ "node_modules/fast-deep-equal": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+ "dev": true
+ },
+ "node_modules/fast-diff": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz",
+ "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==",
+ "dev": true
+ },
"node_modules/fast-glob": {
"version": "3.3.2",
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
@@ -2139,6 +2746,18 @@
"node": ">= 6"
}
},
+ "node_modules/fast-json-stable-stringify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+ "dev": true
+ },
+ "node_modules/fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
+ "dev": true
+ },
"node_modules/fastq": {
"version": "1.17.1",
"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz",
@@ -2148,10 +2767,22 @@
"reusify": "^1.0.4"
}
},
+ "node_modules/file-entry-cache": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz",
+ "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==",
+ "dev": true,
+ "dependencies": {
+ "flat-cache": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
"node_modules/fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
"dev": true,
"dependencies": {
"to-regex-range": "^5.0.1"
@@ -2160,6 +2791,41 @@
"node": ">=8"
}
},
+ "node_modules/find-up": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+ "dev": true,
+ "dependencies": {
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/flat-cache": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz",
+ "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==",
+ "dev": true,
+ "dependencies": {
+ "flatted": "^3.2.9",
+ "keyv": "^4.5.4"
+ },
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/flatted": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz",
+ "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==",
+ "dev": true
+ },
"node_modules/foreground-child": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz",
@@ -2330,6 +2996,18 @@
"node": ">=10.13.0"
}
},
+ "node_modules/globals": {
+ "version": "14.0.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz",
+ "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/graceful-fs": {
"version": "4.2.11",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
@@ -2792,6 +3470,40 @@
"node": ">=0.10.0"
}
},
+ "node_modules/ignore": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz",
+ "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/import-fresh": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
+ "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
+ "dev": true,
+ "dependencies": {
+ "parent-module": "^1.0.0",
+ "resolve-from": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.19"
+ }
+ },
"node_modules/inline-style-parser": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz",
@@ -2977,6 +3689,15 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/is-path-inside": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
+ "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/is-plain-obj": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz",
@@ -3053,6 +3774,24 @@
"js-yaml": "bin/js-yaml.js"
}
},
+ "node_modules/json-buffer": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
+ "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
+ "dev": true
+ },
+ "node_modules/json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "dev": true
+ },
+ "node_modules/json-stable-stringify-without-jsonify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
+ "dev": true
+ },
"node_modules/jsonc-parser": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.1.tgz",
@@ -3073,6 +3812,15 @@
"katex": "cli.js"
}
},
+ "node_modules/keyv": {
+ "version": "4.5.4",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
+ "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
+ "dev": true,
+ "dependencies": {
+ "json-buffer": "3.0.1"
+ }
+ },
"node_modules/khroma": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/khroma/-/khroma-2.1.0.tgz",
@@ -3099,6 +3847,19 @@
"resolved": "https://registry.npmjs.org/layout-base/-/layout-base-1.0.2.tgz",
"integrity": "sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg=="
},
+ "node_modules/levn": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
+ "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
+ "dev": true,
+ "dependencies": {
+ "prelude-ls": "^1.2.1",
+ "type-check": "~0.4.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
"node_modules/lilconfig": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz",
@@ -3114,6 +3875,21 @@
"integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
"dev": true
},
+ "node_modules/locate-path": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+ "dev": true,
+ "dependencies": {
+ "p-locate": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/lodash-es": {
"version": "4.17.21",
"resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz",
@@ -3124,6 +3900,12 @@
"resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
"integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ=="
},
+ "node_modules/lodash.merge": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
+ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
+ "dev": true
+ },
"node_modules/longest-streak": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz",
@@ -4588,6 +5370,12 @@
"node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
}
},
+ "node_modules/natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
+ "dev": true
+ },
"node_modules/negotiator": {
"version": "0.6.3",
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
@@ -4871,6 +5659,23 @@
"node": ">= 6"
}
},
+ "node_modules/optionator": {
+ "version": "0.9.4",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz",
+ "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==",
+ "dev": true,
+ "dependencies": {
+ "deep-is": "^0.1.3",
+ "fast-levenshtein": "^2.0.6",
+ "levn": "^0.4.1",
+ "prelude-ls": "^1.2.1",
+ "type-check": "^0.4.0",
+ "word-wrap": "^1.2.5"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
"node_modules/p-finally": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
@@ -4893,6 +5698,33 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/p-locate": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
+ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+ "dev": true,
+ "dependencies": {
+ "p-limit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/parent-module": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+ "dev": true,
+ "dependencies": {
+ "callsites": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/parse-entities": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.1.tgz",
@@ -4928,6 +5760,15 @@
"url": "https://github.com/inikulin/parse5?sponsor=1"
}
},
+ "node_modules/path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/path-key": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
@@ -5161,6 +6002,43 @@
"integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
"dev": true
},
+ "node_modules/prelude-ls": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
+ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/prettier": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.2.tgz",
+ "integrity": "sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA==",
+ "dev": true,
+ "peer": true,
+ "bin": {
+ "prettier": "bin/prettier.cjs"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/prettier/prettier?sponsor=1"
+ }
+ },
+ "node_modules/prettier-linter-helpers": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz",
+ "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==",
+ "dev": true,
+ "dependencies": {
+ "fast-diff": "^1.1.2"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
"node_modules/property-information": {
"version": "6.5.0",
"resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz",
@@ -5175,6 +6053,15 @@
"resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
"integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ=="
},
+ "node_modules/punycode": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/queue-microtask": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
@@ -5543,6 +6430,15 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/resolve-from": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/reusify": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
@@ -5853,6 +6749,18 @@
"node": ">=0.10.0"
}
},
+ "node_modules/strip-json-comments": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/style-to-object": {
"version": "0.4.4",
"resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.4.4.tgz",
@@ -5942,6 +6850,22 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/synckit": {
+ "version": "0.8.8",
+ "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.8.tgz",
+ "integrity": "sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==",
+ "dev": true,
+ "dependencies": {
+ "@pkgr/core": "^0.1.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/unts"
+ }
+ },
"node_modules/tabbable": {
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz",
@@ -5990,6 +6914,12 @@
"integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==",
"dev": true
},
+ "node_modules/text-table": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
+ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
+ "dev": true
+ },
"node_modules/thenify": {
"version": "3.3.1",
"resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz",
@@ -6082,6 +7012,18 @@
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
"integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
},
+ "node_modules/type-check": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
+ "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
+ "dev": true,
+ "dependencies": {
+ "prelude-ls": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
"node_modules/type-fest": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz",
@@ -6368,6 +7310,15 @@
"browserslist": ">= 4.21.0"
}
},
+ "node_modules/uri-js": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
+ "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+ "dev": true,
+ "dependencies": {
+ "punycode": "^2.1.0"
+ }
+ },
"node_modules/use-intl": {
"version": "3.15.0",
"resolved": "https://registry.npmjs.org/use-intl/-/use-intl-3.15.0.tgz",
@@ -6582,6 +7533,15 @@
"which": "bin/which"
}
},
+ "node_modules/word-wrap": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
+ "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/wrap-ansi": {
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
diff --git a/package.json b/package.json
index 52dc288..f02cc8f 100644
--- a/package.json
+++ b/package.json
@@ -17,6 +17,9 @@
"devDependencies": {
"@types/node": "20.12.8",
"autoprefixer": "^10.4.19",
+ "eslint": "^9.5.0",
+ "eslint-config-prettier": "^9.1.0",
+ "eslint-plugin-prettier": "^5.1.3",
"postcss": "^8.4.38",
"tailwindcss": "^3.4.3",
"typescript": "5.4.5"
diff --git a/postcss.config.js b/postcss.config.js
index 33ad091..12a703d 100644
--- a/postcss.config.js
+++ b/postcss.config.js
@@ -3,4 +3,4 @@ module.exports = {
tailwindcss: {},
autoprefixer: {},
},
-}
+};
diff --git a/src/components/About.tsx b/src/components/About.tsx
index 13ff7f2..f737e23 100644
--- a/src/components/About.tsx
+++ b/src/components/About.tsx
@@ -1,23 +1,32 @@
-import ContentBox from "./ContentBox"
-import ContentBoxTitle from "./ContentBoxTitle"
-import ContentBoxText from "./ContentBoxText"
-import ContentBoxSubTitle from "./ContentBoxSubTitle"
-import ContentBoxCarouselTwoColumns from "./ContentBoxCarouselTwoColumns"
-import { useTranslations } from 'next-intl'
+import ContentBox from "./ContentBox";
+import ContentBoxTitle from "./ContentBoxTitle";
+import ContentBoxText from "./ContentBoxText";
+import ContentBoxSubTitle from "./ContentBoxSubTitle";
+import ContentBoxCarouselTwoColumns from "./ContentBoxCarouselTwoColumns";
+import { useTranslations } from "next-intl";
export default function About() {
- const t = useTranslations('HomePage.About')
- return (
-
- {t('title')}
-
-
- {t('description')}
-
-
- {t('infrastructure.title')} {t('infrastructure.description')}
- {t('computer-vision.title')} {t('computer-vision.description')}
-
-
- )
-}
\ No newline at end of file
+ const t = useTranslations("HomePage.About");
+ return (
+
+ {t("title")}
+
+
+ {t("description")}
+
+
+
+ {t("infrastructure.title")}
+ {t("infrastructure.description")}
+
+
+
+ {t("computer-vision.title")}
+
+ {t("computer-vision.description")}
+
+
+
+
+ );
+}
diff --git a/src/components/ContentBox.jsx b/src/components/ContentBox.jsx
index cb1710b..e53fb5e 100644
--- a/src/components/ContentBox.jsx
+++ b/src/components/ContentBox.jsx
@@ -1,7 +1,5 @@
export default function ContentBox({ children }) {
return (
-
- {children}
-
- )
-}
\ No newline at end of file
+ {children}
+ );
+}
diff --git a/src/components/ContentBoxCarouselFourColumns.jsx b/src/components/ContentBoxCarouselFourColumns.jsx
index 2603578..177f38e 100644
--- a/src/components/ContentBoxCarouselFourColumns.jsx
+++ b/src/components/ContentBoxCarouselFourColumns.jsx
@@ -3,5 +3,5 @@ export default function ContentBoxCarouselFourColumns({ children }) {
{children}
- )
-}
\ No newline at end of file
+ );
+}
diff --git a/src/components/ContentBoxCarouselTwoColumns.jsx b/src/components/ContentBoxCarouselTwoColumns.jsx
index 485690a..d4d2428 100644
--- a/src/components/ContentBoxCarouselTwoColumns.jsx
+++ b/src/components/ContentBoxCarouselTwoColumns.jsx
@@ -3,5 +3,5 @@ export default function ContentBoxCarouselTwoColumns({ children }) {
{children}
- )
-}
\ No newline at end of file
+ );
+}
diff --git a/src/components/ContentBoxProject.jsx b/src/components/ContentBoxProject.jsx
index f2f1dff..5bad628 100644
--- a/src/components/ContentBoxProject.jsx
+++ b/src/components/ContentBoxProject.jsx
@@ -1,17 +1,34 @@
-export default function ContentBoxProject({ logo, img, name, url, description }) {
+export default function ContentBoxProject({
+ logo,
+ img,
+ name,
+ url,
+ description,
+}) {
return (
- )
+ );
}
diff --git a/src/components/ContentBoxSubTitle.jsx b/src/components/ContentBoxSubTitle.jsx
index e25823b..e8e1e23 100644
--- a/src/components/ContentBoxSubTitle.jsx
+++ b/src/components/ContentBoxSubTitle.jsx
@@ -1,3 +1,8 @@
export default function ContentBoxSubTitle({ children }) {
- return {children} ;
+ return (
+
+ {children}
+
+
+ );
}
diff --git a/src/components/ContentBoxText.jsx b/src/components/ContentBoxText.jsx
index b881ea0..79a9d30 100644
--- a/src/components/ContentBoxText.jsx
+++ b/src/components/ContentBoxText.jsx
@@ -1,8 +1,8 @@
-import React from 'react';
+import React from "react";
export default function ContentBoxText({ children }) {
const countChildren = React.Children.count(children);
- const fontSize = countChildren > 1 ? "xl" : "2xl";
+ const fontSize = countChildren > 1 ? "xl" : "2xl";
return {children}
;
}
diff --git a/src/components/ContentBoxTitle.jsx b/src/components/ContentBoxTitle.jsx
index 3a9f6df..c40c8c8 100644
--- a/src/components/ContentBoxTitle.jsx
+++ b/src/components/ContentBoxTitle.jsx
@@ -1,5 +1,7 @@
export default function ContentBoxTitle({ children }) {
return (
- {children}
- )
+
+ {children}
+
+ );
}
diff --git a/src/components/Footer.jsx b/src/components/Footer.jsx
index 5faaf11..2f4c5a1 100644
--- a/src/components/Footer.jsx
+++ b/src/components/Footer.jsx
@@ -3,5 +3,5 @@ export default function Footer({ children }) {
{children}
- )
-}
\ No newline at end of file
+ );
+}
diff --git a/src/components/Hero.jsx b/src/components/Hero.jsx
index a0ff213..01d68b7 100644
--- a/src/components/Hero.jsx
+++ b/src/components/Hero.jsx
@@ -1,21 +1,35 @@
-import LocaleSwitch from './LocaleSwitch'
-import { useTranslations } from 'next-intl'
+import LocaleSwitch from "./LocaleSwitch";
+import { useTranslations } from "next-intl";
export default function Hero() {
- const t = useTranslations('HomePage.Hero')
- return <>
-
-
-
-
-
- {t.rich('description', {
- highlight: (chunks) => {chunks} ,
- nobreak: (chunks) => {chunks}
- })}
-
-
-
-
+ const t = useTranslations("HomePage.Hero");
+ return (
+ <>
+
+
+
+
+
+ {t.rich("description", {
+ highlight: (chunks) => {chunks} ,
+ nobreak: (chunks) => (
+ {chunks}
+ ),
+ })}
+
+
+
+
>
-}
\ No newline at end of file
+ );
+}
diff --git a/src/components/LocaleSwitch.jsx b/src/components/LocaleSwitch.jsx
index 0dd33c9..1d6c047 100644
--- a/src/components/LocaleSwitch.jsx
+++ b/src/components/LocaleSwitch.jsx
@@ -1,18 +1,18 @@
-import {useLocale, useTranslations} from 'next-intl';
-import LocaleSwitcherSelect from './LocaleSwitcherSelect';
-import {locales} from '../config';
+import { useLocale, useTranslations } from "next-intl";
+import LocaleSwitcherSelect from "./LocaleSwitcherSelect";
+import { locales } from "../config";
export default function LocaleSwitcher() {
- const t = useTranslations('LocaleSwitcher');
+ const t = useTranslations("LocaleSwitcher");
const locale = useLocale();
return (
-
+
{locales.map((cur) => (
- {t('locale', {locale: cur})}
+ {t("locale", { locale: cur })}
))}
);
-}
\ No newline at end of file
+}
diff --git a/src/components/LocaleSwitcherSelect.tsx b/src/components/LocaleSwitcherSelect.tsx
index 4500afe..fcf29a5 100644
--- a/src/components/LocaleSwitcherSelect.tsx
+++ b/src/components/LocaleSwitcherSelect.tsx
@@ -1,8 +1,8 @@
-'use client';
+"use client";
-import { useParams } from 'next/navigation';
-import { ChangeEvent, ReactNode, useTransition } from 'react';
-import { useRouter, usePathname } from '../navigation';
+import { useParams } from "next/navigation";
+import { ChangeEvent, ReactNode, useTransition } from "react";
+import { useRouter, usePathname } from "../navigation";
type Props = {
children: ReactNode;
@@ -13,7 +13,7 @@ type Props = {
export default function LocaleSwitcherSelect({
children,
defaultValue,
- label
+ label,
}: Props) {
const router = useRouter();
const [isPending, startTransition] = useTransition();
@@ -23,10 +23,7 @@ export default function LocaleSwitcherSelect({
function onSelectChange(event: ChangeEvent) {
const nextLocale = event.target.value as "en" | "pt";
startTransition(() => {
- router.replace(
- pathname,
- { locale: nextLocale }
- );
+ router.replace(pathname, { locale: nextLocale });
});
}
@@ -40,4 +37,4 @@ export default function LocaleSwitcherSelect({
{children}
);
-}
\ No newline at end of file
+}
diff --git a/src/components/MainContent.jsx b/src/components/MainContent.jsx
index 90a2115..3d46925 100644
--- a/src/components/MainContent.jsx
+++ b/src/components/MainContent.jsx
@@ -3,5 +3,5 @@ export default function MainContent({ children }) {
{children}
- )
-}
\ No newline at end of file
+ );
+}
diff --git a/src/components/Partners.jsx b/src/components/Partners.jsx
index 7a9a607..bbcb1c7 100644
--- a/src/components/Partners.jsx
+++ b/src/components/Partners.jsx
@@ -1,19 +1,17 @@
-import ContentBox from "../components/ContentBox"
-import ContentBoxTitle from "../components/ContentBoxTitle"
-import ContentBoxCarouselFourColumns from "../components/ContentBoxCarouselFourColumns"
-import ContentBoxPartner from "../components/ContentBoxPartner"
-import { useTranslations } from 'next-intl'
+import ContentBox from "../components/ContentBox";
+import ContentBoxTitle from "../components/ContentBoxTitle";
+import ContentBoxCarouselFourColumns from "../components/ContentBoxCarouselFourColumns";
+import ContentBoxPartner from "../components/ContentBoxPartner";
+import { useTranslations } from "next-intl";
export default function Partners() {
- const t = useTranslations('HomePage.Partners')
- return (
-
- {t('title')}
-
-
-
- )
-}
\ No newline at end of file
+ const t = useTranslations("HomePage.Partners");
+ return (
+
+ {t("title")}
+
+
+
+
+ );
+}
diff --git a/src/components/Projects.jsx b/src/components/Projects.jsx
index e101067..fe5fbc5 100644
--- a/src/components/Projects.jsx
+++ b/src/components/Projects.jsx
@@ -1,30 +1,30 @@
-import ContentBox from "../components/ContentBox"
-import ContentBoxTitle from "../components/ContentBoxTitle"
-import ContentBoxCarouselTwoColumns from "../components/ContentBoxCarouselTwoColumns"
-import ContentBoxProject from "../components/ContentBoxProject"
-import { useTranslations } from 'next-intl'
-
+import ContentBox from "../components/ContentBox";
+import ContentBoxTitle from "../components/ContentBoxTitle";
+import ContentBoxCarouselTwoColumns from "../components/ContentBoxCarouselTwoColumns";
+import ContentBoxProject from "../components/ContentBoxProject";
+import { useTranslations } from "next-intl";
export default function About() {
- const t = useTranslations('HomePage.Projects')
- return (
-
- {t('title')}
-
-
-
-
- )
-}
\ No newline at end of file
+ const t = useTranslations("HomePage.Projects");
+ return (
+
+ {t("title")}
+
+
+
+
+
+ );
+}
diff --git a/src/components/Team.jsx b/src/components/Team.jsx
index aa46714..4f4a15c 100644
--- a/src/components/Team.jsx
+++ b/src/components/Team.jsx
@@ -1,39 +1,40 @@
-import ContentBox from "../components/ContentBox"
-import ContentBoxTitle from "../components/ContentBoxTitle"
-import ContentBoxCarouselFourColumns from "../components/ContentBoxCarouselFourColumns"
-import ContentBoxTeamMember from "../components/ContentBoxTeamMember"
-import { useTranslations } from 'next-intl'
+import ContentBox from "../components/ContentBox";
+import ContentBoxTitle from "../components/ContentBoxTitle";
+import ContentBoxCarouselFourColumns from "../components/ContentBoxCarouselFourColumns";
+import ContentBoxTeamMember from "../components/ContentBoxTeamMember";
+import { useTranslations } from "next-intl";
export default function About() {
- const t = useTranslations('HomePage.Team')
- return (
-
- Team
-
-
-
-
-
-
- )
-}
\ No newline at end of file
+ const t = useTranslations("HomePage.Team");
+ return (
+
+ Team
+
+
+
+
+
+
+
+ );
+}
diff --git a/src/config.ts b/src/config.ts
index 07b8e79..d65dffa 100644
--- a/src/config.ts
+++ b/src/config.ts
@@ -1 +1 @@
-export const locales = ['en', 'pt'] as const;
\ No newline at end of file
+export const locales = ["en", "pt"] as const;
diff --git a/src/i18n.tsx b/src/i18n.tsx
index 412aea5..b4a8550 100644
--- a/src/i18n.tsx
+++ b/src/i18n.tsx
@@ -1,8 +1,8 @@
-import { notFound } from 'next/navigation';
-import { getRequestConfig } from 'next-intl/server';
+import { notFound } from "next/navigation";
+import { getRequestConfig } from "next-intl/server";
// Can be imported from a shared config
-const locales = ['en', 'pt'];
+const locales = ["en", "pt"];
export default getRequestConfig(async ({ locale }) => {
// Validate that the incoming `locale` parameter is valid
@@ -14,5 +14,5 @@ export default getRequestConfig(async ({ locale }) => {
// b: (chunks) => {chunks} ,
// nowrap: (chunks) => MIT 2023 © Nextra.,
- head: ({ title, meta }) => (
- <>
- {meta.description && (
-
- )}
- {meta.tag && }
- {meta.author && }
- >
- ),
- readMore: 'Read More →',
- postFooter: null,
- darkMode: false,
- navs: [
- {
- url: 'https://github.com/shuding/nextra',
- name: 'Nextra'
- }
- ],
- i18n: [
- { locale: 'en', text: 'English' },
- { locale: 'pt', text: 'Português' }
- ]
- }
\ No newline at end of file
+ footer: MIT 2023 © Nextra.
,
+ head: ({ title, meta }) => (
+ <>
+ {meta.description && (
+
+ )}
+ {meta.tag && }
+ {meta.author && }
+ >
+ ),
+ readMore: "Read More →",
+ postFooter: null,
+ darkMode: false,
+ navs: [
+ {
+ url: "https://github.com/shuding/nextra",
+ name: "Nextra",
+ },
+ ],
+ i18n: [
+ { locale: "en", text: "English" },
+ { locale: "pt", text: "Português" },
+ ],
+};
diff --git a/theme.tsx b/theme.tsx
index 73bcc49..af725f1 100644
--- a/theme.tsx
+++ b/theme.tsx
@@ -1,9 +1,9 @@
-import type { NextraThemeLayoutProps } from 'nextra'
-
+import type { NextraThemeLayoutProps } from "nextra";
+
export default function Layout({ children }: NextraThemeLayoutProps) {
return (
- )
-}
\ No newline at end of file
+ );
+}
diff --git a/tsconfig.json b/tsconfig.json
index bf52b7e..466147c 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -1,10 +1,6 @@
{
"compilerOptions": {
- "lib": [
- "dom",
- "dom.iterable",
- "esnext"
- ],
+ "lib": ["dom", "dom.iterable", "esnext"],
"allowJs": true,
"skipLibCheck": true,
"strict": false,
@@ -27,9 +23,8 @@
"next-env.d.ts",
".next/types/**/*.ts",
"**/*.ts",
- "**/*.tsx"
-, "pages/index.mdx" ],
- "exclude": [
- "node_modules"
- ]
+ "**/*.tsx",
+ "pages/index.mdx"
+ ],
+ "exclude": ["node_modules"]
}