@actuate-media/cms-admin 0.11.0 → 0.12.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.
Files changed (37) hide show
  1. package/LICENSE +21 -21
  2. package/dist/__tests__/fields/component-block-helpers.test.d.ts +7 -0
  3. package/dist/__tests__/fields/component-block-helpers.test.d.ts.map +1 -0
  4. package/dist/__tests__/fields/component-block-helpers.test.js +592 -0
  5. package/dist/__tests__/fields/component-block-helpers.test.js.map +1 -0
  6. package/dist/fields/ComponentBlockField.d.ts +25 -0
  7. package/dist/fields/ComponentBlockField.d.ts.map +1 -0
  8. package/dist/fields/ComponentBlockField.js +74 -0
  9. package/dist/fields/ComponentBlockField.js.map +1 -0
  10. package/dist/fields/FieldRenderer.d.ts +3 -0
  11. package/dist/fields/FieldRenderer.d.ts.map +1 -1
  12. package/dist/fields/FieldRenderer.js +3 -1
  13. package/dist/fields/FieldRenderer.js.map +1 -1
  14. package/dist/fields/PropInput.d.ts +14 -0
  15. package/dist/fields/PropInput.d.ts.map +1 -0
  16. package/dist/fields/PropInput.js +163 -0
  17. package/dist/fields/PropInput.js.map +1 -0
  18. package/dist/fields/component-block-helpers.d.ts +96 -0
  19. package/dist/fields/component-block-helpers.d.ts.map +1 -0
  20. package/dist/fields/component-block-helpers.js +323 -0
  21. package/dist/fields/component-block-helpers.js.map +1 -0
  22. package/dist/fields/index.d.ts +4 -0
  23. package/dist/fields/index.d.ts.map +1 -1
  24. package/dist/fields/index.js +2 -0
  25. package/dist/fields/index.js.map +1 -1
  26. package/dist/index.d.ts +2 -0
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +1 -0
  29. package/dist/index.js.map +1 -1
  30. package/package.json +10 -3
  31. package/src/__tests__/fields/component-block-helpers.test.ts +674 -0
  32. package/src/fields/ComponentBlockField.tsx +179 -0
  33. package/src/fields/FieldRenderer.tsx +8 -0
  34. package/src/fields/PropInput.tsx +552 -0
  35. package/src/fields/component-block-helpers.ts +341 -0
  36. package/src/fields/index.ts +4 -0
  37. package/src/index.ts +7 -0
