@krizaka/ui 3.5.0 → 3.7.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 (285) hide show
  1. package/README.md +1 -0
  2. package/dist/app-shell.d.ts +24 -22
  3. package/dist/app-shell.js +9 -3
  4. package/dist/app-shell.js.map +1 -1
  5. package/dist/chat.js +2 -1
  6. package/dist/chat.js.map +1 -1
  7. package/dist/chunk-3GODX3D6.js +25 -0
  8. package/dist/chunk-3GODX3D6.js.map +1 -0
  9. package/dist/{chunk-F2GKFIYK.js → chunk-CURW36FI.js} +1 -1
  10. package/dist/chunk-JXLDUDTD.js +2 -0
  11. package/dist/chunk-JXLDUDTD.js.map +1 -0
  12. package/dist/{chunk-R6SDS7JM.js → chunk-ND3L5VHT.js} +25 -2
  13. package/dist/chunk-ND3L5VHT.js.map +1 -0
  14. package/dist/chunk-NPF3OHE2.js +2 -0
  15. package/dist/chunk-NPF3OHE2.js.map +1 -0
  16. package/dist/{chunk-ECSCA3CN.js → chunk-UOMP6VOZ.js} +1 -1
  17. package/dist/command.js +1 -1
  18. package/dist/data-table.js +2 -1
  19. package/dist/data-table.js.map +1 -1
  20. package/dist/dialog.js +7 -3
  21. package/dist/dialog.js.map +1 -1
  22. package/dist/loader.d.ts +21 -1
  23. package/dist/loader.js +7 -3
  24. package/dist/loader.js.map +1 -1
  25. package/dist/map.js +7 -1
  26. package/dist/map.js.map +1 -1
  27. package/dist/marketing-layout.d.ts +3 -9
  28. package/dist/marketing-layout.js +24 -7
  29. package/dist/marketing-layout.js.map +1 -1
  30. package/dist/match-dialog.d.ts +3 -1
  31. package/dist/match-dialog.js +29 -5
  32. package/dist/match-dialog.js.map +1 -1
  33. package/dist/native/vertical-video.d.ts +102 -0
  34. package/dist/native/vertical-video.js +163 -0
  35. package/dist/native/vertical-video.js.map +1 -0
  36. package/dist/native.d.ts +65 -2
  37. package/dist/native.js +960 -878
  38. package/dist/native.js.map +1 -1
  39. package/dist/skip-link.d.ts +15 -0
  40. package/dist/skip-link.js +10 -0
  41. package/dist/skip-link.js.map +1 -0
  42. package/dist/tree-view.d.ts +2 -0
  43. package/dist/tree-view.js.map +1 -1
  44. package/dist/vertical-video.d.ts +112 -0
  45. package/dist/vertical-video.js +307 -0
  46. package/dist/vertical-video.js.map +1 -0
  47. package/package.json +56 -8
  48. package/registry/achievement.json +2 -1
  49. package/registry/action-bar.json +2 -1
  50. package/registry/action-sheet.json +1 -0
  51. package/registry/activity-feed.json +2 -1
  52. package/registry/alert.json +2 -1
  53. package/registry/app-shell.json +27 -5
  54. package/registry/argument-card.json +2 -1
  55. package/registry/audio-player.json +2 -1
  56. package/registry/auth-layout.json +7 -2
  57. package/registry/avatar.json +7 -6
  58. package/registry/badge.json +2 -1
  59. package/registry/button.json +2 -1
  60. package/registry/card-grid.json +2 -1
  61. package/registry/card.json +2 -1
  62. package/registry/catalogue-page.json +5 -2
  63. package/registry/changelog-page.json +5 -2
  64. package/registry/chat.json +2 -1
  65. package/registry/checkbox.json +2 -1
  66. package/registry/chip-link.json +2 -1
  67. package/registry/chip.json +2 -1
  68. package/registry/choice-grid.json +2 -1
  69. package/registry/cn.json +1 -0
  70. package/registry/code-block.json +2 -1
  71. package/registry/combobox.json +2 -1
  72. package/registry/command.json +2 -1
  73. package/registry/component-page.json +5 -2
  74. package/registry/confirm-button.json +2 -1
  75. package/registry/contact-page.json +5 -2
  76. package/registry/continue-prompt.json +2 -1
  77. package/registry/countdown.json +2 -1
  78. package/registry/cta-panel.json +2 -1
  79. package/registry/dashboard-layout.json +5 -2
  80. package/registry/data-table.json +2 -1
  81. package/registry/date-picker.json +3 -2
  82. package/registry/decision-list.json +2 -1
  83. package/registry/description-list.json +2 -1
  84. package/registry/detail-layout.json +16 -2
  85. package/registry/dialog.json +10 -4
  86. package/registry/docs-article-page.json +16 -2
  87. package/registry/docs-hub-page.json +5 -2
  88. package/registry/docs-layout.json +2 -1
  89. package/registry/dropdown-menu.json +2 -1
  90. package/registry/empty-state.json +14 -2
  91. package/registry/error-page.json +5 -2
  92. package/registry/examples/avatar/group.js +4 -7
  93. package/registry/examples/avatar/group.tsx +4 -11
  94. package/registry/examples/avatar/native/group.dark.png +0 -0
  95. package/registry/examples/avatar/native/group.js +4 -4
  96. package/registry/examples/avatar/native/group.light.png +0 -0
  97. package/registry/examples/avatar/native/group.tsx +4 -4
  98. package/registry/examples/avatar/native/presence.dark.png +0 -0
  99. package/registry/examples/avatar/native/presence.js +8 -5
  100. package/registry/examples/avatar/native/presence.light.png +0 -0
  101. package/registry/examples/avatar/native/presence.tsx +9 -5
  102. package/registry/examples/avatar/with-image.js +1 -4
  103. package/registry/examples/avatar/with-image.tsx +2 -9
  104. package/registry/examples/detail-layout/checkout.d.ts +4 -0
  105. package/registry/examples/detail-layout/checkout.js +37 -0
  106. package/registry/examples/detail-layout/checkout.tsx +44 -0
  107. package/registry/examples/docs-article-page/faq.d.ts +4 -0
  108. package/registry/examples/docs-article-page/faq.js +31 -0
  109. package/registry/examples/docs-article-page/faq.tsx +40 -0
  110. package/registry/examples/empty-state/library.d.ts +4 -0
  111. package/registry/examples/empty-state/library.js +25 -0
  112. package/registry/examples/empty-state/library.tsx +20 -0
  113. package/registry/examples/loader/branded.d.ts +4 -0
  114. package/registry/examples/loader/branded.js +12 -0
  115. package/registry/examples/loader/branded.tsx +7 -0
  116. package/registry/examples/loader/native/branded.d.ts +4 -0
  117. package/registry/examples/loader/native/branded.dark.png +0 -0
  118. package/registry/examples/loader/native/branded.js +12 -0
  119. package/registry/examples/loader/native/branded.light.png +0 -0
  120. package/registry/examples/loader/native/branded.tsx +11 -0
  121. package/registry/examples/longform-page/case-study.d.ts +4 -0
  122. package/registry/examples/longform-page/case-study.js +41 -0
  123. package/registry/examples/longform-page/case-study.tsx +40 -0
  124. package/registry/examples/profile-card/creator.js +2 -2
  125. package/registry/examples/profile-card/creator.tsx +2 -2
  126. package/registry/examples/profile-card/match.js +2 -2
  127. package/registry/examples/profile-card/match.tsx +2 -2
  128. package/registry/examples/profile-card/native/default.dark.png +0 -0
  129. package/registry/examples/profile-card/native/default.js +2 -2
  130. package/registry/examples/profile-card/native/default.light.png +0 -0
  131. package/registry/examples/profile-card/native/default.tsx +2 -2
  132. package/registry/examples/pull-to-refresh/native/branded.d.ts +4 -0
  133. package/registry/examples/pull-to-refresh/native/branded.dark.png +0 -0
  134. package/registry/examples/pull-to-refresh/native/branded.js +14 -0
  135. package/registry/examples/pull-to-refresh/native/branded.light.png +0 -0
  136. package/registry/examples/pull-to-refresh/native/branded.tsx +23 -0
  137. package/registry/examples/screen/native/app-shell.dark.png +0 -0
  138. package/registry/examples/screen/native/app-shell.js +1 -1
  139. package/registry/examples/screen/native/app-shell.light.png +0 -0
  140. package/registry/examples/screen/native/app-shell.tsx +1 -1
  141. package/registry/examples/screen/native/feed.dark.png +0 -0
  142. package/registry/examples/screen/native/feed.js +31 -14
  143. package/registry/examples/screen/native/feed.light.png +0 -0
  144. package/registry/examples/screen/native/feed.tsx +28 -24
  145. package/registry/examples/screen/native/map.d.ts +4 -0
  146. package/registry/examples/screen/native/map.dark.png +0 -0
  147. package/registry/examples/screen/native/map.js +26 -0
  148. package/registry/examples/screen/native/map.light.png +0 -0
  149. package/registry/examples/screen/native/map.tsx +31 -0
  150. package/registry/examples/screen/native/notifications.d.ts +4 -0
  151. package/registry/examples/screen/native/notifications.dark.png +0 -0
  152. package/registry/examples/screen/native/notifications.js +21 -0
  153. package/registry/examples/screen/native/notifications.light.png +0 -0
  154. package/registry/examples/screen/native/notifications.tsx +21 -0
  155. package/registry/examples/screen/native/profile.dark.png +0 -0
  156. package/registry/examples/screen/native/profile.js +2 -2
  157. package/registry/examples/screen/native/profile.light.png +0 -0
  158. package/registry/examples/screen/native/profile.tsx +2 -2
  159. package/registry/examples/skip-link/default.d.ts +4 -0
  160. package/registry/examples/skip-link/default.js +19 -0
  161. package/registry/examples/skip-link/default.tsx +12 -0
  162. package/registry/examples/splash-handoff/native/default.d.ts +4 -0
  163. package/registry/examples/splash-handoff/native/default.dark.png +0 -0
  164. package/registry/examples/splash-handoff/native/default.js +12 -0
  165. package/registry/examples/splash-handoff/native/default.light.png +0 -0
  166. package/registry/examples/splash-handoff/native/default.tsx +11 -0
  167. package/registry/examples/split-view/nearby.d.ts +4 -0
  168. package/registry/examples/split-view/nearby.js +33 -0
  169. package/registry/examples/split-view/nearby.tsx +45 -0
  170. package/registry/examples/split-view/notifications.d.ts +4 -0
  171. package/registry/examples/split-view/notifications.js +33 -0
  172. package/registry/examples/split-view/notifications.tsx +31 -0
  173. package/registry/examples/status-page/maintenance.d.ts +4 -0
  174. package/registry/examples/status-page/maintenance.js +29 -0
  175. package/registry/examples/status-page/maintenance.tsx +24 -0
  176. package/registry/examples/swipe-deck/discover.js +2 -3
  177. package/registry/examples/swipe-deck/discover.tsx +2 -3
  178. package/registry/examples/swipe-deck/native/discover.dark.png +0 -0
  179. package/registry/examples/swipe-deck/native/discover.js +2 -3
  180. package/registry/examples/swipe-deck/native/discover.light.png +0 -0
  181. package/registry/examples/swipe-deck/native/discover.tsx +2 -3
  182. package/registry/examples/vertical-video/feed.d.ts +4 -0
  183. package/registry/examples/vertical-video/feed.js +40 -0
  184. package/registry/examples/vertical-video/feed.tsx +36 -0
  185. package/registry/examples/vertical-video/native/rail.d.ts +4 -0
  186. package/registry/examples/vertical-video/native/rail.dark.png +0 -0
  187. package/registry/examples/vertical-video/native/rail.js +39 -0
  188. package/registry/examples/vertical-video/native/rail.light.png +0 -0
  189. package/registry/examples/vertical-video/native/rail.tsx +37 -0
  190. package/registry/examples/vertical-video/rail.d.ts +4 -0
  191. package/registry/examples/vertical-video/rail.js +39 -0
  192. package/registry/examples/vertical-video/rail.tsx +39 -0
  193. package/registry/fab.json +1 -0
  194. package/registry/field.json +2 -1
  195. package/registry/file-upload.json +3 -2
  196. package/registry/filter-bar.json +2 -1
  197. package/registry/form.json +3 -2
  198. package/registry/gallery-page.json +5 -2
  199. package/registry/glow-card.json +2 -1
  200. package/registry/goal-gauge.json +2 -1
  201. package/registry/header.json +1 -0
  202. package/registry/how-it-works-page.json +5 -2
  203. package/registry/image-cropper.json +2 -1
  204. package/registry/image-viewer.json +1 -0
  205. package/registry/index.json +492 -22
  206. package/registry/iso.json +2 -1
  207. package/registry/kanban.json +2 -1
  208. package/registry/kbd.json +2 -1
  209. package/registry/landing-page.json +5 -2
  210. package/registry/landscape.json +2 -1
  211. package/registry/legal-page.json +5 -2
  212. package/registry/link-card.json +2 -1
  213. package/registry/list.json +2 -1
  214. package/registry/loader.json +47 -3
  215. package/registry/longform-page.json +16 -2
  216. package/registry/map.json +4 -3
  217. package/registry/marketing-layout.json +13 -4
  218. package/registry/marquee.json +2 -1
  219. package/registry/mascot-quote.json +2 -1
  220. package/registry/mascot-state.json +2 -1
  221. package/registry/mascots.json +2 -1
  222. package/registry/match-dialog.json +17 -2
  223. package/registry/media-capture.json +2 -1
  224. package/registry/media-picker.json +1 -0
  225. package/registry/meter.json +2 -1
  226. package/registry/nav-bar.json +2 -1
  227. package/registry/number-ticker.json +2 -1
  228. package/registry/onboarding.json +1 -0
  229. package/registry/otp-input.json +1 -0
  230. package/registry/page-header.json +2 -1
  231. package/registry/page-hero.json +2 -1
  232. package/registry/page.json +2 -1
  233. package/registry/pagination.json +2 -1
  234. package/registry/permission-prompt.json +1 -0
  235. package/registry/photo-grid.json +2 -1
  236. package/registry/pointer-light.json +2 -1
  237. package/registry/popover.json +2 -1
  238. package/registry/pricing-page.json +5 -2
  239. package/registry/product-page.json +5 -2
  240. package/registry/profile-card.json +6 -5
  241. package/registry/progress.json +2 -1
  242. package/registry/promise-card.json +2 -1
  243. package/registry/pull-to-refresh.json +68 -4
  244. package/registry/radio-group.json +2 -1
  245. package/registry/screen.json +55 -6
  246. package/registry/scroll-stage.json +2 -1
  247. package/registry/search-field.json +2 -1
  248. package/registry/section-backdrop.json +2 -1
  249. package/registry/segmented.json +1 -0
  250. package/registry/separator.json +2 -1
  251. package/registry/settings-layout.json +5 -2
  252. package/registry/skeleton.json +2 -1
  253. package/registry/skip-link.json +122 -0
  254. package/registry/slider.json +2 -1
  255. package/registry/slot.json +2 -1
  256. package/registry/spinner.json +2 -1
  257. package/registry/splash-handoff.json +138 -0
  258. package/registry/split-view.json +27 -2
  259. package/registry/stage-banner.json +2 -1
  260. package/registry/stat.json +2 -1
  261. package/registry/status-page.json +18 -2
  262. package/registry/step-progress.json +2 -1
  263. package/registry/stepper.json +2 -1
  264. package/registry/swipe-deck.json +5 -4
  265. package/registry/swipeable-row.json +1 -0
  266. package/registry/switch.json +2 -1
  267. package/registry/tab-bar.json +1 -0
  268. package/registry/tabs.json +2 -1
  269. package/registry/tag-input.json +2 -1
  270. package/registry/tag-selector.json +2 -1
  271. package/registry/terminal-replay.json +2 -1
  272. package/registry/theme.json +2 -1
  273. package/registry/toast.json +2 -1
  274. package/registry/toc.json +2 -1
  275. package/registry/tooltip.json +2 -1
  276. package/registry/tree-view.json +10 -4
  277. package/registry/txt.json +1 -0
  278. package/registry/verified-badge.json +2 -1
  279. package/registry/vertical-video.json +871 -0
  280. package/registry/video-player.json +2 -1
  281. package/registry/video-trimmer.json +2 -1
  282. package/registry/virtual.json +2 -1
  283. package/dist/chunk-R6SDS7JM.js.map +0 -1
  284. /package/dist/{chunk-F2GKFIYK.js.map → chunk-CURW36FI.js.map} +0 -0
  285. /package/dist/{chunk-ECSCA3CN.js.map → chunk-UOMP6VOZ.js.map} +0 -0
