@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.
Files changed (86) hide show
  1. package/dist/atoms/composed/SalesPanel/SalesPanel.d.ts +19 -0
  2. package/dist/atoms/composed/SalesPanel/SalesPanel.d.ts.map +1 -0
  3. package/dist/atoms/composed/SalesPanel/index.d.ts +2 -0
  4. package/dist/atoms/composed/SalesPanel/index.d.ts.map +1 -0
  5. package/dist/atoms/composed/SalesPanel/mockSalesData.d.ts +63 -0
  6. package/dist/atoms/composed/SalesPanel/mockSalesData.d.ts.map +1 -0
  7. package/dist/atoms/composed/index.d.ts +1 -0
  8. package/dist/atoms/composed/index.d.ts.map +1 -1
  9. package/dist/atoms/types/entity-config.d.ts +117 -0
  10. package/dist/atoms/types/entity-config.d.ts.map +1 -0
  11. package/dist/atoms/types/index.d.ts +2 -0
  12. package/dist/atoms/types/index.d.ts.map +1 -1
  13. package/dist/atoms/types/navigation.d.ts +30 -0
  14. package/dist/atoms/types/navigation.d.ts.map +1 -0
  15. package/dist/atoms/ui/ErrorBoundary.d.ts +1 -1
  16. package/dist/atoms/ui/button.d.ts +1 -1
  17. package/dist/atoms/utils/icon-resolver.d.ts +72 -0
  18. package/dist/atoms/utils/icon-resolver.d.ts.map +1 -0
  19. package/dist/atoms/utils/metric-engine.d.ts +30 -0
  20. package/dist/atoms/utils/metric-engine.d.ts.map +1 -0
  21. package/dist/atoms/utils/utils.d.ts +2 -0
  22. package/dist/atoms/utils/utils.d.ts.map +1 -1
  23. package/dist/features/auth/components/ProtectedRoute.d.ts +1 -1
  24. package/dist/frontend-patterns.css +1 -1
  25. package/dist/index.es.js +402 -14
  26. package/dist/index.es.js.map +1 -1
  27. package/dist/index.js +402 -14
  28. package/dist/index.js.map +1 -1
  29. package/dist/molecules/layout/DashboardWithSidePanel/DashboardWithSidePanel.d.ts +16 -0
  30. package/dist/molecules/layout/DashboardWithSidePanel/DashboardWithSidePanel.d.ts.map +1 -0
  31. package/dist/molecules/layout/DashboardWithSidePanel/index.d.ts +2 -0
  32. package/dist/molecules/layout/DashboardWithSidePanel/index.d.ts.map +1 -0
  33. package/dist/molecules/layout/NavigationContext.d.ts +15 -0
  34. package/dist/molecules/layout/NavigationContext.d.ts.map +1 -0
  35. package/dist/molecules/layout/Sidebar.d.ts.map +1 -1
  36. package/dist/molecules/layout/SidebarButton/SidebarButton.d.ts +2 -0
  37. package/dist/molecules/layout/SidebarButton/SidebarButton.d.ts.map +1 -1
  38. package/dist/molecules/layout/index.d.ts +3 -0
  39. package/dist/molecules/layout/index.d.ts.map +1 -1
  40. package/dist/templates/factory.d.ts +2 -1
  41. package/dist/templates/factory.d.ts.map +1 -1
  42. package/dist/templates/index.d.ts.map +1 -1
  43. package/package.json +7 -3
  44. package/src/App.tsx +11 -1
  45. package/src/__tests__/atoms/composed/databadge.test.tsx +106 -0
  46. package/src/__tests__/atoms/composed/statcard.test.tsx +133 -0
  47. package/src/__tests__/atoms/utils/icon-resolver.test.tsx +140 -0
  48. package/src/atoms/composed/SalesPanel/SalesPanel.tsx +116 -0
  49. package/src/atoms/composed/SalesPanel/index.ts +1 -0
  50. package/src/atoms/composed/SalesPanel/mockSalesData.ts +151 -0
  51. package/src/atoms/composed/index.ts +1 -0
  52. package/src/atoms/types/entity-config.ts +127 -0
  53. package/src/atoms/types/index.ts +3 -1
  54. package/src/atoms/types/navigation.ts +43 -0
  55. package/src/atoms/utils/icon-resolver.tsx +54 -0
  56. package/src/atoms/utils/metric-engine.ts +236 -0
  57. package/src/atoms/utils/utils.ts +4 -2
  58. package/src/molecules/layout/DashboardWithSidePanel/DashboardWithSidePanel.tsx +42 -0
  59. package/src/molecules/layout/DashboardWithSidePanel/index.ts +1 -0
  60. package/src/molecules/layout/NavigationContext.tsx +63 -0
  61. package/src/molecules/layout/Sidebar.tsx +10 -23
  62. package/src/molecules/layout/SidebarButton/SidebarButton.tsx +32 -10
  63. package/src/molecules/layout/index.ts +4 -1
  64. package/src/organisms/entity/CategoryBreakdownPanel.tsx +427 -0
  65. package/src/organisms/entity/EntityListPanel.tsx +339 -0
  66. package/src/organisms/entity/MetricsOverviewPanel.tsx +236 -0
  67. package/src/organisms/entity/TrendAnalysisPanel.tsx +337 -0
  68. package/src/organisms/entity/index.ts +4 -0
  69. package/src/organisms/index.ts +5 -1
  70. package/src/pages/AdminShowcase/AdminDashboardShowcase.tsx +77 -75
  71. package/src/pages/AdminShowcase/SalesPerformanceDashboard.tsx +158 -0
  72. package/src/pages/AdminShowcase/index.tsx +2 -1
  73. package/src/pages/EntityShowcase/EntityManagementShowcase.tsx +137 -0
  74. package/src/pages/EntityShowcase/EntityPerformanceShowcase.tsx +117 -0
  75. package/src/pages/EntityShowcase/index.ts +2 -0
  76. package/src/pages/EntityTemplateExample.tsx +229 -0
  77. package/src/pages/TestEntityTemplate.tsx +40 -0
  78. package/src/pages/index.ts +2 -1
  79. package/src/templates/entity/EntityManagementTemplate.tsx +430 -0
  80. package/src/templates/entity/EntityPerformanceDashboardTemplate.tsx +277 -0
  81. package/src/templates/entity/configs/financial-config.ts +141 -0
  82. package/src/templates/entity/configs/index.ts +1 -0
  83. package/src/templates/entity/index.ts +3 -0
  84. package/src/templates/factory.tsx +14 -7
  85. package/src/templates/financial/FinancialDashboardTemplate.tsx +326 -0
  86. 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,2 @@
1
+ export { SalesPanel } from './SalesPanel';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -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,4 +1,5 @@
1
1
  export { DataBadge } from './DataBadge';
2
+ export { SalesPanel } from './SalesPanel';
2
3
  export { StatCard } from './StatCard';
3
4
  export { DetailedCard } from './DetailedCard';
4
5
  export { EmptyState } from './EmptyState';
@@ -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,4 +1,6 @@
1
1
  export * from './generated';
2
2
  export * from './loading';
3
3
  export * from './auth';
4
+ export * from './navigation';
5
+ export * from './entity-config';
4
6
  //# sourceMappingURL=index.d.ts.map
@@ -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> | import("react/jsx-runtime").JSX.Element | 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?: "link" | "default" | "destructive" | "outline" | "secondary" | "ghost" | null | undefined;
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> | import("react/jsx-runtime").JSX.Element;
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