@@ -0,0 +1,323 @@
1
+ /**
2
+ * Pure helpers behind `<ComponentBlockField>`. Extracted so vitest can
3
+ * exercise them in node without spinning up jsdom — the React component
4
+ * just composes these into UI.
5
+ *
6
+ * Kept structurally typed (no peer-dep import of types here would be
7
+ * cleaner, but the `PropType` discriminated union is the contract we
8
+ * promise consumers, so we lean on the package's types).
9
+ */
10
+ import { detectDiscriminator, findVariant, } from '@actuate-media/component-blocks/discriminated-union';
11
+ /**
12
+ * Compute the list of components an editor can pick from given the
13
+ * manifest + the optional allow-list. Returns the full list when no
14
+ * filter is provided; returns `[]` when every entry is filtered out
15
+ * (the caller renders an error in that case).
16
+ */
17
+ export function getAllowedComponents(manifest, allow) {
18
+ if (!allow || allow.length === 0)
19
+ return manifest.components;
20
+ return manifest.components.filter((c) => allow.includes(c.name));
21
+ }
22
+ /**
23
+ * JSON-encode any value so it round-trips cleanly through the
24
+ * JsonFallback textarea. Previously the helper short-circuited for
25
+ * strings (returning the raw string), which made the textarea
26
+ * stateful: typing `"hello"` parsed to the JS string `hello`,
27
+ * re-rendered as bare `hello`, then `JSON.parse('hello')` threw on
28
+ * the next edit and the field "locked" as a raw string. Always
29
+ * stringifying keeps the textarea visually consistent with the
30
+ * underlying JSON value.
31
+ *
32
+ * Falls back to `String(v)` for values that can't be JSON-encoded
33
+ * (e.g. circular refs) so the field remains editable.
34
+ */
35
+ export function safeJsonStringify(v) {
36
+ try {
37
+ return JSON.stringify(v, null, 2);
38
+ }
39
+ catch {
40
+ return String(v);
41
+ }
42
+ }
43
+ /**
44
+ * Map an `<select>` change-event value to an enum-prop value.
45
+ *
46
+ * The placeholder `<option value="">Select…</option>` clears the field
47
+ * to `undefined`; any other value is the stringified array index into
48
+ * `options`. Extracted so we can test the clear semantics without
49
+ * spinning up jsdom: previously the inline handler used `Number("")`,
50
+ * which evaluates to `0` and silently picked the first option instead
51
+ * of clearing.
52
+ */
53
+ export function parseEnumSelection(raw, options) {
54
+ if (raw === '')
55
+ return undefined;
56
+ const idx = Number(raw);
57
+ if (!Number.isInteger(idx) || idx < 0 || idx >= options.length)
58
+ return undefined;
59
+ return options[idx];
60
+ }
61
+ /**
62
+ * Produce a sensible empty value for a freshly-created array item or
63
+ * required prop. The admin form generator never wants `undefined` in
64
+ * an array; that breaks downstream PropInput defaults and confuses
65
+ * validators.
66
+ */
67
+ export function defaultForType(type) {
68
+ switch (type.kind) {
69
+ case 'string':
70
+ return '';
71
+ case 'number':
72
+ return 0;
73
+ case 'boolean':
74
+ return false;
75
+ case 'enum':
76
+ return type.values[0] ?? '';
77
+ case 'literal':
78
+ return type.value;
79
+ case 'array':
80
+ return [];
81
+ case 'object':
82
+ return Object.fromEntries(type.fields.filter((f) => f.required).map((f) => [f.name, defaultForType(f.type)]));
83
+ case 'union': {
84
+ // Discriminated unions DO have a sensible structural default:
85
+ // pick the first variant and seed its required fields (plus the
86
+ // discriminator). This makes a Hero with a `cta: Link | Modal`
87
+ // prop render an editable form on first paint instead of forcing
88
+ // the editor through the JSON textarea fallback.
89
+ const detected = detectDiscriminator(type);
90
+ if (detected) {
91
+ const variant = detected.variants[0];
92
+ const out = { [detected.field]: variant.value };
93
+ for (const field of variant.remainingFields) {
94
+ if (field.required)
95
+ out[field.name] = defaultForType(field.type);
96
+ }
97
+ return out;
98
+ }
99
+ return null;
100
+ }
101
+ default:
102
+ // `reference`, `unknown`: there's no single sensible structural
103
+ // default. We return `null` instead of `undefined` so the value
104
+ // survives a JSON round-trip — `JSON.stringify` turns
105
+ // `undefined` array items into `null` anyway, which would
106
+ // contradict the documented "never undefined in an array"
107
+ // invariant and surface as the literal string `null` in the
108
+ // JsonFallback textarea.
109
+ return null;
110
+ }
111
+ }
112
+ /**
113
+ * Seed an empty props object for a freshly-picked component using each
114
+ * prop's explicit `defaultValue` when set, else the structural default
115
+ * from {@link defaultForType} (only for required props — optional
116
+ * unset props stay absent so they render as empty inputs).
117
+ */
118
+ export function seedPropsForComponent(spec) {
119
+ const out = {};
120
+ for (const prop of spec.props) {
121
+ if (prop.defaultValue !== undefined && prop.defaultValue !== null) {
122
+ out[prop.name] = prop.defaultValue;
123
+ continue;
124
+ }
125
+ if (prop.required) {
126
+ const seed = defaultForType(prop.type);
127
+ // For non-discriminated `union` / `reference` / `unknown` kinds
128
+ // defaultForType returns `null` (so arrays survive a JSON
129
+ // round-trip), but seeding a top-level required prop with
130
+ // `null` would immediately trip the validator's "Missing
131
+ // required prop" branch on first render — the user would see
132
+ // a red error before they touched anything. Leave those
133
+ // required props absent so the absence and the validation
134
+ // message describe the same state honestly; the user provides
135
+ // a value via the JsonFallback. Discriminated unions return
136
+ // a structural default and seed cleanly.
137
+ if (seed !== null) {
138
+ out[prop.name] = seed;
139
+ }
140
+ }
141
+ }
142
+ return out;
143
+ }
144
+ /**
145
+ * Compute the next value for a discriminated-union field when the
146
+ * editor switches variants. Pure helper so the React component stays
147
+ * thin and the seeding rules can be unit-tested without rendering.
148
+ *
149
+ * Seeding rules:
150
+ * 1. The discriminator field is always written to the variant's
151
+ * tag value.
152
+ * 2. Optional fields shared by both variants survive the switch
153
+ * (preserves "edited the same label" intent across, e.g.,
154
+ * Link → Modal where both carry `label`).
155
+ * 3. Required fields exclusive to the new variant are seeded by
156
+ * priority: explicit `field.defaultValue` first (matches
157
+ * `seedPropsForComponent`), else the structural default from
158
+ * `defaultForType` — but only when that default is non-null.
159
+ * A `null` from `defaultForType` (reference / unknown / non-
160
+ * discriminated union types) is treated as "no sensible default"
161
+ * and the field is left absent so the validator's
162
+ * "missing required prop" message and the data agree.
163
+ * 4. Fields exclusive to the previous variant are dropped so the
164
+ * value stays structurally valid against the chosen variant.
165
+ */
166
+ export function switchUnionVariant(current, union, variant) {
167
+ const obj = isPlainObject(current) ? current : {};
168
+ const next = { [union.field]: variant.value };
169
+ const carryable = new Set(variant.remainingFields.map((f) => f.name));
170
+ for (const [k, v] of Object.entries(obj)) {
171
+ if (k === union.field)
172
+ continue;
173
+ if (carryable.has(k))
174
+ next[k] = v;
175
+ }
176
+ for (const field of variant.remainingFields) {
177
+ if (!field.required || next[field.name] !== undefined)
178
+ continue;
179
+ if (field.defaultValue !== undefined && field.defaultValue !== null) {
180
+ next[field.name] = field.defaultValue;
181
+ continue;
182
+ }
183
+ const seed = defaultForType(field.type);
184
+ if (seed !== null) {
185
+ next[field.name] = seed;
186
+ }
187
+ }
188
+ return next;
189
+ }
190
+ function isPlainObject(value) {
191
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
192
+ }
193
+ /**
194
+ * Build a minimal structural validator that mirrors the rules the
195
+ * cms-core `validateComponentBlockValue` runs server-side, so the form
196
+ * can show feedback without a round-trip. Kept in sync with cms-core
197
+ * by inspection; the canonical implementation lives there.
198
+ */
199
+ export function buildClientValidator(manifest, allow) {
200
+ // An empty `allow` array is treated the same way `getAllowedComponents`
201
+ // treats it: as "no filter". Without this, the picker shows every
202
+ // component while the validator rejects every selection, leading to
203
+ // a UI/validator deadlock.
204
+ const allowed = allow && allow.length > 0 ? new Set(allow) : null;
205
+ return (value) => {
206
+ const spec = manifest.components.find((c) => c.name === value.component);
207
+ if (!spec) {
208
+ const known = manifest.components.map((c) => c.name).join(', ') || '<none>';
209
+ return `Unknown component '${value.component}'. Manifest knows: ${known}.`;
210
+ }
211
+ if (allowed && !allowed.has(value.component)) {
212
+ return `Component '${value.component}' is not in the allow-list for this field.`;
213
+ }
214
+ for (const propSpec of spec.props) {
215
+ const v = value.props[propSpec.name];
216
+ if (v === undefined || v === null) {
217
+ if (propSpec.required) {
218
+ return `Missing required prop '${propSpec.name}' for component '${value.component}'.`;
219
+ }
220
+ continue;
221
+ }
222
+ const err = clientShapeError(v, propSpec);
223
+ if (err)
224
+ return err;
225
+ }
226
+ return true;
227
+ };
228
+ }
229
+ function clientShapeError(value, prop) {
230
+ const t = prop.type;
231
+ switch (t.kind) {
232
+ case 'string':
233
+ return typeof value === 'string' ? null : `Prop '${prop.name}' must be a string.`;
234
+ case 'number':
235
+ return typeof value === 'number' && !Number.isNaN(value)
236
+ ? null
237
+ : `Prop '${prop.name}' must be a number.`;
238
+ case 'boolean':
239
+ return typeof value === 'boolean' ? null : `Prop '${prop.name}' must be a boolean.`;
240
+ case 'enum':
241
+ return t.values.includes(value)
242
+ ? null
243
+ : `Prop '${prop.name}' must be one of: ${t.values.join(', ')}.`;
244
+ case 'array':
245
+ return Array.isArray(value) ? null : `Prop '${prop.name}' must be an array.`;
246
+ case 'object': {
247
+ if (value === null || typeof value !== 'object' || Array.isArray(value)) {
248
+ return `Prop '${prop.name}' must be an object.`;
249
+ }
250
+ // Recurse: check that each required nested field is present and
251
+ // structurally compatible. Without this, passing `{}` for an
252
+ // object prop with required `label` and `href` children sailed
253
+ // through the client validator while the server-side
254
+ // validateComponentBlockValue would reject it on save — a
255
+ // silent gap in the "live structural validation" promise.
256
+ const obj = value;
257
+ for (const field of t.fields) {
258
+ const child = obj[field.name];
259
+ if (child === undefined || child === null) {
260
+ if (field.required) {
261
+ return `Prop '${prop.name}.${field.name}' is required but missing.`;
262
+ }
263
+ continue;
264
+ }
265
+ const childError = clientShapeError(child, {
266
+ ...field,
267
+ // Build a dotted path so parsePerPropErrors can attribute
268
+ // the error to the nested input, not just the outer prop.
269
+ name: `${prop.name}.${field.name}`,
270
+ });
271
+ if (childError)
272
+ return childError;
273
+ }
274
+ return null;
275
+ }
276
+ case 'union': {
277
+ // Discriminated unions get the same recursive treatment as plain
278
+ // objects: route the value into the matching variant's schema
279
+ // and validate against that. Non-discriminated unions remain
280
+ // unvalidated on the client (server still catches them) — the
281
+ // shape is too open to assert structurally.
282
+ const detected = detectDiscriminator(t);
283
+ if (!detected)
284
+ return null;
285
+ if (value === null || typeof value !== 'object' || Array.isArray(value)) {
286
+ return `Prop '${prop.name}' must be an object with a '${detected.field}' discriminator.`;
287
+ }
288
+ const variant = findVariant(value, detected);
289
+ if (!variant) {
290
+ const allowed = detected.variants.map((v) => JSON.stringify(v.value)).join(', ');
291
+ return `Prop '${prop.name}.${detected.field}' must be one of: ${allowed}.`;
292
+ }
293
+ // Recurse into the variant's fields, scoped to the prop path.
294
+ // We treat the variant as an inline object so the existing
295
+ // object-branch logic applies verbatim.
296
+ return clientShapeError(value, {
297
+ name: prop.name,
298
+ required: prop.required,
299
+ type: variant.type,
300
+ });
301
+ }
302
+ default:
303
+ return null;
304
+ }
305
+ }
306
+ /**
307
+ * The validator returns a single error string. The form wants to show
308
+ * the message under the specific input that triggered it — so we parse
309
+ * the message back into a sparse `{ propPath → message }` map. Pure
310
+ * function so it's trivial to unit-test.
311
+ */
312
+ export function parsePerPropErrors(message) {
313
+ if (!message)
314
+ return {};
315
+ const propMatch = /Prop '([^']+)'/.exec(message);
316
+ if (propMatch)
317
+ return { [propMatch[1]]: message };
318
+ const missing = /Missing required prop '([^']+)'/.exec(message);
319
+ if (missing)
320
+ return { [missing[1]]: message };
321
+ return {};
322
+ }
323
+ //# sourceMappingURL=component-block-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component-block-helpers.js","sourceRoot":"","sources":["../../src/fields/component-block-helpers.ts"],"names":[],"mappings":"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"}
@@ -15,4 +15,8 @@ export type { BlockTypeDefinition } from './block-types.js';
15
15
  export { GroupField } from './GroupField.js';