@@ -5,10 +5,10 @@ import { Avatar } from "@krizaka/ui/native";
5
5
  import { jsx, jsxs } from "react/jsx-runtime";
6
6
  function NativeAvatarGroup() {
7
7
  return /* @__PURE__ */ jsxs(Avatar.Group, { max: 3, size: "md", children: [
8
- /* @__PURE__ */ jsx(Avatar, { alt: "Maya" }),
9
- /* @__PURE__ */ jsx(Avatar, { alt: "Noor" }),
10
- /* @__PURE__ */ jsx(Avatar, { alt: "Ines" }),
11
- /* @__PURE__ */ jsx(Avatar, { alt: "Theo" }),
8
+ /* @__PURE__ */ jsx(Avatar, { src: "https://krizaka-assets.b-cdn.net/site/people/ui/camille-256.dc2943029a.webp", alt: "Camille" }),
9
+ /* @__PURE__ */ jsx(Avatar, { src: "https://krizaka-assets.b-cdn.net/site/people/ui/noor-256.c340c41421.webp", alt: "Noor" }),
10
+ /* @__PURE__ */ jsx(Avatar, { src: "https://krizaka-assets.b-cdn.net/site/people/ui/tomas-256.7eaab80903.webp", alt: "Tom\xE1s" }),
11
+ /* @__PURE__ */ jsx(Avatar, { src: "https://krizaka-assets.b-cdn.net/site/people/ui/ada-256.31a5ce640c.webp", alt: "Ada" }),
12
12
  /* @__PURE__ */ jsx(Avatar, { alt: "Lou" })
13
13
  ] });
14
14
  }
