@23blocks/react 0.2.1 → 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.
package/dist/lib/index.js CHANGED
@@ -1,3 +1,10 @@
1
+ // ─────────────────────────────────────────────────────────────────────────────
2
+ // Simplified API (Recommended)
3
+ // ─────────────────────────────────────────────────────────────────────────────
4
+ export { SimpleBlocks23Provider, useSimpleBlocks23, useSimpleAuth } from './simple-provider.js';
5
+ // ─────────────────────────────────────────────────────────────────────────────
6
+ // Advanced API (Custom transport)
7
+ // ─────────────────────────────────────────────────────────────────────────────
1
8
  // Context and Provider
2
9
  export { Blocks23Provider, use23Blocks, useAuthenticationBlock, useSearchBlock, useProductsBlock, useCrmBlock, useContentBlock, useGeolocationBlock, useConversationsBlock, useFilesBlock, useFormsBlock, useAssetsBlock, useCampaignsBlock, useCompanyBlock, useRewardsBlock, useSalesBlock, useWalletBlock, useJarvisBlock, useOnboardingBlock, useUniversityBlock } from './context.js';
3
10
  // Hooks
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/lib/index.ts"],"sourcesContent":["// Context and Provider\nexport {\n Blocks23Provider,\n use23Blocks,\n useAuthenticationBlock,\n useSearchBlock,\n useProductsBlock,\n useCrmBlock,\n useContentBlock,\n useGeolocationBlock,\n useConversationsBlock,\n useFilesBlock,\n useFormsBlock,\n useAssetsBlock,\n useCampaignsBlock,\n useCompanyBlock,\n useRewardsBlock,\n useSalesBlock,\n useWalletBlock,\n useJarvisBlock,\n useOnboardingBlock,\n useUniversityBlock,\n type Blocks23ProviderProps,\n type Blocks23Context,\n} from './context.js';\n\n// Hooks\nexport {\n // Auth\n useAuth,\n useUsers,\n type UseAuthReturn,\n type UseAuthState,\n type UseAuthActions,\n type UseUsersReturn,\n type UseUsersState,\n type UseUsersActions,\n\n // Search\n useSearch,\n useFavorites,\n type UseSearchReturn,\n type UseSearchState,\n type UseSearchActions,\n type UseFavoritesReturn,\n type UseFavoritesState,\n type UseFavoritesActions,\n} from './hooks/index.js';\n"],"names":["Blocks23Provider","use23Blocks","useAuthenticationBlock","useSearchBlock","useProductsBlock","useCrmBlock","useContentBlock","useGeolocationBlock","useConversationsBlock","useFilesBlock","useFormsBlock","useAssetsBlock","useCampaignsBlock","useCompanyBlock","useRewardsBlock","useSalesBlock","useWalletBlock","useJarvisBlock","useOnboardingBlock","useUniversityBlock","useAuth","useUsers","useSearch","useFavorites"],"rangeMappings":";;;;;","mappings":"AAAA,uBAAuB;AACvB,SACEA,gBAAgB,EAChBC,WAAW,EACXC,sBAAsB,EACtBC,cAAc,EACdC,gBAAgB,EAChBC,WAAW,EACXC,eAAe,EACfC,mBAAmB,EACnBC,qBAAqB,EACrBC,aAAa,EACbC,aAAa,EACbC,cAAc,EACdC,iBAAiB,EACjBC,eAAe,EACfC,eAAe,EACfC,aAAa,EACbC,cAAc,EACdC,cAAc,EACdC,kBAAkB,EAClBC,kBAAkB,QAGb,eAAe;AAEtB,QAAQ;AACR,SACE,OAAO;AACPC,OAAO,EACPC,QAAQ,EAQR,SAAS;AACTC,SAAS,EACTC,YAAY,QAOP,mBAAmB"}
1
+ {"version":3,"sources":["../../src/lib/index.ts"],"sourcesContent":["// ─────────────────────────────────────────────────────────────────────────────\n// Simplified API (Recommended)\n// ─────────────────────────────────────────────────────────────────────────────\nexport {\n SimpleBlocks23Provider,\n useSimpleBlocks23,\n useSimpleAuth,\n type SimpleBlocks23ProviderProps,\n type SimpleBlocks23Context,\n type AuthMode,\n type StorageType,\n type TokenManager,\n} from './simple-provider.js';\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Advanced API (Custom transport)\n// ─────────────────────────────────────────────────────────────────────────────\n// Context and Provider\nexport {\n Blocks23Provider,\n use23Blocks,\n useAuthenticationBlock,\n useSearchBlock,\n useProductsBlock,\n useCrmBlock,\n useContentBlock,\n useGeolocationBlock,\n useConversationsBlock,\n useFilesBlock,\n useFormsBlock,\n useAssetsBlock,\n useCampaignsBlock,\n useCompanyBlock,\n useRewardsBlock,\n useSalesBlock,\n useWalletBlock,\n useJarvisBlock,\n useOnboardingBlock,\n useUniversityBlock,\n type Blocks23ProviderProps,\n type Blocks23Context,\n} from './context.js';\n\n// Hooks\nexport {\n // Auth\n useAuth,\n useUsers,\n type UseAuthReturn,\n type UseAuthState,\n type UseAuthActions,\n type UseUsersReturn,\n type UseUsersState,\n type UseUsersActions,\n\n // Search\n useSearch,\n useFavorites,\n type UseSearchReturn,\n type UseSearchState,\n type UseSearchActions,\n type UseFavoritesReturn,\n type UseFavoritesState,\n type UseFavoritesActions,\n} from './hooks/index.js';\n"],"names":["SimpleBlocks23Provider","useSimpleBlocks23","useSimpleAuth","Blocks23Provider","use23Blocks","useAuthenticationBlock","useSearchBlock","useProductsBlock","useCrmBlock","useContentBlock","useGeolocationBlock","useConversationsBlock","useFilesBlock","useFormsBlock","useAssetsBlock","useCampaignsBlock","useCompanyBlock","useRewardsBlock","useSalesBlock","useWalletBlock","useJarvisBlock","useOnboardingBlock","useUniversityBlock","useAuth","useUsers","useSearch","useFavorites"],"rangeMappings":";;;;;;;;;;;;","mappings":"AAAA,gFAAgF;AAChF,+BAA+B;AAC/B,gFAAgF;AAChF,SACEA,sBAAsB,EACtBC,iBAAiB,EACjBC,aAAa,QAMR,uBAAuB;AAE9B,gFAAgF;AAChF,kCAAkC;AAClC,gFAAgF;AAChF,uBAAuB;AACvB,SACEC,gBAAgB,EAChBC,WAAW,EACXC,sBAAsB,EACtBC,cAAc,EACdC,gBAAgB,EAChBC,WAAW,EACXC,eAAe,EACfC,mBAAmB,EACnBC,qBAAqB,EACrBC,aAAa,EACbC,aAAa,EACbC,cAAc,EACdC,iBAAiB,EACjBC,eAAe,EACfC,eAAe,EACfC,aAAa,EACbC,cAAc,EACdC,cAAc,EACdC,kBAAkB,EAClBC,kBAAkB,QAGb,eAAe;AAEtB,QAAQ;AACR,SACE,OAAO;AACPC,OAAO,EACPC,QAAQ,EAQR,SAAS;AACTC,SAAS,EACTC,YAAY,QAOP,mBAAmB"}
@@ -0,0 +1,480 @@
1
+ import { _ as _extends } from "@swc/helpers/_/_extends";
2
+ import { createContext, useContext, useMemo, useCallback } from 'react';
3
+ import { createHttpTransport } from '@23blocks/transport-http';
4
+ import { createAuthenticationBlock } from '@23blocks/block-authentication';
5
+ import { createSearchBlock } from '@23blocks/block-search';
6
+ import { createProductsBlock } from '@23blocks/block-products';
7
+ import { createCrmBlock } from '@23blocks/block-crm';
8
+ import { createContentBlock } from '@23blocks/block-content';
9
+ import { createGeolocationBlock } from '@23blocks/block-geolocation';
10
+ import { createConversationsBlock } from '@23blocks/block-conversations';
11
+ import { createFilesBlock } from '@23blocks/block-files';
12
+ import { createFormsBlock } from '@23blocks/block-forms';
13
+ import { createAssetsBlock } from '@23blocks/block-assets';
14
+ import { createCampaignsBlock } from '@23blocks/block-campaigns';
15
+ import { createCompanyBlock } from '@23blocks/block-company';
16
+ import { createRewardsBlock } from '@23blocks/block-rewards';
17
+ import { createSalesBlock } from '@23blocks/block-sales';
18
+ import { createWalletBlock } from '@23blocks/block-wallet';
19
+ import { createJarvisBlock } from '@23blocks/block-jarvis';
20
+ import { createOnboardingBlock } from '@23blocks/block-onboarding';
21
+ import { createUniversityBlock } from '@23blocks/block-university';
22
+ // ─────────────────────────────────────────────────────────────────────────────
23
+ // Token Manager Implementation
24
+ // ─────────────────────────────────────────────────────────────────────────────
25
+ /**
26
+ * Generate storage key scoped to app and tenant
27
+ */ function getStorageKey(type, appId, tenantId) {
28
+ const scope = tenantId ? `${appId}_${tenantId}` : appId;
29
+ return `23blocks_${scope}_${type}_token`;
30
+ }
31
+ let MemoryStorage = class MemoryStorage {
32
+ getItem(key) {
33
+ var _this_data_get;
34
+ return (_this_data_get = this.data.get(key)) != null ? _this_data_get : null;
35
+ }
36
+ setItem(key, value) {
37
+ this.data.set(key, value);
38
+ }
39
+ removeItem(key) {
40
+ this.data.delete(key);
41
+ }
42
+ constructor(){
43
+ this.data = new Map();
44
+ }
45
+ };
46
+ function createTokenManager(appId, storageType, tenantId) {
47
+ const isBrowser = typeof window !== 'undefined' && typeof window.localStorage !== 'undefined';
48
+ const accessTokenKey = getStorageKey('access', appId, tenantId);
49
+ const refreshTokenKey = getStorageKey('refresh', appId, tenantId);
50
+ let storage;
51
+ if (!isBrowser) {
52
+ storage = new MemoryStorage();
53
+ } else {
54
+ switch(storageType){
55
+ case 'sessionStorage':
56
+ storage = window.sessionStorage;
57
+ break;
58
+ case 'memory':
59
+ storage = new MemoryStorage();
60
+ break;
61
+ default:
62
+ storage = window.localStorage;
63
+ }
64
+ }
65
+ return {
66
+ getAccessToken () {
67
+ try {
68
+ return storage.getItem(accessTokenKey);
69
+ } catch (e) {
70
+ return null;
71
+ }
72
+ },
73
+ getRefreshToken () {
74
+ try {
75
+ return storage.getItem(refreshTokenKey);
76
+ } catch (e) {
77
+ return null;
78
+ }
79
+ },
80
+ setTokens (accessToken, refreshToken) {
81
+ try {
82
+ storage.setItem(accessTokenKey, accessToken);
83
+ if (refreshToken) {
84
+ storage.setItem(refreshTokenKey, refreshToken);
85
+ }
86
+ } catch (e) {
87
+ console.warn('[23blocks] Unable to store tokens');
88
+ }
89
+ },
90
+ clearTokens () {
91
+ try {
92
+ storage.removeItem(accessTokenKey);
93
+ storage.removeItem(refreshTokenKey);
94
+ } catch (e) {
95
+ // Silently fail
96
+ }
97
+ },
98
+ onStorageChange (callback) {
99
+ // Only works in browser with localStorage/sessionStorage
100
+ if (!isBrowser || storageType === 'memory') {
101
+ // Return no-op unsubscribe for SSR/memory storage
102
+ return ()=>{};
103
+ }
104
+ const handler = (event)=>{
105
+ // Only trigger if our keys changed
106
+ if (event.key === accessTokenKey || event.key === refreshTokenKey) {
107
+ callback();
108
+ }
109
+ };
110
+ window.addEventListener('storage', handler);
111
+ // Return unsubscribe function
112
+ return ()=>{
113
+ window.removeEventListener('storage', handler);
114
+ };
115
+ }
116
+ };
117
+ }
118
+ // ─────────────────────────────────────────────────────────────────────────────
119
+ // Context
120
+ // ─────────────────────────────────────────────────────────────────────────────
121
+ const SimpleBlocks23ContextInternal = /*#__PURE__*/ createContext(null);
122
+ // ─────────────────────────────────────────────────────────────────────────────
123
+ // Provider Component
124
+ // ─────────────────────────────────────────────────────────────────────────────
125
+ /**
126
+ * Simplified provider component for 23blocks services.
127
+ *
128
+ * This is the recommended way to set up 23blocks in new React applications.
129
+ * It automatically handles token storage and authentication headers.
130
+ *
131
+ * @example Token mode (default)
132
+ * ```tsx
133
+ * import { SimpleBlocks23Provider } from '@23blocks/react';
134
+ *
135
+ * function App() {
136
+ * return (
137
+ * <SimpleBlocks23Provider
138
+ * baseUrl="https://api.yourapp.com"
139
+ * appId="your-app-id"
140
+ * >
141
+ * <MyApp />
142
+ * </SimpleBlocks23Provider>
143
+ * );
144
+ * }
145
+ * ```
146
+ *
147
+ * @example Cookie mode (recommended for security)
148
+ * ```tsx
149
+ * <SimpleBlocks23Provider
150
+ * baseUrl="https://api.yourapp.com"
151
+ * appId="your-app-id"
152
+ * authMode="cookie"
153
+ * >
154
+ * <MyApp />
155
+ * </SimpleBlocks23Provider>
156
+ * ```
157
+ */ export function SimpleBlocks23Provider({ children, baseUrl, appId, tenantId, authMode = 'token', storage = 'localStorage', headers: staticHeaders = {}, timeout }) {
158
+ // Create token manager (memoized) with scoped storage keys
159
+ const tokenManager = useMemo(()=>authMode === 'token' ? createTokenManager(appId, storage, tenantId) : null, [
160
+ authMode,
161
+ appId,
162
+ storage,
163
+ tenantId
164
+ ]);
165
+ // Create transport (memoized)
166
+ const transport = useMemo(()=>{
167
+ return createHttpTransport({
168
+ baseUrl,
169
+ timeout,
170
+ credentials: authMode === 'cookie' ? 'include' : undefined,
171
+ headers: ()=>{
172
+ const headers = _extends({}, staticHeaders, {
173
+ appid: appId
174
+ });
175
+ if (tenantId) {
176
+ headers['tenant-id'] = tenantId;
177
+ }
178
+ if (authMode === 'token' && tokenManager) {
179
+ const token = tokenManager.getAccessToken();
180
+ if (token) {
181
+ headers['Authorization'] = `Bearer ${token}`;
182
+ }
183
+ }
184
+ return headers;
185
+ }
186
+ });
187
+ }, [
188
+ baseUrl,
189
+ appId,
190
+ tenantId,
191
+ authMode,
192
+ storage,
193
+ staticHeaders,
194
+ timeout,
195
+ tokenManager
196
+ ]);
197
+ // Create blocks (memoized)
198
+ const blockConfig = useMemo(()=>({
199
+ appId,
200
+ tenantId
201
+ }), [
202
+ appId,
203
+ tenantId
204
+ ]);
205
+ const authentication = useMemo(()=>createAuthenticationBlock(transport, blockConfig), [
206
+ transport,
207
+ blockConfig
208
+ ]);
209
+ const search = useMemo(()=>createSearchBlock(transport, blockConfig), [
210
+ transport,
211
+ blockConfig
212
+ ]);
213
+ const products = useMemo(()=>createProductsBlock(transport, blockConfig), [
214
+ transport,
215
+ blockConfig
216
+ ]);
217
+ const crm = useMemo(()=>createCrmBlock(transport, blockConfig), [
218
+ transport,
219
+ blockConfig
220
+ ]);
221
+ const content = useMemo(()=>createContentBlock(transport, blockConfig), [
222
+ transport,
223
+ blockConfig
224
+ ]);
225
+ const geolocation = useMemo(()=>createGeolocationBlock(transport, blockConfig), [
226
+ transport,
227
+ blockConfig
228
+ ]);
229
+ const conversations = useMemo(()=>createConversationsBlock(transport, blockConfig), [
230
+ transport,
231
+ blockConfig
232
+ ]);
233
+ const files = useMemo(()=>createFilesBlock(transport, blockConfig), [
234
+ transport,
235
+ blockConfig
236
+ ]);
237
+ const forms = useMemo(()=>createFormsBlock(transport, blockConfig), [
238
+ transport,
239
+ blockConfig
240
+ ]);
241
+ const assets = useMemo(()=>createAssetsBlock(transport, blockConfig), [
242
+ transport,
243
+ blockConfig
244
+ ]);
245
+ const campaigns = useMemo(()=>createCampaignsBlock(transport, blockConfig), [
246
+ transport,
247
+ blockConfig
248
+ ]);
249
+ const company = useMemo(()=>createCompanyBlock(transport, blockConfig), [
250
+ transport,
251
+ blockConfig
252
+ ]);
253
+ const rewards = useMemo(()=>createRewardsBlock(transport, blockConfig), [
254
+ transport,
255
+ blockConfig
256
+ ]);
257
+ const sales = useMemo(()=>createSalesBlock(transport, blockConfig), [
258
+ transport,
259
+ blockConfig
260
+ ]);
261
+ const wallet = useMemo(()=>createWalletBlock(transport, blockConfig), [
262
+ transport,
263
+ blockConfig
264
+ ]);
265
+ const jarvis = useMemo(()=>createJarvisBlock(transport, blockConfig), [
266
+ transport,
267
+ blockConfig
268
+ ]);
269
+ const onboarding = useMemo(()=>createOnboardingBlock(transport, blockConfig), [
270
+ transport,
271
+ blockConfig
272
+ ]);
273
+ const university = useMemo(()=>createUniversityBlock(transport, blockConfig), [
274
+ transport,
275
+ blockConfig
276
+ ]);
277
+ // Auth methods with automatic token management
278
+ const signIn = useCallback(async (request)=>{
279
+ const response = await authentication.auth.signIn(request);
280
+ if (authMode === 'token' && tokenManager && response.accessToken) {
281
+ tokenManager.setTokens(response.accessToken, response.refreshToken);
282
+ }
283
+ return response;
284
+ }, [
285
+ authentication,
286
+ authMode,
287
+ tokenManager
288
+ ]);
289
+ const signUp = useCallback(async (request)=>{
290
+ const response = await authentication.auth.signUp(request);
291
+ if (authMode === 'token' && tokenManager && response.accessToken) {
292
+ tokenManager.setTokens(response.accessToken);
293
+ }
294
+ return response;
295
+ }, [
296
+ authentication,
297
+ authMode,
298
+ tokenManager
299
+ ]);
300
+ const signOut = useCallback(async ()=>{
301
+ await authentication.auth.signOut();
302
+ if (authMode === 'token' && tokenManager) {
303
+ tokenManager.clearTokens();
304
+ }
305
+ }, [
306
+ authentication,
307
+ authMode,
308
+ tokenManager
309
+ ]);
310
+ // Token utilities
311
+ const getAccessToken = useCallback(()=>{
312
+ var _tokenManager_getAccessToken;
313
+ return (_tokenManager_getAccessToken = tokenManager == null ? void 0 : tokenManager.getAccessToken()) != null ? _tokenManager_getAccessToken : null;
314
+ }, [
315
+ tokenManager
316
+ ]);
317
+ const getRefreshToken = useCallback(()=>{
318
+ var _tokenManager_getRefreshToken;
319
+ return (_tokenManager_getRefreshToken = tokenManager == null ? void 0 : tokenManager.getRefreshToken()) != null ? _tokenManager_getRefreshToken : null;
320
+ }, [
321
+ tokenManager
322
+ ]);
323
+ const setTokens = useCallback((accessToken, refreshToken)=>{
324
+ tokenManager == null ? void 0 : tokenManager.setTokens(accessToken, refreshToken);
325
+ }, [
326
+ tokenManager
327
+ ]);
328
+ const clearTokens = useCallback(()=>tokenManager == null ? void 0 : tokenManager.clearTokens(), [
329
+ tokenManager
330
+ ]);
331
+ const isAuthenticated = useCallback(()=>{
332
+ if (authMode === 'cookie') return null;
333
+ return tokenManager ? !!tokenManager.getAccessToken() : false;
334
+ }, [
335
+ authMode,
336
+ tokenManager
337
+ ]);
338
+ const onStorageChange = useCallback((callback)=>{
339
+ var _tokenManager_onStorageChange;
340
+ return (_tokenManager_onStorageChange = tokenManager == null ? void 0 : tokenManager.onStorageChange(callback)) != null ? _tokenManager_onStorageChange : ()=>{};
341
+ }, [
342
+ tokenManager
343
+ ]);
344
+ const value = useMemo(()=>({
345
+ // Blocks
346
+ authentication,
347
+ search,
348
+ products,
349
+ crm,
350
+ content,
351
+ geolocation,
352
+ conversations,
353
+ files,
354
+ forms,
355
+ assets,
356
+ campaigns,
357
+ company,
358
+ rewards,
359
+ sales,
360
+ wallet,
361
+ jarvis,
362
+ onboarding,
363
+ university,
364
+ // Auth with token management
365
+ signIn,
366
+ signUp,
367
+ signOut,
368
+ // Token utilities
369
+ getAccessToken,
370
+ getRefreshToken,
371
+ setTokens,
372
+ clearTokens,
373
+ isAuthenticated,
374
+ onStorageChange,
375
+ // Config
376
+ authMode
377
+ }), [
378
+ authentication,
379
+ search,
380
+ products,
381
+ crm,
382
+ content,
383
+ geolocation,
384
+ conversations,
385
+ files,
386
+ forms,
387
+ assets,
388
+ campaigns,
389
+ company,
390
+ rewards,
391
+ sales,
392
+ wallet,
393
+ jarvis,
394
+ onboarding,
395
+ university,
396
+ signIn,
397
+ signUp,
398
+ signOut,
399
+ getAccessToken,
400
+ getRefreshToken,
401
+ setTokens,
402
+ clearTokens,
403
+ isAuthenticated,
404
+ onStorageChange,
405
+ authMode
406
+ ]);
407
+ return /*#__PURE__*/ React.createElement(SimpleBlocks23ContextInternal.Provider, {
408
+ value: value
409
+ }, children);
410
+ }
411
+ // ─────────────────────────────────────────────────────────────────────────────
412
+ // Hooks
413
+ // ─────────────────────────────────────────────────────────────────────────────
414
+ /**
415
+ * Hook to access the 23blocks context with simplified API.
416
+ *
417
+ * @example
418
+ * ```tsx
419
+ * function LoginButton() {
420
+ * const { signIn, isAuthenticated, authentication } = useSimpleBlocks23();
421
+ *
422
+ * const handleLogin = async () => {
423
+ * const result = await signIn({ email: 'user@example.com', password: 'password' });
424
+ * console.log('Logged in:', result.user);
425
+ * };
426
+ *
427
+ * return (
428
+ * <button onClick={handleLogin}>
429
+ * {isAuthenticated() ? 'Logged In' : 'Log In'}
430
+ * </button>
431
+ * );
432
+ * }
433
+ * ```
434
+ */ export function useSimpleBlocks23() {
435
+ const context = useContext(SimpleBlocks23ContextInternal);
436
+ if (!context) {
437
+ throw new Error('useSimpleBlocks23 must be used within a SimpleBlocks23Provider');
438
+ }
439
+ return context;
440
+ }
441
+ /**
442
+ * Hook for authentication operations with automatic token management.
443
+ *
444
+ * @example
445
+ * ```tsx
446
+ * function AuthComponent() {
447
+ * const { signIn, signOut, isAuthenticated, authentication } = useSimpleAuth();
448
+ *
449
+ * const handleLogin = async () => {
450
+ * await signIn({ email: 'user@example.com', password: 'password' });
451
+ * };
452
+ *
453
+ * return (
454
+ * <div>
455
+ * {isAuthenticated() ? (
456
+ * <button onClick={signOut}>Sign Out</button>
457
+ * ) : (
458
+ * <button onClick={handleLogin}>Sign In</button>
459
+ * )}
460
+ * </div>
461
+ * );
462
+ * }
463
+ * ```
464
+ */ export function useSimpleAuth() {
465
+ const context = useSimpleBlocks23();
466
+ return {
467
+ signIn: context.signIn,
468
+ signUp: context.signUp,
469
+ signOut: context.signOut,
470
+ getAccessToken: context.getAccessToken,
471
+ getRefreshToken: context.getRefreshToken,
472
+ setTokens: context.setTokens,
473
+ clearTokens: context.clearTokens,
474
+ isAuthenticated: context.isAuthenticated,
475
+ onStorageChange: context.onStorageChange,
476
+ authentication: context.authentication
477
+ };
478
+ }
479
+
480
+ //# sourceMappingURL=simple-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/lib/simple-provider.tsx"],"sourcesContent":["import { createContext, useContext, useMemo, useCallback, type ReactNode } from 'react';\nimport { createHttpTransport } from '@23blocks/transport-http';\nimport type { Transport } from '@23blocks/contracts';\nimport { createAuthenticationBlock, type AuthenticationBlock, type SignInRequest, type SignInResponse, type SignUpRequest, type SignUpResponse } from '@23blocks/block-authentication';\nimport { createSearchBlock, type SearchBlock } from '@23blocks/block-search';\nimport { createProductsBlock, type ProductsBlock } from '@23blocks/block-products';\nimport { createCrmBlock, type CrmBlock } from '@23blocks/block-crm';\nimport { createContentBlock, type ContentBlock } from '@23blocks/block-content';\nimport { createGeolocationBlock, type GeolocationBlock } from '@23blocks/block-geolocation';\nimport { createConversationsBlock, type ConversationsBlock } from '@23blocks/block-conversations';\nimport { createFilesBlock, type FilesBlock } from '@23blocks/block-files';\nimport { createFormsBlock, type FormsBlock } from '@23blocks/block-forms';\nimport { createAssetsBlock, type AssetsBlock } from '@23blocks/block-assets';\nimport { createCampaignsBlock, type CampaignsBlock } from '@23blocks/block-campaigns';\nimport { createCompanyBlock, type CompanyBlock } from '@23blocks/block-company';\nimport { createRewardsBlock, type RewardsBlock } from '@23blocks/block-rewards';\nimport { createSalesBlock, type SalesBlock } from '@23blocks/block-sales';\nimport { createWalletBlock, type WalletBlock } from '@23blocks/block-wallet';\nimport { createJarvisBlock, type JarvisBlock } from '@23blocks/block-jarvis';\nimport { createOnboardingBlock, type OnboardingBlock } from '@23blocks/block-onboarding';\nimport { createUniversityBlock, type UniversityBlock } from '@23blocks/block-university';\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Types\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Authentication mode\n */\nexport type AuthMode = 'token' | 'cookie';\n\n/**\n * Storage type for token mode\n */\nexport type StorageType = 'localStorage' | 'sessionStorage' | 'memory';\n\n/**\n * Token manager interface\n */\nexport interface TokenManager {\n getAccessToken(): string | null;\n getRefreshToken(): string | null;\n setTokens(accessToken: string, refreshToken?: string): void;\n clearTokens(): void;\n /**\n * Subscribe to storage changes from other tabs/windows.\n * Returns an unsubscribe function.\n */\n onStorageChange(callback: () => void): () => void;\n}\n\n/**\n * Simplified provider props\n */\nexport interface SimpleBlocks23ProviderProps {\n children: ReactNode;\n\n /**\n * Base URL for the 23blocks API\n * @example 'https://api.yourapp.com'\n */\n baseUrl: string;\n\n /**\n * Application ID\n */\n appId: string;\n\n /**\n * Tenant ID (optional, for multi-tenant setups)\n */\n tenantId?: string;\n\n /**\n * Authentication mode\n * - 'token' (default): SDK stores tokens in localStorage/sessionStorage/memory\n * - 'cookie': Backend manages auth via httpOnly cookies\n */\n authMode?: AuthMode;\n\n /**\n * Storage type for token mode\n * @default 'localStorage'\n */\n storage?: StorageType;\n\n /**\n * Additional headers to include with every request\n */\n headers?: Record<string, string>;\n\n /**\n * Request timeout in milliseconds\n * @default 30000\n */\n timeout?: number;\n}\n\n/**\n * Context value for simplified provider\n */\nexport interface SimpleBlocks23Context {\n // Blocks\n authentication: AuthenticationBlock;\n search: SearchBlock;\n products: ProductsBlock;\n crm: CrmBlock;\n content: ContentBlock;\n geolocation: GeolocationBlock;\n conversations: ConversationsBlock;\n files: FilesBlock;\n forms: FormsBlock;\n assets: AssetsBlock;\n campaigns: CampaignsBlock;\n company: CompanyBlock;\n rewards: RewardsBlock;\n sales: SalesBlock;\n wallet: WalletBlock;\n jarvis: JarvisBlock;\n onboarding: OnboardingBlock;\n university: UniversityBlock;\n\n // Auth with automatic token management\n signIn: (request: SignInRequest) => Promise<SignInResponse>;\n signUp: (request: SignUpRequest) => Promise<SignUpResponse>;\n signOut: () => Promise<void>;\n\n // Token utilities\n getAccessToken: () => string | null;\n getRefreshToken: () => string | null;\n setTokens: (accessToken: string, refreshToken?: string) => void;\n clearTokens: () => void;\n isAuthenticated: () => boolean | null;\n /**\n * Subscribe to token changes from other tabs/windows.\n * Returns an unsubscribe function.\n */\n onStorageChange: (callback: () => void) => () => void;\n\n // Config info\n authMode: AuthMode;\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Token Manager Implementation\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Generate storage key scoped to app and tenant\n */\nfunction getStorageKey(type: 'access' | 'refresh', appId: string, tenantId?: string): string {\n const scope = tenantId ? `${appId}_${tenantId}` : appId;\n return `23blocks_${scope}_${type}_token`;\n}\n\nclass MemoryStorage {\n private data = new Map<string, string>();\n getItem(key: string): string | null {\n return this.data.get(key) ?? null;\n }\n setItem(key: string, value: string): void {\n this.data.set(key, value);\n }\n removeItem(key: string): void {\n this.data.delete(key);\n }\n}\n\nfunction createTokenManager(appId: string, storageType: StorageType, tenantId?: string): TokenManager {\n const isBrowser = typeof window !== 'undefined' && typeof window.localStorage !== 'undefined';\n\n const accessTokenKey = getStorageKey('access', appId, tenantId);\n const refreshTokenKey = getStorageKey('refresh', appId, tenantId);\n\n let storage: Storage | MemoryStorage;\n if (!isBrowser) {\n storage = new MemoryStorage();\n } else {\n switch (storageType) {\n case 'sessionStorage':\n storage = window.sessionStorage;\n break;\n case 'memory':\n storage = new MemoryStorage();\n break;\n default:\n storage = window.localStorage;\n }\n }\n\n return {\n getAccessToken(): string | null {\n try {\n return storage.getItem(accessTokenKey);\n } catch {\n return null;\n }\n },\n getRefreshToken(): string | null {\n try {\n return storage.getItem(refreshTokenKey);\n } catch {\n return null;\n }\n },\n setTokens(accessToken: string, refreshToken?: string): void {\n try {\n storage.setItem(accessTokenKey, accessToken);\n if (refreshToken) {\n storage.setItem(refreshTokenKey, refreshToken);\n }\n } catch {\n console.warn('[23blocks] Unable to store tokens');\n }\n },\n clearTokens(): void {\n try {\n storage.removeItem(accessTokenKey);\n storage.removeItem(refreshTokenKey);\n } catch {\n // Silently fail\n }\n },\n onStorageChange(callback: () => void): () => void {\n // Only works in browser with localStorage/sessionStorage\n if (!isBrowser || storageType === 'memory') {\n // Return no-op unsubscribe for SSR/memory storage\n return () => {};\n }\n\n const handler = (event: StorageEvent) => {\n // Only trigger if our keys changed\n if (event.key === accessTokenKey || event.key === refreshTokenKey) {\n callback();\n }\n };\n\n window.addEventListener('storage', handler);\n\n // Return unsubscribe function\n return () => {\n window.removeEventListener('storage', handler);\n };\n },\n };\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Context\n// ─────────────────────────────────────────────────────────────────────────────\n\nconst SimpleBlocks23ContextInternal = createContext<SimpleBlocks23Context | null>(null);\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Provider Component\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Simplified provider component for 23blocks services.\n *\n * This is the recommended way to set up 23blocks in new React applications.\n * It automatically handles token storage and authentication headers.\n *\n * @example Token mode (default)\n * ```tsx\n * import { SimpleBlocks23Provider } from '@23blocks/react';\n *\n * function App() {\n * return (\n * <SimpleBlocks23Provider\n * baseUrl=\"https://api.yourapp.com\"\n * appId=\"your-app-id\"\n * >\n * <MyApp />\n * </SimpleBlocks23Provider>\n * );\n * }\n * ```\n *\n * @example Cookie mode (recommended for security)\n * ```tsx\n * <SimpleBlocks23Provider\n * baseUrl=\"https://api.yourapp.com\"\n * appId=\"your-app-id\"\n * authMode=\"cookie\"\n * >\n * <MyApp />\n * </SimpleBlocks23Provider>\n * ```\n */\nexport function SimpleBlocks23Provider({\n children,\n baseUrl,\n appId,\n tenantId,\n authMode = 'token',\n storage = 'localStorage',\n headers: staticHeaders = {},\n timeout,\n}: SimpleBlocks23ProviderProps) {\n // Create token manager (memoized) with scoped storage keys\n const tokenManager = useMemo(\n () => (authMode === 'token' ? createTokenManager(appId, storage, tenantId) : null),\n [authMode, appId, storage, tenantId]\n );\n\n // Create transport (memoized)\n const transport = useMemo(() => {\n return createHttpTransport({\n baseUrl,\n timeout,\n credentials: authMode === 'cookie' ? 'include' : undefined,\n headers: () => {\n const headers: Record<string, string> = {\n ...staticHeaders,\n appid: appId,\n };\n\n if (tenantId) {\n headers['tenant-id'] = tenantId;\n }\n\n if (authMode === 'token' && tokenManager) {\n const token = tokenManager.getAccessToken();\n if (token) {\n headers['Authorization'] = `Bearer ${token}`;\n }\n }\n\n return headers;\n },\n });\n }, [baseUrl, appId, tenantId, authMode, storage, staticHeaders, timeout, tokenManager]);\n\n // Create blocks (memoized)\n const blockConfig = useMemo(() => ({ appId, tenantId }), [appId, tenantId]);\n\n const authentication = useMemo(() => createAuthenticationBlock(transport, blockConfig), [transport, blockConfig]);\n const search = useMemo(() => createSearchBlock(transport, blockConfig), [transport, blockConfig]);\n const products = useMemo(() => createProductsBlock(transport, blockConfig), [transport, blockConfig]);\n const crm = useMemo(() => createCrmBlock(transport, blockConfig), [transport, blockConfig]);\n const content = useMemo(() => createContentBlock(transport, blockConfig), [transport, blockConfig]);\n const geolocation = useMemo(() => createGeolocationBlock(transport, blockConfig), [transport, blockConfig]);\n const conversations = useMemo(() => createConversationsBlock(transport, blockConfig), [transport, blockConfig]);\n const files = useMemo(() => createFilesBlock(transport, blockConfig), [transport, blockConfig]);\n const forms = useMemo(() => createFormsBlock(transport, blockConfig), [transport, blockConfig]);\n const assets = useMemo(() => createAssetsBlock(transport, blockConfig), [transport, blockConfig]);\n const campaigns = useMemo(() => createCampaignsBlock(transport, blockConfig), [transport, blockConfig]);\n const company = useMemo(() => createCompanyBlock(transport, blockConfig), [transport, blockConfig]);\n const rewards = useMemo(() => createRewardsBlock(transport, blockConfig), [transport, blockConfig]);\n const sales = useMemo(() => createSalesBlock(transport, blockConfig), [transport, blockConfig]);\n const wallet = useMemo(() => createWalletBlock(transport, blockConfig), [transport, blockConfig]);\n const jarvis = useMemo(() => createJarvisBlock(transport, blockConfig), [transport, blockConfig]);\n const onboarding = useMemo(() => createOnboardingBlock(transport, blockConfig), [transport, blockConfig]);\n const university = useMemo(() => createUniversityBlock(transport, blockConfig), [transport, blockConfig]);\n\n // Auth methods with automatic token management\n const signIn = useCallback(async (request: SignInRequest): Promise<SignInResponse> => {\n const response = await authentication.auth.signIn(request);\n if (authMode === 'token' && tokenManager && response.accessToken) {\n tokenManager.setTokens(response.accessToken, response.refreshToken);\n }\n return response;\n }, [authentication, authMode, tokenManager]);\n\n const signUp = useCallback(async (request: SignUpRequest): Promise<SignUpResponse> => {\n const response = await authentication.auth.signUp(request);\n if (authMode === 'token' && tokenManager && response.accessToken) {\n tokenManager.setTokens(response.accessToken);\n }\n return response;\n }, [authentication, authMode, tokenManager]);\n\n const signOut = useCallback(async (): Promise<void> => {\n await authentication.auth.signOut();\n if (authMode === 'token' && tokenManager) {\n tokenManager.clearTokens();\n }\n }, [authentication, authMode, tokenManager]);\n\n // Token utilities\n const getAccessToken = useCallback(() => tokenManager?.getAccessToken() ?? null, [tokenManager]);\n const getRefreshToken = useCallback(() => tokenManager?.getRefreshToken() ?? null, [tokenManager]);\n const setTokens = useCallback((accessToken: string, refreshToken?: string) => {\n tokenManager?.setTokens(accessToken, refreshToken);\n }, [tokenManager]);\n const clearTokens = useCallback(() => tokenManager?.clearTokens(), [tokenManager]);\n const isAuthenticated = useCallback((): boolean | null => {\n if (authMode === 'cookie') return null;\n return tokenManager ? !!tokenManager.getAccessToken() : false;\n }, [authMode, tokenManager]);\n const onStorageChange = useCallback((callback: () => void): (() => void) => {\n return tokenManager?.onStorageChange(callback) ?? (() => {});\n }, [tokenManager]);\n\n const value = useMemo<SimpleBlocks23Context>(() => ({\n // Blocks\n authentication,\n search,\n products,\n crm,\n content,\n geolocation,\n conversations,\n files,\n forms,\n assets,\n campaigns,\n company,\n rewards,\n sales,\n wallet,\n jarvis,\n onboarding,\n university,\n\n // Auth with token management\n signIn,\n signUp,\n signOut,\n\n // Token utilities\n getAccessToken,\n getRefreshToken,\n setTokens,\n clearTokens,\n isAuthenticated,\n onStorageChange,\n\n // Config\n authMode,\n }), [\n authentication, search, products, crm, content, geolocation, conversations,\n files, forms, assets, campaigns, company, rewards, sales, wallet, jarvis,\n onboarding, university, signIn, signUp, signOut, getAccessToken, getRefreshToken,\n setTokens, clearTokens, isAuthenticated, onStorageChange, authMode,\n ]);\n\n return (\n <SimpleBlocks23ContextInternal.Provider value={value}>\n {children}\n </SimpleBlocks23ContextInternal.Provider>\n );\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Hooks\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Hook to access the 23blocks context with simplified API.\n *\n * @example\n * ```tsx\n * function LoginButton() {\n * const { signIn, isAuthenticated, authentication } = useSimpleBlocks23();\n *\n * const handleLogin = async () => {\n * const result = await signIn({ email: 'user@example.com', password: 'password' });\n * console.log('Logged in:', result.user);\n * };\n *\n * return (\n * <button onClick={handleLogin}>\n * {isAuthenticated() ? 'Logged In' : 'Log In'}\n * </button>\n * );\n * }\n * ```\n */\nexport function useSimpleBlocks23(): SimpleBlocks23Context {\n const context = useContext(SimpleBlocks23ContextInternal);\n if (!context) {\n throw new Error('useSimpleBlocks23 must be used within a SimpleBlocks23Provider');\n }\n return context;\n}\n\n/**\n * Hook for authentication operations with automatic token management.\n *\n * @example\n * ```tsx\n * function AuthComponent() {\n * const { signIn, signOut, isAuthenticated, authentication } = useSimpleAuth();\n *\n * const handleLogin = async () => {\n * await signIn({ email: 'user@example.com', password: 'password' });\n * };\n *\n * return (\n * <div>\n * {isAuthenticated() ? (\n * <button onClick={signOut}>Sign Out</button>\n * ) : (\n * <button onClick={handleLogin}>Sign In</button>\n * )}\n * </div>\n * );\n * }\n * ```\n */\nexport function useSimpleAuth() {\n const context = useSimpleBlocks23();\n return {\n signIn: context.signIn,\n signUp: context.signUp,\n signOut: context.signOut,\n getAccessToken: context.getAccessToken,\n getRefreshToken: context.getRefreshToken,\n setTokens: context.setTokens,\n clearTokens: context.clearTokens,\n isAuthenticated: context.isAuthenticated,\n onStorageChange: context.onStorageChange,\n authentication: context.authentication,\n };\n}\n"],"names":["createContext","useContext","useMemo","useCallback","createHttpTransport","createAuthenticationBlock","createSearchBlock","createProductsBlock","createCrmBlock","createContentBlock","createGeolocationBlock","createConversationsBlock","createFilesBlock","createFormsBlock","createAssetsBlock","createCampaignsBlock","createCompanyBlock","createRewardsBlock","createSalesBlock","createWalletBlock","createJarvisBlock","createOnboardingBlock","createUniversityBlock","getStorageKey","type","appId","tenantId","scope","MemoryStorage","getItem","key","data","get","setItem","value","set","removeItem","delete","Map","createTokenManager","storageType","isBrowser","window","localStorage","accessTokenKey","refreshTokenKey","storage","sessionStorage","getAccessToken","getRefreshToken","setTokens","accessToken","refreshToken","console","warn","clearTokens","onStorageChange","callback","handler","event","addEventListener","removeEventListener","SimpleBlocks23ContextInternal","SimpleBlocks23Provider","children","baseUrl","authMode","headers","staticHeaders","timeout","tokenManager","transport","credentials","undefined","appid","token","blockConfig","authentication","search","products","crm","content","geolocation","conversations","files","forms","assets","campaigns","company","rewards","sales","wallet","jarvis","onboarding","university","signIn","request","response","auth","signUp","signOut","isAuthenticated","Provider","useSimpleBlocks23","context","Error","useSimpleAuth"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@23blocks/react",
3
- "version": "0.2.1",
3
+ "version": "1.0.0",
4
4
  "description": "React bindings for 23blocks SDK - hooks and context providers",
5
5
  "license": "MIT",
6
6
  "author": "23blocks <hello@23blocks.com>",
@@ -57,6 +57,7 @@
57
57
  },
58
58
  "dependencies": {
59
59
  "@23blocks/contracts": "*",
60
+ "@23blocks/transport-http": "*",
60
61
  "@23blocks/block-authentication": "*",
61
62
  "@23blocks/block-search": "*",
62
63
  "@23blocks/block-products": "*",