mirror of
https://github.com/theoludwig/theoludwig.git
synced 2026-10-25 18:10:44 +01:00
refactor: components struture
This commit is contained in:
72 files changed
+122
-114
No files matched your search
@@ -13,7 +13,7 @@ const preview: Preview = {
|
|||||||
},
|
},
|
||||||
options: {
|
options: {
|
||||||
storySort: {
|
storySort: {
|
||||||
order: ["Design System", "User Interface", "Errors", "Feature"],
|
order: ["Design System", "Layout", "Errors"],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
backgrounds: { disable: true },
|
backgrounds: { disable: true },
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ RUN corepack enable
|
|||||||
WORKDIR /usr/src/app
|
WORKDIR /usr/src/app
|
||||||
|
|
||||||
FROM node-pnpm AS builder
|
FROM node-pnpm AS builder
|
||||||
RUN pnpm install --global turbo@2.0.9
|
RUN pnpm install --global turbo@2.0.10
|
||||||
COPY ./ ./
|
COPY ./ ./
|
||||||
RUN turbo prune @repo/website --docker
|
RUN turbo prune @repo/website --docker
|
||||||
|
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
import { getBlogPosts } from "@repo/blog"
|
import { getBlogPosts } from "@repo/blog"
|
||||||
import { BlogPosts } from "@repo/blog/BlogPosts"
|
import { BlogPosts } from "@repo/blog/BlogPosts"
|
||||||
import { LOCALE_DEFAULT, type LocaleProps } from "@repo/i18n/config"
|
import { LOCALE_DEFAULT, type LocaleProps } from "@repo/i18n/config"
|
||||||
|
import { MainLayout } from "@repo/ui/Layout/MainLayout"
|
||||||
import {
|
import {
|
||||||
Section,
|
Section,
|
||||||
SectionDescription,
|
SectionDescription,
|
||||||
SectionTitle,
|
SectionTitle,
|
||||||
} from "@repo/ui/design/Section"
|
} from "@repo/ui/Layout/Section"
|
||||||
import { MainLayout } from "@repo/ui/MainLayout"
|
|
||||||
import type { Metadata } from "next"
|
import type { Metadata } from "next"
|
||||||
import { unstable_setRequestLocale } from "next-intl/server"
|
import { unstable_setRequestLocale } from "next-intl/server"
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
import "@repo/config-tailwind/styles.css"
|
import "@repo/config-tailwind/styles.css"
|
||||||
import type { Locale, LocaleProps } from "@repo/i18n/config"
|
import type { Locale, LocaleProps } from "@repo/i18n/config"
|
||||||
import { LOCALES } from "@repo/i18n/config"
|
import { LOCALES } from "@repo/i18n/config"
|
||||||
import { Footer } from "@repo/ui/Footer"
|
import { Footer } from "@repo/ui/Layout/Footer"
|
||||||
import { Header } from "@repo/ui/Header"
|
import { Header } from "@repo/ui/Layout/Header"
|
||||||
import { ThemeProvider } from "@repo/ui/Header/SwitchTheme"
|
import { ThemeProvider } from "@repo/ui/Layout/Header/SwitchTheme"
|
||||||
import { VERSION } from "@repo/utils/constants"
|
import { VERSION } from "@repo/utils/constants"
|
||||||
import type { Metadata } from "next"
|
import type { Metadata } from "next"
|
||||||
import { NextIntlClientProvider } from "next-intl"
|
import { NextIntlClientProvider } from "next-intl"
|
||||||
|
|||||||
@@ -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 = () => {
|
const Loading: React.FC = () => {
|
||||||
return (
|
return (
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
import type { LocaleProps } from "@repo/i18n/config"
|
import type { LocaleProps } from "@repo/i18n/config"
|
||||||
import { About } from "@repo/ui/About"
|
import { About } from "@repo/ui/Home/About"
|
||||||
import { RevealFade } from "@repo/ui/design/Section"
|
import { Interests } from "@repo/ui/Home/Interests"
|
||||||
import { Interests } from "@repo/ui/Interests"
|
import { OpenSource } from "@repo/ui/Home/OpenSource"
|
||||||
import { MainLayout } from "@repo/ui/MainLayout"
|
import { Portfolio } from "@repo/ui/Home/Portfolio"
|
||||||
import { OpenSource } from "@repo/ui/OpenSource"
|
import { Skills } from "@repo/ui/Home/Skills"
|
||||||
import { Portfolio } from "@repo/ui/Portfolio"
|
import { MainLayout } from "@repo/ui/Layout/MainLayout"
|
||||||
import { Skills } from "@repo/ui/Skills"
|
import { RevealFade } from "@repo/ui/Layout/Section"
|
||||||
import { unstable_setRequestLocale } from "next-intl/server"
|
import { unstable_setRequestLocale } from "next-intl/server"
|
||||||
|
|
||||||
interface HomePageProps extends LocaleProps {}
|
interface HomePageProps extends LocaleProps {}
|
||||||
|
|||||||
@@ -14,6 +14,8 @@ export const config = {
|
|||||||
|
|
||||||
// Set a cookie to remember the previous locale for
|
// Set a cookie to remember the previous locale for
|
||||||
// all requests that have a locale prefix
|
// 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*",
|
"/(en-US|fr-FR)/:path*",
|
||||||
|
|
||||||
// Enable redirects that add missing locales
|
// Enable redirects that add missing locales
|
||||||
|
|||||||
+1
-1
@@ -33,7 +33,7 @@
|
|||||||
"markdownlint-rule-relative-links": "3.0.0",
|
"markdownlint-rule-relative-links": "3.0.0",
|
||||||
"replace-in-files-cli": "3.0.0",
|
"replace-in-files-cli": "3.0.0",
|
||||||
"semantic-release": "23.1.1",
|
"semantic-release": "23.1.1",
|
||||||
"turbo": "2.0.9",
|
"turbo": "2.0.10",
|
||||||
"typescript": "catalog:"
|
"typescript": "catalog:"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
"use client"
|
"use client"
|
||||||
|
|
||||||
import Giscus from "@giscus/react"
|
import Giscus from "@giscus/react"
|
||||||
import { useTheme } from "@repo/ui/Header/SwitchTheme"
|
import { useTheme } from "@repo/ui/Layout/Header/SwitchTheme"
|
||||||
|
|
||||||
interface BlogPostCommentsProps {}
|
interface BlogPostCommentsProps {}
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import { getISODate } from "@repo/utils/dates"
|
import { getISODate } from "@repo/utils/dates"
|
||||||
import "katex/dist/katex.min.css"
|
import "katex/dist/katex.min.css"
|
||||||
|
|
||||||
import { Typography } from "@repo/ui/design/Typography"
|
import { Typography } from "@repo/ui/Design/Typography"
|
||||||
import { MainLayout } from "@repo/ui/MainLayout"
|
import { MainLayout } from "@repo/ui/Layout/MainLayout"
|
||||||
import type { BlogPost } from "./BlogPost"
|
import type { BlogPost } from "./BlogPost"
|
||||||
import { BlogPostContent } from "./BlogPostContent"
|
import { BlogPostContent } from "./BlogPostContent"
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { Link } from "@repo/i18n/navigation"
|
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 { getISODate } from "@repo/utils/dates"
|
||||||
import type { BlogPost } from "./BlogPost"
|
import type { BlogPost } from "./BlogPost"
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import { BLOG_POST_MOCK } from "../BlogPost"
|
|||||||
import { BlogPostUI as BlogPostUIComponent } from "../BlogPostUI"
|
import { BlogPostUI as BlogPostUIComponent } from "../BlogPostUI"
|
||||||
|
|
||||||
const meta = {
|
const meta = {
|
||||||
title: "Feature/Blog/BlogPostUI",
|
title: "Blog/BlogPostUI",
|
||||||
component: BlogPostUIComponent,
|
component: BlogPostUIComponent,
|
||||||
} satisfies Meta<typeof BlogPostUIComponent>
|
} satisfies Meta<typeof BlogPostUIComponent>
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import { BLOG_POST_MOCK } from "../BlogPost"
|
|||||||
import { BlogPosts as BlogPostsComponent } from "../BlogPosts"
|
import { BlogPosts as BlogPostsComponent } from "../BlogPosts"
|
||||||
|
|
||||||
const meta = {
|
const meta = {
|
||||||
title: "Feature/Blog/BlogPosts",
|
title: "Blog/BlogPosts",
|
||||||
component: BlogPostsComponent,
|
component: BlogPostsComponent,
|
||||||
} satisfies Meta<typeof BlogPostsComponent>
|
} satisfies Meta<typeof BlogPostsComponent>
|
||||||
|
|
||||||
|
|||||||
+14
-14
@@ -4,22 +4,22 @@
|
|||||||
"private": true,
|
"private": true,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"exports": {
|
"exports": {
|
||||||
"./About": "./src/About/About.tsx",
|
"./Design/Button": "./src/Design/Button/Button.tsx",
|
||||||
"./design/Button": "./src/design/Button/Button.tsx",
|
"./Design/Link": "./src/Design/Link/Link.tsx",
|
||||||
"./design/Link": "./src/design/Link/Link.tsx",
|
"./Design/Spinner": "./src/Design/Spinner/Spinner.tsx",
|
||||||
"./design/Section": "./src/design/Section/Section.tsx",
|
"./Design/Typography": "./src/Design/Typography/Typography.tsx",
|
||||||
"./design/Spinner": "./src/design/Spinner/Spinner.tsx",
|
|
||||||
"./design/Typography": "./src/design/Typography/Typography.tsx",
|
|
||||||
"./Errors/ErrorNotFound": "./src/Errors/ErrorNotFound/ErrorNotFound.tsx",
|
"./Errors/ErrorNotFound": "./src/Errors/ErrorNotFound/ErrorNotFound.tsx",
|
||||||
"./Errors/ErrorServer": "./src/Errors/ErrorServer/ErrorServer.tsx",
|
"./Errors/ErrorServer": "./src/Errors/ErrorServer/ErrorServer.tsx",
|
||||||
"./Footer": "./src/Footer/Footer.tsx",
|
"./Home/About": "./src/Home/About/About.tsx",
|
||||||
"./Header": "./src/Header/Header.tsx",
|
"./Home/Interests": "./src/Home/Interests/Interests.tsx",
|
||||||
"./Interests": "./src/Interests/Interests.tsx",
|
"./Home/OpenSource": "./src/Home/OpenSource/OpenSource.tsx",
|
||||||
"./Header/SwitchTheme": "./src/Header/SwitchTheme.tsx",
|
"./Home/Portfolio": "./src/Home/Portfolio/Portfolio.tsx",
|
||||||
"./MainLayout": "./src/MainLayout/MainLayout.tsx",
|
"./Home/Skills": "./src/Home/Skills/Skills.tsx",
|
||||||
"./OpenSource": "./src/OpenSource/OpenSource.tsx",
|
"./Layout/Footer": "./src/Layout/Footer/Footer.tsx",
|
||||||
"./Portfolio": "./src/Portfolio/Portfolio.tsx",
|
"./Layout/Header": "./src/Layout/Header/Header.tsx",
|
||||||
"./Skills": "./src/Skills/Skills.tsx"
|
"./Layout/Header/SwitchTheme": "./src/Layout/Header/SwitchTheme.tsx",
|
||||||
|
"./Layout/MainLayout": "./src/Layout/MainLayout/MainLayout.tsx",
|
||||||
|
"./Layout/Section": "./src/Layout/Section/Section.tsx"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"lint:eslint": "eslint src --max-warnings 0 --report-unused-disable-directives",
|
"lint:eslint": "eslint src --max-warnings 0 --report-unused-disable-directives",
|
||||||
|
|||||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -1,8 +1,8 @@
|
|||||||
import { useTranslations } from "next-intl"
|
import { useTranslations } from "next-intl"
|
||||||
import { MainLayout } from "../../MainLayout/MainLayout"
|
import { Link } from "../../Design/Link/Link"
|
||||||
import { Link } from "../../design/Link/Link"
|
import { Typography } from "../../Design/Typography/Typography"
|
||||||
import { Section } from "../../design/Section/Section"
|
import { MainLayout } from "../../Layout/MainLayout/MainLayout"
|
||||||
import { Typography } from "../../design/Typography/Typography"
|
import { Section } from "../../Layout/Section/Section"
|
||||||
|
|
||||||
export interface ErrorNotFoundProps {}
|
export interface ErrorNotFoundProps {}
|
||||||
|
|
||||||
|
|||||||
@@ -2,10 +2,10 @@
|
|||||||
|
|
||||||
import { useTranslations } from "next-intl"
|
import { useTranslations } from "next-intl"
|
||||||
import { useEffect } from "react"
|
import { useEffect } from "react"
|
||||||
import { MainLayout } from "../../MainLayout/MainLayout"
|
import { Button } from "../../Design/Button/Button"
|
||||||
import { Button } from "../../design/Button/Button"
|
import { Typography } from "../../Design/Typography/Typography"
|
||||||
import { Section } from "../../design/Section/Section"
|
import { MainLayout } from "../../Layout/MainLayout/MainLayout"
|
||||||
import { Typography } from "../../design/Typography/Typography"
|
import { Section } from "../../Layout/Section/Section"
|
||||||
|
|
||||||
export interface ErrorServerProps {
|
export interface ErrorServerProps {
|
||||||
error: Error & { digest?: string }
|
error: Error & { digest?: string }
|
||||||
|
|||||||
+1
-1
@@ -3,7 +3,7 @@ import type { Meta, StoryObj } from "@storybook/react"
|
|||||||
import { About as AboutComponent } from "./About"
|
import { About as AboutComponent } from "./About"
|
||||||
|
|
||||||
const meta = {
|
const meta = {
|
||||||
title: "Feature/About",
|
title: "Home/About",
|
||||||
component: AboutComponent,
|
component: AboutComponent,
|
||||||
} satisfies Meta<typeof AboutComponent>
|
} satisfies Meta<typeof AboutComponent>
|
||||||
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
import { Section, SectionContent } from "../design/Section/Section"
|
import { Section, SectionContent } from "../../Layout/Section/Section"
|
||||||
import { AboutDescription } from "./AboutDescription"
|
import { AboutDescription } from "./AboutDescription"
|
||||||
import { AboutIntroduction } from "./AboutIntroduction"
|
import { AboutIntroduction } from "./AboutIntroduction"
|
||||||
import { AboutList } from "./AboutList/AboutList"
|
import { AboutList } from "./AboutList/AboutList"
|
||||||
+2
-2
@@ -1,6 +1,6 @@
|
|||||||
import { useTranslations } from "next-intl"
|
import { useTranslations } from "next-intl"
|
||||||
import { Button } from "../design/Button/Button"
|
import { Button } from "../../Design/Button/Button"
|
||||||
import { Typography } from "../design/Typography/Typography"
|
import { Typography } from "../../Design/Typography/Typography"
|
||||||
|
|
||||||
export interface AboutDescriptionProps {}
|
export interface AboutDescriptionProps {}
|
||||||
|
|
||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
import { useTranslations } from "next-intl"
|
import { useTranslations } from "next-intl"
|
||||||
import { Typography } from "../design/Typography/Typography"
|
import { Typography } from "../../Design/Typography/Typography"
|
||||||
|
|
||||||
export interface AboutIntroductionProps {}
|
export interface AboutIntroductionProps {}
|
||||||
|
|
||||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
import { Typography } from "../design/Typography/Typography"
|
import { Typography } from "../../Design/Typography/Typography"
|
||||||
|
|
||||||
export interface InterestItemProps {
|
export interface InterestItemProps {
|
||||||
title: string
|
title: string
|
||||||
+1
-1
@@ -3,7 +3,7 @@ import type { Meta, StoryObj } from "@storybook/react"
|
|||||||
import { Interests as InterestsComponent } from "./Interests"
|
import { Interests as InterestsComponent } from "./Interests"
|
||||||
|
|
||||||
const meta = {
|
const meta = {
|
||||||
title: "Feature/Interests",
|
title: "Home/Interests",
|
||||||
component: InterestsComponent,
|
component: InterestsComponent,
|
||||||
} satisfies Meta<typeof InterestsComponent>
|
} satisfies Meta<typeof InterestsComponent>
|
||||||
|
|
||||||
+2
-2
@@ -1,12 +1,12 @@
|
|||||||
import { GIT_REPO_LINK } from "@repo/utils/constants"
|
import { GIT_REPO_LINK } from "@repo/utils/constants"
|
||||||
import { useTranslations } from "next-intl"
|
import { useTranslations } from "next-intl"
|
||||||
import { FaGit, FaMicrochip } from "react-icons/fa"
|
import { FaGit, FaMicrochip } from "react-icons/fa"
|
||||||
import { Link } from "../design/Link/Link"
|
import { Link } from "../../Design/Link/Link"
|
||||||
import {
|
import {
|
||||||
Section,
|
Section,
|
||||||
SectionContent,
|
SectionContent,
|
||||||
SectionTitle,
|
SectionTitle,
|
||||||
} from "../design/Section/Section"
|
} from "../../Layout/Section/Section"
|
||||||
import { InterestItem } from "./InterestItem"
|
import { InterestItem } from "./InterestItem"
|
||||||
|
|
||||||
export interface InterestsProps {}
|
export interface InterestsProps {}
|
||||||
+1
-1
@@ -3,7 +3,7 @@ import type { Meta, StoryObj } from "@storybook/react"
|
|||||||
import { OpenSource as OpenSourceComponent } from "./OpenSource"
|
import { OpenSource as OpenSourceComponent } from "./OpenSource"
|
||||||
|
|
||||||
const meta = {
|
const meta = {
|
||||||
title: "Feature/OpenSource",
|
title: "Home/OpenSource",
|
||||||
component: OpenSourceComponent,
|
component: OpenSourceComponent,
|
||||||
} satisfies Meta<typeof OpenSourceComponent>
|
} satisfies Meta<typeof OpenSourceComponent>
|
||||||
|
|
||||||
+1
-1
@@ -3,7 +3,7 @@ import {
|
|||||||
Section,
|
Section,
|
||||||
SectionDescription,
|
SectionDescription,
|
||||||
SectionTitle,
|
SectionTitle,
|
||||||
} from "../design/Section/Section"
|
} from "../../Layout/Section/Section"
|
||||||
import { Repository } from "./Repository"
|
import { Repository } from "./Repository"
|
||||||
|
|
||||||
export interface OpenSourceProps {}
|
export interface OpenSourceProps {}
|
||||||
+2
-2
@@ -1,6 +1,6 @@
|
|||||||
|
import { Typography } from "../../Design/Typography/Typography"
|
||||||
|
import { SectionContent } from "../../Layout/Section/Section"
|
||||||
import { GitHubIcon } from "../About/SocialMediaList/SocialMediaIcons/GitHubIcon"
|
import { GitHubIcon } from "../About/SocialMediaList/SocialMediaIcons/GitHubIcon"
|
||||||
import { SectionContent } from "../design/Section/Section"
|
|
||||||
import { Typography } from "../design/Typography/Typography"
|
|
||||||
|
|
||||||
export interface RepositoryProps {
|
export interface RepositoryProps {
|
||||||
name: string
|
name: string
|
||||||
+1
-1
@@ -3,7 +3,7 @@ import type { Meta, StoryObj } from "@storybook/react"
|
|||||||
import { Portfolio as PortfolioComponent } from "./Portfolio"
|
import { Portfolio as PortfolioComponent } from "./Portfolio"
|
||||||
|
|
||||||
const meta = {
|
const meta = {
|
||||||
title: "Feature/Portfolio",
|
title: "Home/Portfolio",
|
||||||
component: PortfolioComponent,
|
component: PortfolioComponent,
|
||||||
} satisfies Meta<typeof PortfolioComponent>
|
} satisfies Meta<typeof PortfolioComponent>
|
||||||
|
|
||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
import { useTranslations } from "next-intl"
|
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"
|
import { PortfolioItem, type PortfolioProject } from "./PortfolioItem"
|
||||||
|
|
||||||
export interface PortfolioProps {}
|
export interface PortfolioProps {}
|
||||||
+2
-2
@@ -1,6 +1,6 @@
|
|||||||
import Image from "next/image"
|
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 {
|
export interface PortfolioProject {
|
||||||
id: string
|
id: string
|
||||||
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
import Image from "next/image"
|
import Image from "next/image"
|
||||||
import { useMemo } from "react"
|
import { useMemo } from "react"
|
||||||
import { Link } from "../design/Link/Link"
|
import { Link } from "../../Design/Link/Link"
|
||||||
import { useTheme } from "../Header/SwitchTheme"
|
import { useTheme } from "../../Layout/Header/SwitchTheme"
|
||||||
import type { SkillName } from "./skills"
|
import type { SkillName } from "./skills"
|
||||||
import { skills } from "./skills"
|
import { skills } from "./skills"
|
||||||
|
|
||||||
+1
-1
@@ -3,7 +3,7 @@ import type { Meta, StoryObj } from "@storybook/react"
|
|||||||
import { Skills as SkillsComponent } from "./Skills"
|
import { Skills as SkillsComponent } from "./Skills"
|
||||||
|
|
||||||
const meta = {
|
const meta = {
|
||||||
title: "Feature/Skills",
|
title: "Home/Skills",
|
||||||
component: SkillsComponent,
|
component: SkillsComponent,
|
||||||
} satisfies Meta<typeof SkillsComponent>
|
} satisfies Meta<typeof SkillsComponent>
|
||||||
|
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
import { useTranslations } from "next-intl"
|
import { useTranslations } from "next-intl"
|
||||||
import { Section, SectionTitle } from "../design/Section/Section"
|
import { Section, SectionTitle } from "../../Layout/Section/Section"
|
||||||
import { SkillItem } from "./SkillItem"
|
import { SkillItem } from "./SkillItem"
|
||||||
import { SkillsSection } from "./SkillsSection"
|
import { SkillsSection } from "./SkillsSection"
|
||||||
|
|
||||||
+2
-2
@@ -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 {
|
export interface SkillsSectionProps extends React.PropsWithChildren {
|
||||||
title: string
|
title: string
|
||||||
File renamed without changes.
+1
-1
@@ -3,7 +3,7 @@ import type { Meta, StoryObj } from "@storybook/react"
|
|||||||
import { Footer as FooterComponent } from "./Footer"
|
import { Footer as FooterComponent } from "./Footer"
|
||||||
|
|
||||||
const meta = {
|
const meta = {
|
||||||
title: "User Interface/Footer",
|
title: "Layout/Footer",
|
||||||
component: FooterComponent,
|
component: FooterComponent,
|
||||||
} satisfies Meta<typeof FooterComponent>
|
} satisfies Meta<typeof FooterComponent>
|
||||||
|
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
import { useTranslations } from "next-intl"
|
import { useTranslations } from "next-intl"
|
||||||
|
|
||||||
import { GIT_REPO_LINK } from "@repo/utils/constants"
|
import { GIT_REPO_LINK } from "@repo/utils/constants"
|
||||||
import { Link } from "../design/Link/Link"
|
import { Link } from "../../Design/Link/Link"
|
||||||
|
|
||||||
export interface FooterProps {
|
export interface FooterProps {
|
||||||
version: string
|
version: string
|
||||||
+1
-1
@@ -3,7 +3,7 @@ import type { Meta, StoryObj } from "@storybook/react"
|
|||||||
import { Header as HeaderComponent } from "./Header"
|
import { Header as HeaderComponent } from "./Header"
|
||||||
|
|
||||||
const meta = {
|
const meta = {
|
||||||
title: "User Interface/Header",
|
title: "Layout/Header",
|
||||||
component: HeaderComponent,
|
component: HeaderComponent,
|
||||||
} satisfies Meta<typeof HeaderComponent>
|
} satisfies Meta<typeof HeaderComponent>
|
||||||
|
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
import { useTranslations } from "next-intl"
|
import { useTranslations } from "next-intl"
|
||||||
import Image from "next/image"
|
import Image from "next/image"
|
||||||
import { Link } from "../design/Link/Link"
|
import { Link } from "../../Design/Link/Link"
|
||||||
import { Locales } from "./Locales/Locales"
|
import { Locales } from "./Locales/Locales"
|
||||||
import { SwitchTheme } from "./SwitchTheme"
|
import { SwitchTheme } from "./SwitchTheme"
|
||||||
|
|
||||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
+2
-2
@@ -1,6 +1,6 @@
|
|||||||
import { classNames } from "@repo/config-tailwind/classNames"
|
import { classNames } from "@repo/config-tailwind/classNames"
|
||||||
import type { TypographyProps } from "../Typography/Typography"
|
import type { TypographyProps } from "../../Design/Typography/Typography"
|
||||||
import { Typography } from "../Typography/Typography"
|
import { Typography } from "../../Design/Typography/Typography"
|
||||||
|
|
||||||
export * from "./RevealFade"
|
export * from "./RevealFade"
|
||||||
|
|
||||||
@@ -12,6 +12,7 @@ export const getISODate = (date: Date): string => {
|
|||||||
/**
|
/**
|
||||||
* Calculates the age of a person based on their birth date.
|
* Calculates the age of a person based on their birth date.
|
||||||
* @param birthDate
|
* @param birthDate
|
||||||
|
* @returns
|
||||||
*/
|
*/
|
||||||
export const getAge = (birthDate: Date): number => {
|
export const getAge = (birthDate: Date): number => {
|
||||||
const today = new Date()
|
const today = new Date()
|
||||||
|
|||||||
@@ -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 => {
|
export const capitalize = (string: string): string => {
|
||||||
return string.charAt(0).toUpperCase() + string.slice(1)
|
return string.charAt(0).toUpperCase() + string.slice(1)
|
||||||
}
|
}
|
||||||
Generated
+38
-38
@@ -246,8 +246,8 @@ importers:
|
|||||||
specifier: 23.1.1
|
specifier: 23.1.1
|
||||||
version: 23.1.1(typescript@5.5.4)
|
version: 23.1.1(typescript@5.5.4)
|
||||||
turbo:
|
turbo:
|
||||||
specifier: 2.0.9
|
specifier: 2.0.10
|
||||||
version: 2.0.9
|
version: 2.0.10
|
||||||
typescript:
|
typescript:
|
||||||
specifier: 'catalog:'
|
specifier: 'catalog:'
|
||||||
version: 5.5.4
|
version: 5.5.4
|
||||||
@@ -3624,8 +3624,8 @@ packages:
|
|||||||
resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==}
|
resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
|
|
||||||
caniuse-lite@1.0.30001644:
|
caniuse-lite@1.0.30001645:
|
||||||
resolution: {integrity: sha512-YGvlOZB4QhZuiis+ETS0VXR+MExbFf4fZYYeMTEE0aTQd/RdIjkTyZjLrbYVKnHzppDvnOhritRVv+i7Go6mHw==}
|
resolution: {integrity: sha512-GFtY2+qt91kzyMk6j48dJcwJVq5uTkk71XxE3RtScx7XWRLsO7bU44LOFkOZYR8w9YMS0UhPSYpN/6rAMImmLw==}
|
||||||
|
|
||||||
cardinal@2.1.1:
|
cardinal@2.1.1:
|
||||||
resolution: {integrity: sha512-JSr5eOgoEymtYHBjNWyjrMqet9Am2miJhlfKNdqLp6zoeAh0KN5dRAcxlecj5mAJrmQomgiOBj35xHLrFjqBpw==}
|
resolution: {integrity: sha512-JSr5eOgoEymtYHBjNWyjrMqet9Am2miJhlfKNdqLp6zoeAh0KN5dRAcxlecj5mAJrmQomgiOBj35xHLrFjqBpw==}
|
||||||
@@ -4269,8 +4269,8 @@ packages:
|
|||||||
ee-first@1.1.1:
|
ee-first@1.1.1:
|
||||||
resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
|
resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
|
||||||
|
|
||||||
electron-to-chromium@1.5.3:
|
electron-to-chromium@1.5.4:
|
||||||
resolution: {integrity: sha512-QNdYSS5i8D9axWp/6XIezRObRHqaav/ur9z1VzCDUCH1XIFOr9WQk5xmgunhsTpjjgDy3oLxO/WMOVZlpUQrlA==}
|
resolution: {integrity: sha512-orzA81VqLyIGUEA77YkVA1D+N+nNfl2isJVjjmOyrlxuooZ19ynb+dOlaDTqd/idKRS9lDCSBmtzM+kyCsMnkA==}
|
||||||
|
|
||||||
elliptic@6.5.6:
|
elliptic@6.5.6:
|
||||||
resolution: {integrity: sha512-mpzdtpeCLuS3BmE3pO3Cpp5bbjlOPY2Q0PgoF+Od1XZrHLYI28Xe3ossCmYCQt11FQKEYd9+PF8jymTvtWJSHQ==}
|
resolution: {integrity: sha512-mpzdtpeCLuS3BmE3pO3Cpp5bbjlOPY2Q0PgoF+Od1XZrHLYI28Xe3ossCmYCQt11FQKEYd9+PF8jymTvtWJSHQ==}
|
||||||
@@ -8111,38 +8111,38 @@ packages:
|
|||||||
tty-browserify@0.0.1:
|
tty-browserify@0.0.1:
|
||||||
resolution: {integrity: sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==}
|
resolution: {integrity: sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==}
|
||||||
|
|
||||||
turbo-darwin-64@2.0.9:
|
turbo-darwin-64@2.0.10:
|
||||||
resolution: {integrity: sha512-owlGsOaExuVGBUfrnJwjkL1BWlvefjSKczEAcpLx4BI7Oh6ttakOi+JyomkPkFlYElRpjbvlR2gP8WIn6M/+xQ==}
|
resolution: {integrity: sha512-ND4hohx0wrd0AUsCf2RsdavlzUWVi0JU3vX5Vn2+wk3GG5RcZWIKi3y+it9MjgYuqqlCystkDbeamfH05iiQBQ==}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [darwin]
|
os: [darwin]
|
||||||
|
|
||||||
turbo-darwin-arm64@2.0.9:
|
turbo-darwin-arm64@2.0.10:
|
||||||
resolution: {integrity: sha512-XAXkKkePth5ZPPE/9G9tTnPQx0C8UTkGWmNGYkpmGgRr8NedW+HrPsi9N0HcjzzIH9A4TpNYvtiV+WcwdaEjKA==}
|
resolution: {integrity: sha512-cvHMMi1jDiiVl5ls1nWwXyanH7mB+xD3oYyZOC3NzZdFAfce3CWpL6hgUnK2CFxbdvaHQTizkQEgsHvUeD9nTQ==}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [darwin]
|
os: [darwin]
|
||||||
|
|
||||||
turbo-linux-64@2.0.9:
|
turbo-linux-64@2.0.10:
|
||||||
resolution: {integrity: sha512-l9wSgEjrCFM1aG16zItBsZ206ZlhSSx1owB8Cgskfv0XyIXRGHRkluihiaxkp+UeU5WoEfz4EN5toc+ICA0q0w==}
|
resolution: {integrity: sha512-dPRwHrKkzyc/VuQLfhOeYLkBxA60vvLZyn9pXChRF0zyimg04OnhBYcKBNkfWMUU+Z1gQDFEvfyvnV9EEHLh0Q==}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
|
||||||
turbo-linux-arm64@2.0.9:
|
turbo-linux-arm64@2.0.10:
|
||||||
resolution: {integrity: sha512-gRnjxXRne18B27SwxXMqL3fJu7jw/8kBrOBTBNRSmZZiG1Uu3nbnP7b4lgrA/bCku6C0Wligwqurvtpq6+nFHA==}
|
resolution: {integrity: sha512-6qsYl+b1gf243QbL6cw+TbgUEWo6/krCCWDQjVg/8Znx45rkXnTJUqtIAMkQQsT+t7d3UU8hreQ77pjOW59LcQ==}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
|
||||||
turbo-windows-64@2.0.9:
|
turbo-windows-64@2.0.10:
|
||||||
resolution: {integrity: sha512-ZVo0apxUvaRq4Vm1qhsfqKKhtRgReYlBVf9MQvVU1O9AoyydEQvLDO1ryqpXDZWpcHoFxHAQc9msjAMtE5K2lA==}
|
resolution: {integrity: sha512-rkMOqvwN7hmMJNeChj63ZpLlIF6b9QC0jW/IbOMgcZMLcvz9iF+qCc2yaeDWgfOgLsNjhtv1rlhimShUuasSXw==}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [win32]
|
os: [win32]
|
||||||
|
|
||||||
turbo-windows-arm64@2.0.9:
|
turbo-windows-arm64@2.0.10:
|
||||||
resolution: {integrity: sha512-sGRz7c5Pey6y7y9OKi8ypbWNuIRPF9y8xcMqL56OZifSUSo+X2EOsOleR9MKxQXVaqHPGOUKWsE6y8hxBi9pag==}
|
resolution: {integrity: sha512-r7HQScx+CpO0p+Mw97Yq63uUAIwTfEUXRX6qxzeipBK+mTsnV1A6dTTYeVLD3S5AlL8GGdXddx0swyDeeVkQng==}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [win32]
|
os: [win32]
|
||||||
|
|
||||||
turbo@2.0.9:
|
turbo@2.0.10:
|
||||||
resolution: {integrity: sha512-QaLaUL1CqblSKKPgLrFW3lZWkWG4pGBQNW+q1ScJB5v1D/nFWtsrD/yZljW/bdawg90ihi4/ftQJ3h6fz1FamA==}
|
resolution: {integrity: sha512-1t10h9bWl94/zktjzVWwTerJL3kIMDSA8mfibr1bevGLjF0DsiHOJFkCQFa5QABK0eXb0Af5mdRehLRBVem0Qg==}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
tween-functions@1.2.0:
|
tween-functions@1.2.0:
|
||||||
@@ -12234,8 +12234,8 @@ snapshots:
|
|||||||
|
|
||||||
browserslist@4.23.2:
|
browserslist@4.23.2:
|
||||||
dependencies:
|
dependencies:
|
||||||
caniuse-lite: 1.0.30001644
|
caniuse-lite: 1.0.30001645
|
||||||
electron-to-chromium: 1.5.3
|
electron-to-chromium: 1.5.4
|
||||||
node-releases: 2.0.18
|
node-releases: 2.0.18
|
||||||
update-browserslist-db: 1.1.0(browserslist@4.23.2)
|
update-browserslist-db: 1.1.0(browserslist@4.23.2)
|
||||||
|
|
||||||
@@ -12297,7 +12297,7 @@ snapshots:
|
|||||||
|
|
||||||
camelcase@6.3.0: {}
|
camelcase@6.3.0: {}
|
||||||
|
|
||||||
caniuse-lite@1.0.30001644: {}
|
caniuse-lite@1.0.30001645: {}
|
||||||
|
|
||||||
cardinal@2.1.1:
|
cardinal@2.1.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -12932,7 +12932,7 @@ snapshots:
|
|||||||
|
|
||||||
ee-first@1.1.1: {}
|
ee-first@1.1.1: {}
|
||||||
|
|
||||||
electron-to-chromium@1.5.3: {}
|
electron-to-chromium@1.5.4: {}
|
||||||
|
|
||||||
elliptic@6.5.6:
|
elliptic@6.5.6:
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -16004,7 +16004,7 @@ snapshots:
|
|||||||
'@next/env': 14.2.5
|
'@next/env': 14.2.5
|
||||||
'@swc/helpers': 0.5.5
|
'@swc/helpers': 0.5.5
|
||||||
busboy: 1.6.0
|
busboy: 1.6.0
|
||||||
caniuse-lite: 1.0.30001644
|
caniuse-lite: 1.0.30001645
|
||||||
graceful-fs: 4.2.11
|
graceful-fs: 4.2.11
|
||||||
postcss: 8.4.31
|
postcss: 8.4.31
|
||||||
react: 18.3.1
|
react: 18.3.1
|
||||||
@@ -17907,32 +17907,32 @@ snapshots:
|
|||||||
|
|
||||||
tty-browserify@0.0.1: {}
|
tty-browserify@0.0.1: {}
|
||||||
|
|
||||||
turbo-darwin-64@2.0.9:
|
turbo-darwin-64@2.0.10:
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
turbo-darwin-arm64@2.0.9:
|
turbo-darwin-arm64@2.0.10:
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
turbo-linux-64@2.0.9:
|
turbo-linux-64@2.0.10:
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
turbo-linux-arm64@2.0.9:
|
turbo-linux-arm64@2.0.10:
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
turbo-windows-64@2.0.9:
|
turbo-windows-64@2.0.10:
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
turbo-windows-arm64@2.0.9:
|
turbo-windows-arm64@2.0.10:
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
turbo@2.0.9:
|
turbo@2.0.10:
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
turbo-darwin-64: 2.0.9
|
turbo-darwin-64: 2.0.10
|
||||||
turbo-darwin-arm64: 2.0.9
|
turbo-darwin-arm64: 2.0.10
|
||||||
turbo-linux-64: 2.0.9
|
turbo-linux-64: 2.0.10
|
||||||
turbo-linux-arm64: 2.0.9
|
turbo-linux-arm64: 2.0.10
|
||||||
turbo-windows-64: 2.0.9
|
turbo-windows-64: 2.0.10
|
||||||
turbo-windows-arm64: 2.0.9
|
turbo-windows-arm64: 2.0.10
|
||||||
|
|
||||||
tween-functions@1.2.0: {}
|
tween-functions@1.2.0: {}
|
||||||
|
|
||||||
|
|||||||
@@ -35,7 +35,6 @@ catalog:
|
|||||||
"typescript": "5.5.4"
|
"typescript": "5.5.4"
|
||||||
"@total-typescript/ts-reset": "0.5.1"
|
"@total-typescript/ts-reset": "0.5.1"
|
||||||
"@types/node": "22.0.0"
|
"@types/node": "22.0.0"
|
||||||
"tsx": "4.16.2"
|
|
||||||
|
|
||||||
# ESLint
|
# ESLint
|
||||||
"@typescript-eslint/eslint-plugin": "7.18.0"
|
"@typescript-eslint/eslint-plugin": "7.18.0"
|
||||||
|
|||||||
Reference in new issue
Block a user