@@ -3,10 +3,10 @@ import { Avatar } from "@krizaka/ui/native";
3
3
  export default function NativeAvatarGroup() {
4
4
  return (
5
5
  <Avatar.Group max={3} size="md">
6
- <Avatar alt="Maya" />
7
- <Avatar alt="Noor" />
8
- <Avatar alt="Ines" />
9
- <Avatar alt="Theo" />
6
+ <Avatar src="https://krizaka-assets.b-cdn.net/site/people/ui/camille-256.dc2943029a.webp" alt="Camille" />
7
+ <Avatar src="https://krizaka-assets.b-cdn.net/site/people/ui/noor-256.c340c41421.webp" alt="Noor" />
8
+ <Avatar src="https://krizaka-assets.b-cdn.net/site/people/ui/tomas-256.7eaab80903.webp" alt="Tomás" />
9
+ <Avatar src="https://krizaka-assets.b-cdn.net/site/people/ui/ada-256.31a5ce640c.webp" alt="Ada" />
10
10
  <Avatar alt="Lou" />
11
11
  </Avatar.Group>
12
12
  );
@@ -4,13 +4,16 @@
4
4
  import { Avatar } from "@krizaka/ui/native";
5
5
  import { View } from "react-native";
6
6
  import { jsx, jsxs } from "react/jsx-runtime";
7
+ var CAMILLE = "https://krizaka-assets.b-cdn.net/site/people/ui/camille-256.dc2943029a.webp";
8
+ var TOMAS = "https://krizaka-assets.b-cdn.net/site/people/ui/tomas-256.7eaab80903.webp";
9
+ var NOOR = "https://krizaka-assets.b-cdn.net/site/people/ui/noor-256.c340c41421.webp";
7
10
  function NativeAvatarPresence() {
8
11
  return /* @__PURE__ */ jsxs(View, { style: { flexDirection: "row", gap: 16, alignItems: "center" }, children: [
9
- /* @__PURE__ */ jsx(Avatar, { alt: "Elena", size: "lg", presence: "online", presenceLabel: "online" }),
10
- /* @__PURE__ */ jsx(Avatar, { alt: "Alex", size: "lg", presence: "away", presenceLabel: "away" }),
11
- /* @__PURE__ */ jsx(Avatar, { alt: "Mina", size: "lg", presence: "offline", presenceLabel: "offline" }),
12
- /* @__PURE__ */ jsx(Avatar, { alt: "Elena's story, new", size: "lg", ring: "story" }),
13
- /* @__PURE__ */ jsx(Avatar, { alt: "Alex's story, seen", size: "lg", ring: "seen" })
12
+ /* @__PURE__ */ jsx(Avatar, { src: CAMILLE, alt: "Camille", size: "lg", presence: "online", presenceLabel: "online" }),
13
+ /* @__PURE__ */ jsx(Avatar, { src: TOMAS, alt: "Tom\xE1s", size: "lg", presence: "away", presenceLabel: "away" }),
14
+ /* @__PURE__ */ jsx(Avatar, { src: NOOR, alt: "Noor", size: "lg", presence: "offline", presenceLabel: "offline" }),
15
+ /* @__PURE__ */ jsx(Avatar, { src: CAMILLE, alt: "Camille's story, new", size: "lg", ring: "story" }),
16
+ /* @__PURE__ */ jsx(Avatar, { src: TOMAS, alt: "Tom\xE1s's story, seen", size: "lg", ring: "seen" })
14
17
  ] });
15
18
  }
16
19
  export {
@@ -1,15 +1,19 @@
1
1
  import { Avatar } from "@krizaka/ui/native";
2
2
  import { View } from "react-native";
3
3
 
4
+ const CAMILLE = "https://krizaka-assets.b-cdn.net/site/people/ui/camille-256.dc2943029a.webp";
5
+ const TOMAS = "https://krizaka-assets.b-cdn.net/site/people/ui/tomas-256.7eaab80903.webp";
6
+ const NOOR = "https://krizaka-assets.b-cdn.net/site/people/ui/noor-256.c340c41421.webp";
7
+
4
8
  // Presence in Messages, story rings in the rail: the dot and the ring are said with the name.
5
9
  export default function NativeAvatarPresence() {
6
10
  return (
7
11
  <View style={{ flexDirection: "row", gap: 16, alignItems: "center" }}>
8
- <Avatar alt="Elena" size="lg" presence="online" presenceLabel="online" />
9
- <Avatar alt="Alex" size="lg" presence="away" presenceLabel="away" />
10
- <Avatar alt="Mina" size="lg" presence="offline" presenceLabel="offline" />
11
- <Avatar alt="Elena's story, new" size="lg" ring="story" />
12
- <Avatar alt="Alex's story, seen" size="lg" ring="seen" />
12
+ <Avatar src={CAMILLE} alt="Camille" size="lg" presence="online" presenceLabel="online" />
13
+ <Avatar src={TOMAS} alt="Tomás" size="lg" presence="away" presenceLabel="away" />
14
+ <Avatar src={NOOR} alt="Noor" size="lg" presence="offline" presenceLabel="offline" />
15
+ <Avatar src={CAMILLE} alt="Camille's story, new" size="lg" ring="story" />
16
+ <Avatar src={TOMAS} alt="Tomás's story, seen" size="lg" ring="seen" />
13
17
  </View>
14
18
  );
15
19
  }
@@ -3,11 +3,8 @@
3
3
  // registry/examples/avatar/with-image.tsx
4
4
  import { Avatar } from "@krizaka/ui/avatar";
5
5
  import { jsx } from "react/jsx-runtime";
6
- var PORTRAIT = "data:image/svg+xml;utf8," + encodeURIComponent(
7
- '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 80 80"><rect width="80" height="80" fill="#3b82f6"/><circle cx="40" cy="31" r="14" fill="#dbeafe"/><path d="M12 80a28 24 0 0 1 56 0z" fill="#dbeafe"/></svg>'
8
- );
9
6
  function AvatarWithImage() {
10
- return /* @__PURE__ */ jsx(Avatar, { src: PORTRAIT, alt: "Oussama", fallback: "OA" });
7
+ return /* @__PURE__ */ jsx(Avatar, { src: "https://krizaka-assets.b-cdn.net/site/people/ui/ada-256.31a5ce640c.webp", alt: "Ada Okafor", fallback: "AO" });
11
8
  }
12
9
  export {
13
10
  AvatarWithImage as default
@@ -1,13 +1,6 @@
1
1
  import { Avatar } from "@krizaka/ui/avatar";
2
2
 
3
- // A self-contained portrait (no network).
4
- const PORTRAIT =
5
- "data:image/svg+xml;utf8," +
6
- encodeURIComponent(
7
- '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 80 80"><rect width="80" height="80" fill="#3b82f6"/>' +
8
- '<circle cx="40" cy="31" r="14" fill="#dbeafe"/><path d="M12 80a28 24 0 0 1 56 0z" fill="#dbeafe"/></svg>',
9
- );
10
-
3
+ // A portrait: the image when it loads, the initials while it loads or when it fails.
11
4
  export default function AvatarWithImage() {
12
- return <Avatar src={PORTRAIT} alt="Oussama" fallback="OA" />;
5
+ return <Avatar src="https://krizaka-assets.b-cdn.net/site/people/ui/ada-256.31a5ce640c.webp" alt="Ada Okafor" fallback="AO" />;
13
6
  }
@@ -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,37 @@
1
+ "use client";
2
+
3
+ // registry/examples/detail-layout/checkout.tsx
4
+ import { Button } from "@krizaka/ui/button";
5
+ import { Chip } from "@krizaka/ui/chip";
6
+ import { DetailLayout } from "@krizaka/ui/detail-layout";
7
+ import { Field, Textarea } from "@krizaka/ui/field";
8
+ import { Stat } from "@krizaka/ui/stat";
9
+ import * as React from "react";
10
+ import { jsx, jsxs } from "react/jsx-runtime";
11
+ var AMOUNTS = [3, 5, 10, 20];
12
+ function DetailLayoutCheckout() {
13
+ const [amount, setAmount] = React.useState("5");
14
+ return /* @__PURE__ */ jsx("div", { className: "brand-orochia w-full", children: /* @__PURE__ */ jsx(
15
+ DetailLayout,
16
+ {
17
+ back: /* @__PURE__ */ jsx("a", { href: "#elena", children: "\u2190 Elena's page" }),
18
+ eyebrow: "Tip",
19
+ title: "Say thanks to Elena",
20
+ meta: "She keeps 90 %. Paid out every Monday.",
21
+ aside: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-4 rounded-xl border border-border-default bg-surface-1 p-4", children: [
22
+ /* @__PURE__ */ jsx(Stat, { label: "You pay", value: `\u20AC${amount}`, hint: "no fee added on top" }),
23
+ /* @__PURE__ */ jsx(Button, { variant: "primary", shape: "cut", className: "w-full", children: `Tip \u20AC${amount}` })
24
+ ] }),
25
+ children: /* @__PURE__ */ jsxs("form", { className: "flex max-w-lg flex-col gap-5", onSubmit: (e) => e.preventDefault(), children: [
26
+ /* @__PURE__ */ jsx(Chip.Group, { type: "single", label: "Amount", value: amount, onValueChange: (v) => v && setAmount(v), required: true, children: AMOUNTS.map((a) => /* @__PURE__ */ jsx(Chip, { value: String(a), children: `\u20AC${a}` }, a)) }),
27
+ /* @__PURE__ */ jsxs(Field.Root, { children: [
28
+ /* @__PURE__ */ jsx(Field.Label, { htmlFor: "note", children: "A word for her (optional)" }),
29
+ /* @__PURE__ */ jsx(Textarea, { id: "note", rows: 3, placeholder: "The rooftop scene was incredible." })
30
+ ] })
31
+ ] })
32
+ }
33
+ ) });
34
+ }
35
+ export {
36
+ DetailLayoutCheckout as default
37
+ };
@@ -0,0 +1,44 @@
1
+ "use client";
2
+
3
+ import { Button } from "@krizaka/ui/button";
4
+ import { Chip } from "@krizaka/ui/chip";
5
+ import { DetailLayout } from "@krizaka/ui/detail-layout";
6
+ import { Field, Textarea } from "@krizaka/ui/field";
7
+ import { Stat } from "@krizaka/ui/stat";
8
+ import * as React from "react";
9
+
10
+ const AMOUNTS = [3, 5, 10, 20];
11
+
12
+ // TEMPLATE — tipping a creator (Orochia): who is paid, the amount in one tap, an optional word, the summary beside the
13
+ // action — under the form on a phone, where the pay button stays last. The total is always said before the button.
14
+ export default function DetailLayoutCheckout() {
15
+ const [amount, setAmount] = React.useState("5");
16
+ return (
17
+ <div className="brand-orochia w-full">
18
+ <DetailLayout
19
+ back={<a href="#elena">← Elena's page</a>}
20
+ eyebrow="Tip"
21
+ title="Say thanks to Elena"
22
+ meta="She keeps 90 %. Paid out every Monday."
23
+ aside={
24
+ <div className="flex flex-col gap-4 rounded-xl border border-border-default bg-surface-1 p-4">
25
+ <Stat label="You pay" value={`€${amount}`} hint="no fee added on top" />
26
+ <Button variant="primary" shape="cut" className="w-full">{`Tip €${amount}`}</Button>
27
+ </div>
28
+ }
29
+ >
30
+ <form className="flex max-w-lg flex-col gap-5" onSubmit={(e) => e.preventDefault()}>
31
+ <Chip.Group type="single" label="Amount" value={amount} onValueChange={(v) => v && setAmount(v)} required>
32
+ {AMOUNTS.map((a) => (
33
+ <Chip key={a} value={String(a)}>{`€${a}`}</Chip>
34
+ ))}
35
+ </Chip.Group>
36
+ <Field.Root>
37
+ <Field.Label htmlFor="note">A word for her (optional)</Field.Label>
38
+ <Textarea id="note" rows={3} placeholder="The rooftop scene was incredible." />
39
+ </Field.Root>
40
+ </form>
41
+ </DetailLayout>
42
+ </div>
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,31 @@
1
+ "use client";
2
+
3
+ // registry/examples/docs-article-page/faq.tsx
4
+ import { DocsArticlePage } from "@krizaka/ui/docs-article-page";
5
+ import { jsx, jsxs } from "react/jsx-runtime";
6
+ var QUESTIONS = [
7
+ { id: "cloud", q: "Does anything leave my server?", a: "No. Requests are answered by models on your machine; the only calls out are the ones you configure yourself." },
8
+ { id: "models", q: "Which models can I run?", a: "Any model your hardware can hold. Orazaka lists the ones that fit before you download them." },
9
+ { id: "price", q: "How is it priced?", a: "A plan with a monthly credit allowance. Credits are spent per job, and what is left is always shown." }
10
+ ];
11
+ function DocsArticlePageFaq() {
12
+ return /* @__PURE__ */ jsx(
13
+ DocsArticlePage,
14
+ {
15
+ className: "brand-orazaka pt-6",
16
+ sidebarLabel: "Pages of the documentation",
17
+ sidebar: /* @__PURE__ */ jsx("nav", { "aria-label": "Orazaka documentation", children: /* @__PURE__ */ jsx("ul", { className: "flex flex-col gap-1 text-sm", children: ["Getting started", "The CLI", "Questions"].map((p) => /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx("a", { href: `#${p}`, "aria-current": p === "Questions" ? "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)) }) }),
18
+ breadcrumb: [{ href: "#docs", label: "Docs" }, { href: "#orazaka", label: "Orazaka" }],
19
+ title: "Questions, answered",
20
+ lead: "What people ask before they install.",
21
+ toc: { label: "Questions", items: QUESTIONS.map((x) => ({ id: x.id, label: x.q })) },
22
+ children: QUESTIONS.map((x) => /* @__PURE__ */ jsxs("details", { id: x.id, className: "group border-b border-border-subtle py-3", children: [
23
+ /* @__PURE__ */ jsx("summary", { className: "cursor-pointer rounded-md py-1 font-semibold text-fg focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring", children: x.q }),
24
+ /* @__PURE__ */ jsx("p", { className: "mt-2 text-fg-secondary", children: x.a })
25
+ ] }, x.id))
26
+ }
27
+ );
28
+ }
29
+ export {
30
+ DocsArticlePageFaq as default
31
+ };
@@ -0,0 +1,40 @@
1
+ import { DocsArticlePage } from "@krizaka/ui/docs-article-page";
2
+
3
+ const QUESTIONS = [
4
+ { id: "cloud", q: "Does anything leave my server?", a: "No. Requests are answered by models on your machine; the only calls out are the ones you configure yourself." },
5
+ { id: "models", q: "Which models can I run?", a: "Any model your hardware can hold. Orazaka lists the ones that fit before you download them." },
6
+ { id: "price", q: "How is it priced?", a: "A plan with a monthly credit allowance. Credits are spent per job, and what is left is always shown." },
7
+ ];
8
+
9
+ // TEMPLATE — a FAQ: the questions as a list of disclosures, each answer one short paragraph, the contents beside them.
10
+ // Open by the address (`#price`), reachable by keyboard; one column on a phone.
11
+ export default function DocsArticlePageFaq() {
12
+ return (
13
+ <DocsArticlePage
14
+ className="brand-orazaka pt-6"
15
+ sidebarLabel="Pages of the documentation"
16
+ sidebar={
17
+ <nav aria-label="Orazaka documentation">
18
+ <ul className="flex flex-col gap-1 text-sm">
19
+ {["Getting started", "The CLI", "Questions"].map((p) => (
20
+ <li key={p}>
21
+ <a href={`#${p}`} aria-current={p === "Questions" ? "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>
22
+ </li>
23
+ ))}
24
+ </ul>
25
+ </nav>
26
+ }
27
+ breadcrumb={[{ href: "#docs", label: "Docs" }, { href: "#orazaka", label: "Orazaka" }]}
28
+ title="Questions, answered"
29
+ lead="What people ask before they install."
30
+ toc={{ label: "Questions", items: QUESTIONS.map((x) => ({ id: x.id, label: x.q })) }}
31
+ >
32
+ {QUESTIONS.map((x) => (
33
+ <details key={x.id} id={x.id} className="group border-b border-border-subtle py-3">
34
+ <summary className="cursor-pointer rounded-md py-1 font-semibold text-fg focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring">{x.q}</summary>
35
+ <p className="mt-2 text-fg-secondary">{x.a}</p>
36
+ </details>
37
+ ))}
38
+ </DocsArticlePage>
39
+ );
40
+ }
@@ -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/empty-state/library.tsx
4
+ import { Button } from "@krizaka/ui/button";
5
+ import { EmptyState } from "@krizaka/ui/empty-state";
6
+ import { Mascot } from "@krizaka/ui/mascots";
7
+ import { Page } from "@krizaka/ui/page";
8
+ import { jsx, jsxs } from "react/jsx-runtime";
9
+ function EmptyStateLibrary() {
10
+ return /* @__PURE__ */ jsxs(Page, { className: "brand-orochia", children: [
11
+ /* @__PURE__ */ jsx("h1", { className: "font-display text-2xl font-extrabold tracking-tight text-fg", children: "Library" }),
12
+ /* @__PURE__ */ jsx(
13
+ EmptyState,
14
+ {
15
+ icon: /* @__PURE__ */ jsx(Mascot, { bird: "flamingo", mood: "empty", size: 96 }),
16
+ title: "Nothing here yet",
17
+ description: "Your videos, once published, wait here with their sales. The first one takes about ten minutes.",
18
+ action: /* @__PURE__ */ jsx(Button, { variant: "primary", shape: "cut", children: "Publish a first video" })
19
+ }
20
+ )
21
+ ] });
22
+ }
23
+ export {
24
+ EmptyStateLibrary as default
25
+ };
@@ -0,0 +1,20 @@
1
+ import { Button } from "@krizaka/ui/button";
2
+ import { EmptyState } from "@krizaka/ui/empty-state";
3
+ import { Mascot } from "@krizaka/ui/mascots";
4
+ import { Page } from "@krizaka/ui/page";
5
+
6
+ // TEMPLATE — a page with nothing in it yet (a creator's library): the page keeps its title and place, the bird says it is
7
+ // empty, one sentence tells what will fill it, one button does the first thing. Never a blank screen.
8
+ export default function EmptyStateLibrary() {
9
+ return (
10
+ <Page className="brand-orochia">
11
+ <h1 className="font-display text-2xl font-extrabold tracking-tight text-fg">Library</h1>
12
+ <EmptyState
13
+ icon={<Mascot bird="flamingo" mood="empty" size={96} />}
14
+ title="Nothing here yet"
15
+ description="Your videos, once published, wait here with their sales. The first one takes about ten minutes."
16
+ action={<Button variant="primary" shape="cut">Publish a first video</Button>}
17
+ />
18
+ </Page>
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,12 @@
1
+ "use client";
2
+
3
+ // registry/examples/loader/branded.tsx
4
+ import { OrochiaLogo } from "@krizaka/ui";
5
+ import { Loader } from "@krizaka/ui/loader";
6
+ import { jsx } from "react/jsx-runtime";
7
+ function LoaderBranded() {
8
+ return /* @__PURE__ */ jsx(Loader, { label: "Loading your videos", delay: 0, variant: "block", mark: /* @__PURE__ */ jsx(OrochiaLogo, { animated: true }) });
9
+ }
10
+ export {
11
+ LoaderBranded as default
12
+ };
@@ -0,0 +1,7 @@
1
+ import { OrochiaLogo } from "@krizaka/ui";
2
+ import { Loader } from "@krizaka/ui/loader";
3
+
4
+ // The product's mark in place of the Krizaka glyph: Orochia waits with its own animated mark. Words, delay and ending stay.
5
+ export default function LoaderBranded() {
6
+ return <Loader label="Loading your videos" delay={0} variant="block" mark={<OrochiaLogo animated />} />;
7
+ }
@@ -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,12 @@
1
+ "use client";
2
+
3
+ // registry/examples/loader/native/branded.tsx
4
+ import { Loader } from "@krizaka/ui/native";
5
+ import { View } from "react-native";
6
+ import { jsx } from "react/jsx-runtime";
7
+ function NativeLoaderBranded() {
8
+ return /* @__PURE__ */ jsx(View, { style: { width: 340 }, children: /* @__PURE__ */ jsx(Loader, { label: "Loading your videos", product: "orochia", variant: "block", delay: 0 }) });
9
+ }
10
+ export {
11
+ NativeLoaderBranded as default
12
+ };
@@ -0,0 +1,11 @@
1
+ import { Loader } from "@krizaka/ui/native";
2
+ import { View } from "react-native";
3
+
4
+ // The app's own mark waits for you: the animated `ProductMark` of Orochia, still when the system reduces motion.
5
+ export default function NativeLoaderBranded() {
6
+ return (
7
+ <View style={{ width: 340 }}>
8
+ <Loader label="Loading your videos" product="orochia" variant="block" delay={0} />
9
+ </View>
10
+ );
11
+ }
@@ -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,41 @@
1
+ "use client";
2
+
3
+ // registry/examples/longform-page/case-study.tsx
4
+ import { LongformPage } from "@krizaka/ui/longform-page";
5
+ import { Stat } from "@krizaka/ui/stat";
6
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
7
+ function LongformPageCaseStudy() {
8
+ return /* @__PURE__ */ jsx(
9
+ LongformPage,
10
+ {
11
+ brand: "orazaka",
12
+ eyebrow: "Case study \xB7 Notary",
13
+ title: "Eleven leases a day, none of them leaving the office",
14
+ lead: "A four-person firm in Laval summarises contracts with its own AI, on its own server.",
15
+ chapters: [
16
+ {
17
+ id: "before",
18
+ title: "Before",
19
+ pull: "The summary took twenty minutes. The cloud tools took the lease with them.",
20
+ children: /* @__PURE__ */ jsx("p", { children: "Each lease was read twice by hand. Pasting it into a public chatbot was faster, and not an option." })
21
+ },
22
+ {
23
+ id: "after",
24
+ title: "What changed",
25
+ children: /* @__PURE__ */ jsxs(Fragment, { children: [
26
+ /* @__PURE__ */ jsx("p", { children: "Orazaka runs on a Mac mini in the back room. A pack reads the lease and drafts the summary; the notary signs it." }),
27
+ /* @__PURE__ */ jsx("p", { children: "Nothing is sent outside the building, and every request is logged for the audit." })
28
+ ] }),
29
+ figure: /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-3", children: [
30
+ /* @__PURE__ */ jsx(Stat, { label: "Per lease", value: "2 min", trend: "down", trendLabel: "was 20 min" }),
31
+ /* @__PURE__ */ jsx(Stat, { label: "Sent outside", value: "0", hint: "all answered locally" }),
32
+ /* @__PURE__ */ jsx(Stat, { label: "Hours a week", value: "14", trend: "up", trendLabel: "given back" })
33
+ ] })
34
+ }
35
+ ]
36
+ }
37
+ );
38
+ }
39
+ export {
40
+ LongformPageCaseStudy as default
41
+ };
@@ -0,0 +1,40 @@
1
+ import { LongformPage } from "@krizaka/ui/longform-page";
2
+ import { Stat } from "@krizaka/ui/stat";
3
+
4
+ // TEMPLATE — a case study (a notary's office on Orazaka): the situation, what was done, the figures that prove it. Chapters
5
+ // in a reading column, the result as a figure that breaks out of the column; one column on a phone.
6
+ export default function LongformPageCaseStudy() {
7
+ return (
8
+ <LongformPage
9
+ brand="orazaka"
10
+ eyebrow="Case study · Notary"
11
+ title="Eleven leases a day, none of them leaving the office"
12
+ lead="A four-person firm in Laval summarises contracts with its own AI, on its own server."
13
+ chapters={[
14
+ {
15
+ id: "before",
16
+ title: "Before",
17
+ pull: "The summary took twenty minutes. The cloud tools took the lease with them.",
18
+ children: <p>Each lease was read twice by hand. Pasting it into a public chatbot was faster, and not an option.</p>,
19
+ },
20
+ {
21
+ id: "after",
22
+ title: "What changed",
23
+ children: (
24
+ <>
25
+ <p>Orazaka runs on a Mac mini in the back room. A pack reads the lease and drafts the summary; the notary signs it.</p>
26
+ <p>Nothing is sent outside the building, and every request is logged for the audit.</p>
27
+ </>
28
+ ),
29
+ figure: (
30
+ <div className="grid grid-cols-1 gap-4 sm:grid-cols-3">
31
+ <Stat label="Per lease" value="2 min" trend="down" trendLabel="was 20 min" />
32
+ <Stat label="Sent outside" value="0" hint="all answered locally" />
33
+ <Stat label="Hours a week" value="14" trend="up" trendLabel="given back" />
34
+ </div>
35
+ ),
36
+ },
37
+ ]}
38
+ />
39
+ );
40
+ }
@@ -9,9 +9,9 @@ function ProfileCardCreator() {
9
9
  return /* @__PURE__ */ jsxs(
10
10
  ProfileCard,
11
11
  {
12
- visual: /* @__PURE__ */ jsx(Avatar, { fallback: "EM", size: "xl" }),
12
+ visual: /* @__PURE__ */ jsx(Avatar, { src: "https://krizaka-assets.b-cdn.net/site/people/ui/noor-256.c340c41421.webp", alt: "Noor Haddad", fallback: "NH", size: "xl" }),
13
13
  visualSize: 96,
14
- name: "Elena Marchetti",
14
+ name: "Noor Haddad",
15
15
  statLabel: "Profile complete",
16
16
  value: 80,
17
17
  stats: [
@@ -6,9 +6,9 @@ import { ProfileCard } from "@krizaka/ui/profile-card";
6
6
  export default function ProfileCardCreator() {
7
7
  return (
8
8
  <ProfileCard
9
- visual={<Avatar fallback="EM" size="xl" />}
9
+ visual={<Avatar src="https://krizaka-assets.b-cdn.net/site/people/ui/noor-256.c340c41421.webp" alt="Noor Haddad" fallback="NH" size="xl" />}
10
10
  visualSize={96}
11
- name="Elena Marchetti"
11
+ name="Noor Haddad"
12
12
  statLabel="Profile complete"
13
13
  value={80}
14
14
  stats={[
@@ -9,9 +9,9 @@ function ProfileCardMatch() {
9
9
  ProfileCard,
10
10
  {
11
11
  brand: "yazakia",
12
- visual: /* @__PURE__ */ jsx(Avatar, { fallback: "AR", size: "xl" }),
12
+ visual: /* @__PURE__ */ jsx(Avatar, { src: "https://krizaka-assets.b-cdn.net/site/people/ui/camille-256.dc2943029a.webp", alt: "Camille Roy", fallback: "CR", size: "xl" }),
13
13
  visualSize: 88,
14
- name: "Alex, 29",
14
+ name: "Camille, 29",
15
15
  stats: [
16
16
  { label: "Interests in common", value: 4, max: 6, valueText: "4 of 6" },
17
17
  { label: "Answers that match", value: 7, max: 10, valueText: "7 of 10" }
@@ -6,9 +6,9 @@ export default function ProfileCardMatch() {
6
6
  return (
7
7
  <ProfileCard
8
8
  brand="yazakia"
9
- visual={<Avatar fallback="AR" size="xl" />}
9
+ visual={<Avatar src="https://krizaka-assets.b-cdn.net/site/people/ui/camille-256.dc2943029a.webp" alt="Camille Roy" fallback="CR" size="xl" />}
10
10
  visualSize={88}
11
- name="Alex, 29"
11
+ name="Camille, 29"
12
12
  stats={[
13
13
  { label: "Interests in common", value: 4, max: 6, valueText: "4 of 6" },
14
14
  { label: "Answers that match", value: 7, max: 10, valueText: "7 of 10" },
@@ -7,8 +7,8 @@ function NativeProfileCardDefault() {
7
7
  return /* @__PURE__ */ jsx(
8
8
  ProfileCard,
9
9
  {
10
- visual: /* @__PURE__ */ jsx(Avatar, { fallback: "EM", size: "xl" }),
11
- name: "Elena Marchetti",
10
+ visual: /* @__PURE__ */ jsx(Avatar, { src: "https://krizaka-assets.b-cdn.net/site/people/ui/noor-256.c340c41421.webp", alt: "Noor Haddad", fallback: "NH", size: "xl" }),
11
+ name: "Noor Haddad",
12
12
  statLabel: "Profile complete",
13
13
  value: 80,
14
14
  stats: [
@@ -4,8 +4,8 @@ import { Avatar, Button, ProfileCard } from "@krizaka/ui/native";
4
4
  export default function NativeProfileCardDefault() {
5
5
  return (
6
6
  <ProfileCard
7
- visual={<Avatar fallback="EM" size="xl" />}
8
- name="Elena Marchetti"
7
+ visual={<Avatar src="https://krizaka-assets.b-cdn.net/site/people/ui/noor-256.c340c41421.webp" alt="Noor Haddad" fallback="NH" size="xl" />}
8
+ name="Noor Haddad"
9
9
  statLabel="Profile complete"
10
10
  value={80}
11
11
  stats={[
@@ -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,14 @@
1
+ "use client";
2
+
3
+ // registry/examples/pull-to-refresh/native/branded.tsx
4
+ import { BrandedRefresh, Txt } from "@krizaka/ui/native";
5
+ import { useState } from "react";
6
+ import { ScrollView, View } from "react-native";
7
+ import { jsx } from "react/jsx-runtime";
8
+ function NativePullToRefreshBranded() {
9
+ const [refreshing, setRefreshing] = useState(true);
10
+ return /* @__PURE__ */ jsx(View, { style: { width: 360, height: 240 }, children: /* @__PURE__ */ jsx(BrandedRefresh, { product: "orochia", refreshing, onRefresh: () => setRefreshing(true), label: "Refreshing your videos", children: (scroll) => /* @__PURE__ */ jsx(ScrollView, { ...scroll, contentContainerStyle: { paddingTop: 56 }, children: ["Sunset session \xB7 Elena \xB7 2.4K views", "Acoustic dare \xB7 Alex \xB7 918 views"].map((line) => /* @__PURE__ */ jsx(Txt, { style: { padding: 16 }, children: line }, line)) }) }) });
11
+ }
12
+ export {
13
+ NativePullToRefreshBranded as default
14
+ };