diff --git a/messages/en.json b/messages/en.json index 2036073..706ce6a 100644 --- a/messages/en.json +++ b/messages/en.json @@ -30,7 +30,7 @@ "aboutAplo": "ABOUT APLO", "joinCommunity": "JOIN COMMUNITY", "chooseWallet": "Choose a Wallet", - "walletDescription": "To use Aplo, the first thing you are going to need is a wallet. Visit our Downloads page and get the right wallet for you. The Aplo wallets are available for a variety of platforms and contain everything you need to use Aplo immediately.", + "walletDescription": "Aplo supports any ethereum wallet, hooray!!!", "getCoins": "Get Some Coins", "getCoinsDescription": "After you install a wallet, you need to get some Aplo. There are multiple ways to acquire some coins to spend, like mining with any device you have or working in exchange for Aplo, but the easiest way is to use an exchange and convert your fiat money into APLO or sell GAS on them.", "useCurrency": "It's a Currency; Use It!", @@ -48,7 +48,7 @@ "contributeDescription": "Aplo is not simply a currency, it's a decentralized community and exists only thanks to the hundreds of volunteers that dedicate their time to the project. Join us!", "contributing": "CONTRIBUTING", "researchLab": "Aplo Research Lab (ARL)", - "researchLabDescription": "The ARL (Aplo Research Lab) is a very important part of Monero. Researchers and cryptographers from all over the world meet to find new ways to improve Aplo. Read their papers and join them!", + "researchLabDescription": "The ARL (Aplo Research Lab) is a very important part of APLO. Researchers and cryptographers from all over the world meet to find new ways to improve Aplo. Read their papers and join them!", "meetCommunity": "Meet the community!", "meetCommunityDescription": "The members of the Aplo community are all over the world. You can find us on multiple platforms. Come meet us!", "hangouts": "HANGOUTS" diff --git a/messages/ru.json b/messages/ru.json index 6781e18..dbabeb6 100644 --- a/messages/ru.json +++ b/messages/ru.json @@ -30,7 +30,7 @@ "aboutAplo": "О APLO", "joinCommunity": "ПРИСОЕДИНИТЬСЯ К СООБЩЕСТВУ", "chooseWallet": "Выберите Кошелек", - "walletDescription": "Для использования Aplo вам сначала нужен кошелек. Посетите нашу страницу загрузок и выберите подходящий кошелек. Кошельки Aplo доступны для различных платформ и содержат все необходимое для немедленного использования Aplo.", + "walletDescription": "Aplo поддерживает любой кошелек Ethereum, ура!!!", "getCoins": "Получить Монеты", "getCoinsDescription": "После установки кошелька вам нужно получить немного Aplo. Существует несколько способов получить монеты для трат, таких как майнинг или работа за Aplo, но самый простой способ - воспользоваться биржей и конвертировать свои фиатные деньги в XMR. Многие централизованные и децентрализованные биржи включают Aplo (XMR) в свои списки.", "useCurrency": "Это валюта; Используйте ее!", @@ -48,7 +48,7 @@ "contributeDescription": "Aplo - это не просто валюта, это децентрализованное сообщество, которое существует только благодаря сотням волонтеров, посвящающих свое время проекту. Присоединяйтесь к нам!", "contributing": "ВКЛАД", "researchLab": "Исследовательская лаборатория Aplo (ARL)", - "researchLabDescription": "ARL (Исследовательская лаборатория Aplo) является очень важной частью Monero. Исследователи и криптографы со всего мира встречаются, чтобы найти новые способы улучшить Aplo. Читайте их работы и присоединяйтесь к ним!", + "researchLabDescription": "ARL (Исследовательская лаборатория Aplo) — очень важная часть APLO. Исследователи и криптографы со всего мира встречаются, чтобы найти новые способы улучшения Aplo. Прочтите их статьи и присоединяйтесь к ним!", "meetCommunity": "Познакомьтесь с сообществом!", "meetCommunityDescription": "Члены сообщества Aplo находятся по всему миру. Вы можете найти нас на многих платформах. Приходите знакомиться!", "hangouts": "ВСТРЕЧИ" diff --git a/messages/ua.json b/messages/ua.json index babc2ea..3a71835 100644 --- a/messages/ua.json +++ b/messages/ua.json @@ -30,7 +30,7 @@ "aboutAplo": "ПРО APLO", "joinCommunity": "ПРИЄДНАТИСЯ ДО СПІЛЬНОТИ", "chooseWallet": "Виберіть Гаманець", - "walletDescription": "Для використання Aplo вам спочатку потрібен гаманець. Відвідайте нашу сторінку завантажень і виберіть відповідний гаманець. Гаманці Aplo доступні для різних платформ і містять усе необхідне для негайного використання Aplo.", + "walletDescription": "Aplo підтримує будь-який гаманець Ethereum, юхуу!!!", "getCoins": "Отримати монети", "getCoinsDescription": "Після встановлення гаманця вам потрібно отримати деякі Aplo. Є кілька способів отримати монети для витрат, такі як майнінг або робота за Aplo, але найпростіший спосіб - скористатися біржею і конвертувати свої фіатні гроші в XMR. Багато централізованих і децентралізованих бірж перераховують Aplo (XMR).", "useCurrency": "Це валюта; Використовуйте її!", @@ -48,7 +48,7 @@ "contributeDescription": "Aplo - це не просто валюта, це децентралізована спільнота, яка існує завдяки сотням волонтерів, які присвячують свій час проекту. Приєднуйтесь до нас!", "contributing": "ВНЕСОК", "researchLab": "Лабораторія досліджень Aplo (ARL)", - "researchLabDescription": "ARL (Лабораторія досліджень Aplo) є дуже важливою частиною Monero. Дослідники та криптографи з усього світу зустрічаються, щоб знайти нові способи покращити Aplo. Читайте їхні роботи та приєднуйтесь до них!", + "researchLabDescription": "ARL (Aplo Research Lab) є дуже важливою частиною APLO. Дослідники та криптографи з усього світу зустрічаються, щоб знайти нові шляхи вдосконалення Aplo. Прочитайте їхні статті та приєднайтеся до них!", "meetCommunity": "Зустріньтеся зі спільнотою!", "meetCommunityDescription": "Члени спільноти Aplo є по всьому світу. Ви можете знайти нас на багатьох платформах. Приходьте знайомитись!", "hangouts": "ЗУСТРІЧІ" diff --git a/src/components/language/LanguageSwitcher.tsx b/src/components/language/LanguageSwitcher.tsx index 79d6937..9b14423 100644 --- a/src/components/language/LanguageSwitcher.tsx +++ b/src/components/language/LanguageSwitcher.tsx @@ -28,10 +28,10 @@ export default function LanguageSwitcher() { return ( - + diff --git a/src/components/navigation/MobileNavigation.tsx b/src/components/navigation/MobileNavigation.tsx index 25ab5fc..1bffd7e 100644 --- a/src/components/navigation/MobileNavigation.tsx +++ b/src/components/navigation/MobileNavigation.tsx @@ -4,16 +4,7 @@ import { usePathname } from "next/navigation"; import Link from "next/link"; import Image from "next/image"; import { Murecho } from "next/font/google"; -import { - Sidebar, - SidebarContent, - SidebarGroup, - SidebarMenu, - SidebarMenuItem, - SidebarMenuButton, - SidebarHeader, - SidebarFooter, -} from "@/components/ui/sidebar"; +import { Sheet, SheetContent, SheetHeader, SheetTrigger } from "@/components/ui/sheet"; import LanguageSwitcher from "../language/LanguageSwitcher"; import { clsx } from "clsx"; @@ -21,15 +12,14 @@ const murecho = Murecho({ subsets: ["latin", "cyrillic"] }); export default function MobileNavigation() { const t = useTranslations("Menu"); - const [showMenu, setShowMenu] = useState(false); + const [open, setOpen] = useState(false); const [mainComponentHeight, setMainComponentHeight] = useState(0); - const mainComponentRef = useRef(null); + const mainComponentRef = useRef(null); const pathname = usePathname(); const lang = pathname.substring(1, 3); - const toggleMenu = () => setShowMenu(!showMenu); - const closeMenu = () => setTimeout(() => setShowMenu(false), 300); + const closeMenu = () => setTimeout(() => setOpen(false), 300); useEffect(() => { if (mainComponentRef.current) { @@ -48,12 +38,10 @@ export default function MobileNavigation() { return ( <> -
+
- -
- - - - - - -
+ + + + + + +
+ + + {t("donate")} + + + +
+
-
- {menuItems.map((item) => ( - - - - {item.title} - - - - ))} -
-
-
- -
+ ))} + + + + + ); -} +} \ No newline at end of file diff --git a/src/components/navigation/component.tsx b/src/components/navigation/component.tsx index 9767d13..9864384 100644 --- a/src/components/navigation/component.tsx +++ b/src/components/navigation/component.tsx @@ -1,7 +1,6 @@ "use client"; import dynamic from 'next/dynamic'; import { useState, useEffect } from 'react'; -import { SidebarProvider } from '../ui/sidebar'; const MobileNavigation = dynamic(() => import('./MobileNavigation'), { ssr: false }); const DesktopNavigation = dynamic(() => import('./DesktopNavigation'), { ssr: false }); @@ -23,7 +22,7 @@ export default function Navigation() { return ( <> - {isMobile ? : } + {isMobile ? : } ); } diff --git a/src/components/ui/sheet.tsx b/src/components/ui/sheet.tsx index 272cb72..ad65721 100644 --- a/src/components/ui/sheet.tsx +++ b/src/components/ui/sheet.tsx @@ -64,10 +64,6 @@ const SheetContent = React.forwardRef< className={cn(sheetVariants({ side }), className)} {...props} > - - - Close - {children} diff --git a/src/components/ui/sidebar.tsx b/src/components/ui/sidebar.tsx deleted file mode 100644 index eeb2d7a..0000000 --- a/src/components/ui/sidebar.tsx +++ /dev/null @@ -1,763 +0,0 @@ -"use client" - -import * as React from "react" -import { Slot } from "@radix-ui/react-slot" -import { VariantProps, cva } from "class-variance-authority" -import { PanelLeft } from "lucide-react" - -import { useIsMobile } from "@/hooks/use-mobile" -import { cn } from "@/lib/utils" -import { Button } from "@/components/ui/button" -import { Input } from "@/components/ui/input" -import { Separator } from "@/components/ui/separator" -import { Sheet, SheetContent } from "@/components/ui/sheet" -import { Skeleton } from "@/components/ui/skeleton" -import { - Tooltip, - TooltipContent, - TooltipProvider, - TooltipTrigger, -} from "@/components/ui/tooltip" - -const SIDEBAR_COOKIE_NAME = "sidebar:state" -const SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7 -const SIDEBAR_WIDTH = "16rem" -const SIDEBAR_WIDTH_MOBILE = "18rem" -const SIDEBAR_WIDTH_ICON = "3rem" -const SIDEBAR_KEYBOARD_SHORTCUT = "b" - -type SidebarContext = { - state: "expanded" | "collapsed" - open: boolean - setOpen: (open: boolean) => void - openMobile: boolean - setOpenMobile: (open: boolean) => void - isMobile: boolean - toggleSidebar: () => void -} - -const SidebarContext = React.createContext(null) - -function useSidebar() { - const context = React.useContext(SidebarContext) - if (!context) { - throw new Error("useSidebar must be used within a SidebarProvider.") - } - - return context -} - -const SidebarProvider = React.forwardRef< - HTMLDivElement, - React.ComponentProps<"div"> & { - defaultOpen?: boolean - open?: boolean - onOpenChange?: (open: boolean) => void - } ->( - ( - { - defaultOpen = true, - open: openProp, - onOpenChange: setOpenProp, - className, - style, - children, - ...props - }, - ref - ) => { - const isMobile = useIsMobile() - const [openMobile, setOpenMobile] = React.useState(false) - - // This is the internal state of the sidebar. - // We use openProp and setOpenProp for control from outside the component. - const [_open, _setOpen] = React.useState(defaultOpen) - const open = openProp ?? _open - const setOpen = React.useCallback( - (value: boolean | ((value: boolean) => boolean)) => { - const openState = typeof value === "function" ? value(open) : value - if (setOpenProp) { - setOpenProp(openState) - } else { - _setOpen(openState) - } - - // This sets the cookie to keep the sidebar state. - document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}` - }, - [setOpenProp, open] - ) - - // Helper to toggle the sidebar. - const toggleSidebar = React.useCallback(() => { - return isMobile - ? setOpenMobile((open) => !open) - : setOpen((open) => !open) - }, [isMobile, setOpen, setOpenMobile]) - - // Adds a keyboard shortcut to toggle the sidebar. - React.useEffect(() => { - const handleKeyDown = (event: KeyboardEvent) => { - if ( - event.key === SIDEBAR_KEYBOARD_SHORTCUT && - (event.metaKey || event.ctrlKey) - ) { - event.preventDefault() - toggleSidebar() - } - } - - window.addEventListener("keydown", handleKeyDown) - return () => window.removeEventListener("keydown", handleKeyDown) - }, [toggleSidebar]) - - // We add a state so that we can do data-state="expanded" or "collapsed". - // This makes it easier to style the sidebar with Tailwind classes. - const state = open ? "expanded" : "collapsed" - - const contextValue = React.useMemo( - () => ({ - state, - open, - setOpen, - isMobile, - openMobile, - setOpenMobile, - toggleSidebar, - }), - [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar] - ) - - return ( - - -
- {children} -
-
-
- ) - } -) -SidebarProvider.displayName = "SidebarProvider" - -const Sidebar = React.forwardRef< - HTMLDivElement, - React.ComponentProps<"div"> & { - side?: "left" | "right" - variant?: "sidebar" | "floating" | "inset" - collapsible?: "offcanvas" | "icon" | "none" - } ->( - ( - { - side = "left", - variant = "sidebar", - collapsible = "offcanvas", - className, - children, - ...props - }, - ref - ) => { - const { isMobile, state, openMobile, setOpenMobile } = useSidebar() - - if (collapsible === "none") { - return ( -
- {children} -
- ) - } - - if (isMobile) { - return ( - - -
{children}
-
-
- ) - } - - return ( -
- {/* This is what handles the sidebar gap on desktop */} -
- -
- ) - } -) -Sidebar.displayName = "Sidebar" - -const SidebarTrigger = React.forwardRef< - React.ElementRef, - React.ComponentProps ->(({ className, onClick, ...props }, ref) => { - const { toggleSidebar } = useSidebar() - - return ( - - ) -}) -SidebarTrigger.displayName = "SidebarTrigger" - -const SidebarRail = React.forwardRef< - HTMLButtonElement, - React.ComponentProps<"button"> ->(({ className, ...props }, ref) => { - const { toggleSidebar } = useSidebar() - - return ( -