@exegia/corpora-ui 3.0.0 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (909) hide show
  1. package/README.md +20 -0
  2. package/dist-lib/autocomplete-DzjspdKa.js +151 -0
  3. package/dist-lib/base-CiR7nLAD.js +37 -0
  4. package/dist-lib/breadcrumb-DtFOhTfs.js +83 -0
  5. package/dist-lib/button-DDBbG_zF.js +143 -0
  6. package/dist-lib/button.js +3 -0
  7. package/dist-lib/calendar-Dyut8HPa.js +62 -0
  8. package/dist-lib/card.js +150 -0
  9. package/dist-lib/checkbox-group-B0BPFc-K.js +12 -0
  10. package/dist-lib/combobox-BwfmU1S_.js +267 -0
  11. package/dist-lib/components/atoms/text/default.d.ts +2 -1143
  12. package/dist-lib/components/blocks/shell/index.d.ts +1 -0
  13. package/dist-lib/components/blocks/sidebar-primitives/content.d.ts +2 -0
  14. package/dist-lib/components/blocks/sidebar-primitives/context.d.ts +2 -0
  15. package/dist-lib/components/blocks/sidebar-primitives/footer.d.ts +2 -0
  16. package/dist-lib/components/blocks/sidebar-primitives/group-action.d.ts +3 -0
  17. package/dist-lib/components/blocks/sidebar-primitives/group-content.d.ts +2 -0
  18. package/dist-lib/components/blocks/sidebar-primitives/group-label.d.ts +3 -0
  19. package/dist-lib/components/blocks/sidebar-primitives/group.d.ts +2 -0
  20. package/dist-lib/components/blocks/sidebar-primitives/header.d.ts +2 -0
  21. package/dist-lib/components/blocks/sidebar-primitives/index.d.ts +26 -0
  22. package/dist-lib/components/blocks/sidebar-primitives/input.d.ts +3 -0
  23. package/dist-lib/components/blocks/sidebar-primitives/inset.d.ts +2 -0
  24. package/dist-lib/components/blocks/sidebar-primitives/menu-action.d.ts +5 -0
  25. package/dist-lib/components/blocks/sidebar-primitives/menu-badge.d.ts +2 -0
  26. package/dist-lib/components/blocks/sidebar-primitives/menu-button.d.ts +9 -0
  27. package/dist-lib/components/blocks/sidebar-primitives/menu-item.d.ts +2 -0
  28. package/dist-lib/components/blocks/sidebar-primitives/menu-skeleton.d.ts +4 -0
  29. package/dist-lib/components/blocks/sidebar-primitives/menu-sub-button.d.ts +6 -0
  30. package/dist-lib/components/blocks/sidebar-primitives/menu-sub-item.d.ts +2 -0
  31. package/dist-lib/components/blocks/sidebar-primitives/menu-sub.d.ts +2 -0
  32. package/dist-lib/components/blocks/sidebar-primitives/menu.d.ts +2 -0
  33. package/dist-lib/components/blocks/sidebar-primitives/provider.d.ts +3 -0
  34. package/dist-lib/components/blocks/sidebar-primitives/rail.d.ts +2 -0
  35. package/dist-lib/components/blocks/sidebar-primitives/separator.d.ts +3 -0
  36. package/dist-lib/components/blocks/sidebar-primitives/sidebar-atom.d.ts +32 -0
  37. package/dist-lib/components/blocks/sidebar-primitives/sidebar.d.ts +6 -0
  38. package/dist-lib/components/blocks/sidebar-primitives/trigger.d.ts +3 -0
  39. package/dist-lib/components/blocks/sidebar-primitives/types.d.ts +26 -0
  40. package/dist-lib/components/blocks/sidebar-primitives/use-mobile.d.ts +1 -0
  41. package/dist-lib/components/blocks/sidebar-primitives/use-sidebar.d.ts +4 -0
  42. package/dist-lib/components/blocks/sidebar-primitives/utils.d.ts +10 -0
  43. package/dist-lib/components/ui/alert.d.ts +1 -1
  44. package/dist-lib/components/ui/badge.d.ts +2 -2
  45. package/dist-lib/components/ui/breadcrumb/base.d.ts +2 -0
  46. package/dist-lib/components/ui/breadcrumb/ellipsis.d.ts +2 -0
  47. package/dist-lib/components/ui/breadcrumb/index.d.ts +7 -0
  48. package/dist-lib/components/ui/breadcrumb/item.d.ts +2 -0
  49. package/dist-lib/components/ui/breadcrumb/link.d.ts +3 -0
  50. package/dist-lib/components/ui/breadcrumb/list.d.ts +2 -0
  51. package/dist-lib/components/ui/breadcrumb/page.d.ts +2 -0
  52. package/dist-lib/components/ui/breadcrumb/separator.d.ts +2 -0
  53. package/dist-lib/components/ui/button.d.ts +2 -2
  54. package/dist-lib/components/ui/calendar/base.d.ts +3 -0
  55. package/dist-lib/components/ui/calendar/index.d.ts +1 -0
  56. package/dist-lib/components/ui/calendar/utils.d.ts +1 -0
  57. package/dist-lib/components/ui/checkbox-group/base.d.ts +3 -0
  58. package/dist-lib/components/ui/checkbox-group/index.d.ts +2 -0
  59. package/dist-lib/components/ui/combobox/chip-remove.d.ts +3 -0
  60. package/dist-lib/components/ui/combobox/chip.d.ts +5 -0
  61. package/dist-lib/components/ui/combobox/chips-input.d.ts +6 -0
  62. package/dist-lib/components/ui/combobox/chips.d.ts +5 -0
  63. package/dist-lib/components/ui/combobox/clear.d.ts +3 -0
  64. package/dist-lib/components/ui/combobox/collection.d.ts +3 -0
  65. package/dist-lib/components/ui/combobox/context.d.ts +5 -0
  66. package/dist-lib/components/ui/combobox/empty.d.ts +3 -0
  67. package/dist-lib/components/ui/combobox/group-label.d.ts +3 -0
  68. package/dist-lib/components/ui/combobox/group.d.ts +3 -0
  69. package/dist-lib/components/ui/combobox/index.d.ts +22 -0
  70. package/dist-lib/components/ui/combobox/input.d.ts +11 -0
  71. package/dist-lib/components/ui/combobox/item.d.ts +3 -0
  72. package/dist-lib/components/ui/combobox/list.d.ts +3 -0
  73. package/dist-lib/components/ui/combobox/popup.d.ts +10 -0
  74. package/dist-lib/components/ui/combobox/root.d.ts +3 -0
  75. package/dist-lib/components/ui/combobox/row.d.ts +3 -0
  76. package/dist-lib/components/ui/combobox/separator.d.ts +3 -0
  77. package/dist-lib/components/ui/combobox/status.d.ts +3 -0
  78. package/dist-lib/components/ui/combobox/trigger.d.ts +3 -0
  79. package/dist-lib/components/ui/combobox/utils.d.ts +2 -0
  80. package/dist-lib/components/ui/combobox/value.d.ts +3 -0
  81. package/dist-lib/components/ui/dialog/backdrop.d.ts +3 -0
  82. package/dist-lib/components/ui/dialog/close.d.ts +3 -0
  83. package/dist-lib/components/ui/dialog/description.d.ts +3 -0
  84. package/dist-lib/components/ui/dialog/footer.d.ts +5 -0
  85. package/dist-lib/components/ui/dialog/header.d.ts +3 -0
  86. package/dist-lib/components/ui/dialog/index.d.ts +16 -0
  87. package/dist-lib/components/ui/dialog/panel.d.ts +5 -0
  88. package/dist-lib/components/ui/dialog/popup.d.ts +8 -0
  89. package/dist-lib/components/ui/dialog/title.d.ts +3 -0
  90. package/dist-lib/components/ui/dialog/trigger.d.ts +3 -0
  91. package/dist-lib/components/ui/dialog/utils.d.ts +4 -0
  92. package/dist-lib/components/ui/dialog/viewport.d.ts +3 -0
  93. package/dist-lib/components/ui/drawer/backdrop.d.ts +3 -0
  94. package/dist-lib/components/ui/drawer/bar.d.ts +6 -0
  95. package/dist-lib/components/ui/drawer/close.d.ts +3 -0
  96. package/dist-lib/components/ui/drawer/content.d.ts +3 -0
  97. package/dist-lib/components/ui/drawer/context.d.ts +5 -0
  98. package/dist-lib/components/ui/drawer/description.d.ts +3 -0
  99. package/dist-lib/components/ui/drawer/footer.d.ts +6 -0
  100. package/dist-lib/components/ui/drawer/header.d.ts +5 -0
  101. package/dist-lib/components/ui/drawer/index.d.ts +26 -0
  102. package/dist-lib/components/ui/drawer/menu-checkbox-item.d.ts +6 -0
  103. package/dist-lib/components/ui/drawer/menu-group-label.d.ts +3 -0
  104. package/dist-lib/components/ui/drawer/menu-group.d.ts +3 -0
  105. package/dist-lib/components/ui/drawer/menu-item.d.ts +5 -0
  106. package/dist-lib/components/ui/drawer/menu-radio-group.d.ts +3 -0
  107. package/dist-lib/components/ui/drawer/menu-radio-item.d.ts +6 -0
  108. package/dist-lib/components/ui/drawer/menu-separator.d.ts +3 -0
  109. package/dist-lib/components/ui/drawer/menu-trigger.d.ts +3 -0
  110. package/dist-lib/components/ui/drawer/menu.d.ts +3 -0
  111. package/dist-lib/components/ui/drawer/panel.d.ts +7 -0
  112. package/dist-lib/components/ui/drawer/popup.d.ts +10 -0
  113. package/dist-lib/components/ui/drawer/portal.d.ts +3 -0
  114. package/dist-lib/components/ui/drawer/root.d.ts +6 -0
  115. package/dist-lib/components/ui/drawer/swipe-area.d.ts +6 -0
  116. package/dist-lib/components/ui/drawer/title.d.ts +3 -0
  117. package/dist-lib/components/ui/drawer/trigger.d.ts +3 -0
  118. package/dist-lib/components/ui/drawer/types.d.ts +1 -0
  119. package/dist-lib/components/ui/drawer/utils.d.ts +4 -0
  120. package/dist-lib/components/ui/drawer/viewport.d.ts +7 -0
  121. package/dist-lib/components/ui/empty/base.d.ts +2 -0
  122. package/dist-lib/components/ui/empty/content.d.ts +2 -0
  123. package/dist-lib/components/ui/empty/description.d.ts +2 -0
  124. package/dist-lib/components/ui/empty/header.d.ts +2 -0
  125. package/dist-lib/components/ui/empty/index.d.ts +6 -0
  126. package/dist-lib/components/ui/empty/media.d.ts +4 -0
  127. package/dist-lib/components/ui/empty/title.d.ts +2 -0
  128. package/dist-lib/components/ui/empty/utils.d.ts +3 -0
  129. package/dist-lib/components/ui/fieldset/base.d.ts +3 -0
  130. package/dist-lib/components/ui/fieldset/index.d.ts +3 -0
  131. package/dist-lib/components/ui/fieldset/legend.d.ts +3 -0
  132. package/dist-lib/components/ui/form/base.d.ts +3 -0
  133. package/dist-lib/components/ui/form/index.d.ts +2 -0
  134. package/dist-lib/components/ui/glasscn/lazy-glass-surface.d.ts +6 -0
  135. package/dist-lib/components/ui/meter/base.d.ts +3 -0
  136. package/dist-lib/components/ui/meter/index.d.ts +6 -0
  137. package/dist-lib/components/ui/meter/indicator.d.ts +3 -0
  138. package/dist-lib/components/ui/meter/label.d.ts +3 -0
  139. package/dist-lib/components/ui/meter/track.d.ts +3 -0
  140. package/dist-lib/components/ui/meter/value.d.ts +3 -0
  141. package/dist-lib/components/ui/modal.d.ts +10 -0
  142. package/dist-lib/components/ui/number-field/base.d.ts +5 -0
  143. package/dist-lib/components/ui/number-field/context.d.ts +4 -0
  144. package/dist-lib/components/ui/number-field/cursor-grow-icon.d.ts +2 -0
  145. package/dist-lib/components/ui/number-field/decrement.d.ts +3 -0
  146. package/dist-lib/components/ui/number-field/group.d.ts +3 -0
  147. package/dist-lib/components/ui/number-field/increment.d.ts +3 -0
  148. package/dist-lib/components/ui/number-field/index.d.ts +9 -0
  149. package/dist-lib/components/ui/number-field/input.d.ts +3 -0
  150. package/dist-lib/components/ui/number-field/scrub-area.d.ts +5 -0
  151. package/dist-lib/components/ui/overlays.d.ts +4 -0
  152. package/dist-lib/components/ui/pagination/base.d.ts +2 -0
  153. package/dist-lib/components/ui/pagination/content.d.ts +2 -0
  154. package/dist-lib/components/ui/pagination/ellipsis.d.ts +2 -0
  155. package/dist-lib/components/ui/pagination/index.d.ts +8 -0
  156. package/dist-lib/components/ui/pagination/item.d.ts +2 -0
  157. package/dist-lib/components/ui/pagination/link.d.ts +3 -0
  158. package/dist-lib/components/ui/pagination/next.d.ts +3 -0
  159. package/dist-lib/components/ui/pagination/previous.d.ts +3 -0
  160. package/dist-lib/components/ui/pagination/types.d.ts +7 -0
  161. package/dist-lib/components/ui/preview-card.d.ts +2 -1
  162. package/dist-lib/components/ui/progress/base.d.ts +3 -0
  163. package/dist-lib/components/ui/progress/index.d.ts +6 -0
  164. package/dist-lib/components/ui/progress/indicator.d.ts +3 -0
  165. package/dist-lib/components/ui/progress/label.d.ts +3 -0
  166. package/dist-lib/components/ui/progress/track.d.ts +3 -0
  167. package/dist-lib/components/ui/progress/value.d.ts +3 -0
  168. package/dist-lib/components/ui/radio-group/base.d.ts +3 -0
  169. package/dist-lib/components/ui/radio-group/index.d.ts +5 -0
  170. package/dist-lib/components/ui/radio-group/radio.d.ts +3 -0
  171. package/dist-lib/components/ui/select.d.ts +1 -1
  172. package/dist-lib/components/ui/sheet-parts/backdrop.d.ts +2 -0
  173. package/dist-lib/components/ui/sheet-parts/overlay.d.ts +2 -0
  174. package/dist-lib/components/ui/sheet-parts/panel.d.ts +5 -0
  175. package/dist-lib/components/ui/sheet-parts/popup.d.ts +10 -0
  176. package/dist-lib/components/ui/sheet-parts/portal.d.ts +2 -0
  177. package/dist-lib/components/ui/sheet-parts/viewport.d.ts +6 -0
  178. package/dist-lib/components/ui/sheet.d.ts +19 -9
  179. package/dist-lib/components/ui/slider/base.d.ts +3 -0
  180. package/dist-lib/components/ui/slider/index.d.ts +3 -0
  181. package/dist-lib/components/ui/slider/value.d.ts +3 -0
  182. package/dist-lib/components/ui/table/base.d.ts +3 -0
  183. package/dist-lib/components/ui/table/body.d.ts +2 -0
  184. package/dist-lib/components/ui/table/caption.d.ts +2 -0
  185. package/dist-lib/components/ui/table/cell.d.ts +2 -0
  186. package/dist-lib/components/ui/table/footer.d.ts +2 -0
  187. package/dist-lib/components/ui/table/head.d.ts +2 -0
  188. package/dist-lib/components/ui/table/header.d.ts +2 -0
  189. package/dist-lib/components/ui/table/index.d.ts +10 -0
  190. package/dist-lib/components/ui/table/row.d.ts +2 -0
  191. package/dist-lib/components/ui/table/types.d.ts +7 -0
  192. package/dist-lib/components/ui/toast.d.ts +2 -0
  193. package/dist-lib/components/ui/toggle/base.d.ts +5 -0
  194. package/dist-lib/components/ui/toggle/index.d.ts +3 -0
  195. package/dist-lib/components/ui/toggle/utils.d.ts +4 -0
  196. package/dist-lib/components/ui/toggle-group/base.d.ts +5 -0
  197. package/dist-lib/components/ui/toggle-group/context.d.ts +4 -0
  198. package/dist-lib/components/ui/toggle-group/index.d.ts +5 -0
  199. package/dist-lib/components/ui/toggle-group/item.d.ts +5 -0
  200. package/dist-lib/components/ui/toggle-group/separator.d.ts +5 -0
  201. package/dist-lib/dialog-BF9rLVsx.js +135 -0
  202. package/dist-lib/drawer-DuQtc_IN.js +350 -0
  203. package/dist-lib/ease-C9At8rnB.js +120 -0
  204. package/dist-lib/empty-CUO4MoHd.js +87 -0
  205. package/dist-lib/exegia-provider-CDYMDsSW.js +126 -0
  206. package/dist-lib/fieldset-C3YDowBt.js +22 -0
  207. package/dist-lib/form-DdxBnCxo.js +12 -0
  208. package/dist-lib/index.css +3 -0
  209. package/dist-lib/index.d.ts +4 -0
  210. package/dist-lib/index.js +6649 -10344
  211. package/dist-lib/input.js +28 -0
  212. package/dist-lib/label.js +19 -0
  213. package/dist-lib/lib/segmented-control.d.ts +1 -1
  214. package/dist-lib/lib/state/exegia-provider.d.ts +17 -8
  215. package/dist-lib/lib/state/index.d.ts +2 -0
  216. package/dist-lib/lib/state/portal-context.d.ts +5 -0
  217. package/dist-lib/lib/state/sound-loading.d.ts +4 -0
  218. package/dist-lib/liquid-glass-BrmOha12.js +50 -0
  219. package/dist-lib/meter-B5i2cf7m.js +49 -0
  220. package/dist-lib/modal-BSBLNZfo.js +24 -0
  221. package/dist-lib/number-field-D5p-WTn_.js +97 -0
  222. package/dist-lib/overlays.js +5 -0
  223. package/dist-lib/pagination-CPOVfufE.js +94 -0
  224. package/dist-lib/popover-BKYgU_p3.js +62 -0
  225. package/dist-lib/portal-context-oIZFl3NP.js +9 -0
  226. package/dist-lib/progress-ByAk9CV5.js +50 -0
  227. package/dist-lib/radio-group-CMwDkKFE.js +27 -0
  228. package/dist-lib/rolldown-runtime-Dy4uBu1J.js +11 -0
  229. package/dist-lib/scaffold-DjS8eLk9.js +925 -0
  230. package/dist-lib/scaffold.js +2 -0
  231. package/dist-lib/scroll-area-BNcHlmRX.js +39 -0
  232. package/dist-lib/separator-D7T-98IV.js +14 -0
  233. package/dist-lib/sheet-BAYosIsg.js +148 -0
  234. package/dist-lib/sheet-D4fmEZW5.js +22 -0
  235. package/dist-lib/shell-WTIa9_ul.js +722 -0
  236. package/dist-lib/shell.js +2 -0
  237. package/dist-lib/sidebar-1j5RYZ2t.js +529 -0
  238. package/dist-lib/skeleton-CwqQoMiY.js +12 -0
  239. package/dist-lib/slider-_1H30BMt.js +48 -0
  240. package/dist-lib/sound-knGH4lj-.js +19 -0
  241. package/dist-lib/spinner-cwaneGYM.js +14 -0
  242. package/dist-lib/state.js +2 -0
  243. package/dist-lib/table-D43_yedE.js +87 -0
  244. package/dist-lib/tabs-CwWnKxRI.js +66 -0
  245. package/dist-lib/textarea-CxycYTkF.js +27 -0
  246. package/dist-lib/toast-BLwJEhKU.js +151 -0
  247. package/dist-lib/toggle-group-BzDvDKL0.js +55 -0
  248. package/dist-lib/tooltip-aPB3pyrl.js +39 -0
  249. package/dist-lib/ui/accordion.d.ts +1 -0
  250. package/dist-lib/ui/accordion.js +45 -0
  251. package/dist-lib/ui/alert-dialog.d.ts +1 -0
  252. package/dist-lib/ui/alert-dialog.js +74 -0
  253. package/dist-lib/ui/alert.d.ts +1 -0
  254. package/dist-lib/ui/alert.js +45 -0
  255. package/dist-lib/ui/autocomplete.d.ts +1 -0
  256. package/dist-lib/ui/autocomplete.js +2 -0
  257. package/dist-lib/ui/avatar.d.ts +2 -0
  258. package/dist-lib/ui/avatar.js +50 -0
  259. package/dist-lib/ui/badge.d.ts +2 -0
  260. package/dist-lib/ui/badge.js +72 -0
  261. package/dist-lib/ui/breadcrumb.d.ts +1 -0
  262. package/dist-lib/ui/breadcrumb.js +2 -0
  263. package/dist-lib/ui/button.d.ts +2 -0
  264. package/dist-lib/ui/button.js +2 -0
  265. package/dist-lib/ui/calendar.d.ts +1 -0
  266. package/dist-lib/ui/calendar.js +2 -0
  267. package/dist-lib/ui/card.d.ts +1 -0
  268. package/dist-lib/ui/card.js +2 -0
  269. package/dist-lib/ui/checkbox-group.d.ts +1 -0
  270. package/dist-lib/ui/checkbox-group.js +2 -0
  271. package/dist-lib/ui/checkbox.d.ts +1 -0
  272. package/dist-lib/ui/checkbox.js +51 -0
  273. package/dist-lib/ui/collapsible.d.ts +1 -0
  274. package/dist-lib/ui/collapsible.js +26 -0
  275. package/dist-lib/ui/combobox.d.ts +1 -0
  276. package/dist-lib/ui/combobox.js +2 -0
  277. package/dist-lib/ui/command.d.ts +1 -0
  278. package/dist-lib/ui/command.js +125 -0
  279. package/dist-lib/ui/context-menu.d.ts +1 -0
  280. package/dist-lib/ui/context-menu.js +178 -0
  281. package/dist-lib/ui/dialog.d.ts +1 -0
  282. package/dist-lib/ui/dialog.js +2 -0
  283. package/dist-lib/ui/drawer.d.ts +1 -0
  284. package/dist-lib/ui/drawer.js +2 -0
  285. package/dist-lib/ui/empty.d.ts +1 -0
  286. package/dist-lib/ui/empty.js +2 -0
  287. package/dist-lib/ui/field.d.ts +1 -0
  288. package/dist-lib/ui/field.js +42 -0
  289. package/dist-lib/ui/fieldset.d.ts +1 -0
  290. package/dist-lib/ui/fieldset.js +2 -0
  291. package/dist-lib/ui/form.d.ts +1 -0
  292. package/dist-lib/ui/form.js +2 -0
  293. package/dist-lib/ui/frame.d.ts +1 -0
  294. package/dist-lib/ui/frame.js +47 -0
  295. package/dist-lib/ui/group.d.ts +1 -0
  296. package/dist-lib/ui/group.js +44 -0
  297. package/dist-lib/ui/index.d.ts +55 -0
  298. package/dist-lib/ui/index.js +497 -0
  299. package/dist-lib/ui/input-group.d.ts +1 -0
  300. package/dist-lib/ui/input-group.js +59 -0
  301. package/dist-lib/ui/input.d.ts +2 -0
  302. package/dist-lib/ui/input.js +2 -0
  303. package/dist-lib/ui/kbd.d.ts +1 -0
  304. package/dist-lib/ui/kbd.js +19 -0
  305. package/dist-lib/ui/label.d.ts +1 -0
  306. package/dist-lib/ui/label.js +2 -0
  307. package/dist-lib/ui/menu.d.ts +1 -0
  308. package/dist-lib/ui/menu.js +178 -0
  309. package/dist-lib/ui/meter.d.ts +1 -0
  310. package/dist-lib/ui/meter.js +2 -0
  311. package/dist-lib/ui/number-field.d.ts +1 -0
  312. package/dist-lib/ui/number-field.js +2 -0
  313. package/dist-lib/ui/otp-field.d.ts +1 -0
  314. package/dist-lib/ui/otp-field.js +36 -0
  315. package/dist-lib/ui/pagination.d.ts +1 -0
  316. package/dist-lib/ui/pagination.js +2 -0
  317. package/dist-lib/ui/popover.d.ts +1 -0
  318. package/dist-lib/ui/popover.js +2 -0
  319. package/dist-lib/ui/preview-card.d.ts +1 -0
  320. package/dist-lib/ui/preview-card.js +35 -0
  321. package/dist-lib/ui/progress.d.ts +1 -0
  322. package/dist-lib/ui/progress.js +2 -0
  323. package/dist-lib/ui/radio-group.d.ts +1 -0
  324. package/dist-lib/ui/radio-group.js +2 -0
  325. package/dist-lib/ui/scroll-area.d.ts +1 -0
  326. package/dist-lib/ui/scroll-area.js +2 -0
  327. package/dist-lib/ui/select.d.ts +2 -0
  328. package/dist-lib/ui/select.js +145 -0
  329. package/dist-lib/ui/separator.d.ts +2 -0
  330. package/dist-lib/ui/separator.js +3 -0
  331. package/dist-lib/ui/sheet.d.ts +1 -0
  332. package/dist-lib/ui/sheet.js +3 -0
  333. package/dist-lib/ui/sidebar.d.ts +1 -0
  334. package/dist-lib/ui/sidebar.js +2 -0
  335. package/dist-lib/ui/skeleton.d.ts +1 -0
  336. package/dist-lib/ui/skeleton.js +2 -0
  337. package/dist-lib/ui/slider.d.ts +1 -0
  338. package/dist-lib/ui/slider.js +2 -0
  339. package/dist-lib/ui/spinner.d.ts +1 -0
  340. package/dist-lib/ui/spinner.js +2 -0
  341. package/dist-lib/ui/switch.d.ts +1 -0
  342. package/dist-lib/ui/switch.js +17 -0
  343. package/dist-lib/ui/table.d.ts +1 -0
  344. package/dist-lib/ui/table.js +2 -0
  345. package/dist-lib/ui/tabs.d.ts +1 -0
  346. package/dist-lib/ui/tabs.js +2 -0
  347. package/dist-lib/ui/textarea.d.ts +2 -0
  348. package/dist-lib/ui/textarea.js +2 -0
  349. package/dist-lib/ui/toast.d.ts +1 -0
  350. package/dist-lib/ui/toast.js +2 -0
  351. package/dist-lib/ui/toggle-group.d.ts +1 -0
  352. package/dist-lib/ui/toggle-group.js +2 -0
  353. package/dist-lib/ui/toggle.d.ts +1 -0
  354. package/dist-lib/ui/toggle.js +3 -0
  355. package/dist-lib/ui/toolbar.d.ts +1 -0
  356. package/dist-lib/ui/toolbar.js +48 -0
  357. package/dist-lib/ui/tooltip.d.ts +1 -0
  358. package/dist-lib/ui/tooltip.js +2 -0
  359. package/dist-lib/utils-BO0qfoA6.js +61 -0
  360. package/package.json +285 -23
  361. package/dist-lib/components/atoms/_layout.d.ts +0 -4
  362. package/dist-lib/components/atoms/bubble/__tests__/bubble.test.d.ts +0 -1
  363. package/dist-lib/components/atoms/bubble/__tests__/reference.test.d.ts +0 -1
  364. package/dist-lib/components/atoms/text/__tests__/text.test.d.ts +0 -1
  365. package/dist-lib/components/atoms/text-selection/__tests__/click-popover.test.d.ts +0 -1
  366. package/dist-lib/components/atoms/text-selection/__tests__/text-selection.test.d.ts +0 -1
  367. package/dist-lib/components/blocks/auth/__tests__/auth-flow-block.test.d.ts +0 -1
  368. package/dist-lib/components/blocks/auth/__tests__/auth-state-atom.test.d.ts +0 -1
  369. package/dist-lib/components/blocks/auth/__tests__/linked-accounts-block.test.d.ts +0 -1
  370. package/dist-lib/components/blocks/auth/__tests__/onboarding-block.test.d.ts +0 -1
  371. package/dist-lib/components/blocks/auth/__tests__/passkey-manager-block.test.d.ts +0 -1
  372. package/dist-lib/components/blocks/auth/__tests__/passkey-sign-in-block.test.d.ts +0 -1
  373. package/dist-lib/components/blocks/auth/__tests__/signup-block.test.d.ts +0 -1
  374. package/dist-lib/components/blocks/auth/__tests__/update-password-block.test.d.ts +0 -1
  375. package/dist-lib/components/blocks/chat/__tests__/ai-panel.test.d.ts +0 -1
  376. package/dist-lib/components/blocks/profile/__tests__/profile-card-block.test.d.ts +0 -1
  377. package/dist-lib/components/blocks/scaffold/__tests__/scaffold-atom.test.d.ts +0 -1
  378. package/dist-lib/components/blocks/scaffold/__tests__/scaffold.test.d.ts +0 -1
  379. package/dist-lib/components/blocks/shell/__tests__/shell-fit-atom.test.d.ts +0 -1
  380. package/dist-lib/components/blocks/shell/__tests__/shell-layout.test.d.ts +0 -1
  381. package/dist-lib/components/blocks/shell/__tests__/shell-metrics.test.d.ts +0 -1
  382. package/dist-lib/components/blocks/sidebar/__tests__/ai-sidebar-atom.test.d.ts +0 -1
  383. package/dist-lib/components/blocks/sidebar/__tests__/ai-sidebar.test.d.ts +0 -1
  384. package/dist-lib/components/blocks/sidebar/__tests__/use-ai-sidebar.test.d.ts +0 -1
  385. package/dist-lib/components/composed/__tests__/logo.test.d.ts +0 -1
  386. package/dist-lib/components/composed/action-bar/__tests__/action-bar.test.d.ts +0 -1
  387. package/dist-lib/components/composed/ai/__tests__/ai.test.d.ts +0 -1
  388. package/dist-lib/components/composed/chat/__tests__/attachment.test.d.ts +0 -1
  389. package/dist-lib/components/composed/chat/__tests__/beautiful-ui.test.d.ts +0 -1
  390. package/dist-lib/components/composed/chat/__tests__/chart.test.d.ts +0 -1
  391. package/dist-lib/components/composed/chat/__tests__/code-block.test.d.ts +0 -1
  392. package/dist-lib/components/composed/chat/__tests__/composer-attachments.test.d.ts +0 -1
  393. package/dist-lib/components/composed/chat/__tests__/composer.test.d.ts +0 -1
  394. package/dist-lib/components/composed/chat/__tests__/flowchart.test.d.ts +0 -1
  395. package/dist-lib/components/composed/chat/__tests__/glass-material.test.d.ts +0 -1
  396. package/dist-lib/components/composed/chat/__tests__/markdown.test.d.ts +0 -1
  397. package/dist-lib/components/composed/chat/__tests__/menu-command.test.d.ts +0 -1
  398. package/dist-lib/components/composed/chat/__tests__/recommendation.test.d.ts +0 -1
  399. package/dist-lib/components/composed/tree/__tests__/tree-atom.test.d.ts +0 -1
  400. package/dist-lib/components/composed/tree/__tests__/tree.test.d.ts +0 -1
  401. package/dist-lib/components/composed/tree/__tests__/use-tree.test.d.ts +0 -1
  402. package/dist-lib/components/composed/user/__tests__/message.test.d.ts +0 -1
  403. package/dist-lib/components/composed/verse/__tests__/verse.test.d.ts +0 -1
  404. package/dist-lib/components/docs/atoms-gallery.d.ts +0 -12
  405. package/dist-lib/components/docs/block-demo-stage.d.ts +0 -7
  406. package/dist-lib/components/docs/blocks-gallery.d.ts +0 -2
  407. package/dist-lib/components/docs/browser.d.ts +0 -10
  408. package/dist-lib/components/docs/code-block.d.ts +0 -4
  409. package/dist-lib/components/docs/components-gallery.d.ts +0 -2
  410. package/dist-lib/components/docs/demo-controls.d.ts +0 -21
  411. package/dist-lib/components/docs/hero.d.ts +0 -5
  412. package/dist-lib/components/docs/mermaid.d.ts +0 -3
  413. package/dist-lib/components/icons/__tests__/icons.test.d.ts +0 -1
  414. package/dist-lib/components/stories/attachment.story.d.ts +0 -11
  415. package/dist-lib/components/stories/auth-flow-block.story.d.ts +0 -2
  416. package/dist-lib/components/stories/avatar.story.d.ts +0 -6
  417. package/dist-lib/components/stories/base.story.d.ts +0 -6
  418. package/dist-lib/components/stories/bubble.story.d.ts +0 -6
  419. package/dist-lib/components/stories/button.story.d.ts +0 -9
  420. package/dist-lib/components/stories/card.story.d.ts +0 -8
  421. package/dist-lib/components/stories/chart.story.d.ts +0 -71
  422. package/dist-lib/components/stories/checkbox.story.d.ts +0 -6
  423. package/dist-lib/components/stories/code-auth-block.story.d.ts +0 -2
  424. package/dist-lib/components/stories/code-block.story.d.ts +0 -12
  425. package/dist-lib/components/stories/composed-password-input.story.d.ts +0 -6
  426. package/dist-lib/components/stories/context-cards.story.d.ts +0 -3
  427. package/dist-lib/components/stories/emoji-action-bar.story.d.ts +0 -3
  428. package/dist-lib/components/stories/field.story.d.ts +0 -6
  429. package/dist-lib/components/stories/file-icons.story.d.ts +0 -5
  430. package/dist-lib/components/stories/filter-table.story.d.ts +0 -21
  431. package/dist-lib/components/stories/flowchart.story.d.ts +0 -3
  432. package/dist-lib/components/stories/forgot-password-block.story.d.ts +0 -2
  433. package/dist-lib/components/stories/frame.story.d.ts +0 -8
  434. package/dist-lib/components/stories/index.d.ts +0 -54
  435. package/dist-lib/components/stories/input-group.story.d.ts +0 -6
  436. package/dist-lib/components/stories/input.story.d.ts +0 -8
  437. package/dist-lib/components/stories/insight-cards.story.d.ts +0 -74
  438. package/dist-lib/components/stories/label.story.d.ts +0 -8
  439. package/dist-lib/components/stories/linked-accounts-block.story.d.ts +0 -2
  440. package/dist-lib/components/stories/login-block.story.d.ts +0 -2
  441. package/dist-lib/components/stories/logo.story.d.ts +0 -3
  442. package/dist-lib/components/stories/markdown.story.d.ts +0 -7
  443. package/dist-lib/components/stories/menu-command.story.d.ts +0 -13
  444. package/dist-lib/components/stories/onboarding-block.story.d.ts +0 -2
  445. package/dist-lib/components/stories/otp-field.story.d.ts +0 -8
  446. package/dist-lib/components/stories/passkey-manager-block.story.d.ts +0 -2
  447. package/dist-lib/components/stories/passkey-sign-in-block.story.d.ts +0 -2
  448. package/dist-lib/components/stories/password-input.story.d.ts +0 -9
  449. package/dist-lib/components/stories/profile-card-block.story.d.ts +0 -6
  450. package/dist-lib/components/stories/recommendation-card.story.d.ts +0 -3
  451. package/dist-lib/components/stories/records-table.story.d.ts +0 -23
  452. package/dist-lib/components/stories/reference.story.d.ts +0 -9
  453. package/dist-lib/components/stories/research-answer.story.d.ts +0 -10
  454. package/dist-lib/components/stories/scaffold-root.story.d.ts +0 -6
  455. package/dist-lib/components/stories/separator.story.d.ts +0 -6
  456. package/dist-lib/components/stories/shell-layout.story.d.ts +0 -2
  457. package/dist-lib/components/stories/signup-block.story.d.ts +0 -2
  458. package/dist-lib/components/stories/social-providers.story.d.ts +0 -3
  459. package/dist-lib/components/stories/streaming-text.story.d.ts +0 -3
  460. package/dist-lib/components/stories/text.story.d.ts +0 -8
  461. package/dist-lib/components/stories/textarea.story.d.ts +0 -6
  462. package/dist-lib/components/stories/tree.story.d.ts +0 -4
  463. package/dist-lib/components/stories/update-password-block.story.d.ts +0 -2
  464. package/dist-lib/components/stories/user.story.d.ts +0 -8
  465. package/dist-lib/components/stories/verse.story.d.ts +0 -6
  466. package/dist-lib/components/ui/chat/__tests__/segmented-toggle.test.d.ts +0 -1
  467. package/dist-lib/index.js.map +0 -1
  468. package/dist-lib/lib/state/__tests__/sound.test.d.ts +0 -1
  469. package/dist-lib/lib/utils.test.d.ts +0 -1
  470. package/src/assets/css/base.css +0 -62
  471. package/src/assets/css/chat.css +0 -229
  472. package/src/assets/css/shadows.css +0 -157
  473. package/src/assets/css/theme.css +0 -321
  474. package/src/components/AGENTS.md +0 -0
  475. package/src/components/atoms/_layout.tsx +0 -9
  476. package/src/components/atoms/avatar/base.tsx +0 -70
  477. package/src/components/atoms/avatar/index.ts +0 -10
  478. package/src/components/atoms/avatar/types.ts +0 -24
  479. package/src/components/atoms/avatar/utils.ts +0 -54
  480. package/src/components/atoms/avatar/verified.tsx +0 -16
  481. package/src/components/atoms/background/index.ts +0 -8
  482. package/src/components/atoms/background/texture.tsx +0 -29
  483. package/src/components/atoms/background/type.ts +0 -10
  484. package/src/components/atoms/background/utils.ts +0 -13
  485. package/src/components/atoms/bubble/__tests__/bubble.test.tsx +0 -193
  486. package/src/components/atoms/bubble/__tests__/reference.test.tsx +0 -25
  487. package/src/components/atoms/bubble/actions.tsx +0 -28
  488. package/src/components/atoms/bubble/context.ts +0 -11
  489. package/src/components/atoms/bubble/default.tsx +0 -46
  490. package/src/components/atoms/bubble/header.tsx +0 -36
  491. package/src/components/atoms/bubble/index.ts +0 -37
  492. package/src/components/atoms/bubble/message.tsx +0 -32
  493. package/src/components/atoms/bubble/reactions.tsx +0 -191
  494. package/src/components/atoms/bubble/types.ts +0 -82
  495. package/src/components/atoms/bubble/utils.ts +0 -46
  496. package/src/components/atoms/chip.tsx +0 -61
  497. package/src/components/atoms/field.tsx +0 -43
  498. package/src/components/atoms/index.ts +0 -26
  499. package/src/components/atoms/loader.tsx +0 -33
  500. package/src/components/atoms/reference.tsx +0 -41
  501. package/src/components/atoms/text/__tests__/text.test.tsx +0 -47
  502. package/src/components/atoms/text/default.tsx +0 -59
  503. package/src/components/atoms/text/heading.tsx +0 -58
  504. package/src/components/atoms/text/index.ts +0 -28
  505. package/src/components/atoms/text/label.tsx +0 -16
  506. package/src/components/atoms/text/paragraph.tsx +0 -55
  507. package/src/components/atoms/text/span.tsx +0 -14
  508. package/src/components/atoms/text/types.ts +0 -41
  509. package/src/components/atoms/text/utils.ts +0 -16
  510. package/src/components/atoms/text-selection/__tests__/click-popover.test.tsx +0 -61
  511. package/src/components/atoms/text-selection/__tests__/text-selection.test.tsx +0 -90
  512. package/src/components/atoms/text-selection/click-popover.tsx +0 -62
  513. package/src/components/atoms/text-selection/index.ts +0 -30
  514. package/src/components/atoms/text-selection/popover.tsx +0 -103
  515. package/src/components/atoms/text-selection/selection-atom.ts +0 -51
  516. package/src/components/atoms/text-selection/selection.tsx +0 -56
  517. package/src/components/atoms/text-selection/types.ts +0 -125
  518. package/src/components/atoms/text-selection/use-selection.ts +0 -84
  519. package/src/components/atoms/types.ts +0 -46
  520. package/src/components/blocks/.gitkeep +0 -0
  521. package/src/components/blocks/auth/__tests__/auth-flow-block.test.tsx +0 -183
  522. package/src/components/blocks/auth/__tests__/auth-state-atom.test.tsx +0 -247
  523. package/src/components/blocks/auth/__tests__/linked-accounts-block.test.tsx +0 -128
  524. package/src/components/blocks/auth/__tests__/onboarding-block.test.tsx +0 -183
  525. package/src/components/blocks/auth/__tests__/passkey-manager-block.test.tsx +0 -131
  526. package/src/components/blocks/auth/__tests__/passkey-sign-in-block.test.tsx +0 -59
  527. package/src/components/blocks/auth/__tests__/signup-block.test.tsx +0 -176
  528. package/src/components/blocks/auth/__tests__/update-password-block.test.tsx +0 -95
  529. package/src/components/blocks/auth/auth-flow-atom.ts +0 -238
  530. package/src/components/blocks/auth/auth-flow-block.tsx +0 -211
  531. package/src/components/blocks/auth/auth-session-atom.ts +0 -82
  532. package/src/components/blocks/auth/auth-shell.tsx +0 -265
  533. package/src/components/blocks/auth/auth-state.ts +0 -40
  534. package/src/components/blocks/auth/code-auth-block.tsx +0 -176
  535. package/src/components/blocks/auth/forgot-password-block.tsx +0 -112
  536. package/src/components/blocks/auth/linked-accounts-block.tsx +0 -203
  537. package/src/components/blocks/auth/login-block.tsx +0 -217
  538. package/src/components/blocks/auth/onboarding/profile-step.tsx +0 -216
  539. package/src/components/blocks/auth/onboarding-block.tsx +0 -183
  540. package/src/components/blocks/auth/passkey-manager-block.tsx +0 -316
  541. package/src/components/blocks/auth/passkey-sign-in-block.tsx +0 -67
  542. package/src/components/blocks/auth/signup-block.tsx +0 -256
  543. package/src/components/blocks/auth/type.ts +0 -436
  544. package/src/components/blocks/auth/update-password-block.tsx +0 -139
  545. package/src/components/blocks/auth/use-auth-state.ts +0 -127
  546. package/src/components/blocks/chat/__tests__/ai-panel.test.tsx +0 -65
  547. package/src/components/blocks/chat/banners.tsx +0 -61
  548. package/src/components/blocks/chat/base.tsx +0 -84
  549. package/src/components/blocks/chat/header.tsx +0 -60
  550. package/src/components/blocks/chat/index.ts +0 -37
  551. package/src/components/blocks/chat/recommendation-stack.tsx +0 -41
  552. package/src/components/blocks/chat/shared.tsx +0 -27
  553. package/src/components/blocks/chat/suggested-prompts.tsx +0 -45
  554. package/src/components/blocks/chat/type.ts +0 -96
  555. package/src/components/blocks/chat/version-history-record.tsx +0 -37
  556. package/src/components/blocks/layout.ts +0 -35
  557. package/src/components/blocks/profile/__tests__/profile-card-block.test.tsx +0 -362
  558. package/src/components/blocks/profile/index.ts +0 -28
  559. package/src/components/blocks/profile/profile-card-atom.ts +0 -247
  560. package/src/components/blocks/profile/profile-card-block.tsx +0 -369
  561. package/src/components/blocks/profile/type.ts +0 -93
  562. package/src/components/blocks/profile/use-profile-card-state.ts +0 -67
  563. package/src/components/blocks/profile/use-profile-card.ts +0 -132
  564. package/src/components/blocks/scaffold/__tests__/scaffold-atom.test.tsx +0 -236
  565. package/src/components/blocks/scaffold/__tests__/scaffold.test.tsx +0 -524
  566. package/src/components/blocks/scaffold/constants.ts +0 -39
  567. package/src/components/blocks/scaffold/index.ts +0 -60
  568. package/src/components/blocks/scaffold/panel-close-button.tsx +0 -36
  569. package/src/components/blocks/scaffold/panel-menu-button.tsx +0 -221
  570. package/src/components/blocks/scaffold/scaffold-actions.tsx +0 -92
  571. package/src/components/blocks/scaffold/scaffold-atom.ts +0 -427
  572. package/src/components/blocks/scaffold/scaffold-canvas.tsx +0 -162
  573. package/src/components/blocks/scaffold/scaffold-context.ts +0 -20
  574. package/src/components/blocks/scaffold/scaffold-inspector.tsx +0 -137
  575. package/src/components/blocks/scaffold/scaffold-main.tsx +0 -28
  576. package/src/components/blocks/scaffold/scaffold-panel.tsx +0 -186
  577. package/src/components/blocks/scaffold/scaffold-root.tsx +0 -120
  578. package/src/components/blocks/scaffold/scaffold-sidebar.tsx +0 -31
  579. package/src/components/blocks/scaffold/scaffold-sub-panel.tsx +0 -122
  580. package/src/components/blocks/scaffold/scaffold-tab.tsx +0 -108
  581. package/src/components/blocks/scaffold/type.ts +0 -264
  582. package/src/components/blocks/scaffold/use-scaffold-state.ts +0 -85
  583. package/src/components/blocks/scaffold/use-scaffold.ts +0 -59
  584. package/src/components/blocks/scaffold/utils.ts +0 -112
  585. package/src/components/blocks/shell/__tests__/shell-fit-atom.test.tsx +0 -362
  586. package/src/components/blocks/shell/__tests__/shell-layout.test.tsx +0 -596
  587. package/src/components/blocks/shell/__tests__/shell-metrics.test.ts +0 -154
  588. package/src/components/blocks/shell/animated-panel-inset.tsx +0 -27
  589. package/src/components/blocks/shell/animated-panel-provider.tsx +0 -269
  590. package/src/components/blocks/shell/animated-panel-trigger.tsx +0 -51
  591. package/src/components/blocks/shell/animated-panel.tsx +0 -180
  592. package/src/components/blocks/shell/index.ts +0 -30
  593. package/src/components/blocks/shell/shell-fit-atom.ts +0 -246
  594. package/src/components/blocks/shell/shell-layout.tsx +0 -139
  595. package/src/components/blocks/shell/shell-metrics.ts +0 -133
  596. package/src/components/blocks/shell/shell-panel-atom.ts +0 -74
  597. package/src/components/blocks/shell/type.ts +0 -361
  598. package/src/components/blocks/shell/use-shell-fit-state.ts +0 -49
  599. package/src/components/blocks/shell/use-shell-fit.ts +0 -153
  600. package/src/components/blocks/shell/use-shell-panels.ts +0 -126
  601. package/src/components/blocks/shell/utils.ts +0 -187
  602. package/src/components/blocks/sidebar/__tests__/ai-sidebar-atom.test.tsx +0 -325
  603. package/src/components/blocks/sidebar/__tests__/ai-sidebar.test.tsx +0 -93
  604. package/src/components/blocks/sidebar/__tests__/use-ai-sidebar.test.tsx +0 -310
  605. package/src/components/blocks/sidebar/ai-sidebar-atom.ts +0 -698
  606. package/src/components/blocks/sidebar/ai-sidebar.tsx +0 -150
  607. package/src/components/blocks/sidebar/index.ts +0 -67
  608. package/src/components/blocks/sidebar/marquee-label.tsx +0 -59
  609. package/src/components/blocks/sidebar/sidebar-context.ts +0 -15
  610. package/src/components/blocks/sidebar/sidebar-icon.tsx +0 -14
  611. package/src/components/blocks/sidebar/sidebar-row.tsx +0 -378
  612. package/src/components/blocks/sidebar/type.ts +0 -294
  613. package/src/components/blocks/sidebar/use-ai-sidebar-state.ts +0 -123
  614. package/src/components/blocks/sidebar/use-ai-sidebar.ts +0 -619
  615. package/src/components/blocks/sidebar/utils.ts +0 -170
  616. package/src/components/blocks/types.ts +0 -6
  617. package/src/components/composed/.gitkeep +0 -0
  618. package/src/components/composed/__tests__/logo.test.tsx +0 -60
  619. package/src/components/composed/action-bar/__tests__/action-bar.test.tsx +0 -125
  620. package/src/components/composed/action-bar/action.tsx +0 -77
  621. package/src/components/composed/action-bar/emojis.tsx +0 -97
  622. package/src/components/composed/action-bar/index.ts +0 -24
  623. package/src/components/composed/action-bar/toolbar.tsx +0 -66
  624. package/src/components/composed/action-bar/types.ts +0 -58
  625. package/src/components/composed/action-bar/utils.ts +0 -140
  626. package/src/components/composed/ai/__tests__/ai.test.tsx +0 -66
  627. package/src/components/composed/ai/avatar.tsx +0 -19
  628. package/src/components/composed/ai/index.ts +0 -36
  629. package/src/components/composed/ai/message.tsx +0 -49
  630. package/src/components/composed/ai/research-answer.tsx +0 -157
  631. package/src/components/composed/ai/shared.tsx +0 -94
  632. package/src/components/composed/ai/streaming-text.tsx +0 -94
  633. package/src/components/composed/ai/suggested-prompt.tsx +0 -183
  634. package/src/components/composed/ai/types.ts +0 -81
  635. package/src/components/composed/chat/__tests__/attachment.test.tsx +0 -218
  636. package/src/components/composed/chat/__tests__/beautiful-ui.test.tsx +0 -57
  637. package/src/components/composed/chat/__tests__/chart.test.tsx +0 -316
  638. package/src/components/composed/chat/__tests__/code-block.test.tsx +0 -12
  639. package/src/components/composed/chat/__tests__/composer-attachments.test.tsx +0 -101
  640. package/src/components/composed/chat/__tests__/composer.test.tsx +0 -248
  641. package/src/components/composed/chat/__tests__/flowchart.test.tsx +0 -145
  642. package/src/components/composed/chat/__tests__/glass-material.test.tsx +0 -54
  643. package/src/components/composed/chat/__tests__/markdown.test.tsx +0 -25
  644. package/src/components/composed/chat/__tests__/menu-command.test.tsx +0 -35
  645. package/src/components/composed/chat/__tests__/recommendation.test.tsx +0 -43
  646. package/src/components/composed/chat/actions.tsx +0 -81
  647. package/src/components/composed/chat/attachment-file.ts +0 -82
  648. package/src/components/composed/chat/attachment.tsx +0 -498
  649. package/src/components/composed/chat/chart/chart-atom.ts +0 -55
  650. package/src/components/composed/chat/chart/chart-context.ts +0 -9
  651. package/src/components/composed/chat/chart/chart-legend.tsx +0 -75
  652. package/src/components/composed/chat/chart/chart-plot.tsx +0 -233
  653. package/src/components/composed/chat/chart/chart-root.tsx +0 -229
  654. package/src/components/composed/chat/chart/chart-tooltip.tsx +0 -74
  655. package/src/components/composed/chat/chart/constants.ts +0 -8
  656. package/src/components/composed/chat/chart/evilcharts/README.md +0 -8
  657. package/src/components/composed/chat/chart/evilcharts/echarts-area-chart.tsx +0 -2358
  658. package/src/components/composed/chat/chart/evilcharts/echarts-bar-chart.tsx +0 -2261
  659. package/src/components/composed/chat/chart/evilcharts/echarts-brush.tsx +0 -233
  660. package/src/components/composed/chat/chart/evilcharts/echarts-chart.tsx +0 -214
  661. package/src/components/composed/chat/chart/evilcharts/echarts-dot.tsx +0 -111
  662. package/src/components/composed/chat/chart/evilcharts/echarts-legend.tsx +0 -131
  663. package/src/components/composed/chat/chart/evilcharts/echarts-line-chart.tsx +0 -2112
  664. package/src/components/composed/chat/chart/evilcharts/echarts-pie-chart.tsx +0 -1235
  665. package/src/components/composed/chat/chart/evilcharts/echarts-tooltip.tsx +0 -125
  666. package/src/components/composed/chat/chart/index.ts +0 -13
  667. package/src/components/composed/chat/chart/type.ts +0 -88
  668. package/src/components/composed/chat/chart/use-chart-state.ts +0 -22
  669. package/src/components/composed/chat/chart/use-chart.ts +0 -70
  670. package/src/components/composed/chat/chart/utils.ts +0 -47
  671. package/src/components/composed/chat/chart.tsx +0 -3
  672. package/src/components/composed/chat/code-block.tsx +0 -123
  673. package/src/components/composed/chat/composer/add-button.tsx +0 -29
  674. package/src/components/composed/chat/composer/base.tsx +0 -573
  675. package/src/components/composed/chat/composer/command-menu.tsx +0 -47
  676. package/src/components/composed/chat/composer/hooks.ts +0 -29
  677. package/src/components/composed/chat/composer/index.ts +0 -19
  678. package/src/components/composed/chat/composer/send-button.tsx +0 -36
  679. package/src/components/composed/chat/composer/suggestions.tsx +0 -115
  680. package/src/components/composed/chat/composer/use-dictation.ts +0 -123
  681. package/src/components/composed/chat/composer/utils.ts +0 -74
  682. package/src/components/composed/chat/context-cards.tsx +0 -63
  683. package/src/components/composed/chat/filter-table.tsx +0 -119
  684. package/src/components/composed/chat/flowchart/chart-node.tsx +0 -162
  685. package/src/components/composed/chat/flowchart/connector.tsx +0 -32
  686. package/src/components/composed/chat/flowchart/constant.ts +0 -26
  687. package/src/components/composed/chat/flowchart/default.tsx +0 -230
  688. package/src/components/composed/chat/flowchart/edge-toolbar.tsx +0 -73
  689. package/src/components/composed/chat/flowchart/hooks.tsx +0 -347
  690. package/src/components/composed/chat/flowchart/index.ts +0 -14
  691. package/src/components/composed/chat/flowchart/step-body.tsx +0 -82
  692. package/src/components/composed/chat/flowchart/types.ts +0 -89
  693. package/src/components/composed/chat/flowchart/utils.ts +0 -78
  694. package/src/components/composed/chat/hint.tsx +0 -59
  695. package/src/components/composed/chat/index.ts +0 -92
  696. package/src/components/composed/chat/insight-cards.tsx +0 -199
  697. package/src/components/composed/chat/markdown-atom.ts +0 -15
  698. package/src/components/composed/chat/markdown.tsx +0 -213
  699. package/src/components/composed/chat/recommendation/checkbox.tsx +0 -122
  700. package/src/components/composed/chat/recommendation/constant.ts +0 -54
  701. package/src/components/composed/chat/recommendation/default.tsx +0 -25
  702. package/src/components/composed/chat/recommendation/group.tsx +0 -36
  703. package/src/components/composed/chat/recommendation/index.ts +0 -17
  704. package/src/components/composed/chat/recommendation/item.tsx +0 -215
  705. package/src/components/composed/chat/recommendation/types.ts +0 -76
  706. package/src/components/composed/chat/records-table.tsx +0 -130
  707. package/src/components/composed/chat/type.ts +0 -157
  708. package/src/components/composed/logo.tsx +0 -171
  709. package/src/components/composed/password-input.tsx +0 -179
  710. package/src/components/composed/reader/applied-mark.tsx +0 -32
  711. package/src/components/composed/reader/apply-toast.tsx +0 -49
  712. package/src/components/composed/reader/index.ts +0 -10
  713. package/src/components/composed/reader/selection-highlight.tsx +0 -26
  714. package/src/components/composed/reader/selection-popover.tsx +0 -149
  715. package/src/components/composed/reader/type.ts +0 -48
  716. package/src/components/composed/social-providers.tsx +0 -154
  717. package/src/components/composed/tree/CLAUDE.md +0 -145
  718. package/src/components/composed/tree/__tests__/tree-atom.test.tsx +0 -217
  719. package/src/components/composed/tree/__tests__/tree.test.tsx +0 -522
  720. package/src/components/composed/tree/__tests__/use-tree.test.tsx +0 -333
  721. package/src/components/composed/tree/constants.ts +0 -55
  722. package/src/components/composed/tree/index.ts +0 -51
  723. package/src/components/composed/tree/tree-atom.ts +0 -590
  724. package/src/components/composed/tree/tree-context.ts +0 -13
  725. package/src/components/composed/tree/tree-node.tsx +0 -496
  726. package/src/components/composed/tree/tree.tsx +0 -233
  727. package/src/components/composed/tree/type.ts +0 -322
  728. package/src/components/composed/tree/use-tree-dnd.ts +0 -179
  729. package/src/components/composed/tree/use-tree-state.ts +0 -105
  730. package/src/components/composed/tree/use-tree.ts +0 -311
  731. package/src/components/composed/tree/utils.ts +0 -172
  732. package/src/components/composed/types.ts +0 -9
  733. package/src/components/composed/user/__tests__/message.test.tsx +0 -79
  734. package/src/components/composed/user/index.ts +0 -14
  735. package/src/components/composed/user/info.tsx +0 -56
  736. package/src/components/composed/user/message.tsx +0 -36
  737. package/src/components/composed/user/pill.tsx +0 -20
  738. package/src/components/composed/user/types.ts +0 -47
  739. package/src/components/composed/user/utils.ts +0 -0
  740. package/src/components/composed/verse/__tests__/verse.test.tsx +0 -57
  741. package/src/components/composed/verse/index.ts +0 -2
  742. package/src/components/composed/verse/types.ts +0 -24
  743. package/src/components/composed/verse/verse.tsx +0 -100
  744. package/src/components/docs/atoms-gallery.tsx +0 -286
  745. package/src/components/docs/block-demo-stage.tsx +0 -38
  746. package/src/components/docs/blocks-gallery.tsx +0 -224
  747. package/src/components/docs/browser.tsx +0 -87
  748. package/src/components/docs/code-block.tsx +0 -10
  749. package/src/components/docs/components-gallery.tsx +0 -182
  750. package/src/components/docs/demo-controls.tsx +0 -142
  751. package/src/components/docs/hero.tsx +0 -197
  752. package/src/components/docs/mermaid.tsx +0 -55
  753. package/src/components/icons/README.md +0 -91
  754. package/src/components/icons/__tests__/icons.test.tsx +0 -58
  755. package/src/components/icons/file-badge-cfm.tsx +0 -615
  756. package/src/components/icons/file-badge-corpus.tsx +0 -604
  757. package/src/components/icons/file-badge-pdf.tsx +0 -570
  758. package/src/components/icons/file-badge-tei.tsx +0 -524
  759. package/src/components/icons/file-badge-tf.tsx +0 -620
  760. package/src/components/icons/file-badge-txt.tsx +0 -607
  761. package/src/components/icons/file-badge-xml.tsx +0 -576
  762. package/src/components/icons/file-wordmark-cfm.tsx +0 -424
  763. package/src/components/icons/file-wordmark-corpus.tsx +0 -454
  764. package/src/components/icons/file-wordmark-pdf.tsx +0 -470
  765. package/src/components/icons/file-wordmark-tei.tsx +0 -424
  766. package/src/components/icons/file-wordmark-tf.tsx +0 -406
  767. package/src/components/icons/file-wordmark-txt.tsx +0 -421
  768. package/src/components/icons/file-wordmark-xml.tsx +0 -424
  769. package/src/components/icons/index.ts +0 -16
  770. package/src/components/icons/types.ts +0 -8
  771. package/src/components/motion/index.ts +0 -0
  772. package/src/components/motion/overflow-actions.tsx +0 -376
  773. package/src/components/motion/popover-morph.tsx +0 -292
  774. package/src/components/motion/popover-position.ts +0 -86
  775. package/src/components/motion/shared-layout-bg.tsx +0 -151
  776. package/src/components/stories/attachment.story.tsx +0 -40
  777. package/src/components/stories/auth-flow-block.story.tsx +0 -17
  778. package/src/components/stories/avatar.story.tsx +0 -33
  779. package/src/components/stories/base.story.tsx +0 -70
  780. package/src/components/stories/bubble.story.tsx +0 -61
  781. package/src/components/stories/button.story.tsx +0 -32
  782. package/src/components/stories/card.story.tsx +0 -36
  783. package/src/components/stories/chart.story.tsx +0 -69
  784. package/src/components/stories/checkbox.story.tsx +0 -30
  785. package/src/components/stories/code-auth-block.story.tsx +0 -20
  786. package/src/components/stories/code-block.story.tsx +0 -35
  787. package/src/components/stories/composed-password-input.story.tsx +0 -41
  788. package/src/components/stories/context-cards.story.tsx +0 -30
  789. package/src/components/stories/emoji-action-bar.story.tsx +0 -20
  790. package/src/components/stories/field.story.tsx +0 -32
  791. package/src/components/stories/file-icons.story.tsx +0 -20
  792. package/src/components/stories/filter-table.story.tsx +0 -63
  793. package/src/components/stories/flowchart.story.tsx +0 -25
  794. package/src/components/stories/forgot-password-block.story.tsx +0 -14
  795. package/src/components/stories/frame.story.tsx +0 -32
  796. package/src/components/stories/index.ts +0 -57
  797. package/src/components/stories/input-group.story.tsx +0 -27
  798. package/src/components/stories/input.story.tsx +0 -42
  799. package/src/components/stories/insight-cards.story.tsx +0 -67
  800. package/src/components/stories/label.story.tsx +0 -32
  801. package/src/components/stories/linked-accounts-block.story.tsx +0 -23
  802. package/src/components/stories/login-block.story.tsx +0 -18
  803. package/src/components/stories/logo.story.tsx +0 -21
  804. package/src/components/stories/markdown.story.tsx +0 -31
  805. package/src/components/stories/menu-command.story.tsx +0 -43
  806. package/src/components/stories/onboarding-block.story.tsx +0 -14
  807. package/src/components/stories/otp-field.story.tsx +0 -35
  808. package/src/components/stories/passkey-manager-block.story.tsx +0 -18
  809. package/src/components/stories/passkey-sign-in-block.story.tsx +0 -15
  810. package/src/components/stories/password-input.story.tsx +0 -35
  811. package/src/components/stories/profile-card-block.story.tsx +0 -29
  812. package/src/components/stories/recommendation-card.story.tsx +0 -37
  813. package/src/components/stories/records-table.story.tsx +0 -52
  814. package/src/components/stories/reference.story.tsx +0 -33
  815. package/src/components/stories/research-answer.story.tsx +0 -32
  816. package/src/components/stories/scaffold-root.story.tsx +0 -47
  817. package/src/components/stories/separator.story.tsx +0 -37
  818. package/src/components/stories/shell-layout.story.tsx +0 -19
  819. package/src/components/stories/signup-block.story.tsx +0 -18
  820. package/src/components/stories/social-providers.story.tsx +0 -26
  821. package/src/components/stories/streaming-text.story.tsx +0 -25
  822. package/src/components/stories/text.story.tsx +0 -31
  823. package/src/components/stories/textarea.story.tsx +0 -34
  824. package/src/components/stories/tree.story.tsx +0 -31
  825. package/src/components/stories/update-password-block.story.tsx +0 -14
  826. package/src/components/stories/user.story.tsx +0 -32
  827. package/src/components/stories/verse.story.tsx +0 -42
  828. package/src/components/theme-provider.tsx +0 -230
  829. package/src/components/types.ts +0 -106
  830. package/src/components/ui/accordion.tsx +0 -68
  831. package/src/components/ui/alert-dialog.tsx +0 -167
  832. package/src/components/ui/alert.tsx +0 -84
  833. package/src/components/ui/autocomplete.tsx +0 -303
  834. package/src/components/ui/avatar.tsx +0 -109
  835. package/src/components/ui/badge.tsx +0 -101
  836. package/src/components/ui/button-group.tsx +0 -88
  837. package/src/components/ui/button.tsx +0 -192
  838. package/src/components/ui/card.tsx +0 -253
  839. package/src/components/ui/chat/__tests__/segmented-toggle.test.tsx +0 -27
  840. package/src/components/ui/chat/avatar-handle.tsx +0 -30
  841. package/src/components/ui/chat/badges.tsx +0 -85
  842. package/src/components/ui/chat/buttons.tsx +0 -94
  843. package/src/components/ui/chat/chips.tsx +0 -106
  844. package/src/components/ui/chat/dot.tsx +0 -81
  845. package/src/components/ui/chat/icon-button.tsx +0 -43
  846. package/src/components/ui/chat/icon-tile.tsx +0 -33
  847. package/src/components/ui/chat/index.ts +0 -12
  848. package/src/components/ui/chat/inline-source.tsx +0 -94
  849. package/src/components/ui/chat/segmented-toggle.tsx +0 -99
  850. package/src/components/ui/chat/tag.tsx +0 -61
  851. package/src/components/ui/chat/thumbnail.tsx +0 -31
  852. package/src/components/ui/chat/waveform.tsx +0 -30
  853. package/src/components/ui/checkbox.tsx +0 -83
  854. package/src/components/ui/collapsible.tsx +0 -42
  855. package/src/components/ui/command.tsx +0 -263
  856. package/src/components/ui/context-menu.tsx +0 -342
  857. package/src/components/ui/emoji-picker.tsx +0 -161
  858. package/src/components/ui/field.tsx +0 -89
  859. package/src/components/ui/frame.tsx +0 -87
  860. package/src/components/ui/glasscn/glass-button-group.tsx +0 -34
  861. package/src/components/ui/glasscn/glass-button.tsx +0 -25
  862. package/src/components/ui/glasscn/glass-container.tsx +0 -94
  863. package/src/components/ui/glasscn/glass-separator.tsx +0 -39
  864. package/src/components/ui/glasscn/liquid-glass.tsx +0 -59
  865. package/src/components/ui/group.tsx +0 -92
  866. package/src/components/ui/input-group.tsx +0 -105
  867. package/src/components/ui/input.tsx +0 -70
  868. package/src/components/ui/kbd.tsx +0 -32
  869. package/src/components/ui/label.tsx +0 -36
  870. package/src/components/ui/menu-command.tsx +0 -156
  871. package/src/components/ui/menu.tsx +0 -352
  872. package/src/components/ui/otp-field.tsx +0 -88
  873. package/src/components/ui/popover-glass.tsx +0 -158
  874. package/src/components/ui/popover.tsx +0 -120
  875. package/src/components/ui/preview-card.tsx +0 -61
  876. package/src/components/ui/scroll-area.tsx +0 -80
  877. package/src/components/ui/select.tsx +0 -257
  878. package/src/components/ui/separator.tsx +0 -23
  879. package/src/components/ui/sheet.tsx +0 -135
  880. package/src/components/ui/skeleton.tsx +0 -18
  881. package/src/components/ui/spinner.tsx +0 -17
  882. package/src/components/ui/switch.tsx +0 -30
  883. package/src/components/ui/tabs.tsx +0 -120
  884. package/src/components/ui/textarea.tsx +0 -58
  885. package/src/components/ui/toast.tsx +0 -325
  886. package/src/components/ui/toolbar.tsx +0 -92
  887. package/src/components/ui/tooltip.tsx +0 -67
  888. package/src/index.css +0 -10
  889. package/src/index.ts +0 -102
  890. package/src/lib/attachment-content.ts +0 -28
  891. package/src/lib/auth-accent.ts +0 -49
  892. package/src/lib/ease.ts +0 -90
  893. package/src/lib/glass-variants.ts +0 -22
  894. package/src/lib/hooks/use-hover-capable.ts +0 -23
  895. package/src/lib/hooks/use-mobile.ts +0 -21
  896. package/src/lib/keyed-atom.ts +0 -60
  897. package/src/lib/segmented-control.ts +0 -42
  898. package/src/lib/sound.ts +0 -39
  899. package/src/lib/specular.ts +0 -10
  900. package/src/lib/state/__tests__/sound.test.tsx +0 -53
  901. package/src/lib/state/exegia-provider.tsx +0 -83
  902. package/src/lib/state/index.ts +0 -4
  903. package/src/lib/state/store.ts +0 -19
  904. package/src/lib/use-motion-panel.ts +0 -78
  905. package/src/lib/utils.test.ts +0 -22
  906. package/src/lib/utils.ts +0 -100
  907. package/src/specular.js +0 -4
  908. /package/{src/components/composed/chat/composer → dist-lib}/BEAUTIFUL-UI-LICENSE.txt +0 -0
  909. /package/{src/components/composed/chat/chart/evilcharts/LICENSE → dist-lib/EVILCHARTS-LICENSE.txt} +0 -0
