fimo 2.2.0-staging.10 → 2.2.0-staging.12
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/assets/skills/fimo-cli/SKILL.md +1 -1
- package/assets/skills/fimo-cli/references/assets.md +38 -2
- package/assets/skills/fimo-cli/references/content.md +1 -1
- package/assets/skills/fimo-code/references/content/schema.md +1 -0
- package/assets/skills/fimo-migration/SKILL.md +44 -13
- package/assets/skills/fimo-migration/references/frameworks/nextjs.md +8 -0
- package/assets/skills/fimo-migration/references/qa.md +30 -4
- package/assets/skills/fimo-migration/references/questions-and-improvements.md +188 -0
- package/assets/skills/fimo-migration/references/workers/content-planner.md +8 -3
- package/assets/skills/fimo-migration/references/workers/validator.md +20 -6
- package/assets/skills/fimo-migration/references/workers.md +17 -6
- package/assets/skills/fimo-migration/references/workflow.md +33 -6
- package/assets/skills/fimo-studio/SKILL.md +3 -1
- package/assets/skills/fimo-studio/references/agents.md +25 -0
- package/dist/cli/bundle.json +1 -1
- package/dist/cli/index.js +12 -11
- package/dist/runtime/templates.d.ts +1 -0
- package/dist/runtime/templates.js +3 -0
- package/dist/scripts/validate-schemas.js +10 -15
- package/package.json +8 -7
- package/templates/astro/package.json +2 -2
- package/templates/nextjs/package.json +3 -3
- package/templates/react-router/package.json +4 -4
- package/templates/sveltekit/package.json +2 -2
- package/templates/vite/package.json +4 -4
- package/templates/welcome/manifest.json +404 -0
- package/templates/welcome/media/analytics-overview.avif +0 -0
- package/templates/welcome/media/autonomous-loop.avif +0 -0
- package/templates/welcome/media/editable-preview.avif +0 -0
- package/templates/welcome/media/media-library.avif +0 -0
- package/templates/welcome/media/slack-teams.avif +0 -0
- package/templates/welcome/template/.fimo/agents/welcome-guide/GOAL.md +7 -0
- package/templates/welcome/template/.fimo/agents/welcome-guide/config.yaml +8 -0
- package/templates/welcome/template/.fimo/config.json +53 -0
- package/templates/welcome/template/src/font.css +60 -0
- package/templates/welcome/template/src/pages/ArticleDetail.tsx +68 -0
- package/templates/welcome/template/src/pages/Index.tsx +32 -0
- package/templates/welcome/template/src/pages/SiteContent.tsx +413 -0
- package/templates/welcome/template/src/pages/fallback-content.ts +133 -0
- package/templates/welcome/template/src/routes.ts +9 -0
- package/templates/welcome/template/src/schemas/Article.json +12 -0
- package/templates/welcome/template/src/schemas/Article.ts +59 -0
- package/templates/welcome/template/src/schemas/Article.types.ts +73 -0
- package/templates/welcome/template/src/schemas/HomePage.json +39 -0
- package/templates/welcome/template/src/schemas/HomePage.types.ts +114 -0
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import type { Article } from '@/schemas/Article';
|
|
2
|
+
import type { HomePage } from '@/schemas/HomePage';
|
|
3
|
+
|
|
4
|
+
// Generated from the starter seed (../../manifest.json): the loading
|
|
5
|
+
// fallback renders the real TutorialPage with this data so the live CMS
|
|
6
|
+
// values swap in without any visible change. Regenerate when the seed
|
|
7
|
+
// copy changes — a drifted fallback flashes different text on load.
|
|
8
|
+
// Rich-text values carry { content: <tiptap doc> } like FimoRichText;
|
|
9
|
+
// the missing source symbol simply disables inline editing until the
|
|
10
|
+
// live values arrive.
|
|
11
|
+
|
|
12
|
+
export const FALLBACK_PAGE = {
|
|
13
|
+
title: 'This site is yours to change.',
|
|
14
|
+
intro: {
|
|
15
|
+
content: {
|
|
16
|
+
type: 'doc',
|
|
17
|
+
content: [
|
|
18
|
+
{
|
|
19
|
+
type: 'paragraph',
|
|
20
|
+
content: [
|
|
21
|
+
{
|
|
22
|
+
type: 'text',
|
|
23
|
+
text: 'Four actions, five minutes. Every change is safe to make in this tutorial project.',
|
|
24
|
+
},
|
|
25
|
+
],
|
|
26
|
+
},
|
|
27
|
+
],
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
startLabel: 'Start the 5-minute tour',
|
|
31
|
+
tourTitle: 'Try the essentials in five minutes',
|
|
32
|
+
tourIntro: 'Follow these steps in order. Every change is safe to make in this tutorial project.',
|
|
33
|
+
steps: [
|
|
34
|
+
{
|
|
35
|
+
_key: 'fallback-step-1',
|
|
36
|
+
number: '1',
|
|
37
|
+
title: 'Edit this page',
|
|
38
|
+
body: 'Edit mode lets you change text and images directly on the website.\n- Select the big title and replace it with “Welcome, [your name]”.',
|
|
39
|
+
actionLabel: 'Activate Edit mode',
|
|
40
|
+
action: 'toggleEditMode',
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
_key: 'fallback-step-2',
|
|
44
|
+
number: '2',
|
|
45
|
+
title: 'Open the CMS',
|
|
46
|
+
body: 'The website content also lives in the CMS, as structured data.\n- Change “Title” and watch the site update.',
|
|
47
|
+
actionLabel: 'Jump to the Home page',
|
|
48
|
+
action: 'openHomePage',
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
_key: 'fallback-step-3',
|
|
52
|
+
number: '3',
|
|
53
|
+
title: 'Explore branches',
|
|
54
|
+
body: 'Branches let people and agents work without touching the live site.\n- Try a change on “tutorial/first-change”.',
|
|
55
|
+
actionLabel: 'Show the branch menu',
|
|
56
|
+
action: 'openBranches',
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
_key: 'fallback-step-4',
|
|
60
|
+
number: '4',
|
|
61
|
+
title: 'Meet your agent',
|
|
62
|
+
body: 'Your agent maintains this website on a schedule.\n- Click “Run now” and review the result and cost.',
|
|
63
|
+
actionLabel: 'Meet Welcome Guide',
|
|
64
|
+
action: 'openAgents',
|
|
65
|
+
},
|
|
66
|
+
],
|
|
67
|
+
articlesTitle: 'Continue learning in the CMS',
|
|
68
|
+
articlesIntro:
|
|
69
|
+
'These are real entries in the Articles collection. Open Content to edit their titles, summaries, bodies, and cover images.',
|
|
70
|
+
migrationTitle: 'Migrate my existing website',
|
|
71
|
+
migrationBody: {
|
|
72
|
+
content: {
|
|
73
|
+
type: 'doc',
|
|
74
|
+
content: [
|
|
75
|
+
{
|
|
76
|
+
type: 'paragraph',
|
|
77
|
+
content: [
|
|
78
|
+
{
|
|
79
|
+
type: 'text',
|
|
80
|
+
text: 'Open your existing local project with Codex, Claude Code, Cursor, or another coding agent. Copy the prompt below so the agent connects the website you already trust to Fimo, with a recoverable backup first.',
|
|
81
|
+
},
|
|
82
|
+
],
|
|
83
|
+
},
|
|
84
|
+
],
|
|
85
|
+
},
|
|
86
|
+
},
|
|
87
|
+
migrationPrompt:
|
|
88
|
+
'Before changing anything, create a recoverable backup of this website. If it uses Git, create a branch and commit the current state. If it does not use Git, duplicate the entire project folder and confirm the copy opens. Then inspect the existing codebase and migrate this website to Fimo in place. Preserve every route, visible piece of content, media asset, form, SEO field, redirect, and locale. Connect the existing implementation to Fimo rather than generating a new empty site. Report any item you cannot migrate safely before changing it.',
|
|
89
|
+
buildTitle: 'Create my website',
|
|
90
|
+
buildBody: {
|
|
91
|
+
content: {
|
|
92
|
+
type: 'doc',
|
|
93
|
+
content: [
|
|
94
|
+
{
|
|
95
|
+
type: 'paragraph',
|
|
96
|
+
content: [
|
|
97
|
+
{
|
|
98
|
+
type: 'text',
|
|
99
|
+
text: 'Use your Codex, Claude Code, Cursor, or other coding-agent subscription to design and build the first version in a local repository. Connect it to Fimo when the foundation is ready. Fimo starts where the first build ends: content, visual editing, environments, agents, and hosting.',
|
|
100
|
+
},
|
|
101
|
+
],
|
|
102
|
+
},
|
|
103
|
+
],
|
|
104
|
+
},
|
|
105
|
+
},
|
|
106
|
+
closingTitle: 'Fimo keeps finished websites autonomous',
|
|
107
|
+
closingBody:
|
|
108
|
+
'Fimo Credits are designed for the agents that maintain your website and for teammates who use Studio chat without a local coding tool.',
|
|
109
|
+
} as unknown as HomePage;
|
|
110
|
+
|
|
111
|
+
// Covers are omitted: the card's image box keeps its own aspect ratio, so
|
|
112
|
+
// the live images arrive without shifting the layout.
|
|
113
|
+
export const FALLBACK_ARTICLES = [
|
|
114
|
+
{
|
|
115
|
+
id: 'fallback-article-1',
|
|
116
|
+
slug: 'create-your-first-agent',
|
|
117
|
+
title: 'Create your first agent',
|
|
118
|
+
summary:
|
|
119
|
+
'Build a weekly SEO agent with one prompt: full audit, safe fixes applied to the CMS, and a report you can trust.',
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
id: 'fallback-article-2',
|
|
123
|
+
slug: 'branches-and-environments',
|
|
124
|
+
title: 'How branches and environments work',
|
|
125
|
+
summary: 'Branches isolate changes. Environments group related branches under shared deployment configuration.',
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
id: 'fallback-article-3',
|
|
129
|
+
slug: 'discover-the-analytics',
|
|
130
|
+
title: 'Discover the analytics',
|
|
131
|
+
summary: 'See who visits your website: pageviews, top pages, sources, devices, and countries.',
|
|
132
|
+
},
|
|
133
|
+
] as unknown as Article[];
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { RouteConfig } from '@react-router/dev/routes';
|
|
2
|
+
import { layout, route } from '@react-router/dev/routes';
|
|
3
|
+
|
|
4
|
+
export default [
|
|
5
|
+
layout('./pages/LocaleLayout.tsx', [
|
|
6
|
+
route(':locale?', './pages/Index.tsx', { id: 'home' }),
|
|
7
|
+
route(':locale?/articles/:slug', './pages/ArticleDetail.tsx', { id: 'article' }),
|
|
8
|
+
]),
|
|
9
|
+
] satisfies RouteConfig;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"uid": "Article",
|
|
3
|
+
"name": "Articles",
|
|
4
|
+
"isSingleton": false,
|
|
5
|
+
"i18n": { "enabled": false },
|
|
6
|
+
"fields": {
|
|
7
|
+
"title": { "type": "string", "required": true },
|
|
8
|
+
"summary": { "type": "text", "required": true },
|
|
9
|
+
"body": { "type": "richtext", "required": true },
|
|
10
|
+
"cover": { "type": "media", "required": true }
|
|
11
|
+
}
|
|
12
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
// AUTO-GENERATED by `fimo` from src/schemas/Article.json - DO NOT EDIT.
|
|
2
|
+
// Change content fields in the schema, then run `fimo validate`.
|
|
3
|
+
// Runtime implementation lives in the project-local fimo-react package.
|
|
4
|
+
import { createContentClient } from 'fimo-react';
|
|
5
|
+
import type { CollectionContentClient } from 'fimo-react';
|
|
6
|
+
import type { ContentSchema } from 'fimo-react';
|
|
7
|
+
|
|
8
|
+
import schema from './Article.json';
|
|
9
|
+
import type { Article, ArticleFields, ArticleInput, ArticlePopulate, ArticleQuery } from './Article.types';
|
|
10
|
+
|
|
11
|
+
export type {
|
|
12
|
+
Article,
|
|
13
|
+
ArticleFields,
|
|
14
|
+
ArticleFimoMeta,
|
|
15
|
+
ArticleInput,
|
|
16
|
+
ArticlePopulate,
|
|
17
|
+
ArticleQuery,
|
|
18
|
+
ArticleReferences,
|
|
19
|
+
ArticleResult,
|
|
20
|
+
ArticleSort,
|
|
21
|
+
ArticleWhere,
|
|
22
|
+
} from './Article.types';
|
|
23
|
+
export type { CollectionPage, CollectionPageInfo, InfiniteListResult } from 'fimo-react';
|
|
24
|
+
export type InfiniteListQuery<
|
|
25
|
+
TFields extends ArticleFields | undefined = undefined,
|
|
26
|
+
TPopulate extends ArticlePopulate | undefined = undefined,
|
|
27
|
+
> = Omit<ArticleQuery<TFields, TPopulate>, 'offset'>;
|
|
28
|
+
|
|
29
|
+
const client: CollectionContentClient<Article, ArticleInput> = createContentClient<Article, ArticleInput>({
|
|
30
|
+
schema: schema as unknown as ContentSchema,
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
export const {
|
|
34
|
+
wrapWithSource,
|
|
35
|
+
meta,
|
|
36
|
+
getById,
|
|
37
|
+
getBySlug,
|
|
38
|
+
getByField,
|
|
39
|
+
list,
|
|
40
|
+
get,
|
|
41
|
+
create,
|
|
42
|
+
update,
|
|
43
|
+
remove,
|
|
44
|
+
useGetById,
|
|
45
|
+
useGetBySlug,
|
|
46
|
+
useGetByField,
|
|
47
|
+
useList,
|
|
48
|
+
useInfiniteList,
|
|
49
|
+
useGet,
|
|
50
|
+
useSuspenseGetById,
|
|
51
|
+
useSuspenseGet,
|
|
52
|
+
useSuspenseGetByField,
|
|
53
|
+
useSuspenseGetBySlug,
|
|
54
|
+
useCreate,
|
|
55
|
+
useUpdate,
|
|
56
|
+
useRemove,
|
|
57
|
+
} = client;
|
|
58
|
+
|
|
59
|
+
export default client;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
// AUTO-GENERATED ⚠️ – do not edit by hand
|
|
2
|
+
import {
|
|
3
|
+
type Fields,
|
|
4
|
+
type FimoBoolean,
|
|
5
|
+
type FimoMedia,
|
|
6
|
+
type FimoPolymorphicReference,
|
|
7
|
+
type FimoReference,
|
|
8
|
+
type FimoRichText,
|
|
9
|
+
type FimoRichTextContent,
|
|
10
|
+
type FimoString,
|
|
11
|
+
type Populate,
|
|
12
|
+
type PopulatedResult,
|
|
13
|
+
type ProjectedWithPopulate,
|
|
14
|
+
type Query,
|
|
15
|
+
type Sort,
|
|
16
|
+
type Where,
|
|
17
|
+
type WithReferences,
|
|
18
|
+
} from 'fimo-react';
|
|
19
|
+
|
|
20
|
+
/*───────────────────────────────────────────────────────────────*/
|
|
21
|
+
/* ──────────── 📄 Type definitions ──────────── */
|
|
22
|
+
/*───────────────────────────────────────────────────────────────*/
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Article entity interface
|
|
26
|
+
*/
|
|
27
|
+
export interface ArticleFimoMeta {
|
|
28
|
+
contentType: 'Article';
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export interface Article extends WithReferences<ArticleReferences> {
|
|
32
|
+
id: string;
|
|
33
|
+
entryId: string;
|
|
34
|
+
documentId: string;
|
|
35
|
+
slug: FimoString;
|
|
36
|
+
locale: string;
|
|
37
|
+
createdAt: string;
|
|
38
|
+
updatedAt: string;
|
|
39
|
+
__fimo: ArticleFimoMeta;
|
|
40
|
+
title: FimoString;
|
|
41
|
+
summary: FimoString;
|
|
42
|
+
body: FimoRichText;
|
|
43
|
+
cover: FimoMedia;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export interface ArticleInput {
|
|
47
|
+
slug?: string;
|
|
48
|
+
documentId?: string;
|
|
49
|
+
title: string;
|
|
50
|
+
summary: string;
|
|
51
|
+
body: FimoRichTextContent;
|
|
52
|
+
cover: Pick<FimoMedia, 'url' | 'alt' | 'name' | 'mime' | 'width' | 'height'>;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export type ArticleReferences = Record<never, never>;
|
|
56
|
+
|
|
57
|
+
export type ArticlePopulate = Populate<Article>;
|
|
58
|
+
|
|
59
|
+
/*───────────────────────────────────────────────────────────────*/
|
|
60
|
+
/* ──────────── 🔎 Query types ──────────── */
|
|
61
|
+
/*───────────────────────────────────────────────────────────────*/
|
|
62
|
+
|
|
63
|
+
export type ArticleWhere = Where<Article>;
|
|
64
|
+
export type ArticleSort = Sort<Article>;
|
|
65
|
+
export type ArticleFields = Fields<Article>;
|
|
66
|
+
export type ArticleQuery<
|
|
67
|
+
TFields extends ArticleFields | undefined = ArticleFields | undefined,
|
|
68
|
+
TPopulate extends ArticlePopulate | undefined = ArticlePopulate | undefined,
|
|
69
|
+
> = Query<Article, TFields, TPopulate>;
|
|
70
|
+
export type ArticleResult<
|
|
71
|
+
TFields extends ArticleFields | undefined = undefined,
|
|
72
|
+
TPopulate extends ArticlePopulate | undefined = undefined,
|
|
73
|
+
> = ProjectedWithPopulate<PopulatedResult<Article, TPopulate>, TFields, TPopulate>;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
{
|
|
2
|
+
"uid": "HomePage",
|
|
3
|
+
"name": "Home page",
|
|
4
|
+
"isSingleton": true,
|
|
5
|
+
"i18n": { "enabled": false },
|
|
6
|
+
"fields": {
|
|
7
|
+
"title": { "type": "string", "required": true },
|
|
8
|
+
"intro": { "type": "richtext", "required": true },
|
|
9
|
+
"heroImage": { "type": "media", "required": true },
|
|
10
|
+
"heroImageHint": { "type": "string", "required": true },
|
|
11
|
+
"startLabel": { "type": "string", "required": true },
|
|
12
|
+
"tourTitle": { "type": "string", "required": true },
|
|
13
|
+
"tourIntro": { "type": "text", "required": true },
|
|
14
|
+
"steps": {
|
|
15
|
+
"type": "blocks",
|
|
16
|
+
"min": 4,
|
|
17
|
+
"max": 4,
|
|
18
|
+
"schema": {
|
|
19
|
+
"fields": {
|
|
20
|
+
"number": { "type": "string", "required": true },
|
|
21
|
+
"title": { "type": "string", "required": true },
|
|
22
|
+
"body": { "type": "text", "required": true },
|
|
23
|
+
"highlight": { "type": "text" },
|
|
24
|
+
"actionLabel": { "type": "string", "required": true },
|
|
25
|
+
"action": { "type": "string", "required": true }
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
"articlesTitle": { "type": "string", "required": true },
|
|
30
|
+
"articlesIntro": { "type": "text", "required": true },
|
|
31
|
+
"migrationTitle": { "type": "string", "required": true },
|
|
32
|
+
"migrationBody": { "type": "richtext", "required": true },
|
|
33
|
+
"migrationPrompt": { "type": "text", "required": true },
|
|
34
|
+
"buildTitle": { "type": "string", "required": true },
|
|
35
|
+
"buildBody": { "type": "richtext", "required": true },
|
|
36
|
+
"closingTitle": { "type": "string", "required": true },
|
|
37
|
+
"closingBody": { "type": "text", "required": true }
|
|
38
|
+
}
|
|
39
|
+
}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
// AUTO-GENERATED ⚠️ – do not edit by hand
|
|
2
|
+
import {
|
|
3
|
+
type Fields,
|
|
4
|
+
type FimoBoolean,
|
|
5
|
+
type FimoMedia,
|
|
6
|
+
type FimoPolymorphicReference,
|
|
7
|
+
type FimoReference,
|
|
8
|
+
type FimoRichText,
|
|
9
|
+
type FimoRichTextContent,
|
|
10
|
+
type FimoString,
|
|
11
|
+
type Populate,
|
|
12
|
+
type PopulatedResult,
|
|
13
|
+
type ProjectedWithPopulate,
|
|
14
|
+
type Query,
|
|
15
|
+
type Sort,
|
|
16
|
+
type Where,
|
|
17
|
+
type WithReferences,
|
|
18
|
+
} from 'fimo-react';
|
|
19
|
+
|
|
20
|
+
/*───────────────────────────────────────────────────────────────*/
|
|
21
|
+
/* ──────────── 📄 Type definitions ──────────── */
|
|
22
|
+
/*───────────────────────────────────────────────────────────────*/
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* HomePage entity interface
|
|
26
|
+
*/
|
|
27
|
+
export interface HomePageFimoMeta {
|
|
28
|
+
contentType: 'HomePage';
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export interface HomePage extends WithReferences<HomePageReferences> {
|
|
32
|
+
id: string;
|
|
33
|
+
entryId: string;
|
|
34
|
+
documentId: string;
|
|
35
|
+
slug: FimoString;
|
|
36
|
+
locale?: string;
|
|
37
|
+
createdAt: string;
|
|
38
|
+
updatedAt: string;
|
|
39
|
+
__fimo: HomePageFimoMeta;
|
|
40
|
+
title: FimoString;
|
|
41
|
+
intro: FimoRichText;
|
|
42
|
+
heroImage: FimoMedia;
|
|
43
|
+
heroImageHint: FimoString;
|
|
44
|
+
startLabel: FimoString;
|
|
45
|
+
tourTitle: FimoString;
|
|
46
|
+
tourIntro: FimoString;
|
|
47
|
+
steps: {
|
|
48
|
+
_key: string;
|
|
49
|
+
number: FimoString;
|
|
50
|
+
title: FimoString;
|
|
51
|
+
body: FimoString;
|
|
52
|
+
highlight?: FimoString;
|
|
53
|
+
actionLabel: FimoString;
|
|
54
|
+
action: FimoString;
|
|
55
|
+
}[];
|
|
56
|
+
articlesTitle: FimoString;
|
|
57
|
+
articlesIntro: FimoString;
|
|
58
|
+
migrationTitle: FimoString;
|
|
59
|
+
migrationBody: FimoRichText;
|
|
60
|
+
migrationPrompt: FimoString;
|
|
61
|
+
buildTitle: FimoString;
|
|
62
|
+
buildBody: FimoRichText;
|
|
63
|
+
closingTitle: FimoString;
|
|
64
|
+
closingBody: FimoString;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export interface HomePageInput {
|
|
68
|
+
slug?: string;
|
|
69
|
+
title: string;
|
|
70
|
+
intro: FimoRichTextContent;
|
|
71
|
+
heroImage: Pick<FimoMedia, 'url' | 'alt' | 'name' | 'mime' | 'width' | 'height'>;
|
|
72
|
+
heroImageHint: string;
|
|
73
|
+
startLabel: string;
|
|
74
|
+
tourTitle: string;
|
|
75
|
+
tourIntro: string;
|
|
76
|
+
steps: {
|
|
77
|
+
_key?: string;
|
|
78
|
+
number: string;
|
|
79
|
+
title: string;
|
|
80
|
+
body: string;
|
|
81
|
+
highlight?: string;
|
|
82
|
+
actionLabel: string;
|
|
83
|
+
action: string;
|
|
84
|
+
}[];
|
|
85
|
+
articlesTitle: string;
|
|
86
|
+
articlesIntro: string;
|
|
87
|
+
migrationTitle: string;
|
|
88
|
+
migrationBody: FimoRichTextContent;
|
|
89
|
+
migrationPrompt: string;
|
|
90
|
+
buildTitle: string;
|
|
91
|
+
buildBody: FimoRichTextContent;
|
|
92
|
+
closingTitle: string;
|
|
93
|
+
closingBody: string;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
export type HomePageReferences = Record<never, never>;
|
|
97
|
+
|
|
98
|
+
export type HomePagePopulate = Populate<HomePage>;
|
|
99
|
+
|
|
100
|
+
/*───────────────────────────────────────────────────────────────*/
|
|
101
|
+
/* ──────────── 🔎 Query types ──────────── */
|
|
102
|
+
/*───────────────────────────────────────────────────────────────*/
|
|
103
|
+
|
|
104
|
+
export type HomePageWhere = Where<HomePage>;
|
|
105
|
+
export type HomePageSort = Sort<HomePage>;
|
|
106
|
+
export type HomePageFields = Fields<HomePage>;
|
|
107
|
+
export type HomePageQuery<
|
|
108
|
+
TFields extends HomePageFields | undefined = HomePageFields | undefined,
|
|
109
|
+
TPopulate extends HomePagePopulate | undefined = HomePagePopulate | undefined,
|
|
110
|
+
> = Query<HomePage, TFields, TPopulate>;
|
|
111
|
+
export type HomePageResult<
|
|
112
|
+
TFields extends HomePageFields | undefined = undefined,
|
|
113
|
+
TPopulate extends HomePagePopulate | undefined = undefined,
|
|
114
|
+
> = ProjectedWithPopulate<PopulatedResult<HomePage, TPopulate>, TFields, TPopulate>;
|