@nestledjs/data-browser 0.1.0
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/.babelrc +12 -0
- package/LICENSE +21 -0
- package/README.md +320 -0
- package/eslint.config.mjs +12 -0
- package/package.json +44 -0
- package/project.json +39 -0
- package/src/index.ts +28 -0
- package/src/lib/admin-data.spec.tsx +10 -0
- package/src/lib/admin-data.tsx +9 -0
- package/src/lib/components/filters/DateRangeFilter.tsx +88 -0
- package/src/lib/components/filters/NumberRangeFilter.tsx +111 -0
- package/src/lib/components/filters/RelationComponents.tsx +176 -0
- package/src/lib/components/filters/RelationFilterField.tsx +106 -0
- package/src/lib/components/filters/index.ts +5 -0
- package/src/lib/components/index.ts +2 -0
- package/src/lib/components/shared/AdminBreadcrumbs.tsx +88 -0
- package/src/lib/components/shared/AdminErrorStates.tsx +180 -0
- package/src/lib/components/shared/AdminStatusDisplay.tsx +292 -0
- package/src/lib/components/shared/index.ts +3 -0
- package/src/lib/context/AdminDataContext.tsx +74 -0
- package/src/lib/hooks/useAdminList.ts +42 -0
- package/src/lib/hooks/useClickOutside.ts +21 -0
- package/src/lib/hooks/useDebounce.ts +16 -0
- package/src/lib/hooks/useRelationData.ts +114 -0
- package/src/lib/layouts/AdminDataLayout.tsx +251 -0
- package/src/lib/pages/AdminDataCreatePage.tsx +415 -0
- package/src/lib/pages/AdminDataEditPage.tsx +777 -0
- package/src/lib/pages/AdminDataIndexPage.tsx +50 -0
- package/src/lib/pages/AdminDataListPage.tsx +921 -0
- package/src/lib/types/index.ts +51 -0
- package/src/lib/utils/graphql-utils.ts +538 -0
- package/src/lib/utils/secure-storage.ts +305 -0
- package/src/lib/utils/string-utils.ts +53 -0
- package/tsconfig.json +17 -0
- package/tsconfig.lib.json +20 -0
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { Link } from 'react-router'
|
|
2
|
+
import { getPluralName } from '@nestledjs/helpers'
|
|
3
|
+
import { useAdminDataContext } from '../context/AdminDataContext'
|
|
4
|
+
import { kebabCase, spacedWords } from '../utils/string-utils'
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Landing page for admin data browser showing all available models
|
|
8
|
+
*/
|
|
9
|
+
export function AdminDataIndexPage() {
|
|
10
|
+
const { databaseModels, basePath = '/admin/data' } = useAdminDataContext()
|
|
11
|
+
|
|
12
|
+
return (
|
|
13
|
+
<div className="text-center py-12">
|
|
14
|
+
<div className="max-w-2xl mx-auto">
|
|
15
|
+
<h1 className="text-3xl font-bold text-gray-900 mb-4">Database Administration</h1>
|
|
16
|
+
<p className="text-lg text-gray-600 mb-8">
|
|
17
|
+
Choose a data model from the sidebar to get started with managing your database records.
|
|
18
|
+
</p>
|
|
19
|
+
|
|
20
|
+
<div className="bg-blue-50 border border-blue-200 rounded-lg p-6 mb-8">
|
|
21
|
+
<h2 className="text-lg font-semibold text-blue-900 mb-2">Available Models</h2>
|
|
22
|
+
<p className="text-blue-700 mb-4">
|
|
23
|
+
You can manage {databaseModels.length} different data models in your database:
|
|
24
|
+
</p>
|
|
25
|
+
<div className="grid grid-cols-2 md:grid-cols-3 gap-2 text-sm">
|
|
26
|
+
{databaseModels.slice(0, 12).map(model => (
|
|
27
|
+
<Link
|
|
28
|
+
key={model.name}
|
|
29
|
+
to={`${basePath}/${kebabCase(getPluralName(model.name))}`}
|
|
30
|
+
className="text-blue-600 hover:text-blue-800 hover:underline"
|
|
31
|
+
>
|
|
32
|
+
{getPluralName(spacedWords(model.name))}
|
|
33
|
+
</Link>
|
|
34
|
+
))}
|
|
35
|
+
{databaseModels.length > 12 && (
|
|
36
|
+
<span className="text-blue-600 italic">+{databaseModels.length - 12} more...</span>
|
|
37
|
+
)}
|
|
38
|
+
</div>
|
|
39
|
+
</div>
|
|
40
|
+
|
|
41
|
+
<div className="text-sm text-gray-500">
|
|
42
|
+
<p>
|
|
43
|
+
This interface provides full CRUD (Create, Read, Update, Delete) operations for all your
|
|
44
|
+
database models. Select a model from the sidebar to view and manage records.
|
|
45
|
+
</p>
|
|
46
|
+
</div>
|
|
47
|
+
</div>
|
|
48
|
+
</div>
|
|
49
|
+
)
|
|
50
|
+
}
|