@krizaka/ui 2.0.0-beta.4 → 2.0.0-beta.6

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 (667) hide show
  1. package/README.md +40 -23
  2. package/dist/{button-8La7l0V4.d.ts → button-D5aSsmxX.d.ts} +3 -3
  3. package/dist/button.d.ts +3 -3
  4. package/dist/button.js +1 -1
  5. package/dist/button.js.map +1 -1
  6. package/dist/card.js +1 -1
  7. package/dist/card.js.map +1 -1
  8. package/dist/{chunk-ZUD4U22H.js → chunk-6DJ6SQY3.js} +2 -2
  9. package/dist/chunk-6DJ6SQY3.js.map +1 -0
  10. package/dist/{chunk-3X5MVH54.js → chunk-IUGBKMJC.js} +2 -2
  11. package/dist/command.js +2 -2
  12. package/dist/confirm-button.d.ts +1 -1
  13. package/dist/confirm-button.js +1 -1
  14. package/dist/dialog.js +2 -2
  15. package/dist/dropdown-menu.js +1 -1
  16. package/dist/dropdown-menu.js.map +1 -1
  17. package/dist/index.d.ts +9 -2
  18. package/dist/index.js +90 -65
  19. package/dist/index.js.map +1 -1
  20. package/dist/motion.css +52 -2
  21. package/dist/native.d.ts +67 -4
  22. package/dist/native.js +359 -92
  23. package/dist/native.js.map +1 -1
  24. package/dist/section-backdrop.d.ts +75 -0
  25. package/dist/section-backdrop.js +27 -0
  26. package/dist/section-backdrop.js.map +1 -0
  27. package/dist/theme.d.ts +1 -1
  28. package/dist/theme.js +1 -1
  29. package/package.json +26 -12
  30. package/registry/alert.json +141 -3
  31. package/registry/avatar.json +299 -3
  32. package/registry/badge.json +233 -3
  33. package/registry/button.json +497 -4
  34. package/registry/card.json +412 -4
  35. package/registry/checkbox.json +127 -3
  36. package/registry/chip.json +394 -3
  37. package/registry/cn.json +51 -3
  38. package/registry/command.json +222 -3
  39. package/registry/confirm-button.json +170 -3
  40. package/registry/countdown.json +273 -3
  41. package/registry/dialog.json +310 -3
  42. package/registry/dropdown-menu.json +117 -4
  43. package/registry/empty-state.json +170 -3
  44. package/registry/examples/alert/danger.d.ts +4 -0
  45. package/registry/examples/alert/danger.js +22 -0
  46. package/registry/examples/alert/danger.tsx +25 -0
  47. package/registry/examples/alert/info.d.ts +4 -0
  48. package/registry/{demos/alert.js → examples/alert/info.js} +3 -3
  49. package/registry/{demos/alert.tsx → examples/alert/info.tsx} +1 -1
  50. package/registry/examples/alert/success.d.ts +4 -0
  51. package/registry/examples/alert/success.js +12 -0
  52. package/registry/examples/alert/success.tsx +15 -0
  53. package/registry/examples/alert/title-only.d.ts +4 -0
  54. package/registry/examples/alert/title-only.js +11 -0
  55. package/registry/examples/alert/title-only.tsx +5 -0
  56. package/registry/examples/alert/warning.d.ts +4 -0
  57. package/registry/examples/alert/warning.js +13 -0
  58. package/registry/examples/alert/warning.tsx +17 -0
  59. package/registry/examples/avatar/fallback.d.ts +4 -0
  60. package/registry/examples/avatar/fallback.js +11 -0
  61. package/registry/examples/avatar/fallback.tsx +6 -0
  62. package/registry/examples/avatar/group.d.ts +4 -0
  63. package/registry/examples/avatar/group.js +20 -0
  64. package/registry/examples/avatar/group.tsx +21 -0
  65. package/registry/examples/avatar/native/group.d.ts +4 -0
  66. package/registry/examples/avatar/native/group.dark.png +0 -0
  67. package/registry/examples/avatar/native/group.js +17 -0
  68. package/registry/examples/avatar/native/group.light.png +0 -0
  69. package/registry/examples/avatar/native/group.tsx +13 -0
  70. package/registry/examples/avatar/native/sizes.d.ts +4 -0
  71. package/registry/examples/avatar/native/sizes.dark.png +0 -0
  72. package/registry/examples/avatar/native/sizes.js +18 -0
  73. package/registry/examples/avatar/native/sizes.light.png +0 -0
  74. package/registry/examples/avatar/native/sizes.tsx +15 -0
  75. package/registry/examples/avatar/sizes.d.ts +4 -0
  76. package/registry/examples/avatar/sizes.js +17 -0
  77. package/registry/examples/avatar/sizes.tsx +13 -0
  78. package/registry/examples/avatar/with-image.d.ts +4 -0
  79. package/registry/{demos/avatar.js → examples/avatar/with-image.js} +3 -3
  80. package/registry/{demos/avatar.tsx → examples/avatar/with-image.tsx} +1 -1
  81. package/registry/examples/badge/accent.d.ts +4 -0
  82. package/registry/examples/badge/accent.js +11 -0
  83. package/registry/examples/badge/accent.tsx +9 -0
  84. package/registry/examples/badge/danger.d.ts +4 -0
  85. package/registry/examples/badge/danger.js +11 -0
  86. package/registry/examples/badge/danger.tsx +9 -0
  87. package/registry/examples/badge/medium.d.ts +4 -0
  88. package/registry/examples/badge/medium.js +11 -0
  89. package/registry/examples/badge/medium.tsx +9 -0
  90. package/registry/examples/badge/native/dot.d.ts +4 -0
  91. package/registry/examples/badge/native/dot.dark.png +0 -0
  92. package/registry/examples/badge/native/dot.js +15 -0
  93. package/registry/examples/badge/native/dot.light.png +0 -0
  94. package/registry/examples/badge/native/dot.tsx +16 -0
  95. package/registry/examples/badge/native/scrim.d.ts +4 -0
  96. package/registry/examples/badge/native/scrim.dark.png +0 -0
  97. package/registry/examples/badge/native/scrim.js +13 -0
  98. package/registry/examples/badge/native/scrim.light.png +0 -0
  99. package/registry/examples/badge/native/scrim.tsx +14 -0
  100. package/registry/examples/badge/native/tones.d.ts +4 -0
  101. package/registry/examples/badge/native/tones.dark.png +0 -0
  102. package/registry/examples/badge/native/tones.js +18 -0
  103. package/registry/examples/badge/native/tones.light.png +0 -0
  104. package/registry/examples/badge/native/tones.tsx +14 -0
  105. package/registry/examples/badge/neutral.d.ts +4 -0
  106. package/registry/{demos/badge.js → examples/badge/neutral.js} +3 -3
  107. package/registry/{demos/badge.tsx → examples/badge/neutral.tsx} +1 -1
  108. package/registry/examples/badge/scrim.d.ts +4 -0
  109. package/registry/examples/badge/scrim.js +11 -0
  110. package/registry/examples/badge/scrim.tsx +10 -0
  111. package/registry/examples/badge/success.d.ts +4 -0
  112. package/registry/examples/badge/success.js +11 -0
  113. package/registry/examples/badge/success.tsx +9 -0
  114. package/registry/examples/badge/warning.d.ts +4 -0
  115. package/registry/examples/badge/warning.js +11 -0
  116. package/registry/examples/badge/warning.tsx +9 -0
  117. package/registry/examples/button/as-child-link.d.ts +4 -0
  118. package/registry/examples/button/as-child-link.js +11 -0
  119. package/registry/examples/button/as-child-link.tsx +10 -0
  120. package/registry/examples/button/danger.d.ts +4 -0
  121. package/registry/examples/button/danger.js +11 -0
  122. package/registry/examples/button/danger.tsx +5 -0
  123. package/registry/examples/button/disabled.d.ts +4 -0
  124. package/registry/examples/button/disabled.js +11 -0
  125. package/registry/examples/button/disabled.tsx +9 -0
  126. package/registry/examples/button/ghost.d.ts +4 -0
  127. package/registry/examples/button/ghost.js +11 -0
  128. package/registry/examples/button/ghost.tsx +5 -0
  129. package/registry/examples/button/icon.d.ts +4 -0
  130. package/registry/examples/button/icon.js +14 -0
  131. package/registry/examples/button/icon.tsx +18 -0
  132. package/registry/examples/button/loading.d.ts +4 -0
  133. package/registry/examples/button/loading.js +11 -0
  134. package/registry/examples/button/loading.tsx +10 -0
  135. package/registry/examples/button/native/danger.d.ts +4 -0
  136. package/registry/examples/button/native/danger.dark.png +0 -0
  137. package/registry/examples/button/native/danger.js +12 -0
  138. package/registry/examples/button/native/danger.light.png +0 -0
  139. package/registry/examples/button/native/danger.tsx +5 -0
  140. package/registry/examples/button/native/disabled.d.ts +4 -0
  141. package/registry/examples/button/native/disabled.dark.png +0 -0
  142. package/registry/examples/button/native/disabled.js +11 -0
  143. package/registry/examples/button/native/disabled.light.png +0 -0
  144. package/registry/examples/button/native/disabled.tsx +5 -0
  145. package/registry/examples/button/native/ghost.d.ts +4 -0
  146. package/registry/examples/button/native/ghost.dark.png +0 -0
  147. package/registry/examples/button/native/ghost.js +12 -0
  148. package/registry/examples/button/native/ghost.light.png +0 -0
  149. package/registry/examples/button/native/ghost.tsx +5 -0
  150. package/registry/examples/button/native/icon-only.d.ts +4 -0
  151. package/registry/examples/button/native/icon-only.dark.png +0 -0
  152. package/registry/examples/button/native/icon-only.js +19 -0
  153. package/registry/examples/button/native/icon-only.light.png +0 -0
  154. package/registry/examples/button/native/icon-only.tsx +21 -0
  155. package/registry/examples/button/native/icon.d.ts +4 -0
  156. package/registry/examples/button/native/icon.dark.png +0 -0
  157. package/registry/examples/button/native/icon.js +16 -0
  158. package/registry/examples/button/native/icon.light.png +0 -0
  159. package/registry/examples/button/native/icon.tsx +15 -0
  160. package/registry/examples/button/native/loading.d.ts +4 -0
  161. package/registry/examples/button/native/loading.dark.png +0 -0
  162. package/registry/examples/button/native/loading.js +11 -0
  163. package/registry/examples/button/native/loading.light.png +0 -0
  164. package/registry/examples/button/native/loading.tsx +6 -0
  165. package/registry/examples/button/native/outline.d.ts +4 -0
  166. package/registry/examples/button/native/outline.dark.png +0 -0
  167. package/registry/examples/button/native/outline.js +12 -0
  168. package/registry/examples/button/native/outline.light.png +0 -0
  169. package/registry/examples/button/native/outline.tsx +5 -0
  170. package/registry/examples/button/native/primary.d.ts +4 -0
  171. package/registry/examples/button/native/primary.dark.png +0 -0
  172. package/registry/examples/button/native/primary.js +12 -0
  173. package/registry/examples/button/native/primary.light.png +0 -0
  174. package/registry/examples/button/native/primary.tsx +5 -0
  175. package/registry/examples/button/native/secondary.d.ts +4 -0
  176. package/registry/examples/button/native/secondary.dark.png +0 -0
  177. package/registry/examples/button/native/secondary.js +12 -0
  178. package/registry/examples/button/native/secondary.light.png +0 -0
  179. package/registry/examples/button/native/secondary.tsx +6 -0
  180. package/registry/examples/button/native/sizes.d.ts +4 -0
  181. package/registry/examples/button/native/sizes.dark.png +0 -0
  182. package/registry/examples/button/native/sizes.js +15 -0
  183. package/registry/examples/button/native/sizes.light.png +0 -0
  184. package/registry/examples/button/native/sizes.tsx +11 -0
  185. package/registry/examples/button/outline.d.ts +4 -0
  186. package/registry/examples/button/outline.js +11 -0
  187. package/registry/examples/button/outline.tsx +5 -0
  188. package/registry/examples/button/pill.d.ts +4 -0
  189. package/registry/examples/button/pill.js +11 -0
  190. package/registry/examples/button/pill.tsx +9 -0
  191. package/registry/examples/button/primary.d.ts +4 -0
  192. package/registry/{demos/button.js → examples/button/primary.js} +3 -3
  193. package/registry/{demos/button.tsx → examples/button/primary.tsx} +1 -1
  194. package/registry/examples/button/secondary.d.ts +4 -0
  195. package/registry/examples/button/secondary.js +11 -0
  196. package/registry/examples/button/secondary.tsx +6 -0
  197. package/registry/examples/button/sizes.d.ts +4 -0
  198. package/registry/examples/button/sizes.js +15 -0
  199. package/registry/examples/button/sizes.tsx +17 -0
  200. package/registry/examples/card/interactive-link.d.ts +4 -0
  201. package/registry/examples/card/interactive-link.js +15 -0
  202. package/registry/examples/card/interactive-link.tsx +16 -0
  203. package/registry/examples/card/media-card.d.ts +4 -0
  204. package/registry/{demos/card.js → examples/card/media-card.js} +3 -3
  205. package/registry/{demos/card.tsx → examples/card/media-card.tsx} +1 -1
  206. package/registry/examples/card/media-fallback.d.ts +4 -0
  207. package/registry/examples/card/media-fallback.js +18 -0
  208. package/registry/examples/card/media-fallback.tsx +22 -0
  209. package/registry/examples/card/native/body.d.ts +4 -0
  210. package/registry/examples/card/native/body.dark.png +0 -0
  211. package/registry/examples/card/native/body.js +15 -0
  212. package/registry/examples/card/native/body.light.png +0 -0
  213. package/registry/examples/card/native/body.tsx +13 -0
  214. package/registry/examples/card/native/default.d.ts +4 -0
  215. package/registry/examples/card/native/default.dark.png +0 -0
  216. package/registry/examples/card/native/default.js +24 -0
  217. package/registry/examples/card/native/default.light.png +0 -0
  218. package/registry/examples/card/native/default.tsx +28 -0
  219. package/registry/examples/card/native/elevated.d.ts +4 -0
  220. package/registry/examples/card/native/elevated.dark.png +0 -0
  221. package/registry/examples/card/native/elevated.js +24 -0
  222. package/registry/examples/card/native/elevated.light.png +0 -0
  223. package/registry/examples/card/native/elevated.tsx +28 -0
  224. package/registry/examples/card/native/pressable.d.ts +4 -0
  225. package/registry/examples/card/native/pressable.dark.png +0 -0
  226. package/registry/examples/card/native/pressable.js +15 -0
  227. package/registry/examples/card/native/pressable.light.png +0 -0
  228. package/registry/examples/card/native/pressable.tsx +13 -0
  229. package/registry/examples/card/reveal-grid.d.ts +4 -0
  230. package/registry/examples/card/reveal-grid.js +28 -0
  231. package/registry/examples/card/reveal-grid.tsx +31 -0
  232. package/registry/examples/card/stat-card.d.ts +4 -0
  233. package/registry/examples/card/stat-card.js +18 -0
  234. package/registry/examples/card/stat-card.tsx +17 -0
  235. package/registry/examples/checkbox/checked.d.ts +4 -0
  236. package/registry/examples/checkbox/checked.js +11 -0
  237. package/registry/examples/checkbox/checked.tsx +5 -0
  238. package/registry/examples/checkbox/disabled.d.ts +4 -0
  239. package/registry/examples/checkbox/disabled.js +14 -0
  240. package/registry/examples/checkbox/disabled.tsx +12 -0
  241. package/registry/examples/checkbox/indeterminate.d.ts +4 -0
  242. package/registry/examples/checkbox/indeterminate.js +11 -0
  243. package/registry/examples/checkbox/indeterminate.tsx +6 -0
  244. package/registry/examples/checkbox/invalid.d.ts +4 -0
  245. package/registry/examples/checkbox/invalid.js +15 -0
  246. package/registry/examples/checkbox/invalid.tsx +14 -0
  247. package/registry/examples/checkbox/unchecked.d.ts +4 -0
  248. package/registry/{demos/checkbox.js → examples/checkbox/unchecked.js} +3 -3
  249. package/registry/{demos/checkbox.tsx → examples/checkbox/unchecked.tsx} +2 -1
  250. package/registry/examples/chip/multiple.d.ts +4 -0
  251. package/registry/examples/chip/multiple.js +16 -0
  252. package/registry/examples/chip/multiple.tsx +12 -0
  253. package/registry/examples/chip/native/multiple.d.ts +4 -0
  254. package/registry/examples/chip/native/multiple.dark.png +0 -0
  255. package/registry/examples/chip/native/multiple.js +18 -0
  256. package/registry/examples/chip/native/multiple.light.png +0 -0
  257. package/registry/examples/chip/native/multiple.tsx +17 -0
  258. package/registry/examples/chip/native/removable.d.ts +4 -0
  259. package/registry/examples/chip/native/removable.dark.png +0 -0
  260. package/registry/examples/chip/native/removable.js +17 -0
  261. package/registry/examples/chip/native/removable.light.png +0 -0
  262. package/registry/examples/chip/native/removable.tsx +15 -0
  263. package/registry/examples/chip/native/single.d.ts +4 -0
  264. package/registry/examples/chip/native/single.dark.png +0 -0
  265. package/registry/examples/chip/native/single.js +15 -0
  266. package/registry/examples/chip/native/single.light.png +0 -0
  267. package/registry/examples/chip/native/single.tsx +11 -0
  268. package/registry/examples/chip/native/toggle.d.ts +4 -0
  269. package/registry/examples/chip/native/toggle.dark.png +0 -0
  270. package/registry/examples/chip/native/toggle.js +17 -0
  271. package/registry/examples/chip/native/toggle.light.png +0 -0
  272. package/registry/examples/chip/native/toggle.tsx +16 -0
  273. package/registry/examples/chip/removable.d.ts +4 -0
  274. package/registry/examples/chip/removable.js +16 -0
  275. package/registry/examples/chip/removable.tsx +15 -0
  276. package/registry/examples/chip/single.d.ts +4 -0
  277. package/registry/examples/chip/single.js +16 -0
  278. package/registry/examples/chip/single.tsx +13 -0
  279. package/registry/examples/chip/small.d.ts +4 -0
  280. package/registry/examples/chip/small.js +16 -0
  281. package/registry/examples/chip/small.tsx +12 -0
  282. package/registry/examples/chip/toggle.d.ts +4 -0
  283. package/registry/{demos/chip.js → examples/chip/toggle.js} +3 -3
  284. package/registry/{demos/chip.tsx → examples/chip/toggle.tsx} +2 -1
  285. package/registry/examples/cn/merge.d.ts +4 -0
  286. package/registry/{demos/cn.js → examples/cn/merge.js} +3 -3
  287. package/registry/{demos/cn.tsx → examples/cn/merge.tsx} +1 -1
  288. package/registry/examples/command/dialog.d.ts +4 -0
  289. package/registry/examples/command/dialog.js +40 -0
  290. package/registry/examples/command/dialog.tsx +36 -0
  291. package/registry/examples/command/inline.d.ts +4 -0
  292. package/registry/{demos/command.js → examples/command/inline.js} +3 -3
  293. package/registry/{demos/command.tsx → examples/command/inline.tsx} +1 -1
  294. package/registry/examples/confirm-button/armed.d.ts +4 -0
  295. package/registry/examples/confirm-button/armed.js +12 -0
  296. package/registry/examples/confirm-button/armed.tsx +14 -0
  297. package/registry/examples/confirm-button/idle.d.ts +4 -0
  298. package/registry/{demos/confirm-button.js → examples/confirm-button/idle.js} +3 -3
  299. package/registry/{demos/confirm-button.tsx → examples/confirm-button/idle.tsx} +1 -1
  300. package/registry/examples/confirm-button/with-text.d.ts +4 -0
  301. package/registry/examples/confirm-button/with-text.js +12 -0
  302. package/registry/examples/confirm-button/with-text.tsx +12 -0
  303. package/registry/examples/countdown/days.d.ts +4 -0
  304. package/registry/examples/countdown/days.js +13 -0
  305. package/registry/examples/countdown/days.tsx +10 -0
  306. package/registry/examples/countdown/ended.d.ts +4 -0
  307. package/registry/examples/countdown/ended.js +13 -0
  308. package/registry/examples/countdown/ended.tsx +10 -0
  309. package/registry/examples/countdown/hours.d.ts +4 -0
  310. package/registry/{demos/countdown.js → examples/countdown/hours.js} +3 -3
  311. package/registry/{demos/countdown.tsx → examples/countdown/hours.tsx} +1 -1
  312. package/registry/examples/countdown/native/days.d.ts +4 -0
  313. package/registry/examples/countdown/native/days.dark.png +0 -0
  314. package/registry/examples/countdown/native/days.js +13 -0
  315. package/registry/examples/countdown/native/days.light.png +0 -0
  316. package/registry/examples/countdown/native/days.tsx +7 -0
  317. package/registry/examples/countdown/native/hours.d.ts +4 -0
  318. package/registry/examples/countdown/native/hours.dark.png +0 -0
  319. package/registry/examples/countdown/native/hours.js +13 -0
  320. package/registry/examples/countdown/native/hours.light.png +0 -0
  321. package/registry/examples/countdown/native/hours.tsx +7 -0
  322. package/registry/examples/countdown/native/sizes.d.ts +4 -0
  323. package/registry/examples/countdown/native/sizes.dark.png +0 -0
  324. package/registry/examples/countdown/native/sizes.js +18 -0
  325. package/registry/examples/countdown/native/sizes.light.png +0 -0
  326. package/registry/examples/countdown/native/sizes.tsx +15 -0
  327. package/registry/examples/countdown/native/urgent.d.ts +4 -0
  328. package/registry/examples/countdown/native/urgent.dark.png +0 -0
  329. package/registry/examples/countdown/native/urgent.js +13 -0
  330. package/registry/examples/countdown/native/urgent.light.png +0 -0
  331. package/registry/examples/countdown/native/urgent.tsx +7 -0
  332. package/registry/examples/countdown/sizes.d.ts +4 -0
  333. package/registry/examples/countdown/sizes.js +18 -0
  334. package/registry/examples/countdown/sizes.tsx +17 -0
  335. package/registry/examples/countdown/urgent.d.ts +4 -0
  336. package/registry/examples/countdown/urgent.js +13 -0
  337. package/registry/examples/countdown/urgent.tsx +10 -0
  338. package/registry/examples/dialog/alert-destructive.d.ts +4 -0
  339. package/registry/examples/dialog/alert-destructive.js +24 -0
  340. package/registry/examples/dialog/alert-destructive.tsx +20 -0
  341. package/registry/examples/dialog/bottom.d.ts +4 -0
  342. package/registry/examples/dialog/bottom.js +29 -0
  343. package/registry/examples/dialog/bottom.tsx +32 -0
  344. package/registry/examples/dialog/center.d.ts +4 -0
  345. package/registry/{demos/dialog.js → examples/dialog/center.js} +3 -3
  346. package/registry/{demos/dialog.tsx → examples/dialog/center.tsx} +1 -1
  347. package/registry/examples/dialog/gate.d.ts +4 -0
  348. package/registry/examples/dialog/gate.js +24 -0
  349. package/registry/examples/dialog/gate.tsx +27 -0
  350. package/registry/examples/dialog/right.d.ts +4 -0
  351. package/registry/examples/dialog/right.js +29 -0
  352. package/registry/examples/dialog/right.tsx +32 -0
  353. package/registry/examples/dialog/sheet-form.d.ts +4 -0
  354. package/registry/examples/dialog/sheet-form.js +35 -0
  355. package/registry/examples/dialog/sheet-form.tsx +36 -0
  356. package/registry/examples/dropdown-menu/actions.d.ts +4 -0
  357. package/registry/{demos/dropdown-menu.js → examples/dropdown-menu/actions.js} +3 -3
  358. package/registry/{demos/dropdown-menu.tsx → examples/dropdown-menu/actions.tsx} +1 -1
  359. package/registry/examples/empty-state/default.d.ts +4 -0
  360. package/registry/{demos/empty-state.js → examples/empty-state/default.js} +3 -3
  361. package/registry/{demos/empty-state.tsx → examples/empty-state/default.tsx} +1 -1
  362. package/registry/examples/empty-state/native/default.d.ts +4 -0
  363. package/registry/examples/empty-state/native/default.dark.png +0 -0
  364. package/registry/examples/empty-state/native/default.js +25 -0
  365. package/registry/examples/empty-state/native/default.light.png +0 -0
  366. package/registry/examples/empty-state/native/default.tsx +25 -0
  367. package/registry/examples/empty-state/title-only.d.ts +4 -0
  368. package/registry/examples/empty-state/title-only.js +11 -0
  369. package/registry/examples/empty-state/title-only.tsx +5 -0
  370. package/registry/examples/empty-state/with-action.d.ts +4 -0
  371. package/registry/examples/empty-state/with-action.js +24 -0
  372. package/registry/examples/empty-state/with-action.tsx +25 -0
  373. package/registry/examples/field/default.d.ts +4 -0
  374. package/registry/{demos/field.js → examples/field/default.js} +3 -3
  375. package/registry/{demos/field.tsx → examples/field/default.tsx} +1 -1
  376. package/registry/examples/field/disabled.d.ts +4 -0
  377. package/registry/examples/field/disabled.js +14 -0
  378. package/registry/examples/field/disabled.tsx +10 -0
  379. package/registry/examples/field/invalid.d.ts +4 -0
  380. package/registry/examples/field/invalid.js +15 -0
  381. package/registry/examples/field/invalid.tsx +12 -0
  382. package/registry/examples/field/select.d.ts +4 -0
  383. package/registry/examples/field/select.js +18 -0
  384. package/registry/examples/field/select.tsx +15 -0
  385. package/registry/examples/field/textarea.d.ts +4 -0
  386. package/registry/examples/field/textarea.js +14 -0
  387. package/registry/examples/field/textarea.tsx +10 -0
  388. package/registry/examples/kbd/key.d.ts +4 -0
  389. package/registry/{demos/kbd.js → examples/kbd/key.js} +3 -3
  390. package/registry/{demos/kbd.tsx → examples/kbd/key.tsx} +1 -1
  391. package/registry/examples/kbd/shortcut.d.ts +4 -0
  392. package/registry/examples/kbd/shortcut.js +15 -0
  393. package/registry/examples/kbd/shortcut.tsx +11 -0
  394. package/registry/examples/kbd/small.d.ts +4 -0
  395. package/registry/examples/kbd/small.js +11 -0
  396. package/registry/examples/kbd/small.tsx +5 -0
  397. package/registry/examples/page-header/default.d.ts +4 -0
  398. package/registry/{demos/page-header.js → examples/page-header/default.js} +3 -3
  399. package/registry/{demos/page-header.tsx → examples/page-header/default.tsx} +1 -1
  400. package/registry/examples/page-header/with-actions.d.ts +4 -0
  401. package/registry/examples/page-header/with-actions.js +22 -0
  402. package/registry/examples/page-header/with-actions.tsx +17 -0
  403. package/registry/examples/page-header/with-breadcrumb.d.ts +4 -0
  404. package/registry/examples/page-header/with-breadcrumb.js +24 -0
  405. package/registry/examples/page-header/with-breadcrumb.tsx +26 -0
  406. package/registry/examples/popover/form.d.ts +4 -0
  407. package/registry/{demos/popover.js → examples/popover/form.js} +3 -3
  408. package/registry/{demos/popover.tsx → examples/popover/form.tsx} +1 -1
  409. package/registry/examples/progress/bar-indeterminate.d.ts +4 -0
  410. package/registry/examples/progress/bar-indeterminate.js +11 -0
  411. package/registry/examples/progress/bar-indeterminate.tsx +6 -0
  412. package/registry/examples/progress/bar-sizes.d.ts +4 -0
  413. package/registry/examples/progress/bar-sizes.js +15 -0
  414. package/registry/examples/progress/bar-sizes.tsx +11 -0
  415. package/registry/examples/progress/bar.d.ts +4 -0
  416. package/registry/{demos/progress.js → examples/progress/bar.js} +3 -3
  417. package/registry/{demos/progress.tsx → examples/progress/bar.tsx} +1 -1
  418. package/registry/examples/progress/native/bar.d.ts +4 -0
  419. package/registry/examples/progress/native/bar.dark.png +0 -0
  420. package/registry/examples/progress/native/bar.js +16 -0
  421. package/registry/examples/progress/native/bar.light.png +0 -0
  422. package/registry/examples/progress/native/bar.tsx +12 -0
  423. package/registry/examples/progress/native/indeterminate.d.ts +4 -0
  424. package/registry/examples/progress/native/indeterminate.dark.png +0 -0
  425. package/registry/examples/progress/native/indeterminate.js +15 -0
  426. package/registry/examples/progress/native/indeterminate.light.png +0 -0
  427. package/registry/examples/progress/native/indeterminate.tsx +12 -0
  428. package/registry/examples/progress/native/ring.d.ts +4 -0
  429. package/registry/examples/progress/native/ring.dark.png +0 -0
  430. package/registry/examples/progress/native/ring.js +19 -0
  431. package/registry/examples/progress/native/ring.light.png +0 -0
  432. package/registry/examples/progress/native/ring.tsx +19 -0
  433. package/registry/examples/progress/ring-indeterminate.d.ts +4 -0
  434. package/registry/examples/progress/ring-indeterminate.js +11 -0
  435. package/registry/examples/progress/ring-indeterminate.tsx +5 -0
  436. package/registry/examples/progress/ring.d.ts +4 -0
  437. package/registry/examples/progress/ring.js +18 -0
  438. package/registry/examples/progress/ring.tsx +17 -0
  439. package/registry/examples/radio-group/cards.d.ts +4 -0
  440. package/registry/examples/radio-group/cards.js +19 -0
  441. package/registry/examples/radio-group/cards.tsx +21 -0
  442. package/registry/examples/radio-group/horizontal.d.ts +4 -0
  443. package/registry/examples/radio-group/horizontal.js +15 -0
  444. package/registry/examples/radio-group/horizontal.tsx +12 -0
  445. package/registry/examples/radio-group/items.d.ts +4 -0
  446. package/registry/{demos/radio-group.js → examples/radio-group/items.js} +3 -3
  447. package/registry/{demos/radio-group.tsx → examples/radio-group/items.tsx} +1 -1
  448. package/registry/examples/section-backdrop/depth-of-field.d.ts +4 -0
  449. package/registry/examples/section-backdrop/depth-of-field.js +18 -0
  450. package/registry/examples/section-backdrop/depth-of-field.tsx +13 -0
  451. package/registry/examples/section-backdrop/hero.d.ts +4 -0
  452. package/registry/examples/section-backdrop/hero.js +14 -0
  453. package/registry/examples/section-backdrop/hero.tsx +10 -0
  454. package/registry/examples/section-backdrop/plain.d.ts +4 -0
  455. package/registry/examples/section-backdrop/plain.js +11 -0
  456. package/registry/examples/section-backdrop/plain.tsx +10 -0
  457. package/registry/examples/section-backdrop/sequence.d.ts +4 -0
  458. package/registry/examples/section-backdrop/sequence.js +14 -0
  459. package/registry/examples/section-backdrop/sequence.tsx +15 -0
  460. package/registry/examples/section-backdrop/up.d.ts +4 -0
  461. package/registry/examples/section-backdrop/up.js +11 -0
  462. package/registry/examples/section-backdrop/up.tsx +10 -0
  463. package/registry/examples/segmented/native/default.d.ts +4 -0
  464. package/registry/examples/segmented/native/default.dark.png +0 -0
  465. package/registry/examples/segmented/native/default.js +19 -0
  466. package/registry/examples/segmented/native/default.light.png +0 -0
  467. package/registry/examples/segmented/native/default.tsx +19 -0
  468. package/registry/examples/segmented/native/small.d.ts +4 -0
  469. package/registry/examples/segmented/native/small.dark.png +0 -0
  470. package/registry/examples/segmented/native/small.js +19 -0
  471. package/registry/examples/segmented/native/small.light.png +0 -0
  472. package/registry/examples/segmented/native/small.tsx +19 -0
  473. package/registry/examples/separator/horizontal.d.ts +4 -0
  474. package/registry/{demos/separator.js → examples/separator/horizontal.js} +3 -3
  475. package/registry/{demos/separator.tsx → examples/separator/horizontal.tsx} +1 -1
  476. package/registry/examples/separator/vertical.d.ts +4 -0
  477. package/registry/examples/separator/vertical.js +17 -0
  478. package/registry/examples/separator/vertical.tsx +14 -0
  479. package/registry/examples/skeleton/circle.d.ts +4 -0
  480. package/registry/examples/skeleton/circle.js +11 -0
  481. package/registry/examples/skeleton/circle.tsx +5 -0
  482. package/registry/examples/skeleton/composition.d.ts +4 -0
  483. package/registry/{demos/skeleton.js → examples/skeleton/composition.js} +3 -3
  484. package/registry/{demos/skeleton.tsx → examples/skeleton/composition.tsx} +1 -1
  485. package/registry/examples/skeleton/native/shapes.d.ts +4 -0
  486. package/registry/examples/skeleton/native/shapes.dark.png +0 -0
  487. package/registry/examples/skeleton/native/shapes.js +21 -0
  488. package/registry/examples/skeleton/native/shapes.light.png +0 -0
  489. package/registry/examples/skeleton/native/shapes.tsx +18 -0
  490. package/registry/examples/skeleton/rect.d.ts +4 -0
  491. package/registry/examples/skeleton/rect.js +11 -0
  492. package/registry/examples/skeleton/rect.tsx +5 -0
  493. package/registry/examples/skeleton/text.d.ts +4 -0
  494. package/registry/examples/skeleton/text.js +11 -0
  495. package/registry/examples/skeleton/text.tsx +5 -0
  496. package/registry/examples/slider/centred.d.ts +4 -0
  497. package/registry/examples/slider/centred.js +11 -0
  498. package/registry/examples/slider/centred.tsx +8 -0
  499. package/registry/examples/slider/default.d.ts +4 -0
  500. package/registry/{demos/slider.js → examples/slider/default.js} +3 -3
  501. package/registry/{demos/slider.tsx → examples/slider/default.tsx} +1 -1
  502. package/registry/examples/slider/disabled.d.ts +4 -0
  503. package/registry/examples/slider/disabled.js +11 -0
  504. package/registry/examples/slider/disabled.tsx +5 -0
  505. package/registry/examples/slider/range.d.ts +4 -0
  506. package/registry/examples/slider/range.js +22 -0
  507. package/registry/examples/slider/range.tsx +18 -0
  508. package/registry/examples/slider/with-label.d.ts +4 -0
  509. package/registry/examples/slider/with-label.js +11 -0
  510. package/registry/examples/slider/with-label.tsx +8 -0
  511. package/registry/examples/slot/as-child.d.ts +4 -0
  512. package/registry/{demos/slot.js → examples/slot/as-child.js} +3 -3
  513. package/registry/{demos/slot.tsx → examples/slot/as-child.tsx} +1 -1
  514. package/registry/examples/slot/visually-hidden.d.ts +4 -0
  515. package/registry/examples/slot/visually-hidden.js +14 -0
  516. package/registry/examples/slot/visually-hidden.tsx +13 -0
  517. package/registry/examples/spinner/default.d.ts +4 -0
  518. package/registry/{demos/spinner.js → examples/spinner/default.js} +3 -3
  519. package/registry/{demos/spinner.tsx → examples/spinner/default.tsx} +1 -1
  520. package/registry/examples/spinner/muted.d.ts +4 -0
  521. package/registry/examples/spinner/muted.js +11 -0
  522. package/registry/examples/spinner/muted.tsx +6 -0
  523. package/registry/examples/spinner/native/sizes.d.ts +4 -0
  524. package/registry/examples/spinner/native/sizes.dark.png +0 -0
  525. package/registry/examples/spinner/native/sizes.js +16 -0
  526. package/registry/examples/spinner/native/sizes.light.png +0 -0
  527. package/registry/examples/spinner/native/sizes.tsx +13 -0
  528. package/registry/examples/spinner/sizes.d.ts +4 -0
  529. package/registry/examples/spinner/sizes.js +15 -0
  530. package/registry/examples/spinner/sizes.tsx +11 -0
  531. package/registry/examples/stat/down.d.ts +4 -0
  532. package/registry/examples/stat/down.js +11 -0
  533. package/registry/examples/stat/down.tsx +5 -0
  534. package/registry/examples/stat/flat.d.ts +4 -0
  535. package/registry/examples/stat/flat.js +11 -0
  536. package/registry/examples/stat/flat.tsx +5 -0
  537. package/registry/examples/stat/plain.d.ts +4 -0
  538. package/registry/examples/stat/plain.js +11 -0
  539. package/registry/examples/stat/plain.tsx +5 -0
  540. package/registry/examples/stat/row.d.ts +4 -0
  541. package/registry/examples/stat/row.js +15 -0
  542. package/registry/examples/stat/row.tsx +12 -0
  543. package/registry/examples/stat/up.d.ts +4 -0
  544. package/registry/{demos/stat.js → examples/stat/up.js} +3 -3
  545. package/registry/{demos/stat.tsx → examples/stat/up.tsx} +1 -1
  546. package/registry/examples/switch/disabled.d.ts +4 -0
  547. package/registry/examples/switch/disabled.js +14 -0
  548. package/registry/examples/switch/disabled.tsx +10 -0
  549. package/registry/examples/switch/off.d.ts +4 -0
  550. package/registry/{demos/switch.js → examples/switch/off.js} +3 -3
  551. package/registry/{demos/switch.tsx → examples/switch/off.tsx} +1 -1
  552. package/registry/examples/switch/on.d.ts +4 -0
  553. package/registry/examples/switch/on.js +11 -0
  554. package/registry/examples/switch/on.tsx +5 -0
  555. package/registry/examples/switch/small.d.ts +4 -0
  556. package/registry/examples/switch/small.js +11 -0
  557. package/registry/examples/switch/small.tsx +5 -0
  558. package/registry/examples/switch/with-label.d.ts +4 -0
  559. package/registry/examples/switch/with-label.js +18 -0
  560. package/registry/examples/switch/with-label.tsx +17 -0
  561. package/registry/examples/tabs/pills.d.ts +4 -0
  562. package/registry/examples/tabs/pills.js +20 -0
  563. package/registry/examples/tabs/pills.tsx +23 -0
  564. package/registry/examples/tabs/segmented.d.ts +4 -0
  565. package/registry/examples/tabs/segmented.js +20 -0
  566. package/registry/examples/tabs/segmented.tsx +23 -0
  567. package/registry/examples/tabs/underline.d.ts +4 -0
  568. package/registry/{demos/tabs.js → examples/tabs/underline.js} +3 -3
  569. package/registry/{demos/tabs.tsx → examples/tabs/underline.tsx} +1 -1
  570. package/registry/examples/tabs/vertical.d.ts +4 -0
  571. package/registry/examples/tabs/vertical.js +20 -0
  572. package/registry/examples/tabs/vertical.tsx +23 -0
  573. package/registry/examples/theme/native/provider.d.ts +4 -0
  574. package/registry/examples/theme/native/provider.js +23 -0
  575. package/registry/examples/theme/native/provider.tsx +21 -0
  576. package/registry/examples/theme/secondary.d.ts +4 -0
  577. package/registry/examples/theme/secondary.js +11 -0
  578. package/registry/examples/theme/secondary.tsx +10 -0
  579. package/registry/examples/theme/toggle.d.ts +4 -0
  580. package/registry/{demos/theme.js → examples/theme/toggle.js} +3 -3
  581. package/registry/{demos/theme.tsx → examples/theme/toggle.tsx} +1 -1
  582. package/registry/examples/toast/custom.d.ts +4 -0
  583. package/registry/examples/toast/custom.js +30 -0
  584. package/registry/examples/toast/custom.tsx +35 -0
  585. package/registry/examples/toast/native/notification.d.ts +4 -0
  586. package/registry/examples/toast/native/notification.dark.png +0 -0
  587. package/registry/examples/toast/native/notification.js +29 -0
  588. package/registry/examples/toast/native/notification.light.png +0 -0
  589. package/registry/examples/toast/native/notification.tsx +30 -0
  590. package/registry/examples/toast/native/tones.d.ts +4 -0
  591. package/registry/examples/toast/native/tones.dark.png +0 -0
  592. package/registry/examples/toast/native/tones.js +28 -0
  593. package/registry/examples/toast/native/tones.light.png +0 -0
  594. package/registry/examples/toast/native/tones.tsx +25 -0
  595. package/registry/examples/toast/tones.d.ts +4 -0
  596. package/registry/{demos/toast.js → examples/toast/tones.js} +3 -3
  597. package/registry/{demos/toast.tsx → examples/toast/tones.tsx} +1 -1
  598. package/registry/examples/tooltip/right.d.ts +4 -0
  599. package/registry/examples/tooltip/right.js +15 -0
  600. package/registry/examples/tooltip/right.tsx +15 -0
  601. package/registry/examples/tooltip/top.d.ts +4 -0
  602. package/registry/{demos/tooltip.js → examples/tooltip/top.js} +3 -3
  603. package/registry/{demos/tooltip.tsx → examples/tooltip/top.tsx} +1 -1
  604. package/registry/examples/txt/native/tones.d.ts +4 -0
  605. package/registry/examples/txt/native/tones.dark.png +0 -0
  606. package/registry/examples/txt/native/tones.js +16 -0
  607. package/registry/examples/txt/native/tones.light.png +0 -0
  608. package/registry/examples/txt/native/tones.tsx +17 -0
  609. package/registry/examples/txt/native/variants.d.ts +4 -0
  610. package/registry/examples/txt/native/variants.dark.png +0 -0
  611. package/registry/examples/txt/native/variants.js +18 -0
  612. package/registry/examples/txt/native/variants.light.png +0 -0
  613. package/registry/examples/txt/native/variants.tsx +15 -0
  614. package/registry/field.json +141 -3
  615. package/registry/index.json +361 -32
  616. package/registry/kbd.json +90 -3
  617. package/registry/page-header.json +121 -3
  618. package/registry/popover.json +90 -3
  619. package/registry/progress.json +265 -3
  620. package/registry/radio-group.json +136 -3
  621. package/registry/section-backdrop.json +214 -0
  622. package/registry/segmented.json +125 -0
  623. package/registry/separator.json +67 -3
  624. package/registry/skeleton.json +166 -3
  625. package/registry/slider.json +177 -3
  626. package/registry/slot.json +79 -3
  627. package/registry/spinner.json +144 -3
  628. package/registry/stat.json +140 -3
  629. package/registry/switch.json +130 -3
  630. package/registry/tabs.json +117 -3
  631. package/registry/theme.json +189 -3
  632. package/registry/toast.json +190 -3
  633. package/registry/tooltip.json +143 -3
  634. package/registry/txt.json +97 -0
  635. package/dist/chunk-ZUD4U22H.js.map +0 -1
  636. package/registry/demos/alert.d.ts +0 -5
  637. package/registry/demos/avatar.d.ts +0 -5
  638. package/registry/demos/badge.d.ts +0 -5
  639. package/registry/demos/button.d.ts +0 -5
  640. package/registry/demos/card.d.ts +0 -5
  641. package/registry/demos/checkbox.d.ts +0 -5
  642. package/registry/demos/chip.d.ts +0 -5
  643. package/registry/demos/cn.d.ts +0 -7
  644. package/registry/demos/command.d.ts +0 -5
  645. package/registry/demos/confirm-button.d.ts +0 -5
  646. package/registry/demos/countdown.d.ts +0 -5
  647. package/registry/demos/dialog.d.ts +0 -7
  648. package/registry/demos/dropdown-menu.d.ts +0 -7
  649. package/registry/demos/empty-state.d.ts +0 -5
  650. package/registry/demos/field.d.ts +0 -5
  651. package/registry/demos/kbd.d.ts +0 -5
  652. package/registry/demos/page-header.d.ts +0 -5
  653. package/registry/demos/popover.d.ts +0 -7
  654. package/registry/demos/progress.d.ts +0 -5
  655. package/registry/demos/radio-group.d.ts +0 -5
  656. package/registry/demos/separator.d.ts +0 -5
  657. package/registry/demos/skeleton.d.ts +0 -5
  658. package/registry/demos/slider.d.ts +0 -5
  659. package/registry/demos/slot.d.ts +0 -5
  660. package/registry/demos/spinner.d.ts +0 -5
  661. package/registry/demos/stat.d.ts +0 -5
  662. package/registry/demos/switch.d.ts +0 -5
  663. package/registry/demos/tabs.d.ts +0 -5
  664. package/registry/demos/theme.d.ts +0 -5
  665. package/registry/demos/toast.d.ts +0 -8
  666. package/registry/demos/tooltip.d.ts +0 -7
  667. /package/dist/{chunk-3X5MVH54.js.map → chunk-IUGBKMJC.js.map} +0 -0
