@airdraft/react 0.1.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/CHANGELOG.md ADDED
@@ -0,0 +1,5 @@
1
+ # Changelog
2
+
3
+ All notable changes to `@airdraft/react` will be documented here.
4
+
5
+ See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
@@ -0,0 +1,201 @@
1
+ import { type ReactNode } from 'react';
2
+ import { AirdraftClient, type AuthConfig } from '@airdraft/client';
3
+ import type { Entry, ListOptions, CollectionConfig, MediaItem } from '@airdraft/core';
4
+ export interface AirdraftProviderProps {
5
+ /** Base API URL pointing to the Airdraft CMS route handler. */
6
+ apiUrl: string;
7
+ /** Auth method for all requests from this provider tree. */
8
+ auth?: AuthConfig;
9
+ /** Admin key for schema mutation routes (`X-Admin-Key`). */
10
+ adminKey?: string;
11
+ children: ReactNode;
12
+ }
13
+ /**
14
+ * Wraps the application tree and provides an `AirdraftClient` instance to
15
+ * all descendant hooks.
16
+ *
17
+ * ```tsx
18
+ * <AirdraftProvider apiUrl="/api/cms">
19
+ * <App />
20
+ * </AirdraftProvider>
21
+ * ```
22
+ */
23
+ export declare function AirdraftProvider({ apiUrl, auth, adminKey, children }: AirdraftProviderProps): import("react/jsx-runtime").JSX.Element;
24
+ /**
25
+ * Returns the raw `AirdraftClient` from the nearest `AirdraftProvider`.
26
+ * Use for advanced or one-off API calls.
27
+ */
28
+ export declare function useAirdraftClient(): AirdraftClient;
29
+ export interface UseEntriesState {
30
+ entries: Entry[];
31
+ total: number;
32
+ loading: boolean;
33
+ error: Error | null;
34
+ /** Manually trigger a refetch */
35
+ refresh: () => void;
36
+ }
37
+ /**
38
+ * Fetches and tracks a list of entries from the given collection.
39
+ *
40
+ * ```tsx
41
+ * const { entries, loading } = useEntries('posts', { limit: 10, status: 'published' })
42
+ * ```
43
+ */
44
+ export declare function useEntries(collection: string, options?: ListOptions): UseEntriesState;
45
+ export interface UseEntryState {
46
+ entry: Entry | null;
47
+ loading: boolean;
48
+ error: Error | null;
49
+ refresh: () => void;
50
+ }
51
+ /**
52
+ * Fetches a single entry by slug.
53
+ *
54
+ * ```tsx
55
+ * const { entry, loading } = useEntry('posts', 'hello-world')
56
+ * ```
57
+ */
58
+ export declare function useEntry(collection: string, slug: string): UseEntryState;
59
+ export interface UseMutateEntryState {
60
+ creating: boolean;
61
+ updating: boolean;
62
+ deleting: boolean;
63
+ error: Error | null;
64
+ createEntry: (data: Record<string, unknown>, slug?: string) => Promise<Entry>;
65
+ updateEntry: (slug: string, data: Record<string, unknown>, sha: string) => Promise<Entry>;
66
+ deleteEntry: (slug: string, sha: string) => Promise<void>;
67
+ }
68
+ /**
69
+ * Exposes create / update / delete mutations for a collection.
70
+ *
71
+ * ```tsx
72
+ * const { createEntry, updating } = useMutateEntry('posts')
73
+ * ```
74
+ */
75
+ export declare function useMutateEntry(collection: string): UseMutateEntryState;
76
+ export interface UseCmsState {
77
+ entries: Entry[];
78
+ total: number;
79
+ loading: boolean;
80
+ error: Error | null;
81
+ refresh: () => void;
82
+ creating: boolean;
83
+ updating: boolean;
84
+ deleting: boolean;
85
+ createEntry: UseMutateEntryState['createEntry'];
86
+ updateEntry: UseMutateEntryState['updateEntry'];
87
+ deleteEntry: UseMutateEntryState['deleteEntry'];
88
+ }
89
+ /**
90
+ * Combines `useEntries` and `useMutateEntry` into a single hook.
91
+ *
92
+ * ```tsx
93
+ * const { entries, createEntry, loading } = useCms('posts')
94
+ * ```
95
+ */
96
+ export declare function useCms(collection: string, listOptions?: ListOptions): UseCmsState;
97
+ export interface UseMediaLibraryOptions {
98
+ search?: string;
99
+ mimeType?: string;
100
+ }
101
+ export interface UseMediaLibraryState {
102
+ items: MediaItem[];
103
+ loading: boolean;
104
+ error: Error | null;
105
+ refresh: () => void;
106
+ }
107
+ export declare function useMediaLibrary(opts?: UseMediaLibraryOptions): UseMediaLibraryState;
108
+ export interface UseMediaUploadState {
109
+ upload: (file: File) => Promise<MediaItem>;
110
+ uploading: boolean;
111
+ error: Error | null;
112
+ }
113
+ export declare function useMediaUpload(): UseMediaUploadState;
114
+ export interface UseMediaDeleteState {
115
+ deleteItem: (key: string) => Promise<void>;
116
+ deleting: boolean;
117
+ error: Error | null;
118
+ }
119
+ export declare function useMediaDelete(): UseMediaDeleteState;
120
+ export interface UseSchemaEditorState {
121
+ collections: Record<string, CollectionConfig> | null;
122
+ loading: boolean;
123
+ error: Error | null;
124
+ saving: boolean;
125
+ refresh: () => void;
126
+ createCollection: (name: string, config: CollectionConfig) => Promise<void>;
127
+ updateCollection: (name: string, config: CollectionConfig) => Promise<void>;
128
+ deleteCollection: (name: string) => Promise<void>;
129
+ }
130
+ /**
131
+ * Fetches and manages CMS schema collections via the schema editor API routes
132
+ * provided by `@airdraft/plugin-schema-editor`.
133
+ *
134
+ * ```tsx
135
+ * const { collections, createCollection, updateCollection, deleteCollection } = useSchemaEditor()
136
+ * ```
137
+ */
138
+ export declare function useSchemaEditor(): UseSchemaEditorState;
139
+ export type CmsRole = 'admin' | 'publisher' | 'editor';
140
+ export interface CmsUser {
141
+ id: string;
142
+ email: string;
143
+ name?: string;
144
+ role: CmsRole;
145
+ createdAt: number;
146
+ }
147
+ export interface CmsInvite {
148
+ token: string;
149
+ email: string;
150
+ role: CmsRole;
151
+ expiresAt: number;
152
+ inviteUrl?: string;
153
+ }
154
+ export interface UseTeamState {
155
+ users: CmsUser[];
156
+ invites: CmsInvite[];
157
+ loading: boolean;
158
+ error: Error | null;
159
+ refresh: () => void;
160
+ inviting: boolean;
161
+ createInvite: (email: string, role: CmsRole) => Promise<CmsInvite>;
162
+ revokeInvite: (token: string) => Promise<void>;
163
+ changeRole: (userId: string, role: CmsRole) => Promise<void>;
164
+ removeUser: (userId: string) => Promise<void>;
165
+ }
166
+ /**
167
+ * Manages team members and pending invites.
168
+ *
169
+ * Requires the current user to have the `admin` role.
170
+ *
171
+ * ```tsx
172
+ * const { users, invites, createInvite, revokeInvite, changeRole, removeUser } = useTeam()
173
+ * ```
174
+ */
175
+ export declare function useTeam(): UseTeamState;
176
+ export interface UseAuthState {
177
+ /** Currently authenticated user, or `null` when unauthenticated. */
178
+ user: CmsUser | null;
179
+ /** `true` while the initial session check is in-flight. */
180
+ isLoading: boolean;
181
+ /** Last error from a login attempt. */
182
+ error: Error | null;
183
+ /** Login with email + password. Sets the session cookie on success. */
184
+ login: (email: string, password: string) => Promise<void>;
185
+ /** Logout — clears the session cookie server-side. */
186
+ logout: () => Promise<void>;
187
+ /** Re-fetch the current user from `/auth/me`. */
188
+ refresh: () => void;
189
+ }
190
+ /**
191
+ * Manages the browser session for cookie-based (CredentialsProvider) auth.
192
+ *
193
+ * On mount it calls `GET /auth/me` to restore any existing session. Exposes
194
+ * `login` / `logout` helpers that keep local state in sync.
195
+ *
196
+ * ```tsx
197
+ * const { user, isLoading, login, logout } = useAuth()
198
+ * ```
199
+ */
200
+ export declare function useAuth(): UseAuthState;
201
+ //# sourceMappingURL=hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../src/hooks.tsx"],"names":[],"mappings":"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"}
package/dist/hooks.js ADDED
@@ -0,0 +1,437 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { createContext, useContext, useState, useEffect, useCallback, useMemo, } from 'react';
3
+ import { AirdraftClient } from '@airdraft/client';
4
+ const AirdraftContext = createContext(null);
5
+ /**
6
+ * Wraps the application tree and provides an `AirdraftClient` instance to
7
+ * all descendant hooks.
8
+ *
9
+ * ```tsx
10
+ * <AirdraftProvider apiUrl="/api/cms">
11
+ * <App />
12
+ * </AirdraftProvider>
13
+ * ```
14
+ */
15
+ export function AirdraftProvider({ apiUrl, auth, adminKey, children }) {
16
+ const [client] = useState(() => new AirdraftClient({ apiUrl, auth, adminKey }));
17
+ // ---- Shared auth state (single source of truth for useAuth()) -----------
18
+ const [authUser, setAuthUser] = useState(null);
19
+ const [authLoading, setAuthLoading] = useState(true);
20
+ const [authError, setAuthError] = useState(null);
21
+ const [authTick, setAuthTick] = useState(0);
22
+ useEffect(() => {
23
+ let cancelled = false;
24
+ setAuthLoading(true);
25
+ void (async () => {
26
+ try {
27
+ const u = await client.auth.me();
28
+ if (!cancelled) {
29
+ setAuthUser(u);
30
+ setAuthError(null);
31
+ }
32
+ }
33
+ catch (err) {
34
+ if (!cancelled) {
35
+ setAuthError(err instanceof Error ? err : new Error(String(err)));
36
+ setAuthUser(null);
37
+ }
38
+ }
39
+ finally {
40
+ if (!cancelled)
41
+ setAuthLoading(false);
42
+ }
43
+ })();
44
+ return () => { cancelled = true; };
45
+ }, [client, authTick]);
46
+ const authLogin = useCallback(async (email, password) => {
47
+ const u = await client.auth.login(email, password);
48
+ setAuthUser(u);
49
+ setAuthError(null);
50
+ }, [client]);
51
+ const authLogout = useCallback(async () => {
52
+ await client.auth.logout();
53
+ setAuthUser(null);
54
+ }, [client]);
55
+ const authRefresh = useCallback(() => setAuthTick((n) => n + 1), []);
56
+ const _auth = useMemo(() => ({ user: authUser, isLoading: authLoading, error: authError, login: authLogin, logout: authLogout, refresh: authRefresh }), [authUser, authLoading, authError, authLogin, authLogout, authRefresh]);
57
+ // -------------------------------------------------------------------------
58
+ return (_jsx(AirdraftContext.Provider, { value: { client, _auth }, children: children }));
59
+ }
60
+ // ---------------------------------------------------------------------------
61
+ // useAirdraftClient
62
+ // ---------------------------------------------------------------------------
63
+ /**
64
+ * Returns the raw `AirdraftClient` from the nearest `AirdraftProvider`.
65
+ * Use for advanced or one-off API calls.
66
+ */
67
+ export function useAirdraftClient() {
68
+ const ctx = useContext(AirdraftContext);
69
+ if (!ctx) {
70
+ throw new Error('useAirdraftClient must be used within an <AirdraftProvider>');
71
+ }
72
+ return ctx.client;
73
+ }
74
+ /**
75
+ * Fetches and tracks a list of entries from the given collection.
76
+ *
77
+ * ```tsx
78
+ * const { entries, loading } = useEntries('posts', { limit: 10, status: 'published' })
79
+ * ```
80
+ */
81
+ export function useEntries(collection, options = {}) {
82
+ const client = useAirdraftClient();
83
+ const [entries, setEntries] = useState([]);
84
+ const [total, setTotal] = useState(0);
85
+ const [loading, setLoading] = useState(true);
86
+ const [error, setError] = useState(null);
87
+ const [tick, setTick] = useState(0);
88
+ // Stable serialization of options to detect real changes
89
+ const optionsKey = JSON.stringify(options);
90
+ useEffect(() => {
91
+ let cancelled = false;
92
+ setLoading(true);
93
+ client
94
+ .listEntries(collection, options)
95
+ .then(({ entries: e, total: t }) => {
96
+ if (!cancelled) {
97
+ setEntries(e);
98
+ setTotal(t);
99
+ setError(null);
100
+ }
101
+ })
102
+ .catch((err) => {
103
+ if (!cancelled)
104
+ setError(err instanceof Error ? err : new Error(String(err)));
105
+ })
106
+ .finally(() => {
107
+ if (!cancelled)
108
+ setLoading(false);
109
+ });
110
+ return () => { cancelled = true; };
111
+ // eslint-disable-next-line react-hooks/exhaustive-deps
112
+ }, [client, collection, optionsKey, tick]);
113
+ const refresh = useCallback(() => setTick((n) => n + 1), []);
114
+ return { entries, total, loading, error, refresh };
115
+ }
116
+ /**
117
+ * Fetches a single entry by slug.
118
+ *
119
+ * ```tsx
120
+ * const { entry, loading } = useEntry('posts', 'hello-world')
121
+ * ```
122
+ */
123
+ export function useEntry(collection, slug) {
124
+ const client = useAirdraftClient();
125
+ const [entry, setEntry] = useState(null);
126
+ const [loading, setLoading] = useState(true);
127
+ const [error, setError] = useState(null);
128
+ const [tick, setTick] = useState(0);
129
+ useEffect(() => {
130
+ let cancelled = false;
131
+ setLoading(true);
132
+ client
133
+ .getEntry(collection, slug)
134
+ .then((e) => { if (!cancelled) {
135
+ setEntry(e);
136
+ setError(null);
137
+ } })
138
+ .catch((err) => { if (!cancelled)
139
+ setError(err instanceof Error ? err : new Error(String(err))); })
140
+ .finally(() => { if (!cancelled)
141
+ setLoading(false); });
142
+ return () => { cancelled = true; };
143
+ }, [client, collection, slug, tick]);
144
+ const refresh = useCallback(() => setTick((n) => n + 1), []);
145
+ return { entry, loading, error, refresh };
146
+ }
147
+ /**
148
+ * Exposes create / update / delete mutations for a collection.
149
+ *
150
+ * ```tsx
151
+ * const { createEntry, updating } = useMutateEntry('posts')
152
+ * ```
153
+ */
154
+ export function useMutateEntry(collection) {
155
+ const client = useAirdraftClient();
156
+ const [creating, setCreating] = useState(false);
157
+ const [updating, setUpdating] = useState(false);
158
+ const [deleting, setDeleting] = useState(false);
159
+ const [error, setError] = useState(null);
160
+ const createEntry = useCallback(async (data, slug) => {
161
+ setCreating(true);
162
+ setError(null);
163
+ try {
164
+ return await client.createEntry(collection, data, slug);
165
+ }
166
+ catch (err) {
167
+ const e = err instanceof Error ? err : new Error(String(err));
168
+ setError(e);
169
+ throw e;
170
+ }
171
+ finally {
172
+ setCreating(false);
173
+ }
174
+ }, [client, collection]);
175
+ const updateEntry = useCallback(async (slug, data, sha) => {
176
+ setUpdating(true);
177
+ setError(null);
178
+ try {
179
+ return await client.updateEntry(collection, slug, data, sha);
180
+ }
181
+ catch (err) {
182
+ const e = err instanceof Error ? err : new Error(String(err));
183
+ setError(e);
184
+ throw e;
185
+ }
186
+ finally {
187
+ setUpdating(false);
188
+ }
189
+ }, [client, collection]);
190
+ const deleteEntry = useCallback(async (slug, sha) => {
191
+ setDeleting(true);
192
+ setError(null);
193
+ try {
194
+ await client.deleteEntry(collection, slug, sha);
195
+ }
196
+ catch (err) {
197
+ const e = err instanceof Error ? err : new Error(String(err));
198
+ setError(e);
199
+ throw e;
200
+ }
201
+ finally {
202
+ setDeleting(false);
203
+ }
204
+ }, [client, collection]);
205
+ return { creating, updating, deleting, error, createEntry, updateEntry, deleteEntry };
206
+ }
207
+ /**
208
+ * Combines `useEntries` and `useMutateEntry` into a single hook.
209
+ *
210
+ * ```tsx
211
+ * const { entries, createEntry, loading } = useCms('posts')
212
+ * ```
213
+ */
214
+ export function useCms(collection, listOptions = {}) {
215
+ const list = useEntries(collection, listOptions);
216
+ const mutate = useMutateEntry(collection);
217
+ return { ...list, ...mutate };
218
+ }
219
+ export function useMediaLibrary(opts = {}) {
220
+ const client = useAirdraftClient();
221
+ const [items, setItems] = useState([]);
222
+ const [loading, setLoading] = useState(true);
223
+ const [error, setError] = useState(null);
224
+ const [tick, setTick] = useState(0);
225
+ const { search, mimeType } = opts;
226
+ useEffect(() => {
227
+ let cancelled = false;
228
+ setLoading(true);
229
+ client.media.list({ search, mimeType })
230
+ .then(({ items: i }) => {
231
+ if (!cancelled) {
232
+ setItems(i);
233
+ setError(null);
234
+ }
235
+ })
236
+ .catch((err) => {
237
+ if (!cancelled)
238
+ setError(err instanceof Error ? err : new Error(String(err)));
239
+ })
240
+ .finally(() => { if (!cancelled)
241
+ setLoading(false); });
242
+ return () => { cancelled = true; };
243
+ // eslint-disable-next-line react-hooks/exhaustive-deps
244
+ }, [client, search, mimeType, tick]);
245
+ const refresh = useCallback(() => setTick((n) => n + 1), []);
246
+ return { items, loading, error, refresh };
247
+ }
248
+ export function useMediaUpload() {
249
+ const client = useAirdraftClient();
250
+ const [uploading, setUploading] = useState(false);
251
+ const [error, setError] = useState(null);
252
+ const upload = useCallback(async (file) => {
253
+ setUploading(true);
254
+ setError(null);
255
+ try {
256
+ return await client.media.upload(file);
257
+ }
258
+ catch (err) {
259
+ const e = err instanceof Error ? err : new Error(String(err));
260
+ setError(e);
261
+ throw e;
262
+ }
263
+ finally {
264
+ setUploading(false);
265
+ }
266
+ }, [client]);
267
+ return { upload, uploading, error };
268
+ }
269
+ export function useMediaDelete() {
270
+ const client = useAirdraftClient();
271
+ const [deleting, setDeleting] = useState(false);
272
+ const [error, setError] = useState(null);
273
+ const deleteItem = useCallback(async (key) => {
274
+ setDeleting(true);
275
+ setError(null);
276
+ try {
277
+ await client.media.delete(key);
278
+ }
279
+ catch (err) {
280
+ const e = err instanceof Error ? err : new Error(String(err));
281
+ setError(e);
282
+ throw e;
283
+ }
284
+ finally {
285
+ setDeleting(false);
286
+ }
287
+ }, [client]);
288
+ return { deleteItem, deleting, error };
289
+ }
290
+ /**
291
+ * Fetches and manages CMS schema collections via the schema editor API routes
292
+ * provided by `@airdraft/plugin-schema-editor`.
293
+ *
294
+ * ```tsx
295
+ * const { collections, createCollection, updateCollection, deleteCollection } = useSchemaEditor()
296
+ * ```
297
+ */
298
+ export function useSchemaEditor() {
299
+ const client = useAirdraftClient();
300
+ const [collections, setCollections] = useState(null);
301
+ const [loading, setLoading] = useState(true);
302
+ const [error, setError] = useState(null);
303
+ const [saving, setSaving] = useState(false);
304
+ const [tick, setTick] = useState(0);
305
+ useEffect(() => {
306
+ let cancelled = false;
307
+ setLoading(true);
308
+ client.listSchemaCollections()
309
+ .then((data) => { if (!cancelled) {
310
+ setCollections(data);
311
+ setError(null);
312
+ } })
313
+ .catch((err) => { if (!cancelled)
314
+ setError(err instanceof Error ? err : new Error(String(err))); })
315
+ .finally(() => { if (!cancelled)
316
+ setLoading(false); });
317
+ return () => { cancelled = true; };
318
+ }, [client, tick]);
319
+ const refresh = useCallback(() => setTick((n) => n + 1), []);
320
+ const createCollection = useCallback(async (name, config) => {
321
+ setSaving(true);
322
+ try {
323
+ await client.createSchemaCollection(name, config);
324
+ setCollections((prev) => ({ ...(prev ?? {}), [name]: config }));
325
+ }
326
+ finally {
327
+ setSaving(false);
328
+ }
329
+ }, [client]);
330
+ const updateCollection = useCallback(async (name, config) => {
331
+ setSaving(true);
332
+ try {
333
+ await client.updateSchemaCollection(name, config);
334
+ setCollections((prev) => prev ? { ...prev, [name]: config } : prev);
335
+ }
336
+ finally {
337
+ setSaving(false);
338
+ }
339
+ }, [client]);
340
+ const deleteCollection = useCallback(async (name) => {
341
+ setSaving(true);
342
+ try {
343
+ await client.deleteSchemaCollection(name);
344
+ setCollections((prev) => {
345
+ if (!prev)
346
+ return prev;
347
+ const next = { ...prev };
348
+ delete next[name];
349
+ return next;
350
+ });
351
+ }
352
+ finally {
353
+ setSaving(false);
354
+ }
355
+ }, [client]);
356
+ return { collections, loading, error, saving, refresh, createCollection, updateCollection, deleteCollection };
357
+ }
358
+ /**
359
+ * Manages team members and pending invites.
360
+ *
361
+ * Requires the current user to have the `admin` role.
362
+ *
363
+ * ```tsx
364
+ * const { users, invites, createInvite, revokeInvite, changeRole, removeUser } = useTeam()
365
+ * ```
366
+ */
367
+ export function useTeam() {
368
+ const client = useAirdraftClient();
369
+ const [users, setUsers] = useState([]);
370
+ const [invites, setInvites] = useState([]);
371
+ const [loading, setLoading] = useState(true);
372
+ const [error, setError] = useState(null);
373
+ const [inviting, setInviting] = useState(false);
374
+ const [tick, setTick] = useState(0);
375
+ useEffect(() => {
376
+ let cancelled = false;
377
+ setLoading(true);
378
+ Promise.all([client.team.listUsers(), client.team.listInvites()])
379
+ .then(([u, inv]) => {
380
+ if (!cancelled) {
381
+ setUsers(u);
382
+ setInvites(inv);
383
+ setError(null);
384
+ }
385
+ })
386
+ .catch((err) => {
387
+ if (!cancelled)
388
+ setError(err instanceof Error ? err : new Error(String(err)));
389
+ })
390
+ .finally(() => { if (!cancelled)
391
+ setLoading(false); });
392
+ return () => { cancelled = true; };
393
+ }, [client, tick]);
394
+ const refresh = useCallback(() => setTick((n) => n + 1), []);
395
+ const createInvite = useCallback(async (email, role) => {
396
+ setInviting(true);
397
+ try {
398
+ const invite = await client.team.createInvite(email, role);
399
+ setInvites((prev) => [...prev, invite]);
400
+ return invite;
401
+ }
402
+ finally {
403
+ setInviting(false);
404
+ }
405
+ }, [client]);
406
+ const revokeInvite = useCallback(async (token) => {
407
+ await client.team.revokeInvite(token);
408
+ setInvites((prev) => prev.filter((i) => i.token !== token));
409
+ }, [client]);
410
+ const changeRole = useCallback(async (userId, role) => {
411
+ const updated = await client.team.updateRole(userId, role);
412
+ setUsers((prev) => prev.map((u) => (u.id === userId ? updated : u)));
413
+ }, [client]);
414
+ const removeUser = useCallback(async (userId) => {
415
+ await client.team.removeUser(userId);
416
+ setUsers((prev) => prev.filter((u) => u.id !== userId));
417
+ }, [client]);
418
+ return { users, invites, loading, error, refresh, inviting, createInvite, revokeInvite, changeRole, removeUser };
419
+ }
420
+ /**
421
+ * Manages the browser session for cookie-based (CredentialsProvider) auth.
422
+ *
423
+ * On mount it calls `GET /auth/me` to restore any existing session. Exposes
424
+ * `login` / `logout` helpers that keep local state in sync.
425
+ *
426
+ * ```tsx
427
+ * const { user, isLoading, login, logout } = useAuth()
428
+ * ```
429
+ */
430
+ export function useAuth() {
431
+ const ctx = useContext(AirdraftContext);
432
+ if (!ctx) {
433
+ throw new Error('useAuth must be used within an <AirdraftProvider>');
434
+ }
435
+ return ctx._auth;
436
+ }
437
+ //# sourceMappingURL=hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../src/hooks.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export { AirdraftProvider, useAirdraftClient, useAuth, useEntries, useEntry, useMutateEntry, useCms, useMediaLibrary, useMediaUpload, useMediaDelete, useSchemaEditor, useTeam } from './hooks.js';
2
+ export type { AirdraftProviderProps, UseAuthState, UseEntriesState, UseEntryState, UseMutateEntryState, UseCmsState, UseMediaLibraryOptions, UseMediaLibraryState, UseMediaUploadState, UseMediaDeleteState, UseSchemaEditorState, UseTeamState, CmsRole, CmsUser, CmsInvite } from './hooks.js';
3
+ export { AirdraftClient, AirdraftClientError } from '@airdraft/client';
4
+ export type { AuthConfig, AirdraftClientOptions } from '@airdraft/client';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,eAAe,EAAE,cAAc,EAAE,cAAc,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAClM,YAAY,EAAE,qBAAqB,EAAE,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,mBAAmB,EAAE,WAAW,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAEhS,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AACtE,YAAY,EAAE,UAAU,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAA"}
package/dist/index.js ADDED
@@ -0,0 +1,5 @@
1
+ // @airdraft/react — public surface
2
+ export { AirdraftProvider, useAirdraftClient, useAuth, useEntries, useEntry, useMutateEntry, useCms, useMediaLibrary, useMediaUpload, useMediaDelete, useSchemaEditor, useTeam } from './hooks.js';
3
+ // Re-export client types for convenience
4
+ export { AirdraftClient, AirdraftClientError } from '@airdraft/client';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,mCAAmC;AACnC,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,eAAe,EAAE,cAAc,EAAE,cAAc,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAElM,yCAAyC;AACzC,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA"}
package/package.json ADDED
@@ -0,0 +1,49 @@
1
+ {
2
+ "name": "@airdraft/react",
3
+ "version": "0.1.0",
4
+ "description": "Airdraft React hooks and components",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "import": "./dist/index.js",
11
+ "types": "./dist/index.d.ts"
12
+ }
13
+ },
14
+ "files": ["dist", "README.md", "CHANGELOG.md"],
15
+ "scripts": {
16
+ "build": "tsc",
17
+ "dev": "tsc --watch",
18
+ "clean": "rm -rf dist",
19
+ "test": "vitest run",
20
+ "test:watch": "vitest",
21
+ "typecheck": "tsc --noEmit",
22
+ "prepublishOnly": "npm run build",
23
+ "release": "standard-version",
24
+ "release:patch": "standard-version --release-as patch",
25
+ "release:minor": "standard-version --release-as minor",
26
+ "release:major": "standard-version --release-as major"
27
+ },
28
+ "publishConfig": { "access": "public" },
29
+ "license": "MIT",
30
+ "peerDependencies": {
31
+ "react": ">=18.0.0",
32
+ "react-dom": ">=18.0.0"
33
+ },
34
+ "devDependencies": {
35
+ "@types/node": "^20.0.0",
36
+ "@types/react": "^19.0.0",
37
+ "@types/react-dom": "^18.0.0",
38
+ "react": "^18.0.0",
39
+ "react-dom": "^18.0.0",
40
+ "standard-version": "^9.5.0",
41
+ "tsx": "^4.7.0",
42
+ "typescript": "^5.4.0",
43
+ "vitest": "^1.5.0"
44
+ },
45
+ "dependencies": {
46
+ "@airdraft/client": "*"
47
+ },
48
+ "engines": { "node": ">=18.0.0" }
49
+ }