reactbits-mcp-tools
Version:
Model Context Protocol server for ReactBits component library with comprehensive TypeScript build system and real data integration
138 lines • 5.81 kB
JSON
{
"metadata": {
"name": "App",
"category": "ui-component",
"variant": "js-css",
"priority": 1,
"extractedAt": "2025-08-01T16:32:55.927Z"
},
"source": {
"filePath": "src/App.jsx",
"sourceCode": "import { Route, BrowserRouter as Router, Routes, useLocation } from 'react-router-dom'\nimport { SearchProvider } from './components/context/SearchContext/SearchContext';\nimport { LanguageProvider } from './components/context/LanguageContext/LanguageContext'\nimport { TransitionProvider } from './components/context/TransitionContext/TransitionContext';\nimport { useEffect } from 'react';\nimport { Toaster } from 'sonner'\nimport { forceChakraDarkTheme } from './utils/utils';\nimport { toastStyles } from './utils/customTheme';\n\nimport DisplayHeader from './components/landing/DisplayHeader/DisplayHeader';\nimport Header from './components/navs/Header';\nimport Sidebar from './components/navs/Sidebar';\nimport LandingPage from './pages/LandingPage'\nimport CategoryPage from './pages/CategoryPage'\nimport ShowcasePage from './pages/ShowcasePage';\nimport Announcement from './components/common/Misc/Announcement';\n\nfunction AppContent() {\n const location = useLocation();\n\n const getActiveItem = () => {\n if (location.pathname === '/') return 'home';\n if (location.pathname === '/showcase') return 'showcase';\n return null;\n };\n\n const isCategoryPage = location.pathname.match(/^\\/[^/]+\\/[^/]+$/);\n\n return (\n <>\n {!isCategoryPage && <DisplayHeader activeItem={getActiveItem()} />}\n <Routes>\n <Route exact path=\"/\" element={<LandingPage />} />\n <Route exact path=\"/showcase\" element={<ShowcasePage />} />\n <Route path=\"/:category/:subcategory\" element={\n <SearchProvider>\n <LanguageProvider>\n <TransitionProvider>\n <main className='app-container'>\n <Announcement />\n <Header />\n <section className='category-wrapper'>\n <Sidebar />\n <CategoryPage />\n </section>\n <Toaster\n toastOptions={toastStyles}\n position='bottom-right'\n visibleToasts={1}\n />\n </main>\n </TransitionProvider>\n </LanguageProvider>\n </SearchProvider>\n } />\n </Routes>\n </>\n );\n}\n\nexport default function App() {\n useEffect(() => {\n forceChakraDarkTheme();\n }, []);\n\n return (\n <Router>\n <AppContent />\n </Router>\n );\n}\n",
"fileSize": 2358
},
"analysis": {
"dependencies": [
"react-router-dom",
"./components/context/SearchContext/SearchContext",
"./components/context/LanguageContext/LanguageContext",
"./components/context/TransitionContext/TransitionContext",
"react",
"sonner",
"./utils/utils",
"./utils/customTheme",
"./components/landing/DisplayHeader/DisplayHeader",
"./components/navs/Header",
"./components/navs/Sidebar",
"./pages/LandingPage",
"./pages/CategoryPage",
"./pages/ShowcasePage",
"./components/common/Misc/Announcement"
],
"exports": [
"App"
],
"imports": [
{
"statement": "{ Route, BrowserRouter as Router, Routes, useLocation }",
"from": "react-router-dom",
"isExternal": true
},
{
"statement": "{ SearchProvider }",
"from": "./components/context/SearchContext/SearchContext",
"isExternal": false
},
{
"statement": "{ LanguageProvider }",
"from": "./components/context/LanguageContext/LanguageContext",
"isExternal": false
},
{
"statement": "{ TransitionProvider }",
"from": "./components/context/TransitionContext/TransitionContext",
"isExternal": false
},
{
"statement": "{ useEffect }",
"from": "react",
"isExternal": true
},
{
"statement": "{ Toaster }",
"from": "sonner",
"isExternal": true
},
{
"statement": "{ forceChakraDarkTheme }",
"from": "./utils/utils",
"isExternal": false
},
{
"statement": "{ toastStyles }",
"from": "./utils/customTheme",
"isExternal": false
},
{
"statement": "DisplayHeader",
"from": "./components/landing/DisplayHeader/DisplayHeader",
"isExternal": false
},
{
"statement": "Header",
"from": "./components/navs/Header",
"isExternal": false
},
{
"statement": "Sidebar",
"from": "./components/navs/Sidebar",
"isExternal": false
},
{
"statement": "LandingPage",
"from": "./pages/LandingPage",
"isExternal": false
},
{
"statement": "CategoryPage",
"from": "./pages/CategoryPage",
"isExternal": false
},
{
"statement": "ShowcasePage",
"from": "./pages/ShowcasePage",
"isExternal": false
},
{
"statement": "Announcement",
"from": "./components/common/Misc/Announcement",
"isExternal": false
}
],
"hooks": [
"useLocation",
"useEffect"
],
"features": [
"side-effects"
],
"complexity": {
"level": "complex",
"score": 52,
"metrics": {
"lines": 72,
"dependencies": 15,
"hooks": 4,
"conditionals": 2
}
},
"stylingApproach": [
"css-classes"
],
"hasAnimation": false
},
"types": {
"definitions": [],
"propsInterface": []
}
}