16
16
  export { NavBuilderField } from './NavBuilderField.js';
17
17
  export { NumberField } from './NumberField.js';
18
+ export { ComponentBlockField } from './ComponentBlockField.js';
19
+ export type { ComponentBlockFieldProps, ComponentBlockValue } from './ComponentBlockField.js';
20
+ export { PropInput, defaultForType } from './PropInput.js';
21
+ export type { PropInputProps } from './PropInput.js';
18
22
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/fields/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,YAAY,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAC7E,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/fields/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,YAAY,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAC7E,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,YAAY,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC7F,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC1D,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA"}
@@ -13,4 +13,6 @@ export { PRESET_BLOCKS } from './block-types.js';
13
13
  export { GroupField } from './GroupField.js';
14
14
  export { NavBuilderField } from './NavBuilderField.js';
15
15
  export { NumberField } from './NumberField.js';
16
+ export { ComponentBlockField } from './ComponentBlockField.js';
17
+ export { PropInput, defaultForType } from './PropInput.js';
16
18
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/fields/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAElD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAEhD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/fields/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAElD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAEhD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAE9D,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA"}
package/dist/index.d.ts CHANGED
@@ -63,4 +63,6 @@ export { useKeyboardShortcuts } from './hooks/useKeyboardShortcuts.js';
63
63
  export { cmsApi, setApiBase, ensureCsrfToken } from './lib/api.js';
