@krizaka/ui 3.8.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 (342) hide show
  1. package/README.md +13 -9
  2. package/dist/action-bar.js +2 -1
  3. package/dist/action-bar.js.map +1 -1
  4. package/dist/app-shell.d.ts +81 -3
  5. package/dist/app-shell.js +163 -35
  6. package/dist/app-shell.js.map +1 -1
  7. package/dist/audio-player.js +1 -1
  8. package/dist/badge.d.ts +36 -39
  9. package/dist/badge.js +11 -2
  10. package/dist/badge.js.map +1 -1
  11. package/dist/blocks.css +56 -4
  12. package/dist/button-BmCrLCq7.d.ts +114 -0
  13. package/dist/button.d.ts +48 -48
  14. package/dist/button.js +2 -1
  15. package/dist/card.d.ts +111 -111
  16. package/dist/card.js +10 -2
  17. package/dist/card.js.map +1 -1
  18. package/dist/chip.d.ts +24 -24
  19. package/dist/chip.js +10 -2
  20. package/dist/chip.js.map +1 -1
  21. package/dist/{chunk-UOMP6VOZ.js → chunk-276PTQMQ.js} +10 -4
  22. package/dist/chunk-276PTQMQ.js.map +1 -0
  23. package/dist/{chunk-Z6FUPB3Q.js → chunk-2NB27LM7.js} +11 -3
  24. package/dist/chunk-2NB27LM7.js.map +1 -0
  25. package/dist/chunk-2VNYHG4E.js +9 -0
  26. package/dist/chunk-2VNYHG4E.js.map +1 -0
  27. package/dist/{chunk-ND3L5VHT.js → chunk-5Z7FWCV2.js} +2 -2
  28. package/dist/{chunk-YH4LMWRU.js → chunk-7UCPGXKN.js} +11 -3
  29. package/dist/chunk-7UCPGXKN.js.map +1 -0
  30. package/dist/{chunk-AZPKXP3O.js → chunk-AFY35UCB.js} +6 -1
  31. package/dist/{chunk-AZPKXP3O.js.map → chunk-AFY35UCB.js.map} +1 -1
  32. package/dist/{chunk-LCZXS6AK.js → chunk-CKSHLSDH.js} +5 -5
  33. package/dist/chunk-CKSHLSDH.js.map +1 -0
  34. package/dist/chunk-D3T54RSL.js +11 -0
  35. package/dist/chunk-D3T54RSL.js.map +1 -0
  36. package/dist/{chunk-ZKVQGXLD.js → chunk-FKBHWS4N.js} +2 -2
  37. package/dist/{chunk-BRKMQ6JV.js → chunk-FZBWEDQI.js} +1 -23
  38. package/dist/chunk-FZBWEDQI.js.map +1 -0
  39. package/dist/chunk-HG65YAV4.js +379 -0
  40. package/dist/chunk-HG65YAV4.js.map +1 -0
  41. package/dist/{chunk-HCNOOPZE.js → chunk-KVDB4GXV.js} +2 -2
  42. package/dist/chunk-OT6HX3PN.js +85 -0
  43. package/dist/chunk-OT6HX3PN.js.map +1 -0
  44. package/dist/{chunk-RUPNPMP3.js → chunk-OWC2LZD2.js} +11 -3
  45. package/dist/chunk-OWC2LZD2.js.map +1 -0
  46. package/dist/{chunk-FDCMBWUU.js → chunk-REPTKUJ6.js} +4 -4
  47. package/dist/chunk-REPTKUJ6.js.map +1 -0
  48. package/dist/code-block.d.ts +32 -10
  49. package/dist/code-block.js +51 -43
  50. package/dist/code-block.js.map +1 -1
  51. package/dist/combobox.d.ts +3 -3
  52. package/dist/combobox.js +4 -3
  53. package/dist/command.js +3 -2
  54. package/dist/command.js.map +1 -1
  55. package/dist/component-page.js.map +1 -1
  56. package/dist/confirm-button.d.ts +1 -1
  57. package/dist/confirm-button.js +2 -1
  58. package/dist/confirm-button.js.map +1 -1
  59. package/dist/continue-prompt.js +11 -3
  60. package/dist/continue-prompt.js.map +1 -1
  61. package/dist/data-table.js +7 -6
  62. package/dist/data-table.js.map +1 -1
  63. package/dist/date-picker.js +1 -1
  64. package/dist/dialog.js +3 -2
  65. package/dist/dialog.js.map +1 -1
  66. package/dist/file-upload.d.ts +12 -1
  67. package/dist/file-upload.js +73 -89
  68. package/dist/file-upload.js.map +1 -1
  69. package/dist/filter-bar.js +3 -2
  70. package/dist/image-cropper.js +1 -1
  71. package/dist/index.js +9 -367
  72. package/dist/index.js.map +1 -1
  73. package/dist/list.js +1 -1
  74. package/dist/map.js.map +1 -1
  75. package/dist/markdown.d.ts +38 -0
  76. package/dist/markdown.js +150 -0
  77. package/dist/markdown.js.map +1 -0
  78. package/dist/match-dialog.js +2 -1
  79. package/dist/match-dialog.js.map +1 -1
  80. package/dist/media-capture.js +1 -1
  81. package/dist/native/markdown.d.ts +24 -0
  82. package/dist/native/markdown.js +200 -0
  83. package/dist/native/markdown.js.map +1 -0
  84. package/dist/native.d.ts +49 -8
  85. package/dist/native.js +728 -349
  86. package/dist/native.js.map +1 -1
  87. package/dist/nav-bar.d.ts +86 -3
  88. package/dist/nav-bar.js +88 -2
  89. package/dist/nav-bar.js.map +1 -1
  90. package/dist/recipes.d.ts +143 -0
  91. package/dist/recipes.js +180 -0
  92. package/dist/recipes.js.map +1 -0
  93. package/dist/search-field.js +2 -2
  94. package/dist/showcase.d.ts +69 -0
  95. package/dist/showcase.js +218 -0
  96. package/dist/showcase.js.map +1 -0
  97. package/dist/site-footer.d.ts +172 -0
  98. package/dist/site-footer.js +105 -0
  99. package/dist/site-footer.js.map +1 -0
  100. package/dist/sites-CgJrxejx.d.ts +32 -0
  101. package/dist/sites.d.ts +64 -0
  102. package/dist/sites.js +69 -0
  103. package/dist/sites.js.map +1 -0
  104. package/dist/swipe-deck.js +1 -1
  105. package/dist/tag-input.js +4 -3
  106. package/dist/tag-input.js.map +1 -1
  107. package/dist/tag-selector.js +2 -1
  108. package/dist/tag-selector.js.map +1 -1
  109. package/dist/theme.d.ts +1 -1
  110. package/dist/theme.js +2 -1
  111. package/dist/theme.js.map +1 -1
  112. package/dist/tree-view.js +1 -1
  113. package/dist/vertical-video.js +2 -1
  114. package/dist/vertical-video.js.map +1 -1
  115. package/dist/video-player.js +1 -1
  116. package/dist/video-trimmer.js +1 -1
  117. package/dist/virtual.js +2 -2
  118. package/package.json +87 -18
  119. package/registry/achievement.json +1 -1
  120. package/registry/action-bar.json +1 -1
  121. package/registry/activity-feed.json +1 -1
  122. package/registry/alert.json +1 -1
  123. package/registry/app-shell.json +135 -12
  124. package/registry/argument-card.json +1 -1
  125. package/registry/audio-player.json +2 -2
  126. package/registry/auth-layout.json +1 -1
  127. package/registry/avatar.json +1 -1
  128. package/registry/badge.json +9 -3
  129. package/registry/button.json +7 -2
  130. package/registry/card-grid.json +1 -1
  131. package/registry/card.json +8 -3
  132. package/registry/catalogue-page.json +1 -1
  133. package/registry/changelog-page.json +1 -1
  134. package/registry/chat.json +1 -1
  135. package/registry/checkbox.json +1 -1
  136. package/registry/chip-link.json +1 -1
  137. package/registry/chip.json +9 -3
  138. package/registry/choice-grid.json +1 -1
  139. package/registry/code-block.json +65 -21
  140. package/registry/combobox.json +4 -3
  141. package/registry/command.json +1 -1
  142. package/registry/component-page.json +4 -4
  143. package/registry/confirm-button.json +1 -1
  144. package/registry/contact-page.json +1 -1
  145. package/registry/continue-prompt.json +1 -1
  146. package/registry/countdown.json +1 -1
  147. package/registry/cta-panel.json +1 -1
  148. package/registry/dashboard-layout.json +1 -1
  149. package/registry/data-table.json +2 -2
  150. package/registry/date-picker.json +3 -3
  151. package/registry/decision-list.json +1 -1
  152. package/registry/description-list.json +1 -1
  153. package/registry/detail-layout.json +1 -1
  154. package/registry/dialog.json +1 -1
  155. package/registry/docs-article-page.json +1 -1
  156. package/registry/docs-hub-page.json +1 -1
  157. package/registry/docs-layout.json +1 -1
  158. package/registry/dropdown-menu.json +1 -1
  159. package/registry/empty-state.json +1 -1
  160. package/registry/error-page.json +1 -1
  161. package/registry/examples/app-shell/console.d.ts +4 -0
  162. package/registry/examples/app-shell/console.js +93 -0
  163. package/registry/examples/app-shell/console.tsx +103 -0
  164. package/registry/examples/badge/native/dot.dark.png +0 -0
  165. package/registry/examples/badge/native/dot.light.png +0 -0
  166. package/registry/examples/badge/native/scrim.dark.png +0 -0
  167. package/registry/examples/badge/native/scrim.light.png +0 -0
  168. package/registry/examples/badge/native/tones.dark.png +0 -0
  169. package/registry/examples/badge/native/tones.light.png +0 -0
  170. package/registry/examples/card/native/default.dark.png +0 -0
  171. package/registry/examples/card/native/default.light.png +0 -0
  172. package/registry/examples/card/native/elevated.light.png +0 -0
  173. package/registry/examples/chip/native/multiple.dark.png +0 -0
  174. package/registry/examples/chip/native/multiple.light.png +0 -0
  175. package/registry/examples/chip/native/removable.dark.png +0 -0
  176. package/registry/examples/chip/native/removable.light.png +0 -0
  177. package/registry/examples/chip/native/single.dark.png +0 -0
  178. package/registry/examples/chip/native/single.light.png +0 -0
  179. package/registry/examples/chip/native/toggle.dark.png +0 -0
  180. package/registry/examples/chip/native/toggle.light.png +0 -0
  181. package/registry/examples/code-block/annotated.d.ts +4 -0
  182. package/registry/examples/code-block/annotated.js +31 -0
  183. package/registry/examples/code-block/annotated.tsx +26 -0
  184. package/registry/examples/component-page/button.tsx +1 -1
  185. package/registry/examples/form/native/amount.dark.png +0 -0
  186. package/registry/examples/form/native/amount.light.png +0 -0
  187. package/registry/examples/markdown/ai-stream.d.ts +4 -0
  188. package/registry/examples/markdown/ai-stream.js +31 -0
  189. package/registry/examples/markdown/ai-stream.tsx +32 -0
  190. package/registry/examples/markdown/basic.d.ts +4 -0
  191. package/registry/examples/markdown/basic.js +26 -0
  192. package/registry/examples/markdown/basic.tsx +22 -0
  193. package/registry/examples/markdown/native/ai-stream.d.ts +4 -0
  194. package/registry/examples/markdown/native/ai-stream.dark.png +0 -0
  195. package/registry/examples/markdown/native/ai-stream.js +17 -0
  196. package/registry/examples/markdown/native/ai-stream.light.png +0 -0
  197. package/registry/examples/markdown/native/ai-stream.tsx +17 -0
  198. package/registry/examples/markdown/native/basic.d.ts +4 -0
  199. package/registry/examples/markdown/native/basic.dark.png +0 -0
  200. package/registry/examples/markdown/native/basic.js +28 -0
  201. package/registry/examples/markdown/native/basic.light.png +0 -0
  202. package/registry/examples/markdown/native/basic.tsx +27 -0
  203. package/registry/examples/nav-bar/family-admin.d.ts +4 -0
  204. package/registry/examples/nav-bar/family-admin.js +21 -0
  205. package/registry/examples/nav-bar/family-admin.tsx +20 -0
  206. package/registry/examples/nav-bar/family-java.d.ts +4 -0
  207. package/registry/examples/nav-bar/family-java.js +33 -0
  208. package/registry/examples/nav-bar/family-java.tsx +34 -0
  209. package/registry/examples/nav-bar/family-product.d.ts +4 -0
  210. package/registry/examples/nav-bar/family-product.js +35 -0
  211. package/registry/examples/nav-bar/family-product.tsx +39 -0
  212. package/registry/examples/nav-bar/family-ui.d.ts +4 -0
  213. package/registry/examples/nav-bar/family-ui.js +34 -0
  214. package/registry/examples/nav-bar/family-ui.tsx +35 -0
  215. package/registry/examples/nav-bar/family-www.d.ts +4 -0
  216. package/registry/examples/nav-bar/family-www.js +34 -0
  217. package/registry/examples/nav-bar/family-www.tsx +36 -0
  218. package/registry/examples/recipes/tone-chip.d.ts +4 -0
  219. package/registry/examples/recipes/tone-chip.js +46 -0
  220. package/registry/examples/recipes/tone-chip.tsx +32 -0
  221. package/registry/examples/screen/native/profile.dark.png +0 -0
  222. package/registry/examples/screen/native/profile.light.png +0 -0
  223. package/registry/examples/showcase/native/slides.d.ts +4 -0
  224. package/registry/examples/showcase/native/slides.dark.png +0 -0
  225. package/registry/examples/showcase/native/slides.js +27 -0
  226. package/registry/examples/showcase/native/slides.light.png +0 -0
  227. package/registry/examples/showcase/native/slides.tsx +28 -0
  228. package/registry/examples/showcase/prompt-image.d.ts +4 -0
  229. package/registry/examples/showcase/prompt-image.js +29 -0
  230. package/registry/examples/showcase/prompt-image.tsx +28 -0
  231. package/registry/examples/showcase/slides.d.ts +4 -0
  232. package/registry/examples/showcase/slides.js +29 -0
  233. package/registry/examples/showcase/slides.tsx +24 -0
  234. package/registry/examples/site-footer/company.d.ts +4 -0
  235. package/registry/examples/site-footer/company.js +26 -0
  236. package/registry/examples/site-footer/company.tsx +23 -0
  237. package/registry/examples/site-footer/open-source-fr.d.ts +4 -0
  238. package/registry/examples/site-footer/open-source-fr.js +17 -0
  239. package/registry/examples/site-footer/open-source-fr.tsx +17 -0
  240. package/registry/examples/site-footer/product.d.ts +4 -0
  241. package/registry/examples/site-footer/product.js +22 -0
  242. package/registry/examples/site-footer/product.tsx +19 -0
  243. package/registry/examples/sites/family.d.ts +4 -0
  244. package/registry/examples/sites/family.js +20 -0
  245. package/registry/examples/sites/family.tsx +30 -0
  246. package/registry/examples/sites/french.d.ts +4 -0
  247. package/registry/examples/sites/french.js +25 -0
  248. package/registry/examples/sites/french.tsx +25 -0
  249. package/registry/examples/tag-selector/native/interests.dark.png +0 -0
  250. package/registry/examples/tag-selector/native/interests.light.png +0 -0
  251. package/registry/field.json +1 -1
  252. package/registry/file-upload.json +8 -3
  253. package/registry/filter-bar.json +1 -1
  254. package/registry/form.json +2 -2
  255. package/registry/gallery-page.json +1 -1
  256. package/registry/glow-card.json +1 -1
  257. package/registry/goal-gauge.json +1 -1
  258. package/registry/how-it-works-page.json +1 -1
  259. package/registry/image-cropper.json +2 -2
  260. package/registry/index.json +138 -20
  261. package/registry/iso.json +1 -1
  262. package/registry/kanban.json +1 -1
  263. package/registry/kbd.json +1 -1
  264. package/registry/landing-page.json +1 -1
  265. package/registry/landscape.json +1 -1
  266. package/registry/legal-page.json +1 -1
  267. package/registry/link-card.json +1 -1
  268. package/registry/list.json +2 -2
  269. package/registry/loader.json +1 -1
  270. package/registry/longform-page.json +1 -1
  271. package/registry/map.json +3 -3
  272. package/registry/markdown.json +266 -0
  273. package/registry/marketing-layout.json +1 -1
  274. package/registry/marquee.json +1 -1
  275. package/registry/mascot-quote.json +1 -1
  276. package/registry/mascot-state.json +1 -1
  277. package/registry/mascots.json +1 -1
  278. package/registry/match-dialog.json +1 -1
  279. package/registry/media-capture.json +2 -2
  280. package/registry/meter.json +1 -1
  281. package/registry/nav-bar.json +257 -13
  282. package/registry/number-ticker.json +1 -1
  283. package/registry/page-header.json +1 -1
  284. package/registry/page-hero.json +1 -1
  285. package/registry/page.json +1 -1
  286. package/registry/pagination.json +1 -1
  287. package/registry/photo-grid.json +1 -1
  288. package/registry/pointer-light.json +1 -1
  289. package/registry/popover.json +1 -1
  290. package/registry/pricing-page.json +1 -1
  291. package/registry/product-page.json +1 -1
  292. package/registry/profile-card.json +1 -1
  293. package/registry/progress.json +1 -1
  294. package/registry/promise-card.json +1 -1
  295. package/registry/radio-group.json +1 -1
  296. package/registry/recipes.json +99 -0
  297. package/registry/scroll-stage.json +1 -1
  298. package/registry/search-field.json +4 -3
  299. package/registry/section-backdrop.json +1 -1
  300. package/registry/separator.json +1 -1
  301. package/registry/settings-layout.json +1 -1
  302. package/registry/showcase.json +421 -0
  303. package/registry/site-footer.json +389 -0
  304. package/registry/sites.json +93 -0
  305. package/registry/skeleton.json +1 -1
  306. package/registry/skip-link.json +1 -1
  307. package/registry/slider.json +1 -1
  308. package/registry/slot.json +1 -1
  309. package/registry/spinner.json +1 -1
  310. package/registry/split-view.json +1 -1
  311. package/registry/stage-banner.json +1 -1
  312. package/registry/stat.json +1 -1
  313. package/registry/status-page.json +1 -1
  314. package/registry/step-progress.json +1 -1
  315. package/registry/stepper.json +1 -1
  316. package/registry/swipe-deck.json +2 -2
  317. package/registry/switch.json +1 -1
  318. package/registry/tabs.json +1 -1
  319. package/registry/tag-input.json +2 -2
  320. package/registry/tag-selector.json +1 -1
  321. package/registry/terminal-replay.json +1 -1
  322. package/registry/theme.json +1 -1
  323. package/registry/toast.json +1 -1
  324. package/registry/toc.json +1 -1
  325. package/registry/tooltip.json +1 -1
  326. package/registry/tree-view.json +2 -2
  327. package/registry/verified-badge.json +1 -1
  328. package/registry/vertical-video.json +2 -2
  329. package/registry/video-player.json +2 -2
  330. package/registry/video-trimmer.json +2 -2
  331. package/registry/virtual.json +2 -2
  332. package/dist/button-BMAO7dKF.d.ts +0 -114
  333. package/dist/chunk-BRKMQ6JV.js.map +0 -1
  334. package/dist/chunk-FDCMBWUU.js.map +0 -1
  335. package/dist/chunk-LCZXS6AK.js.map +0 -1
  336. package/dist/chunk-RUPNPMP3.js.map +0 -1
  337. package/dist/chunk-UOMP6VOZ.js.map +0 -1
  338. package/dist/chunk-YH4LMWRU.js.map +0 -1
  339. package/dist/chunk-Z6FUPB3Q.js.map +0 -1
  340. /package/dist/{chunk-ND3L5VHT.js.map → chunk-5Z7FWCV2.js.map} +0 -0
  341. /package/dist/{chunk-ZKVQGXLD.js.map → chunk-FKBHWS4N.js.map} +0 -0
  342. /package/dist/{chunk-HCNOOPZE.js.map → chunk-KVDB4GXV.js.map} +0 -0
