@brightsideoy/kama 1.0.0-alpha.17 → 1.0.0-alpha.19

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 (103) hide show
  1. package/bin/cli.js +69 -43
  2. package/content/definitions/block-kama-forms.yaml +5 -0
  3. package/content/definitions/blocks/node-list.yaml +8 -0
  4. package/content/forms/contact.yaml +44 -0
  5. package/content/forms/subscription.yaml +32 -0
  6. package/dist/assets/AssetEditor-CY9SjGaJ.js +1 -0
  7. package/dist/assets/CmsBadge-BNsgxyyB.css +1 -0
  8. package/dist/assets/CmsBadge-D0Ob9qPU.js +1 -0
  9. package/dist/assets/CmsButton-BQ85-YXn.css +1 -0
  10. package/dist/assets/CmsButton-CbOfxvjr.js +1 -0
  11. package/dist/assets/CmsDataRow--H4iI_u_.js +1 -0
  12. package/dist/assets/CmsDataRow-CYNxfVaZ.css +1 -0
  13. package/dist/assets/CmsHelp-DJSdFYVH.js +1 -0
  14. package/dist/assets/CmsImagePreview-CujwG8r_.css +1 -0
  15. package/dist/assets/CmsImagePreview-DuHPBzml.js +1 -0
  16. package/dist/assets/CmsPaneResizer-B62ZqsnE.js +1 -0
  17. package/dist/assets/CmsPaneResizer-Dkidd4pI.css +1 -0
  18. package/dist/assets/CmsPublisher-DBcCz-AD.js +3 -0
  19. package/dist/assets/CmsUserCenter-D3XDzKDC.js +1 -0
  20. package/dist/assets/EditorSplitPreview-wCnwVnnb.js +1 -0
  21. package/dist/assets/NodeContextMenu-BYeWzmQ5.css +1 -0
  22. package/dist/assets/NodeContextMenu-C_HWBGeb.js +1 -0
  23. package/dist/assets/NodeEditor-D3tAGViP.js +147 -0
  24. package/dist/assets/NodeEditor-DlfAHtiG.css +1 -0
  25. package/dist/assets/StatusPill-CbeW5SMT.js +1 -0
  26. package/dist/assets/StatusPill-Dlm6uvGe.css +1 -0
  27. package/dist/assets/TrashWorkspace--uFsWt53.js +1 -0
  28. package/dist/assets/{_plugin-vue_export-helper-CTn6xl4w.js → _plugin-vue_export-helper-CQxWhVtr.js} +1 -1
  29. package/dist/assets/circle-check-A-QeFqt3.js +1 -0
  30. package/dist/assets/database-hg5SqKLG.js +1 -0
  31. package/dist/assets/folder-tree-BWYot72H.js +1 -0
  32. package/dist/assets/globe-BraoljaN.js +1 -0
  33. package/dist/assets/{history-XvWNE5zO.js → history-pqIbKK9u.js} +1 -1
  34. package/dist/assets/index-BIES-eB_.js +14 -0
  35. package/dist/assets/index-DcKiaRjI.css +1 -0
  36. package/dist/assets/{layers-D0DLWjff.js → layers-B6RgfpPR.js} +1 -1
  37. package/dist/assets/loader-circle-BoUkhDjq.js +1 -0
  38. package/dist/assets/monitor-CrpvInqG.js +1 -0
  39. package/dist/assets/panel-left-close-CVFakVaA.js +1 -0
  40. package/dist/assets/plus-mqZr4I1D.js +1 -0
  41. package/dist/assets/rotate-ccw-CWE4pOjs.js +1 -0
  42. package/dist/assets/{save-C8e-QRkP.js → save-Ctv8vW9H.js} +1 -1
  43. package/dist/assets/schema-helpers-1UXlO0Ye.js +1 -0
  44. package/dist/assets/send-F-mJeL54.js +1 -0
  45. package/dist/assets/{smartphone-Wy6xQi_i.js → smartphone-EPce6VdP.js} +1 -1
  46. package/dist/assets/trash-2-CAUF1KtI.js +1 -0
  47. package/dist/assets/useLocalStorage-C805uplI.js +1 -0
  48. package/dist/assets/useNodes-W5j_uxdQ.js +1 -0
  49. package/dist/assets/user-IFlT6mYq.js +1 -0
  50. package/dist/{dist-BGv2bzzF.js → dist-Bta0OpXl.js} +145 -30
  51. package/dist/index.html +34 -3
  52. package/dist/index.js +145 -30
  53. package/dist/schema-compiler.js +1 -1
  54. package/documentation/EXTENSIONS.md +204 -0
  55. package/extension-registry.js +5 -0
  56. package/package.json +3 -1
  57. package/templates/astro-starter/old_src/components/blocks/BlockRenderer.astro +143 -0
  58. package/templates/astro-starter/old_src/components/blocks/ColumnLayout.astro +67 -0
  59. package/templates/astro-starter/old_src/components/blocks/HeaderImage.astro +126 -0
  60. package/templates/astro-starter/old_src/components/blocks/Hero.astro +218 -0
  61. package/templates/astro-starter/old_src/components/blocks/HtmlBlock.astro +25 -0
  62. package/templates/astro-starter/old_src/components/blocks/ImageBlock.astro +91 -0
  63. package/templates/astro-starter/old_src/components/blocks/NodeList.astro +274 -0
  64. package/templates/astro-starter/old_src/components/blocks/TextBlock.astro +15 -0
  65. package/templates/astro-starter/old_src/components/global/Breadcrumb.astro +108 -0
  66. package/templates/astro-starter/old_src/components/global/Footer.astro +50 -0
  67. package/templates/astro-starter/old_src/components/global/Header.astro +171 -0
  68. package/templates/astro-starter/old_src/components/global/MetaHead.astro +266 -0
  69. package/templates/astro-starter/old_src/components/global/NavigationMenu.astro +413 -0
  70. package/templates/astro-starter/old_src/components/ui/KamaImage.astro +180 -0
  71. package/templates/astro-starter/old_src/layouts/SkeletonLayout.astro +56 -0
  72. package/templates/astro-starter/old_src/layouts/StandardLayout.astro +63 -0
  73. package/templates/astro-starter/old_src/lib/cms.ts +219 -0
  74. package/templates/astro-starter/old_src/lib/media/kama-image-service.ts +67 -0
  75. package/templates/astro-starter/old_src/lib/media/media-proxy.ts +148 -0
  76. package/templates/astro-starter/old_src/lib/media/media-url.ts +112 -0
  77. package/templates/astro-starter/old_src/middleware.ts +536 -0
  78. package/templates/astro-starter/old_src/pages/404.astro +46 -0
  79. package/templates/astro-starter/old_src/pages/[...slug].astro +311 -0
  80. package/templates/astro-starter/old_src/pages/api/load-nodes.ts +68 -0
  81. package/templates/astro-starter/old_src/pages/api/partials/node-cards.astro +101 -0
  82. package/templates/astro-starter/old_src/pages/llms-full.txt.ts +171 -0
  83. package/templates/astro-starter/old_src/pages/llms.txt.ts +113 -0
  84. package/templates/astro-starter/old_src/pages/media/[...path].ts +14 -0
  85. package/templates/astro-starter/old_src/pages/partials/footer.astro +69 -0
  86. package/templates/astro-starter/old_src/pages/partials/nav.astro +141 -0
  87. package/templates/astro-starter/old_src/styles/standard-theme.css +157 -0
  88. package/templates/astro-starter/old_src/utils/tiptap.ts +113 -0
  89. package/templates/astro-starter/src/components/blocks/Form.astro +143 -0
  90. package/templates/kama-worker/index.js +35 -12
  91. package/templates/kama-worker/server.js +2 -0
  92. package/dist/assets/AssetEditor-CCNDGlQ_.js +0 -1
  93. package/dist/assets/CmsHelp-m9EOY_nE.js +0 -1
  94. package/dist/assets/CmsPublisher-Cs_ys68V.js +0 -3
  95. package/dist/assets/CmsUserCenter-D-T6HyWF.js +0 -1
  96. package/dist/assets/EditorSplitPreview-CnWpXZWQ.js +0 -1
  97. package/dist/assets/NodeEditor-B1TvB2eW.css +0 -1
  98. package/dist/assets/NodeEditor-CZGnkwvf.js +0 -147
  99. package/dist/assets/TrashWorkspace-CERX58Ek.js +0 -1
  100. package/dist/assets/index-BpOAL4tE.js +0 -14
  101. package/dist/assets/index-C-EkPNvq.css +0 -1
  102. package/dist/assets/link-Bs_SUS0O.js +0 -1
  103. package/dist/assets/rotate-ccw-CvD7yNQj.js +0 -1
