@krizaka/ui 2.9.0 → 2.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.
Files changed (226) hide show
  1. package/README.md +41 -5
  2. package/dist/blocks.css +247 -0
  3. package/dist/catalogue-page.d.ts +34 -0
  4. package/dist/catalogue-page.js +26 -0
  5. package/dist/catalogue-page.js.map +1 -0
  6. package/dist/changelog-page.d.ts +50 -0
  7. package/dist/changelog-page.js +27 -0
  8. package/dist/changelog-page.js.map +1 -0
  9. package/dist/{chunk-NOVUREEC.js → chunk-JZPVUJIX.js} +25 -3
  10. package/dist/chunk-JZPVUJIX.js.map +1 -0
  11. package/dist/chunk-KNBYZGSQ.js +11 -0
  12. package/dist/chunk-KNBYZGSQ.js.map +1 -0
  13. package/dist/component-page.d.ts +41 -0
  14. package/dist/component-page.js +17 -0
  15. package/dist/component-page.js.map +1 -0
  16. package/dist/contact-page.d.ts +31 -0
  17. package/dist/contact-page.js +26 -0
  18. package/dist/contact-page.js.map +1 -0
  19. package/dist/docs-article-page.d.ts +54 -0
  20. package/dist/docs-article-page.js +29 -0
  21. package/dist/docs-article-page.js.map +1 -0
  22. package/dist/docs-hub-page.d.ts +72 -0
  23. package/dist/docs-hub-page.js +45 -0
  24. package/dist/docs-hub-page.js.map +1 -0
  25. package/dist/error-page.d.ts +22 -0
  26. package/dist/error-page.js +23 -0
  27. package/dist/error-page.js.map +1 -0
  28. package/dist/gallery-page.d.ts +50 -0
  29. package/dist/gallery-page.js +30 -0
  30. package/dist/gallery-page.js.map +1 -0
  31. package/dist/{geometry-CXrAW34x.d.ts → geometry-CbOU4rtL.d.ts} +4 -4
  32. package/dist/how-it-works-page.d.ts +48 -0
  33. package/dist/how-it-works-page.js +28 -0
  34. package/dist/how-it-works-page.js.map +1 -0
  35. package/dist/index.d.ts +11 -2
  36. package/dist/index.js +93 -5
  37. package/dist/index.js.map +1 -1
  38. package/dist/landing-page.d.ts +58 -0
  39. package/dist/landing-page.js +42 -0
  40. package/dist/landing-page.js.map +1 -0
  41. package/dist/legal-page.d.ts +34 -0
  42. package/dist/legal-page.js +18 -0
  43. package/dist/legal-page.js.map +1 -0
  44. package/dist/longform-page.d.ts +42 -0
  45. package/dist/longform-page.js +29 -0
  46. package/dist/longform-page.js.map +1 -0
  47. package/dist/mascot-quote.d.ts +4 -4
  48. package/dist/mascot-quote.js +23 -1
  49. package/dist/mascot-quote.js.map +1 -1
  50. package/dist/mascot-state.d.ts +2 -2
  51. package/dist/mascot-state.js +1 -1
  52. package/dist/mascot-state.js.map +1 -1
  53. package/dist/mascots.d.ts +4 -4
  54. package/dist/mascots.js +1 -1
  55. package/dist/native.d.ts +16 -9
  56. package/dist/native.js +183 -74
  57. package/dist/native.js.map +1 -1
  58. package/dist/pricing-page.d.ts +62 -0
  59. package/dist/pricing-page.js +71 -0
  60. package/dist/pricing-page.js.map +1 -0
  61. package/dist/product-page.d.ts +83 -0
  62. package/dist/product-page.js +60 -0
  63. package/dist/product-page.js.map +1 -0
  64. package/dist/status-page.d.ts +42 -0
  65. package/dist/status-page.js +28 -0
  66. package/dist/status-page.js.map +1 -0
  67. package/package.json +233 -7
  68. package/registry/achievement.json +1 -1
  69. package/registry/action-bar.json +1 -1
  70. package/registry/alert.json +1 -1
  71. package/registry/app-shell.json +1 -1
  72. package/registry/argument-card.json +1 -1
  73. package/registry/audio-player.json +1 -1
  74. package/registry/auth-layout.json +1 -1
  75. package/registry/avatar.json +1 -1
  76. package/registry/badge.json +1 -1
  77. package/registry/button.json +1 -1
  78. package/registry/card-grid.json +1 -1
  79. package/registry/card.json +1 -1
  80. package/registry/catalogue-page.json +240 -0
  81. package/registry/changelog-page.json +226 -0
  82. package/registry/checkbox.json +1 -1
  83. package/registry/chip-link.json +1 -1
  84. package/registry/chip.json +1 -1
  85. package/registry/choice-grid.json +1 -1
  86. package/registry/code-block.json +1 -1
  87. package/registry/combobox.json +1 -1
  88. package/registry/command.json +1 -1
  89. package/registry/component-page.json +227 -0
  90. package/registry/confirm-button.json +1 -1
  91. package/registry/contact-page.json +212 -0
  92. package/registry/continue-prompt.json +1 -1
  93. package/registry/countdown.json +1 -1
  94. package/registry/cta-panel.json +1 -1
  95. package/registry/dashboard-layout.json +1 -1
  96. package/registry/data-table.json +1 -1
  97. package/registry/date-picker.json +1 -1
  98. package/registry/decision-list.json +1 -1
  99. package/registry/detail-layout.json +1 -1
  100. package/registry/dialog.json +1 -1
  101. package/registry/docs-article-page.json +242 -0
  102. package/registry/docs-hub-page.json +270 -0
  103. package/registry/docs-layout.json +1 -1
  104. package/registry/dropdown-menu.json +1 -1
  105. package/registry/empty-state.json +1 -1
  106. package/registry/error-page.json +183 -0
  107. package/registry/examples/catalogue-page/components.d.ts +4 -0
  108. package/registry/examples/catalogue-page/components.js +33 -0
  109. package/registry/examples/catalogue-page/components.tsx +36 -0
  110. package/registry/examples/changelog-page/releases.d.ts +4 -0
  111. package/registry/examples/changelog-page/releases.js +44 -0
  112. package/registry/examples/changelog-page/releases.tsx +39 -0
  113. package/registry/examples/component-page/button.d.ts +4 -0
  114. package/registry/examples/component-page/button.js +33 -0
  115. package/registry/examples/component-page/button.tsx +30 -0
  116. package/registry/examples/contact-page/team.d.ts +4 -0
  117. package/registry/examples/contact-page/team.js +39 -0
  118. package/registry/examples/contact-page/team.tsx +38 -0
  119. package/registry/examples/docs-article-page/cli.d.ts +4 -0
  120. package/registry/examples/docs-article-page/cli.js +33 -0
  121. package/registry/examples/docs-article-page/cli.tsx +38 -0
  122. package/registry/examples/docs-hub-page/krizaka.d.ts +4 -0
  123. package/registry/examples/docs-hub-page/krizaka.js +46 -0
  124. package/registry/examples/docs-hub-page/krizaka.tsx +37 -0
  125. package/registry/examples/error-page/not-found.d.ts +4 -0
  126. package/registry/examples/error-page/not-found.js +24 -0
  127. package/registry/examples/error-page/not-found.tsx +19 -0
  128. package/registry/examples/gallery-page/made-here.d.ts +4 -0
  129. package/registry/examples/gallery-page/made-here.js +34 -0
  130. package/registry/examples/gallery-page/made-here.tsx +32 -0
  131. package/registry/examples/how-it-works-page/orazaka.d.ts +4 -0
  132. package/registry/examples/how-it-works-page/orazaka.js +30 -0
  133. package/registry/examples/how-it-works-page/orazaka.tsx +26 -0
  134. package/registry/examples/landing-page/krizaka.d.ts +4 -0
  135. package/registry/examples/landing-page/krizaka.js +44 -0
  136. package/registry/examples/landing-page/krizaka.tsx +44 -0
  137. package/registry/examples/legal-page/privacy.d.ts +4 -0
  138. package/registry/examples/legal-page/privacy.js +24 -0
  139. package/registry/examples/legal-page/privacy.tsx +19 -0
  140. package/registry/examples/longform-page/story.d.ts +4 -0
  141. package/registry/examples/longform-page/story.js +38 -0
  142. package/registry/examples/longform-page/story.tsx +35 -0
  143. package/registry/examples/mascots/crane.d.ts +4 -0
  144. package/registry/examples/mascots/crane.js +19 -0
  145. package/registry/examples/mascots/crane.tsx +18 -0
  146. package/registry/examples/mascots/flock.tsx +2 -1
  147. package/registry/examples/mascots/native/crane.d.ts +4 -0
  148. package/registry/examples/mascots/native/crane.dark.png +0 -0
  149. package/registry/examples/mascots/native/crane.js +21 -0
  150. package/registry/examples/mascots/native/crane.light.png +0 -0
  151. package/registry/examples/mascots/native/crane.tsx +18 -0
  152. package/registry/examples/pricing-page/credits.d.ts +4 -0
  153. package/registry/examples/pricing-page/credits.js +41 -0
  154. package/registry/examples/pricing-page/credits.tsx +33 -0
  155. package/registry/examples/product-page/orazaka.d.ts +4 -0
  156. package/registry/examples/product-page/orazaka.js +44 -0
  157. package/registry/examples/product-page/orazaka.tsx +36 -0
  158. package/registry/examples/status-page/building.d.ts +4 -0
  159. package/registry/examples/status-page/building.js +29 -0
  160. package/registry/examples/status-page/building.tsx +25 -0
  161. package/registry/examples/status-page/operational.d.ts +4 -0
  162. package/registry/examples/status-page/operational.js +26 -0
  163. package/registry/examples/status-page/operational.tsx +20 -0
  164. package/registry/field.json +1 -1
  165. package/registry/file-upload.json +1 -1
  166. package/registry/filter-bar.json +1 -1
  167. package/registry/gallery-page.json +256 -0
  168. package/registry/glow-card.json +1 -1
  169. package/registry/goal-gauge.json +1 -1
  170. package/registry/how-it-works-page.json +242 -0
  171. package/registry/image-cropper.json +1 -1
  172. package/registry/index.json +309 -5
  173. package/registry/iso.json +1 -1
  174. package/registry/kbd.json +1 -1
  175. package/registry/landing-page.json +242 -0
  176. package/registry/landscape.json +1 -1
  177. package/registry/legal-page.json +199 -0
  178. package/registry/link-card.json +1 -1
  179. package/registry/loader.json +1 -1
  180. package/registry/longform-page.json +213 -0
  181. package/registry/marketing-layout.json +1 -1
  182. package/registry/marquee.json +1 -1
  183. package/registry/mascot-quote.json +6 -6
  184. package/registry/mascot-state.json +34 -34
  185. package/registry/mascots.json +41 -21
  186. package/registry/media-capture.json +1 -1
  187. package/registry/meter.json +1 -1
  188. package/registry/nav-bar.json +1 -1
  189. package/registry/number-ticker.json +1 -1
  190. package/registry/page-header.json +1 -1
  191. package/registry/page-hero.json +1 -1
  192. package/registry/page.json +1 -1
  193. package/registry/pagination.json +1 -1
  194. package/registry/pointer-light.json +1 -1
  195. package/registry/popover.json +1 -1
  196. package/registry/pricing-page.json +245 -0
  197. package/registry/product-page.json +319 -0
  198. package/registry/profile-card.json +1 -1
  199. package/registry/progress.json +1 -1
  200. package/registry/promise-card.json +1 -1
  201. package/registry/radio-group.json +1 -1
  202. package/registry/scroll-stage.json +1 -1
  203. package/registry/search-field.json +1 -1
  204. package/registry/section-backdrop.json +1 -1
  205. package/registry/separator.json +1 -1
  206. package/registry/settings-layout.json +1 -1
  207. package/registry/skeleton.json +1 -1
  208. package/registry/slider.json +1 -1
  209. package/registry/slot.json +1 -1
  210. package/registry/spinner.json +1 -1
  211. package/registry/split-view.json +1 -1
  212. package/registry/stage-banner.json +1 -1
  213. package/registry/stat.json +1 -1
  214. package/registry/status-page.json +263 -0
  215. package/registry/stepper.json +1 -1
  216. package/registry/switch.json +1 -1
  217. package/registry/tabs.json +1 -1
  218. package/registry/tag-input.json +1 -1
  219. package/registry/terminal-replay.json +1 -1
  220. package/registry/theme.json +1 -1
  221. package/registry/toast.json +1 -1
  222. package/registry/toc.json +1 -1
  223. package/registry/tooltip.json +1 -1
  224. package/registry/video-player.json +1 -1
  225. package/registry/video-trimmer.json +1 -1
  226. package/dist/chunk-NOVUREEC.js.map +0 -1
