@ampless/admin 0.2.0-alpha.2 → 0.2.0-alpha.20

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 (49) hide show
  1. package/README.ja.md +73 -0
  2. package/README.md +3 -0
  3. package/dist/api/index.d.ts +1 -1
  4. package/dist/chunk-2ITWLRYF.js +38 -0
  5. package/dist/chunk-5JKOPRCO.js +41 -0
  6. package/dist/chunk-5Q6KVRZ2.js +250 -0
  7. package/dist/chunk-7IR4F7GA.js +6 -0
  8. package/dist/chunk-A3SWBQA6.js +71 -0
  9. package/dist/chunk-BC4B6DLO.js +21 -0
  10. package/dist/chunk-CQY55RDG.js +48 -0
  11. package/dist/chunk-CVJCMTYB.js +1197 -0
  12. package/dist/chunk-IM5MVZOH.js +1260 -0
  13. package/dist/chunk-JOASK4AM.js +360 -0
  14. package/dist/{chunk-TJR3ALRJ.js → chunk-OSUTPPAU.js} +171 -68
  15. package/dist/chunk-QXJIIBUQ.js +21 -0
  16. package/dist/chunk-S66L5CDS.js +335 -0
  17. package/dist/chunk-SRNH2IVA.js +149 -0
  18. package/dist/chunk-TZWSXAHD.js +32 -0
  19. package/dist/chunk-VXEVLHGL.js +10 -0
  20. package/dist/chunk-W6BXESPW.js +198 -0
  21. package/dist/chunk-XY4JWSMS.js +33 -0
  22. package/dist/components/admin-dashboard.d.ts +10 -0
  23. package/dist/components/admin-dashboard.js +9 -0
  24. package/dist/components/edit-post-view.d.ts +9 -0
  25. package/dist/components/edit-post-view.js +14 -0
  26. package/dist/components/index.d.ts +40 -21
  27. package/dist/components/index.js +32 -15
  28. package/dist/components/login-view.d.ts +5 -0
  29. package/dist/components/login-view.js +9 -0
  30. package/dist/components/mcp-tokens-view.d.ts +22 -0
  31. package/dist/components/mcp-tokens-view.js +9 -0
  32. package/dist/components/media-view.d.ts +5 -0
  33. package/dist/components/media-view.js +12 -0
  34. package/dist/components/new-post-view.d.ts +5 -0
  35. package/dist/components/new-post-view.js +14 -0
  36. package/dist/components/posts-list-view.d.ts +5 -0
  37. package/dist/components/posts-list-view.js +11 -0
  38. package/dist/components/users-list-view.d.ts +7 -0
  39. package/dist/components/users-list-view.js +9 -0
  40. package/dist/{i18n-ByHM_Bho.d.ts → i18n-MWvAMHzn.d.ts} +253 -2
  41. package/dist/index.d.ts +14 -9
  42. package/dist/index.js +18 -10
  43. package/dist/lib/theme-actions.d.ts +17 -0
  44. package/dist/lib/theme-actions.js +7 -0
  45. package/dist/metafile-esm.json +1 -1
  46. package/dist/pages/index.d.ts +67 -15
  47. package/dist/pages/index.js +147 -659
  48. package/package.json +12 -9
  49. package/dist/chunk-T2RSMFOI.js +0 -2074
