@varity-labs/ui-kit 2.0.0-beta.1 → 2.0.0-beta.12

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 (114) hide show
  1. package/LICENSE +3 -3
  2. package/README.md +66 -35
  3. package/dist/components/Dashboard/DashboardHeader.js +4 -4
  4. package/dist/components/Dashboard/DashboardHeader.js.map +1 -1
  5. package/dist/components/Dashboard/DashboardLayout.d.ts +3 -3
  6. package/dist/components/Dashboard/DashboardLayout.d.ts.map +1 -1
  7. package/dist/components/Dashboard/DashboardLayout.js +1 -1
  8. package/dist/components/Onramp/BuyUSDCButton.d.ts +4 -4
  9. package/dist/components/Onramp/BuyUSDCButton.d.ts.map +1 -1
  10. package/dist/components/Onramp/BuyUSDCButton.js +5 -5
  11. package/dist/components/Onramp/BuyUSDCButton.js.map +1 -1
  12. package/dist/components/Onramp/OnrampWidget.d.ts +4 -4
  13. package/dist/components/Onramp/OnrampWidget.d.ts.map +1 -1
  14. package/dist/components/Onramp/OnrampWidget.js +10 -11
  15. package/dist/components/Onramp/OnrampWidget.js.map +1 -1
  16. package/dist/components/Onramp/index.d.ts +3 -4
  17. package/dist/components/Onramp/index.d.ts.map +1 -1
  18. package/dist/components/Onramp/index.js +3 -4
  19. package/dist/components/Onramp/index.js.map +1 -1
  20. package/dist/components/PaymentWidget/PaymentWidget.d.ts +7 -7
  21. package/dist/components/PaymentWidget/PaymentWidget.d.ts.map +1 -1
  22. package/dist/components/PaymentWidget/PaymentWidget.js +12 -133
  23. package/dist/components/PaymentWidget/PaymentWidget.js.map +1 -1
  24. package/dist/components/PaymentWidget/useSeamlessPayment.d.ts +43 -0
  25. package/dist/components/PaymentWidget/useSeamlessPayment.d.ts.map +1 -0
  26. package/dist/components/PaymentWidget/useSeamlessPayment.js +59 -0
  27. package/dist/components/PaymentWidget/useSeamlessPayment.js.map +1 -0
  28. package/dist/components/PaymentWidget/useVarityPayment.d.ts +5 -1
  29. package/dist/components/PaymentWidget/useVarityPayment.d.ts.map +1 -1
  30. package/dist/components/PaymentWidget/useVarityPayment.js +17 -123
  31. package/dist/components/PaymentWidget/useVarityPayment.js.map +1 -1
  32. package/dist/components/Payments/CheckoutModal.d.ts +4 -1
  33. package/dist/components/Payments/CheckoutModal.d.ts.map +1 -1
  34. package/dist/components/Payments/CheckoutModal.js +23 -145
  35. package/dist/components/Payments/CheckoutModal.js.map +1 -1
  36. package/dist/components/Payments/constants.d.ts +1 -1
  37. package/dist/components/Payments/constants.d.ts.map +1 -1
  38. package/dist/components/Payments/constants.js +1 -1
  39. package/dist/components/Payments/constants.js.map +1 -1
  40. package/dist/index.d.ts +1 -1
  41. package/dist/index.d.ts.map +1 -1
  42. package/dist/index.js +1 -1
  43. package/dist/index.js.map +1 -1
  44. package/dist/modules/cache/CacheClient.d.ts +48 -0
  45. package/dist/modules/cache/CacheClient.d.ts.map +1 -0
  46. package/dist/modules/cache/CacheClient.js +59 -0
  47. package/dist/modules/cache/CacheClient.js.map +1 -0
  48. package/dist/providers/PrivyStack.d.ts +21 -49
  49. package/dist/providers/PrivyStack.d.ts.map +1 -1
  50. package/dist/providers/PrivyStack.js +16 -46
  51. package/dist/providers/PrivyStack.js.map +1 -1
  52. package/dist/providers/VarityDashboardProvider.d.ts +1 -7
  53. package/dist/providers/VarityDashboardProvider.d.ts.map +1 -1
  54. package/dist/providers/VarityDashboardProvider.js +4 -28
  55. package/dist/providers/VarityDashboardProvider.js.map +1 -1
  56. package/dist/providers/WalletSyncProvider.d.ts +17 -24
  57. package/dist/providers/WalletSyncProvider.d.ts.map +1 -1
  58. package/dist/providers/WalletSyncProvider.js +16 -27
  59. package/dist/providers/WalletSyncProvider.js.map +1 -1
  60. package/dist/providers/ZeroDevProvider.d.ts +69 -0
  61. package/dist/providers/ZeroDevProvider.d.ts.map +1 -0
  62. package/dist/providers/ZeroDevProvider.js +208 -0
  63. package/dist/providers/ZeroDevProvider.js.map +1 -0
  64. package/dist/providers/index.d.ts +1 -0
  65. package/dist/providers/index.d.ts.map +1 -1
  66. package/dist/providers/index.js +2 -0
  67. package/dist/providers/index.js.map +1 -1
  68. package/dist/wallets/SmartWalletProvider.js +1 -1
  69. package/dist/wallets/SmartWalletProvider.js.map +1 -1
  70. package/dist/wallets/config.d.ts +24 -3
  71. package/dist/wallets/config.d.ts.map +1 -1
  72. package/dist/wallets/config.js +24 -1
  73. package/dist/wallets/config.js.map +1 -1
  74. package/dist/wallets/index.d.ts +1 -1
  75. package/dist/wallets/index.d.ts.map +1 -1
  76. package/dist/wallets/index.js +1 -1
  77. package/dist/wallets/index.js.map +1 -1
  78. package/package.json +10 -8
  79. package/dist/core/VarityClient.d.ts +0 -76
  80. package/dist/core/VarityClient.d.ts.map +0 -1
  81. package/dist/core/VarityClient.js +0 -99
  82. package/dist/core/VarityClient.js.map +0 -1
  83. package/dist/core/config.d.ts +0 -136
  84. package/dist/core/config.d.ts.map +0 -1
  85. package/dist/core/config.js +0 -156
  86. package/dist/core/config.js.map +0 -1
  87. package/dist/hooks/useAnalytics.d.ts +0 -94
  88. package/dist/hooks/useAnalytics.d.ts.map +0 -1
  89. package/dist/hooks/useAnalytics.js +0 -116
  90. package/dist/hooks/useAnalytics.js.map +0 -1
  91. package/dist/hooks/useAuth.d.ts +0 -71
  92. package/dist/hooks/useAuth.d.ts.map +0 -1
  93. package/dist/hooks/useAuth.js +0 -198
  94. package/dist/hooks/useAuth.js.map +0 -1
  95. package/dist/hooks/useDashboard.d.ts +0 -110
  96. package/dist/hooks/useDashboard.d.ts.map +0 -1
  97. package/dist/hooks/useDashboard.js +0 -201
  98. package/dist/hooks/useDashboard.js.map +0 -1
  99. package/dist/hooks/useVarityAPI.d.ts +0 -88
  100. package/dist/hooks/useVarityAPI.d.ts.map +0 -1
  101. package/dist/hooks/useVarityAPI.js +0 -138
  102. package/dist/hooks/useVarityAPI.js.map +0 -1
  103. package/dist/hooks/useWalletAuth.d.ts +0 -108
  104. package/dist/hooks/useWalletAuth.d.ts.map +0 -1
  105. package/dist/hooks/useWalletAuth.js +0 -415
  106. package/dist/hooks/useWalletAuth.js.map +0 -1
  107. package/dist/modules/cache/index.d.ts +0 -12
  108. package/dist/modules/cache/index.d.ts.map +0 -1
  109. package/dist/modules/cache/index.js +0 -13
  110. package/dist/modules/cache/index.js.map +0 -1
  111. package/dist/types/api-extensions.d.ts +0 -92
  112. package/dist/types/api-extensions.d.ts.map +0 -1
  113. package/dist/types/api-extensions.js +0 -7
  114. package/dist/types/api-extensions.js.map +0 -1