@@ -1,347 +0,0 @@
1
- import React, { createContext, useCallback, useContext, useMemo, useRef, useState } from "react";
2
- import type { TEdge, TEdgeEnd, IFlowchartProps, TStepNode } from "./types";
3
- import { anchors, bezier, canvasH, curve, cw, edgePoints, place, rowH, rows, rowYs, type THeights, type TLayout, type TOffsets, type TPoint } from "./utils";
4
- import { EST_H, SNAP_RADIUS } from "./constant";
5
- import { toastManager } from "@/components/ui/toast";
6
-
7
- export const ZOOM_MIN = 0.25;
8
- export const ZOOM_MAX = 2;
9
-
10
- type TOptions = Pick<IFlowchartProps, "edges" | "readOnly" | "zoomable" | "onDrag" | "onAdd" | "onRemove" | "onEdgeRemove" | "onEdgeConnect" | "onEdgeChange" | "onRename" | "onDuplicate"> & {
11
- steps: TStepNode[];
12
- canvasRef: React.RefObject<HTMLDivElement | null>;
13
- };
14
-
15
- /** A connector end being dragged towards a new card; `snap` is the card whose anchor is in range. */
16
- export type TEdgeDrag = { id: string; end: TEdgeEnd; point: TPoint; snap?: string };
17
-
18
- /** Pill text: explicit name, else the kind label, else "Node n" (conditions always count). */
19
- export const nodeLabel = (node: TStepNode, index: number) =>
20
- node.name ?? (node.condition || !node.kind ? `Node ${index + 1}` : node.kind.label);
21
-
22
- /** Default connectors: a chain through the steps in order. */
23
- export const chainEdges = (steps: TStepNode[]): TEdge[] =>
24
- steps.slice(1).map((n, i) => ({ id: `${steps[i].id}->${n.id}`, source: steps[i].id, target: n.id }));
25
-
26
- export const useFlowchart = ({ steps, edges: edgesProp, readOnly = false, zoomable = false, onDrag, onAdd, onRemove, onEdgeRemove, onEdgeConnect, onEdgeChange, onRename, onDuplicate, canvasRef }: TOptions) => {
27
- /** Visible canvas box; the world behind it is twice this size. */
28
- const [frame, setFrame] = useState({ w: 0, h: 0 });
29
- const [heights, setHeights] = useState<THeights>(EST_H);
30
- const [selected, setSelected] = useState<string | null>(null);
31
- const [offsets, setOffsets] = useState<TOffsets>({});
32
- /** Zoom and pan of the world inside the frame (pan in frame px). */
33
- const [view, setView] = useState({ scale: 1, x: 0, y: 0 });
34
- const scale = view.scale;
35
- const pan = useRef<{ startX: number; startY: number; baseX: number; baseY: number; moved: boolean } | null>(null);
36
- const [pendingRemove, setPendingRemove] = useState<{ id: string; orphans: string[] } | null>(null);
37
- const [selectedEdge, setSelectedEdge] = useState<string | null>(null);
38
- const [edgeDrag, setEdgeDrag] = useState<TEdgeDrag | null>(null);
39
- /** Card highlighted while the user browses "Connect to…" in the context menu. */
40
- const [previewNode, setPreviewNode] = useState<string | null>(null);
41
- const drag = useRef<{
42
- id: string;
43
- startX: number;
44
- startY: number;
45
- baseDx: number;
46
- baseDy: number;
47
- moved: boolean;
48
- } | null>(null);
49
-
50
- const edges = useMemo(() => edgesProp ?? chainEdges(steps), [edgesProp, steps]);
51
- const rowHeight = useMemo(() => rowH(steps, heights), [heights, steps]);
52
- // The world is twice the frame so there is always hidden canvas to drag into view.
53
- const width = frame.w * 2;
54
- const layout = useMemo<TLayout>(() => {
55
- const _rows = rows(steps);
56
- return { width, offsets, rows: _rows, rowY: rowYs(rowHeight), heights };
57
- }, [steps, width, offsets, rowHeight, heights]);
58
- const canvasHeight = useMemo(() => canvasH(layout.rowY, rowHeight), [layout.rowY, rowHeight]);
59
- const connectorWidth = cw(width);
60
- const worldHeight = Math.max(canvasHeight, frame.h * 2);
61
-
62
- /** Keep the world covering the frame: clamp when it is larger, centre it when smaller. */
63
- const clampPan = useCallback(
64
- (x: number, y: number, s: number, f = frame) => {
65
- const fit = (offset: number, visible: number, content: number) =>
66
- content <= visible ? (visible - content) / 2 : Math.min(0, Math.max(visible - content, offset));
67
- return { x: fit(x, f.w, connectorWidth * s), y: fit(y, f.h, worldHeight * s) };
68
- },
69
- [frame, connectorWidth, worldHeight],
70
- );
71
-
72
- const updateHeights = useCallback((callback: (prev: THeights) => THeights) => setHeights(callback), []);
73
- const updateFrame = useCallback((w: number, h: number) => {
74
- setFrame((prev) => (prev.w === w && prev.h === h ? prev : { w, h }));
75
- // First measurement centres the world horizontally, top-aligned; later
76
- // width changes scale the pan so the view stays put as the world resizes.
77
- const prevW = frame.w;
78
- setView((v) => {
79
- if (w <= 0 || w === prevW) return v;
80
- return prevW === 0 ? { ...v, x: (w - w * 2 * v.scale) / 2, y: 0 } : { ...v, x: (v.x * w) / prevW };
81
- });
82
- }, [frame.w]);
83
- const updateSelected = (id: string | null) => {
84
- setSelected((prev) => (prev === id ? prev : id));
85
- if (id !== null) setSelectedEdge(null);
86
- };
87
- const editableEdges = !readOnly && Boolean(onEdgeRemove || onEdgeConnect || onEdgeChange);
88
- const selectEdge = (id: string | null) => {
89
- if (!editableEdges) return;
90
- setSelectedEdge(id);
91
- if (id !== null) setSelected(null);
92
- };
93
- /** Zoom about the frame centre so what is in the middle stays there. */
94
- const zoomTo = useCallback(
95
- (next: number) =>
96
- setView((v) => {
97
- const s = Math.min(ZOOM_MAX, Math.max(ZOOM_MIN, +next.toFixed(3)));
98
- const cx = frame.w / 2;
99
- const cy = frame.h / 2;
100
- const k = s / v.scale;
101
- return { scale: s, ...clampPan(cx - (cx - v.x) * k, cy - (cy - v.y) * k, s) };
102
- }),
103
- [frame, clampPan],
104
- );
105
- const zoomBy = useCallback((factor: number) => zoomTo(scale * factor), [zoomTo, scale]);
106
- const resetZoom = useCallback(() => zoomTo(1), [zoomTo]);
107
-
108
- /** Dragging empty canvas pans the world; a still click clears the selection. */
109
- const onCanvasPointerDown = (event: React.PointerEvent<HTMLDivElement>) => {
110
- if (event.button !== 0) return;
111
- const target = event.target as Element;
112
- if (target.closest("[data-node], [data-ui], [data-edge-handle], [data-edge]")) return;
113
- pan.current = { startX: event.clientX, startY: event.clientY, baseX: view.x, baseY: view.y, moved: false };
114
- event.currentTarget.setPointerCapture(event.pointerId);
115
- };
116
- const onCanvasPointerMove = (event: React.PointerEvent<HTMLDivElement>) => {
117
- const p = pan.current;
118
- if (!p) return;
119
- const dx = event.clientX - p.startX;
120
- const dy = event.clientY - p.startY;
121
- if (!p.moved && Math.hypot(dx, dy) < 3) return;
122
- p.moved = true;
123
- setView((v) => ({ ...v, ...clampPan(p.baseX + dx, p.baseY + dy, v.scale) }));
124
- };
125
- const onCanvasPointerUp = () => {
126
- const p = pan.current;
127
- pan.current = null;
128
- if (p && !p.moved) {
129
- setSelected(null);
130
- setSelectedEdge(null);
131
- }
132
- };
133
- const isPanning = () => pan.current?.moved === true;
134
-
135
- const onPointerDown = (node: TStepNode) => (event: React.PointerEvent<HTMLDivElement>) => {
136
- // Left button only: a right-press belongs to the context menu.
137
- if (readOnly || event.button !== 0) return;
138
- if ((event.target as Element).closest("[data-ui]")) return;
139
- const off = offsets[node.id];
140
- drag.current = {
141
- id: node.id,
142
- startX: event.clientX,
143
- startY: event.clientY,
144
- baseDx: off?.dx ?? 0,
145
- baseDy: off?.dy ?? 0,
146
- moved: false,
147
- };
148
- // Capture only once a drag starts; capturing a still press retargets
149
- // its click to the wrapper instead of the node selection button.
150
- };
151
-
152
- const onPointerMove = (node: TStepNode) => (event: React.PointerEvent<HTMLDivElement>) => {
153
- const d = drag.current;
154
- if (!d || d.id !== node.id) return;
155
- const dx = d.baseDx + (event.clientX - d.startX) / scale;
156
- const dy = d.baseDy + (event.clientY - d.startY) / scale;
157
- if (!d.moved && Math.hypot(dx - d.baseDx, dy - d.baseDy) < 3) return;
158
- if (!d.moved) event.currentTarget.setPointerCapture(event.pointerId);
159
- d.moved = true;
160
-
161
- // keep the card inside the canvas
162
- const { w } = place(node, layout);
163
- const h = heights[node.id] ?? 90;
164
- const baseCx = node.x * connectorWidth;
165
- const baseTop = layout.rowY[layout.rows.indexOf(node.row)] ?? 0;
166
- const cx = Math.min(Math.max(baseCx + dx, w / 2 + 8), connectorWidth - w / 2 - 8);
167
- const top = Math.min(Math.max(baseTop + dy, 8), worldHeight - h - 8);
168
- setOffsets((current) => ({ ...current, [node.id]: { dx: cx - baseCx, dy: top - baseTop } }));
169
- };
170
-
171
- const onPointerUp = (node: TStepNode) => () => {
172
- const d = drag.current;
173
- if (d?.id !== node.id) return;
174
- if (d.moved) {
175
- onDrag?.(node.id, offsets[node.id] ?? { dx: 0, dy: 0 });
176
- // a real drag shouldn't also toggle selection
177
- setTimeout(() => (drag.current = null), 0);
178
- } else drag.current = null;
179
- };
180
-
181
- const wasDragged = () => drag.current?.moved === true;
182
- const isLit = (edge: TEdge) => selected === edge.source || selected === edge.target || selectedEdge === edge.id;
183
-
184
- /** Client → unscaled canvas coordinates. */
185
- const toCanvas = (clientX: number, clientY: number): TPoint => {
186
- const rect = canvasRef.current?.getBoundingClientRect();
187
- return { x: (clientX - (rect?.left ?? 0) - view.x) / scale, y: (clientY - (rect?.top ?? 0) - view.y) / scale };
188
- };
189
- const edgeEnds = (edge: TEdge) => edgePoints({ from: edge.source, to: edge.target }, steps, layout);
190
-
191
- const onEdgeHandleDown = (edge: TEdge, end: TEdgeEnd) => (event: React.PointerEvent<SVGElement>) => {
192
- if (!onEdgeConnect) return;
193
- event.stopPropagation();
194
- (event.currentTarget as Element).setPointerCapture(event.pointerId);
195
- setEdgeDrag({ id: edge.id, end, point: toCanvas(event.clientX, event.clientY) });
196
- };
197
- /** Nearest anchor of another card within SNAP_RADIUS: top anchors for a target end, bottom for a source end. */
198
- const snapCandidate = (edge: TEdge, end: TEdgeEnd, point: TPoint) => {
199
- const other = end === "source" ? edge.target : edge.source;
200
- let best: { id: string; d: number } | null = null;
201
- for (const node of steps) {
202
- if (node.id === other) continue;
203
- const a = anchors(node, layout);
204
- const p = end === "source" ? a.bottom : a.top;
205
- const d = Math.hypot(p.x - point.x, p.y - point.y);
206
- if (d <= SNAP_RADIUS && (!best || d < best.d)) best = { id: node.id, d };
207
- }
208
- return best?.id;
209
- };
210
- const onEdgeHandleMove = (event: React.PointerEvent<SVGElement>) => {
211
- if (!edgeDrag) return;
212
- const point = toCanvas(event.clientX, event.clientY);
213
- const edge = edges.find((e) => e.id === edgeDrag.id);
214
- const snap = edge ? snapCandidate(edge, edgeDrag.end, point) : undefined;
215
- setEdgeDrag({ ...edgeDrag, point, snap });
216
- };
217
- const onEdgeHandleUp = (event: React.PointerEvent<SVGElement>) => {
218
- if (!edgeDrag) return;
219
- const edge = edges.find((e) => e.id === edgeDrag.id);
220
- const card = document.elementFromPoint(event.clientX, event.clientY)?.closest<HTMLElement>("[data-node]");
221
- const target = edgeDrag.snap ?? card?.dataset.node;
222
- setEdgeDrag(null);
223
- if (!edge || !target) return;
224
- const other = edgeDrag.end === "source" ? edge.target : edge.source;
225
- if (target === other || target === edge[edgeDrag.end]) return;
226
- onEdgeConnect?.({ ...edge, [edgeDrag.end]: target });
227
- };
228
- /** Path of the connector being re-routed, following the pointer. */
229
- const ghostCurve = () => {
230
- if (!edgeDrag) return "";
231
- const edge = edges.find((e) => e.id === edgeDrag.id);
232
- const pts = edge && edgeEnds(edge);
233
- if (!pts) return "";
234
- const snapNode = edgeDrag.snap ? steps.find((n) => n.id === edgeDrag.snap) : undefined;
235
- const point = snapNode ? anchors(snapNode, layout)[edgeDrag.end === "source" ? "bottom" : "top"] : edgeDrag.point;
236
- return edgeDrag.end === "source" ? curve(point, pts.to) : curve(pts.from, point);
237
- };
238
- /** "Connect to…": a new connector from `source` to `target`, unless one exists. */
239
- const connectTo = (source: string, target: string) => {
240
- if (source === target || edges.some((e) => e.source === source && e.target === target)) return;
241
- onEdgeConnect?.({ id: `${source}->${target}`, source, target });
242
- };
243
- const renameNode = (id: string, name: string) => {
244
- onRename?.(id, name);
245
- toastManager.add({ title: "Node renamed", description: name, type: "success" });
246
- };
247
- const duplicateNode = (id: string) => onDuplicate?.(id);
248
- const snapTarget = edgeDrag?.snap ?? null;
249
- const removeEdge = (id: string) => {
250
- setSelectedEdge(null);
251
- onEdgeRemove?.(id);
252
- };
253
- const bezierCurve = (edge: TEdge) => bezier({ from: edge.source, to: edge.target }, steps, layout);
254
- const handlePlace = (node: TStepNode) => place(node, layout);
255
-
256
- /** Children that would lose their only parent if `id` were removed. */
257
- const orphansOf = (id: string) =>
258
- edges
259
- .filter((e) => e.source === id)
260
- .map((e) => e.target)
261
- .filter((child) => !edges.some((e) => e.target === child && e.source !== id));
262
-
263
- const commitRemove = (id: string) => {
264
- if (selected === id) setSelected(null);
265
- setPendingRemove(null);
266
- onRemove?.(id);
267
- };
268
-
269
- /** Removes outright, or parks the id in `pendingRemove` for Root's AlertDialog when children would be orphaned. */
270
- const removeNode = (id: string) => {
271
- const orphans = orphansOf(id);
272
- if (orphans.length) setPendingRemove({ id, orphans });
273
- else commitRemove(id);
274
- };
275
- const cancelRemove = () => setPendingRemove(null);
276
-
277
- return {
278
- steps,
279
- edges,
280
- readOnly,
281
- zoomable,
282
- scale,
283
- view,
284
- zoomBy,
285
- resetZoom,
286
- onCanvasPointerDown,
287
- onCanvasPointerMove,
288
- onCanvasPointerUp,
289
- isPanning,
290
- frame,
291
- worldHeight,
292
- onAdd,
293
- removeNode,
294
- commitRemove,
295
- cancelRemove,
296
- pendingRemove,
297
- orphansOf,
298
- updateHeights,
299
- offsets,
300
- width,
301
- selected,
302
- drag,
303
- updateSelected,
304
- updateFrame,
305
- onPointerDown,
306
- onPointerMove,
307
- onPointerUp,
308
- wasDragged,
309
- isLit,
310
- editableEdges,
311
- selectedEdge,
312
- selectEdge,
313
- edgeDrag,
314
- edgeEnds,
315
- onEdgeHandleDown,
316
- onEdgeHandleMove,
317
- onEdgeHandleUp,
318
- ghostCurve,
319
- removeEdge,
320
- onEdgeChange,
321
- snapTarget,
322
- previewNode,
323
- setPreviewNode,
324
- connectTo,
325
- renameNode,
326
- duplicateNode,
327
- canRename: Boolean(onRename),
328
- canDuplicate: Boolean(onDuplicate),
329
- canConnect: Boolean(onEdgeConnect),
330
- rowHeight,
331
- canvasHeight,
332
- connectorWidth,
333
- bezierCurve,
334
- handlePlace,
335
- };
336
- };
337
-
338
- export type TFlowchartController = ReturnType<typeof useFlowchart>;
339
-
340
- /** Root owns the one `useFlowchart` instance; nodes read it from here. */
341
- export const FlowchartContext = createContext<TFlowchartController | null>(null);
342
-
343
- export const useFlowchartContext = () => {
344
- const ctx = useContext(FlowchartContext);
345
- if (!ctx) throw new Error("Flowchart.ChartNode must render inside Flowchart.Root");
346
- return ctx;
347
- };
@@ -1,14 +0,0 @@
1
- import Root from "./default"
2
- import { Connector } from "./connector"
3
- import { ChartNode } from "./chart-node"
4
-
5
- export type * from "./types"
6
- export * from "./hooks"
7
-
8
- export const Flowchart = {
9
- Root,
10
- Connector,
11
- ChartNode,
12
- }
13
-
14
- export default Root
@@ -1,82 +0,0 @@
1
- import { useState } from "react";
2
- import { SelectChip, SourceChip } from "@/components/atoms/chip";
3
- import { FLAVORS, PROPERTIES, TOPPINGS } from "./constant";
4
- import type { TStepNode } from "./types";
5
- import { mix } from "./utils";
6
-
7
- /* ── icons ── */
8
- function ConeIcon({ size = 16 }: { size?: number }) {
9
- return (
10
- <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.8" strokeLinecap="round" strokeLinejoin="round">
11
- <path d="m7 11 4.08 10.35a1 1 0 0 0 1.84 0L17 11" />
12
- <path d="M17 7A5 5 0 0 0 7 7" />
13
- <path d="M17 7a2 2 0 0 1 0 4H7a2 2 0 0 1 0-4" />
14
- </svg>
15
- );
16
- }
17
-
18
- export function StepBody({ node }: { node: TStepNode }) {
19
- const hue = node.hue ?? "var(--accent-default)";
20
- return (
21
- <div className="flex items-center gap-2.5 p-2.5">
22
- {node.image ? (
23
- <img
24
- alt={node.image.alt ?? ""}
25
- className="size-9 shrink-0 rounded-[8px] object-cover"
26
- src={node.image.src}
27
- style={{ boxShadow: `0 0 0 1px ${mix(hue, 20)}` }}
28
- />
29
- ) : (
30
- <span
31
- className="flex size-9 shrink-0 items-center justify-center rounded-[8px] [&>svg]:size-4"
32
- style={{
33
- background: mix(hue, 12),
34
- color: hue,
35
- boxShadow: `0 0 0 1px ${mix(hue, 20)}`,
36
- }}
37
- >
38
- {node.icon ?? <ConeIcon />}
39
- </span>
40
- )}
41
- <span className="min-w-0 text-left">
42
- <span className="block truncate text-[13px] font-semibold leading-tight text-ink">{node.title}</span>
43
- <span className="mt-0.5 block text-[12px] leading-snug text-ink-2">{node.caption}</span>
44
- </span>
45
- </div>
46
- );
47
- }
48
-
49
- /** Default If/Else card body: two chip rows. Picking a value is a TODO until SelectChip's menu lands. */
50
- export function ConditionBody() {
51
- const [open, setOpen] = useState<string | null>(null);
52
- const values: Record<string, string> = {
53
- prop1: "flavor",
54
- val1: "Rocky Road",
55
- prop2: "topping",
56
- val2: "Brown butter bourbon brittle crunch",
57
- };
58
- const toggle = (id: string) => setOpen((current) => (current === id ? null : id));
59
- const pick = () => setOpen(null);
60
- const chip = (id: string, items: { name: string; tag?: string }[], width: string, extra?: object) => (
61
- <SelectChip id={id} value={values[id]} items={items} width={width} open={open === id} onToggle={toggle} onPick={pick} {...extra} />
62
- );
63
-
64
- return (
65
- <div className="flex flex-col gap-1.5 px-3 py-2.5">
66
- <div className="flex min-w-0 items-center gap-1.5">
67
- <span className="w-7 text-[12.5px] text-ink-2">If</span>
68
- <SourceChip />
69
- {chip("prop1", PROPERTIES.map((name) => ({ name })), "w-36")}
70
- <span className="text-[12.5px] text-ink-2">is</span>
71
- {chip("val1", FLAVORS, "w-44", { dot: true, align: "right" })}
72
- </div>
73
- <div className="flex min-w-0 flex-wrap items-center gap-1.5">
74
- <span className="w-7 text-[12.5px] text-ink-2">and</span>
75
- <SourceChip />
76
- {chip("prop2", PROPERTIES.map((name) => ({ name })), "w-36")}
77
- <span className="text-[12.5px] text-ink-2">is</span>
78
- {chip("val2", TOPPINGS, "w-64", { dot: true })}
79
- </div>
80
- </div>
81
- );
82
- }
@@ -1,89 +0,0 @@
1
- import type { SVGProps } from "react"
2
-
3
- export type TFlowchartSide = "top" | "right" | "bottom" | "left"
4
-
5
- export interface IFlowchartProps {
6
- /** Cards to lay out. Defaults to the Trigger → If / Else sample. */
7
- steps?: TStepNode[]
8
- /** Connectors. Defaults to a chain through `steps` in order. */
9
- edges?: TEdge[]
10
- /** No drag, no add / remove buttons. Selection still works. */
11
- readOnly?: boolean
12
- /** Ctrl/⌘ + wheel and the +/− buttons scale the canvas. */
13
- zoomable?: boolean
14
- /** A card was dragged; `offset` is its displacement from the laid-out position. */
15
- onDrag?: (id: string, offset: { dx: number; dy: number }) => void
16
- /** The add button on one side of a card was pressed. */
17
- onAdd?: (id: string, side: TFlowchartSide) => void
18
- /** The remove button was pressed (already confirmed when children would be orphaned). */
19
- onRemove?: (id: string) => void
20
- /**
21
- * Canvas min-height in px. The canvas fills its parent; without this it
22
- * floors at the content height it loaded with, so zooming out or removing
23
- * a card never collapses it.
24
- */
25
- height?: number
26
- /** Disconnect was pressed on a selected connector. Enables connector editing. */
27
- onEdgeRemove?: (id: string) => void
28
- /** A connector end was dropped on another card; `edge` carries the new source / target. */
29
- onEdgeConnect?: (edge: TEdge) => void
30
- /** Stroke width or colour picked from the connector toolbar. */
31
- onEdgeChange?: (id: string, patch: Pick<TEdge, "strokeWidth" | "color">) => void
32
- /** The pill was renamed inline (double-click, then click away or Enter). */
33
- onRename?: (id: string, name: string) => void
34
- /** "Duplicate" in the context menu: copy the card to a new node on its right. */
35
- onDuplicate?: (id: string) => void
36
- variant?: string
37
- children?: React.ReactNode
38
- className?: string
39
- }
40
-
41
- export type TStepNode = {
42
- id: string
43
- row: number
44
- x: number // 0–1 center of the node
45
- w: number
46
- kind?: { label: string; hue: string }
47
- /** Pill text; defaults to the kind label, or "Node n" for conditions. */
48
- name?: string
49
- hue?: string
50
- title?: string
51
- caption?: string
52
- /** Replaces the icon tile — a person, a manuscript, a corpus cover. */
53
- image?: { src: string; alt?: string }
54
- /** Custom tile icon when there is no image. */
55
- icon?: React.ReactNode
56
- condition?: boolean // renders the if/else chip rows instead
57
- /** Custom card body; replaces the default title / caption body. */
58
- children?: React.ReactNode
59
- }
60
-
61
- export type TEdge = {
62
- id: string
63
- source: string
64
- target: string
65
- bezierCurve?: boolean
66
- strokeWidth?: number
67
- /** Any CSS colour; defaults to the line token, accent when lit. */
68
- color?: string
69
- }
70
-
71
- export type TEdgeEnd = "source" | "target"
72
-
73
- export interface IConnectorProps extends Omit<SVGProps<SVGPathElement>, "strokeWidth"> {
74
- edge: TEdge
75
- isLit: boolean
76
- strokeWidth?: number
77
- /** Selected for editing: bolder hit, toolbar and end handles render in Root. */
78
- selected?: boolean
79
- /** Enables the wide click target; called with the edge id. */
80
- onPick?: (id: string) => void
81
- }
82
-
83
- export interface IChartNodeProps {
84
- node: TStepNode
85
- /** Position in `steps`, for the generated "Node n" label. */
86
- index?: number
87
- onRef: (el: HTMLDivElement | null) => void
88
- children?: React.ReactNode
89
- }
@@ -1,78 +0,0 @@
1
- import { PAD_Y, PILL_OFFSET, ROW_GAP } from "./constant";
2
- import type { TStepNode } from "./types";
3
-
4
- export type TOffsets = Record<string, { dx: number; dy: number }>;
5
- export type THeights = Record<string, number>;
6
-
7
- /** Everything `place`/`bezier` need to position a node, resolved once per render. */
8
- export type TLayout = {
9
- width: number;
10
- offsets: TOffsets;
11
- rows: number[];
12
- rowY: number[];
13
- heights: THeights;
14
- };
15
-
16
- /** Distinct row indices, ascending. */
17
- export const rows = (steps: TStepNode[]) =>
18
- [...new Set(steps.map((n) => n.row))].sort((a, b) => a - b);
19
-
20
- /** Height of each row = tallest node in it. */
21
- export const rowH = (steps: TStepNode[], heights: THeights) =>
22
- rows(steps).map((r) =>
23
- Math.max(...steps.filter((n) => n.row === r).map((n) => heights[n.id] ?? 90)),
24
- );
25
-
26
- /** Y offset of each row, stacked with ROW_GAP. */
27
- export const rowYs = (rowH: number[]) =>
28
- rowH.map((_, i) => (i === 0 ? PAD_Y : PAD_Y + rowH.slice(0, i).reduce((a, b) => a + b, 0) + i * ROW_GAP));
29
-
30
- export const canvasH = (rowY: number[], rowH: number[]) =>
31
- (rowY[rowY.length - 1] ?? PAD_Y) + (rowH[rowH.length - 1] ?? 0) + PAD_Y;
32
-
33
- export const mix = (hue: string, pct: number, base = "var(--surface)") =>
34
- `color-mix(in srgb, ${hue} ${pct}%, ${base})`;
35
-
36
- export const cw = (width: number) => width || 480;
37
-
38
- export const place = (n: TStepNode, { width, offsets, rows, rowY }: TLayout) => {
39
- const w = Math.min(n.w, cw(width) * 0.92);
40
- const off = offsets[n.id];
41
- return {
42
- w,
43
- cx: n.x * cw(width) + (off?.dx ?? 0),
44
- top: (rowY[rows.indexOf(n.row)] ?? PAD_Y) + (off?.dy ?? 0),
45
- };
46
- };
47
-
48
- /** Card anchor points (pills sit above the card, so offset the top). */
49
- export const anchors = (n: TStepNode, layout: TLayout) => {
50
- const { cx, top } = place(n, layout);
51
- return {
52
- top: { x: cx, y: top + (n.kind ? PILL_OFFSET : 0) },
53
- bottom: { x: cx, y: top + (layout.heights[n.id] ?? 90) },
54
- };
55
- };
56
-
57
- export type TPoint = { x: number; y: number };
58
-
59
- /** Vertical S-curve between two points. */
60
- export const curve = (from: TPoint, to: TPoint) => {
61
- const k = Math.min(Math.max(Math.abs(to.y - from.y) * 0.55, 24), 84);
62
- return `M ${from.x} ${from.y} C ${from.x} ${from.y + k}, ${to.x} ${to.y - k}, ${to.x} ${to.y}`;
63
- };
64
-
65
- /** Cubic bezier midpoint, where the connector toolbar sits. */
66
- export const midpoint = (from: TPoint, to: TPoint): TPoint => ({ x: (from.x + to.x) / 2, y: (from.y + to.y) / 2 });
67
-
68
- export const edgePoints = (edge: { from: string; to: string }, steps: TStepNode[], layout: TLayout) => {
69
- const a = steps.find((n) => n.id === edge.from);
70
- const b = steps.find((n) => n.id === edge.to);
71
- if (!a || !b) return null;
72
- return { from: anchors(a, layout).bottom, to: anchors(b, layout).top };
73
- };
74
-
75
- export const bezier = (edge: { from: string; to: string }, steps: TStepNode[], layout: TLayout) => {
76
- const pts = edgePoints(edge, steps, layout);
77
- return pts ? curve(pts.from, pts.to) : "";
78
- };
@@ -1,59 +0,0 @@
1
- import { Kbd, KbdGroup } from "@/components/ui/kbd";
2
- import { SPRING_LAYOUT } from "@/lib/ease";
3
- import { cn } from "@/lib/utils";
4
- import { useReducedMotion, motion } from "motion/react";
5
-
6
-
7
- /** "Press ⌘ + ↵ to send message" — the composer's send hint. */
8
- export function SendHint({
9
- className,
10
- verbose = true,
11
- }: {
12
- className?: string
13
- /** Pin the keycaps to the end and drop the trailing "to send message". */
14
- verbose?: boolean
15
- }): React.ReactElement {
16
- const reduceMotion = useReducedMotion()
17
- // `justify-content` and `display` are discrete — they snap rather than tween.
18
- // A spacer whose flex-grow rises 0 → 1 buys the start → end shift, and it
19
- // takes exactly the room the collapsing label gives back, so both halves ride
20
- // the same spring.
21
- const transition = reduceMotion ? { duration: 0 } : SPRING_LAYOUT
22
-
23
- return (
24
- <motion.span
25
- className={cn(
26
- "flex flex-1 items-center gap-1.5 text-sm whitespace-nowrap text-muted-foreground/60",
27
- className
28
- )}
29
- data-slot="send-hint"
30
- >
31
- <motion.span
32
- aria-hidden="true"
33
- animate={{ flexGrow: verbose ? 1 : 0 }}
34
- className="inline-flex shrink-0 basis-0 items-center"
35
- initial={false}
36
- transition={transition}
37
- />
38
- Press
39
- <KbdGroup className="max-h-3 items-center">
40
- <Kbd aria-label="Command">⌘</Kbd>
41
- <Kbd aria-label="Enter" className="w-8">
42
- ↵
43
- </Kbd>
44
- </KbdGroup>
45
- <motion.span
46
- animate={{
47
- opacity: verbose ? 0 : 1,
48
- width: verbose ? 0 : "auto",
49
- x: verbose ? -8 : 0,
50
- }}
51
- className="inline-block shrink-0 overflow-hidden"
52
- initial={false}
53
- transition={transition}
54
- >
55
- to send message
56
- </motion.span>
57
- </motion.span>
58
- )
59
- }