@@ -0,0 +1,198 @@
1
+ 'use client';
2
+ import {
3
+ useT
4
+ } from "./chunk-XY4JWSMS.js";
5
+
6
+ // src/components/login-view.tsx
7
+ import { useState } from "react";
8
+ import { useRouter } from "next/navigation";
9
+ import {
10
+ signIn,
11
+ signUp,
12
+ confirmSignUp,
13
+ resetPassword,
14
+ confirmResetPassword
15
+ } from "aws-amplify/auth";
16
+ import {
17
+ Button,
18
+ Input,
19
+ Label,
20
+ Card,
21
+ CardContent,
22
+ CardHeader,
23
+ CardTitle,
24
+ CardDescription
25
+ } from "@ampless/runtime/ui";
26
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
27
+ function LoginPage() {
28
+ const router = useRouter();
29
+ const t = useT();
30
+ const [mode, setMode] = useState("signIn");
31
+ const [email, setEmail] = useState("");
32
+ const [password, setPassword] = useState("");
33
+ const [code, setCode] = useState("");
34
+ const [error, setError] = useState(null);
35
+ const [info, setInfo] = useState(null);
36
+ const [loading, setLoading] = useState(false);
37
+ function go(next) {
38
+ setMode(next);
39
+ setError(null);
40
+ setInfo(null);
41
+ setCode("");
42
+ if (next === "signIn" || next === "signUp" || next === "forgot") setPassword("");
43
+ }
44
+ async function handleSubmit(e) {
45
+ e.preventDefault();
46
+ setError(null);
47
+ setInfo(null);
48
+ setLoading(true);
49
+ try {
50
+ if (mode === "signIn") {
51
+ const result = await signIn({ username: email, password });
52
+ if (result.isSignedIn) {
53
+ router.push("/admin");
54
+ router.refresh();
55
+ } else {
56
+ setError(t("auth.additionalStep", { step: result.nextStep.signInStep }));
57
+ }
58
+ } else if (mode === "signUp") {
59
+ await signUp({
60
+ username: email,
61
+ password,
62
+ options: { userAttributes: { email } }
63
+ });
64
+ go("confirm");
65
+ } else if (mode === "confirm") {
66
+ await confirmSignUp({ username: email, confirmationCode: code });
67
+ const result = await signIn({ username: email, password });
68
+ if (result.isSignedIn) {
69
+ router.push("/admin");
70
+ router.refresh();
71
+ }
72
+ } else if (mode === "forgot") {
73
+ await resetPassword({ username: email });
74
+ setMode("reset");
75
+ setInfo(t("auth.forgot.codeSent"));
76
+ } else if (mode === "reset") {
77
+ await confirmResetPassword({
78
+ username: email,
79
+ confirmationCode: code,
80
+ newPassword: password
81
+ });
82
+ const result = await signIn({ username: email, password });
83
+ if (result.isSignedIn) {
84
+ router.push("/admin");
85
+ router.refresh();
86
+ } else {
87
+ setMode("signIn");
88
+ setInfo(t("auth.reset.passwordUpdated"));
89
+ }
90
+ }
91
+ } catch (err) {
92
+ setError(err instanceof Error ? err.message : String(err));
93
+ } finally {
94
+ setLoading(false);
95
+ }
96
+ }
97
+ const showEmail = mode !== "confirm" && mode !== "reset";
98
+ const showPassword = mode === "signIn" || mode === "signUp" || mode === "reset";
99
+ const showCode = mode === "confirm" || mode === "reset";
100
+ return /* @__PURE__ */ jsx("main", { className: "flex min-h-screen items-center justify-center bg-muted/30 p-4", children: /* @__PURE__ */ jsxs(Card, { className: "w-full max-w-md", children: [
101
+ /* @__PURE__ */ jsxs(CardHeader, { children: [
102
+ /* @__PURE__ */ jsx(CardTitle, { children: t(`auth.${mode}.title`) }),
103
+ /* @__PURE__ */ jsx(CardDescription, { children: t(`auth.${mode}.description`) })
104
+ ] }),
105
+ /* @__PURE__ */ jsx(CardContent, { children: /* @__PURE__ */ jsxs("form", { onSubmit: handleSubmit, className: "space-y-4", children: [
106
+ showEmail && /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
107
+ /* @__PURE__ */ jsx(Label, { htmlFor: "email", children: t("auth.common.email") }),
108
+ /* @__PURE__ */ jsx(
109
+ Input,
110
+ {
111
+ id: "email",
112
+ type: "email",
113
+ required: true,
114
+ value: email,
115
+ onChange: (e) => setEmail(e.target.value),
116
+ autoComplete: "email"
117
+ }
118
+ )
119
+ ] }),
120
+ showCode && /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
121
+ /* @__PURE__ */ jsx(Label, { htmlFor: "code", children: t("auth.common.code") }),
122
+ /* @__PURE__ */ jsx(
123
+ Input,
124
+ {
125
+ id: "code",
126
+ required: true,
127
+ value: code,
128
+ onChange: (e) => setCode(e.target.value),
129
+ autoComplete: "one-time-code"
130
+ }
131
+ )
132
+ ] }),
133
+ showPassword && /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
134
+ /* @__PURE__ */ jsx(Label, { htmlFor: "password", children: mode === "reset" ? t("auth.common.newPassword") : t("auth.common.password") }),
135
+ /* @__PURE__ */ jsx(
136
+ Input,
137
+ {
138
+ id: "password",
139
+ type: "password",
140
+ required: true,
141
+ minLength: 8,
142
+ value: password,
143
+ onChange: (e) => setPassword(e.target.value),
144
+ autoComplete: mode === "signIn" ? "current-password" : "new-password"
145
+ }
146
+ ),
147
+ (mode === "signUp" || mode === "reset") && /* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground", children: t("auth.common.passwordHint") })
148
+ ] }),
149
+ info && /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: info }),
150
+ error && /* @__PURE__ */ jsx("p", { className: "text-sm text-destructive", children: error }),
151
+ /* @__PURE__ */ jsx(Button, { type: "submit", className: "w-full", disabled: loading, children: loading ? t("auth.common.working") : t(`auth.${mode}.submit`) }),
152
+ /* @__PURE__ */ jsxs("div", { className: "space-y-1 text-center text-sm", children: [
153
+ mode === "signIn" && /* @__PURE__ */ jsxs(Fragment, { children: [
154
+ /* @__PURE__ */ jsx("p", { children: /* @__PURE__ */ jsx(
155
+ "button",
156
+ {
157
+ type: "button",
158
+ className: "text-primary hover:underline",
159
+ onClick: () => go("forgot"),
160
+ children: t("auth.signIn.forgotPassword")
161
+ }
162
+ ) }),
163
+ /* @__PURE__ */ jsx("p", { children: /* @__PURE__ */ jsx(
164
+ "button",
165
+ {
166
+ type: "button",
167
+ className: "text-primary hover:underline",
168
+ onClick: () => go("signUp"),
169
+ children: t("auth.signIn.createAccount")
170
+ }
171
+ ) })
172
+ ] }),
173
+ (mode === "signUp" || mode === "forgot" || mode === "reset") && /* @__PURE__ */ jsx("p", { children: /* @__PURE__ */ jsx(
174
+ "button",
175
+ {
176
+ type: "button",
177
+ className: "text-primary hover:underline",
178
+ onClick: () => go("signIn"),
179
+ children: t("auth.signUp.backToSignIn")
180
+ }
181
+ ) }),
182
+ mode === "reset" && /* @__PURE__ */ jsx("p", { children: /* @__PURE__ */ jsx(
183
+ "button",
184
+ {
185
+ type: "button",
186
+ className: "text-primary hover:underline",
187
+ onClick: () => go("forgot"),
188
+ children: t("auth.reset.resendCode")
189
+ }
190
+ ) })
191
+ ] })
192
+ ] }) })
193
+ ] }) });
194
+ }
195
+
196
+ export {
197
+ LoginPage
198
+ };
@@ -0,0 +1,33 @@
1
+ 'use client';
2
+ import {
3
+ translate
4
+ } from "./chunk-OSUTPPAU.js";
5
+
6
+ // src/components/i18n-provider.tsx
7
+ import { createContext, useContext, useMemo } from "react";
8
+ import { jsx } from "react/jsx-runtime";
9
+ var I18nContext = createContext(null);
10
+ function I18nProvider({ locale, dict, children }) {
11
+ const value = useMemo(() => ({ locale, dict }), [locale, dict]);
12
+ return /* @__PURE__ */ jsx(I18nContext.Provider, { value, children });
13
+ }
14
+ function useT() {
15
+ const ctx = useContext(I18nContext);
16
+ if (!ctx) {
17
+ throw new Error(
18
+ "useT() called outside <I18nProvider>. Wrap the admin layout (or root layout) with <I18nProvider locale={...} dict={...}>."
19
+ );
20
+ }
21
+ return (key, vars) => translate(ctx.dict, key, vars);
22
+ }
23
+ function useLocale() {
24
+ const ctx = useContext(I18nContext);
25
+ if (!ctx) throw new Error("useLocale() called outside <I18nProvider>.");
26
+ return ctx.locale;
27
+ }
28
+
29
+ export {
30
+ I18nProvider,
31
+ useT,
32
+ useLocale
33
+ };
@@ -0,0 +1,10 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+
3
+ /**
4
+ * Admin home / dashboard. Lists post counts. Marked client-side because
5
+ * it reads from the AppSync client directly (no server-rendered query
6
+ * yet — listed posts come from Amplify SDK at mount time).
7
+ */
8
+ declare function AdminDashboard(): react_jsx_runtime.JSX.Element;
9
+
10
+ export { AdminDashboard };
@@ -0,0 +1,9 @@
1
+ "use client";
2
+ import {
3
+ AdminDashboard
4
+ } from "../chunk-CQY55RDG.js";
5
+ import "../chunk-XY4JWSMS.js";
6
+ import "../chunk-OSUTPPAU.js";
7
+ export {
8
+ AdminDashboard
9
+ };
@@ -0,0 +1,9 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+
3
+ declare function EditPostPage({ params }: {
4
+ params: Promise<{
5
+ postId: string;
6
+ }>;
7
+ }): react_jsx_runtime.JSX.Element;
8
+
9
+ export { EditPostPage };
@@ -0,0 +1,14 @@
1
+ "use client";
2
+ import {
3
+ EditPostPage
4
+ } from "../chunk-5JKOPRCO.js";
5
+ import "../chunk-CVJCMTYB.js";
6
+ import "../chunk-TZWSXAHD.js";
7
+ import "../chunk-7IR4F7GA.js";
8
+ import "../chunk-S66L5CDS.js";
9
+ import "../chunk-2ITWLRYF.js";
10
+ import "../chunk-XY4JWSMS.js";
11
+ import "../chunk-OSUTPPAU.js";
12
+ export {
13
+ EditPostPage
14
+ };
@@ -1,8 +1,9 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import { L as Locale, D as Dictionary } from '../i18n-ByHM_Bho.js';
2
+ import { L as Locale, D as Dictionary } from '../i18n-MWvAMHzn.js';
3
3
  import { Config, Post, ThemeManifest, LocalizedString, MediaProcessingDefaults } from 'ampless';