@@ -1 +0,0 @@
1
- import{$ as e,A as t,D as n,F as r,G as i,J as a,L as o,T as s,U as c,Z as l,a as u,b as d,bt as f,h as p,m,st as h,t as g,v as _,w as v,wt as y,x as b,y as x,z as S}from"./_plugin-vue_export-helper-CTn6xl4w.js";import{n as ee,t as C}from"./rotate-ccw-CvD7yNQj.js";import{E as w,S as te,T as ne,Y as re,at as ie,i as T,m as E,nt as ae,r as D}from"./index-BpOAL4tE.js";t(),a(),h(),u();var oe={class:`trash-workspace`},se={class:`trash-header`},ce={class:`header-titles`},le={class:`icon-wrapper`},O={class:`tab-switcher`},k={class:`trash-content`},A={key:0,class:`state-message`},j={key:0,class:`state-message empty`},M={key:1},N={class:`bulk-actions-bar`},P={class:`selection-left`},F={class:`checkbox-container`},I=[`checked`],L={class:`selection-count`},R={key:0,class:`bulk-buttons`},z={class:`list-container`},B={class:`checkbox-container`},V=[`checked`,`onChange`],H={class:`title`},U={class:`col-date`},W=[`onClick`],ue=[`onClick`],de={key:0,class:`state-message empty`},fe={key:1},pe={class:`bulk-actions-bar`},me={class:`selection-left`},he={class:`checkbox-container`},ge=[`checked`],_e={class:`selection-count`},ve={key:0,class:`bulk-buttons`},ye={class:`list-container`},be={class:`checkbox-container`},xe=[`checked`,`onChange`],Se={key:0,class:`asset-thumb`},Ce=[`src`,`alt`],we={key:1,class:`asset-thumb doc`},Te={class:`title`},Ee={class:`col-date`},De=[`onClick`],Oe=[`onClick`],ke=[`onClick`],G=g(n({__name:`TrashWorkspace`,setup(t){let{restoreNode:n,purgeNode:a}=re(),u=ae(),{confirmDiscard:h}=ie(),g=l(`nodes`),G=l([]),K=l([]),q=l(!0),J=l(new Set),Y=l(new Set);c(g,()=>{J.value.clear(),Y.value.clear()});let Ae=e=>{sessionStorage.setItem(`cms-vault-asset-filter`,e.id),window.dispatchEvent(new CustomEvent(`cms-filter-vault-by-asset`,{detail:e.id})),window.dispatchEvent(new CustomEvent(`cms-switch-sidebar-tab`,{detail:`vault`}))},je=async()=>{try{let e=await fetch(`/api/cms/nodes.json?trashed=true&limit=100`);if(e.ok){let t=await e.json();G.value=t.items||[]}}catch(e){console.error(`Failed to load trashed nodes:`,e)}},Me=async()=>{try{let e=await fetch(`/api/admin/assets?trashed=true&limit=100`);if(e.ok){let t=await e.json(),n=Array.isArray(t)?t:t.items||t.assets||[];K.value=n.map(e=>({...e,url:e.url||e.cdnUrl||`/media/${e.storageKeyPrivate||``}`}))}}catch(e){console.error(`Failed to load trashed assets:`,e)}},X=async()=>{q.value=!0,await Promise.all([je(),Me()]),q.value=!1},Ne=async e=>{await n(e)&&(G.value=G.value.filter(t=>t.id!==e),J.value.delete(e))},Pe=async e=>{await h(`Are you sure you want to permanently purge "${e.title||`Untitled`}"? This action cannot be undone.`,`Permanently Purge Node?`,`Purge Permanently`,`Cancel`)&&await a(e.id)&&(G.value=G.value.filter(t=>t.id!==e.id),J.value.delete(e.id))},Fe=e=>{e.target.checked?G.value.forEach(e=>J.value.add(e.id)):J.value.clear()},Z=e=>{J.value.has(e)?J.value.delete(e):J.value.add(e)},Q=async()=>{if(J.value.size===0)return;let e=Array.from(J.value);for(let t of e)await n(t);G.value=G.value.filter(e=>!J.value.has(e.id)),J.value.clear()},Ie=async()=>{if(J.value.size===0||!await h(`Are you sure you want to permanently purge ${J.value.size} items?`,`Permanently Purge Nodes?`,`Purge Permanently`,`Cancel`))return;let e=Array.from(J.value);for(let t of e)await a(t);G.value=G.value.filter(e=>!J.value.has(e.id)),J.value.clear()},Le=async e=>{try{(await fetch(`/api/admin/assets/restore`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({id:e})})).ok&&(K.value=K.value.filter(t=>t.id!==e),Y.value.delete(e),window.dispatchEvent(new CustomEvent(`cms-assets-updated`)))}catch{}},Re=async e=>{if(await h(`Are you sure you want to permanently purge "${e.filename||`this asset`}"?`,`Permanently Purge Asset?`,`Purge Permanently`,`Cancel`))try{(await fetch(`/api/admin/assets/purge/${e.id}`,{method:`DELETE`})).ok&&(K.value=K.value.filter(t=>t.id!==e.id),Y.value.delete(e.id),window.dispatchEvent(new CustomEvent(`cms-assets-updated`)))}catch{}},ze=e=>{e.target.checked?K.value.forEach(e=>Y.value.add(e.id)):Y.value.clear()},$=e=>{Y.value.has(e)?Y.value.delete(e):Y.value.add(e)},Be=async()=>{if(Y.value.size===0)return;let e=Array.from(Y.value);for(let t of e)await fetch(`/api/admin/assets/restore`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({id:t})});K.value=K.value.filter(e=>!Y.value.has(e.id)),Y.value.clear(),window.dispatchEvent(new CustomEvent(`cms-assets-updated`))},Ve=async()=>{if(Y.value.size===0||!await h(`Permanently purge ${Y.value.size} assets?`,`Permanently Purge Assets?`,`Purge Permanently`,`Cancel`))return;let e=Array.from(Y.value);for(let t of e)await fetch(`/api/admin/assets/purge/${t}`,{method:`DELETE`});K.value=K.value.filter(e=>!Y.value.has(e.id)),Y.value.clear(),window.dispatchEvent(new CustomEvent(`cms-assets-updated`))},He=(e,t)=>e?e.startsWith(`image/`):/\.(jpg|jpeg|png|webp|gif|svg)$/i.test(t||``),Ue=e=>{if(!e)return`0 B`;let t=1024,n=[`B`,`KB`,`MB`,`GB`],r=Math.floor(Math.log(e)/Math.log(t));return parseFloat((e/t**r).toFixed(1))+` `+n[r]};return c(()=>u.activeView.value,e=>{(e.type===`user`||e.type===`trash`)&&X()},{deep:!0,immediate:!0}),c(()=>u.hasLoadedStats.value,()=>X()),r(()=>X()),(t,n)=>(o(),b(`div`,oe,[_(`header`,se,[_(`div`,ce,[_(`div`,le,[s(e(E),{size:24,class:`text-danger`})]),n[2]||=_(`div`,null,[_(`h2`,null,`Trash Bin`),_(`p`,null,`Soft-deleted items. Restoring an item returns it to your active workspace.`)],-1)]),_(`div`,O,[_(`button`,{class:f([`tab-btn`,{active:g.value===`nodes`}]),onClick:n[0]||=e=>g.value=`nodes`},[s(e(w),{size:14}),_(`span`,null,`Nodes (`+y(G.value.length)+`)`,1)],2),_(`button`,{class:f([`tab-btn`,{active:g.value===`assets`}]),onClick:n[1]||=e=>g.value=`assets`},[s(e(te),{size:14}),_(`span`,null,`Media (`+y(K.value.length)+`)`,1)],2)])]),_(`div`,k,[q.value?(o(),b(`div`,A,`Loading trash bin...`)):g.value===`nodes`?(o(),b(p,{key:1},[G.value.length===0?(o(),b(`div`,j,[s(e(E),{size:48,class:`empty-icon`}),n[3]||=_(`h3`,null,`No deleted content nodes`,-1)])):(o(),b(`div`,M,[_(`div`,N,[_(`div`,P,[_(`label`,F,[_(`input`,{type:`checkbox`,checked:J.value.size===G.value.length&&G.value.length>0,onChange:Fe},null,40,I),n[4]||=_(`span`,{class:`checkmark`},null,-1)]),_(`span`,L,y(J.value.size)+` selected`,1)]),J.value.size>0?(o(),b(`div`,R,[_(`button`,{class:`action-btn restore`,onClick:Q},[s(e(C),{size:13}),n[5]||=v(` Restore `,-1)]),_(`button`,{class:`action-btn purge`,onClick:Ie},[s(e(E),{size:13}),n[6]||=v(` Purge `,-1)])])):d(``,!0)]),_(`div`,z,[(o(!0),b(p,null,S(G.value,t=>(o(),x(T,{key:t.id,"is-selected":J.value.has(t.id),clickable:``,onClick:e=>Z(t.id)},{prefix:i(()=>[_(`label`,B,[_(`input`,{type:`checkbox`,checked:J.value.has(t.id),onChange:e=>Z(t.id)},null,40,V),n[7]||=_(`span`,{class:`checkmark`},null,-1)]),s(e(w),{size:16,class:`row-icon`})]),title:i(()=>[_(`span`,H,y(t.title||`Untitled`),1),s(D,{variant:`type`},{default:i(()=>[v(y(t.contentType||`page`),1)]),_:2},1024),s(D,{variant:`slug`},{default:i(()=>[v(`/`+y(t.slug),1)]),_:2},1024)]),meta:i(()=>[_(`span`,U,y(t.deletedAt?new Date(t.deletedAt).toLocaleString():`—`),1),(o(!0),b(p,null,S(t.channelNames||[],e=>(o(),x(D,{variant:`channel`,key:e},{default:i(()=>[v(y(e),1)]),_:2},1024))),128)),(o(!0),b(p,null,S(t.treeNames||[],e=>(o(),x(D,{variant:`tree`,key:e},{default:i(()=>[v(y(e),1)]),_:2},1024))),128))]),actions:i(()=>[_(`button`,{class:`action-btn restore`,title:`Restore Node`,onClick:m(e=>Ne(t.id),[`stop`])},[s(e(C),{size:13}),n[8]||=v(` Restore `,-1)],8,W),_(`button`,{class:`action-btn purge`,title:`Permanently Delete`,onClick:m(e=>Pe(t),[`stop`])},[s(e(E),{size:13}),n[9]||=v(` Purge `,-1)],8,ue)]),_:2},1032,[`is-selected`,`onClick`]))),128))])]))],64)):g.value===`assets`?(o(),b(p,{key:2},[K.value.length===0?(o(),b(`div`,de,[s(e(E),{size:48,class:`empty-icon`}),n[10]||=_(`h3`,null,`No deleted media assets`,-1)])):(o(),b(`div`,fe,[_(`div`,pe,[_(`div`,me,[_(`label`,he,[_(`input`,{type:`checkbox`,checked:Y.value.size===K.value.length&&K.value.length>0,onChange:ze},null,40,ge),n[11]||=_(`span`,{class:`checkmark`},null,-1)]),_(`span`,_e,y(Y.value.size)+` selected`,1)]),Y.value.size>0?(o(),b(`div`,ve,[_(`button`,{class:`action-btn restore`,onClick:Be},[s(e(C),{size:13}),n[12]||=v(` Restore `,-1)]),_(`button`,{class:`action-btn purge`,onClick:Ve},[s(e(E),{size:13}),n[13]||=v(` Purge `,-1)])])):d(``,!0)]),_(`div`,ye,[(o(!0),b(p,null,S(K.value,t=>(o(),x(T,{key:t.id,"is-selected":Y.value.has(t.id),clickable:``,onClick:e=>$(t.id)},{prefix:i(()=>[_(`label`,be,[_(`input`,{type:`checkbox`,checked:Y.value.has(t.id),onChange:e=>$(t.id)},null,40,xe),n[14]||=_(`span`,{class:`checkmark`},null,-1)]),He(t.mimeType,t.filename)?(o(),b(`div`,Se,[_(`img`,{src:t.url,alt:t.filename},null,8,Ce)])):(o(),b(`div`,we,[s(e(ne),{size:18})]))]),title:i(()=>[_(`span`,Te,y(t.filename),1),s(D,{variant:`type`},{default:i(()=>[v(y(t.mimeType),1)]),_:2},1024)]),meta:i(()=>[_(`span`,Ee,y(Ue(t.sizeBytes))+` • `+y(t.deletedAt?new Date(t.deletedAt).toLocaleString():`—`),1),t.usageCount>0?(o(),b(`button`,{key:0,class:`connection-pill node-pill clickable`,onClick:m(e=>Ae(t),[`stop`])},[s(e(ee),{size:11}),n[15]||=v(),_(`span`,null,y(t.usageCount)+` Connections`,1)],8,De)):d(``,!0)]),actions:i(()=>[_(`button`,{class:`action-btn restore`,title:`Restore Asset`,onClick:m(e=>Le(t.id),[`stop`])},[s(e(C),{size:13}),n[16]||=v(` Restore `,-1)],8,Oe),_(`button`,{class:`action-btn purge`,title:`Permanently Delete`,onClick:m(e=>Re(t),[`stop`])},[s(e(E),{size:13}),n[17]||=v(` Purge `,-1)],8,ke)]),_:2},1032,[`is-selected`,`onClick`]))),128))])]))],64)):d(``,!0)])]))}}),[[`__scopeId`,`data-v-b4a8df4e`]]);export{G as default};