@rizom/site-rizom-ai 0.2.0-alpha.238 → 0.2.0-alpha.243

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.
Files changed (41) hide show
  1. package/dist/index.d.ts +454 -0
  2. package/dist/index.js +36302 -0
  3. package/dist/index.js.map +324 -0
  4. package/package.json +17 -7
  5. package/src/brain-screens.tsx +144 -144
  6. package/src/brain.tsx +3 -3
  7. package/src/foundation.tsx +3 -3
  8. package/src/growth-diagram.tsx +125 -53
  9. package/src/home.tsx +3 -3
  10. package/src/index.ts +1 -0
  11. package/src/layout.tsx +7 -7
  12. package/src/rizom/content.ts +9 -0
  13. package/src/rizom/contracts.ts +177 -0
  14. package/src/rizom/create-site.ts +120 -0
  15. package/src/rizom/index.ts +62 -0
  16. package/src/rizom/runtime/base-site.ts +13 -0
  17. package/src/rizom/runtime/boot/boot.boot.d.ts +2 -0
  18. package/src/rizom/runtime/boot/boot.boot.js +83 -0
  19. package/src/rizom/runtime/default-layout.tsx +11 -0
  20. package/src/rizom/runtime/index.ts +8 -0
  21. package/src/rizom/runtime/plugin.ts +91 -0
  22. package/src/rizom/ui/Badge.tsx +15 -0
  23. package/src/rizom/ui/Button.tsx +57 -0
  24. package/src/rizom/ui/Divider.tsx +13 -0
  25. package/src/rizom/ui/Ecosystem.tsx +108 -0
  26. package/src/rizom/ui/Footer.tsx +74 -0
  27. package/src/rizom/ui/Header.tsx +43 -0
  28. package/src/rizom/ui/Section.tsx +23 -0
  29. package/src/rizom/ui/SideNav.tsx +23 -0
  30. package/src/rizom/ui/Wordmark.tsx +47 -0
  31. package/src/rizom/ui/cn.ts +35 -0
  32. package/src/rizom/ui/ecosystem-content.ts +49 -0
  33. package/src/rizom/ui/external-link.ts +8 -0
  34. package/src/rizom/ui/frame.tsx +20 -0
  35. package/src/rizom/ui/highlighted-text.tsx +46 -0
  36. package/src/rizom/ui/index.ts +29 -0
  37. package/src/rizom/ui/site-info-links.ts +24 -0
  38. package/src/rizom/ui/types.ts +6 -0
  39. package/src/shared.tsx +4 -4
  40. package/src/site.ts +1 -1
  41. package/src/work.tsx +6 -6
