@ampless/admin 0.2.0-alpha.7 → 1.0.0-alpha.26

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 (48) 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-2U3POKAZ.js +198 -0
  6. package/dist/{chunk-VXEVLHGL.js → chunk-6LQGVDCW.js} +2 -2
  7. package/dist/chunk-6NPYUTV6.js +250 -0
  8. package/dist/chunk-6SB7YICQ.js +48 -0
  9. package/dist/chunk-6W3JIOOR.js +37 -0
  10. package/dist/chunk-CTGFMK2J.js +335 -0
  11. package/dist/chunk-G4CF5ZWV.js +1319 -0
  12. package/dist/chunk-KQOE5CT6.js +21 -0
  13. package/dist/chunk-MWSCSCCU.js +67 -0
  14. package/dist/chunk-Q66BLMNJ.js +33 -0
  15. package/dist/chunk-TZ5F24BG.js +149 -0
  16. package/dist/chunk-VL6MMF2P.js +21 -0
  17. package/dist/chunk-VSS5FWSR.js +334 -0
  18. package/dist/{chunk-L5NHN3MY.js → chunk-WL4IBW2D.js} +145 -43
  19. package/dist/chunk-YFWHKIVH.js +1187 -0
  20. package/dist/components/admin-dashboard.d.ts +10 -0
  21. package/dist/components/admin-dashboard.js +9 -0
  22. package/dist/components/edit-post-view.d.ts +9 -0
  23. package/dist/components/edit-post-view.js +12 -0
  24. package/dist/components/index.d.ts +14 -42
  25. package/dist/components/index.js +22 -33
  26. package/dist/components/login-view.d.ts +5 -0
  27. package/dist/components/login-view.js +9 -0
  28. package/dist/components/mcp-tokens-view.d.ts +16 -0
  29. package/dist/components/mcp-tokens-view.js +9 -0
  30. package/dist/components/media-view.d.ts +5 -0
  31. package/dist/components/media-view.js +12 -0
  32. package/dist/components/new-post-view.d.ts +5 -0
  33. package/dist/components/new-post-view.js +12 -0
  34. package/dist/components/posts-list-view.d.ts +5 -0
  35. package/dist/components/posts-list-view.js +9 -0
  36. package/dist/components/users-list-view.d.ts +7 -0
  37. package/dist/components/users-list-view.js +9 -0
  38. package/dist/{i18n-Bc4SYgWx.d.ts → i18n-BhMBRfio.d.ts} +215 -1
  39. package/dist/index.d.ts +18 -18
  40. package/dist/index.js +17 -38
  41. package/dist/lib/theme-actions.d.ts +3 -3
  42. package/dist/lib/theme-actions.js +1 -1
  43. package/dist/metafile-esm.json +1 -1
  44. package/dist/pages/index.d.ts +35 -16
  45. package/dist/pages/index.js +90 -257
  46. package/package.json +26 -14
  47. package/dist/chunk-GXPSAOES.js +0 -2823
  48. package/dist/login-view-BKrSZLJu.d.ts +0 -24
