@manago/admin 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +238 -100
- package/dist/ManagoProvider-DtovqU61.d.mts +44 -0
- package/dist/ManagoProvider-DtovqU61.d.ts +44 -0
- package/dist/adapters/nextjs/index.d.mts +26 -0
- package/dist/adapters/nextjs/index.d.ts +26 -0
- package/dist/adapters/nextjs/index.js +6 -0
- package/dist/adapters/nextjs/index.js.map +1 -0
- package/dist/adapters/nextjs/index.mjs +6 -0
- package/dist/adapters/nextjs/index.mjs.map +1 -0
- package/dist/adapters/react-router/index.d.mts +32 -0
- package/dist/adapters/react-router/index.d.ts +32 -0
- package/dist/adapters/react-router/index.js +6 -0
- package/dist/adapters/react-router/index.js.map +1 -0
- package/dist/adapters/react-router/index.mjs +6 -0
- package/dist/adapters/react-router/index.mjs.map +1 -0
- package/dist/adapters/tanstack/index.d.mts +24 -0
- package/dist/adapters/tanstack/index.d.ts +24 -0
- package/dist/adapters/tanstack/index.js +6 -0
- package/dist/adapters/tanstack/index.js.map +1 -0
- package/dist/adapters/tanstack/index.mjs +6 -0
- package/dist/adapters/tanstack/index.mjs.map +1 -0
- package/dist/index.css +168 -0
- package/dist/index.d.mts +28 -70
- package/dist/index.d.ts +37 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +5 -1464
- package/dist/index.mjs.map +1 -1
- package/package.json +75 -91
- package/dist/styles/globals.css +0 -3937
- package/dist/styles/globals.css.map +0 -1
- package/dist/styles/globals.d.mts +0 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/adapters/nextjs/index.ts","../../../src/adapters/nextjs/ManagoAdmin.tsx","../../../src/providers/ManagoProvider.tsx","../../../src/hooks/useNavigation.ts","../../../src/core/components/Sidebar.tsx","../../../src/core/components/Header.tsx","../../../src/core/components/Layout.tsx","../../../src/core/pages/Dashboard.tsx","../../../src/core/pages/Orders.tsx","../../../src/core/pages/Customers.tsx","../../../src/core/pages/Products.tsx","../../../src/core/pages/Settings.tsx"],"sourcesContent":["export { ManagoAdmin } from './ManagoAdmin';\nexport { useManago } from '../../providers/ManagoProvider';\nexport type { ManagoConfig } from '../../types';\n","// @ts-nocheck - Next.js is a peer dependency\n'use client';\n\nimport React, { useState, useEffect } from 'react';\nimport { usePathname, useRouter } from 'next/navigation';\nimport { ManagoProvider as BaseManagoProvider } from '../../providers/ManagoProvider';\nimport { Layout } from '../../core/components/Layout';\nimport { Dashboard, Orders, Customers, Products, Settings } from '../../core/pages';\nimport type { ManagoConfig } from '../../types';\n\ninterface ManagoAdminProps {\n apiKey: string;\n config: ManagoConfig;\n basePath?: string;\n}\n\n/**\n * Next.js App Router adapter for Manago Admin\n *\n * Usage:\n * Create app/admin/[[...slug]]/page.tsx with:\n *\n * 'use client'\n * import { ManagoAdmin } from '@manago/admin/nextjs'\n *\n * export default function AdminPage() {\n * return <ManagoAdmin apiKey=\"...\" config={{ appName: \"My Store\" }} />\n * }\n */\nexport const ManagoAdmin = ({ apiKey, config, basePath = '/admin' }: ManagoAdminProps) => {\n const pathname = usePathname();\n const router = useRouter();\n const [mounted, setMounted] = useState(false);\n\n useEffect(() => {\n setMounted(true);\n }, []);\n\n // Extract the route path relative to basePath\n const getRelativePath = (fullPath: string): string => {\n if (!fullPath.startsWith(basePath)) return '/';\n const relative = fullPath.slice(basePath.length) || '/';\n return relative;\n };\n\n const currentPath = getRelativePath(pathname);\n\n const navigate = (path: string) => {\n const fullPath = path === '/' ? basePath : `${basePath}${path}`;\n router.push(fullPath);\n };\n\n // Prevent hydration mismatch\n if (!mounted) {\n return null;\n }\n\n // Route to component mapping\n const renderPage = () => {\n if (currentPath === '/' || currentPath === '') {\n return <Dashboard />;\n }\n if (currentPath.startsWith('/orders')) {\n return <Orders />;\n }\n if (currentPath.startsWith('/customers')) {\n return <Customers />;\n }\n if (currentPath.startsWith('/products')) {\n return <Products />;\n }\n if (currentPath.startsWith('/settings')) {\n return <Settings />;\n }\n\n // 404 fallback\n return (\n <div className=\"mng-flex mng-items-center mng-justify-center mng-h-full\">\n <div className=\"mng-text-center\">\n <h2 className=\"mng-text-2xl mng-font-bold mng-text-slate-800 mng-mb-2\">\n Page Not Found\n </h2>\n <p className=\"mng-text-slate-600 mng-mb-4\">\n The page you're looking for doesn't exist.\n </p>\n <button\n onClick={() => navigate('/')}\n className=\"mng-bg-blue-600 mng-text-white mng-px-4 mng-py-2 mng-rounded-lg mng-text-sm mng-font-medium hover:mng-bg-blue-700\"\n >\n Go to Dashboard\n </button>\n </div>\n </div>\n );\n };\n\n return (\n <BaseManagoProvider\n apiKey={apiKey}\n config={config}\n navigate={navigate}\n currentPath={currentPath}\n >\n <Layout>{renderPage()}</Layout>\n </BaseManagoProvider>\n );\n};\n","import React, { createContext, ReactNode } from 'react';\nimport type { ManagoConfig, ManagoContextType } from '../types';\n\nexport const ManagoContext = createContext<ManagoContextType | undefined>(undefined);\n\ninterface ManagoProviderProps {\n children: ReactNode;\n apiKey: string;\n config: ManagoConfig;\n navigate: (path: string) => void;\n currentPath: string;\n}\n\nexport const ManagoProvider = ({\n children,\n apiKey,\n config,\n navigate,\n currentPath,\n}: ManagoProviderProps) => {\n return (\n <ManagoContext.Provider value={{ apiKey, config, navigate, currentPath }}>\n {children}\n </ManagoContext.Provider>\n );\n};\n\nexport const useManago = () => {\n const context = React.useContext(ManagoContext);\n if (!context) throw new Error('useManago must be used within ManagoProvider');\n return context;\n};","import { useContext } from 'react';\nimport { ManagoContext } from '../providers/ManagoProvider';\n\n/**\n * Hook for framework-agnostic navigation\n * Uses the navigation adapter provided by the framework-specific ManagoAdmin component\n */\nexport const useNavigation = () => {\n const context = useContext(ManagoContext);\n\n if (!context) {\n throw new Error('useNavigation must be used within ManagoProvider');\n }\n\n return {\n navigate: context.navigate,\n currentPath: context.currentPath,\n isActive: (path: string) => {\n // Handle both exact matches and nested routes\n if (path === '/') {\n return context.currentPath === '/' || context.currentPath === '';\n }\n return context.currentPath.startsWith(path);\n },\n };\n};\n","import React from 'react';\nimport { useManago } from '../../providers/ManagoProvider';\nimport { useNavigation } from '../../hooks/useNavigation';\nimport type { MenuItem } from '../../types';\n\nconst defaultMenuItems: MenuItem[] = [\n { id: 'dashboard', label: 'Dashboard', path: '/' },\n { id: 'orders', label: 'Orders', path: '/orders' },\n { id: 'customers', label: 'Customers', path: '/customers' },\n { id: 'products', label: 'Products', path: '/products' },\n { id: 'settings', label: 'Settings', path: '/settings' },\n];\n\nexport const Sidebar = () => {\n const { config } = useManago();\n const { navigate, isActive } = useNavigation();\n\n const menuItems = defaultMenuItems.filter((item) => {\n const menuConfig = config.menu || {};\n // If menu item is explicitly set to false, hide it\n if (menuConfig[item.id as keyof typeof menuConfig] === false) {\n return false;\n }\n return true;\n });\n\n return (\n <aside className=\"mng-w-64 mng-bg-slate-900 mng-text-white mng-flex mng-flex-col\">\n {/* Logo / Brand */}\n <div className=\"mng-p-6 mng-flex mng-items-center mng-gap-3\">\n {config.theme?.logo ? (\n <img src={config.theme.logo} alt={config.appName} className=\"mng-h-8\" />\n ) : (\n <>\n <div className=\"mng-w-8 mng-h-8 mng-bg-blue-500 mng-rounded-md mng-flex mng-items-center mng-justify-center mng-font-bold\">\n {config.appName.charAt(0).toUpperCase()}\n </div>\n <span className=\"mng-text-xl mng-font-bold mng-tracking-tight\">\n {config.appName || 'Manago'}\n </span>\n </>\n )}\n </div>\n\n {/* Navigation Menu */}\n <nav className=\"mng-flex-1 mng-px-3 mng-space-y-1\">\n {menuItems.map((item) => (\n <button\n key={item.id}\n onClick={() => navigate(item.path)}\n className={`\n mng-w-full mng-flex mng-items-center mng-px-4 mng-py-2.5 mng-text-sm mng-rounded-lg\n mng-transition-colors mng-text-left\n ${\n isActive(item.path)\n ? 'mng-bg-blue-600 mng-text-white'\n : 'mng-text-slate-300 hover:mng-bg-slate-800 hover:mng-text-white'\n }\n `}\n >\n {item.icon && <span className=\"mng-mr-3\">{item.icon}</span>}\n {item.label}\n </button>\n ))}\n </nav>\n\n {/* Footer */}\n <div className=\"mng-p-4 mng-border-t mng-border-slate-800\">\n <p className=\"mng-text-xs mng-text-slate-500 mng-text-center\">\n Powered by Manago\n </p>\n </div>\n </aside>\n );\n};\n","import React from 'react';\nimport { useManago } from '../../providers/ManagoProvider';\n\ninterface HeaderProps {\n title?: string;\n}\n\nexport const Header = ({ title = 'Admin Panel' }: HeaderProps) => {\n const { config } = useManago();\n\n return (\n <header className=\"mng-h-16 mng-bg-white mng-border-b mng-border-slate-200 mng-flex mng-items-center mng-px-8 mng-justify-between\">\n <h1 className=\"mng-text-sm mng-font-medium mng-text-slate-500\">{title}</h1>\n\n <div className=\"mng-flex mng-items-center mng-gap-4\">\n <span className=\"mng-text-sm mng-text-slate-600\">{config.appName}</span>\n </div>\n </header>\n );\n};\n","import React, { ReactNode } from 'react';\nimport { Sidebar } from './Sidebar';\nimport { Header } from './Header';\n\ninterface LayoutProps {\n children: ReactNode;\n}\n\nexport const Layout = ({ children }: LayoutProps) => {\n return (\n <div className=\"mng-flex mng-h-screen mng-bg-slate-50 mng-font-sans\">\n <Sidebar />\n\n <div className=\"mng-flex-1 mng-flex mng-flex-col mng-overflow-hidden\">\n <Header />\n <main className=\"mng-flex-1 mng-overflow-y-auto mng-p-8\">\n {children}\n </main>\n </div>\n </div>\n );\n};\n","import React from 'react';\n\nexport const Dashboard = () => {\n return (\n <div className=\"mng-space-y-6\">\n <div className=\"mng-flex mng-items-center mng-justify-between\">\n <h2 className=\"mng-text-2xl mng-font-bold mng-text-slate-800\">Overview</h2>\n <button className=\"mng-bg-blue-600 mng-text-white mng-px-4 mng-py-2 mng-rounded-lg mng-text-sm mng-font-medium hover:mng-bg-blue-700 mng-transition-colors\">\n Download Report\n </button>\n </div>\n\n {/* Stats Cards */}\n <div className=\"mng-grid mng-grid-cols-1 md:mng-grid-cols-3 mng-gap-6\">\n {[\n { label: 'Total Revenue', value: '€45,231.89', change: '+20.1%', color: 'mng-text-green-600' },\n { label: 'Active Orders', value: '154', change: '+12.5%', color: 'mng-text-green-600' },\n { label: 'Refund Rate', value: '1.2%', change: '-0.4%', color: 'mng-text-red-600' },\n ].map((stat) => (\n <div key={stat.label} className=\"mng-bg-white mng-p-6 mng-rounded-xl mng-border mng-border-slate-200 mng-shadow-sm\">\n <p className=\"mng-text-sm mng-font-medium mng-text-slate-500\">{stat.label}</p>\n <div className=\"mng-flex mng-items-baseline mng-gap-2 mng-mt-2\">\n <h3 className=\"mng-text-3xl mng-font-bold mng-text-slate-900\">{stat.value}</h3>\n <span className={`mng-text-xs mng-font-medium ${stat.color}`}>{stat.change}</span>\n </div>\n </div>\n ))}\n </div>\n\n {/* Chart Placeholder */}\n <div className=\"mng-bg-white mng-rounded-xl mng-border mng-border-slate-200 mng-shadow-sm mng-h-64 mng-flex mng-items-center mng-justify-center\">\n <p className=\"mng-text-slate-400 mng-italic\">Chart visualization will be here...</p>\n </div>\n </div>\n );\n};\n","import React from 'react';\n\nconst mockOrders = [\n { id: '#ORD-7721', customer: 'Ion Popescu', status: 'Completed', total: '€120.00', date: 'Acum 2 ore' },\n { id: '#ORD-7722', customer: 'Elena Radu', status: 'Processing', total: '€45.50', date: 'Acum 5 ore' },\n { id: '#ORD-7723', customer: 'Mihai Sandu', status: 'Pending', total: '€210.99', date: 'Ieri' },\n { id: '#ORD-7724', customer: 'Ana Ionescu', status: 'Completed', total: '€89.99', date: 'Ieri' },\n { id: '#ORD-7725', customer: 'George Popa', status: 'Cancelled', total: '€156.00', date: 'Acum 2 zile' },\n];\n\nconst getStatusColor = (status: string) => {\n switch (status) {\n case 'Completed':\n return 'mng-bg-green-100 mng-text-green-700';\n case 'Processing':\n return 'mng-bg-blue-100 mng-text-blue-700';\n case 'Pending':\n return 'mng-bg-yellow-100 mng-text-yellow-700';\n case 'Cancelled':\n return 'mng-bg-red-100 mng-text-red-700';\n default:\n return 'mng-bg-slate-100 mng-text-slate-700';\n }\n};\n\nexport const Orders = () => {\n return (\n <div className=\"mng-space-y-6\">\n <div className=\"mng-flex mng-items-center mng-justify-between\">\n <h2 className=\"mng-text-2xl mng-font-bold mng-text-slate-800\">Orders Management</h2>\n <button className=\"mng-bg-blue-600 mng-text-white mng-px-4 mng-py-2 mng-rounded-lg mng-text-sm mng-font-medium hover:mng-bg-blue-700 mng-transition-colors\">\n Export Orders\n </button>\n </div>\n\n <div className=\"mng-bg-white mng-rounded-xl mng-border mng-border-slate-200 mng-shadow-sm mng-overflow-hidden\">\n <table className=\"mng-w-full mng-text-left mng-border-collapse\">\n <thead>\n <tr className=\"mng-bg-slate-50 mng-border-b mng-border-slate-200\">\n <th className=\"mng-px-6 mng-py-4 mng-text-xs mng-font-semibold mng-text-slate-500 mng-uppercase\">\n Order ID\n </th>\n <th className=\"mng-px-6 mng-py-4 mng-text-xs mng-font-semibold mng-text-slate-500 mng-uppercase\">\n Customer\n </th>\n <th className=\"mng-px-6 mng-py-4 mng-text-xs mng-font-semibold mng-text-slate-500 mng-uppercase\">\n Status\n </th>\n <th className=\"mng-px-6 mng-py-4 mng-text-xs mng-font-semibold mng-text-slate-500 mng-uppercase\">\n Total\n </th>\n <th className=\"mng-px-6 mng-py-4 mng-text-xs mng-font-semibold mng-text-slate-500 mng-uppercase\">\n Date\n </th>\n </tr>\n </thead>\n <tbody className=\"mng-divide-y mng-divide-slate-200\">\n {mockOrders.map((order) => (\n <tr key={order.id} className=\"hover:mng-bg-slate-50 mng-transition-colors\">\n <td className=\"mng-px-6 mng-py-4 mng-text-sm mng-font-medium mng-text-blue-600\">\n {order.id}\n </td>\n <td className=\"mng-px-6 mng-py-4 mng-text-sm mng-text-slate-600\">\n {order.customer}\n </td>\n <td className=\"mng-px-6 mng-py-4\">\n <span\n className={`mng-px-2.5 mng-py-0.5 mng-rounded-full mng-text-xs mng-font-medium ${getStatusColor(\n order.status\n )}`}\n >\n {order.status}\n </span>\n </td>\n <td className=\"mng-px-6 mng-py-4 mng-text-sm mng-font-semibold mng-text-slate-900\">\n {order.total}\n </td>\n <td className=\"mng-px-6 mng-py-4 mng-text-sm mng-text-slate-500\">\n {order.date}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </div>\n );\n};\n","import React from 'react';\n\nconst mockCustomers = [\n { id: '1', name: 'Ion Popescu', email: 'ion.popescu@example.com', orders: 12, totalSpent: '€1,234.56', joined: '2024-01-15' },\n { id: '2', name: 'Elena Radu', email: 'elena.radu@example.com', orders: 8, totalSpent: '€876.32', joined: '2024-02-20' },\n { id: '3', name: 'Mihai Sandu', email: 'mihai.sandu@example.com', orders: 15, totalSpent: '€2,103.45', joined: '2023-11-10' },\n { id: '4', name: 'Ana Ionescu', email: 'ana.ionescu@example.com', orders: 5, totalSpent: '€543.21', joined: '2024-03-05' },\n];\n\nexport const Customers = () => {\n return (\n <div className=\"mng-space-y-6\">\n <div className=\"mng-flex mng-items-center mng-justify-between\">\n <h2 className=\"mng-text-2xl mng-font-bold mng-text-slate-800\">Customers</h2>\n <button className=\"mng-bg-blue-600 mng-text-white mng-px-4 mng-py-2 mng-rounded-lg mng-text-sm mng-font-medium hover:mng-bg-blue-700 mng-transition-colors\">\n Add Customer\n </button>\n </div>\n\n <div className=\"mng-bg-white mng-rounded-xl mng-border mng-border-slate-200 mng-shadow-sm mng-overflow-hidden\">\n <table className=\"mng-w-full mng-text-left mng-border-collapse\">\n <thead>\n <tr className=\"mng-bg-slate-50 mng-border-b mng-border-slate-200\">\n <th className=\"mng-px-6 mng-py-4 mng-text-xs mng-font-semibold mng-text-slate-500 mng-uppercase\">\n Customer\n </th>\n <th className=\"mng-px-6 mng-py-4 mng-text-xs mng-font-semibold mng-text-slate-500 mng-uppercase\">\n Email\n </th>\n <th className=\"mng-px-6 mng-py-4 mng-text-xs mng-font-semibold mng-text-slate-500 mng-uppercase\">\n Orders\n </th>\n <th className=\"mng-px-6 mng-py-4 mng-text-xs mng-font-semibold mng-text-slate-500 mng-uppercase\">\n Total Spent\n </th>\n <th className=\"mng-px-6 mng-py-4 mng-text-xs mng-font-semibold mng-text-slate-500 mng-uppercase\">\n Joined\n </th>\n </tr>\n </thead>\n <tbody className=\"mng-divide-y mng-divide-slate-200\">\n {mockCustomers.map((customer) => (\n <tr key={customer.id} className=\"hover:mng-bg-slate-50 mng-transition-colors\">\n <td className=\"mng-px-6 mng-py-4\">\n <div className=\"mng-flex mng-items-center mng-gap-3\">\n <div className=\"mng-w-10 mng-h-10 mng-rounded-full mng-bg-blue-100 mng-flex mng-items-center mng-justify-center mng-text-blue-600 mng-font-semibold\">\n {customer.name.charAt(0)}\n </div>\n <span className=\"mng-text-sm mng-font-medium mng-text-slate-900\">\n {customer.name}\n </span>\n </div>\n </td>\n <td className=\"mng-px-6 mng-py-4 mng-text-sm mng-text-slate-600\">\n {customer.email}\n </td>\n <td className=\"mng-px-6 mng-py-4 mng-text-sm mng-text-slate-900\">\n {customer.orders}\n </td>\n <td className=\"mng-px-6 mng-py-4 mng-text-sm mng-font-semibold mng-text-slate-900\">\n {customer.totalSpent}\n </td>\n <td className=\"mng-px-6 mng-py-4 mng-text-sm mng-text-slate-500\">\n {customer.joined}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </div>\n );\n};\n","import React from 'react';\n\nexport const Products = () => {\n return (\n <div className=\"mng-space-y-6\">\n <div className=\"mng-flex mng-items-center mng-justify-between\">\n <h2 className=\"mng-text-2xl mng-font-bold mng-text-slate-800\">Products</h2>\n <button className=\"mng-bg-blue-600 mng-text-white mng-px-4 mng-py-2 mng-rounded-lg mng-text-sm mng-font-medium hover:mng-bg-blue-700 mng-transition-colors\">\n Add Product\n </button>\n </div>\n\n <div className=\"mng-bg-white mng-rounded-xl mng-border mng-border-slate-200 mng-shadow-sm mng-p-12 mng-flex mng-items-center mng-justify-center mng-min-h-96\">\n <p className=\"mng-text-slate-400 mng-italic\">Products management coming soon...</p>\n </div>\n </div>\n );\n};\n","import React from 'react';\nimport { useManago } from '../../providers/ManagoProvider';\n\nexport const Settings = () => {\n const { config } = useManago();\n\n return (\n <div className=\"mng-space-y-6\">\n <h2 className=\"mng-text-2xl mng-font-bold mng-text-slate-800\">Settings</h2>\n\n <div className=\"mng-bg-white mng-rounded-xl mng-border mng-border-slate-200 mng-shadow-sm mng-p-6 mng-space-y-6\">\n <div>\n <h3 className=\"mng-text-lg mng-font-semibold mng-text-slate-800 mng-mb-4\">\n General Settings\n </h3>\n\n <div className=\"mng-space-y-4\">\n <div>\n <label className=\"mng-block mng-text-sm mng-font-medium mng-text-slate-700 mng-mb-2\">\n Application Name\n </label>\n <input\n type=\"text\"\n disabled\n value={config.appName}\n className=\"mng-w-full mng-px-4 mng-py-2 mng-border mng-border-slate-300 mng-rounded-lg mng-bg-slate-50 mng-text-slate-500\"\n />\n <p className=\"mng-text-xs mng-text-slate-500 mng-mt-1\">\n Configured via ManagoProvider\n </p>\n </div>\n\n <div>\n <label className=\"mng-block mng-text-sm mng-font-medium mng-text-slate-700 mng-mb-2\">\n API Endpoint\n </label>\n <input\n type=\"text\"\n disabled\n value={config.apiEndpoint || 'Not configured'}\n className=\"mng-w-full mng-px-4 mng-py-2 mng-border mng-border-slate-300 mng-rounded-lg mng-bg-slate-50 mng-text-slate-500\"\n />\n </div>\n </div>\n </div>\n\n <div className=\"mng-border-t mng-border-slate-200 mng-pt-6\">\n <h3 className=\"mng-text-lg mng-font-semibold mng-text-slate-800 mng-mb-4\">\n Menu Configuration\n </h3>\n <div className=\"mng-space-y-2\">\n {Object.entries(config.menu || {}).map(([key, value]) => (\n <div key={key} className=\"mng-flex mng-items-center mng-justify-between\">\n <span className=\"mng-text-sm mng-text-slate-700 mng-capitalize\">{key}</span>\n <span\n className={`mng-text-sm mng-font-medium ${\n value ? 'mng-text-green-600' : 'mng-text-red-600'\n }`}\n >\n {value ? 'Enabled' : 'Disabled'}\n </span>\n </div>\n ))}\n </div>\n </div>\n </div>\n </div>\n );\n};\n"],"mappings":"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","names":["nextjs_exports","__export","ManagoAdmin","useManago","__toCommonJS","import_react","import_navigation","import_react","import_jsx_runtime","ManagoContext","ManagoProvider","children","apiKey","config","navigate","currentPath","useManago","context","React","import_react","useNavigation","context","ManagoContext","path","import_jsx_runtime","defaultMenuItems","Sidebar","config","useManago","navigate","isActive","useNavigation","menuItems","item","import_jsx_runtime","Header","title","config","useManago","import_jsx_runtime","Layout","children","Sidebar","Header","import_jsx_runtime","Dashboard","stat","import_jsx_runtime","mockOrders","getStatusColor","status","Orders","order","import_jsx_runtime","mockCustomers","Customers","customer","import_jsx_runtime","Products","import_jsx_runtime","Settings","config","useManago","key","value","import_jsx_runtime","ManagoAdmin","apiKey","config","basePath","pathname","router","mounted","setMounted","currentPath","fullPath","navigate","path","ManagoProvider","Layout","Dashboard","Orders","Customers","Products","Settings"]}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import{useState as V,useEffect as X}from"react";import{usePathname as Y,useRouter as Z}from"next/navigation";import H,{createContext as z}from"react";import{jsx as G}from"react/jsx-runtime";var f=z(void 0),k=({children:e,apiKey:m,config:s,navigate:u,currentPath:a})=>G(f.Provider,{value:{apiKey:m,config:s,navigate:u,currentPath:a},children:e}),c=()=>{let e=H.useContext(f);if(!e)throw new Error("useManago must be used within ManagoProvider");return e};import{useContext as K}from"react";var I=()=>{let e=K(f);if(!e)throw new Error("useNavigation must be used within ManagoProvider");return{navigate:e.navigate,currentPath:e.currentPath,isActive:m=>m==="/"?e.currentPath==="/"||e.currentPath==="":e.currentPath.startsWith(m)}};import{Fragment as F,jsx as r,jsxs as N}from"react/jsx-runtime";var B=[{id:"dashboard",label:"Dashboard",path:"/"},{id:"orders",label:"Orders",path:"/orders"},{id:"customers",label:"Customers",path:"/customers"},{id:"products",label:"Products",path:"/products"},{id:"settings",label:"Settings",path:"/settings"}],E=()=>{let{config:e}=c(),{navigate:m,isActive:s}=I(),u=B.filter(a=>(e.menu||{})[a.id]!==!1);return N("aside",{className:"mng-w-64 mng-bg-slate-900 mng-text-white mng-flex mng-flex-col",children:[r("div",{className:"mng-p-6 mng-flex mng-items-center mng-gap-3",children:e.theme?.logo?r("img",{src:e.theme.logo,alt:e.appName,className:"mng-h-8"}):N(F,{children:[r("div",{className:"mng-w-8 mng-h-8 mng-bg-blue-500 mng-rounded-md mng-flex mng-items-center mng-justify-center mng-font-bold",children:e.appName.charAt(0).toUpperCase()}),r("span",{className:"mng-text-xl mng-font-bold mng-tracking-tight",children:e.appName||"Manago"})]})}),r("nav",{className:"mng-flex-1 mng-px-3 mng-space-y-1",children:u.map(a=>N("button",{onClick:()=>m(a.path),className:`
|
|
2
|
+
mng-w-full mng-flex mng-items-center mng-px-4 mng-py-2.5 mng-text-sm mng-rounded-lg
|
|
3
|
+
mng-transition-colors mng-text-left
|
|
4
|
+
${s(a.path)?"mng-bg-blue-600 mng-text-white":"mng-text-slate-300 hover:mng-bg-slate-800 hover:mng-text-white"}
|
|
5
|
+
`,children:[a.icon&&r("span",{className:"mng-mr-3",children:a.icon}),a.label]},a.id))}),r("div",{className:"mng-p-4 mng-border-t mng-border-slate-800",children:r("p",{className:"mng-text-xs mng-text-slate-500 mng-text-center",children:"Powered by Manago"})})]})};import{jsx as y,jsxs as J}from"react/jsx-runtime";var j=({title:e="Admin Panel"})=>{let{config:m}=c();return J("header",{className:"mng-h-16 mng-bg-white mng-border-b mng-border-slate-200 mng-flex mng-items-center mng-px-8 mng-justify-between",children:[y("h1",{className:"mng-text-sm mng-font-medium mng-text-slate-500",children:e}),y("div",{className:"mng-flex mng-items-center mng-gap-4",children:y("span",{className:"mng-text-sm mng-text-slate-600",children:m.appName})})]})};import{jsx as w,jsxs as T}from"react/jsx-runtime";var W=({children:e})=>T("div",{className:"mng-flex mng-h-screen mng-bg-slate-50 mng-font-sans",children:[w(E,{}),T("div",{className:"mng-flex-1 mng-flex mng-flex-col mng-overflow-hidden",children:[w(j,{}),w("main",{className:"mng-flex-1 mng-overflow-y-auto mng-p-8",children:e})]})]});import{jsx as l,jsxs as h}from"react/jsx-runtime";var P=()=>h("div",{className:"mng-space-y-6",children:[h("div",{className:"mng-flex mng-items-center mng-justify-between",children:[l("h2",{className:"mng-text-2xl mng-font-bold mng-text-slate-800",children:"Overview"}),l("button",{className:"mng-bg-blue-600 mng-text-white mng-px-4 mng-py-2 mng-rounded-lg mng-text-sm mng-font-medium hover:mng-bg-blue-700 mng-transition-colors",children:"Download Report"})]}),l("div",{className:"mng-grid mng-grid-cols-1 md:mng-grid-cols-3 mng-gap-6",children:[{label:"Total Revenue",value:"\u20AC45,231.89",change:"+20.1%",color:"mng-text-green-600"},{label:"Active Orders",value:"154",change:"+12.5%",color:"mng-text-green-600"},{label:"Refund Rate",value:"1.2%",change:"-0.4%",color:"mng-text-red-600"}].map(e=>h("div",{className:"mng-bg-white mng-p-6 mng-rounded-xl mng-border mng-border-slate-200 mng-shadow-sm",children:[l("p",{className:"mng-text-sm mng-font-medium mng-text-slate-500",children:e.label}),h("div",{className:"mng-flex mng-items-baseline mng-gap-2 mng-mt-2",children:[l("h3",{className:"mng-text-3xl mng-font-bold mng-text-slate-900",children:e.value}),l("span",{className:`mng-text-xs mng-font-medium ${e.color}`,children:e.change})]})]},e.label))}),l("div",{className:"mng-bg-white mng-rounded-xl mng-border mng-border-slate-200 mng-shadow-sm mng-h-64 mng-flex mng-items-center mng-justify-center",children:l("p",{className:"mng-text-slate-400 mng-italic",children:"Chart visualization will be here..."})})]});import{jsx as n,jsxs as b}from"react/jsx-runtime";var U=[{id:"#ORD-7721",customer:"Ion Popescu",status:"Completed",total:"\u20AC120.00",date:"Acum 2 ore"},{id:"#ORD-7722",customer:"Elena Radu",status:"Processing",total:"\u20AC45.50",date:"Acum 5 ore"},{id:"#ORD-7723",customer:"Mihai Sandu",status:"Pending",total:"\u20AC210.99",date:"Ieri"},{id:"#ORD-7724",customer:"Ana Ionescu",status:"Completed",total:"\u20AC89.99",date:"Ieri"},{id:"#ORD-7725",customer:"George Popa",status:"Cancelled",total:"\u20AC156.00",date:"Acum 2 zile"}],q=e=>{switch(e){case"Completed":return"mng-bg-green-100 mng-text-green-700";case"Processing":return"mng-bg-blue-100 mng-text-blue-700";case"Pending":return"mng-bg-yellow-100 mng-text-yellow-700";case"Cancelled":return"mng-bg-red-100 mng-text-red-700";default:return"mng-bg-slate-100 mng-text-slate-700"}},M=()=>b("div",{className:"mng-space-y-6",children:[b("div",{className:"mng-flex mng-items-center mng-justify-between",children:[n("h2",{className:"mng-text-2xl mng-font-bold mng-text-slate-800",children:"Orders Management"}),n("button",{className:"mng-bg-blue-600 mng-text-white mng-px-4 mng-py-2 mng-rounded-lg mng-text-sm mng-font-medium hover:mng-bg-blue-700 mng-transition-colors",children:"Export Orders"})]}),n("div",{className:"mng-bg-white mng-rounded-xl mng-border mng-border-slate-200 mng-shadow-sm mng-overflow-hidden",children:b("table",{className:"mng-w-full mng-text-left mng-border-collapse",children:[n("thead",{children:b("tr",{className:"mng-bg-slate-50 mng-border-b mng-border-slate-200",children:[n("th",{className:"mng-px-6 mng-py-4 mng-text-xs mng-font-semibold mng-text-slate-500 mng-uppercase",children:"Order ID"}),n("th",{className:"mng-px-6 mng-py-4 mng-text-xs mng-font-semibold mng-text-slate-500 mng-uppercase",children:"Customer"}),n("th",{className:"mng-px-6 mng-py-4 mng-text-xs mng-font-semibold mng-text-slate-500 mng-uppercase",children:"Status"}),n("th",{className:"mng-px-6 mng-py-4 mng-text-xs mng-font-semibold mng-text-slate-500 mng-uppercase",children:"Total"}),n("th",{className:"mng-px-6 mng-py-4 mng-text-xs mng-font-semibold mng-text-slate-500 mng-uppercase",children:"Date"})]})}),n("tbody",{className:"mng-divide-y mng-divide-slate-200",children:U.map(e=>b("tr",{className:"hover:mng-bg-slate-50 mng-transition-colors",children:[n("td",{className:"mng-px-6 mng-py-4 mng-text-sm mng-font-medium mng-text-blue-600",children:e.id}),n("td",{className:"mng-px-6 mng-py-4 mng-text-sm mng-text-slate-600",children:e.customer}),n("td",{className:"mng-px-6 mng-py-4",children:n("span",{className:`mng-px-2.5 mng-py-0.5 mng-rounded-full mng-text-xs mng-font-medium ${q(e.status)}`,children:e.status})}),n("td",{className:"mng-px-6 mng-py-4 mng-text-sm mng-font-semibold mng-text-slate-900",children:e.total}),n("td",{className:"mng-px-6 mng-py-4 mng-text-sm mng-text-slate-500",children:e.date})]},e.id))})]})})]});import{jsx as t,jsxs as p}from"react/jsx-runtime";var Q=[{id:"1",name:"Ion Popescu",email:"ion.popescu@example.com",orders:12,totalSpent:"\u20AC1,234.56",joined:"2024-01-15"},{id:"2",name:"Elena Radu",email:"elena.radu@example.com",orders:8,totalSpent:"\u20AC876.32",joined:"2024-02-20"},{id:"3",name:"Mihai Sandu",email:"mihai.sandu@example.com",orders:15,totalSpent:"\u20AC2,103.45",joined:"2023-11-10"},{id:"4",name:"Ana Ionescu",email:"ana.ionescu@example.com",orders:5,totalSpent:"\u20AC543.21",joined:"2024-03-05"}],C=()=>p("div",{className:"mng-space-y-6",children:[p("div",{className:"mng-flex mng-items-center mng-justify-between",children:[t("h2",{className:"mng-text-2xl mng-font-bold mng-text-slate-800",children:"Customers"}),t("button",{className:"mng-bg-blue-600 mng-text-white mng-px-4 mng-py-2 mng-rounded-lg mng-text-sm mng-font-medium hover:mng-bg-blue-700 mng-transition-colors",children:"Add Customer"})]}),t("div",{className:"mng-bg-white mng-rounded-xl mng-border mng-border-slate-200 mng-shadow-sm mng-overflow-hidden",children:p("table",{className:"mng-w-full mng-text-left mng-border-collapse",children:[t("thead",{children:p("tr",{className:"mng-bg-slate-50 mng-border-b mng-border-slate-200",children:[t("th",{className:"mng-px-6 mng-py-4 mng-text-xs mng-font-semibold mng-text-slate-500 mng-uppercase",children:"Customer"}),t("th",{className:"mng-px-6 mng-py-4 mng-text-xs mng-font-semibold mng-text-slate-500 mng-uppercase",children:"Email"}),t("th",{className:"mng-px-6 mng-py-4 mng-text-xs mng-font-semibold mng-text-slate-500 mng-uppercase",children:"Orders"}),t("th",{className:"mng-px-6 mng-py-4 mng-text-xs mng-font-semibold mng-text-slate-500 mng-uppercase",children:"Total Spent"}),t("th",{className:"mng-px-6 mng-py-4 mng-text-xs mng-font-semibold mng-text-slate-500 mng-uppercase",children:"Joined"})]})}),t("tbody",{className:"mng-divide-y mng-divide-slate-200",children:Q.map(e=>p("tr",{className:"hover:mng-bg-slate-50 mng-transition-colors",children:[t("td",{className:"mng-px-6 mng-py-4",children:p("div",{className:"mng-flex mng-items-center mng-gap-3",children:[t("div",{className:"mng-w-10 mng-h-10 mng-rounded-full mng-bg-blue-100 mng-flex mng-items-center mng-justify-center mng-text-blue-600 mng-font-semibold",children:e.name.charAt(0)}),t("span",{className:"mng-text-sm mng-font-medium mng-text-slate-900",children:e.name})]})}),t("td",{className:"mng-px-6 mng-py-4 mng-text-sm mng-text-slate-600",children:e.email}),t("td",{className:"mng-px-6 mng-py-4 mng-text-sm mng-text-slate-900",children:e.orders}),t("td",{className:"mng-px-6 mng-py-4 mng-text-sm mng-font-semibold mng-text-slate-900",children:e.totalSpent}),t("td",{className:"mng-px-6 mng-py-4 mng-text-sm mng-text-slate-500",children:e.joined})]},e.id))})]})})]});import{jsx as v,jsxs as $}from"react/jsx-runtime";var R=()=>$("div",{className:"mng-space-y-6",children:[$("div",{className:"mng-flex mng-items-center mng-justify-between",children:[v("h2",{className:"mng-text-2xl mng-font-bold mng-text-slate-800",children:"Products"}),v("button",{className:"mng-bg-blue-600 mng-text-white mng-px-4 mng-py-2 mng-rounded-lg mng-text-sm mng-font-medium hover:mng-bg-blue-700 mng-transition-colors",children:"Add Product"})]}),v("div",{className:"mng-bg-white mng-rounded-xl mng-border mng-border-slate-200 mng-shadow-sm mng-p-12 mng-flex mng-items-center mng-justify-center mng-min-h-96",children:v("p",{className:"mng-text-slate-400 mng-italic",children:"Products management coming soon..."})})]});import{jsx as g,jsxs as i}from"react/jsx-runtime";var A=()=>{let{config:e}=c();return i("div",{className:"mng-space-y-6",children:[g("h2",{className:"mng-text-2xl mng-font-bold mng-text-slate-800",children:"Settings"}),i("div",{className:"mng-bg-white mng-rounded-xl mng-border mng-border-slate-200 mng-shadow-sm mng-p-6 mng-space-y-6",children:[i("div",{children:[g("h3",{className:"mng-text-lg mng-font-semibold mng-text-slate-800 mng-mb-4",children:"General Settings"}),i("div",{className:"mng-space-y-4",children:[i("div",{children:[g("label",{className:"mng-block mng-text-sm mng-font-medium mng-text-slate-700 mng-mb-2",children:"Application Name"}),g("input",{type:"text",disabled:!0,value:e.appName,className:"mng-w-full mng-px-4 mng-py-2 mng-border mng-border-slate-300 mng-rounded-lg mng-bg-slate-50 mng-text-slate-500"}),g("p",{className:"mng-text-xs mng-text-slate-500 mng-mt-1",children:"Configured via ManagoProvider"})]}),i("div",{children:[g("label",{className:"mng-block mng-text-sm mng-font-medium mng-text-slate-700 mng-mb-2",children:"API Endpoint"}),g("input",{type:"text",disabled:!0,value:e.apiEndpoint||"Not configured",className:"mng-w-full mng-px-4 mng-py-2 mng-border mng-border-slate-300 mng-rounded-lg mng-bg-slate-50 mng-text-slate-500"})]})]})]}),i("div",{className:"mng-border-t mng-border-slate-200 mng-pt-6",children:[g("h3",{className:"mng-text-lg mng-font-semibold mng-text-slate-800 mng-mb-4",children:"Menu Configuration"}),g("div",{className:"mng-space-y-2",children:Object.entries(e.menu||{}).map(([m,s])=>i("div",{className:"mng-flex mng-items-center mng-justify-between",children:[g("span",{className:"mng-text-sm mng-text-slate-700 mng-capitalize",children:m}),g("span",{className:`mng-text-sm mng-font-medium ${s?"mng-text-green-600":"mng-text-red-600"}`,children:s?"Enabled":"Disabled"})]},m))})]})]})]})};import{jsx as o,jsxs as ee}from"react/jsx-runtime";var _=({apiKey:e,config:m,basePath:s="/admin"})=>{let u=Y(),a=Z(),[S,L]=V(!1);X(()=>{L(!0)},[]);let d=(x=>x.startsWith(s)&&x.slice(s.length)||"/")(u),O=x=>{let D=x==="/"?s:`${s}${x}`;a.push(D)};return S?o(k,{apiKey:e,config:m,navigate:O,currentPath:d,children:o(W,{children:d==="/"||d===""?o(P,{}):d.startsWith("/orders")?o(M,{}):d.startsWith("/customers")?o(C,{}):d.startsWith("/products")?o(R,{}):d.startsWith("/settings")?o(A,{}):o("div",{className:"mng-flex mng-items-center mng-justify-center mng-h-full",children:ee("div",{className:"mng-text-center",children:[o("h2",{className:"mng-text-2xl mng-font-bold mng-text-slate-800 mng-mb-2",children:"Page Not Found"}),o("p",{className:"mng-text-slate-600 mng-mb-4",children:"The page you're looking for doesn't exist."}),o("button",{onClick:()=>O("/"),className:"mng-bg-blue-600 mng-text-white mng-px-4 mng-py-2 mng-rounded-lg mng-text-sm mng-font-medium hover:mng-bg-blue-700",children:"Go to Dashboard"})]})})})}):null};export{_ as ManagoAdmin,c as useManago};
|
|
6
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/adapters/nextjs/ManagoAdmin.tsx","../../../src/providers/ManagoProvider.tsx","../../../src/hooks/useNavigation.ts","../../../src/core/components/Sidebar.tsx","../../../src/core/components/Header.tsx","../../../src/core/components/Layout.tsx","../../../src/core/pages/Dashboard.tsx","../../../src/core/pages/Orders.tsx","../../../src/core/pages/Customers.tsx","../../../src/core/pages/Products.tsx","../../../src/core/pages/Settings.tsx"],"sourcesContent":["// @ts-nocheck - Next.js is a peer dependency\n'use client';\n\nimport React, { useState, useEffect } from 'react';\nimport { usePathname, useRouter } from 'next/navigation';\nimport { ManagoProvider as BaseManagoProvider } from '../../providers/ManagoProvider';\nimport { Layout } from '../../core/components/Layout';\nimport { Dashboard, Orders, Customers, Products, Settings } from '../../core/pages';\nimport type { ManagoConfig } from '../../types';\n\ninterface ManagoAdminProps {\n apiKey: string;\n config: ManagoConfig;\n basePath?: string;\n}\n\n/**\n * Next.js App Router adapter for Manago Admin\n *\n * Usage:\n * Create app/admin/[[...slug]]/page.tsx with:\n *\n * 'use client'\n * import { ManagoAdmin } from '@manago/admin/nextjs'\n *\n * export default function AdminPage() {\n * return <ManagoAdmin apiKey=\"...\" config={{ appName: \"My Store\" }} />\n * }\n */\nexport const ManagoAdmin = ({ apiKey, config, basePath = '/admin' }: ManagoAdminProps) => {\n const pathname = usePathname();\n const router = useRouter();\n const [mounted, setMounted] = useState(false);\n\n useEffect(() => {\n setMounted(true);\n }, []);\n\n // Extract the route path relative to basePath\n const getRelativePath = (fullPath: string): string => {\n if (!fullPath.startsWith(basePath)) return '/';\n const relative = fullPath.slice(basePath.length) || '/';\n return relative;\n };\n\n const currentPath = getRelativePath(pathname);\n\n const navigate = (path: string) => {\n const fullPath = path === '/' ? basePath : `${basePath}${path}`;\n router.push(fullPath);\n };\n\n // Prevent hydration mismatch\n if (!mounted) {\n return null;\n }\n\n // Route to component mapping\n const renderPage = () => {\n if (currentPath === '/' || currentPath === '') {\n return <Dashboard />;\n }\n if (currentPath.startsWith('/orders')) {\n return <Orders />;\n }\n if (currentPath.startsWith('/customers')) {\n return <Customers />;\n }\n if (currentPath.startsWith('/products')) {\n return <Products />;\n }\n if (currentPath.startsWith('/settings')) {\n return <Settings />;\n }\n\n // 404 fallback\n return (\n <div className=\"mng-flex mng-items-center mng-justify-center mng-h-full\">\n <div className=\"mng-text-center\">\n <h2 className=\"mng-text-2xl mng-font-bold mng-text-slate-800 mng-mb-2\">\n Page Not Found\n </h2>\n <p className=\"mng-text-slate-600 mng-mb-4\">\n The page you're looking for doesn't exist.\n </p>\n <button\n onClick={() => navigate('/')}\n className=\"mng-bg-blue-600 mng-text-white mng-px-4 mng-py-2 mng-rounded-lg mng-text-sm mng-font-medium hover:mng-bg-blue-700\"\n >\n Go to Dashboard\n </button>\n </div>\n </div>\n );\n };\n\n return (\n <BaseManagoProvider\n apiKey={apiKey}\n config={config}\n navigate={navigate}\n currentPath={currentPath}\n >\n <Layout>{renderPage()}</Layout>\n </BaseManagoProvider>\n );\n};\n","import React, { createContext, ReactNode } from 'react';\nimport type { ManagoConfig, ManagoContextType } from '../types';\n\nexport const ManagoContext = createContext<ManagoContextType | undefined>(undefined);\n\ninterface ManagoProviderProps {\n children: ReactNode;\n apiKey: string;\n config: ManagoConfig;\n navigate: (path: string) => void;\n currentPath: string;\n}\n\nexport const ManagoProvider = ({\n children,\n apiKey,\n config,\n navigate,\n currentPath,\n}: ManagoProviderProps) => {\n return (\n <ManagoContext.Provider value={{ apiKey, config, navigate, currentPath }}>\n {children}\n </ManagoContext.Provider>\n );\n};\n\nexport const useManago = () => {\n const context = React.useContext(ManagoContext);\n if (!context) throw new Error('useManago must be used within ManagoProvider');\n return context;\n};","import { useContext } from 'react';\nimport { ManagoContext } from '../providers/ManagoProvider';\n\n/**\n * Hook for framework-agnostic navigation\n * Uses the navigation adapter provided by the framework-specific ManagoAdmin component\n */\nexport const useNavigation = () => {\n const context = useContext(ManagoContext);\n\n if (!context) {\n throw new Error('useNavigation must be used within ManagoProvider');\n }\n\n return {\n navigate: context.navigate,\n currentPath: context.currentPath,\n isActive: (path: string) => {\n // Handle both exact matches and nested routes\n if (path === '/') {\n return context.currentPath === '/' || context.currentPath === '';\n }\n return context.currentPath.startsWith(path);\n },\n };\n};\n","import React from 'react';\nimport { useManago } from '../../providers/ManagoProvider';\nimport { useNavigation } from '../../hooks/useNavigation';\nimport type { MenuItem } from '../../types';\n\nconst defaultMenuItems: MenuItem[] = [\n { id: 'dashboard', label: 'Dashboard', path: '/' },\n { id: 'orders', label: 'Orders', path: '/orders' },\n { id: 'customers', label: 'Customers', path: '/customers' },\n { id: 'products', label: 'Products', path: '/products' },\n { id: 'settings', label: 'Settings', path: '/settings' },\n];\n\nexport const Sidebar = () => {\n const { config } = useManago();\n const { navigate, isActive } = useNavigation();\n\n const menuItems = defaultMenuItems.filter((item) => {\n const menuConfig = config.menu || {};\n // If menu item is explicitly set to false, hide it\n if (menuConfig[item.id as keyof typeof menuConfig] === false) {\n return false;\n }\n return true;\n });\n\n return (\n <aside className=\"mng-w-64 mng-bg-slate-900 mng-text-white mng-flex mng-flex-col\">\n {/* Logo / Brand */}\n <div className=\"mng-p-6 mng-flex mng-items-center mng-gap-3\">\n {config.theme?.logo ? (\n <img src={config.theme.logo} alt={config.appName} className=\"mng-h-8\" />\n ) : (\n <>\n <div className=\"mng-w-8 mng-h-8 mng-bg-blue-500 mng-rounded-md mng-flex mng-items-center mng-justify-center mng-font-bold\">\n {config.appName.charAt(0).toUpperCase()}\n </div>\n <span className=\"mng-text-xl mng-font-bold mng-tracking-tight\">\n {config.appName || 'Manago'}\n </span>\n </>\n )}\n </div>\n\n {/* Navigation Menu */}\n <nav className=\"mng-flex-1 mng-px-3 mng-space-y-1\">\n {menuItems.map((item) => (\n <button\n key={item.id}\n onClick={() => navigate(item.path)}\n className={`\n mng-w-full mng-flex mng-items-center mng-px-4 mng-py-2.5 mng-text-sm mng-rounded-lg\n mng-transition-colors mng-text-left\n ${\n isActive(item.path)\n ? 'mng-bg-blue-600 mng-text-white'\n : 'mng-text-slate-300 hover:mng-bg-slate-800 hover:mng-text-white'\n }\n `}\n >\n {item.icon && <span className=\"mng-mr-3\">{item.icon}</span>}\n {item.label}\n </button>\n ))}\n </nav>\n\n {/* Footer */}\n <div className=\"mng-p-4 mng-border-t mng-border-slate-800\">\n <p className=\"mng-text-xs mng-text-slate-500 mng-text-center\">\n Powered by Manago\n </p>\n </div>\n </aside>\n );\n};\n","import React from 'react';\nimport { useManago } from '../../providers/ManagoProvider';\n\ninterface HeaderProps {\n title?: string;\n}\n\nexport const Header = ({ title = 'Admin Panel' }: HeaderProps) => {\n const { config } = useManago();\n\n return (\n <header className=\"mng-h-16 mng-bg-white mng-border-b mng-border-slate-200 mng-flex mng-items-center mng-px-8 mng-justify-between\">\n <h1 className=\"mng-text-sm mng-font-medium mng-text-slate-500\">{title}</h1>\n\n <div className=\"mng-flex mng-items-center mng-gap-4\">\n <span className=\"mng-text-sm mng-text-slate-600\">{config.appName}</span>\n </div>\n </header>\n );\n};\n","import React, { ReactNode } from 'react';\nimport { Sidebar } from './Sidebar';\nimport { Header } from './Header';\n\ninterface LayoutProps {\n children: ReactNode;\n}\n\nexport const Layout = ({ children }: LayoutProps) => {\n return (\n <div className=\"mng-flex mng-h-screen mng-bg-slate-50 mng-font-sans\">\n <Sidebar />\n\n <div className=\"mng-flex-1 mng-flex mng-flex-col mng-overflow-hidden\">\n <Header />\n <main className=\"mng-flex-1 mng-overflow-y-auto mng-p-8\">\n {children}\n </main>\n </div>\n </div>\n );\n};\n","import React from 'react';\n\nexport const Dashboard = () => {\n return (\n <div className=\"mng-space-y-6\">\n <div className=\"mng-flex mng-items-center mng-justify-between\">\n <h2 className=\"mng-text-2xl mng-font-bold mng-text-slate-800\">Overview</h2>\n <button className=\"mng-bg-blue-600 mng-text-white mng-px-4 mng-py-2 mng-rounded-lg mng-text-sm mng-font-medium hover:mng-bg-blue-700 mng-transition-colors\">\n Download Report\n </button>\n </div>\n\n {/* Stats Cards */}\n <div className=\"mng-grid mng-grid-cols-1 md:mng-grid-cols-3 mng-gap-6\">\n {[\n { label: 'Total Revenue', value: '€45,231.89', change: '+20.1%', color: 'mng-text-green-600' },\n { label: 'Active Orders', value: '154', change: '+12.5%', color: 'mng-text-green-600' },\n { label: 'Refund Rate', value: '1.2%', change: '-0.4%', color: 'mng-text-red-600' },\n ].map((stat) => (\n <div key={stat.label} className=\"mng-bg-white mng-p-6 mng-rounded-xl mng-border mng-border-slate-200 mng-shadow-sm\">\n <p className=\"mng-text-sm mng-font-medium mng-text-slate-500\">{stat.label}</p>\n <div className=\"mng-flex mng-items-baseline mng-gap-2 mng-mt-2\">\n <h3 className=\"mng-text-3xl mng-font-bold mng-text-slate-900\">{stat.value}</h3>\n <span className={`mng-text-xs mng-font-medium ${stat.color}`}>{stat.change}</span>\n </div>\n </div>\n ))}\n </div>\n\n {/* Chart Placeholder */}\n <div className=\"mng-bg-white mng-rounded-xl mng-border mng-border-slate-200 mng-shadow-sm mng-h-64 mng-flex mng-items-center mng-justify-center\">\n <p className=\"mng-text-slate-400 mng-italic\">Chart visualization will be here...</p>\n </div>\n </div>\n );\n};\n","import React from 'react';\n\nconst mockOrders = [\n { id: '#ORD-7721', customer: 'Ion Popescu', status: 'Completed', total: '€120.00', date: 'Acum 2 ore' },\n { id: '#ORD-7722', customer: 'Elena Radu', status: 'Processing', total: '€45.50', date: 'Acum 5 ore' },\n { id: '#ORD-7723', customer: 'Mihai Sandu', status: 'Pending', total: '€210.99', date: 'Ieri' },\n { id: '#ORD-7724', customer: 'Ana Ionescu', status: 'Completed', total: '€89.99', date: 'Ieri' },\n { id: '#ORD-7725', customer: 'George Popa', status: 'Cancelled', total: '€156.00', date: 'Acum 2 zile' },\n];\n\nconst getStatusColor = (status: string) => {\n switch (status) {\n case 'Completed':\n return 'mng-bg-green-100 mng-text-green-700';\n case 'Processing':\n return 'mng-bg-blue-100 mng-text-blue-700';\n case 'Pending':\n return 'mng-bg-yellow-100 mng-text-yellow-700';\n case 'Cancelled':\n return 'mng-bg-red-100 mng-text-red-700';\n default:\n return 'mng-bg-slate-100 mng-text-slate-700';\n }\n};\n\nexport const Orders = () => {\n return (\n <div className=\"mng-space-y-6\">\n <div className=\"mng-flex mng-items-center mng-justify-between\">\n <h2 className=\"mng-text-2xl mng-font-bold mng-text-slate-800\">Orders Management</h2>\n <button className=\"mng-bg-blue-600 mng-text-white mng-px-4 mng-py-2 mng-rounded-lg mng-text-sm mng-font-medium hover:mng-bg-blue-700 mng-transition-colors\">\n Export Orders\n </button>\n </div>\n\n <div className=\"mng-bg-white mng-rounded-xl mng-border mng-border-slate-200 mng-shadow-sm mng-overflow-hidden\">\n <table className=\"mng-w-full mng-text-left mng-border-collapse\">\n <thead>\n <tr className=\"mng-bg-slate-50 mng-border-b mng-border-slate-200\">\n <th className=\"mng-px-6 mng-py-4 mng-text-xs mng-font-semibold mng-text-slate-500 mng-uppercase\">\n Order ID\n </th>\n <th className=\"mng-px-6 mng-py-4 mng-text-xs mng-font-semibold mng-text-slate-500 mng-uppercase\">\n Customer\n </th>\n <th className=\"mng-px-6 mng-py-4 mng-text-xs mng-font-semibold mng-text-slate-500 mng-uppercase\">\n Status\n </th>\n <th className=\"mng-px-6 mng-py-4 mng-text-xs mng-font-semibold mng-text-slate-500 mng-uppercase\">\n Total\n </th>\n <th className=\"mng-px-6 mng-py-4 mng-text-xs mng-font-semibold mng-text-slate-500 mng-uppercase\">\n Date\n </th>\n </tr>\n </thead>\n <tbody className=\"mng-divide-y mng-divide-slate-200\">\n {mockOrders.map((order) => (\n <tr key={order.id} className=\"hover:mng-bg-slate-50 mng-transition-colors\">\n <td className=\"mng-px-6 mng-py-4 mng-text-sm mng-font-medium mng-text-blue-600\">\n {order.id}\n </td>\n <td className=\"mng-px-6 mng-py-4 mng-text-sm mng-text-slate-600\">\n {order.customer}\n </td>\n <td className=\"mng-px-6 mng-py-4\">\n <span\n className={`mng-px-2.5 mng-py-0.5 mng-rounded-full mng-text-xs mng-font-medium ${getStatusColor(\n order.status\n )}`}\n >\n {order.status}\n </span>\n </td>\n <td className=\"mng-px-6 mng-py-4 mng-text-sm mng-font-semibold mng-text-slate-900\">\n {order.total}\n </td>\n <td className=\"mng-px-6 mng-py-4 mng-text-sm mng-text-slate-500\">\n {order.date}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </div>\n );\n};\n","import React from 'react';\n\nconst mockCustomers = [\n { id: '1', name: 'Ion Popescu', email: 'ion.popescu@example.com', orders: 12, totalSpent: '€1,234.56', joined: '2024-01-15' },\n { id: '2', name: 'Elena Radu', email: 'elena.radu@example.com', orders: 8, totalSpent: '€876.32', joined: '2024-02-20' },\n { id: '3', name: 'Mihai Sandu', email: 'mihai.sandu@example.com', orders: 15, totalSpent: '€2,103.45', joined: '2023-11-10' },\n { id: '4', name: 'Ana Ionescu', email: 'ana.ionescu@example.com', orders: 5, totalSpent: '€543.21', joined: '2024-03-05' },\n];\n\nexport const Customers = () => {\n return (\n <div className=\"mng-space-y-6\">\n <div className=\"mng-flex mng-items-center mng-justify-between\">\n <h2 className=\"mng-text-2xl mng-font-bold mng-text-slate-800\">Customers</h2>\n <button className=\"mng-bg-blue-600 mng-text-white mng-px-4 mng-py-2 mng-rounded-lg mng-text-sm mng-font-medium hover:mng-bg-blue-700 mng-transition-colors\">\n Add Customer\n </button>\n </div>\n\n <div className=\"mng-bg-white mng-rounded-xl mng-border mng-border-slate-200 mng-shadow-sm mng-overflow-hidden\">\n <table className=\"mng-w-full mng-text-left mng-border-collapse\">\n <thead>\n <tr className=\"mng-bg-slate-50 mng-border-b mng-border-slate-200\">\n <th className=\"mng-px-6 mng-py-4 mng-text-xs mng-font-semibold mng-text-slate-500 mng-uppercase\">\n Customer\n </th>\n <th className=\"mng-px-6 mng-py-4 mng-text-xs mng-font-semibold mng-text-slate-500 mng-uppercase\">\n Email\n </th>\n <th className=\"mng-px-6 mng-py-4 mng-text-xs mng-font-semibold mng-text-slate-500 mng-uppercase\">\n Orders\n </th>\n <th className=\"mng-px-6 mng-py-4 mng-text-xs mng-font-semibold mng-text-slate-500 mng-uppercase\">\n Total Spent\n </th>\n <th className=\"mng-px-6 mng-py-4 mng-text-xs mng-font-semibold mng-text-slate-500 mng-uppercase\">\n Joined\n </th>\n </tr>\n </thead>\n <tbody className=\"mng-divide-y mng-divide-slate-200\">\n {mockCustomers.map((customer) => (\n <tr key={customer.id} className=\"hover:mng-bg-slate-50 mng-transition-colors\">\n <td className=\"mng-px-6 mng-py-4\">\n <div className=\"mng-flex mng-items-center mng-gap-3\">\n <div className=\"mng-w-10 mng-h-10 mng-rounded-full mng-bg-blue-100 mng-flex mng-items-center mng-justify-center mng-text-blue-600 mng-font-semibold\">\n {customer.name.charAt(0)}\n </div>\n <span className=\"mng-text-sm mng-font-medium mng-text-slate-900\">\n {customer.name}\n </span>\n </div>\n </td>\n <td className=\"mng-px-6 mng-py-4 mng-text-sm mng-text-slate-600\">\n {customer.email}\n </td>\n <td className=\"mng-px-6 mng-py-4 mng-text-sm mng-text-slate-900\">\n {customer.orders}\n </td>\n <td className=\"mng-px-6 mng-py-4 mng-text-sm mng-font-semibold mng-text-slate-900\">\n {customer.totalSpent}\n </td>\n <td className=\"mng-px-6 mng-py-4 mng-text-sm mng-text-slate-500\">\n {customer.joined}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </div>\n );\n};\n","import React from 'react';\n\nexport const Products = () => {\n return (\n <div className=\"mng-space-y-6\">\n <div className=\"mng-flex mng-items-center mng-justify-between\">\n <h2 className=\"mng-text-2xl mng-font-bold mng-text-slate-800\">Products</h2>\n <button className=\"mng-bg-blue-600 mng-text-white mng-px-4 mng-py-2 mng-rounded-lg mng-text-sm mng-font-medium hover:mng-bg-blue-700 mng-transition-colors\">\n Add Product\n </button>\n </div>\n\n <div className=\"mng-bg-white mng-rounded-xl mng-border mng-border-slate-200 mng-shadow-sm mng-p-12 mng-flex mng-items-center mng-justify-center mng-min-h-96\">\n <p className=\"mng-text-slate-400 mng-italic\">Products management coming soon...</p>\n </div>\n </div>\n );\n};\n","import React from 'react';\nimport { useManago } from '../../providers/ManagoProvider';\n\nexport const Settings = () => {\n const { config } = useManago();\n\n return (\n <div className=\"mng-space-y-6\">\n <h2 className=\"mng-text-2xl mng-font-bold mng-text-slate-800\">Settings</h2>\n\n <div className=\"mng-bg-white mng-rounded-xl mng-border mng-border-slate-200 mng-shadow-sm mng-p-6 mng-space-y-6\">\n <div>\n <h3 className=\"mng-text-lg mng-font-semibold mng-text-slate-800 mng-mb-4\">\n General Settings\n </h3>\n\n <div className=\"mng-space-y-4\">\n <div>\n <label className=\"mng-block mng-text-sm mng-font-medium mng-text-slate-700 mng-mb-2\">\n Application Name\n </label>\n <input\n type=\"text\"\n disabled\n value={config.appName}\n className=\"mng-w-full mng-px-4 mng-py-2 mng-border mng-border-slate-300 mng-rounded-lg mng-bg-slate-50 mng-text-slate-500\"\n />\n <p className=\"mng-text-xs mng-text-slate-500 mng-mt-1\">\n Configured via ManagoProvider\n </p>\n </div>\n\n <div>\n <label className=\"mng-block mng-text-sm mng-font-medium mng-text-slate-700 mng-mb-2\">\n API Endpoint\n </label>\n <input\n type=\"text\"\n disabled\n value={config.apiEndpoint || 'Not configured'}\n className=\"mng-w-full mng-px-4 mng-py-2 mng-border mng-border-slate-300 mng-rounded-lg mng-bg-slate-50 mng-text-slate-500\"\n />\n </div>\n </div>\n </div>\n\n <div className=\"mng-border-t mng-border-slate-200 mng-pt-6\">\n <h3 className=\"mng-text-lg mng-font-semibold mng-text-slate-800 mng-mb-4\">\n Menu Configuration\n </h3>\n <div className=\"mng-space-y-2\">\n {Object.entries(config.menu || {}).map(([key, value]) => (\n <div key={key} className=\"mng-flex mng-items-center mng-justify-between\">\n <span className=\"mng-text-sm mng-text-slate-700 mng-capitalize\">{key}</span>\n <span\n className={`mng-text-sm mng-font-medium ${\n value ? 'mng-text-green-600' : 'mng-text-red-600'\n }`}\n >\n {value ? 'Enabled' : 'Disabled'}\n </span>\n </div>\n ))}\n </div>\n </div>\n </div>\n </div>\n );\n};\n"],"mappings":"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","names":["useState","useEffect","usePathname","useRouter","React","createContext","jsx","ManagoContext","ManagoProvider","children","apiKey","config","navigate","currentPath","useManago","context","useContext","useNavigation","context","useContext","ManagoContext","path","Fragment","jsx","jsxs","defaultMenuItems","Sidebar","config","useManago","navigate","isActive","useNavigation","menuItems","item","jsx","jsxs","Header","title","config","useManago","jsx","jsxs","Layout","children","Sidebar","Header","jsx","jsxs","Dashboard","stat","jsx","jsxs","mockOrders","getStatusColor","status","Orders","order","jsx","jsxs","mockCustomers","Customers","customer","jsx","jsxs","Products","jsx","jsxs","Settings","config","useManago","key","value","jsx","jsxs","ManagoAdmin","apiKey","config","basePath","pathname","usePathname","router","useRouter","mounted","setMounted","useState","useEffect","currentPath","fullPath","navigate","path","ManagoProvider","Layout","Dashboard","Orders","Customers","Products","Settings"]}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import { a as ManagoConfig } from '../../ManagoProvider-DtovqU61.mjs';
|
|
3
|
+
export { u as useManago } from '../../ManagoProvider-DtovqU61.mjs';
|
|
4
|
+
import 'react';
|
|
5
|
+
|
|
6
|
+
interface ManagoAdminProps {
|
|
7
|
+
apiKey: string;
|
|
8
|
+
config: ManagoConfig;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* React Router v6 adapter for Manago Admin
|
|
12
|
+
*
|
|
13
|
+
* Usage in your app:
|
|
14
|
+
*
|
|
15
|
+
* import { BrowserRouter, Routes, Route } from 'react-router-dom';
|
|
16
|
+
* import { ManagoAdmin } from '@manago/admin/react-router';
|
|
17
|
+
*
|
|
18
|
+
* function App() {
|
|
19
|
+
* return (
|
|
20
|
+
* <BrowserRouter>
|
|
21
|
+
* <Routes>
|
|
22
|
+
* <Route path="/admin/*" element={
|
|
23
|
+
* <ManagoAdmin apiKey="..." config={{ appName: "My Store" }} />
|
|
24
|
+
* } />
|
|
25
|
+
* </Routes>
|
|
26
|
+
* </BrowserRouter>
|
|
27
|
+
* );
|
|
28
|
+
* }
|
|
29
|
+
*/
|
|
30
|
+
declare const ManagoAdmin: ({ apiKey, config }: ManagoAdminProps) => react_jsx_runtime.JSX.Element;
|
|
31
|
+
|
|
32
|
+
export { ManagoAdmin, ManagoConfig };
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import { a as ManagoConfig } from '../../ManagoProvider-DtovqU61.js';
|
|
3
|
+
export { u as useManago } from '../../ManagoProvider-DtovqU61.js';
|
|
4
|
+
import 'react';
|
|
5
|
+
|
|
6
|
+
interface ManagoAdminProps {
|
|
7
|
+
apiKey: string;
|
|
8
|
+
config: ManagoConfig;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* React Router v6 adapter for Manago Admin
|
|
12
|
+
*
|
|
13
|
+
* Usage in your app:
|
|
14
|
+
*
|
|
15
|
+
* import { BrowserRouter, Routes, Route } from 'react-router-dom';
|
|
16
|
+
* import { ManagoAdmin } from '@manago/admin/react-router';
|
|
17
|
+
*
|
|
18
|
+
* function App() {
|
|
19
|
+
* return (
|
|
20
|
+
* <BrowserRouter>
|
|
21
|
+
* <Routes>
|
|
22
|
+
* <Route path="/admin/*" element={
|
|
23
|
+
* <ManagoAdmin apiKey="..." config={{ appName: "My Store" }} />
|
|
24
|
+
* } />
|
|
25
|
+
* </Routes>
|
|
26
|
+
* </BrowserRouter>
|
|
27
|
+
* );
|
|
28
|
+
* }
|
|
29
|
+
*/
|
|
30
|
+
declare const ManagoAdmin: ({ apiKey, config }: ManagoAdminProps) => react_jsx_runtime.JSX.Element;
|
|
31
|
+
|
|
32
|
+
export { ManagoAdmin, ManagoConfig };
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";var j=Object.create;var b=Object.defineProperty;var L=Object.getOwnPropertyDescriptor;var T=Object.getOwnPropertyNames;var H=Object.getPrototypeOf,$=Object.prototype.hasOwnProperty;var z=(e,t)=>{for(var g in t)b(e,g,{get:t[g],enumerable:!0})},C=(e,t,g,d)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of T(t))!$.call(e,o)&&o!==g&&b(e,o,{get:()=>t[o],enumerable:!(d=L(t,o))||d.enumerable});return e};var G=(e,t,g)=>(g=e!=null?j(H(e)):{},C(t||!e||!e.__esModule?b(g,"default",{value:e,enumerable:!0}):g,e)),K=e=>C(b({},"__esModule",{value:!0}),e);var q={};z(q,{ManagoAdmin:()=>E,useManago:()=>c});module.exports=K(q);var i=require("react-router-dom");var f=G(require("react")),A=require("react/jsx-runtime"),h=(0,f.createContext)(void 0),R=({children:e,apiKey:t,config:g,navigate:d,currentPath:o})=>(0,A.jsx)(h.Provider,{value:{apiKey:t,config:g,navigate:d,currentPath:o},children:e}),c=()=>{let e=f.default.useContext(h);if(!e)throw new Error("useManago must be used within ManagoProvider");return e};var S=require("react");var O=()=>{let e=(0,S.useContext)(h);if(!e)throw new Error("useNavigation must be used within ManagoProvider");return{navigate:e.navigate,currentPath:e.currentPath,isActive:t=>t==="/"?e.currentPath==="/"||e.currentPath==="":e.currentPath.startsWith(t)}};var r=require("react/jsx-runtime"),B=[{id:"dashboard",label:"Dashboard",path:"/"},{id:"orders",label:"Orders",path:"/orders"},{id:"customers",label:"Customers",path:"/customers"},{id:"products",label:"Products",path:"/products"},{id:"settings",label:"Settings",path:"/settings"}],D=()=>{let{config:e}=c(),{navigate:t,isActive:g}=O(),d=B.filter(o=>(e.menu||{})[o.id]!==!1);return(0,r.jsxs)("aside",{className:"mng-w-64 mng-bg-slate-900 mng-text-white mng-flex mng-flex-col",children:[(0,r.jsx)("div",{className:"mng-p-6 mng-flex mng-items-center mng-gap-3",children:e.theme?.logo?(0,r.jsx)("img",{src:e.theme.logo,alt:e.appName,className:"mng-h-8"}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("div",{className:"mng-w-8 mng-h-8 mng-bg-blue-500 mng-rounded-md mng-flex mng-items-center mng-justify-center mng-font-bold",children:e.appName.charAt(0).toUpperCase()}),(0,r.jsx)("span",{className:"mng-text-xl mng-font-bold mng-tracking-tight",children:e.appName||"Manago"})]})}),(0,r.jsx)("nav",{className:"mng-flex-1 mng-px-3 mng-space-y-1",children:d.map(o=>(0,r.jsxs)("button",{onClick:()=>t(o.path),className:`
|
|
2
|
+
mng-w-full mng-flex mng-items-center mng-px-4 mng-py-2.5 mng-text-sm mng-rounded-lg
|
|
3
|
+
mng-transition-colors mng-text-left
|
|
4
|
+
${g(o.path)?"mng-bg-blue-600 mng-text-white":"mng-text-slate-300 hover:mng-bg-slate-800 hover:mng-text-white"}
|
|
5
|
+
`,children:[o.icon&&(0,r.jsx)("span",{className:"mng-mr-3",children:o.icon}),o.label]},o.id))}),(0,r.jsx)("div",{className:"mng-p-4 mng-border-t mng-border-slate-800",children:(0,r.jsx)("p",{className:"mng-text-xs mng-text-slate-500 mng-text-center",children:"Powered by Manago"})})]})};var u=require("react/jsx-runtime"),k=({title:e="Admin Panel"})=>{let{config:t}=c();return(0,u.jsxs)("header",{className:"mng-h-16 mng-bg-white mng-border-b mng-border-slate-200 mng-flex mng-items-center mng-px-8 mng-justify-between",children:[(0,u.jsx)("h1",{className:"mng-text-sm mng-font-medium mng-text-slate-500",children:e}),(0,u.jsx)("div",{className:"mng-flex mng-items-center mng-gap-4",children:(0,u.jsx)("span",{className:"mng-text-sm mng-text-slate-600",children:t.appName})})]})};var x=require("react/jsx-runtime"),I=({children:e})=>(0,x.jsxs)("div",{className:"mng-flex mng-h-screen mng-bg-slate-50 mng-font-sans",children:[(0,x.jsx)(D,{}),(0,x.jsxs)("div",{className:"mng-flex-1 mng-flex mng-flex-col mng-overflow-hidden",children:[(0,x.jsx)(k,{}),(0,x.jsx)("main",{className:"mng-flex-1 mng-overflow-y-auto mng-p-8",children:e})]})]});var l=require("react/jsx-runtime"),v=()=>(0,l.jsxs)("div",{className:"mng-space-y-6",children:[(0,l.jsxs)("div",{className:"mng-flex mng-items-center mng-justify-between",children:[(0,l.jsx)("h2",{className:"mng-text-2xl mng-font-bold mng-text-slate-800",children:"Overview"}),(0,l.jsx)("button",{className:"mng-bg-blue-600 mng-text-white mng-px-4 mng-py-2 mng-rounded-lg mng-text-sm mng-font-medium hover:mng-bg-blue-700 mng-transition-colors",children:"Download Report"})]}),(0,l.jsx)("div",{className:"mng-grid mng-grid-cols-1 md:mng-grid-cols-3 mng-gap-6",children:[{label:"Total Revenue",value:"\u20AC45,231.89",change:"+20.1%",color:"mng-text-green-600"},{label:"Active Orders",value:"154",change:"+12.5%",color:"mng-text-green-600"},{label:"Refund Rate",value:"1.2%",change:"-0.4%",color:"mng-text-red-600"}].map(e=>(0,l.jsxs)("div",{className:"mng-bg-white mng-p-6 mng-rounded-xl mng-border mng-border-slate-200 mng-shadow-sm",children:[(0,l.jsx)("p",{className:"mng-text-sm mng-font-medium mng-text-slate-500",children:e.label}),(0,l.jsxs)("div",{className:"mng-flex mng-items-baseline mng-gap-2 mng-mt-2",children:[(0,l.jsx)("h3",{className:"mng-text-3xl mng-font-bold mng-text-slate-900",children:e.value}),(0,l.jsx)("span",{className:`mng-text-xs mng-font-medium ${e.color}`,children:e.change})]})]},e.label))}),(0,l.jsx)("div",{className:"mng-bg-white mng-rounded-xl mng-border mng-border-slate-200 mng-shadow-sm mng-h-64 mng-flex mng-items-center mng-justify-center",children:(0,l.jsx)("p",{className:"mng-text-slate-400 mng-italic",children:"Chart visualization will be here..."})})]});var m=require("react/jsx-runtime"),F=[{id:"#ORD-7721",customer:"Ion Popescu",status:"Completed",total:"\u20AC120.00",date:"Acum 2 ore"},{id:"#ORD-7722",customer:"Elena Radu",status:"Processing",total:"\u20AC45.50",date:"Acum 5 ore"},{id:"#ORD-7723",customer:"Mihai Sandu",status:"Pending",total:"\u20AC210.99",date:"Ieri"},{id:"#ORD-7724",customer:"Ana Ionescu",status:"Completed",total:"\u20AC89.99",date:"Ieri"},{id:"#ORD-7725",customer:"George Popa",status:"Cancelled",total:"\u20AC156.00",date:"Acum 2 zile"}],J=e=>{switch(e){case"Completed":return"mng-bg-green-100 mng-text-green-700";case"Processing":return"mng-bg-blue-100 mng-text-blue-700";case"Pending":return"mng-bg-yellow-100 mng-text-yellow-700";case"Cancelled":return"mng-bg-red-100 mng-text-red-700";default:return"mng-bg-slate-100 mng-text-slate-700"}},N=()=>(0,m.jsxs)("div",{className:"mng-space-y-6",children:[(0,m.jsxs)("div",{className:"mng-flex mng-items-center mng-justify-between",children:[(0,m.jsx)("h2",{className:"mng-text-2xl mng-font-bold mng-text-slate-800",children:"Orders Management"}),(0,m.jsx)("button",{className:"mng-bg-blue-600 mng-text-white mng-px-4 mng-py-2 mng-rounded-lg mng-text-sm mng-font-medium hover:mng-bg-blue-700 mng-transition-colors",children:"Export Orders"})]}),(0,m.jsx)("div",{className:"mng-bg-white mng-rounded-xl mng-border mng-border-slate-200 mng-shadow-sm mng-overflow-hidden",children:(0,m.jsxs)("table",{className:"mng-w-full mng-text-left mng-border-collapse",children:[(0,m.jsx)("thead",{children:(0,m.jsxs)("tr",{className:"mng-bg-slate-50 mng-border-b mng-border-slate-200",children:[(0,m.jsx)("th",{className:"mng-px-6 mng-py-4 mng-text-xs mng-font-semibold mng-text-slate-500 mng-uppercase",children:"Order ID"}),(0,m.jsx)("th",{className:"mng-px-6 mng-py-4 mng-text-xs mng-font-semibold mng-text-slate-500 mng-uppercase",children:"Customer"}),(0,m.jsx)("th",{className:"mng-px-6 mng-py-4 mng-text-xs mng-font-semibold mng-text-slate-500 mng-uppercase",children:"Status"}),(0,m.jsx)("th",{className:"mng-px-6 mng-py-4 mng-text-xs mng-font-semibold mng-text-slate-500 mng-uppercase",children:"Total"}),(0,m.jsx)("th",{className:"mng-px-6 mng-py-4 mng-text-xs mng-font-semibold mng-text-slate-500 mng-uppercase",children:"Date"})]})}),(0,m.jsx)("tbody",{className:"mng-divide-y mng-divide-slate-200",children:F.map(e=>(0,m.jsxs)("tr",{className:"hover:mng-bg-slate-50 mng-transition-colors",children:[(0,m.jsx)("td",{className:"mng-px-6 mng-py-4 mng-text-sm mng-font-medium mng-text-blue-600",children:e.id}),(0,m.jsx)("td",{className:"mng-px-6 mng-py-4 mng-text-sm mng-text-slate-600",children:e.customer}),(0,m.jsx)("td",{className:"mng-px-6 mng-py-4",children:(0,m.jsx)("span",{className:`mng-px-2.5 mng-py-0.5 mng-rounded-full mng-text-xs mng-font-medium ${J(e.status)}`,children:e.status})}),(0,m.jsx)("td",{className:"mng-px-6 mng-py-4 mng-text-sm mng-font-semibold mng-text-slate-900",children:e.total}),(0,m.jsx)("td",{className:"mng-px-6 mng-py-4 mng-text-sm mng-text-slate-500",children:e.date})]},e.id))})]})})]});var n=require("react/jsx-runtime"),U=[{id:"1",name:"Ion Popescu",email:"ion.popescu@example.com",orders:12,totalSpent:"\u20AC1,234.56",joined:"2024-01-15"},{id:"2",name:"Elena Radu",email:"elena.radu@example.com",orders:8,totalSpent:"\u20AC876.32",joined:"2024-02-20"},{id:"3",name:"Mihai Sandu",email:"mihai.sandu@example.com",orders:15,totalSpent:"\u20AC2,103.45",joined:"2023-11-10"},{id:"4",name:"Ana Ionescu",email:"ana.ionescu@example.com",orders:5,totalSpent:"\u20AC543.21",joined:"2024-03-05"}],y=()=>(0,n.jsxs)("div",{className:"mng-space-y-6",children:[(0,n.jsxs)("div",{className:"mng-flex mng-items-center mng-justify-between",children:[(0,n.jsx)("h2",{className:"mng-text-2xl mng-font-bold mng-text-slate-800",children:"Customers"}),(0,n.jsx)("button",{className:"mng-bg-blue-600 mng-text-white mng-px-4 mng-py-2 mng-rounded-lg mng-text-sm mng-font-medium hover:mng-bg-blue-700 mng-transition-colors",children:"Add Customer"})]}),(0,n.jsx)("div",{className:"mng-bg-white mng-rounded-xl mng-border mng-border-slate-200 mng-shadow-sm mng-overflow-hidden",children:(0,n.jsxs)("table",{className:"mng-w-full mng-text-left mng-border-collapse",children:[(0,n.jsx)("thead",{children:(0,n.jsxs)("tr",{className:"mng-bg-slate-50 mng-border-b mng-border-slate-200",children:[(0,n.jsx)("th",{className:"mng-px-6 mng-py-4 mng-text-xs mng-font-semibold mng-text-slate-500 mng-uppercase",children:"Customer"}),(0,n.jsx)("th",{className:"mng-px-6 mng-py-4 mng-text-xs mng-font-semibold mng-text-slate-500 mng-uppercase",children:"Email"}),(0,n.jsx)("th",{className:"mng-px-6 mng-py-4 mng-text-xs mng-font-semibold mng-text-slate-500 mng-uppercase",children:"Orders"}),(0,n.jsx)("th",{className:"mng-px-6 mng-py-4 mng-text-xs mng-font-semibold mng-text-slate-500 mng-uppercase",children:"Total Spent"}),(0,n.jsx)("th",{className:"mng-px-6 mng-py-4 mng-text-xs mng-font-semibold mng-text-slate-500 mng-uppercase",children:"Joined"})]})}),(0,n.jsx)("tbody",{className:"mng-divide-y mng-divide-slate-200",children:U.map(e=>(0,n.jsxs)("tr",{className:"hover:mng-bg-slate-50 mng-transition-colors",children:[(0,n.jsx)("td",{className:"mng-px-6 mng-py-4",children:(0,n.jsxs)("div",{className:"mng-flex mng-items-center mng-gap-3",children:[(0,n.jsx)("div",{className:"mng-w-10 mng-h-10 mng-rounded-full mng-bg-blue-100 mng-flex mng-items-center mng-justify-center mng-text-blue-600 mng-font-semibold",children:e.name.charAt(0)}),(0,n.jsx)("span",{className:"mng-text-sm mng-font-medium mng-text-slate-900",children:e.name})]})}),(0,n.jsx)("td",{className:"mng-px-6 mng-py-4 mng-text-sm mng-text-slate-600",children:e.email}),(0,n.jsx)("td",{className:"mng-px-6 mng-py-4 mng-text-sm mng-text-slate-900",children:e.orders}),(0,n.jsx)("td",{className:"mng-px-6 mng-py-4 mng-text-sm mng-font-semibold mng-text-slate-900",children:e.totalSpent}),(0,n.jsx)("td",{className:"mng-px-6 mng-py-4 mng-text-sm mng-text-slate-500",children:e.joined})]},e.id))})]})})]});var p=require("react/jsx-runtime"),w=()=>(0,p.jsxs)("div",{className:"mng-space-y-6",children:[(0,p.jsxs)("div",{className:"mng-flex mng-items-center mng-justify-between",children:[(0,p.jsx)("h2",{className:"mng-text-2xl mng-font-bold mng-text-slate-800",children:"Products"}),(0,p.jsx)("button",{className:"mng-bg-blue-600 mng-text-white mng-px-4 mng-py-2 mng-rounded-lg mng-text-sm mng-font-medium hover:mng-bg-blue-700 mng-transition-colors",children:"Add Product"})]}),(0,p.jsx)("div",{className:"mng-bg-white mng-rounded-xl mng-border mng-border-slate-200 mng-shadow-sm mng-p-12 mng-flex mng-items-center mng-justify-center mng-min-h-96",children:(0,p.jsx)("p",{className:"mng-text-slate-400 mng-italic",children:"Products management coming soon..."})})]});var s=require("react/jsx-runtime"),P=()=>{let{config:e}=c();return(0,s.jsxs)("div",{className:"mng-space-y-6",children:[(0,s.jsx)("h2",{className:"mng-text-2xl mng-font-bold mng-text-slate-800",children:"Settings"}),(0,s.jsxs)("div",{className:"mng-bg-white mng-rounded-xl mng-border mng-border-slate-200 mng-shadow-sm mng-p-6 mng-space-y-6",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("h3",{className:"mng-text-lg mng-font-semibold mng-text-slate-800 mng-mb-4",children:"General Settings"}),(0,s.jsxs)("div",{className:"mng-space-y-4",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("label",{className:"mng-block mng-text-sm mng-font-medium mng-text-slate-700 mng-mb-2",children:"Application Name"}),(0,s.jsx)("input",{type:"text",disabled:!0,value:e.appName,className:"mng-w-full mng-px-4 mng-py-2 mng-border mng-border-slate-300 mng-rounded-lg mng-bg-slate-50 mng-text-slate-500"}),(0,s.jsx)("p",{className:"mng-text-xs mng-text-slate-500 mng-mt-1",children:"Configured via ManagoProvider"})]}),(0,s.jsxs)("div",{children:[(0,s.jsx)("label",{className:"mng-block mng-text-sm mng-font-medium mng-text-slate-700 mng-mb-2",children:"API Endpoint"}),(0,s.jsx)("input",{type:"text",disabled:!0,value:e.apiEndpoint||"Not configured",className:"mng-w-full mng-px-4 mng-py-2 mng-border mng-border-slate-300 mng-rounded-lg mng-bg-slate-50 mng-text-slate-500"})]})]})]}),(0,s.jsxs)("div",{className:"mng-border-t mng-border-slate-200 mng-pt-6",children:[(0,s.jsx)("h3",{className:"mng-text-lg mng-font-semibold mng-text-slate-800 mng-mb-4",children:"Menu Configuration"}),(0,s.jsx)("div",{className:"mng-space-y-2",children:Object.entries(e.menu||{}).map(([t,g])=>(0,s.jsxs)("div",{className:"mng-flex mng-items-center mng-justify-between",children:[(0,s.jsx)("span",{className:"mng-text-sm mng-text-slate-700 mng-capitalize",children:t}),(0,s.jsx)("span",{className:`mng-text-sm mng-font-medium ${g?"mng-text-green-600":"mng-text-red-600"}`,children:g?"Enabled":"Disabled"})]},t))})]})]})]})};var a=require("react/jsx-runtime"),W=()=>{let e=(0,i.useNavigate)();return(0,a.jsx)("div",{className:"mng-flex mng-items-center mng-justify-center mng-h-full",children:(0,a.jsxs)("div",{className:"mng-text-center",children:[(0,a.jsx)("h2",{className:"mng-text-2xl mng-font-bold mng-text-slate-800 mng-mb-2",children:"Page Not Found"}),(0,a.jsx)("p",{className:"mng-text-slate-600 mng-mb-4",children:"The page you're looking for doesn't exist."}),(0,a.jsx)("button",{onClick:()=>e("/"),className:"mng-bg-blue-600 mng-text-white mng-px-4 mng-py-2 mng-rounded-lg mng-text-sm mng-font-medium hover:mng-bg-blue-700",children:"Go to Dashboard"})]})})},E=({apiKey:e,config:t})=>{let g=(0,i.useNavigate)(),d=(0,i.useLocation)();return(0,a.jsx)(R,{apiKey:e,config:t,navigate:M=>{g(M)},currentPath:d.pathname,children:(0,a.jsx)(I,{children:(0,a.jsxs)(i.Routes,{children:[(0,a.jsx)(i.Route,{index:!0,element:(0,a.jsx)(v,{})}),(0,a.jsx)(i.Route,{path:"orders",element:(0,a.jsx)(N,{})}),(0,a.jsx)(i.Route,{path:"customers",element:(0,a.jsx)(y,{})}),(0,a.jsx)(i.Route,{path:"products",element:(0,a.jsx)(w,{})}),(0,a.jsx)(i.Route,{path:"settings",element:(0,a.jsx)(P,{})}),(0,a.jsx)(i.Route,{path:"*",element:(0,a.jsx)(W,{})})]})})})};0&&(module.exports={ManagoAdmin,useManago});
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/adapters/react-router/index.ts","../../../src/adapters/react-router/ManagoAdmin.tsx","../../../src/providers/ManagoProvider.tsx","../../../src/hooks/useNavigation.ts","../../../src/core/components/Sidebar.tsx","../../../src/core/components/Header.tsx","../../../src/core/components/Layout.tsx","../../../src/core/pages/Dashboard.tsx","../../../src/core/pages/Orders.tsx","../../../src/core/pages/Customers.tsx","../../../src/core/pages/Products.tsx","../../../src/core/pages/Settings.tsx"],"sourcesContent":["export { ManagoAdmin } from './ManagoAdmin';\nexport { useManago } from '../../providers/ManagoProvider';\nexport type { ManagoConfig } from '../../types';\n","// @ts-nocheck - React Router type conflicts with React 18 types\nimport React from 'react';\nimport { Routes, Route, useNavigate, useLocation } from 'react-router-dom';\nimport { ManagoProvider as BaseManagoProvider } from '../../providers/ManagoProvider';\nimport { Layout } from '../../core/components/Layout';\nimport { Dashboard, Orders, Customers, Products, Settings } from '../../core/pages';\nimport type { ManagoConfig } from '../../types';\n\ninterface ManagoAdminProps {\n apiKey: string;\n config: ManagoConfig;\n}\n\nconst NotFound = () => {\n const navigate = useNavigate();\n\n return (\n <div className=\"mng-flex mng-items-center mng-justify-center mng-h-full\">\n <div className=\"mng-text-center\">\n <h2 className=\"mng-text-2xl mng-font-bold mng-text-slate-800 mng-mb-2\">\n Page Not Found\n </h2>\n <p className=\"mng-text-slate-600 mng-mb-4\">\n The page you're looking for doesn't exist.\n </p>\n <button\n onClick={() => navigate('/')}\n className=\"mng-bg-blue-600 mng-text-white mng-px-4 mng-py-2 mng-rounded-lg mng-text-sm mng-font-medium hover:mng-bg-blue-700\"\n >\n Go to Dashboard\n </button>\n </div>\n </div>\n );\n};\n\n/**\n * React Router v6 adapter for Manago Admin\n *\n * Usage in your app:\n *\n * import { BrowserRouter, Routes, Route } from 'react-router-dom';\n * import { ManagoAdmin } from '@manago/admin/react-router';\n *\n * function App() {\n * return (\n * <BrowserRouter>\n * <Routes>\n * <Route path=\"/admin/*\" element={\n * <ManagoAdmin apiKey=\"...\" config={{ appName: \"My Store\" }} />\n * } />\n * </Routes>\n * </BrowserRouter>\n * );\n * }\n */\nexport const ManagoAdmin = ({ apiKey, config }: ManagoAdminProps) => {\n const navigate = useNavigate();\n const location = useLocation();\n\n const handleNavigate = (path: string) => {\n navigate(path);\n };\n\n return (\n <BaseManagoProvider\n apiKey={apiKey}\n config={config}\n navigate={handleNavigate}\n currentPath={location.pathname}\n >\n <Layout>\n <Routes>\n <Route index element={<Dashboard />} />\n <Route path=\"orders\" element={<Orders />} />\n <Route path=\"customers\" element={<Customers />} />\n <Route path=\"products\" element={<Products />} />\n <Route path=\"settings\" element={<Settings />} />\n <Route path=\"*\" element={<NotFound />} />\n </Routes>\n </Layout>\n </BaseManagoProvider>\n );\n};\n","import React, { createContext, ReactNode } from 'react';\nimport type { ManagoConfig, ManagoContextType } from '../types';\n\nexport const ManagoContext = createContext<ManagoContextType | undefined>(undefined);\n\ninterface ManagoProviderProps {\n children: ReactNode;\n apiKey: string;\n config: ManagoConfig;\n navigate: (path: string) => void;\n currentPath: string;\n}\n\nexport const ManagoProvider = ({\n children,\n apiKey,\n config,\n navigate,\n currentPath,\n}: ManagoProviderProps) => {\n return (\n <ManagoContext.Provider value={{ apiKey, config, navigate, currentPath }}>\n {children}\n </ManagoContext.Provider>\n );\n};\n\nexport const useManago = () => {\n const context = React.useContext(ManagoContext);\n if (!context) throw new Error('useManago must be used within ManagoProvider');\n return context;\n};","import { useContext } from 'react';\nimport { ManagoContext } from '../providers/ManagoProvider';\n\n/**\n * Hook for framework-agnostic navigation\n * Uses the navigation adapter provided by the framework-specific ManagoAdmin component\n */\nexport const useNavigation = () => {\n const context = useContext(ManagoContext);\n\n if (!context) {\n throw new Error('useNavigation must be used within ManagoProvider');\n }\n\n return {\n navigate: context.navigate,\n currentPath: context.currentPath,\n isActive: (path: string) => {\n // Handle both exact matches and nested routes\n if (path === '/') {\n return context.currentPath === '/' || context.currentPath === '';\n }\n return context.currentPath.startsWith(path);\n },\n };\n};\n","import React from 'react';\nimport { useManago } from '../../providers/ManagoProvider';\nimport { useNavigation } from '../../hooks/useNavigation';\nimport type { MenuItem } from '../../types';\n\nconst defaultMenuItems: MenuItem[] = [\n { id: 'dashboard', label: 'Dashboard', path: '/' },\n { id: 'orders', label: 'Orders', path: '/orders' },\n { id: 'customers', label: 'Customers', path: '/customers' },\n { id: 'products', label: 'Products', path: '/products' },\n { id: 'settings', label: 'Settings', path: '/settings' },\n];\n\nexport const Sidebar = () => {\n const { config } = useManago();\n const { navigate, isActive } = useNavigation();\n\n const menuItems = defaultMenuItems.filter((item) => {\n const menuConfig = config.menu || {};\n // If menu item is explicitly set to false, hide it\n if (menuConfig[item.id as keyof typeof menuConfig] === false) {\n return false;\n }\n return true;\n });\n\n return (\n <aside className=\"mng-w-64 mng-bg-slate-900 mng-text-white mng-flex mng-flex-col\">\n {/* Logo / Brand */}\n <div className=\"mng-p-6 mng-flex mng-items-center mng-gap-3\">\n {config.theme?.logo ? (\n <img src={config.theme.logo} alt={config.appName} className=\"mng-h-8\" />\n ) : (\n <>\n <div className=\"mng-w-8 mng-h-8 mng-bg-blue-500 mng-rounded-md mng-flex mng-items-center mng-justify-center mng-font-bold\">\n {config.appName.charAt(0).toUpperCase()}\n </div>\n <span className=\"mng-text-xl mng-font-bold mng-tracking-tight\">\n {config.appName || 'Manago'}\n </span>\n </>\n )}\n </div>\n\n {/* Navigation Menu */}\n <nav className=\"mng-flex-1 mng-px-3 mng-space-y-1\">\n {menuItems.map((item) => (\n <button\n key={item.id}\n onClick={() => navigate(item.path)}\n className={`\n mng-w-full mng-flex mng-items-center mng-px-4 mng-py-2.5 mng-text-sm mng-rounded-lg\n mng-transition-colors mng-text-left\n ${\n isActive(item.path)\n ? 'mng-bg-blue-600 mng-text-white'\n : 'mng-text-slate-300 hover:mng-bg-slate-800 hover:mng-text-white'\n }\n `}\n >\n {item.icon && <span className=\"mng-mr-3\">{item.icon}</span>}\n {item.label}\n </button>\n ))}\n </nav>\n\n {/* Footer */}\n <div className=\"mng-p-4 mng-border-t mng-border-slate-800\">\n <p className=\"mng-text-xs mng-text-slate-500 mng-text-center\">\n Powered by Manago\n </p>\n </div>\n </aside>\n );\n};\n","import React from 'react';\nimport { useManago } from '../../providers/ManagoProvider';\n\ninterface HeaderProps {\n title?: string;\n}\n\nexport const Header = ({ title = 'Admin Panel' }: HeaderProps) => {\n const { config } = useManago();\n\n return (\n <header className=\"mng-h-16 mng-bg-white mng-border-b mng-border-slate-200 mng-flex mng-items-center mng-px-8 mng-justify-between\">\n <h1 className=\"mng-text-sm mng-font-medium mng-text-slate-500\">{title}</h1>\n\n <div className=\"mng-flex mng-items-center mng-gap-4\">\n <span className=\"mng-text-sm mng-text-slate-600\">{config.appName}</span>\n </div>\n </header>\n );\n};\n","import React, { ReactNode } from 'react';\nimport { Sidebar } from './Sidebar';\nimport { Header } from './Header';\n\ninterface LayoutProps {\n children: ReactNode;\n}\n\nexport const Layout = ({ children }: LayoutProps) => {\n return (\n <div className=\"mng-flex mng-h-screen mng-bg-slate-50 mng-font-sans\">\n <Sidebar />\n\n <div className=\"mng-flex-1 mng-flex mng-flex-col mng-overflow-hidden\">\n <Header />\n <main className=\"mng-flex-1 mng-overflow-y-auto mng-p-8\">\n {children}\n </main>\n </div>\n </div>\n );\n};\n","import React from 'react';\n\nexport const Dashboard = () => {\n return (\n <div className=\"mng-space-y-6\">\n <div className=\"mng-flex mng-items-center mng-justify-between\">\n <h2 className=\"mng-text-2xl mng-font-bold mng-text-slate-800\">Overview</h2>\n <button className=\"mng-bg-blue-600 mng-text-white mng-px-4 mng-py-2 mng-rounded-lg mng-text-sm mng-font-medium hover:mng-bg-blue-700 mng-transition-colors\">\n Download Report\n </button>\n </div>\n\n {/* Stats Cards */}\n <div className=\"mng-grid mng-grid-cols-1 md:mng-grid-cols-3 mng-gap-6\">\n {[\n { label: 'Total Revenue', value: '€45,231.89', change: '+20.1%', color: 'mng-text-green-600' },\n { label: 'Active Orders', value: '154', change: '+12.5%', color: 'mng-text-green-600' },\n { label: 'Refund Rate', value: '1.2%', change: '-0.4%', color: 'mng-text-red-600' },\n ].map((stat) => (\n <div key={stat.label} className=\"mng-bg-white mng-p-6 mng-rounded-xl mng-border mng-border-slate-200 mng-shadow-sm\">\n <p className=\"mng-text-sm mng-font-medium mng-text-slate-500\">{stat.label}</p>\n <div className=\"mng-flex mng-items-baseline mng-gap-2 mng-mt-2\">\n <h3 className=\"mng-text-3xl mng-font-bold mng-text-slate-900\">{stat.value}</h3>\n <span className={`mng-text-xs mng-font-medium ${stat.color}`}>{stat.change}</span>\n </div>\n </div>\n ))}\n </div>\n\n {/* Chart Placeholder */}\n <div className=\"mng-bg-white mng-rounded-xl mng-border mng-border-slate-200 mng-shadow-sm mng-h-64 mng-flex mng-items-center mng-justify-center\">\n <p className=\"mng-text-slate-400 mng-italic\">Chart visualization will be here...</p>\n </div>\n </div>\n );\n};\n","import React from 'react';\n\nconst mockOrders = [\n { id: '#ORD-7721', customer: 'Ion Popescu', status: 'Completed', total: '€120.00', date: 'Acum 2 ore' },\n { id: '#ORD-7722', customer: 'Elena Radu', status: 'Processing', total: '€45.50', date: 'Acum 5 ore' },\n { id: '#ORD-7723', customer: 'Mihai Sandu', status: 'Pending', total: '€210.99', date: 'Ieri' },\n { id: '#ORD-7724', customer: 'Ana Ionescu', status: 'Completed', total: '€89.99', date: 'Ieri' },\n { id: '#ORD-7725', customer: 'George Popa', status: 'Cancelled', total: '€156.00', date: 'Acum 2 zile' },\n];\n\nconst getStatusColor = (status: string) => {\n switch (status) {\n case 'Completed':\n return 'mng-bg-green-100 mng-text-green-700';\n case 'Processing':\n return 'mng-bg-blue-100 mng-text-blue-700';\n case 'Pending':\n return 'mng-bg-yellow-100 mng-text-yellow-700';\n case 'Cancelled':\n return 'mng-bg-red-100 mng-text-red-700';\n default:\n return 'mng-bg-slate-100 mng-text-slate-700';\n }\n};\n\nexport const Orders = () => {\n return (\n <div className=\"mng-space-y-6\">\n <div className=\"mng-flex mng-items-center mng-justify-between\">\n <h2 className=\"mng-text-2xl mng-font-bold mng-text-slate-800\">Orders Management</h2>\n <button className=\"mng-bg-blue-600 mng-text-white mng-px-4 mng-py-2 mng-rounded-lg mng-text-sm mng-font-medium hover:mng-bg-blue-700 mng-transition-colors\">\n Export Orders\n </button>\n </div>\n\n <div className=\"mng-bg-white mng-rounded-xl mng-border mng-border-slate-200 mng-shadow-sm mng-overflow-hidden\">\n <table className=\"mng-w-full mng-text-left mng-border-collapse\">\n <thead>\n <tr className=\"mng-bg-slate-50 mng-border-b mng-border-slate-200\">\n <th className=\"mng-px-6 mng-py-4 mng-text-xs mng-font-semibold mng-text-slate-500 mng-uppercase\">\n Order ID\n </th>\n <th className=\"mng-px-6 mng-py-4 mng-text-xs mng-font-semibold mng-text-slate-500 mng-uppercase\">\n Customer\n </th>\n <th className=\"mng-px-6 mng-py-4 mng-text-xs mng-font-semibold mng-text-slate-500 mng-uppercase\">\n Status\n </th>\n <th className=\"mng-px-6 mng-py-4 mng-text-xs mng-font-semibold mng-text-slate-500 mng-uppercase\">\n Total\n </th>\n <th className=\"mng-px-6 mng-py-4 mng-text-xs mng-font-semibold mng-text-slate-500 mng-uppercase\">\n Date\n </th>\n </tr>\n </thead>\n <tbody className=\"mng-divide-y mng-divide-slate-200\">\n {mockOrders.map((order) => (\n <tr key={order.id} className=\"hover:mng-bg-slate-50 mng-transition-colors\">\n <td className=\"mng-px-6 mng-py-4 mng-text-sm mng-font-medium mng-text-blue-600\">\n {order.id}\n </td>\n <td className=\"mng-px-6 mng-py-4 mng-text-sm mng-text-slate-600\">\n {order.customer}\n </td>\n <td className=\"mng-px-6 mng-py-4\">\n <span\n className={`mng-px-2.5 mng-py-0.5 mng-rounded-full mng-text-xs mng-font-medium ${getStatusColor(\n order.status\n )}`}\n >\n {order.status}\n </span>\n </td>\n <td className=\"mng-px-6 mng-py-4 mng-text-sm mng-font-semibold mng-text-slate-900\">\n {order.total}\n </td>\n <td className=\"mng-px-6 mng-py-4 mng-text-sm mng-text-slate-500\">\n {order.date}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </div>\n );\n};\n","import React from 'react';\n\nconst mockCustomers = [\n { id: '1', name: 'Ion Popescu', email: 'ion.popescu@example.com', orders: 12, totalSpent: '€1,234.56', joined: '2024-01-15' },\n { id: '2', name: 'Elena Radu', email: 'elena.radu@example.com', orders: 8, totalSpent: '€876.32', joined: '2024-02-20' },\n { id: '3', name: 'Mihai Sandu', email: 'mihai.sandu@example.com', orders: 15, totalSpent: '€2,103.45', joined: '2023-11-10' },\n { id: '4', name: 'Ana Ionescu', email: 'ana.ionescu@example.com', orders: 5, totalSpent: '€543.21', joined: '2024-03-05' },\n];\n\nexport const Customers = () => {\n return (\n <div className=\"mng-space-y-6\">\n <div className=\"mng-flex mng-items-center mng-justify-between\">\n <h2 className=\"mng-text-2xl mng-font-bold mng-text-slate-800\">Customers</h2>\n <button className=\"mng-bg-blue-600 mng-text-white mng-px-4 mng-py-2 mng-rounded-lg mng-text-sm mng-font-medium hover:mng-bg-blue-700 mng-transition-colors\">\n Add Customer\n </button>\n </div>\n\n <div className=\"mng-bg-white mng-rounded-xl mng-border mng-border-slate-200 mng-shadow-sm mng-overflow-hidden\">\n <table className=\"mng-w-full mng-text-left mng-border-collapse\">\n <thead>\n <tr className=\"mng-bg-slate-50 mng-border-b mng-border-slate-200\">\n <th className=\"mng-px-6 mng-py-4 mng-text-xs mng-font-semibold mng-text-slate-500 mng-uppercase\">\n Customer\n </th>\n <th className=\"mng-px-6 mng-py-4 mng-text-xs mng-font-semibold mng-text-slate-500 mng-uppercase\">\n Email\n </th>\n <th className=\"mng-px-6 mng-py-4 mng-text-xs mng-font-semibold mng-text-slate-500 mng-uppercase\">\n Orders\n </th>\n <th className=\"mng-px-6 mng-py-4 mng-text-xs mng-font-semibold mng-text-slate-500 mng-uppercase\">\n Total Spent\n </th>\n <th className=\"mng-px-6 mng-py-4 mng-text-xs mng-font-semibold mng-text-slate-500 mng-uppercase\">\n Joined\n </th>\n </tr>\n </thead>\n <tbody className=\"mng-divide-y mng-divide-slate-200\">\n {mockCustomers.map((customer) => (\n <tr key={customer.id} className=\"hover:mng-bg-slate-50 mng-transition-colors\">\n <td className=\"mng-px-6 mng-py-4\">\n <div className=\"mng-flex mng-items-center mng-gap-3\">\n <div className=\"mng-w-10 mng-h-10 mng-rounded-full mng-bg-blue-100 mng-flex mng-items-center mng-justify-center mng-text-blue-600 mng-font-semibold\">\n {customer.name.charAt(0)}\n </div>\n <span className=\"mng-text-sm mng-font-medium mng-text-slate-900\">\n {customer.name}\n </span>\n </div>\n </td>\n <td className=\"mng-px-6 mng-py-4 mng-text-sm mng-text-slate-600\">\n {customer.email}\n </td>\n <td className=\"mng-px-6 mng-py-4 mng-text-sm mng-text-slate-900\">\n {customer.orders}\n </td>\n <td className=\"mng-px-6 mng-py-4 mng-text-sm mng-font-semibold mng-text-slate-900\">\n {customer.totalSpent}\n </td>\n <td className=\"mng-px-6 mng-py-4 mng-text-sm mng-text-slate-500\">\n {customer.joined}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </div>\n );\n};\n","import React from 'react';\n\nexport const Products = () => {\n return (\n <div className=\"mng-space-y-6\">\n <div className=\"mng-flex mng-items-center mng-justify-between\">\n <h2 className=\"mng-text-2xl mng-font-bold mng-text-slate-800\">Products</h2>\n <button className=\"mng-bg-blue-600 mng-text-white mng-px-4 mng-py-2 mng-rounded-lg mng-text-sm mng-font-medium hover:mng-bg-blue-700 mng-transition-colors\">\n Add Product\n </button>\n </div>\n\n <div className=\"mng-bg-white mng-rounded-xl mng-border mng-border-slate-200 mng-shadow-sm mng-p-12 mng-flex mng-items-center mng-justify-center mng-min-h-96\">\n <p className=\"mng-text-slate-400 mng-italic\">Products management coming soon...</p>\n </div>\n </div>\n );\n};\n","import React from 'react';\nimport { useManago } from '../../providers/ManagoProvider';\n\nexport const Settings = () => {\n const { config } = useManago();\n\n return (\n <div className=\"mng-space-y-6\">\n <h2 className=\"mng-text-2xl mng-font-bold mng-text-slate-800\">Settings</h2>\n\n <div className=\"mng-bg-white mng-rounded-xl mng-border mng-border-slate-200 mng-shadow-sm mng-p-6 mng-space-y-6\">\n <div>\n <h3 className=\"mng-text-lg mng-font-semibold mng-text-slate-800 mng-mb-4\">\n General Settings\n </h3>\n\n <div className=\"mng-space-y-4\">\n <div>\n <label className=\"mng-block mng-text-sm mng-font-medium mng-text-slate-700 mng-mb-2\">\n Application Name\n </label>\n <input\n type=\"text\"\n disabled\n value={config.appName}\n className=\"mng-w-full mng-px-4 mng-py-2 mng-border mng-border-slate-300 mng-rounded-lg mng-bg-slate-50 mng-text-slate-500\"\n />\n <p className=\"mng-text-xs mng-text-slate-500 mng-mt-1\">\n Configured via ManagoProvider\n </p>\n </div>\n\n <div>\n <label className=\"mng-block mng-text-sm mng-font-medium mng-text-slate-700 mng-mb-2\">\n API Endpoint\n </label>\n <input\n type=\"text\"\n disabled\n value={config.apiEndpoint || 'Not configured'}\n className=\"mng-w-full mng-px-4 mng-py-2 mng-border mng-border-slate-300 mng-rounded-lg mng-bg-slate-50 mng-text-slate-500\"\n />\n </div>\n </div>\n </div>\n\n <div className=\"mng-border-t mng-border-slate-200 mng-pt-6\">\n <h3 className=\"mng-text-lg mng-font-semibold mng-text-slate-800 mng-mb-4\">\n Menu Configuration\n </h3>\n <div className=\"mng-space-y-2\">\n {Object.entries(config.menu || {}).map(([key, value]) => (\n <div key={key} className=\"mng-flex mng-items-center mng-justify-between\">\n <span className=\"mng-text-sm mng-text-slate-700 mng-capitalize\">{key}</span>\n <span\n className={`mng-text-sm mng-font-medium ${\n value ? 'mng-text-green-600' : 'mng-text-red-600'\n }`}\n >\n {value ? 'Enabled' : 'Disabled'}\n </span>\n </div>\n ))}\n </div>\n </div>\n </div>\n </div>\n );\n};\n"],"mappings":"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","names":["react_router_exports","__export","ManagoAdmin","useManago","__toCommonJS","import_react_router_dom","import_react","import_jsx_runtime","ManagoContext","ManagoProvider","children","apiKey","config","navigate","currentPath","useManago","context","React","import_react","useNavigation","context","ManagoContext","path","import_jsx_runtime","defaultMenuItems","Sidebar","config","useManago","navigate","isActive","useNavigation","menuItems","item","import_jsx_runtime","Header","title","config","useManago","import_jsx_runtime","Layout","children","Sidebar","Header","import_jsx_runtime","Dashboard","stat","import_jsx_runtime","mockOrders","getStatusColor","status","Orders","order","import_jsx_runtime","mockCustomers","Customers","customer","import_jsx_runtime","Products","import_jsx_runtime","Settings","config","useManago","key","value","import_jsx_runtime","NotFound","navigate","ManagoAdmin","apiKey","config","location","ManagoProvider","path","Layout","Dashboard","Orders","Customers","Products","Settings"]}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import{Routes as q,Route as p,useNavigate as L,useLocation as Q}from"react-router-dom";import H,{createContext as $}from"react";import{jsx as z}from"react/jsx-runtime";var b=$(void 0),S=({children:e,apiKey:a,config:o,navigate:x,currentPath:s})=>z(b.Provider,{value:{apiKey:a,config:o,navigate:x,currentPath:s},children:e}),d=()=>{let e=H.useContext(b);if(!e)throw new Error("useManago must be used within ManagoProvider");return e};import{useContext as G}from"react";var O=()=>{let e=G(b);if(!e)throw new Error("useNavigation must be used within ManagoProvider");return{navigate:e.navigate,currentPath:e.currentPath,isActive:a=>a==="/"?e.currentPath==="/"||e.currentPath==="":e.currentPath.startsWith(a)}};import{Fragment as B,jsx as r,jsxs as v}from"react/jsx-runtime";var K=[{id:"dashboard",label:"Dashboard",path:"/"},{id:"orders",label:"Orders",path:"/orders"},{id:"customers",label:"Customers",path:"/customers"},{id:"products",label:"Products",path:"/products"},{id:"settings",label:"Settings",path:"/settings"}],D=()=>{let{config:e}=d(),{navigate:a,isActive:o}=O(),x=K.filter(s=>(e.menu||{})[s.id]!==!1);return v("aside",{className:"mng-w-64 mng-bg-slate-900 mng-text-white mng-flex mng-flex-col",children:[r("div",{className:"mng-p-6 mng-flex mng-items-center mng-gap-3",children:e.theme?.logo?r("img",{src:e.theme.logo,alt:e.appName,className:"mng-h-8"}):v(B,{children:[r("div",{className:"mng-w-8 mng-h-8 mng-bg-blue-500 mng-rounded-md mng-flex mng-items-center mng-justify-center mng-font-bold",children:e.appName.charAt(0).toUpperCase()}),r("span",{className:"mng-text-xl mng-font-bold mng-tracking-tight",children:e.appName||"Manago"})]})}),r("nav",{className:"mng-flex-1 mng-px-3 mng-space-y-1",children:x.map(s=>v("button",{onClick:()=>a(s.path),className:`
|
|
2
|
+
mng-w-full mng-flex mng-items-center mng-px-4 mng-py-2.5 mng-text-sm mng-rounded-lg
|
|
3
|
+
mng-transition-colors mng-text-left
|
|
4
|
+
${o(s.path)?"mng-bg-blue-600 mng-text-white":"mng-text-slate-300 hover:mng-bg-slate-800 hover:mng-text-white"}
|
|
5
|
+
`,children:[s.icon&&r("span",{className:"mng-mr-3",children:s.icon}),s.label]},s.id))}),r("div",{className:"mng-p-4 mng-border-t mng-border-slate-800",children:r("p",{className:"mng-text-xs mng-text-slate-500 mng-text-center",children:"Powered by Manago"})})]})};import{jsx as N,jsxs as F}from"react/jsx-runtime";var k=({title:e="Admin Panel"})=>{let{config:a}=d();return F("header",{className:"mng-h-16 mng-bg-white mng-border-b mng-border-slate-200 mng-flex mng-items-center mng-px-8 mng-justify-between",children:[N("h1",{className:"mng-text-sm mng-font-medium mng-text-slate-500",children:e}),N("div",{className:"mng-flex mng-items-center mng-gap-4",children:N("span",{className:"mng-text-sm mng-text-slate-600",children:a.appName})})]})};import{jsx as y,jsxs as I}from"react/jsx-runtime";var E=({children:e})=>I("div",{className:"mng-flex mng-h-screen mng-bg-slate-50 mng-font-sans",children:[y(D,{}),I("div",{className:"mng-flex-1 mng-flex mng-flex-col mng-overflow-hidden",children:[y(k,{}),y("main",{className:"mng-flex-1 mng-overflow-y-auto mng-p-8",children:e})]})]});import{jsx as l,jsxs as f}from"react/jsx-runtime";var w=()=>f("div",{className:"mng-space-y-6",children:[f("div",{className:"mng-flex mng-items-center mng-justify-between",children:[l("h2",{className:"mng-text-2xl mng-font-bold mng-text-slate-800",children:"Overview"}),l("button",{className:"mng-bg-blue-600 mng-text-white mng-px-4 mng-py-2 mng-rounded-lg mng-text-sm mng-font-medium hover:mng-bg-blue-700 mng-transition-colors",children:"Download Report"})]}),l("div",{className:"mng-grid mng-grid-cols-1 md:mng-grid-cols-3 mng-gap-6",children:[{label:"Total Revenue",value:"\u20AC45,231.89",change:"+20.1%",color:"mng-text-green-600"},{label:"Active Orders",value:"154",change:"+12.5%",color:"mng-text-green-600"},{label:"Refund Rate",value:"1.2%",change:"-0.4%",color:"mng-text-red-600"}].map(e=>f("div",{className:"mng-bg-white mng-p-6 mng-rounded-xl mng-border mng-border-slate-200 mng-shadow-sm",children:[l("p",{className:"mng-text-sm mng-font-medium mng-text-slate-500",children:e.label}),f("div",{className:"mng-flex mng-items-baseline mng-gap-2 mng-mt-2",children:[l("h3",{className:"mng-text-3xl mng-font-bold mng-text-slate-900",children:e.value}),l("span",{className:`mng-text-xs mng-font-medium ${e.color}`,children:e.change})]})]},e.label))}),l("div",{className:"mng-bg-white mng-rounded-xl mng-border mng-border-slate-200 mng-shadow-sm mng-h-64 mng-flex mng-items-center mng-justify-center",children:l("p",{className:"mng-text-slate-400 mng-italic",children:"Chart visualization will be here..."})})]});import{jsx as m,jsxs as u}from"react/jsx-runtime";var J=[{id:"#ORD-7721",customer:"Ion Popescu",status:"Completed",total:"\u20AC120.00",date:"Acum 2 ore"},{id:"#ORD-7722",customer:"Elena Radu",status:"Processing",total:"\u20AC45.50",date:"Acum 5 ore"},{id:"#ORD-7723",customer:"Mihai Sandu",status:"Pending",total:"\u20AC210.99",date:"Ieri"},{id:"#ORD-7724",customer:"Ana Ionescu",status:"Completed",total:"\u20AC89.99",date:"Ieri"},{id:"#ORD-7725",customer:"George Popa",status:"Cancelled",total:"\u20AC156.00",date:"Acum 2 zile"}],U=e=>{switch(e){case"Completed":return"mng-bg-green-100 mng-text-green-700";case"Processing":return"mng-bg-blue-100 mng-text-blue-700";case"Pending":return"mng-bg-yellow-100 mng-text-yellow-700";case"Cancelled":return"mng-bg-red-100 mng-text-red-700";default:return"mng-bg-slate-100 mng-text-slate-700"}},P=()=>u("div",{className:"mng-space-y-6",children:[u("div",{className:"mng-flex mng-items-center mng-justify-between",children:[m("h2",{className:"mng-text-2xl mng-font-bold mng-text-slate-800",children:"Orders Management"}),m("button",{className:"mng-bg-blue-600 mng-text-white mng-px-4 mng-py-2 mng-rounded-lg mng-text-sm mng-font-medium hover:mng-bg-blue-700 mng-transition-colors",children:"Export Orders"})]}),m("div",{className:"mng-bg-white mng-rounded-xl mng-border mng-border-slate-200 mng-shadow-sm mng-overflow-hidden",children:u("table",{className:"mng-w-full mng-text-left mng-border-collapse",children:[m("thead",{children:u("tr",{className:"mng-bg-slate-50 mng-border-b mng-border-slate-200",children:[m("th",{className:"mng-px-6 mng-py-4 mng-text-xs mng-font-semibold mng-text-slate-500 mng-uppercase",children:"Order ID"}),m("th",{className:"mng-px-6 mng-py-4 mng-text-xs mng-font-semibold mng-text-slate-500 mng-uppercase",children:"Customer"}),m("th",{className:"mng-px-6 mng-py-4 mng-text-xs mng-font-semibold mng-text-slate-500 mng-uppercase",children:"Status"}),m("th",{className:"mng-px-6 mng-py-4 mng-text-xs mng-font-semibold mng-text-slate-500 mng-uppercase",children:"Total"}),m("th",{className:"mng-px-6 mng-py-4 mng-text-xs mng-font-semibold mng-text-slate-500 mng-uppercase",children:"Date"})]})}),m("tbody",{className:"mng-divide-y mng-divide-slate-200",children:J.map(e=>u("tr",{className:"hover:mng-bg-slate-50 mng-transition-colors",children:[m("td",{className:"mng-px-6 mng-py-4 mng-text-sm mng-font-medium mng-text-blue-600",children:e.id}),m("td",{className:"mng-px-6 mng-py-4 mng-text-sm mng-text-slate-600",children:e.customer}),m("td",{className:"mng-px-6 mng-py-4",children:m("span",{className:`mng-px-2.5 mng-py-0.5 mng-rounded-full mng-text-xs mng-font-medium ${U(e.status)}`,children:e.status})}),m("td",{className:"mng-px-6 mng-py-4 mng-text-sm mng-font-semibold mng-text-slate-900",children:e.total}),m("td",{className:"mng-px-6 mng-py-4 mng-text-sm mng-text-slate-500",children:e.date})]},e.id))})]})})]});import{jsx as n,jsxs as c}from"react/jsx-runtime";var W=[{id:"1",name:"Ion Popescu",email:"ion.popescu@example.com",orders:12,totalSpent:"\u20AC1,234.56",joined:"2024-01-15"},{id:"2",name:"Elena Radu",email:"elena.radu@example.com",orders:8,totalSpent:"\u20AC876.32",joined:"2024-02-20"},{id:"3",name:"Mihai Sandu",email:"mihai.sandu@example.com",orders:15,totalSpent:"\u20AC2,103.45",joined:"2023-11-10"},{id:"4",name:"Ana Ionescu",email:"ana.ionescu@example.com",orders:5,totalSpent:"\u20AC543.21",joined:"2024-03-05"}],M=()=>c("div",{className:"mng-space-y-6",children:[c("div",{className:"mng-flex mng-items-center mng-justify-between",children:[n("h2",{className:"mng-text-2xl mng-font-bold mng-text-slate-800",children:"Customers"}),n("button",{className:"mng-bg-blue-600 mng-text-white mng-px-4 mng-py-2 mng-rounded-lg mng-text-sm mng-font-medium hover:mng-bg-blue-700 mng-transition-colors",children:"Add Customer"})]}),n("div",{className:"mng-bg-white mng-rounded-xl mng-border mng-border-slate-200 mng-shadow-sm mng-overflow-hidden",children:c("table",{className:"mng-w-full mng-text-left mng-border-collapse",children:[n("thead",{children:c("tr",{className:"mng-bg-slate-50 mng-border-b mng-border-slate-200",children:[n("th",{className:"mng-px-6 mng-py-4 mng-text-xs mng-font-semibold mng-text-slate-500 mng-uppercase",children:"Customer"}),n("th",{className:"mng-px-6 mng-py-4 mng-text-xs mng-font-semibold mng-text-slate-500 mng-uppercase",children:"Email"}),n("th",{className:"mng-px-6 mng-py-4 mng-text-xs mng-font-semibold mng-text-slate-500 mng-uppercase",children:"Orders"}),n("th",{className:"mng-px-6 mng-py-4 mng-text-xs mng-font-semibold mng-text-slate-500 mng-uppercase",children:"Total Spent"}),n("th",{className:"mng-px-6 mng-py-4 mng-text-xs mng-font-semibold mng-text-slate-500 mng-uppercase",children:"Joined"})]})}),n("tbody",{className:"mng-divide-y mng-divide-slate-200",children:W.map(e=>c("tr",{className:"hover:mng-bg-slate-50 mng-transition-colors",children:[n("td",{className:"mng-px-6 mng-py-4",children:c("div",{className:"mng-flex mng-items-center mng-gap-3",children:[n("div",{className:"mng-w-10 mng-h-10 mng-rounded-full mng-bg-blue-100 mng-flex mng-items-center mng-justify-center mng-text-blue-600 mng-font-semibold",children:e.name.charAt(0)}),n("span",{className:"mng-text-sm mng-font-medium mng-text-slate-900",children:e.name})]})}),n("td",{className:"mng-px-6 mng-py-4 mng-text-sm mng-text-slate-600",children:e.email}),n("td",{className:"mng-px-6 mng-py-4 mng-text-sm mng-text-slate-900",children:e.orders}),n("td",{className:"mng-px-6 mng-py-4 mng-text-sm mng-font-semibold mng-text-slate-900",children:e.totalSpent}),n("td",{className:"mng-px-6 mng-py-4 mng-text-sm mng-text-slate-500",children:e.joined})]},e.id))})]})})]});import{jsx as h,jsxs as j}from"react/jsx-runtime";var C=()=>j("div",{className:"mng-space-y-6",children:[j("div",{className:"mng-flex mng-items-center mng-justify-between",children:[h("h2",{className:"mng-text-2xl mng-font-bold mng-text-slate-800",children:"Products"}),h("button",{className:"mng-bg-blue-600 mng-text-white mng-px-4 mng-py-2 mng-rounded-lg mng-text-sm mng-font-medium hover:mng-bg-blue-700 mng-transition-colors",children:"Add Product"})]}),h("div",{className:"mng-bg-white mng-rounded-xl mng-border mng-border-slate-200 mng-shadow-sm mng-p-12 mng-flex mng-items-center mng-justify-center mng-min-h-96",children:h("p",{className:"mng-text-slate-400 mng-italic",children:"Products management coming soon..."})})]});import{jsx as g,jsxs as i}from"react/jsx-runtime";var R=()=>{let{config:e}=d();return i("div",{className:"mng-space-y-6",children:[g("h2",{className:"mng-text-2xl mng-font-bold mng-text-slate-800",children:"Settings"}),i("div",{className:"mng-bg-white mng-rounded-xl mng-border mng-border-slate-200 mng-shadow-sm mng-p-6 mng-space-y-6",children:[i("div",{children:[g("h3",{className:"mng-text-lg mng-font-semibold mng-text-slate-800 mng-mb-4",children:"General Settings"}),i("div",{className:"mng-space-y-4",children:[i("div",{children:[g("label",{className:"mng-block mng-text-sm mng-font-medium mng-text-slate-700 mng-mb-2",children:"Application Name"}),g("input",{type:"text",disabled:!0,value:e.appName,className:"mng-w-full mng-px-4 mng-py-2 mng-border mng-border-slate-300 mng-rounded-lg mng-bg-slate-50 mng-text-slate-500"}),g("p",{className:"mng-text-xs mng-text-slate-500 mng-mt-1",children:"Configured via ManagoProvider"})]}),i("div",{children:[g("label",{className:"mng-block mng-text-sm mng-font-medium mng-text-slate-700 mng-mb-2",children:"API Endpoint"}),g("input",{type:"text",disabled:!0,value:e.apiEndpoint||"Not configured",className:"mng-w-full mng-px-4 mng-py-2 mng-border mng-border-slate-300 mng-rounded-lg mng-bg-slate-50 mng-text-slate-500"})]})]})]}),i("div",{className:"mng-border-t mng-border-slate-200 mng-pt-6",children:[g("h3",{className:"mng-text-lg mng-font-semibold mng-text-slate-800 mng-mb-4",children:"Menu Configuration"}),g("div",{className:"mng-space-y-2",children:Object.entries(e.menu||{}).map(([a,o])=>i("div",{className:"mng-flex mng-items-center mng-justify-between",children:[g("span",{className:"mng-text-sm mng-text-slate-700 mng-capitalize",children:a}),g("span",{className:`mng-text-sm mng-font-medium ${o?"mng-text-green-600":"mng-text-red-600"}`,children:o?"Enabled":"Disabled"})]},a))})]})]})]})};import{jsx as t,jsxs as T}from"react/jsx-runtime";var V=()=>{let e=L();return t("div",{className:"mng-flex mng-items-center mng-justify-center mng-h-full",children:T("div",{className:"mng-text-center",children:[t("h2",{className:"mng-text-2xl mng-font-bold mng-text-slate-800 mng-mb-2",children:"Page Not Found"}),t("p",{className:"mng-text-slate-600 mng-mb-4",children:"The page you're looking for doesn't exist."}),t("button",{onClick:()=>e("/"),className:"mng-bg-blue-600 mng-text-white mng-px-4 mng-py-2 mng-rounded-lg mng-text-sm mng-font-medium hover:mng-bg-blue-700",children:"Go to Dashboard"})]})})},X=({apiKey:e,config:a})=>{let o=L(),x=Q();return t(S,{apiKey:e,config:a,navigate:A=>{o(A)},currentPath:x.pathname,children:t(E,{children:T(q,{children:[t(p,{index:!0,element:t(w,{})}),t(p,{path:"orders",element:t(P,{})}),t(p,{path:"customers",element:t(M,{})}),t(p,{path:"products",element:t(C,{})}),t(p,{path:"settings",element:t(R,{})}),t(p,{path:"*",element:t(V,{})})]})})})};export{X as ManagoAdmin,d as useManago};
|
|
6
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/adapters/react-router/ManagoAdmin.tsx","../../../src/providers/ManagoProvider.tsx","../../../src/hooks/useNavigation.ts","../../../src/core/components/Sidebar.tsx","../../../src/core/components/Header.tsx","../../../src/core/components/Layout.tsx","../../../src/core/pages/Dashboard.tsx","../../../src/core/pages/Orders.tsx","../../../src/core/pages/Customers.tsx","../../../src/core/pages/Products.tsx","../../../src/core/pages/Settings.tsx"],"sourcesContent":["// @ts-nocheck - React Router type conflicts with React 18 types\nimport React from 'react';\nimport { Routes, Route, useNavigate, useLocation } from 'react-router-dom';\nimport { ManagoProvider as BaseManagoProvider } from '../../providers/ManagoProvider';\nimport { Layout } from '../../core/components/Layout';\nimport { Dashboard, Orders, Customers, Products, Settings } from '../../core/pages';\nimport type { ManagoConfig } from '../../types';\n\ninterface ManagoAdminProps {\n apiKey: string;\n config: ManagoConfig;\n}\n\nconst NotFound = () => {\n const navigate = useNavigate();\n\n return (\n <div className=\"mng-flex mng-items-center mng-justify-center mng-h-full\">\n <div className=\"mng-text-center\">\n <h2 className=\"mng-text-2xl mng-font-bold mng-text-slate-800 mng-mb-2\">\n Page Not Found\n </h2>\n <p className=\"mng-text-slate-600 mng-mb-4\">\n The page you're looking for doesn't exist.\n </p>\n <button\n onClick={() => navigate('/')}\n className=\"mng-bg-blue-600 mng-text-white mng-px-4 mng-py-2 mng-rounded-lg mng-text-sm mng-font-medium hover:mng-bg-blue-700\"\n >\n Go to Dashboard\n </button>\n </div>\n </div>\n );\n};\n\n/**\n * React Router v6 adapter for Manago Admin\n *\n * Usage in your app:\n *\n * import { BrowserRouter, Routes, Route } from 'react-router-dom';\n * import { ManagoAdmin } from '@manago/admin/react-router';\n *\n * function App() {\n * return (\n * <BrowserRouter>\n * <Routes>\n * <Route path=\"/admin/*\" element={\n * <ManagoAdmin apiKey=\"...\" config={{ appName: \"My Store\" }} />\n * } />\n * </Routes>\n * </BrowserRouter>\n * );\n * }\n */\nexport const ManagoAdmin = ({ apiKey, config }: ManagoAdminProps) => {\n const navigate = useNavigate();\n const location = useLocation();\n\n const handleNavigate = (path: string) => {\n navigate(path);\n };\n\n return (\n <BaseManagoProvider\n apiKey={apiKey}\n config={config}\n navigate={handleNavigate}\n currentPath={location.pathname}\n >\n <Layout>\n <Routes>\n <Route index element={<Dashboard />} />\n <Route path=\"orders\" element={<Orders />} />\n <Route path=\"customers\" element={<Customers />} />\n <Route path=\"products\" element={<Products />} />\n <Route path=\"settings\" element={<Settings />} />\n <Route path=\"*\" element={<NotFound />} />\n </Routes>\n </Layout>\n </BaseManagoProvider>\n );\n};\n","import React, { createContext, ReactNode } from 'react';\nimport type { ManagoConfig, ManagoContextType } from '../types';\n\nexport const ManagoContext = createContext<ManagoContextType | undefined>(undefined);\n\ninterface ManagoProviderProps {\n children: ReactNode;\n apiKey: string;\n config: ManagoConfig;\n navigate: (path: string) => void;\n currentPath: string;\n}\n\nexport const ManagoProvider = ({\n children,\n apiKey,\n config,\n navigate,\n currentPath,\n}: ManagoProviderProps) => {\n return (\n <ManagoContext.Provider value={{ apiKey, config, navigate, currentPath }}>\n {children}\n </ManagoContext.Provider>\n );\n};\n\nexport const useManago = () => {\n const context = React.useContext(ManagoContext);\n if (!context) throw new Error('useManago must be used within ManagoProvider');\n return context;\n};","import { useContext } from 'react';\nimport { ManagoContext } from '../providers/ManagoProvider';\n\n/**\n * Hook for framework-agnostic navigation\n * Uses the navigation adapter provided by the framework-specific ManagoAdmin component\n */\nexport const useNavigation = () => {\n const context = useContext(ManagoContext);\n\n if (!context) {\n throw new Error('useNavigation must be used within ManagoProvider');\n }\n\n return {\n navigate: context.navigate,\n currentPath: context.currentPath,\n isActive: (path: string) => {\n // Handle both exact matches and nested routes\n if (path === '/') {\n return context.currentPath === '/' || context.currentPath === '';\n }\n return context.currentPath.startsWith(path);\n },\n };\n};\n","import React from 'react';\nimport { useManago } from '../../providers/ManagoProvider';\nimport { useNavigation } from '../../hooks/useNavigation';\nimport type { MenuItem } from '../../types';\n\nconst defaultMenuItems: MenuItem[] = [\n { id: 'dashboard', label: 'Dashboard', path: '/' },\n { id: 'orders', label: 'Orders', path: '/orders' },\n { id: 'customers', label: 'Customers', path: '/customers' },\n { id: 'products', label: 'Products', path: '/products' },\n { id: 'settings', label: 'Settings', path: '/settings' },\n];\n\nexport const Sidebar = () => {\n const { config } = useManago();\n const { navigate, isActive } = useNavigation();\n\n const menuItems = defaultMenuItems.filter((item) => {\n const menuConfig = config.menu || {};\n // If menu item is explicitly set to false, hide it\n if (menuConfig[item.id as keyof typeof menuConfig] === false) {\n return false;\n }\n return true;\n });\n\n return (\n <aside className=\"mng-w-64 mng-bg-slate-900 mng-text-white mng-flex mng-flex-col\">\n {/* Logo / Brand */}\n <div className=\"mng-p-6 mng-flex mng-items-center mng-gap-3\">\n {config.theme?.logo ? (\n <img src={config.theme.logo} alt={config.appName} className=\"mng-h-8\" />\n ) : (\n <>\n <div className=\"mng-w-8 mng-h-8 mng-bg-blue-500 mng-rounded-md mng-flex mng-items-center mng-justify-center mng-font-bold\">\n {config.appName.charAt(0).toUpperCase()}\n </div>\n <span className=\"mng-text-xl mng-font-bold mng-tracking-tight\">\n {config.appName || 'Manago'}\n </span>\n </>\n )}\n </div>\n\n {/* Navigation Menu */}\n <nav className=\"mng-flex-1 mng-px-3 mng-space-y-1\">\n {menuItems.map((item) => (\n <button\n key={item.id}\n onClick={() => navigate(item.path)}\n className={`\n mng-w-full mng-flex mng-items-center mng-px-4 mng-py-2.5 mng-text-sm mng-rounded-lg\n mng-transition-colors mng-text-left\n ${\n isActive(item.path)\n ? 'mng-bg-blue-600 mng-text-white'\n : 'mng-text-slate-300 hover:mng-bg-slate-800 hover:mng-text-white'\n }\n `}\n >\n {item.icon && <span className=\"mng-mr-3\">{item.icon}</span>}\n {item.label}\n </button>\n ))}\n </nav>\n\n {/* Footer */}\n <div className=\"mng-p-4 mng-border-t mng-border-slate-800\">\n <p className=\"mng-text-xs mng-text-slate-500 mng-text-center\">\n Powered by Manago\n </p>\n </div>\n </aside>\n );\n};\n","import React from 'react';\nimport { useManago } from '../../providers/ManagoProvider';\n\ninterface HeaderProps {\n title?: string;\n}\n\nexport const Header = ({ title = 'Admin Panel' }: HeaderProps) => {\n const { config } = useManago();\n\n return (\n <header className=\"mng-h-16 mng-bg-white mng-border-b mng-border-slate-200 mng-flex mng-items-center mng-px-8 mng-justify-between\">\n <h1 className=\"mng-text-sm mng-font-medium mng-text-slate-500\">{title}</h1>\n\n <div className=\"mng-flex mng-items-center mng-gap-4\">\n <span className=\"mng-text-sm mng-text-slate-600\">{config.appName}</span>\n </div>\n </header>\n );\n};\n","import React, { ReactNode } from 'react';\nimport { Sidebar } from './Sidebar';\nimport { Header } from './Header';\n\ninterface LayoutProps {\n children: ReactNode;\n}\n\nexport const Layout = ({ children }: LayoutProps) => {\n return (\n <div className=\"mng-flex mng-h-screen mng-bg-slate-50 mng-font-sans\">\n <Sidebar />\n\n <div className=\"mng-flex-1 mng-flex mng-flex-col mng-overflow-hidden\">\n <Header />\n <main className=\"mng-flex-1 mng-overflow-y-auto mng-p-8\">\n {children}\n </main>\n </div>\n </div>\n );\n};\n","import React from 'react';\n\nexport const Dashboard = () => {\n return (\n <div className=\"mng-space-y-6\">\n <div className=\"mng-flex mng-items-center mng-justify-between\">\n <h2 className=\"mng-text-2xl mng-font-bold mng-text-slate-800\">Overview</h2>\n <button className=\"mng-bg-blue-600 mng-text-white mng-px-4 mng-py-2 mng-rounded-lg mng-text-sm mng-font-medium hover:mng-bg-blue-700 mng-transition-colors\">\n Download Report\n </button>\n </div>\n\n {/* Stats Cards */}\n <div className=\"mng-grid mng-grid-cols-1 md:mng-grid-cols-3 mng-gap-6\">\n {[\n { label: 'Total Revenue', value: '€45,231.89', change: '+20.1%', color: 'mng-text-green-600' },\n { label: 'Active Orders', value: '154', change: '+12.5%', color: 'mng-text-green-600' },\n { label: 'Refund Rate', value: '1.2%', change: '-0.4%', color: 'mng-text-red-600' },\n ].map((stat) => (\n <div key={stat.label} className=\"mng-bg-white mng-p-6 mng-rounded-xl mng-border mng-border-slate-200 mng-shadow-sm\">\n <p className=\"mng-text-sm mng-font-medium mng-text-slate-500\">{stat.label}</p>\n <div className=\"mng-flex mng-items-baseline mng-gap-2 mng-mt-2\">\n <h3 className=\"mng-text-3xl mng-font-bold mng-text-slate-900\">{stat.value}</h3>\n <span className={`mng-text-xs mng-font-medium ${stat.color}`}>{stat.change}</span>\n </div>\n </div>\n ))}\n </div>\n\n {/* Chart Placeholder */}\n <div className=\"mng-bg-white mng-rounded-xl mng-border mng-border-slate-200 mng-shadow-sm mng-h-64 mng-flex mng-items-center mng-justify-center\">\n <p className=\"mng-text-slate-400 mng-italic\">Chart visualization will be here...</p>\n </div>\n </div>\n );\n};\n","import React from 'react';\n\nconst mockOrders = [\n { id: '#ORD-7721', customer: 'Ion Popescu', status: 'Completed', total: '€120.00', date: 'Acum 2 ore' },\n { id: '#ORD-7722', customer: 'Elena Radu', status: 'Processing', total: '€45.50', date: 'Acum 5 ore' },\n { id: '#ORD-7723', customer: 'Mihai Sandu', status: 'Pending', total: '€210.99', date: 'Ieri' },\n { id: '#ORD-7724', customer: 'Ana Ionescu', status: 'Completed', total: '€89.99', date: 'Ieri' },\n { id: '#ORD-7725', customer: 'George Popa', status: 'Cancelled', total: '€156.00', date: 'Acum 2 zile' },\n];\n\nconst getStatusColor = (status: string) => {\n switch (status) {\n case 'Completed':\n return 'mng-bg-green-100 mng-text-green-700';\n case 'Processing':\n return 'mng-bg-blue-100 mng-text-blue-700';\n case 'Pending':\n return 'mng-bg-yellow-100 mng-text-yellow-700';\n case 'Cancelled':\n return 'mng-bg-red-100 mng-text-red-700';\n default:\n return 'mng-bg-slate-100 mng-text-slate-700';\n }\n};\n\nexport const Orders = () => {\n return (\n <div className=\"mng-space-y-6\">\n <div className=\"mng-flex mng-items-center mng-justify-between\">\n <h2 className=\"mng-text-2xl mng-font-bold mng-text-slate-800\">Orders Management</h2>\n <button className=\"mng-bg-blue-600 mng-text-white mng-px-4 mng-py-2 mng-rounded-lg mng-text-sm mng-font-medium hover:mng-bg-blue-700 mng-transition-colors\">\n Export Orders\n </button>\n </div>\n\n <div className=\"mng-bg-white mng-rounded-xl mng-border mng-border-slate-200 mng-shadow-sm mng-overflow-hidden\">\n <table className=\"mng-w-full mng-text-left mng-border-collapse\">\n <thead>\n <tr className=\"mng-bg-slate-50 mng-border-b mng-border-slate-200\">\n <th className=\"mng-px-6 mng-py-4 mng-text-xs mng-font-semibold mng-text-slate-500 mng-uppercase\">\n Order ID\n </th>\n <th className=\"mng-px-6 mng-py-4 mng-text-xs mng-font-semibold mng-text-slate-500 mng-uppercase\">\n Customer\n </th>\n <th className=\"mng-px-6 mng-py-4 mng-text-xs mng-font-semibold mng-text-slate-500 mng-uppercase\">\n Status\n </th>\n <th className=\"mng-px-6 mng-py-4 mng-text-xs mng-font-semibold mng-text-slate-500 mng-uppercase\">\n Total\n </th>\n <th className=\"mng-px-6 mng-py-4 mng-text-xs mng-font-semibold mng-text-slate-500 mng-uppercase\">\n Date\n </th>\n </tr>\n </thead>\n <tbody className=\"mng-divide-y mng-divide-slate-200\">\n {mockOrders.map((order) => (\n <tr key={order.id} className=\"hover:mng-bg-slate-50 mng-transition-colors\">\n <td className=\"mng-px-6 mng-py-4 mng-text-sm mng-font-medium mng-text-blue-600\">\n {order.id}\n </td>\n <td className=\"mng-px-6 mng-py-4 mng-text-sm mng-text-slate-600\">\n {order.customer}\n </td>\n <td className=\"mng-px-6 mng-py-4\">\n <span\n className={`mng-px-2.5 mng-py-0.5 mng-rounded-full mng-text-xs mng-font-medium ${getStatusColor(\n order.status\n )}`}\n >\n {order.status}\n </span>\n </td>\n <td className=\"mng-px-6 mng-py-4 mng-text-sm mng-font-semibold mng-text-slate-900\">\n {order.total}\n </td>\n <td className=\"mng-px-6 mng-py-4 mng-text-sm mng-text-slate-500\">\n {order.date}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </div>\n );\n};\n","import React from 'react';\n\nconst mockCustomers = [\n { id: '1', name: 'Ion Popescu', email: 'ion.popescu@example.com', orders: 12, totalSpent: '€1,234.56', joined: '2024-01-15' },\n { id: '2', name: 'Elena Radu', email: 'elena.radu@example.com', orders: 8, totalSpent: '€876.32', joined: '2024-02-20' },\n { id: '3', name: 'Mihai Sandu', email: 'mihai.sandu@example.com', orders: 15, totalSpent: '€2,103.45', joined: '2023-11-10' },\n { id: '4', name: 'Ana Ionescu', email: 'ana.ionescu@example.com', orders: 5, totalSpent: '€543.21', joined: '2024-03-05' },\n];\n\nexport const Customers = () => {\n return (\n <div className=\"mng-space-y-6\">\n <div className=\"mng-flex mng-items-center mng-justify-between\">\n <h2 className=\"mng-text-2xl mng-font-bold mng-text-slate-800\">Customers</h2>\n <button className=\"mng-bg-blue-600 mng-text-white mng-px-4 mng-py-2 mng-rounded-lg mng-text-sm mng-font-medium hover:mng-bg-blue-700 mng-transition-colors\">\n Add Customer\n </button>\n </div>\n\n <div className=\"mng-bg-white mng-rounded-xl mng-border mng-border-slate-200 mng-shadow-sm mng-overflow-hidden\">\n <table className=\"mng-w-full mng-text-left mng-border-collapse\">\n <thead>\n <tr className=\"mng-bg-slate-50 mng-border-b mng-border-slate-200\">\n <th className=\"mng-px-6 mng-py-4 mng-text-xs mng-font-semibold mng-text-slate-500 mng-uppercase\">\n Customer\n </th>\n <th className=\"mng-px-6 mng-py-4 mng-text-xs mng-font-semibold mng-text-slate-500 mng-uppercase\">\n Email\n </th>\n <th className=\"mng-px-6 mng-py-4 mng-text-xs mng-font-semibold mng-text-slate-500 mng-uppercase\">\n Orders\n </th>\n <th className=\"mng-px-6 mng-py-4 mng-text-xs mng-font-semibold mng-text-slate-500 mng-uppercase\">\n Total Spent\n </th>\n <th className=\"mng-px-6 mng-py-4 mng-text-xs mng-font-semibold mng-text-slate-500 mng-uppercase\">\n Joined\n </th>\n </tr>\n </thead>\n <tbody className=\"mng-divide-y mng-divide-slate-200\">\n {mockCustomers.map((customer) => (\n <tr key={customer.id} className=\"hover:mng-bg-slate-50 mng-transition-colors\">\n <td className=\"mng-px-6 mng-py-4\">\n <div className=\"mng-flex mng-items-center mng-gap-3\">\n <div className=\"mng-w-10 mng-h-10 mng-rounded-full mng-bg-blue-100 mng-flex mng-items-center mng-justify-center mng-text-blue-600 mng-font-semibold\">\n {customer.name.charAt(0)}\n </div>\n <span className=\"mng-text-sm mng-font-medium mng-text-slate-900\">\n {customer.name}\n </span>\n </div>\n </td>\n <td className=\"mng-px-6 mng-py-4 mng-text-sm mng-text-slate-600\">\n {customer.email}\n </td>\n <td className=\"mng-px-6 mng-py-4 mng-text-sm mng-text-slate-900\">\n {customer.orders}\n </td>\n <td className=\"mng-px-6 mng-py-4 mng-text-sm mng-font-semibold mng-text-slate-900\">\n {customer.totalSpent}\n </td>\n <td className=\"mng-px-6 mng-py-4 mng-text-sm mng-text-slate-500\">\n {customer.joined}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </div>\n );\n};\n","import React from 'react';\n\nexport const Products = () => {\n return (\n <div className=\"mng-space-y-6\">\n <div className=\"mng-flex mng-items-center mng-justify-between\">\n <h2 className=\"mng-text-2xl mng-font-bold mng-text-slate-800\">Products</h2>\n <button className=\"mng-bg-blue-600 mng-text-white mng-px-4 mng-py-2 mng-rounded-lg mng-text-sm mng-font-medium hover:mng-bg-blue-700 mng-transition-colors\">\n Add Product\n </button>\n </div>\n\n <div className=\"mng-bg-white mng-rounded-xl mng-border mng-border-slate-200 mng-shadow-sm mng-p-12 mng-flex mng-items-center mng-justify-center mng-min-h-96\">\n <p className=\"mng-text-slate-400 mng-italic\">Products management coming soon...</p>\n </div>\n </div>\n );\n};\n","import React from 'react';\nimport { useManago } from '../../providers/ManagoProvider';\n\nexport const Settings = () => {\n const { config } = useManago();\n\n return (\n <div className=\"mng-space-y-6\">\n <h2 className=\"mng-text-2xl mng-font-bold mng-text-slate-800\">Settings</h2>\n\n <div className=\"mng-bg-white mng-rounded-xl mng-border mng-border-slate-200 mng-shadow-sm mng-p-6 mng-space-y-6\">\n <div>\n <h3 className=\"mng-text-lg mng-font-semibold mng-text-slate-800 mng-mb-4\">\n General Settings\n </h3>\n\n <div className=\"mng-space-y-4\">\n <div>\n <label className=\"mng-block mng-text-sm mng-font-medium mng-text-slate-700 mng-mb-2\">\n Application Name\n </label>\n <input\n type=\"text\"\n disabled\n value={config.appName}\n className=\"mng-w-full mng-px-4 mng-py-2 mng-border mng-border-slate-300 mng-rounded-lg mng-bg-slate-50 mng-text-slate-500\"\n />\n <p className=\"mng-text-xs mng-text-slate-500 mng-mt-1\">\n Configured via ManagoProvider\n </p>\n </div>\n\n <div>\n <label className=\"mng-block mng-text-sm mng-font-medium mng-text-slate-700 mng-mb-2\">\n API Endpoint\n </label>\n <input\n type=\"text\"\n disabled\n value={config.apiEndpoint || 'Not configured'}\n className=\"mng-w-full mng-px-4 mng-py-2 mng-border mng-border-slate-300 mng-rounded-lg mng-bg-slate-50 mng-text-slate-500\"\n />\n </div>\n </div>\n </div>\n\n <div className=\"mng-border-t mng-border-slate-200 mng-pt-6\">\n <h3 className=\"mng-text-lg mng-font-semibold mng-text-slate-800 mng-mb-4\">\n Menu Configuration\n </h3>\n <div className=\"mng-space-y-2\">\n {Object.entries(config.menu || {}).map(([key, value]) => (\n <div key={key} className=\"mng-flex mng-items-center mng-justify-between\">\n <span className=\"mng-text-sm mng-text-slate-700 mng-capitalize\">{key}</span>\n <span\n className={`mng-text-sm mng-font-medium ${\n value ? 'mng-text-green-600' : 'mng-text-red-600'\n }`}\n >\n {value ? 'Enabled' : 'Disabled'}\n </span>\n </div>\n ))}\n </div>\n </div>\n </div>\n </div>\n );\n};\n"],"mappings":"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","names":["Routes","Route","useNavigate","useLocation","React","createContext","jsx","ManagoContext","ManagoProvider","children","apiKey","config","navigate","currentPath","useManago","context","useContext","useNavigation","context","useContext","ManagoContext","path","Fragment","jsx","jsxs","defaultMenuItems","Sidebar","config","useManago","navigate","isActive","useNavigation","menuItems","item","jsx","jsxs","Header","title","config","useManago","jsx","jsxs","Layout","children","Sidebar","Header","jsx","jsxs","Dashboard","stat","jsx","jsxs","mockOrders","getStatusColor","status","Orders","order","jsx","jsxs","mockCustomers","Customers","customer","jsx","jsxs","Products","jsx","jsxs","Settings","config","useManago","key","value","jsx","jsxs","NotFound","navigate","useNavigate","ManagoAdmin","apiKey","config","location","useLocation","ManagoProvider","path","Layout","Routes","Route","Dashboard","Orders","Customers","Products","Settings"]}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import { a as ManagoConfig } from '../../ManagoProvider-DtovqU61.mjs';
|
|
3
|
+
export { u as useManago } from '../../ManagoProvider-DtovqU61.mjs';
|
|
4
|
+
import 'react';
|
|
5
|
+
|
|
6
|
+
interface ManagoAdminProps {
|
|
7
|
+
apiKey: string;
|
|
8
|
+
config: ManagoConfig;
|
|
9
|
+
basePath?: string;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* TanStack Router adapter for Manago Admin
|
|
13
|
+
*
|
|
14
|
+
* Usage:
|
|
15
|
+
*
|
|
16
|
+
* import { ManagoAdmin } from '@manago/admin/tanstack';
|
|
17
|
+
*
|
|
18
|
+
* function App() {
|
|
19
|
+
* return <ManagoAdmin apiKey="..." config={{ appName: "My Store" }} basePath="/admin" />;
|
|
20
|
+
* }
|
|
21
|
+
*/
|
|
22
|
+
declare const ManagoAdmin: ({ apiKey, config, basePath }: ManagoAdminProps) => react_jsx_runtime.JSX.Element;
|
|
23
|
+
|
|
24
|
+
export { ManagoAdmin, ManagoConfig };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import { a as ManagoConfig } from '../../ManagoProvider-DtovqU61.js';
|
|
3
|
+
export { u as useManago } from '../../ManagoProvider-DtovqU61.js';
|
|
4
|
+
import 'react';
|
|
5
|
+
|
|
6
|
+
interface ManagoAdminProps {
|
|
7
|
+
apiKey: string;
|
|
8
|
+
config: ManagoConfig;
|
|
9
|
+
basePath?: string;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* TanStack Router adapter for Manago Admin
|
|
13
|
+
*
|
|
14
|
+
* Usage:
|
|
15
|
+
*
|
|
16
|
+
* import { ManagoAdmin } from '@manago/admin/tanstack';
|
|
17
|
+
*
|
|
18
|
+
* function App() {
|
|
19
|
+
* return <ManagoAdmin apiKey="..." config={{ appName: "My Store" }} basePath="/admin" />;
|
|
20
|
+
* }
|
|
21
|
+
*/
|
|
22
|
+
declare const ManagoAdmin: ({ apiKey, config, basePath }: ManagoAdminProps) => react_jsx_runtime.JSX.Element;
|
|
23
|
+
|
|
24
|
+
export { ManagoAdmin, ManagoConfig };
|