@@ -0,0 +1,27 @@
1
+ import { Markdown } from "@krizaka/ui/native/markdown";
2
+ import { View } from "react-native";
3
+
4
+ const text = `## What changed in 3.9
5
+
6
+ The queue now **retries** a failed upload with a backoff, and \`pause\` keeps its place.
7
+
8
+ - Pause, resume and retry per file
9
+ - A 429 waits for its \`Retry-After\`
10
+
11
+ | Entry | Size |
12
+ | :--- | ---: |
13
+ | \`@krizaka/pacer\` | 2 kB |
14
+
15
+ \`\`\`ts title="uploads.ts"
16
+ const queue = createQueue({ retries: 3 });
17
+ \`\`\`
18
+ `;
19
+
20
+ // The same text as the web example, in Text and View; a link calls `onLinkPress` with its address.
21
+ export default function NativeMarkdownBasic() {
22
+ return (
23
+ <View style={{ width: 340 }}>
24
+ <Markdown onLinkPress={() => {}}>{text}</Markdown>
25
+ </View>
26
+ );
27
+ }
@@ -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,21 @@
1
+ "use client";
2
+
3
+ // registry/examples/nav-bar/family-admin.tsx
4
+ import { OrochiaLogo } 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
+ function NavBarFamilyAdmin() {
9
+ return /* @__PURE__ */ jsxs(NavBar.Root, { label: "Console", floating: false, compactAfter: false, children: [
10
+ /* @__PURE__ */ jsxs(NavBar.Brand, { href: "#home", children: [
11
+ /* @__PURE__ */ jsx(OrochiaLogo, { size: 22 }),
12
+ "Orochia admin"
13
+ ] }),
14
+ /* @__PURE__ */ jsx(NavBar.Family, { current: "orochia", labels: familyLabels.en }),
15
+ /* @__PURE__ */ jsx(NavBar.Badge, { env: "DEV" }),
16
+ /* @__PURE__ */ jsx(NavBar.Actions, { children: /* @__PURE__ */ jsx(NavBar.Mobile, { openLabel: "Open the menu", closeLabel: "Close the menu", children: /* @__PURE__ */ jsx(NavBar.Family, { current: "orochia", labels: familyLabels.en }) }) })
17
+ ] });
18
+ }
19
+ export {
20
+ NavBarFamilyAdmin as default
21
+ };
@@ -0,0 +1,20 @@
1
+ import { OrochiaLogo } from "@krizaka/ui";
2
+ import { NavBar } from "@krizaka/ui/nav-bar";
3
+ import { familyLabels } from "@krizaka/ui/sites";
4
+
5
+ // admin.<product>: a console — the mark, the family and `DEV`, no sections, a full-width bar. The family still says
6
+ // where the console belongs; the mobile panel holds only the family.
7
+ export default function NavBarFamilyAdmin() {
8
+ return (
9
+ <NavBar.Root label="Console" floating={false} compactAfter={false}>
10
+ <NavBar.Brand href="#home"><OrochiaLogo size={22} />Orochia admin</NavBar.Brand>
11
+ <NavBar.Family current="orochia" labels={familyLabels.en} />
12
+ <NavBar.Badge env="DEV" />
13
+ <NavBar.Actions>
14
+ <NavBar.Mobile openLabel="Open the menu" closeLabel="Close the menu">
15
+ <NavBar.Family current="orochia" labels={familyLabels.en} />
16
+ </NavBar.Mobile>
17
+ </NavBar.Actions>
18
+ </NavBar.Root>
19
+ );
20
+ }
@@ -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/nav-bar/family-java.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: "#blocks", label: "Building blocks" },
11
+ { href: "#guides", label: "Guides" }
12
+ ];
13
+ function NavBarFamilyJava() {
14
+ return /* @__PURE__ */ jsxs(NavBar.Root, { label: "Main", children: [
15
+ /* @__PURE__ */ jsxs(NavBar.Brand, { href: "#home", children: [
16
+ /* @__PURE__ */ jsx(KrizakaLogo, { size: 22 }),
17
+ "Krizaka Java"
18
+ ] }),
19
+ /* @__PURE__ */ jsx(NavBar.Family, { current: "java", labels: familyLabels.en }),
20
+ /* @__PURE__ */ jsx(NavBar.Badge, { version: "0.1.0" }),
21
+ /* @__PURE__ */ jsx(NavBar.Items, { children: links.map((l) => /* @__PURE__ */ jsx(NavBar.Link, { href: l.href, active: l.href === "#blocks", children: l.label }, l.href)) }),
22
+ /* @__PURE__ */ jsxs(NavBar.Actions, { children: [
23
+ /* @__PURE__ */ jsx(NavBar.Repo, { href: "https://github.com/krizaka/krizaka-build", label: "Source on GitHub" }),
24
+ /* @__PURE__ */ jsxs(NavBar.Mobile, { openLabel: "Open the menu", closeLabel: "Close the menu", children: [
25
+ links.map((l) => /* @__PURE__ */ jsx(NavBar.MobileLink, { href: l.href, children: l.label }, l.href)),
26
+ /* @__PURE__ */ jsx(NavBar.Family, { current: "java", labels: familyLabels.en })
27
+ ] })
28
+ ] })
29
+ ] });
30
+ }
31
+ export {
32
+ NavBarFamilyJava as default
33
+ };
@@ -0,0 +1,34 @@
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: "#blocks", label: "Building blocks" },
8
+ { href: "#guides", label: "Guides" },
9
+ ];
10
+
11
+ // java.krizaka.com: Krizaka Java, the version of the building blocks, three sections, the repository.
12
+ export default function NavBarFamilyJava() {
13
+ return (
14
+ <NavBar.Root label="Main">
15
+ <NavBar.Brand href="#home"><KrizakaLogo size={22} />Krizaka Java</NavBar.Brand>
16
+ <NavBar.Family current="java" labels={familyLabels.en} />
17
+ <NavBar.Badge version="0.1.0" />
18
+ <NavBar.Items>
19
+ {links.map((l) => (
20
+ <NavBar.Link key={l.href} href={l.href} active={l.href === "#blocks"}>{l.label}</NavBar.Link>
21
+ ))}
22
+ </NavBar.Items>
23
+ <NavBar.Actions>
24
+ <NavBar.Repo href="https://github.com/krizaka/krizaka-build" label="Source on GitHub" />
25
+ <NavBar.Mobile openLabel="Open the menu" closeLabel="Close the menu">
26
+ {links.map((l) => (
27
+ <NavBar.MobileLink key={l.href} href={l.href}>{l.label}</NavBar.MobileLink>
28
+ ))}
29
+ <NavBar.Family current="java" labels={familyLabels.en} />
30
+ </NavBar.Mobile>
31
+ </NavBar.Actions>
32
+ </NavBar.Root>
33
+ );
34
+ }
@@ -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,35 @@
1
+ "use client";
2
+
3
+ // registry/examples/nav-bar/family-product.tsx
4
+ import { OrazakaLogo } 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: "#how", label: "How it works" },
11
+ { href: "#demo", label: "Demo" },
12
+ { href: "#docs", label: "Docs" }
13
+ ];
14
+ function NavBarFamilyProduct() {
15
+ return /* @__PURE__ */ jsxs(NavBar.Root, { label: "Main", children: [
16
+ /* @__PURE__ */ jsxs(NavBar.Brand, { href: "#home", children: [
17
+ /* @__PURE__ */ jsx(OrazakaLogo, { size: 22 }),
18
+ "Orazaka"
19
+ ] }),
20
+ /* @__PURE__ */ jsx(NavBar.Family, { current: "orazaka", labels: familyLabels.en }),
21
+ /* @__PURE__ */ jsx(NavBar.Badge, { env: "DEV", version: "1.2.3" }),
22
+ /* @__PURE__ */ jsx(NavBar.Items, { children: links.map((l) => /* @__PURE__ */ jsx(NavBar.Link, { href: l.href, active: l.href === "#how", children: l.label }, l.href)) }),
23
+ /* @__PURE__ */ jsxs(NavBar.Actions, { children: [
24
+ /* @__PURE__ */ jsx(NavBar.Repo, { href: "https://github.com/krizaka/orazaka", label: "Source on GitHub" }),
25
+ /* @__PURE__ */ jsx(Button, { asChild: true, variant: "primary", size: "sm", shape: "pill", className: "hidden sm:inline-flex", children: /* @__PURE__ */ jsx("a", { href: "https://www.krizaka.com/contact?topic=orazaka", children: "Talk to us" }) }),
26
+ /* @__PURE__ */ jsxs(NavBar.Mobile, { openLabel: "Open the menu", closeLabel: "Close the menu", children: [
27
+ links.map((l) => /* @__PURE__ */ jsx(NavBar.MobileLink, { href: l.href, children: l.label }, l.href)),
28
+ /* @__PURE__ */ jsx(NavBar.Family, { current: "orazaka", labels: familyLabels.en })
29
+ ] })
30
+ ] })
31
+ ] });
32
+ }
33
+ export {
34
+ NavBarFamilyProduct as default
35
+ };
@@ -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,46 @@
1
+ "use client";
2
+
3
+ // registry/examples/recipes/tone-chip.tsx
4
+ import { defineRecipe, nativeRecipe } from "@krizaka/ui/recipes";
5
+ import { jsx, jsxs } from "react/jsx-runtime";
6
+ var recipe = defineRecipe({
7
+ base: "inline-flex items-center rounded-full font-semibold",
8
+ variants: {
9
+ tone: { calm: "bg-surface-3 text-fg-secondary", loud: "bg-accent text-on-accent hover:bg-accent-hover" },
10
+ size: { sm: "h-7 px-3 text-xs", md: "h-9 px-4 text-sm" }
11
+ },
12
+ defaultVariants: { tone: "calm", size: "md" }
13
+ });
14
+ var phone = nativeRecipe(recipe);
15
+ var theme = { accent: "accent-colour", onAccent: "on-accent-colour", surface3: "surface-colour", textSecondary: "text-colour" };
16
+ function RecipeToneChip() {
17
+ return /* @__PURE__ */ jsx("ul", { className: "grid gap-2 text-sm text-fg", children: ["calm", "loud"].flatMap(
18
+ (tone) => ["sm", "md"].map((size) => {
19
+ const { frame, text, ignored } = phone.resolve({ tone, size }, theme).base;
20
+ return /* @__PURE__ */ jsxs("li", { children: [
21
+ /* @__PURE__ */ jsxs("b", { children: [
22
+ tone,
23
+ " \xB7 ",
24
+ size
25
+ ] }),
26
+ ": ",
27
+ frame.height,
28
+ " pt high, ",
29
+ frame.paddingHorizontal,
30
+ " pt sides, ",
31
+ text.fontSize,
32
+ " pt type, ",
33
+ frame.backgroundColor,
34
+ " behind ",
35
+ text.color,
36
+ /* @__PURE__ */ jsxs("span", { className: "text-fg-secondary", children: [
37
+ " \u2014 web only: ",
38
+ ignored.join(" ")
39
+ ] })
40
+ ] }, `${tone}-${size}`);
41
+ })
42
+ ) });
43
+ }
44
+ export {
45
+ RecipeToneChip as default
46
+ };
@@ -0,0 +1,32 @@
1
+ import { defineRecipe, nativeRecipe } from "@krizaka/ui/recipes";
2
+
3
+ // A recipe is data: the classes of the tokens, written once. `tv(recipe)` makes the web's classes from it; the phone
4
+ // reads the same classes into styles on the roles of its theme.
5
+ const recipe = defineRecipe({
6
+ base: "inline-flex items-center rounded-full font-semibold",
7
+ variants: {
8
+ tone: { calm: "bg-surface-3 text-fg-secondary", loud: "bg-accent text-on-accent hover:bg-accent-hover" },
9
+ size: { sm: "h-7 px-3 text-xs", md: "h-9 px-4 text-sm" },
10
+ },
11
+ defaultVariants: { tone: "calm", size: "md" },
12
+ });
13
+ const phone = nativeRecipe(recipe);
14
+ const theme = { accent: "accent-colour", onAccent: "on-accent-colour", surface3: "surface-colour", textSecondary: "text-colour" };
15
+
16
+ export default function RecipeToneChip() {
17
+ return (
18
+ <ul className="grid gap-2 text-sm text-fg">
19
+ {(["calm", "loud"] as const).flatMap((tone) =>
20
+ (["sm", "md"] as const).map((size) => {
21
+ const { frame, text, ignored } = phone.resolve({ tone, size }, theme).base!;
22
+ return (
23
+ <li key={`${tone}-${size}`}>
24
+ <b>{tone} · {size}</b>: {frame.height} pt high, {frame.paddingHorizontal} pt sides, {text.fontSize} pt type, {frame.backgroundColor} behind {text.color}
25
+ <span className="text-fg-secondary"> — web only: {ignored.join(" ")}</span>
26
+ </li>
27
+ );
28
+ }),
29
+ )}
30
+ </ul>
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,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;