@ampless/admin 0.2.0-alpha.1 → 0.2.0-alpha.3

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.
@@ -0,0 +1,10 @@
1
+ 'use server';
2
+ // src/lib/theme-actions.ts
3
+ import { updateTag } from "next/cache";
4
+ async function invalidateSiteSettingsCache(siteId) {
5
+ updateTag(`site-settings:${siteId}`);
6
+ }
7
+
8
+ export {
9
+ invalidateSiteSettingsCache
10
+ };
@@ -2,7 +2,9 @@ import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { L as Locale, D as Dictionary } from '../i18n-ByHM_Bho.js';
3
3
  import { Config, Post, ThemeManifest, LocalizedString, MediaProcessingDefaults } from 'ampless';
4
4
  import { AmplessOutputs } from '@ampless/runtime';
5
+ export { A as AdminDashboard, E as EditPostPage, L as LoginPage, M as MediaPage, N as NewPostPage, P as PostsList } from '../login-view-BKrSZLJu.js';
5
6
  import { ProcessOptions } from 'ampless/media';
7
+ export { invalidateSiteSettingsCache } from '../lib/theme-actions.js';
6
8
 
7
9
  interface ProviderProps {
8
10
  locale: Locale;
@@ -23,7 +25,24 @@ declare function useT(): (key: string, vars?: Record<string, string | number>) =
23
25
  /** Read the active locale from context (e.g. for `<html lang>` parity). */
24
26
  declare function useLocale(): Locale;
25
27
 
28
+ interface Props$3 {
29
+ outputs: AmplessOutputs;
30
+ cmsConfig: Config;
31
+ children: React.ReactNode;
32
+ }
33
+ /**
34
+ * Client-side admin bootstrap. Runs on first render of any admin route
35
+ * — configures the Amplify SDK, registers the cms.config / outputs in
36
+ * the client-side state modules, and installs the admin's posts / kv
37
+ * providers so 'ampless'-imported functions hit the AppSync client.
38
+ *
39
+ * All side effects are idempotent; mounting this multiple times (e.g.
40
+ * during HMR) won't double-register anything.
41
+ */
42
+ declare function AdminProviders({ outputs, cmsConfig, children }: Props$3): react_jsx_runtime.JSX.Element;
43
+
26
44
  declare const ADMIN_SITE_COOKIE = "admin-site-id";
45
+
27
46
  /**
28
47
  * Register the cms.config for client-side multi-site lookups. Called
29
48
  * once from the admin layout factory.
@@ -80,22 +99,6 @@ declare function uploadProcessedImage(file: File, options: ProcessOptions): Prom
80
99
  url: string;
81
100
  }>;
82
101
 
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
102
  declare function Sidebar({ email, siteSelector, }: {
100
103
  email: string;
101
104
  /** Rendered above the main nav in multi-site mode. */
@@ -170,4 +173,4 @@ interface ImageUploadDialogProps {
170
173
  }
171
174
  declare function ImageUploadDialog({ file, remaining, busy, defaults, onConfirm, onSkip, onCancel, }: ImageUploadDialogProps): react_jsx_runtime.JSX.Element | null;
172
175
 
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 };
176
+ 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,33 +1,50 @@
1
+ 'use client';
1
2
  import {
3
+ AdminDashboard,
4
+ AdminProviders,
5
+ EditPostPage,
2
6
  I18nProvider,
3
7
  ImageUploadDialog,
8
+ LoginPage,
9
+ MediaPage,
4
10
  MediaPicker,
5
11
  MediaUploader,
12
+ NewPostPage,
6
13
  PostForm,
14
+ PostsList,
7
15
  Sidebar,
8
16
  SiteSelector,
9
17
  SiteSettingsForm,
10
18
  ThemeSettingsForm,
11
- invalidateSiteSettingsCache,
19
+ readAdminSiteIdFromCookie,
12
20
  sanitizeName,
21
+ setAdminCmsConfig,
13
22
  uploadProcessedImage,
14
23
  useLocale,
15
24
  useT
16
- } from "../chunk-T2RSMFOI.js";
25
+ } from "../chunk-LYRCUL7H.js";
17
26
  import {
18
27
  ADMIN_SITE_COOKIE,
19
28
  publicMediaUrl,
20
- readAdminSiteIdFromCookie,
21
- setAdminCmsConfig,
22
29
  setAdminMediaContext
23
- } from "../chunk-TJR3ALRJ.js";
30
+ } from "../chunk-FI7CM4LH.js";
31
+ import {
32
+ invalidateSiteSettingsCache
33
+ } from "../chunk-VXEVLHGL.js";
24
34
  export {
25
35
  ADMIN_SITE_COOKIE,
36
+ AdminDashboard,
37
+ AdminProviders,
38
+ EditPostPage,
26
39
  I18nProvider,
27
40
  ImageUploadDialog,
41
+ LoginPage,
42
+ MediaPage,
28
43
  MediaPicker,
29
44
  MediaUploader,
45
+ NewPostPage,
30
46
  PostForm,
47
+ PostsList,
31
48
  Sidebar,
32
49
  SiteSelector,
33
50
  SiteSettingsForm,
package/dist/index.js CHANGED
@@ -4,7 +4,7 @@ import {
4
4
  getDictionary,
5
5
  resolveLocale,
6
6
  translate
7
- } from "./chunk-TJR3ALRJ.js";
7
+ } from "./chunk-FI7CM4LH.js";
8
8
 
9
9
  // src/lib/admin-site.ts
