1
1
mirror of https://github.com/theoludwig/theoludwig.git synced 2024-12-08 00:44:30 +01:00

Compare commits

...

2 Commits

73 changed files with 128 additions and 114 deletions

View File

@ -13,7 +13,7 @@ const preview: Preview = {
},
options: {
storySort: {
order: ["Design System", "User Interface", "Errors", "Feature"],
order: ["Design System", "Layout", "Errors"],
},
},
backgrounds: { disable: true },

View File

@ -5,7 +5,7 @@ RUN corepack enable
WORKDIR /usr/src/app
FROM node-pnpm AS builder
RUN pnpm install --global turbo@2.0.9
RUN pnpm install --global turbo@2.0.10
COPY ./ ./
RUN turbo prune @repo/website --docker

View File

@ -3,10 +3,13 @@ import { notFound } from "next/navigation"
import { getBlogPostBySlug, getBlogPosts } from "@repo/blog"
import { BlogPostUI } from "@repo/blog/BlogPostUI"
import type { Locale } from "@repo/i18n/config"
import { unstable_setRequestLocale } from "next-intl/server"
interface BlogPostPageProps {
params: {
slug: string
locale: Locale
}
}
@ -47,6 +50,9 @@ export const generateStaticParams = async (): Promise<
const BlogPostPage: React.FC<BlogPostPageProps> = async (props) => {
const { params } = props
// Enable static rendering
unstable_setRequestLocale(params.locale)
const blogPost = await getBlogPostBySlug(params.slug)
if (blogPost == null) {
return notFound()

View File

@ -1,12 +1,12 @@
import { getBlogPosts } from "@repo/blog"
import { BlogPosts } from "@repo/blog/BlogPosts"
import { LOCALE_DEFAULT, type LocaleProps } from "@repo/i18n/config"
import { MainLayout } from "@repo/ui/Layout/MainLayout"
import {
Section,
SectionDescription,
SectionTitle,
} from "@repo/ui/design/Section"
import { MainLayout } from "@repo/ui/MainLayout"
} from "@repo/ui/Layout/Section"
import type { Metadata } from "next"
import { unstable_setRequestLocale } from "next-intl/server"

View File

@ -1,9 +1,9 @@
import "@repo/config-tailwind/styles.css"
import type { Locale, LocaleProps } from "@repo/i18n/config"
import { LOCALES } from "@repo/i18n/config"
import { Footer } from "@repo/ui/Footer"
import { Header } from "@repo/ui/Header"
import { ThemeProvider } from "@repo/ui/Header/SwitchTheme"
import { Footer } from "@repo/ui/Layout/Footer"
import { Header } from "@repo/ui/Layout/Header"
import { ThemeProvider } from "@repo/ui/Layout/Header/SwitchTheme"
import { VERSION } from "@repo/utils/constants"
import type { Metadata } from "next"
import { NextIntlClientProvider } from "next-intl"

View File

@ -1,5 +1,5 @@
import { MainLayout } from "@repo/ui/MainLayout"
import { Spinner } from "@repo/ui/design/Spinner"
import { Spinner } from "@repo/ui/Design/Spinner"
import { MainLayout } from "@repo/ui/Layout/MainLayout"
const Loading: React.FC = () => {
return (

View File

@ -1,11 +1,11 @@
import type { LocaleProps } from "@repo/i18n/config"
import { About } from "@repo/ui/About"
import { RevealFade } from "@repo/ui/design/Section"
import { Interests } from "@repo/ui/Interests"
import { MainLayout } from "@repo/ui/MainLayout"
import { OpenSource } from "@repo/ui/OpenSource"
import { Portfolio } from "@repo/ui/Portfolio"
import { Skills } from "@repo/ui/Skills"
import { About } from "@repo/ui/Home/About"
import { Interests } from "@repo/ui/Home/Interests"
import { OpenSource } from "@repo/ui/Home/OpenSource"
import { Portfolio } from "@repo/ui/Home/Portfolio"
import { Skills } from "@repo/ui/Home/Skills"
import { MainLayout } from "@repo/ui/Layout/MainLayout"
import { RevealFade } from "@repo/ui/Layout/Section"
import { unstable_setRequestLocale } from "next-intl/server"
interface HomePageProps extends LocaleProps {}

View File

@ -14,6 +14,8 @@ export const config = {
// Set a cookie to remember the previous locale for
// all requests that have a locale prefix
// Next.js issue, middleware matcher should support template literals:
// https://github.com/vercel/next.js/issues/56398
"/(en-US|fr-FR)/:path*",
// Enable redirects that add missing locales

View File

@ -33,7 +33,7 @@
"markdownlint-rule-relative-links": "3.0.0",
"replace-in-files-cli": "3.0.0",
"semantic-release": "23.1.1",
"turbo": "2.0.9",
"turbo": "2.0.10",
"typescript": "catalog:"
}
}

View File

@ -1,7 +1,7 @@
"use client"
import Giscus from "@giscus/react"
import { useTheme } from "@repo/ui/Header/SwitchTheme"
import { useTheme } from "@repo/ui/Layout/Header/SwitchTheme"
interface BlogPostCommentsProps {}

View File

@ -1,8 +1,8 @@
import { getISODate } from "@repo/utils/dates"
import "katex/dist/katex.min.css"
import { Typography } from "@repo/ui/design/Typography"
import { MainLayout } from "@repo/ui/MainLayout"
import { Typography } from "@repo/ui/Design/Typography"
import { MainLayout } from "@repo/ui/Layout/MainLayout"
import type { BlogPost } from "./BlogPost"
import { BlogPostContent } from "./BlogPostContent"

View File

@ -1,6 +1,6 @@
import { Link } from "@repo/i18n/navigation"
import { Section, SectionContent } from "@repo/ui/design/Section"
import { Typography } from "@repo/ui/design/Typography"
import { Typography } from "@repo/ui/Design/Typography"
import { Section, SectionContent } from "@repo/ui/Layout/Section"
import { getISODate } from "@repo/utils/dates"
import type { BlogPost } from "./BlogPost"

View File

@ -4,7 +4,7 @@ import { BLOG_POST_MOCK } from "../BlogPost"
import { BlogPostUI as BlogPostUIComponent } from "../BlogPostUI"
const meta = {
title: "Feature/Blog/BlogPostUI",
title: "Blog/BlogPostUI",
component: BlogPostUIComponent,
} satisfies Meta<typeof BlogPostUIComponent>

View File

@ -4,7 +4,7 @@ import { BLOG_POST_MOCK } from "../BlogPost"
import { BlogPosts as BlogPostsComponent } from "../BlogPosts"
const meta = {
title: "Feature/Blog/BlogPosts",
title: "Blog/BlogPosts",
component: BlogPostsComponent,
} satisfies Meta<typeof BlogPostsComponent>

View File

@ -4,22 +4,22 @@
"private": true,
"type": "module",
"exports": {
"./About": "./src/About/About.tsx",
"./design/Button": "./src/design/Button/Button.tsx",
"./design/Link": "./src/design/Link/Link.tsx",
"./design/Section": "./src/design/Section/Section.tsx",
"./design/Spinner": "./src/design/Spinner/Spinner.tsx",
"./design/Typography": "./src/design/Typography/Typography.tsx",
"./Design/Button": "./src/Design/Button/Button.tsx",
"./Design/Link": "./src/Design/Link/Link.tsx",
"./Design/Spinner": "./src/Design/Spinner/Spinner.tsx",
"./Design/Typography": "./src/Design/Typography/Typography.tsx",
"./Errors/ErrorNotFound": "./src/Errors/ErrorNotFound/ErrorNotFound.tsx",
"./Errors/ErrorServer": "./src/Errors/ErrorServer/ErrorServer.tsx",
"./Footer": "./src/Footer/Footer.tsx",
"./Header": "./src/Header/Header.tsx",
"./Interests": "./src/Interests/Interests.tsx",
"./Header/SwitchTheme": "./src/Header/SwitchTheme.tsx",
"./MainLayout": "./src/MainLayout/MainLayout.tsx",
"./OpenSource": "./src/OpenSource/OpenSource.tsx",
"./Portfolio": "./src/Portfolio/Portfolio.tsx",
"./Skills": "./src/Skills/Skills.tsx"
"./Home/About": "./src/Home/About/About.tsx",
"./Home/Interests": "./src/Home/Interests/Interests.tsx",
"./Home/OpenSource": "./src/Home/OpenSource/OpenSource.tsx",
"./Home/Portfolio": "./src/Home/Portfolio/Portfolio.tsx",
"./Home/Skills": "./src/Home/Skills/Skills.tsx",
"./Layout/Footer": "./src/Layout/Footer/Footer.tsx",
"./Layout/Header": "./src/Layout/Header/Header.tsx",
"./Layout/Header/SwitchTheme": "./src/Layout/Header/SwitchTheme.tsx",
"./Layout/MainLayout": "./src/Layout/MainLayout/MainLayout.tsx",
"./Layout/Section": "./src/Layout/Section/Section.tsx"
},
"scripts": {
"lint:eslint": "eslint src --max-warnings 0 --report-unused-disable-directives",

View File

@ -1,8 +1,8 @@
import { useTranslations } from "next-intl"
import { MainLayout } from "../../MainLayout/MainLayout"
import { Link } from "../../design/Link/Link"
import { Section } from "../../design/Section/Section"
import { Typography } from "../../design/Typography/Typography"
import { Link } from "../../Design/Link/Link"
import { Typography } from "../../Design/Typography/Typography"
import { MainLayout } from "../../Layout/MainLayout/MainLayout"
import { Section } from "../../Layout/Section/Section"
export interface ErrorNotFoundProps {}

View File

@ -2,10 +2,10 @@
import { useTranslations } from "next-intl"
import { useEffect } from "react"
import { MainLayout } from "../../MainLayout/MainLayout"
import { Button } from "../../design/Button/Button"
import { Section } from "../../design/Section/Section"
import { Typography } from "../../design/Typography/Typography"
import { Button } from "../../Design/Button/Button"
import { Typography } from "../../Design/Typography/Typography"
import { MainLayout } from "../../Layout/MainLayout/MainLayout"
import { Section } from "../../Layout/Section/Section"
export interface ErrorServerProps {
error: Error & { digest?: string }

View File

@ -3,7 +3,7 @@ import type { Meta, StoryObj } from "@storybook/react"
import { About as AboutComponent } from "./About"
const meta = {
title: "Feature/About",
title: "Home/About",
component: AboutComponent,
} satisfies Meta<typeof AboutComponent>

View File

@ -1,4 +1,4 @@
import { Section, SectionContent } from "../design/Section/Section"
import { Section, SectionContent } from "../../Layout/Section/Section"
import { AboutDescription } from "./AboutDescription"
import { AboutIntroduction } from "./AboutIntroduction"
import { AboutList } from "./AboutList/AboutList"

View File

@ -1,6 +1,6 @@
import { useTranslations } from "next-intl"
import { Button } from "../design/Button/Button"
import { Typography } from "../design/Typography/Typography"
import { Button } from "../../Design/Button/Button"
import { Typography } from "../../Design/Typography/Typography"
export interface AboutDescriptionProps {}

View File

@ -1,5 +1,5 @@
import { useTranslations } from "next-intl"
import { Typography } from "../design/Typography/Typography"
import { Typography } from "../../Design/Typography/Typography"
export interface AboutIntroductionProps {}

View File

@ -1,4 +1,4 @@
import { Typography } from "../design/Typography/Typography"
import { Typography } from "../../Design/Typography/Typography"
export interface InterestItemProps {
title: string

View File

@ -3,7 +3,7 @@ import type { Meta, StoryObj } from "@storybook/react"
import { Interests as InterestsComponent } from "./Interests"
const meta = {
title: "Feature/Interests",
title: "Home/Interests",
component: InterestsComponent,
} satisfies Meta<typeof InterestsComponent>

View File

@ -1,12 +1,12 @@
import { GIT_REPO_LINK } from "@repo/utils/constants"
import { useTranslations } from "next-intl"
import { FaGit, FaMicrochip } from "react-icons/fa"
import { Link } from "../design/Link/Link"
import { Link } from "../../Design/Link/Link"
import {
Section,
SectionContent,
SectionTitle,
} from "../design/Section/Section"
} from "../../Layout/Section/Section"
import { InterestItem } from "./InterestItem"
export interface InterestsProps {}

View File

@ -3,7 +3,7 @@ import type { Meta, StoryObj } from "@storybook/react"
import { OpenSource as OpenSourceComponent } from "./OpenSource"
const meta = {
title: "Feature/OpenSource",
title: "Home/OpenSource",
component: OpenSourceComponent,
} satisfies Meta<typeof OpenSourceComponent>

View File

@ -3,7 +3,7 @@ import {
Section,
SectionDescription,
SectionTitle,
} from "../design/Section/Section"
} from "../../Layout/Section/Section"
import { Repository } from "./Repository"
export interface OpenSourceProps {}

View File

@ -1,6 +1,6 @@
import { Typography } from "../../Design/Typography/Typography"
import { SectionContent } from "../../Layout/Section/Section"
import { GitHubIcon } from "../About/SocialMediaList/SocialMediaIcons/GitHubIcon"
import { SectionContent } from "../design/Section/Section"
import { Typography } from "../design/Typography/Typography"
export interface RepositoryProps {
name: string

View File

@ -3,7 +3,7 @@ import type { Meta, StoryObj } from "@storybook/react"
import { Portfolio as PortfolioComponent } from "./Portfolio"
const meta = {
title: "Feature/Portfolio",
title: "Home/Portfolio",
component: PortfolioComponent,
} satisfies Meta<typeof PortfolioComponent>

View File

@ -1,5 +1,5 @@
import { useTranslations } from "next-intl"
import { Section, SectionTitle } from "../design/Section/Section"
import { Section, SectionTitle } from "../../Layout/Section/Section"
import { PortfolioItem, type PortfolioProject } from "./PortfolioItem"
export interface PortfolioProps {}

View File

@ -1,6 +1,6 @@
import Image from "next/image"
import { SectionContent } from "../design/Section/Section"
import { Typography } from "../design/Typography/Typography"
import { Typography } from "../../Design/Typography/Typography"
import { SectionContent } from "../../Layout/Section/Section"
export interface PortfolioProject {
id: string

View File

@ -2,8 +2,8 @@
import Image from "next/image"
import { useMemo } from "react"
import { Link } from "../design/Link/Link"
import { useTheme } from "../Header/SwitchTheme"
import { Link } from "../../Design/Link/Link"
import { useTheme } from "../../Layout/Header/SwitchTheme"
import type { SkillName } from "./skills"
import { skills } from "./skills"

View File

@ -3,7 +3,7 @@ import type { Meta, StoryObj } from "@storybook/react"
import { Skills as SkillsComponent } from "./Skills"
const meta = {
title: "Feature/Skills",
title: "Home/Skills",
component: SkillsComponent,
} satisfies Meta<typeof SkillsComponent>

View File

@ -1,5 +1,5 @@
import { useTranslations } from "next-intl"
import { Section, SectionTitle } from "../design/Section/Section"
import { Section, SectionTitle } from "../../Layout/Section/Section"
import { SkillItem } from "./SkillItem"
import { SkillsSection } from "./SkillsSection"

View File

@ -1,5 +1,5 @@
import { SectionContent } from "../design/Section/Section"
import { Typography } from "../design/Typography/Typography"
import { Typography } from "../../Design/Typography/Typography"
import { SectionContent } from "../../Layout/Section/Section"
export interface SkillsSectionProps extends React.PropsWithChildren {
title: string

View File

@ -3,7 +3,7 @@ import type { Meta, StoryObj } from "@storybook/react"
import { Footer as FooterComponent } from "./Footer"
const meta = {
title: "User Interface/Footer",
title: "Layout/Footer",
component: FooterComponent,
} satisfies Meta<typeof FooterComponent>

View File

@ -1,7 +1,7 @@
import { useTranslations } from "next-intl"
import { GIT_REPO_LINK } from "@repo/utils/constants"
import { Link } from "../design/Link/Link"
import { Link } from "../../Design/Link/Link"
export interface FooterProps {
version: string

View File

@ -3,7 +3,7 @@ import type { Meta, StoryObj } from "@storybook/react"
import { Header as HeaderComponent } from "./Header"
const meta = {
title: "User Interface/Header",
title: "Layout/Header",
component: HeaderComponent,
} satisfies Meta<typeof HeaderComponent>

View File

@ -1,6 +1,6 @@
import { useTranslations } from "next-intl"
import Image from "next/image"
import { Link } from "../design/Link/Link"
import { Link } from "../../Design/Link/Link"
import { Locales } from "./Locales/Locales"
import { SwitchTheme } from "./SwitchTheme"

View File

@ -1,6 +1,6 @@
import { classNames } from "@repo/config-tailwind/classNames"
import type { TypographyProps } from "../Typography/Typography"
import { Typography } from "../Typography/Typography"
import type { TypographyProps } from "../../Design/Typography/Typography"
import { Typography } from "../../Design/Typography/Typography"
export * from "./RevealFade"

View File

@ -12,6 +12,7 @@ export const getISODate = (date: Date): string => {
/**
* Calculates the age of a person based on their birth date.
* @param birthDate
* @returns
*/
export const getAge = (birthDate: Date): number => {
const today = new Date()

View File

@ -1,3 +1,9 @@
/**
* Capitalize the first letter of a string.
* @param string
* @returns
* @example capitalize("hello, world!") // "Hello, world!"
*/
export const capitalize = (string: string): string => {
return string.charAt(0).toUpperCase() + string.slice(1)
}

76
pnpm-lock.yaml generated
View File

@ -246,8 +246,8 @@ importers:
specifier: 23.1.1
version: 23.1.1(typescript@5.5.4)
turbo:
specifier: 2.0.9
version: 2.0.9
specifier: 2.0.10
version: 2.0.10
typescript:
specifier: 'catalog:'
version: 5.5.4
@ -3624,8 +3624,8 @@ packages:
resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==}
engines: {node: '>=10'}
caniuse-lite@1.0.30001644:
resolution: {integrity: sha512-YGvlOZB4QhZuiis+ETS0VXR+MExbFf4fZYYeMTEE0aTQd/RdIjkTyZjLrbYVKnHzppDvnOhritRVv+i7Go6mHw==}
caniuse-lite@1.0.30001645:
resolution: {integrity: sha512-GFtY2+qt91kzyMk6j48dJcwJVq5uTkk71XxE3RtScx7XWRLsO7bU44LOFkOZYR8w9YMS0UhPSYpN/6rAMImmLw==}
cardinal@2.1.1:
resolution: {integrity: sha512-JSr5eOgoEymtYHBjNWyjrMqet9Am2miJhlfKNdqLp6zoeAh0KN5dRAcxlecj5mAJrmQomgiOBj35xHLrFjqBpw==}
@ -4269,8 +4269,8 @@ packages:
ee-first@1.1.1:
resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
electron-to-chromium@1.5.3:
resolution: {integrity: sha512-QNdYSS5i8D9axWp/6XIezRObRHqaav/ur9z1VzCDUCH1XIFOr9WQk5xmgunhsTpjjgDy3oLxO/WMOVZlpUQrlA==}
electron-to-chromium@1.5.4:
resolution: {integrity: sha512-orzA81VqLyIGUEA77YkVA1D+N+nNfl2isJVjjmOyrlxuooZ19ynb+dOlaDTqd/idKRS9lDCSBmtzM+kyCsMnkA==}
elliptic@6.5.6:
resolution: {integrity: sha512-mpzdtpeCLuS3BmE3pO3Cpp5bbjlOPY2Q0PgoF+Od1XZrHLYI28Xe3ossCmYCQt11FQKEYd9+PF8jymTvtWJSHQ==}
@ -8111,38 +8111,38 @@ packages:
tty-browserify@0.0.1:
resolution: {integrity: sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==}
turbo-darwin-64@2.0.9:
resolution: {integrity: sha512-owlGsOaExuVGBUfrnJwjkL1BWlvefjSKczEAcpLx4BI7Oh6ttakOi+JyomkPkFlYElRpjbvlR2gP8WIn6M/+xQ==}
turbo-darwin-64@2.0.10:
resolution: {integrity: sha512-ND4hohx0wrd0AUsCf2RsdavlzUWVi0JU3vX5Vn2+wk3GG5RcZWIKi3y+it9MjgYuqqlCystkDbeamfH05iiQBQ==}
cpu: [x64]
os: [darwin]
turbo-darwin-arm64@2.0.9:
resolution: {integrity: sha512-XAXkKkePth5ZPPE/9G9tTnPQx0C8UTkGWmNGYkpmGgRr8NedW+HrPsi9N0HcjzzIH9A4TpNYvtiV+WcwdaEjKA==}
turbo-darwin-arm64@2.0.10:
resolution: {integrity: sha512-cvHMMi1jDiiVl5ls1nWwXyanH7mB+xD3oYyZOC3NzZdFAfce3CWpL6hgUnK2CFxbdvaHQTizkQEgsHvUeD9nTQ==}
cpu: [arm64]
os: [darwin]
turbo-linux-64@2.0.9:
resolution: {integrity: sha512-l9wSgEjrCFM1aG16zItBsZ206ZlhSSx1owB8Cgskfv0XyIXRGHRkluihiaxkp+UeU5WoEfz4EN5toc+ICA0q0w==}
turbo-linux-64@2.0.10:
resolution: {integrity: sha512-dPRwHrKkzyc/VuQLfhOeYLkBxA60vvLZyn9pXChRF0zyimg04OnhBYcKBNkfWMUU+Z1gQDFEvfyvnV9EEHLh0Q==}
cpu: [x64]
os: [linux]
turbo-linux-arm64@2.0.9:
resolution: {integrity: sha512-gRnjxXRne18B27SwxXMqL3fJu7jw/8kBrOBTBNRSmZZiG1Uu3nbnP7b4lgrA/bCku6C0Wligwqurvtpq6+nFHA==}
turbo-linux-arm64@2.0.10:
resolution: {integrity: sha512-6qsYl+b1gf243QbL6cw+TbgUEWo6/krCCWDQjVg/8Znx45rkXnTJUqtIAMkQQsT+t7d3UU8hreQ77pjOW59LcQ==}
cpu: [arm64]
os: [linux]
turbo-windows-64@2.0.9:
resolution: {integrity: sha512-ZVo0apxUvaRq4Vm1qhsfqKKhtRgReYlBVf9MQvVU1O9AoyydEQvLDO1ryqpXDZWpcHoFxHAQc9msjAMtE5K2lA==}
turbo-windows-64@2.0.10:
resolution: {integrity: sha512-rkMOqvwN7hmMJNeChj63ZpLlIF6b9QC0jW/IbOMgcZMLcvz9iF+qCc2yaeDWgfOgLsNjhtv1rlhimShUuasSXw==}
cpu: [x64]
os: [win32]
turbo-windows-arm64@2.0.9:
resolution: {integrity: sha512-sGRz7c5Pey6y7y9OKi8ypbWNuIRPF9y8xcMqL56OZifSUSo+X2EOsOleR9MKxQXVaqHPGOUKWsE6y8hxBi9pag==}
turbo-windows-arm64@2.0.10:
resolution: {integrity: sha512-r7HQScx+CpO0p+Mw97Yq63uUAIwTfEUXRX6qxzeipBK+mTsnV1A6dTTYeVLD3S5AlL8GGdXddx0swyDeeVkQng==}
cpu: [arm64]
os: [win32]
turbo@2.0.9:
resolution: {integrity: sha512-QaLaUL1CqblSKKPgLrFW3lZWkWG4pGBQNW+q1ScJB5v1D/nFWtsrD/yZljW/bdawg90ihi4/ftQJ3h6fz1FamA==}
turbo@2.0.10:
resolution: {integrity: sha512-1t10h9bWl94/zktjzVWwTerJL3kIMDSA8mfibr1bevGLjF0DsiHOJFkCQFa5QABK0eXb0Af5mdRehLRBVem0Qg==}
hasBin: true
tween-functions@1.2.0:
@ -12234,8 +12234,8 @@ snapshots:
browserslist@4.23.2:
dependencies:
caniuse-lite: 1.0.30001644
electron-to-chromium: 1.5.3
caniuse-lite: 1.0.30001645
electron-to-chromium: 1.5.4
node-releases: 2.0.18
update-browserslist-db: 1.1.0(browserslist@4.23.2)
@ -12297,7 +12297,7 @@ snapshots:
camelcase@6.3.0: {}
caniuse-lite@1.0.30001644: {}
caniuse-lite@1.0.30001645: {}
cardinal@2.1.1:
dependencies:
@ -12932,7 +12932,7 @@ snapshots:
ee-first@1.1.1: {}
electron-to-chromium@1.5.3: {}
electron-to-chromium@1.5.4: {}
elliptic@6.5.6:
dependencies:
@ -16004,7 +16004,7 @@ snapshots:
'@next/env': 14.2.5
'@swc/helpers': 0.5.5
busboy: 1.6.0
caniuse-lite: 1.0.30001644
caniuse-lite: 1.0.30001645
graceful-fs: 4.2.11
postcss: 8.4.31
react: 18.3.1
@ -17907,32 +17907,32 @@ snapshots:
tty-browserify@0.0.1: {}
turbo-darwin-64@2.0.9:
turbo-darwin-64@2.0.10:
optional: true
turbo-darwin-arm64@2.0.9:
turbo-darwin-arm64@2.0.10:
optional: true
turbo-linux-64@2.0.9:
turbo-linux-64@2.0.10:
optional: true
turbo-linux-arm64@2.0.9:
turbo-linux-arm64@2.0.10:
optional: true
turbo-windows-64@2.0.9:
turbo-windows-64@2.0.10:
optional: true
turbo-windows-arm64@2.0.9:
turbo-windows-arm64@2.0.10:
optional: true
turbo@2.0.9:
turbo@2.0.10:
optionalDependencies:
turbo-darwin-64: 2.0.9
turbo-darwin-arm64: 2.0.9
turbo-linux-64: 2.0.9
turbo-linux-arm64: 2.0.9
turbo-windows-64: 2.0.9
turbo-windows-arm64: 2.0.9
turbo-darwin-64: 2.0.10
turbo-darwin-arm64: 2.0.10
turbo-linux-64: 2.0.10
turbo-linux-arm64: 2.0.10
turbo-windows-64: 2.0.10
turbo-windows-arm64: 2.0.10
tween-functions@1.2.0: {}

View File

@ -35,7 +35,6 @@ catalog:
"typescript": "5.5.4"
"@total-typescript/ts-reset": "0.5.1"
"@types/node": "22.0.0"
"tsx": "4.16.2"
# ESLint
"@typescript-eslint/eslint-plugin": "7.18.0"