@contractspec/bundle.marketing 3.4.3 → 3.5.2

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.
@@ -0,0 +1,283 @@
1
+ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
2
+ get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
3
+ }) : x)(function(x) {
4
+ if (typeof require !== "undefined")
5
+ return require.apply(this, arguments);
6
+ throw Error('Dynamic require of "' + x + '" is not supported');
7
+ });
8
+
9
+ // src/bundles/MarketingBundle.ts
10
+ import { defineModuleBundle } from "@contractspec/lib.surface-runtime/spec";
11
+ var MarketingBundle = defineModuleBundle({
12
+ meta: {
13
+ key: "marketing.pages",
14
+ version: "0.1.0",
15
+ title: "Marketing Pages",
16
+ description: "Adaptive surfaces for landing, template gallery, changelog, and product pages",
17
+ owners: ["team-platform"],
18
+ tags: ["marketing", "landing", "templates", "changelog"],
19
+ stability: "experimental"
20
+ },
21
+ routes: [
22
+ {
23
+ routeId: "landing",
24
+ path: "/",
25
+ defaultSurface: "landing"
26
+ },
27
+ {
28
+ routeId: "product",
29
+ path: "/product",
30
+ defaultSurface: "product"
31
+ },
32
+ {
33
+ routeId: "templates",
34
+ path: "/templates",
35
+ defaultSurface: "template-gallery"
36
+ },
37
+ {
38
+ routeId: "changelog",
39
+ path: "/changelog",
40
+ defaultSurface: "changelog"
41
+ },
42
+ {
43
+ routeId: "contact",
44
+ path: "/contact",
45
+ defaultSurface: "contact"
46
+ }
47
+ ],
48
+ surfaces: {
49
+ landing: {
50
+ surfaceId: "landing",
51
+ kind: "overview",
52
+ title: "Landing Page",
53
+ slots: [
54
+ {
55
+ slotId: "header",
56
+ role: "header",
57
+ accepts: ["action-bar"],
58
+ cardinality: "many"
59
+ },
60
+ {
61
+ slotId: "primary",
62
+ role: "primary",
63
+ accepts: ["entity-section", "custom-widget"],
64
+ cardinality: "many"
65
+ }
66
+ ],
67
+ layouts: [
68
+ {
69
+ layoutId: "single-column",
70
+ title: "Single column",
71
+ root: {
72
+ type: "panel-group",
73
+ direction: "vertical",
74
+ persistKey: "marketing.landing",
75
+ children: [
76
+ { type: "slot", slotId: "header" },
77
+ { type: "slot", slotId: "primary" }
78
+ ]
79
+ }
80
+ }
81
+ ],
82
+ data: [],
83
+ verification: {
84
+ dimensions: {
85
+ guidance: "Can reveal product tour, feature highlights, and contextual CTAs.",
86
+ density: "Can select compact hero or detailed multi-section layouts.",
87
+ dataDepth: "Controls section depth and inline expansion.",
88
+ control: "Shows advanced navigation when allowed.",
89
+ media: "Supports text-first, visual hero, and hybrid modes.",
90
+ pace: "Maps to scroll and transition behavior.",
91
+ narrative: "Can order hero before or after problem/solution sections."
92
+ }
93
+ }
94
+ },
95
+ "template-gallery": {
96
+ surfaceId: "template-gallery",
97
+ kind: "list",
98
+ title: "Template Gallery",
99
+ slots: [
100
+ {
101
+ slotId: "header",
102
+ role: "header",
103
+ accepts: ["action-bar"],
104
+ cardinality: "many"
105
+ },
106
+ {
107
+ slotId: "primary",
108
+ role: "primary",
109
+ accepts: ["entity-section", "table", "custom-widget"],
110
+ cardinality: "many"
111
+ }
112
+ ],
113
+ layouts: [
114
+ {
115
+ layoutId: "gallery",
116
+ title: "Gallery",
117
+ root: {
118
+ type: "panel-group",
119
+ direction: "vertical",
120
+ persistKey: "marketing.templates",
121
+ children: [
122
+ { type: "slot", slotId: "header" },
123
+ { type: "slot", slotId: "primary" }
124
+ ]
125
+ }
126
+ }
127
+ ],
128
+ data: [],
129
+ verification: {
130
+ dimensions: {
131
+ guidance: "Can reveal template descriptions, filters, and preview hints.",
132
+ density: "Can select grid density (compact, standard, detailed cards).",
133
+ dataDepth: "Controls template metadata and preview depth.",
134
+ control: "Shows filters and sort when allowed.",
135
+ media: "Supports card grid, list, and preview modes.",
136
+ pace: "Maps to modal and transition behavior.",
137
+ narrative: "Can order featured templates before or after full list."
138
+ }
139
+ }
140
+ },
141
+ changelog: {
142
+ surfaceId: "changelog",
143
+ kind: "timeline",
144
+ title: "Changelog",
145
+ slots: [
146
+ {
147
+ slotId: "header",
148
+ role: "header",
149
+ accepts: ["action-bar"],
150
+ cardinality: "many"
151
+ },
152
+ {
153
+ slotId: "primary",
154
+ role: "primary",
155
+ accepts: ["entity-section", "timeline", "custom-widget"],
156
+ cardinality: "many"
157
+ }
158
+ ],
159
+ layouts: [
160
+ {
161
+ layoutId: "timeline",
162
+ title: "Timeline",
163
+ root: {
164
+ type: "panel-group",
165
+ direction: "vertical",
166
+ persistKey: "marketing.changelog",
167
+ children: [
168
+ { type: "slot", slotId: "header" },
169
+ { type: "slot", slotId: "primary" }
170
+ ]
171
+ }
172
+ }
173
+ ],
174
+ data: [],
175
+ verification: {
176
+ dimensions: {
177
+ guidance: "Can reveal version notes and migration hints.",
178
+ density: "Can select compact or detailed changelog entries.",
179
+ dataDepth: "Controls entry expansion and diff visibility.",
180
+ control: "Shows filters and version navigation when allowed.",
181
+ media: "Supports text-first and code-highlight modes.",
182
+ pace: "Maps to scroll and expand behavior.",
183
+ narrative: "Can order newest-first or oldest-first chronology."
184
+ }
185
+ }
186
+ },
187
+ product: {
188
+ surfaceId: "product",
189
+ kind: "overview",
190
+ title: "Product Page",
191
+ slots: [
192
+ {
193
+ slotId: "header",
194
+ role: "header",
195
+ accepts: ["action-bar"],
196
+ cardinality: "many"
197
+ },
198
+ {
199
+ slotId: "primary",
200
+ role: "primary",
201
+ accepts: ["entity-section", "custom-widget"],
202
+ cardinality: "many"
203
+ }
204
+ ],
205
+ layouts: [
206
+ {
207
+ layoutId: "product-layout",
208
+ title: "Product",
209
+ root: {
210
+ type: "panel-group",
211
+ direction: "vertical",
212
+ persistKey: "marketing.product",
213
+ children: [
214
+ { type: "slot", slotId: "header" },
215
+ { type: "slot", slotId: "primary" }
216
+ ]
217
+ }
218
+ }
219
+ ],
220
+ data: [],
221
+ verification: {
222
+ dimensions: {
223
+ guidance: "Can reveal product features and comparison hints.",
224
+ density: "Can select compact or detailed product sections.",
225
+ dataDepth: "Controls feature depth and comparison tables.",
226
+ control: "Shows pricing and plan details when allowed.",
227
+ media: "Supports text-first and visual feature modes.",
228
+ pace: "Maps to section transitions.",
229
+ narrative: "Can order value prop before or after feature details."
230
+ }
231
+ }
232
+ },
233
+ contact: {
234
+ surfaceId: "contact",
235
+ kind: "detail",
236
+ title: "Contact",
237
+ slots: [
238
+ {
239
+ slotId: "header",
240
+ role: "header",
241
+ accepts: ["action-bar"],
242
+ cardinality: "many"
243
+ },
244
+ {
245
+ slotId: "primary",
246
+ role: "primary",
247
+ accepts: ["form", "entity-section", "custom-widget"],
248
+ cardinality: "many"
249
+ }
250
+ ],
251
+ layouts: [
252
+ {
253
+ layoutId: "contact-layout",
254
+ title: "Contact",
255
+ root: {
256
+ type: "panel-group",
257
+ direction: "vertical",
258
+ persistKey: "marketing.contact",
259
+ children: [
260
+ { type: "slot", slotId: "header" },
261
+ { type: "slot", slotId: "primary" }
262
+ ]
263
+ }
264
+ }
265
+ ],
266
+ data: [],
267
+ verification: {
268
+ dimensions: {
269
+ guidance: "Can reveal form hints and validation help.",
270
+ density: "Can select compact or detailed form layout.",
271
+ dataDepth: "Controls field visibility and validation depth.",
272
+ control: "Shows additional contact options when allowed.",
273
+ media: "Supports text-first form and hybrid modes.",
274
+ pace: "Maps to validation and submit feedback.",
275
+ narrative: "Can order form before or after contact info."
276
+ }
277
+ }
278
+ }
279
+ }
280
+ });
281
+ export {
282
+ MarketingBundle
283
+ };
@@ -0,0 +1,258 @@
1
+ /**
2
+ * Marketing bundle spec for landing, template gallery, and changelog surfaces.
3
+ * Uses @contractspec/lib.surface-runtime for adaptive, preference-driven layouts.
4
+ */
5
+ export declare const MarketingBundle: {
6
+ readonly meta: {
7
+ readonly key: "marketing.pages";
8
+ readonly version: "0.1.0";
9
+ readonly title: "Marketing Pages";
10
+ readonly description: "Adaptive surfaces for landing, template gallery, changelog, and product pages";
11
+ readonly owners: ["team-platform"];
12
+ readonly tags: ["marketing", "landing", "templates", "changelog"];
13
+ readonly stability: "experimental";
14
+ };
15
+ readonly routes: [{
16
+ readonly routeId: "landing";
17
+ readonly path: "/";
18
+ readonly defaultSurface: "landing";
19
+ }, {
20
+ readonly routeId: "product";
21
+ readonly path: "/product";
22
+ readonly defaultSurface: "product";
23
+ }, {
24
+ readonly routeId: "templates";
25
+ readonly path: "/templates";
26
+ readonly defaultSurface: "template-gallery";
27
+ }, {
28
+ readonly routeId: "changelog";
29
+ readonly path: "/changelog";
30
+ readonly defaultSurface: "changelog";
31
+ }, {
32
+ readonly routeId: "contact";
33
+ readonly path: "/contact";
34
+ readonly defaultSurface: "contact";
35
+ }];
36
+ readonly surfaces: {
37
+ readonly landing: {
38
+ readonly surfaceId: "landing";
39
+ readonly kind: "overview";
40
+ readonly title: "Landing Page";
41
+ readonly slots: [{
42
+ readonly slotId: "header";
43
+ readonly role: "header";
44
+ readonly accepts: ["action-bar"];
45
+ readonly cardinality: "many";
46
+ }, {
47
+ readonly slotId: "primary";
48
+ readonly role: "primary";
49
+ readonly accepts: ["entity-section", "custom-widget"];
50
+ readonly cardinality: "many";
51
+ }];
52
+ readonly layouts: [{
53
+ readonly layoutId: "single-column";
54
+ readonly title: "Single column";
55
+ readonly root: {
56
+ readonly type: "panel-group";
57
+ readonly direction: "vertical";
58
+ readonly persistKey: "marketing.landing";
59
+ readonly children: [{
60
+ readonly type: "slot";
61
+ readonly slotId: "header";
62
+ }, {
63
+ readonly type: "slot";
64
+ readonly slotId: "primary";
65
+ }];
66
+ };
67
+ }];
68
+ readonly data: [];
69
+ readonly verification: {
70
+ readonly dimensions: {
71
+ readonly guidance: "Can reveal product tour, feature highlights, and contextual CTAs.";
72
+ readonly density: "Can select compact hero or detailed multi-section layouts.";
73
+ readonly dataDepth: "Controls section depth and inline expansion.";
74
+ readonly control: "Shows advanced navigation when allowed.";
75
+ readonly media: "Supports text-first, visual hero, and hybrid modes.";
76
+ readonly pace: "Maps to scroll and transition behavior.";
77
+ readonly narrative: "Can order hero before or after problem/solution sections.";
78
+ };
79
+ };
80
+ };
81
+ readonly 'template-gallery': {
82
+ readonly surfaceId: "template-gallery";
83
+ readonly kind: "list";
84
+ readonly title: "Template Gallery";
85
+ readonly slots: [{
86
+ readonly slotId: "header";
87
+ readonly role: "header";
88
+ readonly accepts: ["action-bar"];
89
+ readonly cardinality: "many";
90
+ }, {
91
+ readonly slotId: "primary";
92
+ readonly role: "primary";
93
+ readonly accepts: ["entity-section", "table", "custom-widget"];
94
+ readonly cardinality: "many";
95
+ }];
96
+ readonly layouts: [{
97
+ readonly layoutId: "gallery";
98
+ readonly title: "Gallery";
99
+ readonly root: {
100
+ readonly type: "panel-group";
101
+ readonly direction: "vertical";
102
+ readonly persistKey: "marketing.templates";
103
+ readonly children: [{
104
+ readonly type: "slot";
105
+ readonly slotId: "header";
106
+ }, {
107
+ readonly type: "slot";
108
+ readonly slotId: "primary";
109
+ }];
110
+ };
111
+ }];
112
+ readonly data: [];
113
+ readonly verification: {
114
+ readonly dimensions: {
115
+ readonly guidance: "Can reveal template descriptions, filters, and preview hints.";
116
+ readonly density: "Can select grid density (compact, standard, detailed cards).";
117
+ readonly dataDepth: "Controls template metadata and preview depth.";
118
+ readonly control: "Shows filters and sort when allowed.";
119
+ readonly media: "Supports card grid, list, and preview modes.";
120
+ readonly pace: "Maps to modal and transition behavior.";
121
+ readonly narrative: "Can order featured templates before or after full list.";
122
+ };
123
+ };
124
+ };
125
+ readonly changelog: {
126
+ readonly surfaceId: "changelog";
127
+ readonly kind: "timeline";
128
+ readonly title: "Changelog";
129
+ readonly slots: [{
130
+ readonly slotId: "header";
131
+ readonly role: "header";
132
+ readonly accepts: ["action-bar"];
133
+ readonly cardinality: "many";
134
+ }, {
135
+ readonly slotId: "primary";
136
+ readonly role: "primary";
137
+ readonly accepts: ["entity-section", "timeline", "custom-widget"];
138
+ readonly cardinality: "many";
139
+ }];
140
+ readonly layouts: [{
141
+ readonly layoutId: "timeline";
142
+ readonly title: "Timeline";
143
+ readonly root: {
144
+ readonly type: "panel-group";
145
+ readonly direction: "vertical";
146
+ readonly persistKey: "marketing.changelog";
147
+ readonly children: [{
148
+ readonly type: "slot";
149
+ readonly slotId: "header";
150
+ }, {
151
+ readonly type: "slot";
152
+ readonly slotId: "primary";
153
+ }];
154
+ };
155
+ }];
156
+ readonly data: [];
157
+ readonly verification: {
158
+ readonly dimensions: {
159
+ readonly guidance: "Can reveal version notes and migration hints.";
160
+ readonly density: "Can select compact or detailed changelog entries.";
161
+ readonly dataDepth: "Controls entry expansion and diff visibility.";
162
+ readonly control: "Shows filters and version navigation when allowed.";
163
+ readonly media: "Supports text-first and code-highlight modes.";
164
+ readonly pace: "Maps to scroll and expand behavior.";
165
+ readonly narrative: "Can order newest-first or oldest-first chronology.";
166
+ };
167
+ };
168
+ };
169
+ readonly product: {
170
+ readonly surfaceId: "product";
171
+ readonly kind: "overview";
172
+ readonly title: "Product Page";
173
+ readonly slots: [{
174
+ readonly slotId: "header";
175
+ readonly role: "header";
176
+ readonly accepts: ["action-bar"];
177
+ readonly cardinality: "many";
178
+ }, {
179
+ readonly slotId: "primary";
180
+ readonly role: "primary";
181
+ readonly accepts: ["entity-section", "custom-widget"];
182
+ readonly cardinality: "many";
183
+ }];
184
+ readonly layouts: [{
185
+ readonly layoutId: "product-layout";
186
+ readonly title: "Product";
187
+ readonly root: {
188
+ readonly type: "panel-group";
189
+ readonly direction: "vertical";
190
+ readonly persistKey: "marketing.product";
191
+ readonly children: [{
192
+ readonly type: "slot";
193
+ readonly slotId: "header";
194
+ }, {
195
+ readonly type: "slot";
196
+ readonly slotId: "primary";
197
+ }];
198
+ };
199
+ }];
200
+ readonly data: [];
201
+ readonly verification: {
202
+ readonly dimensions: {
203
+ readonly guidance: "Can reveal product features and comparison hints.";
204
+ readonly density: "Can select compact or detailed product sections.";
205
+ readonly dataDepth: "Controls feature depth and comparison tables.";
206
+ readonly control: "Shows pricing and plan details when allowed.";
207
+ readonly media: "Supports text-first and visual feature modes.";
208
+ readonly pace: "Maps to section transitions.";
209
+ readonly narrative: "Can order value prop before or after feature details.";
210
+ };
211
+ };
212
+ };
213
+ readonly contact: {
214
+ readonly surfaceId: "contact";
215
+ readonly kind: "detail";
216
+ readonly title: "Contact";
217
+ readonly slots: [{
218
+ readonly slotId: "header";
219
+ readonly role: "header";
220
+ readonly accepts: ["action-bar"];
221
+ readonly cardinality: "many";
222
+ }, {
223
+ readonly slotId: "primary";
224
+ readonly role: "primary";
225
+ readonly accepts: ["form", "entity-section", "custom-widget"];
226
+ readonly cardinality: "many";
227
+ }];
228
+ readonly layouts: [{
229
+ readonly layoutId: "contact-layout";
230
+ readonly title: "Contact";
231
+ readonly root: {
232
+ readonly type: "panel-group";
233
+ readonly direction: "vertical";
234
+ readonly persistKey: "marketing.contact";
235
+ readonly children: [{
236
+ readonly type: "slot";
237
+ readonly slotId: "header";
238
+ }, {
239
+ readonly type: "slot";
240
+ readonly slotId: "primary";
241
+ }];
242
+ };
243
+ }];
244
+ readonly data: [];
245
+ readonly verification: {
246
+ readonly dimensions: {
247
+ readonly guidance: "Can reveal form hints and validation help.";
248
+ readonly density: "Can select compact or detailed form layout.";
249
+ readonly dataDepth: "Controls field visibility and validation depth.";
250
+ readonly control: "Shows additional contact options when allowed.";
251
+ readonly media: "Supports text-first form and hybrid modes.";
252
+ readonly pace: "Maps to validation and submit feedback.";
253
+ readonly narrative: "Can order form before or after contact info.";
254
+ };
255
+ };
256
+ };
257
+ };
258
+ };