@krizaka/ui 3.9.0 → 3.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 (188) hide show
  1. package/README.md +3 -1
  2. package/dist/chunk-HG65YAV4.js +379 -0
  3. package/dist/chunk-HG65YAV4.js.map +1 -0
  4. package/dist/chunk-OT6HX3PN.js +85 -0
  5. package/dist/chunk-OT6HX3PN.js.map +1 -0
  6. package/dist/index.js +9 -367
  7. package/dist/index.js.map +1 -1
  8. package/dist/native.d.ts +48 -1
  9. package/dist/native.js +374 -257
  10. package/dist/native.js.map +1 -1
  11. package/dist/nav-bar.d.ts +86 -3
  12. package/dist/nav-bar.js +88 -2
  13. package/dist/nav-bar.js.map +1 -1
  14. package/dist/showcase.d.ts +69 -0
  15. package/dist/showcase.js +218 -0
  16. package/dist/showcase.js.map +1 -0
  17. package/dist/site-footer.d.ts +172 -0
  18. package/dist/site-footer.js +105 -0
  19. package/dist/site-footer.js.map +1 -0
  20. package/dist/sites-CgJrxejx.d.ts +32 -0
  21. package/dist/sites.d.ts +64 -0
  22. package/dist/sites.js +69 -0
  23. package/dist/sites.js.map +1 -0
  24. package/package.json +44 -6
  25. package/registry/achievement.json +1 -1
  26. package/registry/action-bar.json +1 -1
  27. package/registry/activity-feed.json +1 -1
  28. package/registry/alert.json +1 -1
  29. package/registry/app-shell.json +1 -1
  30. package/registry/argument-card.json +1 -1
  31. package/registry/audio-player.json +1 -1
  32. package/registry/auth-layout.json +1 -1
  33. package/registry/avatar.json +1 -1
  34. package/registry/badge.json +1 -1
  35. package/registry/button.json +1 -1
  36. package/registry/card-grid.json +1 -1
  37. package/registry/card.json +1 -1
  38. package/registry/catalogue-page.json +1 -1
  39. package/registry/changelog-page.json +1 -1
  40. package/registry/chat.json +1 -1
  41. package/registry/checkbox.json +1 -1
  42. package/registry/chip-link.json +1 -1
  43. package/registry/chip.json +1 -1
  44. package/registry/choice-grid.json +1 -1
  45. package/registry/code-block.json +1 -1
  46. package/registry/combobox.json +1 -1
  47. package/registry/command.json +1 -1
  48. package/registry/component-page.json +1 -1
  49. package/registry/confirm-button.json +1 -1
  50. package/registry/contact-page.json +1 -1
  51. package/registry/continue-prompt.json +1 -1
  52. package/registry/countdown.json +1 -1
  53. package/registry/cta-panel.json +1 -1
  54. package/registry/dashboard-layout.json +1 -1
  55. package/registry/data-table.json +1 -1
  56. package/registry/date-picker.json +1 -1
  57. package/registry/decision-list.json +1 -1
  58. package/registry/description-list.json +1 -1
  59. package/registry/detail-layout.json +1 -1
  60. package/registry/dialog.json +1 -1
  61. package/registry/docs-article-page.json +1 -1
  62. package/registry/docs-hub-page.json +1 -1
  63. package/registry/docs-layout.json +1 -1
  64. package/registry/dropdown-menu.json +1 -1
  65. package/registry/empty-state.json +1 -1
  66. package/registry/error-page.json +1 -1
  67. package/registry/examples/nav-bar/family-admin.d.ts +4 -0
  68. package/registry/examples/nav-bar/family-admin.js +21 -0
  69. package/registry/examples/nav-bar/family-admin.tsx +20 -0
  70. package/registry/examples/nav-bar/family-java.d.ts +4 -0
  71. package/registry/examples/nav-bar/family-java.js +33 -0
  72. package/registry/examples/nav-bar/family-java.tsx +34 -0
  73. package/registry/examples/nav-bar/family-product.d.ts +4 -0
  74. package/registry/examples/nav-bar/family-product.js +35 -0
  75. package/registry/examples/nav-bar/family-product.tsx +39 -0
  76. package/registry/examples/nav-bar/family-ui.d.ts +4 -0
  77. package/registry/examples/nav-bar/family-ui.js +34 -0
  78. package/registry/examples/nav-bar/family-ui.tsx +35 -0
  79. package/registry/examples/nav-bar/family-www.d.ts +4 -0
  80. package/registry/examples/nav-bar/family-www.js +34 -0
  81. package/registry/examples/nav-bar/family-www.tsx +36 -0
  82. package/registry/examples/showcase/native/slides.d.ts +4 -0
  83. package/registry/examples/showcase/native/slides.dark.png +0 -0
  84. package/registry/examples/showcase/native/slides.js +27 -0
  85. package/registry/examples/showcase/native/slides.light.png +0 -0
  86. package/registry/examples/showcase/native/slides.tsx +28 -0
  87. package/registry/examples/showcase/prompt-image.d.ts +4 -0
  88. package/registry/examples/showcase/prompt-image.js +29 -0
  89. package/registry/examples/showcase/prompt-image.tsx +28 -0
  90. package/registry/examples/showcase/slides.d.ts +4 -0
  91. package/registry/examples/showcase/slides.js +29 -0
  92. package/registry/examples/showcase/slides.tsx +24 -0
  93. package/registry/examples/site-footer/company.d.ts +4 -0
  94. package/registry/examples/site-footer/company.js +26 -0
  95. package/registry/examples/site-footer/company.tsx +23 -0
  96. package/registry/examples/site-footer/open-source-fr.d.ts +4 -0
  97. package/registry/examples/site-footer/open-source-fr.js +17 -0
  98. package/registry/examples/site-footer/open-source-fr.tsx +17 -0
  99. package/registry/examples/site-footer/product.d.ts +4 -0
  100. package/registry/examples/site-footer/product.js +22 -0
  101. package/registry/examples/site-footer/product.tsx +19 -0
  102. package/registry/examples/sites/family.d.ts +4 -0
  103. package/registry/examples/sites/family.js +20 -0
  104. package/registry/examples/sites/family.tsx +30 -0
  105. package/registry/examples/sites/french.d.ts +4 -0
  106. package/registry/examples/sites/french.js +25 -0
  107. package/registry/examples/sites/french.tsx +25 -0
  108. package/registry/field.json +1 -1
  109. package/registry/file-upload.json +1 -1
  110. package/registry/filter-bar.json +1 -1
  111. package/registry/form.json +1 -1
  112. package/registry/gallery-page.json +1 -1
  113. package/registry/glow-card.json +1 -1
  114. package/registry/goal-gauge.json +1 -1
  115. package/registry/how-it-works-page.json +1 -1
  116. package/registry/image-cropper.json +1 -1
  117. package/registry/index.json +64 -6
  118. package/registry/iso.json +1 -1
  119. package/registry/kanban.json +1 -1
  120. package/registry/kbd.json +1 -1
  121. package/registry/landing-page.json +1 -1
  122. package/registry/landscape.json +1 -1
  123. package/registry/legal-page.json +1 -1
  124. package/registry/link-card.json +1 -1
  125. package/registry/list.json +1 -1
  126. package/registry/loader.json +1 -1
  127. package/registry/longform-page.json +1 -1
  128. package/registry/map.json +2 -2
  129. package/registry/markdown.json +1 -1
  130. package/registry/marketing-layout.json +1 -1
  131. package/registry/marquee.json +1 -1
  132. package/registry/mascot-quote.json +1 -1
  133. package/registry/mascot-state.json +1 -1
  134. package/registry/mascots.json +1 -1
  135. package/registry/match-dialog.json +1 -1
  136. package/registry/media-capture.json +1 -1
  137. package/registry/meter.json +1 -1
  138. package/registry/nav-bar.json +257 -13
  139. package/registry/number-ticker.json +1 -1
  140. package/registry/page-header.json +1 -1
  141. package/registry/page-hero.json +1 -1
  142. package/registry/page.json +1 -1
  143. package/registry/pagination.json +1 -1
  144. package/registry/photo-grid.json +1 -1
  145. package/registry/pointer-light.json +1 -1
  146. package/registry/popover.json +1 -1
  147. package/registry/pricing-page.json +1 -1
  148. package/registry/product-page.json +1 -1
  149. package/registry/profile-card.json +1 -1
  150. package/registry/progress.json +1 -1
  151. package/registry/promise-card.json +1 -1
  152. package/registry/radio-group.json +1 -1
  153. package/registry/recipes.json +1 -1
  154. package/registry/scroll-stage.json +1 -1
  155. package/registry/search-field.json +1 -1
  156. package/registry/section-backdrop.json +1 -1
  157. package/registry/separator.json +1 -1
  158. package/registry/settings-layout.json +1 -1
  159. package/registry/showcase.json +421 -0
  160. package/registry/site-footer.json +389 -0
  161. package/registry/sites.json +93 -0
  162. package/registry/skeleton.json +1 -1
  163. package/registry/skip-link.json +1 -1
  164. package/registry/slider.json +1 -1
  165. package/registry/slot.json +1 -1
  166. package/registry/spinner.json +1 -1
  167. package/registry/split-view.json +1 -1
  168. package/registry/stage-banner.json +1 -1
  169. package/registry/stat.json +1 -1
  170. package/registry/status-page.json +1 -1
  171. package/registry/step-progress.json +1 -1
  172. package/registry/stepper.json +1 -1
  173. package/registry/swipe-deck.json +1 -1
  174. package/registry/switch.json +1 -1
  175. package/registry/tabs.json +1 -1
  176. package/registry/tag-input.json +1 -1
  177. package/registry/tag-selector.json +1 -1
  178. package/registry/terminal-replay.json +1 -1
  179. package/registry/theme.json +1 -1
  180. package/registry/toast.json +1 -1
  181. package/registry/toc.json +1 -1
  182. package/registry/tooltip.json +1 -1
  183. package/registry/tree-view.json +1 -1
  184. package/registry/verified-badge.json +1 -1
  185. package/registry/vertical-video.json +1 -1
  186. package/registry/video-player.json +1 -1
  187. package/registry/video-trimmer.json +1 -1
  188. package/registry/virtual.json +1 -1