@@ -0,0 +1,454 @@
1
+ import { JSX, ReactNode } from "react";
2
+ import { z } from "zod/v4";
3
+ //#region ../../packages/site/src/index.d.ts
4
+ /** Permission levels for editable site content templates. */
5
+ type UserPermissionLevel = "admin" | "trusted" | "public";
6
+ type JsonPrimitive = null | boolean | number | string;
7
+ type JsonValue = JsonPrimitive | JsonValue[] | JsonObject;
8
+ /** A JSON document with an object at its root. */
9
+ interface JsonObject {
10
+ [key: string]: JsonValue;
11
+ }
12
+ /** Runtime script declaration attached to a content section/template. */
13
+ interface RuntimeScript {
14
+ src: string;
15
+ defer?: boolean;
16
+ module?: boolean;
17
+ }
18
+ /** Bivariant component type for author-supplied layout components. */
19
+ type ComponentType<P = unknown> = {
20
+ bivarianceHack(props: P): JSX.Element;
21
+ }["bivarianceHack"];
22
+ /** Navigation slot types exposed to authored routes and generated entity routes. */
23
+ type NavigationSlot = "primary" | "secondary";
24
+ /** Display and behavior metadata for an entity type. */
25
+ interface EntityDisplayEntry {
26
+ label: string;
27
+ pluralName?: string | undefined;
28
+ /** Layout name for this entity type's generated routes (defaults to "default"). */
29
+ layout?: string | undefined;
30
+ /** Enable pagination for list pages. */
31
+ paginate?: boolean | undefined;
32
+ /** Items per page (default: 10). */
33
+ pageSize?: number | undefined;
34
+ navigation?: {
35
+ show?: boolean | undefined;
36
+ slot?: NavigationSlot | undefined;
37
+ priority?: number | undefined;
38
+ } | undefined;
39
+ }
40
+ interface SectionDefinitionInput {
41
+ id: string;
42
+ template: string;
43
+ content?: unknown;
44
+ dataQuery?: {
45
+ entityType?: string | undefined;
46
+ template?: string | undefined;
47
+ query?: Record<string, unknown> | undefined;
48
+ [key: string]: unknown;
49
+ } | undefined;
50
+ order?: number | undefined;
51
+ }
52
+ interface NavigationMetadataInput {
53
+ show?: boolean | undefined;
54
+ label?: string | undefined;
55
+ slot?: NavigationSlot | undefined;
56
+ priority?: number | undefined;
57
+ }
58
+ interface RouteDefinitionInput {
59
+ id: string;
60
+ path: string;
61
+ title?: string | undefined;
62
+ /** Bare display label without any page suffix. */
63
+ pageLabel?: string | undefined;
64
+ description?: string | undefined;
65
+ sections?: SectionDefinitionInput[] | undefined;
66
+ layout?: string | undefined;
67
+ fullscreen?: boolean | undefined;
68
+ pluginId?: string | undefined;
69
+ sourceEntityType?: string | undefined;
70
+ external?: boolean | undefined;
71
+ navigation?: NavigationMetadataInput | undefined;
72
+ }
73
+ interface SiteContentStringFieldDefinition {
74
+ type: "string";
75
+ label: string;
76
+ optional?: boolean;
77
+ }
78
+ interface SiteContentNumberFieldDefinition {
79
+ type: "number";
80
+ label: string;
81
+ optional?: boolean;
82
+ }
83
+ interface SiteContentEnumFieldDefinition {
84
+ type: "enum";
85
+ label: string;
86
+ options: [string, ...string[]] | readonly [string, ...string[]];
87
+ optional?: boolean;
88
+ }
89
+ interface SiteContentObjectFieldDefinition {
90
+ type: "object";
91
+ label: string;
92
+ fields: Record<string, SiteContentFieldDefinition>;
93
+ optional?: boolean;
94
+ }
95
+ interface SiteContentArrayFieldDefinition {
96
+ type: "array";
97
+ label: string;
98
+ items: SiteContentStringFieldDefinition | SiteContentNumberFieldDefinition | SiteContentEnumFieldDefinition | SiteContentObjectFieldDefinition;
99
+ minItems?: number;
100
+ length?: number;
101
+ optional?: boolean;
102
+ }
103
+ type SiteContentFieldDefinition = SiteContentStringFieldDefinition | SiteContentNumberFieldDefinition | SiteContentEnumFieldDefinition | SiteContentObjectFieldDefinition | SiteContentArrayFieldDefinition;
104
+ interface SiteContentSectionDefinition {
105
+ description: string;
106
+ title: string;
107
+ layout: ComponentType<unknown>;
108
+ fields: Record<string, SiteContentFieldDefinition>;
109
+ requiredPermission?: UserPermissionLevel;
110
+ fullscreen?: boolean;
111
+ runtimeScripts?: RuntimeScript[];
112
+ }
113
+ interface SiteContentDefinition {
114
+ namespace: string;
115
+ sections: Record<string, SiteContentSectionDefinition>;
116
+ }
117
+ /** Author-facing metadata for a schema-first content section. */
118
+ interface SectionMeta {
119
+ title: string;
120
+ description: string;
121
+ requiredPermission?: UserPermissionLevel | undefined;
122
+ fullscreen?: boolean | undefined;
123
+ }
124
+ /**
125
+ * A schema-first content section. Its component props are inferred from the
126
+ * same schema used by runtime validation, markdown formatting, and editing.
127
+ */
128
+ interface SiteSectionDefinition<S extends z.ZodType = z.ZodType> extends SectionMeta {
129
+ schema: S;
130
+ component: ComponentType<z.output<S>>;
131
+ }
132
+ interface SiteSectionGroup {
133
+ namespace: string;
134
+ sections: Record<string, SiteSectionDefinition>;
135
+ }
136
+ interface SiteMetadataCTA {
137
+ heading: string;
138
+ buttonText: string;
139
+ buttonLink: string;
140
+ }
141
+ interface SiteMetadataSection {
142
+ blurb?: string | undefined;
143
+ }
144
+ interface SiteMetadata {
145
+ represents?: "brain" | "anchor" | undefined;
146
+ title: string;
147
+ description: string;
148
+ url?: string | undefined;
149
+ copyright?: string | undefined;
150
+ logo?: boolean | undefined;
151
+ themeMode?: "light" | "dark" | undefined;
152
+ analyticsScript?: string | undefined;
153
+ cta?: SiteMetadataCTA | undefined;
154
+ sections?: Record<string, SiteMetadataSection> | undefined;
155
+ }
156
+ interface NavigationItem {
157
+ label: string;
158
+ href: string;
159
+ priority: number;
160
+ }
161
+ interface SiteLayoutInfo extends SiteMetadata {
162
+ copyright: string;
163
+ navigation: {
164
+ primary: NavigationItem[];
165
+ secondary: NavigationItem[];
166
+ };
167
+ socialLinks?: Array<{
168
+ platform: "github" | "instagram" | "linkedin" | "email" | "website";
169
+ url: string;
170
+ label?: string | undefined;
171
+ }> | undefined;
172
+ }
173
+ /** Props supplied by the site builder to every authored layout. */
174
+ interface SiteLayoutProps {
175
+ sections: ReactNode[];
176
+ title: string;
177
+ description: string;
178
+ path: string;
179
+ siteInfo: SiteLayoutInfo;
180
+ }
181
+ /** Initial section content keyed by section-group namespace and section id. */
182
+ interface SiteContent {
183
+ [namespace: string]: Record<string, JsonObject>;
184
+ }
185
+ /** Declarative site-package shape authored by public site packages. */
186
+ interface SiteDefinition {
187
+ /** Layout components keyed by name — a `default` layout is required. */
188
+ layouts: Record<string, ComponentType<SiteLayoutProps>>;
189
+ /** Hand-written route definitions (home, about, etc.). */
190
+ routes: RouteDefinitionInput[];
191
+ /** Optional initial content validated by the corresponding section schema. */
192
+ content?: SiteContent | undefined;
193
+ /** Optional schema-first section groups. */
194
+ sections?: SiteSectionGroup | SiteSectionGroup[] | undefined;
195
+ /** Optional additive CSS owned by the site package. */
196
+ themeOverride?: string | undefined;
197
+ /** Global head scripts to inject into every rendered page. */
198
+ headScripts?: string[] | undefined;
199
+ /** Display metadata per entity type. */
200
+ entityDisplay: Record<string, EntityDisplayEntry>;
201
+ /** Static assets to write into the site output directory at build time. */
202
+ staticAssets?: Record<string, string> | undefined;
203
+ }
204
+ type SiteDefinitionOverrides = Partial<SiteDefinition>;
205
+ //#endregion
206
+ //#region src/rizom/contracts.d.ts
207
+ interface RizomLink {
208
+ href: string;
209
+ label: string;
210
+ /** Open in a new tab with rel="noopener noreferrer". */
211
+ external?: boolean;
212
+ }
213
+ type RizomBrandSuffix = "ai" | "foundation" | "work";
214
+ interface RizomSideNavItem {
215
+ href: string;
216
+ label: string;
217
+ }
218
+ interface RizomFooterTagline {
219
+ prefix?: string;
220
+ link: RizomLink;
221
+ suffix?: string;
222
+ }
223
+ type RizomLayoutProps = SiteLayoutProps;
224
+ interface RizomPluginCapabilities {
225
+ tools: [];
226
+ resources: [];
227
+ }
228
+ interface RizomMessageBus {
229
+ subscribe(channel: string, handler: () => Promise<{
230
+ success: boolean;
231
+ }>): unknown;
232
+ send(message: {
233
+ type: string;
234
+ sender: string;
235
+ payload: Record<string, unknown>;
236
+ }): Promise<unknown>;
237
+ }
238
+ interface RizomLogger {
239
+ info(message: string): void;
240
+ }
241
+ interface DataSourceRegistry {
242
+ register(dataSource: unknown): void;
243
+ }
244
+ interface RizomSiteShell {
245
+ getMessageBus(): RizomMessageBus;
246
+ getLogger(): RizomLogger;
247
+ registerTemplates(templates: Record<string, unknown>, namespace?: string): void;
248
+ getDataSourceRegistry(): DataSourceRegistry;
249
+ }
250
+ interface SiteCompositionPlugin {
251
+ readonly id: string;
252
+ readonly version: string;
253
+ readonly type: "core" | "entity" | "service" | "interface";
254
+ readonly packageName: string;
255
+ readonly description?: string | undefined;
256
+ readonly dependencies?: string[] | undefined;
257
+ register?(shell: RizomSiteShell, context?: unknown): Promise<RizomPluginCapabilities>;
258
+ ready?(): Promise<void>;
259
+ shutdown?(): Promise<void>;
260
+ requiresDaemonStartup?(): boolean;
261
+ }
262
+ interface SitePackage<TPluginConfig = Record<string, unknown>, TPlugin extends SiteCompositionPlugin = SiteCompositionPlugin> {
263
+ layouts: Record<string, unknown>;
264
+ routes: RouteDefinitionInput[];
265
+ plugin?: ((config?: TPluginConfig) => TPlugin) | undefined;
266
+ content?: SiteContent | undefined;
267
+ sections?: SiteSectionGroup | SiteSectionGroup[] | undefined;
268
+ themeOverride?: string | undefined;
269
+ headScripts?: string[] | undefined;
270
+ entityDisplay: Record<string, EntityDisplayEntry>;
271
+ staticAssets?: Record<string, string> | undefined;
272
+ }
273
+ //#endregion
274
+ //#region src/rizom/ui/frame.d.ts
275
+ interface RizomFrameProps {
276
+ children?: ReactNode;
277
+ }
278
+ /**
279
+ * Shared Rizom page frame.
280
+ *
281
+ * Owns only the centered page container. Wrapper sites own their actual
282
+ * chrome/layout composition.
283
+ */
284
+ declare const RizomFrame: ({ children }: RizomFrameProps) => JSX.Element;
285
+ //#endregion
286
+ //#region src/rizom/ui/Header.d.ts
287
+ interface HeaderProps {
288
+ brandSuffix: RizomBrandSuffix;
289
+ navLinks: RizomLink[];
290
+ primaryCta: RizomLink;
291
+ }
292
+ declare const Header: ({ brandSuffix, navLinks, primaryCta }: HeaderProps) => JSX.Element;
293
+ //#endregion
294
+ //#region src/rizom/ui/Footer.d.ts
295
+ interface FooterProps {
296
+ brandSuffix: RizomBrandSuffix;
297
+ metaLabel: string;
298
+ tagline?: RizomFooterTagline;
299
+ links: RizomLink[];
300
+ className?: string;
301
+ }
302
+ declare const Footer: ({ brandSuffix, metaLabel, tagline, links, className }: FooterProps) => JSX.Element;
303
+ //#endregion
304
+ //#region src/rizom/ui/SideNav.d.ts
305
+ interface SideNavProps {
306
+ items: RizomSideNavItem[];
307
+ }
308
+ declare const SideNav: ({ items }: SideNavProps) => JSX.Element;
309
+ //#endregion
310
+ //#region src/rizom/ui/Section.d.ts
311
+ interface SectionProps {
312
+ id?: string;
313
+ className?: string;
314
+ children?: ReactNode;
315
+ }
316
+ declare const GUTTER = "px-6 md:px-10 xl:px-20";
317
+ declare const Section: ({ id, className, children }: SectionProps) => JSX.Element;
318
+ //#endregion
319
+ //#region src/rizom/ui/Button.d.ts
320
+ type ButtonVariant = "primary" | "primary-strong" | "secondary";
321
+ type ButtonSize = "md" | "lg";
322
+ interface ButtonProps {
323
+ href: string;
324
+ variant?: ButtonVariant;
325
+ size?: ButtonSize;
326
+ block?: boolean;
327
+ className?: string;
328
+ children?: ReactNode;
329
+ }
330
+ declare const Button: ({ href, variant, size, block, className, children }: ButtonProps) => JSX.Element;
331
+ //#endregion
332
+ //#region src/rizom/ui/Badge.d.ts
333
+ interface BadgeProps {
334
+ children?: ReactNode;
335
+ className?: string;
336
+ }
337
+ declare const Badge: ({ children, className }: BadgeProps) => JSX.Element;
338
+ //#endregion
339
+ //#region src/rizom/ui/Divider.d.ts
340
+ interface DividerProps {
341
+ className?: string;
342
+ }
343
+ declare const Divider: ({ className }: DividerProps) => JSX.Element;
344
+ //#endregion
345
+ //#region src/rizom/ui/highlighted-text.d.ts
346
+ /**
347
+ * Render a content string with two lightweight markup conventions:
348
+ *
349
+ * - `\n` in the string produces a `<br />` (for multi-line headlines)
350
+ * - Any `*...*` run is wrapped in a `<span>` carrying `highlightClass`
351
+ *
352
+ * Authors write the phrase as one natural string in markdown content;
353
+ * the renderer does the structural split. Highlight styling is passed
354
+ * per-brand (rizom.ai uses accent+midline, rizom.work uses
355
+ * italic+accent) so each brand owns its own emphasis treatment while
356
+ * the parsing/structure is shared.
357
+ */
358
+ declare function renderHighlightedText(text: string, highlightClass: string): JSX.Element;
359
+ //#endregion
360
+ //#region src/rizom/ui/site-info-links.d.ts
361
+ declare function socialLinksToRizomLinks(siteInfo: Pick<SiteLayoutInfo, "socialLinks">, allowedPlatforms?: string[]): RizomLink[];
362
+ //#endregion
363
+ //#region src/rizom/ui/Wordmark.d.ts
364
+ interface WordmarkProps {
365
+ /** Brand name before the dot. Defaults to `"rizom"`. */
366
+ name?: string;
367
+ /** Suffix after the dot. Any string (e.g. `"ai"`, `"io"`, `"foundation"`). */
368
+ brandSuffix: RizomBrandSuffix | string;
369
+ className?: string;
370
+ dotClassName?: string;
371
+ suffixClassName?: string;
372
+ }
373
+ declare const Wordmark: ({ name, brandSuffix, className, dotClassName, suffixClassName }: WordmarkProps) => JSX.Element;
374
+ //#endregion
375
+ //#region src/rizom/ui/Ecosystem.d.ts
376
+ interface EcosystemCard {
377
+ suffix: RizomBrandSuffix;
378
+ title: string;
379
+ body: string;
380
+ linkLabel: string;
381
+ linkHref: string;
382
+ }
383
+ interface EcosystemContent {
384
+ eyebrow: string;
385
+ headline: string;
386
+ cards: EcosystemCard[];
387
+ }
388
+ declare const Ecosystem: ({ eyebrow, headline, cards }: EcosystemContent) => JSX.Element;
389
+ //#endregion
390
+ //#region src/rizom/runtime/default-layout.d.ts
391
+ declare const DefaultRizomLayout: ({ sections }: RizomLayoutProps) => JSX.Element;
392
+ //#endregion
393
+ //#region src/rizom/runtime/base-site.d.ts
394
+ declare const rizomBaseSite: SiteDefinition;
395
+ //#endregion
396
+ //#region src/rizom/create-site.d.ts
397
+ interface RizomRuntimeHooks {
398
+ contentNamespace: string;
399
+ templates?: Record<string, unknown>;
400
+ dataSources?: unknown[];
401
+ }
402
+ interface CreateRizomSiteOptions {
403
+ packageName: string;
404
+ layout: unknown;
405
+ routes: RouteDefinitionInput[];
406
+ content?: SiteContent;
407
+ /**
408
+ * Schema-first section groups (authored via `@rizom/site`'
409
+ * `defineSection`/`sectionGroup`). Registered as content templates at brain
410
+ * boot exactly like `content`, so the Studio + directory-sync + resolver treat
411
+ * them identically — but the section shape is derived from one zod schema.
412
+ */
413
+ sections?: SiteSectionGroup | SiteSectionGroup[];
414
+ themeOverride?: string;
415
+ /**
416
+ * Presentation config for entity-backed list/detail routes (labels, plural
417
+ * names, navigation). Merged onto the base site's empty map. Sites that
418
+ * surface plugin lists — e.g. `post`→"Essay", `deck`→"Talk" — set it here.
419
+ */
420
+ entityDisplay?: Record<string, EntityDisplayEntry>;
421
+ /** Advanced runtime hooks for in-repo sites that need custom template/data-source wiring. */
422
+ runtime?: RizomRuntimeHooks;
423
+ }
424
+ declare function createRizomSite(options: CreateRizomSiteOptions): SitePackage;
425
+ //#endregion
426
+ //#region src/site.d.ts
427
+ declare const rizomAiSite: SitePackage;
428
+ //#endregion
429
+ //#region src/routes.d.ts
430
+ /**
431
+ * The consolidated Rizom site routes. The home page composes the rev-5 section
432
+ * set from the "home" content namespace; the layout owns navigation (the
433
+ * two-tier faces strip), so routes stay out of the entity nav.
434
+ */
435
+ declare const aiRoutes: RouteDefinitionInput[];
436
+ //#endregion
437
+ //#region src/home.d.ts
438
+ /**
439
+ * The umbrella home page's authored sections. The namespace ("home") matches
440
+ * the route id, so each stores as site-content/home/<section>.md and resolves
441
+ * as "home:<section>". Two sections live elsewhere: the hero is the live
442
+ * agent proximity map (agent-discovery:proximity-map) and the proof/ask is
443
+ * the knowledge map (topics:knowledge-map) — both authored via overlay
444
+ * markdown merged over their live datasource payloads.
445
+ */
446
+ declare const homeSections: SiteSectionGroup;
447
+ //#endregion
448
+ //#region src/work.d.ts
449
+ declare const workSections: SiteSectionGroup;
450
+ //#endregion
451
+ //#region src/foundation.d.ts
452
+ declare const foundationSections: SiteSectionGroup;
453
+ //#endregion
454
+ export { Badge, type BadgeProps, Button, type ButtonProps, type ButtonSize, type ButtonVariant, type CreateRizomSiteOptions, DefaultRizomLayout, Divider, type DividerProps, Ecosystem, type EcosystemCard, type EcosystemContent, type EntityDisplayEntry, Footer, GUTTER, Header, type RizomBrandSuffix, type RizomFooterTagline, RizomFrame, type RizomFrameProps, type RizomLayoutProps, type RizomLink, type RizomSideNavItem, type RouteDefinitionInput, Section, type SectionDefinitionInput, type SectionProps, SideNav, type SiteContentArrayFieldDefinition, type SiteContentDefinition, type SiteContentEnumFieldDefinition, type SiteContentFieldDefinition, type SiteContentNumberFieldDefinition, type SiteContentObjectFieldDefinition, type SiteContentSectionDefinition, type SiteContentStringFieldDefinition, type SiteDefinition, type SiteDefinitionOverrides, type SiteLayoutInfo, type SitePackage, Wordmark, type WordmarkProps, aiRoutes, createRizomSite, rizomAiSite as default, rizomAiSite, foundationSections, homeSections, renderHighlightedText, rizomBaseSite, socialLinksToRizomLinks, workSections };