@krizaka/ui 3.7.1 → 3.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (303) hide show
  1. package/README.md +14 -12
  2. package/dist/action-bar.js +2 -1
  3. package/dist/action-bar.js.map +1 -1
  4. package/dist/app-shell.d.ts +81 -3
  5. package/dist/app-shell.js +163 -35
  6. package/dist/app-shell.js.map +1 -1
  7. package/dist/audio-player.js +1 -1
  8. package/dist/badge.d.ts +36 -39
  9. package/dist/badge.js +11 -2
  10. package/dist/badge.js.map +1 -1
  11. package/dist/blocks.css +56 -4
  12. package/dist/button-BmCrLCq7.d.ts +114 -0
  13. package/dist/button.d.ts +48 -48
  14. package/dist/button.js +2 -1
  15. package/dist/card.d.ts +111 -111
  16. package/dist/card.js +10 -2
  17. package/dist/card.js.map +1 -1
  18. package/dist/chip.d.ts +24 -24
  19. package/dist/chip.js +10 -2
  20. package/dist/chip.js.map +1 -1
  21. package/dist/{chunk-UOMP6VOZ.js → chunk-276PTQMQ.js} +10 -4
  22. package/dist/chunk-276PTQMQ.js.map +1 -0
  23. package/dist/{chunk-Z6FUPB3Q.js → chunk-2NB27LM7.js} +11 -3
  24. package/dist/chunk-2NB27LM7.js.map +1 -0
  25. package/dist/chunk-2VNYHG4E.js +9 -0
  26. package/dist/chunk-2VNYHG4E.js.map +1 -0
  27. package/dist/{chunk-ND3L5VHT.js → chunk-5Z7FWCV2.js} +2 -2
  28. package/dist/{chunk-YH4LMWRU.js → chunk-7UCPGXKN.js} +11 -3
  29. package/dist/chunk-7UCPGXKN.js.map +1 -0
  30. package/dist/{chunk-AZPKXP3O.js → chunk-AFY35UCB.js} +6 -1
  31. package/dist/{chunk-AZPKXP3O.js.map → chunk-AFY35UCB.js.map} +1 -1
  32. package/dist/{chunk-LCZXS6AK.js → chunk-CKSHLSDH.js} +5 -5
  33. package/dist/chunk-CKSHLSDH.js.map +1 -0
  34. package/dist/chunk-D3T54RSL.js +11 -0
  35. package/dist/chunk-D3T54RSL.js.map +1 -0
  36. package/dist/{chunk-ZKVQGXLD.js → chunk-FKBHWS4N.js} +2 -2
  37. package/dist/{chunk-BRKMQ6JV.js → chunk-FZBWEDQI.js} +1 -23
  38. package/dist/chunk-FZBWEDQI.js.map +1 -0
  39. package/dist/{chunk-HCNOOPZE.js → chunk-KVDB4GXV.js} +2 -2
  40. package/dist/{chunk-RUPNPMP3.js → chunk-OWC2LZD2.js} +11 -3
  41. package/dist/chunk-OWC2LZD2.js.map +1 -0
  42. package/dist/{chunk-FDCMBWUU.js → chunk-REPTKUJ6.js} +4 -4
  43. package/dist/chunk-REPTKUJ6.js.map +1 -0
  44. package/dist/{chunk-JZPVUJIX.js → chunk-UB2BI3AW.js} +1 -1
  45. package/dist/{chunk-JZPVUJIX.js.map → chunk-UB2BI3AW.js.map} +1 -1
  46. package/dist/code-block.d.ts +32 -10
  47. package/dist/code-block.js +51 -43
  48. package/dist/code-block.js.map +1 -1
  49. package/dist/combobox.d.ts +3 -3
  50. package/dist/combobox.js +4 -3
  51. package/dist/command.js +3 -2
  52. package/dist/command.js.map +1 -1
  53. package/dist/component-page.js.map +1 -1
  54. package/dist/confirm-button.d.ts +1 -1
  55. package/dist/confirm-button.js +2 -1
  56. package/dist/confirm-button.js.map +1 -1
  57. package/dist/continue-prompt.js +11 -3
  58. package/dist/continue-prompt.js.map +1 -1
  59. package/dist/data-table.js +7 -6
  60. package/dist/data-table.js.map +1 -1
  61. package/dist/date-picker.js +1 -1
  62. package/dist/dialog.js +3 -2
  63. package/dist/dialog.js.map +1 -1
  64. package/dist/file-upload.d.ts +12 -1
  65. package/dist/file-upload.js +73 -89
  66. package/dist/file-upload.js.map +1 -1
  67. package/dist/filter-bar.js +3 -2
  68. package/dist/{geometry-CbOU4rtL.d.ts → geometry-B2E8oFhg.d.ts} +1 -1
  69. package/dist/image-cropper.js +1 -1
  70. package/dist/index.d.ts +7 -5
  71. package/dist/index.js +26 -24
  72. package/dist/index.js.map +1 -1
  73. package/dist/list.js +1 -1
  74. package/dist/map.js +1 -1
  75. package/dist/map.js.map +1 -1
  76. package/dist/markdown.d.ts +38 -0
  77. package/dist/markdown.js +150 -0
  78. package/dist/markdown.js.map +1 -0
  79. package/dist/mascot-quote.d.ts +1 -1
  80. package/dist/mascot-quote.js.map +1 -1
  81. package/dist/mascot-state.d.ts +1 -1
  82. package/dist/mascot-state.js +1 -1
  83. package/dist/mascots.d.ts +2 -2
  84. package/dist/mascots.js +1 -1
  85. package/dist/match-dialog.js +2 -1
  86. package/dist/match-dialog.js.map +1 -1
  87. package/dist/media-capture.js +1 -1
  88. package/dist/native/map.js +1 -1
  89. package/dist/native/map.js.map +1 -1
  90. package/dist/native/markdown.d.ts +24 -0
  91. package/dist/native/markdown.js +200 -0
  92. package/dist/native/markdown.js.map +1 -0
  93. package/dist/native.d.ts +10 -14
  94. package/dist/native.js +383 -119
  95. package/dist/native.js.map +1 -1
  96. package/dist/recipes.d.ts +143 -0
  97. package/dist/recipes.js +180 -0
  98. package/dist/recipes.js.map +1 -0
  99. package/dist/search-field.js +2 -2
  100. package/dist/status-page.d.ts +1 -1
  101. package/dist/status-page.js.map +1 -1
  102. package/dist/swipe-deck.js +1 -1
  103. package/dist/tag-input.js +4 -3
  104. package/dist/tag-input.js.map +1 -1
  105. package/dist/tag-selector.js +2 -1
  106. package/dist/tag-selector.js.map +1 -1
  107. package/dist/theme.d.ts +1 -1
  108. package/dist/theme.js +2 -1
  109. package/dist/theme.js.map +1 -1
  110. package/dist/tree-view.js +1 -1
  111. package/dist/vertical-video.js +2 -1
  112. package/dist/vertical-video.js.map +1 -1
  113. package/dist/video-player.js +1 -1
  114. package/dist/video-trimmer.js +1 -1
  115. package/dist/virtual.js +2 -2
  116. package/package.json +49 -18
  117. package/registry/achievement.json +1 -1
  118. package/registry/action-bar.json +1 -1
  119. package/registry/activity-feed.json +1 -1
  120. package/registry/alert.json +1 -1
  121. package/registry/app-shell.json +135 -12
  122. package/registry/argument-card.json +1 -1
  123. package/registry/audio-player.json +2 -2
  124. package/registry/auth-layout.json +1 -1
  125. package/registry/avatar.json +1 -1
  126. package/registry/badge.json +9 -3
  127. package/registry/button.json +7 -2
  128. package/registry/card-grid.json +1 -1
  129. package/registry/card.json +8 -3
  130. package/registry/catalogue-page.json +1 -1
  131. package/registry/changelog-page.json +1 -1
  132. package/registry/chat.json +1 -1
  133. package/registry/checkbox.json +1 -1
  134. package/registry/chip-link.json +1 -1
  135. package/registry/chip.json +9 -3
  136. package/registry/choice-grid.json +1 -1
  137. package/registry/code-block.json +65 -21
  138. package/registry/combobox.json +4 -3
  139. package/registry/command.json +1 -1
  140. package/registry/component-page.json +4 -4
  141. package/registry/confirm-button.json +1 -1
  142. package/registry/contact-page.json +1 -1
  143. package/registry/continue-prompt.json +1 -1
  144. package/registry/countdown.json +1 -1
  145. package/registry/cta-panel.json +1 -1
  146. package/registry/dashboard-layout.json +1 -1
  147. package/registry/data-table.json +2 -2
  148. package/registry/date-picker.json +3 -3
  149. package/registry/decision-list.json +1 -1
  150. package/registry/description-list.json +1 -1
  151. package/registry/detail-layout.json +1 -1
  152. package/registry/dialog.json +1 -1
  153. package/registry/docs-article-page.json +1 -1
  154. package/registry/docs-hub-page.json +1 -1
  155. package/registry/docs-layout.json +1 -1
  156. package/registry/dropdown-menu.json +1 -1
  157. package/registry/empty-state.json +1 -1
  158. package/registry/error-page.json +1 -1
  159. package/registry/examples/app-shell/console.d.ts +4 -0
  160. package/registry/examples/app-shell/console.js +93 -0
  161. package/registry/examples/app-shell/console.tsx +103 -0
  162. package/registry/examples/badge/native/dot.dark.png +0 -0
  163. package/registry/examples/badge/native/dot.light.png +0 -0
  164. package/registry/examples/badge/native/scrim.dark.png +0 -0
  165. package/registry/examples/badge/native/scrim.light.png +0 -0
  166. package/registry/examples/badge/native/tones.dark.png +0 -0
  167. package/registry/examples/badge/native/tones.light.png +0 -0
  168. package/registry/examples/card/native/default.dark.png +0 -0
  169. package/registry/examples/card/native/default.light.png +0 -0
  170. package/registry/examples/card/native/elevated.light.png +0 -0
  171. package/registry/examples/chip/native/multiple.dark.png +0 -0
  172. package/registry/examples/chip/native/multiple.light.png +0 -0
  173. package/registry/examples/chip/native/removable.dark.png +0 -0
  174. package/registry/examples/chip/native/removable.light.png +0 -0
  175. package/registry/examples/chip/native/single.dark.png +0 -0
  176. package/registry/examples/chip/native/single.light.png +0 -0
  177. package/registry/examples/chip/native/toggle.dark.png +0 -0
  178. package/registry/examples/chip/native/toggle.light.png +0 -0
  179. package/registry/examples/code-block/annotated.d.ts +4 -0
  180. package/registry/examples/code-block/annotated.js +31 -0
  181. package/registry/examples/code-block/annotated.tsx +26 -0
  182. package/registry/examples/component-page/button.tsx +1 -1
  183. package/registry/examples/form/native/amount.dark.png +0 -0
  184. package/registry/examples/form/native/amount.light.png +0 -0
  185. package/registry/examples/landing-page/krizaka.js +1 -1
  186. package/registry/examples/landing-page/krizaka.tsx +1 -1
  187. package/registry/examples/markdown/ai-stream.d.ts +4 -0
  188. package/registry/examples/markdown/ai-stream.js +31 -0
  189. package/registry/examples/markdown/ai-stream.tsx +32 -0
  190. package/registry/examples/markdown/basic.d.ts +4 -0
  191. package/registry/examples/markdown/basic.js +26 -0
  192. package/registry/examples/markdown/basic.tsx +22 -0
  193. package/registry/examples/markdown/native/ai-stream.d.ts +4 -0
  194. package/registry/examples/markdown/native/ai-stream.dark.png +0 -0
  195. package/registry/examples/markdown/native/ai-stream.js +17 -0
  196. package/registry/examples/markdown/native/ai-stream.light.png +0 -0
  197. package/registry/examples/markdown/native/ai-stream.tsx +17 -0
  198. package/registry/examples/markdown/native/basic.d.ts +4 -0
  199. package/registry/examples/markdown/native/basic.dark.png +0 -0
  200. package/registry/examples/markdown/native/basic.js +28 -0
  201. package/registry/examples/markdown/native/basic.light.png +0 -0
  202. package/registry/examples/markdown/native/basic.tsx +27 -0
  203. package/registry/examples/mascots/flock.tsx +1 -1
  204. package/registry/examples/profile-card/match.js +1 -1
  205. package/registry/examples/profile-card/match.tsx +1 -1
  206. package/registry/examples/recipes/tone-chip.d.ts +4 -0
  207. package/registry/examples/recipes/tone-chip.js +46 -0
  208. package/registry/examples/recipes/tone-chip.tsx +32 -0
  209. package/registry/examples/screen/native/profile.dark.png +0 -0
  210. package/registry/examples/screen/native/profile.light.png +0 -0
  211. package/registry/examples/status-page/building.js +1 -1
  212. package/registry/examples/status-page/building.tsx +1 -1
  213. package/registry/examples/tag-selector/native/interests.dark.png +0 -0
  214. package/registry/examples/tag-selector/native/interests.light.png +0 -0
  215. package/registry/field.json +1 -1
  216. package/registry/file-upload.json +8 -3
  217. package/registry/filter-bar.json +1 -1
  218. package/registry/form.json +2 -2
  219. package/registry/gallery-page.json +1 -1
  220. package/registry/glow-card.json +1 -1
  221. package/registry/goal-gauge.json +1 -1
  222. package/registry/how-it-works-page.json +1 -1
  223. package/registry/image-cropper.json +2 -2
  224. package/registry/index.json +77 -17
  225. package/registry/iso.json +1 -1
  226. package/registry/kanban.json +1 -1
  227. package/registry/kbd.json +1 -1
  228. package/registry/landing-page.json +3 -3
  229. package/registry/landscape.json +1 -1
  230. package/registry/legal-page.json +1 -1
  231. package/registry/link-card.json +1 -1
  232. package/registry/list.json +2 -2
  233. package/registry/loader.json +4 -4
  234. package/registry/longform-page.json +1 -1
  235. package/registry/map.json +3 -3
  236. package/registry/markdown.json +266 -0
  237. package/registry/marketing-layout.json +1 -1
  238. package/registry/marquee.json +1 -1
  239. package/registry/mascot-quote.json +1 -1
  240. package/registry/mascot-state.json +1 -1
  241. package/registry/mascots.json +5 -5
  242. package/registry/match-dialog.json +1 -1
  243. package/registry/media-capture.json +2 -2
  244. package/registry/meter.json +1 -1
  245. package/registry/nav-bar.json +1 -1
  246. package/registry/number-ticker.json +1 -1
  247. package/registry/page-header.json +1 -1
  248. package/registry/page-hero.json +1 -1
  249. package/registry/page.json +1 -1
  250. package/registry/pagination.json +1 -1
  251. package/registry/photo-grid.json +1 -1
  252. package/registry/pointer-light.json +1 -1
  253. package/registry/popover.json +1 -1
  254. package/registry/pricing-page.json +1 -1
  255. package/registry/product-page.json +3 -3
  256. package/registry/profile-card.json +2 -2
  257. package/registry/progress.json +1 -1
  258. package/registry/promise-card.json +1 -1
  259. package/registry/radio-group.json +1 -1
  260. package/registry/recipes.json +99 -0
  261. package/registry/scroll-stage.json +1 -1
  262. package/registry/search-field.json +4 -3
  263. package/registry/section-backdrop.json +1 -1
  264. package/registry/separator.json +1 -1
  265. package/registry/settings-layout.json +1 -1
  266. package/registry/skeleton.json +1 -1
  267. package/registry/skip-link.json +1 -1
  268. package/registry/slider.json +1 -1
  269. package/registry/slot.json +1 -1
  270. package/registry/spinner.json +1 -1
  271. package/registry/split-view.json +1 -1
  272. package/registry/stage-banner.json +1 -1
  273. package/registry/stat.json +1 -1
  274. package/registry/status-page.json +7 -7
  275. package/registry/step-progress.json +1 -1
  276. package/registry/stepper.json +1 -1
  277. package/registry/swipe-deck.json +2 -2
  278. package/registry/switch.json +1 -1
  279. package/registry/tabs.json +1 -1
  280. package/registry/tag-input.json +2 -2
  281. package/registry/tag-selector.json +1 -1
  282. package/registry/terminal-replay.json +1 -1
  283. package/registry/theme.json +1 -1
  284. package/registry/toast.json +1 -1
  285. package/registry/toc.json +1 -1
  286. package/registry/tooltip.json +1 -1
  287. package/registry/tree-view.json +2 -2
  288. package/registry/verified-badge.json +1 -1
  289. package/registry/vertical-video.json +2 -2
  290. package/registry/video-player.json +2 -2
  291. package/registry/video-trimmer.json +2 -2
  292. package/registry/virtual.json +2 -2
  293. package/dist/button-BMAO7dKF.d.ts +0 -114
  294. package/dist/chunk-BRKMQ6JV.js.map +0 -1
  295. package/dist/chunk-FDCMBWUU.js.map +0 -1
  296. package/dist/chunk-LCZXS6AK.js.map +0 -1
  297. package/dist/chunk-RUPNPMP3.js.map +0 -1
  298. package/dist/chunk-UOMP6VOZ.js.map +0 -1
  299. package/dist/chunk-YH4LMWRU.js.map +0 -1
  300. package/dist/chunk-Z6FUPB3Q.js.map +0 -1
  301. /package/dist/{chunk-ND3L5VHT.js.map → chunk-5Z7FWCV2.js.map} +0 -0
  302. /package/dist/{chunk-ZKVQGXLD.js.map → chunk-FKBHWS4N.js.map} +0 -0
  303. /package/dist/{chunk-HCNOOPZE.js.map → chunk-KVDB4GXV.js.map} +0 -0
