headroom-cms 0.1.1 → 0.1.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.
- package/admin/assets/AdminsPage-DYJhlQnA.js +1 -0
- package/admin/assets/AllContentPage-DShBvFru.js +1 -0
- package/admin/assets/{ApiKeysPage-FgNHZPBS.js → ApiKeysPage-DONrd-TJ.js} +1 -1
- package/admin/assets/{AuditPage-DAPpo-sj.js → AuditPage-BwhYu96L.js} +1 -1
- package/admin/assets/{BlockEditor-CZTwex-o.js → BlockEditor-C0KaZUHQ.js} +57 -57
- package/admin/assets/BlockTypeEditPage-BYJfEA6l.js +1 -0
- package/admin/assets/BlockTypesPage-Pf9u78-O.js +1 -0
- package/admin/assets/BulkActionBar-BX-t8fyM.js +1 -0
- package/admin/assets/CollectionEditPage-CQGo9Cbu.js +1 -0
- package/admin/assets/{CollectionsPage-BnCaxALz.js → CollectionsPage-D-QTkoW_.js} +1 -1
- package/admin/assets/{ContentCreatePage-CJI326o-.js → ContentCreatePage-DujNZXXj.js} +1 -1
- package/admin/assets/ContentEditPage-DyqgEoAe.js +3 -0
- package/admin/assets/ContentListPage-llAlhZTH.js +1 -0
- package/admin/assets/{CustomBlockPreview-CCssn6vF.js → CustomBlockPreview-CCiZrZhi.js} +1 -1
- package/admin/assets/FieldBuilder-B3-3MTqp.js +3 -0
- package/admin/assets/{LoginPage-Jrne8-Wr.js → LoginPage-BlJXP0GH.js} +1 -1
- package/admin/assets/MediaPage-Cad4n33B.js +1 -0
- package/admin/assets/SiteSettingsPage-xfAm3ZKQ.js +1 -0
- package/admin/assets/SitesPage-DnCiSu23.js +1 -0
- package/admin/assets/{TagsPage-BGpp0XZM.js → TagsPage-DNlaoFCE.js} +1 -1
- package/admin/assets/UsersPage-D_nOx6W9.js +1 -0
- package/admin/assets/{WebhookEditPage-BOcLe5OJ.js → WebhookEditPage-BUvLl4rY.js} +1 -1
- package/admin/assets/{WebhooksPage-Czco583Y.js → WebhooksPage-CG7WC9Bq.js} +1 -1
- package/admin/assets/{badge-0Z1nL6DI.js → badge-ChZ2DZue.js} +1 -1
- package/admin/assets/{card-D1-S-QZ6.js → card-DpNr7WTb.js} +1 -1
- package/admin/assets/check-BMpruHpO.js +1 -0
- package/admin/assets/{checkbox-BPqrj_XS.js → checkbox-VtCfoGic.js} +1 -1
- package/admin/assets/command-98iA8Va4.js +1 -0
- package/admin/assets/contentStatus-BmaiYVOm.js +1 -0
- package/admin/assets/{copy-BqH9rXYM.js → copy-fXL6Ngxi.js} +1 -1
- package/admin/assets/{core.esm-Csvubn5Q.js → core.esm-BtFZvlg0.js} +1 -1
- package/admin/assets/format-C88SDH8g.js +1 -0
- package/admin/assets/index-CwkwXbO-.js +18 -0
- package/admin/assets/index-FYfbavkE.css +1 -0
- package/admin/assets/plus-2Ds_MoqB.js +1 -0
- package/admin/assets/popover-DFInMOpa.js +1 -0
- package/admin/assets/radix-n1vDIPi6.js +51 -0
- package/admin/assets/search-DRNC6QB5.js +1 -0
- package/admin/assets/select-Cj54Wt-H.js +1 -0
- package/admin/assets/{sortable.esm-Zh-9QRSf.js → sortable.esm-BUhmZW2_.js} +1 -1
- package/admin/assets/{table-B3EHrN_H.js → table-D4rLgOKa.js} +1 -1
- package/admin/assets/{trash-2-Gny2Upn-.js → trash-2-CbbWF_O4.js} +1 -1
- package/admin/assets/use-mobile-Cvl5tIVY.js +1 -0
- package/admin/assets/useAdminResolver-B-_1f6SR.js +1 -0
- package/admin/assets/useContent-Cp41wBYR.js +1 -0
- package/admin/assets/useMedia-DjiNKMOU.js +1 -0
- package/admin/assets/{useTags-CYqbj5cK.js → useTags-BB47vbXO.js} +1 -1
- package/admin/assets/{useWebhooks-DXgtQ3aU.js → useWebhooks-DS4Ee8Wk.js} +1 -1
- package/admin/assets/workbox-window.prod.es5-BIl4cyR9.js +2 -0
- package/admin/icons/icon-180x180.png +0 -0
- package/admin/icons/icon-192x192.png +0 -0
- package/admin/icons/icon-512x512.png +0 -0
- package/admin/icons/maskable-icon-512x512.png +0 -0
- package/admin/index.html +11 -6
- package/admin/manifest.webmanifest +1 -0
- package/admin/sw.js +1 -0
- package/admin/workbox-7d58179f.js +1 -0
- package/dist/admin-site.d.ts.map +1 -1
- package/dist/admin-site.js +3 -0
- package/dist/admin-site.js.map +1 -1
- package/dist/image.d.ts.map +1 -1
- package/dist/image.js +3 -0
- package/dist/image.js.map +1 -1
- package/dist/storage.js +1 -1
- package/dist/storage.js.map +1 -1
- package/lambda/api/bootstrap +0 -0
- package/lambda/webhook-worker/bootstrap +0 -0
- package/package.json +2 -2
- package/src/admin-site.ts +3 -0
- package/src/image.ts +3 -0
- package/src/storage.ts +1 -1
- package/admin/assets/AdminsPage-CnrQqwKA.js +0 -1
- package/admin/assets/AllContentPage-ByN1h3PP.js +0 -1
- package/admin/assets/BlockTypeEditPage-Buuwbx1P.js +0 -1
- package/admin/assets/BlockTypesPage-Dj0qmsqX.js +0 -1
- package/admin/assets/BulkActionBar-BMcUBJSH.js +0 -1
- package/admin/assets/CollectionEditPage-CLgQu2HS.js +0 -1
- package/admin/assets/ContentEditPage-A4i8P2Jd.js +0 -3
- package/admin/assets/ContentListPage-Bc4mBIkB.js +0 -1
- package/admin/assets/FieldBuilder-YJGSk0nY.js +0 -3
- package/admin/assets/MediaPage-_qNXqsZg.js +0 -1
- package/admin/assets/SiteSettingsPage-CoZnavij.js +0 -1
- package/admin/assets/SitesPage-ETqFT3nO.js +0 -1
- package/admin/assets/UsersPage-CKRJpAb6.js +0 -1
- package/admin/assets/check-BGA0ADyt.js +0 -1
- package/admin/assets/command-ChD319uJ.js +0 -1
- package/admin/assets/contentStatus-DfWHjFVB.js +0 -1
- package/admin/assets/format-CZ9bpk32.js +0 -1
- package/admin/assets/index-DOqKbrpW.css +0 -1
- package/admin/assets/index-Ds50UTAc.js +0 -18
- package/admin/assets/media-url-DIg_vSyf.js +0 -1
- package/admin/assets/plus-BgHSYWJN.js +0 -1
- package/admin/assets/radix-DQ3amgxj.js +0 -51
- package/admin/assets/search-DIzcfCVh.js +0 -1
- package/admin/assets/select-CJXZv4wv.js +0 -1
- package/admin/assets/useAdminResolver-BsQc_N4z.js +0 -1
- package/admin/assets/useContent-CSobIico.js +0 -1
- package/admin/assets/useMedia-CQnmMz4N.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{j as e}from"./tanstack-BO6c-AOu.js";import{u as H,r as x}from"./react-vendor-DNVhVxD7.js";import{o as L,u as q,a7 as B,a8 as _,p as z,a9 as M,aa as V,S as y,D as G,i as $,B as l,j as J,k as K,l as Q,m as W,I as X,n as Y,t as i}from"./index-CwkwXbO-.js";import{u as Z}from"./useAdminResolver-B-_1f6SR.js";import{T as ee,a as se,b,c as p,d as ae,e as j}from"./table-D4rLgOKa.js";import{P as ie,a as te,b as ne}from"./popover-DFInMOpa.js";import{C as re,a as oe,b as le,c as de,d as ce,e as me}from"./command-98iA8Va4.js";import{S as ue,a as he,b as xe,c as pe,d as C}from"./select-Cj54Wt-H.js";import{P as je}from"./plus-2Ds_MoqB.js";import{T as ve}from"./trash-2-CbbWF_O4.js";import"./radix-n1vDIPi6.js";import"./search-DRNC6QB5.js";import"./check-BMpruHpO.js";const fe=[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}],["line",{x1:"19",x2:"19",y1:"8",y2:"14",key:"1bvyxn"}],["line",{x1:"22",x2:"16",y1:"11",y2:"11",key:"1shjgl"}]],ge=L("user-plus",fe);function ke(){const{host:d}=H(),{user:N}=q(),S=B(),{data:A,isLoading:I}=_(d),{data:T}=z(),c=M(d),m=V(d),n=A?.admins??[],E=T?.items??[],r=S==="admin",v=n.map(s=>s.id),{resolve:w}=Z(v),[D,f]=x.useState(!1),[P,g]=x.useState(!1),[u,h]=x.useState("");if(I)return e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{className:"h-8 w-64"}),Array.from({length:3}).map((s,a)=>e.jsx(y,{className:"h-12 w-full"},a))]});const R=E.filter(s=>!v.includes(s.sub));async function k(s){try{await c.mutateAsync({admins:[...n,{id:s,role:"editor"}]}),i.success("Admin added"),f(!1)}catch(a){i.error("Failed to add admin",{description:a instanceof Error?a.message:void 0})}}async function U(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(""),g(!1)}catch(a){i.error("Failed to invite user",{description:a instanceof Error?a.message:void 0})}}async function O(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 F(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:[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(G,{open:P,onOpenChange:s=>{g(s),s||h("")},children:[e.jsx($,{asChild:!0,children:e.jsxs(l,{children:[e.jsx(ge,{className:"mr-2 h-4 w-4"}),"Invite by email"]})}),e.jsxs(J,{children:[e.jsxs(K,{children:[e.jsx(Q,{children:"Invite User to Site"}),e.jsx(W,{className:"sr-only",children:"Send an invite email to add a user to this site"})]}),e.jsxs("form",{onSubmit:U,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(X,{type:"email",value:u,onChange:s=>h(s.target.value),placeholder:"email@example.com",required:!0}),e.jsx(Y,{children:e.jsx(l,{type:"submit",disabled:m.isPending,children:m.isPending?"Inviting...":"Send Invite"})})]})]})]}),e.jsxs(ie,{open:D,onOpenChange:f,children:[e.jsx(te,{asChild:!0,children:e.jsxs(l,{variant:"outline",children:[e.jsx(je,{className:"mr-2 h-4 w-4"}),"Add existing user"]})}),e.jsx(ne,{className:"w-72 p-0",align:"start",children:e.jsxs(re,{children:[e.jsx(oe,{placeholder:"Search users..."}),e.jsxs(le,{children:[e.jsx(de,{children:"No users found."}),e.jsx(ce,{children:R.map(s=>e.jsx(me,{value:s.email,onSelect:()=>k(s.sub),children:s.email},s.sub))})]})]})})]})]}),n.length===0?e.jsx("p",{className:"text-muted-foreground",children:"No admins configured."}):e.jsxs(ee,{children:[e.jsx(se,{children:e.jsxs(b,{children:[e.jsx(p,{children:"Email"}),e.jsx(p,{children:"Role"}),r&&e.jsx(p,{})]})}),e.jsx(ae,{children:n.map(s=>{const a=s.id===N?.sub;return e.jsxs(b,{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(ue,{value:s.role,onValueChange:o=>F(s.id,o),children:[e.jsx(he,{className:"w-28",children:e.jsx(xe,{})}),e.jsxs(pe,{children:[e.jsx(C,{value:"admin",children:"Admin"}),e.jsx(C,{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:()=>O(s.id),title:"Remove from site",children:e.jsx(ve,{className:"h-4 w-4"})})})]},s.id)})})]})]})}export{ke as AdminsPage};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{j as s}from"./tanstack-BO6c-AOu.js";import{u as T,e as D,r as C}from"./react-vendor-DNVhVxD7.js";import{u as M,a as L,b as R,c as z}from"./useContent-Cp41wBYR.js";import{u as E,m as w}from"./use-mobile-Cvl5tIVY.js";import{v as H,t as r,S as F,w as V,B as _}from"./index-CwkwXbO-.js";import{B as h}from"./badge-ChZ2DZue.js";import{C as q,c as G}from"./card-DpNr7WTb.js";import{C as m}from"./checkbox-VtCfoGic.js";import{T as J,a as K,b as k,c as i,d as O,e as d}from"./table-D4rLgOKa.js";import{f as S}from"./format-C88SDH8g.js";import{B as Q}from"./BulkActionBar-BX-t8fyM.js";import"./radix-n1vDIPi6.js";import"./check-BMpruHpO.js";function ie(){const{host:c}=T(),p=D(),{collections:y}=H(),A=E(),[$,I]=C.useState(),[n,a]=C.useState(new Set),{data:o,isLoading:P}=M(c,$),f=L(c),j=R(c),g=z(c),b=new Map(y.map(e=>[e.name,e.label])),x=o?.items.map(e=>e.contentId)??[],N=x.length>0&&x.every(e=>n.has(e));function v(e){a(l=>{const t=new Set(l);return t.has(e)?t.delete(e):t.add(e),t})}function B(){a(N?new Set:new Set(x))}const U=f.isPending||j.isPending||g.isPending;return s.jsxs("div",{children:[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(Q,{selectedCount:n.size,onPublish:async()=>{const e=[...n],t=(await f.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 j.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 g.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:U}),P?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:[A?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(q,{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}`),children:s.jsx(G,{className:"p-3",children:s.jsxs("div",{className:"flex items-start gap-3 min-w-0",children:[l&&s.jsx("img",{src:w(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:b.get(e.collection)??e.collection}),s.jsx("span",{className:"text-xs text-muted-foreground",children:e.publishedAt?S(e.publishedAt):"—"})]})]}),s.jsx(m,{checked:n.has(e.contentId),onCheckedChange:()=>v(e.contentId),onClick:t=>t.stopPropagation(),className:"mt-1"})]})})},e.contentId)})}):s.jsxs(J,{children:[s.jsx(K,{children:s.jsxs(k,{children:[s.jsx(i,{className:"w-10",children:s.jsx(m,{checked:N,onCheckedChange:B,"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(O,{children:o.items.map(e=>s.jsxs(k,{className:"cursor-pointer",onClick:()=>p(`/sites/${c}/content/${e.collection}/${e.contentId}`),children:[s.jsx(d,{onClick:l=>l.stopPropagation(),children:s.jsx(m,{checked:n.has(e.contentId),onCheckedChange:()=>v(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:w(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:b.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?S(e.publishedAt):"—"})]},e.contentId))})]}),o.hasMore&&s.jsx("div",{className:"mt-4 flex justify-center",children:s.jsx(_,{variant:"outline",onClick:()=>I(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 L,a as N,b as A,j as e}from"./tanstack-BO6c-AOu.js";import{u as
|
|
1
|
+
import{u as L,a as N,b as A,j as e}from"./tanstack-BO6c-AOu.js";import{u as q,r as m}from"./react-vendor-DNVhVxD7.js";import{e as f,B as r,S as E,D as K,j as D,k as w,l as I,m as T,I as g,n as p,L as O,t as x}from"./index-CwkwXbO-.js";import{T as G,a as Q,b as k,c as d,d as R,e as u}from"./table-D4rLgOKa.js";import{f as C}from"./format-C88SDH8g.js";import{P as $}from"./plus-2Ds_MoqB.js";import{T as B}from"./trash-2-CbbWF_O4.js";import{C as H}from"./copy-fXL6Ngxi.js";import"./radix-n1vDIPi6.js";function U(s){const t=f();return L({queryKey:["sites",s,"api-keys"],queryFn:async()=>({items:(await t.apiFetch(`/v1/admin/sites/${s}/api-keys`)).keys}),enabled:!!s})}function z(s){const t=f(),n=N();return A({mutationFn:i=>t.apiFetch(`/v1/admin/sites/${s}/api-keys`,{method:"POST",body:JSON.stringify(i)}),onSuccess:()=>n.invalidateQueries({queryKey:["sites",s,"api-keys"]})})}function J(s,t){const n=f(),i=N();return A({mutationFn:()=>n.apiFetch(`/v1/admin/sites/${s}/api-keys/${t}`,{method:"DELETE"}),onSuccess:()=>i.invalidateQueries({queryKey:["sites",s,"api-keys"]})})}function te(){const{host:s}=q(),{data:t,isLoading:n}=U(s),i=z(s),[h,l]=m.useState(!1),[b,y]=m.useState(""),[o,j]=m.useState(null),[P,v]=m.useState(null);async function F(a){a.preventDefault();try{const c=await i.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 S(){o&&(navigator.clipboard.writeText(o),x.success("Copied to clipboard"))}return e.jsxs("div",{children:[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(r,{onClick:()=>l(!0),children:[e.jsx($,{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(E,{className:"h-12 w-full"},c))}):t?.items.length?e.jsxs(G,{children:[e.jsx(Q,{children:e.jsxs(k,{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(R,{children:t.items.map(a=>e.jsxs(k,{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:C(a.createdAt)}),e.jsx(u,{className:"text-muted-foreground",children:a.lastUsedAt?C(a.lastUsedAt):"Never"}),e.jsx(u,{children:e.jsx(r,{variant:"ghost",size:"sm",onClick:()=>v(a.keyId),children:e.jsx(B,{className:"h-4 w-4"})})})]},a.keyId))})]}):e.jsx("p",{className:"text-muted-foreground",children:"No API keys."}),e.jsx(K,{open:h,onOpenChange:a=>{l(a),a||(j(null),y(""))},children:e.jsxs(D,{children:[e.jsxs(w,{children:[e.jsx(I,{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(g,{value:o,readOnly:!0,className:"font-mono text-xs"}),e.jsx(r,{variant:"outline",size:"icon",onClick:S,children:e.jsx(H,{className:"h-4 w-4"})})]}),e.jsx(p,{children:e.jsx(r,{onClick:()=>{l(!1),j(null)},children:"Done"})})]}):e.jsxs("form",{onSubmit:F,className:"space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(O,{htmlFor:"key-label",children:"Label"}),e.jsx(g,{id:"key-label",value:b,onChange:a=>y(a.target.value),required:!0,autoFocus:!0})]}),e.jsxs(p,{children:[e.jsx(r,{variant:"outline",onClick:()=>l(!1),children:"Cancel"}),e.jsx(r,{type:"submit",disabled:i.isPending,children:"Generate"})]})]})]})}),e.jsx(M,{host:s,keyId:P,onClose:()=>v(null)})]})}function M({host:s,keyId:t,onClose:n}){const i=J(s,t??"");async function h(){try{await i.mutateAsync(),x.success("API key revoked"),n()}catch(l){x.error("Failed to revoke",{description:l instanceof Error?l.message:void 0})}}return e.jsx(K,{open:!!t,onOpenChange:()=>n(),children:e.jsxs(D,{children:[e.jsxs(w,{children:[e.jsx(I,{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(r,{variant:"outline",onClick:n,children:"Cancel"}),e.jsx(r,{variant:"destructive",onClick:h,children:"Revoke"})]})]})})}export{te as ApiKeysPage};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{u as x,j as e}from"./tanstack-BO6c-AOu.js";import{u as h,r as f}from"./react-vendor-DNVhVxD7.js";import{
|
|
1
|
+
import{u as x,j as e}from"./tanstack-BO6c-AOu.js";import{u as h,r as f}from"./react-vendor-DNVhVxD7.js";import{e as j,S as b,B as g}from"./index-CwkwXbO-.js";import{u as p}from"./useAdminResolver-B-_1f6SR.js";import{T as A,a as N,b as c,c as n,d as T,e as o}from"./table-D4rLgOKa.js";import{f as y}from"./format-C88SDH8g.js";import"./radix-n1vDIPi6.js";function S(a,t){const d=j(),s=new URLSearchParams;t?.action&&s.set("action",t.action),t?.before&&s.set("before",String(t.before));const r=s.toString();return x({queryKey:["sites",a,"audit",t?.action??"",t?.before??""],queryFn:()=>d.apiFetch(`/v1/admin/sites/${a}/audit${r?`?${r}`:""}`),enabled:!!a})}function C(){const{host:a}=h(),[t,d]=f.useState(),{data:s,isLoading:r}=S(a,{before:t}),l=s?.items.map(i=>i.adminId)??[],{resolve:m}=p(l);return e.jsxs("div",{children:[e.jsx("h1",{className:"mb-6 text-2xl font-semibold",children:"Audit Log"}),r?e.jsx("div",{className:"space-y-2",children:Array.from({length:5}).map((i,u)=>e.jsx(b,{className:"h-12 w-full"},u))}):s?.items.length?e.jsxs(e.Fragment,{children:[e.jsxs(A,{children:[e.jsx(N,{children:e.jsxs(c,{children:[e.jsx(n,{children:"Action"}),e.jsx(n,{children:"Admin"}),e.jsx(n,{children:"Status"}),e.jsx(n,{children:"Time"})]})}),e.jsx(T,{children:s.items.map(i=>e.jsxs(c,{children:[e.jsx(o,{className:"font-medium",children:i.action}),e.jsx(o,{className:"text-sm",children:m(i.adminId)}),e.jsx(o,{children:e.jsx("span",{className:"text-muted-foreground",children:i.status})}),e.jsx(o,{className:"text-muted-foreground",children:y(i.createdAt)})]},i.eventId))})]}),s.hasMore&&s.items.length>0&&e.jsx("div",{className:"mt-4 flex justify-center",children:e.jsx(g,{variant:"outline",onClick:()=>d(s.items[s.items.length-1].createdAt),children:"Load More"})})]}):e.jsx("p",{className:"text-muted-foreground",children:"No audit events."})]})}export{C as AuditPage};
|