package/dist/index.js CHANGED
@@ -5,6 +5,25 @@ function cx(...parts) {
5
5
  return parts.filter(Boolean).join(" ");
6
6
  }
7
7
 
8
+ // src/marks/krizaka-geometry.ts
9
+ var KRIZAKA = {
10
+ viewBox: "0 0 400 400",
11
+ croppedViewBox: "86 82 228 228",
12
+ offset: 20,
13
+ /** The shield: a pointy-top hexagon (r 92 around 180,180), open at its upper-right edge. */
14
+ shield: "M259.7,134 L259.7,226 L180,272 L100.3,226 L100.3,134 L180,88 L212,106.5",
15
+ stroke: 22,
16
+ ink: { x1: 70, y1: 290, x2: 290, y2: 70 },
17
+ blue: { x1: 180, y1: 180, x2: 300, y2: 60, stops: [["0%", "#196df5"], ["100%", "#629cf8"]] },
18
+ /** The vertex where the shield opens: a node (the serpent's head in Orochia's grammar). */
19
+ node: { cx: 259.7, cy: 134, r: 19, inner: 6 },
20
+ core: { cx: 180, cy: 180, r: 24, inner: 8 },
21
+ highlight: "#dbeafe",
22
+ glow: { color: "#196df5", opacity: 0.16 },
23
+ orbit: { r: 160, dash: "8 8", width: 1.5 },
24
+ ring: { r: 134, width: 1 }
25
+ };
26
+
8
27
  // src/marks/shared.ts