package/dist/blocks.css CHANGED
@@ -432,10 +432,62 @@ a.kz-fact:focus-visible { outline: 2px solid var(--kz-ring, var(--kz-accent)); o
432
432
  .kz-code-lang { padding: 2px 7px; border-radius: 6px; font-size: 10px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(--kz-text-primary); background: var(--kz-surface-3); }
433
433
  .kz-code pre { margin: 0; padding: 16px 18px; overflow-x: auto; font-family: var(--kz-font-mono); font-size: 12.5px; line-height: 1.7; color: var(--kz-text-primary); tab-size: 2; }
434
434
  .kz-code pre:focus-visible { outline: 2px solid var(--kz-ring, var(--kz-accent)); outline-offset: -2px; }
435
- .kz-tk-comment { color: var(--kz-text-secondary); font-style: italic; }
436
- .kz-tk-string { color: var(--kz-success-text); }
437
- .kz-tk-annotation { color: var(--kz-warning-text); }
438
- .kz-tk-keyword, .kz-tk-tag { color: var(--kz-accent-text); font-weight: 600; }
435
+ /* The code's colours: TanStack Highlight's `th-*` classes on the tokens' text roles (each ≥ 4.5:1 on the code surface,
436
+ both themes) — comments quiet, strings green, keywords in the accent, types and numbers in the info colour. */
437
+ .kz-code .th-comment { color: var(--kz-text-secondary); font-style: italic; }
438
+ .kz-code .th-string, .kz-code .th-inserted { color: var(--kz-success-text); }
439
+ .kz-code .th-attr, .kz-code .th-meta { color: var(--kz-warning-text); }
440
+ .kz-code .th-keyword, .kz-code .th-tag, .kz-code .th-selector, .kz-code .th-command { color: var(--kz-accent-text); font-weight: 600; }
441
+ .kz-code .th-type, .kz-code .th-function, .kz-code .th-number, .kz-code .th-literal { color: var(--kz-info-text); }
442
+ .kz-code .th-deleted { color: var(--kz-danger-text); }
443
+ .kz-code .th-heading, .kz-code .th-link { color: var(--kz-accent-text); font-weight: 700; }
444
+ /* Lines (numbered or set apart): a band the width of the sample, edge to edge. */
445
+ .kz-code .th-line { display: inline-block; box-sizing: border-box; min-width: calc(100% + 36px); width: max-content; margin-inline: -18px; padding-inline: 18px; position: relative; }
446
+ .kz-code .th-code--line-numbers .th-line::before { content: attr(data-line); display: inline-block; width: 2.5em; margin-right: 1em; text-align: right; color: var(--kz-text-secondary); user-select: none; }
447
+ .kz-code .kz-line-highlight { background: var(--kz-surface-3); box-shadow: inset 2px 0 0 var(--kz-hue, var(--kz-accent)); }
448
+ .kz-code .kz-line-added { background: color-mix(in srgb, var(--kz-success) 14%, transparent); }
449
+ .kz-code .kz-line-removed { background: color-mix(in srgb, var(--kz-danger) 14%, transparent); }
450
+ .kz-code .kz-line-error { background: color-mix(in srgb, var(--kz-danger) 14%, transparent); box-shadow: inset 2px 0 0 var(--kz-danger); }
451
+ .kz-code .kz-line-warning { background: color-mix(in srgb, var(--kz-warning) 14%, transparent); box-shadow: inset 2px 0 0 var(--kz-warning); }
452
+ .kz-code .kz-line-added::after, .kz-code .kz-line-removed::after { position: absolute; left: 6px; top: 0; font-weight: 700; }
453
+ .kz-code .kz-line-added::after { content: "+"; color: var(--kz-success-text); }
454
+ .kz-code .kz-line-removed::after { content: "\2212"; color: var(--kz-danger-text); }
455
+ .kz-code .kz-line-added .th-token, .kz-code .kz-line-removed .th-token, .kz-code .kz-line-error .th-token, .kz-code .kz-line-warning .th-token { color: inherit; }
456
+ /* Dimmed, not faded: the line keeps the quiet text role (≥ 4.5:1), its colours go. */
457
+ .kz-code .kz-line-dim, .kz-code pre[data-focus] .th-line:not(.kz-line-focus) { color: var(--kz-text-secondary); }
458
+ .kz-code .kz-line-dim .th-token, .kz-code pre[data-focus] .th-line:not(.kz-line-focus) .th-token { color: inherit; font-weight: inherit; }
459
+ /* Markdown (TanStack Markdown's AST on the tokens): reading text, nothing decorative. */
460
+ .kz-md { min-width: 0; color: var(--kz-text-primary); font-size: 15px; line-height: 1.7; overflow-wrap: anywhere; }
461
+ .kz-md > * { margin-block: 0; }
462
+ .kz-md > * + * { margin-top: 0.9em; }
463
+ .kz-md h1, .kz-md h2, .kz-md h3, .kz-md h4, .kz-md h5, .kz-md h6 { font-family: var(--kz-font-display); font-weight: 800; line-height: 1.2; letter-spacing: -0.01em; }
464
+ .kz-md > * + :is(h1, h2, h3) { margin-top: 1.6em; }
465
+ .kz-md h1 { font-size: 1.7em; } .kz-md h2 { font-size: 1.35em; } .kz-md h3 { font-size: 1.15em; } .kz-md h4, .kz-md h5, .kz-md h6 { font-size: 1em; }
466
+ .kz-md a { color: var(--kz-accent-text); text-decoration: underline; text-underline-offset: 3px; }
467
+ .kz-md a:focus-visible { outline: 2px solid var(--kz-ring, var(--kz-accent)); outline-offset: 2px; border-radius: 4px; }
468
+ .kz-md ul, .kz-md ol { padding-inline-start: 1.5em; }
469
+ .kz-md ul { list-style: disc; }
470
+ .kz-md ol { list-style: decimal; }
471
+ .kz-md ul[data-tasks] { list-style: none; padding-inline-start: 0; }
472
+ .kz-md li + li { margin-top: 0.35em; }
473
+ .kz-md li > :is(ul, ol), .kz-md li > p + * { margin-top: 0.35em; }
474
+ .kz-md blockquote { padding-inline-start: 1em; color: var(--kz-text-secondary); border-inline-start: 3px solid var(--kz-hue, var(--kz-accent)); }
475
+ .kz-md :not(pre) > code { padding: 0.12em 0.4em; border-radius: 6px; font-family: var(--kz-font-mono); font-size: 0.88em; background: var(--kz-surface-3); }
476
+ .kz-md hr { border: 0; border-top: 1px solid var(--kz-border-default); }
477
+ .kz-md img { max-width: 100%; height: auto; border-radius: 12px; }
478
+ .kz-md-table { overflow-x: auto; }
479
+ .kz-md-table table { width: 100%; border-collapse: collapse; font-size: 0.93em; }
480
+ .kz-md-table :is(th, td) { padding: 0.55em 0.8em; text-align: start; border-bottom: 1px solid var(--kz-border-subtle); }
481
+ .kz-md-table th { font-weight: 700; color: var(--kz-text-secondary); background: var(--kz-surface-2); }
482
+ .kz-md [data-footnotes] { font-size: 0.9em; color: var(--kz-text-secondary); border-top: 1px solid var(--kz-border-subtle); padding-top: 0.8em; }
483
+ /* A text still arriving: a caret where it goes on (still under reduced motion). */
484
+ .kz-md[data-streaming] > :is(p, h1, h2, h3, h4, h5, h6):last-child::after,
485
+ .kz-md[data-streaming] > :is(ul, ol):last-child > li:last-child::after { content: ""; display: inline-block; width: 0.5ch; height: 1.05em; margin-inline-start: 3px; vertical-align: -0.15em; background: var(--kz-accent-text); }
486
+ @media (prefers-reduced-motion: no-preference) {
487
+ .kz-md[data-streaming] > :is(p, h1, h2, h3, h4, h5, h6):last-child::after,
488
+ .kz-md[data-streaming] > :is(ul, ol):last-child > li:last-child::after { animation: kz-md-caret 1s steps(2, start) infinite; }
489
+ }
490
+ @keyframes kz-md-caret { to { visibility: hidden; } }
439
491
  .kz-code-copy {
440
492
  display: inline-flex;
441
493
  align-items: center;
@@ -0,0 +1,114 @@
1
+ import * as tailwind_variants from 'tailwind-variants';
2
+ import { VariantProps } from 'tailwind-variants';
3
+ import * as React from 'react';
4
+
5
+ declare const buttonVariants: tailwind_variants.TVReturnType<{
6
+ readonly variant: {
7
+ readonly primary: "bg-accent text-on-accent shadow-sm hover:bg-accent-hover";
8
+ readonly gradient: "bg-linear-to-r from-accent to-accent-2 text-on-accent shadow-sm hover:brightness-110";
9
+ readonly secondary: "border border-border-default bg-surface-2 text-fg hover:border-border-strong hover:bg-surface-3";
10
+ readonly outline: "border border-border-default bg-transparent text-fg hover:border-accent hover:text-fg-accent";
11
+ readonly ghost: "text-fg-secondary hover:bg-surface-2 hover:text-fg";
12
+ readonly danger: "border border-danger/50 bg-danger/10 text-fg hover:border-danger hover:bg-danger/20";
13
+ };
14
+ readonly size: {
15
+ readonly sm: "h-8 px-3 text-xs";
16
+ readonly md: "h-10 px-4 text-sm";
17
+ readonly lg: "h-12 px-6 text-sm";
18
+ readonly icon: "h-10 w-10";
19
+ };
20
+ readonly shape: {
21
+ readonly rounded: "rounded-lg";
22
+ readonly pill: "rounded-full";
23
+ readonly cut: "rounded-[10px] [corner-shape:bevel]";
24
+ };
25
+ }, undefined, string, {
26
+ readonly variant: {
27
+ readonly primary: "bg-accent text-on-accent shadow-sm hover:bg-accent-hover";
28
+ readonly gradient: "bg-linear-to-r from-accent to-accent-2 text-on-accent shadow-sm hover:brightness-110";
29
+ readonly secondary: "border border-border-default bg-surface-2 text-fg hover:border-border-strong hover:bg-surface-3";
30
+ readonly outline: "border border-border-default bg-transparent text-fg hover:border-accent hover:text-fg-accent";
31
+ readonly ghost: "text-fg-secondary hover:bg-surface-2 hover:text-fg";
32
+ readonly danger: "border border-danger/50 bg-danger/10 text-fg hover:border-danger hover:bg-danger/20";
33
+ };
34
+ readonly size: {
35
+ readonly sm: "h-8 px-3 text-xs";
36
+ readonly md: "h-10 px-4 text-sm";
37
+ readonly lg: "h-12 px-6 text-sm";
38
+ readonly icon: "h-10 w-10";
39
+ };
40
+ readonly shape: {
41
+ readonly rounded: "rounded-lg";
42
+ readonly pill: "rounded-full";
43
+ readonly cut: "rounded-[10px] [corner-shape:bevel]";
44
+ };
45
+ }, undefined, tailwind_variants.TVReturnTypeLike<{
46
+ readonly variant: {
47
+ readonly primary: "bg-accent text-on-accent shadow-sm hover:bg-accent-hover";
48
+ readonly gradient: "bg-linear-to-r from-accent to-accent-2 text-on-accent shadow-sm hover:brightness-110";
49
+ readonly secondary: "border border-border-default bg-surface-2 text-fg hover:border-border-strong hover:bg-surface-3";
50
+ readonly outline: "border border-border-default bg-transparent text-fg hover:border-accent hover:text-fg-accent";
51
+ readonly ghost: "text-fg-secondary hover:bg-surface-2 hover:text-fg";
52
+ readonly danger: "border border-danger/50 bg-danger/10 text-fg hover:border-danger hover:bg-danger/20";
53
+ };
54
+ readonly size: {
55
+ readonly sm: "h-8 px-3 text-xs";
56
+ readonly md: "h-10 px-4 text-sm";
57
+ readonly lg: "h-12 px-6 text-sm";
58
+ readonly icon: "h-10 w-10";
59
+ };
60
+ readonly shape: {
61
+ readonly rounded: "rounded-lg";
62
+ readonly pill: "rounded-full";
63
+ readonly cut: "rounded-[10px] [corner-shape:bevel]";
64
+ };
65
+ }, undefined>>;
66
+ type ButtonVariants = VariantProps<typeof buttonVariants>;
67
+ type ButtonProps = React.ComponentProps<"button"> & ButtonVariants & {
68
+ /**
69
+ * The look: `primary` (the accent), `gradient` (accent → accent-2), `secondary` (a raised surface), `outline`,
70
+ * `ghost`, `danger`.
71
+ * @default "secondary"
72
+ */
73
+ variant?: ButtonVariants["variant"];
74
+ /**
75
+ * sm · md · lg, or `icon` (a square).
76
+ * @default "md"
77
+ */
78
+ size?: ButtonVariants["size"];
79
+ /**
80
+ * rounded · pill · cut (45° corners, the Krizaka chamfer).
81
+ * @default "rounded"
82
+ */
83
+ shape?: ButtonVariants["shape"];
84
+ /** Renders the child (e.g. a <Link>) instead of the <button>, with props, classes and ref merged. */
85
+ asChild?: boolean;
86
+ /**
87
+ * Disables and signals the wait (aria-busy, data-loading) and shows the Krizaka loader glyph before the label; the
88
+ * button keeps its colour.
89
+ */
90
+ loading?: boolean;
91
+ /**
92
+ * Between 0 and 1, while `loading`: the glyph's trace and a light fill across the button grow to the value (an
93
+ * upload, an export).
94
+ */
95
+ progress?: number | null;
96
+ /**
97
+ * How the action ended: `success` draws a check, `error` a cross (and the button shakes its head once); a ring of
98
+ * the status colour opens around it. Clear it to return to rest.
99
+ */
100
+ status?: "success" | "error" | null;
101
+ /** A message announced politely by assistive technology when it changes (“Saved”, “Upload failed”) — passed translated. */
102
+ announce?: string;
103
+ /**
104
+ * Shows the glyph while `loading` / with a `status`. `false`: you draw your own.
105
+ * @default true
106
+ */
107
+ indicator?: boolean;
108
+ /** A sheen of light crosses the button on hover — for the one action a page is about. */
109
+ shimmer?: boolean;
110
+ /** The button leans a few pixels toward a fine pointer (driven by `MotionObserver`; never under reduced motion or on touch). */
111
+ magnetic?: boolean;
112
+ };
113
+
114
+ export type { ButtonProps as B, ButtonVariants as a };
package/dist/button.d.ts CHANGED
@@ -3,64 +3,64 @@ import { VariantProps } from 'tailwind-variants';
3
3
  import * as React from 'react';
4
4
 
5
5
  declare const buttonVariants: tailwind_variants.TVReturnType<{
6
- variant: {
7
- primary: "bg-accent text-on-accent shadow-sm hover:bg-accent-hover";
8
- gradient: "bg-linear-to-r from-accent to-accent-2 text-on-accent shadow-sm hover:brightness-110";
9
- secondary: "border border-border-default bg-surface-2 text-fg hover:border-border-strong hover:bg-surface-3";
10
- outline: "border border-border-default bg-transparent text-fg hover:border-accent hover:text-fg-accent";
11
- ghost: "text-fg-secondary hover:bg-surface-2 hover:text-fg";
12
- danger: "border border-danger/50 bg-danger/10 text-fg hover:border-danger hover:bg-danger/20";
6
+ readonly variant: {
7
+ readonly primary: "bg-accent text-on-accent shadow-sm hover:bg-accent-hover";
8
+ readonly gradient: "bg-linear-to-r from-accent to-accent-2 text-on-accent shadow-sm hover:brightness-110";
9
+ readonly secondary: "border border-border-default bg-surface-2 text-fg hover:border-border-strong hover:bg-surface-3";
10
+ readonly outline: "border border-border-default bg-transparent text-fg hover:border-accent hover:text-fg-accent";
11
+ readonly ghost: "text-fg-secondary hover:bg-surface-2 hover:text-fg";
12
+ readonly danger: "border border-danger/50 bg-danger/10 text-fg hover:border-danger hover:bg-danger/20";
13
13
  };
14
- size: {
15
- sm: "h-8 px-3 text-xs";
16
- md: "h-10 px-4 text-sm";
17
- lg: "h-12 px-6 text-sm";
18
- icon: "h-10 w-10";
14
+ readonly size: {
15
+ readonly sm: "h-8 px-3 text-xs";
16
+ readonly md: "h-10 px-4 text-sm";
17
+ readonly lg: "h-12 px-6 text-sm";
18
+ readonly icon: "h-10 w-10";
19
19
  };
20
- shape: {
21
- rounded: "rounded-lg";
22
- pill: "rounded-full";
23
- cut: "rounded-[10px] [corner-shape:bevel]";
20
+ readonly shape: {
21
+ readonly rounded: "rounded-lg";
22
+ readonly pill: "rounded-full";
23
+ readonly cut: "rounded-[10px] [corner-shape:bevel]";
24
24
  };
25
25
  }, undefined, string, {
26
- variant: {
27
- primary: "bg-accent text-on-accent shadow-sm hover:bg-accent-hover";
28
- gradient: "bg-linear-to-r from-accent to-accent-2 text-on-accent shadow-sm hover:brightness-110";
29
- secondary: "border border-border-default bg-surface-2 text-fg hover:border-border-strong hover:bg-surface-3";
30
- outline: "border border-border-default bg-transparent text-fg hover:border-accent hover:text-fg-accent";
31
- ghost: "text-fg-secondary hover:bg-surface-2 hover:text-fg";
32
- danger: "border border-danger/50 bg-danger/10 text-fg hover:border-danger hover:bg-danger/20";
26
+ readonly variant: {
27
+ readonly primary: "bg-accent text-on-accent shadow-sm hover:bg-accent-hover";
28
+ readonly gradient: "bg-linear-to-r from-accent to-accent-2 text-on-accent shadow-sm hover:brightness-110";
29
+ readonly secondary: "border border-border-default bg-surface-2 text-fg hover:border-border-strong hover:bg-surface-3";
30
+ readonly outline: "border border-border-default bg-transparent text-fg hover:border-accent hover:text-fg-accent";
31
+ readonly ghost: "text-fg-secondary hover:bg-surface-2 hover:text-fg";
32
+ readonly danger: "border border-danger/50 bg-danger/10 text-fg hover:border-danger hover:bg-danger/20";
33
33
  };
34
- size: {
35
- sm: "h-8 px-3 text-xs";
36
- md: "h-10 px-4 text-sm";
37
- lg: "h-12 px-6 text-sm";
38
- icon: "h-10 w-10";
34
+ readonly size: {
35
+ readonly sm: "h-8 px-3 text-xs";
36
+ readonly md: "h-10 px-4 text-sm";
37
+ readonly lg: "h-12 px-6 text-sm";
38
+ readonly icon: "h-10 w-10";
39
39
  };
40
- shape: {
41
- rounded: "rounded-lg";
42
- pill: "rounded-full";
43
- cut: "rounded-[10px] [corner-shape:bevel]";
40
+ readonly shape: {
41
+ readonly rounded: "rounded-lg";
42
+ readonly pill: "rounded-full";
43
+ readonly cut: "rounded-[10px] [corner-shape:bevel]";
44
44
  };
45
45
  }, undefined, tailwind_variants.TVReturnTypeLike<{
46
- variant: {
47
- primary: "bg-accent text-on-accent shadow-sm hover:bg-accent-hover";
48
- gradient: "bg-linear-to-r from-accent to-accent-2 text-on-accent shadow-sm hover:brightness-110";
49
- secondary: "border border-border-default bg-surface-2 text-fg hover:border-border-strong hover:bg-surface-3";
50
- outline: "border border-border-default bg-transparent text-fg hover:border-accent hover:text-fg-accent";
51
- ghost: "text-fg-secondary hover:bg-surface-2 hover:text-fg";
52
- danger: "border border-danger/50 bg-danger/10 text-fg hover:border-danger hover:bg-danger/20";
46
+ readonly variant: {
47
+ readonly primary: "bg-accent text-on-accent shadow-sm hover:bg-accent-hover";
48
+ readonly gradient: "bg-linear-to-r from-accent to-accent-2 text-on-accent shadow-sm hover:brightness-110";
49
+ readonly secondary: "border border-border-default bg-surface-2 text-fg hover:border-border-strong hover:bg-surface-3";
50
+ readonly outline: "border border-border-default bg-transparent text-fg hover:border-accent hover:text-fg-accent";
51
+ readonly ghost: "text-fg-secondary hover:bg-surface-2 hover:text-fg";
52
+ readonly danger: "border border-danger/50 bg-danger/10 text-fg hover:border-danger hover:bg-danger/20";
53
53
  };
54
- size: {
55
- sm: "h-8 px-3 text-xs";
56
- md: "h-10 px-4 text-sm";
57
- lg: "h-12 px-6 text-sm";
58
- icon: "h-10 w-10";
54
+ readonly size: {
55
+ readonly sm: "h-8 px-3 text-xs";
56
+ readonly md: "h-10 px-4 text-sm";
57
+ readonly lg: "h-12 px-6 text-sm";
58
+ readonly icon: "h-10 w-10";
59
59
  };
60
- shape: {
61
- rounded: "rounded-lg";
62
- pill: "rounded-full";
63
- cut: "rounded-[10px] [corner-shape:bevel]";
60
+ readonly shape: {
61
+ readonly rounded: "rounded-lg";
62
+ readonly pill: "rounded-full";
63
+ readonly cut: "rounded-[10px] [corner-shape:bevel]";
64
64
  };
65
65
  }, undefined>>;
66
66
  type ButtonVariants = VariantProps<typeof buttonVariants>;
package/dist/button.js CHANGED
@@ -2,7 +2,8 @@ import {
2
2
  Button,
3
3
  IconButton,
4
4
  buttonVariants
5
- } from "./chunk-Z6FUPB3Q.js";
5
+ } from "./chunk-2NB27LM7.js";
6
+ import "./chunk-2VNYHG4E.js";
6
7
  import "./chunk-43PTCDTL.js";
7
8
  export {
8
9
  Button,
package/dist/card.d.ts CHANGED
@@ -3,164 +3,164 @@ import { VariantProps } from 'tailwind-variants';
3
3
  import * as React from 'react';
4
4
 
5
5
  declare const card: tailwind_variants.TVReturnType<{
6
- radius: {
7
- md: {
8
- root: string;
6
+ readonly radius: {
7
+ readonly md: {
8
+ readonly root: "rounded-md";
9
9
  };
10
- lg: {
11
- root: string;
10
+ readonly lg: {
11
+ readonly root: "rounded-lg";
12
12
  };
13
- xl: {
14
- root: string;
13
+ readonly xl: {
14
+ readonly root: "rounded-xl";
15
15
  };
16
16
  };
17
- tone: {
18
- default: {};
19
- elevated: {
20
- root: string;
17
+ readonly tone: {
18
+ readonly default: {};
19
+ readonly elevated: {
20
+ readonly root: "bg-surface-2 shadow-md";
21
21
  };
22
- glass: {
23
- root: string;
22
+ readonly glass: {
23
+ readonly root: "bg-surface-1/70 backdrop-blur-md";
24
24
  };
25
25
  };
26
- interactive: {
27
- true: {
28
- root: string;
26
+ readonly interactive: {
27
+ readonly true: {
28
+ readonly root: "kz-spotlight kz-lift hover:border-accent/50";
29
29
  };
30
30
  };
31
- padding: {
32
- none: {
33
- body: string;
31
+ readonly padding: {
32
+ readonly none: {
33
+ readonly body: "p-0";
34
34
  };
35
- sm: {
36
- body: string;
35
+ readonly sm: {
36
+ readonly body: "p-3";
37
37
  };
38
- md: {
39
- body: string;
38
+ readonly md: {
39
+ readonly body: "p-4";
40
40
  };
41
- lg: {
42
- body: string;
41
+ readonly lg: {
42
+ readonly body: "p-6";
43
43
  };
44
44
  };
45
45
  }, {
46
- root: string;
47
- media: string;
48
- image: string;
49
- fallback: string;
50
- overlay: string;
51
- body: string;
52
- title: string;
53
- description: string;
54
- stat: string;
55
- statLabel: string;
56
- statValue: string;
57
- footer: string;
46
+ readonly root: string;
47
+ readonly media: "relative overflow-hidden bg-media";
48
+ readonly image: "h-full w-full object-cover transition-transform duration-500 motion-safe:group-hover:scale-105";
49
+ readonly fallback: "flex h-full w-full items-center justify-center bg-linear-to-br from-accent/15 via-media to-accent-2/15 text-accent/60";
50
+ readonly overlay: "absolute z-10 flex items-center gap-1.5";
51
+ readonly body: "relative flex flex-1 flex-col gap-3";
52
+ readonly title: "line-clamp-1 text-sm font-semibold text-fg transition-colors group-hover:text-fg-accent";
53
+ readonly description: "line-clamp-2 text-xs text-fg-secondary";
54
+ readonly stat: "min-w-0";
55
+ readonly statLabel: "text-[10px] font-semibold uppercase tracking-wider text-fg-secondary";
56
+ readonly statValue: "font-display text-xl font-black tabular-nums text-fg";
57
+ readonly footer: "relative mt-auto flex items-center gap-2 border-t border-border-subtle pt-3 text-xs text-fg-secondary";
58
58
  }, undefined, {
59
- radius: {
60
- md: {
61
- root: string;
59
+ readonly radius: {
60
+ readonly md: {
61
+ readonly root: "rounded-md";
62
62
  };
63
- lg: {
64
- root: string;
63
+ readonly lg: {
64
+ readonly root: "rounded-lg";
65
65
  };
66
- xl: {
67
- root: string;
66
+ readonly xl: {
67
+ readonly root: "rounded-xl";
68
68
  };
69
69
  };
70
- tone: {
71
- default: {};
72
- elevated: {
73
- root: string;
70
+ readonly tone: {
71
+ readonly default: {};
72
+ readonly elevated: {
73
+ readonly root: "bg-surface-2 shadow-md";
74
74
  };
75
- glass: {
76
- root: string;
75
+ readonly glass: {
76
+ readonly root: "bg-surface-1/70 backdrop-blur-md";
77
77
  };
78
78
  };
79
- interactive: {
80
- true: {
81
- root: string;
79
+ readonly interactive: {
80
+ readonly true: {
81
+ readonly root: "kz-spotlight kz-lift hover:border-accent/50";
82
82
  };
83
83
  };
84
- padding: {
85
- none: {
86
- body: string;
84
+ readonly padding: {
85
+ readonly none: {
86
+ readonly body: "p-0";
87
87
  };
88
- sm: {
89
- body: string;
88
+ readonly sm: {
89
+ readonly body: "p-3";
90
90
  };
91
- md: {
92
- body: string;
91
+ readonly md: {
92
+ readonly body: "p-4";
93
93
  };
94
- lg: {
95
- body: string;
94
+ readonly lg: {
95
+ readonly body: "p-6";
96
96
  };
97
97
  };
98
98
  }, {
99
- root: string;
100
- media: string;
101
- image: string;
102
- fallback: string;
103
- overlay: string;
104
- body: string;
105
- title: string;
106
- description: string;
107
- stat: string;
108
- statLabel: string;
109
- statValue: string;
110
- footer: string;
99
+ readonly root: string;
100
+ readonly media: "relative overflow-hidden bg-media";
101
+ readonly image: "h-full w-full object-cover transition-transform duration-500 motion-safe:group-hover:scale-105";
102
+ readonly fallback: "flex h-full w-full items-center justify-center bg-linear-to-br from-accent/15 via-media to-accent-2/15 text-accent/60";
103
+ readonly overlay: "absolute z-10 flex items-center gap-1.5";
104
+ readonly body: "relative flex flex-1 flex-col gap-3";
105
+ readonly title: "line-clamp-1 text-sm font-semibold text-fg transition-colors group-hover:text-fg-accent";
106
+ readonly description: "line-clamp-2 text-xs text-fg-secondary";
107
+ readonly stat: "min-w-0";
108
+ readonly statLabel: "text-[10px] font-semibold uppercase tracking-wider text-fg-secondary";
109
+ readonly statValue: "font-display text-xl font-black tabular-nums text-fg";
110
+ readonly footer: "relative mt-auto flex items-center gap-2 border-t border-border-subtle pt-3 text-xs text-fg-secondary";
111
111
  }, tailwind_variants.TVReturnTypeLike<{
112
- radius: {
113
- md: {
114
- root: string;
112
+ readonly radius: {
113
+ readonly md: {
114
+ readonly root: "rounded-md";
115
115
  };
116
- lg: {
117
- root: string;
116
+ readonly lg: {
117
+ readonly root: "rounded-lg";
118
118
  };
119
- xl: {
120
- root: string;
119
+ readonly xl: {
120
+ readonly root: "rounded-xl";
121
121
  };
122
122
  };
123
- tone: {
124
- default: {};
125
- elevated: {
126
- root: string;
123
+ readonly tone: {
124
+ readonly default: {};
125
+ readonly elevated: {
126
+ readonly root: "bg-surface-2 shadow-md";
127
127
  };
128
- glass: {
129
- root: string;
128
+ readonly glass: {
129
+ readonly root: "bg-surface-1/70 backdrop-blur-md";
130
130
  };
131
131
  };
132
- interactive: {
133
- true: {
134
- root: string;
132
+ readonly interactive: {
133
+ readonly true: {
134
+ readonly root: "kz-spotlight kz-lift hover:border-accent/50";
135
135
  };
136
136
  };
137
- padding: {
138
- none: {
139
- body: string;
137
+ readonly padding: {
138
+ readonly none: {
139
+ readonly body: "p-0";
140
140
  };
141
- sm: {
142
- body: string;
141
+ readonly sm: {
142
+ readonly body: "p-3";
143
143
  };
144
- md: {
145
- body: string;
144
+ readonly md: {
145
+ readonly body: "p-4";
146
146
  };
147
- lg: {
148
- body: string;
147
+ readonly lg: {
148
+ readonly body: "p-6";
149
149
  };
150
150
  };
151
151
  }, {
152
- root: string;
153
- media: string;
154
- image: string;
155
- fallback: string;
156
- overlay: string;
157
- body: string;
158
- title: string;
159
- description: string;
160
- stat: string;
161
- statLabel: string;
162
- statValue: string;
163
- footer: string;
152
+ readonly root: string;
153
+ readonly media: "relative overflow-hidden bg-media";
154
+ readonly image: "h-full w-full object-cover transition-transform duration-500 motion-safe:group-hover:scale-105";
155
+ readonly fallback: "flex h-full w-full items-center justify-center bg-linear-to-br from-accent/15 via-media to-accent-2/15 text-accent/60";
156
+ readonly overlay: "absolute z-10 flex items-center gap-1.5";
157
+ readonly body: "relative flex flex-1 flex-col gap-3";
158
+ readonly title: "line-clamp-1 text-sm font-semibold text-fg transition-colors group-hover:text-fg-accent";
159
+ readonly description: "line-clamp-2 text-xs text-fg-secondary";
160
+ readonly stat: "min-w-0";
161
+ readonly statLabel: "text-[10px] font-semibold uppercase tracking-wider text-fg-secondary";
162
+ readonly statValue: "font-display text-xl font-black tabular-nums text-fg";
163
+ readonly footer: "relative mt-auto flex items-center gap-2 border-t border-border-subtle pt-3 text-xs text-fg-secondary";
164
164
  }>>;
165
165
  type CardVariants = VariantProps<typeof card>;
166
166
  type CardRootProps = React.ComponentProps<"div"> & Pick<CardVariants, "radius" | "tone" | "interactive"> & {
package/dist/card.js CHANGED
@@ -1,3 +1,6 @@
1
+ import {
2
+ defineRecipe
3
+ } from "./chunk-2VNYHG4E.js";
1
4
  import {
2
5
  cn
3
6
  } from "./chunk-4LOMIQVX.js";
@@ -5,8 +8,9 @@ import {
5
8
  // src/card/card.tsx
6
9
  import { Slot } from "radix-ui";
7
10
  import { tv } from "tailwind-variants";
8
- import { jsx, jsxs } from "react/jsx-runtime";
9
- var card = tv({
11
+
12
+ // src/card/recipe.ts
13
+ var cardRecipe = defineRecipe({
10
14
  slots: {
11
15
  root: "group relative flex flex-col overflow-hidden border border-border-default bg-surface-1 text-fg transition-colors focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring",
12
16
  media: "relative overflow-hidden bg-media",
@@ -29,6 +33,10 @@ var card = tv({
29
33
  },
30
34
  defaultVariants: { radius: "xl", tone: "default", padding: "md" }
31
35
  });
36
+
37
+ // src/card/card.tsx
38
+ import { jsx, jsxs } from "react/jsx-runtime";
39
+ var card = tv(cardRecipe);
32
40
  var slots = card();
33
41
  function CardRoot({ asChild, reveal, radius, tone, interactive, className, style, ...props }) {
34
42
  const Comp = asChild ? Slot.Root : "div";