@exegia/corpora-ui 2.0.0 → 3.1.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 (588) hide show
  1. package/README.md +20 -0
  2. package/dist-lib/EVILCHARTS-LICENSE.txt +21 -0
  3. package/dist-lib/button-CIRkQXA6.js +152 -0
  4. package/dist-lib/button.js +3 -0
  5. package/dist-lib/card.js +150 -0
  6. package/dist-lib/components/atoms/text/default.d.ts +2 -1143
  7. package/dist-lib/components/blocks/shell/index.d.ts +1 -0
  8. package/dist-lib/components/composed/chat/chart/chart-atom.d.ts +30 -0
  9. package/dist-lib/components/composed/chat/chart/chart-context.d.ts +2 -0
  10. package/dist-lib/components/composed/chat/chart/chart-legend.d.ts +4 -0
  11. package/dist-lib/components/composed/chat/chart/chart-plot.d.ts +3 -0
  12. package/dist-lib/components/composed/chat/chart/chart-root.d.ts +3 -0
  13. package/dist-lib/components/composed/chat/chart/chart-tooltip.d.ts +4 -0
  14. package/dist-lib/components/composed/chat/chart/constants.d.ts +3 -0
  15. package/dist-lib/components/composed/chat/chart/evilcharts/echarts-area-chart.d.ts +93 -0
  16. package/dist-lib/components/composed/chat/chart/evilcharts/echarts-bar-chart.d.ts +86 -0
  17. package/dist-lib/components/composed/chat/chart/evilcharts/echarts-brush.d.ts +65 -0
  18. package/dist-lib/components/composed/chat/chart/evilcharts/echarts-chart.d.ts +44 -0
  19. package/dist-lib/components/composed/chat/chart/evilcharts/echarts-dot.d.ts +16 -0
  20. package/dist-lib/components/composed/chat/chart/evilcharts/echarts-legend.d.ts +24 -0
  21. package/dist-lib/components/composed/chat/chart/evilcharts/echarts-line-chart.d.ts +90 -0
  22. package/dist-lib/components/composed/chat/chart/evilcharts/echarts-pie-chart.d.ts +73 -0
  23. package/dist-lib/components/composed/chat/chart/evilcharts/echarts-tooltip.d.ts +29 -0
  24. package/dist-lib/components/composed/chat/chart/index.d.ts +6 -0
  25. package/dist-lib/components/composed/chat/chart/type.d.ts +80 -0
  26. package/dist-lib/components/composed/chat/chart/use-chart-state.d.ts +3 -0
  27. package/dist-lib/components/composed/chat/chart/use-chart.d.ts +6 -0
  28. package/dist-lib/components/composed/chat/chart/utils.d.ts +5 -0
  29. package/dist-lib/components/composed/chat/chart.d.ts +1 -44
  30. package/dist-lib/components/composed/chat/index.d.ts +1 -1
  31. package/dist-lib/components/ui/badge.d.ts +2 -2
  32. package/dist-lib/components/ui/button.d.ts +2 -2
  33. package/dist-lib/components/ui/glasscn/lazy-glass-surface.d.ts +6 -0
  34. package/dist-lib/components/ui/modal.d.ts +10 -0
  35. package/dist-lib/components/ui/overlays.d.ts +4 -0
  36. package/dist-lib/components/ui/select.d.ts +1 -1
  37. package/dist-lib/components/ui/toast.d.ts +2 -0
  38. package/dist-lib/ease-C9At8rnB.js +120 -0
  39. package/dist-lib/exegia-provider-DNTuLljX.js +124 -0
  40. package/dist-lib/index.css +3 -0
  41. package/dist-lib/index.d.ts +3 -0
  42. package/dist-lib/index.js +10283 -8224
  43. package/dist-lib/input.js +28 -0
  44. package/dist-lib/label.js +19 -0
  45. package/dist-lib/lib/segmented-control.d.ts +1 -1
  46. package/dist-lib/lib/state/exegia-provider.d.ts +17 -8
  47. package/dist-lib/lib/state/index.d.ts +2 -0
  48. package/dist-lib/lib/state/portal-context.d.ts +5 -0
  49. package/dist-lib/lib/state/sound-loading.d.ts +4 -0
  50. package/dist-lib/liquid-glass-BihU6nMl.js +50 -0
  51. package/dist-lib/modal-DLaOK-s1.js +82 -0
  52. package/dist-lib/overlays.js +3 -0
  53. package/dist-lib/rolldown-runtime-Dy4uBu1J.js +11 -0
  54. package/dist-lib/scaffold-Qv4hs5Pf.js +925 -0
  55. package/dist-lib/scaffold.js +2 -0
  56. package/dist-lib/shell-BQ9cjIEu.js +722 -0
  57. package/dist-lib/shell.js +2 -0
  58. package/dist-lib/sound-knGH4lj-.js +19 -0
  59. package/dist-lib/state.js +2 -0
  60. package/dist-lib/toast-CataVXHN.js +193 -0
  61. package/dist-lib/utils-BO0qfoA6.js +61 -0
  62. package/package.json +65 -23
  63. package/dist-lib/components/atoms/_layout.d.ts +0 -4
  64. package/dist-lib/components/atoms/bubble/__tests__/bubble.test.d.ts +0 -1
  65. package/dist-lib/components/atoms/bubble/__tests__/reference.test.d.ts +0 -1
  66. package/dist-lib/components/atoms/text/__tests__/text.test.d.ts +0 -1
  67. package/dist-lib/components/atoms/text-selection/__tests__/click-popover.test.d.ts +0 -1
  68. package/dist-lib/components/atoms/text-selection/__tests__/text-selection.test.d.ts +0 -1
  69. package/dist-lib/components/blocks/auth/__tests__/auth-flow-block.test.d.ts +0 -1
  70. package/dist-lib/components/blocks/auth/__tests__/auth-state-atom.test.d.ts +0 -1
  71. package/dist-lib/components/blocks/auth/__tests__/linked-accounts-block.test.d.ts +0 -1
  72. package/dist-lib/components/blocks/auth/__tests__/onboarding-block.test.d.ts +0 -1
  73. package/dist-lib/components/blocks/auth/__tests__/passkey-manager-block.test.d.ts +0 -1
  74. package/dist-lib/components/blocks/auth/__tests__/passkey-sign-in-block.test.d.ts +0 -1
  75. package/dist-lib/components/blocks/auth/__tests__/signup-block.test.d.ts +0 -1
  76. package/dist-lib/components/blocks/auth/__tests__/update-password-block.test.d.ts +0 -1
  77. package/dist-lib/components/blocks/chat/__tests__/ai-panel.test.d.ts +0 -1
  78. package/dist-lib/components/blocks/profile/__tests__/profile-card-block.test.d.ts +0 -1
  79. package/dist-lib/components/blocks/scaffold/__tests__/scaffold-atom.test.d.ts +0 -1
  80. package/dist-lib/components/blocks/scaffold/__tests__/scaffold.test.d.ts +0 -1
  81. package/dist-lib/components/blocks/shell/__tests__/shell-fit-atom.test.d.ts +0 -1
  82. package/dist-lib/components/blocks/shell/__tests__/shell-layout.test.d.ts +0 -1
  83. package/dist-lib/components/blocks/shell/__tests__/shell-metrics.test.d.ts +0 -1
  84. package/dist-lib/components/blocks/sidebar/__tests__/ai-sidebar-atom.test.d.ts +0 -1
  85. package/dist-lib/components/blocks/sidebar/__tests__/ai-sidebar.test.d.ts +0 -1
  86. package/dist-lib/components/blocks/sidebar/__tests__/use-ai-sidebar.test.d.ts +0 -1
  87. package/dist-lib/components/composed/__tests__/logo.test.d.ts +0 -1
  88. package/dist-lib/components/composed/action-bar/__tests__/action-bar.test.d.ts +0 -1
  89. package/dist-lib/components/composed/ai/__tests__/ai.test.d.ts +0 -1
  90. package/dist-lib/components/composed/chat/__tests__/attachment.test.d.ts +0 -1
  91. package/dist-lib/components/composed/chat/__tests__/beautiful-ui.test.d.ts +0 -1
  92. package/dist-lib/components/composed/chat/__tests__/chart.test.d.ts +0 -1
  93. package/dist-lib/components/composed/chat/__tests__/code-block.test.d.ts +0 -1
  94. package/dist-lib/components/composed/chat/__tests__/composer-attachments.test.d.ts +0 -1
  95. package/dist-lib/components/composed/chat/__tests__/composer.test.d.ts +0 -1
  96. package/dist-lib/components/composed/chat/__tests__/flowchart.test.d.ts +0 -1
  97. package/dist-lib/components/composed/chat/__tests__/glass-material.test.d.ts +0 -1
  98. package/dist-lib/components/composed/chat/__tests__/markdown.test.d.ts +0 -1
  99. package/dist-lib/components/composed/chat/__tests__/menu-command.test.d.ts +0 -1
  100. package/dist-lib/components/composed/chat/__tests__/recommendation.test.d.ts +0 -1
  101. package/dist-lib/components/composed/tree/__tests__/tree-atom.test.d.ts +0 -1
  102. package/dist-lib/components/composed/tree/__tests__/tree.test.d.ts +0 -1
  103. package/dist-lib/components/composed/tree/__tests__/use-tree.test.d.ts +0 -1
  104. package/dist-lib/components/composed/user/__tests__/message.test.d.ts +0 -1
  105. package/dist-lib/components/composed/verse/__tests__/verse.test.d.ts +0 -1
  106. package/dist-lib/components/docs/atoms-gallery.d.ts +0 -12
  107. package/dist-lib/components/docs/block-demo-stage.d.ts +0 -7
  108. package/dist-lib/components/docs/blocks-gallery.d.ts +0 -2
  109. package/dist-lib/components/docs/browser.d.ts +0 -10
  110. package/dist-lib/components/docs/code-block.d.ts +0 -4
  111. package/dist-lib/components/docs/components-gallery.d.ts +0 -2
  112. package/dist-lib/components/docs/demo-controls.d.ts +0 -21
  113. package/dist-lib/components/docs/hero.d.ts +0 -5
  114. package/dist-lib/components/docs/mermaid.d.ts +0 -3
  115. package/dist-lib/components/icons/__tests__/icons.test.d.ts +0 -1
  116. package/dist-lib/components/stories/attachment.story.d.ts +0 -11
  117. package/dist-lib/components/stories/auth-flow-block.story.d.ts +0 -2
  118. package/dist-lib/components/stories/avatar.story.d.ts +0 -6
  119. package/dist-lib/components/stories/base.story.d.ts +0 -6
  120. package/dist-lib/components/stories/bubble.story.d.ts +0 -6
  121. package/dist-lib/components/stories/button.story.d.ts +0 -9
  122. package/dist-lib/components/stories/card.story.d.ts +0 -8
  123. package/dist-lib/components/stories/chart.story.d.ts +0 -34
  124. package/dist-lib/components/stories/checkbox.story.d.ts +0 -6
  125. package/dist-lib/components/stories/code-auth-block.story.d.ts +0 -2
  126. package/dist-lib/components/stories/code-block.story.d.ts +0 -12
  127. package/dist-lib/components/stories/composed-password-input.story.d.ts +0 -6
  128. package/dist-lib/components/stories/context-cards.story.d.ts +0 -3
  129. package/dist-lib/components/stories/emoji-action-bar.story.d.ts +0 -3
  130. package/dist-lib/components/stories/field.story.d.ts +0 -6
  131. package/dist-lib/components/stories/file-icons.story.d.ts +0 -5
  132. package/dist-lib/components/stories/filter-table.story.d.ts +0 -21
  133. package/dist-lib/components/stories/flowchart.story.d.ts +0 -3
  134. package/dist-lib/components/stories/forgot-password-block.story.d.ts +0 -2
  135. package/dist-lib/components/stories/frame.story.d.ts +0 -8
  136. package/dist-lib/components/stories/index.d.ts +0 -54
  137. package/dist-lib/components/stories/input-group.story.d.ts +0 -6
  138. package/dist-lib/components/stories/input.story.d.ts +0 -8
  139. package/dist-lib/components/stories/insight-cards.story.d.ts +0 -45
  140. package/dist-lib/components/stories/label.story.d.ts +0 -8
  141. package/dist-lib/components/stories/linked-accounts-block.story.d.ts +0 -2
  142. package/dist-lib/components/stories/login-block.story.d.ts +0 -2
  143. package/dist-lib/components/stories/logo.story.d.ts +0 -3
  144. package/dist-lib/components/stories/markdown.story.d.ts +0 -7
  145. package/dist-lib/components/stories/menu-command.story.d.ts +0 -13
  146. package/dist-lib/components/stories/onboarding-block.story.d.ts +0 -2
  147. package/dist-lib/components/stories/otp-field.story.d.ts +0 -8
  148. package/dist-lib/components/stories/passkey-manager-block.story.d.ts +0 -2
  149. package/dist-lib/components/stories/passkey-sign-in-block.story.d.ts +0 -2
  150. package/dist-lib/components/stories/password-input.story.d.ts +0 -9
  151. package/dist-lib/components/stories/profile-card-block.story.d.ts +0 -6
  152. package/dist-lib/components/stories/recommendation-card.story.d.ts +0 -3
  153. package/dist-lib/components/stories/records-table.story.d.ts +0 -23
  154. package/dist-lib/components/stories/reference.story.d.ts +0 -9
  155. package/dist-lib/components/stories/research-answer.story.d.ts +0 -10
  156. package/dist-lib/components/stories/scaffold-root.story.d.ts +0 -6
  157. package/dist-lib/components/stories/separator.story.d.ts +0 -6
  158. package/dist-lib/components/stories/shell-layout.story.d.ts +0 -2
  159. package/dist-lib/components/stories/signup-block.story.d.ts +0 -2
  160. package/dist-lib/components/stories/social-providers.story.d.ts +0 -3
  161. package/dist-lib/components/stories/streaming-text.story.d.ts +0 -3
  162. package/dist-lib/components/stories/text.story.d.ts +0 -8
  163. package/dist-lib/components/stories/textarea.story.d.ts +0 -6
  164. package/dist-lib/components/stories/tree.story.d.ts +0 -4
  165. package/dist-lib/components/stories/update-password-block.story.d.ts +0 -2
  166. package/dist-lib/components/stories/user.story.d.ts +0 -8
  167. package/dist-lib/components/stories/verse.story.d.ts +0 -6
  168. package/dist-lib/components/ui/chat/__tests__/segmented-toggle.test.d.ts +0 -1
  169. package/dist-lib/index.js.map +0 -1
  170. package/dist-lib/lib/state/__tests__/sound.test.d.ts +0 -1
  171. package/dist-lib/lib/utils.test.d.ts +0 -1
  172. package/src/assets/css/base.css +0 -62
  173. package/src/assets/css/chat.css +0 -229
  174. package/src/assets/css/shadows.css +0 -157
  175. package/src/assets/css/theme.css +0 -321
  176. package/src/components/AGENTS.md +0 -0
  177. package/src/components/atoms/_layout.tsx +0 -9
  178. package/src/components/atoms/avatar/base.tsx +0 -70
  179. package/src/components/atoms/avatar/index.ts +0 -10
  180. package/src/components/atoms/avatar/types.ts +0 -24
  181. package/src/components/atoms/avatar/utils.ts +0 -54
  182. package/src/components/atoms/avatar/verified.tsx +0 -16
  183. package/src/components/atoms/background/index.ts +0 -8
  184. package/src/components/atoms/background/texture.tsx +0 -29
  185. package/src/components/atoms/background/type.ts +0 -10
  186. package/src/components/atoms/background/utils.ts +0 -13
  187. package/src/components/atoms/bubble/__tests__/bubble.test.tsx +0 -193
  188. package/src/components/atoms/bubble/__tests__/reference.test.tsx +0 -25
  189. package/src/components/atoms/bubble/actions.tsx +0 -28
  190. package/src/components/atoms/bubble/context.ts +0 -11
  191. package/src/components/atoms/bubble/default.tsx +0 -46
  192. package/src/components/atoms/bubble/header.tsx +0 -36
  193. package/src/components/atoms/bubble/index.ts +0 -37
  194. package/src/components/atoms/bubble/message.tsx +0 -32
  195. package/src/components/atoms/bubble/reactions.tsx +0 -191
  196. package/src/components/atoms/bubble/types.ts +0 -82
  197. package/src/components/atoms/bubble/utils.ts +0 -46
  198. package/src/components/atoms/chip.tsx +0 -61
  199. package/src/components/atoms/field.tsx +0 -43
  200. package/src/components/atoms/index.ts +0 -26
  201. package/src/components/atoms/loader.tsx +0 -33
  202. package/src/components/atoms/reference.tsx +0 -41
  203. package/src/components/atoms/text/__tests__/text.test.tsx +0 -47
  204. package/src/components/atoms/text/default.tsx +0 -59
  205. package/src/components/atoms/text/heading.tsx +0 -58
  206. package/src/components/atoms/text/index.ts +0 -28
  207. package/src/components/atoms/text/label.tsx +0 -16
  208. package/src/components/atoms/text/paragraph.tsx +0 -55
  209. package/src/components/atoms/text/span.tsx +0 -14
  210. package/src/components/atoms/text/types.ts +0 -41
  211. package/src/components/atoms/text/utils.ts +0 -16
  212. package/src/components/atoms/text-selection/__tests__/click-popover.test.tsx +0 -61
  213. package/src/components/atoms/text-selection/__tests__/text-selection.test.tsx +0 -90
  214. package/src/components/atoms/text-selection/click-popover.tsx +0 -62
  215. package/src/components/atoms/text-selection/index.ts +0 -30
  216. package/src/components/atoms/text-selection/popover.tsx +0 -103
  217. package/src/components/atoms/text-selection/selection-atom.ts +0 -51
  218. package/src/components/atoms/text-selection/selection.tsx +0 -56
  219. package/src/components/atoms/text-selection/types.ts +0 -125
  220. package/src/components/atoms/text-selection/use-selection.ts +0 -84
  221. package/src/components/atoms/types.ts +0 -46
  222. package/src/components/blocks/.gitkeep +0 -0
  223. package/src/components/blocks/auth/__tests__/auth-flow-block.test.tsx +0 -183
  224. package/src/components/blocks/auth/__tests__/auth-state-atom.test.tsx +0 -247
  225. package/src/components/blocks/auth/__tests__/linked-accounts-block.test.tsx +0 -128
  226. package/src/components/blocks/auth/__tests__/onboarding-block.test.tsx +0 -183
  227. package/src/components/blocks/auth/__tests__/passkey-manager-block.test.tsx +0 -131
  228. package/src/components/blocks/auth/__tests__/passkey-sign-in-block.test.tsx +0 -59
  229. package/src/components/blocks/auth/__tests__/signup-block.test.tsx +0 -176
  230. package/src/components/blocks/auth/__tests__/update-password-block.test.tsx +0 -95
  231. package/src/components/blocks/auth/auth-flow-atom.ts +0 -238
  232. package/src/components/blocks/auth/auth-flow-block.tsx +0 -211
  233. package/src/components/blocks/auth/auth-session-atom.ts +0 -82
  234. package/src/components/blocks/auth/auth-shell.tsx +0 -265
  235. package/src/components/blocks/auth/auth-state.ts +0 -40
  236. package/src/components/blocks/auth/code-auth-block.tsx +0 -176
  237. package/src/components/blocks/auth/forgot-password-block.tsx +0 -112
  238. package/src/components/blocks/auth/linked-accounts-block.tsx +0 -203
  239. package/src/components/blocks/auth/login-block.tsx +0 -217
  240. package/src/components/blocks/auth/onboarding/profile-step.tsx +0 -216
  241. package/src/components/blocks/auth/onboarding-block.tsx +0 -183
  242. package/src/components/blocks/auth/passkey-manager-block.tsx +0 -316
  243. package/src/components/blocks/auth/passkey-sign-in-block.tsx +0 -67
  244. package/src/components/blocks/auth/signup-block.tsx +0 -256
  245. package/src/components/blocks/auth/type.ts +0 -436
  246. package/src/components/blocks/auth/update-password-block.tsx +0 -139
  247. package/src/components/blocks/auth/use-auth-state.ts +0 -127
  248. package/src/components/blocks/chat/__tests__/ai-panel.test.tsx +0 -65
  249. package/src/components/blocks/chat/banners.tsx +0 -61
  250. package/src/components/blocks/chat/base.tsx +0 -84
  251. package/src/components/blocks/chat/header.tsx +0 -60
  252. package/src/components/blocks/chat/index.ts +0 -37
  253. package/src/components/blocks/chat/recommendation-stack.tsx +0 -41
  254. package/src/components/blocks/chat/shared.tsx +0 -27
  255. package/src/components/blocks/chat/suggested-prompts.tsx +0 -45
  256. package/src/components/blocks/chat/type.ts +0 -96
  257. package/src/components/blocks/chat/version-history-record.tsx +0 -37
  258. package/src/components/blocks/layout.ts +0 -35
  259. package/src/components/blocks/profile/__tests__/profile-card-block.test.tsx +0 -362
  260. package/src/components/blocks/profile/index.ts +0 -28
  261. package/src/components/blocks/profile/profile-card-atom.ts +0 -247
  262. package/src/components/blocks/profile/profile-card-block.tsx +0 -369
  263. package/src/components/blocks/profile/type.ts +0 -93
  264. package/src/components/blocks/profile/use-profile-card-state.ts +0 -67
  265. package/src/components/blocks/profile/use-profile-card.ts +0 -132
  266. package/src/components/blocks/scaffold/__tests__/scaffold-atom.test.tsx +0 -236
  267. package/src/components/blocks/scaffold/__tests__/scaffold.test.tsx +0 -524
  268. package/src/components/blocks/scaffold/constants.ts +0 -39
  269. package/src/components/blocks/scaffold/index.ts +0 -60
  270. package/src/components/blocks/scaffold/panel-close-button.tsx +0 -36
  271. package/src/components/blocks/scaffold/panel-menu-button.tsx +0 -221
  272. package/src/components/blocks/scaffold/scaffold-actions.tsx +0 -92
  273. package/src/components/blocks/scaffold/scaffold-atom.ts +0 -427
  274. package/src/components/blocks/scaffold/scaffold-canvas.tsx +0 -162
  275. package/src/components/blocks/scaffold/scaffold-context.ts +0 -20
  276. package/src/components/blocks/scaffold/scaffold-inspector.tsx +0 -137
  277. package/src/components/blocks/scaffold/scaffold-main.tsx +0 -28
  278. package/src/components/blocks/scaffold/scaffold-panel.tsx +0 -186
  279. package/src/components/blocks/scaffold/scaffold-root.tsx +0 -120
  280. package/src/components/blocks/scaffold/scaffold-sidebar.tsx +0 -31
  281. package/src/components/blocks/scaffold/scaffold-sub-panel.tsx +0 -122
  282. package/src/components/blocks/scaffold/scaffold-tab.tsx +0 -108
  283. package/src/components/blocks/scaffold/type.ts +0 -264
  284. package/src/components/blocks/scaffold/use-scaffold-state.ts +0 -85
  285. package/src/components/blocks/scaffold/use-scaffold.ts +0 -59
  286. package/src/components/blocks/scaffold/utils.ts +0 -112
  287. package/src/components/blocks/shell/__tests__/shell-fit-atom.test.tsx +0 -362
  288. package/src/components/blocks/shell/__tests__/shell-layout.test.tsx +0 -596
  289. package/src/components/blocks/shell/__tests__/shell-metrics.test.ts +0 -154
  290. package/src/components/blocks/shell/animated-panel-inset.tsx +0 -27
  291. package/src/components/blocks/shell/animated-panel-provider.tsx +0 -269
  292. package/src/components/blocks/shell/animated-panel-trigger.tsx +0 -51
  293. package/src/components/blocks/shell/animated-panel.tsx +0 -180
  294. package/src/components/blocks/shell/index.ts +0 -30
  295. package/src/components/blocks/shell/shell-fit-atom.ts +0 -246
  296. package/src/components/blocks/shell/shell-layout.tsx +0 -139
  297. package/src/components/blocks/shell/shell-metrics.ts +0 -133
  298. package/src/components/blocks/shell/shell-panel-atom.ts +0 -74
  299. package/src/components/blocks/shell/type.ts +0 -361
  300. package/src/components/blocks/shell/use-shell-fit-state.ts +0 -49
  301. package/src/components/blocks/shell/use-shell-fit.ts +0 -153
  302. package/src/components/blocks/shell/use-shell-panels.ts +0 -126
  303. package/src/components/blocks/shell/utils.ts +0 -187
  304. package/src/components/blocks/sidebar/__tests__/ai-sidebar-atom.test.tsx +0 -325
  305. package/src/components/blocks/sidebar/__tests__/ai-sidebar.test.tsx +0 -93
  306. package/src/components/blocks/sidebar/__tests__/use-ai-sidebar.test.tsx +0 -310
  307. package/src/components/blocks/sidebar/ai-sidebar-atom.ts +0 -698
  308. package/src/components/blocks/sidebar/ai-sidebar.tsx +0 -150
  309. package/src/components/blocks/sidebar/index.ts +0 -67
  310. package/src/components/blocks/sidebar/marquee-label.tsx +0 -59
  311. package/src/components/blocks/sidebar/sidebar-context.ts +0 -15
  312. package/src/components/blocks/sidebar/sidebar-icon.tsx +0 -14
  313. package/src/components/blocks/sidebar/sidebar-row.tsx +0 -378
  314. package/src/components/blocks/sidebar/type.ts +0 -294
  315. package/src/components/blocks/sidebar/use-ai-sidebar-state.ts +0 -123
  316. package/src/components/blocks/sidebar/use-ai-sidebar.ts +0 -619
  317. package/src/components/blocks/sidebar/utils.ts +0 -170
  318. package/src/components/blocks/types.ts +0 -6
  319. package/src/components/composed/.gitkeep +0 -0
  320. package/src/components/composed/__tests__/logo.test.tsx +0 -60
  321. package/src/components/composed/action-bar/__tests__/action-bar.test.tsx +0 -125
  322. package/src/components/composed/action-bar/action.tsx +0 -77
  323. package/src/components/composed/action-bar/emojis.tsx +0 -97
  324. package/src/components/composed/action-bar/index.ts +0 -24
  325. package/src/components/composed/action-bar/toolbar.tsx +0 -66
  326. package/src/components/composed/action-bar/types.ts +0 -58
  327. package/src/components/composed/action-bar/utils.ts +0 -140
  328. package/src/components/composed/ai/__tests__/ai.test.tsx +0 -66
  329. package/src/components/composed/ai/avatar.tsx +0 -19
  330. package/src/components/composed/ai/index.ts +0 -36
  331. package/src/components/composed/ai/message.tsx +0 -49
  332. package/src/components/composed/ai/research-answer.tsx +0 -157
  333. package/src/components/composed/ai/shared.tsx +0 -94
  334. package/src/components/composed/ai/streaming-text.tsx +0 -94
  335. package/src/components/composed/ai/suggested-prompt.tsx +0 -183
  336. package/src/components/composed/ai/types.ts +0 -81
  337. package/src/components/composed/chat/__tests__/attachment.test.tsx +0 -218
  338. package/src/components/composed/chat/__tests__/beautiful-ui.test.tsx +0 -57
  339. package/src/components/composed/chat/__tests__/chart.test.tsx +0 -62
  340. package/src/components/composed/chat/__tests__/code-block.test.tsx +0 -12
  341. package/src/components/composed/chat/__tests__/composer-attachments.test.tsx +0 -101
  342. package/src/components/composed/chat/__tests__/composer.test.tsx +0 -248
  343. package/src/components/composed/chat/__tests__/flowchart.test.tsx +0 -145
  344. package/src/components/composed/chat/__tests__/glass-material.test.tsx +0 -54
  345. package/src/components/composed/chat/__tests__/markdown.test.tsx +0 -25
  346. package/src/components/composed/chat/__tests__/menu-command.test.tsx +0 -35
  347. package/src/components/composed/chat/__tests__/recommendation.test.tsx +0 -43
  348. package/src/components/composed/chat/actions.tsx +0 -81
  349. package/src/components/composed/chat/attachment-file.ts +0 -82
  350. package/src/components/composed/chat/attachment.tsx +0 -498
  351. package/src/components/composed/chat/chart.tsx +0 -401
  352. package/src/components/composed/chat/code-block.tsx +0 -123
  353. package/src/components/composed/chat/composer/add-button.tsx +0 -29
  354. package/src/components/composed/chat/composer/base.tsx +0 -573
  355. package/src/components/composed/chat/composer/command-menu.tsx +0 -47
  356. package/src/components/composed/chat/composer/hooks.ts +0 -29
  357. package/src/components/composed/chat/composer/index.ts +0 -19
  358. package/src/components/composed/chat/composer/send-button.tsx +0 -36
  359. package/src/components/composed/chat/composer/suggestions.tsx +0 -115
  360. package/src/components/composed/chat/composer/use-dictation.ts +0 -123
  361. package/src/components/composed/chat/composer/utils.ts +0 -74
  362. package/src/components/composed/chat/context-cards.tsx +0 -63
  363. package/src/components/composed/chat/filter-table.tsx +0 -119
  364. package/src/components/composed/chat/flowchart/chart-node.tsx +0 -162
  365. package/src/components/composed/chat/flowchart/connector.tsx +0 -32
  366. package/src/components/composed/chat/flowchart/constant.ts +0 -26
  367. package/src/components/composed/chat/flowchart/default.tsx +0 -230
  368. package/src/components/composed/chat/flowchart/edge-toolbar.tsx +0 -73
  369. package/src/components/composed/chat/flowchart/hooks.tsx +0 -347
  370. package/src/components/composed/chat/flowchart/index.ts +0 -14
  371. package/src/components/composed/chat/flowchart/step-body.tsx +0 -82
  372. package/src/components/composed/chat/flowchart/types.ts +0 -89
  373. package/src/components/composed/chat/flowchart/utils.ts +0 -78
  374. package/src/components/composed/chat/hint.tsx +0 -59
  375. package/src/components/composed/chat/index.ts +0 -98
  376. package/src/components/composed/chat/insight-cards.tsx +0 -199
  377. package/src/components/composed/chat/markdown-atom.ts +0 -15
  378. package/src/components/composed/chat/markdown.tsx +0 -213
  379. package/src/components/composed/chat/recommendation/checkbox.tsx +0 -122
  380. package/src/components/composed/chat/recommendation/constant.ts +0 -54
  381. package/src/components/composed/chat/recommendation/default.tsx +0 -25
  382. package/src/components/composed/chat/recommendation/group.tsx +0 -36
  383. package/src/components/composed/chat/recommendation/index.ts +0 -17
  384. package/src/components/composed/chat/recommendation/item.tsx +0 -215
  385. package/src/components/composed/chat/recommendation/types.ts +0 -76
  386. package/src/components/composed/chat/records-table.tsx +0 -130
  387. package/src/components/composed/chat/type.ts +0 -157
  388. package/src/components/composed/logo.tsx +0 -171
  389. package/src/components/composed/password-input.tsx +0 -179
  390. package/src/components/composed/reader/applied-mark.tsx +0 -32
  391. package/src/components/composed/reader/apply-toast.tsx +0 -49
  392. package/src/components/composed/reader/index.ts +0 -10
  393. package/src/components/composed/reader/selection-highlight.tsx +0 -26
  394. package/src/components/composed/reader/selection-popover.tsx +0 -149
  395. package/src/components/composed/reader/type.ts +0 -48
  396. package/src/components/composed/social-providers.tsx +0 -154
  397. package/src/components/composed/tree/CLAUDE.md +0 -145
  398. package/src/components/composed/tree/__tests__/tree-atom.test.tsx +0 -217
  399. package/src/components/composed/tree/__tests__/tree.test.tsx +0 -522
  400. package/src/components/composed/tree/__tests__/use-tree.test.tsx +0 -333
  401. package/src/components/composed/tree/constants.ts +0 -55
  402. package/src/components/composed/tree/index.ts +0 -51
  403. package/src/components/composed/tree/tree-atom.ts +0 -590
  404. package/src/components/composed/tree/tree-context.ts +0 -13
  405. package/src/components/composed/tree/tree-node.tsx +0 -496
  406. package/src/components/composed/tree/tree.tsx +0 -233
  407. package/src/components/composed/tree/type.ts +0 -322
  408. package/src/components/composed/tree/use-tree-dnd.ts +0 -179
  409. package/src/components/composed/tree/use-tree-state.ts +0 -105
  410. package/src/components/composed/tree/use-tree.ts +0 -311
  411. package/src/components/composed/tree/utils.ts +0 -172
  412. package/src/components/composed/types.ts +0 -9
  413. package/src/components/composed/user/__tests__/message.test.tsx +0 -79
  414. package/src/components/composed/user/index.ts +0 -14
  415. package/src/components/composed/user/info.tsx +0 -56
  416. package/src/components/composed/user/message.tsx +0 -36
  417. package/src/components/composed/user/pill.tsx +0 -20
  418. package/src/components/composed/user/types.ts +0 -47
  419. package/src/components/composed/user/utils.ts +0 -0
  420. package/src/components/composed/verse/__tests__/verse.test.tsx +0 -57
  421. package/src/components/composed/verse/index.ts +0 -2
  422. package/src/components/composed/verse/types.ts +0 -24
  423. package/src/components/composed/verse/verse.tsx +0 -100
  424. package/src/components/docs/atoms-gallery.tsx +0 -286
  425. package/src/components/docs/block-demo-stage.tsx +0 -38
  426. package/src/components/docs/blocks-gallery.tsx +0 -224
  427. package/src/components/docs/browser.tsx +0 -87
  428. package/src/components/docs/code-block.tsx +0 -10
  429. package/src/components/docs/components-gallery.tsx +0 -182
  430. package/src/components/docs/demo-controls.tsx +0 -142
  431. package/src/components/docs/hero.tsx +0 -197
  432. package/src/components/docs/mermaid.tsx +0 -55
  433. package/src/components/icons/README.md +0 -91
  434. package/src/components/icons/__tests__/icons.test.tsx +0 -58
  435. package/src/components/icons/file-badge-cfm.tsx +0 -615
  436. package/src/components/icons/file-badge-corpus.tsx +0 -604
  437. package/src/components/icons/file-badge-pdf.tsx +0 -570
  438. package/src/components/icons/file-badge-tei.tsx +0 -524
  439. package/src/components/icons/file-badge-tf.tsx +0 -620
  440. package/src/components/icons/file-badge-txt.tsx +0 -607
  441. package/src/components/icons/file-badge-xml.tsx +0 -576
  442. package/src/components/icons/file-wordmark-cfm.tsx +0 -424
  443. package/src/components/icons/file-wordmark-corpus.tsx +0 -454
  444. package/src/components/icons/file-wordmark-pdf.tsx +0 -470
  445. package/src/components/icons/file-wordmark-tei.tsx +0 -424
  446. package/src/components/icons/file-wordmark-tf.tsx +0 -406
  447. package/src/components/icons/file-wordmark-txt.tsx +0 -421
  448. package/src/components/icons/file-wordmark-xml.tsx +0 -424
  449. package/src/components/icons/index.ts +0 -16
  450. package/src/components/icons/types.ts +0 -8
  451. package/src/components/motion/index.ts +0 -0
  452. package/src/components/motion/overflow-actions.tsx +0 -376
  453. package/src/components/motion/popover-morph.tsx +0 -292
  454. package/src/components/motion/popover-position.ts +0 -86
  455. package/src/components/motion/shared-layout-bg.tsx +0 -151
  456. package/src/components/stories/attachment.story.tsx +0 -40
  457. package/src/components/stories/auth-flow-block.story.tsx +0 -17
  458. package/src/components/stories/avatar.story.tsx +0 -33
  459. package/src/components/stories/base.story.tsx +0 -70
  460. package/src/components/stories/bubble.story.tsx +0 -61
  461. package/src/components/stories/button.story.tsx +0 -32
  462. package/src/components/stories/card.story.tsx +0 -36
  463. package/src/components/stories/chart.story.tsx +0 -54
  464. package/src/components/stories/checkbox.story.tsx +0 -30
  465. package/src/components/stories/code-auth-block.story.tsx +0 -20
  466. package/src/components/stories/code-block.story.tsx +0 -35
  467. package/src/components/stories/composed-password-input.story.tsx +0 -41
  468. package/src/components/stories/context-cards.story.tsx +0 -30
  469. package/src/components/stories/emoji-action-bar.story.tsx +0 -20
  470. package/src/components/stories/field.story.tsx +0 -32
  471. package/src/components/stories/file-icons.story.tsx +0 -20
  472. package/src/components/stories/filter-table.story.tsx +0 -63
  473. package/src/components/stories/flowchart.story.tsx +0 -25
  474. package/src/components/stories/forgot-password-block.story.tsx +0 -14
  475. package/src/components/stories/frame.story.tsx +0 -32
  476. package/src/components/stories/index.ts +0 -57
  477. package/src/components/stories/input-group.story.tsx +0 -27
  478. package/src/components/stories/input.story.tsx +0 -42
  479. package/src/components/stories/insight-cards.story.tsx +0 -67
  480. package/src/components/stories/label.story.tsx +0 -32
  481. package/src/components/stories/linked-accounts-block.story.tsx +0 -23
  482. package/src/components/stories/login-block.story.tsx +0 -18
  483. package/src/components/stories/logo.story.tsx +0 -21
  484. package/src/components/stories/markdown.story.tsx +0 -31
  485. package/src/components/stories/menu-command.story.tsx +0 -43
  486. package/src/components/stories/onboarding-block.story.tsx +0 -14
  487. package/src/components/stories/otp-field.story.tsx +0 -35
  488. package/src/components/stories/passkey-manager-block.story.tsx +0 -18
  489. package/src/components/stories/passkey-sign-in-block.story.tsx +0 -15
  490. package/src/components/stories/password-input.story.tsx +0 -35
  491. package/src/components/stories/profile-card-block.story.tsx +0 -29
  492. package/src/components/stories/recommendation-card.story.tsx +0 -37
  493. package/src/components/stories/records-table.story.tsx +0 -52
  494. package/src/components/stories/reference.story.tsx +0 -33
  495. package/src/components/stories/research-answer.story.tsx +0 -32
  496. package/src/components/stories/scaffold-root.story.tsx +0 -47
  497. package/src/components/stories/separator.story.tsx +0 -37
  498. package/src/components/stories/shell-layout.story.tsx +0 -19
  499. package/src/components/stories/signup-block.story.tsx +0 -18
  500. package/src/components/stories/social-providers.story.tsx +0 -26
  501. package/src/components/stories/streaming-text.story.tsx +0 -25
  502. package/src/components/stories/text.story.tsx +0 -31
  503. package/src/components/stories/textarea.story.tsx +0 -34
  504. package/src/components/stories/tree.story.tsx +0 -31
  505. package/src/components/stories/update-password-block.story.tsx +0 -14
  506. package/src/components/stories/user.story.tsx +0 -32
  507. package/src/components/stories/verse.story.tsx +0 -42
  508. package/src/components/theme-provider.tsx +0 -230
  509. package/src/components/types.ts +0 -106
  510. package/src/components/ui/accordion.tsx +0 -68
  511. package/src/components/ui/alert-dialog.tsx +0 -167
  512. package/src/components/ui/alert.tsx +0 -84
  513. package/src/components/ui/autocomplete.tsx +0 -303
  514. package/src/components/ui/avatar.tsx +0 -109
  515. package/src/components/ui/badge.tsx +0 -101
  516. package/src/components/ui/button-group.tsx +0 -88
  517. package/src/components/ui/button.tsx +0 -192
  518. package/src/components/ui/card.tsx +0 -253
  519. package/src/components/ui/chat/__tests__/segmented-toggle.test.tsx +0 -27
  520. package/src/components/ui/chat/avatar-handle.tsx +0 -30
  521. package/src/components/ui/chat/badges.tsx +0 -85
  522. package/src/components/ui/chat/buttons.tsx +0 -94
  523. package/src/components/ui/chat/chips.tsx +0 -106
  524. package/src/components/ui/chat/dot.tsx +0 -81
  525. package/src/components/ui/chat/icon-button.tsx +0 -43
  526. package/src/components/ui/chat/icon-tile.tsx +0 -33
  527. package/src/components/ui/chat/index.ts +0 -12
  528. package/src/components/ui/chat/inline-source.tsx +0 -94
  529. package/src/components/ui/chat/segmented-toggle.tsx +0 -99
  530. package/src/components/ui/chat/tag.tsx +0 -61
  531. package/src/components/ui/chat/thumbnail.tsx +0 -31
  532. package/src/components/ui/chat/waveform.tsx +0 -30
  533. package/src/components/ui/checkbox.tsx +0 -83
  534. package/src/components/ui/collapsible.tsx +0 -42
  535. package/src/components/ui/command.tsx +0 -263
  536. package/src/components/ui/context-menu.tsx +0 -342
  537. package/src/components/ui/emoji-picker.tsx +0 -161
  538. package/src/components/ui/field.tsx +0 -89
  539. package/src/components/ui/frame.tsx +0 -87
  540. package/src/components/ui/glasscn/glass-button-group.tsx +0 -34
  541. package/src/components/ui/glasscn/glass-button.tsx +0 -25
  542. package/src/components/ui/glasscn/glass-container.tsx +0 -94
  543. package/src/components/ui/glasscn/glass-separator.tsx +0 -39
  544. package/src/components/ui/glasscn/liquid-glass.tsx +0 -59
  545. package/src/components/ui/group.tsx +0 -92
  546. package/src/components/ui/input-group.tsx +0 -105
  547. package/src/components/ui/input.tsx +0 -70
  548. package/src/components/ui/kbd.tsx +0 -32
  549. package/src/components/ui/label.tsx +0 -36
  550. package/src/components/ui/menu-command.tsx +0 -156
  551. package/src/components/ui/menu.tsx +0 -352
  552. package/src/components/ui/otp-field.tsx +0 -88
  553. package/src/components/ui/popover-glass.tsx +0 -158
  554. package/src/components/ui/popover.tsx +0 -120
  555. package/src/components/ui/preview-card.tsx +0 -61
  556. package/src/components/ui/scroll-area.tsx +0 -80
  557. package/src/components/ui/select.tsx +0 -257
  558. package/src/components/ui/separator.tsx +0 -23
  559. package/src/components/ui/sheet.tsx +0 -135
  560. package/src/components/ui/skeleton.tsx +0 -18
  561. package/src/components/ui/spinner.tsx +0 -17
  562. package/src/components/ui/switch.tsx +0 -30
  563. package/src/components/ui/tabs.tsx +0 -120
  564. package/src/components/ui/textarea.tsx +0 -58
  565. package/src/components/ui/toast.tsx +0 -325
  566. package/src/components/ui/toolbar.tsx +0 -92
  567. package/src/components/ui/tooltip.tsx +0 -67
  568. package/src/index.css +0 -10
  569. package/src/index.ts +0 -102
  570. package/src/lib/attachment-content.ts +0 -28
  571. package/src/lib/auth-accent.ts +0 -49
  572. package/src/lib/ease.ts +0 -90
  573. package/src/lib/glass-variants.ts +0 -22
  574. package/src/lib/hooks/use-hover-capable.ts +0 -23
  575. package/src/lib/hooks/use-mobile.ts +0 -21
  576. package/src/lib/keyed-atom.ts +0 -60
  577. package/src/lib/segmented-control.ts +0 -42
  578. package/src/lib/sound.ts +0 -39
  579. package/src/lib/specular.ts +0 -10
  580. package/src/lib/state/__tests__/sound.test.tsx +0 -53
  581. package/src/lib/state/exegia-provider.tsx +0 -83
  582. package/src/lib/state/index.ts +0 -4
  583. package/src/lib/state/store.ts +0 -19
  584. package/src/lib/use-motion-panel.ts +0 -78
  585. package/src/lib/utils.test.ts +0 -22
  586. package/src/lib/utils.ts +0 -100
  587. package/src/specular.js +0 -4
  588. /package/{src/components/composed/chat/composer → dist-lib}/BEAUTIFUL-UI-LICENSE.txt +0 -0