4
- import { AmplessOutputs } from '@ampless/runtime';
4
+ import { AmplessOutputs, ColorScheme } from '@ampless/runtime';
5
5
  import { ProcessOptions } from 'ampless/media';
6
+ export { invalidateSiteSettingsCache } from '../lib/theme-actions.js';
6
7
 
7
8
  interface ProviderProps {
8
9
  locale: Locale;
@@ -23,7 +24,33 @@ declare function useT(): (key: string, vars?: Record<string, string | number>) =
23
24
  /** Read the active locale from context (e.g. for `<html lang>` parity). */
24
25
  declare function useLocale(): Locale;
25
26
 
27
+ interface Props$3 {
28
+ outputs: AmplessOutputs;
29
+ cmsConfig: Config;
30
+ children: React.ReactNode;
31
+ }
32
+ /**
33
+ * Client-side admin bootstrap. Runs on first render of any admin route
34
+ * — configures the Amplify SDK, registers the cms.config / outputs in
35
+ * the client-side state modules, and installs the admin's posts / kv
36
+ * providers so 'ampless'-imported functions hit the AppSync client.
37
+ *
38
+ * All bootstrap calls happen synchronously during render, NOT in
39
+ * `useEffect`. React runs child useEffects before parent useEffects,
40
+ * so if `installAdminPostsProvider` were inside an effect, a child
41
+ * page's first `listPosts()` call (also in a useEffect) would race
42
+ * the install and fall back to ampless's dummy data. Synchronous
43
+ * registration guarantees the provider is in place before any child
44
+ * component mounts.
45
+ *
46
+ * All side effects are idempotent (the install functions guard with an
47
+ * `installed` flag) — mounting this multiple times (e.g. during HMR or
48
+ * remount) is safe.
49
+ */
50
+ declare function AdminProviders({ outputs, cmsConfig, children }: Props$3): react_jsx_runtime.JSX.Element;
51
+
26
52
  declare const ADMIN_SITE_COOKIE = "admin-site-id";
53
+
27
54
  /**
28
55
  * Register the cms.config for client-side multi-site lookups. Called
29
56
  * once from the admin layout factory.
@@ -80,26 +107,12 @@ declare function uploadProcessedImage(file: File, options: ProcessOptions): Prom
80
107
  url: string;
81
108
  }>;
82
109
 
83
- /**
84
- * Force-invalidate the Next.js fetch cache for a site's settings JSON.
85
- * Used by the admin theme switcher: writes to KvStore propagate to S3
86
- * via the trusted processor (~5-10s), and without this call the
87
- * `revalidate: 60` on the public-side fetch would keep serving the old
88
- * cached response for up to a minute after the rebuild.
89
- *
90
- * The cache tag matches the one used in `theme-active.ts` and
91
- * `theme-config.ts` (in `@ampless/runtime`): `site-settings:{siteId}`.
92
- *
93
- * Uses `updateTag` (Next 16+) — the read-your-own-writes variant of
94
- * the old `revalidateTag`, which is the right semantics inside a
95
- * server action (this entire module is `'use server'`).
96
- */
97
- declare function invalidateSiteSettingsCache(siteId: string): Promise<void>;
98
-
99
- declare function Sidebar({ email, siteSelector, }: {
110
+ declare function Sidebar({ email, siteSelector, isAdmin, }: {
100
111
  email: string;
101
112
  /** Rendered above the main nav in multi-site mode. */
102
113
  siteSelector?: React.ReactNode;
114
+ /** Gates `adminOnly` nav entries (user management). */
115
+ isAdmin: boolean;
103
116
  }): react_jsx_runtime.JSX.Element;
104
117
 
105
118
  interface SiteOption {
@@ -146,8 +159,14 @@ interface Props {
146
159
  themeOptions: ThemeOption[];
147
160
  /** Resolved values currently shown to the user (overrides ?? defaults). */
148
161
  initial: Record<string, string>;
162
+ /**
163
+ * Per-site color-scheme override loaded from the runtime. Independent
164
+ * of the manifest (it's a site-wide concern, not theme-specific).
165
+ * Defaults to `'auto'` when not provided.
166
+ */
167
+ initialColorScheme?: ColorScheme;
149
168
  }
150
- declare function ThemeSettingsForm({ siteId, manifest, activeTheme, themeOptions, initial, }: Props): react_jsx_runtime.JSX.Element;
169
+ declare function ThemeSettingsForm({ siteId, manifest, activeTheme, themeOptions, initial, initialColorScheme, }: Props): react_jsx_runtime.JSX.Element;
151
170
 
152
171
  declare function MediaUploader(): react_jsx_runtime.JSX.Element;
153
172
 
@@ -170,4 +189,4 @@ interface ImageUploadDialogProps {
170
189
  }
171
190
  declare function ImageUploadDialog({ file, remaining, busy, defaults, onConfirm, onSkip, onCancel, }: ImageUploadDialogProps): react_jsx_runtime.JSX.Element | null;
172
191
 
173
- export { ADMIN_SITE_COOKIE, I18nProvider, ImageUploadDialog, type ImageUploadDialogProps, MediaPicker, MediaUploader, PostForm, Sidebar, SiteSelector, SiteSettingsForm, type SiteSettingsFormValues, ThemeSettingsForm, invalidateSiteSettingsCache, publicMediaUrl, readAdminSiteIdFromCookie, sanitizeName, setAdminCmsConfig, setAdminMediaContext, uploadProcessedImage, useLocale, useT };
192
+ export { ADMIN_SITE_COOKIE, AdminProviders, I18nProvider, ImageUploadDialog, type ImageUploadDialogProps, MediaPicker, MediaUploader, PostForm, Sidebar, SiteSelector, SiteSettingsForm, type SiteSettingsFormValues, ThemeSettingsForm, publicMediaUrl, readAdminSiteIdFromCookie, sanitizeName, setAdminCmsConfig, setAdminMediaContext, uploadProcessedImage, useLocale, useT };
@@ -1,29 +1,46 @@
1
1
  'use client';
2
2
  import {
3
- I18nProvider,
4
- ImageUploadDialog,
5
- MediaPicker,
6
- MediaUploader,
7
- PostForm,
3
+ AdminProviders,
8
4
  Sidebar,
9
5
  SiteSelector,
10
6
  SiteSettingsForm,
11
- ThemeSettingsForm,
12
- invalidateSiteSettingsCache,
7
+ ThemeSettingsForm
8
+ } from "../chunk-IM5MVZOH.js";
9
+ import {
10
+ invalidateSiteSettingsCache
11
+ } from "../chunk-VXEVLHGL.js";
12
+ import {
13
+ MediaPicker,
14
+ PostForm,
13
15
  sanitizeName,
14
- uploadProcessedImage,
15
- useLocale,
16
- useT
17
- } from "../chunk-T2RSMFOI.js";
16
+ uploadProcessedImage
17
+ } from "../chunk-CVJCMTYB.js";
18
18
  import {
19
- ADMIN_SITE_COOKIE,
20
- publicMediaUrl,
21
19
  readAdminSiteIdFromCookie,
22
- setAdminCmsConfig,
20
+ setAdminCmsConfig
21
+ } from "../chunk-TZWSXAHD.js";
22
+ import {
23
+ ADMIN_SITE_COOKIE
24
+ } from "../chunk-7IR4F7GA.js";
25
+ import {
26
+ MediaUploader
27
+ } from "../chunk-5Q6KVRZ2.js";
28
+ import {
29
+ ImageUploadDialog
30
+ } from "../chunk-S66L5CDS.js";
31
+ import {
32
+ publicMediaUrl,
23
33
  setAdminMediaContext
24
- } from "../chunk-TJR3ALRJ.js";
34
+ } from "../chunk-2ITWLRYF.js";
35
+ import {
36
+ I18nProvider,
37
+ useLocale,
38
+ useT
39
+ } from "../chunk-XY4JWSMS.js";
40
+ import "../chunk-OSUTPPAU.js";
25
41
  export {
26
42
  ADMIN_SITE_COOKIE,
43
+ AdminProviders,
27
44
  I18nProvider,
28
45
  ImageUploadDialog,
29
46
  MediaPicker,
@@ -0,0 +1,5 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+
3
+ declare function LoginPage(): react_jsx_runtime.JSX.Element;
4
+
5
+ export { LoginPage };
@@ -0,0 +1,9 @@
1
+ "use client";
2
+ import {
3
+ LoginPage
4
+ } from "../chunk-W6BXESPW.js";
5
+ import "../chunk-XY4JWSMS.js";
6
+ import "../chunk-OSUTPPAU.js";
7
+ export {
8
+ LoginPage
9
+ };
@@ -0,0 +1,22 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+
3
+ interface SiteOption {
4
+ id: string;
5
+ name: string;
6
+ }
7
+ interface Props {
8
+ /** Cognito sub of the currently logged-in admin. */
9
+ currentUserId: string;
10
+ currentUserEmail: string;
11
+ /** Site list for the scope selector. Empty = single-site mode. */
12
+ sites: SiteOption[];
13
+ /**
14
+ * MCP HTTP endpoint URL (the `mcp-handler` Lambda Function URL).
15
+ * `null` when the project hasn't been deployed yet, so
16
+ * `amplify_outputs.json` doesn't have `custom.mcp.endpoint` populated.
17
+ */
18
+ mcpEndpoint: string | null;
19
+ }
20
+ declare function McpTokensView({ currentUserId, currentUserEmail, sites, mcpEndpoint }: Props): react_jsx_runtime.JSX.Element;
21
+
22
+ export { McpTokensView, type SiteOption };
@@ -0,0 +1,9 @@
1
+ "use client";
2
+ import {
3
+ McpTokensView
4
+ } from "../chunk-JOASK4AM.js";
5
+ import "../chunk-XY4JWSMS.js";
6
+ import "../chunk-OSUTPPAU.js";
7
+ export {
8
+ McpTokensView
9
+ };
@@ -0,0 +1,5 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+
3
+ declare function MediaPage(): react_jsx_runtime.JSX.Element;
4
+
5
+ export { MediaPage };
@@ -0,0 +1,12 @@
1
+ "use client";
2
+ import {
3
+ MediaPage
4
+ } from "../chunk-QXJIIBUQ.js";
5
+ import "../chunk-5Q6KVRZ2.js";
6
+ import "../chunk-S66L5CDS.js";
7
+ import "../chunk-2ITWLRYF.js";
8
+ import "../chunk-XY4JWSMS.js";
9
+ import "../chunk-OSUTPPAU.js";
10
+ export {
11
+ MediaPage
12
+ };
@@ -0,0 +1,5 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+
3
+ declare function NewPostPage(): react_jsx_runtime.JSX.Element;
4
+
5
+ export { NewPostPage };
@@ -0,0 +1,14 @@
1
+ "use client";
2
+ import {
3
+ NewPostPage
4
+ } from "../chunk-BC4B6DLO.js";
5
+ import "../chunk-CVJCMTYB.js";
6
+ import "../chunk-TZWSXAHD.js";
7
+ import "../chunk-7IR4F7GA.js";
8
+ import "../chunk-S66L5CDS.js";
9
+ import "../chunk-2ITWLRYF.js";
10
+ import "../chunk-XY4JWSMS.js";
11
+ import "../chunk-OSUTPPAU.js";
12
+ export {
13
+ NewPostPage
14
+ };
@@ -0,0 +1,5 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+
3
+ declare function PostsList(): react_jsx_runtime.JSX.Element;
4
+
5
+ export { PostsList };
@@ -0,0 +1,11 @@
1
+ "use client";
2
+ import {
3
+ PostsList
4
+ } from "../chunk-A3SWBQA6.js";
5
+ import "../chunk-TZWSXAHD.js";
6
+ import "../chunk-7IR4F7GA.js";
7
+ import "../chunk-XY4JWSMS.js";
8
+ import "../chunk-OSUTPPAU.js";
9
+ export {
10
+ PostsList
11
+ };
@@ -0,0 +1,7 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+
3
+ declare function UsersListView({ currentUserId }: {
4
+ currentUserId: string;
5
+ }): react_jsx_runtime.JSX.Element;
6
+
7
+ export { UsersListView };
@@ -0,0 +1,9 @@
1
+ "use client";
2
+ import {
3
+ UsersListView
4
+ } from "../chunk-SRNH2IVA.js";
5
+ import "../chunk-XY4JWSMS.js";
6
+ import "../chunk-OSUTPPAU.js";
7
+ export {
8
+ UsersListView
9
+ };