headroom-cms 0.1.5 → 0.1.7

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 (85) hide show
  1. package/admin/assets/{AdminsPage-C4tJy6Vj.js → AdminsPage-BqfhR4Zc.js} +1 -1
  2. package/admin/assets/{AllContentPage-DL0-UlYh.js → AllContentPage-C11eeRMt.js} +1 -1
  3. package/admin/assets/{ApiKeysPage-pZ6nKCZ_.js → ApiKeysPage-DJjOSLoR.js} +1 -1
  4. package/admin/assets/AuditPage-DJNk7IaW.js +1 -0
  5. package/admin/assets/{BlockEditor-D0Jk8u7w.js → BlockEditor-DDsml97y.js} +2 -2
  6. package/admin/assets/BlockTypeEditPage-Cg7BifaZ.js +1 -0
  7. package/admin/assets/{BlockTypesPage-Q7keQKxn.js → BlockTypesPage-BDFj8TSL.js} +1 -1
  8. package/admin/assets/{BulkActionBar-BGDrNwCg.js → BulkActionBar-CastJGEP.js} +1 -1
  9. package/admin/assets/CollectionEditPage-DGW4iMfo.js +1 -0
  10. package/admin/assets/{CollectionsPage-DDZ-5H7Y.js → CollectionsPage-C8XNxRda.js} +1 -1
  11. package/admin/assets/{ContentCreatePage-C3jn0Etf.js → ContentCreatePage-CX4aOzTR.js} +1 -1
  12. package/admin/assets/ContentEditPage-Dj3RK2BF.js +2 -0
  13. package/admin/assets/ContentListPage-CoDanHrR.js +1 -0
  14. package/admin/assets/{CustomBlockPreview-f9j4g35U.js → CustomBlockPreview-DfDOcbmR.js} +1 -1
  15. package/admin/assets/{FieldBuilder-p1Y8RubR.js → FieldBuilder-8VVLG_j0.js} +2 -2
  16. package/admin/assets/FilterBar-JCp03kkK.js +1 -0
  17. package/admin/assets/{LoginPage-9YUPS1YH.js → LoginPage-gPNC9XRN.js} +1 -1
  18. package/admin/assets/{MediaField-DJpYbUA8.js → MediaField-Du7_gRse.js} +1 -1
  19. package/admin/assets/MediaPage-D9763lEk.js +1 -0
  20. package/admin/assets/RelationshipPicker-D7dFI43Q.js +1 -0
  21. package/admin/assets/SiteSettingsPage-Tfiex2yn.js +1 -0
  22. package/admin/assets/{SiteUsersPage-CtVaB0vq.js → SiteUsersPage-CSV8syR3.js} +1 -1
  23. package/admin/assets/{SitesPage-B-sNyP-Y.js → SitesPage-BFIZ3Y5K.js} +1 -1
  24. package/admin/assets/SubmissionDetailPage-8vtUQsLd.js +1 -0
  25. package/admin/assets/SubmissionEditPage-PgowJuvq.js +1 -0
  26. package/admin/assets/SubmissionListPage-HFDQxPhn.js +1 -0
  27. package/admin/assets/{TagInput-CrI2BIuz.js → TagInput-CDkKZboX.js} +1 -1
  28. package/admin/assets/{TagsPage-BSX5KQvZ.js → TagsPage-BW15-W4H.js} +1 -1
  29. package/admin/assets/{UsersPage-BCTpWULa.js → UsersPage-C-zlDeTy.js} +1 -1
  30. package/admin/assets/{WebhookEditPage-CQO3nmaT.js → WebhookEditPage-cPPALIbH.js} +1 -1
  31. package/admin/assets/{WebhooksPage-ByaTlUGU.js → WebhooksPage-vkPC4m9a.js} +1 -1
  32. package/admin/assets/{card-uKxSQehY.js → card-10FqkZPA.js} +1 -1
  33. package/admin/assets/{checkbox-z1kYnX5o.js → checkbox-fC1QPb_4.js} +1 -1
  34. package/admin/assets/collapsible-B414SspL.js +1 -0
  35. package/admin/assets/{command-CuWC4GrT.js → command-BeacdV75.js} +1 -1
  36. package/admin/assets/{index-HoCNSqv2.css → index-Do_SK4Zl.css} +1 -1
  37. package/admin/assets/{index-b-u0-VCO.js → index-wYNPRVrc.js} +12 -12
  38. package/admin/assets/{popover-rcnajqN6.js → popover-BJDj8C6y.js} +1 -1
  39. package/admin/assets/{select-BKaV0BO_.js → select-BV3jemT6.js} +1 -1
  40. package/admin/assets/{serializeToText-BfR2RCzd.js → serializeToText-BJy0Ms5I.js} +1 -1
  41. package/admin/assets/sortable.esm-QyXA6fio.js +1 -0
  42. package/admin/assets/{table-Bozosvl6.js → table-WkEcC9MH.js} +1 -1
  43. package/admin/assets/{textarea-BnjAxJtk.js → textarea-CHQ9tT69.js} +1 -1
  44. package/admin/assets/{useAdminResolver-B0ady82Q.js → useAdminResolver-CpZj93vH.js} +1 -1
  45. package/admin/assets/useContent-D8yDRTTy.js +1 -0
  46. package/admin/assets/useContentSearch-B-_p0_QX.js +1 -0
  47. package/admin/assets/useFilterParams-DYdEuWPE.js +1 -0
  48. package/admin/assets/{useMedia-CXQpRNYL.js → useMedia-m6zKB__r.js} +1 -1
  49. package/admin/assets/usePageTitle-Bwf-MpTD.js +1 -0
  50. package/admin/assets/{useSiteUsers-BfzIdhvs.js → useSiteUsers-QbiItSH1.js} +1 -1
  51. package/admin/assets/{useTags-B6FtXCHF.js → useTags-CLPWVUB3.js} +1 -1
  52. package/admin/assets/{useWebhooks-iPRX5y4s.js → useWebhooks-no0l3-mF.js} +1 -1
  53. package/admin/index.html +3 -3
  54. package/admin/sw.js +1 -1
  55. package/dist/api.d.ts +1 -0
  56. package/dist/api.d.ts.map +1 -1
  57. package/dist/api.js +1 -1
  58. package/dist/api.js.map +1 -1
  59. package/dist/cdn.js +1 -1
  60. package/dist/cdn.js.map +1 -1
  61. package/dist/index.d.ts.map +1 -1
  62. package/dist/index.js +1 -0
  63. package/dist/index.js.map +1 -1
  64. package/lambda/api/bootstrap +0 -0
  65. package/lambda/image-lambda/index.mjs +1 -1
  66. package/lambda/image-lambda/node_modules/@img/sharp-linux-arm64/lib/sharp-linux-arm64.node +0 -0
  67. package/lambda/image-lambda/node_modules/semver/bin/semver.js +0 -0
  68. package/lambda/webhook-worker/bootstrap +0 -0
  69. package/package.json +10 -10
  70. package/src/api.ts +2 -1
  71. package/src/cdn.ts +1 -1
  72. package/src/index.ts +1 -0
  73. package/admin/assets/AuditPage-aVmcP6Ts.js +0 -1
  74. package/admin/assets/BlockTypeEditPage-DIe2yYEr.js +0 -1
  75. package/admin/assets/CollectionEditPage-Bq75MpXk.js +0 -1
  76. package/admin/assets/ContentEditPage-9tODvFEv.js +0 -2
  77. package/admin/assets/ContentListPage-VCT6GTCF.js +0 -1
  78. package/admin/assets/MediaPage-BgDRQR21.js +0 -1
  79. package/admin/assets/SiteSettingsPage-Diy-PauR.js +0 -1
  80. package/admin/assets/SubmissionDetailPage-DW6QJvAy.js +0 -1
  81. package/admin/assets/SubmissionEditPage-CxYPdI9-.js +0 -1
  82. package/admin/assets/SubmissionListPage-BHF82NF3.js +0 -1
  83. package/admin/assets/sortable.esm-BHilUL-2.js +0 -1
  84. package/admin/assets/useContent-B2MUK4An.js +0 -1
  85. package/admin/assets/usePageTitle-Do4xyFdL.js +0 -1