@@ -0,0 +1,39 @@
1
+ "use client";
2
+
3
+ // registry/examples/contact-page/team.tsx
4
+ import { Button } from "@krizaka/ui/button";
5
+ import { ContactPage } from "@krizaka/ui/contact-page";
6
+ import { Field, Input, Textarea } from "@krizaka/ui/field";
7
+ import { LinkCard } from "@krizaka/ui/link-card";
8
+ import { Mascot } from "@krizaka/ui/mascots";
9
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
10
+ function ContactPageTeam() {
11
+ return /* @__PURE__ */ jsx(
12
+ ContactPage,
13
+ {
14
+ eyebrow: "Contact",
15
+ title: "Talk to the people who build it",
16
+ lead: "A person answers within two working days, in English or in French.",
17
+ aside: /* @__PURE__ */ jsx(Mascot, { bird: "flamingo", mood: "welcome", size: 112 }),
18
+ channels: /* @__PURE__ */ jsxs(Fragment, { children: [
19
+ /* @__PURE__ */ jsx(LinkCard, { href: "https://github.com/orgs/krizaka/discussions", title: "Discussions", description: "Questions and ideas, in public.", titleAs: "span" }),
20
+ /* @__PURE__ */ jsx(LinkCard, { href: "https://github.com/krizaka", title: "Report a problem", description: "An issue on the repository.", titleAs: "span" })
21
+ ] }),
22
+ form: /* @__PURE__ */ jsxs("form", { className: "flex flex-col gap-4", children: [
23
+ /* @__PURE__ */ jsxs(Field.Root, { children: [
24
+ /* @__PURE__ */ jsx(Field.Label, { htmlFor: "contact-email", children: "Email" }),
25
+ /* @__PURE__ */ jsx(Input, { id: "contact-email", type: "email", autoComplete: "email" })
26
+ ] }),
27
+ /* @__PURE__ */ jsxs(Field.Root, { children: [
28
+ /* @__PURE__ */ jsx(Field.Label, { htmlFor: "contact-message", children: "Message" }),
29
+ /* @__PURE__ */ jsx(Textarea, { id: "contact-message", rows: 4 })
30
+ ] }),
31
+ /* @__PURE__ */ jsx(Button, { type: "submit", variant: "primary", size: "lg", shape: "cut", shimmer: true, children: "Send" })
32
+ ] }),
33
+ next: { title: "What happens next", steps: [{ title: "We read it", text: "The same day, on working days." }, { title: "We answer", text: "Within two working days." }] }
34
+ }
35
+ );
36
+ }
37
+ export {
38
+ ContactPageTeam as default
39
+ };
@@ -0,0 +1,38 @@
1
+ import { Button } from "@krizaka/ui/button";
2
+ import { ContactPage } from "@krizaka/ui/contact-page";
3
+ import { Field, Input, Textarea } from "@krizaka/ui/field";
4
+ import { LinkCard } from "@krizaka/ui/link-card";
5
+ import { Mascot } from "@krizaka/ui/mascots";
6
+
7
+ // TEMPLATE — reaching the team: the public channels as cards beside the private form, then what happens after sending.
8
+ // On a phone the form comes after the channels, its fields at full width.
9
+ export default function ContactPageTeam() {
10
+ return (
11
+ <ContactPage
12
+ eyebrow="Contact"
13
+ title="Talk to the people who build it"
14
+ lead="A person answers within two working days, in English or in French."
15
+ aside={<Mascot bird="flamingo" mood="welcome" size={112} />}
16
+ channels={
17
+ <>
18
+ <LinkCard href="https://github.com/orgs/krizaka/discussions" title="Discussions" description="Questions and ideas, in public." titleAs="span" />
19
+ <LinkCard href="https://github.com/krizaka" title="Report a problem" description="An issue on the repository." titleAs="span" />
20
+ </>
21
+ }
22
+ form={
23
+ <form className="flex flex-col gap-4">
24
+ <Field.Root>
25
+ <Field.Label htmlFor="contact-email">Email</Field.Label>
26
+ <Input id="contact-email" type="email" autoComplete="email" />
27
+ </Field.Root>
28
+ <Field.Root>
29
+ <Field.Label htmlFor="contact-message">Message</Field.Label>
30
+ <Textarea id="contact-message" rows={4} />
31
+ </Field.Root>
32
+ <Button type="submit" variant="primary" size="lg" shape="cut" shimmer>Send</Button>
33
+ </form>
34
+ }
35
+ next={{ title: "What happens next", steps: [{ title: "We read it", text: "The same day, on working days." }, { title: "We answer", text: "Within two working days." }] }}
36
+ />
37
+ );
38
+ }
@@ -0,0 +1,4 @@
1
+ import type { ComponentType } from "react";
2
+ /** A named example of the @krizaka/ui registry; `defaultOpen` opens what it opens (a dialog, a menu, toasts) at load. */
3
+ declare const Example: ComponentType<{ defaultOpen?: boolean }>;
4
+ export default Example;
@@ -0,0 +1,33 @@
1
+ "use client";
2
+
3
+ // registry/examples/docs-article-page/cli.tsx
4
+ import { CodeBlock } from "@krizaka/ui/code-block";
5
+ import { DocsArticlePage } from "@krizaka/ui/docs-article-page";
6
+ import { jsx, jsxs } from "react/jsx-runtime";
7
+ var PAGES = ["Getting started", "The CLI", "Packs & Studios"];
8
+ function DocsArticlePageCli() {
9
+ return /* @__PURE__ */ jsxs(
10
+ DocsArticlePage,
11
+ {
12
+ className: "brand-orazaka pt-6",
13
+ sidebarLabel: "Pages of the documentation",
14
+ sidebar: /* @__PURE__ */ jsx("nav", { "aria-label": "Orazaka documentation", children: /* @__PURE__ */ jsx("ul", { className: "flex flex-col gap-1 text-sm", children: PAGES.map((p, i) => /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx("a", { href: `#p${i}`, "aria-current": i === 1 ? "page" : void 0, className: "block rounded-md px-3 py-2 text-fg-secondary no-underline hover:bg-surface-2 aria-[current=page]:bg-accent-soft aria-[current=page]:text-fg", children: p }) }, p)) }) }),
15
+ breadcrumb: [{ href: "#docs", label: "Docs" }, { href: "#orazaka", label: "Orazaka" }],
16
+ title: "The CLI",
17
+ lead: "Install, start and develop Orazaka from one command line.",
18
+ facts: [{ label: "Updated 11 Oct 2026" }, { label: "4 min read" }],
19
+ toc: { label: "On this page", items: [{ id: "install", label: "Install" }, { id: "start", label: "Start" }] },
20
+ pager: { previous: { href: "#p0", title: "Getting started" }, next: { href: "#p2", title: "Packs & Studios" }, labels: { previous: "Previous", next: "Next" } },
21
+ children: [
22
+ /* @__PURE__ */ jsx("h2", { id: "install", children: "Install" }),
23
+ /* @__PURE__ */ jsx("p", { children: "One command installs the engine, the console and the models you choose." }),
24
+ /* @__PURE__ */ jsx(CodeBlock, { code: "npx orazaka install", language: "bash", file: "Terminal", copyLabel: "Copy", copiedLabel: "Copied" }),
25
+ /* @__PURE__ */ jsx("h2", { id: "start", children: "Start" }),
26
+ /* @__PURE__ */ jsx("p", { children: "Then start it; the console opens on your machine." })
27
+ ]
28
+ }
29
+ );
30
+ }
31
+ export {
32
+ DocsArticlePageCli as default
33
+ };
@@ -0,0 +1,38 @@
1
+ import { CodeBlock } from "@krizaka/ui/code-block";
2
+ import { DocsArticlePage } from "@krizaka/ui/docs-article-page";
3
+
4
+ const PAGES = ["Getting started", "The CLI", "Packs & Studios"];
5
+
6
+ // TEMPLATE — a documentation article (Orazaka's CLI): the pages, where it sits, its title and facts, the reading column,
7
+ // the contents beside it, previous and next at the foot. On a phone the pages fold above the article.
8
+ export default function DocsArticlePageCli() {
9
+ return (
10
+ <DocsArticlePage
11
+ className="brand-orazaka pt-6"
12
+ sidebarLabel="Pages of the documentation"
13
+ sidebar={
14
+ <nav aria-label="Orazaka documentation">
15
+ <ul className="flex flex-col gap-1 text-sm">
16
+ {PAGES.map((p, i) => (
17
+ <li key={p}>
18
+ <a href={`#p${i}`} aria-current={i === 1 ? "page" : undefined} className="block rounded-md px-3 py-2 text-fg-secondary no-underline hover:bg-surface-2 aria-[current=page]:bg-accent-soft aria-[current=page]:text-fg">{p}</a>
19
+ </li>
20
+ ))}
21
+ </ul>
22
+ </nav>
23
+ }
24
+ breadcrumb={[{ href: "#docs", label: "Docs" }, { href: "#orazaka", label: "Orazaka" }]}
25
+ title="The CLI"
26
+ lead="Install, start and develop Orazaka from one command line."
27
+ facts={[{ label: "Updated 11 Oct 2026" }, { label: "4 min read" }]}
28
+ toc={{ label: "On this page", items: [{ id: "install", label: "Install" }, { id: "start", label: "Start" }] }}
29
+ pager={{ previous: { href: "#p0", title: "Getting started" }, next: { href: "#p2", title: "Packs & Studios" }, labels: { previous: "Previous", next: "Next" } }}
30
+ >
31
+ <h2 id="install">Install</h2>
32
+ <p>One command installs the engine, the console and the models you choose.</p>
33
+ <CodeBlock code="npx orazaka install" language="bash" file="Terminal" copyLabel="Copy" copiedLabel="Copied" />
34
+ <h2 id="start">Start</h2>
35
+ <p>Then start it; the console opens on your machine.</p>
36
+ </DocsArticlePage>
37
+ );
38
+ }
@@ -0,0 +1,4 @@
1
+ import type { ComponentType } from "react";
2
+ /** A named example of the @krizaka/ui registry; `defaultOpen` opens what it opens (a dialog, a menu, toasts) at load. */
3
+ declare const Example: ComponentType<{ defaultOpen?: boolean }>;
4
+ export default Example;
@@ -0,0 +1,46 @@
1
+ "use client";
2
+
3
+ // registry/examples/docs-hub-page/krizaka.tsx
4
+ import { ProductLogo } from "@krizaka/ui";
5
+ import { Button } from "@krizaka/ui/button";
6
+ import { CodeBlock } from "@krizaka/ui/code-block";
7
+ import { DocsHubPage } from "@krizaka/ui/docs-hub-page";
8
+ import { Kbd } from "@krizaka/ui/kbd";
9
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
10
+ var COLLECTIONS = [
11
+ { id: "ui", title: "Krizaka UI", href: "#ui", mark: /* @__PURE__ */ jsx(ProductLogo, { id: "krizaka", size: 26, animated: false }), description: "Tokens, a Tailwind preset, the components \u2014 live, generated from their code.", links: [{ href: "#blocks", label: "Blocks" }, { href: "#layouts", label: "Layouts" }, { href: "#templates", label: "Templates" }] },
12
+ { id: "java", title: "Krizaka Java", href: "#java", mark: /* @__PURE__ */ jsx(ProductLogo, { id: "krizaka", size: 26, animated: false }), description: "Parent, BOM, starters, messaging, Problem Details.", links: [{ href: "#bom", label: "BOM" }, { href: "#messaging", label: "Messaging" }] },
13
+ { id: "orazaka", brand: "orazaka", title: "Orazaka", href: "#orazaka", mark: /* @__PURE__ */ jsx(ProductLogo, { id: "orazaka", size: 26, animated: false }), description: "The sovereign AI engine: install, packs, administration.", links: [{ href: "#cli", label: "CLI" }, { href: "#packs", label: "Packs" }, { href: "#admin", label: "Admin" }] },
14
+ { id: "orochia", brand: "orochia", title: "Orochia", href: "#orochia", mark: /* @__PURE__ */ jsx(ProductLogo, { id: "orochia", size: 26, animated: false }), description: "The creator platform: payments, auctions, the admin console.", links: [{ href: "#payouts", label: "Payouts" }, { href: "#console", label: "Console" }] }
15
+ ];
16
+ function DocsHubPageKrizaka() {
17
+ return /* @__PURE__ */ jsx(
18
+ DocsHubPage,
19
+ {
20
+ eyebrow: "Documentation",
21
+ title: "Build with Krizaka",
22
+ lead: "Every building block the products are made of, documented from its source.",
23
+ search: /* @__PURE__ */ jsxs(Button, { variant: "secondary", size: "lg", shape: "cut", className: "w-full justify-between text-fg-secondary", children: [
24
+ "Search the documentation ",
25
+ /* @__PURE__ */ jsx(Kbd, { children: "\u2318K" })
26
+ ] }),
27
+ searchHints: /* @__PURE__ */ jsxs(Fragment, { children: [
28
+ "Try: ",
29
+ /* @__PURE__ */ jsx("a", { href: "#cli", children: "orazaka install" }),
30
+ " \xB7 ",
31
+ /* @__PURE__ */ jsx("a", { href: "#button", children: "Button" }),
32
+ " \xB7 ",
33
+ /* @__PURE__ */ jsx("a", { href: "#bom", children: "BOM" })
34
+ ] }),
35
+ collectionsTitle: "Collections",
36
+ collections: COLLECTIONS,
37
+ quickstarts: { title: "Start in one line", children: /* @__PURE__ */ jsx(CodeBlock, { code: "npx orazaka install", language: "bash", file: "Terminal", copyLabel: "Copy", copiedLabel: "Copied" }) },
38
+ popular: { title: "Most read", items: [{ href: "#cli", title: "The CLI", meta: "Orazaka" }, { href: "#button", title: "Button", meta: "Krizaka UI" }, { href: "#bom", title: "The BOM", meta: "Java" }] },
39
+ whatsNew: { title: "What's new", items: [{ href: "#ui-260", title: "Page blocks: frame, hero, cards, decisions", meta: "@krizaka/ui 2.6.0" }, { href: "#java-010", title: "The platform kit on Maven Central", meta: "0.1.0" }] },
40
+ promise: { label: "The owl's promise", text: "Every page here is generated from the code it documents \u2014 when the code changes, the page does." }
41
+ }
42
+ );
43
+ }
44
+ export {
45
+ DocsHubPageKrizaka as default
46
+ };
@@ -0,0 +1,37 @@
1
+ import { ProductLogo } from "@krizaka/ui";
2
+ import { Button } from "@krizaka/ui/button";
3
+ import { CodeBlock } from "@krizaka/ui/code-block";
4
+ import { DocsHubPage } from "@krizaka/ui/docs-hub-page";
5
+ import { Kbd } from "@krizaka/ui/kbd";
6
+
7
+ const COLLECTIONS = [
8
+ { id: "ui", title: "Krizaka UI", href: "#ui", mark: <ProductLogo id="krizaka" size={26} animated={false} />, description: "Tokens, a Tailwind preset, the components — live, generated from their code.", links: [{ href: "#blocks", label: "Blocks" }, { href: "#layouts", label: "Layouts" }, { href: "#templates", label: "Templates" }] },
9
+ { id: "java", title: "Krizaka Java", href: "#java", mark: <ProductLogo id="krizaka" size={26} animated={false} />, description: "Parent, BOM, starters, messaging, Problem Details.", links: [{ href: "#bom", label: "BOM" }, { href: "#messaging", label: "Messaging" }] },
10
+ { id: "orazaka", brand: "orazaka", title: "Orazaka", href: "#orazaka", mark: <ProductLogo id="orazaka" size={26} animated={false} />, description: "The sovereign AI engine: install, packs, administration.", links: [{ href: "#cli", label: "CLI" }, { href: "#packs", label: "Packs" }, { href: "#admin", label: "Admin" }] },
11
+ { id: "orochia", brand: "orochia", title: "Orochia", href: "#orochia", mark: <ProductLogo id="orochia" size={26} animated={false} />, description: "The creator platform: payments, auctions, the admin console.", links: [{ href: "#payouts", label: "Payouts" }, { href: "#console", label: "Console" }] },
12
+ ];
13
+
14
+ // TEMPLATE — krizaka.com/docs: the search in the middle of the hero (⌘K), the collections each in its product's brand
15
+ // with their quick links, a quick start beside the most read pages, what is new, the owl's promise. On a phone: search,
16
+ // then one collection per row.
17
+ export default function DocsHubPageKrizaka() {
18
+ return (
19
+ <DocsHubPage
20
+ eyebrow="Documentation"
21
+ title="Build with Krizaka"
22
+ lead="Every building block the products are made of, documented from its source."
23
+ search={
24
+ <Button variant="secondary" size="lg" shape="cut" className="w-full justify-between text-fg-secondary">
25
+ Search the documentation <Kbd>⌘K</Kbd>
26
+ </Button>
27
+ }
28
+ searchHints={<>Try: <a href="#cli">orazaka install</a> · <a href="#button">Button</a> · <a href="#bom">BOM</a></>}
29
+ collectionsTitle="Collections"
30
+ collections={COLLECTIONS}
31
+ quickstarts={{ title: "Start in one line", children: <CodeBlock code="npx orazaka install" language="bash" file="Terminal" copyLabel="Copy" copiedLabel="Copied" /> }}
32
+ popular={{ title: "Most read", items: [{ href: "#cli", title: "The CLI", meta: "Orazaka" }, { href: "#button", title: "Button", meta: "Krizaka UI" }, { href: "#bom", title: "The BOM", meta: "Java" }] }}
33
+ whatsNew={{ title: "What's new", items: [{ href: "#ui-260", title: "Page blocks: frame, hero, cards, decisions", meta: "@krizaka/ui 2.6.0" }, { href: "#java-010", title: "The platform kit on Maven Central", meta: "0.1.0" }] }}
34
+ promise={{ label: "The owl's promise", text: "Every page here is generated from the code it documents — when the code changes, the page does." }}
35
+ />
36
+ );
37
+ }
@@ -0,0 +1,4 @@
1
+ import type { ComponentType } from "react";
2
+ /** A named example of the @krizaka/ui registry; `defaultOpen` opens what it opens (a dialog, a menu, toasts) at load. */
3
+ declare const Example: ComponentType<{ defaultOpen?: boolean }>;
4
+ export default Example;
@@ -0,0 +1,24 @@
1
+ "use client";
2
+
3
+ // registry/examples/error-page/not-found.tsx
4
+ import { ActionBar } from "@krizaka/ui/action-bar";
5
+ import { ErrorPage } from "@krizaka/ui/error-page";
6
+ import { Mascot } from "@krizaka/ui/mascots";
7
+ import { SearchField } from "@krizaka/ui/search-field";
8
+ import { jsx } from "react/jsx-runtime";
9
+ function ErrorPageNotFound() {
10
+ return /* @__PURE__ */ jsx(
11
+ ErrorPage,
12
+ {
13
+ code: "404",
14
+ mascot: /* @__PURE__ */ jsx(Mascot, { bird: "pigeon", mood: "empty", size: 96 }),
15
+ title: "This page took another road",
16
+ text: "The address may have changed. Search for it, or start again from one of these.",
17
+ search: /* @__PURE__ */ jsx(SearchField, { label: "Search the site", placeholder: "Search\u2026" }),
18
+ actions: /* @__PURE__ */ jsx(ActionBar, { label: "Ways back", primaryFirst: true, actions: [{ href: "#home", label: "Home" }, { href: "#docs", label: "Documentation" }, { href: "#contact", label: "Contact" }] })
19
+ }
20
+ );
21
+ }
22
+ export {
23
+ ErrorPageNotFound as default
24
+ };
@@ -0,0 +1,19 @@
1
+ import { ActionBar } from "@krizaka/ui/action-bar";
2
+ import { ErrorPage } from "@krizaka/ui/error-page";
3
+ import { Mascot } from "@krizaka/ui/mascots";
4
+ import { SearchField } from "@krizaka/ui/search-field";
5
+
6
+ // TEMPLATE — a page that is not there: the code drawn, the pigeon that lost its way, one sentence, a search, the ways
7
+ // back. Never a dead end.
8
+ export default function ErrorPageNotFound() {
9
+ return (
10
+ <ErrorPage
11
+ code="404"
12
+ mascot={<Mascot bird="pigeon" mood="empty" size={96} />}
13
+ title="This page took another road"
14
+ text="The address may have changed. Search for it, or start again from one of these."
15
+ search={<SearchField label="Search the site" placeholder="Search…" />}
16
+ actions={<ActionBar label="Ways back" primaryFirst actions={[{ href: "#home", label: "Home" }, { href: "#docs", label: "Documentation" }, { href: "#contact", label: "Contact" }]} />}
17
+ />
18
+ );
19
+ }
@@ -0,0 +1,4 @@
1
+ import type { ComponentType } from "react";
2
+ /** A named example of the @krizaka/ui registry; `defaultOpen` opens what it opens (a dialog, a menu, toasts) at load. */
3
+ declare const Example: ComponentType<{ defaultOpen?: boolean }>;
4
+ export default Example;
@@ -0,0 +1,34 @@
1
+ "use client";
2
+
3
+ // registry/examples/gallery-page/made-here.tsx
4
+ import { ChipLink } from "@krizaka/ui/chip-link";
5
+ import { cn } from "@krizaka/ui/cn";
6
+ import { GalleryPage } from "@krizaka/ui/gallery-page";
7
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
8
+ var PIECES = [
9
+ { id: "harbour", title: "Old harbour at dawn", caption: "Flux 1.1 \xB7 seed 4102 \xB7 38 s on a Mac mini", ratio: "aspect-[4/5]" },
10
+ { id: "loft", title: "A loft studio", caption: "Flux 1.1 \xB7 seed 77 \xB7 41 s", ratio: "aspect-video" },
11
+ { id: "market", title: "Jean-Talon market", caption: "Flux 1.1 \xB7 seed 905 \xB7 36 s", ratio: "aspect-square" },
12
+ { id: "snow", title: "First snow, Plateau", caption: "Flux 1.1 \xB7 seed 12 \xB7 39 s", ratio: "aspect-[3/4]" }
13
+ ];
14
+ function GalleryPageMadeHere() {
15
+ return /* @__PURE__ */ jsx(
16
+ GalleryPage,
17
+ {
18
+ brand: "orazaka",
19
+ eyebrow: "Made on this Mac",
20
+ title: "Generated by Orazaka itself",
21
+ lead: "Every image here was made locally, with its prompt and its seed \u2014 nothing came from a cloud.",
22
+ filters: /* @__PURE__ */ jsxs(Fragment, { children: [
23
+ /* @__PURE__ */ jsx(ChipLink, { href: "#all", selected: true, children: "All" }),
24
+ /* @__PURE__ */ jsx(ChipLink, { href: "#images", children: "Images" }),
25
+ /* @__PURE__ */ jsx(ChipLink, { href: "#voice", children: "Voice" })
26
+ ] }),
27
+ galleryLabel: "Pieces",
28
+ items: PIECES.map((p) => ({ id: p.id, title: p.title, caption: p.caption, media: /* @__PURE__ */ jsx("div", { role: "img", "aria-label": p.title, className: cn(p.ratio, "w-full bg-linear-to-br from-accent to-accent-2") }) }))
29
+ }
30
+ );
31
+ }
32
+ export {
33
+ GalleryPageMadeHere as default
34
+ };
@@ -0,0 +1,32 @@
1
+ import { ChipLink } from "@krizaka/ui/chip-link";
2
+ import { cn } from "@krizaka/ui/cn";
3
+ import { GalleryPage } from "@krizaka/ui/gallery-page";
4
+
5
+ const PIECES = [
6
+ { id: "harbour", title: "Old harbour at dawn", caption: "Flux 1.1 · seed 4102 · 38 s on a Mac mini", ratio: "aspect-[4/5]" },
7
+ { id: "loft", title: "A loft studio", caption: "Flux 1.1 · seed 77 · 41 s", ratio: "aspect-video" },
8
+ { id: "market", title: "Jean-Talon market", caption: "Flux 1.1 · seed 905 · 36 s", ratio: "aspect-square" },
9
+ { id: "snow", title: "First snow, Plateau", caption: "Flux 1.1 · seed 12 · 39 s", ratio: "aspect-[3/4]" },
10
+ ];
11
+
12
+ // TEMPLATE — a demo gallery (Orazaka's « Made on this Mac »): the filters as links (the address keeps the choice), the
13
+ // pieces in staggered columns with how each was made. One column on a phone.
14
+ export default function GalleryPageMadeHere() {
15
+ return (
16
+ <GalleryPage
17
+ brand="orazaka"
18
+ eyebrow="Made on this Mac"
19
+ title="Generated by Orazaka itself"
20
+ lead="Every image here was made locally, with its prompt and its seed — nothing came from a cloud."
21
+ filters={
22
+ <>
23
+ <ChipLink href="#all" selected>All</ChipLink>
24
+ <ChipLink href="#images">Images</ChipLink>
25
+ <ChipLink href="#voice">Voice</ChipLink>
26
+ </>
27
+ }
28
+ galleryLabel="Pieces"
29
+ items={PIECES.map((p) => ({ id: p.id, title: p.title, caption: p.caption, media: <div role="img" aria-label={p.title} className={cn(p.ratio, "w-full bg-linear-to-br from-accent to-accent-2")} /> }))}
30
+ />
31
+ );
32
+ }
@@ -0,0 +1,4 @@
1
+ import type { ComponentType } from "react";
2
+ /** A named example of the @krizaka/ui registry; `defaultOpen` opens what it opens (a dialog, a menu, toasts) at load. */
3
+ declare const Example: ComponentType<{ defaultOpen?: boolean }>;
4
+ export default Example;
@@ -0,0 +1,30 @@
1
+ "use client";
2
+
3
+ // registry/examples/how-it-works-page/orazaka.tsx
4
+ import { CodeBlock } from "@krizaka/ui/code-block";
5
+ import { HowItWorksPage } from "@krizaka/ui/how-it-works-page";
6
+ import { Mascot } from "@krizaka/ui/mascots";
7
+ import { jsx } from "react/jsx-runtime";
8
+ var copy = { copyLabel: "Copy", copiedLabel: "Copied" };
9
+ function HowItWorksPageOrazaka() {
10
+ return /* @__PURE__ */ jsx(
11
+ HowItWorksPage,
12
+ {
13
+ brand: "orazaka",
14
+ back: { href: "#orazaka", label: "Orazaka" },
15
+ eyebrow: "How it works",
16
+ title: "The journey of a request",
17
+ lead: "Six stages, the same for every request \u2014 and none of them leaves your server.",
18
+ aside: /* @__PURE__ */ jsx(Mascot, { bird: "duck", mood: "thinking", size: 112 }),
19
+ stepsLabel: "The steps",
20
+ steps: [
21
+ { id: "install", title: "Install", text: "One command pulls the engine, the models you choose and the console.", visual: /* @__PURE__ */ jsx(CodeBlock, { code: "npx orazaka install", language: "bash", file: "Terminal", ...copy }) },
22
+ { id: "guard", title: "Guard", text: "Every request crosses the same interceptors: identity, quotas, the rules of your workspace.", visual: /* @__PURE__ */ jsx(CodeBlock, { code: "orazaka rules add --deny pii-export", language: "bash", file: "Terminal", ...copy }) },
23
+ { id: "answer", title: "Answer", text: "The best local model answers; the answer is checked before it is shown.", visual: /* @__PURE__ */ jsx(CodeBlock, { code: "orazaka chat --model llama3.3", language: "bash", file: "Terminal", ...copy }) }
24
+ ]
25
+ }
26
+ );
27
+ }
28
+ export {
29
+ HowItWorksPageOrazaka as default
30
+ };
@@ -0,0 +1,26 @@
1
+ import { CodeBlock } from "@krizaka/ui/code-block";
2
+ import { HowItWorksPage } from "@krizaka/ui/how-it-works-page";
3
+ import { Mascot } from "@krizaka/ui/mascots";
4
+
5
+ const copy = { copyLabel: "Copy", copiedLabel: "Copied" };
6
+
7
+ // TEMPLATE — how a product works, in steps along a line (Orazaka's journey of a request): each step its words beside
8
+ // its visual, the sides alternating on a wide screen, one column on a phone.
9
+ export default function HowItWorksPageOrazaka() {
10
+ return (
11
+ <HowItWorksPage
12
+ brand="orazaka"
13
+ back={{ href: "#orazaka", label: "Orazaka" }}
14
+ eyebrow="How it works"
15
+ title="The journey of a request"
16
+ lead="Six stages, the same for every request — and none of them leaves your server."
17
+ aside={<Mascot bird="duck" mood="thinking" size={112} />}
18
+ stepsLabel="The steps"
19
+ steps={[
20
+ { id: "install", title: "Install", text: "One command pulls the engine, the models you choose and the console.", visual: <CodeBlock code="npx orazaka install" language="bash" file="Terminal" {...copy} /> },
21
+ { id: "guard", title: "Guard", text: "Every request crosses the same interceptors: identity, quotas, the rules of your workspace.", visual: <CodeBlock code="orazaka rules add --deny pii-export" language="bash" file="Terminal" {...copy} /> },
22
+ { id: "answer", title: "Answer", text: "The best local model answers; the answer is checked before it is shown.", visual: <CodeBlock code="orazaka chat --model llama3.3" language="bash" file="Terminal" {...copy} /> },
23
+ ]}
24
+ />
25
+ );
26
+ }
@@ -0,0 +1,4 @@
1
+ import type { ComponentType } from "react";
2
+ /** A named example of the @krizaka/ui registry; `defaultOpen` opens what it opens (a dialog, a menu, toasts) at load. */
3
+ declare const Example: ComponentType<{ defaultOpen?: boolean }>;
4
+ export default Example;
@@ -0,0 +1,44 @@
1
+ "use client";
2
+
3
+ // registry/examples/landing-page/krizaka.tsx
4
+ import { Button } from "@krizaka/ui/button";
5
+ import { LandingPage } from "@krizaka/ui/landing-page";
6
+ import { Meter } from "@krizaka/ui/meter";
7
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
8
+ function LandingPageKrizaka() {
9
+ return /* @__PURE__ */ jsx(
10
+ LandingPage,
11
+ {
12
+ eyebrow: "Software studio \xB7 Montr\xE9al",
13
+ title: "Products that keep what is yours",
14
+ lead: "Krizaka builds sovereign AI and a platform where creators are paid \u2014 open source, on your servers or ours.",
15
+ actions: /* @__PURE__ */ jsxs(Fragment, { children: [
16
+ /* @__PURE__ */ jsx(Button, { variant: "primary", size: "lg", shape: "cut", shimmer: true, children: "See the products" }),
17
+ /* @__PURE__ */ jsx(Button, { variant: "secondary", size: "lg", shape: "cut", children: "Read the docs" })
18
+ ] }),
19
+ visualLabel: "orazaka.local \u2014 console",
20
+ visual: /* @__PURE__ */ jsxs("div", { className: "grid gap-3 p-5", children: [
21
+ /* @__PURE__ */ jsx("p", { className: "font-mono text-xs text-fg-secondary", children: "$ npx orazaka install" }),
22
+ /* @__PURE__ */ jsx("p", { className: "font-mono text-xs text-fg-success", children: "\u2713 1,284 answers this week, none left the server" }),
23
+ /* @__PURE__ */ jsx(Meter, { label: "Credits", value: 3800, max: 12e3, valueText: "3,800 of 12,000", showLabel: true })
24
+ ] }),
25
+ proofs: [
26
+ { value: "34", label: "public repositories" },
27
+ { value: "Apache-2.0", label: "every line" },
28
+ { value: "0", label: "telemetry calls" }
29
+ ],
30
+ featuresHeading: { eyebrow: "What we build", title: "Three products, one way of building" },
31
+ features: [
32
+ { id: "orazaka", size: "lg", title: "Orazaka \u2014 the AI that never leaves home", text: "Chat, image, voice and video on your own server, one governed pipeline." },
33
+ { id: "orochia", title: "Orochia", text: "Creators paid 90 % of what fans spend." },
34
+ { id: "yazakia", title: "Yazakia", text: "Meet by talking first \u2014 coming." },
35
+ { id: "blocks", size: "md", title: "Open building blocks", text: "Users, billing, notifications \u2014 on Maven Central and npm." },
36
+ { id: "ui", size: "md", title: "One design system", text: "Krizaka UI, web and mobile, documented from its code." }
37
+ ],
38
+ closing: { title: "Something to build together?", body: "Tell us what you need; a person answers within two days.", actions: /* @__PURE__ */ jsx(Button, { variant: "primary", size: "lg", shape: "cut", children: "Contact us" }) }
39
+ }
40
+ );
41
+ }
42
+ export {
43
+ LandingPageKrizaka as default
44
+ };
@@ -0,0 +1,44 @@
1
+ import { Button } from "@krizaka/ui/button";
2
+ import { LandingPage } from "@krizaka/ui/landing-page";
3
+ import { Meter } from "@krizaka/ui/meter";
4
+
5
+ // TEMPLATE — a company's landing (krizaka.com): the promise beside the product alive, a band of proofs, the features
6
+ // as a bento where the main one takes the room, the closing call. On a phone the window follows the words, the bento
7
+ // is one column, the proofs stack.
8
+ export default function LandingPageKrizaka() {
9
+ return (
10
+ <LandingPage
11
+ eyebrow="Software studio · Montréal"
12
+ title="Products that keep what is yours"
13
+ lead="Krizaka builds sovereign AI and a platform where creators are paid — open source, on your servers or ours."
14
+ actions={
15
+ <>
16
+ <Button variant="primary" size="lg" shape="cut" shimmer>See the products</Button>
17
+ <Button variant="secondary" size="lg" shape="cut">Read the docs</Button>
18
+ </>
19
+ }
20
+ visualLabel="orazaka.local — console"
21
+ visual={
22
+ <div className="grid gap-3 p-5">
23
+ <p className="font-mono text-xs text-fg-secondary">$ npx orazaka install</p>
24
+ <p className="font-mono text-xs text-fg-success">✓ 1,284 answers this week, none left the server</p>
25
+ <Meter label="Credits" value={3800} max={12000} valueText="3,800 of 12,000" showLabel />
26
+ </div>
27
+ }
28
+ proofs={[
29
+ { value: "34", label: "public repositories" },
30
+ { value: "Apache-2.0", label: "every line" },
31
+ { value: "0", label: "telemetry calls" },
32
+ ]}
33
+ featuresHeading={{ eyebrow: "What we build", title: "Three products, one way of building" }}
34
+ features={[
35
+ { id: "orazaka", size: "lg", title: "Orazaka — the AI that never leaves home", text: "Chat, image, voice and video on your own server, one governed pipeline." },
36
+ { id: "orochia", title: "Orochia", text: "Creators paid 90 % of what fans spend." },
37
+ { id: "yazakia", title: "Yazakia", text: "Meet by talking first — coming." },
38
+ { id: "blocks", size: "md", title: "Open building blocks", text: "Users, billing, notifications — on Maven Central and npm." },
39
+ { id: "ui", size: "md", title: "One design system", text: "Krizaka UI, web and mobile, documented from its code." },
40
+ ]}
41
+ closing={{ title: "Something to build together?", body: "Tell us what you need; a person answers within two days.", actions: <Button variant="primary" size="lg" shape="cut">Contact us</Button> }}
42
+ />
43
+ );
44
+ }
@@ -0,0 +1,4 @@
1
+ import type { ComponentType } from "react";
2
+ /** A named example of the @krizaka/ui registry; `defaultOpen` opens what it opens (a dialog, a menu, toasts) at load. */
3
+ declare const Example: ComponentType<{ defaultOpen?: boolean }>;
4
+ export default Example;
@@ -0,0 +1,24 @@
1
+ "use client";
2
+
3
+ // registry/examples/legal-page/privacy.tsx
4
+ import { LegalPage } from "@krizaka/ui/legal-page";
5
+ import { jsx } from "react/jsx-runtime";
6
+ function LegalPagePrivacy() {
7
+ return /* @__PURE__ */ jsx(
8
+ LegalPage,
9
+ {
10
+ title: "Privacy policy",
11
+ updated: "Last updated: October 2026",
12
+ summary: "In short: we collect what you send us, keep it in Qu\xE9bec, never sell it, and delete it when you ask.",
13
+ tocLabel: "On this page",
14
+ sections: [
15
+ { id: "collect", title: "What we collect", children: /* @__PURE__ */ jsx("p", { children: "Your email and your message, when you write to us." }) },
16
+ { id: "keep", title: "Where it is kept", children: /* @__PURE__ */ jsx("p", { children: "On servers in Qu\xE9bec, encrypted at rest." }) },
17
+ { id: "rights", title: "Your rights", children: /* @__PURE__ */ jsx("p", { children: "Ask for a copy or for deletion at any time; we answer within 30 days." }) }
18
+ ]
19
+ }
20
+ );
21
+ }
22
+ export {
23
+ LegalPagePrivacy as default
24
+ };
@@ -0,0 +1,19 @@
1
+ import { LegalPage } from "@krizaka/ui/legal-page";
2
+
3
+ // TEMPLATE — a policy: the date in force, the short version in plain words, then the sections with their contents
4
+ // beside them (chips on a phone).
5
+ export default function LegalPagePrivacy() {
6
+ return (
7
+ <LegalPage
8
+ title="Privacy policy"
9
+ updated="Last updated: October 2026"
10
+ summary="In short: we collect what you send us, keep it in Québec, never sell it, and delete it when you ask."
11
+ tocLabel="On this page"
12
+ sections={[
13
+ { id: "collect", title: "What we collect", children: <p>Your email and your message, when you write to us.</p> },
14
+ { id: "keep", title: "Where it is kept", children: <p>On servers in Québec, encrypted at rest.</p> },
15
+ { id: "rights", title: "Your rights", children: <p>Ask for a copy or for deletion at any time; we answer within 30 days.</p> },
16
+ ]}
17
+ />
18
+ );
19
+ }
@@ -0,0 +1,4 @@
1
+ import type { ComponentType } from "react";
2
+ /** A named example of the @krizaka/ui registry; `defaultOpen` opens what it opens (a dialog, a menu, toasts) at load. */
3
+ declare const Example: ComponentType<{ defaultOpen?: boolean }>;
4
+ export default Example;