@exegia/corpora-ui 3.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 (587) hide show
  1. package/README.md +20 -0
  2. package/dist-lib/button-CIRkQXA6.js +152 -0
  3. package/dist-lib/button.js +3 -0
  4. package/dist-lib/card.js +150 -0
  5. package/dist-lib/components/atoms/text/default.d.ts +2 -1143
  6. package/dist-lib/components/blocks/shell/index.d.ts +1 -0
  7. package/dist-lib/components/ui/badge.d.ts +2 -2
  8. package/dist-lib/components/ui/button.d.ts +2 -2
  9. package/dist-lib/components/ui/glasscn/lazy-glass-surface.d.ts +6 -0
  10. package/dist-lib/components/ui/modal.d.ts +10 -0
  11. package/dist-lib/components/ui/overlays.d.ts +4 -0
  12. package/dist-lib/components/ui/select.d.ts +1 -1
  13. package/dist-lib/components/ui/toast.d.ts +2 -0
  14. package/dist-lib/ease-C9At8rnB.js +120 -0
  15. package/dist-lib/exegia-provider-DNTuLljX.js +124 -0
  16. package/dist-lib/index.css +3 -0
  17. package/dist-lib/index.d.ts +3 -0
  18. package/dist-lib/index.js +6482 -8894
  19. package/dist-lib/input.js +28 -0
  20. package/dist-lib/label.js +19 -0
  21. package/dist-lib/lib/segmented-control.d.ts +1 -1
  22. package/dist-lib/lib/state/exegia-provider.d.ts +17 -8
  23. package/dist-lib/lib/state/index.d.ts +2 -0
  24. package/dist-lib/lib/state/portal-context.d.ts +5 -0
  25. package/dist-lib/lib/state/sound-loading.d.ts +4 -0
  26. package/dist-lib/liquid-glass-BihU6nMl.js +50 -0
  27. package/dist-lib/modal-DLaOK-s1.js +82 -0
  28. package/dist-lib/overlays.js +3 -0
  29. package/dist-lib/rolldown-runtime-Dy4uBu1J.js +11 -0
  30. package/dist-lib/scaffold-Qv4hs5Pf.js +925 -0
  31. package/dist-lib/scaffold.js +2 -0
  32. package/dist-lib/shell-BQ9cjIEu.js +722 -0
  33. package/dist-lib/shell.js +2 -0
  34. package/dist-lib/sound-knGH4lj-.js +19 -0
  35. package/dist-lib/state.js +2 -0
  36. package/dist-lib/toast-CataVXHN.js +193 -0
  37. package/dist-lib/utils-BO0qfoA6.js +61 -0
  38. package/package.json +64 -23
  39. package/dist-lib/components/atoms/_layout.d.ts +0 -4
  40. package/dist-lib/components/atoms/bubble/__tests__/bubble.test.d.ts +0 -1
  41. package/dist-lib/components/atoms/bubble/__tests__/reference.test.d.ts +0 -1
  42. package/dist-lib/components/atoms/text/__tests__/text.test.d.ts +0 -1
  43. package/dist-lib/components/atoms/text-selection/__tests__/click-popover.test.d.ts +0 -1
  44. package/dist-lib/components/atoms/text-selection/__tests__/text-selection.test.d.ts +0 -1
  45. package/dist-lib/components/blocks/auth/__tests__/auth-flow-block.test.d.ts +0 -1
  46. package/dist-lib/components/blocks/auth/__tests__/auth-state-atom.test.d.ts +0 -1
  47. package/dist-lib/components/blocks/auth/__tests__/linked-accounts-block.test.d.ts +0 -1
  48. package/dist-lib/components/blocks/auth/__tests__/onboarding-block.test.d.ts +0 -1
  49. package/dist-lib/components/blocks/auth/__tests__/passkey-manager-block.test.d.ts +0 -1
  50. package/dist-lib/components/blocks/auth/__tests__/passkey-sign-in-block.test.d.ts +0 -1
  51. package/dist-lib/components/blocks/auth/__tests__/signup-block.test.d.ts +0 -1
  52. package/dist-lib/components/blocks/auth/__tests__/update-password-block.test.d.ts +0 -1
  53. package/dist-lib/components/blocks/chat/__tests__/ai-panel.test.d.ts +0 -1
  54. package/dist-lib/components/blocks/profile/__tests__/profile-card-block.test.d.ts +0 -1
  55. package/dist-lib/components/blocks/scaffold/__tests__/scaffold-atom.test.d.ts +0 -1
  56. package/dist-lib/components/blocks/scaffold/__tests__/scaffold.test.d.ts +0 -1
  57. package/dist-lib/components/blocks/shell/__tests__/shell-fit-atom.test.d.ts +0 -1
  58. package/dist-lib/components/blocks/shell/__tests__/shell-layout.test.d.ts +0 -1
  59. package/dist-lib/components/blocks/shell/__tests__/shell-metrics.test.d.ts +0 -1
  60. package/dist-lib/components/blocks/sidebar/__tests__/ai-sidebar-atom.test.d.ts +0 -1
  61. package/dist-lib/components/blocks/sidebar/__tests__/ai-sidebar.test.d.ts +0 -1
  62. package/dist-lib/components/blocks/sidebar/__tests__/use-ai-sidebar.test.d.ts +0 -1
  63. package/dist-lib/components/composed/__tests__/logo.test.d.ts +0 -1
  64. package/dist-lib/components/composed/action-bar/__tests__/action-bar.test.d.ts +0 -1
  65. package/dist-lib/components/composed/ai/__tests__/ai.test.d.ts +0 -1
  66. package/dist-lib/components/composed/chat/__tests__/attachment.test.d.ts +0 -1
  67. package/dist-lib/components/composed/chat/__tests__/beautiful-ui.test.d.ts +0 -1
  68. package/dist-lib/components/composed/chat/__tests__/chart.test.d.ts +0 -1
  69. package/dist-lib/components/composed/chat/__tests__/code-block.test.d.ts +0 -1
  70. package/dist-lib/components/composed/chat/__tests__/composer-attachments.test.d.ts +0 -1
  71. package/dist-lib/components/composed/chat/__tests__/composer.test.d.ts +0 -1
  72. package/dist-lib/components/composed/chat/__tests__/flowchart.test.d.ts +0 -1
  73. package/dist-lib/components/composed/chat/__tests__/glass-material.test.d.ts +0 -1
  74. package/dist-lib/components/composed/chat/__tests__/markdown.test.d.ts +0 -1
  75. package/dist-lib/components/composed/chat/__tests__/menu-command.test.d.ts +0 -1
  76. package/dist-lib/components/composed/chat/__tests__/recommendation.test.d.ts +0 -1
  77. package/dist-lib/components/composed/tree/__tests__/tree-atom.test.d.ts +0 -1
  78. package/dist-lib/components/composed/tree/__tests__/tree.test.d.ts +0 -1
  79. package/dist-lib/components/composed/tree/__tests__/use-tree.test.d.ts +0 -1
  80. package/dist-lib/components/composed/user/__tests__/message.test.d.ts +0 -1
  81. package/dist-lib/components/composed/verse/__tests__/verse.test.d.ts +0 -1
  82. package/dist-lib/components/docs/atoms-gallery.d.ts +0 -12
  83. package/dist-lib/components/docs/block-demo-stage.d.ts +0 -7
  84. package/dist-lib/components/docs/blocks-gallery.d.ts +0 -2
  85. package/dist-lib/components/docs/browser.d.ts +0 -10
  86. package/dist-lib/components/docs/code-block.d.ts +0 -4
  87. package/dist-lib/components/docs/components-gallery.d.ts +0 -2
  88. package/dist-lib/components/docs/demo-controls.d.ts +0 -21
  89. package/dist-lib/components/docs/hero.d.ts +0 -5
  90. package/dist-lib/components/docs/mermaid.d.ts +0 -3
  91. package/dist-lib/components/icons/__tests__/icons.test.d.ts +0 -1
  92. package/dist-lib/components/stories/attachment.story.d.ts +0 -11
  93. package/dist-lib/components/stories/auth-flow-block.story.d.ts +0 -2
  94. package/dist-lib/components/stories/avatar.story.d.ts +0 -6
  95. package/dist-lib/components/stories/base.story.d.ts +0 -6
  96. package/dist-lib/components/stories/bubble.story.d.ts +0 -6
  97. package/dist-lib/components/stories/button.story.d.ts +0 -9
  98. package/dist-lib/components/stories/card.story.d.ts +0 -8
  99. package/dist-lib/components/stories/chart.story.d.ts +0 -71
  100. package/dist-lib/components/stories/checkbox.story.d.ts +0 -6
  101. package/dist-lib/components/stories/code-auth-block.story.d.ts +0 -2
  102. package/dist-lib/components/stories/code-block.story.d.ts +0 -12
  103. package/dist-lib/components/stories/composed-password-input.story.d.ts +0 -6
  104. package/dist-lib/components/stories/context-cards.story.d.ts +0 -3
  105. package/dist-lib/components/stories/emoji-action-bar.story.d.ts +0 -3
  106. package/dist-lib/components/stories/field.story.d.ts +0 -6
  107. package/dist-lib/components/stories/file-icons.story.d.ts +0 -5
  108. package/dist-lib/components/stories/filter-table.story.d.ts +0 -21
  109. package/dist-lib/components/stories/flowchart.story.d.ts +0 -3
  110. package/dist-lib/components/stories/forgot-password-block.story.d.ts +0 -2
  111. package/dist-lib/components/stories/frame.story.d.ts +0 -8
  112. package/dist-lib/components/stories/index.d.ts +0 -54
  113. package/dist-lib/components/stories/input-group.story.d.ts +0 -6
  114. package/dist-lib/components/stories/input.story.d.ts +0 -8
  115. package/dist-lib/components/stories/insight-cards.story.d.ts +0 -74
  116. package/dist-lib/components/stories/label.story.d.ts +0 -8
  117. package/dist-lib/components/stories/linked-accounts-block.story.d.ts +0 -2
  118. package/dist-lib/components/stories/login-block.story.d.ts +0 -2
  119. package/dist-lib/components/stories/logo.story.d.ts +0 -3
  120. package/dist-lib/components/stories/markdown.story.d.ts +0 -7
  121. package/dist-lib/components/stories/menu-command.story.d.ts +0 -13
  122. package/dist-lib/components/stories/onboarding-block.story.d.ts +0 -2
  123. package/dist-lib/components/stories/otp-field.story.d.ts +0 -8
  124. package/dist-lib/components/stories/passkey-manager-block.story.d.ts +0 -2
  125. package/dist-lib/components/stories/passkey-sign-in-block.story.d.ts +0 -2
  126. package/dist-lib/components/stories/password-input.story.d.ts +0 -9
  127. package/dist-lib/components/stories/profile-card-block.story.d.ts +0 -6
  128. package/dist-lib/components/stories/recommendation-card.story.d.ts +0 -3
  129. package/dist-lib/components/stories/records-table.story.d.ts +0 -23
  130. package/dist-lib/components/stories/reference.story.d.ts +0 -9
  131. package/dist-lib/components/stories/research-answer.story.d.ts +0 -10
  132. package/dist-lib/components/stories/scaffold-root.story.d.ts +0 -6
  133. package/dist-lib/components/stories/separator.story.d.ts +0 -6
  134. package/dist-lib/components/stories/shell-layout.story.d.ts +0 -2
  135. package/dist-lib/components/stories/signup-block.story.d.ts +0 -2
  136. package/dist-lib/components/stories/social-providers.story.d.ts +0 -3
  137. package/dist-lib/components/stories/streaming-text.story.d.ts +0 -3
  138. package/dist-lib/components/stories/text.story.d.ts +0 -8
  139. package/dist-lib/components/stories/textarea.story.d.ts +0 -6
  140. package/dist-lib/components/stories/tree.story.d.ts +0 -4
  141. package/dist-lib/components/stories/update-password-block.story.d.ts +0 -2
  142. package/dist-lib/components/stories/user.story.d.ts +0 -8
  143. package/dist-lib/components/stories/verse.story.d.ts +0 -6
  144. package/dist-lib/components/ui/chat/__tests__/segmented-toggle.test.d.ts +0 -1
  145. package/dist-lib/index.js.map +0 -1
  146. package/dist-lib/lib/state/__tests__/sound.test.d.ts +0 -1
  147. package/dist-lib/lib/utils.test.d.ts +0 -1
  148. package/src/assets/css/base.css +0 -62
  149. package/src/assets/css/chat.css +0 -229
  150. package/src/assets/css/shadows.css +0 -157
  151. package/src/assets/css/theme.css +0 -321
  152. package/src/components/AGENTS.md +0 -0
  153. package/src/components/atoms/_layout.tsx +0 -9
  154. package/src/components/atoms/avatar/base.tsx +0 -70
  155. package/src/components/atoms/avatar/index.ts +0 -10
  156. package/src/components/atoms/avatar/types.ts +0 -24
  157. package/src/components/atoms/avatar/utils.ts +0 -54
  158. package/src/components/atoms/avatar/verified.tsx +0 -16
  159. package/src/components/atoms/background/index.ts +0 -8
  160. package/src/components/atoms/background/texture.tsx +0 -29
  161. package/src/components/atoms/background/type.ts +0 -10
  162. package/src/components/atoms/background/utils.ts +0 -13
  163. package/src/components/atoms/bubble/__tests__/bubble.test.tsx +0 -193
  164. package/src/components/atoms/bubble/__tests__/reference.test.tsx +0 -25
  165. package/src/components/atoms/bubble/actions.tsx +0 -28
  166. package/src/components/atoms/bubble/context.ts +0 -11
  167. package/src/components/atoms/bubble/default.tsx +0 -46
  168. package/src/components/atoms/bubble/header.tsx +0 -36
  169. package/src/components/atoms/bubble/index.ts +0 -37
  170. package/src/components/atoms/bubble/message.tsx +0 -32
  171. package/src/components/atoms/bubble/reactions.tsx +0 -191
  172. package/src/components/atoms/bubble/types.ts +0 -82
  173. package/src/components/atoms/bubble/utils.ts +0 -46
  174. package/src/components/atoms/chip.tsx +0 -61
  175. package/src/components/atoms/field.tsx +0 -43
  176. package/src/components/atoms/index.ts +0 -26
  177. package/src/components/atoms/loader.tsx +0 -33
  178. package/src/components/atoms/reference.tsx +0 -41
  179. package/src/components/atoms/text/__tests__/text.test.tsx +0 -47
  180. package/src/components/atoms/text/default.tsx +0 -59
  181. package/src/components/atoms/text/heading.tsx +0 -58
  182. package/src/components/atoms/text/index.ts +0 -28
  183. package/src/components/atoms/text/label.tsx +0 -16
  184. package/src/components/atoms/text/paragraph.tsx +0 -55
  185. package/src/components/atoms/text/span.tsx +0 -14
  186. package/src/components/atoms/text/types.ts +0 -41
  187. package/src/components/atoms/text/utils.ts +0 -16
  188. package/src/components/atoms/text-selection/__tests__/click-popover.test.tsx +0 -61
  189. package/src/components/atoms/text-selection/__tests__/text-selection.test.tsx +0 -90
  190. package/src/components/atoms/text-selection/click-popover.tsx +0 -62
  191. package/src/components/atoms/text-selection/index.ts +0 -30
  192. package/src/components/atoms/text-selection/popover.tsx +0 -103
  193. package/src/components/atoms/text-selection/selection-atom.ts +0 -51
  194. package/src/components/atoms/text-selection/selection.tsx +0 -56
  195. package/src/components/atoms/text-selection/types.ts +0 -125
  196. package/src/components/atoms/text-selection/use-selection.ts +0 -84
  197. package/src/components/atoms/types.ts +0 -46
  198. package/src/components/blocks/.gitkeep +0 -0
  199. package/src/components/blocks/auth/__tests__/auth-flow-block.test.tsx +0 -183
  200. package/src/components/blocks/auth/__tests__/auth-state-atom.test.tsx +0 -247
  201. package/src/components/blocks/auth/__tests__/linked-accounts-block.test.tsx +0 -128
  202. package/src/components/blocks/auth/__tests__/onboarding-block.test.tsx +0 -183
  203. package/src/components/blocks/auth/__tests__/passkey-manager-block.test.tsx +0 -131
  204. package/src/components/blocks/auth/__tests__/passkey-sign-in-block.test.tsx +0 -59
  205. package/src/components/blocks/auth/__tests__/signup-block.test.tsx +0 -176
  206. package/src/components/blocks/auth/__tests__/update-password-block.test.tsx +0 -95
  207. package/src/components/blocks/auth/auth-flow-atom.ts +0 -238
  208. package/src/components/blocks/auth/auth-flow-block.tsx +0 -211
  209. package/src/components/blocks/auth/auth-session-atom.ts +0 -82
  210. package/src/components/blocks/auth/auth-shell.tsx +0 -265
  211. package/src/components/blocks/auth/auth-state.ts +0 -40
  212. package/src/components/blocks/auth/code-auth-block.tsx +0 -176
  213. package/src/components/blocks/auth/forgot-password-block.tsx +0 -112
  214. package/src/components/blocks/auth/linked-accounts-block.tsx +0 -203
  215. package/src/components/blocks/auth/login-block.tsx +0 -217
  216. package/src/components/blocks/auth/onboarding/profile-step.tsx +0 -216
  217. package/src/components/blocks/auth/onboarding-block.tsx +0 -183
  218. package/src/components/blocks/auth/passkey-manager-block.tsx +0 -316
  219. package/src/components/blocks/auth/passkey-sign-in-block.tsx +0 -67
  220. package/src/components/blocks/auth/signup-block.tsx +0 -256
  221. package/src/components/blocks/auth/type.ts +0 -436
  222. package/src/components/blocks/auth/update-password-block.tsx +0 -139
  223. package/src/components/blocks/auth/use-auth-state.ts +0 -127
  224. package/src/components/blocks/chat/__tests__/ai-panel.test.tsx +0 -65
  225. package/src/components/blocks/chat/banners.tsx +0 -61
  226. package/src/components/blocks/chat/base.tsx +0 -84
  227. package/src/components/blocks/chat/header.tsx +0 -60
  228. package/src/components/blocks/chat/index.ts +0 -37
  229. package/src/components/blocks/chat/recommendation-stack.tsx +0 -41
  230. package/src/components/blocks/chat/shared.tsx +0 -27
  231. package/src/components/blocks/chat/suggested-prompts.tsx +0 -45
  232. package/src/components/blocks/chat/type.ts +0 -96
  233. package/src/components/blocks/chat/version-history-record.tsx +0 -37
  234. package/src/components/blocks/layout.ts +0 -35
  235. package/src/components/blocks/profile/__tests__/profile-card-block.test.tsx +0 -362
  236. package/src/components/blocks/profile/index.ts +0 -28
  237. package/src/components/blocks/profile/profile-card-atom.ts +0 -247
  238. package/src/components/blocks/profile/profile-card-block.tsx +0 -369
  239. package/src/components/blocks/profile/type.ts +0 -93
  240. package/src/components/blocks/profile/use-profile-card-state.ts +0 -67
  241. package/src/components/blocks/profile/use-profile-card.ts +0 -132
  242. package/src/components/blocks/scaffold/__tests__/scaffold-atom.test.tsx +0 -236
  243. package/src/components/blocks/scaffold/__tests__/scaffold.test.tsx +0 -524
  244. package/src/components/blocks/scaffold/constants.ts +0 -39
  245. package/src/components/blocks/scaffold/index.ts +0 -60
  246. package/src/components/blocks/scaffold/panel-close-button.tsx +0 -36
  247. package/src/components/blocks/scaffold/panel-menu-button.tsx +0 -221
  248. package/src/components/blocks/scaffold/scaffold-actions.tsx +0 -92
  249. package/src/components/blocks/scaffold/scaffold-atom.ts +0 -427
  250. package/src/components/blocks/scaffold/scaffold-canvas.tsx +0 -162
  251. package/src/components/blocks/scaffold/scaffold-context.ts +0 -20
  252. package/src/components/blocks/scaffold/scaffold-inspector.tsx +0 -137
  253. package/src/components/blocks/scaffold/scaffold-main.tsx +0 -28
  254. package/src/components/blocks/scaffold/scaffold-panel.tsx +0 -186
  255. package/src/components/blocks/scaffold/scaffold-root.tsx +0 -120
  256. package/src/components/blocks/scaffold/scaffold-sidebar.tsx +0 -31
  257. package/src/components/blocks/scaffold/scaffold-sub-panel.tsx +0 -122
  258. package/src/components/blocks/scaffold/scaffold-tab.tsx +0 -108
  259. package/src/components/blocks/scaffold/type.ts +0 -264
  260. package/src/components/blocks/scaffold/use-scaffold-state.ts +0 -85
  261. package/src/components/blocks/scaffold/use-scaffold.ts +0 -59
  262. package/src/components/blocks/scaffold/utils.ts +0 -112
  263. package/src/components/blocks/shell/__tests__/shell-fit-atom.test.tsx +0 -362
  264. package/src/components/blocks/shell/__tests__/shell-layout.test.tsx +0 -596
  265. package/src/components/blocks/shell/__tests__/shell-metrics.test.ts +0 -154
  266. package/src/components/blocks/shell/animated-panel-inset.tsx +0 -27
  267. package/src/components/blocks/shell/animated-panel-provider.tsx +0 -269
  268. package/src/components/blocks/shell/animated-panel-trigger.tsx +0 -51
  269. package/src/components/blocks/shell/animated-panel.tsx +0 -180
  270. package/src/components/blocks/shell/index.ts +0 -30
  271. package/src/components/blocks/shell/shell-fit-atom.ts +0 -246
  272. package/src/components/blocks/shell/shell-layout.tsx +0 -139
  273. package/src/components/blocks/shell/shell-metrics.ts +0 -133
  274. package/src/components/blocks/shell/shell-panel-atom.ts +0 -74
  275. package/src/components/blocks/shell/type.ts +0 -361
  276. package/src/components/blocks/shell/use-shell-fit-state.ts +0 -49
  277. package/src/components/blocks/shell/use-shell-fit.ts +0 -153
  278. package/src/components/blocks/shell/use-shell-panels.ts +0 -126
  279. package/src/components/blocks/shell/utils.ts +0 -187
  280. package/src/components/blocks/sidebar/__tests__/ai-sidebar-atom.test.tsx +0 -325
  281. package/src/components/blocks/sidebar/__tests__/ai-sidebar.test.tsx +0 -93
  282. package/src/components/blocks/sidebar/__tests__/use-ai-sidebar.test.tsx +0 -310
  283. package/src/components/blocks/sidebar/ai-sidebar-atom.ts +0 -698
  284. package/src/components/blocks/sidebar/ai-sidebar.tsx +0 -150
  285. package/src/components/blocks/sidebar/index.ts +0 -67
  286. package/src/components/blocks/sidebar/marquee-label.tsx +0 -59
  287. package/src/components/blocks/sidebar/sidebar-context.ts +0 -15
  288. package/src/components/blocks/sidebar/sidebar-icon.tsx +0 -14
  289. package/src/components/blocks/sidebar/sidebar-row.tsx +0 -378
  290. package/src/components/blocks/sidebar/type.ts +0 -294
  291. package/src/components/blocks/sidebar/use-ai-sidebar-state.ts +0 -123
  292. package/src/components/blocks/sidebar/use-ai-sidebar.ts +0 -619
  293. package/src/components/blocks/sidebar/utils.ts +0 -170
  294. package/src/components/blocks/types.ts +0 -6
  295. package/src/components/composed/.gitkeep +0 -0
  296. package/src/components/composed/__tests__/logo.test.tsx +0 -60
  297. package/src/components/composed/action-bar/__tests__/action-bar.test.tsx +0 -125
  298. package/src/components/composed/action-bar/action.tsx +0 -77
  299. package/src/components/composed/action-bar/emojis.tsx +0 -97
  300. package/src/components/composed/action-bar/index.ts +0 -24
  301. package/src/components/composed/action-bar/toolbar.tsx +0 -66
  302. package/src/components/composed/action-bar/types.ts +0 -58
  303. package/src/components/composed/action-bar/utils.ts +0 -140
  304. package/src/components/composed/ai/__tests__/ai.test.tsx +0 -66
  305. package/src/components/composed/ai/avatar.tsx +0 -19
  306. package/src/components/composed/ai/index.ts +0 -36
  307. package/src/components/composed/ai/message.tsx +0 -49
  308. package/src/components/composed/ai/research-answer.tsx +0 -157
  309. package/src/components/composed/ai/shared.tsx +0 -94
  310. package/src/components/composed/ai/streaming-text.tsx +0 -94
  311. package/src/components/composed/ai/suggested-prompt.tsx +0 -183
  312. package/src/components/composed/ai/types.ts +0 -81
  313. package/src/components/composed/chat/__tests__/attachment.test.tsx +0 -218
  314. package/src/components/composed/chat/__tests__/beautiful-ui.test.tsx +0 -57
  315. package/src/components/composed/chat/__tests__/chart.test.tsx +0 -316
  316. package/src/components/composed/chat/__tests__/code-block.test.tsx +0 -12
  317. package/src/components/composed/chat/__tests__/composer-attachments.test.tsx +0 -101
  318. package/src/components/composed/chat/__tests__/composer.test.tsx +0 -248
  319. package/src/components/composed/chat/__tests__/flowchart.test.tsx +0 -145
  320. package/src/components/composed/chat/__tests__/glass-material.test.tsx +0 -54
  321. package/src/components/composed/chat/__tests__/markdown.test.tsx +0 -25
  322. package/src/components/composed/chat/__tests__/menu-command.test.tsx +0 -35
  323. package/src/components/composed/chat/__tests__/recommendation.test.tsx +0 -43
  324. package/src/components/composed/chat/actions.tsx +0 -81
  325. package/src/components/composed/chat/attachment-file.ts +0 -82
  326. package/src/components/composed/chat/attachment.tsx +0 -498
  327. package/src/components/composed/chat/chart/chart-atom.ts +0 -55
  328. package/src/components/composed/chat/chart/chart-context.ts +0 -9
  329. package/src/components/composed/chat/chart/chart-legend.tsx +0 -75
  330. package/src/components/composed/chat/chart/chart-plot.tsx +0 -233
  331. package/src/components/composed/chat/chart/chart-root.tsx +0 -229
  332. package/src/components/composed/chat/chart/chart-tooltip.tsx +0 -74
  333. package/src/components/composed/chat/chart/constants.ts +0 -8
  334. package/src/components/composed/chat/chart/evilcharts/README.md +0 -8
  335. package/src/components/composed/chat/chart/evilcharts/echarts-area-chart.tsx +0 -2358
  336. package/src/components/composed/chat/chart/evilcharts/echarts-bar-chart.tsx +0 -2261
  337. package/src/components/composed/chat/chart/evilcharts/echarts-brush.tsx +0 -233
  338. package/src/components/composed/chat/chart/evilcharts/echarts-chart.tsx +0 -214
  339. package/src/components/composed/chat/chart/evilcharts/echarts-dot.tsx +0 -111
  340. package/src/components/composed/chat/chart/evilcharts/echarts-legend.tsx +0 -131
  341. package/src/components/composed/chat/chart/evilcharts/echarts-line-chart.tsx +0 -2112
  342. package/src/components/composed/chat/chart/evilcharts/echarts-pie-chart.tsx +0 -1235
  343. package/src/components/composed/chat/chart/evilcharts/echarts-tooltip.tsx +0 -125
  344. package/src/components/composed/chat/chart/index.ts +0 -13
  345. package/src/components/composed/chat/chart/type.ts +0 -88
  346. package/src/components/composed/chat/chart/use-chart-state.ts +0 -22
  347. package/src/components/composed/chat/chart/use-chart.ts +0 -70
  348. package/src/components/composed/chat/chart/utils.ts +0 -47
  349. package/src/components/composed/chat/chart.tsx +0 -3
  350. package/src/components/composed/chat/code-block.tsx +0 -123
  351. package/src/components/composed/chat/composer/add-button.tsx +0 -29
  352. package/src/components/composed/chat/composer/base.tsx +0 -573
  353. package/src/components/composed/chat/composer/command-menu.tsx +0 -47
  354. package/src/components/composed/chat/composer/hooks.ts +0 -29
  355. package/src/components/composed/chat/composer/index.ts +0 -19
  356. package/src/components/composed/chat/composer/send-button.tsx +0 -36
  357. package/src/components/composed/chat/composer/suggestions.tsx +0 -115
  358. package/src/components/composed/chat/composer/use-dictation.ts +0 -123
  359. package/src/components/composed/chat/composer/utils.ts +0 -74
  360. package/src/components/composed/chat/context-cards.tsx +0 -63
  361. package/src/components/composed/chat/filter-table.tsx +0 -119
  362. package/src/components/composed/chat/flowchart/chart-node.tsx +0 -162
  363. package/src/components/composed/chat/flowchart/connector.tsx +0 -32
  364. package/src/components/composed/chat/flowchart/constant.ts +0 -26
  365. package/src/components/composed/chat/flowchart/default.tsx +0 -230
  366. package/src/components/composed/chat/flowchart/edge-toolbar.tsx +0 -73
  367. package/src/components/composed/chat/flowchart/hooks.tsx +0 -347
  368. package/src/components/composed/chat/flowchart/index.ts +0 -14
  369. package/src/components/composed/chat/flowchart/step-body.tsx +0 -82
  370. package/src/components/composed/chat/flowchart/types.ts +0 -89
  371. package/src/components/composed/chat/flowchart/utils.ts +0 -78
  372. package/src/components/composed/chat/hint.tsx +0 -59
  373. package/src/components/composed/chat/index.ts +0 -92
  374. package/src/components/composed/chat/insight-cards.tsx +0 -199
  375. package/src/components/composed/chat/markdown-atom.ts +0 -15
  376. package/src/components/composed/chat/markdown.tsx +0 -213
  377. package/src/components/composed/chat/recommendation/checkbox.tsx +0 -122
  378. package/src/components/composed/chat/recommendation/constant.ts +0 -54
  379. package/src/components/composed/chat/recommendation/default.tsx +0 -25
  380. package/src/components/composed/chat/recommendation/group.tsx +0 -36
  381. package/src/components/composed/chat/recommendation/index.ts +0 -17
  382. package/src/components/composed/chat/recommendation/item.tsx +0 -215
  383. package/src/components/composed/chat/recommendation/types.ts +0 -76
  384. package/src/components/composed/chat/records-table.tsx +0 -130
  385. package/src/components/composed/chat/type.ts +0 -157
  386. package/src/components/composed/logo.tsx +0 -171
  387. package/src/components/composed/password-input.tsx +0 -179
  388. package/src/components/composed/reader/applied-mark.tsx +0 -32
  389. package/src/components/composed/reader/apply-toast.tsx +0 -49
  390. package/src/components/composed/reader/index.ts +0 -10
  391. package/src/components/composed/reader/selection-highlight.tsx +0 -26
  392. package/src/components/composed/reader/selection-popover.tsx +0 -149
  393. package/src/components/composed/reader/type.ts +0 -48
  394. package/src/components/composed/social-providers.tsx +0 -154
  395. package/src/components/composed/tree/CLAUDE.md +0 -145
  396. package/src/components/composed/tree/__tests__/tree-atom.test.tsx +0 -217
  397. package/src/components/composed/tree/__tests__/tree.test.tsx +0 -522
  398. package/src/components/composed/tree/__tests__/use-tree.test.tsx +0 -333
  399. package/src/components/composed/tree/constants.ts +0 -55
  400. package/src/components/composed/tree/index.ts +0 -51
  401. package/src/components/composed/tree/tree-atom.ts +0 -590
  402. package/src/components/composed/tree/tree-context.ts +0 -13
  403. package/src/components/composed/tree/tree-node.tsx +0 -496
  404. package/src/components/composed/tree/tree.tsx +0 -233
  405. package/src/components/composed/tree/type.ts +0 -322
  406. package/src/components/composed/tree/use-tree-dnd.ts +0 -179
  407. package/src/components/composed/tree/use-tree-state.ts +0 -105
  408. package/src/components/composed/tree/use-tree.ts +0 -311
  409. package/src/components/composed/tree/utils.ts +0 -172
  410. package/src/components/composed/types.ts +0 -9
  411. package/src/components/composed/user/__tests__/message.test.tsx +0 -79
  412. package/src/components/composed/user/index.ts +0 -14
  413. package/src/components/composed/user/info.tsx +0 -56
  414. package/src/components/composed/user/message.tsx +0 -36
  415. package/src/components/composed/user/pill.tsx +0 -20
  416. package/src/components/composed/user/types.ts +0 -47
  417. package/src/components/composed/user/utils.ts +0 -0
  418. package/src/components/composed/verse/__tests__/verse.test.tsx +0 -57
  419. package/src/components/composed/verse/index.ts +0 -2
  420. package/src/components/composed/verse/types.ts +0 -24
  421. package/src/components/composed/verse/verse.tsx +0 -100
  422. package/src/components/docs/atoms-gallery.tsx +0 -286
  423. package/src/components/docs/block-demo-stage.tsx +0 -38
  424. package/src/components/docs/blocks-gallery.tsx +0 -224
  425. package/src/components/docs/browser.tsx +0 -87
  426. package/src/components/docs/code-block.tsx +0 -10
  427. package/src/components/docs/components-gallery.tsx +0 -182
  428. package/src/components/docs/demo-controls.tsx +0 -142
  429. package/src/components/docs/hero.tsx +0 -197
  430. package/src/components/docs/mermaid.tsx +0 -55
  431. package/src/components/icons/README.md +0 -91
  432. package/src/components/icons/__tests__/icons.test.tsx +0 -58
  433. package/src/components/icons/file-badge-cfm.tsx +0 -615
  434. package/src/components/icons/file-badge-corpus.tsx +0 -604
  435. package/src/components/icons/file-badge-pdf.tsx +0 -570
  436. package/src/components/icons/file-badge-tei.tsx +0 -524
  437. package/src/components/icons/file-badge-tf.tsx +0 -620
  438. package/src/components/icons/file-badge-txt.tsx +0 -607
  439. package/src/components/icons/file-badge-xml.tsx +0 -576
  440. package/src/components/icons/file-wordmark-cfm.tsx +0 -424
  441. package/src/components/icons/file-wordmark-corpus.tsx +0 -454
  442. package/src/components/icons/file-wordmark-pdf.tsx +0 -470
  443. package/src/components/icons/file-wordmark-tei.tsx +0 -424
  444. package/src/components/icons/file-wordmark-tf.tsx +0 -406
  445. package/src/components/icons/file-wordmark-txt.tsx +0 -421
  446. package/src/components/icons/file-wordmark-xml.tsx +0 -424
  447. package/src/components/icons/index.ts +0 -16
  448. package/src/components/icons/types.ts +0 -8
  449. package/src/components/motion/index.ts +0 -0
  450. package/src/components/motion/overflow-actions.tsx +0 -376
  451. package/src/components/motion/popover-morph.tsx +0 -292
  452. package/src/components/motion/popover-position.ts +0 -86
  453. package/src/components/motion/shared-layout-bg.tsx +0 -151
  454. package/src/components/stories/attachment.story.tsx +0 -40
  455. package/src/components/stories/auth-flow-block.story.tsx +0 -17
  456. package/src/components/stories/avatar.story.tsx +0 -33
  457. package/src/components/stories/base.story.tsx +0 -70
  458. package/src/components/stories/bubble.story.tsx +0 -61
  459. package/src/components/stories/button.story.tsx +0 -32
  460. package/src/components/stories/card.story.tsx +0 -36
  461. package/src/components/stories/chart.story.tsx +0 -69
  462. package/src/components/stories/checkbox.story.tsx +0 -30
  463. package/src/components/stories/code-auth-block.story.tsx +0 -20
  464. package/src/components/stories/code-block.story.tsx +0 -35
  465. package/src/components/stories/composed-password-input.story.tsx +0 -41
  466. package/src/components/stories/context-cards.story.tsx +0 -30
  467. package/src/components/stories/emoji-action-bar.story.tsx +0 -20
  468. package/src/components/stories/field.story.tsx +0 -32
  469. package/src/components/stories/file-icons.story.tsx +0 -20
  470. package/src/components/stories/filter-table.story.tsx +0 -63
  471. package/src/components/stories/flowchart.story.tsx +0 -25
  472. package/src/components/stories/forgot-password-block.story.tsx +0 -14
  473. package/src/components/stories/frame.story.tsx +0 -32
  474. package/src/components/stories/index.ts +0 -57
  475. package/src/components/stories/input-group.story.tsx +0 -27
  476. package/src/components/stories/input.story.tsx +0 -42
  477. package/src/components/stories/insight-cards.story.tsx +0 -67
  478. package/src/components/stories/label.story.tsx +0 -32
  479. package/src/components/stories/linked-accounts-block.story.tsx +0 -23
  480. package/src/components/stories/login-block.story.tsx +0 -18
  481. package/src/components/stories/logo.story.tsx +0 -21
  482. package/src/components/stories/markdown.story.tsx +0 -31
  483. package/src/components/stories/menu-command.story.tsx +0 -43
  484. package/src/components/stories/onboarding-block.story.tsx +0 -14
  485. package/src/components/stories/otp-field.story.tsx +0 -35
  486. package/src/components/stories/passkey-manager-block.story.tsx +0 -18
  487. package/src/components/stories/passkey-sign-in-block.story.tsx +0 -15
  488. package/src/components/stories/password-input.story.tsx +0 -35
  489. package/src/components/stories/profile-card-block.story.tsx +0 -29
  490. package/src/components/stories/recommendation-card.story.tsx +0 -37
  491. package/src/components/stories/records-table.story.tsx +0 -52
  492. package/src/components/stories/reference.story.tsx +0 -33
  493. package/src/components/stories/research-answer.story.tsx +0 -32
  494. package/src/components/stories/scaffold-root.story.tsx +0 -47
  495. package/src/components/stories/separator.story.tsx +0 -37
  496. package/src/components/stories/shell-layout.story.tsx +0 -19
  497. package/src/components/stories/signup-block.story.tsx +0 -18
  498. package/src/components/stories/social-providers.story.tsx +0 -26
  499. package/src/components/stories/streaming-text.story.tsx +0 -25
  500. package/src/components/stories/text.story.tsx +0 -31
  501. package/src/components/stories/textarea.story.tsx +0 -34
  502. package/src/components/stories/tree.story.tsx +0 -31
  503. package/src/components/stories/update-password-block.story.tsx +0 -14
  504. package/src/components/stories/user.story.tsx +0 -32
  505. package/src/components/stories/verse.story.tsx +0 -42
  506. package/src/components/theme-provider.tsx +0 -230
  507. package/src/components/types.ts +0 -106
  508. package/src/components/ui/accordion.tsx +0 -68
  509. package/src/components/ui/alert-dialog.tsx +0 -167
  510. package/src/components/ui/alert.tsx +0 -84
  511. package/src/components/ui/autocomplete.tsx +0 -303
  512. package/src/components/ui/avatar.tsx +0 -109
  513. package/src/components/ui/badge.tsx +0 -101
  514. package/src/components/ui/button-group.tsx +0 -88
  515. package/src/components/ui/button.tsx +0 -192
  516. package/src/components/ui/card.tsx +0 -253
  517. package/src/components/ui/chat/__tests__/segmented-toggle.test.tsx +0 -27
  518. package/src/components/ui/chat/avatar-handle.tsx +0 -30
  519. package/src/components/ui/chat/badges.tsx +0 -85
  520. package/src/components/ui/chat/buttons.tsx +0 -94
  521. package/src/components/ui/chat/chips.tsx +0 -106
  522. package/src/components/ui/chat/dot.tsx +0 -81
  523. package/src/components/ui/chat/icon-button.tsx +0 -43
  524. package/src/components/ui/chat/icon-tile.tsx +0 -33
  525. package/src/components/ui/chat/index.ts +0 -12
  526. package/src/components/ui/chat/inline-source.tsx +0 -94
  527. package/src/components/ui/chat/segmented-toggle.tsx +0 -99
  528. package/src/components/ui/chat/tag.tsx +0 -61
  529. package/src/components/ui/chat/thumbnail.tsx +0 -31
  530. package/src/components/ui/chat/waveform.tsx +0 -30
  531. package/src/components/ui/checkbox.tsx +0 -83
  532. package/src/components/ui/collapsible.tsx +0 -42
  533. package/src/components/ui/command.tsx +0 -263
  534. package/src/components/ui/context-menu.tsx +0 -342
  535. package/src/components/ui/emoji-picker.tsx +0 -161
  536. package/src/components/ui/field.tsx +0 -89
  537. package/src/components/ui/frame.tsx +0 -87
  538. package/src/components/ui/glasscn/glass-button-group.tsx +0 -34
  539. package/src/components/ui/glasscn/glass-button.tsx +0 -25
  540. package/src/components/ui/glasscn/glass-container.tsx +0 -94
  541. package/src/components/ui/glasscn/glass-separator.tsx +0 -39
  542. package/src/components/ui/glasscn/liquid-glass.tsx +0 -59
  543. package/src/components/ui/group.tsx +0 -92
  544. package/src/components/ui/input-group.tsx +0 -105
  545. package/src/components/ui/input.tsx +0 -70
  546. package/src/components/ui/kbd.tsx +0 -32
  547. package/src/components/ui/label.tsx +0 -36
  548. package/src/components/ui/menu-command.tsx +0 -156
  549. package/src/components/ui/menu.tsx +0 -352
  550. package/src/components/ui/otp-field.tsx +0 -88
  551. package/src/components/ui/popover-glass.tsx +0 -158
  552. package/src/components/ui/popover.tsx +0 -120
  553. package/src/components/ui/preview-card.tsx +0 -61
  554. package/src/components/ui/scroll-area.tsx +0 -80
  555. package/src/components/ui/select.tsx +0 -257
  556. package/src/components/ui/separator.tsx +0 -23
  557. package/src/components/ui/sheet.tsx +0 -135
  558. package/src/components/ui/skeleton.tsx +0 -18
  559. package/src/components/ui/spinner.tsx +0 -17
  560. package/src/components/ui/switch.tsx +0 -30
  561. package/src/components/ui/tabs.tsx +0 -120
  562. package/src/components/ui/textarea.tsx +0 -58
  563. package/src/components/ui/toast.tsx +0 -325
  564. package/src/components/ui/toolbar.tsx +0 -92
  565. package/src/components/ui/tooltip.tsx +0 -67
  566. package/src/index.css +0 -10
  567. package/src/index.ts +0 -102
  568. package/src/lib/attachment-content.ts +0 -28
  569. package/src/lib/auth-accent.ts +0 -49
  570. package/src/lib/ease.ts +0 -90
  571. package/src/lib/glass-variants.ts +0 -22
  572. package/src/lib/hooks/use-hover-capable.ts +0 -23
  573. package/src/lib/hooks/use-mobile.ts +0 -21
  574. package/src/lib/keyed-atom.ts +0 -60
  575. package/src/lib/segmented-control.ts +0 -42
  576. package/src/lib/sound.ts +0 -39
  577. package/src/lib/specular.ts +0 -10
  578. package/src/lib/state/__tests__/sound.test.tsx +0 -53
  579. package/src/lib/state/exegia-provider.tsx +0 -83
  580. package/src/lib/state/index.ts +0 -4
  581. package/src/lib/state/store.ts +0 -19
  582. package/src/lib/use-motion-panel.ts +0 -78
  583. package/src/lib/utils.test.ts +0 -22
  584. package/src/lib/utils.ts +0 -100
  585. package/src/specular.js +0 -4
  586. /package/{src/components/composed/chat/composer → dist-lib}/BEAUTIFUL-UI-LICENSE.txt +0 -0
  587. /package/{src/components/composed/chat/chart/evilcharts/LICENSE → dist-lib/EVILCHARTS-LICENSE.txt} +0 -0
