@brightsideoy/kama 1.0.0-alpha.20 → 1.0.0-alpha.21

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 (65) hide show
  1. package/content/definitions/blocks/image-gallery.yaml +34 -0
  2. package/content/definitions/blocks/youtube.yaml +8 -0
  3. package/content/definitions/field-sets/access.yaml +10 -0
  4. package/content/definitions/field-sets/page-base.yaml +16 -1
  5. package/content/definitions/taxonomies/media-tag.yaml +15 -0
  6. package/definitions/editor/default.ts +15 -1
  7. package/dist/assets/AssetEditor-B4W7tV1a.js +1 -0
  8. package/dist/assets/AssetEditor-D9sz6bfN.css +1 -0
  9. package/dist/assets/CmsFieldTaxonomy-CVlKL-l2.css +1 -0
  10. package/dist/assets/CmsFieldTaxonomy-C_AwHDwY.js +1 -0
  11. package/dist/assets/{CmsHelp-DyPJLGGi.js → CmsHelp-BQkr9KyU.js} +1 -1
  12. package/dist/assets/{CmsPublisher-DNLwjirk.js → CmsPublisher-XSCPrp5L.js} +1 -1
  13. package/dist/assets/NodeEditor-4TsNvk2f.css +1 -0
  14. package/dist/assets/NodeEditor-DA5GRtRP.js +161 -0
  15. package/dist/assets/{TrashWorkspace-DgIg1v6t.js → TrashWorkspace-CATe46WF.js} +1 -1
  16. package/dist/assets/index-CY0VYSyt.css +1 -0
  17. package/dist/assets/index-DdG9Pozx.js +14 -0
  18. package/dist/assets/{plus-FQRsZBoJ.js → plus-CX_GHzXs.js} +1 -1
  19. package/dist/assets/useNodes-CqFlc72m.js +1 -0
  20. package/dist/{dist-D_Q1y4Kh.js → dist-3Xc2TTZw.js} +1117 -456
  21. package/dist/index.html +4 -4
  22. package/dist/index.js +1117 -456
  23. package/dist/schema-compiler.js +1 -1
  24. package/package.json +5 -5
  25. package/schema.sql +10 -0
  26. package/templates/astro-starter/src/components/global/NavigationMenu.astro +11 -3
  27. package/dist/assets/AssetEditor-D5j7pwcK.css +0 -1
  28. package/dist/assets/AssetEditor-Dt1zCR7_.js +0 -1
  29. package/dist/assets/NodeEditor-CiXQKXK1.js +0 -147
  30. package/dist/assets/NodeEditor-pZI3gu4a.css +0 -1
  31. package/dist/assets/index-DQ6_RmCI.js +0 -14
  32. package/dist/assets/index-DcKiaRjI.css +0 -1
  33. package/dist/assets/useNodes-D2-VxsxR.js +0 -1
  34. package/templates/astro-starter/old_src/components/blocks/BlockRenderer.astro +0 -143
  35. package/templates/astro-starter/old_src/components/blocks/ColumnLayout.astro +0 -67
  36. package/templates/astro-starter/old_src/components/blocks/HeaderImage.astro +0 -126
  37. package/templates/astro-starter/old_src/components/blocks/Hero.astro +0 -218
  38. package/templates/astro-starter/old_src/components/blocks/HtmlBlock.astro +0 -25
  39. package/templates/astro-starter/old_src/components/blocks/ImageBlock.astro +0 -91
  40. package/templates/astro-starter/old_src/components/blocks/NodeList.astro +0 -274
  41. package/templates/astro-starter/old_src/components/blocks/TextBlock.astro +0 -15
  42. package/templates/astro-starter/old_src/components/global/Breadcrumb.astro +0 -108
  43. package/templates/astro-starter/old_src/components/global/Footer.astro +0 -50
  44. package/templates/astro-starter/old_src/components/global/Header.astro +0 -171
  45. package/templates/astro-starter/old_src/components/global/MetaHead.astro +0 -266
  46. package/templates/astro-starter/old_src/components/global/NavigationMenu.astro +0 -413
  47. package/templates/astro-starter/old_src/components/ui/KamaImage.astro +0 -180
  48. package/templates/astro-starter/old_src/layouts/SkeletonLayout.astro +0 -56
  49. package/templates/astro-starter/old_src/layouts/StandardLayout.astro +0 -63
  50. package/templates/astro-starter/old_src/lib/cms.ts +0 -219
  51. package/templates/astro-starter/old_src/lib/media/kama-image-service.ts +0 -67
  52. package/templates/astro-starter/old_src/lib/media/media-proxy.ts +0 -148
  53. package/templates/astro-starter/old_src/lib/media/media-url.ts +0 -112
  54. package/templates/astro-starter/old_src/middleware.ts +0 -536
  55. package/templates/astro-starter/old_src/pages/404.astro +0 -46
  56. package/templates/astro-starter/old_src/pages/[...slug].astro +0 -311
  57. package/templates/astro-starter/old_src/pages/api/load-nodes.ts +0 -68
  58. package/templates/astro-starter/old_src/pages/api/partials/node-cards.astro +0 -101
  59. package/templates/astro-starter/old_src/pages/llms-full.txt.ts +0 -171
  60. package/templates/astro-starter/old_src/pages/llms.txt.ts +0 -113
  61. package/templates/astro-starter/old_src/pages/media/[...path].ts +0 -14
  62. package/templates/astro-starter/old_src/pages/partials/footer.astro +0 -69
  63. package/templates/astro-starter/old_src/pages/partials/nav.astro +0 -141
  64. package/templates/astro-starter/old_src/styles/standard-theme.css +0 -157
  65. package/templates/astro-starter/old_src/utils/tiptap.ts +0 -113
