create-ailk 0.8.0 → 0.10.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 +71 -3
- 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 +104 -5
- 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 +48 -32
- package/dist/lib/module-license-gate.js +117 -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 +67 -23
- 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 +216 -19
- 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 +16 -63
- package/dist/starter-grid.js +102 -84
- 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 +53 -28
- package/package.json +6 -3
- package/release-scope.json +25 -0
- 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/designs/minimalism/DESIGN.md +98 -6
- package/site-templates/designs/minimalism/sample/README.md +48 -0
- package/site-templates/{minimalism-site → designs/minimalism/sample}/content/en/HomePage/home.mdx +1 -1
- 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/agents/web.md +10 -8
- package/templates/.claude/rules/architecture.md +17 -7
- package/templates/.claude/skills/README.md +3 -2
- package/templates/.claude/skills/add-auth/SKILL.md +142 -90
- package/templates/.claude/skills/add-auth/references/env-vars.md +32 -17
- package/templates/.claude/skills/add-auth/references/oauth-app-setup.md +17 -8
- package/templates/.claude/skills/add-page/SKILL.md +241 -238
- package/templates/.claude/skills/add-page/references/page-types.md +94 -86
- 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 +51 -18
- package/templates/.claude/skills/check-site/references/common-errors.md +12 -9
- package/templates/.claude/skills/check-site/references/findings-glossary.md +4 -4
- package/templates/.claude/skills/check-site/references/severity-levels.md +3 -3
- 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/SKILL.md +75 -38
- 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/.env.example +23 -2
- 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 +4 -1
- package/templates/tools/check-claude-md.ts +128 -0
- package/versions.json +33 -33
- package/dist/modules/commerce/0.6.0.tar.gz +0 -0
- package/dist/modules/commerce/0.6.1.tar.gz +0 -0
- package/dist/modules/docs-blog/0.6.0.tar.gz +0 -0
- package/dist/modules/docs-blog/0.6.1.tar.gz +0 -0
- package/dist/modules/marketing-site/0.6.1.tar.gz +0 -0
- package/dist/modules/minimalism-site/0.6.1.tar.gz +0 -0
- package/dist/modules/multi-tenant/0.6.0.tar.gz +0 -0
- package/dist/modules/multi-tenant/0.6.1.tar.gz +0 -0
- package/dist/modules/saas-product/0.6.1.tar.gz +0 -0
- package/dist/modules/scheduling/0.6.0.tar.gz +0 -0
- package/dist/modules/scheduling/0.6.1.tar.gz +0 -0
- package/dist/modules/signal-collectors/0.6.0.tar.gz +0 -0
- package/dist/modules/signal-collectors/0.6.1.tar.gz +0 -0
- package/dist/modules/simple-service/0.6.1.tar.gz +0 -0
- package/dist/modules/workspace/0.6.0.tar.gz +0 -0
- package/dist/modules/workspace/0.6.1.tar.gz +0 -0
- 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.json +0 -506
- 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/.claude/skills/setup-deploy/references/env-vars-template.md +0 -175
- package/templates/apps/api/.ailk/inbox/2026-09-20T14-57-31.552Z-fallback-1789916251590-037e9005.json +0 -8
- package/templates/apps/api/.ailk/inbox/2026-09-20T14-57-33.840Z-fallback-1789916253842-b52659e9.json +0 -12
- package/templates/apps/api/.ailk/inbox/2026-09-20T14-57-33.844Z-fallback-1789916253845-6b266f8c.json +0 -12
- 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/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,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
|
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
],
|
|
18
18
|
"shape": "organization-product",
|
|
19
19
|
"design": "standard",
|
|
20
|
-
"generatedHash": "
|
|
20
|
+
"generatedHash": "bc9ceb909dc92d2f442fd5cadddc073363a7be19e780f36e26b703d99c6e680a",
|
|
21
21
|
"layout": {
|
|
22
22
|
"nav": "full",
|
|
23
23
|
"footer": "columns",
|
|
@@ -173,7 +173,7 @@
|
|
|
173
173
|
"sections": []
|
|
174
174
|
},
|
|
175
175
|
{
|
|
176
|
-
"route": "/
|
|
176
|
+
"route": "/for",
|
|
177
177
|
"kind": "page",
|
|
178
178
|
"pageType": "UseCasesList",
|
|
179
179
|
"schema": "UseCasesList",
|
|
@@ -213,7 +213,7 @@
|
|
|
213
213
|
]
|
|
214
214
|
},
|
|
215
215
|
{
|
|
216
|
-
"route": "/
|
|
216
|
+
"route": "/for/[slug]",
|
|
217
217
|
"kind": "page",
|
|
218
218
|
"contentDir": "content/en/UseCase",
|
|
219
219
|
"seeds": [
|
|
@@ -335,6 +335,13 @@
|
|
|
335
335
|
{
|
|
336
336
|
"type": "hero",
|
|
337
337
|
"component": "Hero"
|
|
338
|
+
},
|
|
339
|
+
{
|
|
340
|
+
"type": "items",
|
|
341
|
+
"component": "Items",
|
|
342
|
+
"options": {
|
|
343
|
+
"columns": 2
|
|
344
|
+
}
|
|
338
345
|
}
|
|
339
346
|
]
|
|
340
347
|
},
|
|
@@ -378,27 +385,6 @@
|
|
|
378
385
|
}
|
|
379
386
|
]
|
|
380
387
|
},
|
|
381
|
-
{
|
|
382
|
-
"route": "/book-a-call",
|
|
383
|
-
"kind": "page",
|
|
384
|
-
"pageType": "BookCall",
|
|
385
|
-
"schema": "BookCall",
|
|
386
|
-
"shell": "MarketingShell",
|
|
387
|
-
"chrome": "on",
|
|
388
|
-
"sections": [
|
|
389
|
-
{
|
|
390
|
-
"type": "hero",
|
|
391
|
-
"component": "Hero"
|
|
392
|
-
},
|
|
393
|
-
{
|
|
394
|
-
"type": "items",
|
|
395
|
-
"component": "Items",
|
|
396
|
-
"options": {
|
|
397
|
-
"columns": 3
|
|
398
|
-
}
|
|
399
|
-
}
|
|
400
|
-
]
|
|
401
|
-
},
|
|
402
388
|
{
|
|
403
389
|
"route": "/sign-in",
|
|
404
390
|
"kind": "route",
|
|
@@ -522,6 +508,46 @@
|
|
|
522
508
|
"chrome": "on",
|
|
523
509
|
"sections": []
|
|
524
510
|
},
|
|
511
|
+
{
|
|
512
|
+
"route": "/reports",
|
|
513
|
+
"kind": "page",
|
|
514
|
+
"pageType": "ReportsList",
|
|
515
|
+
"schema": "ReportsList",
|
|
516
|
+
"shell": "MarketingShell",
|
|
517
|
+
"chrome": "on",
|
|
518
|
+
"sections": [
|
|
519
|
+
{
|
|
520
|
+
"type": "hero",
|
|
521
|
+
"component": "Hero"
|
|
522
|
+
},
|
|
523
|
+
{
|
|
524
|
+
"type": "cta",
|
|
525
|
+
"component": "CTA"
|
|
526
|
+
}
|
|
527
|
+
]
|
|
528
|
+
},
|
|
529
|
+
{
|
|
530
|
+
"route": "/referral",
|
|
531
|
+
"kind": "page",
|
|
532
|
+
"pageType": "LandingPage",
|
|
533
|
+
"schema": "WebPage",
|
|
534
|
+
"shell": "MarketingShell",
|
|
535
|
+
"chrome": "on",
|
|
536
|
+
"sections": [
|
|
537
|
+
{
|
|
538
|
+
"type": "hero",
|
|
539
|
+
"component": "Hero"
|
|
540
|
+
},
|
|
541
|
+
{
|
|
542
|
+
"type": "stair-steps",
|
|
543
|
+
"component": "StairSteps"
|
|
544
|
+
},
|
|
545
|
+
{
|
|
546
|
+
"type": "cta",
|
|
547
|
+
"component": "CTA"
|
|
548
|
+
}
|
|
549
|
+
]
|
|
550
|
+
},
|
|
525
551
|
{
|
|
526
552
|
"route": "/portfolio",
|
|
527
553
|
"kind": "page",
|
|
@@ -659,9 +685,16 @@
|
|
|
659
685
|
},
|
|
660
686
|
{
|
|
661
687
|
"route": "/reports/[slug]",
|
|
662
|
-
"kind": "
|
|
663
|
-
"
|
|
664
|
-
"
|
|
688
|
+
"kind": "page",
|
|
689
|
+
"contentDir": "content/en/ReportPage",
|
|
690
|
+
"seeds": [
|
|
691
|
+
"content/en/ReportPage/annual-letter-2024.mdx",
|
|
692
|
+
"content/en/ReportPage/field-notes-2023.mdx",
|
|
693
|
+
"content/en/ReportPage/platform-shift-2025.mdx",
|
|
694
|
+
"content/en/ReportPage/state-of-the-market-2026.mdx"
|
|
695
|
+
],
|
|
696
|
+
"pageType": "ReportPage",
|
|
697
|
+
"schema": "ReportPage",
|
|
665
698
|
"shell": "MarketingShell",
|
|
666
699
|
"chrome": "on",
|
|
667
700
|
"sections": []
|
|
@@ -92,24 +92,24 @@ The base rows come first, exactly as the base layer and the always-copied overla
|
|
|
92
92
|
|
|
93
93
|
<!-- generated:end -->
|
|
94
94
|
|
|
95
|
-
`/
|
|
95
|
+
`/for` (a UseCasesList page composing sections — operator ruling 2026-09-23; a list of the three use cases since #6658 D4):
|
|
96
96
|
|
|
97
|
-
<!-- generated:begin page=/
|
|
97
|
+
<!-- generated:begin page=/for -->
|
|
98
98
|
|
|
99
99
|
| # | Section | Component | Copy (first line) |
|
|
100
100
|
| --- | -------------------------------------------------------- | -------------- | ----------------------------------------------------------------- |
|
|
101
|
-
| 1 | `hero` (eyebrow "
|
|
102
|
-
| 2 | `items` (columns=3 · items ×3) | `Items` | {The jobs customers hire your product to do}
|
|
101
|
+
| 1 | `hero` (eyebrow "Customers" · 2 CTAs) | `Hero` | {Customers: who your product or service is for} |
|
|
102
|
+
| 2 | `items` (columns=3 · items ×3) | `Items` | {The jobs customers hire your product or service to do} |
|
|
103
103
|
| 3 | `logoCloud` (layout=inline · logos ×6) | `LogoCloud` | Don’t just take our word for it |
|
|
104
104
|
| 4 | `testimonials` (quote · items ×1) | `Testimonials` | {A customer quote, in their own words, about the result they got} |
|
|
105
|
-
| 5 | `cta` (box · checklist ×3 · 2 CTAs · closingLine) | `CTA` | {Switch to your product in time amount or less}
|
|
105
|
+
| 5 | `cta` (box · checklist ×3 · 2 CTAs · closingLine) | `CTA` | {Switch to your product or service in time amount or less} |
|
|
106
106
|
| 6 | `faq` (accordion · items ×5 · 1 CTA · initialOpen first) | `FAQ` | FAQs |
|
|
107
107
|
|
|
108
108
|
<!-- generated:end -->
|
|
109
109
|
|
|
110
|
-
`/
|
|
110
|
+
`/for/[slug]` (#6658 D4):
|
|
111
111
|
|
|
112
|
-
<!-- generated:begin page=/
|
|
112
|
+
<!-- generated:begin page=/for/[slug] -->
|
|
113
113
|
|
|
114
114
|
_Detail route over `content/en/UseCase/` — 3 seed pages: `persona-1.mdx`, `persona-2.mdx`, `persona-3.mdx`._
|
|
115
115
|
<!-- generated:end -->
|
|
@@ -177,13 +177,14 @@ _Detail route over `content/en/Feature/` — 3 seed pages: `feature-1.mdx`, `fea
|
|
|
177
177
|
|
|
178
178
|
<!-- generated:begin page=/contact -->
|
|
179
179
|
|
|
180
|
-
| # | Section | Component | Copy (first line)
|
|
181
|
-
| --- | --------------------------------------------------------- | --------- |
|
|
182
|
-
| 1 | `hero` (split · eyebrow "Contact" · checklist ×3 · 1 CTA) | `Hero` | Get every message in your email, free
|
|
180
|
+
| # | Section | Component | Copy (first line) |
|
|
181
|
+
| --- | --------------------------------------------------------- | --------- | ----------------------------------------- |
|
|
182
|
+
| 1 | `hero` (split · eyebrow "Contact" · checklist ×3 · 1 CTA) | `Hero` | Get every message in your email, free |
|
|
183
|
+
| 2 | `items` (tiles · columns=2 · items ×4) | `Items` | {Add appointment scheduling to your site} |
|
|
183
184
|
|
|
184
185
|
<!-- generated:end -->
|
|
185
186
|
|
|
186
|
-
`/glossary`, `/newsletter
|
|
187
|
+
`/glossary`, `/newsletter` (#6658 D5 — every starter carries them). `/book-a-call` is retired (#6897 D10); this template's `scheduling` module serves its own live `/meet` and `/meet/[slug]` pages instead.
|
|
187
188
|
|
|
188
189
|
<!-- generated:begin page=/glossary -->
|
|
189
190
|
|
|
@@ -204,15 +205,6 @@ _Detail route over `content/en/Feature/` — 3 seed pages: `feature-1.mdx`, `fea
|
|
|
204
205
|
|
|
205
206
|
<!-- generated:end -->
|
|
206
207
|
|
|
207
|
-
<!-- generated:begin page=/book-a-call -->
|
|
208
|
-
|
|
209
|
-
| # | Section | Component | Copy (first line) |
|
|
210
|
-
| --- | -------------------------------------- | --------- | ------------------------------------------ |
|
|
211
|
-
| 1 | `hero` (eyebrow "Book a call" · 1 CTA) | `Hero` | {Book a call: what a visitor gets from it} |
|
|
212
|
-
| 2 | `items` (columns=3 · items ×3) | `Items` | What happens on the call? |
|
|
213
|
-
|
|
214
|
-
<!-- generated:end -->
|
|
215
|
-
|
|
216
208
|
`/sign-in`:
|
|
217
209
|
|
|
218
210
|
<!-- generated:begin page=/sign-in -->
|
|
@@ -380,7 +372,7 @@ _Code route — no content, no sections._
|
|
|
380
372
|
|
|
381
373
|
<!-- generated:begin page=/reports/[slug] -->
|
|
382
374
|
|
|
383
|
-
|
|
375
|
+
_Detail route over `content/en/ReportPage/` — 4 seed pages: `annual-letter-2024.mdx`, `field-notes-2023.mdx`, `platform-shift-2025.mdx`, `state-of-the-market-2026.mdx`._
|
|
384
376
|
<!-- generated:end -->
|
|
385
377
|
|
|
386
378
|
### `/projects`, `/projects/<slug>`, `/projects/apply` — CollectionPage / WebPage · schema `ProjectsList` / `Project` · signal-collectors
|
|
@@ -415,6 +407,33 @@ Authored per form (#3960): `contact` (if the Pro contact form redirects), `newsl
|
|
|
415
407
|
_Detail route over `content/en/ThankYouPage/` — 3 seed pages: `apply.mdx`, `contact.mdx`, `newsletter.mdx`._
|
|
416
408
|
<!-- generated:end -->
|
|
417
409
|
|
|
410
|
+
### `/reports` — ReportsList hub · schema `CollectionPage` · signal-collectors
|
|
411
|
+
|
|
412
|
+
Spec 6892 D2/D3 — a signal-collectors module sample, self-seeded alongside its four `ReportPage` spokes at `/reports/<slug>` (below). Its seed carries `hero` and `cta`; the card grid is a generated `reports-list` section the route appends from the module's own seeds (never hand-authored).
|
|
413
|
+
|
|
414
|
+
<!-- generated:begin page=/reports -->
|
|
415
|
+
|
|
416
|
+
| # | Section | Component | Copy (first line) |
|
|
417
|
+
| --- | ------------------------------------- | --------- | ------------------------------------------- |
|
|
418
|
+
| 1 | `hero` (centered · eyebrow "Reports") | `Hero` | Research on {your field}, published in full |
|
|
419
|
+
| 2 | `cta` (minimal · 1 CTA) | `CTA` | Want the next one as it lands? |
|
|
420
|
+
|
|
421
|
+
<!-- generated:end -->
|
|
422
|
+
|
|
423
|
+
### `/referral` — flow landing page · schema `LandingPage` · signal-collectors
|
|
424
|
+
|
|
425
|
+
Spec 6892 D3 — a signal-collectors module sample: the referral magnet, whose CTA opens the `referral` flow at `/flows/referral/start`.
|
|
426
|
+
|
|
427
|
+
<!-- generated:begin page=/referral -->
|
|
428
|
+
|
|
429
|
+
| # | Section | Component | Copy (first line) |
|
|
430
|
+
| --- | -------------------------------------------------------------- | ------------ | ---------------------------------------- |
|
|
431
|
+
| 1 | `hero` (centered · eyebrow "Referrals" · checklist ×3 · 1 CTA) | `Hero` | Know someone who should be on this list? |
|
|
432
|
+
| 2 | `stair-steps` (tiles ×3) | `StairSteps` | Three steps, about a minute |
|
|
433
|
+
| 3 | `cta` (minimal · 1 CTA) | `CTA` | Make an introduction |
|
|
434
|
+
|
|
435
|
+
<!-- generated:end -->
|
|
436
|
+
|
|
418
437
|
<!-- generated:begin page=/portfolio -->
|
|
419
438
|
|
|
420
439
|
| # | Section | Component | Copy (first line) |
|
|
@@ -462,15 +481,14 @@ marketing-site:
|
|
|
462
481
|
- { route: "/", kind: page, content: ["content/en/HomePage/home.mdx"] }
|
|
463
482
|
- { route: "/features", kind: page, content: ["content/en/FeaturesList/features.mdx"] }
|
|
464
483
|
- { route: "/features/[slug]", kind: page, contentDir: "content/en/Feature" }
|
|
465
|
-
- { route: "/
|
|
466
|
-
- { route: "/
|
|
484
|
+
- { route: "/for", kind: page, content: ["content/en/UseCasesList/for.mdx"] }
|
|
485
|
+
- { route: "/for/[slug]", kind: page, contentDir: "content/en/UseCase" }
|
|
467
486
|
- { route: "/pricing", kind: page, content: ["content/en/Pricing/pricing.mdx"] }
|
|
468
487
|
- { route: "/about", kind: page, content: ["content/en/AboutPage/about.mdx"] }
|
|
469
488
|
- { route: "/faq", kind: page, content: ["content/en/FAQPage/faq.mdx"] }
|
|
470
489
|
- { route: "/contact", kind: page, content: ["content/en/ContactPage/contact.mdx"] }
|
|
471
490
|
- { route: "/glossary", kind: page, content: ["content/en/GlossaryList/glossary.mdx"] }
|
|
472
491
|
- { route: "/newsletter", kind: page, content: ["content/en/NewsletterSignup/newsletter.mdx"] }
|
|
473
|
-
- { route: "/book-a-call", kind: page, content: ["content/en/BookCall/book-call.mdx"] }
|
|
474
492
|
- { route: "/sign-in", kind: route }
|
|
475
493
|
- { route: "/sign-up", kind: route }
|
|
476
494
|
- { route: "/privacy", kind: page, content: ["content/en/PrivacyPage/privacy.mdx"] }
|
|
@@ -479,6 +497,8 @@ marketing-site:
|
|
|
479
497
|
- { route: "/projects", kind: page, content: ["content/en/ProjectsList/projects.mdx"] }
|
|
480
498
|
- { route: "/projects/[slug]", kind: page, contentDir: "content/en/Project" }
|
|
481
499
|
- { route: "/thanks/[slug]", kind: page, contentDir: "content/en/ThankYouPage" }
|
|
500
|
+
- { route: "/reports", kind: page, content: ["content/en/ReportsList/reports.mdx"] }
|
|
501
|
+
- { route: "/referral", kind: page, content: ["content/en/LandingPage/referral.mdx"] }
|
|
482
502
|
- { route: "/portfolio", kind: page, content: ["content/en/PortfolioList/portfolio.mdx"] }
|
|
483
503
|
- { route: "/portfolio/[slug]", kind: page, contentDir: "content/en/PortfolioItem" }
|
|
484
504
|
- { route: "/blog", kind: page, content: ["apps/web/content/en/blog/index.mdx", "apps/web/content/en/blog/01-8-things-that-prove-coding-skills-are-directly-linked-to-successfully-assembling-ikea-furniture.mdx", "apps/web/content/en/blog/02-5-ways-to-guarantee-your-startup-goes-nowhere-fast.mdx", "apps/web/content/en/blog/03-10-ideas-that-will-guarantee-1000x-growth.mdx", "apps/web/content/en/blog/04-7-keys-to-saas-success-the-elite-doesnt-want-you-to-know.mdx", "apps/web/content/en/blog/launching-ailk.mdx"] }
|
|
@@ -490,7 +510,7 @@ marketing-site:
|
|
|
490
510
|
- { route: "/flows/[slug]", kind: route }
|
|
491
511
|
- { route: "/flows/[slug]/start", kind: route }
|
|
492
512
|
- { route: "/flows/[slug]/results/[payload]", kind: route }
|
|
493
|
-
- { route: "/reports/[slug]", kind:
|
|
513
|
+
- { route: "/reports/[slug]", kind: page, contentDir: "content/en/ReportPage" }
|
|
494
514
|
```
|
|
495
515
|
|
|
496
516
|
<!-- generated:end -->
|
|
@@ -512,11 +532,11 @@ Every component the roster rows' seed content composes today (generated):
|
|
|
512
532
|
|
|
513
533
|
<!-- generated:begin inventory -->
|
|
514
534
|
|
|
515
|
-
| Tier | Used by this template
|
|
516
|
-
| -------- |
|
|
517
|
-
| Shell | `MarketingShell`
|
|
518
|
-
| Chrome | `Nav`, `Footer`, `Banner` (+ `BannerConsentIsland`, `BannerDismissIsland`)
|
|
519
|
-
| Sections | `ContentBlock`, `CTA`, `DecisionSplit`, `DocumentChassis`, `FAQ`, `Feature`, `GlossaryIndex`, `Hero`, `Items`, `LogoCloud`, `MediaBand`, `Newsletter`, `Pricing`, `Team`, `Testimonials` |
|
|
535
|
+
| Tier | Used by this template |
|
|
536
|
+
| -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
537
|
+
| Shell | `MarketingShell` |
|
|
538
|
+
| Chrome | `Nav`, `Footer`, `Banner` (+ `BannerConsentIsland`, `BannerDismissIsland`) |
|
|
539
|
+
| Sections | `ContentBlock`, `CTA`, `DecisionSplit`, `DocumentChassis`, `FAQ`, `Feature`, `GlossaryIndex`, `Hero`, `Items`, `LogoCloud`, `MediaBand`, `Newsletter`, `Pricing`, `StairSteps`, `Team`, `Testimonials` |
|
|
520
540
|
|
|
521
541
|
<!-- generated:end -->
|
|
522
542
|
|
|
@@ -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
|
|