@pattern-stack/frontend-patterns 0.0.5 → 0.0.6
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/dist/atoms/composed/Accordion/Accordion.d.ts +20 -0
- package/dist/atoms/composed/Accordion/Accordion.d.ts.map +1 -0
- package/dist/atoms/composed/Accordion/index.d.ts +2 -0
- package/dist/atoms/composed/Accordion/index.d.ts.map +1 -0
- package/dist/atoms/composed/Alert/Alert.d.ts +25 -0
- package/dist/atoms/composed/Alert/Alert.d.ts.map +1 -0
- package/dist/atoms/composed/Alert/index.d.ts +2 -0
- package/dist/atoms/composed/Alert/index.d.ts.map +1 -0
- package/dist/atoms/composed/Breadcrumb/Breadcrumb.d.ts +17 -0
- package/dist/atoms/composed/Breadcrumb/Breadcrumb.d.ts.map +1 -0
- package/dist/atoms/composed/Breadcrumb/index.d.ts +2 -0
- package/dist/atoms/composed/Breadcrumb/index.d.ts.map +1 -0
- package/dist/atoms/composed/Chart/Chart.d.ts +37 -0
- package/dist/atoms/composed/Chart/Chart.d.ts.map +1 -0
- package/dist/atoms/composed/Chart/index.d.ts +3 -0
- package/dist/atoms/composed/Chart/index.d.ts.map +1 -0
- package/dist/atoms/composed/ColorSwatch/ColorSwatch.d.ts +19 -0
- package/dist/atoms/composed/ColorSwatch/ColorSwatch.d.ts.map +1 -0
- package/dist/atoms/composed/ColorSwatch/index.d.ts +2 -0
- package/dist/atoms/composed/ColorSwatch/index.d.ts.map +1 -0
- package/dist/atoms/composed/DarkModeToggle.d.ts +4 -0
- package/dist/atoms/composed/DarkModeToggle.d.ts.map +1 -0
- package/dist/atoms/composed/DataBadge/DataBadge.d.ts +13 -0
- package/dist/atoms/composed/DataBadge/DataBadge.d.ts.map +1 -0
- package/dist/atoms/composed/DataBadge/index.d.ts +2 -0
- package/dist/atoms/composed/DataBadge/index.d.ts.map +1 -0
- package/dist/atoms/composed/DataTable/DataTable.d.ts +28 -0
- package/dist/atoms/composed/DataTable/DataTable.d.ts.map +1 -0
- package/dist/atoms/composed/DataTable/TableCellWithTooltip.d.ts +10 -0
- package/dist/atoms/composed/DataTable/TableCellWithTooltip.d.ts.map +1 -0
- package/dist/atoms/composed/DataTable/index.d.ts +3 -0
- package/dist/atoms/composed/DataTable/index.d.ts.map +1 -0
- package/dist/atoms/composed/DateTimePicker/DateTimePicker.d.ts +45 -0
- package/dist/atoms/composed/DateTimePicker/DateTimePicker.d.ts.map +1 -0
- package/dist/atoms/composed/DateTimePicker/index.d.ts +3 -0
- package/dist/atoms/composed/DateTimePicker/index.d.ts.map +1 -0
- package/dist/atoms/composed/DetailedCard/DetailedCard.d.ts +30 -0
- package/dist/atoms/composed/DetailedCard/DetailedCard.d.ts.map +1 -0
- package/dist/atoms/composed/DetailedCard/index.d.ts +3 -0
- package/dist/atoms/composed/DetailedCard/index.d.ts.map +1 -0
- package/dist/atoms/composed/EmptyState/EmptyState.d.ts +18 -0
- package/dist/atoms/composed/EmptyState/EmptyState.d.ts.map +1 -0
- package/dist/atoms/composed/EmptyState/index.d.ts +2 -0
- package/dist/atoms/composed/EmptyState/index.d.ts.map +1 -0
- package/dist/atoms/composed/FileUpload/FileUpload.d.ts +46 -0
- package/dist/atoms/composed/FileUpload/FileUpload.d.ts.map +1 -0
- package/dist/atoms/composed/FileUpload/index.d.ts +3 -0
- package/dist/atoms/composed/FileUpload/index.d.ts.map +1 -0
- package/dist/atoms/composed/FormField/FormField.d.ts +23 -0
- package/dist/atoms/composed/FormField/FormField.d.ts.map +1 -0
- package/dist/atoms/composed/FormField/index.d.ts +2 -0
- package/dist/atoms/composed/FormField/index.d.ts.map +1 -0
- package/dist/atoms/composed/GlobalSearch/GlobalSearch.d.ts +8 -0
- package/dist/atoms/composed/GlobalSearch/GlobalSearch.d.ts.map +1 -0
- package/dist/atoms/composed/GlobalSearch/index.d.ts +2 -0
- package/dist/atoms/composed/GlobalSearch/index.d.ts.map +1 -0
- package/dist/atoms/composed/IconBadge/IconBadge.d.ts +16 -0
- package/dist/atoms/composed/IconBadge/IconBadge.d.ts.map +1 -0
- package/dist/atoms/composed/IconBadge/index.d.ts +3 -0
- package/dist/atoms/composed/IconBadge/index.d.ts.map +1 -0
- package/dist/atoms/composed/Modal/Modal.d.ts +18 -0
- package/dist/atoms/composed/Modal/Modal.d.ts.map +1 -0
- package/dist/atoms/composed/Modal/index.d.ts +3 -0
- package/dist/atoms/composed/Modal/index.d.ts.map +1 -0
- package/dist/atoms/composed/PaletteSwitcher.d.ts +7 -0
- package/dist/atoms/composed/PaletteSwitcher.d.ts.map +1 -0
- package/dist/atoms/composed/ProgressBar/ProgressBar.d.ts +25 -0
- package/dist/atoms/composed/ProgressBar/ProgressBar.d.ts.map +1 -0
- package/dist/atoms/composed/ProgressBar/index.d.ts +2 -0
- package/dist/atoms/composed/ProgressBar/index.d.ts.map +1 -0
- package/dist/atoms/composed/SalesPanel/SalesPanel.d.ts +19 -0
- package/dist/atoms/composed/SalesPanel/SalesPanel.d.ts.map +1 -0
- package/dist/atoms/composed/SalesPanel/index.d.ts +2 -0
- package/dist/atoms/composed/SalesPanel/index.d.ts.map +1 -0
- package/dist/atoms/composed/SalesPanel/mockSalesData.d.ts +63 -0
- package/dist/atoms/composed/SalesPanel/mockSalesData.d.ts.map +1 -0
- package/dist/atoms/composed/StatCard/StatCard.d.ts +21 -0
- package/dist/atoms/composed/StatCard/StatCard.d.ts.map +1 -0
- package/dist/atoms/composed/StatCard/index.d.ts +2 -0
- package/dist/atoms/composed/StatCard/index.d.ts.map +1 -0
- package/dist/atoms/composed/StyleGuide.d.ts +3 -0
- package/dist/atoms/composed/StyleGuide.d.ts.map +1 -0
- package/dist/atoms/composed/Toast/Toast.d.ts +40 -0
- package/dist/atoms/composed/Toast/Toast.d.ts.map +1 -0
- package/dist/atoms/composed/Toast/index.d.ts +2 -0
- package/dist/atoms/composed/Toast/index.d.ts.map +1 -0
- package/dist/atoms/composed/Tooltip/Tooltip.d.ts +16 -0
- package/dist/atoms/composed/Tooltip/Tooltip.d.ts.map +1 -0
- package/dist/atoms/composed/Tooltip/index.d.ts +2 -0
- package/dist/atoms/composed/Tooltip/index.d.ts.map +1 -0
- package/dist/atoms/composed/UserAvatar/UserAvatar.d.ts +8 -0
- package/dist/atoms/composed/UserAvatar/UserAvatar.d.ts.map +1 -0
- package/dist/atoms/composed/UserAvatar/index.d.ts +2 -0
- package/dist/atoms/composed/UserAvatar/index.d.ts.map +1 -0
- package/dist/atoms/composed/UserMenu/UserMenu.d.ts +8 -0
- package/dist/atoms/composed/UserMenu/UserMenu.d.ts.map +1 -0
- package/dist/atoms/composed/UserMenu/index.d.ts +2 -0
- package/dist/atoms/composed/UserMenu/index.d.ts.map +1 -0
- package/dist/atoms/composed/index.d.ts +26 -0
- package/dist/atoms/composed/index.d.ts.map +1 -0
- package/dist/atoms/hooks/useApi.d.ts +25 -0
- package/dist/atoms/hooks/useApi.d.ts.map +1 -0
- package/dist/atoms/hooks/useHealth.d.ts +19 -0
- package/dist/atoms/hooks/useHealth.d.ts.map +1 -0
- package/dist/atoms/index.d.ts +9 -0
- package/dist/atoms/index.d.ts.map +1 -0
- package/dist/atoms/services/api/client.d.ts +20 -0
- package/dist/atoms/services/api/client.d.ts.map +1 -0
- package/dist/atoms/services/auth-service.d.ts +24 -0
- package/dist/atoms/services/auth-service.d.ts.map +1 -0
- package/dist/atoms/services/health.d.ts +7 -0
- package/dist/atoms/services/health.d.ts.map +1 -0
- package/dist/atoms/services/index.d.ts +4 -0
- package/dist/atoms/services/index.d.ts.map +1 -0
- package/dist/atoms/shared/config/constants.d.ts +15 -0
- package/dist/atoms/shared/config/constants.d.ts.map +1 -0
- package/dist/atoms/shared/config/dashboard-sizes.d.ts +83 -0
- package/dist/atoms/shared/config/dashboard-sizes.d.ts.map +1 -0
- package/dist/atoms/shared/config/environment.d.ts +10 -0
- package/dist/atoms/shared/config/environment.d.ts.map +1 -0
- package/dist/atoms/shared/index.d.ts +4 -0
- package/dist/atoms/shared/index.d.ts.map +1 -0
- package/dist/atoms/types/auth.d.ts +56 -0
- package/dist/atoms/types/auth.d.ts.map +1 -0
- package/dist/atoms/types/entity-config.d.ts +117 -0
- package/dist/atoms/types/entity-config.d.ts.map +1 -0
- package/dist/atoms/types/generated.d.ts +1469 -0
- package/dist/atoms/types/generated.d.ts.map +1 -0
- package/dist/atoms/types/index.d.ts +6 -0
- package/dist/atoms/types/index.d.ts.map +1 -0
- package/dist/atoms/types/loading.d.ts +26 -0
- package/dist/atoms/types/loading.d.ts.map +1 -0
- package/dist/atoms/types/navigation.d.ts +30 -0
- package/dist/atoms/types/navigation.d.ts.map +1 -0
- package/dist/atoms/ui/Badge.d.ts +10 -0
- package/dist/atoms/ui/Badge.d.ts.map +1 -0
- package/dist/atoms/ui/ErrorBoundary.d.ts +18 -0
- package/dist/atoms/ui/ErrorBoundary.d.ts.map +1 -0
- package/dist/atoms/ui/Select.d.ts +28 -0
- package/dist/atoms/ui/Select.d.ts.map +1 -0
- package/dist/atoms/ui/Switch.d.ts +9 -0
- package/dist/atoms/ui/Switch.d.ts.map +1 -0
- package/dist/atoms/ui/Tabs.d.ts +30 -0
- package/dist/atoms/ui/Tabs.d.ts.map +1 -0
- package/dist/atoms/ui/avatar.d.ts +7 -0
- package/dist/atoms/ui/avatar.d.ts.map +1 -0
- package/dist/atoms/ui/button.d.ts +14 -0
- package/dist/atoms/ui/button.d.ts.map +1 -0
- package/dist/atoms/ui/card.d.ts +12 -0
- package/dist/atoms/ui/card.d.ts.map +1 -0
- package/dist/atoms/ui/dropdown-menu.d.ts +28 -0
- package/dist/atoms/ui/dropdown-menu.d.ts.map +1 -0
- package/dist/atoms/ui/index.d.ts +15 -0
- package/dist/atoms/ui/index.d.ts.map +1 -0
- package/dist/atoms/ui/input.d.ts +5 -0
- package/dist/atoms/ui/input.d.ts.map +1 -0
- package/dist/atoms/ui/label.d.ts +6 -0
- package/dist/atoms/ui/label.d.ts.map +1 -0
- package/dist/atoms/ui/skeleton.d.ts +3 -0
- package/dist/atoms/ui/skeleton.d.ts.map +1 -0
- package/dist/atoms/ui/spinner.d.ts +14 -0
- package/dist/atoms/ui/spinner.d.ts.map +1 -0
- package/dist/atoms/ui/table.d.ts +11 -0
- package/dist/atoms/ui/table.d.ts.map +1 -0
- package/dist/atoms/utils/animations.d.ts +65 -0
- package/dist/atoms/utils/animations.d.ts.map +1 -0
- package/dist/atoms/utils/icon-resolver.d.ts +72 -0
- package/dist/atoms/utils/icon-resolver.d.ts.map +1 -0
- package/dist/atoms/utils/metric-engine.d.ts +30 -0
- package/dist/atoms/utils/metric-engine.d.ts.map +1 -0
- package/dist/atoms/utils/tooltip-helpers.d.ts +71 -0
- package/dist/atoms/utils/tooltip-helpers.d.ts.map +1 -0
- package/dist/atoms/utils/utils.d.ts +6 -0
- package/dist/atoms/utils/utils.d.ts.map +1 -0
- package/dist/features/auth/components/LoginForm.d.ts +2 -0
- package/dist/features/auth/components/LoginForm.d.ts.map +1 -0
- package/dist/features/auth/components/LogoutButton.d.ts +2 -0
- package/dist/features/auth/components/LogoutButton.d.ts.map +1 -0
- package/dist/features/auth/components/ProtectedRoute.d.ts +10 -0
- package/dist/features/auth/components/ProtectedRoute.d.ts.map +1 -0
- package/dist/features/auth/components/index.d.ts +4 -0
- package/dist/features/auth/components/index.d.ts.map +1 -0
- package/dist/features/auth/hooks/index.d.ts +3 -0
- package/dist/features/auth/hooks/index.d.ts.map +1 -0
- package/dist/features/auth/hooks/useAuth.d.ts +10 -0
- package/dist/features/auth/hooks/useAuth.d.ts.map +1 -0
- package/dist/features/auth/hooks/usePermissions.d.ts +13 -0
- package/dist/features/auth/hooks/usePermissions.d.ts.map +1 -0
- package/dist/features/auth/index.d.ts +3 -0
- package/dist/features/auth/index.d.ts.map +1 -0
- package/dist/features/index.d.ts +2 -0
- package/dist/features/index.d.ts.map +1 -0
- package/dist/frontend-patterns.css +1 -1
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.es.js +131 -1658
- package/dist/index.es.js.map +1 -1
- package/dist/index.js +131 -1658
- package/dist/index.js.map +1 -1
- package/dist/molecules/forms/FormGroup.d.ts +17 -0
- package/dist/molecules/forms/FormGroup.d.ts.map +1 -0
- package/dist/molecules/forms/SearchInput.d.ts +36 -0
- package/dist/molecules/forms/SearchInput.d.ts.map +1 -0
- package/dist/molecules/forms/index.d.ts +3 -0
- package/dist/molecules/forms/index.d.ts.map +1 -0
- package/dist/molecules/index.d.ts +4 -0
- package/dist/molecules/index.d.ts.map +1 -0
- package/dist/molecules/layout/AppHeader/AppHeader.d.ts +7 -0
- package/dist/molecules/layout/AppHeader/AppHeader.d.ts.map +1 -0
- package/dist/molecules/layout/AppHeader/index.d.ts +2 -0
- package/dist/molecules/layout/AppHeader/index.d.ts.map +1 -0
- package/dist/molecules/layout/AppLayout.d.ts +2 -0
- package/dist/molecules/layout/AppLayout.d.ts.map +1 -0
- package/dist/molecules/layout/DashboardWithSidePanel/DashboardWithSidePanel.d.ts +16 -0
- package/dist/molecules/layout/DashboardWithSidePanel/DashboardWithSidePanel.d.ts.map +1 -0
- package/dist/molecules/layout/DashboardWithSidePanel/index.d.ts +2 -0
- package/dist/molecules/layout/DashboardWithSidePanel/index.d.ts.map +1 -0
- package/dist/molecules/layout/NavigationContext.d.ts +15 -0
- package/dist/molecules/layout/NavigationContext.d.ts.map +1 -0
- package/dist/molecules/layout/PageTemplate.d.ts +19 -0
- package/dist/molecules/layout/PageTemplate.d.ts.map +1 -0
- package/dist/molecules/layout/SectionHeader/SectionHeader.d.ts +24 -0
- package/dist/molecules/layout/SectionHeader/SectionHeader.d.ts.map +1 -0
- package/dist/molecules/layout/SectionHeader/index.d.ts +2 -0
- package/dist/molecules/layout/SectionHeader/index.d.ts.map +1 -0
- package/dist/molecules/layout/ShowcaseSection.d.ts +22 -0
- package/dist/molecules/layout/ShowcaseSection.d.ts.map +1 -0
- package/dist/molecules/layout/Sidebar.d.ts +6 -0
- package/dist/molecules/layout/Sidebar.d.ts.map +1 -0
- package/dist/molecules/layout/SidebarButton/SidebarButton.d.ts +15 -0
- package/dist/molecules/layout/SidebarButton/SidebarButton.d.ts.map +1 -0
- package/dist/molecules/layout/SidebarButton/index.d.ts +2 -0
- package/dist/molecules/layout/SidebarButton/index.d.ts.map +1 -0
- package/dist/molecules/layout/SidebarContext.d.ts +12 -0
- package/dist/molecules/layout/SidebarContext.d.ts.map +1 -0
- package/dist/molecules/layout/index.d.ts +11 -0
- package/dist/molecules/layout/index.d.ts.map +1 -0
- package/dist/molecules/navigation/NavMenu.d.ts +20 -0
- package/dist/molecules/navigation/NavMenu.d.ts.map +1 -0
- package/dist/molecules/navigation/Pagination.d.ts +14 -0
- package/dist/molecules/navigation/Pagination.d.ts.map +1 -0
- package/dist/molecules/navigation/index.d.ts +3 -0
- package/dist/molecules/navigation/index.d.ts.map +1 -0
- package/dist/organisms/index.d.ts +2 -0
- package/dist/organisms/index.d.ts.map +1 -0
- package/dist/organisms/showcase/ComponentShowcasePage.d.ts +3 -0
- package/dist/organisms/showcase/ComponentShowcasePage.d.ts.map +1 -0
- package/dist/templates/AuthTemplate.d.ts +68 -0
- package/dist/templates/AuthTemplate.d.ts.map +1 -0
- package/dist/templates/ComponentShowcaseTemplate.d.ts +53 -0
- package/dist/templates/ComponentShowcaseTemplate.d.ts.map +1 -0
- package/dist/templates/DashboardTemplate.d.ts +62 -0
- package/dist/templates/DashboardTemplate.d.ts.map +1 -0
- package/dist/templates/DataTemplate.d.ts +78 -0
- package/dist/templates/DataTemplate.d.ts.map +1 -0
- package/dist/templates/admin/AdminCRUDTemplate.d.ts +105 -0
- package/dist/templates/admin/AdminCRUDTemplate.d.ts.map +1 -0
- package/dist/templates/admin/AdminDashboardTemplate.d.ts +89 -0
- package/dist/templates/admin/AdminDashboardTemplate.d.ts.map +1 -0
- package/dist/templates/admin/AdminDetailTemplate.d.ts +132 -0
- package/dist/templates/admin/AdminDetailTemplate.d.ts.map +1 -0
- package/dist/templates/admin/index.d.ts +4 -0
- package/dist/templates/admin/index.d.ts.map +1 -0
- package/dist/templates/factory.d.ts +29 -0
- package/dist/templates/factory.d.ts.map +1 -0
- package/dist/templates/index.d.ts +7 -0
- package/dist/templates/index.d.ts.map +1 -0
- package/package.json +3 -2
- package/src/__tests__/atoms/composed/databadge.test.tsx +106 -0
- package/src/__tests__/atoms/composed/statcard.test.tsx +133 -0
- package/src/__tests__/atoms/utils/icon-resolver.test.tsx +140 -0
- package/src/atoms/types/index.ts +1 -0
- package/src/atoms/types/navigation.ts +43 -0
- package/src/atoms/utils/icon-resolver.tsx +54 -0
- package/src/atoms/utils/utils.ts +3 -2
- package/src/molecules/layout/NavigationContext.tsx +63 -0
- package/src/molecules/layout/Sidebar.tsx +10 -31
- package/src/molecules/layout/SidebarButton/SidebarButton.tsx +32 -10
- package/src/molecules/layout/index.ts +3 -1
- package/src/organisms/index.ts +2 -1
- package/src/templates/factory.tsx +14 -7
- package/src/templates/index.ts +2 -1
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { type Column } from '../atoms/composed/DataTable';
|
|
3
|
+
import { type SearchResult } from '../molecules/forms/SearchInput';
|
|
4
|
+
export interface DataTemplateProps {
|
|
5
|
+
/** Page title */
|
|
6
|
+
title: string;
|
|
7
|
+
/** Page description */
|
|
8
|
+
description?: string;
|
|
9
|
+
/** Search functionality */
|
|
10
|
+
searchConfig?: {
|
|
11
|
+
placeholder?: string;
|
|
12
|
+
value?: string;
|
|
13
|
+
onChange?: (value: string) => void;
|
|
14
|
+
results?: SearchResult[];
|
|
15
|
+
};
|
|
16
|
+
/** Filter functionality */
|
|
17
|
+
filterConfig?: {
|
|
18
|
+
onFilter?: () => void;
|
|
19
|
+
filterCount?: number;
|
|
20
|
+
};
|
|
21
|
+
/** Data table configuration */
|
|
22
|
+
tableConfig: {
|
|
23
|
+
data: Record<string, unknown>[];
|
|
24
|
+
columns: Column<Record<string, unknown>>[];
|
|
25
|
+
loading?: boolean;
|
|
26
|
+
onRowClick?: (item: Record<string, unknown>) => void;
|
|
27
|
+
};
|
|
28
|
+
/** Pagination configuration */
|
|
29
|
+
paginationConfig?: {
|
|
30
|
+
currentPage: number;
|
|
31
|
+
totalPages: number;
|
|
32
|
+
onPageChange: (page: number) => void;
|
|
33
|
+
};
|
|
34
|
+
/** Action buttons */
|
|
35
|
+
actions?: {
|
|
36
|
+
primary?: {
|
|
37
|
+
label: string;
|
|
38
|
+
onClick: () => void;
|
|
39
|
+
icon?: React.ReactNode;
|
|
40
|
+
};
|
|
41
|
+
secondary?: Array<{
|
|
42
|
+
label: string;
|
|
43
|
+
onClick: () => void;
|
|
44
|
+
icon?: React.ReactNode;
|
|
45
|
+
}>;
|
|
46
|
+
};
|
|
47
|
+
/** Additional CSS classes */
|
|
48
|
+
className?: string;
|
|
49
|
+
/** Category-based styling */
|
|
50
|
+
category?: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8;
|
|
51
|
+
/** Empty state content */
|
|
52
|
+
emptyState?: React.ReactNode;
|
|
53
|
+
}
|
|
54
|
+
export declare const DataTemplate: React.FC<DataTemplateProps>;
|
|
55
|
+
/**
|
|
56
|
+
* Data Detail Template
|
|
57
|
+
* Template for displaying detailed information about a single data item
|
|
58
|
+
*/
|
|
59
|
+
export interface DataDetailTemplateProps {
|
|
60
|
+
/** Page title */
|
|
61
|
+
title: string;
|
|
62
|
+
/** Page subtitle */
|
|
63
|
+
subtitle?: string;
|
|
64
|
+
/** Back navigation */
|
|
65
|
+
onBack?: () => void;
|
|
66
|
+
/** Detail content */
|
|
67
|
+
children: React.ReactNode;
|
|
68
|
+
/** Action buttons */
|
|
69
|
+
actions?: React.ReactNode;
|
|
70
|
+
/** Additional CSS classes */
|
|
71
|
+
className?: string;
|
|
72
|
+
/** Category-based styling */
|
|
73
|
+
category?: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8;
|
|
74
|
+
/** Sidebar content */
|
|
75
|
+
sidebar?: React.ReactNode;
|
|
76
|
+
}
|
|
77
|
+
export declare const DataDetailTemplate: React.FC<DataDetailTemplateProps>;
|
|
78
|
+
//# sourceMappingURL=DataTemplate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DataTemplate.d.ts","sourceRoot":"","sources":["../../src/templates/DataTemplate.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface ResourceSchema {
|
|
3
|
+
/** Field definitions for the resource */
|
|
4
|
+
fields: ResourceField[];
|
|
5
|
+
/** Primary key field name */
|
|
6
|
+
primaryKey: string;
|
|
7
|
+
/** Display name for single resource */
|
|
8
|
+
displayName: string;
|
|
9
|
+
/** Display name for multiple resources */
|
|
10
|
+
displayNamePlural: string;
|
|
11
|
+
}
|
|
12
|
+
export interface ResourceField {
|
|
13
|
+
/** Field name/key */
|
|
14
|
+
name: string;
|
|
15
|
+
/** Display label */
|
|
16
|
+
label: string;
|
|
17
|
+
/** Field type */
|
|
18
|
+
type: 'text' | 'email' | 'number' | 'boolean' | 'date' | 'select' | 'textarea' | 'file';
|
|
19
|
+
/** Whether field is required */
|
|
20
|
+
required?: boolean;
|
|
21
|
+
/** Field validation rules */
|
|
22
|
+
validation?: Record<string, unknown>;
|
|
23
|
+
/** Options for select fields */
|
|
24
|
+
options?: Array<{
|
|
25
|
+
value: string;
|
|
26
|
+
label: string;
|
|
27
|
+
}>;
|
|
28
|
+
/** Whether field is searchable */
|
|
29
|
+
searchable?: boolean;
|
|
30
|
+
/** Whether field should be shown in table */
|
|
31
|
+
showInTable?: boolean;
|
|
32
|
+
/** Column width for table display */
|
|
33
|
+
width?: number;
|
|
34
|
+
/** Custom render function for table cells */
|
|
35
|
+
render?: (value: unknown, item: Record<string, unknown>) => React.ReactNode;
|
|
36
|
+
}
|
|
37
|
+
export interface CRUDPermissions {
|
|
38
|
+
/** Can view resources */
|
|
39
|
+
view: boolean;
|
|
40
|
+
/** Can create new resources */
|
|
41
|
+
create: boolean;
|
|
42
|
+
/** Can edit existing resources */
|
|
43
|
+
edit: boolean;
|
|
44
|
+
/** Can delete resources */
|
|
45
|
+
delete: boolean;
|
|
46
|
+
/** Can export data */
|
|
47
|
+
export: boolean;
|
|
48
|
+
/** Can import data */
|
|
49
|
+
import: boolean;
|
|
50
|
+
/** Can bulk edit */
|
|
51
|
+
bulkEdit: boolean;
|
|
52
|
+
}
|
|
53
|
+
export interface CRUDActions {
|
|
54
|
+
/** Create new resource */
|
|
55
|
+
onCreate?: (data: Record<string, unknown>) => Promise<void>;
|
|
56
|
+
/** Update existing resource */
|
|
57
|
+
onUpdate?: (id: string, data: Record<string, unknown>) => Promise<void>;
|
|
58
|
+
/** Delete resource */
|
|
59
|
+
onDelete?: (id: string) => Promise<void>;
|
|
60
|
+
/** Bulk delete resources */
|
|
61
|
+
onBulkDelete?: (ids: string[]) => Promise<void>;
|
|
62
|
+
/** Export data */
|
|
63
|
+
onExport?: (format: 'csv' | 'xlsx' | 'json') => Promise<void>;
|
|
64
|
+
/** Import data */
|
|
65
|
+
onImport?: (file: File) => Promise<void>;
|
|
66
|
+
/** Refresh data */
|
|
67
|
+
onRefresh?: () => Promise<void>;
|
|
68
|
+
}
|
|
69
|
+
export interface AdminCRUDTemplateProps {
|
|
70
|
+
/** Resource schema definition */
|
|
71
|
+
schema: ResourceSchema;
|
|
72
|
+
/** Current data */
|
|
73
|
+
data: Record<string, unknown>[];
|
|
74
|
+
/** User permissions */
|
|
75
|
+
permissions: CRUDPermissions;
|
|
76
|
+
/** CRUD action handlers */
|
|
77
|
+
actions: CRUDActions;
|
|
78
|
+
/** Whether data is loading */
|
|
79
|
+
isLoading?: boolean;
|
|
80
|
+
/** Filter configuration */
|
|
81
|
+
filterConfig?: {
|
|
82
|
+
activeFilters?: Array<{
|
|
83
|
+
key: string;
|
|
84
|
+
label: string;
|
|
85
|
+
value: string;
|
|
86
|
+
}>;
|
|
87
|
+
onFilter?: () => void;
|
|
88
|
+
onClearFilters?: () => void;
|
|
89
|
+
};
|
|
90
|
+
/** Additional custom actions */
|
|
91
|
+
customActions?: Array<{
|
|
92
|
+
label: string;
|
|
93
|
+
icon?: React.ReactNode;
|
|
94
|
+
onClick: () => void;
|
|
95
|
+
variant?: 'default' | 'outline' | 'destructive';
|
|
96
|
+
}>;
|
|
97
|
+
/** Additional CSS classes */
|
|
98
|
+
className?: string;
|
|
99
|
+
/** Category for styling */
|
|
100
|
+
category?: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8;
|
|
101
|
+
/** Custom empty state */
|
|
102
|
+
emptyState?: React.ReactNode;
|
|
103
|
+
}
|
|
104
|
+
export declare const AdminCRUDTemplate: React.FC<AdminCRUDTemplateProps>;
|
|
105
|
+
//# sourceMappingURL=AdminCRUDTemplate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AdminCRUDTemplate.d.ts","sourceRoot":"","sources":["../../../src/templates/admin/AdminCRUDTemplate.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface MetricCard {
|
|
3
|
+
/** Metric title */
|
|
4
|
+
title: string;
|
|
5
|
+
/** Main value to display */
|
|
6
|
+
value: string | number;
|
|
7
|
+
/** Change percentage */
|
|
8
|
+
change?: number;
|
|
9
|
+
/** Change period description */
|
|
10
|
+
changePeriod?: string;
|
|
11
|
+
/** Metric category for styling */
|
|
12
|
+
category?: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8;
|
|
13
|
+
/** Custom icon */
|
|
14
|
+
icon?: React.ReactNode;
|
|
15
|
+
/** Click handler */
|
|
16
|
+
onClick?: () => void;
|
|
17
|
+
}
|
|
18
|
+
export interface ChartConfig {
|
|
19
|
+
/** Chart title */
|
|
20
|
+
title: string;
|
|
21
|
+
/** Chart type */
|
|
22
|
+
type: 'line' | 'bar' | 'pie' | 'area';
|
|
23
|
+
/** Chart data */
|
|
24
|
+
data: Array<{
|
|
25
|
+
label: string;
|
|
26
|
+
value: number;
|
|
27
|
+
category?: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8;
|
|
28
|
+
}>;
|
|
29
|
+
/** Chart configuration */
|
|
30
|
+
config?: Record<string, unknown>;
|
|
31
|
+
/** Chart category for styling */
|
|
32
|
+
category?: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8;
|
|
33
|
+
}
|
|
34
|
+
export interface ActivityItem {
|
|
35
|
+
/** Activity ID */
|
|
36
|
+
id: string;
|
|
37
|
+
/** Activity type */
|
|
38
|
+
type: 'user' | 'system' | 'security' | 'content' | 'error';
|
|
39
|
+
/** Activity message */
|
|
40
|
+
message: string;
|
|
41
|
+
/** Activity timestamp */
|
|
42
|
+
timestamp: Date;
|
|
43
|
+
/** User who performed the activity */
|
|
44
|
+
user?: string;
|
|
45
|
+
/** Additional metadata */
|
|
46
|
+
metadata?: Record<string, unknown>;
|
|
47
|
+
}
|
|
48
|
+
export interface AlertItem {
|
|
49
|
+
/** Alert ID */
|
|
50
|
+
id: string;
|
|
51
|
+
/** Alert severity */
|
|
52
|
+
severity: 'low' | 'medium' | 'high' | 'critical';
|
|
53
|
+
/** Alert title */
|
|
54
|
+
title: string;
|
|
55
|
+
/** Alert description */
|
|
56
|
+
description: string;
|
|
57
|
+
/** Alert timestamp */
|
|
58
|
+
timestamp: Date;
|
|
59
|
+
/** Whether alert is resolved */
|
|
60
|
+
resolved?: boolean;
|
|
61
|
+
/** Action to resolve alert */
|
|
62
|
+
onResolve?: () => void;
|
|
63
|
+
}
|
|
64
|
+
export interface AdminDashboardTemplateProps {
|
|
65
|
+
/** Dashboard title */
|
|
66
|
+
title?: string;
|
|
67
|
+
/** Dashboard description */
|
|
68
|
+
description?: string;
|
|
69
|
+
/** Key metrics to display */
|
|
70
|
+
metrics: MetricCard[];
|
|
71
|
+
/** Charts configuration */
|
|
72
|
+
charts?: ChartConfig[];
|
|
73
|
+
/** Recent activities */
|
|
74
|
+
activities?: ActivityItem[];
|
|
75
|
+
/** System alerts */
|
|
76
|
+
alerts?: AlertItem[];
|
|
77
|
+
/** Additional actions in header */
|
|
78
|
+
actions?: React.ReactNode;
|
|
79
|
+
/** Additional CSS classes */
|
|
80
|
+
className?: string;
|
|
81
|
+
/** Whether data is loading */
|
|
82
|
+
isLoading?: boolean;
|
|
83
|
+
/** Refresh handler */
|
|
84
|
+
onRefresh?: () => void;
|
|
85
|
+
/** Last updated timestamp */
|
|
86
|
+
lastUpdated?: Date;
|
|
87
|
+
}
|
|
88
|
+
export declare const AdminDashboardTemplate: React.FC<AdminDashboardTemplateProps>;
|
|
89
|
+
//# sourceMappingURL=AdminDashboardTemplate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AdminDashboardTemplate.d.ts","sourceRoot":"","sources":["../../../src/templates/admin/AdminDashboardTemplate.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAY1B,MAAM,WAAW,UAAU;IACzB,mBAAmB;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,4BAA4B;IAC5B,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,wBAAwB;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gCAAgC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kCAAkC;IAClC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACzC,kBAAkB;IAClB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,oBAAoB;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,kBAAkB;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB;IACjB,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;IACtC,iBAAiB;IACjB,IAAI,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;KAAE,CAAC,CAAC;IACxF,0BAA0B;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,iCAAiC;IACjC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;CAC1C;AAED,MAAM,WAAW,YAAY;IAC3B,kBAAkB;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,oBAAoB;IACpB,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,GAAG,OAAO,CAAC;IAC3D,uBAAuB;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,yBAAyB;IACzB,SAAS,EAAE,IAAI,CAAC;IAChB,sCAAsC;IACtC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,SAAS;IACxB,eAAe;IACf,EAAE,EAAE,MAAM,CAAC;IACX,qBAAqB;IACrB,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;IACjD,kBAAkB;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,wBAAwB;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,sBAAsB;IACtB,SAAS,EAAE,IAAI,CAAC;IAChB,gCAAgC;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,8BAA8B;IAC9B,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;CACxB;AAED,MAAM,WAAW,2BAA2B;IAC1C,sBAAsB;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4BAA4B;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6BAA6B;IAC7B,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,2BAA2B;IAC3B,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;IACvB,wBAAwB;IACxB,UAAU,CAAC,EAAE,YAAY,EAAE,CAAC;IAC5B,oBAAoB;IACpB,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IACrB,mCAAmC;IACnC,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8BAA8B;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,sBAAsB;IACtB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,6BAA6B;IAC7B,WAAW,CAAC,EAAE,IAAI,CAAC;CACpB;AAED,eAAO,MAAM,sBAAsB,EAAE,KAAK,CAAC,EAAE,CAAC,2BAA2B,CA2PxE,CAAC"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { type Column } from '../../atoms/composed/DataTable';
|
|
3
|
+
export interface TabConfig {
|
|
4
|
+
/** Tab ID */
|
|
5
|
+
id: string;
|
|
6
|
+
/** Tab label */
|
|
7
|
+
label: string;
|
|
8
|
+
/** Tab icon */
|
|
9
|
+
icon?: React.ReactNode;
|
|
10
|
+
/** Tab content */
|
|
11
|
+
content: React.ReactNode;
|
|
12
|
+
/** Whether tab is disabled */
|
|
13
|
+
disabled?: boolean;
|
|
14
|
+
/** Badge text for tab */
|
|
15
|
+
badge?: string | number;
|
|
16
|
+
}
|
|
17
|
+
export interface ActionConfig {
|
|
18
|
+
/** Action ID */
|
|
19
|
+
id: string;
|
|
20
|
+
/** Action label */
|
|
21
|
+
label: string;
|
|
22
|
+
/** Action icon */
|
|
23
|
+
icon?: React.ReactNode;
|
|
24
|
+
/** Action variant */
|
|
25
|
+
variant?: 'default' | 'outline' | 'destructive' | 'secondary';
|
|
26
|
+
/** Action handler */
|
|
27
|
+
onClick: () => void;
|
|
28
|
+
/** Whether action is disabled */
|
|
29
|
+
disabled?: boolean;
|
|
30
|
+
/** Action permission required */
|
|
31
|
+
permission?: string;
|
|
32
|
+
}
|
|
33
|
+
export interface FieldSection {
|
|
34
|
+
/** Section title */
|
|
35
|
+
title: string;
|
|
36
|
+
/** Section description */
|
|
37
|
+
description?: string;
|
|
38
|
+
/** Section fields */
|
|
39
|
+
fields: DetailField[];
|
|
40
|
+
/** Section category for styling */
|
|
41
|
+
category?: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8;
|
|
42
|
+
/** Whether section is collapsible */
|
|
43
|
+
collapsible?: boolean;
|
|
44
|
+
/** Whether section is initially collapsed */
|
|
45
|
+
defaultCollapsed?: boolean;
|
|
46
|
+
}
|
|
47
|
+
export interface DetailField {
|
|
48
|
+
/** Field key */
|
|
49
|
+
key: string;
|
|
50
|
+
/** Field label */
|
|
51
|
+
label: string;
|
|
52
|
+
/** Field type for rendering */
|
|
53
|
+
type?: 'text' | 'email' | 'phone' | 'url' | 'date' | 'datetime' | 'boolean' | 'badge' | 'avatar' | 'json' | 'custom';
|
|
54
|
+
/** Custom render function */
|
|
55
|
+
render?: (value: unknown, data: Record<string, unknown>) => React.ReactNode;
|
|
56
|
+
/** Whether field is editable inline */
|
|
57
|
+
editable?: boolean;
|
|
58
|
+
/** Field validation for editing */
|
|
59
|
+
validation?: Record<string, unknown>;
|
|
60
|
+
/** Copy to clipboard button */
|
|
61
|
+
copyable?: boolean;
|
|
62
|
+
}
|
|
63
|
+
export interface RelatedData {
|
|
64
|
+
/** Related data title */
|
|
65
|
+
title: string;
|
|
66
|
+
/** Related data description */
|
|
67
|
+
description?: string;
|
|
68
|
+
/** Related data items */
|
|
69
|
+
data: Record<string, unknown>[];
|
|
70
|
+
/** Columns for related data table */
|
|
71
|
+
columns: Column<Record<string, unknown>>[];
|
|
72
|
+
/** Actions for related data */
|
|
73
|
+
actions?: ActionConfig[];
|
|
74
|
+
/** Whether to show pagination */
|
|
75
|
+
showPagination?: boolean;
|
|
76
|
+
/** Category for styling */
|
|
77
|
+
category?: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8;
|
|
78
|
+
}
|
|
79
|
+
export interface AuditEntry {
|
|
80
|
+
/** Entry ID */
|
|
81
|
+
id: string;
|
|
82
|
+
/** Action performed */
|
|
83
|
+
action: string;
|
|
84
|
+
/** User who performed action */
|
|
85
|
+
user: string;
|
|
86
|
+
/** Timestamp */
|
|
87
|
+
timestamp: Date;
|
|
88
|
+
/** Fields changed */
|
|
89
|
+
changes?: Array<{
|
|
90
|
+
field: string;
|
|
91
|
+
oldValue?: unknown;
|
|
92
|
+
newValue?: unknown;
|
|
93
|
+
}>;
|
|
94
|
+
/** Additional metadata */
|
|
95
|
+
metadata?: Record<string, unknown>;
|
|
96
|
+
}
|
|
97
|
+
export interface AdminDetailTemplateProps {
|
|
98
|
+
/** Resource title */
|
|
99
|
+
title: string;
|
|
100
|
+
/** Resource subtitle */
|
|
101
|
+
subtitle?: string;
|
|
102
|
+
/** Resource type */
|
|
103
|
+
resourceType: string;
|
|
104
|
+
/** Main resource data */
|
|
105
|
+
data: Record<string, unknown>;
|
|
106
|
+
/** Field sections to display */
|
|
107
|
+
sections: FieldSection[];
|
|
108
|
+
/** Tab configuration */
|
|
109
|
+
tabs?: TabConfig[];
|
|
110
|
+
/** Available actions */
|
|
111
|
+
actions?: ActionConfig[];
|
|
112
|
+
/** Related data sections */
|
|
113
|
+
relatedData?: RelatedData[];
|
|
114
|
+
/** Audit trail */
|
|
115
|
+
auditTrail?: AuditEntry[];
|
|
116
|
+
/** Back navigation handler */
|
|
117
|
+
onBack?: () => void;
|
|
118
|
+
/** Data update handler */
|
|
119
|
+
onUpdate?: (field: string, value: unknown) => Promise<void>;
|
|
120
|
+
/** Whether data is loading */
|
|
121
|
+
isLoading?: boolean;
|
|
122
|
+
/** Additional CSS classes */
|
|
123
|
+
className?: string;
|
|
124
|
+
/** Category for styling */
|
|
125
|
+
category?: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8;
|
|
126
|
+
/** Custom sidebar content */
|
|
127
|
+
sidebar?: React.ReactNode;
|
|
128
|
+
/** Whether to show audit trail */
|
|
129
|
+
showAuditTrail?: boolean;
|
|
130
|
+
}
|
|
131
|
+
export declare const AdminDetailTemplate: React.FC<AdminDetailTemplateProps>;
|
|
132
|
+
//# sourceMappingURL=AdminDetailTemplate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AdminDetailTemplate.d.ts","sourceRoot":"","sources":["../../../src/templates/admin/AdminDetailTemplate.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { AdminDashboardTemplate, type AdminDashboardTemplateProps, type MetricCard, type ChartConfig, type ActivityItem, type AlertItem } from './AdminDashboardTemplate';
|
|
2
|
+
export { AdminCRUDTemplate, type AdminCRUDTemplateProps, type ResourceSchema, type ResourceField, type CRUDPermissions, type CRUDActions } from './AdminCRUDTemplate';
|
|
3
|
+
export { AdminDetailTemplate, type AdminDetailTemplateProps, type TabConfig, type ActionConfig, type FieldSection, type DetailField, type RelatedData, type AuditEntry } from './AdminDetailTemplate';
|
|
4
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/templates/admin/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,sBAAsB,EACtB,KAAK,2BAA2B,EAChC,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,SAAS,EACf,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,iBAAiB,EACjB,KAAK,sBAAsB,EAC3B,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,WAAW,EACjB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,mBAAmB,EACnB,KAAK,wBAAwB,EAC7B,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,UAAU,EAChB,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { ReactNode } from 'react';
|
|
3
|
+
import type { AuthConfig, NavigationConfig } from '../atoms/types';
|
|
4
|
+
export interface AppConfig {
|
|
5
|
+
title: string;
|
|
6
|
+
description?: string;
|
|
7
|
+
version?: string;
|
|
8
|
+
enableAuth?: boolean;
|
|
9
|
+
enableQuery?: boolean;
|
|
10
|
+
enableTheming?: boolean;
|
|
11
|
+
enableRouting?: boolean;
|
|
12
|
+
apiUrl?: string;
|
|
13
|
+
apiTimeout?: number;
|
|
14
|
+
theme?: string;
|
|
15
|
+
darkMode?: boolean;
|
|
16
|
+
auth?: AuthConfig;
|
|
17
|
+
navigation?: NavigationConfig;
|
|
18
|
+
customProviders?: React.ComponentType<{
|
|
19
|
+
children: ReactNode;
|
|
20
|
+
}>[];
|
|
21
|
+
}
|
|
22
|
+
export interface AppInstance {
|
|
23
|
+
render: () => ReactNode;
|
|
24
|
+
addRoutes: (path: string, component: ReactNode) => void;
|
|
25
|
+
mount: (elementId?: string) => void;
|
|
26
|
+
}
|
|
27
|
+
export declare function createReactApp(config: AppConfig | string): AppInstance;
|
|
28
|
+
export declare function createSimpleApp(title: string): AppInstance;
|
|
29
|
+
//# sourceMappingURL=factory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/templates/factory.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAQtC,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAGlE,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,CAAC,EAAE,UAAU,CAAA;IACjB,UAAU,CAAC,EAAE,gBAAgB,CAAA;IAC7B,eAAe,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;QAAE,QAAQ,EAAE,SAAS,CAAA;KAAE,CAAC,EAAE,CAAA;CACjE;AAGD,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,SAAS,CAAA;IACvB,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,KAAK,IAAI,CAAA;IACvD,KAAK,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;CACpC;AAGD,wBAAgB,cAAc,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,GAAG,WAAW,CAoItE;AAGD,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAE1D"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { ComponentShowcaseTemplate } from './ComponentShowcaseTemplate';
|
|
2
|
+
export { DashboardTemplate, DashboardGrid, DashboardCard, type DashboardTemplateProps, type DashboardGridProps, type DashboardCardProps } from './DashboardTemplate';
|
|
3
|
+
export { AuthTemplate, AuthFormField, AuthLink, AuthDivider, type AuthTemplateProps, type AuthFormFieldProps, type AuthLinkProps, type AuthDividerProps } from './AuthTemplate';
|
|
4
|
+
export { DataTemplate, DataDetailTemplate, type DataTemplateProps, type DataDetailTemplateProps } from './DataTemplate';
|
|
5
|
+
export * from './admin';
|
|
6
|
+
export { createReactApp, createSimpleApp, type AppConfig, type AppInstance } from './factory';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/templates/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,KAAK,sBAAsB,EAC3B,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACxB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,WAAW,EACX,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,KAAK,iBAAiB,EACtB,KAAK,uBAAuB,EAC7B,MAAM,gBAAgB,CAAC;AAGxB,cAAc,SAAS,CAAC;AAOxB,OAAO,EACL,cAAc,EACd,eAAe,EACf,KAAK,SAAS,EACd,KAAK,WAAW,EACjB,MAAM,WAAW,CAAC"}
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@pattern-stack/frontend-patterns",
|
|
3
3
|
"description": "Production-ready React frontend template with atomic architecture patterns. Build ultra-lean applications by importing shared UI foundation patterns.",
|
|
4
4
|
"private": false,
|
|
5
|
-
"version": "0.0.
|
|
5
|
+
"version": "0.0.6",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"react",
|
|
8
8
|
"typescript",
|
|
@@ -44,7 +44,8 @@
|
|
|
44
44
|
"scripts": {
|
|
45
45
|
"dev": "vite",
|
|
46
46
|
"build": "tsc -b && vite build",
|
|
47
|
-
"build:lib": "npm run clean && vite build --mode library",
|
|
47
|
+
"build:lib": "npm run clean && vite build --mode library && npm run build:types",
|
|
48
|
+
"build:types": "tsc --project tsconfig.lib.json",
|
|
48
49
|
"clean": "rm -rf dist",
|
|
49
50
|
"lint": "eslint .",
|
|
50
51
|
"lint:fix": "eslint . --fix",
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest'
|
|
2
|
+
import { render, screen } from '../../utils'
|
|
3
|
+
import { DataBadge } from '../../../atoms/composed/DataBadge'
|
|
4
|
+
|
|
5
|
+
describe('DataBadge (Composed)', () => {
|
|
6
|
+
describe('status variant', () => {
|
|
7
|
+
it('renders success status badge', () => {
|
|
8
|
+
render(<DataBadge variant="status" status="success">Active</DataBadge>)
|
|
9
|
+
|
|
10
|
+
const badge = screen.getByText('Active')
|
|
11
|
+
expect(badge).toBeInTheDocument()
|
|
12
|
+
expect(badge.className).toContain('status-success')
|
|
13
|
+
})
|
|
14
|
+
|
|
15
|
+
it('renders warning status badge', () => {
|
|
16
|
+
render(<DataBadge variant="status" status="warning">Pending</DataBadge>)
|
|
17
|
+
|
|
18
|
+
const badge = screen.getByText('Pending')
|
|
19
|
+
expect(badge.className).toContain('status-warning')
|
|
20
|
+
})
|
|
21
|
+
|
|
22
|
+
it('renders error status badge', () => {
|
|
23
|
+
render(<DataBadge variant="status" status="error">Failed</DataBadge>)
|
|
24
|
+
|
|
25
|
+
const badge = screen.getByText('Failed')
|
|
26
|
+
expect(badge.className).toContain('status-error')
|
|
27
|
+
})
|
|
28
|
+
|
|
29
|
+
it('renders info status badge', () => {
|
|
30
|
+
render(<DataBadge variant="status" status="info">Processing</DataBadge>)
|
|
31
|
+
|
|
32
|
+
const badge = screen.getByText('Processing')
|
|
33
|
+
expect(badge.className).toContain('status-info')
|
|
34
|
+
})
|
|
35
|
+
|
|
36
|
+
it('renders neutral status badge', () => {
|
|
37
|
+
render(<DataBadge variant="status" status="neutral">Draft</DataBadge>)
|
|
38
|
+
|
|
39
|
+
const badge = screen.getByText('Draft')
|
|
40
|
+
expect(badge.className).toContain('status-neutral')
|
|
41
|
+
})
|
|
42
|
+
})
|
|
43
|
+
|
|
44
|
+
describe('category variant', () => {
|
|
45
|
+
it('renders category 1 badge', () => {
|
|
46
|
+
render(<DataBadge variant="category" category={1}>Category 1</DataBadge>)
|
|
47
|
+
|
|
48
|
+
const badge = screen.getByText('Category 1')
|
|
49
|
+
expect(badge).toBeInTheDocument()
|
|
50
|
+
expect(badge.className).toContain('badge-category-1')
|
|
51
|
+
})
|
|
52
|
+
|
|
53
|
+
it('renders category 5 badge', () => {
|
|
54
|
+
render(<DataBadge variant="category" category={5}>Category 5</DataBadge>)
|
|
55
|
+
|
|
56
|
+
const badge = screen.getByText('Category 5')
|
|
57
|
+
expect(badge.className).toContain('badge-category-5')
|
|
58
|
+
})
|
|
59
|
+
|
|
60
|
+
it('renders category 8 badge', () => {
|
|
61
|
+
render(<DataBadge variant="category" category={8}>Category 8</DataBadge>)
|
|
62
|
+
|
|
63
|
+
const badge = screen.getByText('Category 8')
|
|
64
|
+
expect(badge.className).toContain('badge-category-8')
|
|
65
|
+
})
|
|
66
|
+
})
|
|
67
|
+
|
|
68
|
+
it('applies additional className props', () => {
|
|
69
|
+
render(
|
|
70
|
+
<DataBadge variant="status" status="success" className="custom-class">
|
|
71
|
+
Custom
|
|
72
|
+
</DataBadge>
|
|
73
|
+
)
|
|
74
|
+
|
|
75
|
+
const badge = screen.getByText('Custom')
|
|
76
|
+
expect(badge.className).toContain('custom-class')
|
|
77
|
+
})
|
|
78
|
+
|
|
79
|
+
it('renders with component data attribute', () => {
|
|
80
|
+
render(
|
|
81
|
+
<DataBadge variant="status" status="info">
|
|
82
|
+
Test
|
|
83
|
+
</DataBadge>
|
|
84
|
+
)
|
|
85
|
+
|
|
86
|
+
expect(screen.getByText('Test')).toHaveAttribute('data-component-name', 'DataBadge')
|
|
87
|
+
})
|
|
88
|
+
|
|
89
|
+
it('automatically uses default category', () => {
|
|
90
|
+
render(<DataBadge>Default</DataBadge>)
|
|
91
|
+
|
|
92
|
+
const badge = screen.getByText('Default')
|
|
93
|
+
expect(badge.className).toContain('badge-category-1')
|
|
94
|
+
})
|
|
95
|
+
|
|
96
|
+
it('handles string and number status values', () => {
|
|
97
|
+
const { rerender } = render(
|
|
98
|
+
<DataBadge variant="status" status="success">String Status</DataBadge>
|
|
99
|
+
)
|
|
100
|
+
|
|
101
|
+
expect(screen.getByText('String Status')).toBeInTheDocument()
|
|
102
|
+
|
|
103
|
+
rerender(<DataBadge variant="category" category={3}>Number Category</DataBadge>)
|
|
104
|
+
expect(screen.getByText('Number Category')).toBeInTheDocument()
|
|
105
|
+
})
|
|
106
|
+
})
|