create-ailk 0.8.0 → 0.9.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/README.md +68 -0
- package/component-catalog.json +279 -45
- package/dist/add-module.d.ts +20 -0
- package/dist/add-module.js +43 -7
- package/dist/add-route.d.ts +56 -0
- package/dist/add-route.js +286 -0
- package/dist/apply-design-md.d.ts +7 -0
- package/dist/apply-design-md.js +50 -0
- package/dist/apply-design.d.ts +64 -0
- package/dist/apply-design.js +273 -0
- package/dist/claude-md.d.ts +111 -0
- package/dist/claude-md.js +334 -0
- package/dist/cli.js +92 -4
- package/dist/derive-architecture.js +41 -36
- package/dist/design-compile.d.ts +71 -0
- package/dist/design-compile.js +98 -0
- package/dist/design-package.d.ts +83 -0
- package/dist/design-package.js +468 -0
- package/dist/design-presets.d.ts +86 -0
- package/dist/design-presets.js +642 -0
- package/dist/design-scaffold.d.ts +76 -0
- package/dist/design-scaffold.js +220 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.js +4 -1
- package/dist/legacy-nav-renderers.d.ts +45 -0
- package/dist/legacy-nav-renderers.js +545 -0
- package/dist/lib/auth-secret-file.d.ts +19 -0
- package/dist/lib/auth-secret-file.js +112 -0
- package/dist/lib/design-checks.d.ts +78 -0
- package/dist/lib/design-checks.js +174 -0
- package/dist/lib/license-key-files.d.ts +9 -0
- package/dist/lib/license-key-files.js +2 -2
- package/dist/lib/module-license-gate.d.ts +19 -9
- package/dist/lib/module-license-gate.js +19 -8
- package/dist/lib/render-verdict.d.ts +52 -0
- package/dist/lib/render-verdict.js +77 -0
- package/dist/lib/scaffold-render-sweep.d.ts +105 -0
- package/dist/lib/scaffold-render-sweep.js +236 -0
- package/dist/module-architecture.d.ts +19 -16
- package/dist/module-architecture.js +64 -21
- package/dist/parse-args.d.ts +12 -2
- package/dist/parse-args.js +74 -13
- package/dist/programmatic.d.ts +30 -6
- package/dist/programmatic.js +206 -17
- package/dist/site-chrome.d.ts +19 -9
- package/dist/site-chrome.js +23 -13
- package/dist/site-manifest.d.ts +25 -0
- package/dist/site-manifest.js +254 -0
- package/dist/site-roster.d.ts +41 -0
- package/dist/site-roster.js +141 -8
- package/dist/starter-grid.d.ts +32 -16
- package/dist/starter-grid.js +129 -33
- package/dist/surfaces.d.ts +41 -9
- package/dist/surfaces.js +200 -83
- package/dist/template-manifest.d.ts +30 -13
- package/dist/template-manifest.js +49 -24
- package/package.json +5 -4
- package/site-templates/_base/content/en/UseCase/persona-1.mdx +7 -6
- package/site-templates/_base/content/en/UseCase/persona-2.mdx +7 -6
- package/site-templates/_base/content/en/UseCase/persona-3.mdx +7 -6
- package/site-templates/{minimalism-site/TEMPLATE-MANIFEST.json → aliases/minimalism-site.TEMPLATE-MANIFEST.json} +72 -40
- package/site-templates/designs/minimalism/DESIGN.md +98 -6
- package/site-templates/designs/minimalism/sample/README.md +48 -0
- package/site-templates/designs/standard/DESIGN.md +98 -6
- package/site-templates/marketing-site/DESIGN.md +98 -6
- package/site-templates/marketing-site/TEMPLATE-MANIFEST.json +60 -27
- package/site-templates/marketing-site/TEMPLATE-MANIFEST.md +50 -30
- package/site-templates/marketing-site-free/DESIGN.md +98 -6
- package/site-templates/marketing-site-free/TEMPLATE-MANIFEST.json +60 -24
- package/site-templates/marketing-site-free/TEMPLATE-MANIFEST.md +44 -27
- package/site-templates/marketing-site-free/ailk-template.json +1 -1
- package/site-templates/saas-product/DESIGN.md +98 -6
- package/site-templates/shapes/local-business-service/TEMPLATE-MANIFEST.json +127 -18
- package/site-templates/shapes/local-business-service/TEMPLATE-MANIFEST.md +74 -20
- package/site-templates/shapes/local-business-service/ailk-template.json +1 -1
- package/site-templates/shapes/organization-service/TEMPLATE-MANIFEST.json +127 -18
- package/site-templates/shapes/organization-service/TEMPLATE-MANIFEST.md +74 -20
- package/site-templates/shapes/organization-service/ailk-template.json +1 -1
- package/site-templates/shapes/person-service/TEMPLATE-MANIFEST.json +127 -18
- package/site-templates/shapes/person-service/TEMPLATE-MANIFEST.md +75 -21
- package/site-templates/shapes/person-service/ailk-template.json +1 -1
- package/site-templates/shapes/person-service/content/en/AboutPage/about.mdx +1 -1
- package/site-templates/shapes/person-service/content/en/HomePage/home.mdx +2 -2
- package/site-templates/shapes/person-service/content/en/PortfolioList/portfolio.mdx +4 -2
- package/site-templates/shapes/person-service/content/en/ServicesList/services.mdx +1 -1
- package/templates/.claude/rules/architecture.md +7 -0
- package/templates/.claude/skills/README.md +3 -2
- package/templates/.claude/skills/add-auth/references/env-vars.md +22 -15
- package/templates/.claude/skills/add-auth/references/oauth-app-setup.md +3 -2
- package/templates/.claude/skills/add-page/SKILL.md +241 -238
- package/templates/.claude/skills/add-page/references/page-types.md +85 -76
- package/templates/.claude/skills/add-page/scripts/site-pages.mjs +87 -0
- package/templates/.claude/skills/add-page/templates/comparison-page.mdx.tmpl +99 -0
- package/templates/.claude/skills/add-page/templates/content.mdx.tmpl +8 -18
- package/templates/.claude/skills/add-page/templates/flow-landing-page.mdx.tmpl +43 -0
- package/templates/.claude/skills/add-page/templates/report-page.mdx.tmpl +52 -0
- package/templates/.claude/skills/add-page/templates/reports-list.mdx.tmpl +38 -0
- package/templates/.claude/skills/check-site/SKILL.md +23 -0
- package/templates/.claude/skills/fill-page/SKILL.md +26 -7
- package/templates/.claude/skills/fill-page/profiles/plumbing.yaml +1 -1
- package/templates/.claude/skills/setup-deploy/references/env-vars-template.md +28 -11
- package/templates/.claude/skills/update-page/SKILL.md +117 -0
- package/templates/.claude/skills/update-page/scripts/update-page.ts +640 -0
- package/templates/.claude/skills/update-page/templates/redirects.mjs.tmpl +31 -0
- package/templates/.claude/skills/upgrade-plan/SKILL.md +12 -8
- package/templates/.github/workflows/ci.yml +4 -0
- package/templates/.prettierignore +1 -0
- package/templates/CLAUDE.md +146 -103
- package/templates/DESIGN.md +98 -6
- package/templates/README.md +50 -38
- package/templates/apps/api/.env.example +2 -1
- package/templates/apps/api/src/__tests__/commerce-claim-registration.test.ts +2 -0
- package/templates/apps/api/src/__tests__/server.test.ts +116 -0
- package/templates/apps/api/src/lib/stripe.ts +9 -0
- package/templates/apps/api/src/middleware/__tests__/auth.optional-cookie.test.ts +140 -0
- package/templates/apps/api/src/middleware/auth.ts +54 -0
- package/templates/apps/api/src/routes/checkout/__tests__/session.test.ts +5 -2
- package/templates/apps/api/src/routes/checkout/__tests__/sessions.test.ts +628 -0
- package/templates/apps/api/src/routes/checkout/sessions.ts +222 -24
- package/templates/apps/api/src/routes/webhooks/__tests__/stripe-flow-checkout.test.ts +1 -1
- package/templates/apps/api/src/routes/webhooks/__tests__/stripe-org-billing.test.ts +5 -1
- package/templates/apps/api/src/routes/webhooks/__tests__/stripe.test.ts +521 -20
- package/templates/apps/api/src/routes/webhooks/stripe.ts +124 -32
- package/templates/apps/api/src/server.ts +28 -0
- package/templates/apps/api/src/services/__tests__/revalidation.test.ts +90 -15
- package/templates/apps/api/src/services/checkout-buyer.ts +72 -0
- package/templates/apps/api/src/services/revalidation.ts +60 -15
- package/templates/apps/mcp/__tests__/tools/create_project.test.ts +30 -24
- package/templates/apps/mcp/src/tools/purchase.ts +4 -2
- package/templates/apps/web/.env.example +13 -0
- package/templates/apps/web/CLAUDE.md +22 -28
- package/templates/apps/web/app/[locale]/(auth)/layout.tsx +1 -1
- package/templates/apps/web/app/[locale]/(authed)/leads/__tests__/page.test.tsx +24 -0
- package/templates/apps/web/app/[locale]/(authed)/leads/page.tsx +17 -6
- package/templates/apps/web/app/[locale]/[slug]/[detail]/__tests__/page.test.tsx +110 -0
- package/templates/apps/web/app/[locale]/[slug]/[detail]/page.tsx +60 -0
- package/templates/apps/web/app/[locale]/[slug]/page.tsx +1 -1
- package/templates/apps/web/app/[locale]/alternatives/__tests__/page.test.tsx +161 -0
- package/templates/apps/web/app/[locale]/alternatives/page.tsx +104 -0
- package/templates/apps/web/app/[locale]/{use-cases → for}/[slug]/page.tsx +4 -3
- package/templates/apps/web/app/[locale]/for/__tests__/page-renderer-migration.test.tsx +73 -0
- package/templates/apps/web/app/[locale]/{use-cases → for}/page.tsx +8 -7
- package/templates/apps/web/app/[locale]/glossary/page.tsx +1 -1
- package/templates/apps/web/app/[locale]/layout.tsx +35 -19
- package/templates/apps/web/app/[locale]/newsletter/page.tsx +1 -1
- package/templates/apps/web/app/[locale]/portfolio/[slug]/page.tsx +1 -1
- package/templates/apps/web/app/[locale]/portfolio/page.tsx +1 -1
- package/templates/apps/web/app/[locale]/vs/[slug]/__tests__/page.test.tsx +112 -0
- package/templates/apps/web/app/[locale]/vs/[slug]/page.tsx +70 -0
- package/templates/apps/web/app/api/revalidate/__tests__/route.test.ts +236 -44
- package/templates/apps/web/app/api/revalidate/route.ts +78 -36
- package/templates/apps/web/lib/__tests__/site-brand.test.ts +79 -0
- package/templates/apps/web/lib/__tests__/site-theme.test.ts +104 -11
- package/templates/apps/web/lib/__tests__/structured-data.test.tsx +21 -4
- package/templates/apps/web/lib/locale-guard.ts +18 -0
- package/templates/apps/web/lib/meet-placeholder.ts +5 -0
- package/templates/apps/web/lib/nav-config.ts +14 -13
- package/templates/apps/web/lib/site-brand.tsx +13 -9
- package/templates/apps/web/lib/site-logo.tsx +36 -0
- package/templates/apps/web/lib/site-theme.ts +46 -26
- package/templates/apps/web/messages/en.json +23 -9
- package/templates/apps/web/middleware.ts +28 -4
- package/templates/content/en/BookCall/book-a-call.mdx +80 -0
- package/templates/content/en/BookCall/onsite-estimate.mdx +56 -0
- package/templates/content/en/BookCall/onsite-service.mdx +56 -0
- package/templates/content/en/BookCall/start-project.mdx +56 -0
- package/templates/content/en/ContactPage/contact.mdx +40 -1
- package/templates/content/en/HomePage/home.mdx +2 -6
- package/templates/content/en/LandingPage/meet.mdx +59 -0
- package/templates/content/en/UseCasesList/{use-cases.mdx → for.mdx} +19 -18
- package/templates/database/CHANGELOG.md +7 -0
- package/templates/database/package.json +1 -1
- package/templates/package.json +2 -1
- package/templates/tools/check-claude-md.ts +128 -0
- package/versions.json +33 -33
- package/site-templates/_base/content/en/BookCall/book-call.mdx +0 -52
- package/site-templates/minimalism-site/DESIGN.md +0 -162
- package/site-templates/minimalism-site/TEMPLATE-MANIFEST.md +0 -458
- package/site-templates/minimalism-site/ailk-template.json +0 -23
- package/site-templates/minimalism-site/content/en/AboutPage/about.mdx +0 -110
- package/site-templates/minimalism-site/content/en/BookCall/book-call.mdx +0 -52
- package/site-templates/minimalism-site/content/en/ContactPage/contact.mdx +0 -34
- package/site-templates/minimalism-site/content/en/FAQPage/faq.mdx +0 -57
- package/site-templates/minimalism-site/content/en/LandingPage/referral.mdx +0 -77
- package/site-templates/minimalism-site/content/en/LandingPage/reports.mdx +0 -73
- package/site-templates/minimalism-site/content/en/PurchasePolicyPage/purchase-policy.mdx +0 -123
- package/site-templates/minimalism-site/content/en/ReportPage/annual-letter-2024.mdx +0 -52
- package/site-templates/minimalism-site/content/en/ReportPage/field-notes-2023.mdx +0 -52
- package/site-templates/minimalism-site/content/en/ReportPage/platform-shift-2025.mdx +0 -52
- package/site-templates/minimalism-site/content/en/ReportPage/state-of-the-market-2026.mdx +0 -52
- package/site-templates/minimalism-site/content/en/Service/first-engagement.mdx +0 -38
- package/site-templates/minimalism-site/content/en/Service/second-engagement.mdx +0 -38
- package/site-templates/minimalism-site/content/en/Service/third-engagement.mdx +0 -38
- package/site-templates/minimalism-site/content/en/ServicesList/services.mdx +0 -73
- package/site-templates/minimalism-site/flows/referral.flow.json +0 -71
- package/site-templates/minimalism-site/provenance.json +0 -4
- package/templates/.claude/skills/add-page/templates/route.tsx.tmpl +0 -28
- package/templates/apps/web/app/[locale]/book-a-call/page.tsx +0 -50
- package/templates/apps/web/app/[locale]/use-cases/__tests__/page-renderer-migration.test.tsx +0 -72
- /package/site-templates/{minimalism-site → designs/minimalism/sample}/content/en/HomePage/home.mdx +0 -0
- /package/site-templates/{minimalism-site/assets → designs/minimalism/sample/public}/avatar-placeholder-1.svg +0 -0
- /package/site-templates/{minimalism-site/assets → designs/minimalism/sample/public}/avatar-placeholder-2.svg +0 -0
- /package/site-templates/{minimalism-site/assets → designs/minimalism/sample/public}/avatar-placeholder-3.svg +0 -0
- /package/site-templates/{minimalism-site/assets → designs/minimalism/sample/public}/avatar-placeholder-4.svg +0 -0
- /package/site-templates/{minimalism-site/assets → designs/minimalism/sample/public}/avatar-placeholder-5.svg +0 -0
- /package/site-templates/{minimalism-site/assets → designs/minimalism/sample/public}/avatar-placeholder-6.svg +0 -0
- /package/site-templates/{minimalism-site/assets → designs/minimalism/sample/public}/hero-backdrop.svg +0 -0
- /package/site-templates/{minimalism-site/assets → designs/minimalism/sample/public}/logo-placeholder-1.svg +0 -0
- /package/site-templates/{minimalism-site/assets → designs/minimalism/sample/public}/logo-placeholder-2.svg +0 -0
- /package/site-templates/{minimalism-site/assets → designs/minimalism/sample/public}/logo-placeholder-3.svg +0 -0
- /package/site-templates/{minimalism-site/assets → designs/minimalism/sample/public}/wordmark-placeholder.svg +0 -0
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
type: "UseCase"
|
|
3
3
|
slug: "persona-1"
|
|
4
|
-
|
|
4
|
+
placeholder: true
|
|
5
|
+
title: "{Use case 1: the job this customer hires your product or service to do}"
|
|
5
6
|
description: "{Two sentences on who this customer is and the result they get}"
|
|
6
7
|
sections:
|
|
7
8
|
[
|
|
@@ -10,14 +11,14 @@ sections:
|
|
|
10
11
|
"type": "hero",
|
|
11
12
|
"data":
|
|
12
13
|
{
|
|
13
|
-
"eyebrow": "
|
|
14
|
-
"headline": "{Use case 1: the job this customer hires your product to do}",
|
|
14
|
+
"eyebrow": "Customers",
|
|
15
|
+
"headline": "{Use case 1: the job this customer hires your product or service to do}",
|
|
15
16
|
"subheadline": "{Two sentences on who this customer is and the result they get}",
|
|
16
17
|
"primaryCta": { "label": "{Primary CTA}", "href": "/contact" },
|
|
17
18
|
"secondaryCta":
|
|
18
19
|
{
|
|
19
20
|
"label": "{Secondary CTA}",
|
|
20
|
-
"href": "/
|
|
21
|
+
"href": "/about",
|
|
21
22
|
"variant": "outline",
|
|
22
23
|
},
|
|
23
24
|
},
|
|
@@ -27,7 +28,7 @@ sections:
|
|
|
27
28
|
"type": "feature",
|
|
28
29
|
"data":
|
|
29
30
|
{
|
|
30
|
-
"headline": "{How this customer uses your product}",
|
|
31
|
+
"headline": "{How this customer uses your product or service}",
|
|
31
32
|
"description": "{Two or three sentences on how it works and what changes for the reader}",
|
|
32
33
|
"features":
|
|
33
34
|
[
|
|
@@ -58,7 +59,7 @@ sections:
|
|
|
58
59
|
"secondaryCta":
|
|
59
60
|
{
|
|
60
61
|
"label": "{Secondary CTA}",
|
|
61
|
-
"href": "/
|
|
62
|
+
"href": "/about",
|
|
62
63
|
"variant": "outline",
|
|
63
64
|
},
|
|
64
65
|
},
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
type: "UseCase"
|
|
3
3
|
slug: "persona-2"
|
|
4
|
-
|
|
4
|
+
placeholder: true
|
|
5
|
+
title: "{Use case 2: the job this customer hires your product or service to do}"
|
|
5
6
|
description: "{Two sentences on who this customer is and the result they get}"
|
|
6
7
|
sections:
|
|
7
8
|
[
|
|
@@ -10,14 +11,14 @@ sections:
|
|
|
10
11
|
"type": "hero",
|
|
11
12
|
"data":
|
|
12
13
|
{
|
|
13
|
-
"eyebrow": "
|
|
14
|
-
"headline": "{Use case 2: the job this customer hires your product to do}",
|
|
14
|
+
"eyebrow": "Customers",
|
|
15
|
+
"headline": "{Use case 2: the job this customer hires your product or service to do}",
|
|
15
16
|
"subheadline": "{Two sentences on who this customer is and the result they get}",
|
|
16
17
|
"primaryCta": { "label": "{Primary CTA}", "href": "/contact" },
|
|
17
18
|
"secondaryCta":
|
|
18
19
|
{
|
|
19
20
|
"label": "{Secondary CTA}",
|
|
20
|
-
"href": "/
|
|
21
|
+
"href": "/about",
|
|
21
22
|
"variant": "outline",
|
|
22
23
|
},
|
|
23
24
|
},
|
|
@@ -27,7 +28,7 @@ sections:
|
|
|
27
28
|
"type": "feature",
|
|
28
29
|
"data":
|
|
29
30
|
{
|
|
30
|
-
"headline": "{How this customer uses your product}",
|
|
31
|
+
"headline": "{How this customer uses your product or service}",
|
|
31
32
|
"description": "{Two or three sentences on how it works and what changes for the reader}",
|
|
32
33
|
"features":
|
|
33
34
|
[
|
|
@@ -58,7 +59,7 @@ sections:
|
|
|
58
59
|
"secondaryCta":
|
|
59
60
|
{
|
|
60
61
|
"label": "{Secondary CTA}",
|
|
61
|
-
"href": "/
|
|
62
|
+
"href": "/about",
|
|
62
63
|
"variant": "outline",
|
|
63
64
|
},
|
|
64
65
|
},
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
type: "UseCase"
|
|
3
3
|
slug: "persona-3"
|
|
4
|
-
|
|
4
|
+
placeholder: true
|
|
5
|
+
title: "{Use case 3: the job this customer hires your product or service to do}"
|
|
5
6
|
description: "{Two sentences on who this customer is and the result they get}"
|
|
6
7
|
sections:
|
|
7
8
|
[
|
|
@@ -10,14 +11,14 @@ sections:
|
|
|
10
11
|
"type": "hero",
|
|
11
12
|
"data":
|
|
12
13
|
{
|
|
13
|
-
"eyebrow": "
|
|
14
|
-
"headline": "{Use case 3: the job this customer hires your product to do}",
|
|
14
|
+
"eyebrow": "Customers",
|
|
15
|
+
"headline": "{Use case 3: the job this customer hires your product or service to do}",
|
|
15
16
|
"subheadline": "{Two sentences on who this customer is and the result they get}",
|
|
16
17
|
"primaryCta": { "label": "{Primary CTA}", "href": "/contact" },
|
|
17
18
|
"secondaryCta":
|
|
18
19
|
{
|
|
19
20
|
"label": "{Secondary CTA}",
|
|
20
|
-
"href": "/
|
|
21
|
+
"href": "/about",
|
|
21
22
|
"variant": "outline",
|
|
22
23
|
},
|
|
23
24
|
},
|
|
@@ -27,7 +28,7 @@ sections:
|
|
|
27
28
|
"type": "feature",
|
|
28
29
|
"data":
|
|
29
30
|
{
|
|
30
|
-
"headline": "{How this customer uses your product}",
|
|
31
|
+
"headline": "{How this customer uses your product or service}",
|
|
31
32
|
"description": "{Two or three sentences on how it works and what changes for the reader}",
|
|
32
33
|
"features":
|
|
33
34
|
[
|
|
@@ -58,7 +59,7 @@ sections:
|
|
|
58
59
|
"secondaryCta":
|
|
59
60
|
{
|
|
60
61
|
"label": "{Secondary CTA}",
|
|
61
|
-
"href": "/
|
|
62
|
+
"href": "/about",
|
|
62
63
|
"variant": "outline",
|
|
63
64
|
},
|
|
64
65
|
},
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"categories": ["real-estate", "technology", "legal"],
|
|
5
5
|
"shape": "organization-service",
|
|
6
6
|
"design": "minimalism",
|
|
7
|
-
"generatedHash": "
|
|
7
|
+
"generatedHash": "0aaead8d66a2cfd64f9c89a15154f8a5d857a772dcab6759a15d2dd7e8b63aa5",
|
|
8
8
|
"layout": {
|
|
9
9
|
"nav": "mark-only",
|
|
10
10
|
"footer": "centered",
|
|
@@ -118,8 +118,8 @@
|
|
|
118
118
|
{
|
|
119
119
|
"route": "/reports",
|
|
120
120
|
"kind": "page",
|
|
121
|
-
"pageType": "
|
|
122
|
-
"schema": "
|
|
121
|
+
"pageType": "ReportsList",
|
|
122
|
+
"schema": "ReportsList",
|
|
123
123
|
"shell": "MarketingShell",
|
|
124
124
|
"chrome": "on",
|
|
125
125
|
"sections": [
|
|
@@ -127,10 +127,6 @@
|
|
|
127
127
|
"type": "hero",
|
|
128
128
|
"component": "Hero"
|
|
129
129
|
},
|
|
130
|
-
{
|
|
131
|
-
"type": "reports-list",
|
|
132
|
-
"component": "ReportsList"
|
|
133
|
-
},
|
|
134
130
|
{
|
|
135
131
|
"type": "cta",
|
|
136
132
|
"component": "CTA"
|
|
@@ -149,10 +145,6 @@
|
|
|
149
145
|
"type": "content-block",
|
|
150
146
|
"component": "ContentBlock"
|
|
151
147
|
},
|
|
152
|
-
{
|
|
153
|
-
"type": "team",
|
|
154
|
-
"component": "Team"
|
|
155
|
-
},
|
|
156
148
|
{
|
|
157
149
|
"type": "cta",
|
|
158
150
|
"component": "CTA"
|
|
@@ -199,6 +191,61 @@
|
|
|
199
191
|
"chrome": "on",
|
|
200
192
|
"sections": []
|
|
201
193
|
},
|
|
194
|
+
{
|
|
195
|
+
"route": "/for",
|
|
196
|
+
"kind": "page",
|
|
197
|
+
"pageType": "UseCasesList",
|
|
198
|
+
"schema": "UseCasesList",
|
|
199
|
+
"shell": "MarketingShell",
|
|
200
|
+
"chrome": "on",
|
|
201
|
+
"sections": [
|
|
202
|
+
{
|
|
203
|
+
"type": "hero",
|
|
204
|
+
"component": "Hero"
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
"type": "items",
|
|
208
|
+
"component": "Items",
|
|
209
|
+
"options": {
|
|
210
|
+
"columns": 3
|
|
211
|
+
}
|
|
212
|
+
},
|
|
213
|
+
{
|
|
214
|
+
"type": "logoCloud",
|
|
215
|
+
"component": "LogoCloud",
|
|
216
|
+
"options": {
|
|
217
|
+
"layout": "inline"
|
|
218
|
+
}
|
|
219
|
+
},
|
|
220
|
+
{
|
|
221
|
+
"type": "testimonials",
|
|
222
|
+
"component": "Testimonials"
|
|
223
|
+
},
|
|
224
|
+
{
|
|
225
|
+
"type": "cta",
|
|
226
|
+
"component": "CTA"
|
|
227
|
+
},
|
|
228
|
+
{
|
|
229
|
+
"type": "faq",
|
|
230
|
+
"component": "FAQ"
|
|
231
|
+
}
|
|
232
|
+
]
|
|
233
|
+
},
|
|
234
|
+
{
|
|
235
|
+
"route": "/for/[slug]",
|
|
236
|
+
"kind": "page",
|
|
237
|
+
"contentDir": "content/en/UseCase",
|
|
238
|
+
"seeds": [
|
|
239
|
+
"content/en/UseCase/persona-1.mdx",
|
|
240
|
+
"content/en/UseCase/persona-2.mdx",
|
|
241
|
+
"content/en/UseCase/persona-3.mdx"
|
|
242
|
+
],
|
|
243
|
+
"pageType": "UseCase",
|
|
244
|
+
"schema": "UseCase",
|
|
245
|
+
"shell": "MarketingShell",
|
|
246
|
+
"chrome": "on",
|
|
247
|
+
"sections": []
|
|
248
|
+
},
|
|
202
249
|
{
|
|
203
250
|
"route": "/contact",
|
|
204
251
|
"kind": "page",
|
|
@@ -212,8 +259,11 @@
|
|
|
212
259
|
"component": "Hero"
|
|
213
260
|
},
|
|
214
261
|
{
|
|
215
|
-
"type": "
|
|
216
|
-
"component": "
|
|
262
|
+
"type": "items",
|
|
263
|
+
"component": "Items",
|
|
264
|
+
"options": {
|
|
265
|
+
"columns": 2
|
|
266
|
+
}
|
|
217
267
|
}
|
|
218
268
|
]
|
|
219
269
|
},
|
|
@@ -247,13 +297,20 @@
|
|
|
247
297
|
"shell": "MarketingShell",
|
|
248
298
|
"chrome": "on",
|
|
249
299
|
"sections": [
|
|
300
|
+
{
|
|
301
|
+
"type": "hero",
|
|
302
|
+
"component": "Hero",
|
|
303
|
+
"options": {
|
|
304
|
+
"gapBelow": "tight"
|
|
305
|
+
}
|
|
306
|
+
},
|
|
250
307
|
{
|
|
251
308
|
"type": "faq",
|
|
252
309
|
"component": "FAQ"
|
|
253
310
|
},
|
|
254
311
|
{
|
|
255
|
-
"type": "
|
|
256
|
-
"component": "
|
|
312
|
+
"type": "faq",
|
|
313
|
+
"component": "FAQ"
|
|
257
314
|
}
|
|
258
315
|
]
|
|
259
316
|
},
|
|
@@ -287,37 +344,12 @@
|
|
|
287
344
|
"type": "hero",
|
|
288
345
|
"component": "Hero"
|
|
289
346
|
},
|
|
290
|
-
{
|
|
291
|
-
"type": "newsletter",
|
|
292
|
-
"component": "Newsletter"
|
|
293
|
-
},
|
|
294
347
|
{
|
|
295
348
|
"type": "faq",
|
|
296
349
|
"component": "FAQ"
|
|
297
350
|
}
|
|
298
351
|
]
|
|
299
352
|
},
|
|
300
|
-
{
|
|
301
|
-
"route": "/book-a-call",
|
|
302
|
-
"kind": "page",
|
|
303
|
-
"pageType": "BookCall",
|
|
304
|
-
"schema": "BookCall",
|
|
305
|
-
"shell": "MarketingShell",
|
|
306
|
-
"chrome": "on",
|
|
307
|
-
"sections": [
|
|
308
|
-
{
|
|
309
|
-
"type": "hero",
|
|
310
|
-
"component": "Hero"
|
|
311
|
-
},
|
|
312
|
-
{
|
|
313
|
-
"type": "items",
|
|
314
|
-
"component": "Items",
|
|
315
|
-
"options": {
|
|
316
|
-
"columns": 3
|
|
317
|
-
}
|
|
318
|
-
}
|
|
319
|
-
]
|
|
320
|
-
},
|
|
321
353
|
{
|
|
322
354
|
"route": "/privacy",
|
|
323
355
|
"kind": "page",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: Minimalism
|
|
3
|
-
description: The minimalism design — the same black-on-white foundation, presented as a nine-slide scroll-snap deck home with a mark-only navigation and a centred footer.
|
|
3
|
+
description: "The minimalism design — the same black-on-white foundation, presented as a nine-slide scroll-snap deck home with a mark-only navigation and a centred footer."
|
|
4
4
|
colors:
|
|
5
5
|
bg: "#ffffff"
|
|
6
6
|
fg: "#000000"
|
|
@@ -15,6 +15,19 @@ colors:
|
|
|
15
15
|
fg-dark: "#ffffff"
|
|
16
16
|
border-dark: "#ffffff"
|
|
17
17
|
brand-dark: "#ffffff"
|
|
18
|
+
text-muted-dark: "#cccccc"
|
|
19
|
+
treatments:
|
|
20
|
+
corners: square
|
|
21
|
+
eyebrowCase: sentence
|
|
22
|
+
placeholders: fill
|
|
23
|
+
checkmarks: plain
|
|
24
|
+
layout:
|
|
25
|
+
nav: mark-only
|
|
26
|
+
footer: centered
|
|
27
|
+
announcementBanner: false
|
|
28
|
+
home: deck
|
|
29
|
+
copy:
|
|
30
|
+
density: sparse
|
|
18
31
|
typography:
|
|
19
32
|
display:
|
|
20
33
|
fontFamily: "system-ui, -apple-system, Segoe UI, Roboto, Helvetica Neue, sans-serif"
|
|
@@ -69,9 +82,12 @@ spacing:
|
|
|
69
82
|
stays on-system.
|
|
70
83
|
Edit the canonical file, never a copy — a test holds every copy to it.
|
|
71
84
|
|
|
72
|
-
The tokens above describe what the site RENDERS today.
|
|
73
|
-
content/_site.mdx
|
|
74
|
-
|
|
85
|
+
The tokens above describe what the site RENDERS today. The design's own
|
|
86
|
+
colours and shape knobs live in content/_site.mdx `theme:`, which
|
|
87
|
+
`create-ailk apply-design` replaces wholesale; the owner's brand colours and
|
|
88
|
+
fonts live beside it in `brand.colors` and `brand.fonts`, which applying a
|
|
89
|
+
design never rewrites. Radius and spacing are platform defaults a site
|
|
90
|
+
cannot override yet — see "Where this is heading" below.
|
|
75
91
|
-->
|
|
76
92
|
|
|
77
93
|
# Minimalism
|
|
@@ -84,6 +100,27 @@ Every page is composed from the AI Launch Kit component library (`@working-theor
|
|
|
84
100
|
|
|
85
101
|
## Colors
|
|
86
102
|
|
|
103
|
+
<!-- generated:begin colors -->
|
|
104
|
+
|
|
105
|
+
| Key | Value | Compiles to |
|
|
106
|
+
| ------------------- | --------- | -------------------------------------------------------------------------------------------------------------- |
|
|
107
|
+
| `bg` | `#ffffff` | `light.bg` |
|
|
108
|
+
| `fg` | `#000000` | `light.text` |
|
|
109
|
+
| `surface` | `#ffffff` | `light.surface` |
|
|
110
|
+
| `surface-secondary` | `#ffffff` | `light.bgMuted` |
|
|
111
|
+
| `border` | `#000000` | `light.border` |
|
|
112
|
+
| `text-muted` | `#333333` | `light.textMuted` |
|
|
113
|
+
| `brand` | `#000000` | `light.primary` |
|
|
114
|
+
| `fg-on-brand` | `#ffffff` | `light.primaryFg` |
|
|
115
|
+
| `accent` | `#000000` | `light.accent` |
|
|
116
|
+
| `bg-dark` | `#000000` | `dark.bg`, `dark.bgMuted` (fallback of L1), `dark.surface` (fallback of L2), `dark.primaryFg` (fallback of L4) |
|
|
117
|
+
| `fg-dark` | `#ffffff` | `dark.text` |
|
|
118
|
+
| `border-dark` | `#ffffff` | `dark.border` |
|
|
119
|
+
| `brand-dark` | `#ffffff` | `dark.primary`, `dark.accent` (fallback of L5) |
|
|
120
|
+
| `text-muted-dark` | `#cccccc` | `dark.textMuted` |
|
|
121
|
+
|
|
122
|
+
<!-- generated:end -->
|
|
123
|
+
|
|
87
124
|
### Primary
|
|
88
125
|
|
|
89
126
|
**Black** (`brand` `#000000`) fills the primary button; its label is white. The secondary button is white with a black hairline and black label.
|
|
@@ -100,6 +137,18 @@ Dark mode inverts: black ground, white ink, white rules, white primary button wi
|
|
|
100
137
|
|
|
101
138
|
## Typography
|
|
102
139
|
|
|
140
|
+
<!-- generated:begin typography -->
|
|
141
|
+
|
|
142
|
+
| Role | Family | Size | Weight | Line height | Tracking |
|
|
143
|
+
| ----------------- | ------------------------------------------------------------------------ | ---------- | ------ | ----------- | -------- |
|
|
144
|
+
| `display` | `system-ui, -apple-system, Segoe UI, Roboto, Helvetica Neue, sans-serif` | `3.5rem` | 700 | 1.1 | `normal` |
|
|
145
|
+
| `heading-section` | `system-ui, -apple-system, Segoe UI, Roboto, Helvetica Neue, sans-serif` | `3rem` | 700 | 1.1 | `normal` |
|
|
146
|
+
| `heading-item` | — | `2rem` | 700 | 1.375 | `normal` |
|
|
147
|
+
| `body` | `system-ui, -apple-system, Segoe UI, Roboto, Helvetica Neue, sans-serif` | `1.125rem` | 400 | 1.5 | — |
|
|
148
|
+
| `eyebrow` | — | `0.875rem` | 600 | 1.4 | `0.05em` |
|
|
149
|
+
|
|
150
|
+
<!-- generated:end -->
|
|
151
|
+
|
|
103
152
|
System sans throughout; no web font.
|
|
104
153
|
|
|
105
154
|
### Hierarchy
|
|
@@ -118,10 +167,53 @@ The small label above a section heading is **kept** as part of this foundation's
|
|
|
118
167
|
|
|
119
168
|
## Layout
|
|
120
169
|
|
|
170
|
+
<!-- generated:begin layout -->
|
|
171
|
+
|
|
172
|
+
| Knob | Value |
|
|
173
|
+
| -------------------- | ----------- |
|
|
174
|
+
| `nav` | `mark-only` |
|
|
175
|
+
| `footer` | `centered` |
|
|
176
|
+
| `announcementBanner` | `false` |
|
|
177
|
+
| `home` | `deck` |
|
|
178
|
+
|
|
179
|
+
| Spacing | Value |
|
|
180
|
+
| ---------------- | -------- |
|
|
181
|
+
| `section` | `7rem` |
|
|
182
|
+
| `section-mobile` | `4rem` |
|
|
183
|
+
| `card` | `1.5rem` |
|
|
184
|
+
| `grid` | `1.5rem` |
|
|
185
|
+
| `container` | `1280px` |
|
|
186
|
+
| `measure` | `36rem` |
|
|
187
|
+
|
|
188
|
+
<!-- generated:end -->
|
|
189
|
+
|
|
121
190
|
Home is the `deck` layout: nine full-viewport slides with scroll-snap. The navigation is `mark-only`, the footer is `centered`, and there is no announcement banner (`layout.home: deck`, `layout.nav: mark-only`, `layout.footer: centered` — the design's own knobs, which any template on this design gets without declaring a `layout`). Every page this site carries is listed in its roster of record, `.ailk-site-manifest.json` at the site root. Shared foundation: a 1280px container, sections at 7rem (4rem below 1024px), card grids at 1.5rem, breakpoints 320 / 768 / 1024 / 1440.
|
|
122
191
|
|
|
192
|
+
## Copy
|
|
193
|
+
|
|
194
|
+
<!-- generated:begin copy -->
|
|
195
|
+
|
|
196
|
+
Copy density: sparse — minimalism pages carry far fewer words than a standard site; keep every block to its headline and one sentence.
|
|
197
|
+
<!-- generated:end -->
|
|
198
|
+
|
|
123
199
|
## Shapes
|
|
124
200
|
|
|
201
|
+
<!-- generated:begin shapes -->
|
|
202
|
+
|
|
203
|
+
| Rounded | Value |
|
|
204
|
+
| -------- | --------- |
|
|
205
|
+
| `button` | `0.5rem` |
|
|
206
|
+
| `card` | `0.75rem` |
|
|
207
|
+
|
|
208
|
+
| Treatment | Value |
|
|
209
|
+
| ------------------------- | ---------- |
|
|
210
|
+
| `treatments.corners` | `square` |
|
|
211
|
+
| `treatments.eyebrowCase` | `sentence` |
|
|
212
|
+
| `treatments.placeholders` | `fill` |
|
|
213
|
+
| `treatments.checkmarks` | `plain` |
|
|
214
|
+
|
|
215
|
+
<!-- generated:end -->
|
|
216
|
+
|
|
125
217
|
Square corners everywhere (`theme.corners: square`) — buttons, cards, the auth card, image placeholders; the tokens above are the base foundation's defaults a site overrides.
|
|
126
218
|
|
|
127
219
|
## Components
|
|
@@ -156,7 +248,7 @@ The foundation's pinned direction is the pacing of a classic wireframe marketing
|
|
|
156
248
|
## Do's and Don'ts
|
|
157
249
|
|
|
158
250
|
- **Do** keep every page built from registered sections. If a section you need does not exist, request it rather than writing one-off markup.
|
|
159
|
-
- **Do**
|
|
160
|
-
- **Don't** add a colour accent. The foundation's one idea is black on white; a brand pass adds colour deliberately, through
|
|
251
|
+
- **Do** set your brand colours (`primary`, `primaryFg`, `accent`, per mode) in `content/_site.mdx` `brand.colors` and your fonts (`display`, `body`) in `brand.fonts`; they reach every section and survive applying another design, which replaces `theme:`.
|
|
252
|
+
- **Don't** add a colour accent. The foundation's one idea is black on white; a brand pass adds colour deliberately, through `brand.colors`.
|
|
161
253
|
- **Don't** replace a black rule with a shadow or a grey fill.
|
|
162
254
|
- **Don't** hard-code the "heading toward" values above into a page. They arrive through the platform, or not at all.
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# The `minimalism` design's home-deck sample
|
|
2
|
+
|
|
3
|
+
> Narrative moved here from the retired `site-templates/minimalism-site/TEMPLATE-MANIFEST.md`
|
|
4
|
+
> when that tree retired (spec 6892 D4/D5) — `minimalism` is a design, not a template, so it
|
|
5
|
+
> carries no generated manifest of its own. This file is NOT installed onto a scaffold
|
|
6
|
+
> (`installDesignSample` copies only `content/**` and `public/**`); it documents the sample for
|
|
7
|
+
> maintainers of this design.
|
|
8
|
+
|
|
9
|
+
The second Pro template (#5589) that first wore this design was a reports-first site whose home
|
|
10
|
+
is a **nine-slide scroll-snap deck**, shaped after the reference captured in
|
|
11
|
+
`docs/research/bondcap-capture/`. Structure and design are the reference; **the copy is not** —
|
|
12
|
+
every line in `content/en/HomePage/home.mdx` is placeholder English of the same shape and length.
|
|
13
|
+
|
|
14
|
+
`layout.home: "deck"` (the `minimalism` design's own layout knob) makes every direct section
|
|
15
|
+
child of `home.mdx` one full-viewport snap target, in order. The mark is hidden on slide 1 (the
|
|
16
|
+
deck-hero landing state) and revealed from slide 2 on.
|
|
17
|
+
|
|
18
|
+
| # | Slide | Section | Ground | Action |
|
|
19
|
+
| --- | ----------------- | -------------------------------------------------------------- | ------------------------ | ---------------------------------------------------------- |
|
|
20
|
+
| 1 | Landing | `hero` (`backdrop`) | gradient band + backdrop | `{Primary CTA} →` → `/reports`, centered; 44px scroll cue. |
|
|
21
|
+
| 2 | Tagline | `content-block` (`align: center`, `fill: viewport`) | light | — |
|
|
22
|
+
| 3 | Our community | `logoCloud` (`actions`) | light | `Refer someone →` → `/referral`, bottom-centered at 44px |
|
|
23
|
+
| 4 | Reports headline | `content-block` (`align: center`, `fill: viewport`) | light | — |
|
|
24
|
+
| 5 | Special reports | `reports-list` (`list`, `tone: on-dark`) | dark (`gradient-dark`) | four dated titles → `/reports/<slug>` |
|
|
25
|
+
| 6 | Favorites | `reports-list` (`list`, `tone: on-dark`) | dark (`gradient-dark`) | year-only titles → `/reports/<slug>` |
|
|
26
|
+
| 7 | Services headline | `content-block` (`align: center`, `fill: viewport`) | light | `Hire me →` → `/meet` |
|
|
27
|
+
| 8 | Partners | `team` (`with-large-images`, `hoverReveal`, `phoneColumns: 2`) | light | `About us →` → `/about`, bottom-centered at 44px |
|
|
28
|
+
| 9 | Closing | `cta` (`minimal`) | light | `Contact me →` → `/contact`, centered |
|
|
29
|
+
|
|
30
|
+
## The site principle
|
|
31
|
+
|
|
32
|
+
Every slide's action sits at the bottom, centered, at 44px or larger; grids are 2-up on a phone.
|
|
33
|
+
This is held by bounded section props on the sections above, never by a `className` override or
|
|
34
|
+
hand-rolled markup (`.claude/rules/frontend.md` § Chrome Composes Blocks).
|
|
35
|
+
|
|
36
|
+
## The 11 SVGs
|
|
37
|
+
|
|
38
|
+
`public/hero-backdrop.svg`, `public/wordmark-placeholder.svg`, three `public/logo-placeholder-*.svg`
|
|
39
|
+
and six `public/avatar-placeholder-*.svg` — all placeholders, referenced only from this sample's
|
|
40
|
+
`home.mdx` (the avatars are also referenced by the retired bespoke `AboutPage` seed, which did not
|
|
41
|
+
move with this design — its team slide is the only remaining consumer). They ride with the design
|
|
42
|
+
because the deck uses all 11; a shape/design pair that does not install this sample never ships
|
|
43
|
+
them (D4).
|
|
44
|
+
|
|
45
|
+
## Copy density
|
|
46
|
+
|
|
47
|
+
This design declares `copy: { density: "sparse" }` in its `DESIGN.md` — its pages, this deck
|
|
48
|
+
included, carry far fewer words than a standard site.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: Standard
|
|
3
|
-
description: The standard design — the black-on-white foundation any shape wears by default: full navigation, a multi-column footer, the document-scroll home.
|
|
3
|
+
description: "The standard design — the black-on-white foundation any shape wears by default: full navigation, a multi-column footer, the document-scroll home."
|
|
4
4
|
colors:
|
|
5
5
|
bg: "#ffffff"
|
|
6
6
|
fg: "#000000"
|
|
@@ -15,6 +15,19 @@ colors:
|
|
|
15
15
|
fg-dark: "#ffffff"
|
|
16
16
|
border-dark: "#ffffff"
|
|
17
17
|
brand-dark: "#ffffff"
|
|
18
|
+
text-muted-dark: "#cccccc"
|
|
19
|
+
treatments:
|
|
20
|
+
corners: square
|
|
21
|
+
eyebrowCase: sentence
|
|
22
|
+
placeholders: fill
|
|
23
|
+
checkmarks: plain
|
|
24
|
+
layout:
|
|
25
|
+
nav: full
|
|
26
|
+
footer: columns
|
|
27
|
+
announcementBanner: false
|
|
28
|
+
home: default
|
|
29
|
+
copy:
|
|
30
|
+
density: standard
|
|
18
31
|
typography:
|
|
19
32
|
display:
|
|
20
33
|
fontFamily: "system-ui, -apple-system, Segoe UI, Roboto, Helvetica Neue, sans-serif"
|
|
@@ -69,9 +82,12 @@ spacing:
|
|
|
69
82
|
stays on-system.
|
|
70
83
|
Edit the canonical file, never a copy — a test holds every copy to it.
|
|
71
84
|
|
|
72
|
-
The tokens above describe what the site RENDERS today.
|
|
73
|
-
content/_site.mdx
|
|
74
|
-
|
|
85
|
+
The tokens above describe what the site RENDERS today. The design's own
|
|
86
|
+
colours and shape knobs live in content/_site.mdx `theme:`, which
|
|
87
|
+
`create-ailk apply-design` replaces wholesale; the owner's brand colours and
|
|
88
|
+
fonts live beside it in `brand.colors` and `brand.fonts`, which applying a
|
|
89
|
+
design never rewrites. Radius and spacing are platform defaults a site
|
|
90
|
+
cannot override yet — see "Where this is heading" below.
|
|
75
91
|
-->
|
|
76
92
|
|
|
77
93
|
# Standard
|
|
@@ -84,6 +100,27 @@ Every page is composed from the AI Launch Kit component library (`@working-theor
|
|
|
84
100
|
|
|
85
101
|
## Colors
|
|
86
102
|
|
|
103
|
+
<!-- generated:begin colors -->
|
|
104
|
+
|
|
105
|
+
| Key | Value | Compiles to |
|
|
106
|
+
| ------------------- | --------- | -------------------------------------------------------------------------------------------------------------- |
|
|
107
|
+
| `bg` | `#ffffff` | `light.bg` |
|
|
108
|
+
| `fg` | `#000000` | `light.text` |
|
|
109
|
+
| `surface` | `#ffffff` | `light.surface` |
|
|
110
|
+
| `surface-secondary` | `#ffffff` | `light.bgMuted` |
|
|
111
|
+
| `border` | `#000000` | `light.border` |
|
|
112
|
+
| `text-muted` | `#333333` | `light.textMuted` |
|
|
113
|
+
| `brand` | `#000000` | `light.primary` |
|
|
114
|
+
| `fg-on-brand` | `#ffffff` | `light.primaryFg` |
|
|
115
|
+
| `accent` | `#000000` | `light.accent` |
|
|
116
|
+
| `bg-dark` | `#000000` | `dark.bg`, `dark.bgMuted` (fallback of L1), `dark.surface` (fallback of L2), `dark.primaryFg` (fallback of L4) |
|
|
117
|
+
| `fg-dark` | `#ffffff` | `dark.text` |
|
|
118
|
+
| `border-dark` | `#ffffff` | `dark.border` |
|
|
119
|
+
| `brand-dark` | `#ffffff` | `dark.primary`, `dark.accent` (fallback of L5) |
|
|
120
|
+
| `text-muted-dark` | `#cccccc` | `dark.textMuted` |
|
|
121
|
+
|
|
122
|
+
<!-- generated:end -->
|
|
123
|
+
|
|
87
124
|
### Primary
|
|
88
125
|
|
|
89
126
|
**Black** (`brand` `#000000`) fills the primary button; its label is white. The secondary button is white with a black hairline and black label.
|
|
@@ -100,6 +137,18 @@ Dark mode inverts: black ground, white ink, white rules, white primary button wi
|
|
|
100
137
|
|
|
101
138
|
## Typography
|
|
102
139
|
|
|
140
|
+
<!-- generated:begin typography -->
|
|
141
|
+
|
|
142
|
+
| Role | Family | Size | Weight | Line height | Tracking |
|
|
143
|
+
| ----------------- | ------------------------------------------------------------------------ | ---------- | ------ | ----------- | -------- |
|
|
144
|
+
| `display` | `system-ui, -apple-system, Segoe UI, Roboto, Helvetica Neue, sans-serif` | `3.5rem` | 700 | 1.1 | `normal` |
|
|
145
|
+
| `heading-section` | `system-ui, -apple-system, Segoe UI, Roboto, Helvetica Neue, sans-serif` | `3rem` | 700 | 1.1 | `normal` |
|
|
146
|
+
| `heading-item` | — | `2rem` | 700 | 1.375 | `normal` |
|
|
147
|
+
| `body` | `system-ui, -apple-system, Segoe UI, Roboto, Helvetica Neue, sans-serif` | `1.125rem` | 400 | 1.5 | — |
|
|
148
|
+
| `eyebrow` | — | `0.875rem` | 600 | 1.4 | `0.05em` |
|
|
149
|
+
|
|
150
|
+
<!-- generated:end -->
|
|
151
|
+
|
|
103
152
|
System sans throughout; no web font.
|
|
104
153
|
|
|
105
154
|
### Hierarchy
|
|
@@ -118,10 +167,53 @@ The small label above a section heading is **kept** as part of this foundation's
|
|
|
118
167
|
|
|
119
168
|
## Layout
|
|
120
169
|
|
|
170
|
+
<!-- generated:begin layout -->
|
|
171
|
+
|
|
172
|
+
| Knob | Value |
|
|
173
|
+
| -------------------- | --------- |
|
|
174
|
+
| `nav` | `full` |
|
|
175
|
+
| `footer` | `columns` |
|
|
176
|
+
| `announcementBanner` | `false` |
|
|
177
|
+
| `home` | `default` |
|
|
178
|
+
|
|
179
|
+
| Spacing | Value |
|
|
180
|
+
| ---------------- | -------- |
|
|
181
|
+
| `section` | `7rem` |
|
|
182
|
+
| `section-mobile` | `4rem` |
|
|
183
|
+
| `card` | `1.5rem` |
|
|
184
|
+
| `grid` | `1.5rem` |
|
|
185
|
+
| `container` | `1280px` |
|
|
186
|
+
| `measure` | `36rem` |
|
|
187
|
+
|
|
188
|
+
<!-- generated:end -->
|
|
189
|
+
|
|
121
190
|
Full navigation; a multi-column footer; the default home. The home-only announcement banner is off by default (`layout.announcementBanner`). Every page this site carries is listed in its roster of record, `.ailk-site-manifest.json` at the site root. Shared foundation: a 1280px container, sections at 7rem (4rem below 1024px), card grids at 1.5rem, breakpoints 320 / 768 / 1024 / 1440.
|
|
122
191
|
|
|
192
|
+
## Copy
|
|
193
|
+
|
|
194
|
+
<!-- generated:begin copy -->
|
|
195
|
+
|
|
196
|
+
Copy density: standard — pages carry the ordinary amount of body copy for their section.
|
|
197
|
+
<!-- generated:end -->
|
|
198
|
+
|
|
123
199
|
## Shapes
|
|
124
200
|
|
|
201
|
+
<!-- generated:begin shapes -->
|
|
202
|
+
|
|
203
|
+
| Rounded | Value |
|
|
204
|
+
| -------- | --------- |
|
|
205
|
+
| `button` | `0.5rem` |
|
|
206
|
+
| `card` | `0.75rem` |
|
|
207
|
+
|
|
208
|
+
| Treatment | Value |
|
|
209
|
+
| ------------------------- | ---------- |
|
|
210
|
+
| `treatments.corners` | `square` |
|
|
211
|
+
| `treatments.eyebrowCase` | `sentence` |
|
|
212
|
+
| `treatments.placeholders` | `fill` |
|
|
213
|
+
| `treatments.checkmarks` | `plain` |
|
|
214
|
+
|
|
215
|
+
<!-- generated:end -->
|
|
216
|
+
|
|
125
217
|
Square corners everywhere (`theme.corners: square`) — buttons, cards, the auth card, image placeholders; the tokens above are the base foundation's defaults a site overrides.
|
|
126
218
|
|
|
127
219
|
## Components
|
|
@@ -156,8 +248,8 @@ The foundation's pinned direction is the pacing of a classic wireframe marketing
|
|
|
156
248
|
## Do's and Don'ts
|
|
157
249
|
|
|
158
250
|
- **Do** keep every page built from registered sections. If a section you need does not exist, request it rather than writing one-off markup.
|
|
159
|
-
- **Do**
|
|
160
|
-
- **Don't** add a colour accent. The foundation's one idea is black on white; a brand pass adds colour deliberately, through
|
|
251
|
+
- **Do** set your brand colours (`primary`, `primaryFg`, `accent`, per mode) in `content/_site.mdx` `brand.colors` and your fonts (`display`, `body`) in `brand.fonts`; they reach every section and survive applying another design, which replaces `theme:`.
|
|
252
|
+
- **Don't** add a colour accent. The foundation's one idea is black on white; a brand pass adds colour deliberately, through `brand.colors`.
|
|
161
253
|
- **Don't** replace a black rule with a shadow or a grey fill.
|
|
162
254
|
- **Don't** hard-code the "heading toward" values above into a page. They arrive through the platform, or not at all.
|
|
163
255
|
|