create-ailk 0.7.0 → 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.
Files changed (169) hide show
  1. package/README.md +44 -10
  2. package/component-catalog.json +520 -5
  3. package/component-catalog.md +9 -6
  4. package/dist/cli.js +22 -24
  5. package/dist/lib/extract-module-bundle.js +5 -1
  6. package/dist/lib/module-license-gate.d.ts +79 -0
  7. package/dist/lib/module-license-gate.js +160 -12
  8. package/dist/lib/module-tier.d.ts +45 -16
  9. package/dist/lib/module-tier.js +76 -0
  10. package/dist/lib/pro-callout.js +10 -2
  11. package/dist/parse-args.d.ts +78 -10
  12. package/dist/parse-args.js +204 -14
  13. package/dist/programmatic.d.ts +39 -9
  14. package/dist/programmatic.js +163 -25
  15. package/dist/site-roster.js +11 -6
  16. package/dist/starter-grid.d.ts +216 -0
  17. package/dist/starter-grid.js +449 -0
  18. package/dist/surfaces.d.ts +4 -4
  19. package/dist/surfaces.js +102 -43
  20. package/dist/template-manifest.d.ts +36 -17
  21. package/dist/template-manifest.js +121 -367
  22. package/dist/template-names.d.ts +14 -12
  23. package/dist/template-names.js +13 -17
  24. package/package.json +3 -3
  25. package/site-templates/_base/content/en/BookCall/book-call.mdx +0 -1
  26. package/site-templates/_base/content/en/Feature/feature-1.mdx +69 -0
  27. package/site-templates/_base/content/en/Feature/feature-2.mdx +69 -0
  28. package/site-templates/_base/content/en/Feature/feature-3.mdx +69 -0
  29. package/site-templates/_base/content/en/FeaturesList/features.mdx +91 -0
  30. package/site-templates/_base/content/en/GlossaryList/glossary.mdx +0 -1
  31. package/site-templates/_base/content/en/NewsletterSignup/newsletter.mdx +0 -1
  32. package/site-templates/_base/content/en/PortfolioItem/sample-four.mdx +105 -0
  33. package/site-templates/_base/content/en/PortfolioItem/sample-one.mdx +34 -0
  34. package/site-templates/_base/content/en/PortfolioItem/sample-three.mdx +94 -0
  35. package/site-templates/_base/content/en/PortfolioItem/sample-two.mdx +45 -0
  36. package/site-templates/_base/content/en/PortfolioList/portfolio.mdx +169 -0
  37. package/site-templates/_base/content/en/PrivacyPage/privacy.mdx +15 -0
  38. package/site-templates/_base/content/en/UseCase/persona-1.mdx +69 -0
  39. package/site-templates/_base/content/en/UseCase/persona-2.mdx +69 -0
  40. package/site-templates/_base/content/en/UseCase/persona-3.mdx +69 -0
  41. package/site-templates/designs/standard/DESIGN.md +5 -0
  42. package/site-templates/marketing-site/DESIGN.md +5 -0
  43. package/site-templates/marketing-site/TEMPLATE-MANIFEST.json +89 -25
  44. package/site-templates/marketing-site/TEMPLATE-MANIFEST.md +35 -14
  45. package/site-templates/marketing-site-free/DESIGN.md +5 -0
  46. package/site-templates/marketing-site-free/TEMPLATE-MANIFEST.json +95 -29
  47. package/site-templates/marketing-site-free/TEMPLATE-MANIFEST.md +74 -44
  48. package/site-templates/marketing-site-free/content/en/NewsletterSignup/newsletter.mdx +59 -0
  49. package/site-templates/marketing-site-free/content/en/Pricing/pricing.mdx +199 -0
  50. package/site-templates/minimalism-site/TEMPLATE-MANIFEST.md +17 -29
  51. package/site-templates/minimalism-site/content/en/BookCall/book-call.mdx +0 -1
  52. package/site-templates/minimalism-site/content/en/PurchasePolicyPage/purchase-policy.mdx +0 -1
  53. package/site-templates/saas-product/DESIGN.md +5 -0
  54. package/site-templates/saas-product/TEMPLATE-MANIFEST.md +9 -1
  55. package/site-templates/{simple-service → shapes/local-business-service}/TEMPLATE-MANIFEST.json +96 -76
  56. package/site-templates/shapes/local-business-service/TEMPLATE-MANIFEST.md +302 -0
  57. package/site-templates/shapes/local-business-service/ailk-template.json +10 -0
  58. package/site-templates/{simple-service → shapes/local-business-service}/content/en/AboutPage/about.mdx +4 -4
  59. package/site-templates/shapes/local-business-service/content/en/HomePage/home.mdx +70 -0
  60. package/site-templates/shapes/local-business-service/content/en/NewsletterSignup/newsletter.mdx +59 -0
  61. package/site-templates/shapes/local-business-service/content/en/PortfolioList/portfolio.mdx +171 -0
  62. package/site-templates/{simple-service → shapes/local-business-service}/content/en/PurchasePolicyPage/purchase-policy.mdx +7 -8
  63. package/site-templates/shapes/local-business-service/content/en/Service/first-job.mdx +39 -0
  64. package/site-templates/shapes/local-business-service/content/en/Service/second-job.mdx +39 -0
  65. package/site-templates/shapes/local-business-service/content/en/Service/third-job.mdx +39 -0
  66. package/site-templates/shapes/local-business-service/content/en/ServicesList/services.mdx +61 -0
  67. package/site-templates/shapes/local-business-service/provenance.json +4 -0
  68. package/site-templates/shapes/organization-service/TEMPLATE-MANIFEST.json +362 -0
  69. package/site-templates/shapes/organization-service/TEMPLATE-MANIFEST.md +300 -0
  70. package/site-templates/shapes/organization-service/ailk-template.json +10 -0
  71. package/site-templates/shapes/organization-service/content/en/AboutPage/about.mdx +38 -0
  72. package/site-templates/shapes/organization-service/content/en/HomePage/home.mdx +85 -0
  73. package/site-templates/shapes/organization-service/content/en/NewsletterSignup/newsletter.mdx +59 -0
  74. package/site-templates/shapes/organization-service/content/en/PortfolioList/portfolio.mdx +171 -0
  75. package/site-templates/shapes/organization-service/content/en/PurchasePolicyPage/purchase-policy.mdx +123 -0
  76. package/site-templates/shapes/organization-service/content/en/Service/first-engagement.mdx +38 -0
  77. package/site-templates/shapes/organization-service/content/en/Service/second-engagement.mdx +38 -0
  78. package/site-templates/shapes/organization-service/content/en/Service/third-engagement.mdx +38 -0
  79. package/site-templates/shapes/organization-service/content/en/ServicesList/services.mdx +72 -0
  80. package/site-templates/shapes/organization-service/provenance.json +4 -0
  81. package/site-templates/shapes/person-service/TEMPLATE-MANIFEST.json +369 -0
  82. package/site-templates/shapes/person-service/TEMPLATE-MANIFEST.md +299 -0
  83. package/site-templates/shapes/person-service/ailk-template.json +10 -0
  84. package/site-templates/shapes/person-service/content/_site.mdx +85 -0
  85. package/site-templates/shapes/person-service/content/en/AboutPage/about.mdx +39 -0
  86. package/site-templates/shapes/person-service/content/en/HomePage/home.mdx +97 -0
  87. package/site-templates/shapes/person-service/content/en/NewsletterSignup/newsletter.mdx +59 -0
  88. package/site-templates/shapes/person-service/content/en/PortfolioList/portfolio.mdx +169 -0
  89. package/site-templates/shapes/person-service/content/en/PurchasePolicyPage/purchase-policy.mdx +123 -0
  90. package/site-templates/shapes/person-service/content/en/Service/first-engagement.mdx +38 -0
  91. package/site-templates/shapes/person-service/content/en/Service/second-engagement.mdx +38 -0
  92. package/site-templates/shapes/person-service/content/en/Service/third-engagement.mdx +38 -0
  93. package/site-templates/{simple-service → shapes/person-service}/content/en/ServicesList/services.mdx +16 -16
  94. package/site-templates/shapes/person-service/provenance.json +4 -0
  95. package/templates/.claude/skills/README.md +3 -2
  96. package/templates/.claude/skills/add-page/references/page-types.md +4 -0
  97. package/templates/.claude/skills/setup-database/SKILL.md +156 -0
  98. package/templates/.claude/skills/setup-database/scripts/verify-inbox.ts +154 -0
  99. package/templates/.claude/skills/setup-deploy/SKILL.md +64 -32
  100. package/templates/.claude/skills/setup-deploy/references/env-vars-template.md +19 -28
  101. package/templates/.claude/skills/setup-deploy/references/runbook-template.md +58 -102
  102. package/templates/DESIGN.md +5 -0
  103. package/templates/README.md +46 -38
  104. package/templates/apps/api/CLAUDE.md +3 -2
  105. package/templates/apps/api/src/config/__tests__/index.test.ts +115 -14
  106. package/templates/apps/api/src/config/index.ts +35 -16
  107. package/templates/apps/api/src/lib/__tests__/lead-capture-store.test.ts +30 -0
  108. package/templates/apps/api/src/lib/__tests__/lead-delivery.test.ts +96 -0
  109. package/templates/apps/api/src/lib/lead-capture-store.ts +12 -0
  110. package/templates/apps/api/src/lib/lead-delivery.ts +52 -0
  111. package/templates/apps/api/src/openapi/spec.ts +63 -12
  112. package/templates/apps/api/src/routes/leads/__tests__/capture.test.ts +88 -0
  113. package/templates/apps/api/src/routes/leads/__tests__/index.test.ts +100 -0
  114. package/templates/apps/api/src/routes/leads/index.ts +46 -1
  115. package/templates/apps/api/src/server.ts +7 -0
  116. package/templates/apps/api/src/services/__tests__/lead-routing.test.ts +194 -0
  117. package/templates/apps/api/src/services/__tests__/leads-inbox.test.ts +124 -0
  118. package/templates/apps/api/src/services/lead-routing.ts +140 -30
  119. package/templates/apps/api/src/services/leads-inbox.ts +48 -11
  120. package/templates/apps/mcp/__tests__/parity.test.ts +5 -4
  121. package/templates/apps/mcp/src/tools/create_project.ts +21 -6
  122. package/templates/apps/web/app/[locale]/contact/ConversationalIntakeWrapper.tsx +14 -6
  123. package/templates/apps/web/app/[locale]/contact/__tests__/ConversationalIntakeWrapper.test.tsx +10 -9
  124. package/templates/apps/web/app/[locale]/contact/__tests__/contact-form-text.test.ts +32 -0
  125. package/templates/apps/web/app/[locale]/contact/__tests__/contact.actions.test.ts +129 -0
  126. package/templates/apps/web/app/[locale]/contact/__tests__/page-renderer-migration.test.tsx +227 -84
  127. package/templates/apps/web/app/[locale]/contact/contact-form-text.ts +50 -0
  128. package/templates/apps/web/app/[locale]/contact/contact.actions.ts +73 -20
  129. package/templates/apps/web/app/[locale]/contact/page.tsx +105 -15
  130. package/templates/apps/web/app/[locale]/contact/site-contact-email.ts +54 -0
  131. package/templates/apps/web/app/[locale]/features/[slug]/page.tsx +64 -0
  132. package/templates/apps/web/app/[locale]/features/page.tsx +52 -0
  133. package/templates/apps/web/app/[locale]/layout.tsx +37 -5
  134. package/templates/apps/web/app/[locale]/newsletter/__tests__/newsletter.actions.test.ts +75 -0
  135. package/templates/apps/web/app/[locale]/newsletter/__tests__/page.test.tsx +163 -0
  136. package/templates/apps/web/app/[locale]/newsletter/newsletter.actions.ts +66 -0
  137. package/templates/apps/web/app/[locale]/newsletter/page.tsx +106 -14
  138. package/templates/apps/web/app/[locale]/portfolio/[slug]/page.tsx +59 -0
  139. package/templates/apps/web/app/[locale]/portfolio/page.tsx +49 -0
  140. package/templates/apps/web/app/[locale]/use-cases/[slug]/page.tsx +18 -3
  141. package/templates/apps/web/lib/nav-config.ts +48 -36
  142. package/templates/apps/web/lib/site-identity.ts +14 -0
  143. package/templates/apps/web/messages/en.json +28 -2
  144. package/templates/content/_site.mdx +4 -2
  145. package/templates/content/en/BlogList/blog.mdx +37 -16
  146. package/templates/content/en/ContactPage/contact.mdx +14 -44
  147. package/templates/content/en/HomePage/home.mdx +8 -16
  148. package/templates/content/en/PurchasePolicyPage/purchase-policy.mdx +0 -1
  149. package/templates/content/en/UseCasesList/use-cases.mdx +6 -6
  150. package/templates/database/CHANGELOG.md +7 -0
  151. package/templates/database/package.json +1 -1
  152. package/versions.json +33 -33
  153. package/site-templates/_base/content/en/UseCase/first-use-case.mdx +0 -23
  154. package/site-templates/_base/content/en/UseCase/second-use-case.mdx +0 -23
  155. package/site-templates/_base/content/en/UseCase/third-use-case.mdx +0 -23
  156. package/site-templates/simple-service/DESIGN.md +0 -162
  157. package/site-templates/simple-service/TEMPLATE-MANIFEST.md +0 -333
  158. package/site-templates/simple-service/ailk-template.json +0 -11
  159. package/site-templates/simple-service/content/en/BookCall/book-call.mdx +0 -53
  160. package/site-templates/simple-service/content/en/ContactPage/contact.mdx +0 -32
  161. package/site-templates/simple-service/content/en/FAQPage/faq.mdx +0 -56
  162. package/site-templates/simple-service/content/en/HomePage/home.mdx +0 -85
  163. package/site-templates/simple-service/content/en/Service/landscape-design.mdx +0 -40
  164. package/site-templates/simple-service/content/en/Service/lawn-maintenance.mdx +0 -40
  165. package/site-templates/simple-service/content/en/Service/seasonal-cleanup.mdx +0 -40
  166. package/site-templates/simple-service/provenance.json +0 -4
  167. package/templates/apps/web/app/[locale]/contact/ContactForm.tsx +0 -211
  168. package/templates/apps/web/app/[locale]/contact/__tests__/ContactForm.test.tsx +0 -96
  169. package/templates/content/en/SoftwareProduct/product.mdx +0 -175
