fimo 2.8.0-staging.9 → 2.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/skills/fimo/SKILL.md +0 -1
- package/assets/skills/fimo-cli/SKILL.md +6 -7
- package/assets/skills/fimo-cli/references/assets.md +2 -0
- package/assets/skills/fimo-cli/references/deploy.md +1 -1
- package/assets/skills/fimo-cli/references/init.md +1 -2
- package/assets/skills/fimo-cli/references/integrations/firecrawl.md +1 -41
- package/assets/skills/fimo-cli/references/integrations.md +2 -38
- package/assets/skills/fimo-cli/references/knowledge.md +1 -1
- package/assets/skills/fimo-cli/references/mcp.md +5 -6
- package/assets/skills/fimo-cli/references/preview.md +1 -1
- package/assets/skills/fimo-cli/references/project-vars-and-secrets.md +0 -16
- package/assets/skills/fimo-cli/references/webhooks.md +0 -2
- package/assets/skills/fimo-code/SKILL.md +1 -0
- package/assets/skills/fimo-code/references/assets.md +5 -5
- package/assets/skills/fimo-code/references/design.md +1 -1
- package/assets/skills/fimo-code/references/ui.md +1 -1
- package/assets/skills/fimo-studio/SKILL.md +6 -9
- package/assets/skills/fimo-studio/references/ai-chat.md +9 -4
- package/assets/skills/fimo-studio/references/billing-and-credits.md +2 -4
- package/assets/skills/fimo-studio/references/command-palette.md +0 -2
- package/assets/skills/fimo-studio/references/connections.md +2 -2
- package/assets/skills/fimo-studio/references/project-creation.md +5 -3
- package/assets/skills/fimo-studio/references/webhooks.md +3 -3
- package/dist/cli/bundle.json +2 -2
- package/dist/cli/index.js +153 -162
- package/dist/runtime/paths/get-fimo-paths.js +2 -24
- package/dist/runtime/project-layout.d.ts +0 -1
- package/dist/runtime/project-layout.js +1 -5
- package/dist/runtime/shared/local-runtime-env.js +2 -14
- package/package.json +10 -10
- package/release.json +2 -2
- package/templates/astro/.fimo/config.json +0 -14
- package/templates/astro/AGENTS.md +2 -1
- package/templates/astro/_gitignore +3 -0
- package/templates/astro/package.json +3 -3
- package/templates/astro/src/layouts/Base.astro +0 -48
- package/templates/nextjs/AGENTS.md +1 -1
- package/templates/nextjs/_gitignore +3 -0
- package/templates/nextjs/package.json +5 -5
- package/templates/react-router/AGENTS.md +1 -1
- package/templates/react-router/_gitignore +3 -0
- package/templates/react-router/package.json +5 -5
- package/templates/sveltekit/AGENTS.md +1 -0
- package/templates/sveltekit/_gitignore +3 -0
- package/templates/sveltekit/package.json +3 -3
- package/templates/vite/AGENTS.md +2 -0
- package/templates/vite/_gitignore +3 -0
- package/templates/vite/package.json +5 -5
- package/assets/agent-templates/_default/GOAL.md +0 -21
- package/assets/agent-templates/_default/capabilities.yaml +0 -11
- package/assets/agent-templates/_default/config.yaml +0 -13
- package/assets/agent-templates/broken-link-sweeper/GOAL.md +0 -51
- package/assets/agent-templates/broken-link-sweeper/capabilities.yaml +0 -1
- package/assets/agent-templates/broken-link-sweeper/config.yaml +0 -13
- package/assets/agent-templates/content-translator/GOAL.md +0 -33
- package/assets/agent-templates/content-translator/capabilities.yaml +0 -5
- package/assets/agent-templates/content-translator/config.yaml +0 -12
- package/assets/agent-templates/content-translator/scripts/translate-entries.ts +0 -69
- package/assets/agent-templates/post-deploy-check/GOAL.md +0 -23
- package/assets/agent-templates/post-deploy-check/capabilities.yaml +0 -1
- package/assets/agent-templates/post-deploy-check/config.yaml +0 -10
- package/assets/agent-templates/post-deploy-check/scripts/check-logs.ts +0 -39
- package/assets/agent-templates/post-deploy-check/scripts/probe-routes.ts +0 -53
- package/assets/agent-templates/seo-audit/GOAL.md +0 -43
- package/assets/agent-templates/seo-audit/capabilities.yaml +0 -3
- package/assets/agent-templates/seo-audit/config.yaml +0 -14
- package/assets/agent-templates/seo-audit/references/report-template.md +0 -28
- package/assets/agent-templates/seo-audit/references/scoring-methodology.md +0 -30
- package/assets/agent-templates/seo-audit/scripts/analyze-html.ts +0 -82
- package/assets/agent-templates/seo-audit/scripts/fetch-page.ts +0 -39
- package/assets/agent-templates/seo-audit/scripts/list-routes.ts +0 -46
- package/assets/agent-templates/seo-audit/scripts/report.ts +0 -82
- package/assets/agent-templates/seo-audit/scripts/score.ts +0 -131
- package/assets/skills/fimo-cli/references/agents.md +0 -298
- package/assets/skills/fimo-studio/references/agents.md +0 -33
- package/assets/skills/fimo-studio/references/drawing-and-wireframing.md +0 -61
- package/templates/astro/src/components/ProjectOverview.astro +0 -45
- package/templates/astro/src/pages/[locale]/projects/[slug].astro +0 -38
- package/templates/astro/src/pages/[locale]/projects/index.astro +0 -19
- package/templates/astro/src/pages/projects/[slug].astro +0 -31
- package/templates/astro/src/pages/projects/index.astro +0 -13
- package/templates/astro/src/schemas/Project.json +0 -9
- package/templates/astro/src/schemas/Project.ts +0 -29
- package/templates/astro/src/schemas/Project.types.ts +0 -70
- package/templates/astro/src/schemas/SiteSettings.json +0 -10
- package/templates/astro/src/schemas/SiteSettings.ts +0 -31
- package/templates/astro/src/schemas/SiteSettings.types.ts +0 -69
- package/templates/react-router/src/pages/Privacy.tsx +0 -79
- package/templates/react-router/src/pages/Terms.tsx +0 -48
- package/templates/react-router/src/pages/legal/LegalPage.tsx +0 -42
|
@@ -1,70 +0,0 @@
|
|
|
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/astro';
|
|
19
|
-
|
|
20
|
-
/*───────────────────────────────────────────────────────────────*/
|
|
21
|
-
/* ──────────── 📄 Type definitions ──────────── */
|
|
22
|
-
/*───────────────────────────────────────────────────────────────*/
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* Project entity interface
|
|
26
|
-
*/
|
|
27
|
-
export interface ProjectFimoMeta {
|
|
28
|
-
contentType: 'Project';
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
export interface Project extends WithReferences<ProjectReferences> {
|
|
32
|
-
id: string;
|
|
33
|
-
entryId: string;
|
|
34
|
-
documentId: string;
|
|
35
|
-
slug: FimoString;
|
|
36
|
-
locale: string;
|
|
37
|
-
createdAt: string;
|
|
38
|
-
updatedAt: string;
|
|
39
|
-
__fimo: ProjectFimoMeta;
|
|
40
|
-
title: FimoString;
|
|
41
|
-
summary: FimoString;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
export interface ProjectInput {
|
|
45
|
-
slug?: string;
|
|
46
|
-
locale?: string;
|
|
47
|
-
documentId?: string;
|
|
48
|
-
title: string;
|
|
49
|
-
summary: string;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
export type ProjectReferences = Record<never, never>;
|
|
53
|
-
|
|
54
|
-
export type ProjectPopulate = Populate<Project>;
|
|
55
|
-
|
|
56
|
-
/*───────────────────────────────────────────────────────────────*/
|
|
57
|
-
/* ──────────── 🔎 Query types ──────────── */
|
|
58
|
-
/*───────────────────────────────────────────────────────────────*/
|
|
59
|
-
|
|
60
|
-
export type ProjectWhere = Where<Project>;
|
|
61
|
-
export type ProjectSort = Sort<Project>;
|
|
62
|
-
export type ProjectFields = Fields<Project>;
|
|
63
|
-
export type ProjectQuery<
|
|
64
|
-
TFields extends ProjectFields | undefined = ProjectFields | undefined,
|
|
65
|
-
TPopulate extends ProjectPopulate | undefined = ProjectPopulate | undefined,
|
|
66
|
-
> = Query<Project, TFields, TPopulate>;
|
|
67
|
-
export type ProjectResult<
|
|
68
|
-
TFields extends ProjectFields | undefined = undefined,
|
|
69
|
-
TPopulate extends ProjectPopulate | undefined = undefined,
|
|
70
|
-
> = ProjectedWithPopulate<PopulatedResult<Project, TPopulate>, TFields, TPopulate>;
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
// AUTO-GENERATED by `fimo` from src/schemas/SiteSettings.json - DO NOT EDIT.
|
|
2
|
-
// Runtime implementation lives in the project-local fimo/astro package export.
|
|
3
|
-
import { createSingletonClient } from 'fimo/astro';
|
|
4
|
-
import type { ContentSchema, SingletonContentClient } from 'fimo/astro';
|
|
5
|
-
|
|
6
|
-
import schema from './SiteSettings.json';
|
|
7
|
-
import type { SiteSettings, SiteSettingsInput } from './SiteSettings.types';
|
|
8
|
-
|
|
9
|
-
export type {
|
|
10
|
-
SiteSettings,
|
|
11
|
-
SiteSettingsFields,
|
|
12
|
-
SiteSettingsFimoMeta,
|
|
13
|
-
SiteSettingsInput,
|
|
14
|
-
SiteSettingsPopulate,
|
|
15
|
-
SiteSettingsQuery,
|
|
16
|
-
SiteSettingsReferences,
|
|
17
|
-
SiteSettingsResult,
|
|
18
|
-
SiteSettingsSort,
|
|
19
|
-
SiteSettingsWhere,
|
|
20
|
-
} from './SiteSettings.types';
|
|
21
|
-
|
|
22
|
-
const client: SingletonContentClient<SiteSettings, SiteSettingsInput> = createSingletonClient<
|
|
23
|
-
SiteSettings,
|
|
24
|
-
SiteSettingsInput
|
|
25
|
-
>({
|
|
26
|
-
schema: schema as unknown as ContentSchema,
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
export const { get, update, wrapWithSource, meta } = client;
|
|
30
|
-
|
|
31
|
-
export default client;
|
|
@@ -1,69 +0,0 @@
|
|
|
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/astro';
|
|
19
|
-
|
|
20
|
-
/*───────────────────────────────────────────────────────────────*/
|
|
21
|
-
/* ──────────── 📄 Type definitions ──────────── */
|
|
22
|
-
/*───────────────────────────────────────────────────────────────*/
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* SiteSettings entity interface
|
|
26
|
-
*/
|
|
27
|
-
export interface SiteSettingsFimoMeta {
|
|
28
|
-
contentType: 'SiteSettings';
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
export interface SiteSettings extends WithReferences<SiteSettingsReferences> {
|
|
32
|
-
id: string;
|
|
33
|
-
entryId: string;
|
|
34
|
-
documentId: string;
|
|
35
|
-
slug: FimoString;
|
|
36
|
-
locale: string;
|
|
37
|
-
createdAt: string;
|
|
38
|
-
updatedAt: string;
|
|
39
|
-
__fimo: SiteSettingsFimoMeta;
|
|
40
|
-
studioName: FimoString;
|
|
41
|
-
intro: FimoString;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
export interface SiteSettingsInput {
|
|
45
|
-
slug?: string;
|
|
46
|
-
locale?: string;
|
|
47
|
-
studioName: string;
|
|
48
|
-
intro: string;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
export type SiteSettingsReferences = Record<never, never>;
|
|
52
|
-
|
|
53
|
-
export type SiteSettingsPopulate = Populate<SiteSettings>;
|
|
54
|
-
|
|
55
|
-
/*───────────────────────────────────────────────────────────────*/
|
|
56
|
-
/* ──────────── 🔎 Query types ──────────── */
|
|
57
|
-
/*───────────────────────────────────────────────────────────────*/
|
|
58
|
-
|
|
59
|
-
export type SiteSettingsWhere = Where<SiteSettings>;
|
|
60
|
-
export type SiteSettingsSort = Sort<SiteSettings>;
|
|
61
|
-
export type SiteSettingsFields = Fields<SiteSettings>;
|
|
62
|
-
export type SiteSettingsQuery<
|
|
63
|
-
TFields extends SiteSettingsFields | undefined = SiteSettingsFields | undefined,
|
|
64
|
-
TPopulate extends SiteSettingsPopulate | undefined = SiteSettingsPopulate | undefined,
|
|
65
|
-
> = Query<SiteSettings, TFields, TPopulate>;
|
|
66
|
-
export type SiteSettingsResult<
|
|
67
|
-
TFields extends SiteSettingsFields | undefined = undefined,
|
|
68
|
-
TPopulate extends SiteSettingsPopulate | undefined = undefined,
|
|
69
|
-
> = ProjectedWithPopulate<PopulatedResult<SiteSettings, TPopulate>, TFields, TPopulate>;
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import { LegalPage } from './legal/LegalPage';
|
|
2
|
-
|
|
3
|
-
const privacyHtml = `
|
|
4
|
-
<p><strong>Last updated:</strong> January 1, 2026</p>
|
|
5
|
-
<h2>Overview</h2>
|
|
6
|
-
<p>
|
|
7
|
-
This Privacy Policy explains how this website collects, uses, and discloses information when you use this website.
|
|
8
|
-
</p>
|
|
9
|
-
<h2>Data We Collect</h2>
|
|
10
|
-
<p>We may collect:</p>
|
|
11
|
-
<ul>
|
|
12
|
-
<li>Usage information (such as visited pages, timestamps, and navigation flow).</li>
|
|
13
|
-
<li>Technical information (such as browser type, operating system, device type, and approximate region derived from IP metadata).</li>
|
|
14
|
-
<li>Referral information (such as referrer URL).</li>
|
|
15
|
-
<li>Identifiers used for analytics (such as visitor and session identifiers stored in browser storage).</li>
|
|
16
|
-
</ul>
|
|
17
|
-
<h2>How We Use Data</h2>
|
|
18
|
-
<p>
|
|
19
|
-
We use data to operate this website, measure traffic and performance, detect abuse, troubleshoot errors, and improve
|
|
20
|
-
content and product decisions.
|
|
21
|
-
</p>
|
|
22
|
-
<h2>Legal Basis</h2>
|
|
23
|
-
<p>Depending on your location, processing may rely on:</p>
|
|
24
|
-
<ul>
|
|
25
|
-
<li>Your consent (for example, where analytics consent is required).</li>
|
|
26
|
-
<li>Legitimate interests (for example, service reliability, security, and product improvement).</li>
|
|
27
|
-
<li>Compliance with legal obligations when applicable.</li>
|
|
28
|
-
</ul>
|
|
29
|
-
<h2>Cookies and Similar Technologies</h2>
|
|
30
|
-
<p>
|
|
31
|
-
This website may use cookies or browser storage for session continuity and analytics measurement. Where required by
|
|
32
|
-
law, non-essential analytics technologies are used only after consent.
|
|
33
|
-
</p>
|
|
34
|
-
<h2>Sharing and Processors</h2>
|
|
35
|
-
<p>
|
|
36
|
-
We may use service providers to process analytics and infrastructure data on our behalf. For this website, analytics
|
|
37
|
-
events may be processed by Fimo infrastructure providers as a data processor for the site operator.
|
|
38
|
-
</p>
|
|
39
|
-
<h2>International Transfers</h2>
|
|
40
|
-
<p>
|
|
41
|
-
Data may be processed in countries other than your own. When required, we apply appropriate safeguards for
|
|
42
|
-
cross-border transfers.
|
|
43
|
-
</p>
|
|
44
|
-
<h2>Retention</h2>
|
|
45
|
-
<p>
|
|
46
|
-
We retain analytics data only for as long as reasonably necessary for operational, reporting, security, and
|
|
47
|
-
compliance needs, then delete or de-identify it.
|
|
48
|
-
</p>
|
|
49
|
-
<h2>Your Rights</h2>
|
|
50
|
-
<p>
|
|
51
|
-
Depending on your jurisdiction, you may have rights to access, correct, delete, restrict, object to certain
|
|
52
|
-
processing, or receive a copy of your personal data.
|
|
53
|
-
</p>
|
|
54
|
-
<h2>Children's Privacy</h2>
|
|
55
|
-
<p>
|
|
56
|
-
This website is not intended for children under the age required by applicable law, and we do not knowingly collect
|
|
57
|
-
personal data from children where prohibited.
|
|
58
|
-
</p>
|
|
59
|
-
<h2>Security</h2>
|
|
60
|
-
<p>
|
|
61
|
-
We apply reasonable technical and organizational safeguards to protect data, but no method of transmission or
|
|
62
|
-
storage is completely secure.
|
|
63
|
-
</p>
|
|
64
|
-
<h2>Policy Changes</h2>
|
|
65
|
-
<p>
|
|
66
|
-
We may update this policy from time to time. Material changes will be reflected by updating the "Last updated" date
|
|
67
|
-
on this page.
|
|
68
|
-
</p>
|
|
69
|
-
<h2>Contact</h2>
|
|
70
|
-
<p>
|
|
71
|
-
Privacy requests can be sent to <a href="mailto:privacy@fimo.ai">privacy@fimo.ai</a>.
|
|
72
|
-
</p>
|
|
73
|
-
`;
|
|
74
|
-
|
|
75
|
-
const Privacy = () => {
|
|
76
|
-
return <LegalPage title="Privacy Policy" lastUpdated="January 1, 2026" html={privacyHtml} />;
|
|
77
|
-
};
|
|
78
|
-
|
|
79
|
-
export default Privacy;
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import { LegalPage } from './legal/LegalPage';
|
|
2
|
-
|
|
3
|
-
const termsHtml = `
|
|
4
|
-
<p><strong>Last updated:</strong> January 1, 2026</p>
|
|
5
|
-
<h2>Acceptance</h2>
|
|
6
|
-
<p>By using this website, you agree to these Terms of Service.</p>
|
|
7
|
-
<h2>Operator</h2>
|
|
8
|
-
<p>
|
|
9
|
-
This website is operated by the site owner and may use third-party infrastructure and analytics processors to
|
|
10
|
-
provide the service.
|
|
11
|
-
</p>
|
|
12
|
-
<h2>Permitted Use</h2>
|
|
13
|
-
<p>You agree not to misuse the site, interfere with its operation, or attempt unauthorized access.</p>
|
|
14
|
-
<h2>Analytics and Privacy</h2>
|
|
15
|
-
<p>
|
|
16
|
-
Use of this website may involve collection of usage and technical analytics data as described in the Privacy Policy.
|
|
17
|
-
Where required, analytics is subject to user consent choices.
|
|
18
|
-
</p>
|
|
19
|
-
<h2>Intellectual Property</h2>
|
|
20
|
-
<p>
|
|
21
|
-
Unless otherwise stated, site content and branding are protected by applicable intellectual property laws and may
|
|
22
|
-
not be reused without permission.
|
|
23
|
-
</p>
|
|
24
|
-
<h2>Changes</h2>
|
|
25
|
-
<p>We may update these terms from time to time. Updated terms are effective when posted on this page.</p>
|
|
26
|
-
<h2>Disclaimer</h2>
|
|
27
|
-
<p>The website is provided on an "as is" and "as available" basis to the extent permitted by law.</p>
|
|
28
|
-
<h2>Limitation of Liability</h2>
|
|
29
|
-
<p>
|
|
30
|
-
To the maximum extent permitted by law, the site operator is not liable for indirect, incidental, special,
|
|
31
|
-
consequential, or punitive damages arising from use of the website.
|
|
32
|
-
</p>
|
|
33
|
-
<h2>Governing Law</h2>
|
|
34
|
-
<p>
|
|
35
|
-
These terms are governed by applicable law in the operator's jurisdiction, unless mandatory local consumer law
|
|
36
|
-
provides otherwise.
|
|
37
|
-
</p>
|
|
38
|
-
<h2>Contact</h2>
|
|
39
|
-
<p>
|
|
40
|
-
Legal requests can be sent to <a href="mailto:privacy@fimo.ai">privacy@fimo.ai</a>.
|
|
41
|
-
</p>
|
|
42
|
-
`;
|
|
43
|
-
|
|
44
|
-
const Terms = () => {
|
|
45
|
-
return <LegalPage title="Terms of Service" lastUpdated="January 1, 2026" html={termsHtml} />;
|
|
46
|
-
};
|
|
47
|
-
|
|
48
|
-
export default Terms;
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { FimoLink } from 'fimo-react-router';
|
|
2
|
-
|
|
3
|
-
interface LegalPageProps {
|
|
4
|
-
title: string;
|
|
5
|
-
lastUpdated: string;
|
|
6
|
-
html: string;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
export function LegalPage({ title, lastUpdated, html }: LegalPageProps) {
|
|
10
|
-
return (
|
|
11
|
-
<div className="bg-background text-foreground min-h-screen">
|
|
12
|
-
<div className="pointer-events-none absolute inset-0 bg-[radial-gradient(75%_45%_at_50%_0%,rgba(56,189,248,0.15),transparent_70%)]" />
|
|
13
|
-
|
|
14
|
-
<main className="relative mx-auto w-full max-w-4xl px-6 py-12 md:py-16">
|
|
15
|
-
<header className="border-border mb-10 border-b pb-6">
|
|
16
|
-
<p className="text-muted-foreground text-xs tracking-[0.2em] uppercase">Legal</p>
|
|
17
|
-
<h1 className="mt-3 text-3xl font-semibold md:text-4xl">{title}</h1>
|
|
18
|
-
<p className="text-muted-foreground mt-3 text-sm">Last updated: {lastUpdated}</p>
|
|
19
|
-
</header>
|
|
20
|
-
|
|
21
|
-
<article
|
|
22
|
-
className="prose prose-neutral dark:prose-invert prose-headings:scroll-mt-20 prose-a:text-foreground max-w-none"
|
|
23
|
-
dangerouslySetInnerHTML={{ __html: html }}
|
|
24
|
-
/>
|
|
25
|
-
</main>
|
|
26
|
-
|
|
27
|
-
<footer className="border-border relative border-t">
|
|
28
|
-
<div className="text-muted-foreground mx-auto flex w-full max-w-4xl items-center justify-between px-6 py-4 text-sm">
|
|
29
|
-
<span>Legal documents</span>
|
|
30
|
-
<nav className="flex items-center gap-4">
|
|
31
|
-
<FimoLink to="/privacy" className="hover:text-foreground">
|
|
32
|
-
Privacy
|
|
33
|
-
</FimoLink>
|
|
34
|
-
<FimoLink to="/terms" className="hover:text-foreground">
|
|
35
|
-
Terms
|
|
36
|
-
</FimoLink>
|
|
37
|
-
</nav>
|
|
38
|
-
</div>
|
|
39
|
-
</footer>
|
|
40
|
-
</div>
|
|
41
|
-
);
|
|
42
|
-
}
|