Reorganize repository into monorepo structure

Restructured the project to support multiple frontend applications:
- Move web app to web/ directory
- Create pezkuwi-sdk-ui/ for Polkadot SDK clone (planned)
- Create mobile/ directory for mobile app development
- Add shared/ directory with common utilities, types, and blockchain code
- Update README.md with comprehensive documentation
- Remove obsolete DKSweb/ directory

This monorepo structure enables better code sharing and organized
development across web, mobile, and SDK UI projects.
This commit is contained in:
Claude
2025-11-14 00:46:35 +00:00
parent bb3d9aeb29
commit c48ded7ff2
206 changed files with 502 additions and 4 deletions
+59
View File
@@ -0,0 +1,59 @@
import { useTranslation } from 'react-i18next';
import { Button } from '@/components/ui/button';
import {
DropdownMenu,
DropdownMenuContent,
DropdownMenuItem,
DropdownMenuTrigger,
} from '@/components/ui/dropdown-menu';
import { Globe } from 'lucide-react';
import { languages } from '@/i18n/config';
import { useEffect } from 'react';
export function LanguageSwitcher() {
const { i18n } = useTranslation();
useEffect(() => {
// Update document direction based on language
const currentLang = languages[i18n.language as keyof typeof languages];
if (currentLang) {
document.documentElement.dir = currentLang.dir;
document.documentElement.lang = i18n.language;
}
}, [i18n.language]);
const changeLanguage = (lng: string) => {
i18n.changeLanguage(lng);
const lang = languages[lng as keyof typeof languages];
if (lang) {
document.documentElement.dir = lang.dir;
document.documentElement.lang = lng;
}
};
const currentLanguage = languages[i18n.language as keyof typeof languages] || languages.en;
return (
<DropdownMenu>
<DropdownMenuTrigger asChild>
<Button variant="ghost" size="sm" className="gap-2">
<Globe className="h-4 w-4" />
<span className="hidden sm:inline">{currentLanguage.name}</span>
<span className="text-lg">{currentLanguage.flag}</span>
</Button>
</DropdownMenuTrigger>
<DropdownMenuContent align="end" className="w-48">
{Object.entries(languages).map(([code, lang]) => (
<DropdownMenuItem
key={code}
onClick={() => changeLanguage(code)}
className={`cursor-pointer ${i18n.language === code ? 'bg-yellow-100 dark:bg-yellow-900' : ''}`}
>
<span className="text-lg mr-2">{lang.flag}</span>
<span>{lang.name}</span>
</DropdownMenuItem>
))}
</DropdownMenuContent>
</DropdownMenu>
);
}