@rizom/site-rizom-ai 0.2.0-alpha.142

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.
@@ -0,0 +1,21 @@
1
+ /** @jsxImportSource preact */
2
+ import type { JSX } from "preact";
3
+ import type { ProductsContent } from "./schema";
4
+ import { ProductCard } from "./ProductCard";
5
+
6
+ export const ProductsLayout = ({ cards }: ProductsContent): JSX.Element => (
7
+ <>
8
+ {cards.map((card) => (
9
+ <ProductCard
10
+ key={card.variant}
11
+ variant={card.variant}
12
+ label={card.label}
13
+ badge={card.badge}
14
+ headline={card.headline}
15
+ description={card.description}
16
+ tags={card.tags}
17
+ {...(card.tagline ? { tagline: card.tagline } : {})}
18
+ />
19
+ ))}
20
+ </>
21
+ );
@@ -0,0 +1,15 @@
1
+ export type ProductVariant = "rover" | "relay" | "ranger";
2
+
3
+ export interface ProductCardContent {
4
+ variant: ProductVariant;
5
+ label: string;
6
+ badge: string;
7
+ headline: string;
8
+ description: string;
9
+ tagline?: string[];
10
+ tags: string[];
11
+ }
12
+
13
+ export interface ProductsContent {
14
+ cards: ProductCardContent[];
15
+ }
@@ -0,0 +1,53 @@
1
+ /** @jsxImportSource preact */
2
+ import type { JSX } from "preact";
3
+ import type { QuickstartContent } from "./schema";
4
+ import { Badge, Section } from "@rizom/site-rizom";
5
+
6
+ export const QuickstartLayout = ({
7
+ badge,
8
+ headline,
9
+ description,
10
+ installCommand,
11
+ createCommand,
12
+ runCommand,
13
+ okLines,
14
+ }: QuickstartContent): JSX.Element => {
15
+ return (
16
+ <Section id="quickstart" className="reveal py-section">
17
+ <div className="flex flex-col md:flex-row gap-8 md:gap-20 items-start">
18
+ <div className="w-full md:w-[420px] shrink-0">
19
+ <Badge>{badge}</Badge>
20
+ <h2 className="font-display font-normal text-[28px] md:text-[36px] tracking-[-0.5px] leading-[1.2] mt-4">
21
+ {headline}
22
+ </h2>
23
+ <p className="text-body-xs md:text-body-sm text-theme-muted mt-4">
24
+ {description}
25
+ </p>
26
+ </div>
27
+ <div className="flex-1 w-full bg-[var(--color-surface-terminal)] border border-[var(--color-surface-terminal-border)] rounded-[10px] md:rounded-xl p-5 md:p-8 font-mono text-label-sm md:text-body-xs overflow-x-auto">
28
+ <div className="text-theme-light text-label-sm mb-1">Install</div>
29
+ <div className="text-accent mb-4 break-all md:break-normal">
30
+ {installCommand}
31
+ </div>
32
+ <div className="text-theme-light text-label-sm mb-1">Create</div>
33
+ <div className="text-accent mb-4 break-all md:break-normal">
34
+ {createCommand}
35
+ </div>
36
+ <div className="text-theme-light text-label-sm mb-1">Run</div>
37
+ <div className="text-accent mb-4 break-all md:break-normal">
38
+ {runCommand}
39
+ </div>
40
+ <div className="h-px bg-white/[0.06] my-4" />
41
+ {okLines.map((line) => (
42
+ <div
43
+ key={line}
44
+ className="text-[var(--color-success)] text-label-sm md:text-body-xs"
45
+ >
46
+ {line}
47
+ </div>
48
+ ))}
49
+ </div>
50
+ </div>
51
+ </Section>
52
+ );
53
+ };
@@ -0,0 +1,9 @@
1
+ export interface QuickstartContent {
2
+ badge: string;
3
+ headline: string;
4
+ description: string;
5
+ installCommand: string;
6
+ createCommand: string;
7
+ runCommand: string;
8
+ okLines: string[];
9
+ }
@@ -0,0 +1,190 @@
1
+ import type { SiteContentDefinition } from "@rizom/site";
2
+ import { HeroLayout } from "./sections/hero/layout";
3
+ import { ProblemLayout } from "./sections/problem/layout";
4
+ import { AnswerLayout } from "./sections/answer/layout";
5
+ import { ProductsLayout } from "./sections/products/layout";
6
+ import { OwnershipLayout } from "./sections/ownership/layout";
7
+ import { QuickstartLayout } from "./sections/quickstart/layout";
8
+ import { MissionLayout } from "./sections/mission/layout";
9
+ import { EcosystemLayout } from "./sections/ecosystem";
10
+
11
+ const aiSiteContent: SiteContentDefinition = {
12
+ namespace: "landing-page",
13
+ sections: {
14
+ hero: {
15
+ description: "Rizom site hero: full-viewport intro with CTA row",
16
+ title: "Hero Section",
17
+ layout: HeroLayout,
18
+ fields: {
19
+ headline: { label: "Headline", type: "string" },
20
+ subhead: { label: "Subhead", type: "string" },
21
+ primaryCtaLabel: { label: "Primary CTA Label", type: "string" },
22
+ primaryCtaHref: { label: "Primary CTA Href", type: "string" },
23
+ secondaryCtaLabel: { label: "Secondary CTA Label", type: "string" },
24
+ secondaryCtaHref: { label: "Secondary CTA Href", type: "string" },
25
+ },
26
+ },
27
+ problem: {
28
+ description: "Rizom problem section: 3-up grid of problem statements",
29
+ title: "Problem Section",
30
+ layout: ProblemLayout,
31
+ fields: {
32
+ cards: {
33
+ label: "Cards",
34
+ type: "array",
35
+ length: 3,
36
+ items: {
37
+ label: "Card",
38
+ type: "object",
39
+ fields: {
40
+ num: { label: "Num", type: "string" },
41
+ title: { label: "Title", type: "string" },
42
+ body: { label: "Body", type: "string" },
43
+ },
44
+ },
45
+ },
46
+ },
47
+ },
48
+ answer: {
49
+ description: "Rizom answer section: centered thesis statement",
50
+ title: "Answer Section",
51
+ layout: AnswerLayout,
52
+ fields: {
53
+ badge: { label: "Badge", type: "string" },
54
+ headline: { label: "Headline", type: "string" },
55
+ subhead: { label: "Subhead", type: "string" },
56
+ scalesHeadline: { label: "Scales Headline", type: "string" },
57
+ scalesSubhead: { label: "Scales Subhead", type: "string" },
58
+ },
59
+ },
60
+ products: {
61
+ description: "Rizom products section: array of product cards",
62
+ title: "Products Section",
63
+ layout: ProductsLayout,
64
+ fields: {
65
+ cards: {
66
+ label: "Cards",
67
+ type: "array",
68
+ minItems: 1,
69
+ items: {
70
+ label: "Card",
71
+ type: "object",
72
+ fields: {
73
+ variant: {
74
+ label: "Variant",
75
+ type: "enum",
76
+ options: ["rover", "relay", "ranger"],
77
+ },
78
+ label: { label: "Label", type: "string" },
79
+ badge: { label: "Badge", type: "string" },
80
+ headline: { label: "Headline", type: "string" },
81
+ description: { label: "Description", type: "string" },
82
+ tagline: {
83
+ label: "Tagline",
84
+ type: "array",
85
+ optional: true,
86
+ minItems: 1,
87
+ items: { label: "Tagline", type: "string" },
88
+ },
89
+ tags: {
90
+ label: "Tags",
91
+ type: "array",
92
+ minItems: 1,
93
+ items: { label: "Tag", type: "string" },
94
+ },
95
+ },
96
+ },
97
+ },
98
+ },
99
+ },
100
+ ownership: {
101
+ description: "Rizom ownership section: feature list with icon markers",
102
+ title: "Ownership Section",
103
+ layout: OwnershipLayout,
104
+ fields: {
105
+ badge: { label: "Badge", type: "string" },
106
+ headline: { label: "Headline", type: "string" },
107
+ features: {
108
+ label: "Features",
109
+ type: "array",
110
+ minItems: 1,
111
+ items: {
112
+ label: "Feature",
113
+ type: "object",
114
+ fields: {
115
+ icon: { label: "Icon", type: "string" },
116
+ title: { label: "Title", type: "string" },
117
+ body: { label: "Body", type: "string" },
118
+ },
119
+ },
120
+ },
121
+ },
122
+ },
123
+ quickstart: {
124
+ description:
125
+ "Quickstart section: install/create/run commands and success lines",
126
+ title: "Quickstart Section",
127
+ layout: QuickstartLayout,
128
+ fields: {
129
+ badge: { label: "Badge", type: "string" },
130
+ headline: { label: "Headline", type: "string" },
131
+ description: { label: "Description", type: "string" },
132
+ installCommand: { label: "Install Command", type: "string" },
133
+ createCommand: { label: "Create Command", type: "string" },
134
+ runCommand: { label: "Run Command", type: "string" },
135
+ okLines: {
136
+ label: "OK Lines",
137
+ type: "array",
138
+ minItems: 1,
139
+ items: { label: "OK Line", type: "string" },
140
+ },
141
+ },
142
+ },
143
+ mission: {
144
+ description: "Mission section: closing statement with CTA row",
145
+ title: "Mission Section",
146
+ layout: MissionLayout,
147
+ fields: {
148
+ preamble: { label: "Preamble", type: "string" },
149
+ headline: { label: "Headline", type: "string" },
150
+ post: { label: "Post", type: "string" },
151
+ primaryCtaLabel: { label: "Primary CTA Label", type: "string" },
152
+ primaryCtaHref: { label: "Primary CTA Href", type: "string" },
153
+ secondaryCtaLabel: { label: "Secondary CTA Label", type: "string" },
154
+ secondaryCtaHref: { label: "Secondary CTA Href", type: "string" },
155
+ },
156
+ },
157
+ ecosystem: {
158
+ description:
159
+ "Rizom ecosystem section: 3-card grid of sibling rizom sites",
160
+ title: "Ecosystem Section",
161
+ layout: EcosystemLayout,
162
+ fields: {
163
+ eyebrow: { label: "Eyebrow", type: "string" },
164
+ headline: { label: "Headline", type: "string" },
165
+ cards: {
166
+ label: "Cards",
167
+ type: "array",
168
+ minItems: 1,
169
+ items: {
170
+ label: "Card",
171
+ type: "object",
172
+ fields: {
173
+ suffix: {
174
+ label: "Suffix",
175
+ type: "enum",
176
+ options: ["ai", "foundation", "work"],
177
+ },
178
+ title: { label: "Title", type: "string" },
179
+ body: { label: "Body", type: "string" },
180
+ linkLabel: { label: "Link Label", type: "string" },
181
+ linkHref: { label: "Link Href", type: "string" },
182
+ },
183
+ },
184
+ },
185
+ },
186
+ },
187
+ },
188
+ };
189
+
190
+ export default aiSiteContent;
package/src/site.ts ADDED
@@ -0,0 +1,15 @@
1
+ import type { SiteDefinition } from "@rizom/site";
2
+ import { createRizomSite } from "@rizom/site-rizom";
3
+ import { AiLayout } from "./layout";
4
+ import { aiRoutes } from "./routes";
5
+ import aiSiteContent from "./site-content";
6
+
7
+ export const rizomAiSite: SiteDefinition = createRizomSite({
8
+ packageName: "@rizom/site-rizom-ai",
9
+ themeProfile: "product",
10
+ layout: AiLayout,
11
+ routes: aiRoutes,
12
+ content: aiSiteContent,
13
+ });
14
+
15
+ export default rizomAiSite;