@@ -1,54 +0,0 @@
1
- import type { TSignalLevel, TTagTone } from "@/components/ui/chat"
2
- import type { TRecommendationState } from "./types"
3
- import { EASE_IN_OUT, EASE_OUT_STRONG } from "@/lib/ease"
4
-
5
- export const CONFIDENCE: Record<TSignalLevel, string> = {
6
- high: "High confidence",
7
- medium: "Medium confidence",
8
- low: "Low confidence",
9
- }
10
-
11
- export const STATE_LABEL: Record<
12
- Exclude<TRecommendationState, "pending" | "running">,
13
- string
14
- > = {
15
- accepted: "Done",
16
- rejected: "Skipped",
17
- }
18
-
19
- /** Status pill tones, shared with the presentation Tag atom. */
20
- export const STATE_TONE: Record<
21
- Exclude<TRecommendationState, "pending" | "running">,
22
- TTagTone
23
- > = {
24
- accepted: "green",
25
- rejected: "amber",
26
- }
27
-
28
- export const ACTION_MOTION = {
29
- animate: { opacity: 1, y: 0 },
30
- exit: { opacity: 0, y: 4 },
31
- initial: { opacity: 0, y: 4 },
32
- transition: { duration: 0.18, ease: EASE_IN_OUT },
33
- } as const
34
-
35
- /** Row entrance, driven by the Group's staggered `visible` variant. */
36
- export const ROW_VARIANTS = {
37
- hidden: { opacity: 0, y: 8 },
38
- visible: {
39
- opacity: 1,
40
- y: 0,
41
- transition: { duration: 0.45, ease: EASE_OUT_STRONG },
42
- },
43
- } as const
44
-
45
- /** Rows enter staggered 80ms apart; each Item picks up `row` from `ROW_VARIANTS`. */
46
- export const GROUP_VARIANTS = {
47
- hidden: {},
48
- visible: { transition: { staggerChildren: 0.08 } },
49
- } as const
50
-
51
- export const SIZE = 18
52
- export const STROKE = 1.5
53
- export const R = (SIZE - STROKE) / 2
54
- export const C = 2 * Math.PI * R
@@ -1,25 +0,0 @@
1
- "use client"
2
-
3
- import { useId } from "react"
4
- import type * as React from "react"
5
- import { Group } from "./group"
6
- import { Item } from "./item"
7
- import type { IRecommendationCardProps } from "./types"
8
-
9
- /**
10
- * One-card convenience: a Group with a single Item, so existing
11
- * `<RecommendationCard />` call sites keep working.
12
- */
13
- export function RecommendationCard({
14
- value,
15
- defaultOpen = true,
16
- ...props
17
- }: IRecommendationCardProps): React.ReactElement {
18
- const autoId = useId()
19
- const itemValue = value ?? autoId
20
- return (
21
- <Group defaultValue={defaultOpen ? [itemValue] : []}>
22
- <Item value={itemValue} {...props} />
23
- </Group>
24
- )
25
- }
@@ -1,36 +0,0 @@
1
- "use client"
2
-
3
- import { motion } from "motion/react"
4
- import type * as React from "react"
5
- import {
6
- Accordion,
7
- } from "@/components/ui/accordion"
8
- import { cn } from "@/lib/utils"
9
- import type { TRecommendationGroupProps } from "./types"
10
- import { GROUP_VARIANTS } from "./constant"
11
-
12
- /**
13
- * Accordion root for a stack of recommendation items. Defaults to `multiple`
14
- * so each proposal can stay open on its own, like independent suggestion cards.
15
- */
16
- export function Group({
17
- className,
18
- multiple = true,
19
- ...props
20
- }: TRecommendationGroupProps): React.ReactElement {
21
- return (
22
- <Accordion
23
- className={cn("flex w-full flex-col gap-2 max-w-11/12 overflow-clip rounded-md", className)}
24
- data-slot="recommendation-group"
25
- multiple={multiple}
26
- render={
27
- <motion.div
28
- animate="visible"
29
- initial="hidden"
30
- variants={GROUP_VARIANTS}
31
- />
32
- }
33
- {...props}
34
- />
35
- )
36
- }
@@ -1,17 +0,0 @@
1
- import { Checkbox } from "./checkbox"
2
- import { RecommendationCard } from "./default"
3
- import { Group } from "./group"
4
- import { Item } from "./item"
5
-
6
- export type * from "./types"
7
-
8
- export { RecommendationCard }
9
-
10
- export const Recommendation = {
11
- Group,
12
- Item,
13
- Checkbox,
14
- Card: RecommendationCard,
15
- }
16
-
17
- export default Group
@@ -1,215 +0,0 @@
1
- "use client"
2
-
3
- import { Check, Undo2, X } from "lucide-react"
4
- import { AnimatePresence, motion, useReducedMotion } from "motion/react"
5
- import type * as React from "react"
6
- import {
7
- AccordionItem,
8
- AccordionPanel,
9
- AccordionTrigger,
10
- } from "@/components/ui/accordion"
11
- import { Button } from "@/components/ui/button"
12
- import {
13
- Card,
14
- CardFrame,
15
- CardFrameFooter,
16
- CardPanel,
17
- } from "@/components/ui/card"
18
- import { AvatarHandle, Signal, Tag } from "@/components/ui/chat"
19
- import { EASE_OUT_STRONG } from "@/lib/ease"
20
- import { cn } from "@/lib/utils"
21
- import { Checkbox } from "./checkbox"
22
- import { CONFIDENCE, STATE_LABEL, STATE_TONE, ACTION_MOTION, ROW_VARIANTS } from "./constant"
23
- import type { IRecommendationItemProps } from "./types"
24
- import { Reference } from "@/components/atoms"
25
-
26
-
27
- /**
28
- * Human-in-the-loop proposal: title, description with entity + lead-time
29
- * pills, other options with signal bars, confidence + Accept / Alternatives.
30
- * Outcome mark, badge, and the pending ↔ undo swap come from SuggestionCard.
31
- *
32
- * Must render inside `Recommendation.Group`.
33
- *
34
- * @sketch "Component / Recommendation Card"
35
- */
36
- export function Item({
37
- value,
38
- title,
39
- description,
40
- entity,
41
- leadTime,
42
- reference,
43
- options = [],
44
- optionsLabel = "Other options",
45
- confidence = "high",
46
- confidenceLabel,
47
- acceptLabel = "Accept",
48
- rejectLabel,
49
- alternativesLabel = "Alternatives",
50
- state = "pending",
51
- step,
52
- onAccept,
53
- onReject,
54
- onAlternatives,
55
- onUndo,
56
- onSelectOption,
57
- children,
58
- className,
59
- ...props
60
- }: IRecommendationItemProps): React.ReactElement {
61
- const declined = state === "rejected"
62
- const decline = onReject ?? onAlternatives
63
- const declineLabel = rejectLabel ?? alternativesLabel
64
- const reduceMotion = useReducedMotion()
65
- // Options mount with the panel, so they drop in staggered on every open.
66
- const optionMotion = (index: number) =>
67
- reduceMotion
68
- ? {}
69
- : {
70
- animate: { opacity: 1, y: 0 },
71
- initial: { opacity: 0, y: 6 },
72
- transition: {
73
- delay: 0.12 + index * 0.1,
74
- duration: 0.3,
75
- ease: EASE_OUT_STRONG,
76
- },
77
- }
78
-
79
- return (
80
- <AccordionItem
81
- className="border-0 last:border-0"
82
- render={<motion.div variants={reduceMotion ? undefined : ROW_VARIANTS} />}
83
- value={value}
84
- {...props}
85
- >
86
- <CardFrame
87
- className={cn(
88
- "max-w-full [--frame-radius:var(--radius-md)]",
89
- className
90
- )}
91
- data-slot="recommendation-card"
92
- data-state={state}
93
- >
94
- <AccordionTrigger className="gap-3 px-3 py-2.5 hover:bg-black/4 dark:hover:bg-white/4 relative items-center rounded-none text-left focus-visible:ring-0">
95
- <Checkbox state={state} step={step} />
96
- <div className="min-w-0 gap-1 flex flex-1 flex-col items-start">
97
- <span
98
- className={cn(
99
- "leading-4 font-semibold w-full text-[14px] text-text-primary",
100
- declined && "font-light text-muted-foreground line-through"
101
- )}
102
- >
103
- {title}
104
- </span>
105
- </div>
106
- {state === "accepted" || state === "rejected" ? (
107
- <Tag className="uppercase" tone={STATE_TONE[state]}>
108
- {STATE_LABEL[state]}
109
- </Tag>
110
- ) : null}
111
- </AccordionTrigger>
112
-
113
- {/* `relative`: the frame's ::before veil is positioned, so an
114
- unpositioned panel body would paint under it and look faded. */}
115
- <AccordionPanel className="px-0 pb-0 relative">
116
- {(description || entity || leadTime) && <div className={cn("flex flex-wrap items-center gap-x-1.5 gap-y-1.5 px-3 pb-3 text-[13px] leading-[18px] text-text-secondary", declined && "line-through opacity-50")}>
117
- {description}
118
- {entity && <span className="inline-flex h-[22px] items-center gap-1.5 rounded-full bg-surface-subtle py-0.5 pl-0.5 pr-2 text-xs font-medium text-text-primary"><AvatarHandle initials={entity.initials} size={16} src={entity.src} />{entity.name}</span>}
119
- {leadTime && <Tag className="rounded-full" tone="green">{leadTime}</Tag>}
120
- </div>}
121
- {reference && <div
122
- className={cn(
123
- "gap-x-1.5 gap-y-1 px-2 pb-1.5 flex w-full items-center",
124
- declined && "line-through opacity-50"
125
- )}
126
- >
127
- <Reference {...reference} />
128
- </div>}
129
- {children && <div className="px-3 py-2">{children}</div>}
130
- {options.length > 0 && (
131
- <Card className="mx-3 rounded-md before:rounded-[calc(var(--radius-md)-1px)]">
132
- <CardPanel className="gap-2 px-3.5 py-2.5 flex flex-col">
133
- <span className="leading-3 text-[11px] text-text-secondary">
134
- {optionsLabel}
135
- </span>
136
- {options.map((option, index) => (
137
- <motion.button
138
- {...optionMotion(index)}
139
- className="-mx-2 h-6 gap-2.5 px-2 hover:bg-black/4 dark:hover:bg-white/6 flex items-center rounded-md text-left text-[12.5px] leading-none text-text-primary outline-none focus-visible:ring-2 focus-visible:ring-ring"
140
- key={index}
141
- onClick={() => onSelectOption?.(index)}
142
- type="button"
143
- >
144
- <Signal level={option.signal ?? "low"} />
145
- <span className="flex-1 truncate">{option.label}</span>
146
- {option.status ? (
147
- <span className="text-[11px] text-text-muted">
148
- {option.status}
149
- </span>
150
- ) : null}
151
- </motion.button>
152
- ))}
153
- </CardPanel>
154
- </Card>
155
- )}
156
-
157
- <CardFrameFooter className="gap-2 px-4 py-3.5 relative flex items-center">
158
- <Signal level={confidence} />
159
- <span className="text-[12.5px] text-text-primary">
160
- {confidenceLabel ?? CONFIDENCE[confidence]}
161
- </span>
162
- <span className="gap-2 ml-auto flex items-center">
163
- <AnimatePresence initial={false} mode="wait">
164
- {state === "running" ? (
165
- // The spinner in the heading already reports progress; the
166
- // approval actions are gone and Undo is not offered mid-run.
167
- <motion.div {...ACTION_MOTION} key="running" />
168
- ) : state === "pending" ? (
169
- <motion.div
170
- {...ACTION_MOTION}
171
- className="gap-2 flex items-center"
172
- key="actions"
173
- >
174
- <Button
175
- className="px-3 font-medium sm:h-6 h-6 rounded-full text-[12px]"
176
- onClick={decline}
177
- size="xs"
178
- variant="outline"
179
- >
180
- <X className="size-3 stroke-3" />
181
- {declineLabel}
182
- </Button>
183
- <Button onClick={onAccept} size="xs" variant="default">
184
- <Check className="size-3 stroke-3" />
185
- {acceptLabel}
186
- </Button>
187
- </motion.div>
188
- ) : (
189
- // Always a node, never null: `mode="wait"` only releases the
190
- // leaving actions once a sibling enters behind them.
191
- <motion.div
192
- {...ACTION_MOTION}
193
- className="gap-1 text-xs font-normal inline-flex items-center text-success-foreground"
194
- key={state}
195
- >
196
- {onUndo ? (
197
- <Button
198
- className="text-amber-400"
199
- onClick={onUndo}
200
- size="xs"
201
- variant="ghost"
202
- >
203
- <Undo2 className="size-3 stroke-3" /> Undo
204
- </Button>
205
- ) : null}
206
- </motion.div>
207
- )}
208
- </AnimatePresence>
209
- </span>
210
- </CardFrameFooter>
211
- </AccordionPanel>
212
- </CardFrame>
213
- </AccordionItem>
214
- )
215
- }
@@ -1,76 +0,0 @@
1
- import type * as React from "react"
2
- import type { TSignalLevel } from "@/components/ui/chat"
3
- import type { AccordionPrimitive } from "@/components/ui/accordion"
4
- import type { IReferenceProps } from "@/components/atoms/types"
5
-
6
- export interface IRecommendationOption {
7
- label: React.ReactNode
8
- status?: React.ReactNode
9
- signal?: TSignalLevel
10
- }
11
-
12
- export interface IRecommendationEntity {
13
- name: React.ReactNode
14
- initials?: string
15
- src?: string
16
- }
17
-
18
- export type TRecommendationState =
19
- | "accepted"
20
- | "rejected"
21
- | "pending"
22
- /** The proposal was approved and the agent is working on it. */
23
- | "running"
24
-
25
- /** Shared fields of a human-in-the-loop proposal. */
26
- export interface IRecommendationFields {
27
- title: React.ReactNode
28
- /** Collapsible body text around the entity and lead-time pills. */
29
- description: React.ReactNode
30
- entity?: IRecommendationEntity
31
- reference?: IReferenceProps
32
- leadTime?: React.ReactNode
33
- options?: IRecommendationOption[]
34
- optionsLabel?: React.ReactNode
35
- confidence?: TSignalLevel
36
- confidenceLabel?: React.ReactNode
37
- acceptLabel?: React.ReactNode
38
- rejectLabel?: React.ReactNode
39
- alternativesLabel?: React.ReactNode
40
- state?: TRecommendationState
41
- /** Number inside the pending ring, e.g. the item's position in its group. */
42
- step?: number
43
- onAccept?: () => void
44
- /** Skip / ignore. Wins over `onAlternatives` when both are passed. */
45
- onReject?: () => void
46
- onAlternatives?: () => void
47
- /** Takes the card back to `pending`. Without it no Undo is offered. */
48
- onUndo?: () => void
49
- onSelectOption?: (index: number) => void
50
- children?: React.ReactNode
51
- }
52
-
53
- export interface IRecommendationItemProps
54
- extends
55
- IRecommendationFields,
56
- Omit<React.ComponentPropsWithoutRef<"div">, "title" | "children"> {
57
- /** Accordion item identity. Required inside `Recommendation.Group`. */
58
- value: string
59
- }
60
-
61
- export interface IRecommendationCardProps extends IRecommendationFields {
62
- /** Accordion item identity. Auto-generated when omitted. */
63
- value?: string
64
- /** Uncontrolled initial open state. Default true — Accept lives in the body. */
65
- defaultOpen?: boolean
66
- className?: string
67
- }
68
-
69
- export type TRecommendationGroupProps = AccordionPrimitive.Root.Props
70
-
71
- export interface IRecommendationCheckboxProps {
72
- state: TRecommendationState
73
- /** Number shown inside the pending ring (its position in the group). */
74
- step?: number
75
- className?: string
76
- }
@@ -1,130 +0,0 @@
1
- "use client"
2
-
3
- import { ChevronsUpDown } from "lucide-react"
4
- import { useAtom } from "jotai"
5
- import * as React from "react"
6
- import { cn } from "@/lib/utils"
7
- import { Card } from "@/components/ui/card"
8
- import { createKeyedFamilies } from "@/lib/keyed-atom"
9
- import { Checkbox } from "@/components/ui/checkbox"
10
- import { Tag, type TTagTone } from "@/components/ui/chat"
11
-
12
- const { stateFamily, removeInstance } = createKeyedFamilies("recordsTable")
13
-
14
- /** Selected row ids, keyed by `tableId`. */
15
- export const recordsTableSelectionAtom = stateFamily<ReadonlySet<string>>("selection", new Set<string>())
16
- export const removeRecordsTableInstance = removeInstance
17
-
18
- export interface IRecordsRow {
19
- id: string
20
- name: React.ReactNode
21
- initial?: string
22
- avatarSrc?: string
23
- tags?: { label: React.ReactNode; tone?: TTagTone }[]
24
- /** Max tags shown inline; the rest collapse to "+N". */
25
- lastInteraction?: React.ReactNode
26
- strength?: React.ReactNode
27
- }
28
-
29
- export type TRecordsColumnKey = "name" | "tags" | "lastInteraction" | "strength"
30
-
31
- export interface IRecordsTableProps extends React.ComponentPropsWithoutRef<"div"> {
32
- tableId?: string
33
- rows: IRecordsRow[]
34
- headers?: Partial<Record<TRecordsColumnKey, React.ReactNode>>
35
- /** Pin the header inside a height-constrained scroll container. */
36
- stickyHeader?: boolean
37
- maxTags?: number
38
- selected?: ReadonlySet<string>
39
- onSelectionChange?: (selected: ReadonlySet<string>) => void
40
- /** Sort is the caller's: the design shows the control only. */
41
- onSortChange?: (column: TRecordsColumnKey) => void
42
- }
43
-
44
- const HEADERS: Record<TRecordsColumnKey, string> = { name: "Company", tags: "Categories", lastInteraction: "Last interaction", strength: "Connection" }
45
-
46
- /**
47
- * Selectable records table: index, initial avatar, name, tag row with
48
- * overflow, relative date, connection strength; sortable headers.
49
- *
50
- * @sketch "Component / Records Table"
51
- */
52
- export function RecordsTable({ tableId, rows, headers, stickyHeader = false, maxTags = 2, selected, onSelectionChange, onSortChange, className, ...props }: IRecordsTableProps): React.ReactElement {
53
- const generatedId = React.useId()
54
- const id = tableId ?? generatedId
55
- const [stored, setStored] = useAtom(recordsTableSelectionAtom(id))
56
- const current = selected ?? stored
57
- const update = (next: ReadonlySet<string>) => {
58
- if (selected === undefined) setStored(next)
59
- onSelectionChange?.(next)
60
- }
61
- React.useEffect(() => {
62
- if (tableId) return
63
- return () => removeRecordsTableInstance(id)
64
- }, [tableId, id])
65
-
66
- const all = rows.length > 0 && rows.every((r) => current.has(r.id))
67
- const some = !all && rows.some((r) => current.has(r.id))
68
- const toggleAll = () => update(all ? new Set() : new Set(rows.map((r) => r.id)))
69
- const toggle = (rowId: string) => {
70
- const next = new Set(current)
71
- if (next.has(rowId)) next.delete(rowId)
72
- else next.add(rowId)
73
- update(next)
74
- }
75
- const h = { ...HEADERS, ...headers }
76
- const sortable = (key: TRecordsColumnKey, label: React.ReactNode) => (
77
- <button type="button" onClick={() => onSortChange?.(key)} className="inline-flex items-center gap-1.5 text-left outline-none hover:text-text-primary focus-visible:ring-2 focus-visible:ring-ring [&_svg]:size-3 [&_svg]:text-text-muted">
78
- {label}<ChevronsUpDown />
79
- </button>
80
- )
81
-
82
- return (
83
- <Card tabIndex={0} role="region" aria-label="Records table" data-slot="records-table" className={cn("isolate w-[540px] max-w-full overflow-auto select-none [scrollbar-width:none] [&::-webkit-scrollbar]:hidden", className)} {...props}>
84
- <table className="w-full min-w-[540px] border-separate border-spacing-0 text-left [&_td]:border-b [&_td]:border-border-default [&_th]:border-b [&_th]:border-border-default [&_tr:last-child_td]:border-b-0">
85
- <thead className={cn(stickyHeader && "[&_th]:sticky [&_th]:top-0 [&_th]:z-20 [&_th]:bg-surface-card [&_th:first-child]:z-30 [&_th:nth-child(2)]:z-30")}>
86
- <tr className="border-b border-border-default text-[11px] font-medium leading-3 text-text-secondary">
87
- <th className="sticky left-0 z-10 w-13 min-w-13 bg-surface-card py-2.5 pl-3"><Checkbox aria-label="Select all" checked={all} indeterminate={some} onCheckedChange={toggleAll} className="size-4" /></th>
88
- <th className="sticky left-13 z-10 min-w-44 bg-surface-card px-2 py-2.5">{h.name}</th>
89
- <th className="px-2 py-2.5">{sortable("tags", h.tags)}</th>
90
- <th className="px-2 py-2.5">{sortable("lastInteraction", h.lastInteraction)}</th>
91
- <th className="px-2 py-2.5 pr-3">{sortable("strength", h.strength)}</th>
92
- </tr>
93
- </thead>
94
- <tbody>
95
- {rows.map((row, i) => {
96
- const tags = row.tags ?? []
97
- const extra = tags.length - maxTags
98
- const checked = current.has(row.id)
99
- return (
100
- <tr key={row.id} data-selected={checked || undefined} className="border-b border-border-default last:border-b-0 data-selected:bg-accent-subtle/40">
101
- <td className={cn("sticky left-0 z-10 w-13 min-w-13 py-2 pl-3", checked ? "bg-accent-subtle" : "bg-surface-card")}>
102
- <span className="flex items-center gap-2">
103
- <span className="w-2 text-[11px] text-text-muted group-hover:hidden">{i + 1}</span>
104
- <Checkbox aria-label={`Select row ${i + 1}`} checked={checked} onCheckedChange={() => toggle(row.id)} className="size-4" />
105
- </span>
106
- </td>
107
- <td className={cn("sticky left-13 z-10 min-w-44 px-2 py-2", checked ? "bg-accent-subtle" : "bg-surface-card")}>
108
- <span className="flex items-center gap-2">
109
- <span className="inline-flex size-5 shrink-0 items-center justify-center overflow-hidden rounded-full bg-surface-subtle text-[9px] font-semibold text-text-secondary">
110
- {row.avatarSrc ? <img alt="" className="size-full object-cover" src={row.avatarSrc} /> : row.initial}
111
- </span>
112
- <span className="truncate text-[13px] font-medium leading-4 text-text-primary">{row.name}</span>
113
- </span>
114
- </td>
115
- <td className="px-2 py-2">
116
- <span className="flex items-center gap-1">
117
- {tags.slice(0, maxTags).map((t, ti) => <Tag key={ti} tone={t.tone}>{t.label}</Tag>)}
118
- {extra > 0 ? <span className="text-[12px] text-text-secondary">+{extra}</span> : null}
119
- </span>
120
- </td>
121
- <td className="px-2 py-2 text-[12.5px] text-text-secondary">{row.lastInteraction}</td>
122
- <td className="px-2 py-2 pr-3 text-[12.5px] text-text-secondary">{row.strength}</td>
123
- </tr>
124
- )
125
- })}
126
- </tbody>
127
- </table>
128
- </Card>
129
- )
130
- }