@refrakt-md/marketing 0.7.2 → 0.8.1
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/config.d.ts.map +1 -1
- package/dist/config.js +78 -20
- package/dist/config.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/schema/bento.d.ts +4 -1
- package/dist/schema/bento.d.ts.map +1 -1
- package/dist/schema/bento.js +3 -0
- package/dist/schema/bento.js.map +1 -1
- package/dist/schema/comparison.d.ts +2 -2
- package/dist/schema/comparison.d.ts.map +1 -1
- package/dist/schema/comparison.js +2 -2
- package/dist/schema/comparison.js.map +1 -1
- package/dist/schema/hero.d.ts +0 -2
- package/dist/schema/hero.d.ts.map +1 -1
- package/dist/schema/hero.js +0 -2
- package/dist/schema/hero.js.map +1 -1
- package/dist/tags/bento.d.ts.map +1 -1
- package/dist/tags/bento.js +145 -78
- package/dist/tags/bento.js.map +1 -1
- package/dist/tags/comparison.d.ts.map +1 -1
- package/dist/tags/comparison.js +151 -165
- package/dist/tags/comparison.js.map +1 -1
- package/dist/tags/cta.d.ts.map +1 -1
- package/dist/tags/cta.js +32 -38
- package/dist/tags/cta.js.map +1 -1
- package/dist/tags/feature.d.ts +1 -6
- package/dist/tags/feature.d.ts.map +1 -1
- package/dist/tags/feature.js +111 -69
- package/dist/tags/feature.js.map +1 -1
- package/dist/tags/hero.d.ts.map +1 -1
- package/dist/tags/hero.js +101 -66
- package/dist/tags/hero.js.map +1 -1
- package/dist/tags/pricing.d.ts.map +1 -1
- package/dist/tags/pricing.js +76 -61
- package/dist/tags/pricing.js.map +1 -1
- package/dist/tags/steps.d.ts +1 -1
- package/dist/tags/steps.d.ts.map +1 -1
- package/dist/tags/steps.js +62 -55
- package/dist/tags/steps.js.map +1 -1
- package/dist/tags/testimonial.d.ts.map +1 -1
- package/dist/tags/testimonial.js +45 -35
- package/dist/tags/testimonial.js.map +1 -1
- package/dist/types.d.ts +1 -5
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +6 -9
- package/dist/types.js.map +1 -1
- package/package.json +4 -4
package/dist/tags/pricing.js
CHANGED
|
@@ -9,85 +9,91 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
9
9
|
};
|
|
10
10
|
import Markdoc from '@markdoc/markdoc';
|
|
11
11
|
const { Ast, Tag } = Markdoc;
|
|
12
|
-
import { attribute,
|
|
12
|
+
import { attribute, Model, createComponentRenderable, createContentModelSchema, createSchema, asNodes, RenderableNodeCursor, headingsToList, descriptionHelper as description, pageSectionProperties } from '@refrakt-md/runes';
|
|
13
13
|
import { schema } from '../types.js';
|
|
14
14
|
const NAME_PRICE_PATTERN = /^(.+?)\s*[-–—]\s*(.+)$/;
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
15
|
+
const CURRENCY_SYMBOLS = {
|
|
16
|
+
'$': 'USD', '€': 'EUR', '£': 'GBP', '¥': 'JPY', '₹': 'INR',
|
|
17
|
+
'kr': 'SEK', 'CHF': 'CHF', 'A$': 'AUD', 'C$': 'CAD',
|
|
18
|
+
};
|
|
19
|
+
function inferCurrency(priceText) {
|
|
20
|
+
for (const [symbol, code] of Object.entries(CURRENCY_SYMBOLS)) {
|
|
21
|
+
if (priceText.startsWith(symbol))
|
|
22
|
+
return code;
|
|
19
23
|
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
return
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
24
|
+
return 'USD';
|
|
25
|
+
}
|
|
26
|
+
function convertHeadings(nodes) {
|
|
27
|
+
// Auto-detect heading level from the first heading that matches "Name — Price"
|
|
28
|
+
const level = nodes.find(n => {
|
|
29
|
+
if (n.type !== 'heading')
|
|
30
|
+
return false;
|
|
31
|
+
const text = Array.from(n.walk()).filter(c => c.type === 'text').map(t => t.attributes.content).join(' ');
|
|
32
|
+
return NAME_PRICE_PATTERN.test(text);
|
|
33
|
+
})?.attributes.level;
|
|
34
|
+
if (!level)
|
|
35
|
+
return nodes;
|
|
36
|
+
const converted = headingsToList({ level })(nodes);
|
|
37
|
+
const n = converted.length - 1;
|
|
38
|
+
if (!converted[n] || converted[n].type !== 'list')
|
|
39
|
+
return nodes;
|
|
40
|
+
// Only convert items whose heading matches "Name — Price"; keep others as-is
|
|
41
|
+
const result = converted.slice(0, n);
|
|
42
|
+
for (const item of converted[n].children) {
|
|
43
|
+
const heading = item.children[0];
|
|
44
|
+
const headingText = Array.from(heading.walk())
|
|
45
|
+
.filter(n => n.type === 'text')
|
|
46
|
+
.map(t => t.attributes.content)
|
|
47
|
+
.join(' ');
|
|
48
|
+
const match = headingText.match(NAME_PRICE_PATTERN);
|
|
49
|
+
if (match) {
|
|
50
|
+
result.push(new Ast.Node('tag', { name: match[1].trim(), price: match[2].trim() }, item.children.slice(1), 'tier'));
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
// Non-matching heading: keep as original heading + body nodes
|
|
54
|
+
result.push(heading, ...item.children.slice(1));
|
|
50
55
|
}
|
|
51
|
-
return result;
|
|
52
|
-
}
|
|
53
|
-
processChildren(nodes) {
|
|
54
|
-
return super.processChildren(this.convertHeadings(nodes));
|
|
55
56
|
}
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
57
|
+
return result;
|
|
58
|
+
}
|
|
59
|
+
export const pricing = createContentModelSchema({
|
|
60
|
+
attributes: {},
|
|
61
|
+
contentModel: {
|
|
62
|
+
type: 'sequence',
|
|
63
|
+
fields: [
|
|
64
|
+
{ name: 'content', match: 'any', optional: true, greedy: true },
|
|
65
|
+
],
|
|
66
|
+
},
|
|
67
|
+
transform(resolved, attrs, config) {
|
|
68
|
+
const processed = convertHeadings(asNodes(resolved.content));
|
|
69
|
+
const allNodes = new RenderableNodeCursor(Markdoc.transform(processed, config));
|
|
70
|
+
// Separate header (headings, paragraphs) from tiers (li items)
|
|
71
|
+
const header = allNodes.tags('h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'p');
|
|
72
|
+
const tiers = allNodes.tag('li');
|
|
73
|
+
const sectionProps = pageSectionProperties(header);
|
|
60
74
|
const tiersList = tiers.wrap('ul', { 'data-layout': 'grid', 'data-columns': tiers.nodes.length });
|
|
61
75
|
return createComponentRenderable(schema.Pricing, {
|
|
62
76
|
tag: 'section',
|
|
63
77
|
property: 'contentSection',
|
|
64
78
|
properties: {
|
|
65
|
-
...
|
|
66
|
-
tier:
|
|
79
|
+
...sectionProps,
|
|
80
|
+
tier: tiers,
|
|
67
81
|
},
|
|
68
82
|
refs: {
|
|
69
83
|
tiers: tiersList.tag('ul'),
|
|
70
84
|
},
|
|
85
|
+
schema: {
|
|
86
|
+
name: sectionProps.headline,
|
|
87
|
+
description: sectionProps.blurb,
|
|
88
|
+
offers: tiers,
|
|
89
|
+
},
|
|
71
90
|
children: [
|
|
72
91
|
header.wrap('header').next(),
|
|
73
92
|
tiersList.next(),
|
|
74
93
|
]
|
|
75
94
|
});
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
__decorate([
|
|
79
|
-
attribute({ type: Number, required: false }),
|
|
80
|
-
__metadata("design:type", Object)
|
|
81
|
-
], PricingModel.prototype, "headingLevel", void 0);
|
|
82
|
-
__decorate([
|
|
83
|
-
group({ include: ['heading', 'paragraph'] }),
|
|
84
|
-
__metadata("design:type", NodeStream)
|
|
85
|
-
], PricingModel.prototype, "header", void 0);
|
|
86
|
-
__decorate([
|
|
87
|
-
group({ include: ['tag'] }),
|
|
88
|
-
__metadata("design:type", NodeStream)
|
|
89
|
-
], PricingModel.prototype, "tiers", void 0);
|
|
90
|
-
export const pricing = createSchema(PricingModel);
|
|
95
|
+
},
|
|
96
|
+
});
|
|
91
97
|
export class TierModel extends Model {
|
|
92
98
|
constructor() {
|
|
93
99
|
super(...arguments);
|
|
@@ -105,6 +111,10 @@ export class TierModel extends Model {
|
|
|
105
111
|
const children = this.transformChildren();
|
|
106
112
|
const body = children.wrap('div');
|
|
107
113
|
const currencyMeta = this.currency ? new Tag('meta', { content: this.currency }) : undefined;
|
|
114
|
+
// Schema.org price parsing: extract numeric value and infer currency
|
|
115
|
+
const numericMatch = priceValue.match(/[\d.]+/);
|
|
116
|
+
const parsedPriceMeta = new Tag('meta', { content: numericMatch ? numericMatch[0] : priceValue });
|
|
117
|
+
const resolvedCurrencyMeta = new Tag('meta', { content: this.currency || inferCurrency(priceValue) });
|
|
108
118
|
return createComponentRenderable(type, {
|
|
109
119
|
tag: 'li',
|
|
110
120
|
properties: {
|
|
@@ -117,7 +127,12 @@ export class TierModel extends Model {
|
|
|
117
127
|
refs: {
|
|
118
128
|
body: body.tag('div'),
|
|
119
129
|
},
|
|
120
|
-
|
|
130
|
+
schema: {
|
|
131
|
+
name: nameTag,
|
|
132
|
+
price: parsedPriceMeta,
|
|
133
|
+
priceCurrency: resolvedCurrencyMeta,
|
|
134
|
+
},
|
|
135
|
+
children: [nameTag, priceTag, parsedPriceMeta, resolvedCurrencyMeta, ...(currencyMeta ? [currencyMeta] : []), body.next()],
|
|
121
136
|
});
|
|
122
137
|
}
|
|
123
138
|
}
|
package/dist/tags/pricing.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pricing.js","sourceRoot":"","sources":["../../src/tags/pricing.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,OAAO,MAAM,kBAAkB,CAAC;AAEvC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"pricing.js","sourceRoot":"","sources":["../../src/tags/pricing.ts"],"names":[],"mappings":"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"}
|
package/dist/tags/steps.d.ts
CHANGED
package/dist/tags/steps.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"steps.d.ts","sourceRoot":"","sources":["../../src/tags/steps.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"steps.d.ts","sourceRoot":"","sources":["../../src/tags/steps.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,kBAAkB,CAAC;AAoDvC,eAAO,MAAM,IAAI,gBAMf,CAAC;AAEH,eAAO,MAAM,KAAK,gBAgDhB,CAAC"}
|
package/dist/tags/steps.js
CHANGED
|
@@ -9,54 +9,26 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
9
9
|
};
|
|
10
10
|
import Markdoc from '@markdoc/markdoc';
|
|
11
11
|
const { Ast, Tag } = Markdoc;
|
|
12
|
-
import {
|
|
12
|
+
import { group, createComponentRenderable, createContentModelSchema, createSchema, NodeStream, SplitLayoutModel, nameHelper as name, pageSectionProperties, asNodes } from '@refrakt-md/runes';
|
|
13
|
+
import { RenderableNodeCursor } from '@refrakt-md/runes';
|
|
13
14
|
import { schema } from '../types.js';
|
|
14
|
-
class
|
|
15
|
-
constructor() {
|
|
16
|
-
super(...arguments);
|
|
17
|
-
this.headingLevel = undefined;
|
|
18
|
-
}
|
|
19
|
-
processChildren(nodes) {
|
|
20
|
-
return super.processChildren(headingsToList({ level: this.headingLevel })(nodes));
|
|
21
|
-
}
|
|
22
|
-
transform() {
|
|
23
|
-
const children = this.transformChildren({
|
|
24
|
-
list: 'ol',
|
|
25
|
-
item: (node, config) => {
|
|
26
|
-
return Markdoc.transform(new Ast.Node('tag', { split: node.attributes.split }, node.children, 'step'), config);
|
|
27
|
-
}
|
|
28
|
-
});
|
|
29
|
-
return createComponentRenderable(schema.Steps, {
|
|
30
|
-
tag: 'section',
|
|
31
|
-
property: 'contentSection',
|
|
32
|
-
properties: {
|
|
33
|
-
...pageSectionProperties(children),
|
|
34
|
-
step: children.flatten().tag('li').typeof('Step')
|
|
35
|
-
},
|
|
36
|
-
children: children.toArray(),
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
__decorate([
|
|
41
|
-
attribute({ type: Number, required: false }),
|
|
42
|
-
__metadata("design:type", Object)
|
|
43
|
-
], StepsModel.prototype, "headingLevel", void 0);
|
|
44
|
-
class StepModel extends SplitablePageSectionModel {
|
|
45
|
-
constructor() {
|
|
46
|
-
super(...arguments);
|
|
47
|
-
this.split = false;
|
|
48
|
-
this.mirror = false;
|
|
49
|
-
}
|
|
15
|
+
class StepModel extends SplitLayoutModel {
|
|
50
16
|
transform() {
|
|
51
17
|
const main = this.main.transform();
|
|
52
18
|
const side = this.side.transform();
|
|
53
|
-
const mainContent = main.wrap('div', { 'data-name': '
|
|
54
|
-
const sideContent = side.wrap('div', { 'data-name': '
|
|
55
|
-
const
|
|
56
|
-
const
|
|
19
|
+
const mainContent = main.wrap('div', { 'data-name': 'content' });
|
|
20
|
+
const sideContent = side.wrap('div', { 'data-name': 'media' });
|
|
21
|
+
const layoutMeta = new Tag('meta', { content: this.layout });
|
|
22
|
+
const ratioMeta = this.layout !== 'stacked' ? new Tag('meta', { content: this.ratio }) : undefined;
|
|
23
|
+
const valignMeta = this.layout !== 'stacked' ? new Tag('meta', { content: this.valign }) : undefined;
|
|
24
|
+
const gapMeta = this.gap !== 'default' ? new Tag('meta', { content: this.gap }) : undefined;
|
|
25
|
+
const collapseMeta = this.collapse ? new Tag('meta', { content: this.collapse }) : undefined;
|
|
57
26
|
const children = [
|
|
58
|
-
|
|
59
|
-
...(
|
|
27
|
+
layoutMeta,
|
|
28
|
+
...(ratioMeta ? [ratioMeta] : []),
|
|
29
|
+
...(valignMeta ? [valignMeta] : []),
|
|
30
|
+
...(gapMeta ? [gapMeta] : []),
|
|
31
|
+
...(collapseMeta ? [collapseMeta] : []),
|
|
60
32
|
mainContent.next(),
|
|
61
33
|
...(side.toArray().length > 0 ? [sideContent.next()] : []),
|
|
62
34
|
];
|
|
@@ -64,21 +36,16 @@ class StepModel extends SplitablePageSectionModel {
|
|
|
64
36
|
tag: 'li',
|
|
65
37
|
properties: {
|
|
66
38
|
name: name(main),
|
|
67
|
-
|
|
68
|
-
|
|
39
|
+
layout: layoutMeta,
|
|
40
|
+
ratio: ratioMeta,
|
|
41
|
+
valign: valignMeta,
|
|
42
|
+
gap: gapMeta,
|
|
43
|
+
collapse: collapseMeta,
|
|
69
44
|
},
|
|
70
45
|
children,
|
|
71
46
|
});
|
|
72
47
|
}
|
|
73
48
|
}
|
|
74
|
-
__decorate([
|
|
75
|
-
attribute({ type: Boolean, required: false }),
|
|
76
|
-
__metadata("design:type", Boolean)
|
|
77
|
-
], StepModel.prototype, "split", void 0);
|
|
78
|
-
__decorate([
|
|
79
|
-
attribute({ type: Boolean, required: false }),
|
|
80
|
-
__metadata("design:type", Boolean)
|
|
81
|
-
], StepModel.prototype, "mirror", void 0);
|
|
82
49
|
__decorate([
|
|
83
50
|
group({ section: 0 }),
|
|
84
51
|
__metadata("design:type", NodeStream)
|
|
@@ -87,6 +54,46 @@ __decorate([
|
|
|
87
54
|
group({ section: 1 }),
|
|
88
55
|
__metadata("design:type", NodeStream)
|
|
89
56
|
], StepModel.prototype, "side", void 0);
|
|
90
|
-
export const
|
|
91
|
-
|
|
57
|
+
export const step = createSchema(StepModel, {
|
|
58
|
+
split: {
|
|
59
|
+
newName: 'layout',
|
|
60
|
+
transform: (val, attrs) => val ? (attrs.mirror ? 'split-reverse' : 'split') : undefined,
|
|
61
|
+
},
|
|
62
|
+
mirror: { newName: '_consumed' },
|
|
63
|
+
});
|
|
64
|
+
export const steps = createContentModelSchema({
|
|
65
|
+
attributes: {},
|
|
66
|
+
contentModel: () => ({
|
|
67
|
+
type: 'sections',
|
|
68
|
+
sectionHeading: 'heading',
|
|
69
|
+
fields: [
|
|
70
|
+
{ name: 'header', match: 'heading|paragraph', optional: true, greedy: true },
|
|
71
|
+
],
|
|
72
|
+
sectionModel: {
|
|
73
|
+
type: 'sequence',
|
|
74
|
+
fields: [{ name: 'body', match: 'any', optional: true, greedy: true }],
|
|
75
|
+
},
|
|
76
|
+
}),
|
|
77
|
+
transform(resolved, attrs, config) {
|
|
78
|
+
const headerNodes = new RenderableNodeCursor(Markdoc.transform(asNodes(resolved.header), config));
|
|
79
|
+
// Build step tag nodes from resolved sections, re-including the heading node
|
|
80
|
+
const sections = (resolved.sections ?? []);
|
|
81
|
+
const stepTagNodes = sections.map(section => new Ast.Node('tag', {}, [section.$headingNode, ...asNodes(section.body)], 'step'));
|
|
82
|
+
const stepStream = new RenderableNodeCursor(Markdoc.transform(stepTagNodes, config));
|
|
83
|
+
const stepItems = stepStream.tag('li').typeof('Step');
|
|
84
|
+
const stepList = new Tag('ol', {}, stepItems.toArray());
|
|
85
|
+
const children = headerNodes.count() > 0
|
|
86
|
+
? [...headerNodes.toArray(), stepList]
|
|
87
|
+
: [stepList];
|
|
88
|
+
return createComponentRenderable(schema.Steps, {
|
|
89
|
+
tag: 'section',
|
|
90
|
+
property: 'contentSection',
|
|
91
|
+
properties: {
|
|
92
|
+
...pageSectionProperties(headerNodes),
|
|
93
|
+
step: stepItems,
|
|
94
|
+
},
|
|
95
|
+
children,
|
|
96
|
+
});
|
|
97
|
+
},
|
|
98
|
+
});
|
|
92
99
|
//# sourceMappingURL=steps.js.map
|
package/dist/tags/steps.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"steps.js","sourceRoot":"","sources":["../../src/tags/steps.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,OAAO,MAAM,kBAAkB,CAAC;AAEvC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;AAC7B,OAAO,
|
|
1
|
+
{"version":3,"file":"steps.js","sourceRoot":"","sources":["../../src/tags/steps.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testimonial.d.ts","sourceRoot":"","sources":["../../src/tags/testimonial.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"testimonial.d.ts","sourceRoot":"","sources":["../../src/tags/testimonial.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,kBAAkB,CAAC;AAQvC,eAAO,MAAM,WAAW,gBAyGtB,CAAC"}
|
package/dist/tags/testimonial.js
CHANGED
|
@@ -1,25 +1,24 @@
|
|
|
1
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
-
};
|
|
7
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
-
};
|
|
10
1
|
import Markdoc from '@markdoc/markdoc';
|
|
11
2
|
const { Tag } = Markdoc;
|
|
12
|
-
import {
|
|
3
|
+
import { createContentModelSchema, createComponentRenderable, asNodes, RenderableNodeCursor } from '@refrakt-md/runes';
|
|
13
4
|
import { schema } from '../types.js';
|
|
14
|
-
const
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
5
|
+
const variantType = ['card', 'inline', 'quote'];
|
|
6
|
+
export const testimonial = createContentModelSchema({
|
|
7
|
+
attributes: {
|
|
8
|
+
rating: { type: Number, required: false },
|
|
9
|
+
variant: { type: String, required: false, matches: variantType.slice() },
|
|
10
|
+
},
|
|
11
|
+
contentModel: {
|
|
12
|
+
type: 'sequence',
|
|
13
|
+
fields: [
|
|
14
|
+
{ name: 'body', match: 'any', optional: true, greedy: true },
|
|
15
|
+
],
|
|
16
|
+
},
|
|
17
|
+
deprecations: {
|
|
18
|
+
layout: { newName: 'variant' },
|
|
19
|
+
},
|
|
20
|
+
transform(resolved, attrs, config) {
|
|
21
|
+
const children = new RenderableNodeCursor(Markdoc.transform(asNodes(resolved.body), config));
|
|
23
22
|
// Extract blockquote as the testimonial quote
|
|
24
23
|
let quoteTag;
|
|
25
24
|
let authorNameTag;
|
|
@@ -36,7 +35,7 @@ class TestimonialModel extends Model {
|
|
|
36
35
|
for (const child of node.children) {
|
|
37
36
|
if (Tag.isTag(child) && child.name === 'strong' && !authorNameTag) {
|
|
38
37
|
const nameText = child.children.filter((c) => typeof c === 'string').join('');
|
|
39
|
-
authorNameTag = new Tag('span', {
|
|
38
|
+
authorNameTag = new Tag('span', { 'data-field': 'author-name' }, [nameText]);
|
|
40
39
|
// Get the role text after the strong tag
|
|
41
40
|
const idx = node.children.indexOf(child);
|
|
42
41
|
const rest = node.children.slice(idx + 1)
|
|
@@ -45,7 +44,7 @@ class TestimonialModel extends Model {
|
|
|
45
44
|
.replace(/^\s*[-–—]\s*/, '')
|
|
46
45
|
.trim();
|
|
47
46
|
if (rest) {
|
|
48
|
-
authorRoleTag = new Tag('span', {
|
|
47
|
+
authorRoleTag = new Tag('span', { 'data-field': 'author-role' }, [rest]);
|
|
49
48
|
}
|
|
50
49
|
}
|
|
51
50
|
}
|
|
@@ -60,8 +59,10 @@ class TestimonialModel extends Model {
|
|
|
60
59
|
}
|
|
61
60
|
}
|
|
62
61
|
}
|
|
63
|
-
const
|
|
64
|
-
const
|
|
62
|
+
const rating = attrs.rating;
|
|
63
|
+
const variant = attrs.variant ?? 'card';
|
|
64
|
+
const ratingMeta = rating !== undefined ? new Tag('meta', { content: rating }) : undefined;
|
|
65
|
+
const variantMeta = new Tag('meta', { content: variant });
|
|
65
66
|
const resultChildren = [];
|
|
66
67
|
if (quoteTag)
|
|
67
68
|
resultChildren.push(quoteTag);
|
|
@@ -71,9 +72,24 @@ class TestimonialModel extends Model {
|
|
|
71
72
|
resultChildren.push(authorRoleTag);
|
|
72
73
|
if (ratingMeta)
|
|
73
74
|
resultChildren.push(ratingMeta);
|
|
74
|
-
resultChildren.push(
|
|
75
|
+
resultChildren.push(variantMeta);
|
|
75
76
|
if (avatarTag)
|
|
76
77
|
resultChildren.push(avatarTag);
|
|
78
|
+
// Schema.org nested entities for Person author and Rating
|
|
79
|
+
if (authorNameTag) {
|
|
80
|
+
const authorMetas = [
|
|
81
|
+
new Tag('meta', { property: 'name', content: authorNameTag.children.filter((c) => typeof c === 'string').join('') }),
|
|
82
|
+
];
|
|
83
|
+
if (authorRoleTag) {
|
|
84
|
+
authorMetas.push(new Tag('meta', { property: 'jobTitle', content: authorRoleTag.children.filter((c) => typeof c === 'string').join('') }));
|
|
85
|
+
}
|
|
86
|
+
resultChildren.push(new Tag('span', { typeof: 'Person', property: 'author' }, authorMetas));
|
|
87
|
+
}
|
|
88
|
+
if (rating !== undefined) {
|
|
89
|
+
resultChildren.push(new Tag('span', { typeof: 'Rating', property: 'reviewRating' }, [
|
|
90
|
+
new Tag('meta', { property: 'ratingValue', content: rating }),
|
|
91
|
+
]));
|
|
92
|
+
}
|
|
77
93
|
return createComponentRenderable(schema.Testimonial, {
|
|
78
94
|
tag: 'article',
|
|
79
95
|
properties: {
|
|
@@ -83,17 +99,11 @@ class TestimonialModel extends Model {
|
|
|
83
99
|
rating: ratingMeta,
|
|
84
100
|
avatar: avatarTag,
|
|
85
101
|
},
|
|
102
|
+
schema: {
|
|
103
|
+
reviewBody: quoteTag,
|
|
104
|
+
},
|
|
86
105
|
children: resultChildren,
|
|
87
106
|
});
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
__decorate([
|
|
91
|
-
attribute({ type: Number, required: false }),
|
|
92
|
-
__metadata("design:type", Object)
|
|
93
|
-
], TestimonialModel.prototype, "rating", void 0);
|
|
94
|
-
__decorate([
|
|
95
|
-
attribute({ type: String, required: false, matches: layoutType.slice() }),
|
|
96
|
-
__metadata("design:type", Object)
|
|
97
|
-
], TestimonialModel.prototype, "layout", void 0);
|
|
98
|
-
export const testimonial = createSchema(TestimonialModel);
|
|
107
|
+
},
|
|
108
|
+
});
|
|
99
109
|
//# sourceMappingURL=testimonial.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testimonial.js","sourceRoot":"","sources":["../../src/tags/testimonial.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"testimonial.js","sourceRoot":"","sources":["../../src/tags/testimonial.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { Command, LinkItem } from '@refrakt-md/types';
|
|
2
1
|
import { Hero } from './schema/hero.js';
|
|
3
2
|
import { CallToAction } from './schema/cta.js';
|
|
4
|
-
import { Feature
|
|
3
|
+
import { Feature } from './schema/feature.js';
|
|
5
4
|
import { Pricing, Tier } from './schema/pricing.js';
|
|
6
5
|
import { Steps, Step } from './schema/steps.js';
|
|
7
6
|
import { Bento, BentoCell } from './schema/bento.js';
|
|
@@ -10,10 +9,7 @@ import { Testimonial } from './schema/testimonial.js';
|
|
|
10
9
|
export declare const schema: {
|
|
11
10
|
Hero: import("@refrakt-md/types").Type<Hero>;
|
|
12
11
|
CallToAction: import("@refrakt-md/types").Type<CallToAction>;
|
|
13
|
-
Command: import("@refrakt-md/types").Type<Command>;
|
|
14
|
-
LinkItem: import("@refrakt-md/types").Type<LinkItem>;
|
|
15
12
|
Feature: import("@refrakt-md/types").Type<Feature>;
|
|
16
|
-
FeatureDefinition: import("@refrakt-md/types").Type<FeatureDefinition>;
|
|
17
13
|
Pricing: import("@refrakt-md/types").Type<Pricing>;
|
|
18
14
|
Tier: import("@refrakt-md/types").Type<Tier>;
|
|
19
15
|
FeaturedTier: import("@refrakt-md/types").Type<Tier>;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,IAAI,EAAC,MAAM,kBAAkB,CAAC;AACtC,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAC,OAAO,EAAC,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAC,OAAO,EAAE,IAAI,EAAC,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAC,KAAK,EAAE,IAAI,EAAC,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAC,KAAK,EAAE,SAAS,EAAC,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAC,UAAU,EAAE,gBAAgB,EAAE,aAAa,EAAC,MAAM,wBAAwB,CAAC;AACnF,OAAO,EAAC,WAAW,EAAC,MAAM,yBAAyB,CAAC;AAEpD,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;CAelB,CAAC"}
|
package/dist/types.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { useSchema
|
|
1
|
+
import { useSchema } from '@refrakt-md/types';
|
|
2
2
|
import { Hero } from './schema/hero.js';
|
|
3
3
|
import { CallToAction } from './schema/cta.js';
|
|
4
|
-
import { Feature
|
|
4
|
+
import { Feature } from './schema/feature.js';
|
|
5
5
|
import { Pricing, Tier } from './schema/pricing.js';
|
|
6
6
|
import { Steps, Step } from './schema/steps.js';
|
|
7
7
|
import { Bento, BentoCell } from './schema/bento.js';
|
|
@@ -10,13 +10,10 @@ import { Testimonial } from './schema/testimonial.js';
|
|
|
10
10
|
export const schema = {
|
|
11
11
|
Hero: useSchema(Hero).defineType('Hero'),
|
|
12
12
|
CallToAction: useSchema(CallToAction).defineType('CallToAction'),
|
|
13
|
-
Command: useSchema(Command).defineType('Command'),
|
|
14
|
-
LinkItem: useSchema(LinkItem).defineType('LinkItem'),
|
|
15
13
|
Feature: useSchema(Feature).defineType('Feature'),
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
FeaturedTier: useSchema(Tier).defineType('FeaturedTier'),
|
|
14
|
+
Pricing: useSchema(Pricing).defineType('Pricing', {}, 'Product'),
|
|
15
|
+
Tier: useSchema(Tier).defineType('Tier', {}, 'Offer'),
|
|
16
|
+
FeaturedTier: useSchema(Tier).defineType('FeaturedTier', {}, 'Offer'),
|
|
20
17
|
Steps: useSchema(Steps).defineType('Steps'),
|
|
21
18
|
Step: useSchema(Step).defineType('Step'),
|
|
22
19
|
Bento: useSchema(Bento).defineType('Bento'),
|
|
@@ -24,6 +21,6 @@ export const schema = {
|
|
|
24
21
|
Comparison: useSchema(Comparison).defineType('Comparison'),
|
|
25
22
|
ComparisonColumn: useSchema(ComparisonColumn).defineType('ComparisonColumn'),
|
|
26
23
|
ComparisonRow: useSchema(ComparisonRow).defineType('ComparisonRow'),
|
|
27
|
-
Testimonial: useSchema(Testimonial).defineType('Testimonial'),
|
|
24
|
+
Testimonial: useSchema(Testimonial).defineType('Testimonial', {}, 'Review'),
|
|
28
25
|
};
|
|
29
26
|
//# sourceMappingURL=types.js.map
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAC,IAAI,EAAC,MAAM,kBAAkB,CAAC;AACtC,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAC,OAAO,EAAC,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAC,OAAO,EAAE,IAAI,EAAC,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAC,KAAK,EAAE,IAAI,EAAC,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAC,KAAK,EAAE,SAAS,EAAC,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAC,UAAU,EAAE,gBAAgB,EAAE,aAAa,EAAC,MAAM,wBAAwB,CAAC;AACnF,OAAO,EAAC,WAAW,EAAC,MAAM,yBAAyB,CAAC;AAEpD,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;IACxC,YAAY,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC,UAAU,CAAC,cAAc,CAAC;IAChE,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC;IACjD,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,SAAS,EAAE,EAAE,EAAE,SAAS,CAAC;IAChE,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,EAAE,OAAO,CAAC;IACrD,YAAY,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,cAAc,EAAE,EAAE,EAAE,OAAO,CAAC;IACrE,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC;IAC3C,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;IACxC,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC;IAC3C,SAAS,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC;IACvD,UAAU,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC;IAC1D,gBAAgB,EAAE,SAAS,CAAC,gBAAgB,CAAC,CAAC,UAAU,CAAC,kBAAkB,CAAC;IAC5E,aAAa,EAAE,SAAS,CAAC,aAAa,CAAC,CAAC,UAAU,CAAC,eAAe,CAAC;IACnE,WAAW,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC,aAAa,EAAE,EAAE,EAAE,QAAQ,CAAC;CAC5E,CAAC"}
|