@krizaka/ui 2.0.0-beta.5 → 2.0.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 (688) hide show
  1. package/README.md +44 -28
  2. package/dist/{button-D5aSsmxX.d.ts → button-Cgfkg_3y.d.ts} +5 -1
  3. package/dist/button.d.ts +5 -1
  4. package/dist/button.js +4 -2
  5. package/dist/button.js.map +1 -1
  6. package/dist/card.d.ts +7 -1
  7. package/dist/card.js +2 -2
  8. package/dist/card.js.map +1 -1
  9. package/dist/{chunk-IUGBKMJC.js → chunk-FHYZSO2S.js} +2 -2
  10. package/dist/{chunk-6DJ6SQY3.js → chunk-PESA2R4U.js} +5 -3
  11. package/dist/chunk-PESA2R4U.js.map +1 -0
  12. package/dist/command.d.ts +11 -2
  13. package/dist/command.js +17 -6
  14. package/dist/command.js.map +1 -1
  15. package/dist/confirm-button.d.ts +1 -1
  16. package/dist/confirm-button.js +1 -1
  17. package/dist/countdown.d.ts +7 -6
  18. package/dist/countdown.js +12 -8
  19. package/dist/countdown.js.map +1 -1
  20. package/dist/dialog.js +2 -2
  21. package/dist/dropdown-menu.js +3 -3
  22. package/dist/dropdown-menu.js.map +1 -1
  23. package/dist/field.js +2 -2
  24. package/dist/field.js.map +1 -1
  25. package/dist/native.d.ts +56 -6
  26. package/dist/native.js +129 -85
  27. package/dist/native.js.map +1 -1
  28. package/dist/theme.d.ts +1 -1
  29. package/dist/theme.js +1 -1
  30. package/package.json +11 -11
  31. package/registry/alert.json +141 -3
  32. package/registry/avatar.json +314 -3
  33. package/registry/badge.json +233 -3
  34. package/registry/button.json +522 -8
  35. package/registry/card.json +427 -4
  36. package/registry/checkbox.json +127 -3
  37. package/registry/chip.json +394 -3
  38. package/registry/cn.json +51 -3
  39. package/registry/command.json +246 -5
  40. package/registry/confirm-button.json +172 -5
  41. package/registry/countdown.json +318 -7
  42. package/registry/dialog.json +310 -3
  43. package/registry/dropdown-menu.json +117 -4
  44. package/registry/empty-state.json +170 -3
  45. package/registry/examples/alert/danger.d.ts +4 -0
  46. package/registry/examples/alert/danger.js +22 -0
  47. package/registry/examples/alert/danger.tsx +25 -0
  48. package/registry/examples/alert/info.d.ts +4 -0
  49. package/registry/{demos/alert.js → examples/alert/info.js} +3 -3
  50. package/registry/{demos/alert.tsx → examples/alert/info.tsx} +1 -1
  51. package/registry/examples/alert/success.d.ts +4 -0
  52. package/registry/examples/alert/success.js +12 -0
  53. package/registry/examples/alert/success.tsx +15 -0
  54. package/registry/examples/alert/title-only.d.ts +4 -0
  55. package/registry/examples/alert/title-only.js +11 -0
  56. package/registry/examples/alert/title-only.tsx +5 -0
  57. package/registry/examples/alert/warning.d.ts +4 -0
  58. package/registry/examples/alert/warning.js +13 -0
  59. package/registry/examples/alert/warning.tsx +17 -0
  60. package/registry/examples/avatar/fallback.d.ts +4 -0
  61. package/registry/examples/avatar/fallback.js +11 -0
  62. package/registry/examples/avatar/fallback.tsx +6 -0
  63. package/registry/examples/avatar/group.d.ts +4 -0
  64. package/registry/examples/avatar/group.js +20 -0
  65. package/registry/examples/avatar/group.tsx +21 -0
  66. package/registry/examples/avatar/native/group.d.ts +4 -0
  67. package/registry/examples/avatar/native/group.dark.png +0 -0
  68. package/registry/examples/avatar/native/group.js +17 -0
  69. package/registry/examples/avatar/native/group.light.png +0 -0
  70. package/registry/examples/avatar/native/group.tsx +13 -0
  71. package/registry/examples/avatar/native/sizes.d.ts +4 -0
  72. package/registry/examples/avatar/native/sizes.dark.png +0 -0
  73. package/registry/examples/avatar/native/sizes.js +18 -0
  74. package/registry/examples/avatar/native/sizes.light.png +0 -0
  75. package/registry/examples/avatar/native/sizes.tsx +15 -0
  76. package/registry/examples/avatar/sizes.d.ts +4 -0
  77. package/registry/examples/avatar/sizes.js +17 -0
  78. package/registry/examples/avatar/sizes.tsx +13 -0
  79. package/registry/examples/avatar/with-image.d.ts +4 -0
  80. package/registry/{demos/avatar.js → examples/avatar/with-image.js} +3 -3
  81. package/registry/{demos/avatar.tsx → examples/avatar/with-image.tsx} +1 -1
  82. package/registry/examples/badge/accent.d.ts +4 -0
  83. package/registry/examples/badge/accent.js +11 -0
  84. package/registry/examples/badge/accent.tsx +9 -0
  85. package/registry/examples/badge/danger.d.ts +4 -0
  86. package/registry/examples/badge/danger.js +11 -0
  87. package/registry/examples/badge/danger.tsx +9 -0
  88. package/registry/examples/badge/medium.d.ts +4 -0
  89. package/registry/examples/badge/medium.js +11 -0
  90. package/registry/examples/badge/medium.tsx +9 -0
  91. package/registry/examples/badge/native/dot.d.ts +4 -0
  92. package/registry/examples/badge/native/dot.dark.png +0 -0
  93. package/registry/examples/badge/native/dot.js +15 -0
  94. package/registry/examples/badge/native/dot.light.png +0 -0
  95. package/registry/examples/badge/native/dot.tsx +16 -0
  96. package/registry/examples/badge/native/scrim.d.ts +4 -0
  97. package/registry/examples/badge/native/scrim.dark.png +0 -0
  98. package/registry/examples/badge/native/scrim.js +13 -0
  99. package/registry/examples/badge/native/scrim.light.png +0 -0
  100. package/registry/examples/badge/native/scrim.tsx +14 -0
  101. package/registry/examples/badge/native/tones.d.ts +4 -0
  102. package/registry/examples/badge/native/tones.dark.png +0 -0
  103. package/registry/examples/badge/native/tones.js +18 -0
  104. package/registry/examples/badge/native/tones.light.png +0 -0
  105. package/registry/examples/badge/native/tones.tsx +14 -0
  106. package/registry/examples/badge/neutral.d.ts +4 -0
  107. package/registry/{demos/badge.js → examples/badge/neutral.js} +3 -3
  108. package/registry/{demos/badge.tsx → examples/badge/neutral.tsx} +1 -1
  109. package/registry/examples/badge/scrim.d.ts +4 -0
  110. package/registry/examples/badge/scrim.js +11 -0
  111. package/registry/examples/badge/scrim.tsx +10 -0
  112. package/registry/examples/badge/success.d.ts +4 -0
  113. package/registry/examples/badge/success.js +11 -0
  114. package/registry/examples/badge/success.tsx +9 -0
  115. package/registry/examples/badge/warning.d.ts +4 -0
  116. package/registry/examples/badge/warning.js +11 -0
  117. package/registry/examples/badge/warning.tsx +9 -0
  118. package/registry/examples/button/as-child-link.d.ts +4 -0
  119. package/registry/examples/button/as-child-link.js +11 -0
  120. package/registry/examples/button/as-child-link.tsx +10 -0
  121. package/registry/examples/button/danger.d.ts +4 -0
  122. package/registry/examples/button/danger.js +11 -0
  123. package/registry/examples/button/danger.tsx +5 -0
  124. package/registry/examples/button/disabled.d.ts +4 -0
  125. package/registry/examples/button/disabled.js +11 -0
  126. package/registry/examples/button/disabled.tsx +9 -0
  127. package/registry/examples/button/ghost.d.ts +4 -0
  128. package/registry/examples/button/ghost.js +11 -0
  129. package/registry/examples/button/ghost.tsx +5 -0
  130. package/registry/examples/button/gradient.d.ts +4 -0
  131. package/registry/examples/button/gradient.js +11 -0
  132. package/registry/examples/button/gradient.tsx +5 -0
  133. package/registry/examples/button/icon.d.ts +4 -0
  134. package/registry/examples/button/icon.js +14 -0
  135. package/registry/examples/button/icon.tsx +18 -0
  136. package/registry/examples/button/loading.d.ts +4 -0
  137. package/registry/examples/button/loading.js +11 -0
  138. package/registry/examples/button/loading.tsx +10 -0
  139. package/registry/examples/button/native/danger.d.ts +4 -0
  140. package/registry/examples/button/native/danger.dark.png +0 -0
  141. package/registry/examples/button/native/danger.js +12 -0
  142. package/registry/examples/button/native/danger.light.png +0 -0
  143. package/registry/examples/button/native/danger.tsx +5 -0
  144. package/registry/examples/button/native/disabled.d.ts +4 -0
  145. package/registry/examples/button/native/disabled.dark.png +0 -0
  146. package/registry/examples/button/native/disabled.js +11 -0
  147. package/registry/examples/button/native/disabled.light.png +0 -0
  148. package/registry/examples/button/native/disabled.tsx +5 -0
  149. package/registry/examples/button/native/ghost.d.ts +4 -0
  150. package/registry/examples/button/native/ghost.dark.png +0 -0
  151. package/registry/examples/button/native/ghost.js +12 -0
  152. package/registry/examples/button/native/ghost.light.png +0 -0
  153. package/registry/examples/button/native/ghost.tsx +5 -0
  154. package/registry/examples/button/native/gradient.d.ts +4 -0
  155. package/registry/examples/button/native/gradient.dark.png +0 -0
  156. package/registry/examples/button/native/gradient.js +12 -0
  157. package/registry/examples/button/native/gradient.light.png +0 -0
  158. package/registry/examples/button/native/gradient.tsx +5 -0
  159. package/registry/examples/button/native/icon-only.d.ts +4 -0
  160. package/registry/examples/button/native/icon-only.dark.png +0 -0
  161. package/registry/examples/button/native/icon-only.js +19 -0
  162. package/registry/examples/button/native/icon-only.light.png +0 -0
  163. package/registry/examples/button/native/icon-only.tsx +21 -0
  164. package/registry/examples/button/native/icon.d.ts +4 -0
  165. package/registry/examples/button/native/icon.dark.png +0 -0
  166. package/registry/examples/button/native/icon.js +16 -0
  167. package/registry/examples/button/native/icon.light.png +0 -0
  168. package/registry/examples/button/native/icon.tsx +15 -0
  169. package/registry/examples/button/native/loading.d.ts +4 -0
  170. package/registry/examples/button/native/loading.dark.png +0 -0
  171. package/registry/examples/button/native/loading.js +11 -0
  172. package/registry/examples/button/native/loading.light.png +0 -0
  173. package/registry/examples/button/native/loading.tsx +6 -0
  174. package/registry/examples/button/native/outline.d.ts +4 -0
  175. package/registry/examples/button/native/outline.dark.png +0 -0
  176. package/registry/examples/button/native/outline.js +12 -0
  177. package/registry/examples/button/native/outline.light.png +0 -0
  178. package/registry/examples/button/native/outline.tsx +5 -0
  179. package/registry/examples/button/native/primary.d.ts +4 -0
  180. package/registry/examples/button/native/primary.dark.png +0 -0
  181. package/registry/examples/button/native/primary.js +12 -0
  182. package/registry/examples/button/native/primary.light.png +0 -0
  183. package/registry/examples/button/native/primary.tsx +5 -0
  184. package/registry/examples/button/native/secondary.d.ts +4 -0
  185. package/registry/examples/button/native/secondary.dark.png +0 -0
  186. package/registry/examples/button/native/secondary.js +12 -0
  187. package/registry/examples/button/native/secondary.light.png +0 -0
  188. package/registry/examples/button/native/secondary.tsx +6 -0
  189. package/registry/examples/button/native/sizes.d.ts +4 -0
  190. package/registry/examples/button/native/sizes.dark.png +0 -0
  191. package/registry/examples/button/native/sizes.js +15 -0
  192. package/registry/examples/button/native/sizes.light.png +0 -0
  193. package/registry/examples/button/native/sizes.tsx +11 -0
  194. package/registry/examples/button/outline.d.ts +4 -0
  195. package/registry/examples/button/outline.js +11 -0
  196. package/registry/examples/button/outline.tsx +5 -0
  197. package/registry/examples/button/pill.d.ts +4 -0
  198. package/registry/examples/button/pill.js +11 -0
  199. package/registry/examples/button/pill.tsx +9 -0
  200. package/registry/examples/button/primary.d.ts +4 -0
  201. package/registry/{demos/button.js → examples/button/primary.js} +3 -3
  202. package/registry/{demos/button.tsx → examples/button/primary.tsx} +1 -1
  203. package/registry/examples/button/secondary.d.ts +4 -0
  204. package/registry/examples/button/secondary.js +11 -0
  205. package/registry/examples/button/secondary.tsx +6 -0
  206. package/registry/examples/button/sizes.d.ts +4 -0
  207. package/registry/examples/button/sizes.js +15 -0
  208. package/registry/examples/button/sizes.tsx +17 -0
  209. package/registry/examples/card/interactive-link.d.ts +4 -0
  210. package/registry/examples/card/interactive-link.js +15 -0
  211. package/registry/examples/card/interactive-link.tsx +16 -0
  212. package/registry/examples/card/media-card.d.ts +4 -0
  213. package/registry/{demos/card.js → examples/card/media-card.js} +3 -3
  214. package/registry/{demos/card.tsx → examples/card/media-card.tsx} +1 -1
  215. package/registry/examples/card/media-fallback.d.ts +4 -0
  216. package/registry/examples/card/media-fallback.js +18 -0
  217. package/registry/examples/card/media-fallback.tsx +22 -0
  218. package/registry/examples/card/native/body.d.ts +4 -0
  219. package/registry/examples/card/native/body.dark.png +0 -0
  220. package/registry/examples/card/native/body.js +15 -0
  221. package/registry/examples/card/native/body.light.png +0 -0
  222. package/registry/examples/card/native/body.tsx +13 -0
  223. package/registry/examples/card/native/default.d.ts +4 -0
  224. package/registry/examples/card/native/default.dark.png +0 -0
  225. package/registry/examples/card/native/default.js +24 -0
  226. package/registry/examples/card/native/default.light.png +0 -0
  227. package/registry/examples/card/native/default.tsx +28 -0
  228. package/registry/examples/card/native/elevated.d.ts +4 -0
  229. package/registry/examples/card/native/elevated.dark.png +0 -0
  230. package/registry/examples/card/native/elevated.js +24 -0
  231. package/registry/examples/card/native/elevated.light.png +0 -0
  232. package/registry/examples/card/native/elevated.tsx +28 -0
  233. package/registry/examples/card/native/pressable.d.ts +4 -0
  234. package/registry/examples/card/native/pressable.dark.png +0 -0
  235. package/registry/examples/card/native/pressable.js +15 -0
  236. package/registry/examples/card/native/pressable.light.png +0 -0
  237. package/registry/examples/card/native/pressable.tsx +13 -0
  238. package/registry/examples/card/reveal-grid.d.ts +4 -0
  239. package/registry/examples/card/reveal-grid.js +28 -0
  240. package/registry/examples/card/reveal-grid.tsx +31 -0
  241. package/registry/examples/card/stat-card.d.ts +4 -0
  242. package/registry/examples/card/stat-card.js +18 -0
  243. package/registry/examples/card/stat-card.tsx +17 -0
  244. package/registry/examples/checkbox/checked.d.ts +4 -0
  245. package/registry/examples/checkbox/checked.js +11 -0
  246. package/registry/examples/checkbox/checked.tsx +5 -0
  247. package/registry/examples/checkbox/disabled.d.ts +4 -0
  248. package/registry/examples/checkbox/disabled.js +14 -0
  249. package/registry/examples/checkbox/disabled.tsx +12 -0
  250. package/registry/examples/checkbox/indeterminate.d.ts +4 -0
  251. package/registry/examples/checkbox/indeterminate.js +11 -0
  252. package/registry/examples/checkbox/indeterminate.tsx +6 -0
  253. package/registry/examples/checkbox/invalid.d.ts +4 -0
  254. package/registry/examples/checkbox/invalid.js +15 -0
  255. package/registry/examples/checkbox/invalid.tsx +14 -0
  256. package/registry/examples/checkbox/unchecked.d.ts +4 -0
  257. package/registry/{demos/checkbox.js → examples/checkbox/unchecked.js} +3 -3
  258. package/registry/{demos/checkbox.tsx → examples/checkbox/unchecked.tsx} +2 -1
  259. package/registry/examples/chip/multiple.d.ts +4 -0
  260. package/registry/examples/chip/multiple.js +16 -0
  261. package/registry/examples/chip/multiple.tsx +12 -0
  262. package/registry/examples/chip/native/multiple.d.ts +4 -0
  263. package/registry/examples/chip/native/multiple.dark.png +0 -0
  264. package/registry/examples/chip/native/multiple.js +18 -0
  265. package/registry/examples/chip/native/multiple.light.png +0 -0
  266. package/registry/examples/chip/native/multiple.tsx +17 -0
  267. package/registry/examples/chip/native/removable.d.ts +4 -0
  268. package/registry/examples/chip/native/removable.dark.png +0 -0
  269. package/registry/examples/chip/native/removable.js +17 -0
  270. package/registry/examples/chip/native/removable.light.png +0 -0
  271. package/registry/examples/chip/native/removable.tsx +15 -0
  272. package/registry/examples/chip/native/single.d.ts +4 -0
  273. package/registry/examples/chip/native/single.dark.png +0 -0
  274. package/registry/examples/chip/native/single.js +15 -0
  275. package/registry/examples/chip/native/single.light.png +0 -0
  276. package/registry/examples/chip/native/single.tsx +11 -0
  277. package/registry/examples/chip/native/toggle.d.ts +4 -0
  278. package/registry/examples/chip/native/toggle.dark.png +0 -0
  279. package/registry/examples/chip/native/toggle.js +17 -0
  280. package/registry/examples/chip/native/toggle.light.png +0 -0
  281. package/registry/examples/chip/native/toggle.tsx +16 -0
  282. package/registry/examples/chip/removable.d.ts +4 -0
  283. package/registry/examples/chip/removable.js +16 -0
  284. package/registry/examples/chip/removable.tsx +15 -0
  285. package/registry/examples/chip/single.d.ts +4 -0
  286. package/registry/examples/chip/single.js +16 -0
  287. package/registry/examples/chip/single.tsx +13 -0
  288. package/registry/examples/chip/small.d.ts +4 -0
  289. package/registry/examples/chip/small.js +16 -0
  290. package/registry/examples/chip/small.tsx +12 -0
  291. package/registry/examples/chip/toggle.d.ts +4 -0
  292. package/registry/{demos/chip.js → examples/chip/toggle.js} +3 -3
  293. package/registry/{demos/chip.tsx → examples/chip/toggle.tsx} +2 -1
  294. package/registry/examples/cn/merge.d.ts +4 -0
  295. package/registry/{demos/cn.js → examples/cn/merge.js} +3 -3
  296. package/registry/{demos/cn.tsx → examples/cn/merge.tsx} +1 -1
  297. package/registry/examples/command/dialog.d.ts +4 -0
  298. package/registry/examples/command/dialog.js +39 -0
  299. package/registry/examples/command/dialog.tsx +35 -0
  300. package/registry/examples/command/inline.d.ts +4 -0
  301. package/registry/{demos/command.js → examples/command/inline.js} +4 -5
  302. package/registry/{demos/command.tsx → examples/command/inline.tsx} +2 -3
  303. package/registry/examples/command/no-results.d.ts +4 -0
  304. package/registry/examples/command/no-results.js +19 -0
  305. package/registry/examples/command/no-results.tsx +20 -0
  306. package/registry/examples/confirm-button/armed.d.ts +4 -0
  307. package/registry/examples/confirm-button/armed.js +12 -0
  308. package/registry/examples/confirm-button/armed.tsx +14 -0
  309. package/registry/examples/confirm-button/idle.d.ts +4 -0
  310. package/registry/{demos/confirm-button.js → examples/confirm-button/idle.js} +3 -3
  311. package/registry/{demos/confirm-button.tsx → examples/confirm-button/idle.tsx} +1 -1
  312. package/registry/examples/confirm-button/with-text.d.ts +4 -0
  313. package/registry/examples/confirm-button/with-text.js +12 -0
  314. package/registry/examples/confirm-button/with-text.tsx +12 -0
  315. package/registry/examples/countdown/days.d.ts +4 -0
  316. package/registry/examples/countdown/days.js +13 -0
  317. package/registry/examples/countdown/days.tsx +10 -0
  318. package/registry/examples/countdown/ended.d.ts +4 -0
  319. package/registry/examples/countdown/ended.js +13 -0
  320. package/registry/examples/countdown/ended.tsx +10 -0
  321. package/registry/examples/countdown/hours.d.ts +4 -0
  322. package/registry/{demos/countdown.js → examples/countdown/hours.js} +3 -3
  323. package/registry/{demos/countdown.tsx → examples/countdown/hours.tsx} +1 -1
  324. package/registry/examples/countdown/native/days.d.ts +4 -0
  325. package/registry/examples/countdown/native/days.dark.png +0 -0
  326. package/registry/examples/countdown/native/days.js +13 -0
  327. package/registry/examples/countdown/native/days.light.png +0 -0
  328. package/registry/examples/countdown/native/days.tsx +7 -0
  329. package/registry/examples/countdown/native/hours.d.ts +4 -0
  330. package/registry/examples/countdown/native/hours.dark.png +0 -0
  331. package/registry/examples/countdown/native/hours.js +13 -0
  332. package/registry/examples/countdown/native/hours.light.png +0 -0
  333. package/registry/examples/countdown/native/hours.tsx +7 -0
  334. package/registry/examples/countdown/native/sizes.d.ts +4 -0
  335. package/registry/examples/countdown/native/sizes.dark.png +0 -0
  336. package/registry/examples/countdown/native/sizes.js +18 -0
  337. package/registry/examples/countdown/native/sizes.light.png +0 -0
  338. package/registry/examples/countdown/native/sizes.tsx +15 -0
  339. package/registry/examples/countdown/native/urgent.d.ts +4 -0
  340. package/registry/examples/countdown/native/urgent.dark.png +0 -0
  341. package/registry/examples/countdown/native/urgent.js +13 -0
  342. package/registry/examples/countdown/native/urgent.light.png +0 -0
  343. package/registry/examples/countdown/native/urgent.tsx +7 -0
  344. package/registry/examples/countdown/native/with-label.d.ts +4 -0
  345. package/registry/examples/countdown/native/with-label.dark.png +0 -0
  346. package/registry/examples/countdown/native/with-label.js +13 -0
  347. package/registry/examples/countdown/native/with-label.light.png +0 -0
  348. package/registry/examples/countdown/native/with-label.tsx +7 -0
  349. package/registry/examples/countdown/sizes.d.ts +4 -0
  350. package/registry/examples/countdown/sizes.js +18 -0
  351. package/registry/examples/countdown/sizes.tsx +17 -0
  352. package/registry/examples/countdown/urgent.d.ts +4 -0
  353. package/registry/examples/countdown/urgent.js +13 -0
  354. package/registry/examples/countdown/urgent.tsx +10 -0
  355. package/registry/examples/countdown/with-label.d.ts +4 -0
  356. package/registry/examples/countdown/with-label.js +13 -0
  357. package/registry/examples/countdown/with-label.tsx +10 -0
  358. package/registry/examples/dialog/alert-destructive.d.ts +4 -0
  359. package/registry/examples/dialog/alert-destructive.js +24 -0
  360. package/registry/examples/dialog/alert-destructive.tsx +20 -0
  361. package/registry/examples/dialog/bottom.d.ts +4 -0
  362. package/registry/examples/dialog/bottom.js +29 -0
  363. package/registry/examples/dialog/bottom.tsx +32 -0
  364. package/registry/examples/dialog/center.d.ts +4 -0
  365. package/registry/{demos/dialog.js → examples/dialog/center.js} +3 -3
  366. package/registry/{demos/dialog.tsx → examples/dialog/center.tsx} +1 -1
  367. package/registry/examples/dialog/gate.d.ts +4 -0
  368. package/registry/examples/dialog/gate.js +24 -0
  369. package/registry/examples/dialog/gate.tsx +27 -0
  370. package/registry/examples/dialog/right.d.ts +4 -0
  371. package/registry/examples/dialog/right.js +29 -0
  372. package/registry/examples/dialog/right.tsx +32 -0
  373. package/registry/examples/dialog/sheet-form.d.ts +4 -0
  374. package/registry/examples/dialog/sheet-form.js +35 -0
  375. package/registry/examples/dialog/sheet-form.tsx +36 -0
  376. package/registry/examples/dropdown-menu/actions.d.ts +4 -0
  377. package/registry/{demos/dropdown-menu.js → examples/dropdown-menu/actions.js} +3 -3
  378. package/registry/{demos/dropdown-menu.tsx → examples/dropdown-menu/actions.tsx} +1 -1
  379. package/registry/examples/empty-state/default.d.ts +4 -0
  380. package/registry/{demos/empty-state.js → examples/empty-state/default.js} +3 -3
  381. package/registry/{demos/empty-state.tsx → examples/empty-state/default.tsx} +1 -1
  382. package/registry/examples/empty-state/native/default.d.ts +4 -0
  383. package/registry/examples/empty-state/native/default.dark.png +0 -0
  384. package/registry/examples/empty-state/native/default.js +25 -0
  385. package/registry/examples/empty-state/native/default.light.png +0 -0
  386. package/registry/examples/empty-state/native/default.tsx +25 -0
  387. package/registry/examples/empty-state/title-only.d.ts +4 -0
  388. package/registry/examples/empty-state/title-only.js +11 -0
  389. package/registry/examples/empty-state/title-only.tsx +5 -0
  390. package/registry/examples/empty-state/with-action.d.ts +4 -0
  391. package/registry/examples/empty-state/with-action.js +24 -0
  392. package/registry/examples/empty-state/with-action.tsx +25 -0
  393. package/registry/examples/field/default.d.ts +4 -0
  394. package/registry/{demos/field.js → examples/field/default.js} +3 -3
  395. package/registry/{demos/field.tsx → examples/field/default.tsx} +1 -1
  396. package/registry/examples/field/disabled.d.ts +4 -0
  397. package/registry/examples/field/disabled.js +14 -0
  398. package/registry/examples/field/disabled.tsx +10 -0
  399. package/registry/examples/field/invalid.d.ts +4 -0
  400. package/registry/examples/field/invalid.js +15 -0
  401. package/registry/examples/field/invalid.tsx +12 -0
  402. package/registry/examples/field/select.d.ts +4 -0
  403. package/registry/examples/field/select.js +18 -0
  404. package/registry/examples/field/select.tsx +15 -0
  405. package/registry/examples/field/textarea.d.ts +4 -0
  406. package/registry/examples/field/textarea.js +14 -0
  407. package/registry/examples/field/textarea.tsx +10 -0
  408. package/registry/examples/kbd/key.d.ts +4 -0
  409. package/registry/{demos/kbd.js → examples/kbd/key.js} +3 -3
  410. package/registry/{demos/kbd.tsx → examples/kbd/key.tsx} +1 -1
  411. package/registry/examples/kbd/shortcut.d.ts +4 -0
  412. package/registry/examples/kbd/shortcut.js +15 -0
  413. package/registry/examples/kbd/shortcut.tsx +11 -0
  414. package/registry/examples/kbd/small.d.ts +4 -0
  415. package/registry/examples/kbd/small.js +11 -0
  416. package/registry/examples/kbd/small.tsx +5 -0
  417. package/registry/examples/page-header/default.d.ts +4 -0
  418. package/registry/{demos/page-header.js → examples/page-header/default.js} +3 -3
  419. package/registry/{demos/page-header.tsx → examples/page-header/default.tsx} +1 -1
  420. package/registry/examples/page-header/with-actions.d.ts +4 -0
  421. package/registry/examples/page-header/with-actions.js +22 -0
  422. package/registry/examples/page-header/with-actions.tsx +17 -0
  423. package/registry/examples/page-header/with-breadcrumb.d.ts +4 -0
  424. package/registry/examples/page-header/with-breadcrumb.js +24 -0
  425. package/registry/examples/page-header/with-breadcrumb.tsx +26 -0
  426. package/registry/examples/popover/form.d.ts +4 -0
  427. package/registry/{demos/popover.js → examples/popover/form.js} +3 -3
  428. package/registry/{demos/popover.tsx → examples/popover/form.tsx} +1 -1
  429. package/registry/examples/progress/bar-indeterminate.d.ts +4 -0
  430. package/registry/examples/progress/bar-indeterminate.js +11 -0
  431. package/registry/examples/progress/bar-indeterminate.tsx +6 -0
  432. package/registry/examples/progress/bar-sizes.d.ts +4 -0
  433. package/registry/examples/progress/bar-sizes.js +15 -0
  434. package/registry/examples/progress/bar-sizes.tsx +11 -0
  435. package/registry/examples/progress/bar.d.ts +4 -0
  436. package/registry/{demos/progress.js → examples/progress/bar.js} +3 -3
  437. package/registry/{demos/progress.tsx → examples/progress/bar.tsx} +1 -1
  438. package/registry/examples/progress/native/bar.d.ts +4 -0
  439. package/registry/examples/progress/native/bar.dark.png +0 -0
  440. package/registry/examples/progress/native/bar.js +16 -0
  441. package/registry/examples/progress/native/bar.light.png +0 -0
  442. package/registry/examples/progress/native/bar.tsx +12 -0
  443. package/registry/examples/progress/native/indeterminate.d.ts +4 -0
  444. package/registry/examples/progress/native/indeterminate.dark.png +0 -0
  445. package/registry/examples/progress/native/indeterminate.js +15 -0
  446. package/registry/examples/progress/native/indeterminate.light.png +0 -0
  447. package/registry/examples/progress/native/indeterminate.tsx +12 -0
  448. package/registry/examples/progress/native/ring.d.ts +4 -0
  449. package/registry/examples/progress/native/ring.dark.png +0 -0
  450. package/registry/examples/progress/native/ring.js +19 -0
  451. package/registry/examples/progress/native/ring.light.png +0 -0
  452. package/registry/examples/progress/native/ring.tsx +19 -0
  453. package/registry/examples/progress/ring-indeterminate.d.ts +4 -0
  454. package/registry/examples/progress/ring-indeterminate.js +11 -0
  455. package/registry/examples/progress/ring-indeterminate.tsx +5 -0
  456. package/registry/examples/progress/ring.d.ts +4 -0
  457. package/registry/examples/progress/ring.js +18 -0
  458. package/registry/examples/progress/ring.tsx +17 -0
  459. package/registry/examples/radio-group/cards.d.ts +4 -0
  460. package/registry/examples/radio-group/cards.js +19 -0
  461. package/registry/examples/radio-group/cards.tsx +21 -0
  462. package/registry/examples/radio-group/horizontal.d.ts +4 -0
  463. package/registry/examples/radio-group/horizontal.js +15 -0
  464. package/registry/examples/radio-group/horizontal.tsx +12 -0
  465. package/registry/examples/radio-group/items.d.ts +4 -0
  466. package/registry/{demos/radio-group.js → examples/radio-group/items.js} +3 -3
  467. package/registry/{demos/radio-group.tsx → examples/radio-group/items.tsx} +1 -1
  468. package/registry/examples/section-backdrop/depth-of-field.d.ts +4 -0
  469. package/registry/examples/section-backdrop/depth-of-field.js +18 -0
  470. package/registry/examples/section-backdrop/depth-of-field.tsx +13 -0
  471. package/registry/examples/section-backdrop/hero.d.ts +4 -0
  472. package/registry/{demos/section-backdrop.js → examples/section-backdrop/hero.js} +3 -3
  473. package/registry/{demos/section-backdrop.tsx → examples/section-backdrop/hero.tsx} +1 -1
  474. package/registry/examples/section-backdrop/plain.d.ts +4 -0
  475. package/registry/examples/section-backdrop/plain.js +11 -0
  476. package/registry/examples/section-backdrop/plain.tsx +10 -0
  477. package/registry/examples/section-backdrop/sequence.d.ts +4 -0
  478. package/registry/examples/section-backdrop/sequence.js +14 -0
  479. package/registry/examples/section-backdrop/sequence.tsx +15 -0
  480. package/registry/examples/section-backdrop/up.d.ts +4 -0
  481. package/registry/examples/section-backdrop/up.js +11 -0
  482. package/registry/examples/section-backdrop/up.tsx +10 -0
  483. package/registry/examples/segmented/native/default.d.ts +4 -0
  484. package/registry/examples/segmented/native/default.dark.png +0 -0
  485. package/registry/examples/segmented/native/default.js +19 -0
  486. package/registry/examples/segmented/native/default.light.png +0 -0
  487. package/registry/examples/segmented/native/default.tsx +19 -0
  488. package/registry/examples/segmented/native/small.d.ts +4 -0
  489. package/registry/examples/segmented/native/small.dark.png +0 -0
  490. package/registry/examples/segmented/native/small.js +19 -0
  491. package/registry/examples/segmented/native/small.light.png +0 -0
  492. package/registry/examples/segmented/native/small.tsx +19 -0
  493. package/registry/examples/separator/horizontal.d.ts +4 -0
  494. package/registry/{demos/separator.js → examples/separator/horizontal.js} +3 -3
  495. package/registry/{demos/separator.tsx → examples/separator/horizontal.tsx} +1 -1
  496. package/registry/examples/separator/vertical.d.ts +4 -0
  497. package/registry/examples/separator/vertical.js +17 -0
  498. package/registry/examples/separator/vertical.tsx +14 -0
  499. package/registry/examples/skeleton/circle.d.ts +4 -0
  500. package/registry/examples/skeleton/circle.js +11 -0
  501. package/registry/examples/skeleton/circle.tsx +5 -0
  502. package/registry/examples/skeleton/composition.d.ts +4 -0
  503. package/registry/{demos/skeleton.js → examples/skeleton/composition.js} +3 -3
  504. package/registry/{demos/skeleton.tsx → examples/skeleton/composition.tsx} +1 -1
  505. package/registry/examples/skeleton/native/shapes.d.ts +4 -0
  506. package/registry/examples/skeleton/native/shapes.dark.png +0 -0
  507. package/registry/examples/skeleton/native/shapes.js +21 -0
  508. package/registry/examples/skeleton/native/shapes.light.png +0 -0
  509. package/registry/examples/skeleton/native/shapes.tsx +18 -0
  510. package/registry/examples/skeleton/rect.d.ts +4 -0
  511. package/registry/examples/skeleton/rect.js +11 -0
  512. package/registry/examples/skeleton/rect.tsx +5 -0
  513. package/registry/examples/skeleton/text.d.ts +4 -0
  514. package/registry/examples/skeleton/text.js +11 -0
  515. package/registry/examples/skeleton/text.tsx +5 -0
  516. package/registry/examples/slider/centred.d.ts +4 -0
  517. package/registry/examples/slider/centred.js +11 -0
  518. package/registry/examples/slider/centred.tsx +8 -0
  519. package/registry/examples/slider/default.d.ts +4 -0
  520. package/registry/{demos/slider.js → examples/slider/default.js} +3 -3
  521. package/registry/{demos/slider.tsx → examples/slider/default.tsx} +1 -1
  522. package/registry/examples/slider/disabled.d.ts +4 -0
  523. package/registry/examples/slider/disabled.js +11 -0
  524. package/registry/examples/slider/disabled.tsx +5 -0
  525. package/registry/examples/slider/range.d.ts +4 -0
  526. package/registry/examples/slider/range.js +22 -0
  527. package/registry/examples/slider/range.tsx +18 -0
  528. package/registry/examples/slider/with-label.d.ts +4 -0
  529. package/registry/examples/slider/with-label.js +11 -0
  530. package/registry/examples/slider/with-label.tsx +8 -0
  531. package/registry/examples/slot/as-child.d.ts +4 -0
  532. package/registry/{demos/slot.js → examples/slot/as-child.js} +3 -3
  533. package/registry/{demos/slot.tsx → examples/slot/as-child.tsx} +1 -1
  534. package/registry/examples/slot/visually-hidden.d.ts +4 -0
  535. package/registry/examples/slot/visually-hidden.js +14 -0
  536. package/registry/examples/slot/visually-hidden.tsx +13 -0
  537. package/registry/examples/spinner/default.d.ts +4 -0
  538. package/registry/{demos/spinner.js → examples/spinner/default.js} +3 -3
  539. package/registry/{demos/spinner.tsx → examples/spinner/default.tsx} +1 -1
  540. package/registry/examples/spinner/muted.d.ts +4 -0
  541. package/registry/examples/spinner/muted.js +11 -0
  542. package/registry/examples/spinner/muted.tsx +6 -0
  543. package/registry/examples/spinner/native/sizes.d.ts +4 -0
  544. package/registry/examples/spinner/native/sizes.dark.png +0 -0
  545. package/registry/examples/spinner/native/sizes.js +16 -0
  546. package/registry/examples/spinner/native/sizes.light.png +0 -0
  547. package/registry/examples/spinner/native/sizes.tsx +13 -0
  548. package/registry/examples/spinner/sizes.d.ts +4 -0
  549. package/registry/examples/spinner/sizes.js +15 -0
  550. package/registry/examples/spinner/sizes.tsx +11 -0
  551. package/registry/examples/stat/down.d.ts +4 -0
  552. package/registry/examples/stat/down.js +11 -0
  553. package/registry/examples/stat/down.tsx +5 -0
  554. package/registry/examples/stat/flat.d.ts +4 -0
  555. package/registry/examples/stat/flat.js +11 -0
  556. package/registry/examples/stat/flat.tsx +5 -0
  557. package/registry/examples/stat/plain.d.ts +4 -0
  558. package/registry/examples/stat/plain.js +11 -0
  559. package/registry/examples/stat/plain.tsx +5 -0
  560. package/registry/examples/stat/row.d.ts +4 -0
  561. package/registry/examples/stat/row.js +15 -0
  562. package/registry/examples/stat/row.tsx +12 -0
  563. package/registry/examples/stat/up.d.ts +4 -0
  564. package/registry/{demos/stat.js → examples/stat/up.js} +3 -3
  565. package/registry/{demos/stat.tsx → examples/stat/up.tsx} +1 -1
  566. package/registry/examples/switch/disabled.d.ts +4 -0
  567. package/registry/examples/switch/disabled.js +14 -0
  568. package/registry/examples/switch/disabled.tsx +10 -0
  569. package/registry/examples/switch/off.d.ts +4 -0
  570. package/registry/{demos/switch.js → examples/switch/off.js} +3 -3
  571. package/registry/{demos/switch.tsx → examples/switch/off.tsx} +1 -1
  572. package/registry/examples/switch/on.d.ts +4 -0
  573. package/registry/examples/switch/on.js +11 -0
  574. package/registry/examples/switch/on.tsx +5 -0
  575. package/registry/examples/switch/small.d.ts +4 -0
  576. package/registry/examples/switch/small.js +11 -0
  577. package/registry/examples/switch/small.tsx +5 -0
  578. package/registry/examples/switch/with-label.d.ts +4 -0
  579. package/registry/examples/switch/with-label.js +18 -0
  580. package/registry/examples/switch/with-label.tsx +17 -0
  581. package/registry/examples/tabs/pills.d.ts +4 -0
  582. package/registry/examples/tabs/pills.js +20 -0
  583. package/registry/examples/tabs/pills.tsx +23 -0
  584. package/registry/examples/tabs/segmented.d.ts +4 -0
  585. package/registry/examples/tabs/segmented.js +20 -0
  586. package/registry/examples/tabs/segmented.tsx +23 -0
  587. package/registry/examples/tabs/underline.d.ts +4 -0
  588. package/registry/{demos/tabs.js → examples/tabs/underline.js} +3 -3
  589. package/registry/{demos/tabs.tsx → examples/tabs/underline.tsx} +1 -1
  590. package/registry/examples/tabs/vertical.d.ts +4 -0
  591. package/registry/examples/tabs/vertical.js +20 -0
  592. package/registry/examples/tabs/vertical.tsx +23 -0
  593. package/registry/examples/theme/native/provider.d.ts +4 -0
  594. package/registry/examples/theme/native/provider.js +23 -0
  595. package/registry/examples/theme/native/provider.tsx +21 -0
  596. package/registry/examples/theme/secondary.d.ts +4 -0
  597. package/registry/examples/theme/secondary.js +11 -0
  598. package/registry/examples/theme/secondary.tsx +10 -0
  599. package/registry/examples/theme/toggle.d.ts +4 -0
  600. package/registry/{demos/theme.js → examples/theme/toggle.js} +3 -3
  601. package/registry/{demos/theme.tsx → examples/theme/toggle.tsx} +1 -1
  602. package/registry/examples/toast/custom.d.ts +4 -0
  603. package/registry/examples/toast/custom.js +30 -0
  604. package/registry/examples/toast/custom.tsx +35 -0
  605. package/registry/examples/toast/native/notification.d.ts +4 -0
  606. package/registry/examples/toast/native/notification.dark.png +0 -0
  607. package/registry/examples/toast/native/notification.js +29 -0
  608. package/registry/examples/toast/native/notification.light.png +0 -0
  609. package/registry/examples/toast/native/notification.tsx +30 -0
  610. package/registry/examples/toast/native/tones.d.ts +4 -0
  611. package/registry/examples/toast/native/tones.dark.png +0 -0
  612. package/registry/examples/toast/native/tones.js +28 -0
  613. package/registry/examples/toast/native/tones.light.png +0 -0
  614. package/registry/examples/toast/native/tones.tsx +25 -0
  615. package/registry/examples/toast/tones.d.ts +4 -0
  616. package/registry/{demos/toast.js → examples/toast/tones.js} +3 -3
  617. package/registry/{demos/toast.tsx → examples/toast/tones.tsx} +1 -1
  618. package/registry/examples/tooltip/right.d.ts +4 -0
  619. package/registry/examples/tooltip/right.js +15 -0
  620. package/registry/examples/tooltip/right.tsx +15 -0
  621. package/registry/examples/tooltip/top.d.ts +4 -0
  622. package/registry/{demos/tooltip.js → examples/tooltip/top.js} +3 -3
  623. package/registry/{demos/tooltip.tsx → examples/tooltip/top.tsx} +1 -1
  624. package/registry/examples/txt/native/tones.d.ts +4 -0
  625. package/registry/examples/txt/native/tones.dark.png +0 -0
  626. package/registry/examples/txt/native/tones.js +16 -0
  627. package/registry/examples/txt/native/tones.light.png +0 -0
  628. package/registry/examples/txt/native/tones.tsx +17 -0
  629. package/registry/examples/txt/native/variants.d.ts +4 -0
  630. package/registry/examples/txt/native/variants.dark.png +0 -0
  631. package/registry/examples/txt/native/variants.js +18 -0
  632. package/registry/examples/txt/native/variants.light.png +0 -0
  633. package/registry/examples/txt/native/variants.tsx +15 -0
  634. package/registry/field.json +142 -4
  635. package/registry/index.json +353 -33
  636. package/registry/kbd.json +90 -3
  637. package/registry/page-header.json +121 -3
  638. package/registry/popover.json +90 -3
  639. package/registry/progress.json +265 -3
  640. package/registry/radio-group.json +136 -3
  641. package/registry/section-backdrop.json +144 -3
  642. package/registry/segmented.json +125 -0
  643. package/registry/separator.json +67 -3
  644. package/registry/skeleton.json +166 -3
  645. package/registry/slider.json +177 -3
  646. package/registry/slot.json +79 -3
  647. package/registry/spinner.json +144 -3
  648. package/registry/stat.json +140 -3
  649. package/registry/switch.json +130 -3
  650. package/registry/tabs.json +117 -3
  651. package/registry/theme.json +190 -4
  652. package/registry/toast.json +190 -3
  653. package/registry/tooltip.json +143 -3
  654. package/registry/txt.json +97 -0
  655. package/dist/chunk-6DJ6SQY3.js.map +0 -1
  656. package/registry/demos/alert.d.ts +0 -5
  657. package/registry/demos/avatar.d.ts +0 -5
  658. package/registry/demos/badge.d.ts +0 -5
  659. package/registry/demos/button.d.ts +0 -5
  660. package/registry/demos/card.d.ts +0 -5
  661. package/registry/demos/checkbox.d.ts +0 -5
  662. package/registry/demos/chip.d.ts +0 -5
  663. package/registry/demos/cn.d.ts +0 -7
  664. package/registry/demos/command.d.ts +0 -5
  665. package/registry/demos/confirm-button.d.ts +0 -5
  666. package/registry/demos/countdown.d.ts +0 -5
  667. package/registry/demos/dialog.d.ts +0 -7
  668. package/registry/demos/dropdown-menu.d.ts +0 -7
  669. package/registry/demos/empty-state.d.ts +0 -5
  670. package/registry/demos/field.d.ts +0 -5
  671. package/registry/demos/kbd.d.ts +0 -5
  672. package/registry/demos/page-header.d.ts +0 -5
  673. package/registry/demos/popover.d.ts +0 -7
  674. package/registry/demos/progress.d.ts +0 -5
  675. package/registry/demos/radio-group.d.ts +0 -5
  676. package/registry/demos/section-backdrop.d.ts +0 -5
  677. package/registry/demos/separator.d.ts +0 -5
  678. package/registry/demos/skeleton.d.ts +0 -5
  679. package/registry/demos/slider.d.ts +0 -5
  680. package/registry/demos/slot.d.ts +0 -5
  681. package/registry/demos/spinner.d.ts +0 -5
  682. package/registry/demos/stat.d.ts +0 -5
  683. package/registry/demos/switch.d.ts +0 -5
  684. package/registry/demos/tabs.d.ts +0 -5
  685. package/registry/demos/theme.d.ts +0 -5
  686. package/registry/demos/toast.d.ts +0 -8
  687. package/registry/demos/tooltip.d.ts +0 -7
  688. /package/dist/{chunk-IUGBKMJC.js.map → chunk-FHYZSO2S.js.map} +0 -0