@@ -1 +1 @@
1
- import{j as e}from"./tanstack-Bs3zYPPV.js";import{u as B,r as x}from"./react-vendor-C2CvUxFh.js";import{u as L,aF as M,aG as q,p as z,aH as G,aI as V,x as J,S as b,D as _,i as $,B as l,aJ as K,k as Q,l as W,m as X,n as Y,I as Z,o as ee,P as se,T as ae,v as i}from"./index-b-u0-VCO.js";import{u as ie}from"./useAdminResolver-B0ady82Q.js";import{T as te,a as ne,b as y,c as p,d as re,e as j}from"./table-Bozosvl6.js";import{P as oe,a as le,b as de}from"./popover-rcnajqN6.js";import{C as ce,a as me,b as ue,c as he,d as xe,e as pe}from"./command-CuWC4GrT.js";import{S as je,a as ve,b as ge,c as fe,d as A}from"./select-BKaV0BO_.js";import{u as be}from"./usePageTitle-Do4xyFdL.js";import"./radix-C1kb_NqW.js";function De(){const{host:d}=B(),{user:C}=L(),S=M(),{data:N,isLoading:I}=q(d),{data:T}=z(),c=G(d),m=V(d),n=N?.admins??[],E=T?.items??[],r=S==="admin",v=n.map(s=>s.id),{resolve:w}=ie(v),[P,g]=x.useState(!1),[D,f]=x.useState(!1),[u,h]=x.useState(""),R=J();if(be({title:"Admins"}),I)return e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{className:"h-8 w-64"}),Array.from({length:3}).map((s,a)=>e.jsx(b,{className:"h-12 w-full"},a))]});const U=E.filter(s=>!v.includes(s.sub));async function F(s){try{await c.mutateAsync({admins:[...n,{id:s,role:"editor"}]}),i.success("Admin added"),g(!1)}catch(a){i.error("Failed to add admin",{description:a instanceof Error?a.message:void 0})}}async function O(s){if(s.preventDefault(),!!u.trim())try{const a=await m.mutateAsync({email:u.trim()});a.existed?i.success("Existing user added to site"):i.success("Invite email sent",{description:`An invite has been sent to ${a.email}`}),h(""),f(!1)}catch(a){i.error("Failed to invite user",{description:a instanceof Error?a.message:void 0})}}async function H(s){try{await c.mutateAsync({admins:n.filter(a=>a.id!==s)}),i.success("Admin removed")}catch(a){i.error("Failed to remove admin",{description:a instanceof Error?a.message:void 0})}}async function k(s,a){const o=n.map(t=>t.id===s?{...t,role:a}:t);if(!o.some(t=>t.role==="admin")){i.error("At least one admin role is required");return}try{await c.mutateAsync({admins:o}),i.success("Role updated")}catch(t){i.error("Failed to update role",{description:t instanceof Error?t.message:void 0})}}return e.jsxs("div",{children:[!R&&e.jsx("h1",{className:"mb-6 text-2xl font-semibold",children:"Admins"}),r&&e.jsxs("div",{className:"mb-6 flex gap-2",children:[e.jsxs(_,{open:D,onOpenChange:s=>{f(s),s||h("")},children:[e.jsx($,{asChild:!0,children:e.jsxs(l,{children:[e.jsx(K,{className:"mr-2 h-4 w-4"}),"Invite by email"]})}),e.jsxs(Q,{children:[e.jsxs(W,{children:[e.jsx(X,{children:"Invite User to Site"}),e.jsx(Y,{className:"sr-only",children:"Send an invite email to add a user to this site"})]}),e.jsxs("form",{onSubmit:O,className:"space-y-4",children:[e.jsx("p",{className:"text-muted-foreground text-sm",children:"Enter an email address. If the user doesn't have an account yet, they'll receive an invite email."}),e.jsx(Z,{type:"email",value:u,onChange:s=>h(s.target.value),placeholder:"email@example.com",required:!0}),e.jsx(ee,{children:e.jsx(l,{type:"submit",disabled:m.isPending,children:m.isPending?"Inviting...":"Send Invite"})})]})]})]}),e.jsxs(oe,{open:P,onOpenChange:g,children:[e.jsx(le,{asChild:!0,children:e.jsxs(l,{variant:"outline",children:[e.jsx(se,{className:"mr-2 h-4 w-4"}),"Add existing user"]})}),e.jsx(de,{className:"w-72 p-0",align:"start",children:e.jsxs(ce,{children:[e.jsx(me,{placeholder:"Search users..."}),e.jsxs(ue,{children:[e.jsx(he,{children:"No users found."}),e.jsx(xe,{children:U.map(s=>e.jsx(pe,{value:s.email,onSelect:()=>F(s.sub),children:s.email},s.sub))})]})]})})]})]}),n.length===0?e.jsx("p",{className:"text-muted-foreground",children:"No admins configured."}):e.jsxs(te,{children:[e.jsx(ne,{children:e.jsxs(y,{children:[e.jsx(p,{children:"Email"}),e.jsx(p,{children:"Role"}),r&&e.jsx(p,{})]})}),e.jsx(re,{children:n.map(s=>{const a=s.id===C?.sub;return e.jsxs(y,{children:[e.jsxs(j,{className:"text-sm",children:[w(s.id),a&&e.jsx("span",{className:"ml-2 text-muted-foreground",children:"(you)"})]}),e.jsx(j,{children:r&&!a?e.jsxs(je,{value:s.role,onValueChange:o=>k(s.id,o),children:[e.jsx(ve,{className:"w-28",children:e.jsx(ge,{})}),e.jsxs(fe,{children:[e.jsx(A,{value:"admin",children:"Admin"}),e.jsx(A,{value:"editor",children:"Editor"})]})]}):e.jsx("span",{className:"text-sm capitalize",children:s.role})}),r&&e.jsx(j,{className:"text-right",children:!a&&e.jsx(l,{variant:"ghost",size:"sm",onClick:()=>H(s.id),title:"Remove from site",children:e.jsx(ae,{className:"h-4 w-4"})})})]},s.id)})})]})]})}export{De as AdminsPage};
1
+ import{j as e}from"./tanstack-Bs3zYPPV.js";import{u as B,r as x}from"./react-vendor-C2CvUxFh.js";import{u as L,aF as M,aG as q,p as z,aH as G,aI as V,x as J,S as b,D as _,i as $,B as l,aJ as K,k as Q,l as W,m as X,n as Y,I as Z,o as ee,P as se,T as ae,v as i}from"./index-wYNPRVrc.js";import{u as ie}from"./useAdminResolver-CpZj93vH.js";import{T as te,a as ne,b as y,c as p,d as re,e as j}from"./table-WkEcC9MH.js";import{P as oe,a as le,b as de}from"./popover-BJDj8C6y.js";import{C as ce,a as me,b as ue,c as he,d as xe,e as pe}from"./command-BeacdV75.js";import{S as je,a as ve,b as ge,c as fe,d as A}from"./select-BV3jemT6.js";import{u as be}from"./usePageTitle-Bwf-MpTD.js";import"./radix-C1kb_NqW.js";function De(){const{host:d}=B(),{user:C}=L(),S=M(),{data:N,isLoading:I}=q(d),{data:T}=z(),c=G(d),m=V(d),n=N?.admins??[],E=T?.items??[],r=S==="admin",v=n.map(s=>s.id),{resolve:w}=ie(v),[P,g]=x.useState(!1),[D,f]=x.useState(!1),[u,h]=x.useState(""),R=J();if(be({title:"Admins"}),I)return e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{className:"h-8 w-64"}),Array.from({length:3}).map((s,a)=>e.jsx(b,{className:"h-12 w-full"},a))]});const U=E.filter(s=>!v.includes(s.sub));async function F(s){try{await c.mutateAsync({admins:[...n,{id:s,role:"editor"}]}),i.success("Admin added"),g(!1)}catch(a){i.error("Failed to add admin",{description:a instanceof Error?a.message:void 0})}}async function O(s){if(s.preventDefault(),!!u.trim())try{const a=await m.mutateAsync({email:u.trim()});a.existed?i.success("Existing user added to site"):i.success("Invite email sent",{description:`An invite has been sent to ${a.email}`}),h(""),f(!1)}catch(a){i.error("Failed to invite user",{description:a instanceof Error?a.message:void 0})}}async function H(s){try{await c.mutateAsync({admins:n.filter(a=>a.id!==s)}),i.success("Admin removed")}catch(a){i.error("Failed to remove admin",{description:a instanceof Error?a.message:void 0})}}async function k(s,a){const o=n.map(t=>t.id===s?{...t,role:a}:t);if(!o.some(t=>t.role==="admin")){i.error("At least one admin role is required");return}try{await c.mutateAsync({admins:o}),i.success("Role updated")}catch(t){i.error("Failed to update role",{description:t instanceof Error?t.message:void 0})}}return e.jsxs("div",{children:[!R&&e.jsx("h1",{className:"mb-6 text-2xl font-semibold",children:"Admins"}),r&&e.jsxs("div",{className:"mb-6 flex gap-2",children:[e.jsxs(_,{open:D,onOpenChange:s=>{f(s),s||h("")},children:[e.jsx($,{asChild:!0,children:e.jsxs(l,{children:[e.jsx(K,{className:"mr-2 h-4 w-4"}),"Invite by email"]})}),e.jsxs(Q,{children:[e.jsxs(W,{children:[e.jsx(X,{children:"Invite User to Site"}),e.jsx(Y,{className:"sr-only",children:"Send an invite email to add a user to this site"})]}),e.jsxs("form",{onSubmit:O,className:"space-y-4",children:[e.jsx("p",{className:"text-muted-foreground text-sm",children:"Enter an email address. If the user doesn't have an account yet, they'll receive an invite email."}),e.jsx(Z,{type:"email",value:u,onChange:s=>h(s.target.value),placeholder:"email@example.com",required:!0}),e.jsx(ee,{children:e.jsx(l,{type:"submit",disabled:m.isPending,children:m.isPending?"Inviting...":"Send Invite"})})]})]})]}),e.jsxs(oe,{open:P,onOpenChange:g,children:[e.jsx(le,{asChild:!0,children:e.jsxs(l,{variant:"outline",children:[e.jsx(se,{className:"mr-2 h-4 w-4"}),"Add existing user"]})}),e.jsx(de,{className:"w-72 p-0",align:"start",children:e.jsxs(ce,{children:[e.jsx(me,{placeholder:"Search users..."}),e.jsxs(ue,{children:[e.jsx(he,{children:"No users found."}),e.jsx(xe,{children:U.map(s=>e.jsx(pe,{value:s.email,onSelect:()=>F(s.sub),children:s.email},s.sub))})]})]})})]})]}),n.length===0?e.jsx("p",{className:"text-muted-foreground",children:"No admins configured."}):e.jsxs(te,{children:[e.jsx(ne,{children:e.jsxs(y,{children:[e.jsx(p,{children:"Email"}),e.jsx(p,{children:"Role"}),r&&e.jsx(p,{})]})}),e.jsx(re,{children:n.map(s=>{const a=s.id===C?.sub;return e.jsxs(y,{children:[e.jsxs(j,{className:"text-sm",children:[w(s.id),a&&e.jsx("span",{className:"ml-2 text-muted-foreground",children:"(you)"})]}),e.jsx(j,{children:r&&!a?e.jsxs(je,{value:s.role,onValueChange:o=>k(s.id,o),children:[e.jsx(ve,{className:"w-28",children:e.jsx(ge,{})}),e.jsxs(fe,{children:[e.jsx(A,{value:"admin",children:"Admin"}),e.jsx(A,{value:"editor",children:"Editor"})]})]}):e.jsx("span",{className:"text-sm capitalize",children:s.role})}),r&&e.jsx(j,{className:"text-right",children:!a&&e.jsx(l,{variant:"ghost",size:"sm",onClick:()=>H(s.id),title:"Remove from site",children:e.jsx(ae,{className:"h-4 w-4"})})})]},s.id)})})]})]})}export{De as AdminsPage};
@@ -1 +1 @@
1
- import{j as s}from"./tanstack-Bs3zYPPV.js";import{u as T,f as D,r as w}from"./react-vendor-C2CvUxFh.js";import{u as M,a as R,b as L,c as z}from"./useContent-B2MUK4An.js";import{m as k}from"./media-url-DIg_vSyf.js";import{w as E,x as H,v as r,S as F,j as h,y as V,B as _}from"./index-b-u0-VCO.js";import{u as q}from"./usePageTitle-Do4xyFdL.js";import{C as G,c as J}from"./card-uKxSQehY.js";import{C as m}from"./checkbox-z1kYnX5o.js";import{T as K,a as O,b as S,c as i,d as Q,e as d}from"./table-Bozosvl6.js";import{f as y}from"./format-C88SDH8g.js";import{B as W}from"./BulkActionBar-BGDrNwCg.js";import"./radix-C1kb_NqW.js";function ie(){const{host:c}=T(),p=D(),{collections:A}=E(),f=H();q({title:"Recent"});const[$,P]=w.useState(),[n,a]=w.useState(new Set),{data:o,isLoading:I}=M(c,$),j=R(c),g=L(c),b=z(c),N=new Map(A.map(e=>[e.name,e.label])),x=o?.items.map(e=>e.contentId)??[],v=x.length>0&&x.every(e=>n.has(e));function C(e){a(l=>{const t=new Set(l);return t.has(e)?t.delete(e):t.add(e),t})}function U(){a(v?new Set:new Set(x))}const B=j.isPending||g.isPending||b.isPending;return s.jsxs("div",{children:[!f&&s.jsxs("div",{className:"mb-6",children:[s.jsx("h1",{className:"text-2xl font-semibold",children:"All Content"}),s.jsx("p",{className:"text-muted-foreground text-sm",children:"Recently updated content across all collections."})]}),n.size>0&&s.jsx(W,{selectedCount:n.size,onPublish:async()=>{const e=[...n],t=(await j.mutateAsync(e)).filter(u=>u.status==="rejected").length;t?r.error(`${t} of ${e.length} failed to publish`):r.success(`${e.length} item(s) published`),a(new Set)},onUnpublish:async()=>{const e=[...n],t=(await g.mutateAsync(e)).filter(u=>u.status==="rejected").length;t?r.error(`${t} of ${e.length} failed to unpublish`):r.success(`${e.length} item(s) unpublished`),a(new Set)},onDelete:async()=>{const e=[...n],t=(await b.mutateAsync(e)).filter(u=>u.status==="rejected").length;t?r.error(`${t} of ${e.length} failed to delete`):r.success(`${e.length} item(s) deleted`),a(new Set)},onClear:()=>a(new Set),isPending:B}),I?s.jsx("div",{className:"space-y-2",children:Array.from({length:5}).map((e,l)=>s.jsx(F,{className:"h-12 w-full"},l))}):o?.items.length?s.jsxs(s.Fragment,{children:[f?s.jsx("div",{className:"grid gap-3","data-testid":"all-content-card-view",children:o.items.map(e=>{const l=e.coverUrl;return s.jsx(G,{className:V("cursor-pointer gap-0 overflow-hidden py-0 transition-shadow hover:shadow-md",n.has(e.contentId)&&"ring-2 ring-primary"),onClick:()=>p(`/sites/${c}/content/${e.collection}/${e.contentId}?from=recent`),children:s.jsx(J,{className:"p-3",children:s.jsxs("div",{className:"flex items-start gap-3 min-w-0",children:[l&&s.jsx("img",{src:k(l),alt:"",className:"h-12 w-12 rounded object-cover flex-shrink-0"}),s.jsxs("div",{className:"min-w-0 flex-1",children:[s.jsxs("div",{className:"flex items-center gap-2 min-w-0",children:[s.jsx("span",{className:"font-medium truncate",children:e.title||"Untitled"}),s.jsx(h,{variant:e.publishedAt?"default":"secondary",className:"shrink-0",children:e.publishedAt?"Published":"Draft"})]}),e.slug&&s.jsxs("p",{className:"text-xs text-muted-foreground truncate mt-0.5",children:["/",e.slug]}),s.jsxs("div",{className:"flex items-center gap-2 mt-1",children:[s.jsx(h,{variant:"outline",className:"text-[10px] px-1.5 py-0",children:N.get(e.collection)??e.collection}),s.jsx("span",{className:"text-xs text-muted-foreground",children:e.publishedAt?y(e.publishedAt):"—"})]})]}),s.jsx(m,{checked:n.has(e.contentId),onCheckedChange:()=>C(e.contentId),onClick:t=>t.stopPropagation(),className:"mt-1"})]})})},e.contentId)})}):s.jsxs(K,{children:[s.jsx(O,{children:s.jsxs(S,{children:[s.jsx(i,{className:"w-10",children:s.jsx(m,{checked:v,onCheckedChange:U,"aria-label":"Select all"})}),s.jsx(i,{children:"Title"}),s.jsx(i,{children:"Slug"}),s.jsx(i,{children:"Collection"}),s.jsx(i,{children:"Status"}),s.jsx(i,{children:"Updated"})]})}),s.jsx(Q,{children:o.items.map(e=>s.jsxs(S,{className:"cursor-pointer",onClick:()=>p(`/sites/${c}/content/${e.collection}/${e.contentId}?from=recent`),children:[s.jsx(d,{onClick:l=>l.stopPropagation(),children:s.jsx(m,{checked:n.has(e.contentId),onCheckedChange:()=>C(e.contentId),"aria-label":`Select ${e.title||"Untitled"}`})}),s.jsx(d,{className:"font-medium",children:s.jsxs("div",{className:"flex items-center gap-3",children:[!!e.coverUrl&&s.jsx("img",{src:k(e.coverUrl),alt:"",className:"h-8 w-8 rounded object-cover flex-shrink-0"}),s.jsx("span",{children:e.title||"Untitled"})]})}),s.jsx(d,{className:"text-muted-foreground text-sm",children:e.slug||"—"}),s.jsx(d,{children:s.jsx(h,{variant:"outline",children:N.get(e.collection)??e.collection})}),s.jsx(d,{children:s.jsx(h,{variant:e.publishedAt?"default":"secondary",children:e.publishedAt?"Published":"Draft"})}),s.jsx(d,{className:"text-muted-foreground",children:e.publishedAt?y(e.publishedAt):"—"})]},e.contentId))})]}),o.hasMore&&s.jsx("div",{className:"mt-4 flex justify-center",children:s.jsx(_,{variant:"outline",onClick:()=>P(o.cursor??void 0),children:"Load More"})})]}):s.jsx("p",{className:"text-muted-foreground",children:"No content yet."})]})}export{ie as AllContentPage};
1
+ import{j as s}from"./tanstack-Bs3zYPPV.js";import{u as T,f as D,r as w}from"./react-vendor-C2CvUxFh.js";import{u as M,a as R,b as L,c as z}from"./useContent-D8yDRTTy.js";import{m as k}from"./media-url-DIg_vSyf.js";import{w as E,x as H,v as r,S as F,j as h,y as V,B as _}from"./index-wYNPRVrc.js";import{u as q}from"./usePageTitle-Bwf-MpTD.js";import{C as G,c as J}from"./card-10FqkZPA.js";import{C as m}from"./checkbox-fC1QPb_4.js";import{T as K,a as O,b as S,c as i,d as Q,e as d}from"./table-WkEcC9MH.js";import{f as y}from"./format-C88SDH8g.js";import{B as W}from"./BulkActionBar-CastJGEP.js";import"./radix-C1kb_NqW.js";function ie(){const{host:c}=T(),p=D(),{collections:A}=E(),f=H();q({title:"Recent"});const[$,P]=w.useState(),[n,a]=w.useState(new Set),{data:o,isLoading:I}=M(c,$),j=R(c),g=L(c),b=z(c),N=new Map(A.map(e=>[e.name,e.label])),x=o?.items.map(e=>e.contentId)??[],v=x.length>0&&x.every(e=>n.has(e));function C(e){a(l=>{const t=new Set(l);return t.has(e)?t.delete(e):t.add(e),t})}function U(){a(v?new Set:new Set(x))}const B=j.isPending||g.isPending||b.isPending;return s.jsxs("div",{children:[!f&&s.jsxs("div",{className:"mb-6",children:[s.jsx("h1",{className:"text-2xl font-semibold",children:"All Content"}),s.jsx("p",{className:"text-muted-foreground text-sm",children:"Recently updated content across all collections."})]}),n.size>0&&s.jsx(W,{selectedCount:n.size,onPublish:async()=>{const e=[...n],t=(await j.mutateAsync(e)).filter(u=>u.status==="rejected").length;t?r.error(`${t} of ${e.length} failed to publish`):r.success(`${e.length} item(s) published`),a(new Set)},onUnpublish:async()=>{const e=[...n],t=(await g.mutateAsync(e)).filter(u=>u.status==="rejected").length;t?r.error(`${t} of ${e.length} failed to unpublish`):r.success(`${e.length} item(s) unpublished`),a(new Set)},onDelete:async()=>{const e=[...n],t=(await b.mutateAsync(e)).filter(u=>u.status==="rejected").length;t?r.error(`${t} of ${e.length} failed to delete`):r.success(`${e.length} item(s) deleted`),a(new Set)},onClear:()=>a(new Set),isPending:B}),I?s.jsx("div",{className:"space-y-2",children:Array.from({length:5}).map((e,l)=>s.jsx(F,{className:"h-12 w-full"},l))}):o?.items.length?s.jsxs(s.Fragment,{children:[f?s.jsx("div",{className:"grid gap-3","data-testid":"all-content-card-view",children:o.items.map(e=>{const l=e.coverUrl;return s.jsx(G,{className:V("cursor-pointer gap-0 overflow-hidden py-0 transition-shadow hover:shadow-md",n.has(e.contentId)&&"ring-2 ring-primary"),onClick:()=>p(`/sites/${c}/content/${e.collection}/${e.contentId}?from=recent`),children:s.jsx(J,{className:"p-3",children:s.jsxs("div",{className:"flex items-start gap-3 min-w-0",children:[l&&s.jsx("img",{src:k(l),alt:"",className:"h-12 w-12 rounded object-cover flex-shrink-0"}),s.jsxs("div",{className:"min-w-0 flex-1",children:[s.jsxs("div",{className:"flex items-center gap-2 min-w-0",children:[s.jsx("span",{className:"font-medium truncate",children:e.title||"Untitled"}),s.jsx(h,{variant:e.publishedAt?"default":"secondary",className:"shrink-0",children:e.publishedAt?"Published":"Draft"})]}),e.slug&&s.jsxs("p",{className:"text-xs text-muted-foreground truncate mt-0.5",children:["/",e.slug]}),s.jsxs("div",{className:"flex items-center gap-2 mt-1",children:[s.jsx(h,{variant:"outline",className:"text-[10px] px-1.5 py-0",children:N.get(e.collection)??e.collection}),s.jsx("span",{className:"text-xs text-muted-foreground",children:e.publishedAt?y(e.publishedAt):"—"})]})]}),s.jsx(m,{checked:n.has(e.contentId),onCheckedChange:()=>C(e.contentId),onClick:t=>t.stopPropagation(),className:"mt-1"})]})})},e.contentId)})}):s.jsxs(K,{children:[s.jsx(O,{children:s.jsxs(S,{children:[s.jsx(i,{className:"w-10",children:s.jsx(m,{checked:v,onCheckedChange:U,"aria-label":"Select all"})}),s.jsx(i,{children:"Title"}),s.jsx(i,{children:"Slug"}),s.jsx(i,{children:"Collection"}),s.jsx(i,{children:"Status"}),s.jsx(i,{children:"Updated"})]})}),s.jsx(Q,{children:o.items.map(e=>s.jsxs(S,{className:"cursor-pointer",onClick:()=>p(`/sites/${c}/content/${e.collection}/${e.contentId}?from=recent`),children:[s.jsx(d,{onClick:l=>l.stopPropagation(),children:s.jsx(m,{checked:n.has(e.contentId),onCheckedChange:()=>C(e.contentId),"aria-label":`Select ${e.title||"Untitled"}`})}),s.jsx(d,{className:"font-medium",children:s.jsxs("div",{className:"flex items-center gap-3",children:[!!e.coverUrl&&s.jsx("img",{src:k(e.coverUrl),alt:"",className:"h-8 w-8 rounded object-cover flex-shrink-0"}),s.jsx("span",{children:e.title||"Untitled"})]})}),s.jsx(d,{className:"text-muted-foreground text-sm",children:e.slug||"—"}),s.jsx(d,{children:s.jsx(h,{variant:"outline",children:N.get(e.collection)??e.collection})}),s.jsx(d,{children:s.jsx(h,{variant:e.publishedAt?"default":"secondary",children:e.publishedAt?"Published":"Draft"})}),s.jsx(d,{className:"text-muted-foreground",children:e.publishedAt?y(e.publishedAt):"—"})]},e.contentId))})]}),o.hasMore&&s.jsx("div",{className:"mt-4 flex justify-center",children:s.jsx(_,{variant:"outline",onClick:()=>P(o.cursor??void 0),children:"Load More"})})]}):s.jsx("p",{className:"text-muted-foreground",children:"No content yet."})]})}export{ie as AllContentPage};
@@ -1 +1 @@
1
- import{u as E,a as A,b as K,j as e}from"./tanstack-Bs3zYPPV.js";import{u as O,r as m}from"./react-vendor-C2CvUxFh.js";import{e as f,x as G,B as i,P as g,S as Q,T as R,D,k as I,l as w,m as P,n as T,I as k,af as $,o as p,L as z,v as x}from"./index-b-u0-VCO.js";import{T as B,a as H,b as C,c as d,d as M,e as u}from"./table-Bozosvl6.js";import{f as N}from"./format-C88SDH8g.js";import{u as U}from"./usePageTitle-Do4xyFdL.js";import"./radix-C1kb_NqW.js";function J(s){const t=f();return E({queryKey:["sites",s,"api-keys"],queryFn:async()=>({items:(await t.apiFetch(`/v1/admin/sites/${s}/api-keys`)).keys}),enabled:!!s})}function Y(s){const t=f(),n=A();return K({mutationFn:l=>t.apiFetch(`/v1/admin/sites/${s}/api-keys`,{method:"POST",body:JSON.stringify(l)}),onSuccess:()=>n.invalidateQueries({queryKey:["sites",s,"api-keys"]})})}function _(s,t){const n=f(),l=A();return K({mutationFn:()=>n.apiFetch(`/v1/admin/sites/${s}/api-keys/${t}`,{method:"DELETE"}),onSuccess:()=>l.invalidateQueries({queryKey:["sites",s,"api-keys"]})})}function ne(){const{host:s}=O(),{data:t,isLoading:n}=J(s),l=Y(s),[h,r]=m.useState(!1),[b,y]=m.useState(""),[o,j]=m.useState(null),[F,v]=m.useState(null),S=G();U({title:"API Keys",actions:e.jsx(i,{size:"sm",onClick:()=>r(!0),children:e.jsx(g,{className:"h-4 w-4"})})});async function L(a){a.preventDefault();try{const c=await l.mutateAsync({label:b});j(c.key),y("")}catch(c){x.error("Failed to create API key",{description:c instanceof Error?c.message:void 0})}}function q(){o&&(navigator.clipboard.writeText(o),x.success("Copied to clipboard"))}return e.jsxs("div",{children:[!S&&e.jsxs("div",{className:"mb-6 flex items-center justify-between",children:[e.jsx("h1",{className:"text-2xl font-semibold",children:"API Keys"}),e.jsxs(i,{onClick:()=>r(!0),children:[e.jsx(g,{className:"mr-2 h-4 w-4"}),"Generate Key"]})]}),n?e.jsx("div",{className:"space-y-2",children:Array.from({length:3}).map((a,c)=>e.jsx(Q,{className:"h-12 w-full"},c))}):t?.items.length?e.jsxs(B,{children:[e.jsx(H,{children:e.jsxs(C,{children:[e.jsx(d,{children:"Label"}),e.jsx(d,{children:"Key ID"}),e.jsx(d,{children:"Created"}),e.jsx(d,{children:"Last Used"}),e.jsx(d,{})]})}),e.jsx(M,{children:t.items.map(a=>e.jsxs(C,{children:[e.jsx(u,{className:"font-medium",children:a.label}),e.jsx(u,{className:"font-mono text-xs",children:a.keyId}),e.jsx(u,{className:"text-muted-foreground",children:N(a.createdAt)}),e.jsx(u,{className:"text-muted-foreground",children:a.lastUsedAt?N(a.lastUsedAt):"Never"}),e.jsx(u,{children:e.jsx(i,{variant:"ghost",size:"sm",onClick:()=>v(a.keyId),children:e.jsx(R,{className:"h-4 w-4"})})})]},a.keyId))})]}):e.jsx("p",{className:"text-muted-foreground",children:"No API keys."}),e.jsx(D,{open:h,onOpenChange:a=>{r(a),a||(j(null),y(""))},children:e.jsxs(I,{children:[e.jsxs(w,{children:[e.jsx(P,{children:o?"API Key Generated":"Generate API Key"}),e.jsx(T,{className:"sr-only",children:"Create a new API key for site access"})]}),o?e.jsxs("div",{className:"space-y-4",children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:"Copy this key now. You won't be able to see it again."}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(k,{value:o,readOnly:!0,className:"font-mono text-xs"}),e.jsx(i,{variant:"outline",size:"icon",onClick:q,children:e.jsx($,{className:"h-4 w-4"})})]}),e.jsx(p,{children:e.jsx(i,{onClick:()=>{r(!1),j(null)},children:"Done"})})]}):e.jsxs("form",{onSubmit:L,className:"space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(z,{htmlFor:"key-label",children:"Label"}),e.jsx(k,{id:"key-label",value:b,onChange:a=>y(a.target.value),required:!0,autoFocus:!0})]}),e.jsxs(p,{children:[e.jsx(i,{variant:"outline",onClick:()=>r(!1),children:"Cancel"}),e.jsx(i,{type:"submit",disabled:l.isPending,children:"Generate"})]})]})]})}),e.jsx(V,{host:s,keyId:F,onClose:()=>v(null)})]})}function V({host:s,keyId:t,onClose:n}){const l=_(s,t??"");async function h(){try{await l.mutateAsync(),x.success("API key revoked"),n()}catch(r){x.error("Failed to revoke",{description:r instanceof Error?r.message:void 0})}}return e.jsx(D,{open:!!t,onOpenChange:()=>n(),children:e.jsxs(I,{children:[e.jsxs(w,{children:[e.jsx(P,{children:"Revoke API key?"}),e.jsx(T,{children:"This action cannot be undone. Any applications using this key will lose access."})]}),e.jsxs(p,{children:[e.jsx(i,{variant:"outline",onClick:n,children:"Cancel"}),e.jsx(i,{variant:"destructive",onClick:h,children:"Revoke"})]})]})})}export{ne as ApiKeysPage};
1
+ import{u as E,a as A,b as K,j as e}from"./tanstack-Bs3zYPPV.js";import{u as O,r as m}from"./react-vendor-C2CvUxFh.js";import{e as f,x as G,B as i,P as g,S as Q,T as R,D,k as I,l as w,m as P,n as T,I as k,af as $,o as p,L as z,v as x}from"./index-wYNPRVrc.js";import{T as B,a as H,b as C,c as d,d as M,e as u}from"./table-WkEcC9MH.js";import{f as N}from"./format-C88SDH8g.js";import{u as U}from"./usePageTitle-Bwf-MpTD.js";import"./radix-C1kb_NqW.js";function J(s){const t=f();return E({queryKey:["sites",s,"api-keys"],queryFn:async()=>({items:(await t.apiFetch(`/v1/admin/sites/${s}/api-keys`)).keys}),enabled:!!s})}function Y(s){const t=f(),n=A();return K({mutationFn:l=>t.apiFetch(`/v1/admin/sites/${s}/api-keys`,{method:"POST",body:JSON.stringify(l)}),onSuccess:()=>n.invalidateQueries({queryKey:["sites",s,"api-keys"]})})}function _(s,t){const n=f(),l=A();return K({mutationFn:()=>n.apiFetch(`/v1/admin/sites/${s}/api-keys/${t}`,{method:"DELETE"}),onSuccess:()=>l.invalidateQueries({queryKey:["sites",s,"api-keys"]})})}function ne(){const{host:s}=O(),{data:t,isLoading:n}=J(s),l=Y(s),[h,r]=m.useState(!1),[b,y]=m.useState(""),[o,j]=m.useState(null),[F,v]=m.useState(null),S=G();U({title:"API Keys",actions:e.jsx(i,{size:"sm",onClick:()=>r(!0),children:e.jsx(g,{className:"h-4 w-4"})})});async function L(a){a.preventDefault();try{const c=await l.mutateAsync({label:b});j(c.key),y("")}catch(c){x.error("Failed to create API key",{description:c instanceof Error?c.message:void 0})}}function q(){o&&(navigator.clipboard.writeText(o),x.success("Copied to clipboard"))}return e.jsxs("div",{children:[!S&&e.jsxs("div",{className:"mb-6 flex items-center justify-between",children:[e.jsx("h1",{className:"text-2xl font-semibold",children:"API Keys"}),e.jsxs(i,{onClick:()=>r(!0),children:[e.jsx(g,{className:"mr-2 h-4 w-4"}),"Generate Key"]})]}),n?e.jsx("div",{className:"space-y-2",children:Array.from({length:3}).map((a,c)=>e.jsx(Q,{className:"h-12 w-full"},c))}):t?.items.length?e.jsxs(B,{children:[e.jsx(H,{children:e.jsxs(C,{children:[e.jsx(d,{children:"Label"}),e.jsx(d,{children:"Key ID"}),e.jsx(d,{children:"Created"}),e.jsx(d,{children:"Last Used"}),e.jsx(d,{})]})}),e.jsx(M,{children:t.items.map(a=>e.jsxs(C,{children:[e.jsx(u,{className:"font-medium",children:a.label}),e.jsx(u,{className:"font-mono text-xs",children:a.keyId}),e.jsx(u,{className:"text-muted-foreground",children:N(a.createdAt)}),e.jsx(u,{className:"text-muted-foreground",children:a.lastUsedAt?N(a.lastUsedAt):"Never"}),e.jsx(u,{children:e.jsx(i,{variant:"ghost",size:"sm",onClick:()=>v(a.keyId),children:e.jsx(R,{className:"h-4 w-4"})})})]},a.keyId))})]}):e.jsx("p",{className:"text-muted-foreground",children:"No API keys."}),e.jsx(D,{open:h,onOpenChange:a=>{r(a),a||(j(null),y(""))},children:e.jsxs(I,{children:[e.jsxs(w,{children:[e.jsx(P,{children:o?"API Key Generated":"Generate API Key"}),e.jsx(T,{className:"sr-only",children:"Create a new API key for site access"})]}),o?e.jsxs("div",{className:"space-y-4",children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:"Copy this key now. You won't be able to see it again."}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(k,{value:o,readOnly:!0,className:"font-mono text-xs"}),e.jsx(i,{variant:"outline",size:"icon",onClick:q,children:e.jsx($,{className:"h-4 w-4"})})]}),e.jsx(p,{children:e.jsx(i,{onClick:()=>{r(!1),j(null)},children:"Done"})})]}):e.jsxs("form",{onSubmit:L,className:"space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(z,{htmlFor:"key-label",children:"Label"}),e.jsx(k,{id:"key-label",value:b,onChange:a=>y(a.target.value),required:!0,autoFocus:!0})]}),e.jsxs(p,{children:[e.jsx(i,{variant:"outline",onClick:()=>r(!1),children:"Cancel"}),e.jsx(i,{type:"submit",disabled:l.isPending,children:"Generate"})]})]})]})}),e.jsx(V,{host:s,keyId:F,onClose:()=>v(null)})]})}function V({host:s,keyId:t,onClose:n}){const l=_(s,t??"");async function h(){try{await l.mutateAsync(),x.success("API key revoked"),n()}catch(r){x.error("Failed to revoke",{description:r instanceof Error?r.message:void 0})}}return e.jsx(D,{open:!!t,onOpenChange:()=>n(),children:e.jsxs(I,{children:[e.jsxs(w,{children:[e.jsx(P,{children:"Revoke API key?"}),e.jsx(T,{children:"This action cannot be undone. Any applications using this key will lose access."})]}),e.jsxs(p,{children:[e.jsx(i,{variant:"outline",onClick:n,children:"Cancel"}),e.jsx(i,{variant:"destructive",onClick:h,children:"Revoke"})]})]})})}export{ne as ApiKeysPage};
@@ -0,0 +1 @@
1
+ import{u as M,j as e}from"./tanstack-Bs3zYPPV.js";import{L as R,r as i,u as _}from"./react-vendor-C2CvUxFh.js";import{e as E,F as O,G as K,J as V,K as W,B as U,au as q,S as I,x as H,aK as z,aL as G,aM as Q,aN as J,aO as X,al as v,aP as Y,T as b,$ as m,aE as Z,P as S,aQ as A,ai as ee,aR as te,aS as ae,aT as le,a4 as se,aU as ne,aV as oe}from"./index-wYNPRVrc.js";import{u as de}from"./useAdminResolver-CpZj93vH.js";import{s as T,T as re}from"./serializeToText-BJy0Ms5I.js";import{h as D}from"./useContent-D8yDRTTy.js";import{f as P,a as ce}from"./format-C88SDH8g.js";import{S as ie,a as ue,b as me,c as he,d as be}from"./select-BV3jemT6.js";import{T as xe,a as pe,b as L,c as p,d as fe,e as f}from"./table-WkEcC9MH.js";import{u as ge}from"./usePageTitle-Bwf-MpTD.js";import"./radix-C1kb_NqW.js";function je(t,l){const s=E(),o=new URLSearchParams;l?.action&&o.set("action",l.action),l?.before&&o.set("before",String(l.before));const r=o.toString();return M({queryKey:["sites",t,"audit",l?.action??"",l?.before??""],queryFn:()=>s.apiFetch(`/v1/admin/sites/${t}/audit${r?`?${r}`:""}`),enabled:!!t})}const ke={"content.create":"Content Created","content.update":"Content Updated","content.publish":"Content Published","content.unpublish":"Content Unpublished","content.delete":"Content Deleted","content.schedule":"Content Scheduled","content.unschedule":"Content Unscheduled","content.update_publish_date":"Publish Date Changed","content.discard":"Draft Discarded","media.create":"Media Uploaded","media.update":"Media Updated","media.delete":"Media Deleted","media.bulk":"Bulk Media Operation","media.folder.create":"Folder Created","media.folder.update":"Folder Renamed","media.folder.delete":"Folder Deleted","collection.create":"Collection Created","collection.update":"Collection Updated","collection.delete":"Collection Deleted","blocktype.create":"Block Type Created","blocktype.update":"Block Type Updated","blocktype.delete":"Block Type Deleted","webhook.create":"Webhook Created","webhook.update":"Webhook Updated","webhook.delete":"Webhook Deleted","webhook.rotate_secret":"Webhook Secret Rotated","webhook.retry_delivery":"Delivery Retried","apikey.create":"API Key Created","apikey.revoke":"API Key Revoked","site.archived":"Site Archived","site.unarchived":"Site Unarchived","site.purged":"Site Purged"};function ye(t){return!!t?.blockId&&!!t?.prevBlockId&&!!t?.resourceId}function Ie({host:t,details:l}){const s=l.resourceId,o=l.collection??"",{data:r}=q(t,o),{data:a,isLoading:x}=D(t,s,l.blockId??null),{data:d,isLoading:u}=D(t,s,l.prevBlockId??null),c=i.useMemo(()=>r?.fields??[],[r?.fields]),g=i.useMemo(()=>{if(!a)return[];const h={title:a.title,slug:a.slug,snippet:a.snippet,tags:a.tags};return T(c,a.body??{},h)},[a,c]),j=i.useMemo(()=>{if(!d)return[];const h={title:d.title,slug:d.slug,snippet:d.snippet,tags:d.tags};return T(c,d.body??{},h)},[d,c]);return x||u?e.jsxs("div",{className:"space-y-2","data-testid":"diff-loading",children:[e.jsx(I,{className:"h-6 w-24"}),e.jsx(I,{className:"h-40 w-full"})]}):!a||!d?e.jsx("p",{className:"text-muted-foreground text-sm","data-testid":"diff-unavailable",children:"Version data unavailable."}):e.jsxs("div",{"data-testid":"diff-view",children:[e.jsx("h3",{className:"mb-2 text-sm font-medium",children:"Changes"}),e.jsx(re,{published:j,draft:g,leftLabel:"Before",rightLabel:"After"})]})}function we({open:t,onOpenChange:l,event:s,host:o,resolveAdmin:r}){if(!s)return null;const a=s.details,x=ke[s.action]??s.action,d=ye(a),u=a?.resourceType==="content"&&a?.resourceId&&a?.collection?`/sites/${o}/content/${a.collection}/${a.resourceId}`:null;return e.jsx(O,{open:t,onOpenChange:l,children:e.jsxs(K,{className:"w-full overflow-y-auto px-6 sm:max-w-lg","data-testid":"audit-drawer",children:[e.jsx(V,{children:e.jsx(W,{children:x})}),e.jsxs("div",{className:"mt-4 space-y-4",children:[e.jsxs("dl",{className:"grid grid-cols-[auto_1fr] gap-x-4 gap-y-2 text-sm",children:[a?.title&&e.jsxs(e.Fragment,{children:[e.jsx("dt",{className:"text-muted-foreground",children:"Resource"}),e.jsx("dd",{className:"font-medium","data-testid":"drawer-resource",children:a.title})]}),a?.collection&&e.jsxs(e.Fragment,{children:[e.jsx("dt",{className:"text-muted-foreground",children:"Collection"}),e.jsx("dd",{children:a.collection})]}),e.jsx("dt",{className:"text-muted-foreground",children:"Admin"}),e.jsx("dd",{children:r(s.adminId)}),e.jsx("dt",{className:"text-muted-foreground",children:"Time"}),e.jsx("dd",{children:P(s.createdAt)}),e.jsx("dt",{className:"text-muted-foreground",children:"Status"}),e.jsx("dd",{children:e.jsx("span",{className:s.status==="success"?"text-green-600":s.status==="failed"?"text-red-600":"text-yellow-600",children:s.status})}),a?.extra&&e.jsxs(e.Fragment,{children:[e.jsx("dt",{className:"text-muted-foreground",children:"Details"}),e.jsx("dd",{className:"text-muted-foreground",children:a.extra})]})]}),s.errorMsg&&e.jsx("div",{className:"rounded border border-red-200 bg-red-50 p-3 text-sm text-red-800 dark:border-red-900 dark:bg-red-950 dark:text-red-300","data-testid":"drawer-error",children:s.errorMsg}),u&&e.jsx(U,{variant:"outline",size:"sm",asChild:!0,children:e.jsx(R,{to:u,children:"View content"})}),d&&a&&e.jsx("div",{className:"border-t pt-4",children:e.jsx(Ie,{host:o,details:a})}),!d&&a?.resourceType==="content"&&e.jsx("p",{className:"text-muted-foreground text-sm","data-testid":"no-changes",children:"No change comparison available for this event."})]})]})})}const Ce={"content.create":{label:"Created content",Icon:S},"content.update":{label:"Updated content",Icon:m},"content.publish":{label:"Published content",Icon:oe},"content.unpublish":{label:"Unpublished content",Icon:ne},"content.delete":{label:"Deleted content",Icon:b},"content.schedule":{label:"Scheduled content",Icon:se},"content.unschedule":{label:"Unscheduled content",Icon:le},"content.update_publish_date":{label:"Changed publish date",Icon:ae},"content.discard":{label:"Discarded draft",Icon:te},"media.create":{label:"Uploaded media",Icon:ee},"media.update":{label:"Updated media",Icon:m},"media.delete":{label:"Deleted media",Icon:b},"media.bulk":{label:"Bulk media operation",Icon:v},"media.folder.create":{label:"Created folder",Icon:A},"media.folder.update":{label:"Renamed folder",Icon:m},"media.folder.delete":{label:"Deleted folder",Icon:b},"collection.create":{label:"Created collection",Icon:A},"collection.update":{label:"Updated collection",Icon:m},"collection.delete":{label:"Deleted collection",Icon:b},"blocktype.create":{label:"Created block type",Icon:S},"blocktype.update":{label:"Updated block type",Icon:m},"blocktype.delete":{label:"Deleted block type",Icon:b},"webhook.create":{label:"Created webhook",Icon:Z},"webhook.update":{label:"Updated webhook",Icon:m},"webhook.delete":{label:"Deleted webhook",Icon:b},"webhook.rotate_secret":{label:"Rotated webhook secret",Icon:Y},"webhook.retry_delivery":{label:"Retried delivery",Icon:v},"apikey.create":{label:"Created API key",Icon:X},"apikey.revoke":{label:"Revoked API key",Icon:J},"site.archived":{label:"Archived site",Icon:Q},"site.unarchived":{label:"Unarchived site",Icon:G},"site.purged":{label:"Purged site",Icon:z}},Ne=[{label:"All",value:"all"},{label:"Content",value:"content."},{label:"Media",value:"media."},{label:"Collections",value:"collection."},{label:"Block Types",value:"blocktype."},{label:"Webhooks",value:"webhook."},{label:"API Keys",value:"apikey."},{label:"Sites",value:"site."}];function ve(t){return Ce[t]??{label:t,Icon:m}}function Se(t,l){const s=l.resourceType??l.details?.resourceType,o=l.resourceId??l.details?.resourceId;if(!s||!o)return null;switch(s){case"content":{const r=l.details?.collection;return r?`/sites/${t}/content/${r}/${o}`:`/sites/${t}/content`}case"media":return`/sites/${t}/media`;case"collection":return`/sites/${t}/settings/collections`;case"webhook":return`/sites/${t}/settings/webhooks`;default:return null}}function Ae({status:t}){const l=t==="success"?"bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-400":t==="failed"?"bg-red-100 text-red-800 dark:bg-red-900/30 dark:text-red-400":"bg-yellow-100 text-yellow-800 dark:bg-yellow-900/30 dark:text-yellow-400";return e.jsx("span",{className:`inline-flex items-center rounded-full px-2 py-0.5 text-xs font-medium ${l}`,children:t})}function Ee(){const{host:t}=_(),[l,s]=i.useState(),[o,r]=i.useState("all"),[a,x]=i.useState(null),[d,u]=i.useState(!1),{data:c,isLoading:g}=je(t,{before:l}),j=c?.items.map(n=>n.adminId)??[],{resolve:h}=de(j),B=H(),$=i.useCallback(n=>{x(n),u(!0)},[]);ge({title:"Audit Log"});const w=o!=="all"?c?.items.filter(n=>n.action.startsWith(o)):c?.items;return e.jsxs("div",{children:[e.jsxs("div",{className:"mb-6 flex items-center justify-between gap-4",children:[!B&&e.jsx("h1",{className:"text-2xl font-semibold",children:"Audit Log"}),e.jsxs(ie,{value:o,onValueChange:r,children:[e.jsx(ue,{className:"w-[180px]","data-testid":"action-filter",children:e.jsx(me,{placeholder:"Filter by type"})}),e.jsx(he,{children:Ne.map(n=>e.jsx(be,{value:n.value,children:n.label},n.value))})]})]}),g?e.jsx("div",{className:"space-y-2",children:Array.from({length:5}).map((n,k)=>e.jsx(I,{className:"h-12 w-full"},k))}):w?.length?e.jsxs(e.Fragment,{children:[e.jsxs(xe,{children:[e.jsx(pe,{children:e.jsxs(L,{children:[e.jsx(p,{children:"Action"}),e.jsx(p,{children:"Resource"}),e.jsx(p,{children:"Admin"}),e.jsx(p,{children:"Status"}),e.jsx(p,{children:"Time"})]})}),e.jsx(fe,{children:w.map(n=>{const{label:k,Icon:F}=ve(n.action),y=n.details?.title,C=n.details?.collection,N=t?Se(t,n):null;return e.jsxs(L,{"data-testid":"audit-row",className:"cursor-pointer",onClick:()=>$(n),children:[e.jsx(f,{children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(F,{className:"text-muted-foreground h-4 w-4 shrink-0"}),e.jsx("span",{className:"font-medium",children:k})]})}),e.jsx(f,{children:y?e.jsxs("div",{className:"flex items-center gap-2",children:[N?e.jsx(R,{to:N,className:"text-primary hover:underline",children:y}):e.jsx("span",{children:y}),C&&e.jsx("span",{className:"bg-muted text-muted-foreground rounded px-1.5 py-0.5 text-xs",children:C})]}):e.jsx("span",{className:"text-muted-foreground",children:"-"})}),e.jsx(f,{className:"text-sm",children:h(n.adminId)}),e.jsx(f,{children:e.jsx(Ae,{status:n.status})}),e.jsx(f,{className:"text-muted-foreground",title:P(n.createdAt),children:ce(n.createdAt)})]},n.eventId)})})]}),c?.hasMore&&c.items.length>0&&e.jsx("div",{className:"mt-4 flex justify-center",children:e.jsx(U,{variant:"outline",onClick:()=>s(c.items[c.items.length-1].createdAt),children:"Load More"})})]}):e.jsx("p",{className:"text-muted-foreground",children:"No audit events."}),e.jsx(we,{open:d,onOpenChange:u,event:a,host:t,resolveAdmin:h})]})}export{Ee as AuditPage};