9
28
  import { useId } from "react";
10
29
  var neutral = (token, percent) => `var(${token}, color-mix(in srgb, currentColor ${percent}%, transparent))`;
@@ -17,97 +36,103 @@ var a11y = (title) => title ? { role: "img", "aria-label": title } : { "aria-hid
17
36
  // src/marks/KrizakaLogo.tsx
18
37
  import { jsx, jsxs } from "react/jsx-runtime";
19
38
  var CSS = `
20
- .kzm-spin { transform-origin: 180px 180px; animation: kzm-spin 30s linear infinite; }
21
- .kzm-pulse { animation: kzm-pulse 4s ease-in-out infinite; }
39
+ .kzm-spin { transform-origin: 200px 200px; animation: kzm-spin 30s linear infinite; }
40
+ .kzm-pulse { transform-box: fill-box; transform-origin: center; animation: kzm-pulse 3.2s ease-in-out infinite; }
22
41
  @keyframes kzm-spin { to { transform: rotate(360deg); } }
23
42
  @keyframes kzm-pulse {
24
- 0%, 100% { filter: drop-shadow(0 0 8px hsla(217, 92%, 60%, .2)) drop-shadow(0 0 24px hsla(217, 92%, 60%, .06)); }
25
- 50% { filter: drop-shadow(0 0 12px hsla(217, 92%, 60%, .35)) drop-shadow(0 0 36px hsla(217, 92%, 60%, .12)); }
43
+ 0%, 100% { filter: drop-shadow(0 0 6px hsla(217, 92%, 53%, .25)); opacity: .9; }
44
+ 50% { filter: drop-shadow(0 0 14px hsla(217, 92%, 53%, .55)); opacity: 1; }
26
45
  }
27
46
  @media (prefers-reduced-motion: reduce) { .kzm-spin, .kzm-pulse { animation: none; } }
28
47
  `;
29
48
  function KrizakaLogo({ size = 32, animated = true, title, className }) {
30
- const id = useIds("kzm", ["blue", "steel", "core", "ambient"]);
31
- const accent = "var(--kz-accent, hsl(217, 92%, 60%))";
49
+ const id = useIds("kzm", ["ink", "blue", "glow"]);
32
50
  const m = (cls) => animated ? cls : void 0;
33
- const pulse = (x, y) => ({ className: m("kzm-pulse"), style: { transformOrigin: `${x}px ${y}px` } });
34
- return /* @__PURE__ */ jsxs("svg", { width: size, height: size, viewBox: "0 0 400 400", fill: "none", xmlns: "http://www.w3.org/2000/svg", className, ...a11y(title), children: [
51
+ return /* @__PURE__ */ jsxs("svg", { width: size, height: size, viewBox: size < 48 ? KRIZAKA.croppedViewBox : KRIZAKA.viewBox, fill: "none", xmlns: "http://www.w3.org/2000/svg", className, ...a11y(title), children: [
35
52
  /* @__PURE__ */ jsx("style", { children: CSS }),
36
53
  /* @__PURE__ */ jsxs("defs", { children: [
37
- /* @__PURE__ */ jsxs("linearGradient", { id: id.blue, x1: "0%", y1: "100%", x2: "100%", y2: "0%", children: [
38
- /* @__PURE__ */ jsx("stop", { offset: "0%", stopColor: accent }),
39
- /* @__PURE__ */ jsx("stop", { offset: "100%", stopColor: "#60A5FA" })
40
- ] }),
41
- /* @__PURE__ */ jsxs("linearGradient", { id: id.steel, x1: "0%", y1: "0%", x2: "100%", y2: "100%", children: [
42
- /* @__PURE__ */ jsx("stop", { offset: "0%", stopColor: neutral("--kz-text-secondary", 64) }),
43
- /* @__PURE__ */ jsx("stop", { offset: "100%", stopColor: neutral("--kz-text-muted", 38) })
44
- ] }),
45
- /* @__PURE__ */ jsxs("radialGradient", { id: id.core, cx: "50%", cy: "50%", r: "50%", children: [
46
- /* @__PURE__ */ jsx("stop", { offset: "0%", stopColor: "#60A5FA", stopOpacity: "1" }),
47
- /* @__PURE__ */ jsx("stop", { offset: "35%", stopColor: accent, stopOpacity: "0.7" }),
48
- /* @__PURE__ */ jsx("stop", { offset: "65%", stopColor: accent, stopOpacity: "0.02" }),
49
- /* @__PURE__ */ jsx("stop", { offset: "100%", stopColor: accent, stopOpacity: "0" })
54
+ /* @__PURE__ */ jsxs("linearGradient", { id: id.ink, gradientUnits: "userSpaceOnUse", x1: KRIZAKA.ink.x1, y1: KRIZAKA.ink.y1, x2: KRIZAKA.ink.x2, y2: KRIZAKA.ink.y2, children: [
55
+ /* @__PURE__ */ jsx("stop", { offset: "0%", stopColor: neutral("--kz-text-secondary", 60) }),
56
+ /* @__PURE__ */ jsx("stop", { offset: "100%", stopColor: neutral("--kz-text-primary", 92) })
50
57
  ] }),
51
- /* @__PURE__ */ jsxs("radialGradient", { id: id.ambient, cx: "50%", cy: "50%", r: "50%", children: [
52
- /* @__PURE__ */ jsx("stop", { offset: "0%", stopColor: accent, stopOpacity: "0.08" }),
53
- /* @__PURE__ */ jsx("stop", { offset: "100%", stopColor: accent, stopOpacity: "0" })
58
+ /* @__PURE__ */ jsx("linearGradient", { id: id.blue, gradientUnits: "userSpaceOnUse", x1: KRIZAKA.blue.x1, y1: KRIZAKA.blue.y1, x2: KRIZAKA.blue.x2, y2: KRIZAKA.blue.y2, children: KRIZAKA.blue.stops.map(([offset, color]) => /* @__PURE__ */ jsx("stop", { offset, stopColor: color }, offset)) }),
59
+ /* @__PURE__ */ jsxs("radialGradient", { id: id.glow, cx: "50%", cy: "50%", r: "50%", children: [
60
+ /* @__PURE__ */ jsx("stop", { offset: "0%", stopColor: KRIZAKA.glow.color, stopOpacity: KRIZAKA.glow.opacity }),
61
+ /* @__PURE__ */ jsx("stop", { offset: "100%", stopColor: KRIZAKA.glow.color, stopOpacity: "0" })
54
62
  ] })
55
63
  ] }),
56
- /* @__PURE__ */ jsxs("g", { transform: "translate(20, 20)", children: [
57
- /* @__PURE__ */ jsx("circle", { cx: "180", cy: "180", r: "170", fill: `url(#${id.ambient})` }),
58
- /* @__PURE__ */ jsx("circle", { cx: "180", cy: "180", r: "160", stroke: neutral("--kz-border-strong", 16), strokeWidth: "1.5", strokeDasharray: "8 8", opacity: "0.6", className: m("kzm-spin") }),
59
- /* @__PURE__ */ jsx("circle", { cx: "180", cy: "180", r: "130", stroke: neutral("--kz-border-default", 10), strokeWidth: "1", opacity: "0.35" }),
60
- /* @__PURE__ */ jsx("circle", { cx: "180", cy: "180", r: "100", stroke: neutral("--kz-border-subtle", 6), strokeWidth: "1", strokeDasharray: "3 6", opacity: "0.3" }),
61
- /* @__PURE__ */ jsx("line", { x1: "180", y1: "20", x2: "180", y2: "80", stroke: neutral("--kz-border-strong", 16), strokeWidth: "0.5", opacity: "0.2" }),
62
- /* @__PURE__ */ jsx("line", { x1: "320", y1: "100", x2: "260", y2: "140", stroke: neutral("--kz-border-strong", 16), strokeWidth: "0.5", opacity: "0.2" }),
63
- /* @__PURE__ */ jsx("line", { x1: "40", y1: "100", x2: "100", y2: "140", stroke: neutral("--kz-border-strong", 16), strokeWidth: "0.5", opacity: "0.2" }),
64
- /* @__PURE__ */ jsx("circle", { cx: "180", cy: "180", r: "55", fill: `url(#${id.core})`, ...pulse(180, 180) }),
65
- /* @__PURE__ */ jsx("path", { d: "M180,80 L255,120 L255,200 L180,240 L105,200 L105,120 Z", stroke: `url(#${id.blue})`, strokeWidth: "3", strokeLinejoin: "round", opacity: "0.9" }),
66
- /* @__PURE__ */ jsx("path", { d: "M180,105 L235,133 L235,187 L180,215 L125,187 L125,133 Z", stroke: `url(#${id.steel})`, strokeWidth: "2", strokeLinejoin: "round", opacity: "0.5" }),
67
- /* @__PURE__ */ jsx("path", { d: "M255,120 L290,85 L310,100", stroke: `url(#${id.blue})`, strokeWidth: "5", strokeLinecap: "round", strokeLinejoin: "round" }),
68
- /* @__PURE__ */ jsx("path", { d: "M105,120 L70,85 L50,100", stroke: `url(#${id.steel})`, strokeWidth: "5", strokeLinecap: "round", strokeLinejoin: "round" }),
69
- /* @__PURE__ */ jsx("path", { d: "M180,240 L180,280 L200,295", stroke: `url(#${id.steel})`, strokeWidth: "3", strokeLinecap: "round", strokeLinejoin: "round", opacity: "0.5" }),
70
- /* @__PURE__ */ jsx("path", { d: "M180,280 L160,295", stroke: `url(#${id.steel})`, strokeWidth: "3", strokeLinecap: "round", opacity: "0.5" }),
71
- /* @__PURE__ */ jsx("line", { x1: "180", y1: "130", x2: "180", y2: "195", stroke: "#60A5FA", strokeWidth: "1.5", opacity: "0.3" }),
72
- /* @__PURE__ */ jsx("line", { x1: "145", y1: "160", x2: "215", y2: "160", stroke: "#60A5FA", strokeWidth: "1.5", opacity: "0.3" }),
73
- [[180, 130], [180, 195], [145, 160], [215, 160]].map(([x, y]) => /* @__PURE__ */ jsx("circle", { cx: x, cy: y, r: "3", fill: "#60A5FA", opacity: "0.5", ...pulse(x, y) }, `${x}-${y}`)),
74
- /* @__PURE__ */ jsx("circle", { cx: "180", cy: "160", r: "18", fill: "#1E40AF", ...pulse(180, 160) }),
75
- /* @__PURE__ */ jsx("circle", { cx: "180", cy: "160", r: "12", fill: "#3B82F6", ...pulse(180, 160) }),
76
- /* @__PURE__ */ jsx("circle", { cx: "180", cy: "160", r: "5", fill: "#BFDBFE", ...pulse(180, 160) }),
77
- /* @__PURE__ */ jsx("circle", { cx: "310", cy: "50", r: "2.5", fill: "#60A5FA", opacity: "0.6" }),
78
- /* @__PURE__ */ jsx("circle", { cx: "50", cy: "260", r: "2", fill: neutral("--kz-border-strong", 16), opacity: "0.4" })
64
+ size >= 48 ? /* @__PURE__ */ jsx("circle", { cx: "200", cy: "200", r: "190", fill: `url(#${id.glow})` }) : null,
65
+ /* @__PURE__ */ jsx("circle", { className: m("kzm-spin"), cx: "200", cy: "200", r: KRIZAKA.orbit.r, stroke: neutral("--kz-border-strong", 40), strokeWidth: KRIZAKA.orbit.width, strokeDasharray: KRIZAKA.orbit.dash, opacity: ".6" }),
66
+ /* @__PURE__ */ jsx("circle", { cx: "200", cy: "200", r: KRIZAKA.ring.r, stroke: neutral("--kz-border-default", 30), strokeWidth: KRIZAKA.ring.width, opacity: ".35" }),
67
+ /* @__PURE__ */ jsxs("g", { transform: `translate(${KRIZAKA.offset} ${KRIZAKA.offset})`, children: [
68
+ /* @__PURE__ */ jsx("path", { d: KRIZAKA.shield, stroke: `url(#${id.ink})`, strokeWidth: KRIZAKA.stroke, strokeLinecap: "round", strokeLinejoin: "round" }),
69
+ /* @__PURE__ */ jsxs("g", { className: m("kzm-pulse"), children: [
70
+ /* @__PURE__ */ jsx("circle", { cx: KRIZAKA.node.cx, cy: KRIZAKA.node.cy, r: KRIZAKA.node.r, fill: `url(#${id.blue})` }),
71
+ /* @__PURE__ */ jsx("circle", { cx: KRIZAKA.node.cx, cy: KRIZAKA.node.cy, r: KRIZAKA.node.inner, fill: KRIZAKA.highlight })
72
+ ] }),
73
+ /* @__PURE__ */ jsxs("g", { className: m("kzm-pulse"), children: [
74
+ /* @__PURE__ */ jsx("circle", { cx: KRIZAKA.core.cx, cy: KRIZAKA.core.cy, r: KRIZAKA.core.r, fill: `url(#${id.blue})` }),
75
+ /* @__PURE__ */ jsx("circle", { cx: KRIZAKA.core.cx, cy: KRIZAKA.core.cy, r: KRIZAKA.core.inner, fill: KRIZAKA.highlight })
76
+ ] })
79
77
  ] })
80
78
  ] });
81
79
  }
82
80
 
81
+ // src/marks/orazaka-geometry.ts
82
+ var ORAZAKA = {
83
+ viewBox: "0 0 400 400",
84
+ croppedViewBox: "76 76 248 248",
85
+ center: 200,
86
+ /**
87
+ * The three shards — a hexagon's cap (from the original 132-unit drawing), scaled ×1.9 around the centre and turned
88
+ * 0°, 120°, 240° — in view-box coordinates, so that one gradient runs across all three.
89
+ */
90
+ shards: [
91
+ "M154.4,121.2 L200,94.7 L245.6,121.2 L245.6,154.4 L226.6,165.4 L226.6,132.2 L200,116.8 L173.4,132.2 L173.4,165.4 L154.4,154.4 Z",
92
+ "M291.1,199.9 L291.2,252.6 L245.5,278.9 L216.7,262.3 L216.6,240.3 L245.4,257 L272.1,241.6 L272,210.9 L243.2,194.3 L262.3,183.3 Z",
93
+ "M154.5,278.9 L108.8,252.6 L108.9,199.9 L137.7,183.3 L156.8,194.3 L128,210.9 L127.9,241.6 L154.6,257 L183.4,240.3 L183.3,262.3 Z"
94
+ ],
95
+ shardStroke: 5.7,
96
+ amber: { x1: 90, y1: 310, x2: 310, y2: 90, stops: [["0%", "#b45309"], ["100%", "#f59e0b"]] },
97
+ core: { r: 21, inner: 7.6 },
98
+ highlight: "#fffbeb",
99
+ glow: { color: "#f59e0b", opacity: 0.16 },
100
+ orbit: { r: 160, dash: "8 8", width: 1.5 },
101
+ ring: { r: 134, width: 1 }
102
+ };
103
+
83
104
  // src/marks/OrazakaLogo.tsx
84
105
  import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
85
106
  var CSS2 = `
86
- .ozm-orbit { transform-box: view-box; transform-origin: 0 0; animation: ozm-orbit 35s linear infinite; }
87
- .ozm-core { transform-box: fill-box; transform-origin: center; animation: ozm-core 2.5s ease-in-out infinite; }
107
+ .ozm-orbit { transform-origin: 200px 200px; animation: ozm-orbit 35s linear infinite; }
108
+ .ozm-core { transform-box: fill-box; transform-origin: center; animation: ozm-core 3.2s ease-in-out infinite; }
88
109
  @keyframes ozm-orbit { to { transform: rotate(360deg); } }
89
110
  @keyframes ozm-core {
90
- 0%, 100% { transform: scale(1); opacity: .9; filter: drop-shadow(0 0 3px #f59e0b); }
91
- 50% { transform: scale(1.15); opacity: 1; filter: drop-shadow(0 0 10px #f59e0b); }
111
+ 0%, 100% { filter: drop-shadow(0 0 6px hsla(38, 92%, 50%, .3)); opacity: .9; }
112
+ 50% { filter: drop-shadow(0 0 14px hsla(38, 92%, 50%, .6)); opacity: 1; }
92
113
  }
93
114
  @media (prefers-reduced-motion: reduce) { .ozm-orbit, .ozm-core { animation: none; } }
94
115
  `;
95
- function OrazakaLogo({ size = 28, animated = true, title, className }) {
96
- const id = useIds("ozm", ["amber"]);
97
- return /* @__PURE__ */ jsxs2("svg", { width: size, height: size, viewBox: "-66 -66 132 132", fill: "none", xmlns: "http://www.w3.org/2000/svg", className, ...a11y(title), children: [
116
+ function OrazakaLogo({ size = 32, animated = true, title, className }) {
117
+ const id = useIds("ozm", ["amber", "glow"]);
118
+ const fill = `url(#${id.amber})`;
119
+ return /* @__PURE__ */ jsxs2("svg", { width: size, height: size, viewBox: size < 48 ? ORAZAKA.croppedViewBox : ORAZAKA.viewBox, fill: "none", xmlns: "http://www.w3.org/2000/svg", className, ...a11y(title), children: [
98
120
  /* @__PURE__ */ jsx2("style", { children: CSS2 }),
99
- /* @__PURE__ */ jsx2("defs", { children: /* @__PURE__ */ jsxs2("linearGradient", { id: id.amber, x1: "0", y1: "0", x2: "1", y2: "1", children: [
100
- /* @__PURE__ */ jsx2("stop", { offset: "0%", stopColor: "#f59e0b" }),
101
- /* @__PURE__ */ jsx2("stop", { offset: "100%", stopColor: "#b45309" })
102
- ] }) }),
103
- /* @__PURE__ */ jsx2("circle", { r: "62", stroke: neutral("--kz-border-strong", 16), strokeWidth: "1.5", strokeDasharray: "6 6", opacity: "0.5" }),
104
- /* @__PURE__ */ jsx2("circle", { r: "48", stroke: neutral("--kz-border-default", 10), strokeWidth: "1", opacity: "0.3" }),
105
- /* @__PURE__ */ jsxs2("g", { className: animated ? "ozm-orbit" : void 0, children: [
106
- /* @__PURE__ */ jsx2("path", { d: "M -24 -41.5 L 0 -55.4 L 24 -41.5 L 24 -24 L 14 -18.2 L 14 -35.7 L 0 -43.8 L -14 -35.7 L -14 -18.2", stroke: neutral("--kz-text-muted", 45), strokeWidth: "3.5", strokeLinecap: "round", strokeLinejoin: "round" }),
107
- /* @__PURE__ */ jsx2("path", { d: "M -48 0 L -38 17.3 L -14 31.2 L 0 23.1 L -10 17.3 L -24 9.2 L -24 -9.2", stroke: neutral("--kz-text-secondary", 70), strokeWidth: "3.5", strokeLinecap: "round", strokeLinejoin: "round" }),
108
- /* @__PURE__ */ jsx2("path", { d: "M 48 0 L 38 17.3 L 14 31.2 L 0 23.1 L 10 17.3 L 24 9.2 L 24 -9.2", stroke: `url(#${id.amber})`, strokeWidth: "3.5", strokeLinecap: "round", strokeLinejoin: "round" })
121
+ /* @__PURE__ */ jsxs2("defs", { children: [
122
+ /* @__PURE__ */ jsx2("linearGradient", { id: id.amber, gradientUnits: "userSpaceOnUse", x1: ORAZAKA.amber.x1, y1: ORAZAKA.amber.y1, x2: ORAZAKA.amber.x2, y2: ORAZAKA.amber.y2, children: ORAZAKA.amber.stops.map(([offset, color]) => /* @__PURE__ */ jsx2("stop", { offset, stopColor: color }, offset)) }),
123
+ /* @__PURE__ */ jsxs2("radialGradient", { id: id.glow, cx: "50%", cy: "50%", r: "50%", children: [
124
+ /* @__PURE__ */ jsx2("stop", { offset: "0%", stopColor: ORAZAKA.glow.color, stopOpacity: ORAZAKA.glow.opacity }),
125
+ /* @__PURE__ */ jsx2("stop", { offset: "100%", stopColor: ORAZAKA.glow.color, stopOpacity: "0" })
126
+ ] })
109
127
  ] }),
110
- /* @__PURE__ */ jsx2("circle", { r: "10", fill: `url(#${id.amber})`, className: animated ? "ozm-core" : void 0 })
128
+ size >= 48 ? /* @__PURE__ */ jsx2("circle", { cx: ORAZAKA.center, cy: ORAZAKA.center, r: "190", fill: `url(#${id.glow})` }) : null,
129
+ /* @__PURE__ */ jsx2("circle", { cx: ORAZAKA.center, cy: ORAZAKA.center, r: ORAZAKA.orbit.r, stroke: neutral("--kz-border-strong", 40), strokeWidth: ORAZAKA.orbit.width, strokeDasharray: ORAZAKA.orbit.dash, opacity: ".6" }),
130
+ /* @__PURE__ */ jsx2("circle", { cx: ORAZAKA.center, cy: ORAZAKA.center, r: ORAZAKA.ring.r, stroke: neutral("--kz-border-default", 30), strokeWidth: ORAZAKA.ring.width, opacity: ".35" }),
131
+ /* @__PURE__ */ jsx2("g", { className: animated ? "ozm-orbit" : void 0, children: ORAZAKA.shards.map((d) => /* @__PURE__ */ jsx2("path", { d, fill, stroke: fill, strokeWidth: ORAZAKA.shardStroke, strokeLinejoin: "round" }, d)) }),
132
+ /* @__PURE__ */ jsxs2("g", { className: animated ? "ozm-core" : void 0, children: [
133
+ /* @__PURE__ */ jsx2("circle", { cx: ORAZAKA.center, cy: ORAZAKA.center, r: ORAZAKA.core.r, fill }),
134
+ /* @__PURE__ */ jsx2("circle", { cx: ORAZAKA.center, cy: ORAZAKA.center, r: ORAZAKA.core.inner, fill: ORAZAKA.highlight })
135
+ ] })
111
136
  ] });
112
137
  }
113
138
 
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/cx.ts","../src/marks/shared.ts","../src/marks/KrizakaLogo.tsx","../src/marks/OrazakaLogo.tsx","../src/marks/orochia-geometry.ts","../src/marks/OrochiaLogo.tsx","../src/marks/ProductLogo.tsx","../src/motion/MotionObserver.tsx","../src/motion/RotatingWord.tsx"],"sourcesContent":["/** Joins class names, skipping the falsy ones. */\nexport function cx(...parts: Array<string | false | null | undefined>): string {\n return parts.filter(Boolean).join(\" \");\n}\n","import { useId } from \"react\";\n\nexport interface MarkProps {\n /** Width and height in pixels. */\n size?: number;\n /** Orbit, pulse and shimmer. Off with `false`; always off under prefers-reduced-motion. */\n animated?: boolean;\n /** An accessible name (the mark becomes an image); without it the mark is decorative. */\n title?: string;\n className?: string;\n}\n\n/** A neutral stroke: the host's `--kz-*` token when it has one, else the text colour at a low opacity. */\nexport const neutral = (token: string, percent: number) => `var(${token}, color-mix(in srgb, currentColor ${percent}%, transparent))`;\n\n/** Ids unique per instance, so several marks on a page never share a gradient. */\nexport function useIds<K extends string>(prefix: string, keys: readonly K[]): Record<K, string> {\n const uid = useId().replace(/[^a-zA-Z0-9_-]/g, \"\");\n return Object.fromEntries(keys.map((k) => [k, `${prefix}-${k}-${uid}`])) as Record<K, string>;\n}\n\nexport const a11y = (title?: string) => (title ? { role: \"img\" as const, \"aria-label\": title } : { \"aria-hidden\": true as const });\n","import { a11y, type MarkProps, neutral, useIds } from \"./shared\";\n\nconst CSS = `\n.kzm-spin { transform-origin: 180px 180px; animation: kzm-spin 30s linear infinite; }\n.kzm-pulse { animation: kzm-pulse 4s ease-in-out infinite; }\n@keyframes kzm-spin { to { transform: rotate(360deg); } }\n@keyframes kzm-pulse {\n 0%, 100% { filter: drop-shadow(0 0 8px hsla(217, 92%, 60%, .2)) drop-shadow(0 0 24px hsla(217, 92%, 60%, .06)); }\n 50% { filter: drop-shadow(0 0 12px hsla(217, 92%, 60%, .35)) drop-shadow(0 0 36px hsla(217, 92%, 60%, .12)); }\n}\n@media (prefers-reduced-motion: reduce) { .kzm-spin, .kzm-pulse { animation: none; } }\n`;\n\n/** The Krizaka mark: a hexagonal shield with a neural core, inside slow orbits. Blue accent: `--kz-accent`. */\nexport function KrizakaLogo({ size = 32, animated = true, title, className }: MarkProps) {\n const id = useIds(\"kzm\", [\"blue\", \"steel\", \"core\", \"ambient\"] as const);\n const accent = \"var(--kz-accent, hsl(217, 92%, 60%))\";\n const m = (cls: string) => (animated ? cls : undefined);\n const pulse = (x: number, y: number) => ({ className: m(\"kzm-pulse\"), style: { transformOrigin: `${x}px ${y}px` } });\n return (\n <svg width={size} height={size} viewBox=\"0 0 400 400\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className={className} {...a11y(title)}>\n <style>{CSS}</style>\n <defs>\n <linearGradient id={id.blue} x1=\"0%\" y1=\"100%\" x2=\"100%\" y2=\"0%\">\n <stop offset=\"0%\" stopColor={accent} />\n <stop offset=\"100%\" stopColor=\"#60A5FA\" />\n </linearGradient>\n <linearGradient id={id.steel} x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"100%\">\n <stop offset=\"0%\" stopColor={neutral(\"--kz-text-secondary\", 64)} />\n <stop offset=\"100%\" stopColor={neutral(\"--kz-text-muted\", 38)} />\n </linearGradient>\n <radialGradient id={id.core} cx=\"50%\" cy=\"50%\" r=\"50%\">\n <stop offset=\"0%\" stopColor=\"#60A5FA\" stopOpacity=\"1\" />\n <stop offset=\"35%\" stopColor={accent} stopOpacity=\"0.7\" />\n <stop offset=\"65%\" stopColor={accent} stopOpacity=\"0.02\" />\n <stop offset=\"100%\" stopColor={accent} stopOpacity=\"0\" />\n </radialGradient>\n <radialGradient id={id.ambient} cx=\"50%\" cy=\"50%\" r=\"50%\">\n <stop offset=\"0%\" stopColor={accent} stopOpacity=\"0.08\" />\n <stop offset=\"100%\" stopColor={accent} stopOpacity=\"0\" />\n </radialGradient>\n </defs>\n <g transform=\"translate(20, 20)\">\n <circle cx=\"180\" cy=\"180\" r=\"170\" fill={`url(#${id.ambient})`} />\n <circle cx=\"180\" cy=\"180\" r=\"160\" stroke={neutral(\"--kz-border-strong\", 16)} strokeWidth=\"1.5\" strokeDasharray=\"8 8\" opacity=\"0.6\" className={m(\"kzm-spin\")} />\n <circle cx=\"180\" cy=\"180\" r=\"130\" stroke={neutral(\"--kz-border-default\", 10)} strokeWidth=\"1\" opacity=\"0.35\" />\n <circle cx=\"180\" cy=\"180\" r=\"100\" stroke={neutral(\"--kz-border-subtle\", 6)} strokeWidth=\"1\" strokeDasharray=\"3 6\" opacity=\"0.3\" />\n <line x1=\"180\" y1=\"20\" x2=\"180\" y2=\"80\" stroke={neutral(\"--kz-border-strong\", 16)} strokeWidth=\"0.5\" opacity=\"0.2\" />\n <line x1=\"320\" y1=\"100\" x2=\"260\" y2=\"140\" stroke={neutral(\"--kz-border-strong\", 16)} strokeWidth=\"0.5\" opacity=\"0.2\" />\n <line x1=\"40\" y1=\"100\" x2=\"100\" y2=\"140\" stroke={neutral(\"--kz-border-strong\", 16)} strokeWidth=\"0.5\" opacity=\"0.2\" />\n <circle cx=\"180\" cy=\"180\" r=\"55\" fill={`url(#${id.core})`} {...pulse(180, 180)} />\n <path d=\"M180,80 L255,120 L255,200 L180,240 L105,200 L105,120 Z\" stroke={`url(#${id.blue})`} strokeWidth=\"3\" strokeLinejoin=\"round\" opacity=\"0.9\" />\n <path d=\"M180,105 L235,133 L235,187 L180,215 L125,187 L125,133 Z\" stroke={`url(#${id.steel})`} strokeWidth=\"2\" strokeLinejoin=\"round\" opacity=\"0.5\" />\n <path d=\"M255,120 L290,85 L310,100\" stroke={`url(#${id.blue})`} strokeWidth=\"5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n <path d=\"M105,120 L70,85 L50,100\" stroke={`url(#${id.steel})`} strokeWidth=\"5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n <path d=\"M180,240 L180,280 L200,295\" stroke={`url(#${id.steel})`} strokeWidth=\"3\" strokeLinecap=\"round\" strokeLinejoin=\"round\" opacity=\"0.5\" />\n <path d=\"M180,280 L160,295\" stroke={`url(#${id.steel})`} strokeWidth=\"3\" strokeLinecap=\"round\" opacity=\"0.5\" />\n <line x1=\"180\" y1=\"130\" x2=\"180\" y2=\"195\" stroke=\"#60A5FA\" strokeWidth=\"1.5\" opacity=\"0.3\" />\n <line x1=\"145\" y1=\"160\" x2=\"215\" y2=\"160\" stroke=\"#60A5FA\" strokeWidth=\"1.5\" opacity=\"0.3\" />\n {[[180, 130], [180, 195], [145, 160], [215, 160]].map(([x, y]) => (\n <circle key={`${x}-${y}`} cx={x} cy={y} r=\"3\" fill=\"#60A5FA\" opacity=\"0.5\" {...pulse(x, y)} />\n ))}\n <circle cx=\"180\" cy=\"160\" r=\"18\" fill=\"#1E40AF\" {...pulse(180, 160)} />\n <circle cx=\"180\" cy=\"160\" r=\"12\" fill=\"#3B82F6\" {...pulse(180, 160)} />\n <circle cx=\"180\" cy=\"160\" r=\"5\" fill=\"#BFDBFE\" {...pulse(180, 160)} />\n <circle cx=\"310\" cy=\"50\" r=\"2.5\" fill=\"#60A5FA\" opacity=\"0.6\" />\n <circle cx=\"50\" cy=\"260\" r=\"2\" fill={neutral(\"--kz-border-strong\", 16)} opacity=\"0.4\" />\n </g>\n </svg>\n );\n}\n","import { a11y, type MarkProps, neutral, useIds } from \"./shared\";\n\nconst CSS = `\n.ozm-orbit { transform-box: view-box; transform-origin: 0 0; animation: ozm-orbit 35s linear infinite; }\n.ozm-core { transform-box: fill-box; transform-origin: center; animation: ozm-core 2.5s ease-in-out infinite; }\n@keyframes ozm-orbit { to { transform: rotate(360deg); } }\n@keyframes ozm-core {\n 0%, 100% { transform: scale(1); opacity: .9; filter: drop-shadow(0 0 3px #f59e0b); }\n 50% { transform: scale(1.15); opacity: 1; filter: drop-shadow(0 0 10px #f59e0b); }\n}\n@media (prefers-reduced-motion: reduce) { .ozm-orbit, .ozm-core { animation: none; } }\n`;\n\n/** The Orazaka mark: three shards orbiting slowly around an amber core that breathes. */\nexport function OrazakaLogo({ size = 28, animated = true, title, className }: MarkProps) {\n const id = useIds(\"ozm\", [\"amber\"] as const);\n return (\n <svg width={size} height={size} viewBox=\"-66 -66 132 132\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className={className} {...a11y(title)}>\n <style>{CSS}</style>\n <defs>\n <linearGradient id={id.amber} x1=\"0\" y1=\"0\" x2=\"1\" y2=\"1\">\n <stop offset=\"0%\" stopColor=\"#f59e0b\" />\n <stop offset=\"100%\" stopColor=\"#b45309\" />\n </linearGradient>\n </defs>\n <circle r=\"62\" stroke={neutral(\"--kz-border-strong\", 16)} strokeWidth=\"1.5\" strokeDasharray=\"6 6\" opacity=\"0.5\" />\n <circle r=\"48\" stroke={neutral(\"--kz-border-default\", 10)} strokeWidth=\"1\" opacity=\"0.3\" />\n <g className={animated ? \"ozm-orbit\" : undefined}>\n <path d=\"M -24 -41.5 L 0 -55.4 L 24 -41.5 L 24 -24 L 14 -18.2 L 14 -35.7 L 0 -43.8 L -14 -35.7 L -14 -18.2\" stroke={neutral(\"--kz-text-muted\", 45)} strokeWidth=\"3.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n <path d=\"M -48 0 L -38 17.3 L -14 31.2 L 0 23.1 L -10 17.3 L -24 9.2 L -24 -9.2\" stroke={neutral(\"--kz-text-secondary\", 70)} strokeWidth=\"3.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n <path d=\"M 48 0 L 38 17.3 L 14 31.2 L 0 23.1 L 10 17.3 L 24 9.2 L 24 -9.2\" stroke={`url(#${id.amber})`} strokeWidth=\"3.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </g>\n <circle r=\"10\" fill={`url(#${id.amber})`} className={animated ? \"ozm-core\" : undefined} />\n </svg>\n );\n}\n","/**\n * The Orochia mark's geometry — the one description of the serpent and its flame, drawn by the web mark (SVG in the\n * DOM, OrochiaLogo) and the native one (react-native-svg, @krizaka/ui/native). Coordinates are in the 360×360 artwork,\n * placed at (20, 20) in a 400×400 view box; below 48 px the view box crops to the serpent.\n */\nexport const OROCHIA = {\n viewBox: \"0 0 400 400\",\n croppedViewBox: \"86 82 228 228\",\n offset: 20,\n body: { x1: 70, y1: 290, x2: 290, y2: 70, stops: [[\"0%\", \"#7c3aed\"], [\"55%\", \"#d946ef\"], [\"100%\", \"#f472b6\"]] },\n flameGradient: { stops: [[\"0%\", \"#a855f7\"], [\"100%\", \"#f9a8d4\"]] },\n glow: { color: \"#d946ef\", opacity: 0.18 },\n orbit: { r: 160, dash: \"8 8\", width: 1.5 },\n ring: { r: 134, width: 1 },\n arc: \"M259.8,142.8 A88,88 0 1 1 142.8,100.2\",\n neck: \"M142.8,100.2 A88,88 0 0 1 187.7,92.3\",\n tail: \"M187.7,92.3 A88,88 0 0 1 221.3,102.3\",\n scales: { color: \"#fdf4ff\", opacity: 0.45, width: 3, dash: \"2 14\" },\n head: { cx: 253.9, cy: 130.1, rx: 13, ry: 20, rotate: -25 },\n tongue: { d: \"M245.4,112.0 L242.0,104.8 L235.0,101.5 M242.0,104.8 L244.0,97.3\", color: \"#f472b6\" },\n eye: { cx: 256.3, cy: 123.5, r: 4.5, color: \"#fdf4ff\" },\n flame: {\n translate: [127, 120] as const,\n scale: 4.4,\n d: \"M8.5 14.5A2.5 2.5 0 0 0 11 12c0-1.38-.5-2-1-3-1.072-2.143-.224-4.054 2-6 .5 2.5 2 4.9 4 6.5 2 1.6 3 3.5 3 5.5a7 7 0 1 1-14 0c0-1.153.433-2.294 1-3a2.5 2.5 0 0 0 2.5 2.5z\",\n },\n} as const;\n","import { OROCHIA as G } from \"./orochia-geometry\";\nimport { a11y, type MarkProps, neutral, useIds } from \"./shared\";\n\nconst CSS = `\n.orom-spin { transform-origin: 180px 180px; animation: orom-spin 30s linear infinite; }\n.orom-slither { animation: orom-slither 2.4s linear infinite; }\n.orom-pulse { transform-box: view-box; animation: orom-pulse 3.2s ease-in-out infinite; }\n@keyframes orom-spin { to { transform: rotate(360deg); } }\n@keyframes orom-slither { to { stroke-dashoffset: -64; } }\n@keyframes orom-pulse {\n 0%, 100% { filter: drop-shadow(0 0 6px hsla(292, 84%, 61%, .25)); opacity: .9; }\n 50% { filter: drop-shadow(0 0 14px hsla(292, 84%, 61%, .55)); opacity: 1; }\n}\n@media (prefers-reduced-motion: reduce) { .orom-spin, .orom-slither, .orom-pulse { animation: none; } }\n`;\n\n/**\n * The Orochia mark: the serpent (Orochi) coiled into an \"O\" around the flame it guards. The orbit turns, scales slide\n * along the body, the eye and the flame breathe. Below 48 px it crops to the serpent: the orbits would be hairlines.\n */\nexport function OrochiaLogo({ size = 36, animated = true, title, className }: MarkProps) {\n const id = useIds(\"orom\", [\"body\", \"flame\", \"glow\"] as const);\n const m = (cls: string) => (animated ? cls : undefined);\n return (\n <svg width={size} height={size} viewBox={size < 48 ? G.croppedViewBox : G.viewBox} fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className={className} {...a11y(title)}>\n <style>{CSS}</style>\n <defs>\n <linearGradient id={id.body} gradientUnits=\"userSpaceOnUse\" x1={G.body.x1} y1={G.body.y1} x2={G.body.x2} y2={G.body.y2}>\n {G.body.stops.map(([offset, color]) => (\n <stop key={offset} offset={offset} stopColor={color} />\n ))}\n </linearGradient>\n <linearGradient id={id.flame} x1=\"50%\" y1=\"100%\" x2=\"50%\" y2=\"0%\">\n {G.flameGradient.stops.map(([offset, color]) => (\n <stop key={offset} offset={offset} stopColor={color} />\n ))}\n </linearGradient>\n <radialGradient id={id.glow} cx=\"50%\" cy=\"50%\" r=\"50%\">\n <stop offset=\"0%\" stopColor={G.glow.color} stopOpacity={G.glow.opacity} />\n <stop offset=\"100%\" stopColor={G.glow.color} stopOpacity=\"0\" />\n </radialGradient>\n </defs>\n <g transform={`translate(${G.offset} ${G.offset})`}>\n <circle cx=\"180\" cy=\"180\" r=\"170\" fill={`url(#${id.glow})`} />\n <circle className={m(\"orom-spin\")} cx=\"180\" cy=\"180\" r={G.orbit.r} stroke={neutral(\"--kz-border-strong\", 40)} strokeWidth={G.orbit.width} strokeDasharray={G.orbit.dash} opacity=\".6\" />\n <circle cx=\"180\" cy=\"180\" r={G.ring.r} stroke={neutral(\"--kz-border-default\", 30)} strokeWidth={G.ring.width} opacity=\".35\" />\n <path d={G.arc} stroke={`url(#${id.body})`} strokeWidth=\"22\" strokeLinecap=\"round\" />\n <path className={m(\"orom-slither\")} d={G.arc} stroke={G.scales.color} strokeOpacity={G.scales.opacity} strokeWidth={G.scales.width} strokeLinecap=\"round\" strokeDasharray={G.scales.dash} />\n <path d={G.neck} stroke={`url(#${id.body})`} strokeWidth=\"14\" strokeLinecap=\"round\" />\n <path d={G.tail} stroke={`url(#${id.body})`} strokeWidth=\"6\" strokeLinecap=\"round\" />\n <ellipse cx={G.head.cx} cy={G.head.cy} rx={G.head.rx} ry={G.head.ry} transform={`rotate(${G.head.rotate} ${G.head.cx} ${G.head.cy})`} fill={`url(#${id.body})`} />\n <path d={G.tongue.d} stroke={G.tongue.color} strokeWidth=\"3\" strokeLinecap=\"round\" />\n <circle className={m(\"orom-pulse\")} cx={G.eye.cx} cy={G.eye.cy} r={G.eye.r} fill={G.eye.color} />\n <path className={m(\"orom-pulse\")} transform={`translate(${G.flame.translate[0]} ${G.flame.translate[1]}) scale(${G.flame.scale})`} d={G.flame.d} fill={`url(#${id.flame})`} />\n </g>\n </svg>\n );\n}\n","import { KrizakaLogo } from \"./KrizakaLogo\";\nimport { OrazakaLogo } from \"./OrazakaLogo\";\nimport { OrochiaLogo } from \"./OrochiaLogo\";\nimport type { MarkProps } from \"./shared\";\n\nexport type BrandId = \"krizaka\" | \"orazaka\" | \"orochia\";\n\n/** The mark of a Krizaka brand by id — for navigation, cards and lists driven by data. */\nexport function ProductLogo({ id, ...props }: MarkProps & { id: BrandId }) {\n if (id === \"krizaka\") return <KrizakaLogo {...props} />;\n if (id === \"orazaka\") return <OrazakaLogo {...props} />;\n return <OrochiaLogo {...props} />;\n}\n","import { useEffect } from \"react\";\n\n/**\n * Mount once at the root of the app. It reveals every `[data-reveal]` element as it enters the viewport — including\n * elements added later, so client-side navigation needs nothing more — and feeds the pointer position to\n * `.kz-spotlight` cards (`--spot-x`, `--spot-y`). One IntersectionObserver, one MutationObserver, one listener.\n * Under prefers-reduced-motion everything is revealed at once.\n */\nexport function MotionObserver(): null {\n useEffect(() => {\n if (window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches) {\n const revealAll = (root: ParentNode) => root.querySelectorAll(\"[data-reveal]\").forEach((el) => el.classList.add(\"kz-in\"));\n revealAll(document);\n const mo = new MutationObserver(() => revealAll(document));\n mo.observe(document.body, { childList: true, subtree: true });\n return () => mo.disconnect();\n }\n const io = new IntersectionObserver(\n (entries) => {\n for (const entry of entries) {\n if (!entry.isIntersecting) continue;\n entry.target.classList.add(\"kz-in\");\n io.unobserve(entry.target);\n }\n },\n { rootMargin: \"0px 0px -8% 0px\", threshold: 0.12 },\n );\n const watch = (root: ParentNode) => root.querySelectorAll(\"[data-reveal]:not(.kz-in)\").forEach((el) => io.observe(el));\n watch(document);\n const mo = new MutationObserver((records) => {\n for (const r of records) r.addedNodes.forEach((n) => n instanceof Element && (n.matches(\"[data-reveal]\") ? io.observe(n) : watch(n)));\n });\n mo.observe(document.body, { childList: true, subtree: true });\n return () => {\n io.disconnect();\n mo.disconnect();\n };\n }, []);\n\n useEffect(() => {\n const move = (e: PointerEvent) => {\n const card = (e.target as Element | null)?.closest?.(\".kz-spotlight\") as HTMLElement | null;\n if (!card) return;\n const box = card.getBoundingClientRect();\n card.style.setProperty(\"--spot-x\", `${e.clientX - box.left}px`);\n card.style.setProperty(\"--spot-y\", `${e.clientY - box.top}px`);\n };\n document.addEventListener(\"pointermove\", move, { passive: true });\n return () => document.removeEventListener(\"pointermove\", move);\n }, []);\n\n return null;\n}\n","import { useEffect, useState } from \"react\";\n\nimport { cx } from \"../cx\";\n\n/**\n * A word that rolls through alternatives — the Krizaka headline signature. The server render and the first client\n * render show the first word; under prefers-reduced-motion it stays put. Decorative (`aria-hidden`): give the\n * heading a stable accessible label.\n */\nexport function RotatingWord({ words, interval = 2600, className }: { words: readonly string[]; interval?: number; className?: string }) {\n const [i, setI] = useState(0);\n useEffect(() => {\n if (words.length < 2 || window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches) return;\n const timer = setInterval(() => setI((k) => (k + 1) % words.length), interval);\n return () => clearInterval(timer);\n }, [words.length, interval]);\n return (\n <span aria-hidden className=\"kz-rotating\">\n <span key={i} className={cx(\"kz-word\", className)}>\n {words[i]}\n </span>\n </span>\n );\n}\n"],"mappings":"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","names":["jsx","jsxs","CSS","jsx","jsxs","CSS","jsx","mo","useEffect","jsx","useEffect"]}
1
+ {"version":3,"sources":["../src/cx.ts","../src/marks/krizaka-geometry.ts","../src/marks/shared.ts","../src/marks/KrizakaLogo.tsx","../src/marks/orazaka-geometry.ts","../src/marks/OrazakaLogo.tsx","../src/marks/orochia-geometry.ts","../src/marks/OrochiaLogo.tsx","../src/marks/ProductLogo.tsx","../src/motion/MotionObserver.tsx","../src/motion/RotatingWord.tsx"],"sourcesContent":["/** Joins class names, skipping the falsy ones. */\nexport function cx(...parts: Array<string | false | null | undefined>): string {\n return parts.filter(Boolean).join(\" \");\n}\n","/**\n * The Krizaka mark's geometry — the one description drawn by the web mark (KrizakaLogo) and the native one\n * (KrizakaMark). Built on the Orochia mark's grammar (docs: packages/tokens/BRAND.md, \"Marks\"): a 360×360 artwork at\n * (20, 20) in a 400×400 view box, one bold stroke (22) drawn as an open figure, an end that breaks out as a node, a\n * core, a dashed orbit and a ring; below 48 px the view box crops to the emblem.\n *\n * Krizaka is the parent: the hexagonal shield is **ink** (the host's text roles), the node and the core carry the\n * Krizaka blue (the accent of @krizaka/tokens, krizaka brand: hsl(217 92% 53%) → its text tint hsl(217 92% 68%)).\n */\nexport const KRIZAKA = {\n viewBox: \"0 0 400 400\",\n croppedViewBox: \"86 82 228 228\",\n offset: 20,\n /** The shield: a pointy-top hexagon (r 92 around 180,180), open at its upper-right edge. */\n shield: \"M259.7,134 L259.7,226 L180,272 L100.3,226 L100.3,134 L180,88 L212,106.5\",\n stroke: 22,\n ink: { x1: 70, y1: 290, x2: 290, y2: 70 },\n blue: { x1: 180, y1: 180, x2: 300, y2: 60, stops: [[\"0%\", \"#196df5\"], [\"100%\", \"#629cf8\"]] },\n /** The vertex where the shield opens: a node (the serpent's head in Orochia's grammar). */\n node: { cx: 259.7, cy: 134, r: 19, inner: 6 },\n core: { cx: 180, cy: 180, r: 24, inner: 8 },\n highlight: \"#dbeafe\",\n glow: { color: \"#196df5\", opacity: 0.16 },\n orbit: { r: 160, dash: \"8 8\", width: 1.5 },\n ring: { r: 134, width: 1 },\n} as const;\n","import { useId } from \"react\";\n\nexport interface MarkProps {\n /** Width and height in pixels. */\n size?: number;\n /** Orbit, pulse and shimmer. Off with `false`; always off under prefers-reduced-motion. */\n animated?: boolean;\n /** An accessible name (the mark becomes an image); without it the mark is decorative. */\n title?: string;\n className?: string;\n}\n\n/** A neutral stroke: the host's `--kz-*` token when it has one, else the text colour at a low opacity. */\nexport const neutral = (token: string, percent: number) => `var(${token}, color-mix(in srgb, currentColor ${percent}%, transparent))`;\n\n/** Ids unique per instance, so several marks on a page never share a gradient. */\nexport function useIds<K extends string>(prefix: string, keys: readonly K[]): Record<K, string> {\n const uid = useId().replace(/[^a-zA-Z0-9_-]/g, \"\");\n return Object.fromEntries(keys.map((k) => [k, `${prefix}-${k}-${uid}`])) as Record<K, string>;\n}\n\nexport const a11y = (title?: string) => (title ? { role: \"img\" as const, \"aria-label\": title } : { \"aria-hidden\": true as const });\n","import { KRIZAKA as G } from \"./krizaka-geometry\";\nimport { a11y, type MarkProps, neutral, useIds } from \"./shared\";\n\nconst CSS = `\n.kzm-spin { transform-origin: 200px 200px; animation: kzm-spin 30s linear infinite; }\n.kzm-pulse { transform-box: fill-box; transform-origin: center; animation: kzm-pulse 3.2s ease-in-out infinite; }\n@keyframes kzm-spin { to { transform: rotate(360deg); } }\n@keyframes kzm-pulse {\n 0%, 100% { filter: drop-shadow(0 0 6px hsla(217, 92%, 53%, .25)); opacity: .9; }\n 50% { filter: drop-shadow(0 0 14px hsla(217, 92%, 53%, .55)); opacity: 1; }\n}\n@media (prefers-reduced-motion: reduce) { .kzm-spin, .kzm-pulse { animation: none; } }\n`;\n\n/**\n * The Krizaka mark: an ink hexagonal shield, open at one vertex where a blue node breaks out, around a blue core —\n * the parent of the family (Orochia's coiled serpent, Orazaka's shards). The orbit turns, the node and the core\n * breathe. The shield reads the host's text roles, so it is ink in both themes. Below 48 px it crops to the emblem.\n */\nexport function KrizakaLogo({ size = 32, animated = true, title, className }: MarkProps) {\n const id = useIds(\"kzm\", [\"ink\", \"blue\", \"glow\"] as const);\n const m = (cls: string) => (animated ? cls : undefined);\n return (\n <svg width={size} height={size} viewBox={size < 48 ? G.croppedViewBox : G.viewBox} fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className={className} {...a11y(title)}>\n <style>{CSS}</style>\n <defs>\n <linearGradient id={id.ink} gradientUnits=\"userSpaceOnUse\" x1={G.ink.x1} y1={G.ink.y1} x2={G.ink.x2} y2={G.ink.y2}>\n <stop offset=\"0%\" stopColor={neutral(\"--kz-text-secondary\", 60)} />\n <stop offset=\"100%\" stopColor={neutral(\"--kz-text-primary\", 92)} />\n </linearGradient>\n <linearGradient id={id.blue} gradientUnits=\"userSpaceOnUse\" x1={G.blue.x1} y1={G.blue.y1} x2={G.blue.x2} y2={G.blue.y2}>\n {G.blue.stops.map(([offset, color]) => (\n <stop key={offset} offset={offset} stopColor={color} />\n ))}\n </linearGradient>\n <radialGradient id={id.glow} cx=\"50%\" cy=\"50%\" r=\"50%\">\n <stop offset=\"0%\" stopColor={G.glow.color} stopOpacity={G.glow.opacity} />\n <stop offset=\"100%\" stopColor={G.glow.color} stopOpacity=\"0\" />\n </radialGradient>\n </defs>\n {size >= 48 ? <circle cx=\"200\" cy=\"200\" r=\"190\" fill={`url(#${id.glow})`} /> : null /* cropped: the halo would show its square */}\n <circle className={m(\"kzm-spin\")} cx=\"200\" cy=\"200\" r={G.orbit.r} stroke={neutral(\"--kz-border-strong\", 40)} strokeWidth={G.orbit.width} strokeDasharray={G.orbit.dash} opacity=\".6\" />\n <circle cx=\"200\" cy=\"200\" r={G.ring.r} stroke={neutral(\"--kz-border-default\", 30)} strokeWidth={G.ring.width} opacity=\".35\" />\n <g transform={`translate(${G.offset} ${G.offset})`}>\n <path d={G.shield} stroke={`url(#${id.ink})`} strokeWidth={G.stroke} strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n <g className={m(\"kzm-pulse\")}>\n <circle cx={G.node.cx} cy={G.node.cy} r={G.node.r} fill={`url(#${id.blue})`} />\n <circle cx={G.node.cx} cy={G.node.cy} r={G.node.inner} fill={G.highlight} />\n </g>\n <g className={m(\"kzm-pulse\")}>\n <circle cx={G.core.cx} cy={G.core.cy} r={G.core.r} fill={`url(#${id.blue})`} />\n <circle cx={G.core.cx} cy={G.core.cy} r={G.core.inner} fill={G.highlight} />\n </g>\n </g>\n </svg>\n );\n}\n","/**\n * The Orazaka mark's geometry — drawn by the web mark (OrazakaLogo) and the native one (OrazakaMark). The same\n * grammar as Orochia and Krizaka (packages/tokens/BRAND.md, \"Marks\"): 400×400 view box, dashed orbit and ring, a bold\n * emblem in the brand gradient, a bright core; below 48 px the view box crops to the emblem.\n *\n * The emblem keeps the original idea — three hexagonal shards orbiting a core — drawn as solid shards (the weight of\n * Orochia's body) in the logo's own orange: #b45309 → #f59e0b, the stops the Orazaka brand theme is built from.\n */\nexport const ORAZAKA = {\n viewBox: \"0 0 400 400\",\n croppedViewBox: \"76 76 248 248\",\n center: 200,\n /**\n * The three shards — a hexagon's cap (from the original 132-unit drawing), scaled ×1.9 around the centre and turned\n * 0°, 120°, 240° — in view-box coordinates, so that one gradient runs across all three.\n */\n shards: [\n \"M154.4,121.2 L200,94.7 L245.6,121.2 L245.6,154.4 L226.6,165.4 L226.6,132.2 L200,116.8 L173.4,132.2 L173.4,165.4 L154.4,154.4 Z\",\n \"M291.1,199.9 L291.2,252.6 L245.5,278.9 L216.7,262.3 L216.6,240.3 L245.4,257 L272.1,241.6 L272,210.9 L243.2,194.3 L262.3,183.3 Z\",\n \"M154.5,278.9 L108.8,252.6 L108.9,199.9 L137.7,183.3 L156.8,194.3 L128,210.9 L127.9,241.6 L154.6,257 L183.4,240.3 L183.3,262.3 Z\",\n ],\n shardStroke: 5.7,\n amber: { x1: 90, y1: 310, x2: 310, y2: 90, stops: [[\"0%\", \"#b45309\"], [\"100%\", \"#f59e0b\"]] },\n core: { r: 21, inner: 7.6 },\n highlight: \"#fffbeb\",\n glow: { color: \"#f59e0b\", opacity: 0.16 },\n orbit: { r: 160, dash: \"8 8\", width: 1.5 },\n ring: { r: 134, width: 1 },\n} as const;\n","import { ORAZAKA as G } from \"./orazaka-geometry\";\nimport { a11y, type MarkProps, neutral, useIds } from \"./shared\";\n\nconst CSS = `\n.ozm-orbit { transform-origin: 200px 200px; animation: ozm-orbit 35s linear infinite; }\n.ozm-core { transform-box: fill-box; transform-origin: center; animation: ozm-core 3.2s ease-in-out infinite; }\n@keyframes ozm-orbit { to { transform: rotate(360deg); } }\n@keyframes ozm-core {\n 0%, 100% { filter: drop-shadow(0 0 6px hsla(38, 92%, 50%, .3)); opacity: .9; }\n 50% { filter: drop-shadow(0 0 14px hsla(38, 92%, 50%, .6)); opacity: 1; }\n}\n@media (prefers-reduced-motion: reduce) { .ozm-orbit, .ozm-core { animation: none; } }\n`;\n\n/**\n * The Orazaka mark: three solid hexagonal shards in the Orazaka orange orbiting slowly around a core that breathes —\n * the family's grammar (dashed orbit, ring, bold emblem, bright core). Below 48 px it crops to the emblem.\n */\nexport function OrazakaLogo({ size = 32, animated = true, title, className }: MarkProps) {\n const id = useIds(\"ozm\", [\"amber\", \"glow\"] as const);\n const fill = `url(#${id.amber})`;\n return (\n <svg width={size} height={size} viewBox={size < 48 ? G.croppedViewBox : G.viewBox} fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className={className} {...a11y(title)}>\n <style>{CSS}</style>\n <defs>\n <linearGradient id={id.amber} gradientUnits=\"userSpaceOnUse\" x1={G.amber.x1} y1={G.amber.y1} x2={G.amber.x2} y2={G.amber.y2}>\n {G.amber.stops.map(([offset, color]) => (\n <stop key={offset} offset={offset} stopColor={color} />\n ))}\n </linearGradient>\n <radialGradient id={id.glow} cx=\"50%\" cy=\"50%\" r=\"50%\">\n <stop offset=\"0%\" stopColor={G.glow.color} stopOpacity={G.glow.opacity} />\n <stop offset=\"100%\" stopColor={G.glow.color} stopOpacity=\"0\" />\n </radialGradient>\n </defs>\n {size >= 48 ? <circle cx={G.center} cy={G.center} r=\"190\" fill={`url(#${id.glow})`} /> : null /* cropped: the halo would show its square */}\n <circle cx={G.center} cy={G.center} r={G.orbit.r} stroke={neutral(\"--kz-border-strong\", 40)} strokeWidth={G.orbit.width} strokeDasharray={G.orbit.dash} opacity=\".6\" />\n <circle cx={G.center} cy={G.center} r={G.ring.r} stroke={neutral(\"--kz-border-default\", 30)} strokeWidth={G.ring.width} opacity=\".35\" />\n <g className={animated ? \"ozm-orbit\" : undefined}>\n {G.shards.map((d) => (\n <path key={d} d={d} fill={fill} stroke={fill} strokeWidth={G.shardStroke} strokeLinejoin=\"round\" />\n ))}\n </g>\n <g className={animated ? \"ozm-core\" : undefined}>\n <circle cx={G.center} cy={G.center} r={G.core.r} fill={fill} />\n <circle cx={G.center} cy={G.center} r={G.core.inner} fill={G.highlight} />\n </g>\n </svg>\n );\n}\n","/**\n * The Orochia mark's geometry — the one description of the serpent and its flame, drawn by the web mark (SVG in the\n * DOM, OrochiaLogo) and the native one (react-native-svg, @krizaka/ui/native). Coordinates are in the 360×360 artwork,\n * placed at (20, 20) in a 400×400 view box; below 48 px the view box crops to the serpent.\n */\nexport const OROCHIA = {\n viewBox: \"0 0 400 400\",\n croppedViewBox: \"86 82 228 228\",\n offset: 20,\n body: { x1: 70, y1: 290, x2: 290, y2: 70, stops: [[\"0%\", \"#7c3aed\"], [\"55%\", \"#d946ef\"], [\"100%\", \"#f472b6\"]] },\n flameGradient: { stops: [[\"0%\", \"#a855f7\"], [\"100%\", \"#f9a8d4\"]] },\n glow: { color: \"#d946ef\", opacity: 0.18 },\n orbit: { r: 160, dash: \"8 8\", width: 1.5 },\n ring: { r: 134, width: 1 },\n arc: \"M259.8,142.8 A88,88 0 1 1 142.8,100.2\",\n neck: \"M142.8,100.2 A88,88 0 0 1 187.7,92.3\",\n tail: \"M187.7,92.3 A88,88 0 0 1 221.3,102.3\",\n scales: { color: \"#fdf4ff\", opacity: 0.45, width: 3, dash: \"2 14\" },\n head: { cx: 253.9, cy: 130.1, rx: 13, ry: 20, rotate: -25 },\n tongue: { d: \"M245.4,112.0 L242.0,104.8 L235.0,101.5 M242.0,104.8 L244.0,97.3\", color: \"#f472b6\" },\n eye: { cx: 256.3, cy: 123.5, r: 4.5, color: \"#fdf4ff\" },\n flame: {\n translate: [127, 120] as const,\n scale: 4.4,\n d: \"M8.5 14.5A2.5 2.5 0 0 0 11 12c0-1.38-.5-2-1-3-1.072-2.143-.224-4.054 2-6 .5 2.5 2 4.9 4 6.5 2 1.6 3 3.5 3 5.5a7 7 0 1 1-14 0c0-1.153.433-2.294 1-3a2.5 2.5 0 0 0 2.5 2.5z\",\n },\n} as const;\n","import { OROCHIA as G } from \"./orochia-geometry\";\nimport { a11y, type MarkProps, neutral, useIds } from \"./shared\";\n\nconst CSS = `\n.orom-spin { transform-origin: 180px 180px; animation: orom-spin 30s linear infinite; }\n.orom-slither { animation: orom-slither 2.4s linear infinite; }\n.orom-pulse { transform-box: view-box; animation: orom-pulse 3.2s ease-in-out infinite; }\n@keyframes orom-spin { to { transform: rotate(360deg); } }\n@keyframes orom-slither { to { stroke-dashoffset: -64; } }\n@keyframes orom-pulse {\n 0%, 100% { filter: drop-shadow(0 0 6px hsla(292, 84%, 61%, .25)); opacity: .9; }\n 50% { filter: drop-shadow(0 0 14px hsla(292, 84%, 61%, .55)); opacity: 1; }\n}\n@media (prefers-reduced-motion: reduce) { .orom-spin, .orom-slither, .orom-pulse { animation: none; } }\n`;\n\n/**\n * The Orochia mark: the serpent (Orochi) coiled into an \"O\" around the flame it guards. The orbit turns, scales slide\n * along the body, the eye and the flame breathe. Below 48 px it crops to the serpent: the orbits would be hairlines.\n */\nexport function OrochiaLogo({ size = 36, animated = true, title, className }: MarkProps) {\n const id = useIds(\"orom\", [\"body\", \"flame\", \"glow\"] as const);\n const m = (cls: string) => (animated ? cls : undefined);\n return (\n <svg width={size} height={size} viewBox={size < 48 ? G.croppedViewBox : G.viewBox} fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className={className} {...a11y(title)}>\n <style>{CSS}</style>\n <defs>\n <linearGradient id={id.body} gradientUnits=\"userSpaceOnUse\" x1={G.body.x1} y1={G.body.y1} x2={G.body.x2} y2={G.body.y2}>\n {G.body.stops.map(([offset, color]) => (\n <stop key={offset} offset={offset} stopColor={color} />\n ))}\n </linearGradient>\n <linearGradient id={id.flame} x1=\"50%\" y1=\"100%\" x2=\"50%\" y2=\"0%\">\n {G.flameGradient.stops.map(([offset, color]) => (\n <stop key={offset} offset={offset} stopColor={color} />\n ))}\n </linearGradient>\n <radialGradient id={id.glow} cx=\"50%\" cy=\"50%\" r=\"50%\">\n <stop offset=\"0%\" stopColor={G.glow.color} stopOpacity={G.glow.opacity} />\n <stop offset=\"100%\" stopColor={G.glow.color} stopOpacity=\"0\" />\n </radialGradient>\n </defs>\n <g transform={`translate(${G.offset} ${G.offset})`}>\n <circle cx=\"180\" cy=\"180\" r=\"170\" fill={`url(#${id.glow})`} />\n <circle className={m(\"orom-spin\")} cx=\"180\" cy=\"180\" r={G.orbit.r} stroke={neutral(\"--kz-border-strong\", 40)} strokeWidth={G.orbit.width} strokeDasharray={G.orbit.dash} opacity=\".6\" />\n <circle cx=\"180\" cy=\"180\" r={G.ring.r} stroke={neutral(\"--kz-border-default\", 30)} strokeWidth={G.ring.width} opacity=\".35\" />\n <path d={G.arc} stroke={`url(#${id.body})`} strokeWidth=\"22\" strokeLinecap=\"round\" />\n <path className={m(\"orom-slither\")} d={G.arc} stroke={G.scales.color} strokeOpacity={G.scales.opacity} strokeWidth={G.scales.width} strokeLinecap=\"round\" strokeDasharray={G.scales.dash} />\n <path d={G.neck} stroke={`url(#${id.body})`} strokeWidth=\"14\" strokeLinecap=\"round\" />\n <path d={G.tail} stroke={`url(#${id.body})`} strokeWidth=\"6\" strokeLinecap=\"round\" />\n <ellipse cx={G.head.cx} cy={G.head.cy} rx={G.head.rx} ry={G.head.ry} transform={`rotate(${G.head.rotate} ${G.head.cx} ${G.head.cy})`} fill={`url(#${id.body})`} />\n <path d={G.tongue.d} stroke={G.tongue.color} strokeWidth=\"3\" strokeLinecap=\"round\" />\n <circle className={m(\"orom-pulse\")} cx={G.eye.cx} cy={G.eye.cy} r={G.eye.r} fill={G.eye.color} />\n <path className={m(\"orom-pulse\")} transform={`translate(${G.flame.translate[0]} ${G.flame.translate[1]}) scale(${G.flame.scale})`} d={G.flame.d} fill={`url(#${id.flame})`} />\n </g>\n </svg>\n );\n}\n","import { KrizakaLogo } from \"./KrizakaLogo\";\nimport { OrazakaLogo } from \"./OrazakaLogo\";\nimport { OrochiaLogo } from \"./OrochiaLogo\";\nimport type { MarkProps } from \"./shared\";\n\nexport type BrandId = \"krizaka\" | \"orazaka\" | \"orochia\";\n\n/** The mark of a Krizaka brand by id — for navigation, cards and lists driven by data. */\nexport function ProductLogo({ id, ...props }: MarkProps & { id: BrandId }) {\n if (id === \"krizaka\") return <KrizakaLogo {...props} />;\n if (id === \"orazaka\") return <OrazakaLogo {...props} />;\n return <OrochiaLogo {...props} />;\n}\n","import { useEffect } from \"react\";\n\n/**\n * Mount once at the root of the app. It reveals every `[data-reveal]` element as it enters the viewport — including\n * elements added later, so client-side navigation needs nothing more — and feeds the pointer position to\n * `.kz-spotlight` cards (`--spot-x`, `--spot-y`). One IntersectionObserver, one MutationObserver, one listener.\n * Under prefers-reduced-motion everything is revealed at once.\n */\nexport function MotionObserver(): null {\n useEffect(() => {\n if (window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches) {\n const revealAll = (root: ParentNode) => root.querySelectorAll(\"[data-reveal]\").forEach((el) => el.classList.add(\"kz-in\"));\n revealAll(document);\n const mo = new MutationObserver(() => revealAll(document));\n mo.observe(document.body, { childList: true, subtree: true });\n return () => mo.disconnect();\n }\n const io = new IntersectionObserver(\n (entries) => {\n for (const entry of entries) {\n if (!entry.isIntersecting) continue;\n entry.target.classList.add(\"kz-in\");\n io.unobserve(entry.target);\n }\n },\n { rootMargin: \"0px 0px -8% 0px\", threshold: 0.12 },\n );\n const watch = (root: ParentNode) => root.querySelectorAll(\"[data-reveal]:not(.kz-in)\").forEach((el) => io.observe(el));\n watch(document);\n const mo = new MutationObserver((records) => {\n for (const r of records) r.addedNodes.forEach((n) => n instanceof Element && (n.matches(\"[data-reveal]\") ? io.observe(n) : watch(n)));\n });\n mo.observe(document.body, { childList: true, subtree: true });\n return () => {\n io.disconnect();\n mo.disconnect();\n };\n }, []);\n\n useEffect(() => {\n const move = (e: PointerEvent) => {\n const card = (e.target as Element | null)?.closest?.(\".kz-spotlight\") as HTMLElement | null;\n if (!card) return;\n const box = card.getBoundingClientRect();\n card.style.setProperty(\"--spot-x\", `${e.clientX - box.left}px`);\n card.style.setProperty(\"--spot-y\", `${e.clientY - box.top}px`);\n };\n document.addEventListener(\"pointermove\", move, { passive: true });\n return () => document.removeEventListener(\"pointermove\", move);\n }, []);\n\n return null;\n}\n","import { useEffect, useState } from \"react\";\n\nimport { cx } from \"../cx\";\n\n/**\n * A word that rolls through alternatives — the Krizaka headline signature. The server render and the first client\n * render show the first word; under prefers-reduced-motion it stays put. Decorative (`aria-hidden`): give the\n * heading a stable accessible label.\n */\nexport function RotatingWord({ words, interval = 2600, className }: { words: readonly string[]; interval?: number; className?: string }) {\n const [i, setI] = useState(0);\n useEffect(() => {\n if (words.length < 2 || window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches) return;\n const timer = setInterval(() => setI((k) => (k + 1) % words.length), interval);\n return () => clearInterval(timer);\n }, [words.length, interval]);\n return (\n <span aria-hidden className=\"kz-rotating\">\n <span key={i} className={cx(\"kz-word\", className)}>\n {words[i]}\n </span>\n </span>\n );\n}\n"],"mappings":"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","names":["jsx","jsxs","CSS","jsx","jsxs","CSS","jsx","mo","useEffect","jsx","useEffect"]}
package/dist/motion.css CHANGED
@@ -1,7 +1,7 @@
1
1
  /* @krizaka/ui — the Krizaka motion signature.
2
2
  One easing (--kz-ease); pages that enter; sections that rise into view ([data-reveal] + MotionObserver); words
3
3
  that roll (RotatingWord); a sheen across primary actions; a spotlight that follows the pointer; cards that lift;
4
- bands that slide; and one vocabulary for what opens over the page (overlay, dialog, pop, fade).
4
+ bands that slide; section backdrops that glide from one brand tint to the next; and one vocabulary for what opens over the page (overlay, dialog, pop, fade).
5
5
  Plain CSS, no framework: import "@krizaka/ui/motion.css" once. Everything stops under prefers-reduced-motion.
6
6
  Tailwind v4: `--default-transition-timing-function: var(--kz-ease)` in @theme gives every transition the easing. */
7
7
 
@@ -155,8 +155,58 @@
155
155
  from { opacity: 0; transform: translateY(-6px) scale(0.96); }
156
156
  }
157
157
 
158
+ /* Section backdrop (SectionBackdrop): the brand's section gradient (--kz-brand-gradient-*), sections that glide from
159
+ one temperature to the next (each ends on the page surface, so the next starts where it stopped), a light dome, a
160
+ perspective grid, a blurred foreground for depth of field, and a very slow drift. */
161
+ .kz-backdrop {
162
+ position: relative;
163
+ isolation: isolate;
164
+ overflow: hidden;
165
+ background: linear-gradient(180deg, var(--kz-brand-gradient-from), var(--kz-brand-gradient-via) 55%, var(--kz-brand-gradient-to));
166
+ }
167
+ .kz-backdrop[data-direction="up"] {
168
+ background: linear-gradient(0deg, var(--kz-brand-gradient-from), var(--kz-brand-gradient-via) 55%, var(--kz-brand-gradient-to));
169
+ }
170
+ .kz-backdrop > [data-backdrop-layer] { position: absolute; z-index: -1; pointer-events: none; }
171
+ .kz-backdrop-drift {
172
+ inset: -20%;
173
+ background:
174
+ radial-gradient(38% 32% at 28% 30%, color-mix(in oklab, var(--kz-accent, #196df5) 14%, transparent), transparent 70%),
175
+ radial-gradient(34% 30% at 76% 22%, color-mix(in oklab, var(--kz-accent-2, #196df5) 10%, transparent), transparent 70%);
176
+ animation: kz-backdrop-drift 40s ease-in-out infinite alternate;
177
+ }
178
+ @keyframes kz-backdrop-drift {
179
+ to { transform: translate3d(6%, 4%, 0) rotate(6deg); }
180
+ }
181
+ .kz-backdrop-dome {
182
+ left: 50%;
183
+ top: -35%;
184
+ width: 110%;
185
+ aspect-ratio: 2 / 1;
186
+ transform: translateX(-50%);
187
+ border-radius: 50%;
188
+ background: radial-gradient(closest-side, color-mix(in oklab, var(--kz-accent, #196df5) 24%, transparent), transparent);
189
+ filter: blur(28px);
190
+ }
191
+ .kz-backdrop-grid {
192
+ inset: auto -50% 0 -50%;
193
+ height: 55%;
194
+ background-image:
195
+ linear-gradient(to right, var(--kz-border-default) 1px, transparent 1px),
196
+ linear-gradient(to bottom, var(--kz-border-default) 1px, transparent 1px);
197
+ background-size: 48px 48px;
198
+ transform: perspective(640px) rotateX(62deg);
199
+ transform-origin: bottom;
200
+ mask-image: linear-gradient(to top, #000 5%, transparent 85%);
201
+ }
202
+ .kz-backdrop-media {
203
+ inset: 0;
204
+ filter: blur(var(--kz-backdrop-blur, 18px));
205
+ opacity: 0.5;
206
+ }
207
+
158
208
  @media (prefers-reduced-motion: reduce) {
159
- .kz-page, .kz-word, .kz-gradient-text, .kz-marquee, .kz-overlay, .kz-dialog, .kz-pop, .kz-fade, .kz-progress { animation: none !important; }
209
+ .kz-page, .kz-word, .kz-gradient-text, .kz-marquee, .kz-backdrop-drift, .kz-overlay, .kz-dialog, .kz-pop, .kz-fade, .kz-progress { animation: none !important; }
160
210
  [data-reveal] { opacity: 1; transform: none; filter: none; transition: none; }
161
211
  .kz-sheen::after { display: none; }
162
212
  .kz-lift, .kz-lift:hover { transform: none; transition: none; }