@brightsideoy/kama 1.0.0-alpha.2 → 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.
- package/bin/cli.js +604 -364
- package/content/definitions/block-kama-forms.yaml +5 -0
- package/content/definitions/blocks/button.yaml +15 -5
- package/content/definitions/blocks/image-gallery.yaml +34 -0
- package/content/definitions/blocks/node-list.yaml +75 -0
- package/content/definitions/blocks/youtube.yaml +8 -0
- package/content/definitions/field-sets/access.yaml +10 -0
- package/content/definitions/field-sets/channel-base.yaml +7 -0
- package/content/definitions/field-sets/page-base.yaml +16 -1
- package/content/definitions/nodes/article.yaml +17 -1
- package/content/definitions/taxonomies/categories.yaml +5 -2
- package/content/definitions/taxonomies/media-tag.yaml +15 -0
- package/content/definitions/taxonomies/tags.yaml +5 -2
- package/content/forms/contact.yaml +44 -0
- package/content/forms/subscription.yaml +32 -0
- package/definitions/editor/default.ts +15 -1
- package/dist/assets/AssetEditor-B4W7tV1a.js +1 -0
- package/dist/assets/AssetEditor-D9sz6bfN.css +1 -0
- package/dist/assets/CmsBadge-BNsgxyyB.css +1 -0
- package/dist/assets/CmsBadge-D0Ob9qPU.js +1 -0
- package/dist/assets/CmsButton-BQ85-YXn.css +1 -0
- package/dist/assets/CmsButton-CbOfxvjr.js +1 -0
- package/dist/assets/CmsDataRow--H4iI_u_.js +1 -0
- package/dist/assets/CmsDataRow-CYNxfVaZ.css +1 -0
- package/dist/assets/CmsFieldTaxonomy-CVlKL-l2.css +1 -0
- package/dist/assets/CmsFieldTaxonomy-C_AwHDwY.js +1 -0
- package/dist/assets/CmsHelp-BO_vWABq.css +1 -0
- package/dist/assets/CmsHelp-BQkr9KyU.js +1 -0
- package/dist/assets/CmsImagePreview-CujwG8r_.css +1 -0
- package/dist/assets/CmsImagePreview-DuHPBzml.js +1 -0
- package/dist/assets/CmsPaneResizer-B62ZqsnE.js +1 -0
- package/dist/assets/CmsPaneResizer-Dkidd4pI.css +1 -0
- package/dist/assets/CmsPublisher-CugEqTD8.css +1 -0
- package/dist/assets/CmsPublisher-XSCPrp5L.js +3 -0
- package/dist/assets/CmsUserCenter-Ac0GywlR.css +1 -0
- package/dist/assets/CmsUserCenter-D3XDzKDC.js +1 -0
- package/dist/assets/EditorSplitPreview-BzKh4wFB.css +1 -0
- package/dist/assets/EditorSplitPreview-Cp2x0O_P.js +1 -0
- package/dist/assets/NodeContextMenu-BYeWzmQ5.css +1 -0
- package/dist/assets/NodeContextMenu-C_HWBGeb.js +1 -0
- package/dist/assets/NodeEditor-4TsNvk2f.css +1 -0
- package/dist/assets/NodeEditor-DA5GRtRP.js +161 -0
- package/dist/assets/StatusPill-CbeW5SMT.js +1 -0
- package/dist/assets/StatusPill-Dlm6uvGe.css +1 -0
- package/dist/assets/TrashWorkspace-CATe46WF.js +1 -0
- package/dist/assets/TrashWorkspace-DtMgxg13.css +1 -0
- package/dist/assets/_plugin-vue_export-helper-CQxWhVtr.js +5 -0
- package/dist/assets/circle-check-A-QeFqt3.js +1 -0
- package/dist/assets/database-hg5SqKLG.js +1 -0
- package/dist/assets/folder-tree-BWYot72H.js +1 -0
- package/dist/assets/globe-BraoljaN.js +1 -0
- package/dist/assets/history-pqIbKK9u.js +1 -0
- package/dist/assets/index-CY0VYSyt.css +1 -0
- package/dist/assets/index-DdG9Pozx.js +14 -0
- package/dist/assets/layers-B6RgfpPR.js +1 -0
- package/dist/assets/loader-circle-BoUkhDjq.js +1 -0
- package/dist/assets/monitor-CrpvInqG.js +1 -0
- package/dist/assets/panel-left-close-CVFakVaA.js +1 -0
- package/dist/assets/plus-CX_GHzXs.js +1 -0
- package/dist/assets/rotate-ccw-CWE4pOjs.js +1 -0
- package/dist/assets/save-Ctv8vW9H.js +1 -0
- package/dist/assets/schema-helpers-DvficKko.js +1 -0
- package/dist/assets/send-F-mJeL54.js +1 -0
- package/dist/assets/smartphone-EPce6VdP.js +1 -0
- package/dist/assets/trash-2-CAUF1KtI.js +1 -0
- package/dist/assets/useLocalStorage-C805uplI.js +1 -0
- package/dist/assets/useNodes-CqFlc72m.js +1 -0
- package/dist/assets/user-IFlT6mYq.js +1 -0
- package/dist/build-seed.js +495 -0
- package/dist/{dist-Dy7-HUEG.js → dist-3Xc2TTZw.js} +3189 -1394
- package/dist/index.html +34 -2
- package/dist/index.js +3116 -1315
- package/dist/schema-compiler.js +5 -5
- package/documentation/EXTENSIONS.md +204 -0
- package/extension-registry.js +5 -0
- package/package.json +13 -6
- package/schema.sql +44 -1
- package/templates/astro-starter/src/components/blocks/BlockRenderer.astro +9 -0
- package/templates/astro-starter/src/components/blocks/Form.astro +143 -0
- package/templates/astro-starter/src/components/blocks/HeaderImage.astro +6 -12
- package/templates/astro-starter/src/components/blocks/ImageBlock.astro +5 -6
- package/templates/astro-starter/src/components/blocks/NodeList.astro +274 -0
- package/templates/astro-starter/src/components/global/Breadcrumb.astro +50 -9
- package/templates/astro-starter/src/components/global/Footer.astro +7 -46
- package/templates/astro-starter/src/components/global/Header.astro +10 -16
- package/templates/astro-starter/src/components/global/NavigationMenu.astro +68 -49
- package/templates/astro-starter/src/components/ui/KamaImage.astro +13 -5
- package/templates/astro-starter/src/layouts/StandardLayout.astro +4 -3
- package/templates/astro-starter/src/lib/cms.ts +33 -11
- package/templates/astro-starter/src/lib/media/kama-image-service.ts +15 -4
- package/templates/astro-starter/src/lib/media/media-proxy.ts +22 -3
- package/templates/astro-starter/src/lib/media/media-url.ts +17 -3
- package/templates/astro-starter/src/middleware.ts +158 -100
- package/templates/astro-starter/src/pages/[...slug].astro +77 -3
- package/templates/astro-starter/src/pages/api/load-nodes.ts +68 -0
- package/templates/astro-starter/src/pages/api/partials/node-cards.astro +101 -0
- package/templates/kama-worker/index.js +38 -15
- package/templates/kama-worker/server.js +13 -5
- package/templates/kama-worker/setup-local-db.mjs +17 -0
- package/dist/assets/index-F2rfUymo.css +0 -1
- package/dist/assets/index-lXxH3VFK.js +0 -164
|
@@ -1,15 +1,24 @@
|
|
|
1
1
|
id: button
|
|
2
2
|
label: Button
|
|
3
3
|
group: Content
|
|
4
|
-
description: A customizable button link.
|
|
5
4
|
|
|
6
5
|
fields:
|
|
7
|
-
|
|
6
|
+
buttonText:
|
|
8
7
|
label: Text
|
|
9
|
-
type:
|
|
10
|
-
editor: button
|
|
8
|
+
type: text
|
|
11
9
|
public: true
|
|
12
|
-
|
|
10
|
+
default: Button
|
|
11
|
+
buttonStyle:
|
|
12
|
+
label: Style
|
|
13
|
+
type: select
|
|
14
|
+
public: true
|
|
15
|
+
position: sidebar
|
|
16
|
+
options:
|
|
17
|
+
- label: Primary
|
|
18
|
+
value: primary
|
|
19
|
+
- label: Regular
|
|
20
|
+
value: regular
|
|
21
|
+
buttonLink:
|
|
13
22
|
label: Link
|
|
14
23
|
type: link
|
|
15
24
|
position: sidebar
|
|
@@ -20,5 +29,6 @@ fields:
|
|
|
20
29
|
- file
|
|
21
30
|
- email
|
|
22
31
|
- telephone
|
|
32
|
+
|
|
23
33
|
tabs:
|
|
24
34
|
access: !include ../field-sets/access.yaml
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
id: image-gallery
|
|
2
|
+
label: Image Gallery
|
|
3
|
+
group: Media
|
|
4
|
+
|
|
5
|
+
fields:
|
|
6
|
+
columns:
|
|
7
|
+
label: Column Count
|
|
8
|
+
type: select
|
|
9
|
+
default: "2"
|
|
10
|
+
public: true
|
|
11
|
+
options:
|
|
12
|
+
- label: "1 Column (Full Width)"
|
|
13
|
+
value: "1"
|
|
14
|
+
- label: "2 Columns"
|
|
15
|
+
value: "2"
|
|
16
|
+
- label: "3 Columns"
|
|
17
|
+
value: "3"
|
|
18
|
+
- label: "4 Columns"
|
|
19
|
+
value: "4"
|
|
20
|
+
- label: "6 Columns"
|
|
21
|
+
value: "6"
|
|
22
|
+
crop:
|
|
23
|
+
label: Crop Ratio
|
|
24
|
+
images:
|
|
25
|
+
label: Gallery Images
|
|
26
|
+
type: image
|
|
27
|
+
multiple: true
|
|
28
|
+
maxSizeMB: 20
|
|
29
|
+
allowedTypes: ["image/*"]
|
|
30
|
+
public: true
|
|
31
|
+
crops:
|
|
32
|
+
standard:
|
|
33
|
+
label: "Standard Portrait (4:3)"
|
|
34
|
+
aspectRatio: 1.8
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
id: node-list
|
|
2
|
+
label: Node List
|
|
3
|
+
group: Content
|
|
4
|
+
description: Displays a dynamically filtered list of nodes (articles, events, etc.).
|
|
5
|
+
|
|
6
|
+
# 🎯 Blocks use a flat 'fields' list, no tabs/meta/hasCanvas required!
|
|
7
|
+
fields:
|
|
8
|
+
nodeType:
|
|
9
|
+
label: Content Types to Show
|
|
10
|
+
type: pills
|
|
11
|
+
public: true
|
|
12
|
+
multiple: true
|
|
13
|
+
default:
|
|
14
|
+
- article
|
|
15
|
+
options:
|
|
16
|
+
- label: Articles
|
|
17
|
+
value: article
|
|
18
|
+
- label: Events
|
|
19
|
+
value: event
|
|
20
|
+
- label: Products
|
|
21
|
+
value: product
|
|
22
|
+
- label: Addresses
|
|
23
|
+
value: address
|
|
24
|
+
- label: Persons
|
|
25
|
+
value: person
|
|
26
|
+
|
|
27
|
+
authors:
|
|
28
|
+
label: Filter by Authors
|
|
29
|
+
type: relation
|
|
30
|
+
nodeTypes: ["person"]
|
|
31
|
+
multiple: true
|
|
32
|
+
public: true
|
|
33
|
+
|
|
34
|
+
categories:
|
|
35
|
+
label: Filter by Categories
|
|
36
|
+
type: taxonomy
|
|
37
|
+
taxonomy: categories
|
|
38
|
+
multiple: true
|
|
39
|
+
public: true
|
|
40
|
+
|
|
41
|
+
tags:
|
|
42
|
+
label: Filter by Tags
|
|
43
|
+
type: taxonomy
|
|
44
|
+
taxonomy: tags
|
|
45
|
+
multiple: true
|
|
46
|
+
public: true
|
|
47
|
+
|
|
48
|
+
limit:
|
|
49
|
+
label: Number of Items to Show
|
|
50
|
+
type: number
|
|
51
|
+
default: 12
|
|
52
|
+
public: true
|
|
53
|
+
|
|
54
|
+
offset:
|
|
55
|
+
label: Skip First X Items
|
|
56
|
+
type: number
|
|
57
|
+
default: 0
|
|
58
|
+
public: true
|
|
59
|
+
|
|
60
|
+
targetPage:
|
|
61
|
+
label: Target Page for "Read More" Links
|
|
62
|
+
type: link
|
|
63
|
+
public: true
|
|
64
|
+
allowedLinkTypes:
|
|
65
|
+
- tree
|
|
66
|
+
- node
|
|
67
|
+
|
|
68
|
+
sortBy:
|
|
69
|
+
label: Sort by
|
|
70
|
+
type: node-sort
|
|
71
|
+
default: updatedAt_desc
|
|
72
|
+
public: true
|
|
73
|
+
|
|
74
|
+
tabs:
|
|
75
|
+
access: !include ../field-sets/access.yaml
|
|
@@ -12,6 +12,16 @@ fields:
|
|
|
12
12
|
position: sidebar
|
|
13
13
|
liveSync: true
|
|
14
14
|
|
|
15
|
+
notInMenu:
|
|
16
|
+
type: boolean
|
|
17
|
+
label: Not in Menu
|
|
18
|
+
default: false
|
|
19
|
+
public: true
|
|
20
|
+
inTree: true
|
|
21
|
+
variant: danger
|
|
22
|
+
dbType: integer
|
|
23
|
+
position: sidebar
|
|
24
|
+
|
|
15
25
|
startShowingAt:
|
|
16
26
|
type: datetime
|
|
17
27
|
label: Start Showing At
|
|
@@ -27,15 +27,30 @@ title:
|
|
|
27
27
|
type: text
|
|
28
28
|
dbType: text
|
|
29
29
|
public: true
|
|
30
|
+
inTree: true
|
|
30
31
|
rules:
|
|
31
32
|
required: true
|
|
32
33
|
|
|
34
|
+
disableTitleInContent:
|
|
35
|
+
label: Disable Title in Content
|
|
36
|
+
type: boolean
|
|
37
|
+
dbType: boolean
|
|
38
|
+
public: true
|
|
39
|
+
|
|
40
|
+
menuTitle:
|
|
41
|
+
label: Menu Title
|
|
42
|
+
type: text
|
|
43
|
+
inTree: true
|
|
44
|
+
public: true
|
|
45
|
+
default: ""
|
|
46
|
+
|
|
33
47
|
slug:
|
|
34
48
|
label: URL Slug
|
|
35
49
|
type: slug
|
|
36
|
-
linkedTo: title
|
|
50
|
+
linkedTo: menuTitle,title
|
|
37
51
|
dbType: text
|
|
38
52
|
public: true
|
|
53
|
+
inTree: true
|
|
39
54
|
index: true
|
|
40
55
|
rules:
|
|
41
56
|
required: true
|
|
@@ -32,6 +32,13 @@ tabs:
|
|
|
32
32
|
type: textarea
|
|
33
33
|
public: true
|
|
34
34
|
|
|
35
|
+
authors:
|
|
36
|
+
label: Authors
|
|
37
|
+
type: relation
|
|
38
|
+
nodeTypes: ["person"]
|
|
39
|
+
multiple: true
|
|
40
|
+
public: true
|
|
41
|
+
|
|
35
42
|
categories:
|
|
36
43
|
type: taxonomy
|
|
37
44
|
taxonomy: categories
|
|
@@ -44,6 +51,15 @@ tabs:
|
|
|
44
51
|
label: Tags
|
|
45
52
|
multiple: true
|
|
46
53
|
|
|
47
|
-
|
|
54
|
+
image:
|
|
55
|
+
label: Image
|
|
56
|
+
type: asset
|
|
57
|
+
required: true
|
|
58
|
+
multiple: false
|
|
59
|
+
maxSizeMB: 150
|
|
60
|
+
allowedTypes: ["image/*"]
|
|
61
|
+
public: true
|
|
62
|
+
|
|
63
|
+
meta: !include ../field-sets/page-seo.yaml
|
|
48
64
|
social: !include ../field-sets/page-social.yaml
|
|
49
65
|
access: !include ../field-sets/access.yaml
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
id: contact-form
|
|
2
|
+
title: Contact Us
|
|
3
|
+
description: General contact form for customer inquiries
|
|
4
|
+
|
|
5
|
+
settings:
|
|
6
|
+
saveToDatabase: true
|
|
7
|
+
requireTurnstile: true
|
|
8
|
+
successMessage: "Thank you for reaching out! We will get back to you shortly."
|
|
9
|
+
notifications:
|
|
10
|
+
email:
|
|
11
|
+
enabled: true
|
|
12
|
+
to: "admin@example.com"
|
|
13
|
+
subject: "New Contact Form Submission from {{fullName}}"
|
|
14
|
+
|
|
15
|
+
fields:
|
|
16
|
+
- name: fullName
|
|
17
|
+
label: Full Name
|
|
18
|
+
type: text
|
|
19
|
+
placeholder: "John Doe"
|
|
20
|
+
required: true
|
|
21
|
+
|
|
22
|
+
- name: email
|
|
23
|
+
label: Email Address
|
|
24
|
+
type: email
|
|
25
|
+
placeholder: "john@example.com"
|
|
26
|
+
required: true
|
|
27
|
+
|
|
28
|
+
- name: subject
|
|
29
|
+
label: Subject
|
|
30
|
+
type: select
|
|
31
|
+
required: true
|
|
32
|
+
options:
|
|
33
|
+
- label: General Inquiry
|
|
34
|
+
value: general
|
|
35
|
+
- label: Technical Support
|
|
36
|
+
value: support
|
|
37
|
+
- label: Sales & Billing
|
|
38
|
+
value: sales
|
|
39
|
+
|
|
40
|
+
- name: message
|
|
41
|
+
label: Message
|
|
42
|
+
type: textarea
|
|
43
|
+
placeholder: "How can we help you?"
|
|
44
|
+
required: true
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
id: subscription-form
|
|
2
|
+
title: Subscription
|
|
3
|
+
description: Newsletter subscription - form for users to sign up for updates
|
|
4
|
+
|
|
5
|
+
settings:
|
|
6
|
+
saveToDatabase: true
|
|
7
|
+
requireTurnstile: true
|
|
8
|
+
successMessage: "Thank you for subscribing! We will get back to you shortly."
|
|
9
|
+
notifications:
|
|
10
|
+
email:
|
|
11
|
+
enabled: true
|
|
12
|
+
to: "admin@example.com"
|
|
13
|
+
subject: "New Contact Form Submission from {{fullName}}"
|
|
14
|
+
|
|
15
|
+
fields:
|
|
16
|
+
- name: firstName
|
|
17
|
+
label: First Name
|
|
18
|
+
type: text
|
|
19
|
+
placeholder:
|
|
20
|
+
required: true
|
|
21
|
+
|
|
22
|
+
- name: lastName
|
|
23
|
+
label: Last Name
|
|
24
|
+
type: text
|
|
25
|
+
placeholder:
|
|
26
|
+
required: true
|
|
27
|
+
|
|
28
|
+
- name: email
|
|
29
|
+
label: Email Address
|
|
30
|
+
type: email
|
|
31
|
+
placeholder: "john@example.com"
|
|
32
|
+
required: true
|
|
@@ -1,9 +1,22 @@
|
|
|
1
1
|
import StarterKit from "@tiptap/starter-kit";
|
|
2
|
+
import { Table } from "@tiptap/extension-table";
|
|
3
|
+
import { TableRow } from "@tiptap/extension-table-row";
|
|
4
|
+
import { TableCell } from "@tiptap/extension-table-cell";
|
|
5
|
+
import { TableHeader } from "@tiptap/extension-table-header";
|
|
2
6
|
import type { RteProfile } from "../../utils/rteProfiles";
|
|
3
7
|
import Link from "../../src/utils/CmsLink";
|
|
4
8
|
|
|
5
9
|
export const profile: RteProfile = {
|
|
6
|
-
extensions: [
|
|
10
|
+
extensions: [
|
|
11
|
+
StarterKit,
|
|
12
|
+
Link.configure({ openOnClick: false }),
|
|
13
|
+
Table.configure({
|
|
14
|
+
resizable: true,
|
|
15
|
+
}),
|
|
16
|
+
TableRow,
|
|
17
|
+
TableHeader,
|
|
18
|
+
TableCell,
|
|
19
|
+
],
|
|
7
20
|
toolbar: [
|
|
8
21
|
"heading-1",
|
|
9
22
|
"heading-2",
|
|
@@ -17,6 +30,7 @@ export const profile: RteProfile = {
|
|
|
17
30
|
"link",
|
|
18
31
|
"superscript",
|
|
19
32
|
"subscript",
|
|
33
|
+
"table",
|
|
20
34
|
"split",
|
|
21
35
|
],
|
|
22
36
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{$ as e,B as t,E as n,Et as r,I as i,K as a,O as o,R as s,S as c,St as ee,T as l,Y as u,b as d,f,g as p,j as m,lt as h,o as g,q as _,t as v,tt as y,v as b,x,y as S}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{a as ie,i as ae,n as oe,o as se,r as ce,t as C}from"./CmsImagePreview-DuHPBzml.js";import{n as w,t as le}from"./NodeContextMenu-C_HWBGeb.js";import{n as ue,t as T}from"./trash-2-CAUF1KtI.js";import{t as de}from"./layers-B6RgfpPR.js";import{t as fe}from"./panel-left-close-CVFakVaA.js";import{t as pe}from"./save-Ctv8vW9H.js";import{t as E}from"./CmsButton-CbOfxvjr.js";import{t as D}from"./CmsDataRow--H4iI_u_.js";import{t as O}from"./CmsBadge-D0Ob9qPU.js";import{t as me}from"./CmsFieldTaxonomy-C_AwHDwY.js";m(),h(),u(),g();var he={class:`asset-editor-wrapper canvas`},k={class:`entity-header`},A={class:`top-row`},j={class:`node-info`},M={class:`dynamic-title-group`},N={class:`inline-title-input`},P={key:0},F={key:1},I={class:`meta-row`},L={key:0,class:`slug-badge`},R={class:`actions-group`},ge={class:`btn-text`},_e={class:`editor-body`},ve={key:0,class:`loading-state`},ye={key:1,class:`asset-content-scroll`},be={class:`main-preview-section`},xe={key:1,class:`doc-preview`},Se={class:`preview-footer`},Ce=[`href`],we={class:`data-column`},Te={class:`data-header`},Ee={class:`data-content`},De={class:`form-group`},Oe={class:`form-group`},ke={class:`form-group`},Ae={class:`form-group`},je={class:`usage-and-crops-section`},Me={class:`usage-section-container`},Ne={class:`gallery-header-row`},Pe={key:0,class:`usage-empty standalone-empty`},Fe={key:1,class:`list-container`},Ie={class:`node-title`},Le={class:`meta-stack`},Re={class:`node-field`},ze={key:0,class:`crop-showcase`},Be={class:`crop-name`},Ve={key:0,class:`usage-section-container`,style:{"margin-top":`40px`}},He={class:`gallery-header-row`},Ue={class:`list-container`},We={class:`meta-stack`},Ge={class:`node-field`},Ke={key:0,class:`crop-showcase`},qe={class:`crop-item`},Je={class:`crop-name`},Ye=[`onClick`],z=v(o({__name:`AssetEditor`,props:{assetId:{}},setup(o){let u=o,{activeView:m,nodeSchemas:h}=re(),{confirmDiscard:g}=ne(),{navigateToNodeById:v}=te(),z=e(null),B=e(!0),V=e(!1),H=e({filename:``,title:``,alt:``,tags:[]}),U=e({filename:``,title:``,alt:``,tags:[]}),W=e(!1),G=e(null),K=e(null),Xe=()=>{if(W.value){W.value=!1;return}G.value&&(K.value=G.value.getBoundingClientRect()),W.value=!0},Ze=b(()=>{let e=[{key:`copy-url`,label:`Copy Public URL`,icon:se},{key:`open-tab`,label:`Open in New Tab`,icon:w}];return z.value&&z.value.connectedNodes?.length>0&&(e.push({key:`div-nodes`,label:``,divider:!0}),e.push({key:`show-nodes`,label:`Connected Nodes (${z.value.connectedNodes.length})`,icon:oe})),e.push({key:`div-1`,label:``,divider:!0},{key:`delete`,label:`Delete Asset`,icon:T}),e}),Qe=async e=>{W.value=!1,z.value&&(e===`copy-url`&&z.value.url?await navigator.clipboard.writeText(z.value.url):e===`open-tab`&&z.value.url?window.open(z.value.url,`_blank`):e===`delete`?await g(`Are you sure you want to delete "${z.value.filename||`this asset`}"?`,`Delete Asset?`,`Delete`,`Cancel`)&&await $e():e===`show-nodes`&&Y())},$e=async()=>{try{(await fetch(`/api/admin/assets/${u.assetId}`,{method:`DELETE`})).ok&&(window.dispatchEvent(new CustomEvent(`cms-assets-updated`)),m.value={type:`dashboard`})}catch{}},et=b(()=>H.value.filename!==U.value.filename||H.value.title!==U.value.title||H.value.alt!==U.value.alt||JSON.stringify(H.value.tags)!==JSON.stringify(U.value.tags)),q=async()=>{B.value=!0;try{let e=await fetch(`/api/admin/assets/${u.assetId}/details`);if(e.ok){let t=await e.json();z.value=t;let n={filename:t.filename||``,title:t.title||``,alt:t.alt||``,tags:t.tags||[]};H.value={...n},U.value={...n}}}catch{}finally{B.value=!1}},tt=async()=>{V.value=!0;try{(await fetch(`/api/admin/assets/${u.assetId}`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(H.value)})).ok&&(U.value=JSON.parse(JSON.stringify(H.value)),window.dispatchEvent(new CustomEvent(`cms-assets-updated`)))}catch{}finally{V.value=!1}},nt=async e=>{let t=`Permanently delete orphaned crop "${z.value?.variants?.find(t=>String(t.id)===String(e))?.filename||`variant`}"?`;if(await g(t,`Delete Crop`,`Delete`,`Cancel`))try{(await fetch(`/api/admin/assets/purge/${e}`,{method:`DELETE`})).ok&&(z.value?.variants&&(z.value.variants=z.value.variants.filter(t=>String(t.id)!==String(e))),window.dispatchEvent(new CustomEvent(`cms-assets-updated`)),await q())}catch{}},J=async()=>{let e=$.value;if(e.length===0)return;let t=`Are you sure you want to permanently delete all ${e.length} orphaned crops?`;if(await g(t,`Purge All Orphaned Crops`,`Purge All`,`Cancel`))try{for(let t of e)await fetch(`/api/admin/assets/purge/${t.id}`,{method:`DELETE`});window.dispatchEvent(new CustomEvent(`cms-assets-updated`)),await q()}catch(e){console.error(`Failed to purge crops`,e)}},rt=e=>{m.value={type:`node`},v(String(e)),window.dispatchEvent(new CustomEvent(`cms-switch-sidebar-tab`,{detail:`vault`}))},Y=()=>{sessionStorage.setItem(`cms-vault-asset-filter`,u.assetId),window.dispatchEvent(new CustomEvent(`cms-filter-vault-by-asset`,{detail:u.assetId})),window.dispatchEvent(new CustomEvent(`cms-switch-sidebar-tab`,{detail:`vault`}))},X=b(()=>z.value&&(z.value.mimeType?.startsWith(`image/`)||/\.(jpg|jpeg|png|webp|gif|svg)$/i.test(z.value.filename))),Z=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]},it=(e,t)=>{if(!t||t===`Original`||t===`Unknown Crop`)return t||`Original Image`;try{let n=h.value[e];if(!n)return t;let r=null,i=e=>{if(!(!e||r))for(let n of Object.values(e))n.crop&&t===`standard`&&n.crop.label&&(r=n.crop.label),n.crops&&n.crops[t]&&n.crops[t].label&&(r=n.crops[t].label)};return i(n.fields),n.tabs&&Object.values(n.tabs).forEach(e=>i(e.fields)),r||t}catch{return t}},Q=b(()=>{if(!z.value||!z.value.connectedNodes)return[];let e=new Map;for(let t of z.value.connectedNodes){let n=String(t.id),r=t.contentType||t.nodeType,i=t.fieldKey?.split(`.`)[0]||`Content Area`,a=t.fieldKey?.match(/^blocks\[(\d+)\]/);a&&(i=`Block ${parseInt(a[1],10)+1}`);let o=String(t.assetId)!==String(z.value.id),s=null;if(o){let e=z.value.variants?.find(e=>String(e.id)===String(t.assetId));if(e){let n=`Unknown Crop`,i=t.fieldKey?.match(/\.variants\.([^.]+)/);if(i)n=i[1];else{let t=e.filename?.match(/^(.+?)_ast_/);t&&(n=t[1])}s={id:e.id,url:e.url,label:it(r,n)}}}else s={id:z.value.id,url:z.value.url,label:`Original Image`};if(!e.has(n))e.set(n,{id:t.id,title:t.title,nodeType:r,fieldKeys:new Set([i]),usedAssets:s?[s]:[]});else{let t=e.get(n);t.fieldKeys.add(i),s&&!t.usedAssets.some(e=>e.id===s.id)&&t.usedAssets.push(s)}}return Array.from(e.values()).map(e=>({...e,fieldKey:Array.from(e.fieldKeys).join(`, `)}))}),$=b(()=>{if(!z.value||!z.value.variants)return[];let e=new Set(z.value.connectedNodes?.map(e=>String(e.assetId))||[]);return z.value.variants.filter(t=>!e.has(String(t.id)))}),at=e=>{let t=e?.match(/^(.+?)_ast_/);return t?t[1]:`Unknown Crop`};return i(()=>q()),(e,i)=>(s(),c(`div`,he,[S(`header`,k,[S(`div`,A,[S(`div`,j,[S(`div`,M,[S(`span`,N,[z.value?(s(),c(`span`,P,r(z.value.filename),1)):(s(),c(`span`,F,`Loading Asset...`))])]),S(`div`,I,[z.value?(s(),c(`span`,L,r(Z(z.value.sizeBytes))+` • `+r(z.value.mimeType),1)):x(``,!0)])]),S(`div`,R,[z.value?(s(),c(`div`,{key:0,class:`context-wrapper`,ref_key:`contextTriggerRef`,ref:G},[n(E,{variant:`secondary`,title:`More Options`,onClick:Xe,disabled:V.value,class:`transparent-btn icon-only-btn`},{default:a(()=>[n(y(ae),{size:16})]),_:1},8,[`disabled`]),n(le,{show:W.value,items:Ze.value,"anchor-rect":K.value,onSelect:Qe,onClose:i[0]||=e=>W.value=!1},null,8,[`show`,`items`,`anchor-rect`])],512)):x(``,!0),n(E,{variant:`primary`,class:`save-btn`,disabled:V.value||!et.value,onClick:tt},{default:a(()=>[n(y(pe),{size:14,class:`save-icon`}),S(`span`,ge,r(V.value?`Saving...`:`Save Metadata`),1)]),_:1},8,[`disabled`])])])]),S(`div`,_e,[B.value?(s(),c(`div`,ve,`Loading asset details...`)):z.value?(s(),c(`div`,ye,[S(`div`,be,[S(`div`,{class:ee([`preview-container`,{"is-doc":!X.value}])},[X.value?(s(),d(C,{key:0,url:z.value.url,alt:z.value.alt||z.value.filename,width:1200,quality:85,class:`main-preview-wrapper`},null,8,[`url`,`alt`])):(s(),c(`div`,xe,[n(y(ue),{size:64}),i[5]||=S(`span`,null,`Preview not available for this file type`,-1)]))],2),S(`div`,Se,[S(`span`,null,`Original Upload: `+r(new Date(z.value.createdAt).toLocaleString()),1),S(`a`,{href:z.value.url,target:`_blank`,class:`ext-link`},[i[6]||=l(`Open original file `,-1),n(y(w),{size:12})],8,Ce)])]),S(`div`,we,[S(`div`,Te,[S(`h3`,null,[n(y(ce),{size:14,class:`inline-icon`}),i[7]||=l(` Metadata `,-1)])]),S(`div`,Ee,[S(`div`,De,[i[8]||=S(`label`,null,`Filename`,-1),_(S(`input`,{"onUpdate:modelValue":i[1]||=e=>H.value.filename=e,type:`text`,class:`cms-input`},null,512),[[f,H.value.filename]]),i[9]||=S(`span`,{class:`help-text`},`Changing this does not break the permanent CDN link.`,-1)]),S(`div`,Oe,[i[10]||=S(`label`,null,`Media Tags`,-1),n(me,{modelValue:H.value.tags,"onUpdate:modelValue":i[2]||=e=>H.value.tags=e,fieldKey:`media-tag`,config:{taxonomy:`media-tag`,multiple:!0}},null,8,[`modelValue`]),i[11]||=S(`span`,{class:`help-text`},`Used to organize and filter assets in the media library.`,-1)]),S(`div`,ke,[i[12]||=S(`label`,null,`Title (Internal/SEO)`,-1),_(S(`input`,{"onUpdate:modelValue":i[3]||=e=>H.value.title=e,type:`text`,class:`cms-input`},null,512),[[f,H.value.title]])]),S(`div`,Ae,[i[13]||=S(`label`,null,`Alt Text (Accessibility)`,-1),_(S(`textarea`,{"onUpdate:modelValue":i[4]||=e=>H.value.alt=e,class:`cms-input cms-textarea`},null,512),[[f,H.value.alt]])])])]),S(`div`,je,[S(`div`,Me,[S(`div`,Ne,[S(`h3`,null,[n(y(de),{size:16,class:`inline-icon`}),i[14]||=l(` Node Usage `,-1)]),Q.value.length>0?(s(),c(`button`,{key:0,class:`action-btn outline`,onClick:Y,title:`Show these nodes in the left Vault pane`},[n(y(fe),{size:13}),i[15]||=l(` Vault Filter `,-1)])):x(``,!0)]),Q.value.length===0?(s(),c(`div`,Pe,[...i[16]||=[S(`span`,{class:`status-dot warning`},null,-1),S(`span`,null,`Asset is not currently used on any nodes.`,-1)]])):(s(),c(`div`,Fe,[(s(!0),c(p,null,t(Q.value,e=>(s(),d(D,{key:e.id,clickable:``,onClick:t=>rt(e.id)},{title:a(()=>[i[17]||=S(`span`,{class:`status-dot success`},null,-1),S(`span`,Ie,r(e.title||`Untitled`),1),n(O,{variant:`type`},{default:a(()=>[l(r(e.nodeType||`page`),1)]),_:2},1024)]),meta:a(()=>[S(`div`,Le,[S(`span`,Re,`Used in field: `+r(e.fieldKey),1),X.value?(s(),c(`div`,ze,[(s(!0),c(p,null,t(e.usedAssets,e=>(s(),c(`div`,{key:e.id,class:`crop-item`},[n(C,{url:e.url,alt:e.label,width:200,quality:75,class:`crop-img-fixed-height`},null,8,[`url`,`alt`]),S(`span`,Be,r(e.label),1)]))),128))])):x(``,!0)])]),_:2},1032,[`onClick`]))),128))]))]),$.value.length>0?(s(),c(`div`,Ve,[S(`div`,He,[S(`h3`,null,[n(y(ie),{size:16,class:`inline-icon`}),l(` Orphaned Crops (`+r($.value.length)+`) `,1)]),S(`button`,{class:`action-btn outline text-danger`,onClick:J},[n(y(T),{size:13}),i[18]||=l(` Purge All `,-1)])]),i[21]||=S(`p`,{class:`gallery-desc`},`These crops were generated previously but are no longer attached to any nodes. You can safely delete them to save storage space.`,-1),S(`div`,Ue,[(s(!0),c(p,null,t($.value,e=>(s(),d(D,{key:e.id},{title:a(()=>[i[19]||=S(`span`,{class:`node-title`},`Orphaned Crop`,-1),n(O,{variant:`type`},{default:a(()=>[l(r(Z(e.sizeBytes)),1)]),_:2},1024)]),meta:a(()=>[S(`div`,We,[S(`span`,Ge,`Generated: `+r(new Date(e.createdAt).toLocaleDateString()),1),X.value?(s(),c(`div`,Ke,[S(`div`,qe,[n(C,{url:e.url,alt:e.filename,width:200,quality:75,class:`crop-img-fixed-height`},null,8,[`url`,`alt`]),S(`span`,Je,r(at(e.filename)),1)])])):x(``,!0)])]),actions:a(()=>[S(`button`,{class:`action-btn outline text-danger`,style:{border:`none`},onClick:t=>nt(e.id)},[n(y(T),{size:13}),i[20]||=l(` Purge `,-1)],8,Ye)]),_:2},1024))),128))])])):x(``,!0)])])):x(``,!0)])]))}}),[[`__scopeId`,`data-v-ee6004e3`]]);export{z as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.canvas[data-v-ee6004e3]{background:var(--cms-color-surface);font-family:var(--cms-font-sans);flex-direction:column;flex-grow:1;height:100%;display:flex;position:relative}.entity-header[data-v-ee6004e3]{z-index:100;background:var(--cms-color-bg);border-bottom:1px solid var(--cms-color-border);flex-direction:column;flex-shrink:0;display:flex;position:sticky;top:0;container-type:inline-size}@container (width<=690px){.save-btn .btn-text[data-v-ee6004e3],.slug-badge[data-v-ee6004e3]{display:none}}.top-row[data-v-ee6004e3]{justify-content:space-between;align-items:center;padding:10px 20px;display:flex}.node-info[data-v-ee6004e3]{flex-direction:column;align-items:flex-start;gap:4px;display:flex}.dynamic-title-group[data-v-ee6004e3]{flex-wrap:wrap;align-items:center;gap:18px;display:flex}.inline-title-input[data-v-ee6004e3]{color:var(--cms-color-text-main);border-radius:var(--cms-radius-sm);cursor:default;background:0 0;border:1px solid #0000;margin:0 0 0 -6px;padding:4px 6px;font-size:17px;font-weight:700;display:inline-block}.meta-row[data-v-ee6004e3]{align-items:center;gap:6px;display:flex}.slug-badge[data-v-ee6004e3]{font-size:13px;font-family:var(--cms-font-mono);color:var(--cms-color-text-muted)}.actions-group[data-v-ee6004e3]{align-items:center;gap:10px;display:flex}[data-v-ee6004e3] .icon-only-btn{padding:0 8px!important}.context-wrapper[data-v-ee6004e3]{display:flex;position:relative}.save-btn[data-v-ee6004e3]{align-items:center;gap:6px;display:flex}.save-icon[data-v-ee6004e3]{margin-top:-1px}.transparent-btn[data-v-ee6004e3]{background:0 0;border-color:#0000}.transparent-btn[data-v-ee6004e3]:hover{background:var(--cms-color-surface-hover);border-color:#0000!important}.editor-body[data-v-ee6004e3]{flex:1;display:flex;position:relative;overflow:hidden;container:asseteditor/inline-size}.loading-state[data-v-ee6004e3]{color:var(--cms-color-text-muted);flex:1;justify-content:center;align-items:center;display:flex}.asset-content-scroll[data-v-ee6004e3]{background:var(--cms-color-surface);grid-template:"preview metadata""usage metadata"1fr/1fr 320px;width:100%;height:100%;display:grid;overflow-y:auto}.main-preview-section[data-v-ee6004e3]{padding:var(--cms-page-padding,24px) var(--cms-page-padding,24px) 0 var(--cms-page-padding,24px);background:var(--cms-color-surface);grid-area:preview}.preview-container[data-v-ee6004e3]{border-radius:var(--cms-radius-lg);border:1px solid var(--cms-color-border);background:var(--cms-color-bg);justify-content:center;align-items:center;width:100%;min-height:100px;padding:24px;display:flex}.main-preview-wrapper[data-v-ee6004e3]{width:auto;max-width:100%;height:auto;max-height:480px}.main-preview-wrapper[data-v-ee6004e3] .preview-img{object-fit:contain!important;width:auto!important;height:auto!important;max-height:480px!important}.doc-preview[data-v-ee6004e3]{color:var(--cms-color-text-muted);flex-direction:column;align-items:center;gap:12px;display:flex}.preview-footer[data-v-ee6004e3]{color:var(--cms-color-text-muted);justify-content:space-between;margin-top:12px;margin-bottom:24px;font-size:12px;display:flex}.ext-link[data-v-ee6004e3]{color:var(--cms-color-primary);align-items:center;gap:4px;text-decoration:none;display:inline-flex}.ext-link[data-v-ee6004e3]:hover{text-decoration:underline}.data-column[data-v-ee6004e3]{background:var(--cms-color-surface);border-left:1px solid var(--cms-color-border);flex-direction:column;grid-area:metadata;display:flex}.data-header[data-v-ee6004e3]{border-bottom:1px solid var(--cms-color-border);background:var(--cms-color-surface);flex-shrink:0;align-items:center;padding:16px 24px;display:flex}.data-header h3[data-v-ee6004e3]{color:var(--cms-color-text-main);align-items:center;gap:6px;margin:0;font-size:14px;display:flex}.data-content[data-v-ee6004e3]{flex-direction:column;gap:20px;padding:24px;display:flex}.form-group[data-v-ee6004e3]{flex-direction:column;gap:6px;display:flex}.form-group label[data-v-ee6004e3]{color:var(--cms-color-text-main);font-size:12px;font-weight:600}.cms-input[data-v-ee6004e3]{border:1px solid var(--cms-color-border);border-radius:var(--cms-radius-sm);background:var(--cms-color-bg);width:100%;color:var(--cms-color-text-main);outline:none;padding:10px;font-size:13px}.cms-input[data-v-ee6004e3]:focus{border-color:var(--cms-color-primary)}.cms-textarea[data-v-ee6004e3]{resize:vertical;min-height:80px}.help-text[data-v-ee6004e3]{color:var(--cms-color-text-faint);font-size:11px}.usage-and-crops-section[data-v-ee6004e3]{padding:0 var(--cms-page-padding,24px) 40px var(--cms-page-padding,24px);background:var(--cms-color-surface);grid-area:usage}.usage-section-container[data-v-ee6004e3]{flex-direction:column;width:100%;max-width:900px;margin:0 auto;display:flex}.gallery-header-row[data-v-ee6004e3]{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:8px;display:flex}.gallery-header-row h3[data-v-ee6004e3]{color:var(--cms-color-text-main);align-items:center;gap:8px;margin:0;font-size:16px;display:flex}.gallery-desc[data-v-ee6004e3]{color:var(--cms-color-text-muted);margin:0 0 16px;font-size:13px}.action-btn.outline[data-v-ee6004e3]{border:1px solid var(--cms-color-border);background:var(--cms-color-surface);border-radius:var(--cms-radius-sm);cursor:pointer;align-items:center;gap:4px;padding:6px 10px;font-size:12px;font-weight:600;display:inline-flex}.action-btn.outline[data-v-ee6004e3]:hover{background:var(--cms-color-surface-hover)}.list-container[data-v-ee6004e3]{background:var(--cms-color-surface);border:1px solid var(--cms-color-border);border-radius:var(--cms-radius-lg);overflow:hidden}.meta-stack[data-v-ee6004e3]{flex-direction:column;gap:8px;width:100%;display:flex}.crop-showcase[data-v-ee6004e3]{flex-wrap:wrap;align-items:flex-end;gap:16px;width:100%;display:flex}.crop-item[data-v-ee6004e3]{flex-direction:column;align-items:flex-start;gap:6px;display:flex}.crop-img-fixed-height[data-v-ee6004e3]{border-radius:var(--cms-radius-xs);border:1px solid var(--cms-color-border-dark);background:var(--cms-color-surface-hover);justify-content:center;align-items:center;width:auto;height:56px;display:flex;overflow:hidden}.crop-img-fixed-height[data-v-ee6004e3] .preview-img{object-fit:contain;display:block;width:auto!important;height:100%!important}.crop-name[data-v-ee6004e3]{font-size:10px;font-weight:600;font-family:var(--cms-font-mono);color:var(--cms-color-text-subtle);text-transform:uppercase;letter-spacing:.04em}.standalone-empty[data-v-ee6004e3]{background:var(--cms-color-bg);border:1px dashed var(--cms-color-border-dark);border-radius:var(--cms-radius-md);margin-bottom:8px;padding:12px 16px}.usage-empty[data-v-ee6004e3]{color:var(--cms-color-text-muted);align-items:center;gap:8px;font-size:12px;display:flex}.status-dot[data-v-ee6004e3]{border-radius:50%;flex-shrink:0;width:6px;height:6px}.status-dot.success[data-v-ee6004e3]{background:var(--cms-color-success,#10b981)}.status-dot.warning[data-v-ee6004e3]{background:var(--cms-color-warning,#f59e0b)}.node-title[data-v-ee6004e3]{color:var(--cms-color-text-main);font-size:13.5px;font-weight:600}.node-field[data-v-ee6004e3]{color:var(--cms-color-text-muted);font-size:11.5px}.text-danger[data-v-ee6004e3]{color:var(--cms-color-danger)!important}@container (width<=820px){.asset-content-scroll[data-v-ee6004e3]{grid-template:"preview""metadata""usage"/1fr}.data-column[data-v-ee6004e3]{border-left:none;border-top:1px solid var(--cms-color-border);border-bottom:1px solid var(--cms-color-border);margin-bottom:24px}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.cms-badge[data-v-a1e8e7f0]{border-radius:var(--cms-radius-xs);white-space:nowrap;font-size:11px;font-weight:500;line-height:1.2;font-family:var(--cms-font-sans);border:1px solid #0000;flex-shrink:0;align-items:center;gap:4px;padding:2px 7px;display:inline-flex}.variant-default[data-v-a1e8e7f0]{background:var(--cms-color-surface-hover);color:var(--cms-color-text-muted);border-color:var(--cms-color-border)}.variant-type[data-v-a1e8e7f0]{text-transform:uppercase;color:var(--cms-color-text-faint);background:var(--cms-color-bg);border-color:var(--cms-color-border);font-size:9.5px;font-weight:700}.variant-slug[data-v-a1e8e7f0]{font-family:var(--cms-font-mono);color:var(--cms-color-text-muted);background:0 0;border:none;padding:0;font-size:12px;font-weight:400}.variant-channel[data-v-a1e8e7f0]{color:#2563eb;background:#3b82f614;border-color:#3b82f633}.variant-tree[data-v-a1e8e7f0]{color:#059669;background:#10b98114;border-color:#10b98133}.variant-node[data-v-a1e8e7f0]{color:#7c3aed;background:#8b5cf614;border-color:#8b5cf633}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{O as e,R as t,S as n,St as r,V as i,j as a,lt as o,t as s}from"./_plugin-vue_export-helper-CQxWhVtr.js";a(),o();var c=s(e({__name:`CmsBadge`,props:{variant:{}},setup(e){return(a,o)=>(t(),n(`span`,{class:r([`cms-badge`,[`variant-${e.variant||`default`}`]])},[i(a.$slots,`default`,{},void 0,!0)],2))}}),[[`__scopeId`,`data-v-a1e8e7f0`]]);export{c as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.cms-btn[data-v-371ae993]{font-family:var(--cms-font-sans);border-radius:var(--cms-radius-sm);cursor:pointer;white-space:nowrap;-webkit-user-select:none;user-select:none;transition:all var(--cms-transition-fast);border:1px solid #0000;outline:none;justify-content:center;align-items:center;gap:6px;font-weight:550;display:inline-flex}.cms-btn[data-v-371ae993]:active:not(:disabled){transform:scale(.97)}.cms-btn[data-v-371ae993]:disabled{opacity:.55;cursor:not-allowed;box-shadow:none;transform:none!important}.btn-sm[data-v-371ae993]{height:28px;padding:0 10px;font-size:11px}.btn-md[data-v-371ae993]{height:32px;padding:0 14px;font-size:12px}.btn-primary[data-v-371ae993]{background-color:var(--cms-color-primary);color:#fff;border-color:#0000001a}.btn-primary[data-v-371ae993]:hover:not(:disabled){background-color:var(--cms-color-primary-hover)}.btn-secondary[data-v-371ae993]{background-color:var(--cms-color-surface);color:var(--cms-color-text-main);border-color:var(--cms-color-border-dark)}.btn-secondary[data-v-371ae993]:hover:not(:disabled){background-color:var(--cms-color-surface-hover);border-color:var(--cms-color-border-input);color:var(--cms-color-text-main)}.btn-ghost[data-v-371ae993]{color:var(--cms-color-text-muted);box-shadow:none;background-color:#0000;border-color:#0000}.btn-ghost[data-v-371ae993]:hover:not(:disabled){background-color:var(--cms-color-surface-hover);color:var(--cms-color-text-main)}.btn-danger[data-v-371ae993]{background-color:var(--cms-color-danger-light);color:var(--cms-color-danger);border-color:var(--cms-color-danger-border)}.btn-danger[data-v-371ae993]:hover:not(:disabled){background-color:var(--cms-color-danger);color:#fff;border-color:var(--cms-color-danger-hover)}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{O as e,R as t,S as n,St as r,V as i,j as a,lt as o,t as s}from"./_plugin-vue_export-helper-CQxWhVtr.js";a(),o();var c=[`disabled`],l=s(e({__name:`CmsButton`,props:{variant:{},size:{},disabled:{type:Boolean}},setup(e){return(a,o)=>(t(),n(`button`,{class:r([`cms-btn`,`btn-${e.variant||`primary`}`,e.size===`sm`?`btn-sm`:`btn-md`]),disabled:e.disabled},[i(a.$slots,`default`,{},void 0,!0)],10,c))}}),[[`__scopeId`,`data-v-371ae993`]]);export{l as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{O as e,R as t,S as n,St as r,V as i,h as a,j as o,lt as s,o as c,t as l,x as u,y as d}from"./_plugin-vue_export-helper-CQxWhVtr.js";o(),c(),s();var f={class:`row-main`},p={key:0,class:`row-title-group`},m={key:1,class:`row-meta-group`},h=l(e({__name:`CmsDataRow`,props:{isSelected:{type:Boolean},clickable:{type:Boolean}},setup(e){return(o,s)=>(t(),n(`div`,{class:r([`cms-data-row`,{"is-selected":e.isSelected,"is-clickable":e.clickable}]),onClick:s[2]||=e=>o.$emit(`click`)},[o.$slots.prefix?(t(),n(`div`,{key:0,class:`row-prefix`,onClick:s[0]||=a(()=>{},[`stop`])},[i(o.$slots,`prefix`,{},void 0,!0)])):u(``,!0),d(`div`,f,[o.$slots.title?(t(),n(`div`,p,[i(o.$slots,`title`,{},void 0,!0)])):u(``,!0),o.$slots.meta?(t(),n(`div`,m,[i(o.$slots,`meta`,{},void 0,!0)])):u(``,!0)]),o.$slots.actions?(t(),n(`div`,{key:1,class:`row-actions`,onClick:s[1]||=a(()=>{},[`stop`])},[i(o.$slots,`actions`,{},void 0,!0)])):u(``,!0)],2))}}),[[`__scopeId`,`data-v-dba1b464`]]);export{h as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.cms-data-row[data-v-dba1b464]{border-bottom:1px solid var(--cms-color-border-dark);background:var(--cms-color-surface);transition:background-color var(--cms-transition-fast);align-items:center;gap:16px;padding:12px 16px;display:flex}.cms-data-row.is-clickable[data-v-dba1b464]{cursor:pointer}.cms-data-row[data-v-dba1b464]:last-child{border-bottom:none}.cms-data-row.is-clickable[data-v-dba1b464]:hover{background:var(--cms-color-surface-hover)}.cms-data-row.is-selected[data-v-dba1b464]{background:var(--cms-color-primary-light,#f0fdf4)}.row-prefix[data-v-dba1b464]{flex-shrink:0;align-items:center;display:flex}.row-main[data-v-dba1b464]{flex-direction:column;flex:1;gap:6px;min-width:0;display:flex}.row-title-group[data-v-dba1b464],.row-meta-group[data-v-dba1b464]{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.row-actions[data-v-dba1b464]{flex-shrink:0;justify-content:flex-end;align-items:center;gap:12px;display:flex}@media (width<=768px){.cms-data-row[data-v-dba1b464]{align-items:flex-start;padding:16px}.row-actions[data-v-dba1b464]{flex-direction:row;justify-content:flex-start;align-self:flex-start;margin-top:4px}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.cms-field-taxonomy[data-v-1a55cb97]{width:100%}.loading-state[data-v-1a55cb97],.empty-state[data-v-1a55cb97]{font-family:var(--cms-font-sans);color:var(--cms-color-text-muted);align-items:center;gap:6px;padding:6px 0;font-size:13px;display:flex}.spinner[data-v-1a55cb97]{animation:1s linear infinite spin-1a55cb97}@keyframes spin-1a55cb97{to{transform:rotate(360deg)}}.taxonomy-pills[data-v-1a55cb97]{flex-wrap:wrap;gap:8px;display:flex}.tax-pill[data-v-1a55cb97]{font-family:var(--cms-font-sans);border:1px solid var(--cms-color-border-dark);border-radius:var(--cms-radius-full,9999px);background:var(--cms-color-surface);color:var(--cms-color-text-main);cursor:pointer;transition:all var(--cms-transition-fast);outline:none;padding:5px 12px;font-size:13px}.tax-pill[data-v-1a55cb97]:hover:not(:disabled){border-color:var(--cms-color-primary-hover);color:var(--cms-color-primary-hover)}.tax-pill.is-active[data-v-1a55cb97]{background:var(--cms-color-primary);color:#fff;border-color:var(--cms-color-primary)}.tax-pill[data-v-1a55cb97]:disabled{opacity:.6;cursor:not-allowed}.taxonomy-select[data-v-1a55cb97]{border:1px solid var(--cms-color-border-dark);border-radius:var(--cms-radius-sm);box-sizing:border-box;width:100%;font-family:var(--cms-font-sans);color:var(--cms-color-text-main);background:var(--cms-color-surface);transition:all var(--cms-transition-fast);outline:none;padding:8.5px 11px;font-size:14px}.taxonomy-select[data-v-1a55cb97]:focus:not(:disabled){border-color:var(--cms-color-primary)}.is-invalid .taxonomy-select[data-v-1a55cb97]{border-color:var(--cms-color-danger,#ef4444)!important}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{B as e,E as t,Et as n,I as r,O as i,R as a,S as o,St as s,T as c,Y as l,g as u,h as d,j as f,lt as p,o as m,t as h,tt as g,v as _,y as v}from"./_plugin-vue_export-helper-CQxWhVtr.js";import{s as y}from"./useNodes-CqFlc72m.js";import{t as b}from"./loader-circle-BoUkhDjq.js";f(),l(),p(),m();var x={key:0,class:`loading-state`},S={key:1,class:`empty-state`},C={key:2,class:`taxonomy-pills`},w=[`disabled`,`onClick`],T=[`disabled`,`value`],E={value:``,disabled:``},D=[`value`],O=h(i({__name:`CmsFieldTaxonomy`,props:{modelValue:{},fieldKey:{},config:{},disabled:{type:Boolean},invalid:{type:Boolean}},emits:[`update:modelValue`],setup(i,{emit:l}){let f=i,p=l,{termsMap:m,fetchTerms:h,isLoading:O}=y(),k=_(()=>f.config.taxonomy||f.config.taxonomyKey||f.fieldKey),A=_(()=>{let e=k.value;return!e||!m.value||!m.value[e]?[]:m.value[e]}),j=_(()=>f.modelValue?(Array.isArray(f.modelValue)?f.modelValue:[f.modelValue]).map(e=>{let t=``;return t=typeof e==`string`?e:typeof e==`object`&&e&&e.id?String(e.id):String(e),t.startsWith(`trm_`)&&(t=t.replace(`trm_`,``)),parseInt(t,10)}).filter(e=>!isNaN(e)):[]),M=_(()=>f.config.multiple===!0);r(async()=>{let e=k.value;e&&(!m.value||!m.value[e])&&await h(e)});let N=e=>{if(!f.disabled){if(M.value){let t=[...j.value],n=t.indexOf(e);n>=0?t.splice(n,1):t.push(e),p(`update:modelValue`,t.map(e=>`trm_${e}`))}else p(`update:modelValue`,`trm_${e}`)}},P=e=>e.label||e.title||e.name||`Term #${e.id}`;return(r,l)=>(a(),o(`div`,{class:s([`cms-field-taxonomy`,{"is-invalid":i.invalid,"is-disabled":i.disabled}])},[g(O)&&A.value.length===0?(a(),o(`div`,x,[t(g(b),{size:14,class:`spinner`}),c(` Loading `+n(i.config.taxonomy||i.fieldKey)+`... `,1)])):A.value.length===0?(a(),o(`div`,S,` No terms found for `+n(i.config.taxonomy||i.fieldKey)+`. `,1)):M.value?(a(),o(`div`,C,[(a(!0),o(u,null,e(A.value,e=>(a(),o(`button`,{key:e.id,type:`button`,class:s([`tax-pill`,{"is-active":j.value.includes(e.id)}]),disabled:i.disabled,onClick:d(t=>N(e.id),[`prevent`])},n(P(e)),11,w))),128))])):(a(),o(`select`,{key:3,class:`taxonomy-select`,disabled:i.disabled,value:j.value.length>0?j.value[0]:``,onChange:l[0]||=e=>N(parseInt(e.target.value,10))},[v(`option`,E,`Select `+n(i.config.label||i.config.taxonomy||i.fieldKey)+`...`,1),(a(!0),o(u,null,e(A.value,e=>(a(),o(`option`,{key:e.id,value:e.id},n(P(e)),9,D))),128))],40,T))],2))}}),[[`__scopeId`,`data-v-1a55cb97`]]);export{O as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.help-canvas[data-v-c739c397]{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}.help-container[data-v-c739c397]{width:100%;margin:0 auto}.help-header[data-v-c739c397]{margin-bottom:32px}.help-header h1[data-v-c739c397]{color:var(--cms-color-text-main);letter-spacing:-.02em;margin:0 0 6px;font-size:26px;font-weight:700}.help-header p[data-v-c739c397]{color:var(--cms-color-text-muted);max-width:580px;margin:0;font-size:14px;line-height:1.5}.steps-grid[data-v-c739c397]{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:20px;margin-bottom:32px;display:grid}.step-card[data-v-c739c397]{background:var(--cms-color-surface);border:1px solid var(--cms-color-border);border-radius:var(--cms-radius-md);transition:all var(--cms-transition-normal);flex-direction:column;padding:20px;display:flex}.step-card[data-v-c739c397]:hover{border-color:var(--cms-color-border-dark)}.card-header[data-v-c739c397]{justify-content:space-between;align-items:flex-start;margin-bottom:16px;display:flex}.step-badge[data-v-c739c397]{font-family:var(--cms-font-mono);text-transform:uppercase;color:var(--cms-color-text-faint);background:var(--cms-color-surface-hover);border-radius:var(--cms-radius-sm);border:1px solid var(--cms-color-border);padding:3px 7px;font-size:10px;font-weight:700}.card-icon[data-v-c739c397]{border-radius:var(--cms-radius-sm);justify-content:center;align-items:center;width:38px;height:38px;display:flex}.channel-icon[data-v-c739c397]{background:var(--cms-color-primary-light);color:var(--cms-color-primary);border-color:var(--cms-color-primary-border)}.tree-icon[data-v-c739c397]{color:#10b981;background:#d1fae5;border-color:#a7f3d0}.vault-icon[data-v-c739c397]{color:#d97706;background:#fef3c7;border-color:#fde68a}.card-content[data-v-c739c397]{flex-direction:column;flex-grow:1;display:flex}.card-content h3[data-v-c739c397]{color:var(--cms-color-text-main);margin:0 0 6px;font-size:15px;font-weight:600}.card-content p[data-v-c739c397]{color:var(--cms-color-text-muted);margin:0 0 16px;font-size:12.5px;line-height:1.45}.card-action-btn[data-v-c739c397]{border-radius:var(--cms-radius-sm);border:1px solid var(--cms-color-border-dark);background:var(--cms-color-surface);width:100%;color:var(--cms-color-text-main);cursor:pointer;transition:all var(--cms-transition-fast);justify-content:center;align-items:center;gap:6px;padding:8px 14px;font-size:12.5px;font-weight:600;display:inline-flex}.card-action-btn[data-v-c739c397]:hover{background:var(--cms-color-surface-hover);border-color:var(--cms-color-text-main)}.architecture-guide[data-v-c739c397]{background:var(--cms-color-surface-hover);border:1px solid var(--cms-color-border);border-radius:var(--cms-radius-md);padding:24px}.guide-header[data-v-c739c397]{align-items:center;gap:8px;margin-bottom:16px;display:flex}.guide-header h4[data-v-c739c397]{color:var(--cms-color-text-main);margin:0;font-size:15px;font-weight:600}.guide-columns[data-v-c739c397]{flex-wrap:wrap;align-items:flex-start;gap:16px;display:flex}.guide-col[data-v-c739c397]{flex:1;min-width:180px}.guide-col strong[data-v-c739c397]{color:var(--cms-color-text-main);margin-bottom:4px;font-size:12.5px;font-weight:600;display:block}.guide-col p[data-v-c739c397]{color:var(--cms-color-text-muted);margin:0;font-size:12px;line-height:1.45}.guide-col-arrow[data-v-c739c397]{color:var(--cms-color-text-faint);align-items:center;padding-top:8px;display:flex}@media (width<=900px){.guide-col-arrow[data-v-c739c397]{display:none}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{E as e,O as t,R as n,S as r,T as i,Y as a,j as o,t as s,tt as c,y as l}from"./_plugin-vue_export-helper-CQxWhVtr.js";import{a as u,i as d}from"./useNodes-CqFlc72m.js";import{n as f,r as p,t as m}from"./plus-CX_GHzXs.js";import{t as h}from"./database-hg5SqKLG.js";import{t as g}from"./folder-tree-BWYot72H.js";import{t as _}from"./globe-BraoljaN.js";import{t as v}from"./layers-B6RgfpPR.js";o(),a();var y={class:`help-canvas`},b={class:`help-container`},x={class:`steps-grid`},S={class:`step-card`},C={class:`card-header`},w={class:`card-icon channel-icon`},T={class:`step-card`},E={class:`card-header`},D={class:`card-icon tree-icon`},O={class:`step-card`},k={class:`card-header`},A={class:`card-icon vault-icon`},j={class:`architecture-guide`},M={class:`guide-header`},N={class:`guide-columns`},P={class:`guide-col-arrow`},F={class:`guide-col-arrow`},I={class:`guide-col-arrow`},L=s(t({__name:`CmsHelp`,setup(t){let{handleAddNewChannel:a}=p(),{handleAddNewTree:o}=u(),{handleAddNewNode:s}=d();return(t,u)=>(n(),r(`main`,y,[l(`div`,b,[u[17]||=l(`header`,{class:`help-header`},[l(`h1`,null,`KAMA`),l(`p`,null,`Build modular content in the Vault, organize it into Navigation Trees, and expose it to your channels via API.`)],-1),l(`div`,x,[l(`div`,S,[l(`div`,C,[l(`div`,w,[e(c(_),{size:20})]),u[3]||=l(`div`,{class:`step-badge`},`Step 1`,-1)]),u[5]||=l(`div`,{class:`card-content`},[l(`h3`,null,`Channels`),l(`p`,null,`Delivery targets that consume your headless API.`)],-1),l(`button`,{class:`card-action-btn`,onClick:u[0]||=(...e)=>c(a)&&c(a)(...e)},[e(c(m),{size:16}),u[4]||=i(` Create Channel `,-1)])]),l(`div`,T,[l(`div`,E,[l(`div`,D,[e(c(g),{size:20})]),u[6]||=l(`div`,{class:`step-badge`},`Step 2`,-1)]),u[8]||=l(`div`,{class:`card-content`},[l(`h3`,null,`Trees`),l(`p`,null,`Decoupled structural hierarchies and navigation menus.`)],-1),l(`button`,{class:`card-action-btn`,onClick:u[1]||=(...e)=>c(o)&&c(o)(...e)},[e(c(m),{size:16}),u[7]||=i(` Create Tree `,-1)])]),l(`div`,O,[l(`div`,k,[l(`div`,A,[e(c(h),{size:20})]),u[9]||=l(`div`,{class:`step-badge`},`Step 3`,-1)]),u[11]||=l(`div`,{class:`card-content`},[l(`h3`,null,`Vault`),l(`p`,null,`Flat, headless content store for reusable content items.`)],-1),l(`button`,{class:`card-action-btn`,onClick:u[2]||=e=>c(s)()},[e(c(m),{size:16}),u[10]||=i(` Create Content `,-1)])])]),l(`section`,j,[l(`div`,M,[e(c(v),{size:18,class:`guide-icon`}),u[12]||=l(`h4`,null,`Architecture Flow`,-1)]),l(`div`,N,[u[13]||=l(`div`,{class:`guide-col`},[l(`strong`,null,`1. Content Vault`),l(`p`,null,`Raw content entities existing independently of routing.`)],-1),l(`div`,P,[e(c(f),{size:16})]),u[14]||=l(`div`,{class:`guide-col`},[l(`strong`,null,`2. Navigation Trees`),l(`p`,null,`Decoupled structures mapping content items to URL hierarchies.`)],-1),l(`div`,F,[e(c(f),{size:16})]),u[15]||=l(`div`,{class:`guide-col`},[l(`strong`,null,`3. Channels`),l(`p`,null,`Delivery targets binding trees and languages to specific contexts.`)],-1),l(`div`,I,[e(c(f),{size:16})]),u[16]||=l(`div`,{class:`guide-col`},[l(`strong`,null,`4. Headless API`),l(`p`,null,`Endpoints serving structured JSON to your frontends.`)],-1)])])])]))}}),[[`__scopeId`,`data-v-c739c397`]]);export{L as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.cms-image-preview[data-v-2d18a75f]{justify-content:center;align-items:center;width:100%;min-width:100%;height:100%;min-height:100%;display:flex;position:relative;overflow:hidden}.preview-img[data-v-2d18a75f]{object-fit:cover;object-position:center;width:100%;height:100%;transition:filter var(--cms-transition-fast) ease;display:block}.preview-img.is-svg[data-v-2d18a75f]{object-fit:contain;width:100%!important;max-width:100%!important;height:auto!important;max-height:100%!important}.preview-img.is-blurring[data-v-2d18a75f]{filter:blur(4px)brightness(.7)grayscale(.3)}.loading-overlay[data-v-2d18a75f]{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);color:var(--cms-color-primary);z-index:15;background:#ffffffbf;flex-direction:column;justify-content:center;align-items:center;gap:8px;font-size:12px;font-weight:600;display:flex;position:absolute;inset:0}.spinner[data-v-2d18a75f]{animation:1s linear infinite spin-2d18a75f}@keyframes spin-2d18a75f{0%{transform:rotate(0)}to{transform:rotate(360deg)}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{$ as e,E as t,O as n,R as r,S as i,St as a,W as o,Y as s,j as c,lt as l,n as u,t as d,tt as f,v as p,x as m}from"./_plugin-vue_export-helper-CQxWhVtr.js";import{t as h}from"./loader-circle-BoUkhDjq.js";var g=u(`copy`,[[`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`,key:`17jyea`}],[`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`,key:`zix9uf`}]]),_=u(`crop`,[[`path`,{d:`M6 2v14a2 2 0 0 0 2 2h14`,key:`ron5a4`}],[`path`,{d:`M18 22V8a2 2 0 0 0-2-2H2`,key:`7s9ehn`}]]),v=u(`ellipsis-vertical`,[[`circle`,{cx:`12`,cy:`12`,r:`1`,key:`41hilf`}],[`circle`,{cx:`12`,cy:`5`,r:`1`,key:`gxeob9`}],[`circle`,{cx:`12`,cy:`19`,r:`1`,key:`lyex9k`}]]),y=u(`info`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 16v-4`,key:`1dtifu`}],[`path`,{d:`M12 8h.01`,key:`e9boi3`}]]),b=u(`link`,[[`path`,{d:`M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71`,key:`1cjeqo`}],[`path`,{d:`M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71`,key:`19qd67`}]]);function x(e,t){if(!e)return``;if(!e.includes(`/media/`))return e;try{let n=new URL(e,window.location.origin);return n.pathname.toLowerCase().endsWith(`.svg`)?n.pathname+n.search:(t.w&&n.searchParams.set(`w`,String(t.w)),t.h&&n.searchParams.set(`h`,String(t.h)),n.searchParams.set(`q`,String(t.q||75)),n.searchParams.set(`f`,String(t.f||`auto`)),n.pathname+n.search)}catch{return e}}c(),l(),s();var S={class:`cms-image-preview`},C=[`src`,`alt`],w={key:1,class:`loading-overlay`},T=d(n({__name:`CmsImagePreview`,props:{url:{},alt:{default:`Image preview`},width:{default:800},quality:{default:85},isProcessing:{type:Boolean,default:!1}},setup(n){let s=n,c=e(!1),l=e(null),u=p(()=>{if(!s.url)return!1;let e=s.url.toLowerCase();return e.endsWith(`.svg`)||e.includes(`image/svg+xml`)||e.includes(`.svg?`)});o(()=>s.url,(e,t)=>{e&&e!==t&&(c.value=!0,l.value=null)});let d=()=>{c.value=!1},g=()=>{if(l.value!==s.url&&_.value!==s.url){l.value=s.url,c.value=!0;return}c.value=!1},_=p(()=>s.url?u.value||l.value===s.url?s.url:x(s.url,{w:s.width,q:s.quality}):``);return(e,o)=>(r(),i(`div`,S,[_.value?(r(),i(`img`,{key:0,src:_.value,alt:n.alt,class:a([`preview-img`,{"is-blurring":n.isProcessing||c.value,"is-svg":u.value}]),onLoad:d,onError:g},null,42,C)):m(``,!0),n.isProcessing||c.value?(r(),i(`div`,w,[t(f(h),{size:16,class:`spinner`})])):m(``,!0)]))}}),[[`__scopeId`,`data-v-2d18a75f`]]);export{_ as a,v as i,b as n,g as o,y as r,T as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{$ as e,E as t,F as n,O as r,R as i,S as a,St as o,V as s,Y as c,g as l,j as u,lt as d,n as f,t as p,tt as m,x as h,y as ee}from"./_plugin-vue_export-helper-CQxWhVtr.js";import{n as g}from"./send-F-mJeL54.js";var _=f(`arrow-down`,[[`path`,{d:`M12 5v14`,key:`s699le`}],[`path`,{d:`m19 12-7 7-7-7`,key:`1idqje`}]]),v=f(`arrow-left`,[[`path`,{d:`m12 19-7-7 7-7`,key:`1l729n`}],[`path`,{d:`M19 12H5`,key:`x3x0zl`}]]),y=f(`arrow-up`,[[`path`,{d:`m5 12 7-7 7 7`,key:`hav0vg`}],[`path`,{d:`M12 19V5`,key:`x0mq9r`}]]),b=f(`ban`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M4.929 4.929 19.07 19.071`,key:`196cmz`}]]),x=f(`bold`,[[`path`,{d:`M6 12h9a4 4 0 0 1 0 8H7a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h7a4 4 0 0 1 0 8`,key:`mg9rjx`}]]),S=f(`box`,[[`path`,{d:`M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z`,key:`hh9hay`}],[`path`,{d:`m3.3 7 8.7 5 8.7-5`,key:`g66t2b`}],[`path`,{d:`M12 22V12`,key:`d0xqtd`}]]),C=f(`check`,[[`path`,{d:`M20 6 9 17l-5-5`,key:`1gmf2c`}]]),w=f(`chevron-up`,[[`path`,{d:`m18 15-6-6-6 6`,key:`153udz`}]]),T=f(`circle-alert`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`line`,{x1:`12`,x2:`12`,y1:`8`,y2:`12`,key:`1pkeuh`}],[`line`,{x1:`12`,x2:`12.01`,y1:`16`,y2:`16`,key:`4dfq90`}]]),E=f(`circle-check-big`,[[`path`,{d:`M21.801 10A10 10 0 1 1 17 3.335`,key:`yps3ct`}],[`path`,{d:`m9 11 3 3L22 4`,key:`1pflzl`}]]),D=f(`cloud-upload`,[[`path`,{d:`M12 13v8`,key:`1l5pq0`}],[`path`,{d:`M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242`,key:`1pljnt`}],[`path`,{d:`m8 17 4-4 4 4`,key:`1quai1`}]]),O=f(`eye-off`,[[`path`,{d:`M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49`,key:`ct8e1f`}],[`path`,{d:`M14.084 14.158a3 3 0 0 1-4.242-4.242`,key:`151rxh`}],[`path`,{d:`M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143`,key:`13bj9a`}],[`path`,{d:`m2 2 20 20`,key:`1ooewy`}]]),k=f(`eye`,[[`path`,{d:`M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0`,key:`1nclc0`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]),A=f(`file-pen`,[[`path`,{d:`M12.659 22H18a2 2 0 0 0 2-2V8a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 14 2H6a2 2 0 0 0-2 2v9.34`,key:`o6klzx`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M10.378 12.622a1 1 0 0 1 3 3.003L8.36 20.637a2 2 0 0 1-.854.506l-2.867.837a.5.5 0 0 1-.62-.62l.836-2.869a2 2 0 0 1 .506-.853z`,key:`zhnas1`}]]),j=f(`grip-vertical`,[[`circle`,{cx:`9`,cy:`12`,r:`1`,key:`1vctgf`}],[`circle`,{cx:`9`,cy:`5`,r:`1`,key:`hp0tcf`}],[`circle`,{cx:`9`,cy:`19`,r:`1`,key:`fkjjf6`}],[`circle`,{cx:`15`,cy:`12`,r:`1`,key:`1tmaij`}],[`circle`,{cx:`15`,cy:`5`,r:`1`,key:`19l28e`}],[`circle`,{cx:`15`,cy:`19`,r:`1`,key:`f4zoj3`}]]),M=f(`heading-1`,[[`path`,{d:`M4 12h8`,key:`17cfdx`}],[`path`,{d:`M4 18V6`,key:`1rz3zl`}],[`path`,{d:`M12 18V6`,key:`zqpxq5`}],[`path`,{d:`m17 12 3-2v8`,key:`1hhhft`}]]),N=f(`heading-2`,[[`path`,{d:`M4 12h8`,key:`17cfdx`}],[`path`,{d:`M4 18V6`,key:`1rz3zl`}],[`path`,{d:`M12 18V6`,key:`zqpxq5`}],[`path`,{d:`M21 18h-4c0-4 4-3 4-6 0-1.5-2-2.5-4-1`,key:`9jr5yi`}]]),P=f(`heading-3`,[[`path`,{d:`M4 12h8`,key:`17cfdx`}],[`path`,{d:`M4 18V6`,key:`1rz3zl`}],[`path`,{d:`M12 18V6`,key:`zqpxq5`}],[`path`,{d:`M17.5 10.5c1.7-1 3.5 0 3.5 1.5a2 2 0 0 1-2 2`,key:`68ncm8`}],[`path`,{d:`M17 17.5c2 1.5 4 .3 4-1.5a2 2 0 0 0-2-2`,key:`1ejuhz`}]]),F=f(`heading-4`,[[`path`,{d:`M12 18V6`,key:`zqpxq5`}],[`path`,{d:`M17 10v3a1 1 0 0 0 1 1h3`,key:`tj5zdr`}],[`path`,{d:`M21 10v8`,key:`1kdml4`}],[`path`,{d:`M4 12h8`,key:`17cfdx`}],[`path`,{d:`M4 18V6`,key:`1rz3zl`}]]),I=f(`italic`,[[`line`,{x1:`19`,x2:`10`,y1:`4`,y2:`4`,key:`15jd3p`}],[`line`,{x1:`14`,x2:`5`,y1:`20`,y2:`20`,key:`bu0au3`}],[`line`,{x1:`15`,x2:`9`,y1:`4`,y2:`20`,key:`uljnxc`}]]),L=f(`layout-grid`,[[`rect`,{width:`7`,height:`7`,x:`3`,y:`3`,rx:`1`,key:`1g98yp`}],[`rect`,{width:`7`,height:`7`,x:`14`,y:`3`,rx:`1`,key:`6d4xhi`}],[`rect`,{width:`7`,height:`7`,x:`14`,y:`14`,rx:`1`,key:`nxv5o0`}],[`rect`,{width:`7`,height:`7`,x:`3`,y:`14`,rx:`1`,key:`1bb6yr`}]]),R=f(`link-2-off`,[[`path`,{d:`M9 17H7A5 5 0 0 1 7 7`,key:`10o201`}],[`path`,{d:`M15 7h2a5 5 0 0 1 4 8`,key:`1d3206`}],[`line`,{x1:`8`,x2:`12`,y1:`12`,y2:`12`,key:`rvw6j4`}],[`line`,{x1:`2`,x2:`22`,y1:`2`,y2:`22`,key:`a6p6uj`}]]),z=f(`list-ordered`,[[`path`,{d:`M11 5h10`,key:`1cz7ny`}],[`path`,{d:`M11 12h10`,key:`1438ji`}],[`path`,{d:`M11 19h10`,key:`11t30w`}],[`path`,{d:`M4 4h1v5`,key:`10yrso`}],[`path`,{d:`M4 9h2`,key:`r1h2o0`}],[`path`,{d:`M6.5 20H3.4c0-1 2.6-1.925 2.6-3.5a1.5 1.5 0 0 0-2.6-1.02`,key:`xtkcd5`}]]),B=f(`list`,[[`path`,{d:`M3 5h.01`,key:`18ugdj`}],[`path`,{d:`M3 12h.01`,key:`nlz23k`}],[`path`,{d:`M3 19h.01`,key:`noohij`}],[`path`,{d:`M8 5h13`,key:`1pao27`}],[`path`,{d:`M8 12h13`,key:`1za7za`}],[`path`,{d:`M8 19h13`,key:`m83p4d`}]]),te=f(`lock`,[[`rect`,{width:`18`,height:`11`,x:`3`,y:`11`,rx:`2`,ry:`2`,key:`1w4ew1`}],[`path`,{d:`M7 11V7a5 5 0 0 1 10 0v4`,key:`fwvmzm`}]]),V=f(`mail`,[[`path`,{d:`m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7`,key:`132q7q`}],[`rect`,{x:`2`,y:`4`,width:`20`,height:`16`,rx:`2`,key:`izxlao`}]]),H=f(`minus`,[[`path`,{d:`M5 12h14`,key:`1ays0h`}]]),U=f(`move`,[[`path`,{d:`M12 2v20`,key:`t6zp3m`}],[`path`,{d:`m15 19-3 3-3-3`,key:`11eu04`}],[`path`,{d:`m19 9 3 3-3 3`,key:`1mg7y2`}],[`path`,{d:`M2 12h20`,key:`9i4pu4`}],[`path`,{d:`m5 9-3 3 3 3`,key:`j64kie`}],[`path`,{d:`m9 5 3-3 3 3`,key:`l8vdw6`}]]),W=f(`pencil`,[[`path`,{d:`M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z`,key:`1a8usu`}],[`path`,{d:`m15 5 4 4`,key:`1mk7zo`}]]),G=f(`phone`,[[`path`,{d:`M13.832 16.568a1 1 0 0 0 1.213-.303l.355-.465A2 2 0 0 1 17 15h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2A18 18 0 0 1 2 4a2 2 0 0 1 2-2h3a2 2 0 0 1 2 2v3a2 2 0 0 1-.8 1.6l-.468.351a1 1 0 0 0-.292 1.233 14 14 0 0 0 6.392 6.384`,key:`9njp5v`}]]),K=f(`quote`,[[`path`,{d:`M16 3a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2 1 1 0 0 1 1 1v1a2 2 0 0 1-2 2 1 1 0 0 0-1 1v2a1 1 0 0 0 1 1 6 6 0 0 0 6-6V5a2 2 0 0 0-2-2z`,key:`rib7q0`}],[`path`,{d:`M5 3a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2 1 1 0 0 1 1 1v1a2 2 0 0 1-2 2 1 1 0 0 0-1 1v2a1 1 0 0 0 1 1 6 6 0 0 0 6-6V5a2 2 0 0 0-2-2z`,key:`1ymkrd`}]]),q=f(`search`,[[`path`,{d:`m21 21-4.34-4.34`,key:`14j7rj`}],[`circle`,{cx:`11`,cy:`11`,r:`8`,key:`4ej97u`}]]),J=f(`settings`,[[`path`,{d:`M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915`,key:`1i5ecw`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]),Y=f(`shield-alert`,[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}],[`path`,{d:`M12 8v4`,key:`1got3b`}],[`path`,{d:`M12 16h.01`,key:`1drbdi`}]]),X=f(`strikethrough`,[[`path`,{d:`M16 4H9a3 3 0 0 0-2.83 4`,key:`43sutm`}],[`path`,{d:`M14 12a4 4 0 0 1 0 8H6`,key:`nlfj13`}],[`line`,{x1:`4`,x2:`20`,y1:`12`,y2:`12`,key:`1e0a9i`}]]),Z=f(`subscript`,[[`path`,{d:`m4 5 8 8`,key:`1eunvl`}],[`path`,{d:`m12 5-8 8`,key:`1ah0jp`}],[`path`,{d:`M20 19h-4c0-1.5.44-2 1.5-2.5S20 15.33 20 14c0-.47-.17-.93-.48-1.29a2.11 2.11 0 0 0-2.62-.44c-.42.24-.74.62-.9 1.07`,key:`e8ta8j`}]]),Q=f(`superscript`,[[`path`,{d:`m4 19 8-8`,key:`hr47gm`}],[`path`,{d:`m12 19-8-8`,key:`1dhhmo`}],[`path`,{d:`M20 12h-4c0-1.5.442-2 1.5-2.5S20 8.334 20 7.002c0-.472-.17-.93-.484-1.29a2.105 2.105 0 0 0-2.617-.436c-.42.239-.738.614-.899 1.06`,key:`1dfcux`}]]),ne=f(`unfold-vertical`,[[`path`,{d:`M12 22v-6`,key:`6o8u61`}],[`path`,{d:`M12 8V2`,key:`1wkif3`}],[`path`,{d:`M4 12H2`,key:`rhcxmi`}],[`path`,{d:`M10 12H8`,key:`s88cx1`}],[`path`,{d:`M16 12h-2`,key:`10asgb`}],[`path`,{d:`M22 12h-2`,key:`14jgyd`}],[`path`,{d:`m15 19-3 3-3-3`,key:`11eu04`}],[`path`,{d:`m15 5-3-3-3 3`,key:`itvq4r`}]]),re=f(`unlink`,[[`path`,{d:`m18.84 12.25 1.72-1.71h-.02a5.004 5.004 0 0 0-.12-7.07 5.006 5.006 0 0 0-6.95 0l-1.72 1.71`,key:`yqzxt4`}],[`path`,{d:`m5.17 11.75-1.71 1.71a5.004 5.004 0 0 0 .12 7.07 5.006 5.006 0 0 0 6.95 0l1.71-1.71`,key:`4qinb0`}],[`line`,{x1:`8`,x2:`8`,y1:`2`,y2:`5`,key:`1041cp`}],[`line`,{x1:`2`,x2:`5`,y1:`8`,y2:`8`,key:`14m1p5`}],[`line`,{x1:`16`,x2:`16`,y1:`19`,y2:`22`,key:`rzdirn`}],[`line`,{x1:`19`,x2:`22`,y1:`16`,y2:`16`,key:`ox905f`}]]);u(),c(),d();var ie={key:0,class:`badges-container`},ae={key:0,class:`overlay-badge badge-disabled`,title:`Page is disabled`},oe=[`title`],$={key:1,class:`overlay-badge badge-unpublished`,title:`Has draft changes`},se=p(r({__name:`NodeStatusBadges`,props:{evaluated:{}},setup(e){return(n,r)=>e.evaluated.isDraft?h(``,!0):(i(),a(`div`,ie,[e.evaluated.isHidden?(i(),a(`div`,ae,[t(m(b),{size:10,"stroke-width":`2.5`})])):(i(),a(l,{key:1},[e.evaluated.isScheduled?(i(),a(`div`,{key:0,class:o([`overlay-badge badge-scheduled`,{"badge-scheduled-upcoming":e.evaluated.isUpcoming,"badge-scheduled-showing":e.evaluated.isShowing,"badge-scheduled-passed":e.evaluated.isPassed}]),title:`Status: ${e.evaluated.badgeLabel}`},[t(m(g),{size:10,"stroke-width":`2.5`})],10,oe)):h(``,!0),e.evaluated.hasUnpublishedChanges||e.evaluated.isUnpublishedDraft?(i(),a(`div`,$,[t(m(W),{size:10,"stroke-width":`2.5`})])):h(``,!0)],64))]))}}),[[`__scopeId`,`data-v-98aca3b0`]]);u(),d();var ce=[`id`],le=p(r({__name:`CmsListItem`,props:{selected:{type:Boolean},draft:{type:Boolean},media:{type:Boolean},variant:{},id:{}},setup(e){return(t,n)=>(i(),a(`div`,{id:e.id,class:o([`cms-list-item`,[e.variant===`media`||e.media?`media-list-item`:e.variant===`vault`?`vault-item`:`tree-item`,{active:e.selected,"is-draft":e.draft}]])},[s(t.$slots,`icon`,{},void 0,!0),s(t.$slots,`default`,{},void 0,!0),s(t.$slots,`actions`,{},void 0,!0)],10,ce))}}),[[`__scopeId`,`data-v-50e9ed05`]]);u(),c(),d();var ue={key:0,class:`bottom-touch-handle`,title:`Drag to resize`},de=p(r({__name:`CmsPaneResizer`,props:{disabled:{type:Boolean,default:!1}},emits:[`drag-start`,`drag-move`,`drag-end`],setup(r,{emit:s}){let c=r,l=s,u=e(!1),d=e(!1),f=e=>{if(!c.disabled){if(u.value=!0,document.body.style.userSelect=`none`,document.body.classList.add(`cms-resizer-active-drag`),e.type===`touchstart`){d.value=!0;let t=e;t.cancelable&&t.preventDefault(),document.addEventListener(`touchmove`,g,{passive:!1}),document.addEventListener(`touchend`,_)}else e.preventDefault(),document.body.style.cursor=`col-resize`,document.addEventListener(`mousemove`,p),document.addEventListener(`mouseup`,_);l(`drag-start`,e)}},p=e=>{u.value&&l(`drag-move`,e.clientX,e)},g=e=>{!u.value||!e.touches[0]||l(`drag-move`,e.touches[0].clientX,e)},_=()=>{u.value&&(u.value=!1,document.body.style.cursor=``,document.body.style.userSelect=``,document.body.classList.remove(`cms-resizer-active-drag`),document.removeEventListener(`mousemove`,p),document.removeEventListener(`mouseup`,_),document.removeEventListener(`touchmove`,g),document.removeEventListener(`touchend`,_),l(`drag-end`))};return n(()=>{_()}),(e,n)=>(i(),a(`div`,{class:o([`cms-pane-resizer`,{"is-dragging":u.value,"is-disabled":r.disabled}]),onMousedown:f,onTouchstart:f},[n[0]||=ee(`div`,{class:`resizer-line`},null,-1),d.value?(i(),a(`div`,ue,[t(m(j),{size:14,class:`grip-icon`})])):h(``,!0)],34))}}),[[`__scopeId`,`data-v-4af20519`]]);export{k as A,y as B,I as C,M as D,N as E,w as F,_ as H,C as I,S as L,D as M,E as N,j as O,T as P,x as R,L as S,P as T,v as V,V as _,ne as a,z as b,X as c,q as d,K as f,H as g,U as h,re as i,O as j,A as k,Y as l,W as m,le as n,Q as o,G as p,se as r,Z as s,de as t,J as u,te as v,F as w,R as x,B as y,b as z};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.badges-container[data-v-98aca3b0]{flex-direction:row-reverse;align-items:center;gap:2px;display:flex;position:absolute;bottom:-4px;right:-4px}.overlay-badge[data-v-98aca3b0]{background:var(--node-badge-bg,var(--cms-color-bg));transition:all var(--cms-transition-fast);border-radius:50%;justify-content:center;align-items:center;padding:1px;display:flex}.badge-disabled[data-v-98aca3b0]{color:var(--cms-color-danger)}.badge-scheduled[data-v-98aca3b0]{color:var(--cms-color-warning,#d97706)}.badge-scheduled.badge-scheduled-upcoming[data-v-98aca3b0]{color:var(--cms-color-info,#0284c7)}.badge-scheduled.badge-scheduled-showing[data-v-98aca3b0]{color:var(--cms-color-success,#16a34a)}.badge-scheduled.badge-scheduled-passed[data-v-98aca3b0]{color:var(--cms-color-warning,#d97706)}.badge-unpublished[data-v-98aca3b0]{color:var(--cms-color-text-muted,#64748b)}.cms-list-item[data-v-50e9ed05]{box-sizing:border-box}.vault-item[data-v-50e9ed05]{border-radius:var(--cms-radius-sm);border:1px solid var(--cms-color-border);cursor:pointer;-webkit-user-select:none;user-select:none;transition:all var(--cms-transition-fast);--node-badge-bg:var(--cms-color-bg);background:0 0;align-items:flex-start;gap:8px;margin:0 -8px;padding:7px 6px;display:flex}.vault-item[data-v-50e9ed05]:hover:not(.active){border-color:var(--cms-color-border-dark);--node-badge-bg:var(--cms-color-surface-hover);background:var(--cms-color-surface-hover)}.vault-item.active[data-v-50e9ed05]{background:var(--cms-color-primary-light);border-color:var(--cms-color-primary-border);color:var(--cms-color-text-main);box-shadow:var(--cms-shadow-xs);--node-badge-bg:var(--cms-color-primary-light)}@keyframes draft-pulse-50e9ed05{0%{opacity:.5}50%{opacity:.85}to{opacity:.5}}.vault-item.is-draft[data-v-50e9ed05]{border:1px dashed var(--cms-color-border-dark);background:0 0;animation:2s ease-in-out infinite draft-pulse-50e9ed05}.vault-item.is-draft[data-v-50e9ed05] .item-title{color:var(--cms-color-text-muted);font-style:italic}.media-list-item[data-v-50e9ed05]{border-radius:var(--cms-radius-sm);border:1px solid var(--cms-color-border);cursor:grab;transition:all var(--cms-transition-fast);align-items:center;gap:14px;padding:6px;display:flex;position:relative}.media-list-item[data-v-50e9ed05]:active{cursor:grabbing}.media-list-item[data-v-50e9ed05]:hover{border-color:var(--cms-color-border-dark);background:var(--cms-color-surface-hover)}.media-list-item.active[data-v-50e9ed05]{border-color:var(--cms-color-primary);background:var(--cms-color-primary-light)}[data-v-50e9ed05] .thumb-wrapper,[data-v-50e9ed05] .doc-wrapper{border-radius:var(--cms-radius-sm);background:var(--cms-color-surface-hover);pointer-events:none;flex-shrink:0;justify-content:center;align-items:center;width:48px;height:48px;display:flex;overflow:hidden}[data-v-50e9ed05] .thumb-wrapper img{object-fit:cover;width:100%;height:100%}[data-v-50e9ed05] .doc-wrapper{color:var(--cms-color-text-muted)}[data-v-50e9ed05] .file-name{font-family:var(--cms-font-sans);color:var(--cms-color-text-main);white-space:nowrap;text-overflow:ellipsis;font-size:11px;font-weight:600;overflow:hidden}[data-v-50e9ed05] .meta-size{font-family:var(--cms-font-sans);color:var(--cms-color-text-muted);white-space:nowrap;font-size:10px;font-weight:500}[data-v-50e9ed05] .item-actions{opacity:0;transition:opacity var(--cms-transition-fast);align-items:center;gap:4px;display:flex;position:absolute;top:4px;right:4px}.media-list-item[data-v-50e9ed05]:hover .item-actions,[data-v-50e9ed05] .item-actions.menu-open{opacity:1}[data-v-50e9ed05] .more-btn{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;padding:2px}[data-v-50e9ed05] .more-btn:hover{background:var(--cms-color-border);color:var(--cms-color-text-main)}[data-v-50e9ed05] .icon-wrapper{flex-shrink:0;justify-content:center;align-items:center;width:16px;height:16px;margin-top:2px;display:inline-flex;position:relative}[data-v-50e9ed05] .item-icon{color:var(--cms-color-text-faint);transition:color var(--cms-transition-fast)}.vault-item.active[data-v-50e9ed05] .item-icon{color:var(--cms-color-primary)}[data-v-50e9ed05] .item-details{flex-direction:column;flex:1;min-width:0;display:flex}[data-v-50e9ed05] .type-label{font-family:var(--cms-font-sans);text-transform:capitalize;color:var(--cms-color-text-muted);font-size:9.5px;font-weight:600;line-height:1.2}[data-v-50e9ed05] .item-title{font-family:var(--cms-font-sans);color:var(--cms-color-text-main);white-space:nowrap;text-overflow:ellipsis;font-size:12.5px;font-weight:550;line-height:1.35;overflow:hidden}[data-v-50e9ed05] .meta-row{align-items:center;gap:6px;margin-top:2px;display:flex}[data-v-50e9ed05] .sort-field-tag{font-family:var(--cms-font-sans);color:var(--cms-color-text-muted);white-space:nowrap;text-overflow:ellipsis;font-size:10px;font-weight:500;overflow:hidden}[data-v-50e9ed05] .tree-tag-icon{color:#10b981;justify-content:center;align-items:center;display:inline-flex}[data-v-50e9ed05] .asset-tag-icon,[data-v-50e9ed05] .node-tag-icon{color:var(--cms-color-primary);opacity:.85;align-items:center;gap:2.5px;display:inline-flex}[data-v-50e9ed05] .asset-tag-icon .count-text,[data-v-50e9ed05] .node-tag-icon .count-text{font-size:9.5px;font-weight:700;line-height:1}[data-v-50e9ed05] .node-tag-icon.variant-tag{color:var(--cms-color-text-muted)}[data-v-50e9ed05] .node-actions{opacity:0;transition:opacity var(--cms-transition-fast);align-items:center;display:flex}.vault-item[data-v-50e9ed05]:hover .node-actions,[data-v-50e9ed05] .node-actions.menu-open{opacity:1}[data-v-50e9ed05] .action-btn{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}[data-v-50e9ed05] .action-btn:hover{background:var(--cms-color-border-dark);color:var(--cms-color-text-main)}.cms-pane-resizer[data-v-4af20519]{z-index:100;cursor:col-resize;-webkit-user-select:none;user-select:none;touch-action:none;flex-shrink:0;justify-content:center;align-items:center;width:12px;height:100%;margin-left:-6px;margin-right:-6px;display:flex;position:relative}.cms-pane-resizer.is-disabled[data-v-4af20519]{pointer-events:none;opacity:0}.resizer-line[data-v-4af20519]{background-color:var(--cms-color-border,#cbd5e1);width:2px;height:100%;transition:background-color var(--cms-transition-fast,.15s ease), width var(--cms-transition-fast,.15s ease)}.cms-pane-resizer:hover .resizer-line[data-v-4af20519],.cms-pane-resizer.is-dragging .resizer-line[data-v-4af20519]{background-color:var(--cms-color-primary,#3b82f6);width:3px}.bottom-touch-handle[data-v-4af20519]{background:var(--cms-color-bg,#fff);border:1px solid var(--cms-color-border,#cbd5e1);border-radius:var(--cms-radius-xs,4px);width:20px;height:32px;color:var(--cms-color-text-muted,#64748b);pointer-events:none;justify-content:center;align-items:center;display:flex;position:absolute;bottom:16px;left:50%;transform:translate(-50%);box-shadow:0 1px 3px #0000001f}.cms-pane-resizer.is-dragging .bottom-touch-handle[data-v-4af20519]{border-color:var(--cms-color-primary,#3b82f6);color:var(--cms-color-primary,#3b82f6)}.grip-icon[data-v-4af20519]{pointer-events:none}body.cms-resizer-active-drag iframe,body.cms-resizer-active-drag canvas,body.cms-resizer-active-drag .editor-canvas-wrapper{pointer-events:none!important}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.publisher-canvas.full-width[data-v-e0e64ba6]{padding:var(--cms-page-padding,32px);background:var(--cms-color-bg);font-family:var(--cms-font-sans);box-sizing:border-box;flex-grow:1;justify-content:flex-start;align-items:flex-start;width:100%;display:flex;overflow-y:auto}.publisher-container.full-width[data-v-e0e64ba6]{width:100%;max-width:100%;margin:0}.publisher-header[data-v-e0e64ba6]{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin-bottom:28px;display:flex}.header-title-group h1[data-v-e0e64ba6]{color:var(--cms-color-text-main);letter-spacing:-.02em;margin:0 0 4px;font-size:24px;font-weight:700}.header-title-group p[data-v-e0e64ba6]{color:var(--cms-color-text-muted);margin:0;font-size:13.5px}.spin[data-v-e0e64ba6]{animation:1s linear infinite spin-e0e64ba6}@keyframes spin-e0e64ba6{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.empty-publisher-state[data-v-e0e64ba6]{background:var(--cms-color-surface);border:1px solid var(--cms-color-border);border-radius:var(--cms-radius-md);text-align:center;flex-direction:column;justify-content:center;align-items:center;margin-bottom:32px;padding:64px 20px;display:flex}.success-icon[data-v-e0e64ba6]{color:var(--cms-color-success,#10b981);margin-bottom:12px}.empty-publisher-state h3[data-v-e0e64ba6]{color:var(--cms-color-text-main);margin:0 0 6px;font-size:18px;font-weight:600}.empty-publisher-state p[data-v-e0e64ba6]{color:var(--cms-color-text-muted);max-width:420px;margin:0;font-size:13.5px}.empty-icon[data-v-e0e64ba6]{opacity:.2;margin-bottom:16px}.channel-groups-list[data-v-e0e64ba6]{flex-direction:column;gap:24px;width:100%;margin-bottom:36px;display:flex}.channel-group-card[data-v-e0e64ba6]{background:var(--cms-color-surface);border:1px solid var(--cms-color-border);border-radius:var(--cms-radius-md);width:100%;overflow:hidden}.group-header[data-v-e0e64ba6]{background:var(--cms-color-surface-hover);border-bottom:1px solid var(--cms-color-border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:14px 16px;display:flex}.group-title[data-v-e0e64ba6]{align-items:center;gap:12px;display:flex}.channel-icon[data-v-e0e64ba6]{color:var(--cms-color-primary)}.group-title h2[data-v-e0e64ba6]{color:var(--cms-color-text-main);margin:0;font-size:15px;font-weight:600}.count-badge[data-v-e0e64ba6]{border-radius:var(--cms-radius-full);background:var(--cms-color-bg);border:1px solid var(--cms-color-border);color:var(--cms-color-text-muted);padding:2px 8px;font-size:11px;font-weight:600}.nodes-table[data-v-e0e64ba6]{flex-direction:column;width:100%;display:flex}.node-title[data-v-e0e64ba6]{color:var(--cms-color-text-main);font-size:13.5px;font-weight:600}.checkbox-container[data-v-e0e64ba6]{cursor:pointer;width:16px;height:16px;display:block;position:relative}.checkbox-container input[data-v-e0e64ba6]{opacity:0;cursor:pointer;width:0;height:0;position:absolute}.checkmark[data-v-e0e64ba6]{background-color:var(--cms-color-bg);border:1px solid var(--cms-color-border-dark);border-radius:var(--cms-radius-xs);width:16px;height:16px;transition:all var(--cms-transition-fast);position:absolute;top:0;left:0}.checkbox-container:hover input~.checkmark[data-v-e0e64ba6]{border-color:var(--cms-color-primary)}.checkbox-container input:checked~.checkmark[data-v-e0e64ba6]{background-color:var(--cms-color-primary);border-color:var(--cms-color-primary)}.checkmark[data-v-e0e64ba6]:after{content:"";display:none;position:absolute}.checkbox-container input:checked~.checkmark[data-v-e0e64ba6]:after{display:block}.checkbox-container .checkmark[data-v-e0e64ba6]:after{border:2px solid #fff;border-width:0 2px 2px 0;width:4px;height:8px;top:2px;left:5px;transform:rotate(45deg)}.checkbox-container input:indeterminate~.checkmark[data-v-e0e64ba6]{background-color:var(--cms-color-primary);border-color:var(--cms-color-primary)}.checkbox-container input:indeterminate~.checkmark[data-v-e0e64ba6]:after{border:0 solid #fff;border-bottom-width:2px;width:8px;height:2px;display:block;top:6px;left:3px;transform:none}.history-section[data-v-e0e64ba6]{width:100%;margin-top:12px}.history-header[data-v-e0e64ba6]{align-items:center;gap:8px;margin-bottom:12px;display:flex}.history-header h2[data-v-e0e64ba6]{color:var(--cms-color-text-main);margin:0;font-size:15px;font-weight:600}.history-icon[data-v-e0e64ba6]{color:var(--cms-color-text-muted)}.history-card[data-v-e0e64ba6]{background:var(--cms-color-surface);border:1px solid var(--cms-color-border);border-radius:var(--cms-radius-md);width:100%;overflow:hidden}.published-check[data-v-e0e64ba6]{color:var(--cms-color-success,#10b981);flex-shrink:0}.history-time[data-v-e0e64ba6]{color:var(--cms-color-text-muted);font-size:11.5px;font-family:var(--cms-font-mono);align-items:center;gap:6px;display:flex}
|
|
@@ -0,0 +1,3 @@
|
|
|
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,T as c,Y as l,b as u,g as d,h as f,j as p,lt as m,o as h,t as g,tt as _,v,x as y,y as b}from"./_plugin-vue_export-helper-CQxWhVtr.js";import{c as x,i as te}from"./useNodes-CqFlc72m.js";import{l as S,s as ne}from"./schema-helpers-DvficKko.js";import{t as C}from"./circle-check-A-QeFqt3.js";import{n as re,t as w}from"./send-F-mJeL54.js";import{t as ie}from"./folder-tree-BWYot72H.js";import{t as ae}from"./globe-BraoljaN.js";import{t as oe}from"./history-pqIbKK9u.js";import{t as T}from"./loader-circle-BoUkhDjq.js";import{t as E}from"./CmsButton-CbOfxvjr.js";import{t as D}from"./CmsDataRow--H4iI_u_.js";import{t as O}from"./CmsBadge-D0Ob9qPU.js";p(),l(),m(),h();var se={class:`publisher-canvas full-width`},ce={class:`publisher-container full-width`},le={class:`publisher-header`},ue={class:`header-actions`},de={key:0,class:`empty-publisher-state`},fe={key:1,class:`empty-publisher-state`},pe={key:2,class:`channel-groups-list`},k={class:`group-header`},A={class:`group-title`},j=[`checked`,`indeterminate`,`onChange`],M={class:`count-badge`},N={class:`nodes-table`},P=[`checked`,`onChange`],F={class:`node-title`},I={key:3,class:`history-section`},L={class:`history-header`},R={class:`history-card`},z={class:`node-title`},B={class:`history-time`},V=g(ee({__name:`CmsPublisher`,setup(ee){let l=ne(),{loadNodeContent:p}=te(),m=e(!1),h=e(new Set),g=e(null),V=e(!1),H=e([]),U=e([]),W=e(new Set),me=async()=>{if(l.hasLoadedStats.value){H.value=l.vaultStats.value?.pendingNodes||[],U.value=l.vaultStats.value?.recentActivity||[];return}m.value=!0;try{let e=await fetch(`/api/cms/stats`);if(e.ok){let t=await e.json();l.vaultStats.value=t,l.hasLoadedStats.value=!0,H.value=t.pendingNodes||[],U.value=t.recentActivity||[]}}catch{}finally{m.value=!1}},G=v(()=>{let e=new Map;if(H.value.forEach(t=>{let n=String(l.activeNode.value?.id)===String(t.id),r=x(t),i=n&&l.hasUnpublishedChanges.value||r.hasUnpublishedChanges;e.set(String(t.id),{...t,evalState:{...r,hasUnpublishedChanges:i}})}),l.activeNode.value?.id){let t=String(l.activeNode.value.id),n=x(l.activeNode.value),r=l.hasUnpublishedChanges.value||n.hasUnpublishedChanges;(n.isDraft||n.isUnpublishedDraft||r)&&(e.has(t)||e.set(t,{...l.activeNode.value,evalState:{...n,hasUnpublishedChanges:r}}))}return Array.from(e.values())}),he=v(()=>{let e=new Map,t=`Unassigned / Vault Only`;return e.set(t,{channelName:t,nodes:[]}),G.value.forEach(n=>{let r=n.channelNames||[];r.length===0?e.get(t).nodes.push(n):r.forEach(t=>{e.has(t)||e.set(t,{channelName:t,nodes:[]}),e.get(t).nodes.push(n)})}),Array.from(e.values()).filter(e=>e.nodes.length>0)}),K=e=>W.value.has(e),ge=e=>{let t=new Set(W.value);t.has(e)?t.delete(e):t.add(e),W.value=t},q=e=>e.filter(e=>W.value.has(e.id)).length,J=e=>e.length>0&&e.every(e=>W.value.has(e.id)),_e=e=>q(e)>0&&q(e)<e.length,Y=e=>{let t=new Set(W.value),n=J(e);e.forEach(e=>{n?t.delete(e.id):t.add(e.id)}),W.value=t},X=v(()=>W.value.size),Z=e=>{p({id:e.id,title:e.title,slug:e.slug,nodeType:e.contentType||e.nodeType,channelId:e.channelId||``,language:e.language||`en`,children:[]})},Q=e=>{U.value=[{id:e.id,title:e.title||`Untitled Document`,slug:e.slug,contentType:e.contentType||e.nodeType||`page`,updatedAt:new Date().toISOString()},...U.value.filter(t=>String(t.id)!==String(e.id))].slice(0,10)},ve=async e=>{h.value.add(e);try{let t=G.value.find(t=>String(t.id)===String(e));if((await S.publishNode(e)).ok){l.updateNodeInState(e,{status:`published`,hasUnpublishedChanges:!1}),H.value=H.value.filter(t=>String(t.id)!==String(e)),String(l.activeNode.value?.id)===String(e)&&(l.activeNode.value.status=`published`,l.activeNode.value.hasUnpublishedChanges=!1);let n=new Set(W.value);n.delete(e),W.value=n,t&&Q(t),l.invalidateStats(),typeof window<`u`&&window.dispatchEvent(new CustomEvent(`cms-node-updated`))}}finally{h.value.delete(e)}},$=async e=>{if(e.length===0)return;let t=e.map(e=>e.id);t.forEach(e=>h.value.add(e));try{let e=await S.publishNodesBatch(t);if(e.ok){let t=(await e.json()).publishedIds||[];for(let e of t)l.updateNodeInState(e,{status:`published`,hasUnpublishedChanges:!1}),String(l.activeNode.value?.id)===String(e)&&(l.activeNode.value.status=`published`,l.activeNode.value.hasUnpublishedChanges=!1);G.value.filter(e=>t.includes(e.id)).forEach(e=>Q(e)),H.value=H.value.filter(e=>!t.includes(e.id));let n=new Set(W.value);t.forEach(e=>n.delete(e)),W.value=n,l.invalidateStats(),typeof window<`u`&&window.dispatchEvent(new CustomEvent(`cms-node-updated`))}}finally{t.forEach(e=>h.value.delete(e))}},ye=async(e,t)=>{g.value=e;let n=q(t)>0?t.filter(e=>W.value.has(e.id)):t;await $(n),g.value=null},be=async()=>{V.value=!0;let e=X.value>0?G.value.filter(e=>W.value.has(e.id)):G.value;await $(e),V.value=!1},xe=e=>{if(!e)return``;try{return new Date(e).toLocaleString([],{dateStyle:`medium`,timeStyle:`short`})}catch{return e}};return i(()=>me()),(e,i)=>(o(),s(`main`,se,[b(`div`,ce,[b(`header`,le,[i[2]||=b(`div`,{class:`header-title-group`},[b(`h1`,null,`Publishing Center`),b(`p`,null,`Review and release pending drafts or bulk-publish updates across your distribution channels.`)],-1),b(`div`,ue,[G.value.length>0?(o(),u(E,{key:0,variant:`primary`,class:`publish-all-btn`,disabled:V.value||h.value.size>0,onClick:be},{default:a(()=>[V.value?(o(),u(_(T),{key:0,size:16,class:`spin`})):(o(),u(_(w),{key:1,size:16})),b(`span`,null,r(X.value>0?`Publish Selected (${X.value})`:`Publish All
|
|
2
|
+
(${G.value.length})`),1)]),_:1},8,[`disabled`])):y(``,!0)])]),m.value&&G.value.length===0?(o(),s(`div`,de,[n(_(T),{size:28,class:`spin empty-icon`}),i[3]||=b(`p`,null,`Gathering pending content updates...`,-1)])):G.value.length===0?(o(),s(`div`,fe,[n(_(C),{size:36,class:`success-icon`}),i[4]||=b(`h3`,null,`All Content Published!`,-1),i[5]||=b(`p`,null,`No draft changes or pending revisions found. Your delivery channels are fully up to date.`,-1)])):(o(),s(`div`,pe,[(o(!0),s(d,null,t(he.value,e=>(o(),s(`section`,{key:e.channelName,class:`channel-group-card`},[b(`div`,k,[b(`div`,A,[b(`label`,{class:`checkbox-container`,onClick:i[0]||=f(()=>{},[`stop`])},[b(`input`,{type:`checkbox`,checked:J(e.nodes),indeterminate:_e(e.nodes),onChange:t=>Y(e.nodes)},null,40,j),i[6]||=b(`span`,{class:`checkmark`},null,-1)]),n(_(ae),{size:18,class:`channel-icon`}),b(`h2`,null,r(e.channelName),1),b(`span`,M,r(e.nodes.length)+` Pending`,1)]),n(E,{variant:`secondary`,size:`sm`,disabled:g.value===e.channelName||V.value,onClick:t=>ye(e.channelName,e.nodes)},{default:a(()=>[g.value===e.channelName?(o(),u(_(T),{key:0,size:14,class:`spin`})):(o(),u(_(w),{key:1,size:14})),b(`span`,null,r(q(e.nodes)>0?`Publish Selected
|
|
3
|
+
(${q(e.nodes)})`:`Publish Channel Items`),1)]),_:2},1032,[`disabled`,`onClick`])]),b(`div`,N,[(o(!0),s(d,null,t(e.nodes,e=>(o(),u(D,{key:e.id,"is-selected":K(e.id),clickable:``,onClick:t=>Z(e)},{prefix:a(()=>[b(`label`,{class:`checkbox-container`,onClick:i[1]||=f(()=>{},[`stop`])},[b(`input`,{type:`checkbox`,checked:K(e.id),onChange:t=>ge(e.id)},null,40,P),i[7]||=b(`span`,{class:`checkmark`},null,-1)])]),title:a(()=>[b(`span`,F,r(e.title||`Untitled Draft`),1),n(O,{variant:`type`},{default:a(()=>[c(r(e.contentType||e.nodeType||`page`),1)]),_:2},1024)]),meta:a(()=>[n(O,{variant:`slug`},{default:a(()=>[c(`/`+r(e.slug),1)]),_:2},1024),(o(!0),s(d,null,t(e.treeNames,e=>(o(),u(O,{variant:`tree`,key:e},{default:a(()=>[n(_(ie),{size:11}),c(` `+r(e),1)]),_:2},1024))),128))]),actions:a(()=>[n(E,{variant:`secondary`,size:`sm`,class:`icon-only-btn`,title:`Publish Item`,disabled:h.value.has(e.id)||V.value,onClick:f(t=>ve(e.id),[`stop`])},{default:a(()=>[h.value.has(e.id)?(o(),u(_(T),{key:0,size:14,class:`spin`})):(o(),u(_(w),{key:1,size:14}))]),_:2},1032,[`disabled`,`onClick`])]),_:2},1032,[`is-selected`,`onClick`]))),128))])]))),128))])),U.value.length>0?(o(),s(`section`,I,[b(`div`,L,[n(_(oe),{size:18,class:`history-icon`}),i[8]||=b(`h2`,null,`Recently Published`,-1)]),b(`div`,R,[(o(!0),s(d,null,t(U.value,e=>(o(),u(D,{key:e.id,clickable:``,onClick:t=>Z(e)},{prefix:a(()=>[n(_(C),{size:16,class:`published-check`})]),title:a(()=>[b(`span`,z,r(e.title||`Untitled Document`),1),n(O,{variant:`type`},{default:a(()=>[c(r(e.contentType||e.nodeType||`page`),1)]),_:2},1024)]),meta:a(()=>[n(O,{variant:`slug`},{default:a(()=>[c(`/`+r(e.slug),1)]),_:2},1024)]),actions:a(()=>[b(`div`,B,[n(_(re),{size:12}),b(`span`,null,r(xe(e.updatedAt)),1)])]),_:2},1032,[`onClick`]))),128))])])):y(``,!0)])]))}}),[[`__scopeId`,`data-v-e0e64ba6`]]);export{V as default};
|