10
10
  import { cookies } from "next/headers";
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Force-invalidate the Next.js fetch cache for a site's settings JSON.
3
+ * Used by the admin theme switcher: writes to KvStore propagate to S3
4
+ * via the trusted processor (~5-10s), and without this call the
5
+ * `revalidate: 60` on the public-side fetch would keep serving the old
6
+ * cached response for up to a minute after the rebuild.
7
+ *
8
+ * The cache tag matches the one used in `theme-active.ts` and
9
+ * `theme-config.ts` (in `@ampless/runtime`): `site-settings:{siteId}`.
10
+ *
11
+ * Uses `updateTag` (Next 16+) — the read-your-own-writes variant of
12
+ * the old `revalidateTag`, which is the right semantics inside a
13
+ * server action (this entire module is `'use server'`).
14
+ */
15
+ declare function invalidateSiteSettingsCache(siteId: string): Promise<void>;
16
+
17
+ export { invalidateSiteSettingsCache };
@@ -0,0 +1,7 @@
1
+ "use server";
2
+ import {
3
+ invalidateSiteSettingsCache
4
+ } from "../chunk-VXEVLHGL.js";
5
+ export {
6
+ invalidateSiteSettingsCache
7
+ };
@@ -0,0 +1,24 @@
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
+ declare function PostsList(): react_jsx_runtime.JSX.Element;
11
+
12
+ declare function NewPostPage(): react_jsx_runtime.JSX.Element;
13
+
14
+ declare function EditPostPage({ params }: {
15
+ params: Promise<{
16
+ postId: string;
17
+ }>;
18
+ }): react_jsx_runtime.JSX.Element;
19
+
20
+ declare function MediaPage(): react_jsx_runtime.JSX.Element;
21
+
22
+ declare function LoginPage(): react_jsx_runtime.JSX.Element;
23
+
24
+ export { AdminDashboard as A, EditPostPage as E, LoginPage as L, MediaPage as M, NewPostPage as N, PostsList as P };
@@ -0,0 +1 @@
1
+ {"inputs":{"src/locales/en.json":{"bytes":7568,"imports":[]},"src/locales/ja.json":{"bytes":9476,"imports":[]},"src/lib/i18n.ts":{"bytes":2935,"imports":[{"path":"src/locales/en.json","kind":"import-statement","original":"../locales/en.json"},{"path":"src/locales/ja.json","kind":"import-statement","original":"../locales/ja.json"}],"format":"esm"},"src/lib/media.ts":{"bytes":3109,"imports":[],"format":"esm"},"src/lib/admin-site-cookie.ts":{"bytes":420,"imports":[],"format":"esm"},"src/lib/admin-site.ts":{"bytes":1353,"imports":[{"path":"next/headers","kind":"import-statement","external":true},{"path":"ampless","kind":"import-statement","external":true},{"path":"src/lib/admin-site-cookie.ts","kind":"import-statement","original":"./admin-site-cookie.js"}],"format":"esm"},"src/lib/amplify-server.ts":{"bytes":593,"imports":[{"path":"@aws-amplify/adapter-nextjs","kind":"import-statement","external":true}],"format":"esm"},"src/lib/auth-server.ts":{"bytes":1678,"imports":[{"path":"next/headers","kind":"import-statement","external":true},{"path":"aws-amplify/auth/server","kind":"import-statement","external":true}],"format":"esm"},"src/index.ts":{"bytes":5110,"imports":[{"path":"src/lib/i18n.ts","kind":"import-statement","original":"./lib/i18n.js"},{"path":"src/lib/media.ts","kind":"import-statement","original":"./lib/media.js"},{"path":"src/lib/admin-site.ts","kind":"import-statement","original":"./lib/admin-site.js"},{"path":"src/lib/amplify-server.ts","kind":"import-statement","original":"./lib/amplify-server.js"},{"path":"src/lib/auth-server.ts","kind":"import-statement","original":"./lib/auth-server.js"},{"path":"src/lib/i18n.ts","kind":"import-statement","original":"./lib/i18n.js"}],"format":"esm"},"src/api/media-proxy.ts":{"bytes":2196,"imports":[{"path":"next/server","kind":"import-statement","external":true},{"path":"next/headers","kind":"import-statement","external":true},{"path":"aws-amplify/storage/server","kind":"import-statement","external":true}],"format":"esm"},"src/api/index.ts":{"bytes":562,"imports":[{"path":"src/api/media-proxy.ts","kind":"import-statement","original":"./media-proxy.js"}],"format":"esm"},"src/components/i18n-provider.tsx":{"bytes":1526,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"src/lib/i18n.ts","kind":"import-statement","original":"../lib/i18n.js"},{"path":"react/jsx-runtime","kind":"import-statement","external":true}],"format":"esm"},"src/lib/amplify-client.ts":{"bytes":612,"imports":[{"path":"aws-amplify","kind":"import-statement","external":true}],"format":"esm"},"src/lib/posts-provider.ts":{"bytes":9743,"imports":[{"path":"aws-amplify/api","kind":"import-statement","external":true},{"path":"ampless","kind":"import-statement","external":true}],"format":"esm"},"src/lib/kv-provider.ts":{"bytes":4538,"imports":[{"path":"aws-amplify/api","kind":"import-statement","external":true},{"path":"ampless","kind":"import-statement","external":true}],"format":"esm"},"src/lib/admin-site-client.ts":{"bytes":1745,"imports":[{"path":"ampless","kind":"import-statement","external":true},{"path":"src/lib/admin-site-cookie.ts","kind":"import-statement","original":"./admin-site-cookie.js"},{"path":"src/lib/admin-site-cookie.ts","kind":"import-statement","original":"./admin-site-cookie.js"}],"format":"esm"},"src/lib/admin-config-client.ts":{"bytes":626,"imports":[],"format":"esm"},"src/components/admin-providers.tsx":{"bytes":1706,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"src/lib/amplify-client.ts","kind":"import-statement","original":"../lib/amplify-client.js"},{"path":"src/lib/posts-provider.ts","kind":"import-statement","original":"../lib/posts-provider.js"},{"path":"src/lib/kv-provider.ts","kind":"import-statement","original":"../lib/kv-provider.js"},{"path":"src/lib/admin-site-client.ts","kind":"import-statement","original":"../lib/admin-site-client.js"},{"path":"src/lib/admin-config-client.ts","kind":"import-statement","original":"../lib/admin-config-client.js"},{"path":"src/lib/media.ts","kind":"import-statement","original":"../lib/media.js"},{"path":"react/jsx-runtime","kind":"import-statement","external":true}],"format":"esm"},"src/components/admin-dashboard.tsx":{"bytes":2180,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"next/link","kind":"import-statement","external":true},{"path":"ampless","kind":"import-statement","external":true},{"path":"@ampless/runtime/ui","kind":"import-statement","external":true},{"path":"src/components/i18n-provider.tsx","kind":"import-statement","original":"./i18n-provider.js"},{"path":"react/jsx-runtime","kind":"import-statement","external":true}],"format":"esm"},"src/components/posts-list-view.tsx":{"bytes":3254,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"next/link","kind":"import-statement","external":true},{"path":"ampless","kind":"import-statement","external":true},{"path":"src/lib/admin-site-client.ts","kind":"import-statement","original":"../lib/admin-site-client.js"},{"path":"@ampless/runtime/ui","kind":"import-statement","external":true},{"path":"src/components/i18n-provider.tsx","kind":"import-statement","original":"./i18n-provider.js"},{"path":"react/jsx-runtime","kind":"import-statement","external":true}],"format":"esm"},"src/lib/upload.ts":{"bytes":1490,"imports":[{"path":"aws-amplify/storage","kind":"import-statement","external":true},{"path":"ampless/media","kind":"import-statement","external":true},{"path":"src/lib/media.ts","kind":"import-statement","original":"./media.js"}],"format":"esm"},"src/components/image-upload-dialog.tsx":{"bytes":14701,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"react-image-crop","kind":"import-statement","external":true},{"path":"react-image-crop/dist/ReactCrop.css","kind":"import-statement","external":true},{"path":"ampless/media","kind":"import-statement","external":true},{"path":"@ampless/runtime/ui","kind":"import-statement","external":true},{"path":"src/components/i18n-provider.tsx","kind":"import-statement","original":"./i18n-provider.js"},{"path":"react/jsx-runtime","kind":"import-statement","external":true}],"format":"esm"},"src/components/media-picker.tsx":{"bytes":5261,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"aws-amplify/storage","kind":"import-statement","external":true},{"path":"lucide-react","kind":"import-statement","external":true},{"path":"@ampless/runtime/ui","kind":"import-statement","external":true},{"path":"src/lib/media.ts","kind":"import-statement","original":"../lib/media.js"},{"path":"src/lib/upload.ts","kind":"import-statement","original":"../lib/upload.js"},{"path":"src/components/image-upload-dialog.tsx","kind":"import-statement","original":"./image-upload-dialog.js"},{"path":"src/lib/admin-config-client.ts","kind":"import-statement","original":"../lib/admin-config-client.js"},{"path":"src/components/i18n-provider.tsx","kind":"import-statement","original":"./i18n-provider.js"},{"path":"react/jsx-runtime","kind":"import-statement","external":true}],"format":"esm"},"src/editor/toolbar.tsx":{"bytes":3072,"imports":[{"path":"lucide-react","kind":"import-statement","external":true},{"path":"@ampless/runtime/ui","kind":"import-statement","external":true},{"path":"src/components/media-picker.tsx","kind":"import-statement","original":"../components/media-picker.js"},{"path":"src/components/i18n-provider.tsx","kind":"import-statement","original":"../components/i18n-provider.js"},{"path":"react/jsx-runtime","kind":"import-statement","external":true}],"format":"esm"},"src/editor/image-bubble-menu.tsx":{"bytes":2716,"imports":[{"path":"@tiptap/react","kind":"import-statement","external":true},{"path":"@tiptap/react/menus","kind":"import-statement","external":true},{"path":"lucide-react","kind":"import-statement","external":true},{"path":"@ampless/runtime/ui","kind":"import-statement","external":true},{"path":"src/components/i18n-provider.tsx","kind":"import-statement","original":"../components/i18n-provider.js"},{"path":"react/jsx-runtime","kind":"import-statement","external":true}],"format":"esm"},"src/editor/tiptap-editor.tsx":{"bytes":2323,"imports":[{"path":"@tiptap/react","kind":"import-statement","external":true},{"path":"@tiptap/starter-kit","kind":"import-statement","external":true},{"path":"@tiptap/extension-link","kind":"import-statement","external":true},{"path":"@tiptap/extension-image","kind":"import-statement","external":true},{"path":"src/editor/toolbar.tsx","kind":"import-statement","original":"./toolbar.js"},{"path":"src/editor/image-bubble-menu.tsx","kind":"import-statement","original":"./image-bubble-menu.js"},{"path":"react/jsx-runtime","kind":"import-statement","external":true}],"format":"esm"},"src/components/post-form.tsx":{"bytes":14850,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"next/navigation","kind":"import-statement","external":true},{"path":"lucide-react","kind":"import-statement","external":true},{"path":"ampless","kind":"import-statement","external":true},{"path":"@ampless/runtime","kind":"import-statement","external":true},{"path":"src/lib/admin-site-client.ts","kind":"import-statement","original":"../lib/admin-site-client.js"},{"path":"@ampless/runtime/ui","kind":"import-statement","external":true},{"path":"src/editor/tiptap-editor.tsx","kind":"import-statement","original":"../editor/tiptap-editor.js"},{"path":"src/components/media-picker.tsx","kind":"import-statement","original":"./media-picker.js"},{"path":"src/components/i18n-provider.tsx","kind":"import-statement","original":"./i18n-provider.js"},{"path":"react/jsx-runtime","kind":"import-statement","external":true}],"format":"esm"},"src/components/new-post-view.tsx":{"bytes":301,"imports":[{"path":"src/components/post-form.tsx","kind":"import-statement","original":"./post-form.js"},{"path":"src/components/i18n-provider.tsx","kind":"import-statement","original":"./i18n-provider.js"},{"path":"react/jsx-runtime","kind":"import-statement","external":true}],"format":"esm"},"src/components/edit-post-view.tsx":{"bytes":1116,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"next/navigation","kind":"import-statement","external":true},{"path":"ampless","kind":"import-statement","external":true},{"path":"src/lib/admin-site-client.ts","kind":"import-statement","original":"../lib/admin-site-client.js"},{"path":"src/components/post-form.tsx","kind":"import-statement","original":"./post-form.js"},{"path":"src/components/i18n-provider.tsx","kind":"import-statement","original":"./i18n-provider.js"},{"path":"react/jsx-runtime","kind":"import-statement","external":true}],"format":"esm"},"src/components/media-uploader.tsx":{"bytes":10866,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"aws-amplify/storage","kind":"import-statement","external":true},{"path":"ampless/media","kind":"import-statement","external":true},{"path":"@ampless/runtime/ui","kind":"import-statement","external":true},{"path":"lucide-react","kind":"import-statement","external":true},{"path":"src/lib/media.ts","kind":"import-statement","original":"../lib/media.js"},{"path":"src/lib/admin-config-client.ts","kind":"import-statement","original":"../lib/admin-config-client.js"},{"path":"src/components/image-upload-dialog.tsx","kind":"import-statement","original":"./image-upload-dialog.js"},{"path":"src/components/i18n-provider.tsx","kind":"import-statement","original":"./i18n-provider.js"},{"path":"react/jsx-runtime","kind":"import-statement","external":true}],"format":"esm"},"src/components/media-view.tsx":{"bytes":306,"imports":[{"path":"src/components/media-uploader.tsx","kind":"import-statement","original":"./media-uploader.js"},{"path":"src/components/i18n-provider.tsx","kind":"import-statement","original":"./i18n-provider.js"},{"path":"react/jsx-runtime","kind":"import-statement","external":true}],"format":"esm"},"src/components/login-view.tsx":{"bytes":7062,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"next/navigation","kind":"import-statement","external":true},{"path":"aws-amplify/auth","kind":"import-statement","external":true},{"path":"@ampless/runtime/ui","kind":"import-statement","external":true},{"path":"src/components/i18n-provider.tsx","kind":"import-statement","original":"./i18n-provider.js"},{"path":"react/jsx-runtime","kind":"import-statement","external":true}],"format":"esm"},"src/lib/theme-actions.ts":{"bytes":858,"imports":[{"path":"next/cache","kind":"import-statement","external":true}],"format":"esm"},"src/components/sidebar.tsx":{"bytes":2723,"imports":[{"path":"next/link","kind":"import-statement","external":true},{"path":"next/navigation","kind":"import-statement","external":true},{"path":"aws-amplify/auth","kind":"import-statement","external":true},{"path":"lucide-react","kind":"import-statement","external":true},{"path":"@ampless/runtime/ui","kind":"import-statement","external":true},{"path":"src/components/i18n-provider.tsx","kind":"import-statement","original":"./i18n-provider.js"},{"path":"react/jsx-runtime","kind":"import-statement","external":true}],"format":"esm"},"src/components/site-selector.tsx":{"bytes":1324,"imports":[{"path":"next/navigation","kind":"import-statement","external":true},{"path":"src/lib/admin-site-client.ts","kind":"import-statement","original":"../lib/admin-site-client.js"},{"path":"src/components/i18n-provider.tsx","kind":"import-statement","original":"./i18n-provider.js"},{"path":"react/jsx-runtime","kind":"import-statement","external":true}],"format":"esm"},"src/components/site-settings-form.tsx":{"bytes":6542,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"next/navigation","kind":"import-statement","external":true},{"path":"ampless","kind":"import-statement","external":true},{"path":"@ampless/runtime/ui","kind":"import-statement","external":true},{"path":"src/components/i18n-provider.tsx","kind":"import-statement","original":"./i18n-provider.js"},{"path":"react/jsx-runtime","kind":"import-statement","external":true}],"format":"esm"},"src/components/theme-settings-form.tsx":{"bytes":21046,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"next/navigation","kind":"import-statement","external":true},{"path":"ampless","kind":"import-statement","external":true},{"path":"@ampless/runtime/ui","kind":"import-statement","external":true},{"path":"src/lib/theme-actions.ts","kind":"import-statement","original":"../lib/theme-actions.js"},{"path":"src/components/i18n-provider.tsx","kind":"import-statement","original":"./i18n-provider.js"},{"path":"react/jsx-runtime","kind":"import-statement","external":true}],"format":"esm"},"src/components/index.ts":{"bytes":1996,"imports":[{"path":"src/components/i18n-provider.tsx","kind":"import-statement","original":"./i18n-provider.js"},{"path":"src/components/admin-providers.tsx","kind":"import-statement","original":"./admin-providers.js"},{"path":"src/components/admin-dashboard.tsx","kind":"import-statement","original":"./admin-dashboard.js"},{"path":"src/components/posts-list-view.tsx","kind":"import-statement","original":"./posts-list-view.js"},{"path":"src/components/new-post-view.tsx","kind":"import-statement","original":"./new-post-view.js"},{"path":"src/components/edit-post-view.tsx","kind":"import-statement","original":"./edit-post-view.js"},{"path":"src/components/media-view.tsx","kind":"import-statement","original":"./media-view.js"},{"path":"src/components/login-view.tsx","kind":"import-statement","original":"./login-view.js"},{"path":"src/lib/admin-site-client.ts","kind":"import-statement","original":"../lib/admin-site-client.js"},{"path":"src/lib/media.ts","kind":"import-statement","original":"../lib/media.js"},{"path":"src/lib/upload.ts","kind":"import-statement","original":"../lib/upload.js"},{"path":"src/lib/theme-actions.ts","kind":"import-statement","original":"../lib/theme-actions.js"},{"path":"src/components/sidebar.tsx","kind":"import-statement","original":"./sidebar.js"},{"path":"src/components/site-selector.tsx","kind":"import-statement","original":"./site-selector.js"},{"path":"src/components/post-form.tsx","kind":"import-statement","original":"./post-form.js"},{"path":"src/components/site-settings-form.tsx","kind":"import-statement","original":"./site-settings-form.js"},{"path":"src/components/theme-settings-form.tsx","kind":"import-statement","original":"./theme-settings-form.js"},{"path":"src/components/media-uploader.tsx","kind":"import-statement","original":"./media-uploader.js"},{"path":"src/components/media-picker.tsx","kind":"import-statement","original":"./media-picker.js"},{"path":"src/components/image-upload-dialog.tsx","kind":"import-statement","original":"./image-upload-dialog.js"}],"format":"esm"},"src/pages/admin-layout.tsx":{"bytes":1682,"imports":[{"path":"next/navigation","kind":"import-statement","external":true},{"path":"src/components/i18n-provider.tsx","kind":"import-statement","original":"../components/i18n-provider.js"},{"path":"src/components/sidebar.tsx","kind":"import-statement","original":"../components/sidebar.js"},{"path":"src/components/site-selector.tsx","kind":"import-statement","original":"../components/site-selector.js"},{"path":"src/components/admin-providers.tsx","kind":"import-statement","original":"../components/admin-providers.js"},{"path":"react/jsx-runtime","kind":"import-statement","external":true}],"format":"esm"},"src/pages/dashboard.tsx":{"bytes":448,"imports":[{"path":"src/components/admin-dashboard.tsx","kind":"import-statement","original":"../components/admin-dashboard.js"}],"format":"esm"},"src/pages/posts-list.tsx":{"bytes":382,"imports":[{"path":"src/components/posts-list-view.tsx","kind":"import-statement","original":"../components/posts-list-view.js"}],"format":"esm"},"src/pages/post-new.tsx":{"bytes":385,"imports":[{"path":"src/components/new-post-view.tsx","kind":"import-statement","original":"../components/new-post-view.js"}],"format":"esm"},"src/pages/post-edit.tsx":{"bytes":390,"imports":[{"path":"src/components/edit-post-view.tsx","kind":"import-statement","original":"../components/edit-post-view.js"}],"format":"esm"},"src/pages/media.tsx":{"bytes":381,"imports":[{"path":"src/components/media-view.tsx","kind":"import-statement","original":"../components/media-view.js"}],"format":"esm"},"src/pages/sites-list.tsx":{"bytes":2665,"imports":[{"path":"next/link","kind":"import-statement","external":true},{"path":"ampless","kind":"import-statement","external":true},{"path":"@ampless/runtime/ui","kind":"import-statement","external":true},{"path":"react/jsx-runtime","kind":"import-statement","external":true}],"format":"esm"},"src/pages/site-edit.tsx":{"bytes":2396,"imports":[{"path":"next/link","kind":"import-statement","external":true},{"path":"ampless","kind":"import-statement","external":true},{"path":"src/components/site-settings-form.tsx","kind":"import-statement","original":"../components/site-settings-form.js"},{"path":"react/jsx-runtime","kind":"import-statement","external":true}],"format":"esm"},"src/pages/site-theme.tsx":{"bytes":2201,"imports":[{"path":"next/link","kind":"import-statement","external":true},{"path":"ampless","kind":"import-statement","external":true},{"path":"src/components/theme-settings-form.tsx","kind":"import-statement","original":"../components/theme-settings-form.js"},{"path":"react/jsx-runtime","kind":"import-statement","external":true}],"format":"esm"},"src/pages/login.tsx":{"bytes":400,"imports":[{"path":"src/components/login-view.tsx","kind":"import-statement","original":"../components/login-view.js"}],"format":"esm"},"src/pages/index.ts":{"bytes":1338,"imports":[{"path":"src/pages/admin-layout.tsx","kind":"import-statement","original":"./admin-layout.js"},{"path":"src/pages/dashboard.tsx","kind":"import-statement","original":"./dashboard.js"},{"path":"src/pages/posts-list.tsx","kind":"import-statement","original":"./posts-list.js"},{"path":"src/pages/post-new.tsx","kind":"import-statement","original":"./post-new.js"},{"path":"src/pages/post-edit.tsx","kind":"import-statement","original":"./post-edit.js"},{"path":"src/pages/media.tsx","kind":"import-statement","original":"./media.js"},{"path":"src/pages/sites-list.tsx","kind":"import-statement","original":"./sites-list.js"},{"path":"src/pages/site-edit.tsx","kind":"import-statement","original":"./site-edit.js"},{"path":"src/pages/site-theme.tsx","kind":"import-statement","original":"./site-theme.js"},{"path":"src/pages/login.tsx","kind":"import-statement","original":"./login.js"}],"format":"esm"}},"outputs":{"dist/index.js":{"imports":[{"path":"dist/chunk-FI7CM4LH.js","kind":"import-statement"},{"path":"next/headers","kind":"import-statement","external":true},{"path":"ampless","kind":"import-statement","external":true},{"path":"@aws-amplify/adapter-nextjs","kind":"import-statement","external":true},{"path":"next/headers","kind":"import-statement","external":true},{"path":"aws-amplify/auth/server","kind":"import-statement","external":true}],"exports":["createAdmin","getDictionary","resolveLocale","translate"],"entryPoint":"src/index.ts","inputs":{"src/lib/admin-site.ts":{"bytesInOutput":732},"src/lib/amplify-server.ts":{"bytesInOutput":164},"src/lib/auth-server.ts":{"bytesInOutput":1165},"src/index.ts":{"bytesInOutput":1312}},"bytes":3667},"dist/api/index.js":{"imports":[{"path":"next/server","kind":"import-statement","external":true},{"path":"next/headers","kind":"import-statement","external":true},{"path":"aws-amplify/storage/server","kind":"import-statement","external":true}],"exports":["createMediaProxyRoute"],"entryPoint":"src/api/index.ts","inputs":{"src/api/media-proxy.ts":{"bytesInOutput":1318},"src/api/index.ts":{"bytesInOutput":0}},"bytes":1380},"dist/components/index.js":{"imports":[{"path":"dist/chunk-LYRCUL7H.js","kind":"import-statement"},{"path":"dist/chunk-FI7CM4LH.js","kind":"import-statement"},{"path":"dist/chunk-VXEVLHGL.js","kind":"import-statement"}],"exports":["ADMIN_SITE_COOKIE","AdminDashboard","AdminProviders","EditPostPage","I18nProvider","ImageUploadDialog","LoginPage","MediaPage","MediaPicker","MediaUploader","NewPostPage","PostForm","PostsList","Sidebar","SiteSelector","SiteSettingsForm","ThemeSettingsForm","invalidateSiteSettingsCache","publicMediaUrl","readAdminSiteIdFromCookie","sanitizeName","setAdminCmsConfig","setAdminMediaContext","uploadProcessedImage","useLocale","useT"],"entryPoint":"src/components/index.ts","inputs":{"src/components/index.ts":{"bytesInOutput":0}},"bytes":1048},"dist/lib/theme-actions.js":{"imports":[{"path":"dist/chunk-VXEVLHGL.js","kind":"import-statement"}],"exports":["invalidateSiteSettingsCache"],"entryPoint":"src/lib/theme-actions.ts","inputs":{},"bytes":126},"dist/pages/index.js":{"imports":[{"path":"dist/chunk-LYRCUL7H.js","kind":"import-statement"},{"path":"dist/chunk-FI7CM4LH.js","kind":"import-statement"},{"path":"dist/chunk-VXEVLHGL.js","kind":"import-statement"},{"path":"next/navigation","kind":"import-statement","external":true},{"path":"react/jsx-runtime","kind":"import-statement","external":true},{"path":"next/link","kind":"import-statement","external":true},{"path":"ampless","kind":"import-statement","external":true},{"path":"@ampless/runtime/ui","kind":"import-statement","external":true},{"path":"react/jsx-runtime","kind":"import-statement","external":true},{"path":"next/link","kind":"import-statement","external":true},{"path":"ampless","kind":"import-statement","external":true},{"path":"react/jsx-runtime","kind":"import-statement","external":true},{"path":"next/link","kind":"import-statement","external":true},{"path":"ampless","kind":"import-statement","external":true},{"path":"react/jsx-runtime","kind":"import-statement","external":true}],"exports":["createAdminDashboardPage","createAdminLayout","createEditPostPage","createLoginPage","createMediaPage","createNewPostPage","createPostsListPage","createSiteEditPage","createSiteThemePage","createSitesListPage"],"entryPoint":"src/pages/index.ts","inputs":{"src/pages/admin-layout.tsx":{"bytesInOutput":997},"src/pages/index.ts":{"bytesInOutput":0},"src/pages/dashboard.tsx":{"bytesInOutput":71},"src/pages/posts-list.tsx":{"bytesInOutput":61},"src/pages/post-new.tsx":{"bytesInOutput":61},"src/pages/post-edit.tsx":{"bytesInOutput":63},"src/pages/media.tsx":{"bytesInOutput":57},"src/pages/sites-list.tsx":{"bytesInOutput":2624},"src/pages/site-edit.tsx":{"bytesInOutput":2296},"src/pages/site-theme.tsx":{"bytesInOutput":1737},"src/pages/login.tsx":{"bytesInOutput":57}},"bytes":8824},"dist/chunk-LYRCUL7H.js":{"imports":[{"path":"dist/chunk-FI7CM4LH.js","kind":"import-statement"},{"path":"dist/chunk-VXEVLHGL.js","kind":"import-statement"},{"path":"react","kind":"import-statement","external":true},{"path":"react/jsx-runtime","kind":"import-statement","external":true},{"path":"ampless","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"aws-amplify","kind":"import-statement","external":true},{"path":"aws-amplify/api","kind":"import-statement","external":true},{"path":"ampless","kind":"import-statement","external":true},{"path":"aws-amplify/api","kind":"import-statement","external":true},{"path":"ampless","kind":"import-statement","external":true},{"path":"react/jsx-runtime","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"next/link","kind":"import-statement","external":true},{"path":"ampless","kind":"import-statement","external":true},{"path":"@ampless/runtime/ui","kind":"import-statement","external":true},{"path":"react/jsx-runtime","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"next/link","kind":"import-statement","external":true},{"path":"ampless","kind":"import-statement","external":true},{"path":"@ampless/runtime/ui","kind":"import-statement","external":true},{"path":"react/jsx-runtime","kind":"import-statement","external":true},{"path":"aws-amplify/storage","kind":"import-statement","external":true},{"path":"ampless/media","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react-image-crop","kind":"import-statement","external":true},{"path":"react-image-crop/dist/ReactCrop.css","kind":"import-statement","external":true},{"path":"ampless/media","kind":"import-statement","external":true},{"path":"@ampless/runtime/ui","kind":"import-statement","external":true},{"path":"react/jsx-runtime","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"aws-amplify/storage","kind":"import-statement","external":true},{"path":"lucide-react","kind":"import-statement","external":true},{"path":"@ampless/runtime/ui","kind":"import-statement","external":true},{"path":"react/jsx-runtime","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"next/navigation","kind":"import-statement","external":true},{"path":"lucide-react","kind":"import-statement","external":true},{"path":"ampless","kind":"import-statement","external":true},{"path":"@ampless/runtime","kind":"import-statement","external":true},{"path":"@ampless/runtime/ui","kind":"import-statement","external":true},{"path":"@tiptap/react","kind":"import-statement","external":true},{"path":"@tiptap/starter-kit","kind":"import-statement","external":true},{"path":"@tiptap/extension-link","kind":"import-statement","external":true},{"path":"@tiptap/extension-image","kind":"import-statement","external":true},{"path":"lucide-react","kind":"import-statement","external":true},{"path":"@ampless/runtime/ui","kind":"import-statement","external":true},{"path":"react/jsx-runtime","kind":"import-statement","external":true},{"path":"@tiptap/react/menus","kind":"import-statement","external":true},{"path":"lucide-react","kind":"import-statement","external":true},{"path":"@ampless/runtime/ui","kind":"import-statement","external":true},{"path":"react/jsx-runtime","kind":"import-statement","external":true},{"path":"react/jsx-runtime","kind":"import-statement","external":true},{"path":"react/jsx-runtime","kind":"import-statement","external":true},{"path":"react/jsx-runtime","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"next/navigation","kind":"import-statement","external":true},{"path":"ampless","kind":"import-statement","external":true},{"path":"react/jsx-runtime","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"aws-amplify/storage","kind":"import-statement","external":true},{"path":"ampless/media","kind":"import-statement","external":true},{"path":"@ampless/runtime/ui","kind":"import-statement","external":true},{"path":"lucide-react","kind":"import-statement","external":true},{"path":"react/jsx-runtime","kind":"import-statement","external":true},{"path":"react/jsx-runtime","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"next/navigation","kind":"import-statement","external":true},{"path":"aws-amplify/auth","kind":"import-statement","external":true},{"path":"@ampless/runtime/ui","kind":"import-statement","external":true},{"path":"react/jsx-runtime","kind":"import-statement","external":true},{"path":"next/link","kind":"import-statement","external":true},{"path":"next/navigation","kind":"import-statement","external":true},{"path":"aws-amplify/auth","kind":"import-statement","external":true},{"path":"lucide-react","kind":"import-statement","external":true},{"path":"@ampless/runtime/ui","kind":"import-statement","external":true},{"path":"react/jsx-runtime","kind":"import-statement","external":true},{"path":"next/navigation","kind":"import-statement","external":true},{"path":"react/jsx-runtime","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"next/navigation","kind":"import-statement","external":true},{"path":"ampless","kind":"import-statement","external":true},{"path":"@ampless/runtime/ui","kind":"import-statement","external":true},{"path":"react/jsx-runtime","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"next/navigation","kind":"import-statement","external":true},{"path":"ampless","kind":"import-statement","external":true},{"path":"@ampless/runtime/ui","kind":"import-statement","external":true},{"path":"react/jsx-runtime","kind":"import-statement","external":true}],"exports":["AdminDashboard","AdminProviders","EditPostPage","I18nProvider","ImageUploadDialog","LoginPage","MediaPage","MediaPicker","MediaUploader","NewPostPage","PostForm","PostsList","Sidebar","SiteSelector","SiteSettingsForm","ThemeSettingsForm","readAdminSiteIdFromCookie","sanitizeName","setAdminCmsConfig","uploadProcessedImage","useLocale","useT"],"inputs":{"src/components/i18n-provider.tsx":{"bytesInOutput":785},"src/lib/admin-site-client.ts":{"bytesInOutput":642},"src/components/admin-providers.tsx":{"bytesInOutput":462},"src/lib/amplify-client.ts":{"bytesInOutput":194},"src/lib/posts-provider.ts":{"bytesInOutput":6137},"src/lib/kv-provider.ts":{"bytesInOutput":2282},"src/lib/admin-config-client.ts":{"bytesInOutput":173},"src/components/admin-dashboard.tsx":{"bytesInOutput":2406},"src/components/posts-list-view.tsx":{"bytesInOutput":3305},"src/lib/upload.ts":{"bytesInOutput":807},"src/components/image-upload-dialog.tsx":{"bytesInOutput":12953},"src/components/media-picker.tsx":{"bytesInOutput":5186},"src/components/post-form.tsx":{"bytesInOutput":14161},"src/editor/tiptap-editor.tsx":{"bytesInOutput":1549},"src/editor/toolbar.tsx":{"bytesInOutput":3038},"src/editor/image-bubble-menu.tsx":{"bytesInOutput":2901},"src/components/new-post-view.tsx":{"bytesInOutput":341},"src/components/edit-post-view.tsx":{"bytesInOutput":1068},"src/components/media-uploader.tsx":{"bytesInOutput":9183},"src/components/media-view.tsx":{"bytesInOutput":338},"src/components/login-view.tsx":{"bytesInOutput":7191},"src/components/sidebar.tsx":{"bytesInOutput":2995},"src/components/site-selector.tsx":{"bytesInOutput":971},"src/components/site-settings-form.tsx":{"bytesInOutput":7017},"src/components/theme-settings-form.tsx":{"bytesInOutput":16827}},"bytes":104452},"dist/chunk-FI7CM4LH.js":{"imports":[],"exports":["ADMIN_SITE_COOKIE","createMedia","getDictionary","publicMediaUrl","resolveLocale","setAdminMediaContext","translate"],"inputs":{"src/locales/en.json":{"bytesInOutput":7204},"src/locales/ja.json":{"bytesInOutput":13701},"src/lib/i18n.ts":{"bytesInOutput":1146},"src/lib/media.ts":{"bytesInOutput":1326},"src/lib/admin-site-cookie.ts":{"bytesInOutput":41}},"bytes":23676},"dist/chunk-VXEVLHGL.js":{"imports":[{"path":"next/cache","kind":"import-statement","external":true}],"exports":["invalidateSiteSettingsCache"],"inputs":{"src/lib/theme-actions.ts":{"bytesInOutput":135}},"bytes":206}}}
@@ -1,5 +1,6 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { Admin } from '../index.js';
3
+ import { A as AdminDashboard, P as PostsList, N as NewPostPage, E as EditPostPage, M as MediaPage, L as LoginPage } from '../login-view-BKrSZLJu.js';
3
4
  import { ThemeManifest } from 'ampless';
