@krizaka/ui 2.6.0 → 2.9.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 (331) hide show
  1. package/README.md +37 -4
  2. package/dist/achievement.d.ts +54 -0
  3. package/dist/achievement.js +73 -0
  4. package/dist/achievement.js.map +1 -0
  5. package/dist/app-shell.d.ts +203 -0
  6. package/dist/app-shell.js +137 -0
  7. package/dist/app-shell.js.map +1 -0
  8. package/dist/auth-layout.d.ts +136 -0
  9. package/dist/auth-layout.js +75 -0
  10. package/dist/auth-layout.js.map +1 -0
  11. package/dist/choice-grid.d.ts +84 -0
  12. package/dist/choice-grid.js +141 -0
  13. package/dist/choice-grid.js.map +1 -0
  14. package/dist/chunk-555LWYIN.js +11 -0
  15. package/dist/chunk-555LWYIN.js.map +1 -0
  16. package/dist/chunk-AZPKXP3O.js +36 -0
  17. package/dist/chunk-AZPKXP3O.js.map +1 -0
  18. package/dist/chunk-NOVUREEC.js +274 -0
  19. package/dist/chunk-NOVUREEC.js.map +1 -0
  20. package/dist/chunk-VCAAHCHL.js +17 -0
  21. package/dist/chunk-VCAAHCHL.js.map +1 -0
  22. package/dist/code-block.js +23 -44
  23. package/dist/code-block.js.map +1 -1
  24. package/dist/continue-prompt.d.ts +48 -0
  25. package/dist/continue-prompt.js +200 -0
  26. package/dist/continue-prompt.js.map +1 -0
  27. package/dist/dashboard-layout.d.ts +139 -0
  28. package/dist/dashboard-layout.js +68 -0
  29. package/dist/dashboard-layout.js.map +1 -0
  30. package/dist/detail-layout.d.ts +126 -0
  31. package/dist/detail-layout.js +48 -0
  32. package/dist/detail-layout.js.map +1 -0
  33. package/dist/docs-layout.d.ts +78 -0
  34. package/dist/docs-layout.js +60 -0
  35. package/dist/docs-layout.js.map +1 -0
  36. package/dist/geometry-CXrAW34x.d.ts +19 -0
  37. package/dist/goal-gauge.d.ts +38 -0
  38. package/dist/goal-gauge.js +53 -0
  39. package/dist/goal-gauge.js.map +1 -0
  40. package/dist/index.d.ts +11 -2
  41. package/dist/index.js +89 -4
  42. package/dist/index.js.map +1 -1
  43. package/dist/landscape.d.ts +41 -0
  44. package/dist/landscape.js +836 -0
  45. package/dist/landscape.js.map +1 -0
  46. package/dist/marketing-layout.d.ts +60 -0
  47. package/dist/marketing-layout.js +25 -0
  48. package/dist/marketing-layout.js.map +1 -0
  49. package/dist/mascot-quote.d.ts +4 -3
  50. package/dist/mascot-quote.js +21 -1
  51. package/dist/mascot-quote.js.map +1 -1
  52. package/dist/mascot-state.d.ts +128 -0
  53. package/dist/mascot-state.js +95 -0
  54. package/dist/mascot-state.js.map +1 -0
  55. package/dist/mascots.d.ts +18 -20
  56. package/dist/mascots.js +65 -221
  57. package/dist/mascots.js.map +1 -1
  58. package/dist/native.d.ts +124 -7
  59. package/dist/native.js +641 -239
  60. package/dist/native.js.map +1 -1
  61. package/dist/profile-card.d.ts +85 -0
  62. package/dist/profile-card.js +87 -0
  63. package/dist/profile-card.js.map +1 -0
  64. package/dist/promise-card.d.ts +28 -0
  65. package/dist/promise-card.js +29 -0
  66. package/dist/promise-card.js.map +1 -0
  67. package/dist/scroll-stage.d.ts +603 -0
  68. package/dist/scroll-stage.js +59 -0
  69. package/dist/scroll-stage.js.map +1 -0
  70. package/dist/settings-layout.d.ts +154 -0
  71. package/dist/settings-layout.js +57 -0
  72. package/dist/settings-layout.js.map +1 -0
  73. package/dist/split-view.d.ts +106 -0
  74. package/dist/split-view.js +41 -0
  75. package/dist/split-view.js.map +1 -0
  76. package/dist/stage-banner.d.ts +34 -0
  77. package/dist/stage-banner.js +26 -0
  78. package/dist/stage-banner.js.map +1 -0
  79. package/dist/story-variant-CLn4H5Nt.d.ts +4 -0
  80. package/dist/story.css +432 -0
  81. package/package.json +267 -10
  82. package/registry/achievement.json +322 -0
  83. package/registry/action-bar.json +1 -1
  84. package/registry/alert.json +1 -1
  85. package/registry/app-shell.json +451 -0
  86. package/registry/argument-card.json +1 -1
  87. package/registry/audio-player.json +1 -1
  88. package/registry/auth-layout.json +230 -0
  89. package/registry/avatar.json +1 -1
  90. package/registry/badge.json +1 -1
  91. package/registry/button.json +5 -5
  92. package/registry/card-grid.json +5 -5
  93. package/registry/card.json +3 -3
  94. package/registry/checkbox.json +1 -1
  95. package/registry/chip-link.json +1 -1
  96. package/registry/chip.json +1 -1
  97. package/registry/choice-grid.json +318 -0
  98. package/registry/code-block.json +1 -1
  99. package/registry/combobox.json +1 -1
  100. package/registry/command.json +1 -1
  101. package/registry/confirm-button.json +3 -3
  102. package/registry/continue-prompt.json +312 -0
  103. package/registry/countdown.json +1 -1
  104. package/registry/cta-panel.json +1 -1
  105. package/registry/dashboard-layout.json +273 -0
  106. package/registry/data-table.json +1 -1
  107. package/registry/date-picker.json +1 -1
  108. package/registry/decision-list.json +1 -1
  109. package/registry/detail-layout.json +233 -0
  110. package/registry/dialog.json +1 -1
  111. package/registry/docs-layout.json +148 -0
  112. package/registry/dropdown-menu.json +3 -3
  113. package/registry/empty-state.json +1 -1
  114. package/registry/examples/achievement/arcade.d.ts +4 -0
  115. package/registry/examples/achievement/arcade.js +15 -0
  116. package/registry/examples/achievement/arcade.tsx +12 -0
  117. package/registry/examples/achievement/milestones.d.ts +4 -0
  118. package/registry/examples/achievement/milestones.js +15 -0
  119. package/registry/examples/achievement/milestones.tsx +12 -0
  120. package/registry/examples/app-shell/admin-console.d.ts +4 -0
  121. package/registry/examples/app-shell/admin-console.js +52 -0
  122. package/registry/examples/app-shell/admin-console.tsx +64 -0
  123. package/registry/examples/app-shell/basic.d.ts +4 -0
  124. package/registry/examples/app-shell/basic.js +37 -0
  125. package/registry/examples/app-shell/basic.tsx +31 -0
  126. package/registry/examples/app-shell/orochia-studio.d.ts +4 -0
  127. package/registry/examples/app-shell/orochia-studio.js +89 -0
  128. package/registry/examples/app-shell/orochia-studio.tsx +101 -0
  129. package/registry/examples/auth-layout/onboarding.d.ts +4 -0
  130. package/registry/examples/auth-layout/onboarding.js +56 -0
  131. package/registry/examples/auth-layout/onboarding.tsx +47 -0
  132. package/registry/examples/auth-layout/sign-in.d.ts +4 -0
  133. package/registry/examples/auth-layout/sign-in.js +55 -0
  134. package/registry/examples/auth-layout/sign-in.tsx +47 -0
  135. package/registry/examples/auth-layout/verify.d.ts +4 -0
  136. package/registry/examples/auth-layout/verify.js +23 -0
  137. package/registry/examples/auth-layout/verify.tsx +19 -0
  138. package/registry/examples/choice-grid/line-up.d.ts +4 -0
  139. package/registry/examples/choice-grid/line-up.js +37 -0
  140. package/registry/examples/choice-grid/line-up.tsx +32 -0
  141. package/registry/examples/choice-grid/plans.d.ts +4 -0
  142. package/registry/examples/choice-grid/plans.js +28 -0
  143. package/registry/examples/choice-grid/plans.tsx +24 -0
  144. package/registry/examples/continue-prompt/arcade.d.ts +4 -0
  145. package/registry/examples/continue-prompt/arcade.js +28 -0
  146. package/registry/examples/continue-prompt/arcade.tsx +25 -0
  147. package/registry/examples/continue-prompt/offer.d.ts +4 -0
  148. package/registry/examples/continue-prompt/offer.js +24 -0
  149. package/registry/examples/continue-prompt/offer.tsx +19 -0
  150. package/registry/examples/dashboard-layout/orazaka-eric.d.ts +4 -0
  151. package/registry/examples/dashboard-layout/orazaka-eric.js +58 -0
  152. package/registry/examples/dashboard-layout/orazaka-eric.tsx +80 -0
  153. package/registry/examples/dashboard-layout/widgets.d.ts +4 -0
  154. package/registry/examples/dashboard-layout/widgets.js +17 -0
  155. package/registry/examples/dashboard-layout/widgets.tsx +22 -0
  156. package/registry/examples/detail-layout/job.d.ts +4 -0
  157. package/registry/examples/detail-layout/job.js +25 -0
  158. package/registry/examples/detail-layout/job.tsx +20 -0
  159. package/registry/examples/detail-layout/video.d.ts +4 -0
  160. package/registry/examples/detail-layout/video.js +44 -0
  161. package/registry/examples/detail-layout/video.tsx +53 -0
  162. package/registry/examples/docs-layout/page.d.ts +4 -0
  163. package/registry/examples/docs-layout/page.js +26 -0
  164. package/registry/examples/docs-layout/page.tsx +30 -0
  165. package/registry/examples/goal-gauge/arcade.d.ts +4 -0
  166. package/registry/examples/goal-gauge/arcade.js +11 -0
  167. package/registry/examples/goal-gauge/arcade.tsx +10 -0
  168. package/registry/examples/goal-gauge/challenge.d.ts +4 -0
  169. package/registry/examples/goal-gauge/challenge.js +11 -0
  170. package/registry/examples/goal-gauge/challenge.tsx +10 -0
  171. package/registry/examples/goal-gauge/drain.d.ts +4 -0
  172. package/registry/examples/goal-gauge/drain.js +11 -0
  173. package/registry/examples/goal-gauge/drain.tsx +10 -0
  174. package/registry/examples/goal-gauge/native/default.d.ts +4 -0
  175. package/registry/examples/goal-gauge/native/default.dark.png +0 -0
  176. package/registry/examples/goal-gauge/native/default.js +15 -0
  177. package/registry/examples/goal-gauge/native/default.light.png +0 -0
  178. package/registry/examples/goal-gauge/native/default.tsx +12 -0
  179. package/registry/examples/landscape/backdrop.d.ts +4 -0
  180. package/registry/examples/landscape/backdrop.js +14 -0
  181. package/registry/examples/landscape/backdrop.tsx +11 -0
  182. package/registry/examples/landscape/brand.d.ts +4 -0
  183. package/registry/examples/landscape/brand.js +11 -0
  184. package/registry/examples/landscape/brand.tsx +10 -0
  185. package/registry/examples/marketing-layout/basic.d.ts +4 -0
  186. package/registry/examples/marketing-layout/basic.js +31 -0
  187. package/registry/examples/marketing-layout/basic.tsx +28 -0
  188. package/registry/examples/marketing-layout/docs-hub.d.ts +4 -0
  189. package/registry/examples/marketing-layout/docs-hub.js +37 -0
  190. package/registry/examples/marketing-layout/docs-hub.tsx +44 -0
  191. package/registry/examples/marketing-layout/pricing.d.ts +4 -0
  192. package/registry/examples/marketing-layout/pricing.js +45 -0
  193. package/registry/examples/marketing-layout/pricing.tsx +55 -0
  194. package/registry/examples/marketing-layout/product-page.d.ts +4 -0
  195. package/registry/examples/marketing-layout/product-page.js +79 -0
  196. package/registry/examples/marketing-layout/product-page.tsx +83 -0
  197. package/registry/examples/mascot-state/empty.d.ts +4 -0
  198. package/registry/examples/mascot-state/empty.js +22 -0
  199. package/registry/examples/mascot-state/empty.tsx +20 -0
  200. package/registry/examples/mascot-state/error.d.ts +4 -0
  201. package/registry/examples/mascot-state/error.js +23 -0
  202. package/registry/examples/mascot-state/error.tsx +21 -0
  203. package/registry/examples/mascot-state/loading.d.ts +4 -0
  204. package/registry/examples/mascot-state/loading.js +22 -0
  205. package/registry/examples/mascot-state/loading.tsx +16 -0
  206. package/registry/examples/mascot-state/native/default.d.ts +4 -0
  207. package/registry/examples/mascot-state/native/default.dark.png +0 -0
  208. package/registry/examples/mascot-state/native/default.js +25 -0
  209. package/registry/examples/mascot-state/native/default.light.png +0 -0
  210. package/registry/examples/mascot-state/native/default.tsx +19 -0
  211. package/registry/examples/mascot-state/success.d.ts +4 -0
  212. package/registry/examples/mascot-state/success.js +21 -0
  213. package/registry/examples/mascot-state/success.tsx +19 -0
  214. package/registry/examples/mascot-state/welcome.d.ts +4 -0
  215. package/registry/examples/mascot-state/welcome.js +21 -0
  216. package/registry/examples/mascot-state/welcome.tsx +19 -0
  217. package/registry/examples/mascots/flock.tsx +1 -1
  218. package/registry/examples/mascots/lovebird.d.ts +4 -0
  219. package/registry/examples/mascots/lovebird.js +19 -0
  220. package/registry/examples/mascots/lovebird.tsx +18 -0
  221. package/registry/examples/mascots/native/lovebird.d.ts +4 -0
  222. package/registry/examples/mascots/native/lovebird.dark.png +0 -0
  223. package/registry/examples/mascots/native/lovebird.js +21 -0
  224. package/registry/examples/mascots/native/lovebird.light.png +0 -0
  225. package/registry/examples/mascots/native/lovebird.tsx +18 -0
  226. package/registry/examples/mascots/native/phoenix.d.ts +4 -0
  227. package/registry/examples/mascots/native/phoenix.dark.png +0 -0
  228. package/registry/examples/mascots/native/phoenix.js +21 -0
  229. package/registry/examples/mascots/native/phoenix.light.png +0 -0
  230. package/registry/examples/mascots/native/phoenix.tsx +18 -0
  231. package/registry/examples/mascots/phoenix.d.ts +4 -0
  232. package/registry/examples/mascots/phoenix.js +14 -0
  233. package/registry/examples/mascots/phoenix.tsx +11 -0
  234. package/registry/examples/profile-card/arcade.d.ts +4 -0
  235. package/registry/examples/profile-card/arcade.js +25 -0
  236. package/registry/examples/profile-card/arcade.tsx +19 -0
  237. package/registry/examples/profile-card/creator.d.ts +4 -0
  238. package/registry/examples/profile-card/creator.js +31 -0
  239. package/registry/examples/profile-card/creator.tsx +26 -0
  240. package/registry/examples/profile-card/match.d.ts +4 -0
  241. package/registry/examples/profile-card/match.js +25 -0
  242. package/registry/examples/profile-card/match.tsx +19 -0
  243. package/registry/examples/profile-card/native/default.d.ts +4 -0
  244. package/registry/examples/profile-card/native/default.dark.png +0 -0
  245. package/registry/examples/profile-card/native/default.js +27 -0
  246. package/registry/examples/profile-card/native/default.light.png +0 -0
  247. package/registry/examples/profile-card/native/default.tsx +22 -0
  248. package/registry/examples/promise-card/arcade.d.ts +4 -0
  249. package/registry/examples/promise-card/arcade.js +25 -0
  250. package/registry/examples/promise-card/arcade.tsx +19 -0
  251. package/registry/examples/promise-card/guarantee.d.ts +4 -0
  252. package/registry/examples/promise-card/guarantee.js +23 -0
  253. package/registry/examples/promise-card/guarantee.tsx +17 -0
  254. package/registry/examples/scroll-stage/arcade.d.ts +4 -0
  255. package/registry/examples/scroll-stage/arcade.js +16 -0
  256. package/registry/examples/scroll-stage/arcade.tsx +15 -0
  257. package/registry/examples/scroll-stage/chapters.d.ts +4 -0
  258. package/registry/examples/scroll-stage/chapters.js +25 -0
  259. package/registry/examples/scroll-stage/chapters.tsx +22 -0
  260. package/registry/examples/settings-layout/account.d.ts +4 -0
  261. package/registry/examples/settings-layout/account.js +51 -0
  262. package/registry/examples/settings-layout/account.tsx +50 -0
  263. package/registry/examples/settings-layout/sections.d.ts +4 -0
  264. package/registry/examples/settings-layout/sections.js +27 -0
  265. package/registry/examples/settings-layout/sections.tsx +24 -0
  266. package/registry/examples/split-view/empty.d.ts +4 -0
  267. package/registry/examples/split-view/empty.js +19 -0
  268. package/registry/examples/split-view/empty.tsx +13 -0
  269. package/registry/examples/split-view/messages.d.ts +4 -0
  270. package/registry/examples/split-view/messages.js +49 -0
  271. package/registry/examples/split-view/messages.tsx +52 -0
  272. package/registry/examples/stage-banner/round.d.ts +4 -0
  273. package/registry/examples/stage-banner/round.js +14 -0
  274. package/registry/examples/stage-banner/round.tsx +11 -0
  275. package/registry/examples/stage-banner/steps.d.ts +4 -0
  276. package/registry/examples/stage-banner/steps.js +14 -0
  277. package/registry/examples/stage-banner/steps.tsx +11 -0
  278. package/registry/field.json +1 -1
  279. package/registry/file-upload.json +1 -1
  280. package/registry/filter-bar.json +1 -1
  281. package/registry/glow-card.json +1 -1
  282. package/registry/goal-gauge.json +322 -0
  283. package/registry/image-cropper.json +1 -1
  284. package/registry/index.json +337 -5
  285. package/registry/iso.json +1 -1
  286. package/registry/kbd.json +1 -1
  287. package/registry/landscape.json +189 -0
  288. package/registry/link-card.json +1 -1
  289. package/registry/loader.json +1 -1
  290. package/registry/marketing-layout.json +172 -0
  291. package/registry/marquee.json +1 -1
  292. package/registry/mascot-quote.json +6 -6
  293. package/registry/mascot-state.json +1249 -0
  294. package/registry/mascots.json +140 -23
  295. package/registry/media-capture.json +1 -1
  296. package/registry/meter.json +1 -1
  297. package/registry/nav-bar.json +1 -1
  298. package/registry/number-ticker.json +1 -1
  299. package/registry/page-header.json +1 -1
  300. package/registry/page-hero.json +3 -3
  301. package/registry/page.json +5 -5
  302. package/registry/pagination.json +1 -1
  303. package/registry/pointer-light.json +1 -1
  304. package/registry/popover.json +1 -1
  305. package/registry/profile-card.json +501 -0
  306. package/registry/progress.json +1 -1
  307. package/registry/promise-card.json +228 -0
  308. package/registry/radio-group.json +1 -1
  309. package/registry/scroll-stage.json +197 -0
  310. package/registry/search-field.json +1 -1
  311. package/registry/section-backdrop.json +1 -1
  312. package/registry/separator.json +1 -1
  313. package/registry/settings-layout.json +231 -0
  314. package/registry/skeleton.json +1 -1
  315. package/registry/slider.json +1 -1
  316. package/registry/slot.json +1 -1
  317. package/registry/spinner.json +1 -1
  318. package/registry/split-view.json +233 -0
  319. package/registry/stage-banner.json +221 -0
  320. package/registry/stat.json +1 -1
  321. package/registry/stepper.json +1 -1
  322. package/registry/switch.json +1 -1
  323. package/registry/tabs.json +1 -1
  324. package/registry/tag-input.json +1 -1
  325. package/registry/terminal-replay.json +1 -1
  326. package/registry/theme.json +1 -1
  327. package/registry/toast.json +1 -1
  328. package/registry/toc.json +1 -1
  329. package/registry/tooltip.json +1 -1
  330. package/registry/video-player.json +1 -1
  331. package/registry/video-trimmer.json +1 -1
