@23blocks/react 0.1.0 → 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/context.js +141 -21
- package/dist/lib/context.js.map +1 -1
- package/dist/lib/index.js +8 -1
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/simple-provider.js +480 -0
- package/dist/lib/simple-provider.js.map +1 -0
- package/package.json +18 -1
package/dist/lib/context.js
CHANGED
|
@@ -1,6 +1,22 @@
|
|
|
1
1
|
import { createContext, useContext, useMemo } from 'react';
|
|
2
2
|
import { createAuthenticationBlock } from '@23blocks/block-authentication';
|
|
3
3
|
import { createSearchBlock } from '@23blocks/block-search';
|
|
4
|
+
import { createProductsBlock } from '@23blocks/block-products';
|
|
5
|
+
import { createCrmBlock } from '@23blocks/block-crm';
|
|
6
|
+
import { createContentBlock } from '@23blocks/block-content';
|
|
7
|
+
import { createGeolocationBlock } from '@23blocks/block-geolocation';
|
|
8
|
+
import { createConversationsBlock } from '@23blocks/block-conversations';
|
|
9
|
+
import { createFilesBlock } from '@23blocks/block-files';
|
|
10
|
+
import { createFormsBlock } from '@23blocks/block-forms';
|
|
11
|
+
import { createAssetsBlock } from '@23blocks/block-assets';
|
|
12
|
+
import { createCampaignsBlock } from '@23blocks/block-campaigns';
|
|
13
|
+
import { createCompanyBlock } from '@23blocks/block-company';
|
|
14
|
+
import { createRewardsBlock } from '@23blocks/block-rewards';
|
|
15
|
+
import { createSalesBlock } from '@23blocks/block-sales';
|
|
16
|
+
import { createWalletBlock } from '@23blocks/block-wallet';
|
|
17
|
+
import { createJarvisBlock } from '@23blocks/block-jarvis';
|
|
18
|
+
import { createOnboardingBlock } from '@23blocks/block-onboarding';
|
|
19
|
+
import { createUniversityBlock } from '@23blocks/block-university';
|
|
4
20
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
5
21
|
// Context
|
|
6
22
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
@@ -29,21 +45,55 @@ const Blocks23ContextInternal = /*#__PURE__*/ createContext(null);
|
|
|
29
45
|
* transport={transport}
|
|
30
46
|
* authentication={{ appId: 'my-app' }}
|
|
31
47
|
* search={{ appId: 'my-app' }}
|
|
48
|
+
* products={{ appId: 'my-app' }}
|
|
49
|
+
* crm={{ appId: 'my-app' }}
|
|
32
50
|
* >
|
|
33
51
|
* <MyApp />
|
|
34
52
|
* </Blocks23Provider>
|
|
35
53
|
* );
|
|
36
54
|
* }
|
|
37
55
|
* ```
|
|
38
|
-
*/ export function Blocks23Provider({ children, transport, authentication, search }) {
|
|
56
|
+
*/ export function Blocks23Provider({ children, transport, authentication, search, products, crm, content, geolocation, conversations, files, forms, assets, campaigns, company, rewards, sales, wallet, jarvis, onboarding, university }) {
|
|
39
57
|
const value = useMemo(()=>({
|
|
40
58
|
transport,
|
|
41
59
|
authentication: authentication ? createAuthenticationBlock(transport, authentication) : null,
|
|
42
|
-
search: search ? createSearchBlock(transport, search) : null
|
|
60
|
+
search: search ? createSearchBlock(transport, search) : null,
|
|
61
|
+
products: products ? createProductsBlock(transport, products) : null,
|
|
62
|
+
crm: crm ? createCrmBlock(transport, crm) : null,
|
|
63
|
+
content: content ? createContentBlock(transport, content) : null,
|
|
64
|
+
geolocation: geolocation ? createGeolocationBlock(transport, geolocation) : null,
|
|
65
|
+
conversations: conversations ? createConversationsBlock(transport, conversations) : null,
|
|
66
|
+
files: files ? createFilesBlock(transport, files) : null,
|
|
67
|
+
forms: forms ? createFormsBlock(transport, forms) : null,
|
|
68
|
+
assets: assets ? createAssetsBlock(transport, assets) : null,
|
|
69
|
+
campaigns: campaigns ? createCampaignsBlock(transport, campaigns) : null,
|
|
70
|
+
company: company ? createCompanyBlock(transport, company) : null,
|
|
71
|
+
rewards: rewards ? createRewardsBlock(transport, rewards) : null,
|
|
72
|
+
sales: sales ? createSalesBlock(transport, sales) : null,
|
|
73
|
+
wallet: wallet ? createWalletBlock(transport, wallet) : null,
|
|
74
|
+
jarvis: jarvis ? createJarvisBlock(transport, jarvis) : null,
|
|
75
|
+
onboarding: onboarding ? createOnboardingBlock(transport, onboarding) : null,
|
|
76
|
+
university: university ? createUniversityBlock(transport, university) : null
|
|
43
77
|
}), [
|
|
44
78
|
transport,
|
|
45
79
|
authentication,
|
|
46
|
-
search
|
|
80
|
+
search,
|
|
81
|
+
products,
|
|
82
|
+
crm,
|
|
83
|
+
content,
|
|
84
|
+
geolocation,
|
|
85
|
+
conversations,
|
|
86
|
+
files,
|
|
87
|
+
forms,
|
|
88
|
+
assets,
|
|
89
|
+
campaigns,
|
|
90
|
+
company,
|
|
91
|
+
rewards,
|
|
92
|
+
sales,
|
|
93
|
+
wallet,
|
|
94
|
+
jarvis,
|
|
95
|
+
onboarding,
|
|
96
|
+
university
|
|
47
97
|
]);
|
|
48
98
|
return /*#__PURE__*/ React.createElement(Blocks23ContextInternal.Provider, {
|
|
49
99
|
value: value
|
|
@@ -52,35 +102,105 @@ const Blocks23ContextInternal = /*#__PURE__*/ createContext(null);
|
|
|
52
102
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
53
103
|
// Context Hook
|
|
54
104
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
55
|
-
|
|
56
|
-
* Hook to access the 23blocks context.
|
|
57
|
-
* Use this for low-level access to blocks.
|
|
58
|
-
*/ export function use23Blocks() {
|
|
105
|
+
export function use23Blocks() {
|
|
59
106
|
const context = useContext(Blocks23ContextInternal);
|
|
60
107
|
if (!context) {
|
|
61
108
|
throw new Error('use23Blocks must be used within a Blocks23Provider');
|
|
62
109
|
}
|
|
63
110
|
return context;
|
|
64
111
|
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
112
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
113
|
+
// Block-specific hooks
|
|
114
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
115
|
+
export function useAuthenticationBlock() {
|
|
69
116
|
const { authentication } = use23Blocks();
|
|
70
|
-
if (!authentication)
|
|
71
|
-
throw new Error('Authentication block not configured. Pass `authentication` prop to Blocks23Provider.');
|
|
72
|
-
}
|
|
117
|
+
if (!authentication) throw new Error('Authentication block not configured. Pass `authentication` prop to Blocks23Provider.');
|
|
73
118
|
return authentication;
|
|
74
119
|
}
|
|
75
|
-
|
|
76
|
-
* Hook to access the Search block.
|
|
77
|
-
* Throws if search was not configured in the provider.
|
|
78
|
-
*/ export function useSearchBlock() {
|
|
120
|
+
export function useSearchBlock() {
|
|
79
121
|
const { search } = use23Blocks();
|
|
80
|
-
if (!search)
|
|
81
|
-
throw new Error('Search block not configured. Pass `search` prop to Blocks23Provider.');
|
|
82
|
-
}
|
|
122
|
+
if (!search) throw new Error('Search block not configured. Pass `search` prop to Blocks23Provider.');
|
|
83
123
|
return search;
|
|
84
124
|
}
|
|
125
|
+
export function useProductsBlock() {
|
|
126
|
+
const { products } = use23Blocks();
|
|
127
|
+
if (!products) throw new Error('Products block not configured. Pass `products` prop to Blocks23Provider.');
|
|
128
|
+
return products;
|
|
129
|
+
}
|
|
130
|
+
export function useCrmBlock() {
|
|
131
|
+
const { crm } = use23Blocks();
|
|
132
|
+
if (!crm) throw new Error('CRM block not configured. Pass `crm` prop to Blocks23Provider.');
|
|
133
|
+
return crm;
|
|
134
|
+
}
|
|
135
|
+
export function useContentBlock() {
|
|
136
|
+
const { content } = use23Blocks();
|
|
137
|
+
if (!content) throw new Error('Content block not configured. Pass `content` prop to Blocks23Provider.');
|
|
138
|
+
return content;
|
|
139
|
+
}
|
|
140
|
+
export function useGeolocationBlock() {
|
|
141
|
+
const { geolocation } = use23Blocks();
|
|
142
|
+
if (!geolocation) throw new Error('Geolocation block not configured. Pass `geolocation` prop to Blocks23Provider.');
|
|
143
|
+
return geolocation;
|
|
144
|
+
}
|
|
145
|
+
export function useConversationsBlock() {
|
|
146
|
+
const { conversations } = use23Blocks();
|
|
147
|
+
if (!conversations) throw new Error('Conversations block not configured. Pass `conversations` prop to Blocks23Provider.');
|
|
148
|
+
return conversations;
|
|
149
|
+
}
|
|
150
|
+
export function useFilesBlock() {
|
|
151
|
+
const { files } = use23Blocks();
|
|
152
|
+
if (!files) throw new Error('Files block not configured. Pass `files` prop to Blocks23Provider.');
|
|
153
|
+
return files;
|
|
154
|
+
}
|
|
155
|
+
export function useFormsBlock() {
|
|
156
|
+
const { forms } = use23Blocks();
|
|
157
|
+
if (!forms) throw new Error('Forms block not configured. Pass `forms` prop to Blocks23Provider.');
|
|
158
|
+
return forms;
|
|
159
|
+
}
|
|
160
|
+
export function useAssetsBlock() {
|
|
161
|
+
const { assets } = use23Blocks();
|
|
162
|
+
if (!assets) throw new Error('Assets block not configured. Pass `assets` prop to Blocks23Provider.');
|
|
163
|
+
return assets;
|
|
164
|
+
}
|
|
165
|
+
export function useCampaignsBlock() {
|
|
166
|
+
const { campaigns } = use23Blocks();
|
|
167
|
+
if (!campaigns) throw new Error('Campaigns block not configured. Pass `campaigns` prop to Blocks23Provider.');
|
|
168
|
+
return campaigns;
|
|
169
|
+
}
|
|
170
|
+
export function useCompanyBlock() {
|
|
171
|
+
const { company } = use23Blocks();
|
|
172
|
+
if (!company) throw new Error('Company block not configured. Pass `company` prop to Blocks23Provider.');
|
|
173
|
+
return company;
|
|
174
|
+
}
|
|
175
|
+
export function useRewardsBlock() {
|
|
176
|
+
const { rewards } = use23Blocks();
|
|
177
|
+
if (!rewards) throw new Error('Rewards block not configured. Pass `rewards` prop to Blocks23Provider.');
|
|
178
|
+
return rewards;
|
|
179
|
+
}
|
|
180
|
+
export function useSalesBlock() {
|
|
181
|
+
const { sales } = use23Blocks();
|
|
182
|
+
if (!sales) throw new Error('Sales block not configured. Pass `sales` prop to Blocks23Provider.');
|
|
183
|
+
return sales;
|
|
184
|
+
}
|
|
185
|
+
export function useWalletBlock() {
|
|
186
|
+
const { wallet } = use23Blocks();
|
|
187
|
+
if (!wallet) throw new Error('Wallet block not configured. Pass `wallet` prop to Blocks23Provider.');
|
|
188
|
+
return wallet;
|
|
189
|
+
}
|
|
190
|
+
export function useJarvisBlock() {
|
|
191
|
+
const { jarvis } = use23Blocks();
|
|
192
|
+
if (!jarvis) throw new Error('Jarvis block not configured. Pass `jarvis` prop to Blocks23Provider.');
|
|
193
|
+
return jarvis;
|
|
194
|
+
}
|
|
195
|
+
export function useOnboardingBlock() {
|
|
196
|
+
const { onboarding } = use23Blocks();
|
|
197
|
+
if (!onboarding) throw new Error('Onboarding block not configured. Pass `onboarding` prop to Blocks23Provider.');
|
|
198
|
+
return onboarding;
|
|
199
|
+
}
|
|
200
|
+
export function useUniversityBlock() {
|
|
201
|
+
const { university } = use23Blocks();
|
|
202
|
+
if (!university) throw new Error('University block not configured. Pass `university` prop to Blocks23Provider.');
|
|
203
|
+
return university;
|
|
204
|
+
}
|
|
85
205
|
|
|
86
206
|
//# sourceMappingURL=context.js.map
|
package/dist/lib/context.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/lib/context.tsx"],"sourcesContent":["import { createContext, useContext, useMemo, type ReactNode } from 'react';\nimport type { Transport } from '@23blocks/contracts';\nimport {\n createAuthenticationBlock,\n type AuthenticationBlock,\n type AuthenticationBlockConfig,\n} from '@23blocks/block-authentication';\nimport {\n createSearchBlock,\n type SearchBlock,\n type SearchBlockConfig,\n} from '@23blocks/block-search';\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Context Types\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport interface Blocks23Context {\n transport: Transport;\n authentication: AuthenticationBlock | null;\n search: SearchBlock | null;\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Context\n// ─────────────────────────────────────────────────────────────────────────────\n\nconst Blocks23ContextInternal = createContext<Blocks23Context | null>(null);\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Provider Props\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport interface Blocks23ProviderProps {\n children: ReactNode;\n\n /**\n * The transport instance (e.g., from createHttpTransport)\n */\n transport: Transport;\n\n /**\n * Authentication block configuration (optional)\n */\n authentication?: AuthenticationBlockConfig;\n\n /**\n * Search block configuration (optional)\n */\n search?: SearchBlockConfig;\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Provider Component\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Provider component for 23blocks services.\n *\n * @example\n * ```tsx\n * import { Blocks23Provider } from '@23blocks/react';\n * import { createHttpTransport } from '@23blocks/transport-http';\n *\n * const transport = createHttpTransport({\n * baseUrl: 'https://api.example.com',\n * headers: () => ({\n * 'Authorization': `Bearer ${localStorage.getItem('token')}`,\n * }),\n * });\n *\n * function App() {\n * return (\n * <Blocks23Provider\n * transport={transport}\n * authentication={{ appId: 'my-app' }}\n * search={{ appId: 'my-app' }}\n * >\n * <MyApp />\n * </Blocks23Provider>\n * );\n * }\n * ```\n */\nexport function Blocks23Provider({\n children,\n transport,\n authentication,\n search,\n}: Blocks23ProviderProps) {\n const value = useMemo<Blocks23Context>(() => ({\n transport,\n authentication: authentication\n ? createAuthenticationBlock(transport, authentication)\n : null,\n search: search\n ? createSearchBlock(transport, search)\n : null,\n }), [transport, authentication, search]);\n\n return (\n <Blocks23ContextInternal.Provider value={value}>\n {children}\n </Blocks23ContextInternal.Provider>\n );\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Context Hook\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Hook to access the 23blocks context.\n * Use this for low-level access to blocks.\n */\nexport function use23Blocks(): Blocks23Context {\n const context = useContext(Blocks23ContextInternal);\n if (!context) {\n throw new Error('use23Blocks must be used within a Blocks23Provider');\n }\n return context;\n}\n\n/**\n * Hook to access the Authentication block.\n * Throws if authentication was not configured in the provider.\n */\nexport function useAuthenticationBlock(): AuthenticationBlock {\n const { authentication } = use23Blocks();\n if (!authentication) {\n throw new Error(\n 'Authentication block not configured. Pass `authentication` prop to Blocks23Provider.'\n );\n }\n return authentication;\n}\n\n/**\n * Hook to access the Search block.\n * Throws if search was not configured in the provider.\n */\nexport function useSearchBlock(): SearchBlock {\n const { search } = use23Blocks();\n if (!search) {\n throw new Error(\n 'Search block not configured. Pass `search` prop to Blocks23Provider.'\n );\n }\n return search;\n}\n"],"names":["createContext","useContext","useMemo","createAuthenticationBlock","createSearchBlock","Blocks23ContextInternal","Blocks23Provider","children","transport","authentication","search","value","Provider","use23Blocks","context","Error","useAuthenticationBlock","useSearchBlock"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,aAAa,EAAEC,UAAU,EAAEC,OAAO,QAAwB,QAAQ;AAE3E,SACEC,yBAAyB,QAGpB,iCAAiC;AACxC,SACEC,iBAAiB,QAGZ,yBAAyB;AAYhC,gFAAgF;AAChF,UAAU;AACV,gFAAgF;AAEhF,MAAMC,wCAA0BL,cAAsC;AAyBtE,gFAAgF;AAChF,qBAAqB;AACrB,gFAAgF;AAEhF;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2BC,GACD,OAAO,SAASM,iBAAiB,EAC/BC,QAAQ,EACRC,SAAS,EACTC,cAAc,EACdC,MAAM,EACgB;IACtB,MAAMC,QAAQT,QAAyB,IAAO,CAAA;YAC5CM;YACAC,gBAAgBA,iBACZN,0BAA0BK,WAAWC,kBACrC;YACJC,QAAQA,SACJN,kBAAkBI,WAAWE,UAC7B;QACN,CAAA,GAAI;QAACF;QAAWC;QAAgBC;KAAO;IAEvC,qBACE,oBAACL,wBAAwBO,QAAQ;QAACD,OAAOA;OACtCJ;AAGP;AAEA,gFAAgF;AAChF,eAAe;AACf,gFAAgF;AAEhF;;;CAGC,GACD,OAAO,SAASM;IACd,MAAMC,UAAUb,WAAWI;IAC3B,IAAI,CAACS,SAAS;QACZ,MAAM,IAAIC,MAAM;IAClB;IACA,OAAOD;AACT;AAEA;;;CAGC,GACD,OAAO,SAASE;IACd,MAAM,EAAEP,cAAc,EAAE,GAAGI;IAC3B,IAAI,CAACJ,gBAAgB;QACnB,MAAM,IAAIM,MACR;IAEJ;IACA,OAAON;AACT;AAEA;;;CAGC,GACD,OAAO,SAASQ;IACd,MAAM,EAAEP,MAAM,EAAE,GAAGG;IACnB,IAAI,CAACH,QAAQ;QACX,MAAM,IAAIK,MACR;IAEJ;IACA,OAAOL;AACT"}
|
|
1
|
+
{"version":3,"sources":["../../src/lib/context.tsx"],"sourcesContent":["import { createContext, useContext, useMemo, type ReactNode } from 'react';\nimport type { Transport, BlockConfig } from '@23blocks/contracts';\nimport { createAuthenticationBlock, type AuthenticationBlock, type AuthenticationBlockConfig } from '@23blocks/block-authentication';\nimport { createSearchBlock, type SearchBlock, type SearchBlockConfig } from '@23blocks/block-search';\nimport { createProductsBlock, type ProductsBlock, type ProductsBlockConfig } from '@23blocks/block-products';\nimport { createCrmBlock, type CrmBlock, type CrmBlockConfig } from '@23blocks/block-crm';\nimport { createContentBlock, type ContentBlock, type ContentBlockConfig } from '@23blocks/block-content';\nimport { createGeolocationBlock, type GeolocationBlock, type GeolocationBlockConfig } from '@23blocks/block-geolocation';\nimport { createConversationsBlock, type ConversationsBlock, type ConversationsBlockConfig } from '@23blocks/block-conversations';\nimport { createFilesBlock, type FilesBlock, type FilesBlockConfig } from '@23blocks/block-files';\nimport { createFormsBlock, type FormsBlock, type FormsBlockConfig } from '@23blocks/block-forms';\nimport { createAssetsBlock, type AssetsBlock, type AssetsBlockConfig } from '@23blocks/block-assets';\nimport { createCampaignsBlock, type CampaignsBlock, type CampaignsBlockConfig } from '@23blocks/block-campaigns';\nimport { createCompanyBlock, type CompanyBlock, type CompanyBlockConfig } from '@23blocks/block-company';\nimport { createRewardsBlock, type RewardsBlock, type RewardsBlockConfig } from '@23blocks/block-rewards';\nimport { createSalesBlock, type SalesBlock, type SalesBlockConfig } from '@23blocks/block-sales';\nimport { createWalletBlock, type WalletBlock, type WalletBlockConfig } from '@23blocks/block-wallet';\nimport { createJarvisBlock, type JarvisBlock, type JarvisBlockConfig } from '@23blocks/block-jarvis';\nimport { createOnboardingBlock, type OnboardingBlock, type OnboardingBlockConfig } from '@23blocks/block-onboarding';\nimport { createUniversityBlock, type UniversityBlock, type UniversityBlockConfig } from '@23blocks/block-university';\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Context Types\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport interface Blocks23Context {\n transport: Transport;\n authentication: AuthenticationBlock | null;\n search: SearchBlock | null;\n products: ProductsBlock | null;\n crm: CrmBlock | null;\n content: ContentBlock | null;\n geolocation: GeolocationBlock | null;\n conversations: ConversationsBlock | null;\n files: FilesBlock | null;\n forms: FormsBlock | null;\n assets: AssetsBlock | null;\n campaigns: CampaignsBlock | null;\n company: CompanyBlock | null;\n rewards: RewardsBlock | null;\n sales: SalesBlock | null;\n wallet: WalletBlock | null;\n jarvis: JarvisBlock | null;\n onboarding: OnboardingBlock | null;\n university: UniversityBlock | null;\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Context\n// ─────────────────────────────────────────────────────────────────────────────\n\nconst Blocks23ContextInternal = createContext<Blocks23Context | null>(null);\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Provider Props\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport interface Blocks23ProviderProps {\n children: ReactNode;\n transport: Transport;\n authentication?: AuthenticationBlockConfig;\n search?: SearchBlockConfig;\n products?: ProductsBlockConfig;\n crm?: CrmBlockConfig;\n content?: ContentBlockConfig;\n geolocation?: GeolocationBlockConfig;\n conversations?: ConversationsBlockConfig;\n files?: FilesBlockConfig;\n forms?: FormsBlockConfig;\n assets?: AssetsBlockConfig;\n campaigns?: CampaignsBlockConfig;\n company?: CompanyBlockConfig;\n rewards?: RewardsBlockConfig;\n sales?: SalesBlockConfig;\n wallet?: WalletBlockConfig;\n jarvis?: JarvisBlockConfig;\n onboarding?: OnboardingBlockConfig;\n university?: UniversityBlockConfig;\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Provider Component\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Provider component for 23blocks services.\n *\n * @example\n * ```tsx\n * import { Blocks23Provider } from '@23blocks/react';\n * import { createHttpTransport } from '@23blocks/transport-http';\n *\n * const transport = createHttpTransport({\n * baseUrl: 'https://api.example.com',\n * headers: () => ({\n * 'Authorization': `Bearer ${localStorage.getItem('token')}`,\n * }),\n * });\n *\n * function App() {\n * return (\n * <Blocks23Provider\n * transport={transport}\n * authentication={{ appId: 'my-app' }}\n * search={{ appId: 'my-app' }}\n * products={{ appId: 'my-app' }}\n * crm={{ appId: 'my-app' }}\n * >\n * <MyApp />\n * </Blocks23Provider>\n * );\n * }\n * ```\n */\nexport function Blocks23Provider({\n children,\n transport,\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}: Blocks23ProviderProps) {\n const value = useMemo<Blocks23Context>(() => ({\n transport,\n authentication: authentication ? createAuthenticationBlock(transport, authentication) : null,\n search: search ? createSearchBlock(transport, search) : null,\n products: products ? createProductsBlock(transport, products) : null,\n crm: crm ? createCrmBlock(transport, crm) : null,\n content: content ? createContentBlock(transport, content) : null,\n geolocation: geolocation ? createGeolocationBlock(transport, geolocation) : null,\n conversations: conversations ? createConversationsBlock(transport, conversations) : null,\n files: files ? createFilesBlock(transport, files) : null,\n forms: forms ? createFormsBlock(transport, forms) : null,\n assets: assets ? createAssetsBlock(transport, assets) : null,\n campaigns: campaigns ? createCampaignsBlock(transport, campaigns) : null,\n company: company ? createCompanyBlock(transport, company) : null,\n rewards: rewards ? createRewardsBlock(transport, rewards) : null,\n sales: sales ? createSalesBlock(transport, sales) : null,\n wallet: wallet ? createWalletBlock(transport, wallet) : null,\n jarvis: jarvis ? createJarvisBlock(transport, jarvis) : null,\n onboarding: onboarding ? createOnboardingBlock(transport, onboarding) : null,\n university: university ? createUniversityBlock(transport, university) : null,\n }), [transport, authentication, search, products, crm, content, geolocation, conversations, files, forms, assets, campaigns, company, rewards, sales, wallet, jarvis, onboarding, university]);\n\n return (\n <Blocks23ContextInternal.Provider value={value}>\n {children}\n </Blocks23ContextInternal.Provider>\n );\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Context Hook\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport function use23Blocks(): Blocks23Context {\n const context = useContext(Blocks23ContextInternal);\n if (!context) {\n throw new Error('use23Blocks must be used within a Blocks23Provider');\n }\n return context;\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Block-specific hooks\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport function useAuthenticationBlock(): AuthenticationBlock {\n const { authentication } = use23Blocks();\n if (!authentication) throw new Error('Authentication block not configured. Pass `authentication` prop to Blocks23Provider.');\n return authentication;\n}\n\nexport function useSearchBlock(): SearchBlock {\n const { search } = use23Blocks();\n if (!search) throw new Error('Search block not configured. Pass `search` prop to Blocks23Provider.');\n return search;\n}\n\nexport function useProductsBlock(): ProductsBlock {\n const { products } = use23Blocks();\n if (!products) throw new Error('Products block not configured. Pass `products` prop to Blocks23Provider.');\n return products;\n}\n\nexport function useCrmBlock(): CrmBlock {\n const { crm } = use23Blocks();\n if (!crm) throw new Error('CRM block not configured. Pass `crm` prop to Blocks23Provider.');\n return crm;\n}\n\nexport function useContentBlock(): ContentBlock {\n const { content } = use23Blocks();\n if (!content) throw new Error('Content block not configured. Pass `content` prop to Blocks23Provider.');\n return content;\n}\n\nexport function useGeolocationBlock(): GeolocationBlock {\n const { geolocation } = use23Blocks();\n if (!geolocation) throw new Error('Geolocation block not configured. Pass `geolocation` prop to Blocks23Provider.');\n return geolocation;\n}\n\nexport function useConversationsBlock(): ConversationsBlock {\n const { conversations } = use23Blocks();\n if (!conversations) throw new Error('Conversations block not configured. Pass `conversations` prop to Blocks23Provider.');\n return conversations;\n}\n\nexport function useFilesBlock(): FilesBlock {\n const { files } = use23Blocks();\n if (!files) throw new Error('Files block not configured. Pass `files` prop to Blocks23Provider.');\n return files;\n}\n\nexport function useFormsBlock(): FormsBlock {\n const { forms } = use23Blocks();\n if (!forms) throw new Error('Forms block not configured. Pass `forms` prop to Blocks23Provider.');\n return forms;\n}\n\nexport function useAssetsBlock(): AssetsBlock {\n const { assets } = use23Blocks();\n if (!assets) throw new Error('Assets block not configured. Pass `assets` prop to Blocks23Provider.');\n return assets;\n}\n\nexport function useCampaignsBlock(): CampaignsBlock {\n const { campaigns } = use23Blocks();\n if (!campaigns) throw new Error('Campaigns block not configured. Pass `campaigns` prop to Blocks23Provider.');\n return campaigns;\n}\n\nexport function useCompanyBlock(): CompanyBlock {\n const { company } = use23Blocks();\n if (!company) throw new Error('Company block not configured. Pass `company` prop to Blocks23Provider.');\n return company;\n}\n\nexport function useRewardsBlock(): RewardsBlock {\n const { rewards } = use23Blocks();\n if (!rewards) throw new Error('Rewards block not configured. Pass `rewards` prop to Blocks23Provider.');\n return rewards;\n}\n\nexport function useSalesBlock(): SalesBlock {\n const { sales } = use23Blocks();\n if (!sales) throw new Error('Sales block not configured. Pass `sales` prop to Blocks23Provider.');\n return sales;\n}\n\nexport function useWalletBlock(): WalletBlock {\n const { wallet } = use23Blocks();\n if (!wallet) throw new Error('Wallet block not configured. Pass `wallet` prop to Blocks23Provider.');\n return wallet;\n}\n\nexport function useJarvisBlock(): JarvisBlock {\n const { jarvis } = use23Blocks();\n if (!jarvis) throw new Error('Jarvis block not configured. Pass `jarvis` prop to Blocks23Provider.');\n return jarvis;\n}\n\nexport function useOnboardingBlock(): OnboardingBlock {\n const { onboarding } = use23Blocks();\n if (!onboarding) throw new Error('Onboarding block not configured. Pass `onboarding` prop to Blocks23Provider.');\n return onboarding;\n}\n\nexport function useUniversityBlock(): UniversityBlock {\n const { university } = use23Blocks();\n if (!university) throw new Error('University block not configured. Pass `university` prop to Blocks23Provider.');\n return university;\n}\n"],"names":["createContext","useContext","useMemo","createAuthenticationBlock","createSearchBlock","createProductsBlock","createCrmBlock","createContentBlock","createGeolocationBlock","createConversationsBlock","createFilesBlock","createFormsBlock","createAssetsBlock","createCampaignsBlock","createCompanyBlock","createRewardsBlock","createSalesBlock","createWalletBlock","createJarvisBlock","createOnboardingBlock","createUniversityBlock","Blocks23ContextInternal","Blocks23Provider","children","transport","authentication","search","products","crm","content","geolocation","conversations","files","forms","assets","campaigns","company","rewards","sales","wallet","jarvis","onboarding","university","value","Provider","use23Blocks","context","Error","useAuthenticationBlock","useSearchBlock","useProductsBlock","useCrmBlock","useContentBlock","useGeolocationBlock","useConversationsBlock","useFilesBlock","useFormsBlock","useAssetsBlock","useCampaignsBlock","useCompanyBlock","useRewardsBlock","useSalesBlock","useWalletBlock","useJarvisBlock","useOnboardingBlock","useUniversityBlock"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,aAAa,EAAEC,UAAU,EAAEC,OAAO,QAAwB,QAAQ;AAE3E,SAASC,yBAAyB,QAAkE,iCAAiC;AACrI,SAASC,iBAAiB,QAAkD,yBAAyB;AACrG,SAASC,mBAAmB,QAAsD,2BAA2B;AAC7G,SAASC,cAAc,QAA4C,sBAAsB;AACzF,SAASC,kBAAkB,QAAoD,0BAA0B;AACzG,SAASC,sBAAsB,QAA4D,8BAA8B;AACzH,SAASC,wBAAwB,QAAgE,gCAAgC;AACjI,SAASC,gBAAgB,QAAgD,wBAAwB;AACjG,SAASC,gBAAgB,QAAgD,wBAAwB;AACjG,SAASC,iBAAiB,QAAkD,yBAAyB;AACrG,SAASC,oBAAoB,QAAwD,4BAA4B;AACjH,SAASC,kBAAkB,QAAoD,0BAA0B;AACzG,SAASC,kBAAkB,QAAoD,0BAA0B;AACzG,SAASC,gBAAgB,QAAgD,wBAAwB;AACjG,SAASC,iBAAiB,QAAkD,yBAAyB;AACrG,SAASC,iBAAiB,QAAkD,yBAAyB;AACrG,SAASC,qBAAqB,QAA0D,6BAA6B;AACrH,SAASC,qBAAqB,QAA0D,6BAA6B;AA4BrH,gFAAgF;AAChF,UAAU;AACV,gFAAgF;AAEhF,MAAMC,wCAA0BrB,cAAsC;AA6BtE,gFAAgF;AAChF,qBAAqB;AACrB,gFAAgF;AAEhF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6BC,GACD,OAAO,SAASsB,iBAAiB,EAC/BC,QAAQ,EACRC,SAAS,EACTC,cAAc,EACdC,MAAM,EACNC,QAAQ,EACRC,GAAG,EACHC,OAAO,EACPC,WAAW,EACXC,aAAa,EACbC,KAAK,EACLC,KAAK,EACLC,MAAM,EACNC,SAAS,EACTC,OAAO,EACPC,OAAO,EACPC,KAAK,EACLC,MAAM,EACNC,MAAM,EACNC,UAAU,EACVC,UAAU,EACY;IACtB,MAAMC,QAAQzC,QAAyB,IAAO,CAAA;YAC5CsB;YACAC,gBAAgBA,iBAAiBtB,0BAA0BqB,WAAWC,kBAAkB;YACxFC,QAAQA,SAAStB,kBAAkBoB,WAAWE,UAAU;YACxDC,UAAUA,WAAWtB,oBAAoBmB,WAAWG,YAAY;YAChEC,KAAKA,MAAMtB,eAAekB,WAAWI,OAAO;YAC5CC,SAASA,UAAUtB,mBAAmBiB,WAAWK,WAAW;YAC5DC,aAAaA,cAActB,uBAAuBgB,WAAWM,eAAe;YAC5EC,eAAeA,gBAAgBtB,yBAAyBe,WAAWO,iBAAiB;YACpFC,OAAOA,QAAQtB,iBAAiBc,WAAWQ,SAAS;YACpDC,OAAOA,QAAQtB,iBAAiBa,WAAWS,SAAS;YACpDC,QAAQA,SAAStB,kBAAkBY,WAAWU,UAAU;YACxDC,WAAWA,YAAYtB,qBAAqBW,WAAWW,aAAa;YACpEC,SAASA,UAAUtB,mBAAmBU,WAAWY,WAAW;YAC5DC,SAASA,UAAUtB,mBAAmBS,WAAWa,WAAW;YAC5DC,OAAOA,QAAQtB,iBAAiBQ,WAAWc,SAAS;YACpDC,QAAQA,SAAStB,kBAAkBO,WAAWe,UAAU;YACxDC,QAAQA,SAAStB,kBAAkBM,WAAWgB,UAAU;YACxDC,YAAYA,aAAatB,sBAAsBK,WAAWiB,cAAc;YACxEC,YAAYA,aAAatB,sBAAsBI,WAAWkB,cAAc;QAC1E,CAAA,GAAI;QAAClB;QAAWC;QAAgBC;QAAQC;QAAUC;QAAKC;QAASC;QAAaC;QAAeC;QAAOC;QAAOC;QAAQC;QAAWC;QAASC;QAASC;QAAOC;QAAQC;QAAQC;QAAYC;KAAW;IAE7L,qBACE,oBAACrB,wBAAwBuB,QAAQ;QAACD,OAAOA;OACtCpB;AAGP;AAEA,gFAAgF;AAChF,eAAe;AACf,gFAAgF;AAEhF,OAAO,SAASsB;IACd,MAAMC,UAAU7C,WAAWoB;IAC3B,IAAI,CAACyB,SAAS;QACZ,MAAM,IAAIC,MAAM;IAClB;IACA,OAAOD;AACT;AAEA,gFAAgF;AAChF,uBAAuB;AACvB,gFAAgF;AAEhF,OAAO,SAASE;IACd,MAAM,EAAEvB,cAAc,EAAE,GAAGoB;IAC3B,IAAI,CAACpB,gBAAgB,MAAM,IAAIsB,MAAM;IACrC,OAAOtB;AACT;AAEA,OAAO,SAASwB;IACd,MAAM,EAAEvB,MAAM,EAAE,GAAGmB;IACnB,IAAI,CAACnB,QAAQ,MAAM,IAAIqB,MAAM;IAC7B,OAAOrB;AACT;AAEA,OAAO,SAASwB;IACd,MAAM,EAAEvB,QAAQ,EAAE,GAAGkB;IACrB,IAAI,CAAClB,UAAU,MAAM,IAAIoB,MAAM;IAC/B,OAAOpB;AACT;AAEA,OAAO,SAASwB;IACd,MAAM,EAAEvB,GAAG,EAAE,GAAGiB;IAChB,IAAI,CAACjB,KAAK,MAAM,IAAImB,MAAM;IAC1B,OAAOnB;AACT;AAEA,OAAO,SAASwB;IACd,MAAM,EAAEvB,OAAO,EAAE,GAAGgB;IACpB,IAAI,CAAChB,SAAS,MAAM,IAAIkB,MAAM;IAC9B,OAAOlB;AACT;AAEA,OAAO,SAASwB;IACd,MAAM,EAAEvB,WAAW,EAAE,GAAGe;IACxB,IAAI,CAACf,aAAa,MAAM,IAAIiB,MAAM;IAClC,OAAOjB;AACT;AAEA,OAAO,SAASwB;IACd,MAAM,EAAEvB,aAAa,EAAE,GAAGc;IAC1B,IAAI,CAACd,eAAe,MAAM,IAAIgB,MAAM;IACpC,OAAOhB;AACT;AAEA,OAAO,SAASwB;IACd,MAAM,EAAEvB,KAAK,EAAE,GAAGa;IAClB,IAAI,CAACb,OAAO,MAAM,IAAIe,MAAM;IAC5B,OAAOf;AACT;AAEA,OAAO,SAASwB;IACd,MAAM,EAAEvB,KAAK,EAAE,GAAGY;IAClB,IAAI,CAACZ,OAAO,MAAM,IAAIc,MAAM;IAC5B,OAAOd;AACT;AAEA,OAAO,SAASwB;IACd,MAAM,EAAEvB,MAAM,EAAE,GAAGW;IACnB,IAAI,CAACX,QAAQ,MAAM,IAAIa,MAAM;IAC7B,OAAOb;AACT;AAEA,OAAO,SAASwB;IACd,MAAM,EAAEvB,SAAS,EAAE,GAAGU;IACtB,IAAI,CAACV,WAAW,MAAM,IAAIY,MAAM;IAChC,OAAOZ;AACT;AAEA,OAAO,SAASwB;IACd,MAAM,EAAEvB,OAAO,EAAE,GAAGS;IACpB,IAAI,CAACT,SAAS,MAAM,IAAIW,MAAM;IAC9B,OAAOX;AACT;AAEA,OAAO,SAASwB;IACd,MAAM,EAAEvB,OAAO,EAAE,GAAGQ;IACpB,IAAI,CAACR,SAAS,MAAM,IAAIU,MAAM;IAC9B,OAAOV;AACT;AAEA,OAAO,SAASwB;IACd,MAAM,EAAEvB,KAAK,EAAE,GAAGO;IAClB,IAAI,CAACP,OAAO,MAAM,IAAIS,MAAM;IAC5B,OAAOT;AACT;AAEA,OAAO,SAASwB;IACd,MAAM,EAAEvB,MAAM,EAAE,GAAGM;IACnB,IAAI,CAACN,QAAQ,MAAM,IAAIQ,MAAM;IAC7B,OAAOR;AACT;AAEA,OAAO,SAASwB;IACd,MAAM,EAAEvB,MAAM,EAAE,GAAGK;IACnB,IAAI,CAACL,QAAQ,MAAM,IAAIO,MAAM;IAC7B,OAAOP;AACT;AAEA,OAAO,SAASwB;IACd,MAAM,EAAEvB,UAAU,EAAE,GAAGI;IACvB,IAAI,CAACJ,YAAY,MAAM,IAAIM,MAAM;IACjC,OAAON;AACT;AAEA,OAAO,SAASwB;IACd,MAAM,EAAEvB,UAAU,EAAE,GAAGG;IACvB,IAAI,CAACH,YAAY,MAAM,IAAIK,MAAM;IACjC,OAAOL;AACT"}
|
package/dist/lib/index.js
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
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
|
-
export { Blocks23Provider, use23Blocks, useAuthenticationBlock, useSearchBlock } from './context.js';
|
|
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
|
|
4
11
|
export { // Auth
|
|
5
12
|
useAuth, useUsers, // Search
|
package/dist/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/lib/index.ts"],"sourcesContent":["// Context and Provider\nexport {\n Blocks23Provider,\n use23Blocks,\n useAuthenticationBlock,\n useSearchBlock,\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","useAuth","useUsers","useSearch","useFavorites"],"rangeMappings":"
|
|
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": "
|
|
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,8 +57,25 @@
|
|
|
57
57
|
},
|
|
58
58
|
"dependencies": {
|
|
59
59
|
"@23blocks/contracts": "*",
|
|
60
|
+
"@23blocks/transport-http": "*",
|
|
60
61
|
"@23blocks/block-authentication": "*",
|
|
61
62
|
"@23blocks/block-search": "*",
|
|
63
|
+
"@23blocks/block-products": "*",
|
|
64
|
+
"@23blocks/block-crm": "*",
|
|
65
|
+
"@23blocks/block-content": "*",
|
|
66
|
+
"@23blocks/block-geolocation": "*",
|
|
67
|
+
"@23blocks/block-conversations": "*",
|
|
68
|
+
"@23blocks/block-files": "*",
|
|
69
|
+
"@23blocks/block-forms": "*",
|
|
70
|
+
"@23blocks/block-assets": "*",
|
|
71
|
+
"@23blocks/block-campaigns": "*",
|
|
72
|
+
"@23blocks/block-company": "*",
|
|
73
|
+
"@23blocks/block-rewards": "*",
|
|
74
|
+
"@23blocks/block-sales": "*",
|
|
75
|
+
"@23blocks/block-wallet": "*",
|
|
76
|
+
"@23blocks/block-jarvis": "*",
|
|
77
|
+
"@23blocks/block-onboarding": "*",
|
|
78
|
+
"@23blocks/block-university": "*",
|
|
62
79
|
"@swc/helpers": "~0.5.11"
|
|
63
80
|
},
|
|
64
81
|
"peerDependencies": {
|