4
5
  import '@ampless/runtime';
5
6
  import '../i18n-ByHM_Bho.js';
@@ -19,28 +20,44 @@ declare function createAdminLayout(admin: Admin): ({ children }: {
19
20
  children: React.ReactNode;
20
21
  }) => Promise<react_jsx_runtime.JSX.Element>;
21
22
 
22
- declare function AdminDashboard(): react_jsx_runtime.JSX.Element;
23
23
  /**
24
- * Admin home / dashboard. Lists post counts. Marked client-side because
25
- * it reads from the AppSync client directly (no server-rendered query
26
- * yet listed posts come from Amplify SDK at mount time).
24
+ * Admin home / dashboard. Lists post counts. The view is a client
25
+ * component (`AdminDashboard`) this factory module stays server-side
26
+ * so `@ampless/admin/pages` can be imported from Server Components, and
27
+ * the `'use client'` boundary is preserved at the cross-file reference.
27
28
  */
28
29
  declare function createAdminDashboardPage(_admin: unknown): typeof AdminDashboard;
29
30
 
30
- declare function PostsList(): react_jsx_runtime.JSX.Element;
31
+ /**
32
+ * Posts list. The view is a client component — this factory module
33
+ * stays server-side so `@ampless/admin/pages` can be imported from
34
+ * Server Components and the `'use client'` boundary is preserved at
35
+ * the cross-file reference.
36
+ */
31
37
  declare function createPostsListPage(_admin: unknown): typeof PostsList;