@@ -0,0 +1,39 @@
1
+ import { OrazakaLogo } from "@krizaka/ui";
2
+ import { Button } from "@krizaka/ui/button";
3
+ import { NavBar } from "@krizaka/ui/nav-bar";
4
+ import { familyLabels } from "@krizaka/ui/sites";
5
+
6
+ const links = [
7
+ { href: "#how", label: "How it works" },
8
+ { href: "#demo", label: "Demo" },
9
+ { href: "#docs", label: "Docs" },
10
+ ];
11
+
12
+ // dev.orazaka.com: the product's mark and the family, `DEV · v1.2.3`, three sections, and “Talk to us” on
13
+ // krizaka.com while sign-up is closed.
14
+ export default function NavBarFamilyProduct() {
15
+ return (
16
+ <NavBar.Root label="Main">
17
+ <NavBar.Brand href="#home"><OrazakaLogo size={22} />Orazaka</NavBar.Brand>
18
+ <NavBar.Family current="orazaka" labels={familyLabels.en} />
19
+ <NavBar.Badge env="DEV" version="1.2.3" />
20
+ <NavBar.Items>
21
+ {links.map((l) => (
22
+ <NavBar.Link key={l.href} href={l.href} active={l.href === "#how"}>{l.label}</NavBar.Link>
23
+ ))}
24
+ </NavBar.Items>
25
+ <NavBar.Actions>
26
+ <NavBar.Repo href="https://github.com/krizaka/orazaka" label="Source on GitHub" />
27
+ <Button asChild variant="primary" size="sm" shape="pill" className="hidden sm:inline-flex">
28
+ <a href="https://www.krizaka.com/contact?topic=orazaka">Talk to us</a>
29
+ </Button>
30
+ <NavBar.Mobile openLabel="Open the menu" closeLabel="Close the menu">
31
+ {links.map((l) => (
32
+ <NavBar.MobileLink key={l.href} href={l.href}>{l.label}</NavBar.MobileLink>
33
+ ))}
34
+ <NavBar.Family current="orazaka" labels={familyLabels.en} />
35
+ </NavBar.Mobile>
36
+ </NavBar.Actions>
37
+ </NavBar.Root>
38
+ );
39
+ }
@@ -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/nav-bar/family-ui.tsx
4
+ import { KrizakaLogo } from "@krizaka/ui";
5
+ import { NavBar } from "@krizaka/ui/nav-bar";
6
+ import { familyLabels } from "@krizaka/ui/sites";
7
+ import { jsx, jsxs } from "react/jsx-runtime";
8
+ var links = [
9
+ { href: "#start", label: "Get started" },
10
+ { href: "#foundations", label: "Foundations" },
11
+ { href: "#components", label: "Components" },
12
+ { href: "#templates", label: "Templates" }
13
+ ];
14
+ function NavBarFamilyUi() {
15
+ return /* @__PURE__ */ jsxs(NavBar.Root, { label: "Main", children: [
16
+ /* @__PURE__ */ jsxs(NavBar.Brand, { href: "#home", children: [
17
+ /* @__PURE__ */ jsx(KrizakaLogo, { size: 22 }),
18
+ "Krizaka UI"
19
+ ] }),
20
+ /* @__PURE__ */ jsx(NavBar.Family, { current: "ui", labels: familyLabels.en }),
21
+ /* @__PURE__ */ jsx(NavBar.Badge, { version: "3.9.0" }),
22
+ /* @__PURE__ */ jsx(NavBar.Items, { children: links.map((l) => /* @__PURE__ */ jsx(NavBar.Link, { href: l.href, active: l.href === "#components", children: l.label }, l.href)) }),
23
+ /* @__PURE__ */ jsxs(NavBar.Actions, { children: [
24
+ /* @__PURE__ */ jsx(NavBar.Repo, { href: "https://github.com/krizaka/krizaka-ui", label: "Source on GitHub" }),
25
+ /* @__PURE__ */ jsxs(NavBar.Mobile, { openLabel: "Open the menu", closeLabel: "Close the menu", children: [
26
+ links.map((l) => /* @__PURE__ */ jsx(NavBar.MobileLink, { href: l.href, children: l.label }, l.href)),
27
+ /* @__PURE__ */ jsx(NavBar.Family, { current: "ui", labels: familyLabels.en })
28
+ ] })
29
+ ] })
30
+ ] });
31
+ }
32
+ export {
33
+ NavBarFamilyUi as default
34
+ };
@@ -0,0 +1,35 @@
1
+ import { KrizakaLogo } from "@krizaka/ui";
2
+ import { NavBar } from "@krizaka/ui/nav-bar";
3
+ import { familyLabels } from "@krizaka/ui/sites";
4
+
5
+ const links = [
6
+ { href: "#start", label: "Get started" },
7
+ { href: "#foundations", label: "Foundations" },
8
+ { href: "#components", label: "Components" },
9
+ { href: "#templates", label: "Templates" },
10
+ ];
11
+
12
+ // ui.krizaka.com: Krizaka UI and its family switcher, the version of the packages, four sections, the repository.
13
+ export default function NavBarFamilyUi() {
14
+ return (
15
+ <NavBar.Root label="Main">
16
+ <NavBar.Brand href="#home"><KrizakaLogo size={22} />Krizaka UI</NavBar.Brand>
17
+ <NavBar.Family current="ui" labels={familyLabels.en} />
18
+ <NavBar.Badge version="3.9.0" />
19
+ <NavBar.Items>
20
+ {links.map((l) => (
21
+ <NavBar.Link key={l.href} href={l.href} active={l.href === "#components"}>{l.label}</NavBar.Link>
22
+ ))}
23
+ </NavBar.Items>
24
+ <NavBar.Actions>
25
+ <NavBar.Repo href="https://github.com/krizaka/krizaka-ui" label="Source on GitHub" />
26
+ <NavBar.Mobile openLabel="Open the menu" closeLabel="Close the menu">
27
+ {links.map((l) => (
28
+ <NavBar.MobileLink key={l.href} href={l.href}>{l.label}</NavBar.MobileLink>
29
+ ))}
30
+ <NavBar.Family current="ui" labels={familyLabels.en} />
31
+ </NavBar.Mobile>
32
+ </NavBar.Actions>
33
+ </NavBar.Root>
34
+ );
35
+ }
@@ -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/nav-bar/family-www.tsx
4
+ import { KrizakaLogo } from "@krizaka/ui";
5
+ import { Button } from "@krizaka/ui/button";
6
+ import { NavBar } from "@krizaka/ui/nav-bar";
7
+ import { familyLabels } from "@krizaka/ui/sites";
8
+ import { jsx, jsxs } from "react/jsx-runtime";
9
+ var links = [
10
+ { href: "#products", label: "Products" },
11
+ { href: "#open-source", label: "Open source" },
12
+ { href: "#story", label: "Our story" }
13
+ ];
14
+ function NavBarFamilyWww({ defaultOpen = false }) {
15
+ return /* @__PURE__ */ jsxs(NavBar.Root, { label: "Main", className: defaultOpen ? "mb-[30rem]" : void 0, children: [
16
+ /* @__PURE__ */ jsxs(NavBar.Brand, { href: "#home", children: [
17
+ /* @__PURE__ */ jsx(KrizakaLogo, { size: 22 }),
18
+ "Krizaka"
19
+ ] }),
20
+ /* @__PURE__ */ jsx(NavBar.Family, { current: "krizaka", labels: familyLabels.en, defaultOpen }),
21
+ /* @__PURE__ */ jsx(NavBar.Items, { children: links.map((l) => /* @__PURE__ */ jsx(NavBar.Link, { href: l.href, active: l.href === "#products", children: l.label }, l.href)) }),
22
+ /* @__PURE__ */ jsxs(NavBar.Actions, { children: [
23
+ /* @__PURE__ */ jsx(NavBar.Repo, { href: "https://github.com/krizaka/krizaka-com", label: "Source on GitHub" }),
24
+ /* @__PURE__ */ jsx(Button, { variant: "primary", size: "sm", shape: "pill", className: "hidden sm:inline-flex", children: "Contact" }),
25
+ /* @__PURE__ */ jsxs(NavBar.Mobile, { openLabel: "Open the menu", closeLabel: "Close the menu", children: [
26
+ links.map((l) => /* @__PURE__ */ jsx(NavBar.MobileLink, { href: l.href, children: l.label }, l.href)),
27
+ /* @__PURE__ */ jsx(NavBar.Family, { current: "krizaka", labels: familyLabels.en })
28
+ ] })
29
+ ] })
30
+ ] });
31
+ }
32
+ export {
33
+ NavBarFamilyWww as default
34
+ };
@@ -0,0 +1,36 @@
1
+ import { KrizakaLogo } from "@krizaka/ui";
2
+ import { Button } from "@krizaka/ui/button";
3
+ import { NavBar } from "@krizaka/ui/nav-bar";
4
+ import { familyLabels } from "@krizaka/ui/sites";
5
+
6
+ const links = [
7
+ { href: "#products", label: "Products" },
8
+ { href: "#open-source", label: "Open source" },
9
+ { href: "#story", label: "Our story" },
10
+ ];
11
+
12
+ // www.krizaka.com: who I am (the mark and the family switcher) · this site (three sections) · tools (the repository,
13
+ // one action). The chevron opens the family; the mobile panel ends with it.
14
+ export default function NavBarFamilyWww({ defaultOpen = false }: { defaultOpen?: boolean }) {
15
+ return (
16
+ <NavBar.Root label="Main" className={defaultOpen ? "mb-[30rem]" : undefined}>
17
+ <NavBar.Brand href="#home"><KrizakaLogo size={22} />Krizaka</NavBar.Brand>
18
+ <NavBar.Family current="krizaka" labels={familyLabels.en} defaultOpen={defaultOpen} />
19
+ <NavBar.Items>
20
+ {links.map((l) => (
21
+ <NavBar.Link key={l.href} href={l.href} active={l.href === "#products"}>{l.label}</NavBar.Link>
22
+ ))}
23
+ </NavBar.Items>
24
+ <NavBar.Actions>
25
+ <NavBar.Repo href="https://github.com/krizaka/krizaka-com" label="Source on GitHub" />
26
+ <Button variant="primary" size="sm" shape="pill" className="hidden sm:inline-flex">Contact</Button>
27
+ <NavBar.Mobile openLabel="Open the menu" closeLabel="Close the menu">
28
+ {links.map((l) => (
29
+ <NavBar.MobileLink key={l.href} href={l.href}>{l.label}</NavBar.MobileLink>
30
+ ))}
31
+ <NavBar.Family current="krizaka" labels={familyLabels.en} />
32
+ </NavBar.Mobile>
33
+ </NavBar.Actions>
34
+ </NavBar.Root>
35
+ );
36
+ }
@@ -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,27 @@
1
+ "use client";
2
+
3
+ // registry/examples/showcase/native/slides.tsx
4
+ import { Showcase, Txt } from "@krizaka/ui/native";
5
+ import { View } from "react-native";
6
+ import { jsx } from "react/jsx-runtime";
7
+ var SLIDES = [
8
+ { id: "1", title: "Describe it", body: "Write what you want in a sentence." },
9
+ { id: "2", title: "Generate it", body: "The model runs on your own machine." },
10
+ { id: "3", title: "Reproduce it", body: "Every result keeps its prompt and its seed." }
11
+ ];
12
+ function NativeShowcaseSlides() {
13
+ return /* @__PURE__ */ jsx(View, { style: { width: 360 }, children: /* @__PURE__ */ jsx(
14
+ Showcase,
15
+ {
16
+ label: "How it works",
17
+ items: SLIDES,
18
+ getId: (s) => s.id,
19
+ getTitle: (s) => s.title,
20
+ interval: 5e3,
21
+ renderItem: (s) => /* @__PURE__ */ jsx(View, { style: { padding: 24 }, children: /* @__PURE__ */ jsx(Txt, { children: s.body }) })
22
+ }
23
+ ) });
24
+ }
25
+ export {
26
+ NativeShowcaseSlides as default
27
+ };
@@ -0,0 +1,28 @@
1
+ import { Showcase, Txt } from "@krizaka/ui/native";
2
+ import { View } from "react-native";
3
+
4
+ const SLIDES = [
5
+ { id: "1", title: "Describe it", body: "Write what you want in a sentence." },
6
+ { id: "2", title: "Generate it", body: "The model runs on your own machine." },
7
+ { id: "3", title: "Reproduce it", body: "Every result keeps its prompt and its seed." },
8
+ ];
9
+
10
+ // Swipe or wait: the bar fills over 5 s and moves on; every segment is a button, the pause button stops it.
11
+ export default function NativeShowcaseSlides() {
12
+ return (
13
+ <View style={{ width: 360 }}>
14
+ <Showcase
15
+ label="How it works"
16
+ items={SLIDES}
17
+ getId={(s) => s.id}
18
+ getTitle={(s) => s.title}
19
+ interval={5000}
20
+ renderItem={(s) => (
21
+ <View style={{ padding: 24 }}>
22
+ <Txt>{s.body}</Txt>
23
+ </View>
24
+ )}
25
+ />
26
+ </View>
27
+ );
28
+ }
@@ -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,29 @@
1
+ "use client";
2
+
3
+ // registry/examples/showcase/prompt-image.tsx
4
+ import { Button } from "@krizaka/ui/button";
5
+ import { Showcase, useTypedText } from "@krizaka/ui/showcase";
6
+ import { jsx, jsxs } from "react/jsx-runtime";
7
+ var CDN = "https://krizaka-assets.b-cdn.net/site/people/ui";
8
+ var SHOTS = [
9
+ { id: "a", title: "Golden-hour editorial", prompt: "A woman on a rooftop at golden hour, soft rim light, 85mm.", src: `${CDN}/camille-512.9573eaa0b8.webp` },
10
+ { id: "b", title: "Sunday market", prompt: "A man choosing peaches at a market stall, warm morning haze.", src: `${CDN}/tomas-256.7eaab80903.webp` },
11
+ { id: "c", title: "Backstage", prompt: "A singer in a dressing-room mirror, tungsten bulbs, grain.", src: `${CDN}/noor-256.c340c41421.webp` }
12
+ ];
13
+ function Slide({ shot, active }) {
14
+ const typed = useTypedText(shot.prompt, { active });
15
+ return /* @__PURE__ */ jsxs("div", { className: "grid items-center gap-6 sm:grid-cols-2", children: [
16
+ /* @__PURE__ */ jsx("img", { src: shot.src, alt: shot.title, className: "aspect-square w-full rounded-xl object-cover" }),
17
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-start gap-3", children: [
18
+ /* @__PURE__ */ jsx("p", { className: "sr-only", children: shot.prompt }),
19
+ /* @__PURE__ */ jsx("p", { "aria-hidden": true, className: "m-0 min-h-20 font-mono text-sm text-fg", children: typed.text }),
20
+ /* @__PURE__ */ jsx(Button, { variant: "secondary", size: "sm", children: "Reproduce it" })
21
+ ] })
22
+ ] });
23
+ }
24
+ function ShowcasePromptImage() {
25
+ return /* @__PURE__ */ jsx(Showcase, { label: "Prompt to image", className: "w-full max-w-3xl", items: SHOTS, getId: (s) => s.id, getTitle: (s) => s.title, renderItem: (shot, { active }) => /* @__PURE__ */ jsx(Slide, { shot, active }) });
26
+ }
27
+ export {
28
+ ShowcasePromptImage as default
29
+ };
@@ -0,0 +1,28 @@
1
+ import { Button } from "@krizaka/ui/button";
2
+ import { Showcase, useTypedText } from "@krizaka/ui/showcase";
3
+
4
+ const CDN = "https://krizaka-assets.b-cdn.net/site/people/ui";
5
+ const SHOTS = [
6
+ { id: "a", title: "Golden-hour editorial", prompt: "A woman on a rooftop at golden hour, soft rim light, 85mm.", src: `${CDN}/camille-512.9573eaa0b8.webp` },
7
+ { id: "b", title: "Sunday market", prompt: "A man choosing peaches at a market stall, warm morning haze.", src: `${CDN}/tomas-256.7eaab80903.webp` },
8
+ { id: "c", title: "Backstage", prompt: "A singer in a dressing-room mirror, tungsten bulbs, grain.", src: `${CDN}/noor-256.c340c41421.webp` },
9
+ ];
10
+
11
+ function Slide({ shot, active }: { shot: (typeof SHOTS)[number]; active: boolean }) {
12
+ const typed = useTypedText(shot.prompt, { active });
13
+ return (
14
+ <div className="grid items-center gap-6 sm:grid-cols-2">
15
+ <img src={shot.src} alt={shot.title} className="aspect-square w-full rounded-xl object-cover" />
16
+ <div className="flex flex-col items-start gap-3">
17
+ <p className="sr-only">{shot.prompt}</p>
18
+ <p aria-hidden className="m-0 min-h-20 font-mono text-sm text-fg">{typed.text}</p>
19
+ <Button variant="secondary" size="sm">Reproduce it</Button>
20
+ </div>
21
+ </div>
22
+ );
23
+ }
24
+
25
+ // Image left, prompt and action right; the bar below fills over 6 s and moves on, every segment is a button.
26
+ export default function ShowcasePromptImage() {
27
+ return <Showcase label="Prompt to image" className="w-full max-w-3xl" items={SHOTS} getId={(s) => s.id} getTitle={(s) => s.title} renderItem={(shot, { active }) => <Slide shot={shot} active={active} />} />;
28
+ }
@@ -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,29 @@
1
+ "use client";
2
+
3
+ // registry/examples/showcase/slides.tsx
4
+ import { Showcase } from "@krizaka/ui/showcase";
5
+ import { jsx } from "react/jsx-runtime";
6
+ var SLIDES = [
7
+ { id: "1", title: "Describe it", body: "Write what you want in a sentence." },
8
+ { id: "2", title: "Generate it", body: "The model runs on your own machine." },
9
+ { id: "3", title: "Reproduce it", body: "Every result keeps its prompt and its seed." }
10
+ ];
11
+ function ShowcaseSlides() {
12
+ return /* @__PURE__ */ jsx(
13
+ Showcase,
14
+ {
15
+ label: "How it works",
16
+ className: "w-full max-w-md",
17
+ items: SLIDES,
18
+ getId: (s) => s.id,
19
+ getTitle: (s) => s.title,
20
+ interval: 4e3,
21
+ transition: "slide",
22
+ loop: false,
23
+ renderItem: (s) => /* @__PURE__ */ jsx("p", { className: "m-0 rounded-xl border border-border-default bg-surface-1 p-6 text-fg", children: s.body })
24
+ }
25
+ );
26
+ }
27
+ export {
28
+ ShowcaseSlides as default
29
+ };
@@ -0,0 +1,24 @@
1
+ import { Showcase } from "@krizaka/ui/showcase";
2
+
3
+ const SLIDES = [
4
+ { id: "1", title: "Describe it", body: "Write what you want in a sentence." },
5
+ { id: "2", title: "Generate it", body: "The model runs on your own machine." },
6
+ { id: "3", title: "Reproduce it", body: "Every result keeps its prompt and its seed." },
7
+ ];
8
+
9
+ // Any content in a slide; 4 s each, a slide effect, no loop back to the first. The pointer, a keyboard focus and a hidden tab hold it still.
10
+ export default function ShowcaseSlides() {
11
+ return (
12
+ <Showcase
13
+ label="How it works"
14
+ className="w-full max-w-md"
15
+ items={SLIDES}
16
+ getId={(s) => s.id}
17
+ getTitle={(s) => s.title}
18
+ interval={4000}
19
+ transition="slide"
20
+ loop={false}
21
+ renderItem={(s) => <p className="m-0 rounded-xl border border-border-default bg-surface-1 p-6 text-fg">{s.body}</p>}
22
+ />
23
+ );
24
+ }
@@ -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,26 @@
1
+ "use client";
2
+
3
+ // registry/examples/site-footer/company.tsx
4
+ import { SiteFooter } from "@krizaka/ui/site-footer";
5
+ import { familyLabels } from "@krizaka/ui/sites";
6
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
7
+ function SiteFooterCompany() {
8
+ return /* @__PURE__ */ jsx(
9
+ SiteFooter,
10
+ {
11
+ current: "krizaka",
12
+ labels: familyLabels.en,
13
+ legal: /* @__PURE__ */ jsxs(Fragment, { children: [
14
+ /* @__PURE__ */ jsx(SiteFooter.Link, { href: "#privacy", children: "Privacy" }),
15
+ /* @__PURE__ */ jsx(SiteFooter.Link, { href: "#terms", children: "Terms" })
16
+ ] }),
17
+ children: /* @__PURE__ */ jsxs(SiteFooter.Column, { title: "Company", children: [
18
+ /* @__PURE__ */ jsx(SiteFooter.Link, { href: "#story", active: true, children: "Our story" }),
19
+ /* @__PURE__ */ jsx(SiteFooter.Link, { href: "#contact", children: "Contact" })
20
+ ] })
21
+ }
22
+ );
23
+ }
24
+ export {
25
+ SiteFooterCompany as default
26
+ };
@@ -0,0 +1,23 @@
1
+ import { SiteFooter } from "@krizaka/ui/site-footer";
2
+ import { familyLabels } from "@krizaka/ui/sites";
3
+
4
+ // www.krizaka.com: “A Krizaka company”, the company's own columns, the legal links at the end of the signature line.
5
+ export default function SiteFooterCompany() {
6
+ return (
7
+ <SiteFooter
8
+ current="krizaka"
9
+ labels={familyLabels.en}
10
+ legal={
11
+ <>
12
+ <SiteFooter.Link href="#privacy">Privacy</SiteFooter.Link>
13
+ <SiteFooter.Link href="#terms">Terms</SiteFooter.Link>
14
+ </>
15
+ }
16
+ >
17
+ <SiteFooter.Column title="Company">
18
+ <SiteFooter.Link href="#story" active>Our story</SiteFooter.Link>
19
+ <SiteFooter.Link href="#contact">Contact</SiteFooter.Link>
20
+ </SiteFooter.Column>
21
+ </SiteFooter>
22
+ );
23
+ }
@@ -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,17 @@
1
+ "use client";
2
+
3
+ // registry/examples/site-footer/open-source-fr.tsx
4
+ import { SiteFooter } from "@krizaka/ui/site-footer";
5
+ import { familyLabels } from "@krizaka/ui/sites";
6
+ import { jsx, jsxs } from "react/jsx-runtime";
7
+ function SiteFooterOpenSourceFr() {
8
+ return /* @__PURE__ */ jsx(SiteFooter, { current: "ui", labels: familyLabels.fr, version: "3.9.0", children: /* @__PURE__ */ jsxs(SiteFooter.Column, { title: "Documentation", children: [
9
+ /* @__PURE__ */ jsx(SiteFooter.Link, { href: "#start", children: "D\xE9marrer" }),
10
+ /* @__PURE__ */ jsx(SiteFooter.Link, { href: "#foundations", children: "Fondations" }),
11
+ /* @__PURE__ */ jsx(SiteFooter.Link, { href: "#components", children: "Composants" }),
12
+ /* @__PURE__ */ jsx(SiteFooter.Link, { href: "#templates", children: "Mod\xE8les" })
13
+ ] }) });
14
+ }
15
+ export {
16
+ SiteFooterOpenSourceFr as default
17
+ };
@@ -0,0 +1,17 @@
1
+ import { SiteFooter } from "@krizaka/ui/site-footer";
2
+ import { familyLabels } from "@krizaka/ui/sites";
3
+
4
+ // ui.krizaka.com in French: « Un projet open source de Krizaka », the version of the packages, the words of the family
5
+ // from `familyLabels.fr`.
6
+ export default function SiteFooterOpenSourceFr() {
7
+ return (
8
+ <SiteFooter current="ui" labels={familyLabels.fr} version="3.9.0">
9
+ <SiteFooter.Column title="Documentation">
10
+ <SiteFooter.Link href="#start">Démarrer</SiteFooter.Link>
11
+ <SiteFooter.Link href="#foundations">Fondations</SiteFooter.Link>
12
+ <SiteFooter.Link href="#components">Composants</SiteFooter.Link>
13
+ <SiteFooter.Link href="#templates">Modèles</SiteFooter.Link>
14
+ </SiteFooter.Column>
15
+ </SiteFooter>
16
+ );
17
+ }
@@ -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,22 @@
1
+ "use client";
2
+
3
+ // registry/examples/site-footer/product.tsx
4
+ import { SiteFooter } from "@krizaka/ui/site-footer";
5
+ import { familyLabels } from "@krizaka/ui/sites";
6
+ import { jsx, jsxs } from "react/jsx-runtime";
7
+ function SiteFooterProduct() {
8
+ return /* @__PURE__ */ jsxs(SiteFooter, { current: "orazaka", labels: familyLabels.en, env: "DEV", version: "1.2.3", children: [
9
+ /* @__PURE__ */ jsxs(SiteFooter.Column, { title: "Orazaka", children: [
10
+ /* @__PURE__ */ jsx(SiteFooter.Link, { href: "#how", children: "How it works" }),
11
+ /* @__PURE__ */ jsx(SiteFooter.Link, { href: "#demo", children: "Demo" }),
12
+ /* @__PURE__ */ jsx(SiteFooter.Link, { href: "#docs", children: "Docs" })
13
+ ] }),
14
+ /* @__PURE__ */ jsxs(SiteFooter.Column, { title: "Talk to us", children: [
15
+ /* @__PURE__ */ jsx(SiteFooter.Link, { href: "https://www.krizaka.com/contact?topic=orazaka", children: "Contact" }),
16
+ /* @__PURE__ */ jsx(SiteFooter.Link, { href: "https://github.com/krizaka/orazaka", children: "Source" })
17
+ ] })
18
+ ] });
19
+ }
20
+ export {
21
+ SiteFooterProduct as default
22
+ };
@@ -0,0 +1,19 @@
1
+ import { SiteFooter } from "@krizaka/ui/site-footer";
2
+ import { familyLabels } from "@krizaka/ui/sites";
3
+
4
+ // A product's footer (dev.orazaka.com): its own columns, the family, “A Krizaka product”, the version it runs.
5
+ export default function SiteFooterProduct() {
6
+ return (
7
+ <SiteFooter current="orazaka" labels={familyLabels.en} env="DEV" version="1.2.3">
8
+ <SiteFooter.Column title="Orazaka">
9
+ <SiteFooter.Link href="#how">How it works</SiteFooter.Link>
10
+ <SiteFooter.Link href="#demo">Demo</SiteFooter.Link>
11
+ <SiteFooter.Link href="#docs">Docs</SiteFooter.Link>
12
+ </SiteFooter.Column>
13
+ <SiteFooter.Column title="Talk to us">
14
+ <SiteFooter.Link href="https://www.krizaka.com/contact?topic=orazaka">Contact</SiteFooter.Link>
15
+ <SiteFooter.Link href="https://github.com/krizaka/orazaka">Source</SiteFooter.Link>
16
+ </SiteFooter.Column>
17
+ </SiteFooter>
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,20 @@
1
+ "use client";
2
+
3
+ // registry/examples/sites/family.tsx
4
+ import { familyLabels, sitesByGroup } from "@krizaka/ui/sites";
5
+ import { jsx, jsxs } from "react/jsx-runtime";
6
+ function SitesFamily() {
7
+ const t = familyLabels.en;
8
+ return /* @__PURE__ */ jsx("div", { className: "grid w-full max-w-xl gap-5 sm:grid-cols-2", children: sitesByGroup().map(({ group, sites }) => /* @__PURE__ */ jsxs("section", { "aria-label": t.groups[group], className: "grid content-start gap-2", children: [
9
+ /* @__PURE__ */ jsx("h3", { className: "text-[11px] font-semibold uppercase tracking-wider text-fg-secondary", children: t.groups[group] }),
10
+ /* @__PURE__ */ jsx("ul", { className: "grid gap-2", children: sites.map((site) => /* @__PURE__ */ jsxs("li", { className: "rounded-xl border border-border-subtle bg-surface-1 p-3", children: [
11
+ /* @__PURE__ */ jsx("a", { href: site.url, className: "text-sm font-semibold text-fg", children: site.name }),
12
+ /* @__PURE__ */ jsx("span", { className: "ml-2 font-mono text-xs text-fg-secondary", children: site.host }),
13
+ site.status !== "released" && /* @__PURE__ */ jsx("span", { className: "ml-2 rounded-full bg-surface-3 px-1.5 text-[10px] font-semibold uppercase text-fg-secondary", children: t.status[site.status] }),
14
+ /* @__PURE__ */ jsx("p", { className: "mt-1 text-xs text-fg-secondary", children: t.descriptions[site.id] })
15
+ ] }, site.id)) })
16
+ ] }, group)) });
17
+ }
18
+ export {
19
+ SitesFamily as default
20
+ };
@@ -0,0 +1,30 @@
1
+ import { familyLabels, sitesByGroup } from "@krizaka/ui/sites";
2
+
3
+ // The family as data: every site of Krizaka, grouped as the bar's switcher and the footer show it. A new site is one
4
+ // release of @krizaka/ui — every bar and every footer follow.
5
+ export default function SitesFamily() {
6
+ const t = familyLabels.en;
7
+ return (
8
+ <div className="grid w-full max-w-xl gap-5 sm:grid-cols-2">
9
+ {sitesByGroup().map(({ group, sites }) => (
10
+ <section key={group} aria-label={t.groups[group]} className="grid content-start gap-2">
11
+ <h3 className="text-[11px] font-semibold uppercase tracking-wider text-fg-secondary">{t.groups[group]}</h3>
12
+ <ul className="grid gap-2">
13
+ {sites.map((site) => (
14
+ <li key={site.id} className="rounded-xl border border-border-subtle bg-surface-1 p-3">
15
+ <a href={site.url} className="text-sm font-semibold text-fg">{site.name}</a>
16
+ <span className="ml-2 font-mono text-xs text-fg-secondary">{site.host}</span>
17
+ {site.status !== "released" && (
18
+ <span className="ml-2 rounded-full bg-surface-3 px-1.5 text-[10px] font-semibold uppercase text-fg-secondary">
19
+ {t.status[site.status]}
20
+ </span>
21
+ )}
22
+ <p className="mt-1 text-xs text-fg-secondary">{t.descriptions[site.id]}</p>
23
+ </li>
24
+ ))}
25
+ </ul>
26
+ </section>
27
+ ))}
28
+ </div>
29
+ );
30
+ }
@@ -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,25 @@
1
+ "use client";
2
+
3
+ // registry/examples/sites/french.tsx
4
+ import { familyLabels, siteById } from "@krizaka/ui/sites";
5
+ import { jsx, jsxs } from "react/jsx-runtime";
6
+ var ids = ["orazaka", "orochia", "yasakia", "yororis"];
7
+ function SitesFrench() {
8
+ const t = familyLabels.fr;
9
+ return /* @__PURE__ */ jsx("dl", { className: "grid w-full max-w-md gap-3", children: ids.map((id) => {
10
+ const site = siteById(id);
11
+ return /* @__PURE__ */ jsxs("div", { className: "grid gap-0.5", children: [
12
+ /* @__PURE__ */ jsxs("dt", { className: "text-sm font-semibold text-fg", children: [
13
+ site.name,
14
+ site.status !== "released" && /* @__PURE__ */ jsxs("span", { className: "ml-2 text-xs font-normal text-fg-secondary", children: [
15
+ "\xB7 ",
16
+ t.status[site.status]
17
+ ] })
18
+ ] }),
19
+ /* @__PURE__ */ jsx("dd", { className: "text-xs text-fg-secondary", children: t.descriptions[id] })
20
+ ] }, id);
21
+ }) });
22
+ }
23
+ export {
24
+ SitesFrench as default
25
+ };