64
64
  export { useApiData } from './lib/useApiData.js';
65
65
  export type { UseApiDataResult } from './lib/useApiData.js';
66
+ export { ComponentBlockField, PropInput, defaultForType } from './fields/index.js';
67
+ export type { ComponentBlockFieldProps, ComponentBlockValue, PropInputProps, } from './fields/index.js';
66
68
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -46,4 +46,5 @@ export { LocaleSwitcher } from './components/LocaleSwitcher.js';
46
46
  export { useKeyboardShortcuts } from './hooks/useKeyboardShortcuts.js';
47
47
  export { cmsApi, setApiBase, ensureCsrfToken } from './lib/api.js';
48
48
  export { useApiData } from './lib/useApiData.js';
49
+ export { ComponentBlockField, PropInput, defaultForType } from './fields/index.js';
49
50
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@actuate-media/cms-admin",
3
- "version": "0.11.0",
3
+ "version": "0.12.0",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/actuate-media/actuatecms.git",
@@ -62,7 +62,13 @@
62
62
  "tailwind-merge": "^3.5.0"
63
63
  },
64
64
  "peerDependencies": {
65
- "@actuate-media/cms-core": ">=0.1.0"
65
+ "@actuate-media/cms-core": ">=0.1.0",
66
+ "@actuate-media/component-blocks": ">=0.1.0"
67
+ },
68
+ "peerDependenciesMeta": {
69
+ "@actuate-media/component-blocks": {
70
+ "optional": true
71
+ }
66
72
  },
67
73
  "devDependencies": {
68
74
  "@tailwindcss/cli": "^4.0.0",
@@ -72,7 +78,8 @@
72
78
  "tailwindcss": "^4.0.0",
73
79
  "typescript": "^5.7.0",
74
80
  "vitest": "^3.0.0",
75
- "@actuate-media/cms-core": "0.20.0"
81
+ "@actuate-media/cms-core": "0.21.0",
82
+ "@actuate-media/component-blocks": "0.2.0"
76
83
  },
77
84
  "scripts": {
78
85
  "build": "tsc --project tsconfig.json && npx @tailwindcss/cli -i src/styles/build-input.css -o dist/actuate-admin.css --minify",