@pattern-stack/frontend-patterns 0.0.4 → 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/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/index.d.ts +1 -0
- package/dist/atoms/composed/index.d.ts.map +1 -1
- 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/index.d.ts +2 -0
- package/dist/atoms/types/index.d.ts.map +1 -1
- package/dist/atoms/types/navigation.d.ts +30 -0
- package/dist/atoms/types/navigation.d.ts.map +1 -0
- package/dist/atoms/ui/ErrorBoundary.d.ts +1 -1
- package/dist/atoms/ui/button.d.ts +1 -1
- 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/utils.d.ts +2 -0
- package/dist/atoms/utils/utils.d.ts.map +1 -1
- package/dist/features/auth/components/ProtectedRoute.d.ts +1 -1
- package/dist/frontend-patterns.css +1 -1
- package/dist/index.es.js +402 -14
- package/dist/index.es.js.map +1 -1
- package/dist/index.js +402 -14
- package/dist/index.js.map +1 -1
- 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/Sidebar.d.ts.map +1 -1
- package/dist/molecules/layout/SidebarButton/SidebarButton.d.ts +2 -0
- package/dist/molecules/layout/SidebarButton/SidebarButton.d.ts.map +1 -1
- package/dist/molecules/layout/index.d.ts +3 -0
- package/dist/molecules/layout/index.d.ts.map +1 -1
- package/dist/templates/factory.d.ts +2 -1
- package/dist/templates/factory.d.ts.map +1 -1
- package/dist/templates/index.d.ts.map +1 -1
- package/package.json +7 -3
- package/src/App.tsx +11 -1
- 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/composed/SalesPanel/SalesPanel.tsx +116 -0
- package/src/atoms/composed/SalesPanel/index.ts +1 -0
- package/src/atoms/composed/SalesPanel/mockSalesData.ts +151 -0
- package/src/atoms/composed/index.ts +1 -0
- package/src/atoms/types/entity-config.ts +127 -0
- package/src/atoms/types/index.ts +3 -1
- package/src/atoms/types/navigation.ts +43 -0
- package/src/atoms/utils/icon-resolver.tsx +54 -0
- package/src/atoms/utils/metric-engine.ts +236 -0
- package/src/atoms/utils/utils.ts +4 -2
- package/src/molecules/layout/DashboardWithSidePanel/DashboardWithSidePanel.tsx +42 -0
- package/src/molecules/layout/DashboardWithSidePanel/index.ts +1 -0
- package/src/molecules/layout/NavigationContext.tsx +63 -0
- package/src/molecules/layout/Sidebar.tsx +10 -23
- package/src/molecules/layout/SidebarButton/SidebarButton.tsx +32 -10
- package/src/molecules/layout/index.ts +4 -1
- package/src/organisms/entity/CategoryBreakdownPanel.tsx +427 -0
- package/src/organisms/entity/EntityListPanel.tsx +339 -0
- package/src/organisms/entity/MetricsOverviewPanel.tsx +236 -0
- package/src/organisms/entity/TrendAnalysisPanel.tsx +337 -0
- package/src/organisms/entity/index.ts +4 -0
- package/src/organisms/index.ts +5 -1
- package/src/pages/AdminShowcase/AdminDashboardShowcase.tsx +77 -75
- package/src/pages/AdminShowcase/SalesPerformanceDashboard.tsx +158 -0
- package/src/pages/AdminShowcase/index.tsx +2 -1
- package/src/pages/EntityShowcase/EntityManagementShowcase.tsx +137 -0
- package/src/pages/EntityShowcase/EntityPerformanceShowcase.tsx +117 -0
- package/src/pages/EntityShowcase/index.ts +2 -0
- package/src/pages/EntityTemplateExample.tsx +229 -0
- package/src/pages/TestEntityTemplate.tsx +40 -0
- package/src/pages/index.ts +2 -1
- package/src/templates/entity/EntityManagementTemplate.tsx +430 -0
- package/src/templates/entity/EntityPerformanceDashboardTemplate.tsx +277 -0
- package/src/templates/entity/configs/financial-config.ts +141 -0
- package/src/templates/entity/configs/index.ts +1 -0
- package/src/templates/entity/index.ts +3 -0
- package/src/templates/factory.tsx +14 -7
- package/src/templates/financial/FinancialDashboardTemplate.tsx +326 -0
- package/src/templates/index.ts +4 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
interface SalesPanelProps {
|
|
3
|
+
sales: Array<{
|
|
4
|
+
id: string;
|
|
5
|
+
customer: string;
|
|
6
|
+
product: string;
|
|
7
|
+
amount: number;
|
|
8
|
+
stage: string;
|
|
9
|
+
salesperson: string;
|
|
10
|
+
region: string;
|
|
11
|
+
closeDate: string;
|
|
12
|
+
dealSize: string;
|
|
13
|
+
}>;
|
|
14
|
+
onSaleClick?: (sale: any) => void;
|
|
15
|
+
onClose?: () => void;
|
|
16
|
+
}
|
|
17
|
+
export declare const SalesPanel: React.FC<SalesPanelProps>;
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=SalesPanel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SalesPanel.d.ts","sourceRoot":"","sources":["../../../../src/atoms/composed/SalesPanel/SalesPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAQ1B,UAAU,eAAe;IACvB,KAAK,EAAE,KAAK,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;QACX,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC,CAAC;IACH,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;IAClC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAaD,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAgFhD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/atoms/composed/SalesPanel/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
export declare const mockSalesData: {
|
|
2
|
+
id: string;
|
|
3
|
+
customer: string;
|
|
4
|
+
product: string;
|
|
5
|
+
amount: number;
|
|
6
|
+
stage: string;
|
|
7
|
+
salesperson: string;
|
|
8
|
+
region: string;
|
|
9
|
+
closeDate: string;
|
|
10
|
+
dealSize: string;
|
|
11
|
+
}[];
|
|
12
|
+
export declare const salesConfig: {
|
|
13
|
+
entityType: "performance";
|
|
14
|
+
display: {
|
|
15
|
+
title: string;
|
|
16
|
+
subtitle: string;
|
|
17
|
+
category: 3;
|
|
18
|
+
};
|
|
19
|
+
metrics: ({
|
|
20
|
+
key: string;
|
|
21
|
+
label: string;
|
|
22
|
+
type: "currency";
|
|
23
|
+
aggregate: string;
|
|
24
|
+
showTrend: boolean;
|
|
25
|
+
category: number;
|
|
26
|
+
} | {
|
|
27
|
+
key: string;
|
|
28
|
+
label: string;
|
|
29
|
+
type: "number";
|
|
30
|
+
aggregate: string;
|
|
31
|
+
showTrend: boolean;
|
|
32
|
+
category: number;
|
|
33
|
+
} | {
|
|
34
|
+
key: string;
|
|
35
|
+
label: string;
|
|
36
|
+
type: "percentage";
|
|
37
|
+
aggregate: string;
|
|
38
|
+
showTrend: boolean;
|
|
39
|
+
category: number;
|
|
40
|
+
})[];
|
|
41
|
+
categories: {
|
|
42
|
+
key: string;
|
|
43
|
+
label: string;
|
|
44
|
+
type: string;
|
|
45
|
+
}[];
|
|
46
|
+
trends: {
|
|
47
|
+
periods: string[];
|
|
48
|
+
defaultPeriod: string;
|
|
49
|
+
};
|
|
50
|
+
};
|
|
51
|
+
export declare const salesPerformanceData: {
|
|
52
|
+
id: string;
|
|
53
|
+
revenue: number;
|
|
54
|
+
deals: number;
|
|
55
|
+
conversion: number;
|
|
56
|
+
pipeline: number;
|
|
57
|
+
region: string;
|
|
58
|
+
product: string;
|
|
59
|
+
stage: string;
|
|
60
|
+
date: string;
|
|
61
|
+
salesperson: string;
|
|
62
|
+
}[];
|
|
63
|
+
//# sourceMappingURL=mockSalesData.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mockSalesData.d.ts","sourceRoot":"","sources":["../../../../src/atoms/composed/SalesPanel/mockSalesData.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,aAAa;;;;;;;;;;GAwDzB,CAAC;AAGF,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkDvB,CAAC;AAGF,eAAO,MAAM,oBAAoB;;;;;;;;;;;GAqChC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atoms/composed/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG1C,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG1C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atoms/composed/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG1C,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG1C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
export type EntityType = 'transactional' | 'categorical' | 'temporal';
|
|
3
|
+
export type MetricType = 'currency' | 'percentage' | 'count' | 'duration' | 'ratio';
|
|
4
|
+
export type AggregationType = 'sum' | 'avg' | 'count' | 'min' | 'max';
|
|
5
|
+
export type TemporalCycle = 'daily' | 'weekly' | 'monthly' | 'quarterly' | 'yearly';
|
|
6
|
+
export type ForecastingAlgorithm = 'linear' | 'seasonal' | 'ml';
|
|
7
|
+
export type ActionType = 'primary' | 'secondary' | 'danger';
|
|
8
|
+
export interface FormatConfig {
|
|
9
|
+
decimals?: number;
|
|
10
|
+
prefix?: string;
|
|
11
|
+
suffix?: string;
|
|
12
|
+
thousands?: boolean;
|
|
13
|
+
}
|
|
14
|
+
export interface MetricConfig {
|
|
15
|
+
key: string;
|
|
16
|
+
label: string;
|
|
17
|
+
type: MetricType;
|
|
18
|
+
format?: FormatConfig;
|
|
19
|
+
trend?: boolean;
|
|
20
|
+
target?: number | ((data: EntityData[]) => number);
|
|
21
|
+
aggregation?: AggregationType;
|
|
22
|
+
icon?: React.ComponentType;
|
|
23
|
+
}
|
|
24
|
+
export interface TemporalConfig {
|
|
25
|
+
cycles: TemporalCycle[];
|
|
26
|
+
defaultCycle: TemporalCycle;
|
|
27
|
+
enableComparisons: boolean;
|
|
28
|
+
forecasting?: {
|
|
29
|
+
enabled: boolean;
|
|
30
|
+
periods: number;
|
|
31
|
+
algorithm: ForecastingAlgorithm;
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
export interface CategoryConfig {
|
|
35
|
+
hierarchy: string[];
|
|
36
|
+
defaultGroupBy: string;
|
|
37
|
+
enableDrillDown: boolean;
|
|
38
|
+
colorCoding?: boolean;
|
|
39
|
+
}
|
|
40
|
+
export interface ActionConfig {
|
|
41
|
+
label: string;
|
|
42
|
+
type: ActionType;
|
|
43
|
+
onClick: (context: {
|
|
44
|
+
selectedItems?: EntityData[];
|
|
45
|
+
data?: EntityData[];
|
|
46
|
+
config?: EntityTemplateConfig;
|
|
47
|
+
}) => void | Promise<void>;
|
|
48
|
+
icon?: React.ComponentType;
|
|
49
|
+
permissions?: string[];
|
|
50
|
+
validation?: (context: {
|
|
51
|
+
selectedItems?: EntityData[];
|
|
52
|
+
data?: EntityData[];
|
|
53
|
+
config?: EntityTemplateConfig;
|
|
54
|
+
}) => boolean;
|
|
55
|
+
}
|
|
56
|
+
export interface BusinessRulesConfig<T> {
|
|
57
|
+
validation?: (item: T) => string[];
|
|
58
|
+
constraints?: {
|
|
59
|
+
[key: string]: {
|
|
60
|
+
min?: number;
|
|
61
|
+
max?: number;
|
|
62
|
+
required?: boolean;
|
|
63
|
+
pattern?: RegExp;
|
|
64
|
+
};
|
|
65
|
+
};
|
|
66
|
+
workflows?: {
|
|
67
|
+
[status: string]: string[];
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
export interface EntityDisplayConfig {
|
|
71
|
+
title: string;
|
|
72
|
+
description?: string;
|
|
73
|
+
category?: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8;
|
|
74
|
+
}
|
|
75
|
+
export interface EntityTemplateConfig<T = EntityData> {
|
|
76
|
+
entityType: EntityType;
|
|
77
|
+
display: EntityDisplayConfig;
|
|
78
|
+
metrics: MetricConfig[];
|
|
79
|
+
temporal?: TemporalConfig;
|
|
80
|
+
categories?: CategoryConfig;
|
|
81
|
+
businessRules?: BusinessRulesConfig<T>;
|
|
82
|
+
actions?: ActionConfig[];
|
|
83
|
+
}
|
|
84
|
+
export interface EntityData {
|
|
85
|
+
id: string | number;
|
|
86
|
+
[key: string]: unknown;
|
|
87
|
+
}
|
|
88
|
+
export interface MetricValue {
|
|
89
|
+
current: number;
|
|
90
|
+
previous?: number;
|
|
91
|
+
trend?: 'up' | 'down' | 'neutral';
|
|
92
|
+
target?: number;
|
|
93
|
+
formattedValue: string;
|
|
94
|
+
}
|
|
95
|
+
export interface CategoryBreakdown {
|
|
96
|
+
category: string;
|
|
97
|
+
value: number;
|
|
98
|
+
percentage: number;
|
|
99
|
+
color?: string;
|
|
100
|
+
subcategories?: CategoryBreakdown[];
|
|
101
|
+
}
|
|
102
|
+
export interface TrendDataPoint {
|
|
103
|
+
date: string;
|
|
104
|
+
value: number;
|
|
105
|
+
label?: string;
|
|
106
|
+
}
|
|
107
|
+
export interface EntityAnalyticsData {
|
|
108
|
+
metrics: Record<string, MetricValue>;
|
|
109
|
+
categories: CategoryBreakdown[];
|
|
110
|
+
trends: Record<string, TrendDataPoint[]>;
|
|
111
|
+
insights?: {
|
|
112
|
+
type: 'positive' | 'negative' | 'neutral';
|
|
113
|
+
message: string;
|
|
114
|
+
value?: number;
|
|
115
|
+
}[];
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=entity-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity-config.d.ts","sourceRoot":"","sources":["../../../src/atoms/types/entity-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atoms/types/index.ts"],"names":[],"mappings":"AACA,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atoms/types/index.ts"],"names":[],"mappings":"AACA,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export type IconName = 'Palette' | 'Menu' | 'X' | 'Shield' | 'Users' | 'BarChart3' | 'Database' | 'TrendingUp' | 'Layout' | 'Home' | 'Settings' | 'Bell' | 'Search' | 'Plus' | 'Edit' | 'Trash2' | 'Eye' | 'Download' | 'Upload' | 'Share' | 'Lock' | 'Unlock' | 'Mail' | 'Phone' | 'Calendar' | 'Clock' | 'MapPin' | 'Star' | 'Heart' | 'Bookmark' | 'Tag' | 'Flag' | 'File' | 'Folder' | 'Image' | 'Video' | 'Music' | 'ChevronRight' | 'ChevronDown' | 'ChevronLeft' | 'ChevronUp' | 'ArrowRight' | 'ArrowLeft' | 'ArrowUp' | 'ArrowDown' | 'Check' | 'AlertCircle' | 'Info' | 'HelpCircle';
|
|
2
|
+
export interface NavigationItem {
|
|
3
|
+
/** Unique identifier for the navigation item */
|
|
4
|
+
value: string;
|
|
5
|
+
/** Display label for the navigation item */
|
|
6
|
+
label: string;
|
|
7
|
+
/** Path to navigate to when clicked */
|
|
8
|
+
path: string;
|
|
9
|
+
/** Icon name from Lucide React icons */
|
|
10
|
+
icon: IconName;
|
|
11
|
+
/** Optional category for color theming (1-8) */
|
|
12
|
+
category?: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8;
|
|
13
|
+
/** Optional badge text/count to display */
|
|
14
|
+
badge?: string | number;
|
|
15
|
+
/** Whether this item is disabled */
|
|
16
|
+
disabled?: boolean;
|
|
17
|
+
/** Child navigation items for nested menus */
|
|
18
|
+
children?: NavigationItem[];
|
|
19
|
+
}
|
|
20
|
+
export interface NavigationConfig {
|
|
21
|
+
/** Main navigation items */
|
|
22
|
+
items: NavigationItem[];
|
|
23
|
+
/** Whether to show the default showcase navigation as fallback */
|
|
24
|
+
showDefaultNavigation?: boolean;
|
|
25
|
+
/** Custom logo or title for the sidebar header */
|
|
26
|
+
logo?: string;
|
|
27
|
+
/** Whether the sidebar starts expanded */
|
|
28
|
+
defaultExpanded?: boolean;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=navigation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../../../src/atoms/types/navigation.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,QAAQ,GAChB,SAAS,GAAG,MAAM,GAAG,GAAG,GAAG,QAAQ,GAAG,OAAO,GAAG,WAAW,GAC3D,UAAU,GAAG,YAAY,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,GAC1D,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,GACtD,UAAU,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,GACnD,MAAM,GAAG,OAAO,GAAG,UAAU,GAAG,OAAO,GAAG,QAAQ,GAClD,MAAM,GAAG,OAAO,GAAG,UAAU,GAAG,KAAK,GAAG,MAAM,GAC9C,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAC/C,cAAc,GAAG,aAAa,GAAG,aAAa,GAAG,WAAW,GAC5D,YAAY,GAAG,WAAW,GAAG,SAAS,GAAG,WAAW,GACpD,OAAO,GAAG,aAAa,GAAG,MAAM,GAAG,YAAY,CAAA;AAEnD,MAAM,WAAW,cAAc;IAC7B,gDAAgD;IAChD,KAAK,EAAE,MAAM,CAAA;IACb,4CAA4C;IAC5C,KAAK,EAAE,MAAM,CAAA;IACb,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAA;IACZ,wCAAwC;IACxC,IAAI,EAAE,QAAQ,CAAA;IACd,gDAAgD;IAChD,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACxC,2CAA2C;IAC3C,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB,oCAAoC;IACpC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,cAAc,EAAE,CAAA;CAC5B;AAED,MAAM,WAAW,gBAAgB;IAC/B,4BAA4B;IAC5B,KAAK,EAAE,cAAc,EAAE,CAAA;IACvB,kEAAkE;IAClE,qBAAqB,CAAC,EAAE,OAAO,CAAA;IAC/B,kDAAkD;IAClD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,0CAA0C;IAC1C,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B"}
|
|
@@ -12,7 +12,7 @@ export declare class ErrorBoundary extends Component<Props, State> {
|
|
|
12
12
|
state: State;
|
|
13
13
|
static getDerivedStateFromError(error: Error): State;
|
|
14
14
|
componentDidCatch(error: Error, errorInfo: ErrorInfo): void;
|
|
15
|
-
render(): string | number | bigint | boolean | Iterable<ReactNode> | Promise<string | number | bigint | boolean | import("react").ReactPortal | import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>> | Iterable<ReactNode> | null | undefined> |
|
|
15
|
+
render(): string | number | bigint | boolean | import("react/jsx-runtime").JSX.Element | Iterable<ReactNode> | Promise<string | number | bigint | boolean | import("react").ReactPortal | import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>> | Iterable<ReactNode> | null | undefined> | null | undefined;
|
|
16
16
|
}
|
|
17
17
|
export {};
|
|
18
18
|
//# sourceMappingURL=ErrorBoundary.d.ts.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
import { type VariantProps } from "class-variance-authority";
|
|
3
3
|
declare const buttonVariants: (props?: ({
|
|
4
|
-
variant?: "
|
|
4
|
+
variant?: "secondary" | "link" | "default" | "destructive" | "outline" | "ghost" | null | undefined;
|
|
5
5
|
size?: "sm" | "lg" | "default" | "icon" | null | undefined;
|
|
6
6
|
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
7
7
|
export interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import type { IconName } from '../types';
|
|
2
|
+
export declare const iconMap: {
|
|
3
|
+
Palette: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
4
|
+
Menu: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
5
|
+
X: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
6
|
+
Shield: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
7
|
+
Users: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
8
|
+
BarChart3: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
9
|
+
Database: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
10
|
+
TrendingUp: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
11
|
+
Layout: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
12
|
+
Home: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
13
|
+
Settings: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
14
|
+
Bell: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
15
|
+
Search: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
16
|
+
Plus: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
17
|
+
Edit: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
18
|
+
Trash2: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
19
|
+
Eye: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
20
|
+
Download: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
21
|
+
Upload: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
22
|
+
Share: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
23
|
+
Lock: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
24
|
+
Unlock: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
25
|
+
Mail: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
26
|
+
Phone: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
27
|
+
Calendar: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
28
|
+
Clock: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
29
|
+
MapPin: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
30
|
+
Star: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
31
|
+
Heart: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
32
|
+
Bookmark: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
33
|
+
Tag: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
34
|
+
Flag: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
35
|
+
File: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
36
|
+
Folder: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
37
|
+
Image: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
38
|
+
Video: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
39
|
+
Music: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
40
|
+
ChevronRight: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
41
|
+
ChevronDown: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
42
|
+
ChevronLeft: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
43
|
+
ChevronUp: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
44
|
+
ArrowRight: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
45
|
+
ArrowLeft: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
46
|
+
ArrowUp: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
47
|
+
ArrowDown: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
48
|
+
Check: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
49
|
+
AlertCircle: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
50
|
+
Info: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
51
|
+
HelpCircle: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
52
|
+
};
|
|
53
|
+
interface IconProps {
|
|
54
|
+
name: IconName;
|
|
55
|
+
className?: string;
|
|
56
|
+
size?: number;
|
|
57
|
+
[key: string]: any;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Resolves an icon name to the corresponding Lucide React component
|
|
61
|
+
*/
|
|
62
|
+
export declare const Icon: ({ name, className, size, ...props }: IconProps) => import("react/jsx-runtime").JSX.Element;
|
|
63
|
+
/**
|
|
64
|
+
* Get the icon component directly for custom rendering
|
|
65
|
+
*/
|
|
66
|
+
export declare const getIcon: (name: IconName) => import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
67
|
+
/**
|
|
68
|
+
* Check if an icon name is valid
|
|
69
|
+
*/
|
|
70
|
+
export declare const isValidIcon: (name: string) => name is IconName;
|
|
71
|
+
export {};
|
|
72
|
+
//# sourceMappingURL=icon-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"icon-resolver.d.ts","sourceRoot":"","sources":["../../../src/atoms/utils/icon-resolver.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAGxC,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAOnB,CAAA;AAED,UAAU,SAAS;IACjB,IAAI,EAAE,QAAQ,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CACnB;AAED;;GAEG;AACH,eAAO,MAAM,IAAI,GAAI,qCAAiD,SAAS,4CAS9E,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,OAAO,GAAI,MAAM,QAAQ,8IAErC,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,WAAW,GAAI,MAAM,MAAM,KAAG,IAAI,IAAI,QAElD,CAAA"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { MetricConfig, MetricValue, EntityData, TrendDataPoint } from '../types';
|
|
2
|
+
export declare class MetricCalculationEngine {
|
|
3
|
+
static calculateMetric(config: MetricConfig, data: EntityData[], previousData?: EntityData[]): MetricValue;
|
|
4
|
+
private static aggregateValue;
|
|
5
|
+
private static extractValue;
|
|
6
|
+
private static calculateTrend;
|
|
7
|
+
private static formatValue;
|
|
8
|
+
private static formatDuration;
|
|
9
|
+
static calculateTrendData(config: MetricConfig, data: EntityData[], dateField?: string, periods?: number): TrendDataPoint[];
|
|
10
|
+
private static groupByPeriod;
|
|
11
|
+
private static formatDateLabel;
|
|
12
|
+
static calculateCategoryBreakdown(data: EntityData[], categoryField: string, valueField: string, maxCategories?: number): {
|
|
13
|
+
category: string;
|
|
14
|
+
value: number;
|
|
15
|
+
percentage: number;
|
|
16
|
+
}[];
|
|
17
|
+
static detectInsights(metrics: Record<string, MetricValue>, thresholds?: Record<string, {
|
|
18
|
+
warning: number;
|
|
19
|
+
critical: number;
|
|
20
|
+
}>): ({
|
|
21
|
+
type: "negative";
|
|
22
|
+
message: string;
|
|
23
|
+
value: number;
|
|
24
|
+
} | {
|
|
25
|
+
type: "positive";
|
|
26
|
+
message: string;
|
|
27
|
+
value: number;
|
|
28
|
+
})[];
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=metric-engine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metric-engine.d.ts","sourceRoot":"","sources":["../../../src/atoms/utils/metric-engine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAgB,cAAc,EAAE,MAAM,UAAU,CAAC;AAEpG,qBAAa,uBAAuB;IAClC,MAAM,CAAC,eAAe,CACpB,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,UAAU,EAAE,EAClB,YAAY,CAAC,EAAE,UAAU,EAAE,GAC1B,WAAW;IAoBd,OAAO,CAAC,MAAM,CAAC,cAAc;IA4B7B,OAAO,CAAC,MAAM,CAAC,YAAY;IAI3B,OAAO,CAAC,MAAM,CAAC,cAAc;IAU7B,OAAO,CAAC,MAAM,CAAC,WAAW;IAuC1B,OAAO,CAAC,MAAM,CAAC,cAAc;IAU7B,MAAM,CAAC,kBAAkB,CACvB,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,UAAU,EAAE,EAClB,SAAS,GAAE,MAAe,EAC1B,OAAO,GAAE,MAAW,GACnB,cAAc,EAAE;IAWnB,OAAO,CAAC,MAAM,CAAC,aAAa;IAc5B,OAAO,CAAC,MAAM,CAAC,eAAe;IAQ9B,MAAM,CAAC,0BAA0B,CAC/B,IAAI,EAAE,UAAU,EAAE,EAClB,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,MAAM,EAClB,aAAa,GAAE,MAAU;;;;;IAuC3B,MAAM,CAAC,cAAc,CACnB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,EACpC,UAAU,GAAE,MAAM,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAM;;;;;;;;;CAkCzE"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { type ClassValue } from "clsx";
|
|
2
2
|
export declare function cn(...inputs: ClassValue[]): string;
|
|
3
3
|
export * from './tooltip-helpers';
|
|
4
|
+
export * from './metric-engine';
|
|
5
|
+
export { Icon, getIcon, isValidIcon } from './icon-resolver';
|
|
4
6
|
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/atoms/utils/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,UAAU,EAAE,MAAM,MAAM,CAAA;AAG5C,wBAAgB,EAAE,CAAC,GAAG,MAAM,EAAE,UAAU,EAAE,UAEzC;AAGD,cAAc,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/atoms/utils/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,UAAU,EAAE,MAAM,MAAM,CAAA;AAG5C,wBAAgB,EAAE,CAAC,GAAG,MAAM,EAAE,UAAU,EAAE,UAEzC;AAGD,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -5,6 +5,6 @@ interface ProtectedRouteProps {
|
|
|
5
5
|
requireRole?: string;
|
|
6
6
|
fallback?: ReactNode;
|
|
7
7
|
}
|
|
8
|
-
export declare function ProtectedRoute({ children, requirePermission, requireRole, fallback }: ProtectedRouteProps): string | number | bigint | true | Iterable<ReactNode> | Promise<string | number | bigint | boolean | import("react").ReactPortal | import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>> | Iterable<ReactNode> | null | undefined
|
|
8
|
+
export declare function ProtectedRoute({ children, requirePermission, requireRole, fallback }: ProtectedRouteProps): string | number | bigint | true | import("react/jsx-runtime").JSX.Element | Iterable<ReactNode> | Promise<string | number | bigint | boolean | import("react").ReactPortal | import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>> | Iterable<ReactNode> | null | undefined>;
|
|
9
9
|
export {};
|
|
10
10
|
//# sourceMappingURL=ProtectedRoute.d.ts.map
|