@@ -0,0 +1,123 @@
1
+ ---
2
+ type: "PurchasePolicyPage"
3
+ slug: "purchase-policy"
4
+ title: "Purchase Policy"
5
+ description: "How cancellations, reschedules and refunds work for engagements booked through this site. Placeholder policy — replace every section before you launch."
6
+ sections:
7
+ [
8
+ {
9
+ "id": "purchase-policy-document",
10
+ "type": "document-chassis",
11
+ "data":
12
+ {
13
+ "headline": "Purchase Policy",
14
+ "layout": "article",
15
+ "updated": "Last updated {Month Day, Year}",
16
+ "navGroupLabel": "Contents",
17
+ "sections":
18
+ [
19
+ {
20
+ "id": "cancellation",
21
+ "heading": "Cancellation",
22
+ "blocks":
23
+ [
24
+ {
25
+ "kind": "paragraph",
26
+ "text": "This page is starter content that shipped with your site. It is not a purchase policy, it makes no commitment on behalf of Your Company, and it is not legal advice. Replace every section with the policy you actually operate, and have someone qualified read it before you publish.",
27
+ },
28
+ {
29
+ "kind": "paragraph",
30
+ "text": "This section explains how cancellations and reschedules work for an engagement booked through this site. The headings are the ones a client and an agent both look for, so keep them and fill in your own terms.",
31
+ },
32
+ ],
33
+ "subsections":
34
+ [
35
+ {
36
+ "id": "notice",
37
+ "heading": "How much notice is required",
38
+ "blocks":
39
+ [
40
+ {
41
+ "kind": "paragraph",
42
+ "text": "State the notice period before an engagement's start date, and say how it is measured. A client reading at midnight should be able to work out, without arithmetic you have not shown them, whether they are still inside it.",
43
+ },
44
+ ],
45
+ },
46
+ {
47
+ "id": "how-to-cancel",
48
+ "heading": "How to cancel or reschedule",
49
+ "blocks":
50
+ [
51
+ {
52
+ "kind": "paragraph",
53
+ "text": "Give one route to cancel and one to reschedule, and say whether a reschedule inside the notice period counts as a cancellation.",
54
+ },
55
+ ],
56
+ },
57
+ {
58
+ "id": "fees",
59
+ "heading": "Late cancellations",
60
+ "blocks":
61
+ [
62
+ {
63
+ "kind": "paragraph",
64
+ "text": "Say what a late cancellation costs, as a figure or a share of the engagement fee, and when it is charged. If you hold a deposit, say what happens to it.",
65
+ },
66
+ ],
67
+ },
68
+ {
69
+ "id": "our-cancellations",
70
+ "heading": "If we cancel",
71
+ "blocks":
72
+ [
73
+ {
74
+ "kind": "paragraph",
75
+ "text": "Set out what a client gets if you cancel or move an engagement — a full refund, a rescheduled start, or both — and how quickly you tell them. A policy that only binds one side reads as one.",
76
+ },
77
+ ],
78
+ },
79
+ {
80
+ "id": "exceptions",
81
+ "heading": "Exceptions",
82
+ "blocks":
83
+ [
84
+ {
85
+ "kind": "paragraph",
86
+ "text": "Name the circumstances in which you waive a fee, and say what you need from the client to apply the waiver. Vague discretion is worse for you than a short written list.",
87
+ },
88
+ ],
89
+ },
90
+ ],
91
+ },
92
+ {
93
+ "id": "refunds",
94
+ "heading": "Refunds",
95
+ "blocks":
96
+ [
97
+ {
98
+ "kind": "paragraph",
99
+ "text": "Say what a client gets back after a cancellation — a deposit, a portion of the fee, or both — and how long the refund takes to reach the payment method it came from.",
100
+ },
101
+ ],
102
+ "subsections":
103
+ [
104
+ {
105
+ "id": "questions",
106
+ "heading": "Questions about a refund",
107
+ "blocks":
108
+ [
109
+ {
110
+ "kind": "paragraph",
111
+ "text": "Point to the one place a client should write, and say roughly how quickly you answer. A policy nobody can ask a question about is a policy that generates disputes.",
112
+ },
113
+ ],
114
+ },
115
+ ],
116
+ },
117
+ ],
118
+ },
119
+ },
120
+ ]
121
+ ---
122
+
123
+ {/* Rendered from frontmatter `sections[]`; the MDX body is not read by the section-catalog renderer. Service shape (#6646): cancellation and refunds — this tree's override of the `_base` product-shape seed. */}
@@ -0,0 +1,38 @@
1
+ ---
2
+ type: "Service"
3
+ slug: "first-engagement"
4
+ title: "{First engagement}"
5
+ description: "{One line on what this engagement is and who it suits. Replace before you launch.}"
6
+ schema:
7
+ serviceType: "{First engagement}"
8
+ provider:
9
+ "@type": Organization
10
+ name: "Your Company"
11
+ ---
12
+
13
+ # {First engagement}
14
+
15
+ {Open with the situation a reader is in when they come looking for this. Two or
16
+ three sentences, no more — the detail belongs under the headings below.}
17
+
18
+ ## What it covers
19
+
20
+ - {The first thing you actually do}
21
+ - {The second thing you actually do}
22
+ - {The third thing you actually do}
23
+
24
+ ## How it runs
25
+
26
+ {One paragraph on the shape of the engagement: how it starts, how long it runs,
27
+ who is involved on both sides, and what a week looks like.}
28
+
29
+ ## What you end up with
30
+
31
+ {One paragraph on the deliverable. Be concrete — name the artefact, not the
32
+ feeling.}
33
+
34
+ ## What it costs
35
+
36
+ {One line on the pricing shape — fixed fee, retainer, day rate — and what it
37
+ excludes. Replace with your real numbers, or delete this section and let the
38
+ call do it.}
@@ -0,0 +1,38 @@
1
+ ---
2
+ type: "Service"
3
+ slug: "second-engagement"
4
+ title: "{Second engagement}"
5
+ description: "{One line on what this engagement is and who it suits. Replace before you launch.}"
6
+ schema:
7
+ serviceType: "{Second engagement}"
8
+ provider:
9
+ "@type": Organization
10
+ name: "Your Company"
11
+ ---
12
+
13
+ # {Second engagement}
14
+
15
+ {Open with the situation a reader is in when they come looking for this. Two or
16
+ three sentences, no more — the detail belongs under the headings below.}
17
+
18
+ ## What it covers
19
+
20
+ - {The first thing you actually do}
21
+ - {The second thing you actually do}
22
+ - {The third thing you actually do}
23
+
24
+ ## How it runs
25
+
26
+ {One paragraph on the shape of the engagement: how it starts, how long it runs,
27
+ who is involved on both sides, and what a week looks like.}
28
+
29
+ ## What you end up with
30
+
31
+ {One paragraph on the deliverable. Be concrete — name the artefact, not the
32
+ feeling.}
33
+
34
+ ## What it costs
35
+
36
+ {One line on the pricing shape — fixed fee, retainer, day rate — and what it
37
+ excludes. Replace with your real numbers, or delete this section and let the
38
+ call do it.}
@@ -0,0 +1,38 @@
1
+ ---
2
+ type: "Service"
3
+ slug: "third-engagement"
4
+ title: "{Third engagement}"
5
+ description: "{One line on what this engagement is and who it suits. Replace before you launch.}"
6
+ schema:
7
+ serviceType: "{Third engagement}"
8
+ provider:
9
+ "@type": Organization
10
+ name: "Your Company"
11
+ ---
12
+
13
+ # {Third engagement}
14
+
15
+ {Open with the situation a reader is in when they come looking for this. Two or
16
+ three sentences, no more — the detail belongs under the headings below.}
17
+
18
+ ## What it covers
19
+
20
+ - {The first thing you actually do}
21
+ - {The second thing you actually do}
22
+ - {The third thing you actually do}
23
+
24
+ ## How it runs
25
+
26
+ {One paragraph on the shape of the engagement: how it starts, how long it runs,
27
+ who is involved on both sides, and what a week looks like.}
28
+
29
+ ## What you end up with
30
+
31
+ {One paragraph on the deliverable. Be concrete — name the artefact, not the
32
+ feeling.}
33
+
34
+ ## What it costs
35
+
36
+ {One line on the pricing shape — fixed fee, retainer, day rate — and what it
37
+ excludes. Replace with your real numbers, or delete this section and let the
38
+ call do it.}
@@ -0,0 +1,72 @@
1
+ ---
2
+ type: "ServicesList"
3
+ slug: "services"
4
+ title: "Services"
5
+ description: "The three engagements {your company} offers. Placeholder copy — replace before you launch."
6
+ sections:
7
+ [
8
+ {
9
+ "id": "hero",
10
+ "type": "hero",
11
+ "data":
12
+ {
13
+ "variant": "centered",
14
+ "eyebrow": "Services",
15
+ "headline": "Three ways to work together",
16
+ "subheadline": "{One line on how to choose between them. Name the question a reader is actually asking.}",
17
+ },
18
+ },
19
+ {
20
+ "id": "engagements",
21
+ "type": "items",
22
+ "data":
23
+ {
24
+ "headline": "Engagements",
25
+ "columns": 3,
26
+ "items":
27
+ [
28
+ {
29
+ "title": "{First engagement}",
30
+ "description": "{One line on what it is and who it suits.}",
31
+ "link":
32
+ {
33
+ "label": "Read more",
34
+ "href": "/services/first-engagement",
35
+ },
36
+ },
37
+ {
38
+ "title": "{Second engagement}",
39
+ "description": "{One line on what it is and who it suits.}",
40
+ "link":
41
+ {
42
+ "label": "Read more",
43
+ "href": "/services/second-engagement",
44
+ },
45
+ },
46
+ {
47
+ "title": "{Third engagement}",
48
+ "description": "{One line on what it is and who it suits.}",
49
+ "link":
50
+ {
51
+ "label": "Read more",
52
+ "href": "/services/third-engagement",
53
+ },
54
+ },
55
+ ],
56
+ },
57
+ },
58
+ {
59
+ "id": "closing",
60
+ "type": "cta",
61
+ "data":
62
+ {
63
+ "variant": "minimal",
64
+ "headline": "Not sure which one?",
65
+ "description": "{One line inviting the reader to ask instead of guessing.}",
66
+ "primaryCta": { "label": "Get in touch", "href": "/contact" },
67
+ },
68
+ },
69
+ ]
70
+ ---
71
+
72
+ Placeholder copy. The three detail pages under `content/en/Service/` carry the long form; this page is the chooser.
@@ -0,0 +1,4 @@
1
+ {
2
+ "template": "organization-service",
3
+ "requires": ["marketing"]
4
+ }
@@ -0,0 +1,369 @@
1
+ {
2
+ "template": "person-service",
3
+ "requires": ["marketing"],
4
+ "categories": ["consulting"],
5
+ "shape": "person-service",
6
+ "design": "standard",
7
+ "generatedHash": "21c12a9cd50e661a56ca51d56b33a4750a8aae92a13ebd1127f7530eb7cb0d72",
8
+ "layout": {
9
+ "nav": "full",
10
+ "footer": "columns",
11
+ "announcementBanner": false,
12
+ "home": "default"
13
+ },
14
+ "theme": {
15
+ "corners": "square",
16
+ "eyebrowCase": "sentence",
17
+ "placeholders": "fill",
18
+ "checkmarks": "plain",
19
+ "colors": {
20
+ "light": {
21
+ "bg": "#ffffff",
22
+ "bgMuted": "#ffffff",
23
+ "surface": "#ffffff",
24
+ "border": "#000000",
25
+ "text": "#000000",
26
+ "textMuted": "#333333",
27
+ "primary": "#000000",
28
+ "primaryFg": "#ffffff",
29
+ "accent": "#000000"
30
+ },
31
+ "dark": {
32
+ "bg": "#000000",
33
+ "bgMuted": "#000000",
34
+ "surface": "#000000",
35
+ "border": "#ffffff",
36
+ "text": "#ffffff",
37
+ "textMuted": "#cccccc",
38
+ "primary": "#ffffff",
39
+ "primaryFg": "#000000",
40
+ "accent": "#ffffff"
41
+ }
42
+ }
43
+ },
44
+ "rows": [
45
+ {
46
+ "route": "/",
47
+ "kind": "page",
48
+ "pageType": "HomePage",
49
+ "schema": "HomePage",
50
+ "shell": "MarketingShell",
51
+ "chrome": "on",
52
+ "sections": [
53
+ {
54
+ "type": "hero",
55
+ "component": "Hero"
56
+ },
57
+ {
58
+ "type": "items",
59
+ "component": "Items",
60
+ "options": {
61
+ "columns": 3
62
+ }
63
+ },
64
+ {
65
+ "type": "content-block",
66
+ "component": "ContentBlock"
67
+ },
68
+ {
69
+ "type": "cta",
70
+ "component": "CTA"
71
+ }
72
+ ]
73
+ },
74
+ {
75
+ "route": "/services",
76
+ "kind": "page",
77
+ "pageType": "ServicesList",
78
+ "schema": "ServicesList",
79
+ "shell": "MarketingShell",
80
+ "chrome": "on",
81
+ "sections": [
82
+ {
83
+ "type": "hero",
84
+ "component": "Hero"
85
+ },
86
+ {
87
+ "type": "items",
88
+ "component": "Items",
89
+ "options": {
90
+ "columns": 3
91
+ }
92
+ },
93
+ {
94
+ "type": "cta",
95
+ "component": "CTA"
96
+ }
97
+ ]
98
+ },
99
+ {
100
+ "route": "/services/[slug]",
101
+ "kind": "page",
102
+ "contentDir": "content/en/Service",
103
+ "seeds": [
104
+ "content/en/Service/first-engagement.mdx",
105
+ "content/en/Service/second-engagement.mdx",
106
+ "content/en/Service/third-engagement.mdx"
107
+ ],
108
+ "pageType": "Service",
109
+ "schema": "Service",
110
+ "shell": "MarketingShell",
111
+ "chrome": "on",
112
+ "sections": []
113
+ },
114
+ {
115
+ "route": "/about",
116
+ "kind": "page",
117
+ "pageType": "AboutPage",
118
+ "schema": "AboutPage",
119
+ "shell": "MarketingShell",
120
+ "chrome": "on",
121
+ "sections": [
122
+ {
123
+ "type": "content-block",
124
+ "component": "ContentBlock",
125
+ "options": {
126
+ "imagerySlot": true
127
+ }
128
+ },
129
+ {
130
+ "type": "cta",
131
+ "component": "CTA"
132
+ }
133
+ ]
134
+ },
135
+ {
136
+ "route": "/contact",
137
+ "kind": "page",
138
+ "pageType": "ContactPage",
139
+ "schema": "ContactPage",
140
+ "shell": "MarketingShell",
141
+ "chrome": "on",
142
+ "sections": [
143
+ {
144
+ "type": "hero",
145
+ "component": "Hero"
146
+ }
147
+ ]
148
+ },
149
+ {
150
+ "route": "/faq",
151
+ "kind": "page",
152
+ "pageType": "FAQPage",
153
+ "schema": "FAQPage",
154
+ "shell": "MarketingShell",
155
+ "chrome": "on",
156
+ "sections": [
157
+ {
158
+ "type": "hero",
159
+ "component": "Hero",
160
+ "options": {
161
+ "gapBelow": "tight"
162
+ }
163
+ },
164
+ {
165
+ "type": "faq",
166
+ "component": "FAQ"
167
+ },
168
+ {
169
+ "type": "faq",
170
+ "component": "FAQ"
171
+ }
172
+ ]
173
+ },
174
+ {
175
+ "route": "/glossary",
176
+ "kind": "page",
177
+ "pageType": "GlossaryList",
178
+ "schema": "GlossaryList",
179
+ "shell": "MarketingShell",
180
+ "chrome": "on",
181
+ "sections": [
182
+ {
183
+ "type": "hero",
184
+ "component": "Hero"
185
+ },
186
+ {
187
+ "type": "glossary-index",
188
+ "component": "GlossaryIndex"
189
+ }
190
+ ]
191
+ },
192
+ {
193
+ "route": "/newsletter",
194
+ "kind": "page",
195
+ "pageType": "NewsletterSignup",
196
+ "schema": "NewsletterSignup",
197
+ "shell": "MarketingShell",
198
+ "chrome": "on",
199
+ "sections": [
200
+ {
201
+ "type": "hero",
202
+ "component": "Hero"
203
+ },
204
+ {
205
+ "type": "faq",
206
+ "component": "FAQ"
207
+ }
208
+ ]
209
+ },
210
+ {
211
+ "route": "/book-a-call",
212
+ "kind": "page",
213
+ "pageType": "BookCall",
214
+ "schema": "BookCall",
215
+ "shell": "MarketingShell",
216
+ "chrome": "on",
217
+ "sections": [
218
+ {
219
+ "type": "hero",
220
+ "component": "Hero"
221
+ },
222
+ {
223
+ "type": "items",
224
+ "component": "Items",
225
+ "options": {
226
+ "columns": 3
227
+ }
228
+ }
229
+ ]
230
+ },
231
+ {
232
+ "route": "/purchase-policy",
233
+ "kind": "page",
234
+ "pageType": "PurchasePolicyPage",
235
+ "schema": "PurchasePolicyPage",
236
+ "shell": "MarketingShell",
237
+ "chrome": "on",
238
+ "sections": [
239
+ {
240
+ "type": "document-chassis",
241
+ "component": "DocumentChassis",
242
+ "options": {
243
+ "layout": "article"
244
+ }
245
+ }
246
+ ]
247
+ },
248
+ {
249
+ "route": "/privacy",
250
+ "kind": "page",
251
+ "pageType": "PrivacyPage",
252
+ "schema": "PrivacyPage",
253
+ "shell": "MarketingShell",
254
+ "chrome": "on",
255
+ "sections": [
256
+ {
257
+ "type": "document-chassis",
258
+ "component": "DocumentChassis",
259
+ "options": {
260
+ "layout": "article"
261
+ }
262
+ }
263
+ ]
264
+ },
265
+ {
266
+ "route": "/terms",
267
+ "kind": "page",
268
+ "pageType": "TermsPage",
269
+ "schema": "TermsPage",
270
+ "shell": "MarketingShell",
271
+ "chrome": "on",
272
+ "sections": [
273
+ {
274
+ "type": "document-chassis",
275
+ "component": "DocumentChassis",
276
+ "options": {
277
+ "layout": "article"
278
+ }
279
+ }
280
+ ]
281
+ },
282
+ {
283
+ "route": "/blog",
284
+ "kind": "page",
285
+ "pageType": "BlogList",
286
+ "schema": "BlogList",
287
+ "shell": "MarketingShell",
288
+ "chrome": "on",
289
+ "sections": [
290
+ {
291
+ "type": "hero",
292
+ "component": "Hero",
293
+ "options": {
294
+ "gapBelow": "tight"
295
+ }
296
+ },
297
+ {
298
+ "type": "blog-list",
299
+ "component": "BlogList"
300
+ },
301
+ {
302
+ "type": "logoCloud",
303
+ "component": "LogoCloud",
304
+ "options": {
305
+ "layout": "inline"
306
+ }
307
+ },
308
+ {
309
+ "type": "testimonials",
310
+ "component": "Testimonials"
311
+ }
312
+ ]
313
+ },
314
+ {
315
+ "route": "/portfolio",
316
+ "kind": "page",
317
+ "pageType": "PortfolioList",
318
+ "schema": "PortfolioList",
319
+ "shell": "MarketingShell",
320
+ "chrome": "on",
321
+ "sections": [
322
+ {
323
+ "type": "hero",
324
+ "component": "Hero",
325
+ "options": {
326
+ "gapBelow": "tight",
327
+ "size": "display",
328
+ "surface": "wash-secondary"
329
+ }
330
+ },
331
+ {
332
+ "type": "items",
333
+ "component": "Items",
334
+ "options": {
335
+ "surface": "none",
336
+ "columns": 2
337
+ }
338
+ },
339
+ {
340
+ "type": "cta",
341
+ "component": "CTA"
342
+ },
343
+ {
344
+ "type": "faq",
345
+ "component": "FAQ",
346
+ "options": {
347
+ "surface": "gray-100"
348
+ }
349
+ }
350
+ ]
351
+ },
352
+ {
353
+ "route": "/portfolio/[slug]",
354
+ "kind": "page",
355
+ "contentDir": "content/en/PortfolioItem",
356
+ "seeds": [
357
+ "content/en/PortfolioItem/sample-four.mdx",
358
+ "content/en/PortfolioItem/sample-one.mdx",
359
+ "content/en/PortfolioItem/sample-three.mdx",
360
+ "content/en/PortfolioItem/sample-two.mdx"
361
+ ],
362
+ "pageType": "PortfolioItem",
363
+ "schema": "PortfolioItem",
364
+ "shell": "MarketingShell",
365
+ "chrome": "on",
366
+ "sections": []
367
+ }
368
+ ]
369
+ }