package/dist/theme.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { a as ButtonVariants } from './button-D5aSsmxX.js';
2
+ import { a as ButtonVariants } from './button-Cgfkg_3y.js';
3
3
  import 'tailwind-variants';
4
4
 
5
5
  type Mode = "dark" | "light" | "system";
package/dist/theme.js CHANGED
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import {
3
3
  buttonVariants
4
- } from "./chunk-6DJ6SQY3.js";
4
+ } from "./chunk-PESA2R4U.js";
5
5
 
6
6
  // src/theme/theme.tsx
7
7
  import * as React from "react";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@krizaka/ui",
3
- "version": "2.0.0-beta.5",
3
+ "version": "2.0.0",
4
4
  "description": "The Krizaka front-end platform's components: the primitives (button, card, dialog, toast, menu, field, tabs, chip, switch, slider, command palette, theme, countdown…) on the semantic --kz-* tokens, the animated marks (Krizaka, Orazaka, Orochia) and the motion signature — web and /native.",
5
5
  "keywords": [
6
6
  "krizaka",
@@ -172,9 +172,9 @@
172
172
  "types": "./dist/native.d.ts",
173
173
  "import": "./dist/native.js"
174
174
  },
175
- "./registry/demos/*": {
176
- "types": "./registry/demos/*.d.ts",
177
- "import": "./registry/demos/*.js"
175
+ "./registry/examples/*": {
176
+ "types": "./registry/examples/*.d.ts",
177
+ "import": "./registry/examples/*.js"
178
178
  },
179
179
  "./registry/*": "./registry/*.json",
180
180
  "./package.json": "./package.json"
@@ -182,10 +182,10 @@
182
182
  "files": [
183
183
  "dist",
184
184
  "registry/*.json",
185
- "registry/demos/*.tsx",
186
- "registry/demos/*.js",
187
- "registry/demos/*.d.ts",
188
- "!registry/demos/*.test.*",
185
+ "registry/examples/**/*.tsx",
186
+ "registry/examples/**/*.js",
187
+ "registry/examples/**/*.d.ts",
188
+ "registry/examples/**/*.png",
189
189
  "tailwind.css",
190
190
  "README.md",
191
191
  "LICENSE"
@@ -194,7 +194,7 @@
194
194
  "*.css"
195
195
  ],
196
196
  "peerDependencies": {
197
- "@krizaka/tailwind": ">=2.0.0-beta.5",
197
+ "@krizaka/tailwind": ">=2.0.0",
198
198
  "react": ">=18",
199
199
  "react-dom": ">=18",
200
200
  "react-native": ">=0.76",
@@ -238,7 +238,7 @@
238
238
  "typescript": "^5.9.0",
239
239
  "vitest": "^4.1.11",
240
240
  "@krizaka/config": "0.1.0",
241
- "@krizaka/tokens": "2.0.0-beta.5"
241
+ "@krizaka/tokens": "2.0.0"
242
242
  },
243
243
  "engines": {
244
244
  "node": ">=20"
@@ -601,7 +601,7 @@
601
601
  "tailwind-variants": "^3.3.1"
602
602
  },
603
603
  "scripts": {
604
- "build": "node -e \"const fs=require('node:fs');fs.rmSync('dist',{recursive:true,force:true});for(const f of fs.readdirSync('registry/demos'))if(/\\.(js|d\\.ts)$/.test(f))fs.rmSync('registry/demos/'+f)\" && tsup && node -e \"require('node:fs').copyFileSync('src/motion.css','dist/motion.css')\" && node scripts/build-registry.mjs",
604
+ "build": "node -e \"const fs=require('node:fs');fs.rmSync('dist',{recursive:true,force:true});for(const f of fs.readdirSync('registry/examples',{recursive:true}))if(/\\.(js|d\\.ts)$/.test(f))fs.rmSync('registry/examples/'+f)\" && tsup && node -e \"require('node:fs').copyFileSync('src/motion.css','dist/motion.css')\" && node scripts/build-registry.mjs",
605
605
  "lint": "eslint . --max-warnings 0 && tsc --noEmit --noUnusedParameters --noFallthroughCasesInSwitch --noImplicitReturns",
606
606
  "typecheck": "tsc --noEmit",
607
607
  "test": "vitest run && jest",
@@ -1,7 +1,137 @@
1
1
  {
2
2
  "name": "alert",
3
3
  "type": "primitive",
4
- "description": "`Alert`, `alertVariants`. Server-safe.",
4
+ "title": "Alert",
5
+ "summary": "A message in the flow of the page: a tone, an icon, a title, a text and an optional action.",
6
+ "description": "A message in the flow of the page: a tone, an icon, a title, a text and an optional action.",
7
+ "status": "stable",
8
+ "category": "feedback",
9
+ "platforms": "web",
10
+ "whenToUse": [
11
+ "To tell the reader something about the whole page or section: a new rule, an account state, a failed payment.",
12
+ "When the message must stay visible until the situation changes (a low balance, an expired card).",
13
+ "With an `action` when there is one obvious next step: “Top up”, “Retry”."
14
+ ],
15
+ "whenNotToUse": [
16
+ {
17
+ "when": "For the result of an action the user just took (saved, sent): it should come and go.",
18
+ "use": "toast"
19
+ },
20
+ {
21
+ "when": "When the user must answer before going on.",
22
+ "use": "dialog"
23
+ },
24
+ {
25
+ "when": "To explain why a field is invalid: put the error under the field.",
26
+ "use": "field"
27
+ },
28
+ {
29
+ "when": "When a list or a panel has nothing to show.",
30
+ "use": "empty-state"
31
+ }
32
+ ],
33
+ "bestPractices": [
34
+ "Lead with the title: what happened, in a few words; the text says what it means or what to do.",
35
+ "`danger` and `warning` only for what needs attention now: an alert that is always there stops being read.",
36
+ "The icon is decorative and the tone is carried by the tint, the border and the icon: the text stays legible in both themes."
37
+ ],
38
+ "accessibility": {
39
+ "keyboard": [],
40
+ "notes": [
41
+ "`danger` and `warning` render `role=\"alert\"` (announced at once); `info` and `success` render `role=\"status\"` (announced politely).",
42
+ "Render the alert when the situation occurs, not before: a live region only announces content that changes.",
43
+ "The icon is hidden from assistive technology; the title and the text carry the meaning."
44
+ ]
45
+ },
46
+ "related": [
47
+ "toast",
48
+ "empty-state",
49
+ "dialog",
50
+ "badge"
51
+ ],
52
+ "web": {
53
+ "entry": "@krizaka/ui/alert",
54
+ "import": "import { Alert } from \"@krizaka/ui/alert\";",
55
+ "props": [
56
+ {
57
+ "component": "Alert",
58
+ "description": "",
59
+ "props": [
60
+ {
61
+ "name": "action",
62
+ "type": "ReactNode",
63
+ "default": null,
64
+ "description": "What to do: a Button, a link.",
65
+ "required": false
66
+ },
67
+ {
68
+ "name": "icon",
69
+ "type": "ReactNode",
70
+ "default": null,
71
+ "description": "A decorative icon (hidden from assistive technology).",
72
+ "required": false
73
+ },
74
+ {
75
+ "name": "title",
76
+ "type": "ReactNode",
77
+ "default": null,
78
+ "description": "The headline, in bold above the text.",
79
+ "required": false
80
+ },
81
+ {
82
+ "name": "tone",
83
+ "type": "AlertTone",
84
+ "default": "info",
85
+ "description": "The tone: `danger` and `warning` are announced at once (`role=\"alert\"`), `info` and `success` politely.",
86
+ "required": false
87
+ }
88
+ ]
89
+ }
90
+ ],
91
+ "examples": [
92
+ {
93
+ "name": "info",
94
+ "title": "Info",
95
+ "description": "The default tone: news the reader should know, announced politely.",
96
+ "path": "examples/alert/info.tsx",
97
+ "module": "@krizaka/ui/registry/examples/alert/info",
98
+ "code": "import { Alert } from \"@krizaka/ui/alert\";\n\nconst INFO = (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M12 16v-4M12 8h.01M12 22a10 10 0 1 0 0-20 10 10 0 0 0 0 20Z\" />\n </svg>\n);\n\nexport default function AlertInfo() {\n return (\n <Alert title=\"New payout schedule\" icon={INFO}>\n Payouts now arrive every Monday.\n </Alert>\n );\n}\n"
99
+ },
100
+ {
101
+ "name": "success",
102
+ "title": "Success",
103
+ "description": "A state that is now good: verified, paid, connected.",
104
+ "path": "examples/alert/success.tsx",
105
+ "module": "@krizaka/ui/registry/examples/alert/success",
106
+ "code": "import { Alert } from \"@krizaka/ui/alert\";\n\nconst CHECK = (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M20 6 9 17l-5-5\" />\n </svg>\n);\n\nexport default function AlertSuccess() {\n return (\n <Alert tone=\"success\" icon={CHECK} title=\"Account verified\">\n You can now receive payouts.\n </Alert>\n );\n}\n"
107
+ },
108
+ {
109
+ "name": "warning",
110
+ "title": "Warning",
111
+ "description": "Something will go wrong soon, with what to do about it.",
112
+ "path": "examples/alert/warning.tsx",
113
+ "module": "@krizaka/ui/registry/examples/alert/warning",
114
+ "code": "import { Alert } from \"@krizaka/ui/alert\";\nimport { Button } from \"@krizaka/ui/button\";\n\nconst WARN = (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M12 9v4M12 17h.01M10.3 3.9 1.8 18a2 2 0 0 0 1.7 3h17a2 2 0 0 0 1.7-3L13.7 3.9a2 2 0 0 0-3.4 0Z\" />\n </svg>\n);\n\n// `warning` and `danger` are announced at once (role=\"alert\").\nexport default function AlertWarning() {\n return (\n <Alert tone=\"warning\" icon={WARN} title=\"Low balance\" action={<Button size=\"sm\">Top up</Button>}>\n Two tips left before a top-up.\n </Alert>\n );\n}\n"
115
+ },
116
+ {
117
+ "name": "danger",
118
+ "title": "Danger",
119
+ "description": "Something went wrong: what failed and how to fix it.",
120
+ "path": "examples/alert/danger.tsx",
121
+ "module": "@krizaka/ui/registry/examples/alert/danger",
122
+ "code": "import { Alert } from \"@krizaka/ui/alert\";\nimport { Button } from \"@krizaka/ui/button\";\n\nconst WARN = (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M12 9v4M12 17h.01M10.3 3.9 1.8 18a2 2 0 0 0 1.7 3h17a2 2 0 0 0 1.7-3L13.7 3.9a2 2 0 0 0-3.4 0Z\" />\n </svg>\n);\n\nexport default function AlertDanger() {\n return (\n <Alert\n tone=\"danger\"\n icon={WARN}\n title=\"Payment failed\"\n action={\n <Button size=\"sm\" variant=\"danger\">\n Retry\n </Button>\n }\n >\n The card was declined. Try another one.\n </Alert>\n );\n}\n"
123
+ },
124
+ {
125
+ "name": "title-only",
126
+ "title": "Title only",
127
+ "description": "A short message needs no icon and no text.",
128
+ "path": "examples/alert/title-only.tsx",
129
+ "module": "@krizaka/ui/registry/examples/alert/title-only",
130
+ "code": "import { Alert } from \"@krizaka/ui/alert\";\n\nexport default function AlertTitleOnly() {\n return <Alert title=\"New payout schedule\" />;\n}\n"
131
+ }
132
+ ]
133
+ },
134
+ "native": null,
5
135
  "files": [
6
136
  {
7
137
  "path": "alert/alert.tsx",
@@ -10,6 +140,14 @@
10
140
  {
11
141
  "path": "alert/index.ts",
12
142
  "content": "/** @krizaka/ui/alert — `Alert`, `alertVariants`. Server-safe. */\nexport { Alert, type AlertProps, type AlertTone, alertVariants } from \"./alert\";\n"
143
+ },
144
+ {
145
+ "path": "alert/meta.ts",
146
+ "content": "import type { ComponentMeta } from \"../meta\";\n\nexport const meta = {\n title: \"Alert\",\n summary: \"A message in the flow of the page: a tone, an icon, a title, a text and an optional action.\",\n status: \"stable\",\n category: \"feedback\",\n platforms: \"web\",\n whenToUse: [\n \"To tell the reader something about the whole page or section: a new rule, an account state, a failed payment.\",\n \"When the message must stay visible until the situation changes (a low balance, an expired card).\",\n \"With an `action` when there is one obvious next step: “Top up”, “Retry”.\",\n ],\n whenNotToUse: [\n { when: \"For the result of an action the user just took (saved, sent): it should come and go.\", use: \"toast\" },\n { when: \"When the user must answer before going on.\", use: \"dialog\" },\n { when: \"To explain why a field is invalid: put the error under the field.\", use: \"field\" },\n { when: \"When a list or a panel has nothing to show.\", use: \"empty-state\" },\n ],\n bestPractices: [\n \"Lead with the title: what happened, in a few words; the text says what it means or what to do.\",\n \"`danger` and `warning` only for what needs attention now: an alert that is always there stops being read.\",\n \"The icon is decorative and the tone is carried by the tint, the border and the icon: the text stays legible in both themes.\",\n ],\n accessibility: {\n keyboard: [],\n notes: [\n \"`danger` and `warning` render `role=\\\"alert\\\"` (announced at once); `info` and `success` render `role=\\\"status\\\"` (announced politely).\",\n \"Render the alert when the situation occurs, not before: a live region only announces content that changes.\",\n \"The icon is hidden from assistive technology; the title and the text carry the meaning.\",\n ],\n },\n related: [\"toast\", \"empty-state\", \"dialog\", \"badge\"],\n web: {\n imports: [\"Alert\"],\n examples: [\n { name: \"info\", title: \"Info\", description: \"The default tone: news the reader should know, announced politely.\" },\n { name: \"success\", title: \"Success\", description: \"A state that is now good: verified, paid, connected.\" },\n { name: \"warning\", title: \"Warning\", description: \"Something will go wrong soon, with what to do about it.\" },\n { name: \"danger\", title: \"Danger\", description: \"Something went wrong: what failed and how to fix it.\" },\n { name: \"title-only\", title: \"Title only\", description: \"A short message needs no icon and no text.\" },\n ],\n },\n} satisfies ComponentMeta;\n"
147
+ },
148
+ {
149
+ "path": "meta.ts",
150
+ "content": "// The documentation of a component, carried by its code: each primitive has a `meta.ts` beside its source\n// (`src/<name>/meta.ts`; a component that exists only in React Native: `src/native/meta/<name>.ts`). Never built into\n// the package: `scripts/build-registry.mjs` reads them into `registry/<name>.json`, which krizaka.com renders as\n// /docs/ui/<name>, and `scripts/registry.test.mjs` fails when one is missing or incomplete.\n//\n// Why a typed module and not JSDoc tags: the fields are lists and links (`related`, `whenNotToUse[].use`, examples),\n// which a type checks and a comment does not; the file is plain data (erasable TypeScript), so Node reads it without a\n// compiler, and an editor completes it.\n\n/** Every documented component: the web primitives (one entry of the package each) and the native-only ones. */\nexport type ComponentName =\n | \"alert\"\n | \"avatar\"\n | \"badge\"\n | \"button\"\n | \"card\"\n | \"checkbox\"\n | \"chip\"\n | \"cn\"\n | \"command\"\n | \"confirm-button\"\n | \"countdown\"\n | \"dialog\"\n | \"dropdown-menu\"\n | \"empty-state\"\n | \"field\"\n | \"kbd\"\n | \"page-header\"\n | \"popover\"\n | \"progress\"\n | \"radio-group\"\n | \"section-backdrop\"\n | \"segmented\"\n | \"separator\"\n | \"skeleton\"\n | \"slider\"\n | \"slot\"\n | \"spinner\"\n | \"stat\"\n | \"switch\"\n | \"tabs\"\n | \"theme\"\n | \"toast\"\n | \"tooltip\"\n | \"txt\";\n\n/** Where a component exists: `@krizaka/ui/<name>` (web), `@krizaka/ui/native` (React Native), or both. */\nexport type Platform = \"web\" | \"native\" | \"both\";\n\n/** `stable`: its API only changes in a major. `beta`: it may still change in a minor. */\nexport type Status = \"stable\" | \"beta\";\n\n/** The group of the catalogue. */\nexport type Category = \"actions\" | \"forms\" | \"navigation\" | \"overlays\" | \"feedback\" | \"data-display\" | \"layout\" | \"foundations\";\n\n/**\n * A named example: the file `registry/examples/<component>/<name>.tsx` (web) or\n * `registry/examples/<component>/native/<name>.tsx` (React Native) — at most 40 lines, imported by the stories and\n * shown (live, with its code) by the documentation.\n */\nexport interface Example {\n /** The file name, kebab-case (`primary`, `icon-button`). */\n readonly name: string;\n /** A short title (`Primary`, `Icon button`). */\n readonly title: string;\n /** One or two sentences: when this variant is the right one. */\n readonly description: string;\n}\n\n/** One platform's side of a component. */\nexport interface PlatformDocs {\n /** The names to import (`[\"Button\", \"IconButton\"]`): from `@krizaka/ui/<name>` on the web, `@krizaka/ui/native` in React Native. */\n readonly imports: readonly string[];\n /** The examples, in reading order; the first one is the component's preview. */\n readonly examples: readonly Example[];\n}\n\n/** The React Native side: the same concept, and what differs from the web API. */\nexport interface NativeDocs extends PlatformDocs {\n /** What differs from the web API (`label` instead of children…); empty for a native-only component. */\n readonly differences: readonly string[];\n}\n\nexport interface KeyboardInteraction {\n /** The keys, as written on a keyboard: `Space`, `Enter`, `Arrow keys`, `Esc`, `Tab`. */\n readonly keys: string;\n /** What they do. */\n readonly action: string;\n}\n\nexport interface ComponentMeta {\n /** The display name: `Button`, `Dropdown menu`. */\n readonly title: string;\n /** One sentence: what it is. */\n readonly summary: string;\n readonly status: Status;\n readonly category: Category;\n /** Must match the sides below: `both` ⇔ `web` and `native`. */\n readonly platforms: Platform;\n /** When to reach for it: concrete situations, one per item. */\n readonly whenToUse: readonly string[];\n /** When not to — and what to use instead (`use`), when another component is the answer. */\n readonly whenNotToUse: readonly { readonly when: string; readonly use?: ComponentName }[];\n /** How to use it well: wording, placement, composition. */\n readonly bestPractices: readonly string[];\n readonly accessibility: {\n /** The keyboard, when it does more than Tab and Enter. */\n readonly keyboard: readonly KeyboardInteraction[];\n /** Roles, names and announcements: what the component does, what the app must provide. */\n readonly notes: readonly string[];\n };\n /** The components a reader of this page should know about. */\n readonly related: readonly ComponentName[];\n readonly web?: PlatformDocs;\n readonly native?: NativeDocs;\n}\n"
13
151
  }
14
152
  ],
15
153
  "dependencies": [
@@ -17,8 +155,8 @@
17
155
  ],
18
156
  "registryDependencies": [],
19
157
  "demo": {
20
- "path": "demos/alert.tsx",
21
- "content": "import { Alert } from \"@krizaka/ui/alert\";\n\nconst INFO = (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M12 16v-4M12 8h.01M12 22a10 10 0 1 0 0-20 10 10 0 0 0 0 20Z\" />\n </svg>\n);\n\nexport default function AlertDemo() {\n return (\n <Alert title=\"New payout schedule\" icon={INFO}>\n Payouts now arrive every Monday.\n </Alert>\n );\n}\n"
158
+ "path": "examples/alert/info.tsx",
159
+ "content": "import { Alert } from \"@krizaka/ui/alert\";\n\nconst INFO = (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M12 16v-4M12 8h.01M12 22a10 10 0 1 0 0-20 10 10 0 0 0 0 20Z\" />\n </svg>\n);\n\nexport default function AlertInfo() {\n return (\n <Alert title=\"New payout schedule\" icon={INFO}>\n Payouts now arrive every Monday.\n </Alert>\n );\n}\n"
22
160
  },
23
161
  "props": [
24
162
  {
@@ -1,7 +1,310 @@
1
1
  {
2
2
  "name": "avatar",
3
3
  "type": "primitive",
4
- "description": "`Avatar`, `Avatar.Group`. Client (\"use client\").",
4
+ "title": "Avatar",
5
+ "summary": "A person or an account: their picture, or initials while it loads, when it fails or when there is none.",
6
+ "description": "A person or an account: their picture, or initials while it loads, when it fails or when there is none.",
7
+ "status": "stable",
8
+ "category": "data-display",
9
+ "platforms": "both",
10
+ "whenToUse": [
11
+ "Next to a name: comments, creators, members, the signed-in account in a header.",
12
+ "`Avatar.Group` to show who takes part (followers, collaborators) in little space."
13
+ ],
14
+ "whenNotToUse": [
15
+ {
16
+ "when": "For a product, a video or a place: use an image in a card.",
17
+ "use": "card"
18
+ },
19
+ {
20
+ "when": "As the only way to say who someone is: show their name too, or give the avatar an `alt`."
21
+ }
22
+ ],
23
+ "bestPractices": [
24
+ "Always pass a `fallback` (initials) on the web: images fail, and the layout should not jump.",
25
+ "Use one size per list: `sm` in dense lists, `md` by default, `lg`/`xl` on a profile.",
26
+ "In a group, set `max` so a long list ends with `+n` instead of overflowing."
27
+ ],
28
+ "accessibility": {
29
+ "keyboard": [],
30
+ "notes": [
31
+ "With `alt`, the picture is an image named by it; without `alt`, it is decorative — put the name in the text next to it.",
32
+ "The fallback initials are shown, not announced, when an `alt` names the person."
33
+ ]
34
+ },
35
+ "related": [
36
+ "card",
37
+ "badge",
38
+ "skeleton"
39
+ ],
40
+ "web": {
41
+ "entry": "@krizaka/ui/avatar",
42
+ "import": "import { Avatar } from \"@krizaka/ui/avatar\";",
43
+ "props": [
44
+ {
45
+ "component": "Avatar",
46
+ "description": "`Avatar` (an image with a fallback) and `Avatar.Group`.",
47
+ "props": [
48
+ {
49
+ "name": "alt",
50
+ "type": "string",
51
+ "default": null,
52
+ "description": "The image's text alternative (the person's name); empty when a visible name sits next to the avatar.",
53
+ "required": false
54
+ },
55
+ {
56
+ "name": "fallback",
57
+ "type": "ReactNode",
58
+ "default": null,
59
+ "description": "Shown while the image loads, when it fails or when there is none: initials, an icon.",
60
+ "required": false
61
+ },
62
+ {
63
+ "name": "size",
64
+ "type": "AvatarSize",
65
+ "default": "md",
66
+ "description": "xs · sm · md · lg · xl.",
67
+ "required": false
68
+ },
69
+ {
70
+ "name": "src",
71
+ "type": "string | null",
72
+ "default": null,
73
+ "description": "The image's URL; `null` or nothing shows the `fallback`.",
74
+ "required": false
75
+ }
76
+ ]
77
+ },
78
+ {
79
+ "component": "AvatarGroup",
80
+ "description": "Overlapping avatars; past `max`, a `+n` avatar counts the rest.",
81
+ "props": [
82
+ {
83
+ "name": "max",
84
+ "type": "number",
85
+ "default": null,
86
+ "description": "How many avatars are shown; the rest becomes a `+n` avatar.",
87
+ "required": false
88
+ },
89
+ {
90
+ "name": "size",
91
+ "type": "AvatarSize",
92
+ "default": null,
93
+ "description": "The size of the `+n` avatar (match the avatars of the group).",
94
+ "required": false
95
+ }
96
+ ]
97
+ },
98
+ {
99
+ "component": "AvatarRoot",
100
+ "description": "",
101
+ "props": [
102
+ {
103
+ "name": "alt",
104
+ "type": "string",
105
+ "default": "",
106
+ "description": "The image's text alternative (the person's name); empty when a visible name sits next to the avatar.",
107
+ "required": false
108
+ },
109
+ {
110
+ "name": "fallback",
111
+ "type": "ReactNode",
112
+ "default": null,
113
+ "description": "Shown while the image loads, when it fails or when there is none: initials, an icon.",
114
+ "required": false
115
+ },
116
+ {
117
+ "name": "size",
118
+ "type": "AvatarSize",
119
+ "default": "md",
120
+ "description": "xs · sm · md · lg · xl.",
121
+ "required": false
122
+ },
123
+ {
124
+ "name": "src",
125
+ "type": "string | null",
126
+ "default": null,
127
+ "description": "The image's URL; `null` or nothing shows the `fallback`.",
128
+ "required": false
129
+ }
130
+ ]
131
+ }
132
+ ],
133
+ "examples": [
134
+ {
135
+ "name": "with-image",
136
+ "title": "With an image",
137
+ "description": "A picture named by `alt`, with initials as `fallback`.",
138
+ "path": "examples/avatar/with-image.tsx",
139
+ "module": "@krizaka/ui/registry/examples/avatar/with-image",
140
+ "code": "import { Avatar } from \"@krizaka/ui/avatar\";\n\n// A self-contained portrait (no network).\nconst PORTRAIT =\n \"data:image/svg+xml;utf8,\" +\n encodeURIComponent(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 80 80\"><rect width=\"80\" height=\"80\" fill=\"#3b82f6\"/>' +\n '<circle cx=\"40\" cy=\"31\" r=\"14\" fill=\"#dbeafe\"/><path d=\"M12 80a28 24 0 0 1 56 0z\" fill=\"#dbeafe\"/></svg>',\n );\n\nexport default function AvatarWithImage() {\n return <Avatar src={PORTRAIT} alt=\"Oussama\" fallback=\"OA\" />;\n}\n"
141
+ },
142
+ {
143
+ "name": "fallback",
144
+ "title": "Fallback",
145
+ "description": "No image: the initials.",
146
+ "path": "examples/avatar/fallback.tsx",
147
+ "module": "@krizaka/ui/registry/examples/avatar/fallback",
148
+ "code": "import { Avatar } from \"@krizaka/ui/avatar\";\n\n// No image (or while it loads, or when it fails): the initials.\nexport default function AvatarFallback() {\n return <Avatar fallback=\"OA\" />;\n}\n"
149
+ },
150
+ {
151
+ "name": "sizes",
152
+ "title": "Sizes",
153
+ "description": "`xs`, `sm`, `md` (default), `lg`, `xl`.",
154
+ "path": "examples/avatar/sizes.tsx",
155
+ "module": "@krizaka/ui/registry/examples/avatar/sizes",
156
+ "code": "import { Avatar } from \"@krizaka/ui/avatar\";\n\nexport default function AvatarSizes() {\n return (\n <div className=\"flex items-center gap-3\">\n <Avatar size=\"xs\" fallback=\"OA\" />\n <Avatar size=\"sm\" fallback=\"OA\" />\n <Avatar size=\"md\" fallback=\"OA\" />\n <Avatar size=\"lg\" fallback=\"OA\" />\n <Avatar size=\"xl\" fallback=\"OA\" />\n </div>\n );\n}\n"
157
+ },
158
+ {
159
+ "name": "group",
160
+ "title": "Group",
161
+ "description": "`Avatar.Group` with `max`: the others become `+n`.",
162
+ "path": "examples/avatar/group.tsx",
163
+ "module": "@krizaka/ui/registry/examples/avatar/group",
164
+ "code": "import { Avatar } from \"@krizaka/ui/avatar\";\n\nconst PORTRAIT =\n \"data:image/svg+xml;utf8,\" +\n encodeURIComponent(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 80 80\"><rect width=\"80\" height=\"80\" fill=\"#3b82f6\"/>' +\n '<circle cx=\"40\" cy=\"31\" r=\"14\" fill=\"#dbeafe\"/><path d=\"M12 80a28 24 0 0 1 56 0z\" fill=\"#dbeafe\"/></svg>',\n );\n\n// `max={3}`: the others become `+n`.\nexport default function AvatarGroup() {\n return (\n <Avatar.Group max={3} size=\"sm\">\n <Avatar size=\"sm\" src={PORTRAIT} alt=\"Oussama\" />\n <Avatar size=\"sm\" fallback=\"LM\" />\n <Avatar size=\"sm\" fallback=\"SK\" />\n <Avatar size=\"sm\" fallback=\"JD\" />\n <Avatar size=\"sm\" fallback=\"AR\" />\n </Avatar.Group>\n );\n}\n"
165
+ }
166
+ ]
167
+ },
168
+ "native": {
169
+ "entry": "@krizaka/ui/native",
170
+ "import": "import { Avatar } from \"@krizaka/ui/native\";",
171
+ "differences": [
172
+ "The fallback is the initial of `alt` when `fallback` is not given.",
173
+ "`size` also takes a number of points.",
174
+ "`src` is a URI string (an `Image` source), not a URL object.",
175
+ "An SVG `src` (`….svg`, `data:image/svg+xml,…`, or any URI with `svg`) is drawn by react-native-svg — `Image` cannot."
176
+ ],
177
+ "props": [
178
+ {
179
+ "component": "AvatarRoot",
180
+ "description": "",
181
+ "props": [
182
+ {
183
+ "name": "alt",
184
+ "type": "string",
185
+ "default": "",
186
+ "description": "The person's name: the image's accessible name and the source of the default initial.",
187
+ "required": false
188
+ },
189
+ {
190
+ "name": "fallback",
191
+ "type": "ReactNode",
192
+ "default": null,
193
+ "description": "Shown while there is no image or when it fails: default, the first letter of `alt`.",
194
+ "required": false
195
+ },
196
+ {
197
+ "name": "size",
198
+ "type": "number | AvatarSize",
199
+ "default": "md",
200
+ "description": "A size of the scale, or points.",
201
+ "required": false
202
+ },
203
+ {
204
+ "name": "src",
205
+ "type": "string | null",
206
+ "default": null,
207
+ "description": "The image URI; absent, `null` or failing: the fallback. An SVG (`….svg`, `data:image/svg+xml,…` — generated\navatars) is drawn by react-native-svg, which React Native's `Image` cannot do; `svg` forces it for a URI without\nthe extension.",
208
+ "required": false
209
+ },
210
+ {
211
+ "name": "svg",
212
+ "type": "boolean",
213
+ "default": null,
214
+ "description": "Draw `src` as an SVG even when its URI does not say so (an avatar service that answers `image/svg+xml`).",
215
+ "required": false
216
+ }
217
+ ]
218
+ },
219
+ {
220
+ "component": "AvatarGroup",
221
+ "description": "Overlapping avatars; past `max`, a `+n` avatar counts the rest.",
222
+ "props": [
223
+ {
224
+ "name": "max",
225
+ "type": "number",
226
+ "default": null,
227
+ "description": "How many avatars are shown; the rest becomes a `+n` avatar.",
228
+ "required": false
229
+ },
230
+ {
231
+ "name": "size",
232
+ "type": "number | AvatarSize",
233
+ "default": "md",
234
+ "description": "The size of the avatars (and of the `+n` one).",
235
+ "required": false
236
+ }
237
+ ]
238
+ },
239
+ {
240
+ "component": "Avatar",
241
+ "description": "`Avatar` (an image with a fallback) and `Avatar.Group`.",
242
+ "props": [
243
+ {
244
+ "name": "alt",
245
+ "type": "string",
246
+ "default": null,
247
+ "description": "The person's name: the image's accessible name and the source of the default initial.",
248
+ "required": false
249
+ },
250
+ {
251
+ "name": "fallback",
252
+ "type": "ReactNode",
253
+ "default": null,
254
+ "description": "Shown while there is no image or when it fails: default, the first letter of `alt`.",
255
+ "required": false
256
+ },
257
+ {
258
+ "name": "size",
259
+ "type": "number | AvatarSize",
260
+ "default": null,
261
+ "description": "A size of the scale, or points.",
262
+ "required": false
263
+ },
264
+ {
265
+ "name": "src",
266
+ "type": "string | null",
267
+ "default": null,
268
+ "description": "The image URI; absent, `null` or failing: the fallback. An SVG (`….svg`, `data:image/svg+xml,…` — generated\navatars) is drawn by react-native-svg, which React Native's `Image` cannot do; `svg` forces it for a URI without\nthe extension.",
269
+ "required": false
270
+ },
271
+ {
272
+ "name": "svg",
273
+ "type": "boolean",
274
+ "default": null,
275
+ "description": "Draw `src` as an SVG even when its URI does not say so (an avatar service that answers `image/svg+xml`).",
276
+ "required": false
277
+ }
278
+ ]
279
+ }
280
+ ],
281
+ "examples": [
282
+ {
283
+ "name": "sizes",
284
+ "title": "Sizes",
285
+ "description": "Without an image: the initial of `alt`, from `xs` to `xl`.",
286
+ "path": "examples/avatar/native/sizes.tsx",
287
+ "module": "@krizaka/ui/registry/examples/avatar/native/sizes",
288
+ "code": "import { Avatar } from \"@krizaka/ui/native\";\nimport { View } from \"react-native\";\n\n// Without an image: the initial of `alt`.\nexport default function NativeAvatarSizes() {\n return (\n <View style={{ flexDirection: \"row\", alignItems: \"center\", gap: 8 }}>\n <Avatar alt=\"Maya\" size=\"xs\" />\n <Avatar alt=\"Maya\" size=\"sm\" />\n <Avatar alt=\"Maya\" size=\"md\" />\n <Avatar alt=\"Maya\" size=\"lg\" />\n <Avatar alt=\"Maya\" size=\"xl\" />\n </View>\n );\n}\n",
289
+ "screenshots": {
290
+ "dark": "examples/avatar/native/sizes.dark.png",
291
+ "light": "examples/avatar/native/sizes.light.png"
292
+ }
293
+ },
294
+ {
295
+ "name": "group",
296
+ "title": "Group",
297
+ "description": "`Avatar.Group max={3}`: the rest becomes `+n`.",
298
+ "path": "examples/avatar/native/group.tsx",
299
+ "module": "@krizaka/ui/registry/examples/avatar/native/group",
300
+ "code": "import { Avatar } from \"@krizaka/ui/native\";\n\nexport default function NativeAvatarGroup() {\n return (\n <Avatar.Group max={3} size=\"md\">\n <Avatar alt=\"Maya\" />\n <Avatar alt=\"Noor\" />\n <Avatar alt=\"Ines\" />\n <Avatar alt=\"Theo\" />\n <Avatar alt=\"Lou\" />\n </Avatar.Group>\n );\n}\n",
301
+ "screenshots": {
302
+ "dark": "examples/avatar/native/group.dark.png",
303
+ "light": "examples/avatar/native/group.light.png"
304
+ }
305
+ }
306
+ ]
307
+ },
5
308
  "files": [
6
309
  {
7
310
  "path": "avatar/avatar.tsx",
@@ -10,6 +313,14 @@
10
313
  {
11
314
  "path": "avatar/index.ts",
12
315
  "content": "/** @krizaka/ui/avatar — `Avatar`, `Avatar.Group`. Client (\"use client\"). */\nexport { Avatar, AvatarGroup, type AvatarGroupProps, type AvatarProps, AvatarRoot, type AvatarSize } from \"./avatar\";\n"
316
+ },
317
+ {
318
+ "path": "avatar/meta.ts",
319
+ "content": "import type { ComponentMeta } from \"../meta\";\n\nexport const meta = {\n title: \"Avatar\",\n summary: \"A person or an account: their picture, or initials while it loads, when it fails or when there is none.\",\n status: \"stable\",\n category: \"data-display\",\n platforms: \"both\",\n whenToUse: [\n \"Next to a name: comments, creators, members, the signed-in account in a header.\",\n \"`Avatar.Group` to show who takes part (followers, collaborators) in little space.\",\n ],\n whenNotToUse: [\n { when: \"For a product, a video or a place: use an image in a card.\", use: \"card\" },\n { when: \"As the only way to say who someone is: show their name too, or give the avatar an `alt`.\" },\n ],\n bestPractices: [\n \"Always pass a `fallback` (initials) on the web: images fail, and the layout should not jump.\",\n \"Use one size per list: `sm` in dense lists, `md` by default, `lg`/`xl` on a profile.\",\n \"In a group, set `max` so a long list ends with `+n` instead of overflowing.\",\n ],\n accessibility: {\n keyboard: [],\n notes: [\n \"With `alt`, the picture is an image named by it; without `alt`, it is decorative — put the name in the text next to it.\",\n \"The fallback initials are shown, not announced, when an `alt` names the person.\",\n ],\n },\n related: [\"card\", \"badge\", \"skeleton\"],\n web: {\n imports: [\"Avatar\"],\n examples: [\n { name: \"with-image\", title: \"With an image\", description: \"A picture named by `alt`, with initials as `fallback`.\" },\n { name: \"fallback\", title: \"Fallback\", description: \"No image: the initials.\" },\n { name: \"sizes\", title: \"Sizes\", description: \"`xs`, `sm`, `md` (default), `lg`, `xl`.\" },\n { name: \"group\", title: \"Group\", description: \"`Avatar.Group` with `max`: the others become `+n`.\" },\n ],\n },\n native: {\n imports: [\"Avatar\"],\n differences: [\n \"The fallback is the initial of `alt` when `fallback` is not given.\",\n \"`size` also takes a number of points.\",\n \"`src` is a URI string (an `Image` source), not a URL object.\",\n \"An SVG `src` (`….svg`, `data:image/svg+xml,…`, or any URI with `svg`) is drawn by react-native-svg — `Image` cannot.\",\n ],\n examples: [\n { name: \"sizes\", title: \"Sizes\", description: \"Without an image: the initial of `alt`, from `xs` to `xl`.\" },\n { name: \"group\", title: \"Group\", description: \"`Avatar.Group max={3}`: the rest becomes `+n`.\" },\n ],\n },\n} satisfies ComponentMeta;\n"
320
+ },
321
+ {
322
+ "path": "meta.ts",
323
+ "content": "// The documentation of a component, carried by its code: each primitive has a `meta.ts` beside its source\n// (`src/<name>/meta.ts`; a component that exists only in React Native: `src/native/meta/<name>.ts`). Never built into\n// the package: `scripts/build-registry.mjs` reads them into `registry/<name>.json`, which krizaka.com renders as\n// /docs/ui/<name>, and `scripts/registry.test.mjs` fails when one is missing or incomplete.\n//\n// Why a typed module and not JSDoc tags: the fields are lists and links (`related`, `whenNotToUse[].use`, examples),\n// which a type checks and a comment does not; the file is plain data (erasable TypeScript), so Node reads it without a\n// compiler, and an editor completes it.\n\n/** Every documented component: the web primitives (one entry of the package each) and the native-only ones. */\nexport type ComponentName =\n | \"alert\"\n | \"avatar\"\n | \"badge\"\n | \"button\"\n | \"card\"\n | \"checkbox\"\n | \"chip\"\n | \"cn\"\n | \"command\"\n | \"confirm-button\"\n | \"countdown\"\n | \"dialog\"\n | \"dropdown-menu\"\n | \"empty-state\"\n | \"field\"\n | \"kbd\"\n | \"page-header\"\n | \"popover\"\n | \"progress\"\n | \"radio-group\"\n | \"section-backdrop\"\n | \"segmented\"\n | \"separator\"\n | \"skeleton\"\n | \"slider\"\n | \"slot\"\n | \"spinner\"\n | \"stat\"\n | \"switch\"\n | \"tabs\"\n | \"theme\"\n | \"toast\"\n | \"tooltip\"\n | \"txt\";\n\n/** Where a component exists: `@krizaka/ui/<name>` (web), `@krizaka/ui/native` (React Native), or both. */\nexport type Platform = \"web\" | \"native\" | \"both\";\n\n/** `stable`: its API only changes in a major. `beta`: it may still change in a minor. */\nexport type Status = \"stable\" | \"beta\";\n\n/** The group of the catalogue. */\nexport type Category = \"actions\" | \"forms\" | \"navigation\" | \"overlays\" | \"feedback\" | \"data-display\" | \"layout\" | \"foundations\";\n\n/**\n * A named example: the file `registry/examples/<component>/<name>.tsx` (web) or\n * `registry/examples/<component>/native/<name>.tsx` (React Native) — at most 40 lines, imported by the stories and\n * shown (live, with its code) by the documentation.\n */\nexport interface Example {\n /** The file name, kebab-case (`primary`, `icon-button`). */\n readonly name: string;\n /** A short title (`Primary`, `Icon button`). */\n readonly title: string;\n /** One or two sentences: when this variant is the right one. */\n readonly description: string;\n}\n\n/** One platform's side of a component. */\nexport interface PlatformDocs {\n /** The names to import (`[\"Button\", \"IconButton\"]`): from `@krizaka/ui/<name>` on the web, `@krizaka/ui/native` in React Native. */\n readonly imports: readonly string[];\n /** The examples, in reading order; the first one is the component's preview. */\n readonly examples: readonly Example[];\n}\n\n/** The React Native side: the same concept, and what differs from the web API. */\nexport interface NativeDocs extends PlatformDocs {\n /** What differs from the web API (`label` instead of children…); empty for a native-only component. */\n readonly differences: readonly string[];\n}\n\nexport interface KeyboardInteraction {\n /** The keys, as written on a keyboard: `Space`, `Enter`, `Arrow keys`, `Esc`, `Tab`. */\n readonly keys: string;\n /** What they do. */\n readonly action: string;\n}\n\nexport interface ComponentMeta {\n /** The display name: `Button`, `Dropdown menu`. */\n readonly title: string;\n /** One sentence: what it is. */\n readonly summary: string;\n readonly status: Status;\n readonly category: Category;\n /** Must match the sides below: `both` ⇔ `web` and `native`. */\n readonly platforms: Platform;\n /** When to reach for it: concrete situations, one per item. */\n readonly whenToUse: readonly string[];\n /** When not to — and what to use instead (`use`), when another component is the answer. */\n readonly whenNotToUse: readonly { readonly when: string; readonly use?: ComponentName }[];\n /** How to use it well: wording, placement, composition. */\n readonly bestPractices: readonly string[];\n readonly accessibility: {\n /** The keyboard, when it does more than Tab and Enter. */\n readonly keyboard: readonly KeyboardInteraction[];\n /** Roles, names and announcements: what the component does, what the app must provide. */\n readonly notes: readonly string[];\n };\n /** The components a reader of this page should know about. */\n readonly related: readonly ComponentName[];\n readonly web?: PlatformDocs;\n readonly native?: NativeDocs;\n}\n"
13
324
  }
14
325
  ],
15
326
  "dependencies": [
@@ -18,8 +329,8 @@
18
329
  ],
19
330
  "registryDependencies": [],
20
331
  "demo": {
21
- "path": "demos/avatar.tsx",
22
- "content": "import { Avatar } from \"@krizaka/ui/avatar\";\n\n// A self-contained portrait (no network).\nconst PORTRAIT =\n \"data:image/svg+xml;utf8,\" +\n encodeURIComponent(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 80 80\"><rect width=\"80\" height=\"80\" fill=\"#3b82f6\"/>' +\n '<circle cx=\"40\" cy=\"31\" r=\"14\" fill=\"#dbeafe\"/><path d=\"M12 80a28 24 0 0 1 56 0z\" fill=\"#dbeafe\"/></svg>',\n );\n\nexport default function AvatarDemo() {\n return <Avatar src={PORTRAIT} alt=\"Oussama\" fallback=\"OA\" />;\n}\n"
332
+ "path": "examples/avatar/with-image.tsx",
333
+ "content": "import { Avatar } from \"@krizaka/ui/avatar\";\n\n// A self-contained portrait (no network).\nconst PORTRAIT =\n \"data:image/svg+xml;utf8,\" +\n encodeURIComponent(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 80 80\"><rect width=\"80\" height=\"80\" fill=\"#3b82f6\"/>' +\n '<circle cx=\"40\" cy=\"31\" r=\"14\" fill=\"#dbeafe\"/><path d=\"M12 80a28 24 0 0 1 56 0z\" fill=\"#dbeafe\"/></svg>',\n );\n\nexport default function AvatarWithImage() {\n return <Avatar src={PORTRAIT} alt=\"Oussama\" fallback=\"OA\" />;\n}\n"
23
334
  },
24
335
  "props": [
25
336
  {