@neatico/visual-core 0.14.68 → 0.14.70
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/dist/cjs/compositionNumbers.js +3 -1
- package/dist/cjs/compositionUseCases.js +2 -0
- package/dist/cjs/nativeSocialParameters.js +17 -0
- package/dist/cjs/recipeParameters.js +12 -0
- package/dist/cjs/socialLayouts.js +2 -0
- package/dist/compositionNumbers.js +3 -1
- package/dist/compositionUseCases.js +2 -0
- package/dist/nativeSocialParameters.js +17 -0
- package/dist/recipeParameters.js +12 -0
- package/dist/socialLayouts.d.ts +8 -0
- package/dist/socialLayouts.js +2 -0
- package/package.json +1 -1
|
@@ -3,6 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.compositionUseCase = compositionUseCase;
|
|
4
4
|
/** Authored communication tasks, independent of field count and successful parameter filling. */
|
|
5
5
|
const useCases = {
|
|
6
|
+
'neon-workflow': 'Introduce a supplied product or feature with a prominent blue product name, a benefit headline and exactly three input → product → output workflow stages. Use verified release facts; never invent model availability.',
|
|
7
|
+
'navy-service': 'Present a service with a concise benefit headline, a gold subheading and three supplied capabilities, beside original editable stationery artwork. Never invent legal requirements, turnaround times, qualifications or guarantees.',
|
|
6
8
|
'dark-promo': 'Promote a supplied product or offer with a bold headline, a concise product scope, an action, a website label and offer terms. Preserve exact discounts and eligibility; clearly label illustrative prices and never fabricate a real promotion.',
|
|
7
9
|
'price-increase': 'Announce an event ticket price increase or early-bird deadline, with the supplied current price, future price, effective date and event details. Preserve amounts and dates exactly; never invent urgency or ticket availability.',
|
|
8
10
|
'note-question': 'Ask one audience-facing question or open a discussion. A plain factual list is a weaker fit than a real question-led task.',
|
|
@@ -10,6 +10,8 @@ const socialLayouts_js_1 = require("./socialLayouts.js");
|
|
|
10
10
|
const slots = {
|
|
11
11
|
'price-increase': { items: 2, value: true, image: true },
|
|
12
12
|
'dark-promo': { value: true, attribution: true },
|
|
13
|
+
'neon-workflow': { items: 3, value: true, attribution: true },
|
|
14
|
+
'navy-service': { items: 3, value: true },
|
|
13
15
|
'note-question': {}, 'note-marker': {}, 'note-editorial': {}, 'note-checklist': { items: 3 }, 'note-photo': { image: true }, 'note-news': { value: true },
|
|
14
16
|
'chat-messenger': { items: 3 }, 'chat-imessage': { items: 3 }, 'chat-telegram': { items: 3 }, 'chat-workplace': { items: 3 },
|
|
15
17
|
'time-notice': { value: true }, 'news-focus': {}, manifesto: {}, launch: { image: true }, bento: { items: 3 }, spotlight: { items: 3, value: true, image: true },
|
|
@@ -60,10 +62,25 @@ function nativeSocialParameterContract(id) {
|
|
|
60
62
|
}
|
|
61
63
|
if (spec.image)
|
|
62
64
|
properties.imageAssetId = asset();
|
|
65
|
+
if (id === 'neon-workflow') {
|
|
66
|
+
properties.title = copy(32, 'A concise launch or benefit headline. Never invent a release or model availability.');
|
|
67
|
+
properties.body = copy(60, 'One short supporting sentence.');
|
|
68
|
+
properties.value = copy(28, 'The supplied product or feature name, shown in large blue type.');
|
|
69
|
+
properties.attribution = copy(72, 'Supplied website and optional short capabilities line. Never invent a URL or certification.', 0);
|
|
70
|
+
}
|
|
71
|
+
if (id === 'navy-service') {
|
|
72
|
+
properties.title = copy(32, 'A concise service benefit headline.');
|
|
73
|
+
properties.body = copy(48, 'A short gold subheading. Do not invent delivery times, guarantees or legal claims.');
|
|
74
|
+
properties.value = copy(40, 'An optional supplied website or contact label. Never invent a URL.', 0);
|
|
75
|
+
}
|
|
63
76
|
if (spec.items) {
|
|
64
77
|
const item = { title: copy(id === 'faq' ? 40 : id === 'case-study' ? 18 : 20, id === 'faq' ? 'A concise audience question ending in a question mark.' : 'A short item label.'), description: copy(id === 'faq' ? 64 : spec.quantities || id === 'case-study' ? 32 : ['comparison', 'myth'].includes(id) ? 80 : supportingItemSlots.has(id) ? 48 : 40, 'Concise supporting copy.', spec.quantities ? 0 : 1) };
|
|
65
78
|
if (id === 'faq')
|
|
66
79
|
item.title.pattern = '^.+[??]$';
|
|
80
|
+
if (['neon-workflow', 'navy-service'].includes(id)) {
|
|
81
|
+
item.title = copy(20, id === 'neon-workflow' ? 'A short workflow stage label, in input → product → output order.' : 'A supplied service capability.');
|
|
82
|
+
item.description = copy(24, 'Optional concise supporting detail. Use empty text when not needed.', 0);
|
|
83
|
+
}
|
|
67
84
|
if (illustratedSlots.has(id))
|
|
68
85
|
item.illustration = { type: 'string', enum: exports.COMPOSITION_ILLUSTRATIONS, default: 'structure', description: 'An editable native illustration that explains this item. Choose document for material, review for checking, collaboration for people, feedback for revision, sequence for ordered actions, comparison for alternatives, or structure for organization. Never omit the visual slot.' };
|
|
69
86
|
if (spec.itemImages)
|
|
@@ -307,6 +307,18 @@ function fixedBlocks(recipe) {
|
|
|
307
307
|
fields.values.items.properties.value.minimum = 0;
|
|
308
308
|
}
|
|
309
309
|
}
|
|
310
|
+
// These measured list/table renderers support variable rows. The old global
|
|
311
|
+
// three-item fixture bound discarded useful itinerary and budget detail.
|
|
312
|
+
// Authored card compositions retain their fixed number of slots.
|
|
313
|
+
if (/^semantic-(steps|parameters)-(stack|split)$/.test(id)) {
|
|
314
|
+
const values = kind === "steps" ? fields.entries : fields.rows;
|
|
315
|
+
if (values) {
|
|
316
|
+
values.minItems = 2;
|
|
317
|
+
values.maxItems = id.endsWith("stack") ? 8 : 6;
|
|
318
|
+
values.items.properties.description.maxLength = 24;
|
|
319
|
+
values.description = "Use enough rows to complete this page's requested detail: include every relevant time slot or budget item and total, within the fixed maximum. Do not collapse a full itinerary into three vague phases.";
|
|
320
|
+
}
|
|
321
|
+
}
|
|
310
322
|
return schema;
|
|
311
323
|
});
|
|
312
324
|
return {
|
|
@@ -210,4 +210,6 @@ exports.SOCIAL_LAYOUT_CATALOG = [
|
|
|
210
210
|
},
|
|
211
211
|
{ id: "price-increase", scene: "pricing", name: "Event price increase" },
|
|
212
212
|
{ id: "dark-promo", scene: "pricing", name: "Dark gradient promotion" },
|
|
213
|
+
{ id: "neon-workflow", scene: "launch", name: "Neon product workflow" },
|
|
214
|
+
{ id: "navy-service", scene: "features", name: "Navy and gold service" },
|
|
213
215
|
];
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
/** Authored communication tasks, independent of field count and successful parameter filling. */
|
|
2
2
|
const useCases = {
|
|
3
|
+
'neon-workflow': 'Introduce a supplied product or feature with a prominent blue product name, a benefit headline and exactly three input → product → output workflow stages. Use verified release facts; never invent model availability.',
|
|
4
|
+
'navy-service': 'Present a service with a concise benefit headline, a gold subheading and three supplied capabilities, beside original editable stationery artwork. Never invent legal requirements, turnaround times, qualifications or guarantees.',
|
|
3
5
|
'dark-promo': 'Promote a supplied product or offer with a bold headline, a concise product scope, an action, a website label and offer terms. Preserve exact discounts and eligibility; clearly label illustrative prices and never fabricate a real promotion.',
|
|
4
6
|
'price-increase': 'Announce an event ticket price increase or early-bird deadline, with the supplied current price, future price, effective date and event details. Preserve amounts and dates exactly; never invent urgency or ticket availability.',
|
|
5
7
|
'note-question': 'Ask one audience-facing question or open a discussion. A plain factual list is a weaker fit than a real question-led task.',
|
|
@@ -4,6 +4,8 @@ import { SOCIAL_LAYOUT_CATALOG } from './socialLayouts.js';
|
|
|
4
4
|
const slots = {
|
|
5
5
|
'price-increase': { items: 2, value: true, image: true },
|
|
6
6
|
'dark-promo': { value: true, attribution: true },
|
|
7
|
+
'neon-workflow': { items: 3, value: true, attribution: true },
|
|
8
|
+
'navy-service': { items: 3, value: true },
|
|
7
9
|
'note-question': {}, 'note-marker': {}, 'note-editorial': {}, 'note-checklist': { items: 3 }, 'note-photo': { image: true }, 'note-news': { value: true },
|
|
8
10
|
'chat-messenger': { items: 3 }, 'chat-imessage': { items: 3 }, 'chat-telegram': { items: 3 }, 'chat-workplace': { items: 3 },
|
|
9
11
|
'time-notice': { value: true }, 'news-focus': {}, manifesto: {}, launch: { image: true }, bento: { items: 3 }, spotlight: { items: 3, value: true, image: true },
|
|
@@ -54,10 +56,25 @@ export function nativeSocialParameterContract(id) {
|
|
|
54
56
|
}
|
|
55
57
|
if (spec.image)
|
|
56
58
|
properties.imageAssetId = asset();
|
|
59
|
+
if (id === 'neon-workflow') {
|
|
60
|
+
properties.title = copy(32, 'A concise launch or benefit headline. Never invent a release or model availability.');
|
|
61
|
+
properties.body = copy(60, 'One short supporting sentence.');
|
|
62
|
+
properties.value = copy(28, 'The supplied product or feature name, shown in large blue type.');
|
|
63
|
+
properties.attribution = copy(72, 'Supplied website and optional short capabilities line. Never invent a URL or certification.', 0);
|
|
64
|
+
}
|
|
65
|
+
if (id === 'navy-service') {
|
|
66
|
+
properties.title = copy(32, 'A concise service benefit headline.');
|
|
67
|
+
properties.body = copy(48, 'A short gold subheading. Do not invent delivery times, guarantees or legal claims.');
|
|
68
|
+
properties.value = copy(40, 'An optional supplied website or contact label. Never invent a URL.', 0);
|
|
69
|
+
}
|
|
57
70
|
if (spec.items) {
|
|
58
71
|
const item = { title: copy(id === 'faq' ? 40 : id === 'case-study' ? 18 : 20, id === 'faq' ? 'A concise audience question ending in a question mark.' : 'A short item label.'), description: copy(id === 'faq' ? 64 : spec.quantities || id === 'case-study' ? 32 : ['comparison', 'myth'].includes(id) ? 80 : supportingItemSlots.has(id) ? 48 : 40, 'Concise supporting copy.', spec.quantities ? 0 : 1) };
|
|
59
72
|
if (id === 'faq')
|
|
60
73
|
item.title.pattern = '^.+[??]$';
|
|
74
|
+
if (['neon-workflow', 'navy-service'].includes(id)) {
|
|
75
|
+
item.title = copy(20, id === 'neon-workflow' ? 'A short workflow stage label, in input → product → output order.' : 'A supplied service capability.');
|
|
76
|
+
item.description = copy(24, 'Optional concise supporting detail. Use empty text when not needed.', 0);
|
|
77
|
+
}
|
|
61
78
|
if (illustratedSlots.has(id))
|
|
62
79
|
item.illustration = { type: 'string', enum: COMPOSITION_ILLUSTRATIONS, default: 'structure', description: 'An editable native illustration that explains this item. Choose document for material, review for checking, collaboration for people, feedback for revision, sequence for ordered actions, comparison for alternatives, or structure for organization. Never omit the visual slot.' };
|
|
63
80
|
if (spec.itemImages)
|
package/dist/recipeParameters.js
CHANGED
|
@@ -303,6 +303,18 @@ function fixedBlocks(recipe) {
|
|
|
303
303
|
fields.values.items.properties.value.minimum = 0;
|
|
304
304
|
}
|
|
305
305
|
}
|
|
306
|
+
// These measured list/table renderers support variable rows. The old global
|
|
307
|
+
// three-item fixture bound discarded useful itinerary and budget detail.
|
|
308
|
+
// Authored card compositions retain their fixed number of slots.
|
|
309
|
+
if (/^semantic-(steps|parameters)-(stack|split)$/.test(id)) {
|
|
310
|
+
const values = kind === "steps" ? fields.entries : fields.rows;
|
|
311
|
+
if (values) {
|
|
312
|
+
values.minItems = 2;
|
|
313
|
+
values.maxItems = id.endsWith("stack") ? 8 : 6;
|
|
314
|
+
values.items.properties.description.maxLength = 24;
|
|
315
|
+
values.description = "Use enough rows to complete this page's requested detail: include every relevant time slot or budget item and total, within the fixed maximum. Do not collapse a full itinerary into three vague phases.";
|
|
316
|
+
}
|
|
317
|
+
}
|
|
306
318
|
return schema;
|
|
307
319
|
});
|
|
308
320
|
return {
|
package/dist/socialLayouts.d.ts
CHANGED
|
@@ -203,4 +203,12 @@ export declare const SOCIAL_LAYOUT_CATALOG: readonly [{
|
|
|
203
203
|
readonly id: "dark-promo";
|
|
204
204
|
readonly scene: "pricing";
|
|
205
205
|
readonly name: "Dark gradient promotion";
|
|
206
|
+
}, {
|
|
207
|
+
readonly id: "neon-workflow";
|
|
208
|
+
readonly scene: "launch";
|
|
209
|
+
readonly name: "Neon product workflow";
|
|
210
|
+
}, {
|
|
211
|
+
readonly id: "navy-service";
|
|
212
|
+
readonly scene: "features";
|
|
213
|
+
readonly name: "Navy and gold service";
|
|
206
214
|
}];
|
package/dist/socialLayouts.js
CHANGED
|
@@ -207,4 +207,6 @@ export const SOCIAL_LAYOUT_CATALOG = [
|
|
|
207
207
|
},
|
|
208
208
|
{ id: "price-increase", scene: "pricing", name: "Event price increase" },
|
|
209
209
|
{ id: "dark-promo", scene: "pricing", name: "Dark gradient promotion" },
|
|
210
|
+
{ id: "neon-workflow", scene: "launch", name: "Neon product workflow" },
|
|
211
|
+
{ id: "navy-service", scene: "features", name: "Navy and gold service" },
|
|
210
212
|
];
|
package/package.json
CHANGED