@caretcms/core 0.2.0 → 0.4.0
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/README.md +195 -12
- package/dist/index.d.ts +26 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +113 -12
- package/dist/index.js.map +1 -1
- package/dist/loader.d.ts.map +1 -1
- package/dist/loader.js +35 -3
- package/dist/loader.js.map +1 -1
- package/dist/markdown/paragraphs.d.ts +14 -0
- package/dist/markdown/paragraphs.d.ts.map +1 -0
- package/dist/markdown/paragraphs.js +61 -0
- package/dist/markdown/paragraphs.js.map +1 -0
- package/dist/markdown/remark.d.ts.map +1 -1
- package/dist/markdown/remark.js +1 -0
- package/dist/markdown/remark.js.map +1 -1
- package/dist/markdown/satteri.d.ts.map +1 -1
- package/dist/markdown/satteri.js +35 -9
- package/dist/markdown/satteri.js.map +1 -1
- package/dist/markdown/stamp.d.ts +0 -9
- package/dist/markdown/stamp.d.ts.map +1 -1
- package/dist/markdown/stamp.js +6 -0
- package/dist/markdown/stamp.js.map +1 -1
- package/dist/providers/deployment/github.d.ts +27 -0
- package/dist/providers/deployment/github.d.ts.map +1 -0
- package/dist/providers/deployment/github.js +180 -0
- package/dist/providers/deployment/github.js.map +1 -0
- package/dist/providers/deployment/simulated.d.ts +10 -0
- package/dist/providers/deployment/simulated.d.ts.map +1 -0
- package/dist/providers/deployment/simulated.js +29 -0
- package/dist/providers/deployment/simulated.js.map +1 -0
- package/dist/runtime/auth/session.d.ts +1 -0
- package/dist/runtime/auth/session.d.ts.map +1 -1
- package/dist/runtime/auth/session.js +16 -0
- package/dist/runtime/auth/session.js.map +1 -1
- package/dist/runtime/authorization.d.ts +11 -0
- package/dist/runtime/authorization.d.ts.map +1 -0
- package/dist/runtime/authorization.js +29 -0
- package/dist/runtime/authorization.js.map +1 -0
- package/dist/runtime/collection-policy.d.ts +11 -0
- package/dist/runtime/collection-policy.d.ts.map +1 -0
- package/dist/runtime/collection-policy.js +44 -0
- package/dist/runtime/collection-policy.js.map +1 -0
- package/dist/runtime/config.d.ts +3 -0
- package/dist/runtime/config.d.ts.map +1 -1
- package/dist/runtime/config.js +4 -1
- package/dist/runtime/config.js.map +1 -1
- package/dist/runtime/content-errors.d.ts +9 -0
- package/dist/runtime/content-errors.d.ts.map +1 -0
- package/dist/runtime/content-errors.js +17 -0
- package/dist/runtime/content-errors.js.map +1 -0
- package/dist/runtime/content.d.ts.map +1 -1
- package/dist/runtime/content.js +13 -4
- package/dist/runtime/content.js.map +1 -1
- package/dist/runtime/deployment-status.d.ts +14 -0
- package/dist/runtime/deployment-status.d.ts.map +1 -0
- package/dist/runtime/deployment-status.js +57 -0
- package/dist/runtime/deployment-status.js.map +1 -0
- package/dist/runtime/draft-state.d.ts +16 -0
- package/dist/runtime/draft-state.d.ts.map +1 -0
- package/dist/runtime/draft-state.js +29 -0
- package/dist/runtime/draft-state.js.map +1 -0
- package/dist/runtime/i18n.d.ts +97 -0
- package/dist/runtime/i18n.d.ts.map +1 -0
- package/dist/runtime/i18n.js +190 -0
- package/dist/runtime/i18n.js.map +1 -0
- package/dist/runtime/index.d.ts +1 -0
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +1 -0
- package/dist/runtime/index.js.map +1 -1
- package/dist/runtime/middleware.d.ts.map +1 -1
- package/dist/runtime/middleware.js +61 -4
- package/dist/runtime/middleware.js.map +1 -1
- package/dist/runtime/mutations/contracts.d.ts +12 -0
- package/dist/runtime/mutations/contracts.d.ts.map +1 -1
- package/dist/runtime/mutations/contracts.js +54 -4
- package/dist/runtime/mutations/contracts.js.map +1 -1
- package/dist/runtime/mutations/engine.d.ts +2 -0
- package/dist/runtime/mutations/engine.d.ts.map +1 -1
- package/dist/runtime/mutations/engine.js +220 -57
- package/dist/runtime/mutations/engine.js.map +1 -1
- package/dist/runtime/providers.d.ts +4 -1
- package/dist/runtime/providers.d.ts.map +1 -1
- package/dist/runtime/providers.js +18 -1
- package/dist/runtime/providers.js.map +1 -1
- package/dist/runtime/publish-recovery.d.ts +32 -0
- package/dist/runtime/publish-recovery.d.ts.map +1 -0
- package/dist/runtime/publish-recovery.js +98 -0
- package/dist/runtime/publish-recovery.js.map +1 -0
- package/dist/runtime/publish.d.ts +10 -4
- package/dist/runtime/publish.d.ts.map +1 -1
- package/dist/runtime/publish.js +105 -63
- package/dist/runtime/publish.js.map +1 -1
- package/dist/runtime/rebuild-webhook.d.ts +4 -0
- package/dist/runtime/rebuild-webhook.d.ts.map +1 -1
- package/dist/runtime/rebuild-webhook.js +12 -2
- package/dist/runtime/rebuild-webhook.js.map +1 -1
- package/dist/runtime/request-context.d.ts +7 -1
- package/dist/runtime/request-context.d.ts.map +1 -1
- package/dist/runtime/request-context.js +7 -1
- package/dist/runtime/request-context.js.map +1 -1
- package/dist/runtime/rewrite.d.ts.map +1 -1
- package/dist/runtime/rewrite.js +28 -2
- package/dist/runtime/rewrite.js.map +1 -1
- package/dist/runtime/rich-allowlist.js +1 -1
- package/dist/runtime/rich-allowlist.js.map +1 -1
- package/dist/runtime/routes/admin-entry.d.ts.map +1 -1
- package/dist/runtime/routes/admin-entry.js +129 -21
- package/dist/runtime/routes/admin-entry.js.map +1 -1
- package/dist/runtime/routes/admin.d.ts.map +1 -1
- package/dist/runtime/routes/admin.js +28 -14
- package/dist/runtime/routes/admin.js.map +1 -1
- package/dist/runtime/routes/auth-login.d.ts.map +1 -1
- package/dist/runtime/routes/auth-login.js +4 -0
- package/dist/runtime/routes/auth-login.js.map +1 -1
- package/dist/runtime/routes/auth-logout.d.ts.map +1 -1
- package/dist/runtime/routes/auth-logout.js +7 -2
- package/dist/runtime/routes/auth-logout.js.map +1 -1
- package/dist/runtime/routes/auth-session.d.ts.map +1 -1
- package/dist/runtime/routes/auth-session.js +10 -2
- package/dist/runtime/routes/auth-session.js.map +1 -1
- package/dist/runtime/routes/collection-list.d.ts.map +1 -1
- package/dist/runtime/routes/collection-list.js +213 -66
- package/dist/runtime/routes/collection-list.js.map +1 -1
- package/dist/runtime/routes/deployment.d.ts +5 -0
- package/dist/runtime/routes/deployment.d.ts.map +1 -0
- package/dist/runtime/routes/deployment.js +38 -0
- package/dist/runtime/routes/deployment.js.map +1 -0
- package/dist/runtime/routes/draft.d.ts.map +1 -1
- package/dist/runtime/routes/draft.js +10 -3
- package/dist/runtime/routes/draft.js.map +1 -1
- package/dist/runtime/routes/entries.d.ts.map +1 -1
- package/dist/runtime/routes/entries.js +87 -43
- package/dist/runtime/routes/entries.js.map +1 -1
- package/dist/runtime/routes/history.d.ts.map +1 -1
- package/dist/runtime/routes/history.js +40 -21
- package/dist/runtime/routes/history.js.map +1 -1
- package/dist/runtime/routes/mutate.d.ts.map +1 -1
- package/dist/runtime/routes/mutate.js +4 -1
- package/dist/runtime/routes/mutate.js.map +1 -1
- package/dist/runtime/routes/publish.d.ts.map +1 -1
- package/dist/runtime/routes/publish.js +127 -33
- package/dist/runtime/routes/publish.js.map +1 -1
- package/dist/runtime/routes/schema.d.ts.map +1 -1
- package/dist/runtime/routes/schema.js +11 -2
- package/dist/runtime/routes/schema.js.map +1 -1
- package/dist/runtime/routes/studio-home.d.ts.map +1 -1
- package/dist/runtime/routes/studio-home.js +41 -20
- package/dist/runtime/routes/studio-home.js.map +1 -1
- package/dist/runtime/routes/upload.d.ts.map +1 -1
- package/dist/runtime/routes/upload.js +3 -0
- package/dist/runtime/routes/upload.js.map +1 -1
- package/dist/runtime/schema-registry.d.ts +8 -1
- package/dist/runtime/schema-registry.d.ts.map +1 -1
- package/dist/runtime/schema-registry.js +49 -3
- package/dist/runtime/schema-registry.js.map +1 -1
- package/dist/runtime/storage/entry-commit.d.ts +8 -0
- package/dist/runtime/storage/entry-commit.d.ts.map +1 -0
- package/dist/runtime/storage/entry-commit.js +45 -0
- package/dist/runtime/storage/entry-commit.js.map +1 -0
- package/dist/runtime/storage/filesystem-adapter.d.ts +5 -0
- package/dist/runtime/storage/filesystem-adapter.d.ts.map +1 -1
- package/dist/runtime/storage/filesystem-adapter.js +12 -3
- package/dist/runtime/storage/filesystem-adapter.js.map +1 -1
- package/dist/runtime/storage/frontmatter-codec.d.ts +5 -23
- package/dist/runtime/storage/frontmatter-codec.d.ts.map +1 -1
- package/dist/runtime/storage/frontmatter-codec.js +156 -13
- package/dist/runtime/storage/frontmatter-codec.js.map +1 -1
- package/dist/runtime/storage/in-memory-adapter.d.ts +7 -0
- package/dist/runtime/storage/in-memory-adapter.d.ts.map +1 -1
- package/dist/runtime/storage/in-memory-adapter.js +6 -0
- package/dist/runtime/storage/in-memory-adapter.js.map +1 -1
- package/dist/runtime/storage/markdown-adapter.d.ts.map +1 -1
- package/dist/runtime/storage/markdown-adapter.js +18 -20
- package/dist/runtime/storage/markdown-adapter.js.map +1 -1
- package/dist/runtime/storage/session-overlay-adapter.d.ts +12 -4
- package/dist/runtime/storage/session-overlay-adapter.d.ts.map +1 -1
- package/dist/runtime/storage/session-overlay-adapter.js +100 -13
- package/dist/runtime/storage/session-overlay-adapter.js.map +1 -1
- package/dist/runtime/storage/sidecar-meta-store.d.ts +5 -0
- package/dist/runtime/storage/sidecar-meta-store.d.ts.map +1 -1
- package/dist/runtime/storage/sidecar-meta-store.js +48 -5
- package/dist/runtime/storage/sidecar-meta-store.js.map +1 -1
- package/dist/runtime/themes/preset-tokens.js +4 -4
- package/dist/runtime/themes/preset-tokens.js.map +1 -1
- package/dist/runtime/utils.d.ts.map +1 -1
- package/dist/runtime/utils.js +3 -4
- package/dist/runtime/utils.js.map +1 -1
- package/dist/runtime/views/studio-layout.d.ts +3 -0
- package/dist/runtime/views/studio-layout.d.ts.map +1 -1
- package/dist/runtime/views/studio-layout.js +36 -13
- package/dist/runtime/views/studio-layout.js.map +1 -1
- package/dist/schema-utils.d.ts +7 -0
- package/dist/schema-utils.d.ts.map +1 -1
- package/dist/schema-utils.js +143 -0
- package/dist/schema-utils.js.map +1 -1
- package/dist/types.d.ts +165 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +12 -3
- package/static/cms/admin-entry.css +144 -13
- package/static/cms/admin-entry.js +539 -586
- package/static/cms/dev-toolbar/app.js +78 -19
- package/static/cms/editor/config.js +35 -15
- package/static/cms/editor/content-map.css +8 -1
- package/static/cms/editor/content-map.js +62 -23
- package/static/cms/editor/deployment-status.js +66 -0
- package/static/cms/editor/draft-client.js +87 -0
- package/static/cms/editor/guards.js +20 -0
- package/static/cms/editor/helpers.js +30 -1
- package/static/cms/editor/highlight.js +1 -0
- package/static/cms/editor/image-edit.js +44 -1
- package/static/cms/editor/image-utils.js +23 -7
- package/static/cms/editor/link-follow.js +122 -41
- package/static/cms/editor/link-ui.css +10 -1
- package/static/cms/editor/linkify.js +2 -0
- package/static/cms/editor/md-block-edit.js +140 -37
- package/static/cms/editor/md-paragraphs.js +98 -0
- package/static/cms/editor/md-serialize.js +1 -1
- package/static/cms/editor/panel.js +53 -7
- package/static/cms/editor/preview-mode.js +44 -0
- package/static/cms/editor/publish-result.js +100 -0
- package/static/cms/editor/rich-toolbar.js +58 -15
- package/static/cms/editor/sanitize.js +6 -2
- package/static/cms/editor/save-queue.js +75 -17
- package/static/cms/editor/section-controls/activation.js +3 -0
- package/static/cms/editor/section-controls/api.js +25 -7
- package/static/cms/editor/section-controls/index.js +60 -8
- package/static/cms/editor/section-controls/model.js +39 -4
- package/static/cms/editor/section-controls/mutations.js +15 -0
- package/static/cms/editor/section-controls/page-context.js +9 -0
- package/static/cms/editor/section-controls/pickers.js +53 -2
- package/static/cms/editor/section-controls/reorder.js +23 -0
- package/static/cms/editor/section-controls/selection.js +6 -0
- package/static/cms/editor/section-controls/spacing-drag.js +16 -0
- package/static/cms/editor/section-controls/ui-elements.js +7 -0
- package/static/cms/editor/section-controls/utils.js +7 -0
- package/static/cms/editor/section-controls.css +18 -3
- package/static/cms/editor/security.js +13 -2
- package/static/cms/editor/stega-hydrate.js +17 -4
- package/static/cms/editor/sync.js +475 -56
- package/static/cms/editor/text-edit.js +37 -3
- package/static/cms/editor/text-link-interactions.js +59 -17
- package/static/cms/editor/toast.js +23 -9
- package/static/cms/editor/tokens-and-text.css +9 -0
- package/static/cms/editor/toolbar.css +5 -0
- package/static/cms/editor/toolbar.js +91 -101
- package/static/cms/editor.css +1 -1
- package/static/cms/editor.js +1 -0
- package/static/cms/studio/entry-loader.js +102 -0
- package/static/cms/studio/field-model.js +110 -0
- package/static/cms/studio/fields.js +319 -0
- package/static/cms/studio/history-client.js +74 -0
- package/static/cms/studio/mutation-client.js +74 -0
- package/static/cms/studio/sync-client.js +107 -0
- package/static/cms/studio/upload-client.js +109 -0
- package/static/cms/studio-tokens.css +4 -4
- package/static/cms/studio.css +24 -0
package/dist/schema-utils.js
CHANGED
|
@@ -2,6 +2,149 @@
|
|
|
2
2
|
* Shared schema utility functions used by both the schema route and the
|
|
3
3
|
* virtual schemas module to build default templates from JSON Schema.
|
|
4
4
|
*/
|
|
5
|
+
function valueType(value) {
|
|
6
|
+
if (value === null)
|
|
7
|
+
return "null";
|
|
8
|
+
if (Array.isArray(value))
|
|
9
|
+
return "array";
|
|
10
|
+
if (typeof value === "number" && Number.isInteger(value))
|
|
11
|
+
return "integer";
|
|
12
|
+
return typeof value;
|
|
13
|
+
}
|
|
14
|
+
function resolveLocalRef(root, ref) {
|
|
15
|
+
if (!ref.startsWith("#/"))
|
|
16
|
+
return null;
|
|
17
|
+
let current = root;
|
|
18
|
+
for (const raw of ref.slice(2).split("/")) {
|
|
19
|
+
const key = raw.replace(/~1/g, "/").replace(/~0/g, "~");
|
|
20
|
+
if (!current || typeof current !== "object" || Array.isArray(current))
|
|
21
|
+
return null;
|
|
22
|
+
current = current[key];
|
|
23
|
+
}
|
|
24
|
+
return current && typeof current === "object" && !Array.isArray(current)
|
|
25
|
+
? current
|
|
26
|
+
: null;
|
|
27
|
+
}
|
|
28
|
+
/** Dependency-free validator for the JSON Schema subset Caret's Studio renders. */
|
|
29
|
+
export function validateJsonSchema(value, schema) {
|
|
30
|
+
const issues = [];
|
|
31
|
+
const visit = (current, node, path) => {
|
|
32
|
+
const ref = typeof node.$ref === "string" ? resolveLocalRef(schema, node.$ref) : null;
|
|
33
|
+
if (ref)
|
|
34
|
+
node = ref;
|
|
35
|
+
const allOf = Array.isArray(node.allOf) ? node.allOf : [];
|
|
36
|
+
for (const child of allOf) {
|
|
37
|
+
if (child && typeof child === "object" && !Array.isArray(child)) {
|
|
38
|
+
visit(current, child, path);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
const alternatives = Array.isArray(node.anyOf)
|
|
42
|
+
? node.anyOf
|
|
43
|
+
: Array.isArray(node.oneOf) ? node.oneOf : null;
|
|
44
|
+
if (alternatives) {
|
|
45
|
+
const valid = alternatives.some((candidate) => candidate && typeof candidate === "object" && !Array.isArray(candidate)
|
|
46
|
+
&& validateAgainst(current, candidate, path).length === 0);
|
|
47
|
+
if (!valid)
|
|
48
|
+
issues.push({ path, code: "invalid_union", message: "Value does not match an allowed schema" });
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
issues.push(...validateAgainst(current, node, path));
|
|
52
|
+
};
|
|
53
|
+
const validateAgainst = (current, node, path) => {
|
|
54
|
+
const local = [];
|
|
55
|
+
const allowedTypes = Array.isArray(node.type)
|
|
56
|
+
? node.type.filter((type) => typeof type === "string")
|
|
57
|
+
: typeof node.type === "string" ? [node.type] : [];
|
|
58
|
+
const actual = valueType(current);
|
|
59
|
+
const typeMatches = allowedTypes.length === 0
|
|
60
|
+
|| allowedTypes.includes(actual)
|
|
61
|
+
|| (actual === "integer" && allowedTypes.includes("number"));
|
|
62
|
+
if (!typeMatches) {
|
|
63
|
+
return [{ path, code: "invalid_type", message: `Expected ${allowedTypes.join(" or ")}, received ${actual}` }];
|
|
64
|
+
}
|
|
65
|
+
if (Array.isArray(node.enum) && !node.enum.some((candidate) => Object.is(candidate, current))) {
|
|
66
|
+
local.push({ path, code: "invalid_enum_value", message: "Value is not one of the allowed options" });
|
|
67
|
+
}
|
|
68
|
+
if (Object.prototype.hasOwnProperty.call(node, "const") && !Object.is(node.const, current)) {
|
|
69
|
+
local.push({ path, code: "invalid_literal", message: "Value does not match the required value" });
|
|
70
|
+
}
|
|
71
|
+
if (typeof current === "string") {
|
|
72
|
+
if (typeof node.minLength === "number" && current.length < node.minLength) {
|
|
73
|
+
local.push({ path, code: "too_small", message: `Must contain at least ${node.minLength} characters` });
|
|
74
|
+
}
|
|
75
|
+
if (typeof node.maxLength === "number" && current.length > node.maxLength) {
|
|
76
|
+
local.push({ path, code: "too_big", message: `Must contain at most ${node.maxLength} characters` });
|
|
77
|
+
}
|
|
78
|
+
if (typeof node.pattern === "string") {
|
|
79
|
+
try {
|
|
80
|
+
if (!new RegExp(node.pattern).test(current)) {
|
|
81
|
+
local.push({ path, code: "invalid_string", message: "Value has an invalid format" });
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
catch { /* an invalid schema pattern is ignored rather than blocking writes */ }
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
if (typeof current === "number") {
|
|
88
|
+
if (node.type === "integer" && !Number.isInteger(current)) {
|
|
89
|
+
local.push({ path, code: "invalid_type", message: "Expected an integer" });
|
|
90
|
+
}
|
|
91
|
+
if (typeof node.minimum === "number" && current < node.minimum) {
|
|
92
|
+
local.push({ path, code: "too_small", message: `Must be at least ${node.minimum}` });
|
|
93
|
+
}
|
|
94
|
+
if (typeof node.maximum === "number" && current > node.maximum) {
|
|
95
|
+
local.push({ path, code: "too_big", message: `Must be at most ${node.maximum}` });
|
|
96
|
+
}
|
|
97
|
+
if (typeof node.exclusiveMinimum === "number" && current <= node.exclusiveMinimum) {
|
|
98
|
+
local.push({ path, code: "too_small", message: `Must be greater than ${node.exclusiveMinimum}` });
|
|
99
|
+
}
|
|
100
|
+
if (typeof node.exclusiveMaximum === "number" && current >= node.exclusiveMaximum) {
|
|
101
|
+
local.push({ path, code: "too_big", message: `Must be less than ${node.exclusiveMaximum}` });
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
if (Array.isArray(current)) {
|
|
105
|
+
if (typeof node.minItems === "number" && current.length < node.minItems) {
|
|
106
|
+
local.push({ path, code: "too_small", message: `Must contain at least ${node.minItems} items` });
|
|
107
|
+
}
|
|
108
|
+
if (typeof node.maxItems === "number" && current.length > node.maxItems) {
|
|
109
|
+
local.push({ path, code: "too_big", message: `Must contain at most ${node.maxItems} items` });
|
|
110
|
+
}
|
|
111
|
+
if (node.items && typeof node.items === "object" && !Array.isArray(node.items)) {
|
|
112
|
+
current.forEach((item, index) => visit(item, node.items, path ? `${path}.${index}` : String(index)));
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
if (current && typeof current === "object" && !Array.isArray(current)) {
|
|
116
|
+
const record = current;
|
|
117
|
+
for (const required of node.required ?? []) {
|
|
118
|
+
if (!Object.prototype.hasOwnProperty.call(record, required)) {
|
|
119
|
+
local.push({
|
|
120
|
+
path: path ? `${path}.${required}` : required,
|
|
121
|
+
code: "required",
|
|
122
|
+
message: "Required field is missing",
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
for (const [key, child] of Object.entries(node.properties ?? {})) {
|
|
127
|
+
if (Object.prototype.hasOwnProperty.call(record, key)) {
|
|
128
|
+
visit(record[key], child, path ? `${path}.${key}` : key);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
if (node.additionalProperties === false) {
|
|
132
|
+
for (const key of Object.keys(record)) {
|
|
133
|
+
if (!Object.prototype.hasOwnProperty.call(node.properties ?? {}, key)) {
|
|
134
|
+
local.push({
|
|
135
|
+
path: path ? `${path}.${key}` : key,
|
|
136
|
+
code: "unrecognized_key",
|
|
137
|
+
message: "Unknown field",
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
return local;
|
|
144
|
+
};
|
|
145
|
+
visit(value, schema, "");
|
|
146
|
+
return issues;
|
|
147
|
+
}
|
|
5
148
|
export function inferJsonSchema(value) {
|
|
6
149
|
if (value === null || value === undefined) {
|
|
7
150
|
return { type: "string", default: "" };
|
package/dist/schema-utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-utils.js","sourceRoot":"","sources":["../src/schema-utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"schema-utils.js","sourceRoot":"","sources":["../src/schema-utils.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -3,6 +3,8 @@ export type EntryData = {
|
|
|
3
3
|
data: Record<string, unknown>;
|
|
4
4
|
};
|
|
5
5
|
export type HistoryEntry = {
|
|
6
|
+
/** Idempotency key for a recoverable publication. */
|
|
7
|
+
operationId?: string;
|
|
6
8
|
ts: number;
|
|
7
9
|
data: unknown;
|
|
8
10
|
action: string;
|
|
@@ -12,9 +14,11 @@ export type HistoryEntry = {
|
|
|
12
14
|
* only covers frontmatter for source-file-backed adapters).
|
|
13
15
|
*/
|
|
14
16
|
bodySource?: string;
|
|
17
|
+
/** Named editor/session responsible for the mutation, when available. */
|
|
18
|
+
editor?: EditorIdentity;
|
|
15
19
|
};
|
|
16
20
|
export type CaretMode = "embedded" | "cloud";
|
|
17
|
-
export type CaretProviderKind = "storage" | "uploads";
|
|
21
|
+
export type CaretProviderKind = "storage" | "uploads" | "identity" | "deployment";
|
|
18
22
|
export type RuntimeProviderReference<TKind extends CaretProviderKind = CaretProviderKind> = {
|
|
19
23
|
kind: TKind;
|
|
20
24
|
entrypoint: string;
|
|
@@ -23,6 +27,49 @@ export type RuntimeProviderReference<TKind extends CaretProviderKind = CaretProv
|
|
|
23
27
|
};
|
|
24
28
|
export type CaretStorageProvider = RuntimeProviderReference<"storage">;
|
|
25
29
|
export type CaretUploadProvider = RuntimeProviderReference<"uploads">;
|
|
30
|
+
export type CaretIdentityProvider = RuntimeProviderReference<"identity">;
|
|
31
|
+
export type CaretDeploymentProvider = RuntimeProviderReference<"deployment">;
|
|
32
|
+
export type EditorIdentity = {
|
|
33
|
+
/** Stable, path-safe id matching /^[A-Za-z0-9_-]{1,64}$/. */
|
|
34
|
+
id: string;
|
|
35
|
+
name?: string;
|
|
36
|
+
email?: string;
|
|
37
|
+
roles?: string[];
|
|
38
|
+
};
|
|
39
|
+
/** Write permissions. Reading content is not restricted by this interface. */
|
|
40
|
+
export type AuthorizationAction = "edit" | "publish" | "delete" | "manageCollections" | "upload";
|
|
41
|
+
export interface AuthorizationRequest {
|
|
42
|
+
identity: EditorIdentity;
|
|
43
|
+
request: Request;
|
|
44
|
+
action: AuthorizationAction;
|
|
45
|
+
/** Omitted for global actions (uploads, or an empty publish request). */
|
|
46
|
+
collection?: string;
|
|
47
|
+
/** Omitted for collection-wide actions. */
|
|
48
|
+
id?: string;
|
|
49
|
+
}
|
|
50
|
+
export interface AuthorizationPolicy {
|
|
51
|
+
/** Only literal true grants access. Throws and other values deny access. */
|
|
52
|
+
authorize(input: AuthorizationRequest): boolean | Promise<boolean>;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Optional authoritative authentication adapter. Returning an identity grants
|
|
56
|
+
* editor access; returning null denies it. When configured, password mode is
|
|
57
|
+
* disabled rather than used as a fallback.
|
|
58
|
+
*/
|
|
59
|
+
export interface IdentityAdapter {
|
|
60
|
+
/** Optional write policy. Without one authenticated editors retain full access.
|
|
61
|
+
* With one, content saves use private drafts even in server delivery. */
|
|
62
|
+
authorize?: AuthorizationPolicy["authorize"];
|
|
63
|
+
authenticate(request: Request): Promise<EditorIdentity | null>;
|
|
64
|
+
loginUrl(input: {
|
|
65
|
+
request: Request;
|
|
66
|
+
redirectTo: string;
|
|
67
|
+
}): string | Promise<string>;
|
|
68
|
+
logoutUrl?(input: {
|
|
69
|
+
request: Request;
|
|
70
|
+
redirectTo: string;
|
|
71
|
+
}): string | Promise<string>;
|
|
72
|
+
}
|
|
26
73
|
export type CollectionSchema = {
|
|
27
74
|
type: "object";
|
|
28
75
|
properties: Record<string, unknown>;
|
|
@@ -30,6 +77,34 @@ export type CollectionSchema = {
|
|
|
30
77
|
title?: string;
|
|
31
78
|
description?: string;
|
|
32
79
|
};
|
|
80
|
+
/** Studio presentation and mutation capabilities for a collection. */
|
|
81
|
+
export type CollectionStudioConfig = {
|
|
82
|
+
label?: string;
|
|
83
|
+
description?: string;
|
|
84
|
+
icon?: string;
|
|
85
|
+
/** Lower values appear first on the Studio home screen. */
|
|
86
|
+
order?: number;
|
|
87
|
+
creatable?: boolean;
|
|
88
|
+
orderable?: boolean;
|
|
89
|
+
deletable?: boolean;
|
|
90
|
+
/** Fixed entry id for a singleton collection. */
|
|
91
|
+
singletonId?: string;
|
|
92
|
+
/**
|
|
93
|
+
* Same-origin preview path for entries in this collection. A string may use
|
|
94
|
+
* `{id}` (for example `/journal/{id}`); an id-to-path map covers fixed pages
|
|
95
|
+
* such as `{ home: "/", about: "/about" }`.
|
|
96
|
+
*/
|
|
97
|
+
previewPath?: string | Record<string, string>;
|
|
98
|
+
/**
|
|
99
|
+
* Make publication a managed collection capability. Public Caret reads only
|
|
100
|
+
* return entries whose configured field is exactly `true`; authenticated
|
|
101
|
+
* editor reads continue to include drafts. The field defaults to `published`
|
|
102
|
+
* and must be declared as a top-level boolean in this collection's schema.
|
|
103
|
+
*/
|
|
104
|
+
publication?: {
|
|
105
|
+
field?: string;
|
|
106
|
+
};
|
|
107
|
+
};
|
|
33
108
|
export type CollectionMetadata = {
|
|
34
109
|
id: string;
|
|
35
110
|
label: string;
|
|
@@ -37,11 +112,93 @@ export type CollectionMetadata = {
|
|
|
37
112
|
icon?: string;
|
|
38
113
|
creatable?: boolean;
|
|
39
114
|
orderable?: boolean;
|
|
115
|
+
deletable?: boolean;
|
|
116
|
+
singletonId?: string;
|
|
117
|
+
previewPath?: string | Record<string, string>;
|
|
118
|
+
publication?: {
|
|
119
|
+
field?: string;
|
|
120
|
+
};
|
|
121
|
+
order?: number;
|
|
40
122
|
schema: CollectionSchema;
|
|
41
123
|
created_at: number;
|
|
42
124
|
updated_at: number;
|
|
43
125
|
};
|
|
126
|
+
export interface RebuildReceipt {
|
|
127
|
+
published: Array<{
|
|
128
|
+
collection: string;
|
|
129
|
+
id: string;
|
|
130
|
+
revision: number;
|
|
131
|
+
deleted: boolean;
|
|
132
|
+
}>;
|
|
133
|
+
commit: string | null;
|
|
134
|
+
}
|
|
135
|
+
/** The exact content transition associated with one accepted deployment request. */
|
|
136
|
+
export interface DeploymentTarget extends RebuildReceipt {
|
|
137
|
+
/** Correlation id also sent to the rebuild webhook. */
|
|
138
|
+
id: string;
|
|
139
|
+
requestedAt: number;
|
|
140
|
+
}
|
|
141
|
+
export type DeploymentState = "deploying" | "live" | "failed";
|
|
142
|
+
/** Provider evidence for the build associated with a deployment target. */
|
|
143
|
+
export interface DeploymentStatusEvidence {
|
|
144
|
+
state: DeploymentState;
|
|
145
|
+
/** Stable provider build/deployment identity, once the provider can resolve it. */
|
|
146
|
+
buildId: string | null;
|
|
147
|
+
/** Optional provider console or public deployment URL. */
|
|
148
|
+
buildUrl?: string;
|
|
149
|
+
/** Short provider-supplied detail suitable for an authenticated editor. */
|
|
150
|
+
message?: string;
|
|
151
|
+
/**
|
|
152
|
+
* Content proven to be included in the live build. Required when state is
|
|
153
|
+
* `live`; core checks it covers every revision in the target before showing
|
|
154
|
+
* the deployment as live.
|
|
155
|
+
*/
|
|
156
|
+
deployed?: RebuildReceipt;
|
|
157
|
+
}
|
|
158
|
+
export interface DeploymentStatusProvider {
|
|
159
|
+
getDeploymentStatus(input: {
|
|
160
|
+
target: DeploymentTarget;
|
|
161
|
+
request: Request;
|
|
162
|
+
}): Promise<DeploymentStatusEvidence>;
|
|
163
|
+
}
|
|
164
|
+
/** One validated entry transition submitted to an adapter atomically. */
|
|
165
|
+
export interface EntryCommit {
|
|
166
|
+
collection: string;
|
|
167
|
+
id: string;
|
|
168
|
+
/** Revision observed while the mutation was prepared. */
|
|
169
|
+
expectedRevision: number;
|
|
170
|
+
/** Whether an entry was visible while the mutation was prepared. */
|
|
171
|
+
expectedExists: boolean;
|
|
172
|
+
/** Replacement data, or null to delete the entry. */
|
|
173
|
+
data: Record<string, unknown> | null;
|
|
174
|
+
/** Optional snapshot appended only when the data transition commits. */
|
|
175
|
+
history?: HistoryEntry;
|
|
176
|
+
/** Lets an overlay preserve body-only draft merge semantics. */
|
|
177
|
+
writeMode?: "entry" | "body";
|
|
178
|
+
}
|
|
179
|
+
export type EntryCommitResult = {
|
|
180
|
+
ok: true;
|
|
181
|
+
revisions: Array<{
|
|
182
|
+
collection: string;
|
|
183
|
+
id: string;
|
|
184
|
+
revision: number;
|
|
185
|
+
}>;
|
|
186
|
+
} | {
|
|
187
|
+
ok: false;
|
|
188
|
+
conflict: {
|
|
189
|
+
collection: string;
|
|
190
|
+
id: string;
|
|
191
|
+
currentRevision: number;
|
|
192
|
+
exists: boolean;
|
|
193
|
+
};
|
|
194
|
+
};
|
|
44
195
|
export interface StorageAdapter {
|
|
196
|
+
/** Optional persistent deploy retry receipt, scoped to this editor overlay. */
|
|
197
|
+
getRebuildReceipt?(): Promise<RebuildReceipt | null>;
|
|
198
|
+
setRebuildReceipt?(receipt: RebuildReceipt | null): Promise<void>;
|
|
199
|
+
/** Latest accepted deployment request, scoped to this editor overlay. */
|
|
200
|
+
getDeploymentTarget?(): Promise<DeploymentTarget | null>;
|
|
201
|
+
setDeploymentTarget?(target: DeploymentTarget | null): Promise<void>;
|
|
45
202
|
discoverCollections(): Promise<string[]>;
|
|
46
203
|
isKnownCollection(collection: string): Promise<boolean>;
|
|
47
204
|
getEntry(collection: string, id: string): Promise<EntryData | null>;
|
|
@@ -53,6 +210,13 @@ export interface StorageAdapter {
|
|
|
53
210
|
bumpRevision(collection: string, id: string): Promise<number>;
|
|
54
211
|
getHistory(collection: string, id: string): Promise<HistoryEntry[]>;
|
|
55
212
|
appendHistory(collection: string, id: string, entry: HistoryEntry): Promise<void>;
|
|
213
|
+
/**
|
|
214
|
+
* Optional compare-and-commit primitive for distributed adapters. The adapter
|
|
215
|
+
* must compare every revision/existence precondition before changing anything,
|
|
216
|
+
* then atomically apply every entry, revision, history, and index transition.
|
|
217
|
+
* A conflict leaves the entire batch unchanged.
|
|
218
|
+
*/
|
|
219
|
+
commitEntries?(changes: readonly EntryCommit[]): Promise<EntryCommitResult>;
|
|
56
220
|
createCollection(metadata: CollectionMetadata): Promise<void>;
|
|
57
221
|
deleteCollection(collection: string): Promise<void>;
|
|
58
222
|
getCollectionMetadata(collection: string): Promise<CollectionMetadata | null>;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC;AACtE,MAAM,MAAM,YAAY,GAAG;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@caretcms/core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Platform-neutral core for CaretCMS: attribute-first inline editing, mutation engine, studio admin, StorageAdapter interface.",
|
|
6
6
|
"license": "MIT",
|
|
@@ -49,6 +49,14 @@
|
|
|
49
49
|
"types": "./dist/providers/uploads/local.d.ts",
|
|
50
50
|
"import": "./dist/providers/uploads/local.js"
|
|
51
51
|
},
|
|
52
|
+
"./providers/deployment/simulated": {
|
|
53
|
+
"types": "./dist/providers/deployment/simulated.d.ts",
|
|
54
|
+
"import": "./dist/providers/deployment/simulated.js"
|
|
55
|
+
},
|
|
56
|
+
"./providers/deployment/github": {
|
|
57
|
+
"types": "./dist/providers/deployment/github.d.ts",
|
|
58
|
+
"import": "./dist/providers/deployment/github.js"
|
|
59
|
+
},
|
|
52
60
|
"./contracts": {
|
|
53
61
|
"types": "./dist/contracts.d.ts",
|
|
54
62
|
"import": "./dist/contracts.js"
|
|
@@ -78,9 +86,10 @@
|
|
|
78
86
|
],
|
|
79
87
|
"scripts": {
|
|
80
88
|
"build": "tsc -p tsconfig.build.json",
|
|
81
|
-
"typecheck": "tsc -p tsconfig.json",
|
|
89
|
+
"typecheck": "tsc -p tsconfig.json && npm run typecheck:browser",
|
|
82
90
|
"clean": "rm -rf dist",
|
|
83
|
-
"prepublishOnly": "node scripts/check-version.mjs && npm run clean && npm run build"
|
|
91
|
+
"prepublishOnly": "node scripts/check-version.mjs && npm run clean && npm run build",
|
|
92
|
+
"typecheck:browser": "tsc -p tsconfig.browser.json"
|
|
84
93
|
},
|
|
85
94
|
"publishConfig": {
|
|
86
95
|
"access": "public"
|
|
@@ -15,6 +15,32 @@
|
|
|
15
15
|
.caret-field-group .studio-label { margin-bottom: 0.5rem; }
|
|
16
16
|
.caret-field-inline .studio-label { margin-bottom: 0; }
|
|
17
17
|
|
|
18
|
+
.caret-field-with-help {
|
|
19
|
+
display: grid;
|
|
20
|
+
grid-template-columns: minmax(0, 1fr) auto;
|
|
21
|
+
gap: 0.25rem 1rem;
|
|
22
|
+
}
|
|
23
|
+
.caret-field-with-help .caret-field-help {
|
|
24
|
+
grid-column: 1 / -1;
|
|
25
|
+
}
|
|
26
|
+
.caret-field-help,
|
|
27
|
+
.caret-image-help {
|
|
28
|
+
margin: 0.5rem 0 0;
|
|
29
|
+
color: var(--studio-text-dim);
|
|
30
|
+
font-size: 0.7rem;
|
|
31
|
+
line-height: 1.5;
|
|
32
|
+
}
|
|
33
|
+
.caret-image-help.is-error { color: var(--studio-red); }
|
|
34
|
+
|
|
35
|
+
.studio-btn-danger-confirm,
|
|
36
|
+
.studio-btn-danger-confirm:hover {
|
|
37
|
+
background: #991b1b;
|
|
38
|
+
background: color-mix(in srgb, var(--studio-red) 35%, #000);
|
|
39
|
+
border-color: #991b1b;
|
|
40
|
+
border-color: color-mix(in srgb, var(--studio-red) 35%, #000);
|
|
41
|
+
color: #fff;
|
|
42
|
+
}
|
|
43
|
+
|
|
18
44
|
.caret-nested {
|
|
19
45
|
padding-left: 1rem;
|
|
20
46
|
border-left: 1px solid var(--studio-border);
|
|
@@ -88,11 +114,16 @@
|
|
|
88
114
|
/* Single image */
|
|
89
115
|
.caret-single-image-preview {
|
|
90
116
|
position: relative;
|
|
91
|
-
width:
|
|
92
|
-
|
|
117
|
+
width: min(100%, 320px);
|
|
118
|
+
aspect-ratio: 4 / 3;
|
|
93
119
|
margin-bottom: 0.75rem;
|
|
94
120
|
border: 1px solid var(--studio-border);
|
|
121
|
+
border-radius: var(--radius-theme-sm);
|
|
122
|
+
padding: 0;
|
|
95
123
|
overflow: hidden;
|
|
124
|
+
display: block;
|
|
125
|
+
cursor: pointer;
|
|
126
|
+
background: var(--studio-surface);
|
|
96
127
|
}
|
|
97
128
|
.caret-single-image-preview img {
|
|
98
129
|
width: 100%;
|
|
@@ -100,6 +131,41 @@
|
|
|
100
131
|
object-fit: cover;
|
|
101
132
|
display: block;
|
|
102
133
|
}
|
|
134
|
+
.caret-single-image-overlay {
|
|
135
|
+
position: absolute;
|
|
136
|
+
inset: auto 0 0;
|
|
137
|
+
padding: 0.65rem;
|
|
138
|
+
color: white;
|
|
139
|
+
background: linear-gradient(transparent, rgba(0, 0, 0, 0.78));
|
|
140
|
+
font-size: 0.7rem;
|
|
141
|
+
font-weight: 600;
|
|
142
|
+
letter-spacing: 0.04em;
|
|
143
|
+
opacity: 0;
|
|
144
|
+
transform: translateY(0.25rem);
|
|
145
|
+
transition: opacity 0.15s, transform 0.15s;
|
|
146
|
+
}
|
|
147
|
+
.caret-single-image-preview:hover .caret-single-image-overlay,
|
|
148
|
+
.caret-single-image-preview:focus-visible .caret-single-image-overlay {
|
|
149
|
+
opacity: 1;
|
|
150
|
+
transform: translateY(0);
|
|
151
|
+
}
|
|
152
|
+
.caret-single-image-empty {
|
|
153
|
+
width: min(100%, 320px);
|
|
154
|
+
aspect-ratio: 4 / 3;
|
|
155
|
+
margin-bottom: 0.75rem;
|
|
156
|
+
border: 2px dashed var(--studio-border-hover);
|
|
157
|
+
border-radius: var(--radius-theme-sm);
|
|
158
|
+
background: var(--studio-surface);
|
|
159
|
+
color: var(--studio-text-muted);
|
|
160
|
+
cursor: pointer;
|
|
161
|
+
transition: border-color 0.15s, color 0.15s, background 0.15s;
|
|
162
|
+
}
|
|
163
|
+
.caret-single-image-empty:hover,
|
|
164
|
+
.caret-single-image-empty:focus-visible {
|
|
165
|
+
border-color: var(--studio-accent);
|
|
166
|
+
color: var(--studio-accent);
|
|
167
|
+
background: var(--studio-accent-soft);
|
|
168
|
+
}
|
|
103
169
|
.caret-single-image-row {
|
|
104
170
|
display: flex;
|
|
105
171
|
align-items: center;
|
|
@@ -126,14 +192,48 @@
|
|
|
126
192
|
}
|
|
127
193
|
.caret-object-array-item {
|
|
128
194
|
position: relative;
|
|
129
|
-
padding:
|
|
195
|
+
padding: 1rem;
|
|
130
196
|
border: 1px solid var(--studio-border);
|
|
197
|
+
border-radius: var(--radius-theme-sm);
|
|
131
198
|
background: rgba(255, 255, 255, 0.02);
|
|
132
199
|
}
|
|
200
|
+
.caret-object-array-item.caret-object-array-dragging {
|
|
201
|
+
opacity: 0.5;
|
|
202
|
+
}
|
|
203
|
+
.caret-object-array-item.caret-object-array-drag-over {
|
|
204
|
+
border-color: var(--studio-accent);
|
|
205
|
+
box-shadow: 0 0 0 2px var(--studio-accent-soft);
|
|
206
|
+
}
|
|
207
|
+
.caret-object-array-header {
|
|
208
|
+
display: flex;
|
|
209
|
+
align-items: center;
|
|
210
|
+
justify-content: space-between;
|
|
211
|
+
gap: 0.75rem;
|
|
212
|
+
margin-bottom: 0.25rem;
|
|
213
|
+
}
|
|
214
|
+
.caret-object-array-actions {
|
|
215
|
+
display: flex;
|
|
216
|
+
align-items: center;
|
|
217
|
+
gap: 0.25rem;
|
|
218
|
+
}
|
|
219
|
+
.caret-object-array-drag {
|
|
220
|
+
flex: 0 0 auto;
|
|
221
|
+
width: 26px;
|
|
222
|
+
height: 26px;
|
|
223
|
+
padding: 0;
|
|
224
|
+
border: 0;
|
|
225
|
+
background: transparent;
|
|
226
|
+
color: var(--studio-text-dim);
|
|
227
|
+
cursor: grab;
|
|
228
|
+
font-size: 18px;
|
|
229
|
+
line-height: 1;
|
|
230
|
+
}
|
|
231
|
+
.caret-object-array-drag:active { cursor: grabbing; }
|
|
232
|
+
.caret-object-array-drag:focus-visible {
|
|
233
|
+
outline: 2px solid var(--studio-accent);
|
|
234
|
+
outline-offset: 2px;
|
|
235
|
+
}
|
|
133
236
|
.caret-object-array-remove {
|
|
134
|
-
position: absolute;
|
|
135
|
-
top: 6px;
|
|
136
|
-
right: 6px;
|
|
137
237
|
width: 22px;
|
|
138
238
|
height: 22px;
|
|
139
239
|
border: none;
|
|
@@ -142,20 +242,44 @@
|
|
|
142
242
|
cursor: pointer;
|
|
143
243
|
font-size: 16px;
|
|
144
244
|
line-height: 1;
|
|
145
|
-
|
|
146
|
-
transition: opacity 0.15s;
|
|
245
|
+
transition: background 0.15s;
|
|
147
246
|
}
|
|
148
|
-
.caret-object-array-
|
|
247
|
+
.caret-object-array-remove:hover { background: rgba(239, 68, 68, 0.12); }
|
|
248
|
+
.caret-object-array-move {
|
|
249
|
+
width: 26px;
|
|
250
|
+
height: 26px;
|
|
251
|
+
padding: 0;
|
|
252
|
+
border: 1px solid var(--studio-border);
|
|
253
|
+
border-radius: var(--radius-theme-xs);
|
|
254
|
+
background: transparent;
|
|
255
|
+
color: var(--studio-text-muted);
|
|
256
|
+
cursor: pointer;
|
|
257
|
+
}
|
|
258
|
+
.caret-object-array-move:hover:not(:disabled) {
|
|
259
|
+
border-color: var(--studio-accent);
|
|
260
|
+
color: var(--studio-accent);
|
|
261
|
+
}
|
|
262
|
+
.caret-object-array-move:disabled { opacity: 0.3; cursor: default; }
|
|
149
263
|
.caret-object-array-index {
|
|
150
264
|
display: block;
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
265
|
+
flex: 1 1 auto;
|
|
266
|
+
min-width: 0;
|
|
267
|
+
overflow: hidden;
|
|
268
|
+
text-overflow: ellipsis;
|
|
269
|
+
white-space: nowrap;
|
|
270
|
+
font-size: 0.75rem;
|
|
271
|
+
font-weight: 600;
|
|
272
|
+
color: var(--studio-text-muted);
|
|
154
273
|
}
|
|
155
274
|
.caret-object-array-fields {
|
|
156
275
|
display: flex;
|
|
157
276
|
flex-direction: column;
|
|
158
|
-
|
|
277
|
+
}
|
|
278
|
+
.caret-object-array-fields > .caret-field-group {
|
|
279
|
+
padding: 0.75rem 0;
|
|
280
|
+
}
|
|
281
|
+
.caret-object-array-fields > .caret-field-group:last-child {
|
|
282
|
+
border-bottom: 0;
|
|
159
283
|
}
|
|
160
284
|
.caret-object-array-row {
|
|
161
285
|
display: flex;
|
|
@@ -205,3 +329,10 @@
|
|
|
205
329
|
.caret-history-action[data-action="put"] { background: rgba(59,130,246,0.15); color: var(--studio-blue); }
|
|
206
330
|
.caret-history-action[data-action="delete"] { background: rgba(239,68,68,0.15); color: var(--studio-red); }
|
|
207
331
|
.caret-history-action[data-action="restore"] { background: rgba(59,130,246,0.15); color: var(--studio-accent); }
|
|
332
|
+
|
|
333
|
+
/* Paired live-page/Studio selection. This is deliberately blue and temporary;
|
|
334
|
+
green remains reserved for confirmed save feedback. */
|
|
335
|
+
.caret-field-group.caret-field-selected {
|
|
336
|
+
background: color-mix(in srgb, var(--studio-accent) 8%, transparent);
|
|
337
|
+
box-shadow: inset 3px 0 0 var(--studio-accent);
|
|
338
|
+
}
|