@@ -1,233 +0,0 @@
1
- import { withAlpha, type ResolvedColors } from "./echarts-chart";
2
- import type { DataZoomComponentOption } from "echarts/components";
3
- import type { FC } from "react";
4
- import * as echarts from "echarts/core";
5
-
6
- type EChartsInstance = ReturnType<typeof echarts.init>;
7
-
8
- const BRUSH_BORDER_OPACITY = 1; // brush frame, × border alpha (evil-brush uses the full token)
9
-
10
- export { BRUSH_BORDER_OPACITY };
11
-
12
- // ─────────────────────────────────────────────────────────────────────────────
13
- // Brush marker — the declarative `<Chart.Brush/>` child. Rendering nothing, its
14
- // PRESENCE turns the brush on (replacing the old showBrush prop) and its props
15
- // carry the brush's height, handle-label formatter, and range callback. Shared
16
- // so every cartesian chart attaches the SAME component to its root.
17
- // ─────────────────────────────────────────────────────────────────────────────
18
-
19
- export interface BrushProps {
20
- height?: number; // brush preview strip height in px (default 56)
21
- formatLabel?: (value: string, index: number) => string; // formats the range-handle labels
22
- onChange?: (range: { startIndex: number; endIndex: number }) => void; // fires as the range moves
23
- }
24
-
25
- /** Declares the zoom brush below the chart. Presence renders it; renders nothing itself. */
26
- export const Brush: FC<BrushProps> = () => null;
27
-
28
- // ─────────────────────────────────────────────────────────────────────────────
29
- // Brush overlays — the evil-brush look: a rounded border around the SELECTED
30
- // range, dimmed unselected sides, centered grip-dot handle pills, and range
31
- // label pills below the frame. None of that is a dataZoom capability. They are
32
- // raw zrender elements updated imperatively — routing them through setOption
33
- // re-renders the dataZoom component mid-drag, resetting its drag anchor (the
34
- // handle progressively lags the pointer).
35
- // ─────────────────────────────────────────────────────────────────────────────
36
-
37
- export type BrushRange = { start: number; end: number };
38
- export type BrushGeometry = { bottom: number; height: number };
39
-
40
- export type BrushOverlayParams = {
41
- range: BrushRange;
42
- geom: BrushGeometry;
43
- size: { width: number; height: number };
44
- tokens: ResolvedColors["tokens"];
45
- labels: { start: string; end: string } | null;
46
- showLabels: boolean;
47
- hover: { left: boolean; right: boolean };
48
- };
49
-
50
- type ZrRect = InstanceType<typeof echarts.graphic.Rect>;
51
- type ZrCircle = InstanceType<typeof echarts.graphic.Circle>;
52
- type ZrText = InstanceType<typeof echarts.graphic.Text>;
53
-
54
- export type BrushOverlayElements = {
55
- dimLeft: ZrRect;
56
- dimRight: ZrRect;
57
- frame: ZrRect;
58
- pillLeft: ZrRect;
59
- pillRight: ZrRect;
60
- grips: ZrCircle[]; // 3 left + 3 right
61
- labelStart: ZrText;
62
- labelEnd: ZrText;
63
- };
64
-
65
- export function syncBrushOverlay(
66
- chart: EChartsInstance,
67
- store: { brushOverlay: BrushOverlayElements | null },
68
- params: BrushOverlayParams | null,
69
- ) {
70
- const zr = chart.getZr();
71
- if (!zr) return;
72
-
73
- if (!params) {
74
- if (store.brushOverlay) {
75
- const { grips, ...rest } = store.brushOverlay;
76
- [...Object.values(rest), ...grips].forEach((el) => zr.remove(el));
77
- store.brushOverlay = null;
78
- }
79
- return;
80
- }
81
-
82
- if (!store.brushOverlay) {
83
- const rect = (z: number) => new echarts.graphic.Rect({ silent: true, z, shape: {} });
84
- const els: BrushOverlayElements = {
85
- dimLeft: rect(100),
86
- dimRight: rect(100),
87
- frame: rect(101),
88
- pillLeft: rect(102),
89
- pillRight: rect(102),
90
- grips: Array.from(
91
- { length: 6 },
92
- () => new echarts.graphic.Circle({ silent: true, z: 103, shape: {} }),
93
- ),
94
- labelStart: new echarts.graphic.Text({ silent: true, z: 104 }),
95
- labelEnd: new echarts.graphic.Text({ silent: true, z: 104 }),
96
- };
97
- const { grips, ...rest } = els;
98
- [...Object.values(rest), ...grips].forEach((el) => zr.add(el));
99
- store.brushOverlay = els;
100
- }
101
-
102
- const els = store.brushOverlay;
103
- const { range, geom, size, tokens, labels, showLabels, hover } = params;
104
-
105
- const trackLeft = 8;
106
- const trackRight = Math.max(size.width - 8, trackLeft);
107
- const trackWidth = trackRight - trackLeft;
108
- const top = size.height - geom.bottom - geom.height;
109
- const centerY = top + geom.height / 2;
110
- const selectionLeft = trackLeft + (trackWidth * range.start) / 100;
111
- const selectionRight = trackLeft + (trackWidth * range.end) / 100;
112
-
113
- const dimFill = withAlpha(tokens.background, 0.7);
114
- els.dimLeft.setShape({
115
- x: trackLeft,
116
- y: top,
117
- width: Math.max(selectionLeft - trackLeft, 0),
118
- height: geom.height,
119
- });
120
- els.dimLeft.setStyle({ fill: dimFill });
121
- els.dimRight.setShape({
122
- x: selectionRight,
123
- y: top,
124
- width: Math.max(trackRight - selectionRight, 0),
125
- height: geom.height,
126
- });
127
- els.dimRight.setStyle({ fill: dimFill });
128
-
129
- els.frame.setShape({
130
- x: selectionLeft,
131
- y: top,
132
- width: Math.max(selectionRight - selectionLeft, 0),
133
- height: geom.height,
134
- r: 6,
135
- });
136
- els.frame.setStyle({
137
- fill: "none",
138
- stroke: withAlpha(tokens.border, BRUSH_BORDER_OPACITY),
139
- lineWidth: 1,
140
- });
141
-
142
- // Handle pills: evil-brush's 6×16 grip pill, centered on the selection edge,
143
- // brightening to foreground on hover/drag.
144
- const pill = (el: ZrRect, x: number, hovered: boolean) => {
145
- el.setShape({ x: x - 3, y: centerY - 8, width: 6, height: 16, r: 3 });
146
- el.setStyle({ fill: hovered ? tokens.foreground : tokens.mutedForeground });
147
- };
148
- pill(els.pillLeft, selectionLeft, hover.left);
149
- pill(els.pillRight, selectionRight, hover.right);
150
-
151
- const gripFill = withAlpha(tokens.background, 0.7);
152
- [-4, 0, 4].forEach((offset, i) => {
153
- els.grips[i].setShape({ cx: selectionLeft, cy: centerY + offset, r: 1 });
154
- els.grips[i].setStyle({ fill: gripFill });
155
- els.grips[i + 3].setShape({ cx: selectionRight, cy: centerY + offset, r: 1 });
156
- els.grips[i + 3].setStyle({ fill: gripFill });
157
- });
158
-
159
- // Range label pills straddle the frame's bottom line — an overlay, so they
160
- // occupy no layout space; half the pill sits above the line, half below. Each
161
- // pill grows INWARD from its handle with a small inset, like the Recharts
162
- // labels, instead of hanging past the frame edge.
163
- const label = (el: ZrText, text: string, x: number, align: "left" | "right") => {
164
- el.setStyle({
165
- text,
166
- x: align === "left" ? Math.max(x + 6, trackLeft + 2) : Math.min(x - 6, trackRight - 2),
167
- y: top + geom.height,
168
- align,
169
- verticalAlign: "middle",
170
- fill: tokens.background,
171
- backgroundColor: tokens.foreground,
172
- padding: [2, 5],
173
- borderRadius: 4,
174
- font: "500 9px system-ui, sans-serif",
175
- });
176
- el.attr("invisible", !showLabels || !text);
177
- };
178
- label(els.labelStart, labels?.start ?? "", selectionLeft, "left");
179
- label(els.labelEnd, labels?.end ?? "", selectionRight, "right");
180
- }
181
-
182
- // ─────────────────────────────────────────────────────────────────────────────
183
- // dataZoom slider — the transparent drag layer laid over the mini chart. Fully
184
- // chart-agnostic: the visible frame/handles/labels are the graphic overlays
185
- // above; this provides interaction only. Both zoom entries target only the MAIN
186
- // x-axis (index 0), so the mini chart never filters itself. The per-chart
187
- // mini-series (which differ per chart type) are built by the chart, not here.
188
- // ─────────────────────────────────────────────────────────────────────────────
189
-
190
- export function buildBrushDataZoom(params: {
191
- brushBottom: number;
192
- brushHeight: number;
193
- brushRange: BrushRange;
194
- fillerColor: string;
195
- }): DataZoomComponentOption[] {
196
- const { brushBottom, brushHeight, brushRange, fillerColor } = params;
197
-
198
- return [
199
- {
200
- type: "slider",
201
- show: true,
202
- xAxisIndex: [0],
203
- left: 8,
204
- right: 8,
205
- bottom: brushBottom,
206
- height: brushHeight,
207
- // Carry the live range through every rebuild — a notMerge push
208
- // without start/end would reset the zoom to the full extent.
209
- start: brushRange.start,
210
- end: brushRange.end,
211
- brushSelect: false,
212
- // Range labels are overlay pills below the frame (see
213
- // syncBrushOverlay) — the native detail text renders INSIDE the
214
- // track, which is not the evil-brush look.
215
- showDetail: false,
216
- backgroundColor: "transparent",
217
- // The visible frame is the graphic overlay riding the selection —
218
- // the component's own static border stays hidden.
219
- borderColor: "transparent",
220
- fillerColor,
221
- dataBackground: { lineStyle: { opacity: 0 }, areaStyle: { opacity: 0 } },
222
- selectedDataBackground: { lineStyle: { opacity: 0 }, areaStyle: { opacity: 0 } },
223
- // Interaction only — the visible pills are graphic overlays (see
224
- // syncBrushOverlay). Kept generous for an easy grab target.
225
- handleIcon: "path://M -3 -5 L -3 5 A 3 3 0 0 0 3 5 L 3 -5 A 3 3 0 0 0 -3 -5 Z",
226
- handleSize: "35%",
227
- handleStyle: { opacity: 0 },
228
- moveHandleSize: 0,
229
- emphasis: { handleStyle: { opacity: 0 } },
230
- },
231
- { type: "inside", xAxisIndex: [0] },
232
- ];
233
- }
@@ -1,214 +0,0 @@
1
- import { CanvasRenderer, SVGRenderer } from "echarts/renderers";
2
- import type { ComponentType, ReactNode } from "react";
3
- import * as echarts from "echarts/core";
4
-
5
- export const ECHARTS_RENDERERS = {
6
- canvas: "canvas",
7
- svg: "svg",
8
- } as const;
9
-
10
- export type EChartsRenderer = (typeof ECHARTS_RENDERERS)[keyof typeof ECHARTS_RENDERERS];
11
-
12
- export const DEFAULT_ECHARTS_RENDERER = ECHARTS_RENDERERS.canvas;
13
-
14
- // Renderer registration is shared by every modular ECharts chart. Individual
15
- // chart modules only register the series and components they use.
16
- echarts.use([CanvasRenderer, SVGRenderer]);
17
-
18
- // ─────────────────────────────────────────────────────────────────────────────
19
- // Theme keys + config — replicated from the repo's <ChartStyle> so the ECharts
20
- // charts stay self-contained (no recharts ui imports). Shared by every ECharts
21
- // chart and the tooltip/legend/brush ui modules.
22
- // ─────────────────────────────────────────────────────────────────────────────
23
-
24
- // Theme selectors mirror the repo's <ChartStyle>: light is the bare root, dark is `.dark`.
25
- export const THEMES = { light: "", dark: ".dark" } as const;
26
- export type ThemeKey = keyof typeof THEMES;
27
- export const THEME_KEYS = Object.keys(THEMES) as ThemeKey[];
28
-
29
- // Require at least one theme key — identical constraint to the repo's ChartConfig.
30
- export type AtLeastOneThemeColor =
31
- | { light: string[]; dark?: string[] }
32
- | { light?: string[]; dark: string[] };
33
-
34
- export type ChartConfig = Record<
35
- string,
36
- {
37
- label?: ReactNode;
38
- icon?: ComponentType;
39
- colors?: AtLeastOneThemeColor;
40
- }
41
- >;
42
-
43
- // ─────────────────────────────────────────────────────────────────────────────
44
- // Color plumbing — replicated from the repo's <ChartStyle> so the charts stay
45
- // self-contained (no ./recharts imports).
46
- // ─────────────────────────────────────────────────────────────────────────────
47
-
48
- // Max slots a key needs = longest color array across themes (min 1). Both themes
49
- // always emit the same number of `--color-{key}-{n}` vars.
50
- export function getColorsCount(item: ChartConfig[string]): number {
51
- if (!item.colors) return 1;
52
- const counts = THEME_KEYS.map((theme) => item.colors?.[theme]?.length ?? 0);
53
- return Math.max(...counts, 1);
54
- }
55
-
56
- // Distribute colors evenly across slots; extra slots go to the LAST color(s).
57
- // 2 colors / 4 slots → [c0, c0, c1, c1]; 3 colors / 4 slots → [c0, c1, c2, c2].
58
- export function distributeColors(colors: string[], maxCount: number): string[] {
59
- const available = colors.length;
60
- if (available >= maxCount) return colors.slice(0, maxCount);
61
-
62
- const result: string[] = [];
63
- const baseSlots = Math.floor(maxCount / available);
64
- const extraSlots = maxCount % available;
65
-
66
- for (let i = 0; i < available; i++) {
67
- const isExtra = i >= available - extraSlots;
68
- const slots = baseSlots + (isExtra ? 1 : 0);
69
- for (let j = 0; j < slots; j++) result.push(colors[i]);
70
- }
71
-
72
- return result;
73
- }
74
-
75
- // Emits the same CSS <ChartStyle> would: `--color-{key}-{n}` scoped to
76
- // `[data-chart={id}]` (light) and `.dark [data-chart={id}]` (dark).
77
- export function buildChartCss(id: string, config: ChartConfig): string {
78
- const colorConfig = Object.entries(config).filter(([, item]) => item.colors);
79
- if (!colorConfig.length) return "";
80
-
81
- const varsFor = (theme: ThemeKey) =>
82
- colorConfig
83
- .flatMap(([key, item]) => {
84
- const authored = item.colors?.[theme];
85
- if (!authored || authored.length === 0) return [];
86
- return distributeColors(authored, getColorsCount(item)).map(
87
- (color, index) => ` --color-${key.replace(/[^a-zA-Z0-9_-]/g, character => "\\" + character.codePointAt(0)!.toString(16) + " ")}-${index}: ${color};`,
88
- );
89
- })
90
- .join("\n");
91
-
92
- return Object.entries(THEMES)
93
- .map(([theme, prefix]) => `${prefix} [data-chart=${id}] {\n${varsFor(theme as ThemeKey)}\n}`)
94
- .join("\n");
95
- }
96
-
97
- // A single reusable 1×1 canvas normalizes ANY CSS color (hex, named, oklch, …)
98
- // to a concrete rgba string by painting it and reading the pixel back.
99
- let normalizerCtx: CanvasRenderingContext2D | null = null;
100
- export function normalizeColor(value: string): string {
101
- const raw = value.trim();
102
- if (!raw || typeof document === "undefined") return raw;
103
-
104
- if (!normalizerCtx) {
105
- const canvas = document.createElement("canvas");
106
- canvas.width = 1;
107
- canvas.height = 1;
108
- normalizerCtx = canvas.getContext("2d", { willReadFrequently: true });
109
- }
110
- if (!normalizerCtx) return raw;
111
-
112
- normalizerCtx.clearRect(0, 0, 1, 1);
113
- normalizerCtx.fillStyle = "#000";
114
- normalizerCtx.fillStyle = raw; // invalid values leave the sentinel in place
115
- normalizerCtx.fillRect(0, 0, 1, 1);
116
- const [r, g, b, a] = normalizerCtx.getImageData(0, 0, 1, 1).data;
117
- return `rgba(${r}, ${g}, ${b}, ${(a / 255).toFixed(3)})`;
118
- }
119
-
120
- // Scales the alpha of a normalized `rgba(r, g, b, a)` string. Multiplying (not
121
- // replacing) keeps translucent theme tokens honest: a border that is 10%-white
122
- // at `withAlpha(border, 0.5)` lands at 5%, matching Tailwind's `border/50`.
123
- export function withAlpha(color: string, alpha: number): string {
124
- const match = color.match(/rgba?\(([^)]+)\)/);
125
- if (!match) return color;
126
- const [r, g, b, a] = match[1].split(",").map((p) => p.trim());
127
- const base = a === undefined ? 1 : Number.parseFloat(a) || 0;
128
- return `rgba(${r}, ${g}, ${b}, ${(base * alpha).toFixed(3)})`;
129
- }
130
-
131
- export type ResolvedColors = {
132
- series: Record<string, string[]>; // normalized `--color-{key}-{n}` slots per key
133
- tokens: {
134
- mutedForeground: string;
135
- border: string;
136
- foreground: string;
137
- background: string;
138
- };
139
- };
140
-
141
- // Reads the injected CSS vars + theme tokens from the live DOM. Series slots come
142
- // from `getComputedStyle` on the container; tokens are read off a throwaway probe
143
- // carrying the matching Tailwind class (robust to the var naming a theme uses).
144
- export function resolveColors(
145
- container: HTMLElement,
146
- config: ChartConfig,
147
- seriesKeys: string[],
148
- ): ResolvedColors {
149
- const computed = getComputedStyle(container);
150
- const series: Record<string, string[]> = {};
151
-
152
- for (const key of seriesKeys) {
153
- const count = getColorsCount(config[key] ?? {});
154
- const slots: string[] = [];
155
- for (let n = 0; n < count; n++) {
156
- const raw = computed.getPropertyValue(`--color-${key}-${n}`).trim();
157
- slots.push(raw ? normalizeColor(raw) : "rgba(120, 120, 120, 1)");
158
- }
159
- series[key] = slots;
160
- }
161
-
162
- const probe = document.createElement("span");
163
- probe.style.cssText = "position:absolute;width:0;height:0;visibility:hidden;pointer-events:none;";
164
- container.appendChild(probe);
165
- const readToken = (className: string) => {
166
- probe.className = className;
167
- return normalizeColor(getComputedStyle(probe).color);
168
- };
169
- const tokens = {
170
- mutedForeground: readToken("text-muted-foreground"),
171
- border: readToken("text-border"),
172
- foreground: readToken("text-foreground"),
173
- background: readToken("text-background"),
174
- };
175
- container.removeChild(probe);
176
-
177
- return { series, tokens };
178
- }
179
-
180
- // Horizontal multi-stop color for a series — a solid string when there is only
181
- // one color, else an evenly-distributed left→right LinearGradient. Reused for the
182
- // stroke, symbol fills, and as the base tint for the area fill.
183
- export function seriesPaint(slots: string[]): string | echarts.graphic.LinearGradient {
184
- if (slots.length <= 1) return slots[0] ?? "rgba(120, 120, 120, 1)";
185
- const stops = slots.map((color, i) => ({ offset: i / (slots.length - 1), color }));
186
- return new echarts.graphic.LinearGradient(0, 0, 1, 0, stops);
187
- }
188
-
189
- // Solid var / gradient of vars for a series indicator — mirrors getIndicatorColorStyle.
190
- // Used by BOTH the tooltip rows and the legend indicators.
191
- export function indicatorBackground(key: string, colorsCount: number): string {
192
- if (colorsCount <= 1) return `var(--color-${key}-0)`;
193
- const stops = Array.from({ length: colorsCount }, (_, i) => {
194
- const offset = (i / (colorsCount - 1)) * 100;
195
- return `var(--color-${key}-${i}) ${offset}%`;
196
- }).join(", ");
197
- return `linear-gradient(to right, ${stops})`;
198
- }
199
-
200
- // Composites a translucent color over an opaque base into a FLAT color. The
201
- // tick dots need this: a translucent stroke double-paints where its round caps
202
- // overlap the line body, which reads as two stacked colors.
203
- export function flattenColor(color: string, base: string): string {
204
- const parse = (value: string) =>
205
- value
206
- .match(/rgba?\(([^)]+)\)/)?.[1]
207
- .split(",")
208
- .map((part) => Number.parseFloat(part)) ?? [0, 0, 0, 1];
209
- const [r, g, b, a = 1] = parse(color);
210
- const [baseR, baseG, baseB] = parse(base);
211
- const mix = (channel: number, baseChannel: number) =>
212
- Math.round(channel * a + baseChannel * (1 - a));
213
- return `rgb(${mix(r, baseR)}, ${mix(g, baseG)}, ${mix(b, baseB)})`;
214
- }
@@ -1,111 +0,0 @@
1
- import type * as echarts from "echarts/core";
2
-
3
- // ─────────────────────────────────────────────────────────────────────────────
4
- // Dots — map the resting/active variants onto ECharts symbols. Shared by every
5
- // ECharts chart that draws point markers.
6
- // ─────────────────────────────────────────────────────────────────────────────
7
-
8
- export type DotVariant = "none" | "default" | "border" | "colored-border" | "ping";
9
-
10
- // Dot marker paint — structurally assignable to BOTH the series-level and the
11
- // per-datum itemStyle (the per-datum variant forbids callback color paints, so
12
- // the broader LineSeriesOption["itemStyle"] cannot be reused for it).
13
- export type DotItemStyleOption = {
14
- color?: string | echarts.graphic.LinearGradient;
15
- borderColor?: string | echarts.graphic.LinearGradient;
16
- borderWidth?: number;
17
- opacity?: number;
18
- };
19
-
20
- export type DotStyle = { size: number; itemStyle: DotItemStyleOption };
21
-
22
- // Re-color a solid paint at a given alpha (hex #rgb/#rrggbb or rgb/rgba in, rgba
23
- // out; named colors pass through). Used for the translucent "ping" halo ring.
24
- function withAlpha(color: string, alpha: number): string {
25
- if (color.startsWith("#")) {
26
- let hex = color.slice(1);
27
- if (hex.length === 3)
28
- hex = hex
29
- .split("")
30
- .map((c) => c + c)
31
- .join("");
32
- const n = parseInt(hex, 16);
33
- return `rgba(${(n >> 16) & 255}, ${(n >> 8) & 255}, ${n & 255}, ${alpha})`;
34
- }
35
- const m = color.match(/rgba?\(([^)]+)\)/);
36
- if (m) {
37
- const [r, g, b] = m[1].split(",").map((s) => parseFloat(s));
38
- return `rgba(${r}, ${g}, ${b}, ${alpha})`;
39
- }
40
- return color;
41
- }
42
-
43
- export function dotItemStyle(
44
- variant: DotVariant,
45
- paint: string | echarts.graphic.LinearGradient,
46
- background: string,
47
- ): DotItemStyleOption {
48
- switch (variant) {
49
- case "border":
50
- // Series-colored core with a thick background halo (Recharts r6 / sw5).
51
- return { color: paint, borderColor: background, borderWidth: 2 };
52
- case "colored-border":
53
- // Background-filled core with a thin colored ring (Recharts r3 / sw1).
54
- return { color: background, borderColor: paint, borderWidth: 1 };
55
- case "ping": {
56
- // Solid core wrapped in a wide, translucent same-color ring — a static
57
- // "ping". The ring is the symbol's BORDER (a stroke ~1.25× the core
58
- // radius), which fills out to a soft halo disc; a genuinely large symbol
59
- // would silently fail to render on a category-axis line, so we stroke a
60
- // small one instead.
61
- const halo = typeof paint === "string" ? withAlpha(paint, 0.28) : paint;
62
- return { color: paint, borderColor: halo, borderWidth: 10 };
63
- }
64
- case "default":
65
- return { color: paint, borderWidth: 0 };
66
- default:
67
- return {};
68
- }
69
- }
70
-
71
- // Sizes mirror the Recharts markers: default r3, border r6 (mostly halo), and
72
- // colored-border r3+ring. Flattening these to one size makes the hover ring read
73
- // LARGER than a haloed resting dot — the opposite of the Recharts twin.
74
- export const DOT_SIZES: Record<DotVariant, number> = {
75
- none: 0,
76
- default: 6,
77
- border: 8,
78
- "colored-border": 6,
79
- ping: 8,
80
- };
81
-
82
- export function dotStyle(
83
- variant: DotVariant,
84
- paint: string | echarts.graphic.LinearGradient,
85
- background: string,
86
- ): DotStyle {
87
- return { size: DOT_SIZES[variant], itemStyle: dotItemStyle(variant, paint, background) };
88
- }
89
-
90
- // The color the horizontal series gradient shows at position t ∈ [0, 1]. ECharts
91
- // paints a gradient itemStyle relative to each symbol's own bounding box — a full
92
- // rainbow inside every dot — while the Recharts dots clip a chart-wide gradient,
93
- // so each takes the gradient's color at its x-position. Sampling reproduces that.
94
- export function sampleGradient(slots: string[], t: number): string {
95
- if (slots.length <= 1) return slots[0] ?? "rgba(120, 120, 120, 1)";
96
-
97
- const parse = (color: string) =>
98
- color
99
- .match(/rgba?\(([^)]+)\)/)?.[1]
100
- .split(",")
101
- .map(Number) ?? [120, 120, 120, 1];
102
-
103
- const position = t * (slots.length - 1);
104
- const index = Math.min(Math.floor(position), slots.length - 2);
105
- const fraction = position - index;
106
- const [r1, g1, b1, a1 = 1] = parse(slots[index]);
107
- const [r2, g2, b2, a2 = 1] = parse(slots[index + 1]);
108
- const lerp = (from: number, to: number) => from + (to - from) * fraction;
109
-
110
- return `rgba(${Math.round(lerp(r1, r2))}, ${Math.round(lerp(g1, g2))}, ${Math.round(lerp(b1, b2))}, ${lerp(a1, a2).toFixed(3)})`;
111
- }