@@ -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/mascots/native/phoenix.tsx
4
+ import { Phoenix, Txt } from "@krizaka/ui/native";
5
+ import { View } from "react-native";
6
+ import { jsx, jsxs } from "react/jsx-runtime";
7
+ function NativeMascotPhoenix() {
8
+ return /* @__PURE__ */ jsxs(View, { style: { flexDirection: "row", gap: 20, alignItems: "flex-end" }, children: [
9
+ /* @__PURE__ */ jsxs(View, { style: { alignItems: "center", gap: 4 }, children: [
10
+ /* @__PURE__ */ jsx(Phoenix, { size: 88, animated: false }),
11
+ /* @__PURE__ */ jsx(Txt, { variant: "caption", children: "own" })
12
+ ] }),
13
+ /* @__PURE__ */ jsxs(View, { style: { alignItems: "center", gap: 4 }, children: [
14
+ /* @__PURE__ */ jsx(Phoenix, { size: 88, tone: "brand", animated: false }),
15
+ /* @__PURE__ */ jsx(Txt, { variant: "caption", children: "brand" })
16
+ ] })
17
+ ] });
18
+ }
19
+ export {
20
+ NativeMascotPhoenix as default
21
+ };
@@ -0,0 +1,18 @@
1
+ import { Phoenix, Txt } from "@krizaka/ui/native";
2
+ import { View } from "react-native";
3
+
4
+ // The comeback: the phoenix in its own colours, then in the app's accent.
5
+ export default function NativeMascotPhoenix() {
6
+ return (
7
+ <View style={{ flexDirection: "row", gap: 20, alignItems: "flex-end" }}>
8
+ <View style={{ alignItems: "center", gap: 4 }}>
9
+ <Phoenix size={88} animated={false} />
10
+ <Txt variant="caption">own</Txt>
11
+ </View>
12
+ <View style={{ alignItems: "center", gap: 4 }}>
13
+ <Phoenix size={88} tone="brand" animated={false} />
14
+ <Txt variant="caption">brand</Txt>
15
+ </View>
16
+ </View>
17
+ );
18
+ }
@@ -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/mascots/phoenix.tsx
4
+ import { Phoenix } from "@krizaka/ui/mascots";
5
+ import { jsx, jsxs } from "react/jsx-runtime";
6
+ function MascotPhoenix() {
7
+ return /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-end gap-8", children: [
8
+ /* @__PURE__ */ jsx(Phoenix, { size: 112, title: "The phoenix" }),
9
+ /* @__PURE__ */ jsx(Phoenix, { size: 112, tone: "brand", title: "The phoenix in the brand's colours" })
10
+ ] });
11
+ }
12
+ export {
13
+ MascotPhoenix as default
14
+ };
@@ -0,0 +1,11 @@
1
+ import { Phoenix } from "@krizaka/ui/mascots";
2
+
3
+ // The phoenix stands for a comeback — a relaunch, a recovered account: its own colours, then the product's accent.
4
+ export default function MascotPhoenix() {
5
+ return (
6
+ <div className="flex flex-wrap items-end gap-8">
7
+ <Phoenix size={112} title="The phoenix" />
8
+ <Phoenix size={112} tone="brand" title="The phoenix in the brand's colours" />
9
+ </div>
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,25 @@
1
+ "use client";
2
+
3
+ // registry/examples/profile-card/arcade.tsx
4
+ import { ProductLogo } from "@krizaka/ui";
5
+ import { Emblem } from "@krizaka/ui/achievement";
6
+ import { ProfileCard } from "@krizaka/ui/profile-card";
7
+ import { jsx } from "react/jsx-runtime";
8
+ function ProfileCardArcade() {
9
+ return /* @__PURE__ */ jsx(
10
+ ProfileCard,
11
+ {
12
+ variant: "arcade",
13
+ brand: "orazaka",
14
+ nameAs: "p",
15
+ visual: /* @__PURE__ */ jsx(ProductLogo, { id: "orazaka", size: 120, animated: false }),
16
+ icon: /* @__PURE__ */ jsx(Emblem, { kind: "mirror", size: 16 }),
17
+ name: "Mirror clan",
18
+ statLabel: "Data kept at home",
19
+ caption: "\u014Dr\u0101re + zaka"
20
+ }
21
+ );
22
+ }
23
+ export {
24
+ ProfileCardArcade as default
25
+ };
@@ -0,0 +1,19 @@
1
+ import { ProductLogo } from "@krizaka/ui";
2
+ import { Emblem } from "@krizaka/ui/achievement";
3
+ import { ProfileCard } from "@krizaka/ui/profile-card";
4
+
5
+ // The arcade flavour: the brand's light, a ring and a breathing aura, a skewed gauge — for a told page, not a dashboard.
6
+ export default function ProfileCardArcade() {
7
+ return (
8
+ <ProfileCard
9
+ variant="arcade"
10
+ brand="orazaka"
11
+ nameAs="p"
12
+ visual={<ProductLogo id="orazaka" size={120} animated={false} />}
13
+ icon={<Emblem kind="mirror" size={16} />}
14
+ name="Mirror clan"
15
+ statLabel="Data kept at home"
16
+ caption="ōrāre + zaka"
17
+ />
18
+ );
19
+ }
@@ -0,0 +1,4 @@
1
+ import type { ComponentType } from "react";
2
+ /** A named example of the @krizaka/ui registry; `defaultOpen` opens what it opens (a dialog, a menu, toasts) at load. */
3
+ declare const Example: ComponentType<{ defaultOpen?: boolean }>;
4
+ export default Example;
@@ -0,0 +1,31 @@
1
+ "use client";
2
+
3
+ // registry/examples/profile-card/creator.tsx
4
+ import { Avatar } from "@krizaka/ui/avatar";
5
+ import { Button } from "@krizaka/ui/button";
6
+ import { ProfileCard } from "@krizaka/ui/profile-card";
7
+ import { jsx, jsxs } from "react/jsx-runtime";
8
+ function ProfileCardCreator() {
9
+ return /* @__PURE__ */ jsxs(
10
+ ProfileCard,
11
+ {
12
+ visual: /* @__PURE__ */ jsx(Avatar, { fallback: "EM", size: "xl" }),
13
+ visualSize: 96,
14
+ name: "Elena Marchetti",
15
+ statLabel: "Profile complete",
16
+ value: 80,
17
+ stats: [
18
+ { label: "Challenges met", value: 12, max: 15, valueText: "12 of 15" },
19
+ { label: "Replies within a day", value: 94 }
20
+ ],
21
+ caption: "Dance and street fashion \xB7 Montr\xE9al",
22
+ children: [
23
+ /* @__PURE__ */ jsx(Button, { variant: "primary", size: "sm", children: "Follow" }),
24
+ /* @__PURE__ */ jsx(Button, { size: "sm", children: "Message" })
25
+ ]
26
+ }
27
+ );
28
+ }
29
+ export {
30
+ ProfileCardCreator as default
31
+ };
@@ -0,0 +1,26 @@
1
+ import { Avatar } from "@krizaka/ui/avatar";
2
+ import { Button } from "@krizaka/ui/button";
3
+ import { ProfileCard } from "@krizaka/ui/profile-card";
4
+
5
+ // A creator at a glance: the headline gauge, the stats with their values in words, the actions under them.
6
+ export default function ProfileCardCreator() {
7
+ return (
8
+ <ProfileCard
9
+ visual={<Avatar fallback="EM" size="xl" />}
10
+ visualSize={96}
11
+ name="Elena Marchetti"
12
+ statLabel="Profile complete"
13
+ value={80}
14
+ stats={[
15
+ { label: "Challenges met", value: 12, max: 15, valueText: "12 of 15" },
16
+ { label: "Replies within a day", value: 94 },
17
+ ]}
18
+ caption="Dance and street fashion · Montréal"
19
+ >
20
+ <Button variant="primary" size="sm">
21
+ Follow
22
+ </Button>
23
+ <Button size="sm">Message</Button>
24
+ </ProfileCard>
25
+ );
26
+ }
@@ -0,0 +1,4 @@
1
+ import type { ComponentType } from "react";
2
+ /** A named example of the @krizaka/ui registry; `defaultOpen` opens what it opens (a dialog, a menu, toasts) at load. */
3
+ declare const Example: ComponentType<{ defaultOpen?: boolean }>;
4
+ export default Example;
@@ -0,0 +1,25 @@
1
+ "use client";
2
+
3
+ // registry/examples/profile-card/match.tsx
4
+ import { Avatar } from "@krizaka/ui/avatar";
5
+ import { ProfileCard } from "@krizaka/ui/profile-card";
6
+ import { jsx } from "react/jsx-runtime";
7
+ function ProfileCardMatch() {
8
+ return /* @__PURE__ */ jsx(
9
+ ProfileCard,
10
+ {
11
+ brand: "yazakia",
12
+ visual: /* @__PURE__ */ jsx(Avatar, { fallback: "AR", size: "xl" }),
13
+ visualSize: 88,
14
+ name: "Alex, 29",
15
+ stats: [
16
+ { label: "Interests in common", value: 4, max: 6, valueText: "4 of 6" },
17
+ { label: "Answers that match", value: 7, max: 10, valueText: "7 of 10" }
18
+ ],
19
+ caption: "You both answered \u201Ca slow Sunday market\u201D first."
20
+ }
21
+ );
22
+ }
23
+ export {
24
+ ProfileCardMatch as default
25
+ };
@@ -0,0 +1,19 @@
1
+ import { Avatar } from "@krizaka/ui/avatar";
2
+ import { ProfileCard } from "@krizaka/ui/profile-card";
3
+
4
+ // A match in a dating app: what you share, in words — never a score alone.
5
+ export default function ProfileCardMatch() {
6
+ return (
7
+ <ProfileCard
8
+ brand="yazakia"
9
+ visual={<Avatar fallback="AR" size="xl" />}
10
+ visualSize={88}
11
+ name="Alex, 29"
12
+ stats={[
13
+ { label: "Interests in common", value: 4, max: 6, valueText: "4 of 6" },
14
+ { label: "Answers that match", value: 7, max: 10, valueText: "7 of 10" },
15
+ ]}
16
+ caption="You both answered “a slow Sunday market” first."
17
+ />
18
+ );
19
+ }
@@ -0,0 +1,4 @@
1
+ import type { ComponentType } from "react";
2
+ /** A named example of the @krizaka/ui registry; `defaultOpen` opens what it opens (a dialog, a menu, toasts) at load. */
3
+ declare const Example: ComponentType<{ defaultOpen?: boolean }>;
4
+ export default Example;
@@ -0,0 +1,27 @@
1
+ "use client";
2
+
3
+ // registry/examples/profile-card/native/default.tsx
4
+ import { Avatar, Button, ProfileCard } from "@krizaka/ui/native";
5
+ import { jsx } from "react/jsx-runtime";
6
+ function NativeProfileCardDefault() {
7
+ return /* @__PURE__ */ jsx(
8
+ ProfileCard,
9
+ {
10
+ visual: /* @__PURE__ */ jsx(Avatar, { fallback: "EM", size: "xl" }),
11
+ name: "Elena Marchetti",
12
+ statLabel: "Profile complete",
13
+ value: 80,
14
+ stats: [
15
+ { label: "Challenges met", value: 12, max: 15, valueText: "12 of 15" },
16
+ { label: "Replies within a day", value: 94 }
17
+ ],
18
+ caption: "Dance and street fashion \xB7 Montr\xE9al",
19
+ animated: false,
20
+ style: { width: 300 },
21
+ children: /* @__PURE__ */ jsx(Button, { variant: "primary", size: "sm", label: "Follow" })
22
+ }
23
+ );
24
+ }
25
+ export {
26
+ NativeProfileCardDefault as default
27
+ };
@@ -0,0 +1,22 @@
1
+ import { Avatar, Button, ProfileCard } from "@krizaka/ui/native";
2
+
3
+ // A creator at a glance on mobile: the headline gauge, two stats in words, one action.
4
+ export default function NativeProfileCardDefault() {
5
+ return (
6
+ <ProfileCard
7
+ visual={<Avatar fallback="EM" size="xl" />}
8
+ name="Elena Marchetti"
9
+ statLabel="Profile complete"
10
+ value={80}
11
+ stats={[
12
+ { label: "Challenges met", value: 12, max: 15, valueText: "12 of 15" },
13
+ { label: "Replies within a day", value: 94 },
14
+ ]}
15
+ caption="Dance and street fashion · Montréal"
16
+ animated={false}
17
+ style={{ width: 300 }}
18
+ >
19
+ <Button variant="primary" size="sm" label="Follow" />
20
+ </ProfileCard>
21
+ );
22
+ }
@@ -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/promise-card/arcade.tsx
4
+ import { Mascot } from "@krizaka/ui/mascots";
5
+ import { PromiseCard } from "@krizaka/ui/promise-card";
6
+ import { jsx } from "react/jsx-runtime";
7
+ function PromiseCardArcade() {
8
+ return /* @__PURE__ */ jsx(
9
+ PromiseCard,
10
+ {
11
+ variant: "arcade",
12
+ brand: "orochia",
13
+ className: "w-[30rem] max-w-full",
14
+ label: "Special move",
15
+ promise: "90 % to the creator. On every sale.",
16
+ keys: ["\u2192", "\u2193", "\u2198", "P+K"],
17
+ bearer: /* @__PURE__ */ jsx(Mascot, { bird: "flamingo", mood: "success", size: 48, animated: false }),
18
+ bearerLabel: "In the corner",
19
+ bearerName: "The flamingo \xB7 gets paid"
20
+ }
21
+ );
22
+ }
23
+ export {
24
+ PromiseCardArcade as default
25
+ };
@@ -0,0 +1,19 @@
1
+ import { Mascot } from "@krizaka/ui/mascots";
2
+ import { PromiseCard } from "@krizaka/ui/promise-card";
3
+
4
+ // The special move of a told page: the input lights key by key, then the move lands, carried by the clan's bird.
5
+ export default function PromiseCardArcade() {
6
+ return (
7
+ <PromiseCard
8
+ variant="arcade"
9
+ brand="orochia"
10
+ className="w-[30rem] max-w-full"
11
+ label="Special move"
12
+ promise="90 % to the creator. On every sale."
13
+ keys={["→", "↓", "↘", "P+K"]}
14
+ bearer={<Mascot bird="flamingo" mood="success" size={48} animated={false} />}
15
+ bearerLabel="In the corner"
16
+ bearerName="The flamingo · gets paid"
17
+ />
18
+ );
19
+ }
@@ -0,0 +1,4 @@
1
+ import type { ComponentType } from "react";
2
+ /** A named example of the @krizaka/ui registry; `defaultOpen` opens what it opens (a dialog, a menu, toasts) at load. */
3
+ declare const Example: ComponentType<{ defaultOpen?: boolean }>;
4
+ export default Example;
@@ -0,0 +1,23 @@
1
+ "use client";
2
+
3
+ // registry/examples/promise-card/guarantee.tsx
4
+ import { Mascot } from "@krizaka/ui/mascots";
5
+ import { PromiseCard } from "@krizaka/ui/promise-card";
6
+ import { jsx } from "react/jsx-runtime";
7
+ function PromiseCardGuarantee() {
8
+ return /* @__PURE__ */ jsx(
9
+ PromiseCard,
10
+ {
11
+ className: "w-[30rem] max-w-full",
12
+ label: "Our promise",
13
+ promise: "Your documents never leave your servers.",
14
+ keys: ["\u2318", "K"],
15
+ bearer: /* @__PURE__ */ jsx(Mascot, { bird: "owl", mood: "success", size: 48, animated: false }),
16
+ bearerLabel: "Kept by",
17
+ bearerName: "The owl \xB7 reads, and keeps it in the house"
18
+ }
19
+ );
20
+ }
21
+ export {
22
+ PromiseCardGuarantee as default
23
+ };
@@ -0,0 +1,17 @@
1
+ import { Mascot } from "@krizaka/ui/mascots";
2
+ import { PromiseCard } from "@krizaka/ui/promise-card";
3
+
4
+ // A product's guarantee with the bird that keeps it — the owl reads your documents and keeps them in the house.
5
+ export default function PromiseCardGuarantee() {
6
+ return (
7
+ <PromiseCard
8
+ className="w-[30rem] max-w-full"
9
+ label="Our promise"
10
+ promise="Your documents never leave your servers."
11
+ keys={["⌘", "K"]}
12
+ bearer={<Mascot bird="owl" mood="success" size={48} animated={false} />}
13
+ bearerLabel="Kept by"
14
+ bearerName="The owl · reads, and keeps it in the house"
15
+ />
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,16 @@
1
+ "use client";
2
+
3
+ // registry/examples/scroll-stage/arcade.tsx
4
+ import { GoalGauge } from "@krizaka/ui/goal-gauge";
5
+ import { Scene, ScrollStage } from "@krizaka/ui/scroll-stage";
6
+ import { StageBanner } from "@krizaka/ui/stage-banner";
7
+ import { jsx, jsxs } from "react/jsx-runtime";
8
+ function ScrollStageArcade() {
9
+ return /* @__PURE__ */ jsx(ScrollStage, { variant: "arcade", className: "grid w-full max-w-xl gap-8", children: /* @__PURE__ */ jsxs(Scene, { brand: "orochia", className: "grid justify-items-center gap-4 text-center", children: [
10
+ /* @__PURE__ */ jsx(StageBanner, { size: "lg", stage: "Final round", title: "Eight problems in the way", subtitle: "One by one, they fall." }),
11
+ /* @__PURE__ */ jsx(GoalGauge, { label: "Problems left", segments: 8, value: 0, mode: "drain", valueText: "0 of 8 left" })
12
+ ] }) });
13
+ }
14
+ export {
15
+ ScrollStageArcade as default
16
+ };
@@ -0,0 +1,15 @@
1
+ import { GoalGauge } from "@krizaka/ui/goal-gauge";
2
+ import { Scene, ScrollStage } from "@krizaka/ui/scroll-stage";
3
+ import { StageBanner } from "@krizaka/ui/stage-banner";
4
+
5
+ // `variant="arcade"` once on the stage: every storytelling component inside takes the cabinet flavour.
6
+ export default function ScrollStageArcade() {
7
+ return (
8
+ <ScrollStage variant="arcade" className="grid w-full max-w-xl gap-8">
9
+ <Scene brand="orochia" className="grid justify-items-center gap-4 text-center">
10
+ <StageBanner size="lg" stage="Final round" title="Eight problems in the way" subtitle="One by one, they fall." />
11
+ <GoalGauge label="Problems left" segments={8} value={0} mode="drain" valueText="0 of 8 left" />
12
+ </Scene>
13
+ </ScrollStage>
14
+ );
15
+ }
@@ -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/scroll-stage/chapters.tsx
4
+ import { GoalGauge } from "@krizaka/ui/goal-gauge";
5
+ import { Scene, ScrollStage } from "@krizaka/ui/scroll-stage";
6
+ import { StageBanner } from "@krizaka/ui/stage-banner";
7
+ import { jsx, jsxs } from "react/jsx-runtime";
8
+ function ScrollStageChapters() {
9
+ return /* @__PURE__ */ jsxs(ScrollStage, { className: "grid w-full max-w-xl gap-10", children: [
10
+ /* @__PURE__ */ jsxs(Scene, { className: "grid gap-3", children: [
11
+ /* @__PURE__ */ jsx(StageBanner, { stage: "Step 01", name: "Your profile" }),
12
+ /* @__PURE__ */ jsxs("div", { "data-kzs-reveal": true, children: [
13
+ /* @__PURE__ */ jsx("h3", { className: "text-lg font-semibold text-fg", children: "Say who you are, in your words" }),
14
+ /* @__PURE__ */ jsx("p", { className: "text-sm text-fg-secondary", children: "Three questions, two photos. Nothing is public until you say so." })
15
+ ] })
16
+ ] }),
17
+ /* @__PURE__ */ jsxs(Scene, { className: "grid gap-3", children: [
18
+ /* @__PURE__ */ jsx(StageBanner, { stage: "Step 02", name: "Your first goal" }),
19
+ /* @__PURE__ */ jsx(GoalGauge, { label: "Backers", segments: 10, value: 6, valueText: "6 of 10 backers" })
20
+ ] })
21
+ ] });
22
+ }
23
+ export {
24
+ ScrollStageChapters as default
25
+ };
@@ -0,0 +1,22 @@
1
+ import { GoalGauge } from "@krizaka/ui/goal-gauge";
2
+ import { Scene, ScrollStage } from "@krizaka/ui/scroll-stage";
3
+ import { StageBanner } from "@krizaka/ui/stage-banner";
4
+
5
+ // A told page: each chapter plays once as it scrolls in — the banner, then the words (`data-kzs-reveal`), then the gauge.
6
+ export default function ScrollStageChapters() {
7
+ return (
8
+ <ScrollStage className="grid w-full max-w-xl gap-10">
9
+ <Scene className="grid gap-3">
10
+ <StageBanner stage="Step 01" name="Your profile" />
11
+ <div data-kzs-reveal>
12
+ <h3 className="text-lg font-semibold text-fg">Say who you are, in your words</h3>
13
+ <p className="text-sm text-fg-secondary">Three questions, two photos. Nothing is public until you say so.</p>
14
+ </div>
15
+ </Scene>
16
+ <Scene className="grid gap-3">
17
+ <StageBanner stage="Step 02" name="Your first goal" />
18
+ <GoalGauge label="Backers" segments={10} value={6} valueText="6 of 10 backers" />
19
+ </Scene>
20
+ </ScrollStage>
21
+ );
22
+ }
@@ -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,51 @@
1
+ "use client";
2
+
3
+ // registry/examples/settings-layout/account.tsx
4
+ import { Button } from "@krizaka/ui/button";
5
+ import { Field, Input, Select } from "@krizaka/ui/field";
6
+ import { SettingsLayout, SettingsSection } from "@krizaka/ui/settings-layout";
7
+ import { Switch } from "@krizaka/ui/switch";
8
+ import { jsx, jsxs } from "react/jsx-runtime";
9
+ var NAV = [
10
+ { id: "profile", label: "Profile", href: "#profile", current: true },
11
+ { id: "notifications", label: "Notifications", href: "#notifications" },
12
+ { id: "payouts", label: "Payouts", href: "#payouts" },
13
+ { id: "security", label: "Security", href: "#security" }
14
+ ];
15
+ function SettingsLayoutAccount() {
16
+ return /* @__PURE__ */ jsxs(SettingsLayout, { className: "w-full", title: "Settings", description: "Your profile, what we tell you and how you are paid.", nav: NAV, navLabel: "Settings sections", children: [
17
+ /* @__PURE__ */ jsxs(
18
+ SettingsSection,
19
+ {
20
+ id: "profile",
21
+ title: "Profile",
22
+ description: "What your fans see.",
23
+ footer: /* @__PURE__ */ jsx(Button, { size: "sm", variant: "primary", shape: "cut", children: "Save the profile" }),
24
+ children: [
25
+ /* @__PURE__ */ jsxs(Field.Root, { children: [
26
+ /* @__PURE__ */ jsx(Field.Label, { htmlFor: "settings-name", children: "Display name" }),
27
+ /* @__PURE__ */ jsx(Input, { id: "settings-name", defaultValue: "Elena Varga" })
28
+ ] }),
29
+ /* @__PURE__ */ jsxs(Field.Root, { children: [
30
+ /* @__PURE__ */ jsx(Field.Label, { htmlFor: "settings-language", children: "Language" }),
31
+ /* @__PURE__ */ jsxs(Select, { id: "settings-language", defaultValue: "fr", children: [
32
+ /* @__PURE__ */ jsx("option", { value: "en", children: "English" }),
33
+ /* @__PURE__ */ jsx("option", { value: "fr", children: "Fran\xE7ais" })
34
+ ] })
35
+ ] })
36
+ ]
37
+ }
38
+ ),
39
+ /* @__PURE__ */ jsx(SettingsSection, { id: "notifications", title: "Notifications", description: "Only what you ask for.", children: [
40
+ { id: "unlock", label: "A fan unlocks a video", on: true },
41
+ { id: "auction", label: "An auction ends", on: true },
42
+ { id: "weekly", label: "Weekly summary by email", on: false }
43
+ ].map((n) => /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between gap-4 text-sm text-fg", children: [
44
+ /* @__PURE__ */ jsx("span", { id: `notify-${n.id}`, children: n.label }),
45
+ /* @__PURE__ */ jsx(Switch, { "aria-labelledby": `notify-${n.id}`, defaultChecked: n.on })
46
+ ] }, n.id)) })
47
+ ] });
48
+ }
49
+ export {
50
+ SettingsLayoutAccount as default
51
+ };
@@ -0,0 +1,50 @@
1
+ import { Button } from "@krizaka/ui/button";
2
+ import { Field, Input, Select } from "@krizaka/ui/field";
3
+ import { SettingsLayout, SettingsSection } from "@krizaka/ui/settings-layout";
4
+ import { Switch } from "@krizaka/ui/switch";
5
+
6
+ const NAV = [
7
+ { id: "profile", label: "Profile", href: "#profile", current: true },
8
+ { id: "notifications", label: "Notifications", href: "#notifications" },
9
+ { id: "payouts", label: "Payouts", href: "#payouts" },
10
+ { id: "security", label: "Security", href: "#security" },
11
+ ];
12
+
13
+ // TEMPLATE — account settings: the sections on the left (a row of chips that scrolls on a phone), each form a titled
14
+ // card with its own save, so a change in one never waits for another.
15
+ export default function SettingsLayoutAccount() {
16
+ return (
17
+ <SettingsLayout className="w-full" title="Settings" description="Your profile, what we tell you and how you are paid." nav={NAV} navLabel="Settings sections">
18
+ <SettingsSection
19
+ id="profile"
20
+ title="Profile"
21
+ description="What your fans see."
22
+ footer={<Button size="sm" variant="primary" shape="cut">Save the profile</Button>}
23
+ >
24
+ <Field.Root>
25
+ <Field.Label htmlFor="settings-name">Display name</Field.Label>
26
+ <Input id="settings-name" defaultValue="Elena Varga" />
27
+ </Field.Root>
28
+ <Field.Root>
29
+ <Field.Label htmlFor="settings-language">Language</Field.Label>
30
+ <Select id="settings-language" defaultValue="fr">
31
+ <option value="en">English</option>
32
+ <option value="fr">Français</option>
33
+ </Select>
34
+ </Field.Root>
35
+ </SettingsSection>
36
+ <SettingsSection id="notifications" title="Notifications" description="Only what you ask for.">
37
+ {[
38
+ { id: "unlock", label: "A fan unlocks a video", on: true },
39
+ { id: "auction", label: "An auction ends", on: true },
40
+ { id: "weekly", label: "Weekly summary by email", on: false },
41
+ ].map((n) => (
42
+ <div key={n.id} className="flex items-center justify-between gap-4 text-sm text-fg">
43
+ <span id={`notify-${n.id}`}>{n.label}</span>
44
+ <Switch aria-labelledby={`notify-${n.id}`} defaultChecked={n.on} />
45
+ </div>
46
+ ))}
47
+ </SettingsSection>
48
+ </SettingsLayout>
49
+ );
50
+ }
@@ -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;