@caretcms/core 0.1.2 → 0.3.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 +109 -13
- package/dist/contracts.d.ts +1 -0
- package/dist/contracts.d.ts.map +1 -1
- package/dist/contracts.js +1 -0
- package/dist/contracts.js.map +1 -1
- package/dist/index.d.ts +31 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +146 -30
- package/dist/index.js.map +1 -1
- package/dist/loader.d.ts +17 -6
- package/dist/loader.d.ts.map +1 -1
- package/dist/loader.js +57 -14
- package/dist/loader.js.map +1 -1
- package/dist/markdown/block-context.d.ts +21 -0
- package/dist/markdown/block-context.d.ts.map +1 -0
- package/dist/markdown/block-context.js +27 -0
- package/dist/markdown/block-context.js.map +1 -0
- package/dist/markdown/canonical-body.d.ts +30 -0
- package/dist/markdown/canonical-body.d.ts.map +1 -0
- package/dist/markdown/canonical-body.js +54 -0
- package/dist/markdown/canonical-body.js.map +1 -0
- package/dist/markdown/contracts.d.ts +66 -0
- package/dist/markdown/contracts.d.ts.map +1 -0
- package/dist/markdown/contracts.js +102 -0
- package/dist/markdown/contracts.js.map +1 -0
- package/dist/markdown/html-to-snodes.d.ts +26 -0
- package/dist/markdown/html-to-snodes.d.ts.map +1 -0
- package/dist/markdown/html-to-snodes.js +118 -0
- package/dist/markdown/html-to-snodes.js.map +1 -0
- package/dist/markdown/remark.d.ts +35 -0
- package/dist/markdown/remark.d.ts.map +1 -0
- package/dist/markdown/remark.js +66 -0
- package/dist/markdown/remark.js.map +1 -0
- package/dist/markdown/satteri.d.ts +19 -0
- package/dist/markdown/satteri.d.ts.map +1 -0
- package/dist/markdown/satteri.js +144 -0
- package/dist/markdown/satteri.js.map +1 -0
- package/dist/markdown/serialize.d.ts +60 -0
- package/dist/markdown/serialize.d.ts.map +1 -0
- package/dist/markdown/serialize.js +264 -0
- package/dist/markdown/serialize.js.map +1 -0
- package/dist/markdown/splice.d.ts +32 -0
- package/dist/markdown/splice.d.ts.map +1 -0
- package/dist/markdown/splice.js +44 -0
- package/dist/markdown/splice.js.map +1 -0
- package/dist/markdown/stamp.d.ts +68 -0
- package/dist/markdown/stamp.d.ts.map +1 -0
- package/dist/markdown/stamp.js +131 -0
- package/dist/markdown/stamp.js.map +1 -0
- package/dist/runtime/auth/rate-limiter.d.ts.map +1 -1
- package/dist/runtime/auth/rate-limiter.js +5 -0
- package/dist/runtime/auth/rate-limiter.js.map +1 -1
- package/dist/runtime/auth/session.d.ts +3 -3
- package/dist/runtime/auth/session.d.ts.map +1 -1
- package/dist/runtime/auth/session.js +68 -21
- package/dist/runtime/auth/session.js.map +1 -1
- 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.d.ts.map +1 -1
- package/dist/runtime/content.js +4 -2
- package/dist/runtime/content.js.map +1 -1
- package/dist/runtime/i18n.d.ts +86 -0
- package/dist/runtime/i18n.d.ts.map +1 -0
- package/dist/runtime/i18n.js +168 -0
- package/dist/runtime/i18n.js.map +1 -0
- package/dist/runtime/middleware.d.ts.map +1 -1
- package/dist/runtime/middleware.js +61 -6
- package/dist/runtime/middleware.js.map +1 -1
- package/dist/runtime/mutations/contracts.d.ts +28 -1
- package/dist/runtime/mutations/contracts.d.ts.map +1 -1
- package/dist/runtime/mutations/contracts.js +76 -0
- package/dist/runtime/mutations/contracts.js.map +1 -1
- package/dist/runtime/mutations/engine.d.ts +6 -1
- package/dist/runtime/mutations/engine.d.ts.map +1 -1
- package/dist/runtime/mutations/engine.js +271 -51
- package/dist/runtime/mutations/engine.js.map +1 -1
- package/dist/runtime/providers.d.ts +2 -1
- package/dist/runtime/providers.d.ts.map +1 -1
- package/dist/runtime/providers.js +7 -1
- package/dist/runtime/providers.js.map +1 -1
- package/dist/runtime/publish.d.ts +13 -1
- package/dist/runtime/publish.d.ts.map +1 -1
- package/dist/runtime/publish.js +80 -4
- package/dist/runtime/publish.js.map +1 -1
- package/dist/runtime/request-context.d.ts +14 -2
- 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 +109 -3
- package/dist/runtime/rewrite.js.map +1 -1
- package/dist/runtime/rich-allowlist.d.ts.map +1 -1
- package/dist/runtime/rich-allowlist.js +5 -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 +114 -18
- 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 +33 -15
- 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 +4 -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 +64 -41
- package/dist/runtime/routes/collection-list.js.map +1 -1
- package/dist/runtime/routes/entries.d.ts.map +1 -1
- package/dist/runtime/routes/entries.js +16 -6
- 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 +50 -22
- 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 +40 -6
- 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 +5 -2
- 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 -3
- 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 +38 -19
- package/dist/runtime/routes/studio-home.js.map +1 -1
- package/dist/runtime/routes/theme-stylesheet.d.ts.map +1 -1
- package/dist/runtime/routes/theme-stylesheet.js +11 -1
- package/dist/runtime/routes/theme-stylesheet.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 +47 -3
- package/dist/runtime/schema-registry.js.map +1 -1
- package/dist/runtime/storage/atomic-write.d.ts.map +1 -1
- package/dist/runtime/storage/atomic-write.js +8 -3
- package/dist/runtime/storage/atomic-write.js.map +1 -1
- package/dist/runtime/storage/markdown-adapter.d.ts +19 -0
- package/dist/runtime/storage/markdown-adapter.d.ts.map +1 -1
- package/dist/runtime/storage/markdown-adapter.js +41 -0
- package/dist/runtime/storage/markdown-adapter.js.map +1 -1
- package/dist/runtime/storage/session-overlay-adapter.d.ts +8 -0
- package/dist/runtime/storage/session-overlay-adapter.d.ts.map +1 -1
- package/dist/runtime/storage/session-overlay-adapter.js +24 -2
- package/dist/runtime/storage/session-overlay-adapter.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 +10 -0
- package/dist/runtime/utils.d.ts.map +1 -1
- package/dist/runtime/utils.js +16 -0
- 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 +83 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -2
- package/static/cms/admin-entry.css +135 -13
- package/static/cms/admin-entry.js +509 -86
- package/static/cms/editor/guards.js +1 -1
- package/static/cms/editor/image-edit.js +42 -11
- package/static/cms/editor/image.css +7 -1
- package/static/cms/editor/md-block-edit.js +176 -0
- package/static/cms/editor/md-serialize.js +301 -0
- package/static/cms/editor/panel.css +69 -25
- package/static/cms/editor/panel.js +58 -1
- package/static/cms/editor/rich-toolbar.js +4 -3
- package/static/cms/editor/sanitize.js +2 -1
- package/static/cms/editor/sync.js +277 -56
- package/static/cms/editor/text-edit.js +68 -17
- package/static/cms/editor/text-link-interactions.js +4 -4
- package/static/cms/editor/toast.css +114 -2
- package/static/cms/editor/toast.js +121 -22
- package/static/cms/editor/tokens-and-text.css +73 -3
- package/static/cms/editor/toolbar.css +19 -6
- package/static/cms/editor/toolbar.js +64 -23
- package/static/cms/editor.css +1 -1
- package/static/cms/editor.js +14 -3
- package/static/cms/studio-tokens.css +4 -4
- package/static/cms/studio.css +24 -0
|
@@ -15,6 +15,23 @@
|
|
|
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
|
+
|
|
18
35
|
.caret-nested {
|
|
19
36
|
padding-left: 1rem;
|
|
20
37
|
border-left: 1px solid var(--studio-border);
|
|
@@ -88,11 +105,16 @@
|
|
|
88
105
|
/* Single image */
|
|
89
106
|
.caret-single-image-preview {
|
|
90
107
|
position: relative;
|
|
91
|
-
width:
|
|
92
|
-
|
|
108
|
+
width: min(100%, 320px);
|
|
109
|
+
aspect-ratio: 4 / 3;
|
|
93
110
|
margin-bottom: 0.75rem;
|
|
94
111
|
border: 1px solid var(--studio-border);
|
|
112
|
+
border-radius: var(--radius-theme-sm);
|
|
113
|
+
padding: 0;
|
|
95
114
|
overflow: hidden;
|
|
115
|
+
display: block;
|
|
116
|
+
cursor: pointer;
|
|
117
|
+
background: var(--studio-surface);
|
|
96
118
|
}
|
|
97
119
|
.caret-single-image-preview img {
|
|
98
120
|
width: 100%;
|
|
@@ -100,6 +122,41 @@
|
|
|
100
122
|
object-fit: cover;
|
|
101
123
|
display: block;
|
|
102
124
|
}
|
|
125
|
+
.caret-single-image-overlay {
|
|
126
|
+
position: absolute;
|
|
127
|
+
inset: auto 0 0;
|
|
128
|
+
padding: 0.65rem;
|
|
129
|
+
color: white;
|
|
130
|
+
background: linear-gradient(transparent, rgba(0, 0, 0, 0.78));
|
|
131
|
+
font-size: 0.7rem;
|
|
132
|
+
font-weight: 600;
|
|
133
|
+
letter-spacing: 0.04em;
|
|
134
|
+
opacity: 0;
|
|
135
|
+
transform: translateY(0.25rem);
|
|
136
|
+
transition: opacity 0.15s, transform 0.15s;
|
|
137
|
+
}
|
|
138
|
+
.caret-single-image-preview:hover .caret-single-image-overlay,
|
|
139
|
+
.caret-single-image-preview:focus-visible .caret-single-image-overlay {
|
|
140
|
+
opacity: 1;
|
|
141
|
+
transform: translateY(0);
|
|
142
|
+
}
|
|
143
|
+
.caret-single-image-empty {
|
|
144
|
+
width: min(100%, 320px);
|
|
145
|
+
aspect-ratio: 4 / 3;
|
|
146
|
+
margin-bottom: 0.75rem;
|
|
147
|
+
border: 2px dashed var(--studio-border-hover);
|
|
148
|
+
border-radius: var(--radius-theme-sm);
|
|
149
|
+
background: var(--studio-surface);
|
|
150
|
+
color: var(--studio-text-muted);
|
|
151
|
+
cursor: pointer;
|
|
152
|
+
transition: border-color 0.15s, color 0.15s, background 0.15s;
|
|
153
|
+
}
|
|
154
|
+
.caret-single-image-empty:hover,
|
|
155
|
+
.caret-single-image-empty:focus-visible {
|
|
156
|
+
border-color: var(--studio-accent);
|
|
157
|
+
color: var(--studio-accent);
|
|
158
|
+
background: var(--studio-accent-soft);
|
|
159
|
+
}
|
|
103
160
|
.caret-single-image-row {
|
|
104
161
|
display: flex;
|
|
105
162
|
align-items: center;
|
|
@@ -126,14 +183,48 @@
|
|
|
126
183
|
}
|
|
127
184
|
.caret-object-array-item {
|
|
128
185
|
position: relative;
|
|
129
|
-
padding:
|
|
186
|
+
padding: 1rem;
|
|
130
187
|
border: 1px solid var(--studio-border);
|
|
188
|
+
border-radius: var(--radius-theme-sm);
|
|
131
189
|
background: rgba(255, 255, 255, 0.02);
|
|
132
190
|
}
|
|
191
|
+
.caret-object-array-item.caret-object-array-dragging {
|
|
192
|
+
opacity: 0.5;
|
|
193
|
+
}
|
|
194
|
+
.caret-object-array-item.caret-object-array-drag-over {
|
|
195
|
+
border-color: var(--studio-accent);
|
|
196
|
+
box-shadow: 0 0 0 2px var(--studio-accent-soft);
|
|
197
|
+
}
|
|
198
|
+
.caret-object-array-header {
|
|
199
|
+
display: flex;
|
|
200
|
+
align-items: center;
|
|
201
|
+
justify-content: space-between;
|
|
202
|
+
gap: 0.75rem;
|
|
203
|
+
margin-bottom: 0.25rem;
|
|
204
|
+
}
|
|
205
|
+
.caret-object-array-actions {
|
|
206
|
+
display: flex;
|
|
207
|
+
align-items: center;
|
|
208
|
+
gap: 0.25rem;
|
|
209
|
+
}
|
|
210
|
+
.caret-object-array-drag {
|
|
211
|
+
flex: 0 0 auto;
|
|
212
|
+
width: 26px;
|
|
213
|
+
height: 26px;
|
|
214
|
+
padding: 0;
|
|
215
|
+
border: 0;
|
|
216
|
+
background: transparent;
|
|
217
|
+
color: var(--studio-text-dim);
|
|
218
|
+
cursor: grab;
|
|
219
|
+
font-size: 18px;
|
|
220
|
+
line-height: 1;
|
|
221
|
+
}
|
|
222
|
+
.caret-object-array-drag:active { cursor: grabbing; }
|
|
223
|
+
.caret-object-array-drag:focus-visible {
|
|
224
|
+
outline: 2px solid var(--studio-accent);
|
|
225
|
+
outline-offset: 2px;
|
|
226
|
+
}
|
|
133
227
|
.caret-object-array-remove {
|
|
134
|
-
position: absolute;
|
|
135
|
-
top: 6px;
|
|
136
|
-
right: 6px;
|
|
137
228
|
width: 22px;
|
|
138
229
|
height: 22px;
|
|
139
230
|
border: none;
|
|
@@ -142,20 +233,44 @@
|
|
|
142
233
|
cursor: pointer;
|
|
143
234
|
font-size: 16px;
|
|
144
235
|
line-height: 1;
|
|
145
|
-
|
|
146
|
-
transition: opacity 0.15s;
|
|
236
|
+
transition: background 0.15s;
|
|
147
237
|
}
|
|
148
|
-
.caret-object-array-
|
|
238
|
+
.caret-object-array-remove:hover { background: rgba(239, 68, 68, 0.12); }
|
|
239
|
+
.caret-object-array-move {
|
|
240
|
+
width: 26px;
|
|
241
|
+
height: 26px;
|
|
242
|
+
padding: 0;
|
|
243
|
+
border: 1px solid var(--studio-border);
|
|
244
|
+
border-radius: var(--radius-theme-xs);
|
|
245
|
+
background: transparent;
|
|
246
|
+
color: var(--studio-text-muted);
|
|
247
|
+
cursor: pointer;
|
|
248
|
+
}
|
|
249
|
+
.caret-object-array-move:hover:not(:disabled) {
|
|
250
|
+
border-color: var(--studio-accent);
|
|
251
|
+
color: var(--studio-accent);
|
|
252
|
+
}
|
|
253
|
+
.caret-object-array-move:disabled { opacity: 0.3; cursor: default; }
|
|
149
254
|
.caret-object-array-index {
|
|
150
255
|
display: block;
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
256
|
+
flex: 1 1 auto;
|
|
257
|
+
min-width: 0;
|
|
258
|
+
overflow: hidden;
|
|
259
|
+
text-overflow: ellipsis;
|
|
260
|
+
white-space: nowrap;
|
|
261
|
+
font-size: 0.75rem;
|
|
262
|
+
font-weight: 600;
|
|
263
|
+
color: var(--studio-text-muted);
|
|
154
264
|
}
|
|
155
265
|
.caret-object-array-fields {
|
|
156
266
|
display: flex;
|
|
157
267
|
flex-direction: column;
|
|
158
|
-
|
|
268
|
+
}
|
|
269
|
+
.caret-object-array-fields > .caret-field-group {
|
|
270
|
+
padding: 0.75rem 0;
|
|
271
|
+
}
|
|
272
|
+
.caret-object-array-fields > .caret-field-group:last-child {
|
|
273
|
+
border-bottom: 0;
|
|
159
274
|
}
|
|
160
275
|
.caret-object-array-row {
|
|
161
276
|
display: flex;
|
|
@@ -205,3 +320,10 @@
|
|
|
205
320
|
.caret-history-action[data-action="put"] { background: rgba(59,130,246,0.15); color: var(--studio-blue); }
|
|
206
321
|
.caret-history-action[data-action="delete"] { background: rgba(239,68,68,0.15); color: var(--studio-red); }
|
|
207
322
|
.caret-history-action[data-action="restore"] { background: rgba(59,130,246,0.15); color: var(--studio-accent); }
|
|
323
|
+
|
|
324
|
+
/* Paired live-page/Studio selection. This is deliberately blue and temporary;
|
|
325
|
+
green remains reserved for confirmed save feedback. */
|
|
326
|
+
.caret-field-group.caret-field-selected {
|
|
327
|
+
background: color-mix(in srgb, var(--studio-accent) 8%, transparent);
|
|
328
|
+
box-shadow: inset 3px 0 0 var(--studio-accent);
|
|
329
|
+
}
|