@@ -1,71 +0,0 @@
1
- /**
2
- * useAuth - Authentication state management hook
3
- *
4
- * Manages user authentication state with SIWE (Sign-In with Ethereum).
5
- */
6
- import { Metadata } from '@varity-labs/types';
7
- export interface User {
8
- /** User's wallet address */
9
- address: string;
10
- /** User's display name */
11
- name?: string;
12
- /** User's email */
13
- email?: string;
14
- /** User's avatar URL */
15
- avatarUrl?: string;
16
- /** Additional user metadata */
17
- metadata?: Metadata;
18
- }
19
- export interface UseAuthReturn {
20
- /** Current user (null if not authenticated) */
21
- user: User | null;
22
- /** Whether user is authenticated */
23
- isAuthenticated: boolean;
24
- /** Whether auth is loading */
25
- isLoading: boolean;
26
- /** Authentication error */
27
- error: Error | null;
28
- /** Login with SIWE */
29
- login: (message: string, signature: string) => Promise<void>;
30
- /** Logout */
31
- logout: () => Promise<void>;
32
- /** Refresh user data */
33
- refreshUser: () => Promise<void>;
34
- }
35
- /**
36
- * useAuth Hook
37
- *
38
- * Manages authentication state with Sign-In with Ethereum (SIWE).
39
- *
40
- * @example
41
- * ```tsx
42
- * const { user, isAuthenticated, login, logout } = useAuth()
43
- *
44
- * // Login
45
- * await login(siweMessage, signature)
46
- *
47
- * // Logout
48
- * await logout()
49
- * ```
50
- */
51
- export declare const useAuth: () => UseAuthReturn;
52
- /**
53
- * useWalletConnect Hook
54
- *
55
- * Helper hook for connecting external wallets (MetaMask, etc).
56
- *
57
- * @example
58
- * ```tsx
59
- * const { connect, disconnect, address, isConnected } = useWalletConnect()
60
- * await connect()
61
- * ```
62
- */
63
- export declare const useWalletConnect: () => {
64
- address: string | null;
65
- isConnected: boolean;
66
- isLoading: boolean;
67
- error: Error | null;
68
- connect: () => Promise<void>;
69
- disconnect: () => void;
70
- };
71
- //# sourceMappingURL=useAuth.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useAuth.d.ts","sourceRoot":"","sources":["../../src/hooks/useAuth.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAE7C,MAAM,WAAW,IAAI;IACnB,4BAA4B;IAC5B,OAAO,EAAE,MAAM,CAAA;IACf,0BAA0B;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,mBAAmB;IACnB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,wBAAwB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,QAAQ,CAAA;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,+CAA+C;IAC/C,IAAI,EAAE,IAAI,GAAG,IAAI,CAAA;IACjB,oCAAoC;IACpC,eAAe,EAAE,OAAO,CAAA;IACxB,8BAA8B;IAC9B,SAAS,EAAE,OAAO,CAAA;IAClB,2BAA2B;IAC3B,KAAK,EAAE,KAAK,GAAG,IAAI,CAAA;IACnB,sBAAsB;IACtB,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5D,aAAa;IACb,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC3B,wBAAwB;IACxB,WAAW,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CACjC;AAED;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,OAAO,QAAO,aA+F1B,CAAA;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,gBAAgB;;;;;;;CA0E5B,CAAA"}
@@ -1,198 +0,0 @@
1
- /**
2
- * useAuth - Authentication state management hook
3
- *
4
- * Manages user authentication state with SIWE (Sign-In with Ethereum).
5
- */
6
- import { useState, useCallback, useEffect } from 'react';
7
- import { useVarityAPI } from './useVarityAPI';
8
- /**
9
- * useAuth Hook
10
- *
11
- * Manages authentication state with Sign-In with Ethereum (SIWE).
12
- *
13
- * @example
14
- * ```tsx
15
- * const { user, isAuthenticated, login, logout } = useAuth()
16
- *
17
- * // Login
18
- * await login(siweMessage, signature)
19
- *
20
- * // Logout
21
- * await logout()
22
- * ```
23
- */
24
- export const useAuth = () => {
25
- const { client, isAuthenticated, setAuthenticated } = useVarityAPI();
26
- const [user, setUser] = useState(null);
27
- const [isLoading, setIsLoading] = useState(false);
28
- const [error, setError] = useState(null);
29
- const refreshUser = useCallback(async () => {
30
- setIsLoading(true);
31
- setError(null);
32
- try {
33
- const userData = await client.auth.me();
34
- setUser({
35
- address: userData.address,
36
- name: userData.name,
37
- email: userData.email,
38
- avatarUrl: userData.avatarUrl,
39
- metadata: userData.metadata
40
- });
41
- setAuthenticated(true);
42
- }
43
- catch (err) {
44
- const error = err instanceof Error ? err : new Error('Failed to fetch user');
45
- setError(error);
46
- setUser(null);
47
- setAuthenticated(false);
48
- // Clear invalid token
49
- localStorage.removeItem('varity_token');
50
- }
51
- finally {
52
- setIsLoading(false);
53
- }
54
- }, [client, setAuthenticated]);
55
- const login = useCallback(async (message, signature) => {
56
- setIsLoading(true);
57
- setError(null);
58
- try {
59
- const response = await client.auth.login(message, signature);
60
- // Store token
61
- if (response.token) {
62
- localStorage.setItem('varity_token', response.token);
63
- client.setAPIKey(response.token);
64
- }
65
- // Set user data
66
- setUser({
67
- address: response.address,
68
- name: response.name,
69
- email: response.email,
70
- avatarUrl: response.avatarUrl,
71
- metadata: response.metadata
72
- });
73
- setAuthenticated(true);
74
- }
75
- catch (err) {
76
- const error = err instanceof Error ? err : new Error('Login failed');
77
- setError(error);
78
- throw error;
79
- }
80
- finally {
81
- setIsLoading(false);
82
- }
83
- }, [client, setAuthenticated]);
84
- // Load user on mount if token exists
85
- useEffect(() => {
86
- const token = localStorage.getItem('varity_token');
87
- if (token) {
88
- refreshUser();
89
- }
90
- }, [refreshUser]);
91
- const logout = useCallback(async () => {
92
- setIsLoading(true);
93
- setError(null);
94
- try {
95
- await client.auth.logout();
96
- }
97
- catch (err) {
98
- // Log error but continue with logout
99
- console.error('Logout error:', err);
100
- }
101
- finally {
102
- // Clear local state regardless of API call success
103
- localStorage.removeItem('varity_token');
104
- setUser(null);
105
- setAuthenticated(false);
106
- setIsLoading(false);
107
- }
108
- }, [client, setAuthenticated]);
109
- return {
110
- user,
111
- isAuthenticated,
112
- isLoading,
113
- error,
114
- login,
115
- logout,
116
- refreshUser
117
- };
118
- };
119
- /**
120
- * useWalletConnect Hook
121
- *
122
- * Helper hook for connecting external wallets (MetaMask, etc).
123
- *
124
- * @example
125
- * ```tsx
126
- * const { connect, disconnect, address, isConnected } = useWalletConnect()
127
- * await connect()
128
- * ```
129
- */
130
- export const useWalletConnect = () => {
131
- const [address, setAddress] = useState(null);
132
- const [isConnected, setIsConnected] = useState(false);
133
- const [isLoading, setIsLoading] = useState(false);
134
- const [error, setError] = useState(null);
135
- const connect = useCallback(async () => {
136
- setIsLoading(true);
137
- setError(null);
138
- try {
139
- // Check if MetaMask is installed
140
- const ethereum = window.ethereum;
141
- if (!ethereum) {
142
- throw new Error('MetaMask is not installed');
143
- }
144
- // Request account access
145
- const result = await ethereum.request({
146
- method: 'eth_requestAccounts'
147
- });
148
- // Type guard for accounts array
149
- const accounts = Array.isArray(result) ? result : [];
150
- if (accounts.length === 0) {
151
- throw new Error('No accounts found');
152
- }
153
- setAddress(accounts[0]);
154
- setIsConnected(true);
155
- }
156
- catch (err) {
157
- const error = err instanceof Error ? err : new Error('Failed to connect wallet');
158
- setError(error);
159
- throw error;
160
- }
161
- finally {
162
- setIsLoading(false);
163
- }
164
- }, []);
165
- const disconnect = useCallback(() => {
166
- setAddress(null);
167
- setIsConnected(false);
168
- }, []);
169
- // Listen for account changes
170
- useEffect(() => {
171
- const ethereum = window.ethereum;
172
- if (!ethereum)
173
- return;
174
- const handleAccountsChanged = (...args) => {
175
- // Type guard for accounts parameter
176
- const accounts = Array.isArray(args[0]) ? args[0] : [];
177
- if (accounts.length === 0) {
178
- disconnect();
179
- }
180
- else {
181
- setAddress(accounts[0]);
182
- }
183
- };
184
- ethereum.on('accountsChanged', handleAccountsChanged);
185
- return () => {
186
- ethereum.removeListener('accountsChanged', handleAccountsChanged);
187
- };
188
- }, [disconnect]);
189
- return {
190
- address,
191
- isConnected,
192
- isLoading,
193
- error,
194
- connect,
195
- disconnect
196
- };
197
- };
198
- //# sourceMappingURL=useAuth.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useAuth.js","sourceRoot":"","sources":["../../src/hooks/useAuth.ts"],"names":[],"mappings":"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"}
@@ -1,110 +0,0 @@
1
- /**
2
- * useDashboard - Dashboard state management hook
3
- *
4
- * Manages dashboard configuration, layout, and data.
5
- */
6
- export interface DashboardWidget {
7
- /** Widget ID */
8
- id: string;
9
- /** Widget type */
10
- type: 'kpi' | 'chart' | 'table' | 'ai-chat' | 'custom';
11
- /** Widget title */
12
- title: string;
13
- /** Widget configuration */
14
- config: Record<string, any>;
15
- /** Widget position */
16
- position: {
17
- x: number;
18
- y: number;
19
- width: number;
20
- height: number;
21
- };
22
- }
23
- export interface DashboardConfig {
24
- /** Dashboard ID */
25
- id: string;
26
- /** Dashboard title */
27
- title: string;
28
- /** Dashboard description */
29
- description?: string;
30
- /** Dashboard widgets */
31
- widgets: DashboardWidget[];
32
- /** Dashboard layout */
33
- layout?: 'grid' | 'flex' | 'custom';
34
- /** Dashboard theme */
35
- theme?: string;
36
- }
37
- export interface UseDashboardOptions {
38
- /** Dashboard ID to load */
39
- dashboardId?: string;
40
- /** Auto-save changes */
41
- autoSave?: boolean;
42
- /** Auto-save interval in milliseconds */
43
- autoSaveInterval?: number;
44
- }
45
- export interface UseDashboardReturn {
46
- /** Dashboard configuration */
47
- config: DashboardConfig | null;
48
- /** Loading state */
49
- loading: boolean;
50
- /** Error state */
51
- error: Error | null;
52
- /** Update dashboard config */
53
- updateConfig: (config: Partial<DashboardConfig>) => void;
54
- /** Add widget */
55
- addWidget: (widget: DashboardWidget) => void;
56
- /** Remove widget */
57
- removeWidget: (widgetId: string) => void;
58
- /** Update widget */
59
- updateWidget: (widgetId: string, updates: Partial<DashboardWidget>) => void;
60
- /** Save dashboard */
61
- save: () => Promise<void>;
62
- /** Load dashboard */
63
- load: (dashboardId: string) => Promise<void>;
64
- /** Reset dashboard */
65
- reset: () => void;
66
- }
67
- /**
68
- * useDashboard Hook
69
- *
70
- * Manage dashboard configuration and widgets.
71
- *
72
- * @example
73
- * ```tsx
74
- * const { config, addWidget, save } = useDashboard({
75
- * dashboardId: 'my-dashboard',
76
- * autoSave: true
77
- * })
78
- *
79
- * // Add a widget
80
- * addWidget({
81
- * id: 'widget-1',
82
- * type: 'kpi',
83
- * title: 'Total Revenue',
84
- * config: { metric: 'revenue' },
85
- * position: { x: 0, y: 0, width: 4, height: 2 }
86
- * })
87
- * ```
88
- */
89
- export declare const useDashboard: (options?: UseDashboardOptions) => UseDashboardReturn;
90
- /**
91
- * useWidgetData Hook
92
- *
93
- * Fetch data for a specific dashboard widget.
94
- *
95
- * @example
96
- * ```tsx
97
- * const { data, loading } = useWidgetData({
98
- * id: 'widget-1',
99
- * type: 'kpi',
100
- * config: { metric: 'revenue' }
101
- * })
102
- * ```
103
- */
104
- export declare const useWidgetData: (widget: DashboardWidget) => {
105
- data: any;
106
- loading: boolean;
107
- error: Error | null;
108
- refetch: () => Promise<void>;
109
- };
110
- //# sourceMappingURL=useDashboard.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useDashboard.d.ts","sourceRoot":"","sources":["../../src/hooks/useDashboard.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,MAAM,WAAW,eAAe;IAC9B,gBAAgB;IAChB,EAAE,EAAE,MAAM,CAAA;IACV,kBAAkB;IAClB,IAAI,EAAE,KAAK,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,GAAG,QAAQ,CAAA;IACtD,mBAAmB;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,2BAA2B;IAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC3B,sBAAsB;IACtB,QAAQ,EAAE;QACR,CAAC,EAAE,MAAM,CAAA;QACT,CAAC,EAAE,MAAM,CAAA;QACT,KAAK,EAAE,MAAM,CAAA;QACb,MAAM,EAAE,MAAM,CAAA;KACf,CAAA;CACF;AAED,MAAM,WAAW,eAAe;IAC9B,mBAAmB;IACnB,EAAE,EAAE,MAAM,CAAA;IACV,sBAAsB;IACtB,KAAK,EAAE,MAAM,CAAA;IACb,4BAA4B;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,wBAAwB;IACxB,OAAO,EAAE,eAAe,EAAE,CAAA;IAC1B,uBAAuB;IACvB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAA;IACnC,sBAAsB;IACtB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,2BAA2B;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,wBAAwB;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,yCAAyC;IACzC,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B;AAED,MAAM,WAAW,kBAAkB;IACjC,8BAA8B;IAC9B,MAAM,EAAE,eAAe,GAAG,IAAI,CAAA;IAC9B,oBAAoB;IACpB,OAAO,EAAE,OAAO,CAAA;IAChB,kBAAkB;IAClB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAA;IACnB,8BAA8B;IAC9B,YAAY,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,eAAe,CAAC,KAAK,IAAI,CAAA;IACxD,iBAAiB;IACjB,SAAS,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,CAAA;IAC5C,oBAAoB;IACpB,YAAY,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IACxC,oBAAoB;IACpB,YAAY,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,KAAK,IAAI,CAAA;IAC3E,qBAAqB;IACrB,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IACzB,qBAAqB;IACrB,IAAI,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5C,sBAAsB;IACtB,KAAK,EAAE,MAAM,IAAI,CAAA;CAClB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,YAAY,GAAI,UAAS,mBAAwB,KAAG,kBAqHhE,CAAA;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,aAAa,GAAI,QAAQ,eAAe;;;;;CA8CpD,CAAA"}
@@ -1,201 +0,0 @@
1
- /**
2
- * useDashboard - Dashboard state management hook
3
- *
4
- * Manages dashboard configuration, layout, and data.
5
- */
6
- import { useState, useCallback, useEffect } from 'react';
7
- import { useVarityAPI } from './useVarityAPI';
8
- /**
9
- * useDashboard Hook
10
- *
11
- * Manage dashboard configuration and widgets.
12
- *
13
- * @example
14
- * ```tsx
15
- * const { config, addWidget, save } = useDashboard({
16
- * dashboardId: 'my-dashboard',
17
- * autoSave: true
18
- * })
19
- *
20
- * // Add a widget
21
- * addWidget({
22
- * id: 'widget-1',
23
- * type: 'kpi',
24
- * title: 'Total Revenue',
25
- * config: { metric: 'revenue' },
26
- * position: { x: 0, y: 0, width: 4, height: 2 }
27
- * })
28
- * ```
29
- */
30
- export const useDashboard = (options = {}) => {
31
- const { client } = useVarityAPI();
32
- const [config, setConfig] = useState(null);
33
- const [loading, setLoading] = useState(false);
34
- const [error, setError] = useState(null);
35
- const [hasChanges, setHasChanges] = useState(false);
36
- const { dashboardId, autoSave = false, autoSaveInterval = 30000 } = options;
37
- const load = useCallback(async (id) => {
38
- setLoading(true);
39
- setError(null);
40
- try {
41
- const dashboard = await client.dashboard.get(id);
42
- setConfig(dashboard);
43
- setHasChanges(false);
44
- }
45
- catch (err) {
46
- const error = err instanceof Error ? err : new Error('Failed to load dashboard');
47
- setError(error);
48
- }
49
- finally {
50
- setLoading(false);
51
- }
52
- }, [client]);
53
- const save = useCallback(async () => {
54
- if (!config)
55
- return;
56
- setLoading(true);
57
- setError(null);
58
- try {
59
- await client.dashboard.save(config);
60
- setHasChanges(false);
61
- }
62
- catch (err) {
63
- const error = err instanceof Error ? err : new Error('Failed to save dashboard');
64
- setError(error);
65
- throw error;
66
- }
67
- finally {
68
- setLoading(false);
69
- }
70
- }, [client, config]);
71
- // Load dashboard on mount
72
- useEffect(() => {
73
- if (dashboardId) {
74
- load(dashboardId);
75
- }
76
- }, [dashboardId, load]);
77
- // Auto-save if enabled
78
- useEffect(() => {
79
- if (!autoSave || !hasChanges || !config)
80
- return;
81
- const interval = setInterval(() => {
82
- save();
83
- }, autoSaveInterval);
84
- return () => clearInterval(interval);
85
- }, [autoSave, hasChanges, config, autoSaveInterval, save]);
86
- const updateConfig = useCallback((updates) => {
87
- setConfig((prev) => prev ? { ...prev, ...updates } : null);
88
- setHasChanges(true);
89
- }, []);
90
- const addWidget = useCallback((widget) => {
91
- setConfig((prev) => {
92
- if (!prev)
93
- return null;
94
- return {
95
- ...prev,
96
- widgets: [...prev.widgets, widget]
97
- };
98
- });
99
- setHasChanges(true);
100
- }, []);
101
- const removeWidget = useCallback((widgetId) => {
102
- setConfig((prev) => {
103
- if (!prev)
104
- return null;
105
- return {
106
- ...prev,
107
- widgets: prev.widgets.filter((w) => w.id !== widgetId)
108
- };
109
- });
110
- setHasChanges(true);
111
- }, []);
112
- const updateWidget = useCallback((widgetId, updates) => {
113
- setConfig((prev) => {
114
- if (!prev)
115
- return null;
116
- return {
117
- ...prev,
118
- widgets: prev.widgets.map((w) => w.id === widgetId ? { ...w, ...updates } : w)
119
- };
120
- });
121
- setHasChanges(true);
122
- }, []);
123
- const reset = useCallback(() => {
124
- setConfig(null);
125
- setHasChanges(false);
126
- setError(null);
127
- }, []);
128
- return {
129
- config,
130
- loading,
131
- error,
132
- updateConfig,
133
- addWidget,
134
- removeWidget,
135
- updateWidget,
136
- save,
137
- load,
138
- reset
139
- };
140
- };
141
- /**
142
- * useWidgetData Hook
143
- *
144
- * Fetch data for a specific dashboard widget.
145
- *
146
- * @example
147
- * ```tsx
148
- * const { data, loading } = useWidgetData({
149
- * id: 'widget-1',
150
- * type: 'kpi',
151
- * config: { metric: 'revenue' }
152
- * })
153
- * ```
154
- */
155
- export const useWidgetData = (widget) => {
156
- const { client } = useVarityAPI();
157
- const [data, setData] = useState(null);
158
- const [loading, setLoading] = useState(false);
159
- const [error, setError] = useState(null);
160
- const fetchData = useCallback(async () => {
161
- setLoading(true);
162
- setError(null);
163
- try {
164
- let result;
165
- switch (widget.type) {
166
- case 'kpi':
167
- result = await client.analytics.getKPIs({ period: 'current_month' });
168
- break;
169
- case 'chart':
170
- result = await client.analytics.getTrends({
171
- startDate: widget.config.startDate,
172
- endDate: widget.config.endDate
173
- });
174
- break;
175
- case 'table':
176
- result = await client.analytics.getData(widget.config);
177
- break;
178
- default:
179
- result = null;
180
- }
181
- setData(result);
182
- }
183
- catch (err) {
184
- const error = err instanceof Error ? err : new Error('Failed to fetch widget data');
185
- setError(error);
186
- }
187
- finally {
188
- setLoading(false);
189
- }
190
- }, [client, widget]);
191
- useEffect(() => {
192
- fetchData();
193
- }, [fetchData]);
194
- return {
195
- data,
196
- loading,
197
- error,
198
- refetch: fetchData
199
- };
200
- };
201
- //# sourceMappingURL=useDashboard.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useDashboard.js","sourceRoot":"","sources":["../../src/hooks/useDashboard.ts"],"names":[],"mappings":"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"}