@@ -1 +1 @@
1
- import{$ as e,B as t,E as n,Et as r,I as i,K as a,O as ee,R as o,S as s,St as c,T as l,W as u,Y as d,b as f,g as p,h as m,j as h,lt as g,o as _,t as v,tt as y,x as b,y as x}from"./_plugin-vue_export-helper-CQxWhVtr.js";import{i as te}from"./useNodes-D2-VxsxR.js";import{d as ne,s as re}from"./schema-helpers-DvficKko.js";import{i as S,n as ie,r as ae,t as C}from"./rotate-ccw-CWE4pOjs.js";import{n as oe,t as w}from"./trash-2-CAUF1KtI.js";import{t as T}from"./CmsDataRow--H4iI_u_.js";import{t as E}from"./CmsBadge-D0Ob9qPU.js";h(),d(),g(),_();var se={class:`trash-workspace`},ce={class:`trash-header`},le={class:`header-titles`},D={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=v(ee({__name:`TrashWorkspace`,setup(ee){let{restoreNode:d,purgeNode:h}=te(),g=re(),{confirmDiscard:_}=ne(),v=e(`nodes`),G=e([]),K=e([]),q=e(!0),J=e(new Set),Y=e(new Set);u(v,()=>{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 d(e)&&(G.value=G.value.filter(t=>t.id!==e),J.value.delete(e))},Pe=async e=>{await _(`Are you sure you want to permanently purge "${e.title||`Untitled`}"? This action cannot be undone.`,`Permanently Purge Node?`,`Purge Permanently`,`Cancel`)&&await h(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 d(t);G.value=G.value.filter(e=>!J.value.has(e.id)),J.value.clear()},Ie=async()=>{if(J.value.size===0||!await _(`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 h(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 _(`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 _(`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 u(()=>g.activeView.value,e=>{(e.type===`user`||e.type===`trash`)&&X()},{deep:!0,immediate:!0}),u(()=>g.hasLoadedStats.value,()=>X()),i(()=>X()),(e,i)=>(o(),s(`div`,se,[x(`header`,ce,[x(`div`,le,[x(`div`,D,[n(y(w),{size:24,class:`text-danger`})]),i[2]||=x(`div`,null,[x(`h2`,null,`Trash Bin`),x(`p`,null,`Soft-deleted items. Restoring an item returns it to your active workspace.`)],-1)]),x(`div`,O,[x(`button`,{class:c([`tab-btn`,{active:v.value===`nodes`}]),onClick:i[0]||=e=>v.value=`nodes`},[n(y(S),{size:14}),x(`span`,null,`Nodes (`+r(G.value.length)+`)`,1)],2),x(`button`,{class:c([`tab-btn`,{active:v.value===`assets`}]),onClick:i[1]||=e=>v.value=`assets`},[n(y(ae),{size:14}),x(`span`,null,`Media (`+r(K.value.length)+`)`,1)],2)])]),x(`div`,k,[q.value?(o(),s(`div`,A,`Loading trash bin...`)):v.value===`nodes`?(o(),s(p,{key:1},[G.value.length===0?(o(),s(`div`,j,[n(y(w),{size:48,class:`empty-icon`}),i[3]||=x(`h3`,null,`No deleted content nodes`,-1)])):(o(),s(`div`,M,[x(`div`,N,[x(`div`,P,[x(`label`,F,[x(`input`,{type:`checkbox`,checked:J.value.size===G.value.length&&G.value.length>0,onChange:Fe},null,40,I),i[4]||=x(`span`,{class:`checkmark`},null,-1)]),x(`span`,L,r(J.value.size)+` selected`,1)]),J.value.size>0?(o(),s(`div`,R,[x(`button`,{class:`action-btn restore`,onClick:Q},[n(y(C),{size:13}),i[5]||=l(` Restore `,-1)]),x(`button`,{class:`action-btn purge`,onClick:Ie},[n(y(w),{size:13}),i[6]||=l(` Purge `,-1)])])):b(``,!0)]),x(`div`,z,[(o(!0),s(p,null,t(G.value,e=>(o(),f(T,{key:e.id,"is-selected":J.value.has(e.id),clickable:``,onClick:t=>Z(e.id)},{prefix:a(()=>[x(`label`,B,[x(`input`,{type:`checkbox`,checked:J.value.has(e.id),onChange:t=>Z(e.id)},null,40,V),i[7]||=x(`span`,{class:`checkmark`},null,-1)]),n(y(S),{size:16,class:`row-icon`})]),title:a(()=>[x(`span`,H,r(e.title||`Untitled`),1),n(E,{variant:`type`},{default:a(()=>[l(r(e.contentType||`page`),1)]),_:2},1024),n(E,{variant:`slug`},{default:a(()=>[l(`/`+r(e.slug),1)]),_:2},1024)]),meta:a(()=>[x(`span`,U,r(e.deletedAt?new Date(e.deletedAt).toLocaleString():`—`),1),(o(!0),s(p,null,t(e.channelNames||[],e=>(o(),f(E,{variant:`channel`,key:e},{default:a(()=>[l(r(e),1)]),_:2},1024))),128)),(o(!0),s(p,null,t(e.treeNames||[],e=>(o(),f(E,{variant:`tree`,key:e},{default:a(()=>[l(r(e),1)]),_:2},1024))),128))]),actions:a(()=>[x(`button`,{class:`action-btn restore`,title:`Restore Node`,onClick:m(t=>Ne(e.id),[`stop`])},[n(y(C),{size:13}),i[8]||=l(` Restore `,-1)],8,W),x(`button`,{class:`action-btn purge`,title:`Permanently Delete`,onClick:m(t=>Pe(e),[`stop`])},[n(y(w),{size:13}),i[9]||=l(` Purge `,-1)],8,ue)]),_:2},1032,[`is-selected`,`onClick`]))),128))])]))],64)):v.value===`assets`?(o(),s(p,{key:2},[K.value.length===0?(o(),s(`div`,de,[n(y(w),{size:48,class:`empty-icon`}),i[10]||=x(`h3`,null,`No deleted media assets`,-1)])):(o(),s(`div`,fe,[x(`div`,pe,[x(`div`,me,[x(`label`,he,[x(`input`,{type:`checkbox`,checked:Y.value.size===K.value.length&&K.value.length>0,onChange:ze},null,40,ge),i[11]||=x(`span`,{class:`checkmark`},null,-1)]),x(`span`,_e,r(Y.value.size)+` selected`,1)]),Y.value.size>0?(o(),s(`div`,ve,[x(`button`,{class:`action-btn restore`,onClick:Be},[n(y(C),{size:13}),i[12]||=l(` Restore `,-1)]),x(`button`,{class:`action-btn purge`,onClick:Ve},[n(y(w),{size:13}),i[13]||=l(` Purge `,-1)])])):b(``,!0)]),x(`div`,ye,[(o(!0),s(p,null,t(K.value,e=>(o(),f(T,{key:e.id,"is-selected":Y.value.has(e.id),clickable:``,onClick:t=>$(e.id)},{prefix:a(()=>[x(`label`,be,[x(`input`,{type:`checkbox`,checked:Y.value.has(e.id),onChange:t=>$(e.id)},null,40,xe),i[14]||=x(`span`,{class:`checkmark`},null,-1)]),He(e.mimeType,e.filename)?(o(),s(`div`,Se,[x(`img`,{src:e.url,alt:e.filename},null,8,Ce)])):(o(),s(`div`,we,[n(y(oe),{size:18})]))]),title:a(()=>[x(`span`,Te,r(e.filename),1),n(E,{variant:`type`},{default:a(()=>[l(r(e.mimeType),1)]),_:2},1024)]),meta:a(()=>[x(`span`,Ee,r(Ue(e.sizeBytes))+` • `+r(e.deletedAt?new Date(e.deletedAt).toLocaleString():`—`),1),e.usageCount>0?(o(),s(`button`,{key:0,class:`connection-pill node-pill clickable`,onClick:m(t=>Ae(e),[`stop`])},[n(y(ie),{size:11}),i[15]||=l(),x(`span`,null,r(e.usageCount)+` Connections`,1)],8,De)):b(``,!0)]),actions:a(()=>[x(`button`,{class:`action-btn restore`,title:`Restore Asset`,onClick:m(t=>Le(e.id),[`stop`])},[n(y(C),{size:13}),i[16]||=l(` Restore `,-1)],8,Oe),x(`button`,{class:`action-btn purge`,title:`Permanently Delete`,onClick:m(t=>Re(e),[`stop`])},[n(y(w),{size:13}),i[17]||=l(` Purge `,-1)],8,ke)]),_:2},1032,[`is-selected`,`onClick`]))),128))])]))],64)):b(``,!0)])]))}}),[[`__scopeId`,`data-v-b4a8df4e`]]);export{G as default};
1
+ import{$ as e,B as t,E as n,Et as r,I as i,K as a,O as ee,R as o,S as s,St as c,T as l,W as u,Y as d,b as f,g as p,h as m,j as h,lt as g,o as _,t as v,tt as y,x as b,y as x}from"./_plugin-vue_export-helper-CQxWhVtr.js";import{i as te}from"./useNodes-CqFlc72m.js";import{d as ne,s as re}from"./schema-helpers-DvficKko.js";import{i as S,n as ie,r as ae,t as C}from"./rotate-ccw-CWE4pOjs.js";import{n as oe,t as w}from"./trash-2-CAUF1KtI.js";import{t as T}from"./CmsDataRow--H4iI_u_.js";import{t as E}from"./CmsBadge-D0Ob9qPU.js";h(),d(),g(),_();var se={class:`trash-workspace`},ce={class:`trash-header`},le={class:`header-titles`},D={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=v(ee({__name:`TrashWorkspace`,setup(ee){let{restoreNode:d,purgeNode:h}=te(),g=re(),{confirmDiscard:_}=ne(),v=e(`nodes`),G=e([]),K=e([]),q=e(!0),J=e(new Set),Y=e(new Set);u(v,()=>{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 d(e)&&(G.value=G.value.filter(t=>t.id!==e),J.value.delete(e))},Pe=async e=>{await _(`Are you sure you want to permanently purge "${e.title||`Untitled`}"? This action cannot be undone.`,`Permanently Purge Node?`,`Purge Permanently`,`Cancel`)&&await h(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 d(t);G.value=G.value.filter(e=>!J.value.has(e.id)),J.value.clear()},Ie=async()=>{if(J.value.size===0||!await _(`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 h(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 _(`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 _(`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 u(()=>g.activeView.value,e=>{(e.type===`user`||e.type===`trash`)&&X()},{deep:!0,immediate:!0}),u(()=>g.hasLoadedStats.value,()=>X()),i(()=>X()),(e,i)=>(o(),s(`div`,se,[x(`header`,ce,[x(`div`,le,[x(`div`,D,[n(y(w),{size:24,class:`text-danger`})]),i[2]||=x(`div`,null,[x(`h2`,null,`Trash Bin`),x(`p`,null,`Soft-deleted items. Restoring an item returns it to your active workspace.`)],-1)]),x(`div`,O,[x(`button`,{class:c([`tab-btn`,{active:v.value===`nodes`}]),onClick:i[0]||=e=>v.value=`nodes`},[n(y(S),{size:14}),x(`span`,null,`Nodes (`+r(G.value.length)+`)`,1)],2),x(`button`,{class:c([`tab-btn`,{active:v.value===`assets`}]),onClick:i[1]||=e=>v.value=`assets`},[n(y(ae),{size:14}),x(`span`,null,`Media (`+r(K.value.length)+`)`,1)],2)])]),x(`div`,k,[q.value?(o(),s(`div`,A,`Loading trash bin...`)):v.value===`nodes`?(o(),s(p,{key:1},[G.value.length===0?(o(),s(`div`,j,[n(y(w),{size:48,class:`empty-icon`}),i[3]||=x(`h3`,null,`No deleted content nodes`,-1)])):(o(),s(`div`,M,[x(`div`,N,[x(`div`,P,[x(`label`,F,[x(`input`,{type:`checkbox`,checked:J.value.size===G.value.length&&G.value.length>0,onChange:Fe},null,40,I),i[4]||=x(`span`,{class:`checkmark`},null,-1)]),x(`span`,L,r(J.value.size)+` selected`,1)]),J.value.size>0?(o(),s(`div`,R,[x(`button`,{class:`action-btn restore`,onClick:Q},[n(y(C),{size:13}),i[5]||=l(` Restore `,-1)]),x(`button`,{class:`action-btn purge`,onClick:Ie},[n(y(w),{size:13}),i[6]||=l(` Purge `,-1)])])):b(``,!0)]),x(`div`,z,[(o(!0),s(p,null,t(G.value,e=>(o(),f(T,{key:e.id,"is-selected":J.value.has(e.id),clickable:``,onClick:t=>Z(e.id)},{prefix:a(()=>[x(`label`,B,[x(`input`,{type:`checkbox`,checked:J.value.has(e.id),onChange:t=>Z(e.id)},null,40,V),i[7]||=x(`span`,{class:`checkmark`},null,-1)]),n(y(S),{size:16,class:`row-icon`})]),title:a(()=>[x(`span`,H,r(e.title||`Untitled`),1),n(E,{variant:`type`},{default:a(()=>[l(r(e.contentType||`page`),1)]),_:2},1024),n(E,{variant:`slug`},{default:a(()=>[l(`/`+r(e.slug),1)]),_:2},1024)]),meta:a(()=>[x(`span`,U,r(e.deletedAt?new Date(e.deletedAt).toLocaleString():`—`),1),(o(!0),s(p,null,t(e.channelNames||[],e=>(o(),f(E,{variant:`channel`,key:e},{default:a(()=>[l(r(e),1)]),_:2},1024))),128)),(o(!0),s(p,null,t(e.treeNames||[],e=>(o(),f(E,{variant:`tree`,key:e},{default:a(()=>[l(r(e),1)]),_:2},1024))),128))]),actions:a(()=>[x(`button`,{class:`action-btn restore`,title:`Restore Node`,onClick:m(t=>Ne(e.id),[`stop`])},[n(y(C),{size:13}),i[8]||=l(` Restore `,-1)],8,W),x(`button`,{class:`action-btn purge`,title:`Permanently Delete`,onClick:m(t=>Pe(e),[`stop`])},[n(y(w),{size:13}),i[9]||=l(` Purge `,-1)],8,ue)]),_:2},1032,[`is-selected`,`onClick`]))),128))])]))],64)):v.value===`assets`?(o(),s(p,{key:2},[K.value.length===0?(o(),s(`div`,de,[n(y(w),{size:48,class:`empty-icon`}),i[10]||=x(`h3`,null,`No deleted media assets`,-1)])):(o(),s(`div`,fe,[x(`div`,pe,[x(`div`,me,[x(`label`,he,[x(`input`,{type:`checkbox`,checked:Y.value.size===K.value.length&&K.value.length>0,onChange:ze},null,40,ge),i[11]||=x(`span`,{class:`checkmark`},null,-1)]),x(`span`,_e,r(Y.value.size)+` selected`,1)]),Y.value.size>0?(o(),s(`div`,ve,[x(`button`,{class:`action-btn restore`,onClick:Be},[n(y(C),{size:13}),i[12]||=l(` Restore `,-1)]),x(`button`,{class:`action-btn purge`,onClick:Ve},[n(y(w),{size:13}),i[13]||=l(` Purge `,-1)])])):b(``,!0)]),x(`div`,ye,[(o(!0),s(p,null,t(K.value,e=>(o(),f(T,{key:e.id,"is-selected":Y.value.has(e.id),clickable:``,onClick:t=>$(e.id)},{prefix:a(()=>[x(`label`,be,[x(`input`,{type:`checkbox`,checked:Y.value.has(e.id),onChange:t=>$(e.id)},null,40,xe),i[14]||=x(`span`,{class:`checkmark`},null,-1)]),He(e.mimeType,e.filename)?(o(),s(`div`,Se,[x(`img`,{src:e.url,alt:e.filename},null,8,Ce)])):(o(),s(`div`,we,[n(y(oe),{size:18})]))]),title:a(()=>[x(`span`,Te,r(e.filename),1),n(E,{variant:`type`},{default:a(()=>[l(r(e.mimeType),1)]),_:2},1024)]),meta:a(()=>[x(`span`,Ee,r(Ue(e.sizeBytes))+` • `+r(e.deletedAt?new Date(e.deletedAt).toLocaleString():`—`),1),e.usageCount>0?(o(),s(`button`,{key:0,class:`connection-pill node-pill clickable`,onClick:m(t=>Ae(e),[`stop`])},[n(y(ie),{size:11}),i[15]||=l(),x(`span`,null,r(e.usageCount)+` Connections`,1)],8,De)):b(``,!0)]),actions:a(()=>[x(`button`,{class:`action-btn restore`,title:`Restore Asset`,onClick:m(t=>Le(e.id),[`stop`])},[n(y(C),{size:13}),i[16]||=l(` Restore `,-1)],8,Oe),x(`button`,{class:`action-btn purge`,title:`Permanently Delete`,onClick:m(t=>Re(e),[`stop`])},[n(y(w),{size:13}),i[17]||=l(` Purge `,-1)],8,ke)]),_:2},1032,[`is-selected`,`onClick`]))),128))])]))],64)):b(``,!0)])]))}}),[[`__scopeId`,`data-v-b4a8df4e`]]);export{G as default};
@@ -0,0 +1 @@
1
+ .global-top-bar[data-v-aa116e0a]{background-color:var(--cms-color-surface);border-bottom:1px solid var(--cms-color-border);z-index:100;flex-shrink:0;justify-content:space-between;align-items:center;height:48px;padding:0 14px;transition:background .3s;display:flex;position:relative}.global-top-bar.has-status-bg[data-v-aa116e0a]{background-color:#fff5f7;background-image:repeating-linear-gradient(-45deg,#f472b614,#f472b614 10px,#0000 10px 20px)}.logo-area[data-v-aa116e0a]{z-index:2;align-items:center;gap:10px;display:flex}@media (width>=769px){.mobile-only-btn[data-v-aa116e0a]{display:none!important}}.sidebar-toggle-chip[data-v-aa116e0a]{color:var(--cms-color-text-muted);cursor:pointer;transition:color var(--cms-transition-fast);background:0 0;border:none;border-radius:50%;outline:none;align-items:center;padding:0;display:inline-flex}.toggle-icon-wrapper[data-v-aa116e0a]{width:28px;height:28px;color:var(--cms-color-text-muted);transition:color var(--cms-transition-fast), border-color var(--cms-transition-fast);border-radius:50%;justify-content:center;align-items:center;margin-left:-4px;display:flex;position:relative}.sidebar-toggle-chip:hover .toggle-icon-wrapper[data-v-aa116e0a],.hamburger-icon.is-open .bar[data-v-aa116e0a]{color:var(--cms-color-primary)}.hamburger-icon[data-v-aa116e0a]{flex-direction:column;justify-content:space-between;width:12px;height:6px;display:flex;position:relative}.hamburger-icon .bar[data-v-aa116e0a]{background-color:currentColor;border-radius:1px;width:100%;height:1.5px;transition:transform .25s cubic-bezier(.4,0,.2,1);display:block}.hamburger-icon .bar-top[data-v-aa116e0a],.hamburger-icon .bar-bottom[data-v-aa116e0a]{transform-origin:50%}.hamburger-icon.is-open .bar-top[data-v-aa116e0a]{transform:translateY(2.25px)rotate(45deg)}.hamburger-icon.is-open .bar-bottom[data-v-aa116e0a]{transform:translateY(-2.25px)rotate(-45deg)}.version-link[data-v-aa116e0a]{color:var(--cms-color-text-faint);transition:color var(--cms-transition-fast);margin-bottom:0;margin-left:2px;font-size:9px;line-height:1;text-decoration:none}.version-link[data-v-aa116e0a]:hover{color:var(--cms-color-text-muted);text-decoration:underline}.logo[data-v-aa116e0a]{-webkit-user-select:none;user-select:none;cursor:pointer;width:60px;height:auto;transition:opacity var(--cms-transition-fast);background:0 0;border:none;outline:none;align-items:center;margin-left:4px;padding:0;display:flex}.logo[data-v-aa116e0a]:hover{opacity:.75}.logo svg[data-v-aa116e0a]{width:100%;height:auto;display:block}.center-status-area[data-v-aa116e0a]{pointer-events:none;z-index:1;justify-content:center;align-items:center;display:flex;position:absolute;left:50%;transform:translate(-50%)}.status-badge[data-v-aa116e0a]{font-family:var(--cms-font-sans);border-radius:9999px;align-items:center;gap:6px;padding:4px 12px;font-size:12px;font-weight:600;display:inline-flex;box-shadow:0 1px 2px #0000000d}.status-badge.status-warning[data-v-aa116e0a]{color:#92400e;background-color:#fef3c7;border:1px solid #fde68a}.status-badge.status-danger[data-v-aa116e0a]{color:#9f1239;background-color:#ffe4e6;border:1px solid #fecdd3}.status-badge.status-info[data-v-aa116e0a]{color:#075985;background-color:#e0f2fe;border:1px solid #bae6fd}.animate-spin[data-v-aa116e0a]{animation:1s linear infinite spin-aa116e0a}@keyframes spin-aa116e0a{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.user-area[data-v-aa116e0a]{z-index:2;align-items:center;gap:10px;display:flex}.topbar-icon-btn[data-v-aa116e0a]{color:var(--cms-color-text-muted);cursor:pointer;transition:color var(--cms-transition-fast);background:0 0;border:none;border-radius:50%;outline:none;align-items:center;padding:0;display:inline-flex}.icon-bubble[data-v-aa116e0a]{width:28px;height:28px;transition:all var(--cms-transition-fast);border-radius:50%;justify-content:center;align-items:center;display:flex;position:relative}.topbar-icon-btn.is-active-view .icon-bubble[data-v-aa116e0a]{color:var(--cms-color-primary)!important}.publish-btn .btn-icon[data-v-aa116e0a]{margin-top:1px;margin-left:-1px}.publish-count-badge[data-v-aa116e0a]{color:var(--cms-color-text-main);border-radius:9999px;justify-content:center;align-items:center;min-width:15px;height:15px;padding:0 3px;font-size:11px;font-weight:700;line-height:1;display:flex;position:absolute;bottom:-2px;right:-5px}.topbar-icon-btn.is-active-view .publish-count-badge[data-v-aa116e0a]{color:var(--cms-color-primary)!important}@media (width<=640px){.center-status-area[data-v-aa116e0a]{display:none}}.channel-selector-row[data-v-1633f33b]{width:100%;margin-bottom:12px}.channel-trigger-btn[data-v-1633f33b]{background:var(--cms-color-surface,#fff);border:1px solid var(--cms-color-border,#e2e8f0);border-radius:var(--cms-radius-md,6px);width:100%;color:var(--cms-color-text-main,#0f172a);font-family:var(--cms-font-sans);cursor:pointer;align-items:center;gap:8px;padding:8px 12px;font-size:13px;font-weight:500;transition:all .15s;display:flex}.channel-trigger-btn[data-v-1633f33b]:hover{border-color:var(--cms-color-border-dark,#cbd5e1);background:var(--cms-color-surface-hover,#f8fafc)}.channel-trigger-btn.is-open[data-v-1633f33b]{border-color:var(--cms-color-primary,#3b82f6)}.trigger-icon[data-v-1633f33b]{color:var(--cms-color-text-faint,#64748b)}.trigger-label[data-v-1633f33b]{text-align:left;white-space:nowrap;text-overflow:ellipsis;flex:1;overflow:hidden}.trigger-chevron[data-v-1633f33b]{color:var(--cms-color-text-faint,#64748b);transition:transform .2s}.channel-trigger-btn.is-open .trigger-chevron[data-v-1633f33b]{transform:rotate(180deg)}.tree-item-wrapper[data-v-61c96ae9]{flex-direction:column;display:flex}.tree-node[data-v-61c96ae9]{border-radius:var(--cms-radius-sm);cursor:pointer;-webkit-user-select:none;user-select:none;font-family:var(--cms-font-sans);color:var(--cms-color-text-main);transition:all var(--cms-transition-fast);--node-badge-bg:var(--cms-color-bg);border:1px solid #0000;align-items:center;gap:4px;margin:0 -4px;padding:5px 4px;font-size:12.5px;display:flex}.tree-node[data-v-61c96ae9]:hover:not(.is-active){background:var(--cms-color-surface-hover);border-color:var(--cms-color-border);--node-badge-bg:var(--cms-color-surface-hover)}.tree-node.is-active[data-v-61c96ae9]{background:var(--cms-color-primary-light);border-color:var(--cms-color-primary-border);--node-badge-bg:var(--cms-color-primary-light);font-weight:500}@keyframes draft-pulse-61c96ae9{0%{opacity:.5}50%{opacity:.85}to{opacity:.5}}.tree-node.is-draft[data-v-61c96ae9]{border:1px dashed var(--cms-color-border-dark);background:0 0;animation:2s ease-in-out infinite draft-pulse-61c96ae9}.tree-node.is-draft .node-title[data-v-61c96ae9]{color:var(--cms-color-text-muted);font-style:italic}.icon-wrapper[data-v-61c96ae9]{flex-shrink:0;justify-content:center;align-items:center;width:16px;height:16px;margin-right:2px;display:inline-flex;position:relative}.drag-handle-tree[data-v-61c96ae9]{cursor:grab}.drag-handle-tree[data-v-61c96ae9]:active{cursor:grabbing}.node-icon[data-v-61c96ae9]{color:var(--cms-color-text-faint);transition:color var(--cms-transition-fast)}.toggle-btn[data-v-61c96ae9]{width:16px;height:16px;color:var(--cms-color-text-muted);cursor:pointer;border-radius:var(--cms-radius-xs);transition:background var(--cms-transition-fast);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;padding:2px;display:flex}.toggle-btn[data-v-61c96ae9]:hover{color:var(--cms-color-text-main);background:#0f172a0f}.toggle-placeholder[data-v-61c96ae9]{flex-shrink:0;width:16px;height:16px}.node-title[data-v-61c96ae9]{text-overflow:ellipsis;white-space:nowrap;flex-grow:1;overflow:hidden}.node-actions[data-v-61c96ae9]{opacity:0;transition:opacity var(--cms-transition-fast);align-items:center;display:flex}.tree-node:hover .node-actions[data-v-61c96ae9],.node-actions.menu-open[data-v-61c96ae9]{opacity:1}.action-btn[data-v-61c96ae9]{border-radius:var(--cms-radius-xs);color:var(--cms-color-text-muted);cursor:pointer;transition:all var(--cms-transition-fast);background:0 0;border:none;justify-content:center;align-items:center;padding:3px;display:flex}.action-btn[data-v-61c96ae9]:hover{background:var(--cms-color-border-dark);color:var(--cms-color-text-main)}.nested-tree[data-v-61c96ae9]{padding-left:14px}.tree-drag-area[data-v-61c96ae9]{min-height:3px}.node-tree-container[data-v-18960262]{flex-direction:column;flex:1;display:flex}.tree-header[data-v-18960262]{justify-content:space-between;align-items:center;margin-bottom:8px;padding:0 2px;display:flex}.tree-title[data-v-18960262]{font-family:var(--cms-font-sans);text-transform:uppercase;letter-spacing:.06em;color:var(--cms-color-text-muted);font-size:11px;font-weight:700}.tree-loading[data-v-18960262]{font-family:var(--cms-font-sans);color:var(--cms-color-text-muted);justify-content:center;align-items:center;gap:6px;padding:12px;font-size:11px;display:flex}.add-root-btn[data-v-18960262]{border-radius:var(--cms-radius-sm);color:var(--cms-color-text-muted);cursor:pointer;font-family:var(--cms-font-sans);transition:all var(--cms-transition-fast);background:0 0;border:none;align-items:center;gap:4px;padding:2px 6px;font-size:11px;font-weight:550;display:flex}.add-root-btn[data-v-18960262]:hover{background:var(--cms-color-surface-hover);color:var(--cms-color-primary)}.add-root-btn[data-v-18960262]:active{transform:scale(.96)}.tree-drag-root[data-v-18960262]{flex-direction:column;gap:3px;min-height:20px;display:flex}.empty-tree-state[data-v-18960262]{background:var(--cms-color-surface-hover);border:1px dashed var(--cms-color-border-dark);border-radius:var(--cms-radius-md);text-align:center;margin-top:4px;padding:16px 12px}.empty-tree-state p[data-v-18960262]{font-family:var(--cms-font-sans);color:var(--cms-color-text-muted);margin:0 0 10px;font-size:12px}.primary-btn[data-v-18960262]{font-family:var(--cms-font-sans);border-radius:var(--cms-radius-sm);background:var(--cms-color-primary);color:#fff;box-shadow:var(--cms-shadow-xs);cursor:pointer;transition:all var(--cms-transition-fast);border:none;align-items:center;gap:4px;padding:6px 12px;font-size:12px;font-weight:600;display:inline-flex}.primary-btn[data-v-18960262]:hover{background:var(--cms-color-primary-hover);box-shadow:var(--cms-shadow-sm)}.primary-btn[data-v-18960262]:active{transform:scale(.97)}.spin[data-v-18960262]{animation:1s linear infinite spin-18960262}@keyframes spin-18960262{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.tree-pane[data-v-33bb18de]{min-height:0;font-family:var(--cms-font-sans);-ms-overflow-style:none;scrollbar-width:none;flex:1;padding:0 4px 80px;overflow-x:hidden;overflow-y:auto!important}.tree-pane[data-v-33bb18de]::-webkit-scrollbar{display:none}.tree-stack[data-v-33bb18de]{flex-direction:column;gap:12px;display:flex}.tree-block[data-v-33bb18de]{transition:transform var(--cms-transition-fast);flex-direction:column;display:flex}.tree-label-row[data-v-33bb18de]{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:6px;padding:4px 0;display:flex}.tree-block.is-transfer-source .tree-label-row[data-v-33bb18de]{outline:1px dashed var(--cms-color-text-muted);outline-offset:4px;border-radius:2px}.toggle-btn[data-v-33bb18de]{color:var(--cms-color-text-muted);cursor:pointer;border-radius:var(--cms-radius-xs);background:0 0;border:none;justify-content:center;align-items:center;padding:2px;display:flex}.toggle-btn[data-v-33bb18de]:hover{color:var(--cms-color-text-main);background:#0f172a0f}.tree-title[data-v-33bb18de]{text-transform:uppercase;letter-spacing:.05em;color:var(--cms-color-text-muted);white-space:nowrap;text-overflow:ellipsis;padding:2px 0;font-size:11px;font-weight:700;overflow:hidden}.tree-block.is-selected .tree-title[data-v-33bb18de]{color:var(--cms-color-primary)}.tree-title.is-hidden-text[data-v-33bb18de]{opacity:.6}.tree-badges[data-v-33bb18de]{align-items:center;gap:4px;margin-left:auto;display:flex}.status-badge[data-v-33bb18de]{border-radius:var(--cms-radius-full);text-transform:uppercase;letter-spacing:.02em;align-items:center;gap:3px;padding:1px 6px;font-size:9.5px;font-weight:600;display:inline-flex}.status-badge.draft[data-v-33bb18de]{background:var(--cms-color-primary-light);color:var(--cms-color-primary);border:1px solid var(--cms-color-primary-border)}.status-badge.hidden[data-v-33bb18de]{background:var(--cms-color-danger-light);color:var(--cms-color-danger);border:1px solid var(--cms-color-danger-border)}.status-badge.scheduled[data-v-33bb18de]{background:var(--cms-color-warning-light,#fef3c7);color:var(--cms-color-warning,#d97706);border:1px solid var(--cms-color-warning-border,#fcd34d)}.status-badge.expired[data-v-33bb18de]{background:var(--cms-color-muted-light,#f3f4f6);color:var(--cms-color-text-muted);border:1px solid var(--cms-color-border)}.action-buttons[data-v-33bb18de]{opacity:0;transition:opacity var(--cms-transition-fast);align-items:center;gap:2px;display:flex}.tree-label-row:hover .action-buttons[data-v-33bb18de],.action-buttons.menu-open[data-v-33bb18de]{opacity:1}.icon-btn[data-v-33bb18de]{color:var(--cms-color-text-muted);border-radius:var(--cms-radius-xs);cursor:pointer;transition:all var(--cms-transition-fast);background:0 0;border:none;justify-content:center;align-items:center;padding:4px;display:flex}.icon-btn[data-v-33bb18de]:hover{background:var(--cms-color-surface-hover);color:var(--cms-color-text-main)}.cancel-transfer-btn .hover-icon[data-v-33bb18de],.cancel-transfer-btn:hover .default-icon[data-v-33bb18de]{display:none}.cancel-transfer-btn:hover .hover-icon[data-v-33bb18de]{display:block}.cancel-transfer-btn[data-v-33bb18de]:hover{color:var(--cms-color-danger);background:var(--cms-color-danger-light)}.tree-nodes-wrap[data-v-33bb18de]{padding-left:6px}.empty-trees-state[data-v-33bb18de]{background:var(--cms-color-surface-hover);border:1px dashed var(--cms-color-border-dark);border-radius:var(--cms-radius-md);text-align:center;flex-direction:column;justify-content:center;align-items:center;margin-top:4px;padding:24px 12px;display:flex}.empty-trees-state p[data-v-33bb18de]{color:var(--cms-color-text-muted);margin:0 0 10px;font-size:12px}.create-first-btn[data-v-33bb18de]{border-radius:var(--cms-radius-sm);background:var(--cms-color-primary);color:#fff;cursor:pointer;transition:all var(--cms-transition-fast);border:none;align-items:center;gap:4px;padding:5px 10px;font-size:11.5px;font-weight:600;display:inline-flex}.create-first-btn[data-v-33bb18de]:hover{background:var(--cms-color-primary-hover)}.vault-pane[data-v-775ad774]{flex-direction:column;height:100%;min-height:0;display:flex;overflow:hidden!important}.fixed-vault-controls[data-v-775ad774]{background:var(--cms-color-bg);flex-shrink:0;padding-top:2px;padding-bottom:6px}.asset-filter-banner[data-v-775ad774]{background:var(--cms-color-primary-light);color:var(--cms-color-primary);font-size:11px;font-family:var(--cms-font-sans);text-align:center;cursor:pointer;border-bottom:1px solid var(--cms-color-primary-border);flex-shrink:0;padding:6px 12px;font-weight:600}.asset-filter-banner[data-v-775ad774]:hover{background:var(--cms-color-primary);color:#fff}.vault-scroll-area[data-v-775ad774]{-ms-overflow-style:none;scrollbar-width:none;flex:1;min-height:0;padding-top:6px;overflow-x:hidden;overflow-y:auto!important}.vault-scroll-area[data-v-775ad774]::-webkit-scrollbar{display:none}.search-bar[data-v-775ad774]{background:var(--cms-color-surface-hover);border:1px solid var(--cms-color-border);border-radius:var(--cms-radius-sm);align-items:center;gap:6px;margin-bottom:8px;padding:5px 8px;display:flex}.search-icon[data-v-775ad774]{color:var(--cms-color-text-muted)}.search-input[data-v-775ad774]{font-family:var(--cms-font-sans);color:var(--cms-color-text-main);background:0 0;border:none;outline:none;width:100%;font-size:13px}.search-input[data-v-775ad774]::placeholder{color:var(--cms-color-text-muted)}.filter-bar[data-v-775ad774]{flex-wrap:wrap;gap:6px 4px;margin-bottom:8px;padding-bottom:8px;display:flex}.filter-pill[data-v-775ad774]{font-family:var(--cms-font-sans);border-radius:var(--cms-radius-full);border:1px solid var(--cms-color-border);background:var(--cms-color-surface);color:var(--cms-color-text-muted);cursor:pointer;white-space:nowrap;transition:all var(--cms-transition-fast);outline:none;padding:3px 9px;font-size:10.5px;font-weight:600}.filter-pill[data-v-775ad774]:hover:not(.active){border-color:var(--cms-color-border-dark);color:var(--cms-color-text-main);background:var(--cms-color-surface-hover)}.filter-pill.active[data-v-775ad774]{background:var(--cms-color-primary);color:#fff;border-color:var(--cms-color-primary);box-shadow:var(--cms-shadow-xs)}.pane-header[data-v-775ad774]{justify-content:space-between;align-items:center;gap:8px;padding:0 4px;display:flex}.sort-wrapper[data-v-775ad774]{flex:1;align-items:center;gap:4px;min-width:0;display:flex}.sort-dropdown-wrapper[data-v-775ad774]{flex:1;min-width:0;display:flex;position:relative}.sort-trigger-btn[data-v-775ad774]{border-radius:var(--cms-radius-sm);width:100%;font-family:var(--cms-font-sans);color:var(--cms-color-text-muted);cursor:pointer;transition:color var(--cms-transition-fast), background var(--cms-transition-fast);text-align:left;background:0 0;border:none;justify-content:space-between;align-items:center;gap:4px;height:24px;padding:2px 6px;font-size:11.5px;font-weight:500;display:flex}.sort-trigger-btn[data-v-775ad774]:hover{color:var(--cms-color-text-main);background:var(--cms-color-surface-hover)}.sort-label[data-v-775ad774]{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.sort-chevron[data-v-775ad774]{flex-shrink:0}.pane-icon-btn[data-v-775ad774]{border-radius:var(--cms-radius-sm);cursor:pointer;color:var(--cms-color-text-muted);transition:color var(--cms-transition-fast), background var(--cms-transition-fast);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;width:24px;height:24px;padding:0;display:flex}.pane-icon-btn[data-v-775ad774]:hover{color:var(--cms-color-text-main);background:var(--cms-color-surface-hover)}.pane-icon-btn.add-content-btn[data-v-775ad774]:hover{color:var(--cms-color-primary)}.vault-list[data-v-775ad774]{flex-direction:column;gap:3px;padding:0 8px 90px;display:flex}.tree-tag-icon[data-v-775ad774],.asset-tag-icon[data-v-775ad774],.count-text[data-v-775ad774]{color:var(--cms-color-text-muted)}.scroll-sentinel[data-v-775ad774]{text-align:center;padding:12px 0 90px}.loading-text[data-v-775ad774],.end-text[data-v-775ad774]{font-family:var(--cms-font-sans);color:var(--cms-color-text-muted);font-size:11px}.empty-vault-state[data-v-775ad774]{background:var(--cms-color-surface-hover);border:1px dashed var(--cms-color-border-dark);border-radius:var(--cms-radius-md);text-align:center;margin-top:4px;padding:16px 12px}.empty-vault-state p[data-v-775ad774]{font-family:var(--cms-font-sans);color:var(--cms-color-text-muted);margin:0 0 10px;font-size:12px}.primary-btn[data-v-775ad774]{font-family:var(--cms-font-sans);border-radius:var(--cms-radius-sm);background:var(--cms-color-primary);color:#fff;box-shadow:var(--cms-shadow-xs);cursor:pointer;transition:all var(--cms-transition-fast);border:none;align-items:center;gap:4px;padding:6px 12px;font-size:12px;font-weight:600;display:inline-flex}.primary-btn[data-v-775ad774]:hover{background:var(--cms-color-primary-hover);box-shadow:var(--cms-shadow-sm)}.primary-btn[data-v-775ad774]:active{transform:scale(.97)}.media-pane[data-v-8a05ff06]{flex-direction:column;height:100%;min-height:0;display:flex;position:relative;overflow:hidden!important}.collision-overlay[data-v-8a05ff06]{z-index:100;background:var(--cms-color-overlay,#02061773);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);justify-content:center;align-items:center;padding:24px;display:flex;position:absolute;inset:0}.collision-card[data-v-8a05ff06]{background:var(--cms-color-surface);border:1px solid var(--cms-color-border);border-radius:var(--cms-radius-md);width:100%;max-width:400px;font-family:var(--cms-font-sans);flex-direction:column;gap:16px;padding:20px;display:flex}.collision-header[data-v-8a05ff06]{align-items:center;gap:10px;display:flex}.collision-header h3[data-v-8a05ff06]{color:var(--cms-color-text-main);margin:0;font-size:15px}.text-warning[data-v-8a05ff06]{color:var(--cms-color-warning,#f59e0b)}.collision-body p[data-v-8a05ff06]{color:var(--cms-color-text-muted);margin:0 0 8px;font-size:13px}.collision-warning[data-v-8a05ff06]{color:var(--cms-color-warning,#d97706);background:var(--cms-color-warning-light,#fef3c7);border-radius:var(--cms-radius-sm);border:1px solid var(--cms-color-warning-border,#fde68a);padding:8px;font-weight:600}.collision-actions[data-v-8a05ff06]{flex-direction:column;gap:8px;margin-top:8px;display:flex}.hidden-file-input[data-v-8a05ff06]{display:none}.drag-overlay[data-v-8a05ff06]{z-index:50;background:var(--cms-color-primary,#2563ebd9);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);color:#fff;font-family:var(--cms-font-sans);border-radius:var(--cms-radius-md);flex-direction:column;justify-content:center;align-items:center;gap:8px;font-size:13px;font-weight:600;display:flex;position:absolute;inset:0}.fixed-media-controls[data-v-8a05ff06]{background:var(--cms-color-bg);flex-shrink:0;padding-top:2px;padding-bottom:6px}.node-filter-banner[data-v-8a05ff06]{background:var(--cms-color-primary-light);color:var(--cms-color-primary);font-size:11px;font-family:var(--cms-font-sans);text-align:center;cursor:pointer;flex-shrink:0;padding:6px 12px;font-weight:600}.node-filter-banner[data-v-8a05ff06]:hover{background:var(--cms-color-primary);color:#fff}.search-bar-wrapper[data-v-8a05ff06]{margin-bottom:8px;padding:0 4px;position:relative}.search-bar[data-v-8a05ff06]{background:var(--cms-color-surface-hover);border:1px solid var(--cms-color-border);border-radius:var(--cms-radius-sm);align-items:center;gap:6px;padding:5px 8px;display:flex}.search-icon[data-v-8a05ff06]{color:var(--cms-color-text-muted)}.search-input[data-v-8a05ff06]{font-family:var(--cms-font-sans);color:var(--cms-color-text-main);background:0 0;border:none;outline:none;width:100%;font-size:13px}.search-input[data-v-8a05ff06]::placeholder{color:var(--cms-color-text-muted)}.tag-suggestions-dropdown[data-v-8a05ff06]{background:var(--cms-color-surface);border:1px solid var(--cms-color-border);border-radius:var(--cms-radius-sm);box-shadow:var(--cms-shadow-md);z-index:100;flex-direction:column;margin-top:4px;display:flex;position:absolute;top:100%;left:4px;right:4px;overflow:hidden}.suggestion-header[data-v-8a05ff06]{font-family:var(--cms-font-sans);color:var(--cms-color-text-faint);text-transform:uppercase;background:var(--cms-color-bg);border-bottom:1px solid var(--cms-color-border-dark);padding:6px 10px;font-size:10px;font-weight:600}.suggestion-item[data-v-8a05ff06]{cursor:pointer;text-align:left;transition:background var(--cms-transition-fast);background:0 0;border:none;align-items:center;gap:8px;padding:8px 10px;display:flex}.suggestion-item[data-v-8a05ff06]:hover{background:var(--cms-color-surface-hover)}.suggestion-icon[data-v-8a05ff06]{color:var(--cms-color-primary)}.suggestion-label[data-v-8a05ff06]{font-family:var(--cms-font-sans);color:var(--cms-color-text-main);font-size:13px}.filter-bar[data-v-8a05ff06]{flex-wrap:wrap;align-items:center;gap:6px 4px;margin-bottom:8px;padding:0 4px;display:flex}.filter-pill[data-v-8a05ff06]{font-family:var(--cms-font-sans);border-radius:var(--cms-radius-full);border:1px solid var(--cms-color-border);background:var(--cms-color-surface);color:var(--cms-color-text-muted);cursor:pointer;white-space:nowrap;transition:all var(--cms-transition-fast);outline:none;padding:3px 9px;font-size:10.5px;font-weight:600}.filter-pill[data-v-8a05ff06]:hover:not(.active){border-color:var(--cms-color-border-dark);color:var(--cms-color-text-main);background:var(--cms-color-surface-hover)}.filter-pill.active[data-v-8a05ff06]{background:var(--cms-color-primary);color:#fff;border-color:var(--cms-color-primary)}.tag-divider[data-v-8a05ff06]{background:var(--cms-color-border);width:1px;height:14px;margin:0 4px}.tag-pill[data-v-8a05ff06]{align-items:center;gap:4px;padding-right:6px;display:inline-flex}.tag-close-icon[data-v-8a05ff06]{opacity:.8;margin-left:2px;margin-right:-2px}.tag-pill:hover .tag-close-icon[data-v-8a05ff06]{opacity:1}.pane-header[data-v-8a05ff06]{justify-content:space-between;align-items:center;gap:8px;padding:0 4px;display:flex}.sort-wrapper[data-v-8a05ff06]{flex:1;align-items:center;gap:4px;min-width:0;display:flex}.sort-dropdown-wrapper[data-v-8a05ff06]{flex:1;min-width:0;display:flex;position:relative}.sort-trigger-btn[data-v-8a05ff06]{border-radius:var(--cms-radius-sm);width:100%;font-family:var(--cms-font-sans);color:var(--cms-color-text-muted);cursor:pointer;transition:color var(--cms-transition-fast), background var(--cms-transition-fast);text-align:left;background:0 0;border:none;justify-content:space-between;align-items:center;gap:4px;height:24px;padding:2px 6px;font-size:11.5px;font-weight:500;display:flex}.sort-trigger-btn[data-v-8a05ff06]:hover{color:var(--cms-color-text-main);background:var(--cms-color-surface-hover)}.sort-label[data-v-8a05ff06]{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.sort-chevron[data-v-8a05ff06]{flex-shrink:0}.pane-icon-btn[data-v-8a05ff06]{border-radius:var(--cms-radius-sm);cursor:pointer;color:var(--cms-color-text-muted);transition:color var(--cms-transition-fast), background var(--cms-transition-fast);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;width:24px;height:24px;padding:0;display:flex}.pane-icon-btn[data-v-8a05ff06]:hover{color:var(--cms-color-text-main);background:var(--cms-color-surface-hover)}.pane-icon-btn.add-content-btn[data-v-8a05ff06]:hover{color:var(--cms-color-primary)}.media-scroll-area[data-v-8a05ff06]{-ms-overflow-style:none;scrollbar-width:none;flex:1;min-height:0;padding:8px 2px 80px;overflow-x:hidden;overflow-y:auto!important}.media-scroll-area[data-v-8a05ff06]::-webkit-scrollbar{display:none}.uploading-banner[data-v-8a05ff06]{background:var(--cms-color-primary-light);border:1px solid var(--cms-color-primary-border);border-radius:var(--cms-radius-sm);color:var(--cms-color-primary);font-family:var(--cms-font-sans);align-items:center;gap:6px;margin-bottom:8px;padding:6px 10px;font-size:11px;font-weight:600;display:flex}.media-list[data-v-8a05ff06]{flex-direction:column;gap:6px;display:flex}.item-details[data-v-8a05ff06]{pointer-events:none;flex-direction:column;flex:1;justify-content:center;min-width:0;display:flex}.meta-row[data-v-8a05ff06]{flex-wrap:wrap;align-items:center;gap:8px;margin-top:6px;display:flex}.empty-media-state[data-v-8a05ff06]{color:var(--cms-color-text-muted);border:1px dashed var(--cms-color-border-dark);border-radius:var(--cms-radius-md);cursor:pointer;transition:background var(--cms-transition-fast);flex-direction:column;justify-content:center;align-items:center;margin-top:8px;padding:32px 12px;display:flex}.empty-media-state[data-v-8a05ff06]:hover{background:var(--cms-color-surface-hover)}.empty-icon[data-v-8a05ff06]{color:var(--cms-color-text-faint);margin-bottom:6px}.empty-sub[data-v-8a05ff06]{font-family:var(--cms-font-sans);color:var(--cms-color-text-faint);margin-top:4px;font-size:10px}.scroll-sentinel[data-v-8a05ff06]{text-align:center;padding:12px 0 60px}.loading-text[data-v-8a05ff06],.end-text[data-v-8a05ff06]{font-family:var(--cms-font-sans);color:var(--cms-color-text-muted);font-size:11px}.spin[data-v-8a05ff06]{animation:1s linear infinite spin-8a05ff06}@keyframes spin-8a05ff06{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.node-tag-icon[data-v-8a05ff06],.variant-tag[data-v-8a05ff06]{color:var(--cms-color-text-muted);align-items:center;gap:3px;display:flex}.count-text[data-v-8a05ff06]{color:var(--cms-color-text-muted);font-size:11px;font-weight:500}.vault-pane[data-v-282056a0]{flex-direction:column;height:100%;min-height:0;display:flex;overflow:hidden!important}.fixed-vault-controls[data-v-282056a0]{background:var(--cms-color-bg);flex-shrink:0;padding-top:2px;padding-bottom:6px}.vault-scroll-area[data-v-282056a0]{-ms-overflow-style:none;scrollbar-width:none;flex:1;min-height:0;padding-top:6px;overflow-x:hidden;overflow-y:auto!important}.vault-scroll-area[data-v-282056a0]::-webkit-scrollbar{display:none}.search-bar[data-v-282056a0]{background:var(--cms-color-surface-hover);border:1px solid var(--cms-color-border);border-radius:var(--cms-radius-sm);align-items:center;gap:6px;margin-bottom:8px;padding:5px 8px;display:flex}.search-icon[data-v-282056a0]{color:var(--cms-color-text-muted)}.search-input[data-v-282056a0]{font-family:var(--cms-font-sans);color:var(--cms-color-text-main);background:0 0;border:none;outline:none;width:100%;font-size:13px}.search-input[data-v-282056a0]::placeholder{color:var(--cms-color-text-muted)}.filter-bar[data-v-282056a0]{flex-wrap:wrap;gap:6px 4px;margin-bottom:8px;padding-bottom:8px;display:flex}.filter-pill[data-v-282056a0]{font-family:var(--cms-font-sans);border-radius:var(--cms-radius-full);border:1px solid var(--cms-color-border);background:var(--cms-color-surface);color:var(--cms-color-text-muted);cursor:pointer;white-space:nowrap;transition:all var(--cms-transition-fast);outline:none;padding:3px 9px;font-size:10.5px;font-weight:600}.filter-pill[data-v-282056a0]:hover:not(.active){border-color:var(--cms-color-border-dark);color:var(--cms-color-text-main);background:var(--cms-color-surface-hover)}.filter-pill.active[data-v-282056a0]{background:var(--cms-color-primary);color:#fff;border-color:var(--cms-color-primary);box-shadow:var(--cms-shadow-xs)}.pane-header[data-v-282056a0]{justify-content:space-between;align-items:center;gap:8px;padding:0 4px;display:flex}.sort-wrapper[data-v-282056a0]{flex:1;align-items:center;gap:4px;min-width:0;display:flex}.sort-dropdown-wrapper[data-v-282056a0]{flex:1;min-width:0;display:flex;position:relative}.sort-trigger-btn[data-v-282056a0]{border-radius:var(--cms-radius-sm);width:100%;font-family:var(--cms-font-sans);color:var(--cms-color-text-muted);cursor:pointer;transition:color var(--cms-transition-fast), background var(--cms-transition-fast);text-align:left;background:0 0;border:none;justify-content:space-between;align-items:center;gap:4px;height:24px;padding:2px 6px;font-size:11.5px;font-weight:500;display:flex}.sort-trigger-btn[data-v-282056a0]:hover{color:var(--cms-color-text-main);background:var(--cms-color-surface-hover)}.sort-label[data-v-282056a0]{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.sort-chevron[data-v-282056a0]{flex-shrink:0}.pane-icon-btn[data-v-282056a0]{border-radius:var(--cms-radius-sm);cursor:pointer;color:var(--cms-color-text-muted);transition:color var(--cms-transition-fast), background var(--cms-transition-fast);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;width:24px;height:24px;padding:0;display:flex}.pane-icon-btn[data-v-282056a0]:hover{color:var(--cms-color-text-main);background:var(--cms-color-surface-hover)}.pane-icon-btn.add-content-btn[data-v-282056a0]:hover{color:var(--cms-color-primary)}.vault-list[data-v-282056a0]{flex-direction:column;gap:3px;padding:0 8px 90px;display:flex}.scroll-sentinel[data-v-282056a0]{text-align:center;padding:12px 0 90px}.loading-text[data-v-282056a0]{font-family:var(--cms-font-sans);color:var(--cms-color-text-muted);font-size:11px}.empty-vault-state[data-v-282056a0]{background:var(--cms-color-surface-hover);border:1px dashed var(--cms-color-border-dark);border-radius:var(--cms-radius-md);text-align:center;margin-top:4px;padding:16px 12px}.empty-vault-state p[data-v-282056a0]{font-family:var(--cms-font-sans);color:var(--cms-color-text-muted);margin:0 0 10px;font-size:12px}.primary-btn[data-v-282056a0]{font-family:var(--cms-font-sans);border-radius:var(--cms-radius-sm);background:var(--cms-color-primary);color:#fff;box-shadow:var(--cms-shadow-xs);cursor:pointer;transition:all var(--cms-transition-fast);border:none;align-items:center;gap:4px;padding:6px 12px;font-size:12px;font-weight:600;display:inline-flex}.primary-btn[data-v-282056a0]:hover{background:var(--cms-color-primary-hover);box-shadow:var(--cms-shadow-sm)}.primary-btn[data-v-282056a0]:active{transform:scale(.97)}.panel-tree[data-v-44fc8b2b]{box-sizing:border-box;background:var(--cms-color-bg);border-right:1px solid var(--cms-color-border);-webkit-user-select:none;user-select:none;flex-direction:column;flex-shrink:0;width:260px;height:100%;max-height:100vh;padding:18px 14px 12px;display:flex;overflow:hidden}.segmented-control[data-v-44fc8b2b]{background:var(--cms-color-surface-hover);border:1px solid var(--cms-color-border);border-radius:var(--cms-radius-md);flex-shrink:0;gap:2px;margin-bottom:14px;padding:3px;display:flex}.tab-btn[data-v-44fc8b2b]{color:var(--cms-color-text-muted);border-radius:var(--cms-radius-sm);cursor:pointer;transition:all var(--cms-transition-fast);font-family:var(--cms-font-sans);background:0 0;border:none;outline:none;flex:1;justify-content:center;align-items:center;font-weight:550;display:inline-flex;overflow:hidden}.tab-btn span[data-v-44fc8b2b]{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.tab-icon[data-v-44fc8b2b]{opacity:.75;transition:opacity var(--cms-transition-fast);flex-shrink:0}.tab-btn[data-v-44fc8b2b]:hover:not(.active){color:var(--cms-color-text-main);background:#0f172a08}.tab-btn:hover:not(.active) .tab-icon[data-v-44fc8b2b]{opacity:1}.tab-btn.active[data-v-44fc8b2b]{background:var(--cms-color-surface);color:var(--cms-color-primary)}.tab-btn.active .tab-icon[data-v-44fc8b2b]{opacity:1;color:var(--cms-color-primary)}.tab-btn[data-v-44fc8b2b]:active{transform:scale(.98)}.pane-wrapper[data-v-44fc8b2b]{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.sidebar-footer[data-v-44fc8b2b]{border-top:1px solid var(--cms-color-border);flex-shrink:0;margin-top:0;padding-top:8px}.trash-btn[data-v-44fc8b2b]{width:100%;font-family:var(--cms-font-sans);color:var(--cms-color-text-muted);border-radius:var(--cms-radius-sm);cursor:pointer;transition:all var(--cms-transition-fast);background:0 0;border:1px solid #0000;align-items:center;gap:8px;padding:8px 10px;font-size:13px;font-weight:500;display:flex}.trash-icon[data-v-44fc8b2b]{opacity:.7;transition:opacity .2s}.trash-btn[data-v-44fc8b2b]:hover{color:var(--cms-color-danger,#ef4444);background:#ef44440d}.trash-btn:hover .trash-icon[data-v-44fc8b2b]{opacity:1}.trash-btn.is-active[data-v-44fc8b2b]{color:var(--cms-color-danger,#ef4444);background:#ef44441a;border-color:#ef444433;font-weight:600}.trash-btn.is-active .trash-icon[data-v-44fc8b2b]{opacity:1}.dashboard-canvas[data-v-e6b6e0e0]{padding:var(--cms-page-padding,32px);background:var(--cms-color-bg);font-family:var(--cms-font-sans);flex-grow:1;justify-content:center;align-items:flex-start;display:flex;overflow-y:auto}.dashboard-container[data-v-e6b6e0e0]{width:100%;margin:0 auto}.widgets-grid[data-v-e6b6e0e0]{grid-template-columns:repeat(auto-fit,minmax(min(100%,380px),1fr));gap:20px;margin-bottom:32px;display:grid}.dashboard-widget[data-v-e6b6e0e0]{background:var(--cms-color-surface);border:1px solid var(--cms-color-border);border-radius:var(--cms-radius-md);flex-direction:column;padding:24px;display:flex;overflow:hidden}.widget-header[data-v-e6b6e0e0]{justify-content:space-between;align-items:center;margin-bottom:20px;display:flex}.widget-title[data-v-e6b6e0e0]{align-items:center;gap:8px;display:flex}.widget-title h4[data-v-e6b6e0e0]{color:var(--cms-color-text-main);margin:0;font-size:15px;font-weight:600}.widget-icon[data-v-e6b6e0e0]{color:var(--cms-color-text-main)}.count-badge[data-v-e6b6e0e0]{background:var(--cms-color-primary);color:#fff;border-radius:9999px;padding:2px 8px;font-size:11px;font-weight:700;line-height:1.2}.publisher-link-btn[data-v-e6b6e0e0]{background:var(--cms-color-primary-light);color:var(--cms-color-primary);border:1px solid var(--cms-color-primary-border);border-radius:var(--cms-radius-full);cursor:pointer;transition:all var(--cms-transition-fast);align-items:center;gap:6px;padding:4px 10px;font-size:11.5px;font-weight:600;display:inline-flex}.publisher-link-btn[data-v-e6b6e0e0]:hover{background:var(--cms-color-primary);color:#fff}.widget-body[data-v-e6b6e0e0]{flex:1}.caught-up-banner[data-v-e6b6e0e0]{align-items:center;gap:12px;margin-bottom:12px;display:flex}.banner-text[data-v-e6b6e0e0]{flex-direction:column;font-size:12px;line-height:1.5em;display:flex}.history-list[data-v-e6b6e0e0]{flex-direction:column;max-height:320px;margin:0;display:flex;overflow-y:auto}.published-check[data-v-e6b6e0e0]{color:var(--cms-color-success,#10b981);flex-shrink:0}.node-icon[data-v-e6b6e0e0]{color:var(--cms-color-text-faint);flex-shrink:0}.history-title[data-v-e6b6e0e0]{color:var(--cms-color-text-main);white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:550;overflow:hidden}.history-time[data-v-e6b6e0e0]{color:var(--cms-color-text-muted);font-size:11.5px;font-family:var(--cms-font-mono);align-items:center;gap:6px;display:flex}.hover-arrow[data-v-e6b6e0e0]{color:var(--cms-color-primary)}.empty-widget-state[data-v-e6b6e0e0]{text-align:center;color:var(--cms-color-text-muted);flex-direction:column;justify-content:center;align-items:center;padding:32px 16px;display:flex}.empty-icon[data-v-e6b6e0e0]{color:var(--cms-color-text-faint);margin-bottom:8px}.empty-widget-state p[data-v-e6b6e0e0]{margin:0;font-size:12.5px}.stats-content[data-v-e6b6e0e0]{align-items:center;gap:32px;display:flex}.stat-total-block[data-v-e6b6e0e0]{flex-direction:column;min-width:100px;display:flex}.stat-big-number[data-v-e6b6e0e0]{color:var(--cms-color-text-main);letter-spacing:-.03em;margin-bottom:6px;font-size:44px;font-weight:800;line-height:1}.stat-subtitle[data-v-e6b6e0e0]{text-transform:uppercase;letter-spacing:.05em;color:var(--cms-color-text-muted);font-size:11px;font-weight:600}.stat-breakdown-list[data-v-e6b6e0e0]{flex-direction:column;flex-grow:1;gap:12px;display:flex}.breakdown-row[data-v-e6b6e0e0]{flex-direction:column;gap:4px;display:flex}.breakdown-meta[data-v-e6b6e0e0]{justify-content:space-between;align-items:center;font-size:12px;font-weight:500;display:flex}.breakdown-label[data-v-e6b6e0e0]{color:var(--cms-color-text-main)}.breakdown-count[data-v-e6b6e0e0]{color:var(--cms-color-text-muted);font-family:var(--cms-font-mono)}.breakdown-track[data-v-e6b6e0e0]{background:var(--cms-color-surface-hover);border-radius:var(--cms-radius-full);width:100%;height:5px;overflow:hidden}.breakdown-fill[data-v-e6b6e0e0]{background:var(--cms-color-primary);border-radius:var(--cms-radius-full);height:100%;transition:width .8s cubic-bezier(.16,1,.3,1)}@media (width<=900px){.stats-content[data-v-e6b6e0e0]{flex-direction:column;align-items:flex-start;gap:16px}.dashboard-widget[data-v-e6b6e0e0]{padding:16px}}.modal-overlay[data-v-8a386e23]{z-index:9999;background:var(--cms-color-overlay,#02061780);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.modal-card[data-v-8a386e23]{background:var(--cms-color-surface);border:1px solid var(--cms-color-border);border-radius:var(--cms-radius-lg);width:100%;max-width:420px;box-shadow:var(--cms-shadow-lg);font-family:var(--cms-font-sans);flex-direction:column;gap:16px;padding:24px;display:flex;position:relative}.close-btn[data-v-8a386e23]{color:var(--cms-color-text-faint);cursor:pointer;border-radius:var(--cms-radius-sm);transition:background-color var(--cms-transition-fast), color var(--cms-transition-fast);background:0 0;border:none;padding:4px;position:absolute;top:16px;right:16px}.close-btn[data-v-8a386e23]:hover{background:var(--cms-color-surface-hover);color:var(--cms-color-text-main)}.modal-header[data-v-8a386e23]{align-items:center;gap:12px;display:flex}.icon-bubble[data-v-8a386e23]{border-radius:var(--cms-radius-full);background:var(--cms-color-warning-light);border:1px solid var(--cms-color-warning-border);flex-shrink:0;justify-content:center;align-items:center;width:40px;height:40px;display:flex}.icon-bubble.is-delete[data-v-8a386e23]{background:var(--cms-color-danger-light);border-color:var(--cms-color-danger-border)}.warning-icon[data-v-8a386e23]{color:var(--cms-color-warning)}.icon-bubble.is-delete .warning-icon[data-v-8a386e23]{color:var(--cms-color-danger)}.modal-header h3[data-v-8a386e23]{color:var(--cms-color-text-main);margin:0;font-size:16px;font-weight:700}.modal-body p[data-v-8a386e23]{color:var(--cms-color-text-muted);margin:0;font-size:13.5px;line-height:1.6}[data-v-8a386e23] .highlight-entity{color:var(--cms-color-text-main);background:var(--cms-color-surface-hover);border-radius:var(--cms-radius-sm);border:1px solid var(--cms-color-border);font-weight:700;font-family:var(--cms-font-mono);padding:2px 6px;font-size:12.5px}.modal-actions[data-v-8a386e23]{justify-content:flex-end;align-items:center;gap:10px;margin-top:8px;display:flex}.btn[data-v-8a386e23]{height:36px;font-family:var(--cms-font-sans);border-radius:var(--cms-radius-md);cursor:pointer;transition:all var(--cms-transition-fast);border:1px solid #0000;outline:none;padding:0 16px;font-size:13px;font-weight:600}.btn-discard[data-v-8a386e23]{background:var(--cms-color-danger);color:var(--cms-color-surface)}.btn-discard[data-v-8a386e23]:hover{background:var(--cms-color-danger-hover);box-shadow:var(--cms-shadow-xs)}.btn-discard[data-v-8a386e23]:active{background:var(--cms-color-danger-active,#991b1b)}.btn-discard[data-v-8a386e23]:focus-visible{box-shadow:0 0 0 2px var(--cms-color-danger-border)}.btn-keep[data-v-8a386e23]{background:var(--cms-color-primary);color:var(--cms-color-surface)}.btn-keep[data-v-8a386e23]:hover{background:var(--cms-color-primary-hover);box-shadow:var(--cms-shadow-xs)}.btn-keep[data-v-8a386e23]:focus-visible{box-shadow:0 0 0 2px var(--cms-color-focus-ring)}.modal-fade-enter-active[data-v-8a386e23],.modal-fade-leave-active[data-v-8a386e23]{transition:opacity var(--cms-transition-normal), transform var(--cms-transition-normal)}.modal-fade-enter-from[data-v-8a386e23],.modal-fade-leave-to[data-v-8a386e23]{opacity:0;transform:scale(.96)}html,body{width:100%;height:100%;margin:0;padding:0}.cms-app-container{background-color:var(--cms-color-surface);flex-direction:column;width:100vw;height:100vh;display:flex;overflow:hidden}.cms-editor{font-family:var(--cms-font-sans);color:var(--cms-color-text-main);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;flex-grow:1;display:flex;position:relative;overflow:hidden}.sidebar-container{width:var(--sidebar-width);background:var(--cms-color-surface);z-index:40;flex-direction:column;flex-shrink:0;height:100%;display:flex}.sidebar-container>*{flex-grow:1;width:100%!important}.main-content-container{z-index:1;flex-direction:column;flex:1;min-width:0;height:100%;display:flex;position:relative}.sidebar-backdrop{z-index:98;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background-color:#0f172a66;position:absolute;inset:0}@media (width<=768px){.main-content-container{z-index:1!important}.sidebar-container{box-shadow:none;transition:transform .25s cubic-bezier(.4,0,.2,1),box-shadow .25s;position:absolute;top:0;bottom:0;left:0;transform:translate(-320px);z-index:99!important;width:280px!important}.sidebar-container.is-open{transform:translate(0);box-shadow:4px 0 16px #00000026;width:280px!important}}:root{--cms-font-sans:"Chakra Petch", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--cms-font-mono:"Roboto Mono", "Geist Mono", "Fira Code", monospace;--cms-radius-xs:2px;--cms-radius-sm:4px;--cms-radius-md:6px;--cms-radius-lg:8px;--cms-radius-full:9999px;--cms-color-primary:#2563eb;--cms-color-primary-hover:#1d4ed8;--cms-color-primary-light:#eff6ff;--cms-color-primary-border:#93c5fd;--cms-color-danger:#dc2626;--cms-color-danger-hover:#b91c1c;--cms-color-danger-light:transparent;--cms-color-danger-border:#f58989;--cms-color-warning:#ea580c;--cms-color-warning-light:#fff7ed;--cms-color-warning-border:#fdba74;--cms-color-success:#028200;--cms-color-success-light:transparent;--cms-color-success-border:#18b500;--cms-color-info:#2563eb;--cms-color-info-light:transparent;--cms-color-info-border:#509af4;--cms-color-sync:#7c3aed;--cms-color-sync-light:transparent;--cms-color-sync-border:#ddd6fe;--cms-color-offline:#db2777;--cms-color-offline-light:#fdf2f8;--cms-color-offline-border:#fbcfe8;--cms-color-draft:#475569;--cms-color-draft-light:transparent;--cms-color-draft-border:#90949b;--cms-color-bg:#f8fafc;--cms-color-surface:#fff;--cms-color-surface-hover:#f1f5f9;--cms-color-surface-active:#e2e8f0;--cms-color-popover:#fff;--cms-color-border:#d6dce4;--cms-color-border-dark:#b8bfc8;--cms-color-border-input:#64748b;--cms-color-focus-ring:#2563eb40;--cms-color-text-main:#020617;--cms-color-text-subtle:#334155;--cms-color-text-muted:#475569;--cms-color-text-faint:#64748b;--cms-shadow-xs:0 1px 2px 0 #0000000a;--cms-shadow-sm:0 1px 3px 0 #00000014, 0 1px 2px -1px #0000000a;--cms-shadow-md:0 4px 6px -1px #00000014, 0 2px 4px -2px #0000000a, 0 0 0 1px var(--cms-color-border);--cms-shadow-lg:0 10px 15px -3px #00000014, 0 4px 6px -4px #0000000a, 0 0 0 1px var(--cms-color-border);--cms-transition-fast:.1s cubic-bezier(.4, 0, .2, 1);--cms-transition-normal:.2s cubic-bezier(.4, 0, .2, 1);--cms-color-overlay:#02061773;--cms-color-danger-active:#991b1b;--cms-page-padding:32px}@media (width<=768px){:root{--cms-page-padding:16px}}*{box-sizing:border-box}body{font-family:var(--cms-font-sans);color:var(--cms-color-text-main);background-color:var(--cms-color-bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.tiptap :last-child{margin-bottom:0}p,ul,ol{margin:0 0 1.25em;line-height:1.6em}li p{margin-bottom:0}