@notionx/core 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.
Files changed (208) hide show
  1. package/dist/admin/index.d.ts +137 -0
  2. package/dist/admin/index.js +206 -0
  3. package/dist/admin/index.js.map +1 -0
  4. package/dist/admin/pages/index.d.ts +324 -0
  5. package/dist/admin/pages/index.js +827 -0
  6. package/dist/admin/pages/index.js.map +1 -0
  7. package/dist/auth/auth-pages/forgot-password.d.ts +20 -0
  8. package/dist/auth/auth-pages/forgot-password.js +70 -0
  9. package/dist/auth/auth-pages/forgot-password.js.map +1 -0
  10. package/dist/auth/auth-pages/index.d.ts +6 -0
  11. package/dist/auth/auth-pages/index.js +342 -0
  12. package/dist/auth/auth-pages/index.js.map +1 -0
  13. package/dist/auth/auth-pages/login.d.ts +30 -0
  14. package/dist/auth/auth-pages/login.js +125 -0
  15. package/dist/auth/auth-pages/login.js.map +1 -0
  16. package/dist/auth/auth-pages/register.d.ts +17 -0
  17. package/dist/auth/auth-pages/register.js +81 -0
  18. package/dist/auth/auth-pages/register.js.map +1 -0
  19. package/dist/auth/auth-pages/reset-password.d.ts +18 -0
  20. package/dist/auth/auth-pages/reset-password.js +72 -0
  21. package/dist/auth/auth-pages/reset-password.js.map +1 -0
  22. package/dist/auth/index.d.ts +72 -0
  23. package/dist/auth/index.js +1011 -0
  24. package/dist/auth/index.js.map +1 -0
  25. package/dist/auth/passwords.d.ts +6 -0
  26. package/dist/auth/passwords.js +79 -0
  27. package/dist/auth/passwords.js.map +1 -0
  28. package/dist/auth/rate-limit.d.ts +28 -0
  29. package/dist/auth/rate-limit.js +245 -0
  30. package/dist/auth/rate-limit.js.map +1 -0
  31. package/dist/auth/routes/google-callback.d.ts +6 -0
  32. package/dist/auth/routes/google-callback.js +404 -0
  33. package/dist/auth/routes/google-callback.js.map +1 -0
  34. package/dist/auth/routes/google.d.ts +6 -0
  35. package/dist/auth/routes/google.js +250 -0
  36. package/dist/auth/routes/google.js.map +1 -0
  37. package/dist/auth/routes/index.d.ts +22 -0
  38. package/dist/auth/routes/index.js +619 -0
  39. package/dist/auth/routes/index.js.map +1 -0
  40. package/dist/auth/routes/verify-email.d.ts +6 -0
  41. package/dist/auth/routes/verify-email.js +317 -0
  42. package/dist/auth/routes/verify-email.js.map +1 -0
  43. package/dist/auth/routes/viewer.d.ts +6 -0
  44. package/dist/auth/routes/viewer.js +372 -0
  45. package/dist/auth/routes/viewer.js.map +1 -0
  46. package/dist/auth/session.d.ts +9 -0
  47. package/dist/auth/session.js +1 -0
  48. package/dist/auth/session.js.map +1 -0
  49. package/dist/auth/turnstile.d.ts +20 -0
  50. package/dist/auth/turnstile.js +301 -0
  51. package/dist/auth/turnstile.js.map +1 -0
  52. package/dist/auth/user-session.d.ts +42 -0
  53. package/dist/auth/user-session.js +419 -0
  54. package/dist/auth/user-session.js.map +1 -0
  55. package/dist/auth/users.d.ts +112 -0
  56. package/dist/auth/users.js +558 -0
  57. package/dist/auth/users.js.map +1 -0
  58. package/dist/bootstrap-CN2g76M6.d.ts +67 -0
  59. package/dist/cache/index.d.ts +6 -0
  60. package/dist/cache/index.js +47 -0
  61. package/dist/cache/index.js.map +1 -0
  62. package/dist/content/admin-summary.d.ts +24 -0
  63. package/dist/content/admin-summary.js +36 -0
  64. package/dist/content/admin-summary.js.map +1 -0
  65. package/dist/content/index.d.ts +9 -0
  66. package/dist/content/index.js +473 -0
  67. package/dist/content/index.js.map +1 -0
  68. package/dist/content/models.d.ts +69 -0
  69. package/dist/content/models.js +24 -0
  70. package/dist/content/models.js.map +1 -0
  71. package/dist/content/prewarm.d.ts +28 -0
  72. package/dist/content/prewarm.js +56 -0
  73. package/dist/content/prewarm.js.map +1 -0
  74. package/dist/content/revalidate.d.ts +37 -0
  75. package/dist/content/revalidate.js +170 -0
  76. package/dist/content/revalidate.js.map +1 -0
  77. package/dist/content/search-index.d.ts +54 -0
  78. package/dist/content/search-index.js +172 -0
  79. package/dist/content/search-index.js.map +1 -0
  80. package/dist/content/search.d.ts +8 -0
  81. package/dist/content/search.js +57 -0
  82. package/dist/content/search.js.map +1 -0
  83. package/dist/doctor/cli.d.ts +1 -0
  84. package/dist/doctor/cli.js +360 -0
  85. package/dist/doctor/cli.js.map +1 -0
  86. package/dist/doctor/index.d.ts +139 -0
  87. package/dist/doctor/index.js +289 -0
  88. package/dist/doctor/index.js.map +1 -0
  89. package/dist/email/index.d.ts +38 -0
  90. package/dist/email/index.js +126 -0
  91. package/dist/email/index.js.map +1 -0
  92. package/dist/env-C5qu-0R-.d.ts +35 -0
  93. package/dist/hooks/index.d.ts +2 -0
  94. package/dist/hooks/index.js +1 -0
  95. package/dist/hooks/index.js.map +1 -0
  96. package/dist/i18n/index.d.ts +26 -0
  97. package/dist/i18n/index.js +73 -0
  98. package/dist/i18n/index.js.map +1 -0
  99. package/dist/index.d.ts +8 -0
  100. package/dist/index.js +1281 -0
  101. package/dist/index.js.map +1 -0
  102. package/dist/internal/admin/index.d.ts +75 -0
  103. package/dist/internal/admin/index.js +365 -0
  104. package/dist/internal/admin/index.js.map +1 -0
  105. package/dist/media/index.d.ts +24 -0
  106. package/dist/media/index.js +86 -0
  107. package/dist/media/index.js.map +1 -0
  108. package/dist/media/routes/index.d.ts +1 -0
  109. package/dist/media/routes/index.js +585 -0
  110. package/dist/media/routes/index.js.map +1 -0
  111. package/dist/media/routes/notion-media.d.ts +19 -0
  112. package/dist/media/routes/notion-media.js +588 -0
  113. package/dist/media/routes/notion-media.js.map +1 -0
  114. package/dist/middleware.d.ts +95 -0
  115. package/dist/middleware.js +79 -0
  116. package/dist/middleware.js.map +1 -0
  117. package/dist/notion/block-text.d.ts +5 -0
  118. package/dist/notion/block-text.js +37 -0
  119. package/dist/notion/block-text.js.map +1 -0
  120. package/dist/notion/blocks.d.ts +24 -0
  121. package/dist/notion/blocks.js +46 -0
  122. package/dist/notion/blocks.js.map +1 -0
  123. package/dist/notion/client.d.ts +7 -0
  124. package/dist/notion/client.js +13 -0
  125. package/dist/notion/client.js.map +1 -0
  126. package/dist/notion/config.d.ts +25 -0
  127. package/dist/notion/config.js +147 -0
  128. package/dist/notion/config.js.map +1 -0
  129. package/dist/notion/content-cache.d.ts +45 -0
  130. package/dist/notion/content-cache.js +166 -0
  131. package/dist/notion/content-cache.js.map +1 -0
  132. package/dist/notion/generic-source.d.ts +61 -0
  133. package/dist/notion/generic-source.js +408 -0
  134. package/dist/notion/generic-source.js.map +1 -0
  135. package/dist/notion/index.d.ts +13 -0
  136. package/dist/notion/index.js +1278 -0
  137. package/dist/notion/index.js.map +1 -0
  138. package/dist/notion/mappers.d.ts +1 -0
  139. package/dist/notion/mappers.js +152 -0
  140. package/dist/notion/mappers.js.map +1 -0
  141. package/dist/notion/media.d.ts +22 -0
  142. package/dist/notion/media.js +209 -0
  143. package/dist/notion/media.js.map +1 -0
  144. package/dist/notion/property-mappers.d.ts +24 -0
  145. package/dist/notion/property-mappers.js +152 -0
  146. package/dist/notion/property-mappers.js.map +1 -0
  147. package/dist/notion/routes/index.d.ts +8 -0
  148. package/dist/notion/routes/index.js +428 -0
  149. package/dist/notion/routes/index.js.map +1 -0
  150. package/dist/notion/routes/webhook.d.ts +98 -0
  151. package/dist/notion/routes/webhook.js +428 -0
  152. package/dist/notion/routes/webhook.js.map +1 -0
  153. package/dist/notion/types.d.ts +152 -0
  154. package/dist/notion/types.js +1 -0
  155. package/dist/notion/types.js.map +1 -0
  156. package/dist/notion/webhook.d.ts +83 -0
  157. package/dist/notion/webhook.js +490 -0
  158. package/dist/notion/webhook.js.map +1 -0
  159. package/dist/platform/capabilities.d.ts +34 -0
  160. package/dist/platform/capabilities.js +42 -0
  161. package/dist/platform/capabilities.js.map +1 -0
  162. package/dist/platform/current.d.ts +13 -0
  163. package/dist/platform/current.js +181 -0
  164. package/dist/platform/current.js.map +1 -0
  165. package/dist/platform/index.d.ts +5 -0
  166. package/dist/platform/index.js +269 -0
  167. package/dist/platform/index.js.map +1 -0
  168. package/dist/platform/runtime.d.ts +118 -0
  169. package/dist/platform/runtime.js +160 -0
  170. package/dist/platform/runtime.js.map +1 -0
  171. package/dist/platform/selection.d.ts +10 -0
  172. package/dist/platform/selection.js +22 -0
  173. package/dist/platform/selection.js.map +1 -0
  174. package/dist/storage/index.d.ts +17 -0
  175. package/dist/storage/index.js +218 -0
  176. package/dist/storage/index.js.map +1 -0
  177. package/dist/storage/routes/cdn.d.ts +19 -0
  178. package/dist/storage/routes/cdn.js +289 -0
  179. package/dist/storage/routes/cdn.js.map +1 -0
  180. package/dist/storage/routes/files.d.ts +27 -0
  181. package/dist/storage/routes/files.js +216 -0
  182. package/dist/storage/routes/files.js.map +1 -0
  183. package/dist/storage/routes/index.d.ts +2 -0
  184. package/dist/storage/routes/index.js +352 -0
  185. package/dist/storage/routes/index.js.map +1 -0
  186. package/dist/types-BsAcZSNX.d.ts +94 -0
  187. package/dist/types.d.ts +78 -0
  188. package/dist/types.js +1 -0
  189. package/dist/types.js.map +1 -0
  190. package/dist/util/index.d.ts +18 -0
  191. package/dist/util/index.js +48 -0
  192. package/dist/util/index.js.map +1 -0
  193. package/dist/worker/index.d.ts +6 -0
  194. package/dist/worker/index.js +1026 -0
  195. package/dist/worker/index.js.map +1 -0
  196. package/dist/worker/routes/content-prewarm.d.ts +34 -0
  197. package/dist/worker/routes/content-prewarm.js +38 -0
  198. package/dist/worker/routes/content-prewarm.js.map +1 -0
  199. package/dist/worker/routes/content-revalidate.d.ts +81 -0
  200. package/dist/worker/routes/content-revalidate.js +64 -0
  201. package/dist/worker/routes/content-revalidate.js.map +1 -0
  202. package/dist/worker/routes/health.d.ts +14 -0
  203. package/dist/worker/routes/health.js +278 -0
  204. package/dist/worker/routes/health.js.map +1 -0
  205. package/dist/worker/routes/index.d.ts +6 -0
  206. package/dist/worker/routes/index.js +373 -0
  207. package/dist/worker/routes/index.js.map +1 -0
  208. package/package.json +124 -0
