From c8a42598bf5dd588ed563adab2cdafcb0cc72502 Mon Sep 17 00:00:00 2001 From: Sergey Elpashev Date: Thu, 23 Jan 2025 15:05:51 +0300 Subject: [PATCH] Feat: removed chakra --- .gitignore | 3 ++ bun.lockb | Bin 195447 -> 141057 bytes package.json | 3 -- src/app/blog/[slug]/page.tsx | 8 --- src/app/blog/page.tsx | 3 -- src/app/layout.tsx | 9 ++-- src/app/page.tsx | 15 ++---- src/app/providers.tsx | 5 -- src/components/ui/avatar.tsx | 74 -------------------------- src/components/ui/button.tsx | 33 ------------ src/components/ui/checkbox.tsx | 25 --------- src/components/ui/close-button.tsx | 17 ------ src/components/ui/color-mode.tsx | 75 -------------------------- src/components/ui/dialog.tsx | 62 ---------------------- src/components/ui/drawer.tsx | 52 ------------------ src/components/ui/field.tsx | 33 ------------ src/components/ui/input-group.tsx | 53 ------------------- src/components/ui/popover.tsx | 59 --------------------- src/components/ui/provider.tsx | 15 ------ src/components/ui/radio.tsx | 24 --------- src/components/ui/slider.tsx | 82 ----------------------------- src/components/ui/tooltip.tsx | 46 ---------------- 22 files changed, 11 insertions(+), 685 deletions(-) delete mode 100644 src/app/blog/[slug]/page.tsx delete mode 100644 src/app/blog/page.tsx delete mode 100644 src/app/providers.tsx delete mode 100644 src/components/ui/avatar.tsx delete mode 100644 src/components/ui/button.tsx delete mode 100644 src/components/ui/checkbox.tsx delete mode 100644 src/components/ui/close-button.tsx delete mode 100644 src/components/ui/color-mode.tsx delete mode 100644 src/components/ui/dialog.tsx delete mode 100644 src/components/ui/drawer.tsx delete mode 100644 src/components/ui/field.tsx delete mode 100644 src/components/ui/input-group.tsx delete mode 100644 src/components/ui/popover.tsx delete mode 100644 src/components/ui/provider.tsx delete mode 100644 src/components/ui/radio.tsx delete mode 100644 src/components/ui/slider.tsx delete mode 100644 src/components/ui/tooltip.tsx 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 3f7d49fe000ef0a0236373bcdd8c7fae061e3611..9d6bd60129d38f90f194c19038bc315a8be12f3c 100755 GIT binary patch delta 27812 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 delta 63844 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 }) { - 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 ( - - - - +
+

Test

+
); } 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} - - - - - ) - }, -)