32
38
 
33
- declare function NewPostPage(): react_jsx_runtime.JSX.Element;
39
+ /**
40
+ * New post page. The view is a client component — this factory module
41
+ * stays server-side so `@ampless/admin/pages` can be imported from
42
+ * Server Components and the `'use client'` boundary is preserved at
43
+ * the cross-file reference.
44
+ */
34
45
  declare function createNewPostPage(_admin: unknown): typeof NewPostPage;
35
46
 
36
- declare function EditPostPage({ params }: {
37
- params: Promise<{
38
- postId: string;
39
- }>;
40
- }): react_jsx_runtime.JSX.Element;
47
+ /**
48
+ * Edit post page. The view is a client component — this factory module
49
+ * stays server-side so `@ampless/admin/pages` can be imported from
50
+ * Server Components and the `'use client'` boundary is preserved at
51
+ * the cross-file reference.
52
+ */
41
53
  declare function createEditPostPage(_admin: unknown): typeof EditPostPage;
42
54
 
43
- declare function MediaPage(): react_jsx_runtime.JSX.Element;
55
+ /**
56
+ * Media library page. The view is a client component — this factory
57
+ * module stays server-side so `@ampless/admin/pages` can be imported
58
+ * from Server Components and the `'use client'` boundary is preserved
59
+ * at the cross-file reference.
60
+ */
44
61
  declare function createMediaPage(_admin: unknown): typeof MediaPage;
45
62
 
46
63
  /**
@@ -84,7 +101,12 @@ interface ThemeListEntry {
84
101
  */
85
102
  declare function createSiteThemePage(admin: Admin, themeList: ReadonlyArray<ThemeListEntry>): ({ params }: Props) => Promise<react_jsx_runtime.JSX.Element>;
86
103
 
87
- declare function LoginPage(): react_jsx_runtime.JSX.Element;
104
+ /**
105
+ * Login / sign-up / reset password page. The view is a client component
106
+ * — this factory module stays server-side so `@ampless/admin/pages` can
107
+ * be imported from Server Components and the `'use client'` boundary is
108
+ * preserved at the cross-file reference.
109
+ */
88
110
  declare function createLoginPage(_admin: unknown): typeof LoginPage;
89
111
 
90
112
  export { createAdminDashboardPage, createAdminLayout, createEditPostPage, createLoginPage, createMediaPage, createNewPostPage, createPostsListPage, createSiteEditPage, createSiteThemePage, createSitesListPage };