@@ -35,6 +35,7 @@ var en_default = {
35
35
  media: "Media",
36
36
  sites: "Sites",
37
37
  users: "Users",
38
+ mcpTokens: "MCP tokens",
38
39
  viewSite: "View site",
39
40
  signOut: "Sign out",
40
41
  site: "Site",
@@ -81,6 +82,18 @@ var en_default = {
81
82
  status: "Status",
82
83
  noLayout: "No layout",
83
84
  noLayoutHint: "Serve this post as bare HTML \u2014 no theme header, footer, or root layout. The body is returned as the entire response. Best paired with format: HTML when the body contains a full <!DOCTYPE html>\u2026</html> document.",
85
+ formatStaticLabel: "Static (zip / file bundle)",
86
+ static: {
87
+ pick: "Pick a .zip or one or more files",
88
+ pickHint: "Bundle assets must reference each other with relative paths only (no leading /). The zip's contents are extracted into a directory under your post slug and served verbatim \u2014 no theme chrome.",
89
+ currentBundle: "Current bundle: {count} files (entry: {entrypoint})",
90
+ pendingBundle: "Pending upload: {count} files, {size}",
91
+ issuesTitle: "{count} validation issue(s)",
92
+ issuesHint: "Fix the listed paths and re-upload. Absolute (/foo) and protocol-relative (//cdn.example/foo) references break under the bundle's URL prefix.",
93
+ emptyBundle: "No usable files found in the selection.",
94
+ noBundle: "Pick a bundle before saving.",
95
+ previewHint: "Static bundles render as the served HTML at /<slug>/. Preview by saving and visiting the public URL."
96
+ },
84
97
  saveChanges: "Save changes",
85
98
  createPost: "Create post",
86
99
  delete: "Delete",
@@ -188,7 +201,14 @@ var en_default = {
188
201
  customizationHeading: "{theme} customization",
189
202
  customizationHint: "Empty input resets to the manifest default.",
190
203
  lengthHelp: "CSS length, e.g. 0.5rem, 4px.",
191
- imagePlaceholder: "https://\u2026 or /media/\u2026"
204
+ imagePlaceholder: "https://\u2026 or /media/\u2026",
205
+ colorScheme: {
206
+ label: "Color scheme",
207
+ hint: "How the public site picks between the theme's light and dark token palettes.",
208
+ auto: "Auto (follow visitor's system)",
209
+ light: "Light only",
210
+ dark: "Dark only"
211
+ }
192
212
  },
193
213
  editor: {
194
214
  linkPrompt: "URL",
@@ -200,6 +220,18 @@ var en_default = {
200
220
  lightboxTitle: "Force click-to-enlarge",
201
221
  alt: "Alt",
202
222
  delete: "Delete"
223
+ },
224
+ table: {
225
+ title: "Table",
226
+ insert: "Insert table (3\xD73)",
227
+ addRowBefore: "Add row above",
228
+ addRowAfter: "Add row below",
229
+ addColumnBefore: "Add column before",
230
+ addColumnAfter: "Add column after",
231
+ deleteRow: "Delete row",
232
+ deleteColumn: "Delete column",
233
+ toggleHeaderRow: "Toggle header row",
234
+ deleteTable: "Delete table"
203
235
  }
204
236
  },
205
237
  auth: {
@@ -249,6 +281,45 @@ var en_default = {
249
281
  userExists: "An account with this email already exists."
250
282
  }
251
283
  },
284
+ mcpTokens: {
285
+ title: "MCP tokens",
286
+ description: "Access tokens for the HTTP MCP endpoint. Use them in Claude Desktop / Cursor / any MCP-aware client to read and write this CMS over the wire.",
287
+ endpointTitle: "MCP endpoint",
288
+ endpointCopy: "Copy",
289
+ endpointCopied: "Copied",
290
+ endpointMissing: "Not deployed yet. Run `npm run sandbox` or push to Amplify Hosting to provision the endpoint URL.",
291
+ inertBanner: "Heads up: the endpoint validates tokens, but tool dispatch (list_posts / create_post / etc.) lands in v0.2 Phase 4. Valid tokens currently get a stub 200 response.",
292
+ createButton: "Create token",
293
+ createModalTitle: "Create token",
294
+ scopeLabel: "Scope",
295
+ scopeAll: "All sites",
296
+ expirationLabel: "Expiration",
297
+ expirationNever: "Never",
298
+ expiration30days: "30 days",
299
+ expiration90days: "90 days",
300
+ expirationCustom: "Custom date",
301
+ issueButton: "Issue token",
302
+ issuing: "Issuing...",
303
+ revealTitle: "Token issued",
304
+ revealHint: "This is the only time you will see this token. Copy it now \u2014 closing this dialog discards it permanently.",
305
+ copy: "Copy",
306
+ copied: "Copied!",
307
+ done: "Done",
308
+ loading: "Loading tokens...",
309
+ error: "Failed to load tokens",
310
+ listEmpty: "No tokens yet. Click 'Create token' to issue your first one.",
311
+ columnPrefix: "Prefix",
312
+ columnScope: "Scope",
313
+ columnCreated: "Created",
314
+ columnLastUsed: "Last used",
315
+ columnStatus: "Status",
316
+ lastUsedNever: "Never used",
317
+ statusActive: "Active",
318
+ statusRevoked: "Revoked",
319
+ statusExpired: "Expired",
320
+ revoke: "Revoke",
321
+ revokeConfirm: "Revoke this token? This cannot be undone."
322
+ },
252
323
  public: {
253
324
  back: "\u2190 Back",
254
325
  home: "\u2190 Home",
@@ -294,6 +365,7 @@ var ja_default = {
294
365
  media: "\u30E1\u30C7\u30A3\u30A2",
295
366
  sites: "\u30B5\u30A4\u30C8",
296
367
  users: "\u30E6\u30FC\u30B6\u30FC",
368
+ mcpTokens: "MCP \u30C8\u30FC\u30AF\u30F3",
297
369
  viewSite: "\u30B5\u30A4\u30C8\u3092\u8868\u793A",
298
370
  signOut: "\u30B5\u30A4\u30F3\u30A2\u30A6\u30C8",
299
371
  site: "\u30B5\u30A4\u30C8",
@@ -340,6 +412,18 @@ var ja_default = {
340
412
  status: "\u30B9\u30C6\u30FC\u30BF\u30B9",
341
413
  noLayout: "\u30EC\u30A4\u30A2\u30A6\u30C8\u3092\u4F7F\u308F\u306A\u3044",
342
414
  noLayoutHint: "\u30C6\u30FC\u30DE\u306E\u30D8\u30C3\u30C0\u30FC / \u30D5\u30C3\u30BF\u30FC / root layout \u3092\u4ECB\u3055\u305A\u3001\u672C\u6587\u3092 HTTP \u30EC\u30B9\u30DD\u30F3\u30B9\u672C\u4F53\u3068\u3057\u3066\u305D\u306E\u307E\u307E\u8FD4\u3057\u307E\u3059\u3002\u672C\u6587\u306B <!DOCTYPE html>\u2026</html> \u304C\u542B\u307E\u308C\u308B\u5834\u5408\u306F\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8: HTML \u3068\u306E\u7D44\u307F\u5408\u308F\u305B\u304C\u6700\u9069\u3067\u3059\u3002",
415
+ formatStaticLabel: "Static (zip / \u30D5\u30A1\u30A4\u30EB\u4E00\u62EC)",
416
+ static: {
417
+ pick: ".zip \u307E\u305F\u306F\u8907\u6570\u30D5\u30A1\u30A4\u30EB\u3092\u9078\u629E",
418
+ pickHint: "\u30D0\u30F3\u30C9\u30EB\u5185\u306E\u30D5\u30A1\u30A4\u30EB\u9593\u53C2\u7167\u306F\u76F8\u5BFE\u30D1\u30B9\u306E\u307F (\u5148\u982D / \u306A\u3057)\u3002zip \u306E\u4E2D\u8EAB\u306F\u8A18\u4E8B slug \u306E\u914D\u4E0B\u306B\u5C55\u958B\u3055\u308C\u3001\u30C6\u30FC\u30DE\u88C5\u98FE\u3092\u4ECB\u3055\u305A\u305D\u306E\u307E\u307E\u914D\u4FE1\u3055\u308C\u307E\u3059\u3002",
419
+ currentBundle: "\u73FE\u5728\u306E\u30D0\u30F3\u30C9\u30EB: {count} \u30D5\u30A1\u30A4\u30EB (entry: {entrypoint})",
420
+ pendingBundle: "\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9\u5F85\u3061: {count} \u30D5\u30A1\u30A4\u30EB, {size}",
421
+ issuesTitle: "{count} \u4EF6\u306E\u691C\u8A3C\u30A8\u30E9\u30FC",
422
+ issuesHint: "\u8A72\u5F53\u30D1\u30B9\u3092\u4FEE\u6B63\u3057\u3066\u518D\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u7D76\u5BFE\u30D1\u30B9 (/foo) \u3084\u30D7\u30ED\u30C8\u30B3\u30EB\u7701\u7565 (//cdn.example/foo) \u306F\u30D0\u30F3\u30C9\u30EB\u306E URL prefix \u4E0B\u3067\u89E3\u6C7A\u3067\u304D\u307E\u305B\u3093\u3002",
423
+ emptyBundle: "\u9078\u629E\u30D5\u30A1\u30A4\u30EB\u304B\u3089\u53D6\u308A\u51FA\u305B\u308B\u4E2D\u8EAB\u304C\u3042\u308A\u307E\u305B\u3093\u3067\u3057\u305F\u3002",
424
+ noBundle: "\u4FDD\u5B58\u524D\u306B\u30D0\u30F3\u30C9\u30EB\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
425
+ previewHint: "Static \u30D0\u30F3\u30C9\u30EB\u306F /<slug>/ \u304B\u3089\u5B9F HTML \u3068\u3057\u3066\u914D\u4FE1\u3055\u308C\u307E\u3059\u3002\u4FDD\u5B58\u5F8C\u306B\u516C\u958B URL \u3092\u958B\u3044\u3066\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002"
426
+ },
343
427
  saveChanges: "\u5909\u66F4\u3092\u4FDD\u5B58",
344
428
  createPost: "\u8A18\u4E8B\u3092\u4F5C\u6210",
345
429
  delete: "\u524A\u9664",
@@ -447,7 +531,14 @@ var ja_default = {
447
531
  customizationHeading: "{theme}\u306E\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA",
448
532
  customizationHint: "\u7A7A\u6B04\u306B\u3059\u308B\u3068\u30DE\u30CB\u30D5\u30A7\u30B9\u30C8\u306E\u30C7\u30D5\u30A9\u30EB\u30C8\u5024\u306B\u623B\u308A\u307E\u3059\u3002",
449
533
  lengthHelp: "CSS\u306E\u9577\u3055\u3002\u4F8B: 0.5rem, 4px\u3002",
450
- imagePlaceholder: "https://\u2026 \u307E\u305F\u306F /media/\u2026"
534
+ imagePlaceholder: "https://\u2026 \u307E\u305F\u306F /media/\u2026",
535
+ colorScheme: {
536
+ label: "\u30AB\u30E9\u30FC\u30B9\u30AD\u30FC\u30E0",
537
+ hint: "\u516C\u958B\u30B5\u30A4\u30C8\u3067\u30C6\u30FC\u30DE\u306E\u30E9\u30A4\u30C8/\u30C0\u30FC\u30AF\u4E21\u30D1\u30EC\u30C3\u30C8\u306E\u3069\u3061\u3089\u3092\u4F7F\u3046\u304B\u306E\u9078\u629E\u3002",
538
+ auto: "\u81EA\u52D5 (\u95B2\u89A7\u8005\u306EOS\u8A2D\u5B9A\u306B\u8FFD\u5F93)",
539
+ light: "\u30E9\u30A4\u30C8\u56FA\u5B9A",
540
+ dark: "\u30C0\u30FC\u30AF\u56FA\u5B9A"
541
+ }
451
542
  },
452
543
  editor: {
453
544
  linkPrompt: "URL",
@@ -459,6 +550,18 @@ var ja_default = {
459
550
  lightboxTitle: "\u5F37\u5236\u7684\u306B\u30AF\u30EA\u30C3\u30AF\u3067\u62E1\u5927",
460
551
  alt: "\u4EE3\u66FF",
461
552
  delete: "\u524A\u9664"
553
+ },
554
+ table: {
555
+ title: "\u30C6\u30FC\u30D6\u30EB",
556
+ insert: "\u30C6\u30FC\u30D6\u30EB\u3092\u633F\u5165 (3\xD73)",
557
+ addRowBefore: "\u4E0A\u306B\u884C\u3092\u8FFD\u52A0",
558
+ addRowAfter: "\u4E0B\u306B\u884C\u3092\u8FFD\u52A0",
559
+ addColumnBefore: "\u5DE6\u306B\u5217\u3092\u8FFD\u52A0",
560
+ addColumnAfter: "\u53F3\u306B\u5217\u3092\u8FFD\u52A0",
561
+ deleteRow: "\u884C\u3092\u524A\u9664",
562
+ deleteColumn: "\u5217\u3092\u524A\u9664",
563
+ toggleHeaderRow: "\u30D8\u30C3\u30C0\u30FC\u884C\u3092\u5207\u66FF",
564
+ deleteTable: "\u30C6\u30FC\u30D6\u30EB\u3092\u524A\u9664"
462
565
  }
463
566
  },
464
567
  auth: {
@@ -508,6 +611,45 @@ var ja_default = {
508
611
  userExists: "\u3053\u306E\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u306E\u30A2\u30AB\u30A6\u30F3\u30C8\u306F\u65E2\u306B\u5B58\u5728\u3057\u307E\u3059\u3002"
509
612
  }
510
613
  },
614
+ mcpTokens: {
615
+ title: "MCP \u30C8\u30FC\u30AF\u30F3",
616
+ description: "HTTP MCP \u30A8\u30F3\u30C9\u30DD\u30A4\u30F3\u30C8\u7528\u306E\u30A2\u30AF\u30BB\u30B9\u30C8\u30FC\u30AF\u30F3\u3002Claude Desktop / Cursor \u306A\u3069\u306E MCP \u5BFE\u5FDC\u30AF\u30E9\u30A4\u30A2\u30F3\u30C8\u304B\u3089\u3001\u3053\u306E CMS \u306E\u8AAD\u307F\u66F8\u304D\u306B\u4F7F\u3048\u307E\u3059\u3002",
617
+ endpointTitle: "MCP \u30A8\u30F3\u30C9\u30DD\u30A4\u30F3\u30C8",
618
+ endpointCopy: "\u30B3\u30D4\u30FC",
619
+ endpointCopied: "\u30B3\u30D4\u30FC\u6E08\u307F",
620
+ endpointMissing: "\u307E\u3060\u30C7\u30D7\u30ED\u30A4\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002`npm run sandbox` \u3092\u5B9F\u884C\u3059\u308B\u304B Amplify Hosting \u306B push \u3057\u3066\u30A8\u30F3\u30C9\u30DD\u30A4\u30F3\u30C8 URL \u3092\u30D7\u30ED\u30D3\u30B8\u30E7\u30CB\u30F3\u30B0\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
621
+ inertBanner: "\u6CE8\u610F: \u30A8\u30F3\u30C9\u30DD\u30A4\u30F3\u30C8\u306F\u30C8\u30FC\u30AF\u30F3\u691C\u8A3C\u3092\u884C\u3044\u307E\u3059\u304C\u3001\u30C4\u30FC\u30EB\u30C7\u30A3\u30B9\u30D1\u30C3\u30C1 (list_posts / create_post \u306A\u3069) \u306F v0.2 Phase 4 \u3067\u5B9F\u88C5\u3055\u308C\u307E\u3059\u3002\u73FE\u5728\u306F\u6709\u52B9\u306A\u30C8\u30FC\u30AF\u30F3\u306B\u5BFE\u3057\u3066 stub \u306E 200 \u30EC\u30B9\u30DD\u30F3\u30B9\u3092\u8FD4\u3057\u307E\u3059\u3002",
622
+ createButton: "\u30C8\u30FC\u30AF\u30F3\u3092\u4F5C\u6210",
623
+ createModalTitle: "\u30C8\u30FC\u30AF\u30F3\u3092\u4F5C\u6210",
624
+ scopeLabel: "\u30B9\u30B3\u30FC\u30D7",
625
+ scopeAll: "\u3059\u3079\u3066\u306E\u30B5\u30A4\u30C8",
626
+ expirationLabel: "\u6709\u52B9\u671F\u9650",
627
+ expirationNever: "\u7121\u671F\u9650",
628
+ expiration30days: "30\u65E5",
629
+ expiration90days: "90\u65E5",
630
+ expirationCustom: "\u65E5\u4ED8\u3092\u6307\u5B9A",
631
+ issueButton: "\u30C8\u30FC\u30AF\u30F3\u3092\u767A\u884C",
632
+ issuing: "\u767A\u884C\u4E2D...",
633
+ revealTitle: "\u30C8\u30FC\u30AF\u30F3\u3092\u767A\u884C\u3057\u307E\u3057\u305F",
634
+ revealHint: "\u3053\u306E\u30C8\u30FC\u30AF\u30F3\u304C\u8868\u793A\u3055\u308C\u308B\u306E\u306F\u4ECA\u56DE\u9650\u308A\u3067\u3059\u3002\u4ECA\u3059\u3050\u30B3\u30D4\u30FC\u3057\u3066\u304F\u3060\u3055\u3044 \u2014 \u30C0\u30A4\u30A2\u30ED\u30B0\u3092\u9589\u3058\u308B\u3068\u6C38\u4E45\u306B\u5931\u308F\u308C\u307E\u3059\u3002",
635
+ copy: "\u30B3\u30D4\u30FC",
636
+ copied: "\u30B3\u30D4\u30FC\u3057\u307E\u3057\u305F",
637
+ done: "\u9589\u3058\u308B",
638
+ loading: "\u30C8\u30FC\u30AF\u30F3\u3092\u8AAD\u307F\u8FBC\u307F\u4E2D...",
639
+ error: "\u30C8\u30FC\u30AF\u30F3\u306E\u53D6\u5F97\u306B\u5931\u6557\u3057\u307E\u3057\u305F",
640
+ listEmpty: "\u30C8\u30FC\u30AF\u30F3\u304C\u307E\u3060\u3042\u308A\u307E\u305B\u3093\u3002\u300C\u30C8\u30FC\u30AF\u30F3\u3092\u4F5C\u6210\u300D\u3092\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u6700\u521D\u306E\u30C8\u30FC\u30AF\u30F3\u3092\u767A\u884C\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
641
+ columnPrefix: "\u30D7\u30EC\u30D5\u30A3\u30C3\u30AF\u30B9",
642
+ columnScope: "\u30B9\u30B3\u30FC\u30D7",
643
+ columnCreated: "\u4F5C\u6210\u65E5\u6642",
644
+ columnLastUsed: "\u6700\u7D42\u4F7F\u7528",
645
+ columnStatus: "\u30B9\u30C6\u30FC\u30BF\u30B9",
646
+ lastUsedNever: "\u672A\u4F7F\u7528",
647
+ statusActive: "\u6709\u52B9",
648
+ statusRevoked: "\u5931\u52B9",
649
+ statusExpired: "\u671F\u9650\u5207\u308C",
650
+ revoke: "\u5931\u52B9",
651
+ revokeConfirm: "\u3053\u306E\u30C8\u30FC\u30AF\u30F3\u3092\u5931\u52B9\u3055\u305B\u307E\u3059\u304B\uFF1F\u3053\u306E\u64CD\u4F5C\u306F\u5143\u306B\u623B\u305B\u307E\u305B\u3093\u3002"
652
+ },
511
653
  public: {
512
654
  back: "\u2190 \u623B\u308B",
513
655
  home: "\u2190 \u30DB\u30FC\u30E0",
@@ -553,48 +695,8 @@ function translate(dict, key, vars) {
553
695
  });
554
696
  }
555
697
 
556
- // src/lib/media.ts
557
- var state = { outputs: null, cmsConfig: null };
558
- function setAdminMediaContext(outputs, cmsConfig) {
559
- state.outputs = outputs;
560
- state.cmsConfig = cmsConfig;
561
- }
562
- function publicMediaUrl(input) {
563
- if (/^https?:\/\//.test(input)) return input;
564
- let path = input.replace(/^\/+/, "");
565
- if (path.startsWith("public/")) path = path.slice("public/".length);
566
- const { outputs, cmsConfig } = state;
567
- const delivery = cmsConfig?.media?.delivery ?? "nextjs";
568
- if (delivery !== "s3-direct") return `/api/media/${path}`;
569
- const storage = outputs?.storage;
570
- if (!storage) return `/api/media/${path}`;
571
- return `https://${storage.bucket_name}.s3.${storage.aws_region}.amazonaws.com/public/${path}`;
572
- }
573
- function createMedia(outputs, cmsConfig) {
574
- const storage = outputs.storage;
575
- function s3DirectUrl(path) {
576
- if (!storage) return `/api/media/${path}`;
577
- return `https://${storage.bucket_name}.s3.${storage.aws_region}.amazonaws.com/public/${path}`;
578
- }
579
- function urlFor(input) {
580
- if (/^https?:\/\//.test(input)) return input;
581
- let path = input.replace(/^\/+/, "");
582
- if (path.startsWith("public/")) path = path.slice("public/".length);
583
- const delivery = cmsConfig.media?.delivery ?? "nextjs";
584
- return delivery === "s3-direct" ? s3DirectUrl(path) : `/api/media/${path}`;
585
- }
586
- return { publicMediaUrl: urlFor };
587
- }
588
-
589
- // src/lib/admin-site-cookie.ts
590
- var ADMIN_SITE_COOKIE = "admin-site-id";
591
-
592
698
  export {
593
699
  resolveLocale,
594
700
  getDictionary,
595
- translate,
596
- setAdminMediaContext,
597
- publicMediaUrl,
598
- createMedia,
599
- ADMIN_SITE_COOKIE
701
+ translate
600
702
  };