diff --git a/.gitignore b/.gitignore
index 5ef6a52..174f2a6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -39,3 +39,6 @@ yarn-error.log*
# typescript
*.tsbuildinfo
next-env.d.ts
+
+# repomix
+repomix-output.txt
\ No newline at end of file
diff --git a/bun.lockb b/bun.lockb
index 3f7d49f..9d6bd60 100755
Binary files a/bun.lockb and b/bun.lockb differ
diff --git a/package.json b/package.json
index 95e6c02..0443e8d 100644
--- a/package.json
+++ b/package.json
@@ -9,10 +9,7 @@
"lint": "next lint"
},
"dependencies": {
- "@chakra-ui/react": "^3.4.0",
- "@emotion/react": "^11.14.0",
"next": "15.1.5",
- "next-themes": "^0.4.4",
"react": "^19.0.0",
"react-dom": "^19.0.0",
"react-icons": "^5.4.0"
diff --git a/src/app/blog/[slug]/page.tsx b/src/app/blog/[slug]/page.tsx
deleted file mode 100644
index eea974c..0000000
--- a/src/app/blog/[slug]/page.tsx
+++ /dev/null
@@ -1,8 +0,0 @@
-export default async function Post({ params }: { params: Promise<{ slug: string }> }) {
- const { slug } = await params;
- return (
-
-
Post: {slug}
-
- );
-}
diff --git a/src/app/blog/page.tsx b/src/app/blog/page.tsx
deleted file mode 100644
index e10b7e9..0000000
--- a/src/app/blog/page.tsx
+++ /dev/null
@@ -1,3 +0,0 @@
-export default function Blog() {
- return Blog
;
-}
diff --git a/src/app/layout.tsx b/src/app/layout.tsx
index f23d32f..aca5046 100644
--- a/src/app/layout.tsx
+++ b/src/app/layout.tsx
@@ -1,7 +1,6 @@
import type { Metadata } from "next";
import { Geist, Geist_Mono } from "next/font/google";
import "./globals.scss";
-import Providers from "./providers";
const geistSans = Geist({
variable: "--font-geist-sans",
@@ -25,9 +24,11 @@ export default function RootLayout({
}>) {
return (
-
- {children}
-
+
+
+
+
+ {children}
);
}
diff --git a/src/app/page.tsx b/src/app/page.tsx
index 5b1fdc6..f0615e9 100644
--- a/src/app/page.tsx
+++ b/src/app/page.tsx
@@ -1,18 +1,9 @@
"use client";
-import { Button } from "@/components/ui/button";
-import { useColorMode, useColorModeValue } from "@/components/ui/color-mode";
-import { VStack } from "@chakra-ui/react";
-
export default function Home() {
- const { toggleColorMode } = useColorMode();
- const color = useColorModeValue("red", "blue");
return (
-
-
-
-
+
);
}
diff --git a/src/app/providers.tsx b/src/app/providers.tsx
deleted file mode 100644
index fdc2ba0..0000000
--- a/src/app/providers.tsx
+++ /dev/null
@@ -1,5 +0,0 @@
-import { Provider } from "@/components/ui/provider";
-
-export default function Providers(props: React.PropsWithChildren) {
- return {props.children};
-}
diff --git a/src/components/ui/avatar.tsx b/src/components/ui/avatar.tsx
deleted file mode 100644
index cd84664..0000000
--- a/src/components/ui/avatar.tsx
+++ /dev/null
@@ -1,74 +0,0 @@
-"use client"
-
-import type { GroupProps, SlotRecipeProps } from "@chakra-ui/react"
-import { Avatar as ChakraAvatar, Group } from "@chakra-ui/react"
-import * as React from "react"
-
-type ImageProps = React.ImgHTMLAttributes
-
-export interface AvatarProps extends ChakraAvatar.RootProps {
- name?: string
- src?: string
- srcSet?: string
- loading?: ImageProps["loading"]
- icon?: React.ReactElement
- fallback?: React.ReactNode
-}
-
-export const Avatar = React.forwardRef(
- function Avatar(props, ref) {
- const { name, src, srcSet, loading, icon, fallback, children, ...rest } =
- props
- return (
-
-
- {fallback}
-
-
- {children}
-
- )
- },
-)
-
-interface AvatarFallbackProps extends ChakraAvatar.FallbackProps {
- name?: string
- icon?: React.ReactElement
-}
-
-const AvatarFallback = React.forwardRef(
- function AvatarFallback(props, ref) {
- const { name, icon, children, ...rest } = props
- return (
-
- {children}
- {name != null && children == null && <>{getInitials(name)}>}
- {name == null && children == null && (
- {icon}
- )}
-
- )
- },
-)
-
-function getInitials(name: string) {
- const names = name.trim().split(" ")
- const firstName = names[0] != null ? names[0] : ""
- const lastName = names.length > 1 ? names[names.length - 1] : ""
- return firstName && lastName
- ? `${firstName.charAt(0)}${lastName.charAt(0)}`
- : firstName.charAt(0)
-}
-
-interface AvatarGroupProps extends GroupProps, SlotRecipeProps<"avatar"> {}
-
-export const AvatarGroup = React.forwardRef(
- function AvatarGroup(props, ref) {
- const { size, variant, borderless, ...rest } = props
- return (
-
-
-
- )
- },
-)
diff --git a/src/components/ui/button.tsx b/src/components/ui/button.tsx
deleted file mode 100644
index f8d4edb..0000000
--- a/src/components/ui/button.tsx
+++ /dev/null
@@ -1,33 +0,0 @@
-import type { ButtonProps as ChakraButtonProps } from "@chakra-ui/react";
-import { AbsoluteCenter, Button as ChakraButton, Span, Spinner } from "@chakra-ui/react";
-import * as React from "react";
-
-interface ButtonLoadingProps {
- loading?: boolean;
- loadingText?: React.ReactNode;
-}
-
-export interface ButtonProps extends ChakraButtonProps, ButtonLoadingProps {}
-
-export const Button = React.forwardRef(function Button(props, ref) {
- const { loading, disabled, loadingText, children, ...rest } = props;
- return (
-
- {loading && !loadingText ? (
- <>
-
-
-
- {children}
- >
- ) : loading && loadingText ? (
- <>
-
- {loadingText}
- >
- ) : (
- children
- )}
-
- );
-});
diff --git a/src/components/ui/checkbox.tsx b/src/components/ui/checkbox.tsx
deleted file mode 100644
index 2a27c2f..0000000
--- a/src/components/ui/checkbox.tsx
+++ /dev/null
@@ -1,25 +0,0 @@
-import { Checkbox as ChakraCheckbox } from "@chakra-ui/react"
-import * as React from "react"
-
-export interface CheckboxProps extends ChakraCheckbox.RootProps {
- icon?: React.ReactNode
- inputProps?: React.InputHTMLAttributes
- rootRef?: React.Ref
-}
-
-export const Checkbox = React.forwardRef(
- function Checkbox(props, ref) {
- const { icon, children, inputProps, rootRef, ...rest } = props
- return (
-
-
-
- {icon || }
-
- {children != null && (
- {children}
- )}
-
- )
- },
-)
diff --git a/src/components/ui/close-button.tsx b/src/components/ui/close-button.tsx
deleted file mode 100644
index 94af488..0000000
--- a/src/components/ui/close-button.tsx
+++ /dev/null
@@ -1,17 +0,0 @@
-import type { ButtonProps } from "@chakra-ui/react"
-import { IconButton as ChakraIconButton } from "@chakra-ui/react"
-import * as React from "react"
-import { LuX } from "react-icons/lu"
-
-export type CloseButtonProps = ButtonProps
-
-export const CloseButton = React.forwardRef<
- HTMLButtonElement,
- CloseButtonProps
->(function CloseButton(props, ref) {
- return (
-
- {props.children ?? }
-
- )
-})
diff --git a/src/components/ui/color-mode.tsx b/src/components/ui/color-mode.tsx
deleted file mode 100644
index 8490e12..0000000
--- a/src/components/ui/color-mode.tsx
+++ /dev/null
@@ -1,75 +0,0 @@
-"use client";
-
-import type { IconButtonProps } from "@chakra-ui/react";
-import { ClientOnly, IconButton, Skeleton } from "@chakra-ui/react";
-import type { ThemeProviderProps } from "next-themes";
-import { ThemeProvider, useTheme } from "next-themes";
-import * as React from "react";
-import { LuMoon, LuSun } from "react-icons/lu";
-
-// eslint-disable-next-line @typescript-eslint/no-empty-object-type
-export interface ColorModeProviderProps extends ThemeProviderProps {}
-
-export function ColorModeProvider(props: ColorModeProviderProps) {
- return ;
-}
-
-export type ColorMode = "light" | "dark";
-
-export interface UseColorModeReturn {
- colorMode: ColorMode;
- setColorMode: (colorMode: ColorMode) => void;
- toggleColorMode: () => void;
-}
-
-export function useColorMode(): UseColorModeReturn {
- const { resolvedTheme, setTheme } = useTheme();
- const toggleColorMode = () => {
- setTheme(resolvedTheme === "light" ? "dark" : "light");
- };
- return {
- colorMode: resolvedTheme as ColorMode,
- setColorMode: setTheme,
- toggleColorMode,
- };
-}
-
-export function useColorModeValue(light: T, dark: T) {
- const { colorMode } = useColorMode();
- return colorMode === "dark" ? dark : light;
-}
-
-export function ColorModeIcon() {
- const { colorMode } = useColorMode();
- return colorMode === "dark" ? : ;
-}
-
-// eslint-disable-next-line @typescript-eslint/no-empty-object-type
-interface ColorModeButtonProps extends Omit {}
-
-export const ColorModeButton = React.forwardRef(function ColorModeButton(
- props,
- ref,
-) {
- const { toggleColorMode } = useColorMode();
- return (
- }>
-
-
-
-
- );
-});
diff --git a/src/components/ui/dialog.tsx b/src/components/ui/dialog.tsx
deleted file mode 100644
index 89d68a5..0000000
--- a/src/components/ui/dialog.tsx
+++ /dev/null
@@ -1,62 +0,0 @@
-import { Dialog as ChakraDialog, Portal } from "@chakra-ui/react"
-import { CloseButton } from "./close-button"
-import * as React from "react"
-
-interface DialogContentProps extends ChakraDialog.ContentProps {
- portalled?: boolean
- portalRef?: React.RefObject
- backdrop?: boolean
-}
-
-export const DialogContent = React.forwardRef<
- HTMLDivElement,
- DialogContentProps
->(function DialogContent(props, ref) {
- const {
- children,
- portalled = true,
- portalRef,
- backdrop = true,
- ...rest
- } = props
-
- return (
-
- {backdrop && }
-
-
- {children}
-
-
-
- )
-})
-
-export const DialogCloseTrigger = React.forwardRef<
- HTMLButtonElement,
- ChakraDialog.CloseTriggerProps
->(function DialogCloseTrigger(props, ref) {
- return (
-
-
- {props.children}
-
-
- )
-})
-
-export const DialogRoot = ChakraDialog.Root
-export const DialogFooter = ChakraDialog.Footer
-export const DialogHeader = ChakraDialog.Header
-export const DialogBody = ChakraDialog.Body
-export const DialogBackdrop = ChakraDialog.Backdrop
-export const DialogTitle = ChakraDialog.Title
-export const DialogDescription = ChakraDialog.Description
-export const DialogTrigger = ChakraDialog.Trigger
-export const DialogActionTrigger = ChakraDialog.ActionTrigger
diff --git a/src/components/ui/drawer.tsx b/src/components/ui/drawer.tsx
deleted file mode 100644
index ccb96c8..0000000
--- a/src/components/ui/drawer.tsx
+++ /dev/null
@@ -1,52 +0,0 @@
-import { Drawer as ChakraDrawer, Portal } from "@chakra-ui/react"
-import { CloseButton } from "./close-button"
-import * as React from "react"
-
-interface DrawerContentProps extends ChakraDrawer.ContentProps {
- portalled?: boolean
- portalRef?: React.RefObject
- offset?: ChakraDrawer.ContentProps["padding"]
-}
-
-export const DrawerContent = React.forwardRef<
- HTMLDivElement,
- DrawerContentProps
->(function DrawerContent(props, ref) {
- const { children, portalled = true, portalRef, offset, ...rest } = props
- return (
-
-
-
- {children}
-
-
-
- )
-})
-
-export const DrawerCloseTrigger = React.forwardRef<
- HTMLButtonElement,
- ChakraDrawer.CloseTriggerProps
->(function DrawerCloseTrigger(props, ref) {
- return (
-
-
-
- )
-})
-
-export const DrawerTrigger = ChakraDrawer.Trigger
-export const DrawerRoot = ChakraDrawer.Root
-export const DrawerFooter = ChakraDrawer.Footer
-export const DrawerHeader = ChakraDrawer.Header
-export const DrawerBody = ChakraDrawer.Body
-export const DrawerBackdrop = ChakraDrawer.Backdrop
-export const DrawerDescription = ChakraDrawer.Description
-export const DrawerTitle = ChakraDrawer.Title
-export const DrawerActionTrigger = ChakraDrawer.ActionTrigger
diff --git a/src/components/ui/field.tsx b/src/components/ui/field.tsx
deleted file mode 100644
index dd3b66f..0000000
--- a/src/components/ui/field.tsx
+++ /dev/null
@@ -1,33 +0,0 @@
-import { Field as ChakraField } from "@chakra-ui/react"
-import * as React from "react"
-
-export interface FieldProps extends Omit {
- label?: React.ReactNode
- helperText?: React.ReactNode
- errorText?: React.ReactNode
- optionalText?: React.ReactNode
-}
-
-export const Field = React.forwardRef(
- function Field(props, ref) {
- const { label, children, helperText, errorText, optionalText, ...rest } =
- props
- return (
-
- {label && (
-
- {label}
-
-
- )}
- {children}
- {helperText && (
- {helperText}
- )}
- {errorText && (
- {errorText}
- )}
-
- )
- },
-)
diff --git a/src/components/ui/input-group.tsx b/src/components/ui/input-group.tsx
deleted file mode 100644
index 5d8fb32..0000000
--- a/src/components/ui/input-group.tsx
+++ /dev/null
@@ -1,53 +0,0 @@
-import type { BoxProps, InputElementProps } from "@chakra-ui/react"
-import { Group, InputElement } from "@chakra-ui/react"
-import * as React from "react"
-
-export interface InputGroupProps extends BoxProps {
- startElementProps?: InputElementProps
- endElementProps?: InputElementProps
- startElement?: React.ReactNode
- endElement?: React.ReactNode
- children: React.ReactElement
- startOffset?: InputElementProps["paddingStart"]
- endOffset?: InputElementProps["paddingEnd"]
-}
-
-export const InputGroup = React.forwardRef(
- function InputGroup(props, ref) {
- const {
- startElement,
- startElementProps,
- endElement,
- endElementProps,
- children,
- startOffset = "6px",
- endOffset = "6px",
- ...rest
- } = props
-
- const child =
- React.Children.only>(children)
-
- return (
-
- {startElement && (
-
- {startElement}
-
- )}
- {React.cloneElement(child, {
- ...(startElement && {
- ps: `calc(var(--input-height) - ${startOffset})`,
- }),
- ...(endElement && { pe: `calc(var(--input-height) - ${endOffset})` }),
- ...children.props,
- })}
- {endElement && (
-
- {endElement}
-
- )}
-
- )
- },
-)
diff --git a/src/components/ui/popover.tsx b/src/components/ui/popover.tsx
deleted file mode 100644
index 3320659..0000000
--- a/src/components/ui/popover.tsx
+++ /dev/null
@@ -1,59 +0,0 @@
-import { Popover as ChakraPopover, Portal } from "@chakra-ui/react"
-import { CloseButton } from "./close-button"
-import * as React from "react"
-
-interface PopoverContentProps extends ChakraPopover.ContentProps {
- portalled?: boolean
- portalRef?: React.RefObject
-}
-
-export const PopoverContent = React.forwardRef<
- HTMLDivElement,
- PopoverContentProps
->(function PopoverContent(props, ref) {
- const { portalled = true, portalRef, ...rest } = props
- return (
-
-
-
-
-
- )
-})
-
-export const PopoverArrow = React.forwardRef<
- HTMLDivElement,
- ChakraPopover.ArrowProps
->(function PopoverArrow(props, ref) {
- return (
-
-
-
- )
-})
-
-export const PopoverCloseTrigger = React.forwardRef<
- HTMLButtonElement,
- ChakraPopover.CloseTriggerProps
->(function PopoverCloseTrigger(props, ref) {
- return (
-
-
-
- )
-})
-
-export const PopoverTitle = ChakraPopover.Title
-export const PopoverDescription = ChakraPopover.Description
-export const PopoverFooter = ChakraPopover.Footer
-export const PopoverHeader = ChakraPopover.Header
-export const PopoverRoot = ChakraPopover.Root
-export const PopoverBody = ChakraPopover.Body
-export const PopoverTrigger = ChakraPopover.Trigger
diff --git a/src/components/ui/provider.tsx b/src/components/ui/provider.tsx
deleted file mode 100644
index fd0331b..0000000
--- a/src/components/ui/provider.tsx
+++ /dev/null
@@ -1,15 +0,0 @@
-"use client"
-
-import { ChakraProvider, defaultSystem } from "@chakra-ui/react"
-import {
- ColorModeProvider,
- type ColorModeProviderProps,
-} from "./color-mode"
-
-export function Provider(props: ColorModeProviderProps) {
- return (
-
-
-
- )
-}
diff --git a/src/components/ui/radio.tsx b/src/components/ui/radio.tsx
deleted file mode 100644
index b3919d0..0000000
--- a/src/components/ui/radio.tsx
+++ /dev/null
@@ -1,24 +0,0 @@
-import { RadioGroup as ChakraRadioGroup } from "@chakra-ui/react"
-import * as React from "react"
-
-export interface RadioProps extends ChakraRadioGroup.ItemProps {
- rootRef?: React.Ref
- inputProps?: React.InputHTMLAttributes
-}
-
-export const Radio = React.forwardRef(
- function Radio(props, ref) {
- const { children, inputProps, rootRef, ...rest } = props
- return (
-
-
-
- {children && (
- {children}
- )}
-
- )
- },
-)
-
-export const RadioGroup = ChakraRadioGroup.Root
diff --git a/src/components/ui/slider.tsx b/src/components/ui/slider.tsx
deleted file mode 100644
index 55a7283..0000000
--- a/src/components/ui/slider.tsx
+++ /dev/null
@@ -1,82 +0,0 @@
-import { Slider as ChakraSlider, For, HStack } from "@chakra-ui/react"
-import * as React from "react"
-
-export interface SliderProps extends ChakraSlider.RootProps {
- marks?: Array
- label?: React.ReactNode
- showValue?: boolean
-}
-
-export const Slider = React.forwardRef(
- function Slider(props, ref) {
- const { marks: marksProp, label, showValue, ...rest } = props
- const value = props.defaultValue ?? props.value
-
- const marks = marksProp?.map((mark) => {
- if (typeof mark === "number") return { value: mark, label: undefined }
- return mark
- })
-
- const hasMarkLabel = !!marks?.some((mark) => mark.label)
-
- return (
-
- {label && !showValue && (
- {label}
- )}
- {label && showValue && (
-
- {label}
-
-
- )}
-
-
-
-
-
-
-
-
- )
- },
-)
-
-function SliderThumbs(props: { value?: number[] }) {
- const { value } = props
- return (
-
- {(_, index) => (
-
-
-
- )}
-
- )
-}
-
-interface SliderMarksProps {
- marks?: Array
-}
-
-const SliderMarks = React.forwardRef(
- function SliderMarks(props, ref) {
- const { marks } = props
- if (!marks?.length) return null
-
- return (
-
- {marks.map((mark, index) => {
- const value = typeof mark === "number" ? mark : mark.value
- const label = typeof mark === "number" ? undefined : mark.label
- return (
-
-
- {label}
-
- )
- })}
-
- )
- },
-)
diff --git a/src/components/ui/tooltip.tsx b/src/components/ui/tooltip.tsx
deleted file mode 100644
index 43a8a6c..0000000
--- a/src/components/ui/tooltip.tsx
+++ /dev/null
@@ -1,46 +0,0 @@
-import { Tooltip as ChakraTooltip, Portal } from "@chakra-ui/react"
-import * as React from "react"
-
-export interface TooltipProps extends ChakraTooltip.RootProps {
- showArrow?: boolean
- portalled?: boolean
- portalRef?: React.RefObject
- content: React.ReactNode
- contentProps?: ChakraTooltip.ContentProps
- disabled?: boolean
-}
-
-export const Tooltip = React.forwardRef(
- function Tooltip(props, ref) {
- const {
- showArrow,
- children,
- disabled,
- portalled = true,
- content,
- contentProps,
- portalRef,
- ...rest
- } = props
-
- if (disabled) return children
-
- return (
-
- {children}
-
-
-
- {showArrow && (
-
-
-
- )}
- {content}
-
-
-
-
- )
- },
-)