@refrakt-md/marketing 0.7.1 → 0.8.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/dist/config.d.ts.map +1 -1
- package/dist/config.js +83 -18
- package/dist/config.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/schema/bento.d.ts +5 -22
- 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 +3 -41
- 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/cta.d.ts +1 -12
- package/dist/schema/cta.d.ts.map +1 -1
- package/dist/schema/cta.js.map +1 -1
- package/dist/schema/feature.d.ts +1 -22
- package/dist/schema/feature.d.ts.map +1 -1
- package/dist/schema/feature.js.map +1 -1
- package/dist/schema/hero.d.ts +1 -16
- 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/schema/pricing.d.ts +1 -24
- package/dist/schema/pricing.d.ts.map +1 -1
- package/dist/schema/pricing.js.map +1 -1
- package/dist/schema/steps.d.ts +1 -18
- package/dist/schema/steps.d.ts.map +1 -1
- package/dist/schema/steps.js.map +1 -1
- package/dist/schema/testimonial.d.ts +0 -12
- package/dist/schema/testimonial.d.ts.map +1 -1
- package/dist/schema/testimonial.js.map +1 -1
- package/dist/tags/bento.d.ts.map +1 -1
- package/dist/tags/bento.js +150 -67
- package/dist/tags/bento.js.map +1 -1
- package/dist/tags/comparison.d.ts.map +1 -1
- package/dist/tags/comparison.js +153 -165
- package/dist/tags/comparison.js.map +1 -1
- package/dist/tags/cta.d.ts.map +1 -1
- package/dist/tags/cta.js +36 -37
- package/dist/tags/cta.js.map +1 -1
- package/dist/tags/feature.d.ts +4 -3
- package/dist/tags/feature.d.ts.map +1 -1
- package/dist/tags/feature.js +90 -51
- package/dist/tags/feature.js.map +1 -1
- package/dist/tags/hero.d.ts.map +1 -1
- package/dist/tags/hero.js +105 -65
- package/dist/tags/hero.js.map +1 -1
- package/dist/tags/pricing.d.ts.map +1 -1
- package/dist/tags/pricing.js +78 -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 +60 -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 +26 -26
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +4 -4
- package/dist/types.js.map +1 -1
- package/package.json +4 -4
package/dist/tags/feature.js
CHANGED
|
@@ -9,7 +9,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
9
9
|
};
|
|
10
10
|
import Markdoc from '@markdoc/markdoc';
|
|
11
11
|
const { Tag, Ast } = Markdoc;
|
|
12
|
-
import {
|
|
12
|
+
import { group, Model, createContentModelSchema, createComponentRenderable, createSchema, asNodes, NodeStream, RenderableNodeCursor, SplitLayoutModel, pageSectionProperties } from '@refrakt-md/runes';
|
|
13
13
|
import { schema } from '../types.js';
|
|
14
14
|
export class DefinitionModel extends Model {
|
|
15
15
|
transform() {
|
|
@@ -62,33 +62,81 @@ __decorate([
|
|
|
62
62
|
__metadata("design:type", NodeStream)
|
|
63
63
|
], DefinitionModel.prototype, "description", void 0);
|
|
64
64
|
export const definition = createSchema(DefinitionModel);
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
65
|
+
const alignType = ['left', 'center', 'right'];
|
|
66
|
+
export const feature = createContentModelSchema({
|
|
67
|
+
base: SplitLayoutModel,
|
|
68
|
+
attributes: {
|
|
69
|
+
align: { type: String, required: false, matches: alignType.slice() },
|
|
70
|
+
},
|
|
71
|
+
contentModel: {
|
|
72
|
+
type: 'delimited',
|
|
73
|
+
delimiter: 'hr',
|
|
74
|
+
zones: [
|
|
75
|
+
{
|
|
76
|
+
name: 'content',
|
|
77
|
+
type: 'sequence',
|
|
78
|
+
fields: [
|
|
79
|
+
{ name: 'header', match: 'heading|paragraph', optional: true, greedy: true },
|
|
80
|
+
{ name: 'definitions', match: 'list', optional: true, greedy: true },
|
|
81
|
+
],
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
name: 'media',
|
|
85
|
+
type: 'sequence',
|
|
86
|
+
fields: [
|
|
87
|
+
{ name: 'media', match: 'any', optional: true, greedy: true },
|
|
88
|
+
],
|
|
89
|
+
},
|
|
90
|
+
],
|
|
91
|
+
},
|
|
92
|
+
transform(resolved, attrs, config) {
|
|
93
|
+
const contentZone = (resolved.content ?? {});
|
|
94
|
+
const mediaZone = (resolved.media ?? {});
|
|
95
|
+
const header = new RenderableNodeCursor(Markdoc.transform(asNodes(contentZone.header), config));
|
|
96
|
+
// Transform definitions with custom node overrides
|
|
97
|
+
const defConfig = {
|
|
98
|
+
...config,
|
|
99
|
+
nodes: {
|
|
100
|
+
...config.nodes,
|
|
101
|
+
item: {
|
|
102
|
+
transform(node, innerConfig) {
|
|
103
|
+
return Markdoc.transform(new Ast.Node('tag', {}, node.children, 'definition'), innerConfig);
|
|
104
|
+
},
|
|
105
|
+
},
|
|
106
|
+
list: {
|
|
107
|
+
transform(node, innerConfig) {
|
|
108
|
+
const layout = attrs.layout || 'stacked';
|
|
109
|
+
return new Tag('dl', layout !== 'stacked' ? {} : { 'data-layout': 'grid', 'data-columns': node.children.length }, node.transformChildren(innerConfig));
|
|
110
|
+
},
|
|
111
|
+
},
|
|
112
|
+
},
|
|
113
|
+
};
|
|
114
|
+
const definitions = new RenderableNodeCursor(Markdoc.transform(asNodes(contentZone.definitions), defConfig));
|
|
115
|
+
const side = new RenderableNodeCursor(Markdoc.transform(asNodes(mediaZone.media), config));
|
|
116
|
+
const align = attrs.align || 'center';
|
|
117
|
+
const layout = attrs.layout || 'stacked';
|
|
118
|
+
const ratio = attrs.ratio || '1 1';
|
|
119
|
+
const valign = attrs.valign || 'top';
|
|
120
|
+
const gap = attrs.gap || 'default';
|
|
121
|
+
const collapse = attrs.collapse;
|
|
122
|
+
const layoutMeta = new Tag('meta', { content: layout });
|
|
123
|
+
const alignMeta = new Tag('meta', { content: align });
|
|
124
|
+
const ratioMeta = layout !== 'stacked' ? new Tag('meta', { content: ratio }) : undefined;
|
|
125
|
+
const valignMeta = layout !== 'stacked' ? new Tag('meta', { content: valign }) : undefined;
|
|
126
|
+
const gapMeta = gap !== 'default' ? new Tag('meta', { content: gap }) : undefined;
|
|
127
|
+
const collapseMeta = collapse ? new Tag('meta', { content: collapse }) : undefined;
|
|
82
128
|
const headerContent = header.count() > 0 ? [header.wrap('header').next()] : [];
|
|
83
129
|
const mainContent = new RenderableNodeCursor([...headerContent, ...definitions.toArray()]).wrap('div');
|
|
84
|
-
const
|
|
85
|
-
const splitMeta = this.split ? new Tag('meta', { content: 'split' }) : undefined;
|
|
86
|
-
const mirrorMeta = this.mirror ? new Tag('meta', { content: 'mirror' }) : undefined;
|
|
130
|
+
const mediaContent = side.wrap('div');
|
|
87
131
|
const children = [
|
|
88
|
-
|
|
89
|
-
|
|
132
|
+
layoutMeta,
|
|
133
|
+
alignMeta,
|
|
134
|
+
...(ratioMeta ? [ratioMeta] : []),
|
|
135
|
+
...(valignMeta ? [valignMeta] : []),
|
|
136
|
+
...(gapMeta ? [gapMeta] : []),
|
|
137
|
+
...(collapseMeta ? [collapseMeta] : []),
|
|
90
138
|
mainContent.next(),
|
|
91
|
-
...(side.toArray().length > 0 ? [
|
|
139
|
+
...(side.toArray().length > 0 ? [mediaContent.next()] : []),
|
|
92
140
|
];
|
|
93
141
|
return createComponentRenderable(schema.Feature, {
|
|
94
142
|
tag: 'section',
|
|
@@ -96,36 +144,27 @@ class FeatureModel extends SplitablePageSectionModel {
|
|
|
96
144
|
properties: {
|
|
97
145
|
...pageSectionProperties(header),
|
|
98
146
|
featureItem: definitions.flatten().tag('div'),
|
|
99
|
-
|
|
100
|
-
|
|
147
|
+
layout: layoutMeta,
|
|
148
|
+
align: alignMeta,
|
|
149
|
+
ratio: ratioMeta,
|
|
150
|
+
valign: valignMeta,
|
|
151
|
+
gap: gapMeta,
|
|
152
|
+
collapse: collapseMeta,
|
|
101
153
|
},
|
|
102
154
|
refs: {
|
|
103
|
-
|
|
104
|
-
|
|
155
|
+
content: mainContent,
|
|
156
|
+
media: mediaContent,
|
|
105
157
|
},
|
|
106
158
|
children,
|
|
107
159
|
});
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
__decorate([
|
|
119
|
-
group({ section: 0, include: ['heading', 'paragraph'] }),
|
|
120
|
-
__metadata("design:type", NodeStream)
|
|
121
|
-
], FeatureModel.prototype, "header", void 0);
|
|
122
|
-
__decorate([
|
|
123
|
-
group({ section: 0, include: ['list'] }),
|
|
124
|
-
__metadata("design:type", NodeStream)
|
|
125
|
-
], FeatureModel.prototype, "definitions", void 0);
|
|
126
|
-
__decorate([
|
|
127
|
-
group({ section: 1 }),
|
|
128
|
-
__metadata("design:type", NodeStream)
|
|
129
|
-
], FeatureModel.prototype, "showcase", void 0);
|
|
130
|
-
export const feature = createSchema(FeatureModel);
|
|
160
|
+
},
|
|
161
|
+
deprecations: {
|
|
162
|
+
split: {
|
|
163
|
+
newName: 'layout',
|
|
164
|
+
transform: (val, attrs) => val ? (attrs.mirror ? 'split-reverse' : 'split') : undefined,
|
|
165
|
+
},
|
|
166
|
+
mirror: { newName: '_consumed' },
|
|
167
|
+
justify: { newName: 'align' },
|
|
168
|
+
},
|
|
169
|
+
});
|
|
131
170
|
//# sourceMappingURL=feature.js.map
|
package/dist/tags/feature.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feature.js","sourceRoot":"","sources":["../../src/tags/feature.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,OAAO,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"feature.js","sourceRoot":"","sources":["../../src/tags/feature.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,OAAO,MAAM,kBAAkB,CAAC;AAGvC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;AAC7B,OAAO,EAAa,KAAK,EAAE,KAAK,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AACnN,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,MAAM,OAAO,eAAgB,SAAQ,KAAK;IAOxC,SAAS;QACP,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI;aACjB,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE;YAC3B,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;YAClE,IAAI,GAAG;gBAAE,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YACpD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,GAAG,KAAK,MAAM,CAAC,CAAC;YACxF,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;gBACtE,MAAM,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC3D,IAAI,MAAM;oBAAE,OAAO,CAAC,UAAU,EAAE,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBAC5F,OAAO,UAAU,CAAC;YACpB,CAAC;YACD,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;YACtE,IAAI,MAAM;gBAAE,OAAO,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;YAC9E,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9C,CAAC,CAAC;aACD,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE;YACzB,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;YAClE,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;YACpE,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;YAEvE,OAAO,GAAG,CAAC,CAAC,CAAC,CAAE,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QACpE,CAAC,CAAC;aACD,SAAS,EAAE;aACX,IAAI,CAAC,IAAI,CAAC,CAAC;QAEd,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW;aACxB,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC;aAC1B,SAAS,EAAE,CAAC;QAEf,OAAO,yBAAyB,CAAC,MAAM,CAAC,iBAAiB,EAAE;YACzD,GAAG,EAAE,KAAK;YACV,UAAU,EAAE;gBACV,KAAK,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;gBAC9B,IAAI,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC;gBAC9B,WAAW,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC;aAC1B;YACD,QAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE;SAClC,CAAC,CAAC;IACL,CAAC;CACF;AA7CC;IADC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,SAAS,CAAC,EAAE,CAAC;8BACjK,UAAU;6CAAC;AAGjB;IADC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC;8BACrB,UAAU;oDAAC;AA4C1B,MAAM,CAAC,MAAM,UAAU,GAAG,YAAY,CAAC,eAAe,CAAC,CAAC;AAExD,MAAM,SAAS,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAU,CAAC;AAEvD,MAAM,CAAC,MAAM,OAAO,GAAG,wBAAwB,CAAC;IAC/C,IAAI,EAAE,gBAAgB;IACtB,UAAU,EAAE;QACX,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,KAAK,EAAE,EAAE;KACpE;IACD,YAAY,EAAE;QACb,IAAI,EAAE,WAAW;QACjB,SAAS,EAAE,IAAI;QACf,KAAK,EAAE;YACN;gBACC,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,UAAU;gBAChB,MAAM,EAAE;oBACP,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,mBAAmB,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;oBAC5E,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;iBACpE;aACD;YACD;gBACC,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,UAAU;gBAChB,MAAM,EAAE;oBACP,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;iBAC7D;aACD;SACD;KACD;IACD,SAAS,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM;QAChC,MAAM,WAAW,GAAG,CAAC,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAoB,CAAC;QAChE,MAAM,SAAS,GAAG,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAoB,CAAC;QAE5D,MAAM,MAAM,GAAG,IAAI,oBAAoB,CACtC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,CAAyB,CAC9E,CAAC;QAEF,mDAAmD;QACnD,MAAM,SAAS,GAAG;YACjB,GAAG,MAAM;YACT,KAAK,EAAE;gBACN,GAAG,MAAM,CAAC,KAAK;gBACf,IAAI,EAAE;oBACL,SAAS,CAAC,IAAU,EAAE,WAAgC;wBACrD,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,CAAC;oBAC7F,CAAC;iBACD;gBACD,IAAI,EAAE;oBACL,SAAS,CAAC,IAAU,EAAE,WAAgC;wBACrD,MAAM,MAAM,GAAI,KAAK,CAAC,MAAiB,IAAI,SAAS,CAAC;wBACrD,OAAO,IAAI,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC;oBACxJ,CAAC;iBACD;aACD;SACD,CAAC;QACF,MAAM,WAAW,GAAG,IAAI,oBAAoB,CAC3C,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,SAAS,CAAyB,CACtF,CAAC;QAEF,MAAM,IAAI,GAAG,IAAI,oBAAoB,CACpC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM,CAAyB,CAC3E,CAAC;QAEF,MAAM,KAAK,GAAI,KAAK,CAAC,KAAgB,IAAI,QAAQ,CAAC;QAClD,MAAM,MAAM,GAAI,KAAK,CAAC,MAAiB,IAAI,SAAS,CAAC;QACrD,MAAM,KAAK,GAAI,KAAK,CAAC,KAAgB,IAAI,KAAK,CAAC;QAC/C,MAAM,MAAM,GAAI,KAAK,CAAC,MAAiB,IAAI,KAAK,CAAC;QACjD,MAAM,GAAG,GAAI,KAAK,CAAC,GAAc,IAAI,SAAS,CAAC;QAC/C,MAAM,QAAQ,GAAG,KAAK,CAAC,QAA8B,CAAC;QAEtD,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QACxD,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QACtD,MAAM,SAAS,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACzF,MAAM,UAAU,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC3F,MAAM,OAAO,GAAG,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAClF,MAAM,YAAY,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAEnF,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/E,MAAM,WAAW,GAAG,IAAI,oBAAoB,CAAC,CAAC,GAAG,aAAa,EAAE,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvG,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEtC,MAAM,QAAQ,GAAG;YAChB,UAAU;YACV,SAAS;YACT,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACjC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACnC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7B,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACvC,WAAW,CAAC,IAAI,EAAE;YAClB,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SAC3D,CAAC;QAEF,OAAO,yBAAyB,CAAC,MAAM,CAAC,OAAO,EAAE;YAChD,GAAG,EAAE,SAAS;YACd,QAAQ,EAAE,gBAAgB;YAC1B,UAAU,EAAE;gBACX,GAAG,qBAAqB,CAAC,MAAM,CAAC;gBAChC,WAAW,EAAE,WAAW,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;gBAC7C,MAAM,EAAE,UAAU;gBAClB,KAAK,EAAE,SAAS;gBAChB,KAAK,EAAE,SAAS;gBAChB,MAAM,EAAE,UAAU;gBAClB,GAAG,EAAE,OAAO;gBACZ,QAAQ,EAAE,YAAY;aACtB;YACD,IAAI,EAAE;gBACL,OAAO,EAAE,WAAW;gBACpB,KAAK,EAAE,YAAY;aACnB;YACD,QAAQ;SACR,CAAC,CAAC;IACJ,CAAC;IACD,YAAY,EAAE;QACb,KAAK,EAAE;YACN,OAAO,EAAE,QAAQ;YACjB,SAAS,EAAE,CAAC,GAAQ,EAAE,KAA0B,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS;SACjH;QACD,MAAM,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE;QAChC,OAAO,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE;KAC7B;CACD,CAAC,CAAC"}
|
package/dist/tags/hero.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hero.d.ts","sourceRoot":"","sources":["../../src/tags/hero.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"hero.d.ts","sourceRoot":"","sources":["../../src/tags/hero.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,kBAAkB,CAAC;AAOvC,eAAO,MAAM,IAAI,gBA2If,CAAC"}
|
package/dist/tags/hero.js
CHANGED
|
@@ -1,86 +1,126 @@
|
|
|
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, RenderableNodeCursor, SplitLayoutModel, linkItem, pageSectionProperties } from '@refrakt-md/runes';
|
|
13
4
|
import { schema } from '../types.js';
|
|
14
|
-
const
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
5
|
+
export const hero = createContentModelSchema({
|
|
6
|
+
base: SplitLayoutModel,
|
|
7
|
+
attributes: {
|
|
8
|
+
align: { type: String, required: false, matches: ['left', 'center', 'right'] },
|
|
9
|
+
},
|
|
10
|
+
contentModel: {
|
|
11
|
+
type: 'delimited',
|
|
12
|
+
delimiter: 'hr',
|
|
13
|
+
zones: [
|
|
14
|
+
{
|
|
15
|
+
name: 'content',
|
|
16
|
+
type: 'sequence',
|
|
17
|
+
fields: [
|
|
18
|
+
{ name: 'eyebrow', match: 'paragraph', optional: true },
|
|
19
|
+
{ name: 'headline', match: 'heading', optional: false },
|
|
20
|
+
{ name: 'blurb', match: 'paragraph', optional: true },
|
|
21
|
+
{ name: 'actions', match: 'list|fence', optional: true, greedy: true },
|
|
22
|
+
],
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
name: 'media',
|
|
26
|
+
type: 'sequence',
|
|
27
|
+
fields: [
|
|
28
|
+
{ name: 'media', match: 'any', optional: true, greedy: true },
|
|
29
|
+
],
|
|
30
|
+
},
|
|
31
|
+
],
|
|
32
|
+
},
|
|
33
|
+
transform(resolved, attrs, config) {
|
|
34
|
+
const contentZone = (resolved.content ?? {});
|
|
35
|
+
const mediaZone = (resolved.media ?? {});
|
|
36
|
+
// Collect header AST nodes (eyebrow, headline, blurb) and transform
|
|
37
|
+
const headerAstNodes = [
|
|
38
|
+
contentZone.eyebrow,
|
|
39
|
+
contentZone.headline,
|
|
40
|
+
contentZone.blurb,
|
|
41
|
+
].filter(Boolean);
|
|
42
|
+
const header = new RenderableNodeCursor(Markdoc.transform(headerAstNodes, config));
|
|
43
|
+
// Collect action AST nodes (list and/or fences) and transform with custom handlers
|
|
44
|
+
const actionAstNodes = (Array.isArray(contentZone.actions) ? contentZone.actions : contentZone.actions ? [contentZone.actions] : []);
|
|
45
|
+
// Use the original config inside the fence handler to avoid recursion
|
|
46
|
+
// (same pattern as NodeStream.useNode — the inner transform uses the
|
|
47
|
+
// base config, not the config with custom overrides)
|
|
48
|
+
const baseConfig = config;
|
|
49
|
+
const actionConfig = {
|
|
50
|
+
...config,
|
|
51
|
+
nodes: {
|
|
52
|
+
...config.nodes,
|
|
53
|
+
item: linkItem,
|
|
54
|
+
fence: {
|
|
55
|
+
transform(node) {
|
|
56
|
+
const output = new RenderableNodeCursor([Markdoc.transform(node, baseConfig)]);
|
|
57
|
+
return createComponentRenderable(schema.Command, {
|
|
58
|
+
tag: 'div',
|
|
59
|
+
properties: {
|
|
60
|
+
code: output.flatten().tag('code'),
|
|
61
|
+
},
|
|
62
|
+
children: output.next(),
|
|
63
|
+
});
|
|
64
|
+
},
|
|
32
65
|
},
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
const
|
|
38
|
-
const
|
|
39
|
-
|
|
66
|
+
},
|
|
67
|
+
};
|
|
68
|
+
const actions = new RenderableNodeCursor(Markdoc.transform(actionAstNodes, actionConfig));
|
|
69
|
+
// Transform media AST nodes
|
|
70
|
+
const mediaAstNodes = (Array.isArray(mediaZone.media) ? mediaZone.media : []);
|
|
71
|
+
const side = new RenderableNodeCursor(Markdoc.transform(mediaAstNodes, config));
|
|
72
|
+
// Layout attribute defaults
|
|
73
|
+
const align = attrs.align || 'center';
|
|
74
|
+
const layout = attrs.layout || 'stacked';
|
|
75
|
+
const ratio = attrs.ratio || '1 1';
|
|
76
|
+
const valign = attrs.valign || 'top';
|
|
77
|
+
const gap = attrs.gap || 'default';
|
|
78
|
+
const collapse = attrs.collapse;
|
|
79
|
+
// Create meta tags for identity transform
|
|
80
|
+
const alignMeta = new Tag('meta', { content: align });
|
|
81
|
+
const layoutMeta = new Tag('meta', { content: layout });
|
|
82
|
+
const ratioMeta = layout !== 'stacked' ? new Tag('meta', { content: ratio }) : undefined;
|
|
83
|
+
const valignMeta = layout !== 'stacked' ? new Tag('meta', { content: valign }) : undefined;
|
|
84
|
+
const gapMeta = gap !== 'default' ? new Tag('meta', { content: gap }) : undefined;
|
|
85
|
+
const collapseMeta = collapse ? new Tag('meta', { content: collapse }) : undefined;
|
|
86
|
+
// Structural wrapping
|
|
40
87
|
const actionsDiv = actions.wrap('div');
|
|
88
|
+
const headerContent = header.count() > 0 ? [header.wrap('header').next()] : [];
|
|
89
|
+
const mainContent = new RenderableNodeCursor([
|
|
90
|
+
...headerContent,
|
|
91
|
+
...(actions.count() > 0 ? [actionsDiv.next()] : []),
|
|
92
|
+
]).wrap('div');
|
|
93
|
+
const mediaDiv = side.wrap('div');
|
|
41
94
|
return createComponentRenderable(schema.Hero, {
|
|
42
95
|
tag: 'section',
|
|
43
96
|
property: 'contentSection',
|
|
44
97
|
properties: {
|
|
45
98
|
...pageSectionProperties(header),
|
|
46
|
-
background: backgroundMeta,
|
|
47
|
-
backgroundImage: backgroundImageMeta,
|
|
48
99
|
align: alignMeta,
|
|
100
|
+
layout: layoutMeta,
|
|
101
|
+
ratio: ratioMeta,
|
|
102
|
+
valign: valignMeta,
|
|
103
|
+
gap: gapMeta,
|
|
104
|
+
collapse: collapseMeta,
|
|
49
105
|
action: actions.flatten().tags('li', 'div'),
|
|
50
106
|
},
|
|
51
107
|
refs: {
|
|
52
108
|
actions: actionsDiv,
|
|
53
|
-
|
|
109
|
+
content: mainContent,
|
|
110
|
+
media: mediaDiv,
|
|
54
111
|
},
|
|
55
112
|
children: [
|
|
56
|
-
backgroundMeta,
|
|
57
|
-
backgroundImageMeta,
|
|
58
113
|
alignMeta,
|
|
59
|
-
|
|
60
|
-
|
|
114
|
+
layoutMeta,
|
|
115
|
+
...(ratioMeta ? [ratioMeta] : []),
|
|
116
|
+
...(valignMeta ? [valignMeta] : []),
|
|
117
|
+
...(gapMeta ? [gapMeta] : []),
|
|
118
|
+
...(collapseMeta ? [collapseMeta] : []),
|
|
119
|
+
mainContent.next(),
|
|
120
|
+
...(side.toArray().length > 0 ? [mediaDiv.next()] : []),
|
|
61
121
|
],
|
|
62
122
|
});
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
attribute({ type: String, required: false }),
|
|
67
|
-
__metadata("design:type", String)
|
|
68
|
-
], HeroModel.prototype, "background", void 0);
|
|
69
|
-
__decorate([
|
|
70
|
-
attribute({ type: String, required: false }),
|
|
71
|
-
__metadata("design:type", String)
|
|
72
|
-
], HeroModel.prototype, "backgroundImage", void 0);
|
|
73
|
-
__decorate([
|
|
74
|
-
attribute({ type: String, required: false, matches: alignType.slice() }),
|
|
75
|
-
__metadata("design:type", Object)
|
|
76
|
-
], HeroModel.prototype, "align", void 0);
|
|
77
|
-
__decorate([
|
|
78
|
-
group({ include: ['heading', 'paragraph'] }),
|
|
79
|
-
__metadata("design:type", NodeStream)
|
|
80
|
-
], HeroModel.prototype, "header", void 0);
|
|
81
|
-
__decorate([
|
|
82
|
-
group({ include: ['list', 'fence'] }),
|
|
83
|
-
__metadata("design:type", NodeStream)
|
|
84
|
-
], HeroModel.prototype, "actions", void 0);
|
|
85
|
-
export const hero = createSchema(HeroModel);
|
|
123
|
+
},
|
|
124
|
+
deprecations: { justify: { newName: 'align' } },
|
|
125
|
+
});
|
|
86
126
|
//# sourceMappingURL=hero.js.map
|
package/dist/tags/hero.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hero.js","sourceRoot":"","sources":["../../src/tags/hero.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"hero.js","sourceRoot":"","sources":["../../src/tags/hero.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pricing.d.ts","sourceRoot":"","sources":["../../src/tags/pricing.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"pricing.d.ts","sourceRoot":"","sources":["../../src/tags/pricing.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,EAA4B,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEtF,OAAO,EAAa,KAAK,EAA6K,MAAM,mBAAmB,CAAC;AAkDhO,eAAO,MAAM,OAAO,gBA6ClB,CAAC;AAEH,qBAAa,SAAU,SAAQ,KAAK;IAElC,IAAI,EAAE,MAAM,CAAC;IAGb,KAAK,EAAE,MAAM,CAAM;IAGnB,QAAQ,EAAE,OAAO,CAAS;IAG1B,QAAQ,EAAE,MAAM,CAAM;IAItB,YAAY,EAAE,MAAM,CAAM;IAE1B,SAAS,IAAI,mBAAmB;CAoCjC;AAED,eAAO,MAAM,IAAI,gBAA0B,CAAC"}
|
package/dist/tags/pricing.js
CHANGED
|
@@ -9,85 +9,93 @@ 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, headingLevel) {
|
|
27
|
+
// Auto-detect heading level from the first heading that matches "Name — Price"
|
|
28
|
+
const level = headingLevel ?? 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
|
+
headingLevel: { type: Number, required: false },
|
|
62
|
+
},
|
|
63
|
+
contentModel: {
|
|
64
|
+
type: 'sequence',
|
|
65
|
+
fields: [
|
|
66
|
+
{ name: 'content', match: 'any', optional: true, greedy: true },
|
|
67
|
+
],
|
|
68
|
+
},
|
|
69
|
+
transform(resolved, attrs, config) {
|
|
70
|
+
const processed = convertHeadings(asNodes(resolved.content), attrs.headingLevel);
|
|
71
|
+
const allNodes = new RenderableNodeCursor(Markdoc.transform(processed, config));
|
|
72
|
+
// Separate header (headings, paragraphs) from tiers (li items)
|
|
73
|
+
const header = allNodes.tags('h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'p');
|
|
74
|
+
const tiers = allNodes.tag('li');
|
|
75
|
+
const sectionProps = pageSectionProperties(header);
|
|
60
76
|
const tiersList = tiers.wrap('ul', { 'data-layout': 'grid', 'data-columns': tiers.nodes.length });
|
|
61
77
|
return createComponentRenderable(schema.Pricing, {
|
|
62
78
|
tag: 'section',
|
|
63
79
|
property: 'contentSection',
|
|
64
80
|
properties: {
|
|
65
|
-
...
|
|
66
|
-
tier:
|
|
81
|
+
...sectionProps,
|
|
82
|
+
tier: tiers,
|
|
67
83
|
},
|
|
68
84
|
refs: {
|
|
69
85
|
tiers: tiersList.tag('ul'),
|
|
70
86
|
},
|
|
87
|
+
schema: {
|
|
88
|
+
name: sectionProps.headline,
|
|
89
|
+
description: sectionProps.blurb,
|
|
90
|
+
offers: tiers,
|
|
91
|
+
},
|
|
71
92
|
children: [
|
|
72
93
|
header.wrap('header').next(),
|
|
73
94
|
tiersList.next(),
|
|
74
95
|
]
|
|
75
96
|
});
|
|
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);
|
|
97
|
+
},
|
|
98
|
+
});
|
|
91
99
|
export class TierModel extends Model {
|
|
92
100
|
constructor() {
|
|
93
101
|
super(...arguments);
|
|
@@ -105,6 +113,10 @@ export class TierModel extends Model {
|
|
|
105
113
|
const children = this.transformChildren();
|
|
106
114
|
const body = children.wrap('div');
|
|
107
115
|
const currencyMeta = this.currency ? new Tag('meta', { content: this.currency }) : undefined;
|
|
116
|
+
// Schema.org price parsing: extract numeric value and infer currency
|
|
117
|
+
const numericMatch = priceValue.match(/[\d.]+/);
|
|
118
|
+
const parsedPriceMeta = new Tag('meta', { content: numericMatch ? numericMatch[0] : priceValue });
|
|
119
|
+
const resolvedCurrencyMeta = new Tag('meta', { content: this.currency || inferCurrency(priceValue) });
|
|
108
120
|
return createComponentRenderable(type, {
|
|
109
121
|
tag: 'li',
|
|
110
122
|
properties: {
|
|
@@ -117,7 +129,12 @@ export class TierModel extends Model {
|
|
|
117
129
|
refs: {
|
|
118
130
|
body: body.tag('div'),
|
|
119
131
|
},
|
|
120
|
-
|
|
132
|
+
schema: {
|
|
133
|
+
name: nameTag,
|
|
134
|
+
price: parsedPriceMeta,
|
|
135
|
+
priceCurrency: resolvedCurrencyMeta,
|
|
136
|
+
},
|
|
137
|
+
children: [nameTag, priceTag, parsedPriceMeta, resolvedCurrencyMeta, ...(currencyMeta ? [currencyMeta] : []), body.next()],
|
|
121
138
|
});
|
|
122
139
|
}
|
|
123
140
|
}
|