@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,98 +0,0 @@
1
- export {
2
- Attachment,
3
- type TAttachmentKind,
4
- type TAttachmentProps,
5
- type TAttachmentVariant,
6
- } from "./attachment"
7
- export {
8
- Chart,
9
- type TChartDatum,
10
- type IChartProps,
11
- type IChartSeries,
12
- type TChartType,
13
- } from "./chart"
14
- export {
15
- Markdown,
16
- markdownViewAtom,
17
- removeMarkdownInstance,
18
- useMarkdownView,
19
- type IMarkdownProps,
20
- type TMarkdownView,
21
- } from "./markdown"
22
- // `SuggestedPrompts`, `SendButton` and `AddButton` stay off the barrel on
23
- // purpose: `blocks/ai-panel` and `ui/chat` already export those names, and
24
- // all the barrels flow into `src/index.ts`. Reach them as
25
- // `composed/chat/composer` — or hand the slots to `Composer`.
26
- export {
27
- addComposerAttachmentAtom,
28
- clearComposerAttachmentsAtom,
29
- CommandMenu,
30
- Composer,
31
- composerAttachmentsAtom,
32
- removeComposerAttachmentAtom,
33
- removeComposerInstance,
34
- useComposerAttachmentActions,
35
- useComposerAttachments,
36
- } from "./composer"
37
- export type {
38
- TComposerAttachment,
39
- IComposerModel,
40
- IComposerOption,
41
- IComposerBaseProps,
42
- TComposerMode,
43
- IComposerSuggestionsProps,
44
- IComposerMenuProps,
45
- IComposerProps,
46
- IComposerSubmitButtonProps,
47
- } from "./composer"
48
-
49
- export { Recommendation, RecommendationCard } from "./recommendation"
50
- export type {
51
- IRecommendationCardProps,
52
- IRecommendationCheckboxProps,
53
- IRecommendationEntity,
54
- IRecommendationFields,
55
- TRecommendationGroupProps,
56
- IRecommendationItemProps,
57
- IRecommendationOption,
58
- TRecommendationState,
59
- } from "./recommendation"
60
- export {
61
- ContextCards,
62
- type IContextCard,
63
- type IContextCardsProps,
64
- } from "./context-cards"
65
- export {
66
- CodeBlock,
67
- tokenize,
68
- type ICodeBlockProps,
69
- type ICodeDiffLine,
70
- } from "./code-block"
71
- export {
72
- FilterTable,
73
- filterTableFilterAtom,
74
- removeFilterTableInstance,
75
- type IFilterTableColumn,
76
- type IFilterTableProps,
77
- type IFilterTableStatus,
78
- } from "./filter-table"
79
- export {
80
- RecordsTable,
81
- recordsTableSelectionAtom,
82
- removeRecordsTableInstance,
83
- type TRecordsColumnKey,
84
- type IRecordsRow,
85
- type IRecordsTableProps,
86
- } from "./records-table"
87
- export * from "./flowchart"
88
- export { type IChartNodeProps, type IFlowchartProps } from "./flowchart"
89
- export {
90
- InsightCards,
91
- InsightEntity,
92
- type IInsight,
93
- type IInsightAllocation,
94
- type IInsightSegment,
95
- type IInsightCardsProps,
96
- } from "./insight-cards"
97
-
98
- export { SendHint } from "./hint"
@@ -1,199 +0,0 @@
1
- "use client"
2
-
3
- import { ChevronDown, ChevronUp } from "lucide-react"
4
- import { AnimatePresence, motion, useReducedMotion } from "motion/react"
5
- import * as React from "react"
6
- import { cn } from "@/lib/utils"
7
- import { Card, CardFrame, CardFrameHeader, CardPanel } from "@/components/ui/card"
8
- import { SPRING_SWAP } from "@/lib/ease"
9
- import { DOT_TONE_CLASSES, Dot, FollowUpRow, IconButton, Pill, Stat, type TDotTone, type IStatProps } from "@/components/ui/chat"
10
- import { Chart, type TChartDatum, type IChartSeries } from "./chart"
11
-
12
- export interface IInsight {
13
- /** Sentence; `entity` is highlighted with a dot in front. */
14
- summary: React.ReactNode
15
- stats?: IStatProps[]
16
- snapshot?: { label?: React.ReactNode; badge?: React.ReactNode; data: TChartDatum[]; series: IChartSeries[] }
17
- /** Share breakdown: tile + big value, a segmented bar, selectable legend pills and a detail panel. */
18
- allocation?: IInsightAllocation
19
- followUp?: string
20
- }
21
-
22
- export interface IInsightSegment {
23
- key: string
24
- label: React.ReactNode
25
- value: number
26
- tone?: TDotTone
27
- /** Detail panel heading; falls back to `label`. */
28
- title?: React.ReactNode
29
- description?: React.ReactNode
30
- }
31
-
32
- export interface IInsightAllocation {
33
- label: React.ReactNode
34
- value: React.ReactNode
35
- /** Letter in the tile; takes the first segment's tone. */
36
- initials?: string
37
- segments: IInsightSegment[]
38
- defaultSelected?: string
39
- }
40
-
41
- const TONE_TEXT: Record<TDotTone, string> = {
42
- success: "text-semantic-success", warning: "text-semantic-warning", info: "text-semantic-info", danger: "text-semantic-danger",
43
- neutral: "text-text-muted", accent: "text-accent-default", brand: "text-brand",
44
- "series-1": "text-chart-series-1", "series-2": "text-chart-series-2", "series-3": "text-chart-series-3", "series-4": "text-chart-series-4", "series-5": "text-chart-series-5",
45
- }
46
-
47
- const pct = (n: number, total: number) => `${Math.round((n / total) * 1000) / 10}%`
48
-
49
- /** @sketch beautiful-ui "Insight Cards / allocation" — segment selection changes the inspected group without moving the card. */
50
- function Allocation({ label, value, initials, segments, defaultSelected }: IInsightAllocation): React.ReactElement {
51
- const reduceMotion = useReducedMotion()
52
- const [selected, setSelected] = React.useState(defaultSelected ?? segments[0]?.key)
53
- const total = segments.reduce((n, s) => n + s.value, 0) || 1
54
- const active = segments.find((s) => s.key === selected) ?? segments[0]
55
- const tone = (s?: IInsightSegment) => s?.tone ?? "series-1"
56
-
57
- return (
58
- <CardPanel data-slot="insight-allocation" className="flex flex-col gap-3 p-3">
59
- <span className="flex items-center gap-2 text-[12.5px] text-text-secondary">
60
- <span className={cn("inline-flex size-5 items-center justify-center rounded-full text-[9px] font-semibold text-white", DOT_TONE_CLASSES[tone(segments[0])])}>
61
- {initials ?? String(label).slice(0, 1).toUpperCase()}
62
- </span>
63
- {label}
64
- </span>
65
- <span className="text-[26px] font-semibold leading-8 tracking-tight text-text-primary">{value}</span>
66
- <div className="flex h-6 gap-1" role="group" aria-label="Share by segment">
67
- {segments.map((s) => (
68
- <button
69
- key={s.key}
70
- type="button"
71
- aria-label={typeof s.label === "string" ? s.label : undefined}
72
- aria-pressed={s.key === active?.key}
73
- onClick={() => setSelected(s.key)}
74
- style={{ flexGrow: s.value }}
75
- className={cn(
76
- "min-w-1.5 rounded-full outline-none transition-[opacity,box-shadow] duration-300 ease-[var(--ease-out-strong)] focus-visible:ring-2 focus-visible:ring-ring",
77
- s.key === active?.key ? cn("ring-2 ring-inset ring-white/25", DOT_TONE_CLASSES[tone(s)]) : "bg-surface-subtle hover:opacity-80"
78
- )}
79
- />
80
- ))}
81
- </div>
82
- <div className="flex flex-wrap gap-1.5">
83
- {segments.map((s) => (
84
- <button
85
- key={s.key}
86
- type="button"
87
- aria-pressed={s.key === active?.key}
88
- onClick={() => setSelected(s.key)}
89
- className={cn(
90
- "inline-flex h-5 items-center gap-1.5 rounded-full px-2 text-[11px] font-medium leading-none outline-none transition-colors focus-visible:ring-2 focus-visible:ring-ring",
91
- s.key === active?.key ? "bg-surface-subtle text-text-primary" : "text-text-secondary hover:text-text-primary"
92
- )}
93
- >
94
- <Dot tone={s.key === active?.key ? tone(s) : "neutral"} />
95
- {s.label} {pct(s.value, total)}
96
- </button>
97
- ))}
98
- </div>
99
- {active ? (
100
- <AnimatePresence initial={false} mode="wait">
101
- <motion.div
102
- key={active.key}
103
- initial={reduceMotion ? false : { opacity: 0, y: 4 }}
104
- animate={{ opacity: 1, y: 0 }}
105
- exit={reduceMotion ? undefined : { opacity: 0, y: -4 }}
106
- transition={reduceMotion ? { duration: 0 } : SPRING_SWAP}
107
- className="flex flex-col gap-1 rounded-md bg-surface-subtle px-3 py-2.5"
108
- >
109
- <span className={cn("text-[12px] font-semibold leading-4", TONE_TEXT[tone(active)])}>{active.title ?? active.label}</span>
110
- {active.description ? <span className="text-[12px] leading-4 text-text-secondary">{active.description}</span> : null}
111
- </motion.div>
112
- </AnimatePresence>
113
- ) : null}
114
- </CardPanel>
115
- )
116
- }
117
-
118
- export interface IInsightCardsProps extends React.ComponentPropsWithoutRef<"div"> {
119
- header?: React.ReactNode
120
- insights: IInsight[]
121
- index?: number
122
- defaultIndex?: number
123
- onIndexChange?: (index: number) => void
124
- onFollowUp?: (text: string) => void
125
- }
126
-
127
- /**
128
- * Paged insights: header with count and prev/next, summary, stats,
129
- * a trend snapshot (line plot + legend) or an allocation breakdown, and a follow-up prompt.
130
- *
131
- * @sketch "Component / Insight Cards"
132
- */
133
- export function InsightCards({ header = "Insights", insights, index, defaultIndex = 0, onIndexChange, onFollowUp, className, ...props }: IInsightCardsProps): React.ReactElement {
134
- const reduceMotion = useReducedMotion()
135
- const [internal, setInternal] = React.useState(defaultIndex)
136
- const current = Math.min(index ?? internal, Math.max(insights.length - 1, 0))
137
- // Which way the card slides: next pulls the new one up from below, previous from above.
138
- const [direction, setDirection] = React.useState(1)
139
- const go = (next: number) => {
140
- setDirection(next > current ? 1 : -1)
141
- if (index === undefined) setInternal(next)
142
- onIndexChange?.(next)
143
- }
144
- const insight = insights[current]
145
- const offset = reduceMotion ? 0 : 24 * direction
146
-
147
- return (
148
- <div data-slot="insight-cards" className={cn("flex w-[344px] max-w-full flex-col gap-2.5", className)} {...props}>
149
- <div className="flex items-center gap-1.5">
150
- <span className="text-[13px] font-semibold leading-4 text-text-primary">{header}</span>
151
- <span className="text-[13px] text-text-muted">{insights.length}</span>
152
- <span className="ml-auto flex items-center gap-0.5">
153
- <IconButton aria-label="Previous insight" disabled={current <= 0} onClick={() => go(current - 1)}><ChevronUp /></IconButton>
154
- <IconButton aria-label="Next insight" disabled={current >= insights.length - 1} onClick={() => go(current + 1)}><ChevronDown /></IconButton>
155
- </span>
156
- </div>
157
- <AnimatePresence custom={direction} initial={false} mode="popLayout">
158
- {insight ? (
159
- <motion.div
160
- key={current}
161
- className="flex flex-col gap-2.5"
162
- initial={{ opacity: 0, y: offset }}
163
- animate={{ opacity: 1, y: 0 }}
164
- exit={{ opacity: 0, y: -offset }}
165
- transition={reduceMotion ? { duration: 0 } : SPRING_SWAP}
166
- >
167
- <p className="text-[13px] leading-[15px] text-text-secondary [&_[data-slot=dot]]:mx-0.5 [&_[data-slot=dot]]:inline-block [&_[data-slot=dot]]:align-middle">
168
- {insight.summary}
169
- </p>
170
- <CardFrame className="[--frame-radius:var(--radius-md)]">
171
- {insight.stats?.length ? (
172
- <CardFrameHeader className="flex flex-row gap-4 p-4">
173
- {insight.stats.map((s, i) => <Stat key={i} {...s} />)}
174
- </CardFrameHeader>
175
- ) : null}
176
- {insight.allocation ? <Card><Allocation {...insight.allocation} /></Card> : null}
177
- {insight.snapshot ? (
178
- <Card><CardPanel className="flex flex-col gap-2 p-2.5">
179
- <div className="flex items-center justify-between">
180
- <span className="text-[11px] leading-3 text-text-secondary">{insight.snapshot.label ?? "Trend snapshot"}</span>
181
- <Pill>{insight.snapshot.badge ?? "Snapshot"}</Pill>
182
- </div>
183
- <Chart type="line" headerless plotHeight={110} data={insight.snapshot.data} series={insight.snapshot.series} className="w-full" />
184
- </CardPanel></Card>
185
- ) : null}
186
- </CardFrame>
187
- {insight.followUp ? <FollowUpRow onSelect={() => onFollowUp?.(insight.followUp!)} className="w-fit rounded-full border border-border-default bg-surface-card px-3 hover:bg-surface-subtle">{insight.followUp}</FollowUpRow> : null}
188
- </motion.div>
189
- ) : null}
190
- </AnimatePresence>
191
- </div>
192
- )
193
- }
194
-
195
- /** Inline entity marker for `Insight.summary`: dot + name. */
196
- export function InsightEntity({ tone = "neutral", children }: { tone?: TDotTone; children: React.ReactNode }): React.ReactElement {
197
- return <><Dot tone={tone} size={8} /> {children}</>
198
- }
199
-
@@ -1,15 +0,0 @@
1
- import { useAtom } from "jotai"
2
-
3
- import { createKeyedFamilies } from "@/lib/keyed-atom"
4
-
5
- export type TMarkdownView = "preview" | "markup"
6
-
7
- const { stateFamily, removeInstance } = createKeyedFamilies("markdown")
8
-
9
- /** Which pane a Markdown card shows, keyed by its `markdownId`; `null` until first toggled (the card then falls back to its `defaultView`). */
10
- export const markdownViewAtom = stateFamily<TMarkdownView | null>("view", null)
11
- export const removeMarkdownInstance = removeInstance
12
-
13
- export function useMarkdownView(markdownId: string) {
14
- return useAtom(markdownViewAtom(markdownId))
15
- }
@@ -1,213 +0,0 @@
1
- "use client"
2
-
3
- import { Copy, Maximize2 } from "lucide-react"
4
- import { AnimatePresence, motion, useReducedMotion } from "motion/react"
5
- import { EASE_OUT } from "@/lib/ease"
6
- import * as React from "react"
7
- import ReactMarkdown, { type Components } from "react-markdown"
8
- import { cn } from "@/lib/utils"
9
- import {
10
- Card,
11
- CardFrame,
12
- CardFrameHeader,
13
- CardPanel,
14
- } from "@/components/ui/card"
15
- import { IconButton } from "@/components/ui/chat"
16
- import { Tabs, TabsList, TabsTab } from "@/components/ui/tabs"
17
- import {
18
- markdownViewAtom,
19
- removeMarkdownInstance,
20
- type TMarkdownView,
21
- useMarkdownView,
22
- } from "./markdown-atom"
23
-
24
- export {
25
- markdownViewAtom,
26
- removeMarkdownInstance,
27
- useMarkdownView,
28
- type TMarkdownView,
29
- }
30
-
31
- const VIEWS = [
32
- { value: "preview", label: "Preview" },
33
- { value: "markup", label: "Markup" },
34
- ] as const
35
-
36
- /** Tag map restricted to what the design shows: headings, paragraphs, lists, inline + fenced code. */
37
- const COMPONENTS: Components = {
38
- h1: ({ children }) => (
39
- <h1 className="text-[15px] leading-[17px] font-semibold text-text-primary">
40
- {children}
41
- </h1>
42
- ),
43
- h2: ({ children }) => (
44
- <h2 className="text-[14px] leading-4 font-semibold text-text-primary">
45
- {children}
46
- </h2>
47
- ),
48
- h3: ({ children }) => (
49
- <h3 className="text-[13px] leading-4 font-semibold text-text-primary">
50
- {children}
51
- </h3>
52
- ),
53
- p: ({ children }) => (
54
- <p className="text-[13px] leading-[15px] text-text-primary">{children}</p>
55
- ),
56
- strong: ({ children }) => (
57
- <strong className="font-semibold">{children}</strong>
58
- ),
59
- a: ({ children, href }) => (
60
- <a
61
- className="text-link underline-offset-2 hover:underline"
62
- href={href}
63
- rel="noreferrer"
64
- target="_blank"
65
- >
66
- {children}
67
- </a>
68
- ),
69
- ul: ({ children }) => (
70
- <ul className="flex list-disc flex-col gap-1 pl-4 text-[13px] leading-[15px] text-text-primary">
71
- {children}
72
- </ul>
73
- ),
74
- ol: ({ children }) => (
75
- <ol className="flex list-decimal flex-col gap-1 pl-4 text-[13px] leading-[15px] text-text-primary">
76
- {children}
77
- </ol>
78
- ),
79
- li: ({ children }) => <li>{children}</li>,
80
- code: ({ children, className }) =>
81
- className ? (
82
- <code className="font-mono text-[11.5px] leading-[14px] text-link">
83
- {children}
84
- </code>
85
- ) : (
86
- <code className="rounded-[4px] bg-surface-code px-1 py-px font-mono text-[11.5px] text-link">
87
- {children}
88
- </code>
89
- ),
90
- pre: ({ children }) => (
91
- <pre className="overflow-x-auto rounded-lg bg-surface-code px-2.5 py-1.5">
92
- {children}
93
- </pre>
94
- ),
95
- }
96
-
97
- export interface IMarkdownProps extends Omit<
98
- React.ComponentPropsWithoutRef<"div">,
99
- "onCopy"
100
- > {
101
- /** Markdown source; rendered in Preview, shown raw in Markup. */
102
- source: string
103
- /** Stable id for the view atom. Unnamed cards key off `useId()`. */
104
- markdownId?: string
105
- view?: TMarkdownView
106
- defaultView?: TMarkdownView
107
- onViewChange?: (view: TMarkdownView) => void
108
- onCopy?: (source: string) => void
109
- onExpand?: () => void
110
- /** Drop the card border (inside an AiBubble the bubble supplies it). */
111
- bare?: boolean
112
- }
113
-
114
- /**
115
- * Rendered markdown behind a Preview | Markup toggle, with copy and expand.
116
- *
117
- * @sketch "Component / Markdown / Preview", "Component / Markdown / Markup"
118
- */
119
- export function Markdown({
120
- source,
121
- markdownId,
122
- view,
123
- defaultView,
124
- onViewChange,
125
- onCopy,
126
- onExpand,
127
- bare = false,
128
- className,
129
- ...props
130
- }: IMarkdownProps): React.ReactElement {
131
- const reduceMotion = useReducedMotion()
132
- const generatedId = React.useId()
133
- const id = markdownId ?? generatedId
134
- const [stored, setStored] = useMarkdownView(id)
135
- React.useEffect(() => {
136
- if (markdownId) return
137
- return () => removeMarkdownInstance(id)
138
- }, [markdownId, id])
139
-
140
- const current: TMarkdownView = view ?? stored ?? defaultView ?? "preview"
141
- const select = (next: TMarkdownView) => {
142
- if (view === undefined) setStored(next)
143
- onViewChange?.(next)
144
- }
145
-
146
- return (
147
- <CardFrame
148
- data-slot="markdown"
149
- data-view={current}
150
- className={cn(
151
- "w-[360px] max-w-full [--frame-radius:var(--radius-md)]",
152
- bare && "border-transparent shadow-none",
153
- className,
154
- "rounded-md!"
155
- )}
156
- {...props}
157
- >
158
- <CardFrameHeader className="flex flex-row items-center justify-between rounded-md! px-3 py-2">
159
- <Tabs
160
- className="gap-0"
161
- value={current}
162
- onValueChange={(next) => select(next as TMarkdownView)}
163
- >
164
- <TabsList aria-label="Markdown view" size="xs">
165
- {VIEWS.map((v) => (
166
- <TabsTab key={v.value} size="xs" value={v.value}>
167
- {v.label}
168
- </TabsTab>
169
- ))}
170
- </TabsList>
171
- </Tabs>
172
- <span className="flex items-center gap-1">
173
- <IconButton aria-label="Expand" onClick={onExpand}>
174
- <Maximize2 />
175
- </IconButton>
176
- <IconButton
177
- aria-label="Copy markdown"
178
- onClick={() => onCopy?.(source)}
179
- >
180
- <Copy />
181
- </IconButton>
182
- </span>
183
- </CardFrameHeader>
184
- <Card>
185
- <CardPanel className={current === "preview" ? "p-4" : "p-2"}>
186
- <AnimatePresence initial={false} mode="wait">
187
- <motion.div
188
- animate={{ opacity: 1, y: 0 }}
189
- exit={{ opacity: 0 }}
190
- initial={reduceMotion ? false : { opacity: 0, y: 12 }}
191
- key={current}
192
- transition={
193
- reduceMotion
194
- ? { duration: 0 }
195
- : { duration: 0.24, ease: EASE_OUT }
196
- }
197
- >
198
- {current === "preview" ? (
199
- <div className="flex flex-col gap-2.5">
200
- <ReactMarkdown components={COMPONENTS}>{source}</ReactMarkdown>
201
- </div>
202
- ) : (
203
- <pre className="overflow-x-auto rounded-md bg-surface-code px-2.5 py-2 font-mono text-[11px] leading-[13px] whitespace-pre-wrap text-text-primary">
204
- {source}
205
- </pre>
206
- )}
207
- </motion.div>
208
- </AnimatePresence>
209
- </CardPanel>
210
- </Card>
211
- </CardFrame>
212
- )
213
- }
@@ -1,122 +0,0 @@
1
- "use client"
2
-
3
- import { Check, Sparkle, X } from "lucide-react"
4
- import { AnimatePresence, motion, useReducedMotion } from "motion/react"
5
- import type * as React from "react"
6
- import { EASE_OUT_STRONG } from "@/lib/ease"
7
- import { cn } from "@/lib/utils"
8
- import type { IRecommendationCheckboxProps } from "./types"
9
- import { SIZE, STROKE, R, C } from "./constant"
10
-
11
- /**
12
- * Outcome mark after beautiful-ui's Task Rows: a Sparkle while the proposal
13
- * waits for approval, a spinning ring once the agent is running (with the
14
- * step number inside), then a filled badge that pops in — green check when
15
- * accepted, red cross when rejected.
16
- */
17
- export function Checkbox({
18
- state,
19
- step,
20
- className,
21
- }: IRecommendationCheckboxProps): React.ReactElement {
22
- const reduceMotion = useReducedMotion()
23
- const transition = reduceMotion
24
- ? { duration: 0 }
25
- : { duration: 0.3, ease: EASE_OUT_STRONG }
26
-
27
- return (
28
- <span
29
- className={cn(
30
- "relative inline-grid shrink-0 place-items-center",
31
- className
32
- )}
33
- data-slot="recommendation-state"
34
- data-state={state}
35
- style={{ width: SIZE, height: SIZE }}
36
- >
37
- <AnimatePresence initial={false} mode="popLayout">
38
- {state === "pending" ? (
39
- <motion.span
40
- key="pending"
41
- animate={{ scale: 1, opacity: 1 }}
42
- className="inline-grid place-items-center [grid-area:1/1]"
43
- exit={{ scale: 0.4, opacity: 0 }}
44
- initial={{ scale: 0.4, opacity: 0 }}
45
- style={{ width: SIZE, height: SIZE }}
46
- transition={transition}
47
- >
48
- <Sparkle
49
- aria-hidden="true"
50
- className="size-4 fill-indigo-500/25 stroke-[1.75] text-indigo-600 dark:text-indigo-400"
51
- />
52
- </motion.span>
53
- ) : state === "running" ? (
54
- <motion.span
55
- key="running"
56
- animate={{ scale: 1, opacity: 1 }}
57
- className="relative inline-grid place-items-center [grid-area:1/1]"
58
- exit={{ scale: 0.4, opacity: 0 }}
59
- initial={{ scale: 0.4, opacity: 0 }}
60
- style={{ width: SIZE, height: SIZE }}
61
- transition={transition}
62
- >
63
- <svg
64
- aria-hidden="true"
65
- className={cn(
66
- "absolute inset-0",
67
- !reduceMotion && "animate-spin [animation-duration:1.1s]"
68
- )}
69
- height={SIZE}
70
- width={SIZE}
71
- >
72
- <circle
73
- className="stroke-border-default"
74
- cx={SIZE / 2}
75
- cy={SIZE / 2}
76
- fill="none"
77
- r={R}
78
- strokeWidth={STROKE}
79
- />
80
- <circle
81
- className="stroke-text-muted"
82
- cx={SIZE / 2}
83
- cy={SIZE / 2}
84
- fill="none"
85
- r={R}
86
- strokeDasharray={`${C * 0.28} ${C * 0.72}`}
87
- strokeLinecap="round"
88
- strokeWidth={STROKE}
89
- />
90
- </svg>
91
- {step !== undefined ? (
92
- <span className="relative text-[9px] font-semibold text-text-primary tabular-nums">
93
- {step}
94
- </span>
95
- ) : null}
96
- </motion.span>
97
- ) : (
98
- <motion.span
99
- key={state}
100
- animate={{ scale: 1, opacity: 1 }}
101
- className={cn(
102
- "inline-grid place-items-center rounded-full text-white [grid-area:1/1]",
103
- state === "accepted"
104
- ? "bg-semantic-success"
105
- : "bg-semantic-danger"
106
- )}
107
- exit={{ scale: 0.4, opacity: 0 }}
108
- initial={{ scale: 0, opacity: 0 }}
109
- style={{ width: SIZE, height: SIZE }}
110
- transition={transition}
111
- >
112
- {state === "accepted" ? (
113
- <Check aria-hidden="true" className="size-3 stroke-[3.5]" />
114
- ) : (
115
- <X aria-hidden="true" className="size-2.5 stroke-[3.5]" />
116
- )}
117
- </motion.span>
118
- )}
119
- </AnimatePresence>
120
- </span>
121
- )
122
- }