@@ -0,0 +1,324 @@
1
+ import * as react from 'react';
2
+ import { ReactNode } from 'react';
3
+
4
+ /** A server action the page form submits to. */
5
+ type AdminFormAction = (formData: FormData) => Promise<void> | void;
6
+ /** Bundle of UI primitives used by every admin page. */
7
+ interface AdminPageUI {
8
+ Button: (props: {
9
+ type?: "button" | "submit" | "reset";
10
+ asChild?: boolean;
11
+ variant?: "default" | "outline" | "secondary" | "ghost" | "destructive" | "link";
12
+ size?: "default" | "sm" | "lg" | "icon";
13
+ className?: string;
14
+ children?: ReactNode;
15
+ }) => ReactNode;
16
+ Input: (props: {
17
+ id?: string;
18
+ name: string;
19
+ type?: string;
20
+ placeholder?: string;
21
+ defaultValue?: string;
22
+ required?: boolean;
23
+ autoComplete?: string;
24
+ maxLength?: number;
25
+ className?: string;
26
+ }) => ReactNode;
27
+ Label: (props: {
28
+ htmlFor: string;
29
+ children: ReactNode;
30
+ className?: string;
31
+ }) => ReactNode;
32
+ Card: (props: {
33
+ className?: string;
34
+ children: ReactNode;
35
+ }) => ReactNode;
36
+ CardHeader: (props: {
37
+ className?: string;
38
+ children: ReactNode;
39
+ }) => ReactNode;
40
+ CardTitle: (props: {
41
+ className?: string;
42
+ children: ReactNode;
43
+ }) => ReactNode;
44
+ CardDescription: (props: {
45
+ className?: string;
46
+ children: ReactNode;
47
+ }) => ReactNode;
48
+ CardContent: (props: {
49
+ className?: string;
50
+ children: ReactNode;
51
+ }) => ReactNode;
52
+ Badge: (props: {
53
+ variant?: "default" | "secondary" | "destructive" | "outline";
54
+ className?: string;
55
+ children?: ReactNode;
56
+ }) => ReactNode;
57
+ Table: (props: {
58
+ children: ReactNode;
59
+ }) => ReactNode;
60
+ TableHeader: (props: {
61
+ children: ReactNode;
62
+ }) => ReactNode;
63
+ TableBody: (props: {
64
+ children: ReactNode;
65
+ }) => ReactNode;
66
+ TableRow: (props: {
67
+ children: ReactNode;
68
+ }) => ReactNode;
69
+ TableHead: (props: {
70
+ className?: string;
71
+ children?: ReactNode;
72
+ }) => ReactNode;
73
+ TableCell: (props: {
74
+ className?: string;
75
+ children?: ReactNode;
76
+ colSpan?: number;
77
+ }) => ReactNode;
78
+ Alert: (props: {
79
+ variant?: "default" | "destructive";
80
+ className?: string;
81
+ children: ReactNode;
82
+ }) => ReactNode;
83
+ AlertTitle: (props: {
84
+ children: ReactNode;
85
+ }) => ReactNode;
86
+ AlertDescription: (props: {
87
+ children: ReactNode;
88
+ }) => ReactNode;
89
+ Separator: (props: {
90
+ orientation?: "horizontal" | "vertical";
91
+ className?: string;
92
+ }) => ReactNode;
93
+ Skeleton: (props: {
94
+ className?: string;
95
+ }) => ReactNode;
96
+ AlertDialog: (props: {
97
+ open?: boolean;
98
+ onOpenChange?: (open: boolean) => void;
99
+ children: ReactNode;
100
+ }) => ReactNode;
101
+ AlertDialogTrigger: (props: {
102
+ asChild?: boolean;
103
+ children: ReactNode;
104
+ }) => ReactNode;
105
+ AlertDialogContent: (props: {
106
+ children: ReactNode;
107
+ }) => ReactNode;
108
+ AlertDialogHeader: (props: {
109
+ children: ReactNode;
110
+ }) => ReactNode;
111
+ AlertDialogTitle: (props: {
112
+ children: ReactNode;
113
+ }) => ReactNode;
114
+ AlertDialogDescription: (props: {
115
+ children: ReactNode;
116
+ }) => ReactNode;
117
+ AlertDialogFooter: (props: {
118
+ children: ReactNode;
119
+ }) => ReactNode;
120
+ AlertDialogAction: (props: {
121
+ onClick?: () => void;
122
+ className?: string;
123
+ children: ReactNode;
124
+ }) => ReactNode;
125
+ AlertDialogCancel: (props: {
126
+ children: ReactNode;
127
+ }) => ReactNode;
128
+ }
129
+ /**
130
+ * Optional mapping from action name to server action. Pages fall back
131
+ * to a no-op form handler when the action is missing so dev environments
132
+ * without configured actions still render.
133
+ */
134
+ interface AdminPageActions {
135
+ /** Delete a content record (used by DeleteButton). */
136
+ deletePost?: AdminFormAction;
137
+ /** Change the current user's password (account page). */
138
+ changePassword?: AdminFormAction;
139
+ /** Permanently delete the current user's account. */
140
+ deleteAccount?: AdminFormAction;
141
+ /** Admin: revoke a user's sessions. */
142
+ adminRevokeSessions?: AdminFormAction;
143
+ /** Admin: delete a user. */
144
+ adminDeleteUser?: AdminFormAction;
145
+ /** Admin: change a user's role. */
146
+ adminSetUserRole?: AdminFormAction;
147
+ /** Settings: save Google OAuth config. */
148
+ saveGoogleSettings?: AdminFormAction;
149
+ /** Settings: disable Google login. */
150
+ disableGoogleSettings?: AdminFormAction;
151
+ /** Settings: save site title. */
152
+ saveSiteTitle?: AdminFormAction;
153
+ /** Settings: save Turnstile config. */
154
+ saveTurnstileSettings?: AdminFormAction;
155
+ /** Settings: disable Turnstile. */
156
+ disableTurnstileSettings?: AdminFormAction;
157
+ }
158
+ /**
159
+ * Helpers that fetch data needed by admin pages. The package never
160
+ * imports project-specific helpers; each page receives them through
161
+ * this context.
162
+ */
163
+ interface AdminPageData {
164
+ /** Fetch the public index of blog posts for the admin dashboard. */
165
+ getNotionPostsMeta?: () => Promise<Array<{
166
+ slug: string;
167
+ title: string;
168
+ author: string;
169
+ date: string;
170
+ tags: string[];
171
+ editUrl?: string | null;
172
+ }>>;
173
+ /** URL the admin can open in a new tab to author posts in Notion. */
174
+ getNotionEditBaseUrl?: () => string;
175
+ /** Resolves the current admin viewer. */
176
+ getAdminViewer?: () => Promise<{
177
+ viewer?: {
178
+ email: string;
179
+ } | null;
180
+ viewerEmail: string;
181
+ admin: boolean;
182
+ } | null>;
183
+ /** List all users with their post counts. */
184
+ listUsersWithPostCounts?: () => Promise<Array<{
185
+ id: number;
186
+ email: string;
187
+ role: string | null;
188
+ google_sub: string | null;
189
+ password_hash: string | null;
190
+ post_count: number;
191
+ last_seen_at: string;
192
+ }>>;
193
+ /** Check if an email matches the configured admin email. */
194
+ isAdminEmail?: (email: string) => Promise<boolean>;
195
+ /** Ensure the admin user row exists in the database. */
196
+ ensureAdminBootstrap?: () => Promise<void>;
197
+ /** Get the currently authenticated user. */
198
+ getCurrentUser?: () => Promise<{
199
+ uid: number;
200
+ email: string;
201
+ } | null>;
202
+ /** Get the row from the `app_settings` table. */
203
+ getAppSettings?: () => Promise<{
204
+ admin_email: string;
205
+ site_title: string;
206
+ google_enabled: 0 | 1;
207
+ google_client_id: string | null;
208
+ google_client_secret: string | null;
209
+ turnstile_enabled: 0 | 1;
210
+ turnstile_site_key: string | null;
211
+ }>;
212
+ /** Get Turnstile config (public-only fields). */
213
+ getTurnstilePublicConfig?: () => Promise<{
214
+ enabled: boolean;
215
+ secretConfigured: boolean;
216
+ }>;
217
+ /** Compute the canonical site URL for callbacks and emails. */
218
+ getSiteUrl?: () => string;
219
+ /** Read the TURNSTILE_SECRET_KEY env var (true if set). */
220
+ workerEnv?: {
221
+ TURNSTILE_SECRET_KEY?: string;
222
+ };
223
+ /** Look up a user by primary key. */
224
+ getUserById?: (id: number) => Promise<{
225
+ id: number;
226
+ email: string;
227
+ password_hash: string | null;
228
+ google_sub: string | null;
229
+ } | null>;
230
+ /** Summary of every content model the project registers. */
231
+ getContentModelAdminSummaries?: () => Array<ContentModelAdminSummary>;
232
+ }
233
+ /** Summary record for a single content model. */
234
+ interface ContentModelAdminSummary {
235
+ id: string;
236
+ name: string;
237
+ kind: string;
238
+ visibility: "public" | "admin" | "public+admin" | "private";
239
+ listPath: string;
240
+ detailPath: string;
241
+ publicApiPath?: string;
242
+ dataSourceEnv: string;
243
+ hasDefaultDataSource: boolean;
244
+ fieldCount: number;
245
+ capabilities: {
246
+ richBlocks: boolean;
247
+ coverImages: boolean;
248
+ gatedAssets: boolean;
249
+ };
250
+ }
251
+ /** Common props every admin page receives. */
252
+ interface AdminPageContext {
253
+ ui: AdminPageUI;
254
+ actions?: AdminPageActions;
255
+ data?: AdminPageData;
256
+ /**
257
+ * Extra props to pass through to the page body. Useful for tests
258
+ * and for projects that need to thread custom data into a page.
259
+ */
260
+ extra?: Record<string, unknown>;
261
+ }
262
+
263
+ interface AdminDashboardPageProps {
264
+ context: AdminPageContext;
265
+ searchParams: {
266
+ error?: string;
267
+ };
268
+ }
269
+ declare function AdminDashboardPage({ context, searchParams, }: AdminDashboardPageProps): Promise<react.JSX.Element>;
270
+
271
+ interface AdminUsersPageProps {
272
+ context: AdminPageContext;
273
+ searchParams: {
274
+ revoked?: string;
275
+ deleted?: string;
276
+ roleUpdated?: string;
277
+ error?: string;
278
+ };
279
+ }
280
+ declare function AdminUsersPage({ context, searchParams, }: AdminUsersPageProps): Promise<react.JSX.Element>;
281
+
282
+ interface AdminSettingsPageProps {
283
+ context: AdminPageContext;
284
+ searchParams: {
285
+ saved?: string;
286
+ error?: string;
287
+ };
288
+ }
289
+ declare function AdminSettingsPage({ context, searchParams, }: AdminSettingsPageProps): Promise<react.JSX.Element>;
290
+
291
+ interface AdminAccountPageProps {
292
+ context: AdminPageContext;
293
+ searchParams: {
294
+ saved?: string;
295
+ error?: string;
296
+ };
297
+ }
298
+ declare function AdminAccountPage({ context, searchParams, }: AdminAccountPageProps): Promise<react.JSX.Element>;
299
+
300
+ interface AdminContentModelsPageProps {
301
+ context: AdminPageContext;
302
+ }
303
+ declare function AdminContentModelsPage({ context, }: AdminContentModelsPageProps): react.JSX.Element;
304
+
305
+ interface AdminDeleteButtonProps {
306
+ context: AdminPageContext;
307
+ slug: string;
308
+ title: string;
309
+ }
310
+ declare function AdminDeleteButton({ context, slug, title, }: AdminDeleteButtonProps): react.JSX.Element | null;
311
+
312
+ interface AdminDeleteButtonLazyProps {
313
+ context: AdminPageContext;
314
+ slug: string;
315
+ title: string;
316
+ }
317
+ declare function AdminDeleteButtonLazy(props: AdminDeleteButtonLazyProps): react.JSX.Element;
318
+
319
+ interface AdminLoadingPageProps {
320
+ context: AdminPageContext;
321
+ }
322
+ declare function AdminLoadingPage({ context }: AdminLoadingPageProps): react.JSX.Element;
323
+
324
+ export { AdminAccountPage as AccountPage, type AdminAccountPageProps, type AdminContentModelsPageProps, type AdminDashboardPageProps, type AdminDeleteButtonLazyProps, type AdminDeleteButtonProps, type AdminFormAction, type AdminLoadingPageProps, type AdminPageActions, type AdminPageContext, type AdminPageData, type AdminPageUI, type AdminSettingsPageProps, type AdminUsersPageProps, type ContentModelAdminSummary, AdminContentModelsPage as ContentModelsPage, AdminDashboardPage as DashboardPage, AdminDeleteButton as DeleteButton, AdminDeleteButtonLazy as DeleteButtonLazy, AdminLoadingPage as LoadingPage, AdminSettingsPage as SettingsPage, AdminUsersPage as UsersPage };